diff options
author | ElectroDeoxys <ElectroDeoxys@gmail.com> | 2020-12-23 00:38:06 +0000 |
---|---|---|
committer | ElectroDeoxys <ElectroDeoxys@gmail.com> | 2020-12-24 17:52:51 +0000 |
commit | 4d5fd88d6071465267818b31a77f0fb6e86d9140 (patch) | |
tree | a0c00ddd1978c3a3998302f925a574d180db1f9b /src | |
parent | 9fab715759ddf919b0c4bb9a01095c4c225fcac0 (diff) |
Initial disasm of banks 7 and 20
Diffstat (limited to 'src')
-rw-r--r-- | src/constants/gfx_constants.asm | 3 | ||||
-rw-r--r-- | src/engine/bank01.asm | 82 | ||||
-rw-r--r-- | src/engine/bank03.asm | 2 | ||||
-rw-r--r-- | src/engine/bank04.asm | 150 | ||||
-rw-r--r-- | src/engine/bank07.asm | 705 | ||||
-rw-r--r-- | src/engine/bank20.asm | 897 | ||||
-rw-r--r-- | src/engine/home.asm | 29 | ||||
-rw-r--r-- | src/macros/wram.asm | 7 | ||||
-rw-r--r-- | src/wram.asm | 80 |
9 files changed, 1795 insertions, 160 deletions
diff --git a/src/constants/gfx_constants.asm b/src/constants/gfx_constants.asm index 61f49b8..0e82519 100644 --- a/src/constants/gfx_constants.asm +++ b/src/constants/gfx_constants.asm @@ -10,6 +10,9 @@ BG_MAP_HEIGHT EQU 32 ; tiles CGB_PAL_SIZE EQU 8 ; bytes palettes EQUS "* CGB_PAL_SIZE" +NUM_BACKGROUND_PALETTES EQU 8 +NUM_OBJECT_PALETTES EQU 8 + ; tile size TILE_SIZE EQU 16 ; bytes tiles EQUS "* TILE_SIZE" diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index a7184a6..9f54bb1 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -7714,19 +7714,20 @@ Func_7195: ; 7195 (1:7195) ret _TossCoin: ; 71ad (1:71ad) - ld [wcd9c], a + ld [wCoinTossTotalNum], a ld a, [wDuelDisplayedScreen] cp COIN_TOSS - jr z, .asm_71c1 + jr z, .print_text xor a - ld [wcd9f], a + ld [wCoinTossNumTossed], a call EmptyScreen call LoadDuelCoinTossResultTiles -.asm_71c1 - ld a, [wcd9f] +.print_text +; no need to print text if this is not the first coin toss + ld a, [wCoinTossNumTossed] or a - jr nz, .asm_71ec + jr nz, .clear_text_pointer ld a, COIN_TOSS ld [wDuelDisplayedScreen], a lb de, 0, 12 @@ -7743,47 +7744,53 @@ _TossCoin: ; 71ad (1:71ad) ld l, a call PrintText -.asm_71ec +.clear_text_pointer ld hl, wCoinTossScreenTextID xor a ld [hli], a ld [hl], a + +; store duelist type and reset number of heads call EnableLCD ld a, DUELVARS_DUELIST_TYPE call GetTurnDuelistVariable - ld [wcd9e], a + ld [wCoinTossDuelistType], a call ExchangeRNG xor a ld [wCoinTossNumHeads], a -.asm_7204 - ld a, [wcd9c] - cp $2 +.print_coin_tally +; skip printing text if it's only one coin toss + ld a, [wCoinTossTotalNum] + cp 2 jr c, .asm_7223 + +; write "#coin/#total coins" lb bc, 15, 11 - ld a, [wcd9f] - inc a + ld a, [wCoinTossNumTossed] + inc a ; current coin number is wCoinTossNumTossed + 1 call WriteTwoDigitNumberInTxSymbolFormat ld b, 17 ld a, SYM_SLASH call WriteByteToBGMap0 inc b - ld a, [wcd9c] + ld a, [wCoinTossTotalNum] call WriteTwoDigitNumberInTxSymbolFormat .asm_7223 call Func_3b21 ld a, $58 call Func_3b6a - ld a, [wcd9e] + + ld a, [wCoinTossDuelistType] or a jr z, .asm_7236 - call $7324 + call Func_7324 jr .asm_723c .asm_7236 call WaitForWideTextBoxInput - call $72ff + call Func_72ff .asm_723c call Func_3b21 @@ -7798,11 +7805,11 @@ _TossCoin: ; 71ad (1:71ad) .asm_724d ld a, d call Func_3b6a - ld a, [wcd9e] + ld a, [wCoinTossDuelistType] or a jr z, .asm_725e ld a, e - call $7310 + call Func_7310 ld e, a jr .asm_726c @@ -7813,7 +7820,7 @@ _TossCoin: ; 71ad (1:71ad) pop de jr c, .asm_725e ld a, e - call $72ff + call Func_72ff .asm_726c ld b, $5c @@ -7829,7 +7836,7 @@ _TossCoin: ; 71ad (1:71ad) .asm_727c ld a, b call Func_3b6a - ld a, [wcd9e] + ld a, [wCoinTossDuelistType] or a jr z, .asm_728a ld a, $1 @@ -7846,13 +7853,13 @@ _TossCoin: ; 71ad (1:71ad) .asm_7292 ld a, d call PlaySFX - ld a, [wcd9c] + ld a, [wCoinTossTotalNum] dec a jr z, .asm_72b9 ld a, c push af ld e, $0 - ld a, [wcd9f] + ld a, [wCoinTossNumTossed] .asm_72a3 cp $a jr c, .asm_72ad @@ -7870,17 +7877,17 @@ _TossCoin: ; 71ad (1:71ad) call FillRectangle .asm_72b9 - ld hl, wcd9f + ld hl, wCoinTossNumTossed inc [hl] - ld a, [wcd9e] + ld a, [wCoinTossDuelistType] or a jr z, .asm_72dc ld a, [hl] - ld hl, wcd9c + ld hl, wCoinTossTotalNum cp [hl] call z, WaitForWideTextBoxInput - call $7324 - ld a, [wcd9c] + call Func_7324 + ld a, [wCoinTossTotalNum] ld hl, wCoinTossNumHeads or [hl] jr nz, .asm_72e2 @@ -7889,14 +7896,14 @@ _TossCoin: ; 71ad (1:71ad) .asm_72dc call WaitForWideTextBoxInput - call $72ff + call Func_72ff .asm_72e2 call Func_3b31 - ld a, [wcd9f] - ld hl, wcd9c + ld a, [wCoinTossNumTossed] + ld hl, wCoinTossTotalNum cp [hl] - jp c, .asm_7204 + jp c, .print_coin_tally call ExchangeRNG call Func_3b31 call Func_3b21 @@ -7922,17 +7929,19 @@ Func_7310: ; 7310 (1:7310) ldh [hff96], a ld a, [wDuelType] cp DUELTYPE_LINK - jr z, .asm_7338 + jr z, Func_7338 .asm_7319 call DoFrame call CheckAnyAnimationPlaying jr c, .asm_7319 ldh a, [hff96] ret + +Func_7324: ; 7324 (1:7324) ldh [hff96], a ld a, [wDuelType] cp DUELTYPE_LINK - jr z, .asm_7338 + jr z, Func_7338 ld a, 30 .asm_732f call DoFrame @@ -7940,10 +7949,11 @@ Func_7310: ; 7310 (1:7310) jr nz, .asm_732f ldh a, [hff96] ret -.asm_7338 + +Func_7338: ; 7338 (1:7338) call DoFrame call SerialRecvByte - jr c, .asm_7338 + jr c, Func_7338 call Func_7344 ret ; 0x7344 diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index 37e09c2..1b5d5f1 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -567,7 +567,7 @@ Func_c49c: ; c49c (3:449c) Func_c4b9: ; c4b9 (3:44b9) xor a - ld [wd4ca], a + ld [wVRAMTileOffset], a ld [wd4cb], a ld a, $1d farcall Func_80418 diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index e3f65f0..e67216b 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1288,8 +1288,44 @@ endr Unknown_128fb: ; 128fb INCROM $128fb, $1296e +; disables all sprite animations +; and clears memory related to sprites Func_1296e: ; 1296e (4:696e) - INCROM $1296e, $1299f + push af + ld a, [wd5d7] + or a + jr z, .asm_12977 + pop af + ret + +.asm_12977 + pop af + push bc + push hl + xor a + ld [wWhichSprite], a + call GetFirstSpriteAnimBufferProperty + lb bc, 0, SPRITE_ANIM_LENGTH + +; disable all sprite animations +.loop_sprites + xor a + ld [hl], a ; set SPRITE_ANIM_ENABLED to 0 + add hl, bc + ld a, [wWhichSprite] + inc a + ld [wWhichSprite], a + cp SPRITE_ANIM_BUFFER_CAPACITY + jr nz, .loop_sprites + + call Func_12bf3 + call ZeroObjectPositions + ld hl, wVBlankOAMCopyToggle + inc [hl] + pop hl + pop bc + ret +; 0x1299f ; creates a new entry in SpriteAnimBuffer, else loads the sprite if need be CreateSpriteAndAnimBufferEntry: ; 1299f (4:699f) @@ -1359,7 +1395,37 @@ FillNewSpriteAnimBufferEntry: ; 129d9 (4:69d9) ret ; 0x129fa - INCROM $129fa, $12a21 +Func_129fa: ; 129fa (4:69fa) + ld a, [wWhichSprite] + push af + ld a, [wd5d7] + or a + jr z, .asm_12a06 + pop af + ret +.asm_12a06 + pop af + push hl + push bc + ld c, SPRITE_ANIM_ENABLED + call GetSpriteAnimBufferProperty_SpriteInA + ld [hl], $00 + pop bc + pop hl + ret +; 0x12a13 + +Func_12a13: ; 12a13 (4:6a13) + ld a, [wWhichSprite] + push hl + push bc + ld c, SPRITE_ANIM_COUNTER + call GetSpriteAnimBufferProperty_SpriteInA + ld a, [hl] + pop bc + pop hl + ret +; 0x12a21 HandleAllSpriteAnimations: ; 12a21 (4:6a21) push af @@ -1475,6 +1541,9 @@ StartNewSpriteAnimation: ; 12ab5 (4:6ab5) cp [hl] pop hl ret z + ; fallthrough + +StartSpriteAnimation: ; 12ac0 (4:6ac0) push hl call LoadSpriteAnimPointers call HandleAnimationFrame @@ -1482,7 +1551,26 @@ StartNewSpriteAnimation: ; 12ab5 (4:6ab5) ret ; 0x12ac9 - INCROM $12ac9, $12ae2 +Func_12ac9: ; 12ac9 (4:6ac9) + push bc + ld b, a + ld a, c + or a + ld a, b + pop bc + jr z, StartSpriteAnimation + + push hl + push bc + call LoadSpriteAnimPointers + ld a, $ff + call GetAnimFramePointerFromOffset + pop bc + ld a, c + call SetAnimationCounterAndLoop + pop hl + ret +; 0x12ae2 ; Given an animation ID, fills the current sprite's Animation Pointer and Frame Offset Pointer ; a - Animation ID for current sprite @@ -1582,11 +1670,12 @@ HandleAnimationFrame: ; 12b13 (4:6b13) pop bc ret -; Calls GetAnimationFramePointer after setting up wTempPointerBank and wd4ca +; Calls GetAnimationFramePointer after setting up wTempPointerBank +; and wVRAMTileOffset ; a - frame offset from Animation Data ; hl - beginning of Sprite Anim Buffer GetAnimFramePointerFromOffset: ; 12b6a (4:6b6a) - ld [wd4ca], a + ld [wVRAMTileOffset], a push hl push bc push de @@ -1638,9 +1727,26 @@ Func_12ba7: ; 12ba7 (4:6ba7) INCROM $12ba7, $12bcd Func_12bcd: ; 12bcd (4:6bcd) - INCROM $12bcd, $12c05 + INCROM $12bcd, $12bf3 + +; clears wSpriteVRAMBufferSize and wSpriteVRAMBuffer +Func_12bf3: ; 12bf3 (4:6bf3) + push hl + push bc + xor a + ld [wSpriteVRAMBufferSize], a + ld c, $40 + ld hl, wSpriteVRAMBuffer +.asm_12bfe + ld [hli], a + dec c + jr nz, .asm_12bfe + pop bc + pop hl + ret +; 0x12c05 -; gets some value based on the sprite in b and wd5d8 +; gets some value based on the sprite in a and wSpriteVRAMBuffer ; loads the sprites data if it doesn't already exist Func_12c05: ; 12c05 (4:6c05) push hl @@ -1648,9 +1754,9 @@ Func_12c05: ; 12c05 (4:6c05) push de ld b, a ld d, $0 - ld a, [wd618] + ld a, [wSpriteVRAMBufferSize] ld c, a - ld hl, wd5d8 + ld hl, wSpriteVRAMBuffer or a jr z, .tryToAddSprite @@ -1661,40 +1767,43 @@ Func_12c05: ; 12c05 (4:6c05) jr z, .foundSpriteMatch inc hl ld a, [hli] - add [hl] + add [hl] ; add tile size to tile offset ld d, a inc hl dec c jr nz, .findSpriteMatchLoop + .tryToAddSprite - ld a, [wd618] + ld a, [wSpriteVRAMBufferSize] cp $10 jr nc, .quitFail inc a - ld [wd618], a + ld [wSpriteVRAMBufferSize], a ; increase number of entries by 1 inc hl push hl ld a, b - ld [hli], a + ld [hli], a ; store sprite index call Func_12c4f push af ld a, d - ld [hli], a + ld [hli], a ; store tile offset pop af - ld [hl], a + ld [hl], a ; store tile size pop hl + .foundSpriteMatch dec hl - inc [hl] + inc [hl] ; mark this entry as valid inc hl inc hl ld a, [hli] add [hl] cp $81 - jr nc, .quitFail + jr nc, .quitFail ; exceeds total tile size ld a, d or a jr .quitSucceed + .quitFail debug_ret xor a @@ -1705,12 +1814,17 @@ Func_12c05: ; 12c05 (4:6c05) pop hl ret +; input: +; a = sprite index within the data map +; d = tile offset in VRAM +; output: +; a = number of tiles in sprite Func_12c4f: ; 12c4f (4:6c4f) push af xor a ld [wd4cb], a ld a, d - ld [wd4ca], a + ld [wVRAMTileOffset], a pop af farcall Func_8025b ret diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm index 375a161..a8fe73a 100644 --- a/src/engine/bank07.asm +++ b/src/engine/bank07.asm @@ -598,7 +598,8 @@ Func_1c8ef: ; 1c8ef (7:48ef) ld a, [wTempAnimation] ld [wd4bf], a cp $61 - jp nc, $4b5e ; asm_007_4b5e + jp nc, Func_1cb5e + push hl push bc push de @@ -632,7 +633,7 @@ Func_1c8ef: ; 1c8ef (7:48ef) add hl, bc ld a, [hl] rlca - add $48 + add LOW(.address) ; $48 ld l, a ; LO ld a, HIGH(.address) ; $49 adc 0 @@ -654,6 +655,7 @@ Func_1c8ef: ; 1c8ef (7:48ef) dw Func_1c94a Func_1c94a: ; 1c94a (7:494a) +; if any of the first 3 bytes is $00, return carry ld e, l ld d, h ld c, 3 @@ -664,23 +666,25 @@ Func_1c94a: ; 1c94a (7:494a) inc de dec c jr nz, .loop + ld a, [hli] farcall CreateSpriteAndAnimBufferEntry ld a, [wWhichSprite] ld [wAnimationQueue], a ; push an animation to the queue + xor a - ld [wd4ca], a + ld [wVRAMTileOffset], a ld [wd4cb], a + ld a, [hli] - farcall $20, $4418 - ld a, [hli] + farcall Func_80418 + ld a, [hli] push af ld a, [hli] ld [wd42b], a call Func_1c980 pop af - farcall StartNewSpriteAnimation or a jr .return @@ -703,11 +707,11 @@ Func_1c980: ; 1c980 (7:4980) or [hl] ld [hli], a ld a, b - ld [hli], a - ld [hl], c + ld [hli], a ; SPRITE_ANIM_COORD_X + ld [hl], c ; SPRITE_ANIM_COORD_Y pop af - ld bc, $000c + lb bc, 0, SPRITE_ANIM_FLAGS - SPRITE_ANIM_COORD_Y add hl, bc ld c, a and %00000011 @@ -717,6 +721,10 @@ Func_1c980: ; 1c980 (7:4980) pop hl ret +; output: +; a = anim flags +; b = x coordinate +; c = y coordinate Func_1c9a2: ; 1c9a2 (7:49a2) push hl ld c, 0 @@ -725,17 +733,18 @@ Func_1c9a2: ; 1c9a2 (7:49a2) jr nz, .calc_addr ld a, [wd4ae] - add a + add a ; 2 * [wd4ae] ld c, a - add a - add c - add a + add a ; 4 * [wd4ae] + add c ; 6 * [wd4ae] + add a ; 12 * [wd4ae] ld c, a + ld a, [wd4af] cp PLAYER_TURN jr z, .player_turn - ld a, $06 + ld a, 6 add c ld c, a .player_turn @@ -746,6 +755,7 @@ Func_1c9a2: ; 1c9a2 (7:49a2) ld hl, Data_1c9e0 add hl, bc ld c, [hl] + .calc_addr ld a, c add a ; a = c * 2 @@ -802,29 +812,30 @@ Data_1c9e0: db $0e macro_1ca04: MACRO - dw \1 + db \1 db \2 + db \3 ENDM Data_1ca04: -; value(2), flag(1) - macro_1ca04 $5858, $08 - macro_1ca04 $5028, $00 - macro_1ca04 $3088, $63 - macro_1ca04 $4858, $00 - macro_1ca04 $6018, $00 - macro_1ca04 $6038, $00 - macro_1ca04 $6058, $00 - macro_1ca04 $6078, $00 - macro_1ca04 $6098, $00 - macro_1ca04 $5058, $00 - macro_1ca04 $2898, $00 - macro_1ca04 $2878, $00 - macro_1ca04 $2858, $00 - macro_1ca04 $2838, $00 - macro_1ca04 $2818, $00 - -Func_1ca31: ; 1ca31 (7:4a6b) +; x coord, y coord, animation flags + macro_1ca04 $58, $58, %00001000 + macro_1ca04 $28, $50, %00000000 + macro_1ca04 $88, $30, %01100011 + macro_1ca04 $58, $48, %00000000 + macro_1ca04 $18, $60, %00000000 + macro_1ca04 $38, $60, %00000000 + macro_1ca04 $58, $60, %00000000 + macro_1ca04 $78, $60, %00000000 + macro_1ca04 $98, $60, %00000000 + macro_1ca04 $58, $50, %00000000 + macro_1ca04 $98, $28, %00000000 + macro_1ca04 $78, $28, %00000000 + macro_1ca04 $58, $28, %00000000 + macro_1ca04 $38, $28, %00000000 + macro_1ca04 $18, $28, %00000000 + +Func_1ca31: ; 1ca31 (7:4a31) push hl push bc ld a, [wd4ac] @@ -837,8 +848,9 @@ Func_1ca31: ; 1ca31 (7:4a6b) cp b jp z, .asm_007_4a6b ld [hl], a - ld b, 0 - ld hl, $d42c + + ld b, $00 + ld hl, wd42c add hl, bc ld a, [wTempAnimation] ld [hli], a @@ -848,20 +860,64 @@ Func_1ca31: ; 1ca31 (7:4a6b) ld [hli], a ld a, [wd4b0] ld [hli], a - ld a, [$d4b1] + ld a, [wd4b1] ld [hli], a - ld a, [$d4b2] + ld a, [wd4b2] ld [hli], a - ld a, [$d4b3] + ld a, [wd4b3] ld [hli], a ld a, [wd4be] ld [hl], a + .asm_007_4a6b pop bc pop hl ret - INCROM $1ca6e, $1cab3 +Func_1ca6e: ; 1ca6e (7:4a6e) + push hl + push bc +.asm_1ca70 + ld a, [wd4ad] + ld b, a + ld a, [wd4ac] + cp b + jr z, .asm_1cab0 + + ld c, a + add $08 + and $7f + ld [wd4ac], a + + ld b, $00 + ld hl, wd42c + add hl, bc + ld a, [hli] + ld [wTempAnimation], a + ld a, [hli] + ld [wd4ae], a + ld a, [hli] + ld [wd4af], a + ld a, [hli] + ld [wd4b0], a + ld a, [hli] + ld [wd4b1], a + ld a, [hli] + ld [wd4b2], a + ld a, [hli] + ld [wd4b3], a + ld a, [hl] + ld [wd4be], a + + call Func_1c8ef + call CheckAnyAnimationPlaying + jr nc, .asm_1ca70 + +.asm_1cab0 + pop bc + pop hl + ret +; 0x1cab3 Func_1cab3: ; 1cab3 (7:4ab3) push bc @@ -873,12 +929,64 @@ Func_1cab3: ; 1cab3 (7:4ab3) ld c, l add hl, hl ; hl = anim * 4 add hl, bc ; hl = anim * 6 - ld bc, $4e32 + ld bc, Data_1ce32 add hl, bc pop bc ret - INCROM $1cac5, $1cb18 +Func_1cac5: ; 1cac5 (7:4ac5) + ld a, [wd42a] + cp $ff + jr nz, .asm_1cb03 + + ld a, [wd4c0] + or a + jr z, .asm_1cafb + cp $80 + jr z, .asm_1cb11 + ld hl, wAnimationQueue + ld c, $07 +.asm_1cadb + push af + push bc + ld a, [hl] + cp $ff + jr z, .asm_1caf4 + ld [wWhichSprite], a + farcall Func_12a13 + cp $ff + jr nz, .asm_1caf4 + farcall Func_129fa + ld a, $ff + ld [hl], a +.asm_1caf4 + pop bc + pop af + and [hl] + inc hl + dec c + jr nz, .asm_1cadb +.asm_1cafb + cp $ff + jr nz, .asm_1cb02 + call Func_1ca6e +.asm_1cb02 + ret + +.asm_1cb03 + ld hl, wd4b9 + ld a, [hli] + ld h, [hl] + ld l, a + call CallHL2 + ld a, [wd42a] + jr .asm_1cafb + +.asm_1cb11 + ld a, $ff + ld [wd4c0], a + jr .asm_1cafb +; 0x1cb18 Func_1cb18: ; 1cb18 (7:4b18) push hl @@ -924,7 +1032,236 @@ Func_1cb18: ; 1cb18 (7:4b18) jr .asm_1cb57 ; 0x1cb5e - INCROM $1cb5e, $1ccbc +Func_1cb5e: ; 1cb5e (7:4b5e) + cp $96 + jp nc, Func_1ce03 + cp $8c + jp nz, Func_1cc76 + jr .asm_1cb6a ; redundant +.asm_1cb6a + ld a, [wd4b2] + cp $03 + jr nz, .asm_1cb76 + ld a, [wd4b1] + cp $e8 +.asm_1cb76 + ret nc + + xor a + ld [wd4b8], a + ld [wVRAMTileOffset], a + ld [wd4cb], a + + ld a, $25 + farcall Func_80418 + call Func_1cba6 + + ld hl, wd4b3 + bit 0, [hl] + call nz, Func_1cc3e + + ld a, $12 + ld [wd4b8], a + bit 1, [hl] + call nz, Func_1cc4e + + bit 2, [hl] + call nz, Func_1cc66 + + xor a + ld [wd4b3], a + ret +; 0x1cba6 + +Func_1cba6: ; 1cba6 (7:4ba6) + call Func_1cc03 + xor a + ld [wd4b7], a + + ld hl, wd4b4 + ld de, wAnimationQueue + 1 +.asm_1cbb3 + push hl + push de + ld a, [hl] + or a + jr z, .asm_1cbbc + call Func_1cbcc + +.asm_1cbbc + pop de + pop hl + inc hl + inc de + ld a, [wd4b7] + inc a + ld [wd4b7], a + cp $03 + jr c, .asm_1cbb3 + ret +; 0x1cbcc + +Func_1cbcc: ; 1cbcc (7:4bcc) + push af + ld a, $2e + farcall CreateSpriteAndAnimBufferEntry + ld a, [wWhichSprite] + ld [de], a + ld a, $80 + ld [wd42b], a + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + call Func_1c9a2 + + ld a, [wd4b7] + add $fd + ld e, a + ld a, $4b + adc 0 + ld d, a + ld a, [de] + add b + + ld [hli], a ; SPRITE_ANIM_COORD_X + ld [hl], c ; SPRITE_ANIM_COORD_Y + + ld a, [wd4b8] + ld c, a + pop af + farcall Func_12ac9 + ret +; 0x1cbfd + + INCROM $1cbfd, $1cc03 + +Func_1cc03: ; 1cc03 (7:4c03) + ld a, [wd4b1] + ld l, a + ld a, [wd4b2] + ld h, a + + ld de, wd4b4 + ld bc, -100 + call .Func_1cc2f + ld bc, -10 + call .Func_1cc2f + + ld a, l + add $4f + ld [de], a + ld hl, wd4b4 + ld c, 2 +.asm_1cc23 + ld a, [hl] + cp $4f + jr nz, .asm_1cc2e + ld [hl], $00 + inc hl + dec c + jr nz, .asm_1cc23 +.asm_1cc2e + ret +; 0x1cc2f + +.Func_1cc2f + ld a, $4e +.loop + inc a + add hl, bc + jr c, .loop + + ld [de], a + inc de + ld a, l + sub c + ld l, a + ld a, h + sbc b + ld h, a + ret +; 0x1cc3e + +Func_1cc3e: ; 1cc3e (7:4c3e) + push hl + ld a, $03 + ld [wd4b7], a + ld de, wAnimationQueue + 4 + ld a, $5b + call Func_1cbcc + pop hl + ret +; 0x1cc4e + +Func_1cc4e: ; 1cc4e (7:4c4e) + push hl + ld a, $04 + ld [wd4b7], a + ld de, wAnimationQueue + 5 + ld a, $5a + call Func_1cbcc + ld a, [wd4b8] + add $12 + ld [wd4b8], a + pop hl + ret +; 0x1cc66 + +Func_1cc66: ; 1cc66 (7:4c66) + push hl + ld a, $05 + ld [wd4b7], a + ld de, wAnimationQueue + 6 + ld a, $59 + call Func_1cbcc + pop hl + ret +; 0x1cc76 + +Func_1cc76: ; 1cc76 (7:4c76) + ld a, [wd421] + or a + jr nz, .asm_1cc9e + ld a, [wTempAnimation] + ld [wd42a], a + sub $61 + add a + add a + ld c, a + ld b, $00 + ld hl, Data_1cc9f + add hl, bc + ld a, [hli] + ld [wd4b9], a + ld c, a + ld a, [hli] + ld [wd4b9 + 1], a + ld b, a + ld a, [hl] + ld [wd4bb], a + call CallBC +.asm_1cc9e + ret +; 0x1cc9f + +macro_1cc9f: MACRO + dw \1 + db \2 + db \3 +ENDM + +Data_1cc9f: ; 1cc9f (7:4c9f) + macro_1cc9f Func_1cce4, $18, $00 + macro_1cc9f Func_1cce9, $20, $00 + macro_1cc9f Func_1cd10, $18, $00 + macro_1cc9f Func_1cd15, $20, $00 + macro_1cc9f Func_1cd76, $08, $00 + macro_1cc9f Func_1cdc3, $3f, $00 + +Func_1ccb7: ; 1ccb7 (7:4cb7) + ld a, [wd4bb] + or a + ret nz + ; fallthrough Func_1ccbc: ; 1ccbc (7:4cbc) ld a, $ff @@ -941,7 +1278,289 @@ Func_1ccbc: ; 1ccbc (7:4cbc) ret ; 0x1ccd4 - INCROM $1ccd4, $1d078 + INCROM $1ccd4, $1cce4 + +Func_1cce4: ; 1cce4 (7:4ce4) + ld hl, $4d55 + jr Func_1ccee + +Func_1cce9: ; 1cce9 (7:4ce9) + ld hl, $4d61 + jr Func_1ccee + +Func_1ccee: ; 1ccee (7:4cee) + ld a, l + ld [wd4bc], a + ld a, h + ld [wd4bc + 1], a + + ld hl, wd4b9 + ld [hl], LOW(.asm_1ccff) + inc hl + ld [hl], HIGH(.asm_1ccff) + ret + +.asm_1ccff + call Func_1cd71 + call Func_1cd3c + jp nc, Func_1ccb7 + ldh a, [hSCX] + add [hl] + ldh [hSCX], a + jp Func_1ccb7 +; 0x1cd10 + +Func_1cd10: ; 1cd10 (7:4d10) + ld hl, $4d55 + jr Func_1cd1a + +Func_1cd15: ; 1cd15 (7:4d15) + ld hl, $4d61 + jr Func_1cd1a + +Func_1cd1a: ; 1cd1a (7:4d1a) + ld a, l + ld [wd4bc], a + ld a, h + ld [wd4bc + 1], a + ld hl, wd4b9 + ld [hl], LOW(.asm_1cd2b) + inc hl + ld [hl], HIGH(.asm_1cd2b) + ret + +.asm_1cd2b + call Func_1cd71 + call Func_1cd3c + jp nc, Func_1ccb7 + ldh a, [hSCY] + add [hl] + ldh [hSCY], a + jp Func_1ccb7 +; 0x1cd3c + +Func_1cd3c: ; 1cd3c (7:4d3c) + ld hl, wd4bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd4bb] + cp [hl] + ret nc + inc hl + push hl + inc hl + ld a, l + ld [wd4bc], a + ld a, h + ld [wd4bc + 1], a + pop hl + scf + ret +; 0x1cd55 + + INCROM $1cd55, $1cd71 + +Func_1cd71: ; 1cd71 (7:4d71) + ld hl, wd4bb + dec [hl] + ret +; 0x1cd76 + +Func_1cd76: ; 1cd76 (7:4d76) + ld hl, wd4b9 + ld [hl], $a3 + inc hl + ld [hl], $4d + ld a, [wBGP] + ld [wd4bc], a + ld hl, wBackgroundPalettesCGB + ld de, wd297 + ld bc, 8 palettes + call CopyDataHLtoDE_SaveRegisters + ld de, $7fff + ld hl, wBackgroundPalettesCGB + ld bc, $20 + call FillMemoryWithDE + xor a + call SetBGP + call FlushAllPalettes + call Func_1cd71 + ld a, [wd4bb] + or a + ret nz + ld hl, wd297 + ld de, wBackgroundPalettesCGB + ld bc, 8 palettes + call CopyDataHLtoDE_SaveRegisters + ld a, [wd4bc] + call SetBGP + call FlushAllPalettes + jp Func_1ccbc +; 0x1cdc3 + +Func_1cdc3: ; 1cdc3 (7:4dc3) + ld hl, wd4b9 + ld [hl], $df + inc hl + ld [hl], $4d + xor a + ld [wApplyBGScroll], a + ld hl, $cace + ld [hl], $a6 + inc hl + ld [hl], $3e + ld a, $01 + ld [wBGScrollMod], a + call EnableInt_LYCoincidence + ld a, [$d4bb] + srl a + srl a + srl a + and $07 + ld c, a + ld b, $00 + ld hl, $4dfb + add hl, bc + ld a, [hl] + ld [wBGScrollMod], a + call Func_1cd71 + jp Func_1ccb7 +; 0x1cdfb + + INCROM $1cdfb, $1ce03 + +Func_1ce03: ; 1ce03 (7:4e03) + cp $9e + jr z, .asm_1ce17 + sub $96 + add a + ld c, a + ld b, $00 + ld hl, $4e22 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp Func_3bb5 +.asm_1ce17 + ld a, [wd4b1] + ld l, a + ld a, [wd4b2] + ld h, a + jp Func_3bb5 +; 0x1ce22 + + INCROM $1ce22, $1ce32 + +macro_1ce32: MACRO + db \1 + db \2 + db \3 + db \4 + db \5 + db \6 +ENDM + +Data_1ce32: ; 1ce32 (7:4e32) + macro_1ce32 $00, $00, $00, $00, $00, $00 + macro_1ce32 $28, $1f, $47, %10000000, $11, $00 + macro_1ce32 $29, $20, $48, %10000000, $12, $00 + macro_1ce32 $2a, $21, $49, %10000000, $13, $00 + macro_1ce32 $2b, $22, $4a, %10000000, $14, $00 + macro_1ce32 $2c, $23, $4b, %10000000, $15, $00 + macro_1ce32 $2d, $24, $4c, %10000000, $16, $00 + macro_1ce32 $2d, $24, $4d, %10000000, $16, $00 + macro_1ce32 $2d, $24, $4e, %10000000, $17, $00 + macro_1ce32 $2e, $25, $00, $00, $00, $00 + macro_1ce32 $2f, $26, $5c, $00, $18, $00 + macro_1ce32 $30, $27, $5e, $00, $19, $00 + macro_1ce32 $31, $28, $5f, $00, $1a, $00 + macro_1ce32 $32, $29, $60, %00000100, $1b, $00 + macro_1ce32 $33, $2a, $61, $00, $1c, $00 + macro_1ce32 $33, $2a, $62, $00, $1d, $00 + macro_1ce32 $34, $2b, $63, %00000100, $1e, $00 + macro_1ce32 $35, $2c, $64, $00, $1f, $00 + macro_1ce32 $36, $2d, $69, %00000100, $20, $00 + macro_1ce32 $37, $2e, $6a, $00, $21, $00 + macro_1ce32 $38, $2f, $6b, %00000100, $22, $00 + macro_1ce32 $39, $30, $6c, $00, $23, $00 + macro_1ce32 $3a, $31, $6d, %00000100, $24, $00 + macro_1ce32 $3b, $32, $6e, $00, $25, $00 + macro_1ce32 $3c, $33, $6f, $00, $26, $00 + macro_1ce32 $3d, $34, $70, %01000000 | %00000010, $27, $00 + macro_1ce32 $3e, $35, $71, %01000000 | %00000010, $28, $00 + macro_1ce32 $3f, $36, $72, $00, $29, $00 + macro_1ce32 $3f, $36, $73, $00, $2a, $00 + macro_1ce32 $40, $37, $74, $00, $2b, $00 + macro_1ce32 $40, $37, $75, $00, $52, $00 + macro_1ce32 $40, $37, $76, $00, $53, $00 + macro_1ce32 $41, $38, $77, %00100000 | %00000001, $2c, $00 + macro_1ce32 $42, $39, $78, $00, $2d, $00 + macro_1ce32 $43, $3a, $7a, $00, $2d, $00 + macro_1ce32 $44, $3b, $7b, $00, $2e, $00 + macro_1ce32 $42, $39, $79, $00, $2f, $00 + macro_1ce32 $45, $3c, $7c, %00100000 | %00000001, $30, $00 + macro_1ce32 $46, $3d, $7d, $00, $31, $00 + macro_1ce32 $47, $3e, $7e, $00, $32, $00 + macro_1ce32 $48, $3f, $7f, $00, $33, $00 + macro_1ce32 $49, $40, $80, $00, $34, $00 + macro_1ce32 $4a, $41, $81, $00, $35, $00 + macro_1ce32 $4b, $42, $82, $00, $36, $00 + macro_1ce32 $4c, $43, $83, $00, $37, $00 + macro_1ce32 $4d, $44, $84, $00, $38, $00 + macro_1ce32 $4e, $45, $85, $00, $39, $00 + macro_1ce32 $4f, $46, $86, $00, $3a, $00 + macro_1ce32 $50, $47, $87, %00100000 | %00000001, $3b, $00 + macro_1ce32 $51, $48, $88, $00, $3c, $00 + macro_1ce32 $52, $49, $89, $00, $3d, $00 + macro_1ce32 $53, $4a, $8a, $00, $3e, $00 + macro_1ce32 $54, $4b, $8b, $00, $3f, $00 + macro_1ce32 $55, $4c, $8c, %00000100, $40, $00 + macro_1ce32 $56, $4d, $8d, $00, $41, $00 + macro_1ce32 $57, $4e, $8e, $00, $42, $00 + macro_1ce32 $58, $4f, $8f, %00000100, $43, $00 + macro_1ce32 $59, $50, $90, $00, $44, $00 + macro_1ce32 $5a, $51, $92, $00, $45, $00 + macro_1ce32 $5b, $52, $93, $00, $46, $00 + macro_1ce32 $5c, $53, $94, $00, $47, $00 + macro_1ce32 $5c, $53, $95, $00, $48, $00 + macro_1ce32 $5d, $54, $97, $00, $49, $00 + macro_1ce32 $5e, $55, $99, $00, $4a, $00 + macro_1ce32 $4a, $56, $81, $00, $4b, $00 + macro_1ce32 $5c, $53, $96, $00, $47, $00 + macro_1ce32 $2d, $24, $4d, %10000000, $16, $00 + macro_1ce32 $2d, $24, $4e, %10000000, $17, $00 + macro_1ce32 $2f, $26, $5c, $00, $18, $00 + macro_1ce32 $3a, $31, $6d, %00000100, $24, $00 + macro_1ce32 $5f, $57, $9a, %10000000, $11, $00 + macro_1ce32 $35, $2c, $65, %00000100, $5c, $00 + macro_1ce32 $35, $2c, $66, %00000100, $00, $00 + macro_1ce32 $5d, $54, $98, %00000100, $4c, $00 + macro_1ce32 $59, $50, $91, %00000100, $4d, $00 + macro_1ce32 $60, $58, $9b, $00, $4e, $00 + macro_1ce32 $61, $59, $9c, $00, $4f, $00 + macro_1ce32 $62, $5a, $9d, $00, $50, $00 + macro_1ce32 $35, $2c, $67, %0000100, $51, $00 + macro_1ce32 $35, $2c, $68, %0000100, $51, $00 + macro_1ce32 $63, $5b, $9e, %10000000 | %00001000 | %00000100, $00, $00 + macro_1ce32 $63, $5b, $9f, %10000000 | %00001000 | %00000100, $07, $00 + macro_1ce32 $63, $5b, $a0, %10000000 | %00001000 | %00000100, $07, $00 + macro_1ce32 $63, $5b, $a1, %10000000 | %00001000 | %00000100, $07, $00 + macro_1ce32 $63, $5b, $a2, %10000000 | %00000100, $00, $00 + macro_1ce32 $63, $5b, $a3, %10000000 | %00001000 | %00000100, $00, $00 + macro_1ce32 $63, $5b, $a4, %10000000 | %00001000 | %00000100, $00, $00 + macro_1ce32 $63, $5b, $a5, %10000000 | %00001000 | %00000100, $00, $00 + macro_1ce32 $64, $5c, $a7, %10000000 | %00001000 | %00000100, $00, $00 + macro_1ce32 $64, $5c, $a8, %10000000 | %00001000 | %00000100, $0b, $00 + macro_1ce32 $64, $5c, $a9, %10000000 | %00001000 | %00000100, $0b, $00 + macro_1ce32 $64, $5c, $aa, %10000000 | %00000100, $00, $00 + macro_1ce32 $64, $5c, $ab, %10000000 | %00000100, $00, $00 + macro_1ce32 $65, $5d, $ac, %10000000 | %00000100, $00, $00 + macro_1ce32 $65, $5d, $ad, %10000000 | %00000100, $00, $00 + macro_1ce32 $65, $5d, $ae, %10000000 | %00000100, $00, $00 + macro_1ce32 $63, $5b, $a6, %10000000 | %00000100, $00, $00 +; 0x1d078 Func_1d078: ; 1d078 (7:5078) ld a, [wd627] diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm index 14292f9..9594926 100644 --- a/src/engine/bank20.asm +++ b/src/engine/bank20.asm @@ -26,7 +26,7 @@ Func_80077: ; 80077 (20:4077) push bc push de call BCCoordToBGMap0Address - ld hl, wd4c2 + ld hl, wVRAMPointer ld [hl], e inc hl ld [hl], d @@ -66,9 +66,9 @@ Func_800bd: ; 800bd (20:40bd) ld d, a ld b, $c0 call Func_08bf - ld a, [wd4c2] + ld a, [wVRAMPointer] ld e, a - ld a, [wd4c3] + ld a, [wVRAMPointer + 1] ld d, a call Func_800e0 pop de @@ -311,36 +311,46 @@ LoadGraphicsPointerFromHL: ; 80229 (20:4229) INCROM $80238, $8025b +; loads graphics data from third map data pointers +; input: +; a = sprite index within the data map +; output: +; a = number of tiles in sprite Func_8025b: ; 8025b (20:425b) push hl ld l, $4 call GetMapDataPointer call LoadGraphicsPointerFromHL - ld a, [hl] + ld a, [hl] ; tile size push af - ld [wd4c8], a - ld a, $10 - ld [wd4c7], a - call Func_80274 + ld [wCurSpriteNumTiles], a + ld a, TILE_SIZE + ld [wCurSpriteTileSize], a + call LoadGfxDataFromTempPointerToVRAMBank pop af pop hl ret -Func_80274: ; 80274 (20:4274) - call Func_8029f - jr asm_8027c +; loads graphics data pointed by wTempPointer in wTempPointerBank +; to the VRAM bank according to wd4cb, in address pointed by wVRAMPointer +LoadGfxDataFromTempPointerToVRAMBank: ; 80274 (20:4274) + call GetTileOffsetPointerAndSwitchVRAM + jr LoadGfxDataFromTempPointer Func_80279: ; 80279 (20:4279) call Func_802bb -asm_8027c: + +; loads graphics data pointed by wTempPointer in wTempPointerBank +; to wVRAMPointer +LoadGfxDataFromTempPointer: push hl push bc push de - ld a, [wd4c8] + ld a, [wCurSpriteNumTiles] ld b, a - ld a, [wd4c7] + ld a, [wCurSpriteTileSize] ld c, a - ld hl, wd4c2 + ld hl, wVRAMPointer ld e, [hl] inc hl ld d, [hl] @@ -350,23 +360,30 @@ asm_8027c: ld l, a inc hl inc hl - call Func_395a + call CopyGfxDataFromTempBank call BankswitchVRAM0 pop de pop bc pop hl ret -Func_8029f: ; 8029f (20:429f) - ld a, [wd4ca] +; convert wVRAMTileOffset to address in VRAM +; and stores it in wVRAMPointer +; switches VRAM according to wd4cb +GetTileOffsetPointerAndSwitchVRAM: ; 8029f (20:429f) +; address of the tile offset is wVRAMTileOffset * $10 + $8000 + ld a, [wVRAMTileOffset] swap a push af and $f0 - ld [wd4c2], a + ld [wVRAMPointer], a pop af and $f - add $80 - ld [wd4c3], a + add HIGH(v0Tiles0) ; $80 + ld [wVRAMPointer + 1], a + +; if bottom bit in wd4cb is not set = VRAM0 +; if bottom bit in wd4cb is set = VRAM1 ld a, [wd4cb] and $1 call BankswitchVRAM @@ -377,10 +394,10 @@ Func_802bb: ; 802bb (20:42bb) push af xor $80 ld [wd4ca], a - call Func_8029f - ld a, [wd4c3] + call GetTileOffsetPointerAndSwitchVRAM + ld a, [wVRAMPointer + 1] add $8 - ld [wd4c3], a + ld [wVRAMPointer + 1], a pop af ld [wd4ca], a ret @@ -398,10 +415,145 @@ Func_803b9: ; 803b9 (20:43b9) ret ; 0x803c9 - INCROM $803c9, $80418 + INCROM $803c9, $803ec + +; copies from palette data in hl c bytes to palette index b +; in WRAM, starting from wBackgroundPalettesCGB +; b = palette index +; c = palette size +; hl = palette data to copy +LoadPaletteData: ; 803ec (20:43ec) + push hl + push bc + push de + ld a, b + cp NUM_BACKGROUND_PALETTES + NUM_OBJECT_PALETTES ; total palettes available + jr nc, .fail_return + + add a ; 2 * index + add a ; 4 * index + add a ; 8 * index + add LOW(wBackgroundPalettesCGB) + ld e, a + ld a, HIGH(wBackgroundPalettesCGB) + adc 0 + ld d, a + + ld a, c + cp $09 + jr nc, .fail_return + + add a ; 2 * size + add a ; 4 * size + add a ; 8 * size + ld c, a +.loop + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .loop + call FlushAllPalettes + jr .success_return + +.fail_return + debug_ret + +.success_return + pop de + pop bc + pop hl + ret +; 0x80418 Func_80418: ; 80418 (20:4418) - INCROM $80418, $80480 + push hl + push bc + push de + call CopyPaletteDataToBuffer + + ld hl, wd23e + ld a, [hli] ; number palettes + ld c, a + or a + jr z, .check_palette_size + + ld a, [wd4ca] + cp $01 + jr z, .obp1 + + ld a, [hli] ; pallete for OBP0 + push hl + push bc + call SetOBP0 + pop bc + pop hl + dec c + jr z, .check_palette_size + +.obp1 + ld a, [hli] + push hl + push bc + call SetOBP1 ; pallete for OBP1 + pop bc + pop hl + dec c + jr z, .check_palette_size + inc hl + +.check_palette_size + ld a, [hli] + or a + jr z, .done + +; non-zero size, so load it from data + ld c, a + ld a, [wd4cb] + ; ensure it's a palette index starting from wObjectPalettesCGB + or NUM_BACKGROUND_PALETTES + ld b, a + call LoadPaletteData + +.done + pop de + pop bc + pop hl + ret +; 0x80456 + +; copies palette data of index in a to wd23e +CopyPaletteDataToBuffer: ; 80456 (20:4456) + push hl + push bc + push de + ld l, $08 + call GetMapDataPointer + call LoadGraphicsPointerFromHL + +; size parameter + ld a, [hl] + ld b, a + and $0f + inc a + ld c, a + ld a, b + and $f0 + srl a + inc a + add c + ld c, a + ld b, $00 + + ld de, wd23e + call CopyBankedDataToDE + pop de + pop bc + pop hl + ret +; 0x8047b + + INCROM $8047b, $80480 Func_80480: ; 80480 (20:4480) INCROM $80480, $804d8 @@ -524,7 +676,6 @@ SpriteNullAnimationFrame: db 0 ; might be closer to "screen specific data" than map data -; data in each section is 4 bytes long. MapDataPointers: ; 80e5d (20:4e5d) dw MapDataPointers_80e67 dw MapDataPointers_8100f @@ -533,17 +684,699 @@ MapDataPointers: ; 80e5d (20:4e5d) dw MapDataPointers_81697 MapDataPointers_80e67: ; 80e67 (20:4e67) - INCROM $80e67, $8100f + db $1b, $59, $00, $00 + db $22, $5a, $00, $00 + db $13, $5c, $00, $01 + db $2e, $5d, $00, $01 + db $d1, $5e, $00, $01 + db $f5, $5e, $00, $01 + db $26, $5f, $00, $01 + db $eb, $5f, $00, $01 + db $43, $61, $00, $01 + db $50, $61, $00, $01 + db $60, $61, $00, $02 + db $22, $62, $00, $02 + db $36, $63, $00, $03 + db $00, $64, $00, $03 + db $1d, $65, $00, $03 + db $e7, $65, $00, $03 + db $04, $67, $00, $03 + db $ce, $67, $00, $03 + db $eb, $68, $00, $03 + db $b5, $69, $00, $03 + db $d2, $6a, $00, $03 + db $9c, $6b, $00, $03 + db $b9, $6c, $00, $03 + db $83, $6d, $00, $03 + db $a0, $6e, $00, $03 + db $6a, $6f, $00, $03 + db $87, $70, $00, $03 + db $51, $71, $00, $03 + db $6e, $72, $00, $03 + db $21, $73, $00, $03 + db $24, $74, $00, $04 + db $45, $75, $00, $04 + db $db, $76, $00, $05 + db $8c, $77, $00, $05 + db $8d, $78, $00, $06 + db $d6, $79, $00, $06 + db $00, $40, $01, $07 + db $88, $41, $01, $07 + db $bb, $43, $01, $08 + db $33, $45, $01, $08 + db $2e, $47, $01, $09 + db $d8, $48, $01, $09 + db $73, $4b, $01, $0a + db $6f, $4c, $01, $0a + db $fe, $4d, $01, $0b + db $1d, $4f, $01, $0b + db $b6, $50, $01, $0c + db $91, $51, $01, $0c + db $15, $53, $01, $0d + db $b3, $54, $01, $0d + db $0a, $57, $01, $0e + db $ce, $57, $01, $0e + db $f1, $7b, $00, $0e + db $03, $7c, $00, $0e + db $ef, $58, $01, $0f + db $79, $5a, $01, $0f + db $1a, $7c, $00, $0f + db $26, $7c, $00, $0f + db $e2, $5c, $01, $10 + db $f4, $5d, $01, $10 + db $7c, $5f, $01, $11 + db $7f, $60, $01, $11 + db $36, $7c, $00, $12 + db $7d, $61, $01, $12 + db $93, $61, $01, $12 + db $a9, $61, $01, $12 + db $bf, $61, $01, $12 + db $d5, $61, $01, $12 + db $eb, $61, $01, $12 + db $01, $62, $01, $12 + db $17, $62, $01, $13 + db $da, $62, $01, $13 + db $64, $63, $01, $13 + db $43, $64, $01, $13 + db $df, $64, $01, $14 + db $b5, $65, $01, $14 + db $47, $66, $01, $15 + db $b8, $66, $01, $16 + db $3e, $67, $01, $17 + db $af, $67, $01, $18 + db $33, $68, $01, $19 + db $a4, $68, $01, $1a + db $25, $69, $01, $1b + db $96, $69, $01, $1c + db $14, $6a, $01, $1d + db $85, $6a, $01, $1e + db $28, $6b, $01, $1f + db $99, $6b, $01, $20 + db $34, $6c, $01, $21 + db $a5, $6c, $01, $22 + db $37, $6d, $01, $23 + db $cc, $6d, $01, $24 + db $8a, $6e, $01, $25 + db $18, $6f, $01, $25 + db $c0, $6f, $01, $25 + db $4f, $70, $01, $26 + db $a5, $71, $01, $27 + db $97, $73, $01, $28 + db $b7, $73, $01, $29 + db $e5, $73, $01, $2a + db $13, $74, $01, $2b + db $38, $75, $01, $2c + db $9f, $76, $01, $2d + db $f6, $76, $01, $2d + db $7c, $77, $01, $2e + db $c4, $77, $01, $2f MapDataPointers_8100f: ; 8100f (20:500f) - INCROM $8100f, $8116b + db $00, $40, $02, $c1 + db $12, $4c, $02, $97 + db $28, $78, $01, $4d + db $84, $55, $02, $81 + db $96, $5d, $02, $78 + db $18, $65, $02, $63 + db $4a, $6b, $02, $3c + db $0c, $6f, $02, $a1 + db $00, $40, $03, $83 + db $1e, $79, $02, $57 + db $32, $48, $03, $3a + db $d4, $4b, $03, $52 + db $f6, $50, $03, $57 + db $68, $56, $03, $9d + db $3a, $60, $03, $4e + db $1c, $65, $03, $cf + db $0e, $72, $03, $79 + db $00, $40, $04, $bd + db $a0, $79, $03, $48 + db $d2, $4b, $04, $6d + db $a4, $52, $04, $5d + db $76, $58, $04, $60 + db $78, $5e, $04, $56 + db $da, $63, $04, $60 + db $dc, $69, $04, $56 + db $3e, $6f, $04, $60 + db $40, $75, $04, $56 + db $00, $40, $05, $60 + db $02, $46, $05, $56 + db $64, $4b, $05, $60 + db $66, $51, $05, $60 + db $68, $57, $05, $60 + db $6a, $5d, $05, $60 + db $6c, $63, $05, $60 + db $6e, $69, $05, $60 + db $70, $6f, $05, $61 + db $82, $75, $05, $61 + db $fa, $7c, $01, $04 + db $00, $40, $06, $f4 + db $42, $4f, $06, $3b + db $3c, $7d, $01, $04 + db $7e, $7d, $01, $24 + db $a2, $7a, $04, $24 + db $f4, $62, $06, $dc + db $b6, $70, $06, $d4 + db $e4, $7c, $04, $24 + db $22, $7e, $03, $18 + db $94, $7b, $05, $31 + db $00, $40, $07, $24 + db $42, $42, $07, $24 + db $84, $44, $07, $24 + db $c6, $46, $07, $24 + db $08, $49, $07, $24 + db $4a, $4b, $07, $24 + db $8c, $4d, $07, $24 + db $ce, $4f, $07, $24 + db $10, $52, $07, $24 + db $52, $54, $07, $24 + db $94, $56, $07, $24 + db $d6, $58, $07, $24 + db $18, $5b, $07, $24 + db $5a, $5d, $07, $24 + db $9c, $5f, $07, $24 + db $de, $61, $07, $24 + db $20, $64, $07, $24 + db $62, $66, $07, $24 + db $a4, $68, $07, $24 + db $e6, $6a, $07, $24 + db $28, $6d, $07, $24 + db $6a, $6f, $07, $24 + db $ac, $71, $07, $24 + db $ee, $73, $07, $24 + db $30, $76, $07, $24 + db $72, $78, $07, $24 + db $b4, $7a, $07, $24 + db $f6, $7c, $07, $24 + db $00, $40, $08, $24 + db $42, $42, $08, $24 + db $84, $44, $08, $24 + db $c6, $46, $08, $24 + db $08, $49, $08, $24 + db $4a, $4b, $08, $24 + db $8c, $4d, $08, $24 + db $ce, $4f, $08, $24 + db $10, $52, $08, $24 + db $52, $54, $08, $24 + db $94, $56, $08, $24 MapDataPointers_8116b: ; 8116b (20:516b) - INCROM $8116b, $81333 + db $90, $7e, $02, $14 + db $a6, $7e, $05, $14 + db $f8, $7d, $06, $14 + db $d6, $58, $08, $14 + db $18, $5a, $08, $14 + db $5a, $5b, $08, $14 + db $9c, $5c, $08, $14 + db $de, $5d, $08, $14 + db $20, $5f, $08, $1b + db $d2, $60, $08, $14 + db $14, $62, $08, $14 + db $56, $63, $08, $14 + db $98, $64, $08, $14 + db $da, $65, $08, $14 + db $1c, $67, $08, $14 + db $5e, $68, $08, $14 + db $a0, $69, $08, $14 + db $e2, $6a, $08, $14 + db $24, $6c, $08, $14 + db $66, $6d, $08, $14 + db $a8, $6e, $08, $14 + db $ea, $6f, $08, $14 + db $2c, $71, $08, $14 + db $6e, $72, $08, $14 + db $b0, $73, $08, $14 + db $f2, $74, $08, $14 + db $34, $76, $08, $14 + db $76, $77, $08, $14 + db $b8, $78, $08, $14 + db $fa, $79, $08, $14 + db $3c, $7b, $08, $14 + db $7e, $7c, $08, $14 + db $c0, $7d, $08, $14 + db $26, $7f, $04, $08 + db $00, $40, $09, $14 + db $42, $41, $09, $14 + db $84, $42, $09, $14 + db $3a, $7f, $06, $08 + db $c6, $43, $09, $16 + db $38, $7f, $07, $0a + db $02, $7f, $08, $0b + db $28, $45, $09, $06 + db $8a, $45, $09, $08 + db $c0, $7f, $01, $02 + db $a4, $7f, $03, $04 + db $0c, $46, $09, $09 + db $9e, $46, $09, $12 + db $c0, $47, $09, $09 + db $52, $48, $09, $11 + db $a8, $7f, $04, $03 + db $64, $49, $09, $2d + db $36, $4c, $09, $0d + db $08, $4d, $09, $1c + db $ca, $4e, $09, $4c + db $bc, $7f, $06, $03 + db $8c, $53, $09, $1b + db $3e, $55, $09, $07 + db $b0, $55, $09, $0c + db $ee, $7f, $06, $01 + db $72, $56, $09, $22 + db $94, $58, $09, $20 + db $96, $5a, $09, $0a + db $38, $5b, $09, $25 + db $8a, $5d, $09, $18 + db $0c, $5f, $09, $1b + db $be, $60, $09, $08 + db $40, $61, $09, $0d + db $12, $62, $09, $22 + db $34, $64, $09, $0c + db $f6, $64, $09, $25 + db $48, $67, $09, $22 + db $6a, $69, $09, $0c + db $2c, $6a, $09, $4c + db $ee, $6e, $09, $08 + db $70, $6f, $09, $07 + db $e2, $7f, $01, $01 + db $e2, $6f, $09, $1a + db $84, $71, $09, $0a + db $26, $72, $09, $2e + db $08, $75, $09, $08 + db $8a, $75, $09, $07 + db $fc, $75, $09, $1c + db $b4, $7f, $08, $04 + db $be, $77, $09, $08 + db $40, $78, $09, $0b + db $d2, $7f, $02, $01 + db $f2, $78, $09, $1c + db $b4, $7a, $09, $16 + db $16, $7c, $09, $10 + db $18, $7d, $09, $0f + db $0a, $7e, $09, $07 + db $7c, $7e, $09, $0a + db $1e, $7f, $09, $09 + db $da, $7f, $04, $02 + db $da, $7f, $07, $02 + db $b0, $7f, $09, $03 + db $00, $40, $0a, $08 + db $82, $40, $0a, $0f + db $74, $41, $0a, $03 + db $a6, $41, $0a, $05 + db $f8, $41, $0a, $17 + db $6a, $43, $0a, $36 + db $cc, $46, $0a, $0b + db $7e, $47, $0a, $06 + db $e0, $47, $0a, $16 + db $42, $49, $0a, $20 + db $44, $4b, $0a, $14 + db $86, $4c, $0a, $04 + db $c8, $4c, $0a, $04 + db $0a, $4d, $0a, $04 + db $4c, $4d, $0a, $04 + db $8e, $4d, $0a, $04 + db $d0, $4d, $0a, $04 + db $12, $4e, $0a, $04 ; pointer low, pointer high, bank (minus $20), unknown SpriteAnimationPointers: ; 81333 (20:5333) - INCROM $81333, $81697 + db $54, $4e, $0a, $00 + db $4c, $7c, $00, $00 + db $e4, $7f, $02, $00 + db $e6, $7f, $03, $00 + db $29, $4f, $0a, $00 + db $e8, $7f, $05, $00 + db $e2, $7f, $09, $00 + db $fe, $4f, $0a, $00 + db $0d, $50, $0a, $00 + db $64, $50, $0a, $00 + db $7b, $50, $0a, $00 + db $f5, $7f, $03, $00 + db $f4, $7f, $01, $00 + db $d2, $50, $0a, $00 + db $dd, $50, $0a, $00 + db $b2, $51, $0a, $00 + db $c1, $51, $0a, $00 + db $d8, $51, $0a, $00 + db $e7, $51, $0a, $00 + db $bc, $52, $0a, $00 + db $cb, $52, $0a, $00 + db $e2, $52, $0a, $00 + db $f1, $52, $0a, $00 + db $c6, $53, $0a, $00 + db $d5, $53, $0a, $00 + db $ec, $53, $0a, $00 + db $fb, $53, $0a, $00 + db $d0, $54, $0a, $00 + db $df, $54, $0a, $00 + db $f6, $54, $0a, $00 + db $05, $55, $0a, $00 + db $da, $55, $0a, $00 + db $e9, $55, $0a, $00 + db $00, $56, $0a, $00 + db $0f, $56, $0a, $00 + db $e4, $56, $0a, $00 + db $f3, $56, $0a, $00 + db $0a, $57, $0a, $00 + db $19, $57, $0a, $00 + db $ee, $57, $0a, $00 + db $fd, $57, $0a, $00 + db $14, $58, $0a, $00 + db $23, $58, $0a, $00 + db $f8, $58, $0a, $00 + db $07, $59, $0a, $00 + db $1e, $59, $0a, $00 + db $2d, $59, $0a, $00 + db $84, $59, $0a, $00 + db $9b, $59, $0a, $00 + db $f2, $59, $0a, $00 + db $fd, $59, $0a, $00 + db $08, $5a, $0a, $00 + db $13, $5a, $0a, $00 + db $71, $5a, $0a, $00 + db $80, $5a, $0a, $00 + db $8f, $5a, $0a, $00 + db $ed, $5a, $0a, $00 + db $fc, $5a, $0a, $00 + db $0b, $5b, $0a, $00 + db $6e, $5b, $0a, $00 + db $13, $5d, $0a, $00 + db $6a, $5d, $0a, $00 + db $c1, $5d, $0a, $00 + db $18, $5e, $0a, $00 + db $6f, $5e, $0a, $00 + db $c6, $5e, $0a, $00 + db $6b, $60, $0a, $00 + db $c2, $60, $0a, $00 + db $19, $61, $0a, $00 + db $70, $61, $0a, $00 + db $c7, $61, $0a, $00 + db $1e, $62, $0a, $00 + db $06, $63, $0a, $00 + db $e7, $63, $0a, $00 + db $d5, $64, $0a, $00 + db $18, $66, $0a, $00 + db $0f, $67, $0a, $00 + db $9b, $68, $0a, $00 + db $ba, $68, $0a, $00 + db $e1, $68, $0a, $00 + db $d7, $69, $0a, $00 + db $5e, $6a, $0a, $00 + db $e5, $6a, $0a, $00 + db $6c, $6b, $0a, $00 + db $f3, $6b, $0a, $00 + db $7a, $6c, $0a, $00 + db $01, $6d, $0a, $00 + db $88, $6d, $0a, $00 + db $0f, $6e, $0a, $00 + db $96, $6e, $0a, $00 + db $1d, $6f, $0a, $00 + db $a4, $6f, $0a, $00 + db $2b, $70, $0a, $00 + db $fb, $70, $0a, $00 + db $06, $71, $0a, $00 + db $bb, $72, $0a, $00 + db $05, $74, $0a, $00 + db $6e, $76, $0a, $00 + db $c1, $79, $0a, $00 + db $0c, $7a, $0a, $00 + db $00, $40, $0b, $00 + db $cf, $7b, $0a, $00 + db $fe, $7b, $0a, $00 + db $11, $7c, $0a, $00 + db $78, $7c, $0a, $00 + db $eb, $7c, $0a, $00 + db $a6, $7e, $0a, $00 + db $03, $48, $0b, $00 + db $16, $4a, $0b, $00 + db $4c, $4b, $0b, $00 + db $b6, $50, $0b, $00 + db $64, $53, $0b, $00 + db $c1, $54, $0b, $00 + db $29, $58, $0b, $00 + db $eb, $5a, $0b, $00 + db $c5, $5d, $0b, $00 + db $0c, $5e, $0b, $00 + db $ee, $5f, $0b, $00 + db $59, $60, $0b, $00 + db $d4, $60, $0b, $00 + db $bb, $62, $0b, $00 + db $86, $65, $0b, $00 + db $d9, $65, $0b, $00 + db $7f, $67, $0b, $00 + db $db, $6d, $0b, $00 + db $f0, $6f, $0b, $00 + db $1b, $71, $0b, $00 + db $36, $73, $0b, $00 + db $29, $78, $0b, $00 + db $9f, $79, $0b, $00 + db $8e, $7e, $0b, $00 + db $00, $40, $0c, $00 + db $b4, $41, $0c, $00 + db $b6, $45, $0c, $00 + db $d5, $49, $0c, $00 + db $7b, $4c, $0c, $00 + db $c6, $4d, $0c, $00 + db $fd, $4e, $0c, $00 + db $e2, $4f, $0c, $00 + db $45, $51, $0c, $00 + db $21, $54, $0c, $00 + db $01, $57, $0c, $00 + db $a0, $5a, $0c, $00 + db $bc, $5c, $0c, $00 + db $b1, $5d, $0c, $00 + db $51, $5e, $0c, $00 + db $d4, $5e, $0c, $00 + db $7c, $60, $0c, $00 + db $e3, $62, $0c, $00 + db $ec, $7f, $0a, $00 + db $c1, $7f, $0b, $00 + db $d2, $64, $0c, $00 + db $f4, $65, $0c, $00 + db $63, $66, $0c, $00 + db $17, $67, $0c, $00 + db $7f, $67, $0c, $00 + db $63, $69, $0c, $00 + db $ea, $69, $0c, $00 + db $e7, $6d, $0c, $00 + db $f3, $73, $0c, $00 + db $1e, $74, $0c, $00 + db $49, $74, $0c, $00 + db $dc, $7f, $0b, $00 + db $74, $74, $0c, $00 + db $97, $74, $0c, $00 + db $ba, $74, $0c, $00 + db $f3, $7f, $0b, $00 + db $dd, $74, $0c, $00 + db $cd, $75, $0c, $00 + db $5c, $76, $0c, $00 + db $eb, $76, $0c, $00 + db $f6, $76, $0c, $00 + db $01, $77, $0c, $00 + db $e9, $78, $0c, $00 + db $f8, $78, $0c, $00 + db $07, $79, $0c, $00 + db $34, $7d, $0c, $00 + db $c3, $7d, $0c, $00 + db $00, $40, $0d, $00 + db $d2, $7d, $0c, $00 + db $61, $7e, $0c, $00 + db $2d, $44, $0d, $00 + db $70, $7e, $0c, $00 + db $41, $4a, $0d, $00 + db $7f, $7e, $0c, $00 + db $55, $50, $0d, $00 + db $8e, $7e, $0c, $00 + db $6f, $52, $0d, $00 + db $9d, $7e, $0c, $00 + db $ac, $7e, $0c, $00 + db $3e, $7f, $0c, $00 + db $89, $54, $0d, $00 + db $eb, $54, $0d, $00 + db $69, $56, $0d, $00 + db $d4, $57, $0d, $00 + db $ca, $59, $0d, $00 + db $a0, $7f, $0c, $00 + db $91, $5a, $0d, $00 + db $cf, $5c, $0d, $00 + db $d2, $5d, $0d, $00 + db $f5, $5d, $0d, $00 + db $0b, $60, $0d, $00 + db $d2, $60, $0d, $00 + db $1d, $61, $0d, $00 + db $ab, $62, $0d, $00 + db $d6, $63, $0d, $00 + db $09, $64, $0d, $00 + db $b7, $65, $0d, $00 + db $e2, $66, $0d, $00 + db $15, $67, $0d, $00 + db $33, $69, $0d, $00 + db $36, $6a, $0d, $00 + db $59, $6a, $0d, $00 + db $e7, $6b, $0d, $00 + db $ae, $6c, $0d, $00 + db $31, $6d, $0d, $00 + db $67, $70, $0d, $00 MapDataPointers_81697: ; 81697 (20:5697) - INCROM $81697, $84000 + db $8a, $73, $0d, $81 + db $cd, $73, $0d, $80 + db $0f, $74, $0d, $80 + db $51, $74, $0d, $80 + db $93, $74, $0d, $80 + db $d5, $74, $0d, $80 + db $17, $75, $0d, $80 + db $59, $75, $0d, $80 + db $9b, $75, $0d, $80 + db $dd, $75, $0d, $80 + db $1f, $76, $0d, $80 + db $61, $76, $0d, $80 + db $a3, $76, $0d, $80 + db $e5, $76, $0d, $80 + db $27, $77, $0d, $80 + db $69, $77, $0d, $80 + db $ab, $77, $0d, $80 + db $ed, $77, $0d, $80 + db $2f, $78, $0d, $80 + db $71, $78, $0d, $80 + db $b3, $78, $0d, $80 + db $f5, $78, $0d, $80 + db $37, $79, $0d, $80 + db $79, $79, $0d, $80 + db $bb, $79, $0d, $80 + db $fd, $79, $0d, $80 + db $3f, $7a, $0d, $80 + db $81, $7a, $0d, $80 + db $c3, $7a, $0d, $80 + db $05, $7b, $0d, $82 + db $49, $7b, $0d, $82 + db $eb, $7f, $0c, $11 + db $8d, $7b, $0d, $11 + db $98, $7b, $0d, $11 + db $a3, $7b, $0d, $11 + db $ae, $7b, $0d, $11 + db $b9, $7b, $0d, $11 + db $c4, $7b, $0d, $11 + db $cf, $7b, $0d, $11 + db $da, $7b, $0d, $11 + db $e5, $7b, $0d, $11 + db $f0, $7b, $0d, $11 + db $fb, $7b, $0d, $11 + db $06, $7c, $0d, $11 + db $11, $7c, $0d, $11 + db $1c, $7c, $0d, $11 + db $27, $7c, $0d, $11 + db $32, $7c, $0d, $11 + db $3d, $7c, $0d, $11 + db $48, $7c, $0d, $11 + db $53, $7c, $0d, $11 + db $5e, $7c, $0d, $11 + db $69, $7c, $0d, $11 + db $74, $7c, $0d, $11 + db $7f, $7c, $0d, $11 + db $8a, $7c, $0d, $11 + db $95, $7c, $0d, $11 + db $a0, $7c, $0d, $11 + db $ab, $7c, $0d, $11 + db $b6, $7c, $0d, $11 + db $c1, $7c, $0d, $11 + db $cc, $7c, $0d, $11 + db $d7, $7c, $0d, $11 + db $e2, $7c, $0d, $11 + db $ed, $7c, $0d, $11 + db $f8, $7c, $0d, $11 + db $03, $7d, $0d, $11 + db $0e, $7d, $0d, $11 + db $19, $7d, $0d, $11 + db $24, $7d, $0d, $11 + db $2f, $7d, $0d, $11 + db $3a, $7d, $0d, $11 + db $45, $7d, $0d, $11 + db $50, $7d, $0d, $11 + db $5b, $7d, $0d, $11 + db $66, $7d, $0d, $11 + db $71, $7d, $0d, $11 + db $7c, $7d, $0d, $11 + db $87, $7d, $0d, $11 + db $92, $7d, $0d, $11 + db $9d, $7d, $0d, $11 + db $a8, $7d, $0d, $11 + db $b3, $7d, $0d, $11 + db $be, $7d, $0d, $11 + db $c9, $7d, $0d, $11 + db $d4, $7d, $0d, $11 + db $df, $7d, $0d, $11 + db $ea, $7d, $0d, $11 + db $f5, $7d, $0d, $11 + db $00, $7e, $0d, $11 + db $0b, $7e, $0d, $11 + db $16, $7e, $0d, $11 + db $21, $7e, $0d, $11 + db $2c, $7e, $0d, $11 + db $37, $7e, $0d, $80 + db $79, $7e, $0d, $80 + db $bb, $7e, $0d, $80 + db $fd, $7e, $0d, $80 + db $3f, $7f, $0d, $80 + db $81, $7f, $0d, $80 + db $00, $40, $0e, $80 + db $c3, $7f, $0d, $70 + db $42, $40, $0e, $70 + db $7c, $40, $0e, $70 + db $b6, $40, $0e, $70 + db $f0, $40, $0e, $70 + db $2a, $41, $0e, $70 + db $64, $41, $0e, $70 + db $fd, $7f, $0d, $01 + db $fb, $7f, $02, $01 + db $5b, $7c, $00, $00 + db $9e, $41, $0e, $81 + db $e1, $41, $0e, $81 + db $24, $42, $0e, $81 + db $67, $42, $0e, $42 + db $8b, $42, $0e, $42 + db $af, $42, $0e, $42 + db $f6, $7f, $08, $10 + db $d3, $42, $0e, $60 + db $f6, $7f, $0c, $10 + db $05, $43, $0e, $10 + db $0f, $43, $0e, $10 + db $19, $43, $0e, $10 + db $23, $43, $0e, $10 + db $2d, $43, $0e, $10 + db $37, $43, $0e, $10 + db $41, $43, $0e, $10 + db $4b, $43, $0e, $10 + db $55, $43, $0e, $10 + db $5f, $43, $0e, $10 + db $69, $43, $0e, $10 + db $73, $43, $0e, $10 + db $7d, $43, $0e, $10 + db $87, $43, $0e, $10 + db $91, $43, $0e, $10 + db $9b, $43, $0e, $10 + db $a5, $43, $0e, $10 + db $af, $43, $0e, $10 + db $b9, $43, $0e, $10 + db $c3, $43, $0e, $10 + db $cd, $43, $0e, $10 + db $d7, $43, $0e, $10 + db $e1, $43, $0e, $10 + db $eb, $43, $0e, $10 + db $f5, $43, $0e, $10 + db $ff, $43, $0e, $10 + db $09, $44, $0e, $10 + db $13, $44, $0e, $10 + db $1d, $44, $0e, $10 + db $27, $44, $0e, $10 + db $31, $44, $0e, $10 + db $3b, $44, $0e, $10 + db $45, $44, $0e, $10 + db $4f, $44, $0e, $10 + db $59, $44, $0e, $10 + db $63, $44, $0e, $10 + db $6d, $44, $0e, $10 + db $77, $44, $0e, $10 + db $81, $44, $0e, $10 + db $8b, $44, $0e, $10 + db $95, $44, $0e, $10 + + INCROM $8191b, $84000 diff --git a/src/engine/home.asm b/src/engine/home.asm index a5125c4..ac9e9c0 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -10739,7 +10739,8 @@ GetPermissionByteOfMapPosition: ; 3946 (0:3946) pop bc ret -Func_395a: ; 395a (0:395a) +; copy c bytes of data from hl in bank wTempPointerBank to de, b times. +CopyGfxDataFromTempBank: ; 395a (0:395a) ldh a, [hBankROM] push af ld a, [wTempPointerBank] @@ -11072,7 +11073,6 @@ Func_3b21: ; 3b21 (0:3b21) ld a, BANK(Func_1c8bc) call BankswitchROM call Func_1c8bc - pop af call BankswitchROM ret @@ -11115,32 +11115,39 @@ CheckAnyAnimationPlaying: ; 3b52 (0:3b52) pop hl ret +; input: +; - a = animation index Func_3b6a: ; 3b6a (0:3b6a) ld [wTempAnimation], a ; hold an animation temporarily ldh a, [hBankROM] push af ld [wd4be], a + push hl push bc push de - ld a, $07 + ld a, BANK(Func_1ca31) call BankswitchROM ld a, [wTempAnimation] cp $61 jr nc, .asm_3b90 + ld hl, wd4ad ld a, [wd4ac] cp [hl] jr nz, .asm_3b90 call CheckAnyAnimationPlaying jr nc, .asm_3b95 + .asm_3b90 - call $4a31 - jr .asm_3b9a + call Func_1ca31 + jr .done + .asm_3b95 - call $48ef - jr .asm_3b9a -.asm_3b9a + call Func_1c8ef + jr .done + +.done pop de pop bc pop hl @@ -11151,9 +11158,9 @@ Func_3b6a: ; 3b6a (0:3b6a) Func_3ba2: ; 3ba2 (0:3ba2) ldh a, [hBankROM] push af - ld a, $07 + ld a, BANK(Func_1cac5) call BankswitchROM - call $4ac5 + call Func_1cac5 call Func_3cb4 pop af call BankswitchROM @@ -11535,6 +11542,8 @@ GetAnimationFramePointer: ; 3d72 (0:3d72) call BankswitchROM ret +; return hl pointing to the start of a sprite in wSpriteAnimBuffer. +; the sprite is identified by its index in wWhichSprite. GetFirstSpriteAnimBufferProperty: ; 3db7 (0:3db7) push bc ld c, SPRITE_ANIM_ENABLED diff --git a/src/macros/wram.asm b/src/macros/wram.asm index 8545972..7b8456b 100644 --- a/src/macros/wram.asm +++ b/src/macros/wram.asm @@ -76,3 +76,10 @@ loaded_npc_struct: MACRO \1Field0x0a:: ds 1 \1Field0x0b:: ds 1 ENDM + +sprite_vram_struct: MACRO +\1Valid:: ds 1 +\1ID:: ds 1 +\1TileOffset:: ds 1 +\1TileSize:: ds 1 +ENDM diff --git a/src/wram.asm b/src/wram.asm index dc1d91f..4670637 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -571,11 +571,11 @@ wTempSGBPacket:: ; cae0 ; temporary CGB palette data buffer to eventually save into BGPD registers. wBackgroundPalettesCGB:: ; caf0 - ds 8 palettes + ds NUM_BACKGROUND_PALETTES palettes ; temporary CGB palette data buffer to eventually save into OBPD registers. wObjectPalettesCGB:: ; cb30 - ds 8 palettes + ds NUM_OBJECT_PALETTES palettes ds $2 @@ -1203,17 +1203,20 @@ wDefaultYesOrNo:: ; cd9a wcd9b:: ; cd9b ds $1 -wcd9c:: ; cd9c +; stores the total number of coins to flip +wCoinTossTotalNum:: ; cd9c ds $1 ; this stores the result from a coin toss (number of heads) wCoinTossNumHeads:: ; cd9d ds $1 -wcd9e:: ; cd9e +; stores type of the duelist that is tossing coins +wCoinTossDuelistType:: ; cd9e ds $1 -wcd9f:: ; cd9f +; holds the number of coins that have already been tossed +wCoinTossNumTossed:: ; cd9f ds $1 ds $5 @@ -2143,7 +2146,12 @@ wd291:: ; d291 wd292:: ; d292 ds $1 - ds $90 + ds $4 + +wd297:: ; d297 + ds 8 palettes + + ds $4c wd323:: ; d323 ds $1 @@ -2354,6 +2362,7 @@ wd42a:: ; d42a wd42b:: ; d42b ds $1 +wd42c:: ; d42c ds $80 wd4ac:: ; d4ac @@ -2380,12 +2389,25 @@ wd4b2:: ; d4b2 wd4b3:: ; d4b3 ds $1 - ds $5 +wd4b4:: ; d4b4 + ds $1 + + ds $2 + +wd4b7:: ; d4b7 + ds $1 + +wd4b8:: ; d4b8 + ds $1 wd4b9:: ; d4b9 + ds $2 + +wd4bb:: ; d4bb ds $1 - ds $4 +wd4bc:: ; d4bc + ds $2 wd4be:: ; d4be ds $1 @@ -2398,11 +2420,9 @@ wd4c0:: ; d4c0 ds $1 -wd4c2:: ; d4c2 - ds $1 - -wd4c3:: ; d4c3 - ds $1 +; pointer to address in VRAM +wVRAMPointer:: ; d4c2 + ds $2 ; these next 3 seem to be an address (bank @ end) for copying bg data wTempPointer:: ; d4c4 @@ -2411,14 +2431,19 @@ wTempPointer:: ; d4c4 wTempPointerBank:: ; d4c6 ds $1 -wd4c7:: ; d4c7 +; stores number of bytes per tile for current sprite +wCurSpriteTileSize:: ; d4c7 ds $1 -wd4c8:: ; d4c8 +; stores number of tiles that current sprite has +wCurSpriteNumTiles:: ; d4c8 ds $1 ds $1 +; stores tile offset in VRAM +wVRAMTileOffset:: ; d4ca + wd4ca:: ; d4ca ds $1 @@ -2474,11 +2499,26 @@ wd5d6:: ; d5d6 wd5d7:: ; d5d7 ds $1 -wd5d8:: ; d5d8 - ds $40 - -; seems to be the amount of entries in wd5d8 -wd618:: ; d618 +wSpriteVRAMBuffer:: ; d5d8 + sprite_vram_struct wSpriteVRAM1 + sprite_vram_struct wSpriteVRAM2 + sprite_vram_struct wSpriteVRAM3 + sprite_vram_struct wSpriteVRAM4 + sprite_vram_struct wSpriteVRAM5 + sprite_vram_struct wSpriteVRAM6 + sprite_vram_struct wSpriteVRAM7 + sprite_vram_struct wSpriteVRAM8 + sprite_vram_struct wSpriteVRAM9 + sprite_vram_struct wSpriteVRAM10 + sprite_vram_struct wSpriteVRAM11 + sprite_vram_struct wSpriteVRAM12 + sprite_vram_struct wSpriteVRAM13 + sprite_vram_struct wSpriteVRAM14 + sprite_vram_struct wSpriteVRAM15 + sprite_vram_struct wSpriteVRAM16 + +; seems to be the amount of entries in wSpriteVRAMBuffer +wSpriteVRAMBufferSize:: ; d618 ds $1 ds $2 |