Implement common tileset portion at second half of vTiles5: palette maps (#19)

This commit is contained in:
xCrystal
2023-10-04 17:20:48 +02:00
parent adfcd603dd
commit a01f04e967
10 changed files with 100 additions and 84 deletions

View File

@@ -5,40 +5,7 @@ _LoadScreenAttrmapPals::
.loop
push bc
ld c, SCREEN_WIDTH
.innerloop
ld a, [hl]
push hl
srl a
jr c, .UpperNybble
ld hl, wTilesetPalettes
add [hl]
ld l, a
ld a, [wTilesetPalettes + 1]
adc 0
ld h, a
ld a, [hl]
and $f
jr .next
.UpperNybble:
ld hl, wTilesetPalettes
add [hl]
ld l, a
ld a, [wTilesetPalettes + 1]
adc 0
ld h, a
ld a, [hl]
swap a
and $f
.next
pop hl
ld [de], a
res 7, [hl]
inc hl
inc de
dec c
jr nz, .innerloop
call LoadChunkPalettes
pop bc
dec b
jr nz, .loop
@@ -47,6 +14,10 @@ _LoadScreenAttrmapPals::
_ScrollBGMapPalettes::
ld hl, wBGMapBuffer
ld de, wBGMapPalBuffer
call LoadChunkPalettes
ret
LoadChunkPalettes:
.loop
ld a, [hl]
push hl
@@ -54,6 +25,36 @@ _ScrollBGMapPalettes::
jr c, .UpperNybble
; .LowerNybble
cp ($100 - (TILESET_FIXED_SPACES_NUM_TILES + TILESET_VARIABLE_SPACES_NUM_TILES)) / 2
jr c, .lower_nybble_map_tileset
cp ($100 - TILESET_VARIABLE_SPACES_NUM_TILES) / 2
ld hl, TilesetFixedSpacesPalMap - ($100 - (TILESET_FIXED_SPACES_NUM_TILES + TILESET_VARIABLE_SPACES_NUM_TILES)) / 2
jr c, .lower_nybble_spaces_tileset
ld hl, TilesetVariableSpacesPalMaps
push af
ld a, [wTilesetVariableSpaces]
add a
add l
ld l, a
ld a, h
adc 0
ld h, a
ld a, [hli]
ld h, [hl]
ld l, a
pop af
sub ($100 - TILESET_VARIABLE_SPACES_NUM_TILES) / 2
.lower_nybble_spaces_tileset
add l
ld l, a
ld a, h
adc 0
ld h, a
ld a, [hl]
and $f
jr .next
.lower_nybble_map_tileset
ld hl, wTilesetPalettes
add [hl]
ld l, a
@@ -65,6 +66,37 @@ _ScrollBGMapPalettes::
jr .next
.UpperNybble:
cp ($100 - (TILESET_FIXED_SPACES_NUM_TILES + TILESET_VARIABLE_SPACES_NUM_TILES)) / 2
jr c, .upper_nybble_map_tileset
cp ($100 - TILESET_VARIABLE_SPACES_NUM_TILES) / 2
ld hl, TilesetFixedSpacesPalMap - ($100 - (TILESET_FIXED_SPACES_NUM_TILES + TILESET_VARIABLE_SPACES_NUM_TILES)) / 2
jr c, .upper_nybble_spaces_tileset
ld hl, TilesetVariableSpacesPalMaps
push af
ld a, [wTilesetVariableSpaces]
add a
add l
ld l, a
ld a, h
adc 0
ld h, a
ld a, [hli]
ld h, [hl]
ld l, a
pop af
sub ($100 - TILESET_VARIABLE_SPACES_NUM_TILES) / 2
.upper_nybble_spaces_tileset
add l
ld l, a
ld a, h
adc 0
ld h, a
ld a, [hl]
swap a
and $f
jr .next
.upper_nybble_map_tileset
ld hl, wTilesetPalettes
add [hl]
ld l, a
@@ -82,5 +114,5 @@ _ScrollBGMapPalettes::
inc hl
inc de
dec c
jr nz, .loop
jp nz, .loop
ret