mirror of
https://github.com/pret/pokepinball.git
synced 2026-10-03 06:36:55 -05:00
52988 lines
823 KiB
NASM
Executable File
52988 lines
823 KiB
NASM
Executable File
INCLUDE "charmap.asm"
|
|
INCLUDE "macros.asm"
|
|
INCLUDE "constants.asm"
|
|
|
|
INCLUDE "home.asm"
|
|
|
|
SECTION "bank1", ROMX, BANK[$1]
|
|
INCLUDE "data/oam_frames.asm"
|
|
|
|
SECTION "bank2", ROMX, BANK[$2]
|
|
|
|
INCLUDE "engine/select_gameboy_target_menu.asm"
|
|
INCLUDE "engine/erase_all_data_menu.asm"
|
|
INCLUDE "engine/copyright_screen.asm"
|
|
|
|
InitializeStage: ; 0x8311
|
|
ld hl, wc000
|
|
ld bc, $0a00
|
|
call ClearData
|
|
ld a, $1
|
|
ld [rVBK], a
|
|
ld a, [wd805]
|
|
and a
|
|
jr nz, .asm_8331
|
|
ld hl, vBGWin
|
|
ld bc, $0400
|
|
ld a, $0
|
|
call Func_63e
|
|
jr .asm_833c
|
|
|
|
.asm_8331
|
|
ld hl, vBGWin
|
|
ld bc, $0400
|
|
ld a, $8
|
|
call Func_63e
|
|
.asm_833c
|
|
xor a
|
|
ld [rVBK], a
|
|
call Func_8388
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
CallTable_8348: ; 0x8348
|
|
; STAGE_RED_FIELD_TOP
|
|
padded_dab InitRedField
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
padded_dab InitRedField
|
|
padded_dab Func_18000
|
|
padded_dab Func_18000
|
|
; STAGE_BLUE_FIELD_TOP
|
|
padded_dab InitBlueField
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
padded_dab InitBlueField
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab InitGengarBonusStage
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab InitGengarBonusStage
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab InitMewtwoBonusStage
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab InitMewtwoBonusStage
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab InitMeowthBonusStage
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab InitMeowthBonusStage
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab InitDiglettBonusStage
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab InitDiglettBonusStage
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab InitSeelBonusStage
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab InitSeelBonusStage
|
|
|
|
Func_8388: ; 0x8388
|
|
ld a, [wd7c1]
|
|
and a
|
|
jr z, .asm_8398
|
|
ld hl, wSubTileBallXPos
|
|
ld bc, $0037
|
|
call ClearData
|
|
ret
|
|
|
|
.asm_8398
|
|
ld a, [wCurrentStage]
|
|
cp $6
|
|
ret nc
|
|
ld hl, wPartyMons
|
|
ld bc, $0170
|
|
call ClearData
|
|
ld hl, wd473
|
|
ld bc, $0039
|
|
call ClearData
|
|
ld hl, wd4ad
|
|
ld bc, $034d
|
|
call ClearData
|
|
ret
|
|
|
|
StartBallForStage: ; 0x83ba
|
|
ld a, [wd7c1]
|
|
and a
|
|
jr z, .asm_83c7
|
|
call Func_8444
|
|
call RestartStageMusic
|
|
ret
|
|
|
|
.asm_83c7
|
|
xor a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wd7ae], a
|
|
ld [wd7af], a
|
|
ld [wd7b2], a
|
|
ld [wd7b3], a
|
|
ld [wd7b0], a
|
|
ld [wd7b1], a
|
|
ld [wd7b4], a
|
|
ld [wd7b5], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
inc a
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ld a, $20
|
|
ld [wSCX], a
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
CallTable_8404: ; 0x8404
|
|
; STAGE_RED_FIELD_TOP
|
|
padded_dab StartBallRedField
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
padded_dab StartBallRedField
|
|
padded_dab Func_1804a
|
|
padded_dab Func_1804a
|
|
; STAGE_BLUE_FIELD_TOP
|
|
padded_dab StartBallBlueField
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
padded_dab StartBallBlueField
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab StartBallGengarBonusStage
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab StartBallGengarBonusStage
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab StartBallMewtwoBonusStage
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab StartBallMewtwoBonusStage
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab StartBallMeowthBonusStage
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab StartBallMeowthBonusStage
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab StartBallDiglettBonusStage
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab StartBallDiglettBonusStage
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab StartBallSeelBonusStage
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab StartBallSeelBonusStage
|
|
|
|
Func_8444: ; 0x8444
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
jr z, .asm_8460
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
jr nz, .asm_8460
|
|
ld a, [wWildMonIsHittable]
|
|
and a
|
|
jr z, .asm_8460
|
|
callba Func_10464
|
|
.asm_8460
|
|
ret
|
|
|
|
RestartStageMusic: ; 0x8461
|
|
ld a, [wStageSongBank]
|
|
call SetSongBank
|
|
ld a, [wStageSong]
|
|
ld e, a
|
|
ld d, $0
|
|
call PlaySong
|
|
ret
|
|
|
|
Func_8471: ; 0x8471
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
CallTable_8477: ; 0x8477
|
|
; STAGE_RED_FIELD_TOP
|
|
padded_dab Func_14000
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
padded_dab Func_1401c
|
|
padded_dab DoNothing_1805f
|
|
padded_dab DoNothing_18060
|
|
; STAGE_BLUE_FIELD_TOP
|
|
padded_dab Func_1c165
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
padded_dab Func_1c191
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab Func_1818b
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab Func_1818b
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab Func_19310
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab Func_19310
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab Func_24128
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab Func_24128
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab Func_19a76
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab Func_19a76
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab Func_25b97
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab Func_25b97
|
|
|
|
Func_84b7: ; 0x84b7
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
PointerTable_84bd: ; 0x84bd
|
|
; STAGE_RED_FIELD_TOP
|
|
padded_dab Func_1755c
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
padded_dab Func_1757e
|
|
padded_dab Func_18079
|
|
padded_dab Func_18084
|
|
; STAGE_BLUE_FIELD_TOP
|
|
padded_dab Func_1f330
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
padded_dab Func_1f35a
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab Func_18faf
|
|
; STAGE_GENGAR_BONUS
|
|
padded_dab Func_18faf
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab Func_1994e
|
|
; STAGE_MEWTWO_BONUS
|
|
padded_dab Func_1994e
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab Func_2583b
|
|
; STAGE_MEOWTH_BONUS
|
|
padded_dab Func_2583b
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab Func_1ac98
|
|
; STAGE_DIGLETT_BONUS
|
|
padded_dab Func_1ac98
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab Func_26b7e
|
|
; STAGE_SEEL_BONUS
|
|
padded_dab Func_26b7e
|
|
|
|
Func_84fd:
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .not_cgb
|
|
ld a, $1
|
|
ld [rVBK], a
|
|
xor a
|
|
call .FillAttrsOrBGMap
|
|
xor a
|
|
ld [rVBK], a
|
|
.not_cgb
|
|
ld a, $81
|
|
call .FillAttrsOrBGMap
|
|
ld de, wBottomMessageBuffer + $47
|
|
call Func_8524
|
|
ret
|
|
|
|
.FillAttrsOrBGMap: ; 8519 (2:4519)
|
|
hlCoord 0, 0, vBGWin
|
|
ld b, $20
|
|
.loop
|
|
ld [hli], a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .loop
|
|
ret
|
|
|
|
Func_8524: ; 0x8524
|
|
ld hl, wScore + $5
|
|
lb bc, $0c, $01
|
|
.loop
|
|
ld a, [hl]
|
|
swap a
|
|
and $f
|
|
call .GetDigit
|
|
inc de
|
|
dec b
|
|
ld a, [hld]
|
|
and $f
|
|
call .GetDigit
|
|
inc de
|
|
dec b
|
|
jr nz, .loop
|
|
ld a, $86
|
|
ld [de], a
|
|
inc de
|
|
ret
|
|
|
|
.GetDigit: ; 0x8543
|
|
jr nz, .okay
|
|
ld a, b
|
|
dec a
|
|
jr z, .okay
|
|
ld a, c
|
|
and a
|
|
ret nz
|
|
.okay
|
|
add $86 ; 0
|
|
ld [de], a
|
|
ld c, $0
|
|
ld a, b
|
|
cp $c
|
|
jr z, .load_tile_82
|
|
cp $9
|
|
jr z, .load_tile_82
|
|
cp $6
|
|
jr z, .load_tile_82
|
|
cp $3
|
|
ret nz
|
|
.load_tile_82
|
|
set 7, e
|
|
ld a, $82 ; ,
|
|
ld [de], a
|
|
res 7, e
|
|
ret
|
|
|
|
Func_8569:
|
|
xor a
|
|
ld hl, wAddScoreQueue
|
|
ld b, $31
|
|
.asm_856f
|
|
ld [hli], a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_856f
|
|
ld [hli], a
|
|
ret
|
|
|
|
AddBigBCD6FromQueueWithBallMultiplier: ; 0x8576
|
|
ld h, b
|
|
ld l, c
|
|
ld a, [wAddScoreQueueOffset]
|
|
ld e, a
|
|
ld d, wAddScoreQueue / $100
|
|
ld a, [wBallType]
|
|
and a
|
|
jr nz, .asm_8585
|
|
inc a
|
|
.asm_8585
|
|
ld b, a
|
|
jr asm_8592
|
|
|
|
AddBigBCD6FromQueue: ; 0x8588
|
|
; bc - Points to BCD buffer
|
|
ld h, b
|
|
ld l, c
|
|
ld a, [wAddScoreQueueOffset]
|
|
ld e, a
|
|
ld d, wAddScoreQueue / $100
|
|
ld b, $1
|
|
asm_8592:
|
|
push hl
|
|
x = 0
|
|
rept 6
|
|
ld a, [de]
|
|
if x == 0
|
|
add [hl]
|
|
else
|
|
adc [hl]
|
|
endc
|
|
daa
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
x = x + 1
|
|
endr
|
|
ld a, e
|
|
cp wAddScoreQueueEnd % $100
|
|
jr nz, .okay
|
|
ld e, wAddScoreQueue % $100
|
|
.okay
|
|
pop hl
|
|
dec b
|
|
jr nz, asm_8592
|
|
ld a, e
|
|
ld [wAddScoreQueueOffset], a
|
|
ret
|
|
|
|
Func_85c7: ; 0x85c7
|
|
ld a, [hNumFramesDropped]
|
|
and $3
|
|
ret nz
|
|
ld a, [wd478]
|
|
ld l, a
|
|
ld h, wAddScoreQueue / $100
|
|
ld de, wScore
|
|
ld a, [wAddScoreQueueOffset]
|
|
cp l
|
|
jr nz, .asm_85de
|
|
ld [wd479], a
|
|
.asm_85de
|
|
push hl
|
|
ld a, [hli]
|
|
or [hl]
|
|
inc hl
|
|
or [hl]
|
|
inc hl
|
|
or [hl]
|
|
inc hl
|
|
or [hl]
|
|
inc hl
|
|
or [hl]
|
|
pop hl
|
|
jr nz, .value_is_nonzero
|
|
ld a, [wd479]
|
|
ld [wd478], a
|
|
ret
|
|
|
|
.value_is_nonzero
|
|
ld a, [de]
|
|
add [hl]
|
|
daa
|
|
ld [de], a
|
|
ld [hl], $0
|
|
inc de
|
|
inc hl
|
|
ld a, [de]
|
|
adc [hl]
|
|
daa
|
|
ld [de], a
|
|
ld [hl], $0
|
|
inc de
|
|
inc hl
|
|
ld a, [de]
|
|
adc [hl]
|
|
daa
|
|
ld [de], a
|
|
ld [hl], $0
|
|
inc de
|
|
inc hl
|
|
ld a, [de]
|
|
adc [hl]
|
|
daa
|
|
ld [de], a
|
|
ld [hl], $0
|
|
inc de
|
|
inc hl
|
|
ld a, [de]
|
|
adc [hl]
|
|
daa
|
|
ld [de], a
|
|
ld [hl], $0
|
|
inc de
|
|
inc hl
|
|
ld a, [de]
|
|
adc [hl]
|
|
daa
|
|
ld [de], a
|
|
ld [hl], $0
|
|
call c, SetMaxScore
|
|
inc de
|
|
inc hl
|
|
ld a, l
|
|
cp $60
|
|
jr nz, .asm_862d
|
|
ld l, $0
|
|
.asm_862d
|
|
ld a, l
|
|
ld [wd478], a
|
|
ld a, $1
|
|
ld [wd49f], a
|
|
ret
|
|
|
|
SetMaxScore: ; 0x8637
|
|
push hl
|
|
ld hl, wScore
|
|
ld a, $99
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
pop hl
|
|
ret
|
|
|
|
Func_8645: ; 0x8645
|
|
xor a
|
|
ld [wd49f], a
|
|
ld de, wBottomMessageBuffer + $47
|
|
call Func_8524
|
|
ret
|
|
|
|
Func_8650: ; 0x8650
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr nz, .bottomStage
|
|
ld a, $86
|
|
ld [hWY], a
|
|
ret
|
|
|
|
.bottomStage
|
|
ld a, [wBallYPos + 1]
|
|
cp $84
|
|
jr nc, .asm_8670
|
|
ld a, [hWY]
|
|
sub $3
|
|
cp $86
|
|
jr nc, .asm_866d
|
|
ld a, $86
|
|
.asm_866d
|
|
ld [hWY], a
|
|
ret
|
|
|
|
.asm_8670
|
|
ld a, [hWY]
|
|
add $3
|
|
cp $90
|
|
jr c, .asm_867a
|
|
ld a, $90
|
|
.asm_867a
|
|
ld [hWY], a
|
|
ret
|
|
|
|
StartTimer: ; 0x867d
|
|
; Starts the timer that counts down with the specified starting time when things
|
|
; like CatchEm Mode starts.
|
|
; input: b = minutes
|
|
; c = seconds
|
|
ld a, c
|
|
ld [wTimerSeconds], a
|
|
ld a, b
|
|
ld [wTimerMinutes], a
|
|
xor a
|
|
ld [wTimerFrames], a
|
|
ld [wd57e], a
|
|
ld [wd57f], a
|
|
ld a, $1
|
|
ld [wd57d], a
|
|
ld a, $1
|
|
ld [wd580], a
|
|
callba Func_1404a
|
|
ret
|
|
|
|
Func_86a4: ; 0x86a4
|
|
ld a, [wd57f]
|
|
and a
|
|
ret nz
|
|
ld a, [wTimerFrames]
|
|
inc a
|
|
cp $3c
|
|
jr c, .asm_86b2
|
|
xor a
|
|
.asm_86b2
|
|
ld [wTimerFrames], a
|
|
ret c
|
|
ld hl, wTimerMinutes
|
|
ld a, [hld]
|
|
or [hl]
|
|
jr nz, .asm_86c3
|
|
ld a, $1
|
|
ld [wd57e], a
|
|
ret
|
|
|
|
.asm_86c3
|
|
ld a, [hl]
|
|
sub $1
|
|
daa
|
|
jr nc, .asm_86cb
|
|
ld a, $59
|
|
.asm_86cb
|
|
ld [hli], a
|
|
ld a, [hl]
|
|
sbc $0
|
|
daa
|
|
ld [hl], a
|
|
ret
|
|
|
|
Func_86d2: ; 0x86d2
|
|
xor a
|
|
ld [wd57d], a
|
|
ret
|
|
|
|
HandleInGameMenu: ; 0x86d7
|
|
; Routine responsible for the "SAVE"/"CANCEL" menu.
|
|
ld a, [wd917]
|
|
push af
|
|
ld a, $1
|
|
ld [wd917], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
xor a
|
|
ld [wd4aa], a
|
|
ld hl, wBottomMessageText
|
|
ld a, $81
|
|
ld b, $30
|
|
.clearLoop
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .clearLoop
|
|
ld de, wBottomMessageText + $24
|
|
ld hl, SaveText
|
|
call Func_8797
|
|
ld de, wBottomMessageText + $64
|
|
ld hl, CancelText
|
|
call Func_8797
|
|
ld a, Bank(InGameMenuSymbolsGfx)
|
|
ld hl, InGameMenuSymbolsGfx
|
|
ld de, vTilesSH + $60
|
|
ld bc, $0010
|
|
call LoadVRAMData
|
|
ld a, $0
|
|
ld hl, wBottomMessageText
|
|
ld de, vBGWin
|
|
ld bc, $00c0
|
|
call LoadVRAMData
|
|
ld a, $60
|
|
ld [hWY], a
|
|
dec a
|
|
ld [hLYC], a
|
|
ld a, $fd
|
|
ld [hLCDCMask], a
|
|
call HandleInGameMenuSelection
|
|
ld a, [wInGameMenuIndex]
|
|
and a
|
|
jr nz, .pickedCancel
|
|
ld a, $1
|
|
ld [wd7c2], a
|
|
ld hl, wPartyMons
|
|
ld de, sSaveGame
|
|
ld bc, $04c3
|
|
call SaveData
|
|
xor a
|
|
ld [wd803], a
|
|
ld [wd804], a
|
|
.pickedCancel
|
|
ld bc, $003c
|
|
call AdvanceFrames
|
|
ld a, $86
|
|
ld [hWY], a
|
|
ld a, $83
|
|
ld [hLYC], a
|
|
ld [hLastLYC], a
|
|
ld a, $ff
|
|
ld [hLCDCMask], a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_8778
|
|
ld a, Bank(StageRedFieldTopStatusBarSymbolsGfx_GameBoy)
|
|
ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoy + $60
|
|
ld de, vTilesSH + $60
|
|
ld bc, $0010
|
|
call LoadVRAMData
|
|
jr .asm_8786
|
|
|
|
.asm_8778
|
|
ld a, Bank(StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor)
|
|
ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor + $60
|
|
ld de, vTilesSH + $60
|
|
ld bc, $0010
|
|
call LoadVRAMData
|
|
.asm_8786
|
|
call FillBottomMessageBufferWithBlackTile
|
|
pop af
|
|
ld [wd917], a
|
|
ld a, $1
|
|
ld [wd4aa], a
|
|
ld a, [wInGameMenuIndex]
|
|
and a
|
|
ret
|
|
|
|
Func_8797: ; 0x8797
|
|
ld a, [hli]
|
|
and a
|
|
ret z
|
|
add $bf
|
|
ld [de], a
|
|
inc de
|
|
jr Func_8797
|
|
|
|
SaveText: ; 0x87a0
|
|
db "SAVE@"
|
|
|
|
CancelText: ; 0x87a5
|
|
db "CANCEL@"
|
|
|
|
HandleInGameMenuSelection: ; 0x87ac
|
|
ld a, $1
|
|
ld [wInGameMenuIndex], a
|
|
.waitForAButton
|
|
call MoveInGameMenuCursor
|
|
call DrawInGameMenu
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .waitForAButton
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
MoveInGameMenuCursor: ; 0x87c5
|
|
; Moves the cursor up or down in the "SAVE"/"CANCEL" in-game menu
|
|
ld a, [hNewlyPressedButtons]
|
|
ld b, a
|
|
ld a, [wInGameMenuIndex]
|
|
bit BIT_D_UP, b
|
|
jr z, .didntPressUp
|
|
and a ; is the cursor already on "SAVE"?
|
|
ret z
|
|
dec a
|
|
ld [wInGameMenuIndex], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.didntPressUp
|
|
bit BIT_D_DOWN, b
|
|
ret z
|
|
cp $1 ; is the cursor already on "CANCEL"?
|
|
ret z
|
|
inc a
|
|
ld [wInGameMenuIndex], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
DrawInGameMenu: ; 0x87ed
|
|
ld a, $81
|
|
ld [wBottomMessageText + $23], a
|
|
ld [wBottomMessageText + $63], a
|
|
ld a, [wInGameMenuIndex]
|
|
ld c, a
|
|
swap c
|
|
sla c
|
|
sla c
|
|
ld b, $0
|
|
ld hl, wBottomMessageText + $23
|
|
add hl, bc
|
|
ld a, $86
|
|
ld [hl], a
|
|
ld a, $0
|
|
ld hl, wBottomMessageText
|
|
ld de, vBGWin
|
|
ld bc, $00c0
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
CollisionForceAngles: ; 0x8817
|
|
; This data has something to do with collisions.
|
|
db $C0
|
|
db $C5
|
|
db $D0
|
|
db $DB
|
|
db $E0
|
|
db $E5
|
|
db $F0
|
|
db $FB
|
|
db $00
|
|
db $05
|
|
db $10
|
|
db $1B
|
|
db $20
|
|
db $25
|
|
db $30
|
|
db $3B
|
|
db $45
|
|
db $CA
|
|
db $D5
|
|
db $E0
|
|
db $E5
|
|
db $EA
|
|
db $F5
|
|
db $00
|
|
db $05
|
|
db $0A
|
|
db $15
|
|
db $20
|
|
db $25
|
|
db $2A
|
|
db $35
|
|
db $40
|
|
db $50
|
|
db $55
|
|
db $E0
|
|
db $EB
|
|
db $F0
|
|
db $F5
|
|
db $00
|
|
db $0B
|
|
db $10
|
|
db $15
|
|
db $20
|
|
db $2B
|
|
db $30
|
|
db $35
|
|
db $40
|
|
db $4B
|
|
db $5B
|
|
db $60
|
|
db $6B
|
|
db $F6
|
|
db $FB
|
|
db $00
|
|
db $0B
|
|
db $16
|
|
db $1B
|
|
db $20
|
|
db $2B
|
|
db $36
|
|
db $3B
|
|
db $40
|
|
db $4B
|
|
db $56
|
|
db $60
|
|
db $65
|
|
db $70
|
|
db $7B
|
|
db $00
|
|
db $05
|
|
db $10
|
|
db $1B
|
|
db $20
|
|
db $25
|
|
db $30
|
|
db $3B
|
|
db $40
|
|
db $45
|
|
db $50
|
|
db $5B
|
|
db $65
|
|
db $6A
|
|
db $75
|
|
db $80
|
|
db $85
|
|
db $0A
|
|
db $15
|
|
db $20
|
|
db $25
|
|
db $2A
|
|
db $35
|
|
db $40
|
|
db $45
|
|
db $4A
|
|
db $55
|
|
db $60
|
|
db $70
|
|
db $75
|
|
db $80
|
|
db $8B
|
|
db $90
|
|
db $95
|
|
db $20
|
|
db $2B
|
|
db $30
|
|
db $35
|
|
db $40
|
|
db $4B
|
|
db $50
|
|
db $55
|
|
db $60
|
|
db $6B
|
|
db $7B
|
|
db $80
|
|
db $8B
|
|
db $96
|
|
db $9B
|
|
db $A0
|
|
db $AB
|
|
db $36
|
|
db $3B
|
|
db $40
|
|
db $4B
|
|
db $56
|
|
db $5B
|
|
db $60
|
|
db $6B
|
|
db $76
|
|
db $80
|
|
db $85
|
|
db $90
|
|
db $9B
|
|
db $A0
|
|
db $A5
|
|
db $B0
|
|
db $BB
|
|
db $40
|
|
db $45
|
|
db $50
|
|
db $5B
|
|
db $60
|
|
db $65
|
|
db $70
|
|
db $7B
|
|
db $85
|
|
db $8A
|
|
db $95
|
|
db $A0
|
|
db $A5
|
|
db $AA
|
|
db $B5
|
|
db $C0
|
|
db $C5
|
|
db $4A
|
|
db $55
|
|
db $60
|
|
db $65
|
|
db $6A
|
|
db $75
|
|
db $80
|
|
db $90
|
|
db $95
|
|
db $A0
|
|
db $AB
|
|
db $B0
|
|
db $B5
|
|
db $C0
|
|
db $CB
|
|
db $D0
|
|
db $D5
|
|
db $60
|
|
db $6B
|
|
db $70
|
|
db $75
|
|
db $80
|
|
db $8B
|
|
db $9B
|
|
db $A0
|
|
db $AB
|
|
db $B6
|
|
db $BB
|
|
db $C0
|
|
db $CB
|
|
db $D6
|
|
db $DB
|
|
db $E0
|
|
db $EB
|
|
db $76
|
|
db $7B
|
|
db $80
|
|
db $8B
|
|
db $96
|
|
db $A0
|
|
db $A5
|
|
db $B0
|
|
db $BB
|
|
db $C0
|
|
db $C5
|
|
db $D0
|
|
db $DB
|
|
db $E0
|
|
db $E5
|
|
db $F0
|
|
db $FB
|
|
db $80
|
|
db $85
|
|
db $90
|
|
db $9B
|
|
db $A5
|
|
db $AA
|
|
db $B5
|
|
db $C0
|
|
db $C5
|
|
db $CA
|
|
db $D5
|
|
db $E0
|
|
db $E5
|
|
db $EA
|
|
db $F5
|
|
db $00
|
|
db $05
|
|
db $8A
|
|
db $95
|
|
db $A0
|
|
db $B0
|
|
db $B5
|
|
db $C0
|
|
db $CB
|
|
db $D0
|
|
db $D5
|
|
db $E0
|
|
db $EB
|
|
db $F0
|
|
db $F5
|
|
db $00
|
|
db $0B
|
|
db $10
|
|
db $15
|
|
db $A0
|
|
db $AB
|
|
db $BB
|
|
db $C0
|
|
db $CB
|
|
db $D6
|
|
db $DB
|
|
db $E0
|
|
db $EB
|
|
db $F6
|
|
db $FB
|
|
db $00
|
|
db $0B
|
|
db $16
|
|
db $1B
|
|
db $20
|
|
db $2B
|
|
db $B6
|
|
|
|
CollisionYDeltas: ; 0x8917
|
|
; This has to do with y-collision data
|
|
dw $0000
|
|
dw $FFE0
|
|
dw $FF81
|
|
dw $FEDE
|
|
dw $FE77
|
|
dw $FE00
|
|
dw $FCCC
|
|
dw $FB87
|
|
dw $FB01
|
|
dw $FA8E
|
|
dw $F9F8
|
|
dw $FA1F
|
|
dw $FA77
|
|
dw $FAFC
|
|
dw $FCAD
|
|
dw $FEE7
|
|
dw $0119
|
|
dw $FFC2
|
|
dw $FF70
|
|
dw $FEE4
|
|
dw $FE8C
|
|
dw $FE24
|
|
dw $FD15
|
|
dw $FBF9
|
|
dw $FB87
|
|
dw $FB27
|
|
dw $FAB9
|
|
dw $FB03
|
|
dw $FB69
|
|
dw $FBFA
|
|
dw $FDBD
|
|
dw $0000
|
|
dw $0353
|
|
dw $045D
|
|
dw $FF4B
|
|
dw $FF01
|
|
dw $FECC
|
|
dw $FE8A
|
|
dw $FDD5
|
|
dw $FD15
|
|
dw $FCCC
|
|
dw $FC94
|
|
dw $FC77
|
|
dw $FD03
|
|
dw $FD81
|
|
dw $FE24
|
|
dw $0000
|
|
dw $0243
|
|
dw $0504
|
|
dw $05F6
|
|
dw $07B4
|
|
dw $FF08
|
|
dw $FEFB
|
|
dw $FEE2
|
|
dw $FE8A
|
|
dw $FE24
|
|
dw $FE00
|
|
dw $FDEC
|
|
dw $FE10
|
|
dw $FEC9
|
|
dw $FF54
|
|
dw $0000
|
|
dw $01DC
|
|
dw $0406
|
|
dw $0589
|
|
dw $066D
|
|
dw $0808
|
|
dw $08E7
|
|
dw $FF00
|
|
dw $FEFB
|
|
dw $FECC
|
|
dw $FE8C
|
|
dw $FE77
|
|
dw $FE71
|
|
dw $FEAD
|
|
dw $FF73
|
|
dw $0000
|
|
dw $00AC
|
|
dw $027F
|
|
dw $0497
|
|
dw $05E1
|
|
dw $06B6
|
|
dw $082C
|
|
dw $08E1
|
|
dw $08E7
|
|
dw $FF08
|
|
dw $FF01
|
|
dw $FEE4
|
|
dw $FEDE
|
|
dw $FEE3
|
|
dw $FF32
|
|
dw $0000
|
|
dw $008D
|
|
dw $0137
|
|
dw $02FD
|
|
dw $04FD
|
|
dw $0608
|
|
dw $06B8
|
|
dw $07D4
|
|
dw $082C
|
|
dw $0808
|
|
dw $07B4
|
|
dw $FF4B
|
|
dw $FF70
|
|
dw $FF81
|
|
dw $FF99
|
|
dw $0000
|
|
dw $00CE
|
|
dw $0153
|
|
dw $01F0
|
|
dw $0389
|
|
dw $0547
|
|
dw $0572
|
|
dw $05F8
|
|
dw $06B8
|
|
dw $06B6
|
|
dw $066D
|
|
dw $05F6
|
|
dw $045D
|
|
dw $FFC2
|
|
dw $FFE0
|
|
dw $0000
|
|
dw $0067
|
|
dw $011D
|
|
dw $018F
|
|
dw $0214
|
|
dw $036C
|
|
dw $04D9
|
|
dw $04FF
|
|
dw $0572
|
|
dw $0608
|
|
dw $05E1
|
|
dw $0589
|
|
dw $0504
|
|
dw $0353
|
|
dw $0119
|
|
dw $0000
|
|
dw $0020
|
|
dw $007F
|
|
dw $0122
|
|
dw $0189
|
|
dw $0200
|
|
dw $0334
|
|
dw $0479
|
|
dw $0479
|
|
dw $04D9
|
|
dw $0547
|
|
dw $04FD
|
|
dw $0497
|
|
dw $0406
|
|
dw $0243
|
|
dw $0000
|
|
dw $FEE7
|
|
dw $003E
|
|
dw $0090
|
|
dw $011C
|
|
dw $0174
|
|
dw $01DC
|
|
dw $02EB
|
|
dw $0407
|
|
dw $0334
|
|
dw $036C
|
|
dw $0389
|
|
dw $02FD
|
|
dw $027F
|
|
dw $01DC
|
|
dw $0000
|
|
dw $FDBD
|
|
dw $FCAD
|
|
dw $FBA3
|
|
dw $00B5
|
|
dw $00FF
|
|
dw $0134
|
|
dw $0176
|
|
dw $022B
|
|
dw $02EB
|
|
dw $0200
|
|
dw $0214
|
|
dw $01F0
|
|
dw $0137
|
|
dw $00AC
|
|
dw $0000
|
|
dw $FE24
|
|
dw $FBFA
|
|
dw $FAFC
|
|
dw $FA0A
|
|
dw $F84C
|
|
dw $00F8
|
|
dw $0105
|
|
dw $011E
|
|
dw $0176
|
|
dw $01DC
|
|
dw $0189
|
|
dw $018F
|
|
dw $0153
|
|
dw $008D
|
|
dw $0000
|
|
dw $FF54
|
|
dw $FD81
|
|
dw $FB69
|
|
dw $FA77
|
|
dw $F993
|
|
dw $F7F8
|
|
dw $F719
|
|
dw $0100
|
|
dw $0105
|
|
dw $0134
|
|
dw $0174
|
|
dw $0122
|
|
dw $011D
|
|
dw $00CE
|
|
dw $0000
|
|
dw $FF73
|
|
dw $FEC9
|
|
dw $FD03
|
|
dw $FB03
|
|
dw $FA1F
|
|
dw $F94A
|
|
dw $F7D4
|
|
dw $F71F
|
|
dw $F719
|
|
dw $00F8
|
|
dw $00FF
|
|
dw $011C
|
|
dw $007F
|
|
dw $0067
|
|
dw $0000
|
|
dw $FF32
|
|
dw $FEAD
|
|
dw $FE10
|
|
dw $FC77
|
|
dw $FAB9
|
|
dw $F9F8
|
|
dw $F948
|
|
dw $F82C
|
|
dw $F7D4
|
|
dw $F7F8
|
|
dw $F84C
|
|
dw $00B5
|
|
dw $0090
|
|
dw $0020
|
|
dw $0000
|
|
dw $FF99
|
|
dw $FEE3
|
|
dw $FE71
|
|
dw $FDEC
|
|
dw $FC94
|
|
dw $FB27
|
|
dw $FA8E
|
|
dw $FA08
|
|
dw $F948
|
|
dw $F94A
|
|
dw $F993
|
|
dw $FA0A
|
|
dw $FBA3
|
|
dw $003E
|
|
|
|
CollisionXDeltas: ; 0x8b17
|
|
; This data has to do with x-collision data
|
|
dw $FF00
|
|
dw $FEFB
|
|
dw $FECC
|
|
dw $FE8C
|
|
dw $FE77
|
|
dw $FE71
|
|
dw $FEAD
|
|
dw $FF73
|
|
dw $0000
|
|
dw $00AC
|
|
dw $027F
|
|
dw $0497
|
|
dw $0589
|
|
dw $066D
|
|
dw $0808
|
|
dw $08E7
|
|
dw $08E7
|
|
dw $FF08
|
|
dw $FF01
|
|
dw $FEE4
|
|
dw $FEDE
|
|
dw $FEE3
|
|
dw $FF32
|
|
dw $0000
|
|
dw $008D
|
|
dw $0137
|
|
dw $02FD
|
|
dw $04FD
|
|
dw $05E1
|
|
dw $06B6
|
|
dw $082C
|
|
dw $08E1
|
|
dw $0808
|
|
dw $07B4
|
|
dw $FF4B
|
|
dw $FF70
|
|
dw $FF81
|
|
dw $FF99
|
|
dw $0000
|
|
dw $00CE
|
|
dw $0153
|
|
dw $01F0
|
|
dw $0389
|
|
dw $0547
|
|
dw $0608
|
|
dw $06B8
|
|
dw $07D4
|
|
dw $082C
|
|
dw $066D
|
|
dw $05F6
|
|
dw $045D
|
|
dw $FFC2
|
|
dw $FFE0
|
|
dw $0000
|
|
dw $0067
|
|
dw $011D
|
|
dw $018F
|
|
dw $0214
|
|
dw $036C
|
|
dw $04D9
|
|
dw $0572
|
|
dw $05F8
|
|
dw $06B8
|
|
dw $06B6
|
|
dw $0589
|
|
dw $0504
|
|
dw $0353
|
|
dw $0119
|
|
dw $0000
|
|
dw $0020
|
|
dw $007F
|
|
dw $0122
|
|
dw $0189
|
|
dw $0200
|
|
dw $0334
|
|
dw $0479
|
|
dw $04FF
|
|
dw $0572
|
|
dw $0608
|
|
dw $05E1
|
|
dw $0497
|
|
dw $0406
|
|
dw $0243
|
|
dw $0000
|
|
dw $FEE7
|
|
dw $003E
|
|
dw $0090
|
|
dw $011C
|
|
dw $0174
|
|
dw $01DC
|
|
dw $02EB
|
|
dw $0407
|
|
dw $0479
|
|
dw $04D9
|
|
dw $0547
|
|
dw $04FD
|
|
dw $027F
|
|
dw $01DC
|
|
dw $0000
|
|
dw $FDBD
|
|
dw $FCAD
|
|
dw $FBA3
|
|
dw $00B5
|
|
dw $00FF
|
|
dw $0134
|
|
dw $0176
|
|
dw $022B
|
|
dw $02EB
|
|
dw $0334
|
|
dw $036C
|
|
dw $0389
|
|
dw $02FD
|
|
dw $00AC
|
|
dw $0000
|
|
dw $FE24
|
|
dw $FBFA
|
|
dw $FAFC
|
|
dw $FA0A
|
|
dw $F84C
|
|
dw $00F8
|
|
dw $0105
|
|
dw $011E
|
|
dw $0176
|
|
dw $01DC
|
|
dw $0200
|
|
dw $0214
|
|
dw $01F0
|
|
dw $0137
|
|
dw $0000
|
|
dw $FF54
|
|
dw $FD81
|
|
dw $FB69
|
|
dw $FA77
|
|
dw $F993
|
|
dw $F7F8
|
|
dw $F719
|
|
dw $0100
|
|
dw $0105
|
|
dw $0134
|
|
dw $0174
|
|
dw $0189
|
|
dw $018F
|
|
dw $0153
|
|
dw $008D
|
|
dw $FF73
|
|
dw $FEC9
|
|
dw $FD03
|
|
dw $FB03
|
|
dw $FA1F
|
|
dw $F94A
|
|
dw $F7D4
|
|
dw $F71F
|
|
dw $F719
|
|
dw $00F8
|
|
dw $00FF
|
|
dw $011C
|
|
dw $0122
|
|
dw $011D
|
|
dw $00CE
|
|
dw $0000
|
|
dw $FEAD
|
|
dw $FE10
|
|
dw $FC77
|
|
dw $FAB9
|
|
dw $F9F8
|
|
dw $F948
|
|
dw $F82C
|
|
dw $F7D4
|
|
dw $F7F8
|
|
dw $F84C
|
|
dw $00B5
|
|
dw $0090
|
|
dw $007F
|
|
dw $0067
|
|
dw $0000
|
|
dw $FF32
|
|
dw $FE71
|
|
dw $FDEC
|
|
dw $FC94
|
|
dw $FB27
|
|
dw $FA8E
|
|
dw $FA08
|
|
dw $F948
|
|
dw $F94A
|
|
dw $F993
|
|
dw $FA0A
|
|
dw $FBA3
|
|
dw $003E
|
|
dw $0020
|
|
dw $0000
|
|
dw $FF99
|
|
dw $FEE3
|
|
dw $FE77
|
|
dw $FE00
|
|
dw $FCCC
|
|
dw $FB87
|
|
dw $FB01
|
|
dw $FA8E
|
|
dw $F9F8
|
|
dw $FA1F
|
|
dw $FA77
|
|
dw $FAFC
|
|
dw $FCAD
|
|
dw $FEE7
|
|
dw $0000
|
|
dw $FFE0
|
|
dw $FF81
|
|
dw $FEDE
|
|
dw $FE8C
|
|
dw $FE24
|
|
dw $FD15
|
|
dw $FBF9
|
|
dw $FB87
|
|
dw $FB27
|
|
dw $FAB9
|
|
dw $FB03
|
|
dw $FB69
|
|
dw $FBFA
|
|
dw $FDBD
|
|
dw $0000
|
|
dw $0119
|
|
dw $FFC2
|
|
dw $FF70
|
|
dw $FEE4
|
|
dw $FECC
|
|
dw $FE8A
|
|
dw $FDD5
|
|
dw $FD15
|
|
dw $FCCC
|
|
dw $FC94
|
|
dw $FC77
|
|
dw $FD03
|
|
dw $FD81
|
|
dw $FE24
|
|
dw $0000
|
|
dw $0243
|
|
dw $0353
|
|
dw $045D
|
|
dw $FF4B
|
|
dw $FF01
|
|
dw $FEFB
|
|
dw $FEE2
|
|
dw $FE8A
|
|
dw $FE24
|
|
dw $FE00
|
|
dw $FDEC
|
|
dw $FE10
|
|
dw $FEC9
|
|
dw $FF54
|
|
dw $0000
|
|
dw $01DC
|
|
dw $0406
|
|
dw $0504
|
|
dw $05F6
|
|
dw $07B4
|
|
dw $FF08
|
|
|
|
LoadDexVWFCharacter_: ; 0x8d17
|
|
; Loads a single variable-width-font character used in various parts of the Pokedex screen.
|
|
ld a, [$ff92]
|
|
cp $80
|
|
jp c, Func_8e01
|
|
ld a, [$ff90]
|
|
ld c, a
|
|
ld a, [$ff91]
|
|
ld b, a
|
|
ld a, [$ff93]
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, bc
|
|
ld a, [$ff8e]
|
|
cp h
|
|
jr nz, .asm_8d32
|
|
ld a, [$ff8d]
|
|
cp l
|
|
.asm_8d32
|
|
jr nc, .asm_8d5c
|
|
ld a, [$ff8d]
|
|
ld [$ff90], a
|
|
ld a, [$ff8e]
|
|
ld [$ff91], a
|
|
ld a, [$ff8d]
|
|
ld c, a
|
|
ld a, [$ff8e]
|
|
ld b, a
|
|
ld a, [$ff8c]
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, bc
|
|
ld a, l
|
|
ld [$ff8d], a
|
|
ld a, h
|
|
ld [$ff8e], a
|
|
srl h
|
|
rr l
|
|
srl h
|
|
rr l
|
|
ld a, [$ff8f]
|
|
cp l
|
|
jp c, Func_8df7
|
|
.asm_8d5c
|
|
ld a, [$ff90]
|
|
and $f8
|
|
ld c, a
|
|
ld a, [$ff91]
|
|
ld b, a
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
ld hl, wc010
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, [$ff92]
|
|
swap a
|
|
ld c, a
|
|
and $f
|
|
ld b, a
|
|
ld a, c
|
|
and $f0
|
|
ld c, a
|
|
sla c
|
|
rl b
|
|
ld hl, PokedexCharactersGfx
|
|
add hl, bc
|
|
push hl
|
|
ld a, [$ff90]
|
|
and $7
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_8df9
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd85e], a
|
|
cpl
|
|
ld [wd85f], a
|
|
ld a, c
|
|
add $58
|
|
ld b, a
|
|
pop hl
|
|
push hl
|
|
ld c, $10
|
|
.asm_8da2
|
|
push bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [bc]
|
|
ld c, a
|
|
ld a, [wd85e]
|
|
and c
|
|
ld c, a
|
|
ld a, [wd860]
|
|
ld b, a
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
pop bc
|
|
dec c
|
|
jr nz, .asm_8da2
|
|
pop hl
|
|
ld c, $10
|
|
.asm_8dc4
|
|
push bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [bc]
|
|
ld c, a
|
|
ld a, [wd85f]
|
|
and c
|
|
ld c, a
|
|
ld a, [wd860]
|
|
ld b, a
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
pop bc
|
|
dec c
|
|
jr nz, .asm_8dc4
|
|
ld a, [$ff90]
|
|
ld c, a
|
|
ld a, [$ff91]
|
|
ld b, a
|
|
ld a, [$ff93]
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, bc
|
|
ld a, l
|
|
ld [$ff90], a
|
|
ld a, h
|
|
ld [$ff91], a
|
|
and a
|
|
ret
|
|
|
|
Func_8df7: ; 0x8df7
|
|
scf
|
|
ret
|
|
|
|
Data_8df9: ; 0x8df9
|
|
db $FF, $7F, $3F, $1F, $0F, $07, $03, $01
|
|
|
|
Func_8e01: ; 0x8e01
|
|
ld a, [$ff90]
|
|
ld c, a
|
|
ld a, [$ff91]
|
|
ld b, a
|
|
ld a, [$ff93]
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, bc
|
|
ld a, [$ff8e]
|
|
cp h
|
|
jr nz, .asm_8e15
|
|
ld a, [$ff8d]
|
|
cp l
|
|
.asm_8e15
|
|
jr nc, .asm_8e3f
|
|
ld a, [$ff8d]
|
|
ld [$ff90], a
|
|
ld a, [$ff8e]
|
|
ld [$ff91], a
|
|
ld a, [$ff8d]
|
|
ld c, a
|
|
ld a, [$ff8e]
|
|
ld b, a
|
|
ld a, [$ff8c]
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, bc
|
|
ld a, l
|
|
ld [$ff8d], a
|
|
ld a, h
|
|
ld [$ff8e], a
|
|
srl h
|
|
rr l
|
|
srl h
|
|
rr l
|
|
ld a, [$ff8f]
|
|
cp l
|
|
jp c, Func_8ed6
|
|
.asm_8e3f
|
|
ld a, [$ff90]
|
|
and $f8
|
|
ld c, a
|
|
ld a, [$ff91]
|
|
ld b, a
|
|
sla c
|
|
rl b
|
|
ld hl, wc010
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, [$ff92]
|
|
swap a
|
|
ld c, a
|
|
and $f
|
|
ld b, a
|
|
ld a, c
|
|
and $f0
|
|
ld c, a
|
|
sla c
|
|
rl b
|
|
ld hl, PokedexCharactersGfx + $8
|
|
add hl, bc
|
|
push hl
|
|
ld a, [$ff90]
|
|
and $7
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_8ed8
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd85e], a
|
|
cpl
|
|
ld [wd85f], a
|
|
ld a, c
|
|
add $58
|
|
ld b, a
|
|
pop hl
|
|
push hl
|
|
ld c, $8
|
|
.asm_8e81
|
|
push bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [bc]
|
|
ld c, a
|
|
ld a, [wd85e]
|
|
and c
|
|
ld c, a
|
|
ld a, [wd860]
|
|
ld b, a
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
pop bc
|
|
dec c
|
|
jr nz, .asm_8e81
|
|
pop hl
|
|
ld c, $8
|
|
.asm_8ea3
|
|
push bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [bc]
|
|
ld c, a
|
|
ld a, [wd85f]
|
|
and c
|
|
ld c, a
|
|
ld a, [wd860]
|
|
ld b, a
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
xor b
|
|
or c
|
|
xor b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
pop bc
|
|
dec c
|
|
jr nz, .asm_8ea3
|
|
ld a, [$ff90]
|
|
ld c, a
|
|
ld a, [$ff91]
|
|
ld b, a
|
|
ld a, [$ff93]
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, bc
|
|
ld a, l
|
|
ld [$ff90], a
|
|
ld a, h
|
|
ld [$ff91], a
|
|
and a
|
|
ret
|
|
|
|
Func_8ed6: ; 0x8ed6
|
|
scf
|
|
ret
|
|
|
|
Data_8ed8: ; 0x8ed8
|
|
db $FF, $7F, $3F, $1F, $0F, $07, $03, $01
|
|
|
|
Func_8ee0: ; 0x8ee0
|
|
ld a, [$ff8d]
|
|
ld [$ff90], a
|
|
ld a, [$ff8e]
|
|
ld [$ff91], a
|
|
ld a, [$ff8d]
|
|
ld c, a
|
|
ld a, [$ff8e]
|
|
ld b, a
|
|
ld a, [$ff8c]
|
|
ld l, a
|
|
ld h, $0
|
|
add hl, bc
|
|
ld a, l
|
|
ld [$ff8d], a
|
|
ld a, h
|
|
ld [$ff8e], a
|
|
srl h
|
|
rr l
|
|
srl h
|
|
rr l
|
|
ld a, [$ff8f]
|
|
cp l
|
|
ret
|
|
|
|
Data_8f06:
|
|
|
|
SECTION "bank2.2", ROMX [$5800], BANK[$2]
|
|
Data_9800:
|
|
|
|
macro_9800: MACRO
|
|
x = 0
|
|
rept \1
|
|
y = 0
|
|
rept $100 / \1
|
|
db (x + y) & $ff
|
|
y = y + \1
|
|
endr
|
|
x = x + 1
|
|
endr
|
|
endm
|
|
|
|
w = $100
|
|
rept 8
|
|
macro_9800 w
|
|
w = w >> 1
|
|
endr
|
|
|
|
PokedexCharactersGfx: ; 0xa000
|
|
INCBIN "gfx/pokedex/characters.interleave.2bpp"
|
|
|
|
SECTION "bank3", ROMX, BANK[$3]
|
|
|
|
INCLUDE "engine/titlescreen.asm"
|
|
|
|
HandleOptionsScreen: ; 0xc34a
|
|
ld a, [wScreenState]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
OptionsScreenFunctions: ; 0xc34e
|
|
dw Func_c35a
|
|
dw Func_c400
|
|
dw Func_c483
|
|
dw Func_c493
|
|
dw Func_c506
|
|
dw Func_c691
|
|
|
|
Func_c35a: ; 0xc35a
|
|
ld a, $47
|
|
ld [hLCDC], a
|
|
ld a, $e4
|
|
ld [wBGP], a
|
|
ld [wOBP0], a
|
|
ld a, $d2
|
|
ld [wOBP1], a
|
|
xor a
|
|
ld [hSCX], a
|
|
ld [hSCY], a
|
|
ld hl, OptionsScreenVideoDataPointers
|
|
ld a, [hGameBoyColorFlag]
|
|
call LoadVideoData
|
|
call ClearOAMBuffer
|
|
ld a, $2
|
|
ld [wd921], a
|
|
ld [wd91d], a
|
|
ld a, $9
|
|
ld [wd91f], a
|
|
call Func_c43a
|
|
call Func_c948
|
|
call Func_b66
|
|
ld a, $12
|
|
call SetSongBank
|
|
ld de, $0002
|
|
call PlaySong
|
|
call Func_588
|
|
ld a, [wSoundTestCurrentBackgroundMusic]
|
|
hlCoord 7, 11, vBGMap
|
|
call RedrawSoundTestID
|
|
ld a, [wSoundTextCurrentSoundEffect]
|
|
hlCoord 7, 13, vBGMap
|
|
call RedrawSoundTestID
|
|
call Func_bbe
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
OptionsScreenVideoDataPointers: ; 0xc3b9
|
|
dw OptionsScreenVideoData_GameBoy
|
|
dw OptionsScreenVideoData_GameBoyColor
|
|
|
|
OptionsScreenVideoData_GameBoy: ; 0xc3bd
|
|
VIDEO_DATA_TILES OptionMenuAndKeyConfigGfx, vTilesOB, $1400
|
|
VIDEO_DATA_TILEMAP OptionMenuTilemap, vBGMap, $240
|
|
VIDEO_DATA_TILEMAP OptionMenuTilemap2, vBGWin, $240
|
|
db $FF, $FF ; terminators
|
|
|
|
OptionsScreenVideoData_GameBoyColor: ; 0xc3d4
|
|
VIDEO_DATA_TILES OptionMenuAndKeyConfigGfx, vTilesOB, $1400
|
|
VIDEO_DATA_TILEMAP OptionMenuTilemap, vBGMap, $240
|
|
VIDEO_DATA_TILEMAP_BANK2 OptionMenuTilemap3, vBGMap, $240
|
|
VIDEO_DATA_TILEMAP OptionMenuTilemap2, vBGWin, $240
|
|
VIDEO_DATA_TILEMAP_BANK2 OptionMenuTilemap4, vBGWin, $240
|
|
VIDEO_DATA_PALETTES OptionMenuPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
Func_c400: ; 0xc400
|
|
call Func_c41a
|
|
call Func_c43a
|
|
call Func_c447
|
|
ld a, [hNewlyPressedButtons]
|
|
bit 1, a
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld a, $2
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_c41a: ; 0xc41a
|
|
ld a, [hPressedButtons]
|
|
ld b, a
|
|
ld a, [wd916]
|
|
bit 6, b
|
|
jr z, .asm_c429
|
|
and a
|
|
ret z
|
|
dec a
|
|
jr .asm_c430
|
|
|
|
.asm_c429
|
|
bit 7, b
|
|
ret z
|
|
cp $2
|
|
ret z
|
|
inc a
|
|
.asm_c430
|
|
ld [wd916], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_c43a: ; 0xc43a
|
|
call Func_c7ac
|
|
call Func_c80b
|
|
call Func_c88a
|
|
call Func_c92e
|
|
ret
|
|
|
|
Func_c447: ; 0xc447
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld a, [wd916]
|
|
and a
|
|
jr nz, .asm_c465
|
|
ld a, [hSGBFlag]
|
|
and a
|
|
ret nz
|
|
call Func_c4f4
|
|
ld a, $3
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
.asm_c465
|
|
cp $1
|
|
jr nz, .asm_c477
|
|
call ClearOAMBuffer
|
|
ld hl, hLCDC
|
|
set 3, [hl]
|
|
ld a, $4
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
.asm_c477
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld a, $5
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_c483: ; 0xc483
|
|
call Func_cb5
|
|
call Func_576
|
|
ld a, SCREEN_TITLESCREEN
|
|
ld [wCurrentScreen], a
|
|
xor a
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_c493: ; 0xc493
|
|
call Func_c4b4
|
|
call Func_c4e6
|
|
call Func_c869
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_B_BUTTON, a
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
xor a
|
|
ld [wd803], a
|
|
ld [wd804], a
|
|
ld a, $1
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_c4b4: ; 0xc4b4
|
|
ld a, [hNewlyPressedButtons]
|
|
ld b, a
|
|
ld a, [wd917]
|
|
bit BIT_D_LEFT, b
|
|
jr z, .asm_c4ce
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd917], a
|
|
call Func_c4f4
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_c4ce
|
|
bit BIT_D_RIGHT, b
|
|
ret z
|
|
cp $1
|
|
ret z
|
|
inc a
|
|
ld [wd917], a
|
|
xor a
|
|
ld [wd803], a
|
|
ld [wd804], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_c4e6: ; 0xc4e6
|
|
call Func_c7ac
|
|
call Func_c80b
|
|
call Func_c88a
|
|
xor a
|
|
call Func_c8f1
|
|
ret
|
|
|
|
Func_c4f4: ; 0xc4f4
|
|
xor a
|
|
ld [wd91c], a
|
|
ld [wd91e], a
|
|
ld a, $2
|
|
ld [wd91d], a
|
|
ld a, $9
|
|
ld [wd91f], a
|
|
ret
|
|
|
|
Func_c506: ; 0xc506
|
|
call Func_c534
|
|
call Func_c554
|
|
call Func_c55a
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_B_BUTTON, a
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
call ClearOAMBuffer
|
|
ld hl, hLCDC
|
|
res 3, [hl]
|
|
ld hl, wKeyConfigBallStart
|
|
ld de, sKeyConfigs
|
|
ld bc, $000e
|
|
call SaveData
|
|
ld a, $1
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_c534: ; 0xc534
|
|
ld a, [hNewlyPressedButtons]
|
|
ld b, a
|
|
ld a, [wd918]
|
|
bit BIT_D_UP, b
|
|
jr z, .asm_c543
|
|
and a
|
|
ret z
|
|
dec a
|
|
jr .asm_c54a
|
|
|
|
.asm_c543
|
|
bit BIT_D_DOWN, b
|
|
ret z
|
|
cp $7
|
|
ret z
|
|
inc a
|
|
.asm_c54a
|
|
ld [wd918], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_c554: ; 0xc554
|
|
ld a, $1
|
|
call Func_c8f1
|
|
ret
|
|
|
|
Func_c55a: ; 0xc55a
|
|
ld a, [wd918]
|
|
and a
|
|
jr nz, .asm_c572
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
call SaveDefaultKeyConfigs
|
|
call Func_c948
|
|
ret
|
|
|
|
.asm_c572
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld bc, $001e
|
|
call AdvanceFrames
|
|
ld a, [wd918]
|
|
dec a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, PointerTable_c65f
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wd918]
|
|
dec a
|
|
sla a
|
|
call Func_c644
|
|
ld bc, $00ff
|
|
.asm_c59f
|
|
push bc
|
|
push hl
|
|
ld a, [wd918]
|
|
dec a
|
|
sla a
|
|
call Func_c621
|
|
call Func_c554
|
|
call CleanOAMBuffer
|
|
rst AdvanceFrame
|
|
pop hl
|
|
pop bc
|
|
ld a, [hJoypadState]
|
|
and a
|
|
jr z, .asm_c5c2
|
|
ld c, $0
|
|
call Func_c9be
|
|
call Func_c95f
|
|
jr .asm_c59f
|
|
|
|
.asm_c5c2
|
|
or c
|
|
jr nz, .asm_c59f
|
|
ld a, [wd918]
|
|
dec a
|
|
sla a
|
|
call Func_c639
|
|
push hl
|
|
ld bc, $001e
|
|
call AdvanceFrames
|
|
pop hl
|
|
ld bc, $0020
|
|
add hl, bc
|
|
ld a, [wd918]
|
|
dec a
|
|
sla a
|
|
inc a
|
|
call Func_c644
|
|
ld bc, $00ff
|
|
ld d, $5a
|
|
.asm_c5e9
|
|
push bc
|
|
push de
|
|
push hl
|
|
ld a, [wd918]
|
|
dec a
|
|
sla a
|
|
inc a
|
|
call Func_c621
|
|
call Func_c554
|
|
call CleanOAMBuffer
|
|
rst AdvanceFrame
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
dec d
|
|
ret z
|
|
ld a, [hJoypadState]
|
|
and a
|
|
jr z, .asm_c613
|
|
ld d, $ff
|
|
ld c, $0
|
|
call Func_c9be
|
|
call Func_c95f
|
|
jr .asm_c5e9
|
|
|
|
.asm_c613
|
|
or c
|
|
jr nz, .asm_c5e9
|
|
ld a, [wd918]
|
|
dec a
|
|
sla a
|
|
inc a
|
|
call Func_c639
|
|
ret
|
|
|
|
Func_c621: ; 0xc621
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, OAMPixelOffsetData_c66d
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld b, a
|
|
ld a, [hNumFramesDropped]
|
|
bit 2, a
|
|
ret z
|
|
ld a, $84
|
|
call LoadOAMData
|
|
ret
|
|
|
|
Func_c639: ; 0xc639
|
|
push hl
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, wKeyConfigBallStart
|
|
add hl, de
|
|
ld [hl], b
|
|
pop hl
|
|
ret
|
|
|
|
Func_c644: ; 0xc644
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wKeyConfigBallStart
|
|
add hl, bc
|
|
ld [hl], $0
|
|
pop hl
|
|
push hl
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, Data_c689
|
|
ld a, Bank(Data_c689)
|
|
ld bc, $0008
|
|
call LoadVRAMData
|
|
pop hl
|
|
ret
|
|
|
|
PointerTable_c65f: ; 0xc65f
|
|
dw $9C6D
|
|
dw $9CAD
|
|
dw $9CED
|
|
dw $9D2D
|
|
dw $9D6D
|
|
dw $9DAD
|
|
dw $9DED
|
|
|
|
OAMPixelOffsetData_c66d: ; 0xc66d
|
|
dw $6018
|
|
dw $6020
|
|
dw $6028
|
|
dw $6030
|
|
dw $6038
|
|
dw $6040
|
|
dw $6048
|
|
dw $6050
|
|
dw $6058
|
|
dw $6060
|
|
dw $6068
|
|
dw $6070
|
|
dw $6078
|
|
dw $6080
|
|
|
|
Data_c689: ; 0xc689
|
|
db $81, $81, $81, $81, $81, $81, $81, $81
|
|
|
|
Func_c691: ; 0xc91
|
|
call Func_c6bf
|
|
call Func_c6d9
|
|
call Func_c6e8
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_B_BUTTON, a
|
|
ret z
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
rst AdvanceFrame
|
|
rst AdvanceFrame
|
|
ld a, $12
|
|
call SetSongBank
|
|
ld de, $0002
|
|
call PlaySong
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld a, $1
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_c6bf: ; 0xc6bf
|
|
ld a, [hNewlyPressedButtons]
|
|
ld b, a
|
|
ld a, [wd919]
|
|
bit BIT_D_UP, b
|
|
jr z, .asm_c6ce
|
|
and a
|
|
ret z
|
|
dec a
|
|
jr .asm_c6d5
|
|
|
|
.asm_c6ce
|
|
bit BIT_D_DOWN, b
|
|
ret z
|
|
cp $1
|
|
ret z
|
|
inc a
|
|
.asm_c6d5
|
|
ld [wd919], a
|
|
ret
|
|
|
|
Func_c6d9: ; 0xc6d9
|
|
call Func_c7ac
|
|
call Func_c80b
|
|
call Func_c88a
|
|
ld a, $2
|
|
call Func_c8f1
|
|
ret
|
|
|
|
Func_c6e8: ; 0xc6e8
|
|
ld a, [wd919]
|
|
and a
|
|
jr nz, UpdateSoundTestSoundEffectSelection
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, UpdateSoundTestBackgroundMusicSelection
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
rst AdvanceFrame
|
|
rst AdvanceFrame
|
|
ld a, [wSoundTestCurrentBackgroundMusic]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SongBanks
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld d, $0
|
|
ld a, [hl]
|
|
call SetSongBank
|
|
call PlaySong
|
|
ret
|
|
|
|
UpdateSoundTestBackgroundMusicSelection: ; 0xc715
|
|
ld a, [hPressedButtons] ; joypad state
|
|
ld b, a
|
|
ld a, [wSoundTestCurrentBackgroundMusic]
|
|
bit BIT_D_LEFT, b ; was the left dpad button pressed?
|
|
jr z, .checkIfRightPressed
|
|
dec a ; decrement background music id
|
|
bit 7, a ; did it wrap around to $ff?
|
|
jr z, .saveBackgroundMusicID
|
|
ld a, NUM_SONGS - 1
|
|
jr .saveBackgroundMusicID
|
|
|
|
.checkIfRightPressed
|
|
bit BIT_D_RIGHT, b ; was the right dpad button pressed?
|
|
ret z
|
|
inc a ; increment background music id
|
|
cp NUM_SONGS ; should it wrap around to 0?
|
|
jr nz, .saveBackgroundMusicID
|
|
xor a
|
|
.saveBackgroundMusicID
|
|
ld [wSoundTestCurrentBackgroundMusic], a
|
|
hlCoord 7, 11, vBGMap
|
|
jp RedrawSoundTestID
|
|
|
|
UpdateSoundTestSoundEffectSelection: ; 0xc73a
|
|
ld a, [hNewlyPressedButtons] ; joypad state
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .didntPressAButton
|
|
ld a, [wSoundTextCurrentSoundEffect]
|
|
ld e, a
|
|
ld d, $0
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.didntPressAButton
|
|
ld a, [hPressedButtons] ; joypad state
|
|
ld b, a
|
|
ld a, [wSoundTextCurrentSoundEffect]
|
|
bit BIT_D_LEFT, b ; was the left dpad button pressed?
|
|
jr z, .checkIfRightPressed
|
|
dec a ; decrement sound effect id
|
|
bit 7, a ; did it wrap around to $ff?
|
|
jr z, .saveSoundEffectID
|
|
ld a, NUM_SOUND_EFFECTS - 1
|
|
jr .saveSoundEffectID
|
|
|
|
.checkIfRightPressed
|
|
bit BIT_D_RIGHT, b ; was the right dpad button pressed?
|
|
ret z
|
|
inc a ; increment background music id
|
|
cp NUM_SOUND_EFFECTS ; should it wrap around to 0?
|
|
jr nz, .saveSoundEffectID
|
|
xor a
|
|
.saveSoundEffectID
|
|
ld [wSoundTextCurrentSoundEffect], a
|
|
hlCoord 7, 13, vBGMap
|
|
; fall through
|
|
|
|
RedrawSoundTestID: ; 0xc76c
|
|
; Redraws the 2-digit id number for the sound test's current background music or sound effect id.
|
|
; input: a = id number
|
|
; hl = pointer to bg map location where the new 2-digit id should be drawn
|
|
push af ; save music or sound effect id number
|
|
swap a
|
|
and $f ; a contains high nybble of music id
|
|
call .drawDigit
|
|
pop af
|
|
and $f ; a contains low nybble of music id
|
|
.drawDigit
|
|
add $b7 ; hexadecimal digit tiles start at tile number $b7
|
|
call PutTileInVRAM
|
|
inc hl
|
|
ret
|
|
|
|
SongBanks: ; 0xc77e
|
|
db MUSIC_NOTHING_0F,BANK(Music_Nothing0F)
|
|
db MUSIC_BLUE_FIELD,BANK(Music_BlueField)
|
|
db MUSIC_CATCH_EM_RED,BANK(Music_CatchEmRed)
|
|
db MUSIC_HURRY_UP_RED,BANK(Music_HurryUpRed)
|
|
db MUSIC_POKEDEX,BANK(Music_Pokedex)
|
|
db MUSIC_GASTLY_GRAVEYARD,BANK(Music_GastlyInTheGraveyard)
|
|
db MUSIC_HAUNTER_GRAVEYARD,BANK(Music_HaunterInTheGraveyard)
|
|
db MUSIC_GENGAR_GRAVEYARD,BANK(Music_GengarInTheGraveyard)
|
|
db MUSIC_RED_FIELD,BANK(Music_RedField)
|
|
db MUSIC_CATCH_EM_BLUE,BANK(Music_CatchEmBlue)
|
|
db MUSIC_HURRY_UP_BLUE,BANK(Music_HurryUpBlue)
|
|
db MUSIC_HI_SCORE,BANK(Music_HiScore)
|
|
db MUSIC_GAME_OVER,BANK(Music_GameOver)
|
|
db MUSIC_WHACK_DIGLETT,BANK(Music_WhackTheDiglett)
|
|
db MUSIC_WHACK_DUGTRIO,BANK(Music_WhackTheDugtrio)
|
|
db MUSIC_SEEL_STAGE,BANK(Music_SeelStage)
|
|
db MUSIC_TITLE_SCREEN,BANK(Music_Title)
|
|
db MUSIC_MEWTWO_STAGE,BANK(Music_MewtwoStage)
|
|
db MUSIC_OPTIONS,BANK(Music_Options)
|
|
db MUSIC_FIELD_SELECT,BANK(Music_FieldSelect)
|
|
db MUSIC_MEOWTH_STAGE,BANK(Music_MeowthStage)
|
|
db MUSIC_END_CREDITS,BANK(Music_EndCredits)
|
|
db MUSIC_NAME_ENTRY,BANK(Music_NameEntry)
|
|
|
|
Func_c7ac: ; 0xc7ac
|
|
ld c, $0
|
|
ld a, [wScreenState]
|
|
cp $1
|
|
jr z, .asm_c7cc
|
|
ld a, [wd916]
|
|
and a
|
|
jr nz, .asm_c7cc
|
|
ld a, [wd917]
|
|
and a
|
|
jr nz, .asm_c7cc
|
|
ld a, [wd91e]
|
|
cp $4
|
|
jr nz, .asm_c7cc
|
|
ld a, [wd91c]
|
|
ld c, a
|
|
.asm_c7cc
|
|
sla c
|
|
ld b, $0
|
|
ld hl, Data_c806
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld bc, $5050
|
|
call LoadOAMData
|
|
ld a, [wd91d]
|
|
dec a
|
|
jr nz, .asm_c802
|
|
ld a, [wd91c]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_c806 + 2
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_c7f5
|
|
ld a, [wd91c]
|
|
inc a
|
|
.asm_c7f5
|
|
ld [wd91c], a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_c806 + 1
|
|
add hl, bc
|
|
ld a, [hl]
|
|
.asm_c802
|
|
ld [wd91d], a
|
|
ret
|
|
|
|
Data_c806: ; 0xc806
|
|
db $7B, $02, $7C, $02, $00
|
|
|
|
Func_c80b: ; 0xc80b
|
|
ld c, $0
|
|
ld a, [wScreenState]
|
|
cp $1
|
|
jr z, .asm_c824
|
|
ld a, [wd916]
|
|
and a
|
|
jr nz, .asm_c824
|
|
ld a, [wd917]
|
|
and a
|
|
jr nz, .asm_c824
|
|
ld a, [wd91e]
|
|
ld c, a
|
|
.asm_c824
|
|
sla c
|
|
ld b, $0
|
|
ld hl, Data_c85e
|
|
add hl, bc
|
|
ld bc, $7870
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ld a, [wd91f]
|
|
dec a
|
|
jr nz, .asm_c85a
|
|
ld a, [wd91e]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_c85e + 2
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
ld a, [wd91e]
|
|
jr z, .asm_c850
|
|
inc a
|
|
ld [wd91e], a
|
|
.asm_c850
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_c85e + 1
|
|
add hl, bc
|
|
ld a, [hl]
|
|
.asm_c85a
|
|
ld [wd91f], a
|
|
ret
|
|
|
|
Data_c85e: ; 0xc85e
|
|
db $77, $09, $78, $09, $79, $09, $7A, $0D, $7A, $01, $00
|
|
|
|
Func_c869: ; 0xc869
|
|
ld a, [wd916]
|
|
and a
|
|
ret nz
|
|
ld a, [wd917]
|
|
and a
|
|
ret nz
|
|
ld a, [wd91e]
|
|
cp $3
|
|
ret nz
|
|
ld a, [wd91f]
|
|
cp $1
|
|
ret nz
|
|
ld a, $55
|
|
ld [wd803], a
|
|
ld a, $40
|
|
ld [wd804], a
|
|
ret
|
|
|
|
Func_c88a: ; 0xc88a
|
|
ld a, [wd916]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_c8eb
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld e, $0
|
|
ld a, [wScreenState]
|
|
cp $1
|
|
jr nz, .asm_c8a9
|
|
ld a, [wd920]
|
|
sla a
|
|
ld e, a
|
|
.asm_c8a9
|
|
ld d, $0
|
|
ld hl, Data_c8de
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ld a, [wd921]
|
|
dec a
|
|
jr nz, .asm_c8da
|
|
ld a, [wd920]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_c8de + 2
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_c8cd
|
|
ld a, [wd920]
|
|
inc a
|
|
.asm_c8cd
|
|
ld [wd920], a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_c8de + 1
|
|
add hl, bc
|
|
ld a, [hl]
|
|
.asm_c8da
|
|
ld [wd921], a
|
|
ret
|
|
|
|
Data_c8de: ; 0xc8de
|
|
db $7D, $02, $7E, $06, $7F, $02, $80, $04, $81, $06, $7F, $04, $00
|
|
|
|
Data_c8eb: ; 0xc8eb
|
|
db $18, $08, $30, $08, $48, $08
|
|
|
|
Func_c8f1: ; 0xc8f1
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd917
|
|
add hl, bc
|
|
ld e, [hl]
|
|
sla c
|
|
ld hl, PointerTable_c910
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld c, e
|
|
sla c
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld b, a
|
|
ld a, $82
|
|
call LoadOAMData
|
|
ret
|
|
|
|
PointerTable_c910: ; 0xc910
|
|
dw OAMPixelOffsetData_c916
|
|
dw OAMPixelOffsetData_c91a
|
|
dw OAMPixelOffsetData_c92a
|
|
|
|
OAMPixelOffsetData_c916: ; 0xc916
|
|
dw $5018
|
|
dw $7018
|
|
|
|
OAMPixelOffsetData_c91a: ; 0xc91a
|
|
dw $0808
|
|
dw $0818
|
|
dw $0828
|
|
dw $0838
|
|
dw $0848
|
|
dw $0858
|
|
dw $0868
|
|
dw $0878
|
|
|
|
OAMPixelOffsetData_c92a: ; 0xc92a
|
|
dw $1058
|
|
dw $1068
|
|
|
|
Func_c92e: ; 0xc92e
|
|
ld a, [wd917]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, OAMPixelOffsetData_c944
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, $85
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMPixelOffsetData_c944: ; 0xc944
|
|
dw $5018
|
|
dw $7018
|
|
|
|
Func_c948: ; 0xc948
|
|
hlCoord 13, 3, vBGWin
|
|
ld de, wKeyConfigBallStart
|
|
ld b, $e
|
|
.asm_c950
|
|
push bc
|
|
ld a, [de]
|
|
call Func_c95f
|
|
inc de
|
|
ld bc, $0020
|
|
add hl, bc
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_c950
|
|
ret
|
|
|
|
Func_c95f: ; 0xc95f
|
|
push bc
|
|
push de
|
|
push hl
|
|
push hl
|
|
push af
|
|
ld hl, wd922
|
|
ld a, $81
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
pop af
|
|
ld hl, wd922
|
|
ld de, Data_c9ae
|
|
ld b, $8
|
|
.asm_c979
|
|
srl a
|
|
push af
|
|
jr nc, .asm_c994
|
|
ld a, [de]
|
|
inc de
|
|
call Func_c9aa
|
|
ld a, [de]
|
|
inc de
|
|
call Func_c9aa
|
|
pop af
|
|
push af
|
|
and a
|
|
jr z, .asm_c996
|
|
ld a, $1a
|
|
call Func_c9aa
|
|
jr .asm_c996
|
|
|
|
.asm_c994
|
|
inc de
|
|
inc de
|
|
.asm_c996
|
|
pop af
|
|
dec b
|
|
jr nz, .asm_c979
|
|
pop de
|
|
ld hl, wd922
|
|
ld a, $0
|
|
ld bc, $0008
|
|
call LoadOrCopyVRAMData
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
Func_c9aa: ; 0xc9aa
|
|
and a
|
|
ret z
|
|
ld [hli], a
|
|
ret
|
|
|
|
Data_c9ae: ; 0xc9ae
|
|
db $14, $00, $15, $00, $18, $19, $16, $17, $13, $00, $12, $00, $10, $00, $11, $00
|
|
|
|
Func_c9be: ; 0xc9be
|
|
push af
|
|
push bc
|
|
push hl
|
|
ld c, a
|
|
xor b
|
|
and c
|
|
ld hl, wd936
|
|
call Func_c9ff
|
|
ld a, b
|
|
ld hl, wd93f
|
|
call Func_c9ff
|
|
ld a, [wd947]
|
|
cp $3
|
|
jr nc, .asm_c9f3
|
|
ld hl, wd93e
|
|
add [hl]
|
|
sub $4
|
|
ld hl, wd936
|
|
call nc, Func_ca15
|
|
ld de, wd936
|
|
ld hl, wd93f
|
|
ld b, $8
|
|
.asm_c9ec
|
|
ld a, [de]
|
|
or [hl]
|
|
ld [hli], a
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_c9ec
|
|
.asm_c9f3
|
|
ld hl, wd93f
|
|
call Func_ca29
|
|
pop hl
|
|
pop bc
|
|
ld b, a
|
|
pop af
|
|
ld a, b
|
|
ret
|
|
|
|
Func_c9ff: ; 0xc9ff
|
|
push bc
|
|
ld bc, $0800
|
|
.asm_ca03
|
|
sla a
|
|
jr nc, .asm_ca0c
|
|
ld [hl], $ff
|
|
inc c
|
|
jr .asm_ca0e
|
|
|
|
.asm_ca0c
|
|
ld [hl], $0
|
|
.asm_ca0e
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_ca03
|
|
ld [hl], c
|
|
pop bc
|
|
ret
|
|
|
|
Func_ca15: ; 0xca15
|
|
push bc
|
|
inc a
|
|
ld c, a
|
|
ld b, $8
|
|
.asm_ca1a
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_ca23
|
|
ld [hl], $0
|
|
dec c
|
|
jr z, .asm_ca27
|
|
.asm_ca23
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_ca1a
|
|
.asm_ca27
|
|
pop bc
|
|
ret
|
|
|
|
Func_ca29: ; 0ca29
|
|
push bc
|
|
ld bc, $0800
|
|
.asm_ca2d
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_ca32
|
|
scf
|
|
.asm_ca32
|
|
rl c
|
|
dec b
|
|
jr nz, .asm_ca2d
|
|
ld a, c
|
|
pop bc
|
|
ret
|
|
|
|
SaveDefaultKeyConfigs: ; 0ca3a
|
|
ld hl, DefaultKeyConfigs
|
|
ld de, wKeyConfigs
|
|
ld b, $e
|
|
.loop
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .loop
|
|
ld hl, wKeyConfigs
|
|
ld de, sKeyConfigs
|
|
ld bc, $000e
|
|
call SaveData
|
|
ret
|
|
|
|
DefaultKeyConfigs: ; 0xca55
|
|
db A_BUTTON, $00 ; wKeyConfigBallStart
|
|
db D_LEFT, $00 ; wKeyConfigLeftFlipper
|
|
db A_BUTTON, $00 ; wKeyConfigRightFlipper
|
|
db D_DOWN, $00 ; wKeyConfigLeftTilt
|
|
db B_BUTTON, $00 ; wKeyConfigRightTilt
|
|
db SELECT, $00 ; wKeyConfigUpperTilt
|
|
db START, $00 ; wKeyConfigMenu
|
|
|
|
Data_ca63:
|
|
db A_BUTTON, $00 ; wKeyConfigBallStart
|
|
db D_LEFT, $00 ; wKeyConfigLeftFlipper
|
|
db A_BUTTON, $00 ; wKeyConfigRightFlipper
|
|
db D_DOWN, $00 ; wKeyConfigLeftTilt
|
|
db B_BUTTON, $00 ; wKeyConfigRightTilt
|
|
db START, $04 ; wKeyConfigUpperTilt
|
|
db D_UP | D_RIGHT, $00 ; wKeyConfigMenu
|
|
|
|
Data_ca71:
|
|
db A_BUTTON, $00 ; wKeyConfigBallStart
|
|
db D_LEFT, $00 ; wKeyConfigLeftFlipper
|
|
db A_BUTTON, $00 ; wKeyConfigRightFlipper
|
|
db D_DOWN, $00 ; wKeyConfigLeftTilt
|
|
db B_BUTTON, $00 ; wKeyConfigRightTilt
|
|
db START, $00 ; wKeyConfigUpperTilt
|
|
db D_UP | START | SELECT, $00 ; wKeyConfigMenu
|
|
|
|
HandleHighScoresScreen: ; 0xca7f
|
|
ld a, [wScreenState]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
HighScoresScreenFunctions: ; 0xca83
|
|
dw Func_ca8f
|
|
dw Func_cb14
|
|
dw Func_ccac
|
|
dw Func_ccb6
|
|
dw Func_cd6c
|
|
dw ExitHighScoresScreen
|
|
|
|
Func_ca8f: ; 0xca8f
|
|
ld hl, wd473
|
|
call GenRandom
|
|
ld [hli], a
|
|
call GenRandom
|
|
ld [hli], a
|
|
call GenRandom
|
|
ld [hli], a
|
|
call GenRandom
|
|
ld [hli], a
|
|
ld hl, wRedHighScore5Points + $5
|
|
ld a, [wHighScoresStage]
|
|
and a
|
|
jr z, .asm_caae
|
|
ld hl, wBlueHighScore5Points + $5
|
|
.asm_caae
|
|
ld b, $5
|
|
.asm_cab0
|
|
ld de, wScore + $5
|
|
ld c, $6
|
|
.asm_cab5
|
|
ld a, [de]
|
|
cp [hl]
|
|
jr c, .asm_cad0
|
|
jr nz, .asm_cac2
|
|
dec de
|
|
dec hl
|
|
dec c
|
|
jr nz, .asm_cab5
|
|
jr .asm_cad0
|
|
|
|
.asm_cac2
|
|
dec hl
|
|
dec c
|
|
jr nz, .asm_cac2
|
|
ld a, l
|
|
sub $7
|
|
ld l, a
|
|
jr nc, .asm_cacd
|
|
dec h
|
|
.asm_cacd
|
|
dec b
|
|
jr nz, .asm_cab0
|
|
.asm_cad0
|
|
ld a, b
|
|
ld [wda81], a
|
|
xor a
|
|
ld [wda80], a
|
|
inc b
|
|
ld hl, wRedHighScore4Unknown0x09 + 3
|
|
ld de, wRedHighScore5Unknown0x09 + 3
|
|
ld a, [wHighScoresStage]
|
|
and a
|
|
jr z, .asm_caeb
|
|
ld hl, wBlueHighScore4Unknown0x09 + 3
|
|
ld de, wBlueHighScore5Unknown0x09 + 3
|
|
.asm_caeb
|
|
ld a, $5
|
|
.asm_caed
|
|
cp b
|
|
jr c, .asm_cb02
|
|
push af
|
|
jr nz, .asm_caf6
|
|
ld hl, wd473 + $3
|
|
.asm_caf6
|
|
ld c, $d
|
|
.asm_caf8
|
|
ld a, [hld]
|
|
ld [de], a
|
|
dec de
|
|
dec c
|
|
jr nz, .asm_caf8
|
|
pop af
|
|
dec a
|
|
jr nz, .asm_caed
|
|
.asm_cb02
|
|
ld a, [wda81]
|
|
cp $5
|
|
ld a, $1
|
|
jr nz, .asm_cb0c
|
|
xor a
|
|
.asm_cb0c
|
|
ld [wda7f], a
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
Func_cb14: ; 0xcb14
|
|
ld a, $43
|
|
ld [hLCDC], a
|
|
ld a, $e0
|
|
ld [wBGP], a
|
|
ld a, $e1
|
|
ld [wOBP0], a
|
|
ld [wOBP1], a
|
|
xor a
|
|
ld [hSCX], a
|
|
ld [hNextFrameHBlankSCX], a
|
|
ld [hSCY], a
|
|
ld [hNextFrameHBlankSCY], a
|
|
ld a, $e
|
|
ld [hLYC], a
|
|
ld [hLastLYC], a
|
|
ld a, $82
|
|
ld [hNextLYCSub], a
|
|
ld [hLYCSub], a
|
|
ld hl, hSTAT
|
|
set 6, [hl]
|
|
ld hl, rIE
|
|
set 1, [hl]
|
|
ld a, $3
|
|
ld [hHBlankRoutine], a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_cb51
|
|
ld a, [wHighScoresStage]
|
|
inc a
|
|
.asm_cb51
|
|
ld hl, HighScoresVideoDataPointers
|
|
call LoadVideoData
|
|
call ClearOAMBuffer
|
|
ld a, $20
|
|
ld [wda82], a
|
|
call Func_d211
|
|
hlCoord 0, 14, vBGMap
|
|
ld de, wRedHighScore5Unknown0x09 + $3
|
|
call Func_d2cb
|
|
hlCoord 0, 14, vBGWin
|
|
ld de, wBlueHighScore5Unknown0x09 + $3
|
|
call Func_d2cb
|
|
ld a, [wHighScoresStage]
|
|
and a
|
|
jr z, .asm_cb7f
|
|
ld hl, hLCDC
|
|
set 3, [hl]
|
|
.asm_cb7f
|
|
call Func_b66
|
|
ld a, [wda7f]
|
|
and a
|
|
jr z, .asm_cbbd
|
|
ld a, [wda81]
|
|
and a
|
|
jr nz, .asm_cb9b
|
|
ld a, $13
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
jr .asm_cba6
|
|
|
|
.asm_cb9b
|
|
ld a, $13
|
|
call SetSongBank
|
|
ld de, $0002
|
|
call PlaySong
|
|
.asm_cba6
|
|
call Func_588
|
|
ld bc, $0009
|
|
call Func_d68a
|
|
ld bc, $03c9
|
|
call Func_d68a
|
|
call Func_bbe
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
.asm_cbbd
|
|
ld a, $10
|
|
call SetSongBank
|
|
ld de, $0004
|
|
call PlaySong
|
|
call Func_588
|
|
ld bc, $0009
|
|
call Func_d68a
|
|
ld bc, $03c9
|
|
call Func_d68a
|
|
call Func_bbe
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
HighScoresVideoDataPointers: ; 0xcbe3
|
|
dw HighScoresVideoData_GameBoy
|
|
dw HighScoresRedStageVideoData_GameBoyColor
|
|
dw HighScoresBlueStageVideoData_GameBoyColor
|
|
|
|
HighScoresVideoData_GameBoy: ; 0xcbe9
|
|
VIDEO_DATA_TILES HighScoresBaseGameBoyGfx, vTilesOB, $1800
|
|
VIDEO_DATA_TILEMAP HighScoresTilemap, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP HighScoresTilemap2, vBGWin, $400
|
|
dw HighScoresTilemap + $3c0
|
|
db Bank(HighScoresTilemap)
|
|
dw vBGMap
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap + $280
|
|
db Bank(HighScoresTilemap)
|
|
dw vBGMap + $200
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap2 + $3c0
|
|
db Bank(HighScoresTilemap2)
|
|
dw vBGWin
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap2 + $280
|
|
db Bank(HighScoresTilemap2)
|
|
dw vBGWin + $200
|
|
dw ($40 << 2)
|
|
db $FF, $FF ; terminators
|
|
|
|
HighScoresRedStageVideoData_GameBoyColor: ; 0xcc1c
|
|
VIDEO_DATA_TILES HighScoresBaseGameBoyGfx, vTilesOB, $1800
|
|
VIDEO_DATA_TILEMAP HighScoresTilemap, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP HighScoresTilemap2, vBGWin, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 HighScoresTilemap4, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 HighScoresTilemap5, vBGWin, $400
|
|
dw HighScoresTilemap + $3c0
|
|
db Bank(HighScoresTilemap)
|
|
dw vBGMap
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap + $280
|
|
db Bank(HighScoresTilemap)
|
|
dw vBGMap + $200
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap2 + $3c0
|
|
db Bank(HighScoresTilemap2)
|
|
dw vBGWin
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap2 + $280
|
|
db Bank(HighScoresTilemap2)
|
|
dw vBGWin + $200
|
|
dw ($40 << 2)
|
|
VIDEO_DATA_PALETTES HighScoresRedStagePalettes, $80
|
|
db $FF, $FF
|
|
|
|
HighScoresBlueStageVideoData_GameBoyColor: ; 0xcc64
|
|
VIDEO_DATA_TILES HighScoresBaseGameBoyGfx, vTilesOB, $1800
|
|
VIDEO_DATA_TILEMAP HighScoresTilemap, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP HighScoresTilemap2, vBGWin, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 HighScoresTilemap4, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 HighScoresTilemap5, vBGWin, $400
|
|
dw HighScoresTilemap + $3c0
|
|
db Bank(HighScoresTilemap)
|
|
dw vBGMap
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap + $280
|
|
db Bank(HighScoresTilemap)
|
|
dw vBGMap + $200
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap2 + $3c0
|
|
db Bank(HighScoresTilemap2)
|
|
dw vBGWin
|
|
dw ($40 << 2)
|
|
dw HighScoresTilemap2 + $280
|
|
db Bank(HighScoresTilemap2)
|
|
dw vBGWin + $200
|
|
dw ($40 << 2)
|
|
VIDEO_DATA_PALETTES HighScoresBlueStagePalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
Func_ccac: ; 0xccac
|
|
call Func_d18b
|
|
call Func_d1d2
|
|
call Func_d211
|
|
ret
|
|
|
|
Func_ccb6: ; 0xccb6
|
|
call Func_d4cf
|
|
call AnimateHighScoresArrow
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_ccd1
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
.asm_ccd1
|
|
bit 1, a
|
|
jr z, .asm_cce4
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
.asm_cce4
|
|
bit 3, a
|
|
jr z, .asm_ccfb
|
|
call Func_1a43
|
|
ld a, [hGameBoyColorFlag]
|
|
ld [wd8f0], a
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
.asm_ccfb
|
|
ld a, [hJoypadState]
|
|
cp (SELECT | D_UP)
|
|
ret nz
|
|
ld a, [hNewlyPressedButtons]
|
|
and (SELECT | D_UP)
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
call ClearOAMBuffer
|
|
ld bc, $473b
|
|
ld a, $94
|
|
call LoadOAMData
|
|
.asm_cd16
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_B_BUTTON, a
|
|
jr z, .asm_cd24
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_cd24
|
|
bit 0, a
|
|
jr z, .asm_cd16
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
call CopyInitialHighScores
|
|
ld a, BANK(HighScoresTilemap)
|
|
ld hl, HighScoresTilemap + $40
|
|
deCoord 0, 2, vBGMap
|
|
ld bc, $01c0
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap2)
|
|
ld hl, HighScoresTilemap2 + $40
|
|
deCoord 0, 2, vBGWin
|
|
ld bc, $01c0
|
|
call LoadVRAMData
|
|
hlCoord 0, 14, vBGMap
|
|
ld de, wRedHighScore5Unknown0x09 + $3
|
|
call Func_d361
|
|
hlCoord 0, 14, vBGWin
|
|
ld de, wBlueHighScore5Unknown0x09 + $3
|
|
call Func_d361
|
|
ld hl, wRedHighScore1Points
|
|
ld de, $a000
|
|
ld bc, $0082
|
|
call SaveData
|
|
ret
|
|
|
|
Func_cd6c: ; 0xcd6c
|
|
ld a, [hNumFramesDropped]
|
|
and $1f
|
|
call z, Func_1a43
|
|
call Func_cf7d
|
|
call Func_cfa6
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_cdbb
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld a, [wda85]
|
|
and a
|
|
jr nz, .asm_cda1
|
|
ld a, [wd86e]
|
|
and a
|
|
jr z, .asm_cdbb
|
|
call ClearOAMBuffer
|
|
ld bc, $473b
|
|
ld a, $8e
|
|
call LoadOAMData
|
|
call Func_d042
|
|
jr .asm_cdc6
|
|
|
|
.asm_cda1
|
|
ld a, [wd8f0]
|
|
and a
|
|
jr z, .asm_cdbb
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
call Func_cdce
|
|
push af
|
|
ld de, $0004
|
|
call PlaySong
|
|
pop af
|
|
jr nc, .asm_cdc6
|
|
.asm_cdbb
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_B_BUTTON, a
|
|
ret z
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
.asm_cdc6
|
|
xor a
|
|
ld [rRP], a
|
|
ld hl, wScreenState
|
|
dec [hl]
|
|
ret
|
|
|
|
Func_cdce: ; 0xcdce
|
|
push af
|
|
ld a, $0
|
|
ld [$abf6], a
|
|
pop af
|
|
call ClearOAMBuffer
|
|
call Func_1be3
|
|
call SendHighScores
|
|
push af
|
|
ld a, $1
|
|
ld [$abf6], a
|
|
pop af
|
|
di
|
|
ld a, [wd8ea]
|
|
cp $0
|
|
jp nz, .asm_ceb6
|
|
ld a, [wd8e9]
|
|
cp $1
|
|
jr z, .asm_ce23
|
|
push af
|
|
ld a, $2
|
|
ld [$abf6], a
|
|
pop af
|
|
ld b, $82
|
|
ld hl, wRedHighScore1Points
|
|
call Func_1cf8
|
|
ld a, [wd8ea]
|
|
cp $0
|
|
jp nz, .asm_ceb6
|
|
push af
|
|
ld a, $3
|
|
ld [$abf6], a
|
|
pop af
|
|
ld hl, wc4c0
|
|
call Func_1dda
|
|
ld a, [wd8ea]
|
|
cp $0
|
|
jp nz, .asm_ceb6
|
|
jr .asm_ce4d
|
|
|
|
.asm_ce23
|
|
push af
|
|
ld a, $4
|
|
ld [$abf6], a
|
|
pop af
|
|
ld hl, wc4c0
|
|
call Func_1dda
|
|
ld a, [wd8ea]
|
|
cp $0
|
|
jr nz, .asm_ceb6
|
|
push af
|
|
ld a, $5
|
|
ld [$abf6], a
|
|
pop af
|
|
ld b, $82
|
|
ld hl, wRedHighScore1Points
|
|
call Func_1cf8
|
|
ld a, [wd8ea]
|
|
cp $0
|
|
jr nz, .asm_ceb6
|
|
.asm_ce4d
|
|
push af
|
|
ld a, $6
|
|
ld [$abf6], a
|
|
pop af
|
|
call Func_ceca
|
|
rst AdvanceFrame
|
|
ld hl, wc4cc
|
|
ld b, $5
|
|
.asm_ce5d
|
|
push bc
|
|
push hl
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, wRedHighScore5Unknown0x09 + $3
|
|
call Func_cfcb
|
|
pop hl
|
|
pop bc
|
|
ld de, $000d
|
|
add hl, de
|
|
dec b
|
|
jr nz, .asm_ce5d
|
|
push af
|
|
ld a, $7
|
|
ld [$abf6], a
|
|
pop af
|
|
ld hl, wBottomMessageText + $0d
|
|
ld b, $5
|
|
.asm_ce7c
|
|
push bc
|
|
push hl
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, wBlueHighScore5Unknown0x09 + $3
|
|
call Func_cfcb
|
|
pop hl
|
|
pop bc
|
|
ld de, $000d
|
|
add hl, de
|
|
dec b
|
|
jr nz, .asm_ce7c
|
|
push af
|
|
ld a, $8
|
|
ld [$abf6], a
|
|
pop af
|
|
hlCoord 0, 14, vBGMap
|
|
ld de, wRedHighScore5Unknown0x09 + $3
|
|
call Func_d361
|
|
hlCoord 0, 14, vBGWin
|
|
ld de, wBlueHighScore5Unknown0x09 + $3
|
|
call Func_d361
|
|
ld hl, wRedHighScore1Points
|
|
ld de, $a000
|
|
ld bc, $0082
|
|
call SaveData
|
|
and a
|
|
ret
|
|
|
|
.asm_ceb6
|
|
push af
|
|
ld a, $9
|
|
ld [$abf6], a
|
|
pop af
|
|
call Func_ceca
|
|
rst AdvanceFrame
|
|
push af
|
|
ld a, $a
|
|
ld [$abf6], a
|
|
pop af
|
|
scf
|
|
ret
|
|
|
|
Func_ceca: ; 0xceca
|
|
ld a, [rLY]
|
|
and a
|
|
jr nz, Func_ceca
|
|
ei
|
|
ret
|
|
|
|
SendHighScores: ; 0xced1
|
|
; Sends high scores, and plays the animation for sending the high scores.
|
|
ld hl, SendHighScoresAnimationData
|
|
ld de, wSendHighScoresAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld bc, $4800
|
|
ld a, [wSendHighScoresAnimationFrame]
|
|
call LoadOAMData
|
|
ld bc, $473b
|
|
ld a, $8f
|
|
call LoadOAMData
|
|
call CleanOAMBuffer
|
|
rst AdvanceFrame
|
|
ld a, $1
|
|
ld [wd8e9], a
|
|
ld b, $b4 ; maximum attempts to send high scores
|
|
.attemptToSendHighScoresLoop
|
|
push bc
|
|
xor a
|
|
ld [hNumFramesSinceLastVBlank], a
|
|
.asm_cefa
|
|
ld b, $2
|
|
ld c, $56
|
|
ld a, [$ff00+c]
|
|
and b
|
|
jr z, .asm_cf09
|
|
ld a, [hNumFramesSinceLastVBlank]
|
|
and a
|
|
jr z, .asm_cefa
|
|
jr .asm_cf0e
|
|
|
|
.asm_cf09
|
|
call Func_1c50
|
|
jr .continueAttempts
|
|
|
|
.asm_cf0e
|
|
ld hl, SendHighScoresAnimationData
|
|
ld de, wSendHighScoresAnimationFrameCounter
|
|
call UpdateAnimation
|
|
jr nc, .continueAttempts
|
|
ld bc, $4800
|
|
ld a, [wSendHighScoresAnimationFrame]
|
|
call LoadOAMData
|
|
ld bc, $473b
|
|
ld a, $8f
|
|
call LoadOAMData
|
|
call CleanOAMBuffer
|
|
call Func_1ca1
|
|
ld a, [wSendHighScoresAnimationFrameIndex]
|
|
cp $6
|
|
jr nz, .continueAttempts
|
|
ld hl, SendHighScoresAnimationData
|
|
ld de, wSendHighScoresAnimationFrameCounter
|
|
call CopyHLToDE
|
|
.continueAttempts
|
|
pop bc
|
|
ld a, [wd8ea]
|
|
cp $0
|
|
ret z
|
|
dec b
|
|
jr nz, .attemptToSendHighScoresLoop
|
|
ret
|
|
|
|
SendHighScoresAnimationData: ; 0xcf4b
|
|
; Each entry is [OAM id][duration]
|
|
db $0C, $98
|
|
db $06, $99
|
|
db $0A, $9A
|
|
db $0C, $9B
|
|
db $0A, $9C
|
|
db $06, $9D
|
|
db $00 ; terminator
|
|
|
|
Func_cf58: ; 0xcf58
|
|
cp $5
|
|
ret z
|
|
push af
|
|
lb de, $00, $02
|
|
call PlaySoundEffect
|
|
call ClearOAMBuffer
|
|
rst AdvanceFrame
|
|
pop af
|
|
ld bc, $473b
|
|
add $8f
|
|
call LoadOAMData
|
|
.asm_cf6f
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_cf6f
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_cf7d: ; 0xcf7d
|
|
ld a, [wd809]
|
|
ld b, a
|
|
ld a, [wda85]
|
|
bit 6, b
|
|
jr z, .asm_cf95
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wda85], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_cf95
|
|
bit 7, b
|
|
ret z
|
|
cp $1
|
|
ret z
|
|
inc a
|
|
ld [wda85], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_cfa6: ; 0xcfa6
|
|
ld bc, $473b
|
|
ld a, $87
|
|
call LoadOAMData
|
|
ld a, [wd8f0]
|
|
and a
|
|
jr z, .asm_cfb6
|
|
ld a, $2
|
|
.asm_cfb6
|
|
ld e, a
|
|
ld a, [wd86e]
|
|
add e
|
|
xor $3
|
|
add $8a
|
|
call LoadOAMData
|
|
ld a, [wda85]
|
|
add $88
|
|
call LoadOAMData
|
|
ret
|
|
|
|
Func_cfcb: ; 0xcfcb
|
|
ld a, e
|
|
ld [$ff8c], a
|
|
ld a, d
|
|
ld [$ff8d], a
|
|
push hl
|
|
ld b, $5
|
|
.asm_cfd4
|
|
ld a, [$ff8c]
|
|
ld e, a
|
|
ld a, [$ff8d]
|
|
ld d, a
|
|
call Func_d005
|
|
call Func_d017
|
|
jr c, .asm_cfe5
|
|
dec b
|
|
jr nz, .asm_cfd4
|
|
.asm_cfe5
|
|
inc b
|
|
pop de
|
|
ld hl, $fff3
|
|
add hl, de
|
|
ld a, $5
|
|
.asm_cfed
|
|
cp b
|
|
ret c
|
|
push af
|
|
jr nz, .asm_cff8
|
|
ld a, [$ff8c]
|
|
ld l, a
|
|
ld a, [$ff8d]
|
|
ld h, a
|
|
.asm_cff8
|
|
ld c, $d
|
|
.asm_cffa
|
|
ld a, [hld]
|
|
ld [de], a
|
|
dec de
|
|
dec c
|
|
jr nz, .asm_cffa
|
|
pop af
|
|
dec a
|
|
jr nz, .asm_cfed
|
|
ret
|
|
|
|
Func_d005: ; 0xd005
|
|
ld c, $7
|
|
.asm_d007
|
|
ld a, [de]
|
|
cp [hl]
|
|
jr nz, .asm_d010
|
|
dec de
|
|
dec hl
|
|
dec c
|
|
jr nz, .asm_d007
|
|
.asm_d010
|
|
ld a, c
|
|
ld [$ff8e], a
|
|
call Func_d035
|
|
ret
|
|
|
|
Func_d017: ; 0xd017
|
|
ld c, $6
|
|
.asm_d019
|
|
ld a, [de]
|
|
cp [hl]
|
|
jr c, .asm_d02b
|
|
jr nz, .asm_d030
|
|
dec de
|
|
dec hl
|
|
dec c
|
|
jr nz, .asm_d019
|
|
ld a, [$ff8e]
|
|
and a
|
|
jr nz, .asm_d02b
|
|
ld b, $5
|
|
.asm_d02b
|
|
call Func_d035
|
|
scf
|
|
ret
|
|
|
|
.asm_d030
|
|
call Func_d035
|
|
and a
|
|
ret
|
|
|
|
Func_d035: ; 0xd035
|
|
ld a, e
|
|
sub c
|
|
ld e, a
|
|
jr nc, .asm_d03b
|
|
dec d
|
|
.asm_d03b
|
|
ld a, l
|
|
sub c
|
|
ld l, a
|
|
jr nc, .asm_d041
|
|
dec h
|
|
.asm_d041
|
|
ret
|
|
|
|
Func_d042: ; 0xd042
|
|
ld a, [hJoypadState]
|
|
ld [wda86], a
|
|
ld b, a
|
|
ld a, $80
|
|
bit BIT_D_LEFT, b
|
|
jr z, .asm_d052
|
|
ld a, $7f
|
|
jr .asm_d058
|
|
|
|
.asm_d052
|
|
bit BIT_D_RIGHT, b
|
|
jr z, .asm_d058
|
|
ld a, $10
|
|
.asm_d058
|
|
ld [wd8a7], a
|
|
ld a, $e0
|
|
ld [wd8aa], a
|
|
ld a, BANK(HighScoresTilemap)
|
|
ld hl, HighScoresTilemap + $3c0
|
|
ld de, wc280
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ld a, $0
|
|
hlCoord 0, 2, vBGMap
|
|
ld de, wc2c0
|
|
ld bc, $01c0
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap)
|
|
ld hl, HighScoresTilemap + $280
|
|
ld de, wc480
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
call Func_d6b6
|
|
call Func_d0e3
|
|
ret c
|
|
ld a, [wda86]
|
|
bit 2, a
|
|
jr z, .asm_d0a2
|
|
ld de, wRedHighScore1Unknown0x09
|
|
call Func_d107
|
|
call Func_d0f5
|
|
ret c
|
|
.asm_d0a2
|
|
ld a, BANK(HighScoresTilemap2)
|
|
ld hl, HighScoresTilemap2 + $3c0
|
|
ld de, wc280
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ld a, $0
|
|
hlCoord 0, 2, vBGWin
|
|
ld de, wc2c0
|
|
ld bc, $01c0
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap2)
|
|
ld hl, HighScoresTilemap2 + $280
|
|
ld de, wc480
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
call Func_d6b6
|
|
call Func_d0e3
|
|
ret c
|
|
ld a, [wda86]
|
|
bit 2, a
|
|
ret z
|
|
ld de, wBlueHighScore1Unknown0x09
|
|
call Func_d107
|
|
call Func_d0f5
|
|
ret
|
|
|
|
Func_d0e3: ; 0xd0e3
|
|
ld a, BANK(HighScoresBaseGameBoyGfx)
|
|
ld hl, HighScoresBaseGameBoyGfx + $800
|
|
call Func_1a21
|
|
ld a, [wd86d]
|
|
and a
|
|
ret z
|
|
call Func_cf58
|
|
scf
|
|
ret
|
|
|
|
Func_d0f5: ; 0xd0f5
|
|
ld a, BANK(HighScoresHexadecimalCharsGfx)
|
|
ld hl, HighScoresHexadecimalCharsGfx
|
|
call Func_1a21
|
|
ld a, [wd86d]
|
|
and a
|
|
ret z
|
|
call Func_cf58
|
|
scf
|
|
ret
|
|
|
|
Func_d107: ; 0xd107
|
|
ld hl, wc280
|
|
ld a, $c0
|
|
ld b, $20
|
|
.clear
|
|
rept 32
|
|
ld [hli], a
|
|
endr
|
|
dec b
|
|
jr nz, .clear
|
|
ld hl, wc280
|
|
ld b, $5
|
|
.loop
|
|
ld c, $4
|
|
.inner
|
|
ld a, [de]
|
|
swap a
|
|
call Func_d159
|
|
ld a, [de]
|
|
call Func_d159
|
|
inc de
|
|
inc hl
|
|
dec c
|
|
jr nz, .inner
|
|
ld a, l
|
|
add $4c
|
|
ld l, a
|
|
jr nc, .no_carry_1
|
|
inc h
|
|
.no_carry_1
|
|
ld a, e
|
|
add $9
|
|
ld e, a
|
|
jr nc, .no_carry_2
|
|
inc d
|
|
.no_carry_2
|
|
dec b
|
|
jr nz, .loop
|
|
ret
|
|
|
|
Func_d159: ; 0xd159
|
|
and $f
|
|
sla a
|
|
sla a
|
|
xor $80
|
|
ld [hli], a
|
|
inc a
|
|
ld [hli], a
|
|
inc a
|
|
push bc
|
|
push hl
|
|
ld bc, $001e
|
|
add hl, bc
|
|
ld [hli], a
|
|
inc a
|
|
ld [hli], a
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
|
|
ExitHighScoresScreen: ; 0xd171
|
|
call Func_cb5
|
|
call Func_576
|
|
ld hl, hSTAT
|
|
res 6, [hl]
|
|
ld hl, rIE
|
|
res 1, [hl]
|
|
ld a, SCREEN_TITLESCREEN
|
|
ld [wCurrentScreen], a
|
|
xor a
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_d18b: ; 0xd18b
|
|
ld a, [hPressedButtons]
|
|
ld b, a
|
|
ld a, [wda81]
|
|
ld e, a
|
|
sla e
|
|
sla e
|
|
add e
|
|
sla e
|
|
add e
|
|
ld e, a
|
|
ld a, [wda80]
|
|
add e
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, wRedHighScore1Name
|
|
ld a, [wHighScoresStage]
|
|
and a
|
|
jr z, .asm_d1ae
|
|
ld hl, wBlueHighScore1Name
|
|
.asm_d1ae
|
|
add hl, de
|
|
ld a, [hl]
|
|
bit 4, b
|
|
jr z, .asm_d1bd
|
|
inc a
|
|
cp $38
|
|
jr nz, .asm_d1c7
|
|
ld a, $a
|
|
jr .asm_d1c7
|
|
|
|
.asm_d1bd
|
|
bit 5, b
|
|
ret z
|
|
dec a
|
|
cp $9
|
|
jr nz, .asm_d1c7
|
|
ld a, $37
|
|
.asm_d1c7
|
|
ld [hl], a
|
|
call Func_d46f
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_d1d2: ; 0xd1d2
|
|
ld a, [hNewlyPressedButtons]
|
|
ld b, a
|
|
ld a, [wda80]
|
|
bit BIT_A_BUTTON, b
|
|
jr z, .asm_d1fc
|
|
inc a
|
|
cp $3
|
|
jr nz, .asm_d202
|
|
lb de, $07, $45
|
|
call PlaySoundEffect
|
|
xor a
|
|
ld [wda7f], a
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ld hl, wRedHighScore1Points
|
|
ld de, $a000
|
|
ld bc, $0082
|
|
call SaveData
|
|
ret
|
|
|
|
.asm_d1fc
|
|
bit 1, b
|
|
ret z
|
|
and a
|
|
ret z
|
|
dec a
|
|
.asm_d202
|
|
ld [wda80], a
|
|
ld a, $20
|
|
ld [wda82], a
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_d211: ; 0xd211
|
|
; related to high scores name entry?
|
|
ld a, [wda7f]
|
|
and a
|
|
ret z
|
|
ld a, [hJoypadState]
|
|
and (D_RIGHT | D_LEFT)
|
|
jr z, .asm_d221
|
|
xor a
|
|
ld [wda82], a
|
|
ret
|
|
|
|
.asm_d221
|
|
ld a, [wda82]
|
|
inc a
|
|
ld [wda82], a
|
|
bit 5, a
|
|
ret z
|
|
ld a, [wda81]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPixelYOffsets_d247
|
|
add hl, de
|
|
ld c, [hl]
|
|
ld a, [wda80]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPixelXOffsets_d24c
|
|
add hl, de
|
|
ld b, [hl]
|
|
ld a, $86
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMPixelYOffsets_d247: ; 0xd247
|
|
db $10, $28, $40, $58, $70
|
|
|
|
OAMPixelXOffsets_d24c: ; 0xd24c
|
|
db $18, $20, $28
|
|
|
|
AnimateHighScoresArrow: ; 0xd24f
|
|
; Handles the animation of the arrow in the bottom
|
|
; corner of the high scores screens.
|
|
ld a, [wHighScoresArrowAnimationCounter]
|
|
inc a
|
|
cp $28
|
|
jr c, .noOverflow
|
|
xor a
|
|
.noOverflow
|
|
ld [wHighScoresArrowAnimationCounter], a
|
|
ld a, [wHighScoresStage]
|
|
and a
|
|
ld c, $77
|
|
ld a, $95
|
|
ld hl, HighScoresRightArrowOAMPixelXOffsets
|
|
jr z, .asm_d26d
|
|
ld a, $96
|
|
ld hl, HighScoresLeftArrowOAMPixelXOffsets
|
|
.asm_d26d
|
|
push af
|
|
ld a, [wHighScoresArrowAnimationCounter]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld b, [hl]
|
|
pop af
|
|
call LoadOAMData
|
|
ret
|
|
|
|
HighScoresRightArrowOAMPixelXOffsets: ; 0xd27b
|
|
; Controls the animation of the right-arrow in the bottom corner of the
|
|
; high scores screen.
|
|
db $87, $87, $8A, $8A, $8A, $8A, $8A, $8A
|
|
db $89, $89, $88, $88, $88, $88, $88, $88
|
|
db $88, $88, $88, $88, $88, $88, $88, $88
|
|
db $88, $88, $88, $88, $88, $88, $88, $88
|
|
db $88, $88, $88, $88, $88, $88, $88, $88
|
|
|
|
HighScoresLeftArrowOAMPixelXOffsets: ; 0xd2a3
|
|
db $02, $02, $FF, $FF, $FF, $FF, $FF, $FF
|
|
db $00, $00, $01, $01, $01, $01, $01, $01
|
|
db $01, $01, $01, $01, $01, $01, $01, $01
|
|
db $01, $01, $01, $01, $01, $01, $01, $01
|
|
db $01, $01, $01, $01, $01, $01, $01, $01
|
|
|
|
Func_d2cb: ; 0xd2cb
|
|
ld b, $5
|
|
.asm_d2cd
|
|
push bc
|
|
push hl
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, l
|
|
add $5
|
|
ld l, a
|
|
ld b, $3
|
|
.asm_d2d9
|
|
ld a, [de]
|
|
call Func_d348
|
|
dec de
|
|
dec hl
|
|
dec b
|
|
jr nz, .asm_d2d9
|
|
pop hl
|
|
push hl
|
|
ld a, l
|
|
add $6
|
|
ld l, a
|
|
ld bc, $0c01
|
|
.asm_d2eb
|
|
ld a, [de]
|
|
swap a
|
|
and $f
|
|
call Func_d30e
|
|
inc hl
|
|
dec b
|
|
ld a, [de]
|
|
and $f
|
|
call Func_d30e
|
|
dec de
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_d2eb
|
|
xor a
|
|
call Func_d317
|
|
pop hl
|
|
ld bc, hSCY
|
|
add hl, bc
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_d2cd
|
|
ret
|
|
|
|
Func_d30e: ; 0xd30e
|
|
jr nz, Func_d317
|
|
ld a, b
|
|
dec a
|
|
jr z, Func_d317
|
|
ld a, c
|
|
and a
|
|
ret nz
|
|
; fall through
|
|
Func_d317: ; 0xd317
|
|
push de
|
|
push af
|
|
call Func_d336
|
|
pop af
|
|
ld c, $0
|
|
sla a
|
|
add e
|
|
ld [hl], a
|
|
cp $fe
|
|
jr z, .asm_d328
|
|
inc a
|
|
.asm_d328
|
|
push hl
|
|
push af
|
|
ld a, l
|
|
add $20
|
|
ld l, a
|
|
jr nc, .asm_d331
|
|
inc h
|
|
.asm_d331
|
|
pop af
|
|
ld [hl], a
|
|
pop hl
|
|
pop de
|
|
ret
|
|
|
|
Func_d336: ; 0xd336
|
|
ld e, $6c
|
|
ld a, b
|
|
cp $3
|
|
ret z
|
|
cp $6
|
|
ret z
|
|
cp $9
|
|
ret z
|
|
cp $c
|
|
ret z
|
|
ld e, $58
|
|
ret
|
|
|
|
Func_d348: ; 0xd348
|
|
ld c, $0
|
|
sla a
|
|
add $90
|
|
ld [hl], a
|
|
cp $fe
|
|
jr z, .asm_d354
|
|
inc a
|
|
.asm_d354
|
|
push hl
|
|
push af
|
|
ld a, l
|
|
add $20
|
|
ld l, a
|
|
jr nc, .asm_d35d
|
|
inc h
|
|
.asm_d35d
|
|
pop af
|
|
ld [hl], a
|
|
pop hl
|
|
ret
|
|
|
|
Func_d361: ; 0xd361
|
|
ld b, $5
|
|
.asm_d363
|
|
push bc
|
|
push hl
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, l
|
|
add $5
|
|
ld l, a
|
|
ld b, $3
|
|
.asm_d36f
|
|
ld a, [de]
|
|
call Func_d3e2
|
|
dec de
|
|
dec hl
|
|
dec b
|
|
jr nz, .asm_d36f
|
|
pop hl
|
|
push hl
|
|
ld a, l
|
|
add $6
|
|
ld l, a
|
|
ld bc, $0c01
|
|
.asm_d381
|
|
ld a, [de]
|
|
swap a
|
|
and $f
|
|
call Func_d3a4
|
|
inc hl
|
|
dec b
|
|
ld a, [de]
|
|
and $f
|
|
call Func_d3a4
|
|
dec de
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_d381
|
|
xor a
|
|
call Func_d3ad
|
|
pop hl
|
|
ld bc, hSCY
|
|
add hl, bc
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_d363
|
|
ret
|
|
|
|
Func_d3a4: ; 0xd3a4
|
|
jr nz, Func_d3ad
|
|
ld a, b
|
|
dec a
|
|
jr z, Func_d3ad
|
|
ld a, c
|
|
and a
|
|
ret nz
|
|
; fall through
|
|
Func_d3ad: ; 0xd3ad
|
|
push de
|
|
push af
|
|
call Func_d3d0
|
|
pop af
|
|
ld c, $0
|
|
sla a
|
|
add e
|
|
call PutTileInVRAM
|
|
cp $fe
|
|
jr z, .asm_d3c0
|
|
inc a
|
|
.asm_d3c0
|
|
push hl
|
|
push af
|
|
ld a, l
|
|
add $20
|
|
ld l, a
|
|
jr nc, .asm_d3c9
|
|
inc h
|
|
.asm_d3c9
|
|
pop af
|
|
call PutTileInVRAM
|
|
pop hl
|
|
pop de
|
|
ret
|
|
|
|
Func_d3d0: ; 0xd3d0
|
|
ld e, $6c
|
|
ld a, b
|
|
cp $3
|
|
ret z
|
|
cp $6
|
|
ret z
|
|
cp $9
|
|
ret z
|
|
cp $c
|
|
ret z
|
|
ld e, $58
|
|
ret
|
|
|
|
Func_d3e2: ; 0xd3e2
|
|
ld c, $0
|
|
sla a
|
|
add $90
|
|
call PutTileInVRAM
|
|
cp $fe
|
|
jr z, .asm_d3f0
|
|
inc a
|
|
.asm_d3f0
|
|
push hl
|
|
push af
|
|
ld a, l
|
|
add $20
|
|
ld l, a
|
|
jr nc, .asm_d3f9
|
|
inc h
|
|
.asm_d3f9
|
|
pop af
|
|
call PutTileInVRAM
|
|
pop hl
|
|
ret
|
|
|
|
CopyInitialHighScores: ; 0xd3ff
|
|
ld hl, InitialHighScores
|
|
ld de, wRedHighScore1Points
|
|
call CopyInitialHighScoresForStage
|
|
ld hl, InitialHighScores
|
|
ld de, wBlueHighScore1Points
|
|
|
|
CopyInitialHighScoresForStage: ; 0xd40e
|
|
; input: hl = address of high score entries
|
|
; de = destination address for high score entries to be copied
|
|
ld b, $5 ; 5 high score entries to copy
|
|
.copyHighScoreEntry
|
|
ld c, $6 ; high score points are 6 bytes long
|
|
.copyPoints
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .copyPoints
|
|
ld c, $3 ; name is 3 bytes
|
|
.copyName
|
|
ld a, [hli]
|
|
sub $37
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .copyName
|
|
ld c, $4
|
|
.asm_d424 ; TODO: what are these 4 bytes used for?
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .asm_d424
|
|
dec b
|
|
jr nz, .copyHighScoreEntry
|
|
ret
|
|
|
|
INCLUDE "data/initial_high_scores.asm" ; 0xd42e
|
|
|
|
Func_d46f: ; 0xd46f
|
|
ld a, [wda81]
|
|
ld d, a
|
|
sla a
|
|
add d
|
|
ld d, a
|
|
ld e, $0
|
|
srl d
|
|
rr e
|
|
srl d
|
|
rr e
|
|
srl d
|
|
rr e
|
|
ld a, [wda80]
|
|
add e
|
|
ld e, a
|
|
hlCoord 3, 2, vBGMap
|
|
ld a, [wHighScoresStage]
|
|
and a
|
|
jr z, .asm_d496
|
|
hlCoord 3, 2, vBGWin
|
|
.asm_d496
|
|
add hl, de
|
|
push hl
|
|
ld a, [wda81]
|
|
ld e, a
|
|
sla e
|
|
sla e
|
|
add e
|
|
sla e
|
|
add e
|
|
ld e, a
|
|
ld a, [wda80]
|
|
add e
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, wRedHighScore1Name
|
|
ld a, [wHighScoresStage]
|
|
and a
|
|
jr z, .asm_d4b8
|
|
ld hl, wBlueHighScore1Name
|
|
.asm_d4b8
|
|
add hl, de
|
|
ld a, [hl]
|
|
sla a
|
|
add $90
|
|
pop hl
|
|
call PutTileInVRAM
|
|
ld de, $0020
|
|
add hl, de
|
|
cp $fe
|
|
jr z, .asm_d4cb
|
|
inc a
|
|
.asm_d4cb
|
|
call PutTileInVRAM
|
|
ret
|
|
|
|
Func_d4cf: ; 0xd4cf
|
|
ld a, [hNewlyPressedButtons]
|
|
ld b, a
|
|
ld a, [wHighScoresStage]
|
|
bit 4, b
|
|
jr z, .asm_d4e3
|
|
and a
|
|
ret nz
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
jr .asm_d4f0
|
|
|
|
.asm_d4e3
|
|
bit 5, b
|
|
ret z
|
|
and a
|
|
ret z
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
jr .asm_d537
|
|
|
|
.asm_d4f0
|
|
call ClearOAMBuffer
|
|
call Func_d57b
|
|
ld a, $a5
|
|
ld [hWX], a
|
|
xor a
|
|
ld [hWY], a
|
|
ld a, $2
|
|
ld [hSCX], a
|
|
ld hl, hLCDC
|
|
set 5, [hl]
|
|
ld b, $27
|
|
.asm_d508
|
|
push bc
|
|
ld a, $27
|
|
sub b
|
|
bit 0, b
|
|
call nz, TransitionHighScoresPalettes
|
|
ld hl, hWX
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
ld hl, hSCX
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
rst AdvanceFrame
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_d508
|
|
xor a
|
|
ld [hSCX], a
|
|
ld hl, hLCDC
|
|
res 5, [hl]
|
|
set 3, [hl]
|
|
ld a, $1
|
|
ld [wHighScoresStage], a
|
|
call Func_d5d0
|
|
ret
|
|
|
|
.asm_d537
|
|
call ClearOAMBuffer
|
|
call Func_d57b
|
|
ld a, $7
|
|
ld [hWX], a
|
|
xor a
|
|
ld [hWY], a
|
|
ld a, $a0
|
|
ld [hSCX], a
|
|
ld hl, hLCDC
|
|
set 5, [hl]
|
|
res 3, [hl]
|
|
ld b, $27
|
|
.asm_d551
|
|
push bc
|
|
ld a, b
|
|
bit 0, b
|
|
call nz, TransitionHighScoresPalettes
|
|
ld hl, hWX
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
ld hl, hSCX
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
rst AdvanceFrame
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_d551
|
|
xor a
|
|
ld [hSCX], a
|
|
ld hl, hLCDC
|
|
res 5, [hl]
|
|
xor a
|
|
ld [wHighScoresStage], a
|
|
call Func_d5d0
|
|
ret
|
|
|
|
Func_d57b: ; 0xd57b
|
|
ld a, $f0
|
|
ld [hSCY], a
|
|
xor a
|
|
ld [hNextFrameHBlankSCX], a
|
|
ld a, $10
|
|
ld [hNextFrameHBlankSCY], a
|
|
rst AdvanceFrame
|
|
ld a, BANK(HighScoresTilemap)
|
|
ld hl, HighScoresTilemap
|
|
deCoord 0, 0, vBGMap
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap)
|
|
ld hl, HighScoresTilemap + $200
|
|
deCoord 0, 16, vBGMap
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap2)
|
|
ld hl, HighScoresTilemap2
|
|
deCoord 0, 0, vBGWin
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap2)
|
|
ld hl, HighScoresTilemap2 + $200
|
|
deCoord 0, 16, vBGWin
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld b, $10
|
|
.asm_d5c1
|
|
push bc
|
|
ld hl, hSCY
|
|
inc [hl]
|
|
ld hl, hNextFrameHBlankSCY
|
|
dec [hl]
|
|
rst AdvanceFrame
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_d5c1
|
|
ret
|
|
|
|
Func_d5d0: ; 0xd5d0
|
|
ld b, $10
|
|
.asm_d5d2
|
|
push bc
|
|
ld hl, hSCY
|
|
dec [hl]
|
|
ld hl, hNextFrameHBlankSCY
|
|
inc [hl]
|
|
rst AdvanceFrame
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_d5d2
|
|
ld a, BANK(HighScoresTilemap)
|
|
ld hl, HighScoresTilemap + $3c0
|
|
deCoord 0, 0, vBGMap
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap)
|
|
ld hl, HighScoresTilemap + $280
|
|
deCoord 0, 16, vBGMap
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap2)
|
|
ld hl, HighScoresTilemap2 + $3c0
|
|
deCoord 0, 0, vBGWin
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld a, BANK(HighScoresTilemap2)
|
|
ld hl, HighScoresTilemap2 + $280
|
|
deCoord 0, 16, vBGWin
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ld bc, $0009
|
|
call Func_d68a
|
|
xor a
|
|
ld [hSCY], a
|
|
ld [hNextFrameHBlankSCX], a
|
|
ld [hNextFrameHBlankSCY], a
|
|
ret
|
|
|
|
TransitionHighScoresPalettes: ; 0xd626
|
|
; When switching between the Red and Blue field high scores, the palettes
|
|
; of the rows smoothly transition between red and blue.
|
|
ld c, a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld a, c
|
|
srl a
|
|
sub $2
|
|
cp $10
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
add c
|
|
ld c, a
|
|
ld hl, HighScoresPalettesTransition
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld h, b
|
|
ld l, c
|
|
ld de, $0008
|
|
ld bc, $0038
|
|
push af
|
|
call Func_7dc
|
|
pop af
|
|
ld de, $0040
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
ret
|
|
|
|
HighScoresPalettesTransition: ; 0xd65a
|
|
; When switching between the Red and Blue field high scores, the palette
|
|
; of the rows fades between red and blue. This table defines the transition
|
|
; of those palettes.
|
|
dwb HighScoresTransitionPalettes1, Bank(HighScoresTransitionPalettes1)
|
|
dwb HighScoresTransitionPalettes2, Bank(HighScoresTransitionPalettes2)
|
|
dwb HighScoresTransitionPalettes3, Bank(HighScoresTransitionPalettes3)
|
|
dwb HighScoresTransitionPalettes4, Bank(HighScoresTransitionPalettes4)
|
|
dwb HighScoresTransitionPalettes5, Bank(HighScoresTransitionPalettes5)
|
|
dwb HighScoresTransitionPalettes6, Bank(HighScoresTransitionPalettes6)
|
|
dwb HighScoresTransitionPalettes7, Bank(HighScoresTransitionPalettes7)
|
|
dwb HighScoresTransitionPalettes8, Bank(HighScoresTransitionPalettes8)
|
|
dwb HighScoresTransitionPalettes9, Bank(HighScoresTransitionPalettes9)
|
|
dwb HighScoresTransitionPalettes10, Bank(HighScoresTransitionPalettes10)
|
|
dwb HighScoresTransitionPalettes11, Bank(HighScoresTransitionPalettes11)
|
|
dwb HighScoresTransitionPalettes12, Bank(HighScoresTransitionPalettes12)
|
|
dwb HighScoresTransitionPalettes13, Bank(HighScoresTransitionPalettes13)
|
|
dwb HighScoresTransitionPalettes14, Bank(HighScoresTransitionPalettes14)
|
|
dwb HighScoresTransitionPalettes15, Bank(HighScoresTransitionPalettes15)
|
|
dwb HighScoresTransitionPalettes16, Bank(HighScoresTransitionPalettes16)
|
|
|
|
Func_d68a: ; 0xd68a
|
|
push bc
|
|
ld hl, wPokedexFlags
|
|
ld bc, (NUM_POKEMON << 8)
|
|
.asm_d691
|
|
bit 1, [hl]
|
|
jr z, .asm_d696
|
|
inc c
|
|
.asm_d696
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_d691
|
|
ld a, c
|
|
pop bc
|
|
cp NUM_POKEMON
|
|
ret nz
|
|
ld hl, vBGMap
|
|
add hl, bc
|
|
call Func_d6aa
|
|
ld hl, vBGWin
|
|
add hl, bc
|
|
; fall through
|
|
Func_d6aa: ; 0xd6aa
|
|
ld a, $56
|
|
call PutTileInVRAM
|
|
inc hl
|
|
ld a, $57
|
|
call PutTileInVRAM
|
|
ret
|
|
|
|
Func_d6b6: ; 0xd6b6
|
|
ld hl, wPokedexFlags
|
|
ld bc, (NUM_POKEMON << 8)
|
|
.asm_d6bc
|
|
bit 1, [hl]
|
|
jr z, .asm_d6c1
|
|
inc c
|
|
.asm_d6c1
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_d6bc
|
|
ld a, c
|
|
cp NUM_POKEMON
|
|
ret nz
|
|
ld hl, wc289
|
|
ld a, $56
|
|
ld [hli], a
|
|
ld a, $57
|
|
ld [hli], a
|
|
ret
|
|
|
|
HandleFieldSelectScreen: ; 0xd6d3
|
|
ld a, [wScreenState]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
FieldSelectScreenFunctions: ; 0xd6d7
|
|
dw LoadFieldSelectScreen
|
|
dw ChooseFieldToPlay
|
|
dw ExitFieldSelectScreen
|
|
|
|
LoadFieldSelectScreen: ; 0xd6dd
|
|
ld a, $43
|
|
ld [hLCDC], a
|
|
ld a, $e4
|
|
ld [wBGP], a
|
|
ld a, $d2
|
|
ld [wOBP0], a
|
|
ld [wOBP1], a
|
|
xor a
|
|
ld [hSCX], a
|
|
ld [hSCY], a
|
|
ld hl, FieldSelectGfxPointers
|
|
ld a, [hGameBoyColorFlag]
|
|
call LoadVideoData
|
|
call ClearOAMBuffer
|
|
ld a, $8
|
|
ld [wFieldSelectBlinkingBorderFrame], a
|
|
call Func_b66
|
|
ld a, $12
|
|
call SetSongBank
|
|
ld de, $0003
|
|
call PlaySong
|
|
call Func_588
|
|
call Func_bbe
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
FieldSelectGfxPointers: ; 0xd71c
|
|
dw FieldSelectGfx_GameBoy
|
|
dw FieldSelectGfx_GameBoyColor
|
|
|
|
FieldSelectGfx_GameBoy: ; 0xd720
|
|
VIDEO_DATA_TILES FieldSelectScreenGfx, vTilesSH - $100, $d00
|
|
VIDEO_DATA_TILEMAP FieldSelectTilemap, vBGMap, $240
|
|
db $FF, $FF ; terminators
|
|
|
|
FieldSelectGfx_GameBoyColor: ; 0xd730
|
|
VIDEO_DATA_TILES FieldSelectScreenGfx, vTilesSH - $100, $d00
|
|
VIDEO_DATA_TILEMAP FieldSelectTilemap, vBGMap, $240
|
|
VIDEO_DATA_BGATTR FieldSelectBGAttributes, vBGMap, $240
|
|
VIDEO_DATA_PALETTES FieldSelectScreenPalettes, $48
|
|
db $FF, $FF ; terminators
|
|
|
|
ChooseFieldToPlay: ; 0xd74e
|
|
call MoveFieldSelectCursor
|
|
ld hl, FieldSelectBorderAnimationData
|
|
call AnimateBlinkingFieldSelectBorder
|
|
ld a, [hNewlyPressedButtons]
|
|
and (A_BUTTON | B_BUTTON)
|
|
ret z
|
|
ld [wd8f6], a
|
|
ld a, $18 ; number of frames to blink the border after selecting the Field
|
|
ld [wFieldSelectBlinkingBorderTimer], a
|
|
ld a, $1
|
|
ld [wFieldSelectBlinkingBorderFrame], a
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
ExitFieldSelectScreen: ; 0xd774
|
|
ld a, [wd8f6] ; this holds the button that was pressed (A or B)
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .didntPressA
|
|
ld hl, FieldSelectConfirmationAnimationData
|
|
call AnimateBlinkingFieldSelectBorder
|
|
ld a, [wFieldSelectBlinkingBorderTimer]
|
|
dec a
|
|
ld [wFieldSelectBlinkingBorderTimer], a
|
|
ret nz
|
|
.didntPressA
|
|
ld a, [hJoypadState]
|
|
push af
|
|
call Func_cb5
|
|
call Func_576
|
|
ld a, [wd8f6]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .pressedB
|
|
ld a, [wSelectedFieldIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, StartingStages
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wCurrentStage], a
|
|
pop af
|
|
xor a
|
|
ld [wd7c2], a
|
|
ld hl, wPartyMons
|
|
ld de, sSaveGame
|
|
ld bc, $04c3
|
|
call SaveData
|
|
xor a
|
|
ld [wd7c1], a
|
|
; Start a round of Pinball! Yayy
|
|
ld a, SCREEN_PINBALL_GAME
|
|
ld [wCurrentScreen], a
|
|
xor a
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
.pressedB
|
|
pop af
|
|
ld a, SCREEN_TITLESCREEN
|
|
ld [wCurrentScreen], a
|
|
xor a
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
StartingStages: ; 0xd7d1
|
|
; wSelectedFieldIndex is used to index this array
|
|
db STAGE_RED_FIELD_BOTTOM, STAGE_BLUE_FIELD_BOTTOM
|
|
|
|
MoveFieldSelectCursor: ; 0xd7d3
|
|
; When the player presses Right or Left, the stage is
|
|
; illuminated with a blinking border. This function keeps tracks
|
|
; of which field is currently selected.
|
|
ld a, [hPressedButtons]
|
|
ld b, a
|
|
ld a, [wSelectedFieldIndex]
|
|
bit BIT_D_LEFT, b
|
|
jr z, .didntPressLeft
|
|
and a
|
|
ret z ; if cursor is already hovering over Red stage, don't do anything
|
|
dec a ; move cursor over Red stage
|
|
ld [wSelectedFieldIndex], a
|
|
lb de, $00, $3c
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.didntPressLeft
|
|
bit BIT_D_RIGHT, b
|
|
ret z
|
|
cp $1
|
|
ret z ; if cursor is already hovering over Blue stage, don't do anything
|
|
inc a ; move cursor over Red stage
|
|
ld [wSelectedFieldIndex], a
|
|
lb de, $00, $3d
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
AnimateBlinkingFieldSelectBorder: ; 0xd7fb
|
|
; This makes the border of the currently-selected Field blink in the Field Select screen.
|
|
push hl
|
|
ld a, [wSelectedFieldIndex]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, FieldSelectBorderOAMPixelOffsetData
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [wd915]
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
pop hl
|
|
push hl
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ld a, [wFieldSelectBlinkingBorderFrame]
|
|
dec a
|
|
jr nz, .asm_d838
|
|
inc hl
|
|
inc hl
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_d82b
|
|
ld a, [wd915]
|
|
inc a
|
|
.asm_d82b
|
|
ld [wd915], a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
pop hl
|
|
push hl
|
|
inc hl
|
|
add hl, bc
|
|
ld a, [hl]
|
|
.asm_d838
|
|
ld [wFieldSelectBlinkingBorderFrame], a
|
|
pop hl
|
|
ret
|
|
|
|
FieldSelectBorderAnimationData:
|
|
; [OAM id][duration]
|
|
db $9e, $08
|
|
db $9f, $08
|
|
db $9e, $08
|
|
db $a0, $08
|
|
db $00 ; terminator
|
|
|
|
FieldSelectConfirmationAnimationData:
|
|
; [OAM id][duration]
|
|
db $9F, $03
|
|
db $A0, $03
|
|
db $9F, $03
|
|
db $A0, $03
|
|
db $00 ; terminator
|
|
|
|
FieldSelectBorderOAMPixelOffsetData:
|
|
dw $2A42
|
|
dw $7242
|
|
|
|
HandlePinballGame: ; 0xd853
|
|
ld a, [wScreenState]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
PinballGameScreenFunctions: ; 0xd857
|
|
dw GameScreenFunction_LoadGFX
|
|
dw GameScreenFunction_StartBall
|
|
dw GameScreenFunction_HandleBallPhysics
|
|
dw GameScreenFunction_HandleBallLoss
|
|
dw GameScreenFunction_EndBall
|
|
|
|
GameScreenFunction_LoadGFX: ; 0xd861
|
|
xor a
|
|
ld [wd908], a
|
|
callba InitializeStage
|
|
call FillBottomMessageBufferWithBlackTile
|
|
ld a, $1
|
|
ld [wd85d], a
|
|
ld [wd4aa], a
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
GameScreenFunction_StartBall: ; 0xd87f
|
|
ld a, $67
|
|
ld [hLCDC], a
|
|
ld a, $e4
|
|
ld [wBGP], a
|
|
ld a, $e1
|
|
ld [wOBP0], a
|
|
ld a, $e4
|
|
ld [wOBP1], a
|
|
ld a, [wSCX]
|
|
ld [hSCX], a
|
|
xor a
|
|
ld [hSCY], a
|
|
ld a, $7
|
|
ld [hWX], a
|
|
ld a, $83
|
|
ld [hLYC], a
|
|
ld [hLastLYC], a
|
|
ld a, $ff
|
|
ld [hLCDCMask], a
|
|
ld hl, hSTAT
|
|
set 6, [hl]
|
|
ld hl, rIE
|
|
set 1, [hl]
|
|
ld a, $1
|
|
ld [hHBlankRoutine], a
|
|
callba StartBallForStage
|
|
callba LoadStageCollisionAttributes
|
|
callba Func_e6c2
|
|
callba Func_ed5e
|
|
call ClearOAMBuffer
|
|
callba Func_84b7
|
|
ld a, [wd849]
|
|
and a
|
|
call nz, Func_e5d
|
|
ld a, $1
|
|
ld [wd4aa], a
|
|
xor a
|
|
ld [wd7c1], a
|
|
call Func_b66
|
|
call Func_588
|
|
call Func_bbe
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
GameScreenFunction_HandleBallPhysics: ; 0xd909
|
|
; main loop for stage logic
|
|
xor a
|
|
ld [wFlipperCollision], a
|
|
ld [wd7eb], a
|
|
call ApplyGravityToBall
|
|
call LimitBallVelocity
|
|
xor a
|
|
ld [wd7e9], a
|
|
call HandleTilts
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, HandleFlippers ; only perform flipper routines on the lower-half of stages
|
|
ld a, [wFlipperCollision]
|
|
and a
|
|
ld a, [wCollisionForceAngle]
|
|
push af
|
|
call CheckObjectCollision ; collision stuff
|
|
pop af
|
|
jr z, .noFlipperCollision
|
|
ld [wCollisionForceAngle], a
|
|
.noFlipperCollision
|
|
call CheckGameObjectCollisions
|
|
call Func_281c ; not collision-related
|
|
ld hl, wKeyConfigMenu
|
|
call IsKeyPressed
|
|
jr z, .didntPressMenuKey
|
|
lb de, $03, $4c
|
|
call PlaySoundEffect
|
|
callba HandleInGameMenu
|
|
jp z, SaveGame
|
|
.didntPressMenuKey
|
|
ld a, [wd7e9] ; check for collision flag
|
|
and a
|
|
jr z, .skip_collision
|
|
call ApplyTiltForces
|
|
call LoadBallVelocity ; bc = x velocity, de = y velocity
|
|
ld a, [wCollisionForceAngle]
|
|
call ApplyCollisionForce
|
|
call ApplyTorque
|
|
ld a, [wFlipperCollision]
|
|
and a
|
|
jr z, .not_flippers_2
|
|
; de -= *wFlipperYForce
|
|
ld hl, wFlipperYForce
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, e
|
|
sub l
|
|
ld e, a
|
|
ld a, d
|
|
sbc h
|
|
ld d, a
|
|
; bc += *wFlipperXForce
|
|
ld hl, wFlipperXForce
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, c
|
|
add l
|
|
ld c, a
|
|
ld a, b
|
|
adc h
|
|
ld b, a
|
|
jr .next
|
|
|
|
.not_flippers_2
|
|
ld a, [wd7f8]
|
|
and a
|
|
jr nz, .skip_collision
|
|
.next
|
|
ld a, [wCollisionForceAngle]
|
|
call NegateAngleAndApplyCollisionForce
|
|
call SetBallVelocity
|
|
.skip_collision
|
|
call MoveBallPosition
|
|
callba CheckStageTransition
|
|
callba Func_84b7
|
|
call Func_33e3
|
|
ld a, [wd5cb]
|
|
and a
|
|
jr nz, .asm_d9e9
|
|
callba Func_85c7
|
|
callba Func_8650
|
|
callba Func_8645
|
|
call Func_dba9
|
|
call Func_dc7c
|
|
call Func_dcb4
|
|
.asm_d9e9
|
|
ld a, [wd57d]
|
|
and a
|
|
callba nz, Func_86a4
|
|
ld a, [wd4ae]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd4ae], a
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
SaveGame: ; 0xda05
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld bc, $0004
|
|
call AdvanceFrames
|
|
call Func_cb5
|
|
ld a, [wd849]
|
|
and a
|
|
call nz, Func_e5d
|
|
call Func_576
|
|
ld hl, hSTAT
|
|
res 6, [hl]
|
|
ld hl, rIE
|
|
res 1, [hl]
|
|
xor a
|
|
ld [wd4aa], a
|
|
ld a, SCREEN_TITLESCREEN
|
|
ld [wCurrentScreen], a
|
|
xor a
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
GameScreenFunction_HandleBallLoss: ; 0xda36
|
|
xor a
|
|
ld [hJoypadState], a
|
|
ld [hNewlyPressedButtons], a
|
|
ld [hPressedButtons], a
|
|
ld [wFlipperCollision], a
|
|
ld [wd7eb], a
|
|
xor a
|
|
ld [wd7e9], a
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
call HandleTilts
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, HandleFlippers
|
|
callba Func_84b7
|
|
call Func_33e3
|
|
callba Func_85c7
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4c9]
|
|
and a
|
|
jr z, .asm_daa9
|
|
ld a, [wd49c]
|
|
cp $2
|
|
jr z, .asm_daa9
|
|
call Func_f533
|
|
ld a, [wd49c]
|
|
and a
|
|
jr z, .asm_daa9
|
|
ld a, $2
|
|
ld [wd49c], a
|
|
ld [wd4aa], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, ShootAgainText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
.asm_daa9
|
|
xor a
|
|
ld [wd49c], a
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
GameScreenFunction_EndBall: ; 0xdab2
|
|
xor a
|
|
ld [wd803], a
|
|
ld a, [wGameOver]
|
|
and a
|
|
jp nz, TransitionToHighScoresScreen
|
|
ld a, [wd495]
|
|
and a
|
|
jr nz, .asm_dae6
|
|
ld a, [wd496]
|
|
and a
|
|
jr nz, .asm_db28
|
|
call Func_cb5
|
|
ld a, [wd849]
|
|
and a
|
|
call z, Func_e5d
|
|
call Func_576
|
|
ld hl, hSTAT
|
|
res 6, [hl]
|
|
ld hl, rIE
|
|
res 1, [hl]
|
|
ld a, $1
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
.asm_dae6
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld bc, $0004
|
|
call AdvanceFrames
|
|
call Func_cb5
|
|
ld a, [wd849]
|
|
and a
|
|
call nz, Func_e5d
|
|
call Func_576
|
|
ld hl, hSTAT
|
|
res 6, [hl]
|
|
ld hl, rIE
|
|
res 1, [hl]
|
|
ld a, [wCurrentStage]
|
|
ld [wd4ad], a
|
|
ld a, [wStageCollisionState]
|
|
ld [wd4b0], a
|
|
ld a, [wd497]
|
|
ld [wCurrentStage], a
|
|
xor a
|
|
ld [wd496], a
|
|
ld [wd495], a
|
|
ld a, $0
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
.asm_db28
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld bc, $0004
|
|
call AdvanceFrames
|
|
call Func_cb5
|
|
ld a, [wd849]
|
|
and a
|
|
call nz, Func_e5d
|
|
call Func_576
|
|
ld hl, hSTAT
|
|
res 6, [hl]
|
|
ld hl, rIE
|
|
res 1, [hl]
|
|
ld a, [wd4ad]
|
|
ld [wCurrentStage], a
|
|
ld a, [wd4b0]
|
|
ld [wStageCollisionState], a
|
|
ld a, $1
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
TransitionToHighScoresScreen: ; 0xdb5d
|
|
xor a
|
|
ld [wGameOver], a
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld bc, $0004
|
|
call AdvanceFrames
|
|
call Func_cb5
|
|
call Func_576
|
|
ld hl, hSTAT
|
|
res 6, [hl]
|
|
ld hl, rIE
|
|
res 1, [hl]
|
|
xor a
|
|
ld [wd4aa], a
|
|
ld a, [wCurrentStage]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, HighScoresStageMapping
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wHighScoresStage], a
|
|
ld a, SCREEN_HIGH_SCORES
|
|
ld [wCurrentScreen], a
|
|
xor a
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
HighScoresStageMapping: ; 0xdb99
|
|
; Determines which stage the high scores screen will start in,
|
|
; based on the map the player ended in.
|
|
; See wHighScoresStage for more info.
|
|
db $00 ; STAGE_RED_FIELD_TOP
|
|
db $00 ; STAGE_RED_FIELD_BOTTOM
|
|
db $00
|
|
db $00
|
|
db $01 ; STAGE_BLUE_FIELD_TOP
|
|
db $01 ; STAGE_BLUE_FIELD_BOTTOM
|
|
db $00 ; STAGE_GENGAR_BONUS
|
|
db $00 ; STAGE_GENGAR_BONUS
|
|
db $00 ; STAGE_MEWTWO_BONUS
|
|
db $00 ; STAGE_MEWTWO_BONUS
|
|
db $00 ; STAGE_MEOWTH_BONUS
|
|
db $00 ; STAGE_MEOWTH_BONUS
|
|
db $00 ; STAGE_DIGLETT_BONUS
|
|
db $00 ; STAGE_DIGLETT_BONUS
|
|
db $00 ; STAGE_SEEL_BONUS
|
|
db $00 ; STAGE_SEEL_BONUS
|
|
|
|
Func_dba9: ; 0xdba9
|
|
ld a, $85
|
|
ld [wBottomMessageBuffer + $44], a
|
|
ld a, [wd49d]
|
|
xor $3
|
|
inc a
|
|
add $86
|
|
ld [wBottomMessageBuffer + $45], a
|
|
ret
|
|
|
|
Start20SecondSaverTimer: ; 0xdbba
|
|
ld a, $1
|
|
ld [wBallSaverIconOn], a
|
|
ld a, $ff
|
|
ld [wd4a2], a
|
|
ld a, 59
|
|
ld [wBallSaverTimerFrames], a
|
|
ld a, 20
|
|
ld [wBallSaverTimerSeconds], a
|
|
ld a, $2
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
ret
|
|
|
|
InitBallSaverForCatchEmMode: ; 0xdbd4
|
|
ld a, [wBallSaverTimerFrames]
|
|
ld [wBallSaverTimerFramesBackup], a
|
|
ld a, [wBallSaverTimerSeconds]
|
|
ld [wBallSaverTimerSecondsBackup], a
|
|
ld a, [wNumTimesBallSavedTextWillDisplay]
|
|
ld [wd4a8], a
|
|
ld a, $0
|
|
ld [wBallSaverIconOn], a
|
|
ld a, $ff
|
|
ld [wd4a2], a
|
|
ld a, 59
|
|
ld [wBallSaverTimerFrames], a
|
|
ld a, 60
|
|
ld [wBallSaverTimerSeconds], a
|
|
ld a, $ff
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
ret
|
|
|
|
RestoreBallSaverAfterCatchEmMode: ; 0xdc00
|
|
ld a, [wBallSaverTimerFramesBackup]
|
|
ld [wBallSaverTimerFrames], a
|
|
ld a, [wBallSaverTimerSecondsBackup]
|
|
ld [wBallSaverTimerSeconds], a
|
|
ld a, [wd4a8]
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
ld a, [wBallSaverTimerSeconds]
|
|
and a
|
|
jr z, .asm_dc1a
|
|
ld a, $1
|
|
.asm_dc1a
|
|
ld [wBallSaverIconOn], a
|
|
ld a, [wBallSaverTimerSeconds]
|
|
ld c, $0
|
|
cp $2
|
|
jr c, .asm_dc34
|
|
ld c, $4
|
|
cp $6
|
|
jr c, .asm_dc34
|
|
ld c, $10
|
|
cp $b
|
|
jr c, .asm_dc34
|
|
ld c, $ff
|
|
.asm_dc34
|
|
ld a, c
|
|
ld [wd4a2], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_14707
|
|
ret
|
|
|
|
HandleBallLoss: ; 0xdc49
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_dc4d: ; 0xdc4d
|
|
; STAGE_RED_FIELD_TOP
|
|
dw RedField_HandleBallLoss
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw RedField_HandleBallLoss
|
|
dw Func_de4e
|
|
dw Func_de4e
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw BlueField_HandleBallLoss
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw BlueField_HandleBallLoss
|
|
; STAGE_GENGAR_BONUS
|
|
dw Func_df1a
|
|
; STAGE_GENGAR_BONUS
|
|
dw Func_df1a
|
|
; STAGE_MEWTWO_BONUS
|
|
dw Func_df7e
|
|
; STAGE_MEWTWO_BONUS
|
|
dw Func_df7e
|
|
; STAGE_MEOWTH_BONUS
|
|
dw Func_dfe2
|
|
; STAGE_MEOWTH_BONUS
|
|
dw Func_dfe2
|
|
; STAGE_DIGLETT_BONUS
|
|
dw Func_e056
|
|
; STAGE_DIGLETT_BONUS
|
|
dw Func_e056
|
|
; STAGE_SEEL_BONUS
|
|
dw Func_e08b
|
|
; STAGE_SEEL_BONUS
|
|
dw Func_e08b
|
|
|
|
Func_dc6d: ; 0xdc6d
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
pop de
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_dc7c: ; 0xdc7c
|
|
ld hl, wBottomMessageBuffer + $40
|
|
ld a, $83
|
|
ld [hli], a
|
|
ld a, $81
|
|
ld [hli], a
|
|
ld a, $81
|
|
ld [hl], a
|
|
ld a, [wNumPartyMons]
|
|
call ConvertHexByteToDecWord
|
|
ld hl, wBottomMessageBuffer + $41
|
|
ld c, $1
|
|
ld a, d
|
|
call .asm_dca0
|
|
ld a, e
|
|
swap a
|
|
call .asm_dca0
|
|
ld a, e
|
|
ld c, $0
|
|
.asm_dca0
|
|
and $f
|
|
jr nz, .asm_dca7
|
|
ld a, c
|
|
and a
|
|
ret nz
|
|
.asm_dca7
|
|
ld c, $0
|
|
add $86
|
|
ld [hli], a
|
|
ret
|
|
|
|
Data_dcad:
|
|
; BCD powers of 2
|
|
db $01, $02, $04, $08, $16, $32, $64
|
|
|
|
Func_dcb4: ; 0xdcb4
|
|
ld a, [wd517]
|
|
cp $f
|
|
ld a, $81
|
|
jr nz, .asm_dcbf
|
|
ld a, $84
|
|
.asm_dcbf
|
|
ld [wBottomMessageBuffer + $46], a
|
|
ret
|
|
|
|
LoadBallGfx: ; 0xdcc3
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld a, [wBallType]
|
|
cp GREAT_BALL
|
|
jr nc, .notPokeBall
|
|
ld a, Bank(PinballPokeballGfx)
|
|
ld hl, PinballPokeballGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.notPokeBall
|
|
cp ULTRA_BALL
|
|
jr nc, .notGreatBall
|
|
ld a, Bank(PinballGreatballGfx)
|
|
ld hl, PinballGreatballGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.notGreatBall
|
|
cp MASTER_BALL
|
|
jr nc, .notUltraBall
|
|
ld a, Bank(PinballUltraballGfx)
|
|
ld hl, PinballUltraballGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.notUltraBall
|
|
ld a, Bank(PinballMasterballGfx)
|
|
ld hl, PinballMasterballGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
LoadMiniBallGfx: ; 0xdd12
|
|
ld a, $1
|
|
ld [wd4c8], a
|
|
ld a, [wBallType]
|
|
cp GREAT_BALL
|
|
jr nc, .notPokeBall
|
|
ld a, Bank(PinballPokeballMiniGfx)
|
|
ld hl, PinballPokeballMiniGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.notPokeBall
|
|
cp ULTRA_BALL
|
|
jr nc, .notGreatBall
|
|
ld a, Bank(PinballGreatballMiniGfx)
|
|
ld hl, PinballGreatballMiniGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.notGreatBall
|
|
cp MASTER_BALL
|
|
jr nc, .notUltraBall
|
|
ld a, Bank(PinballUltraballMiniGfx)
|
|
ld hl, PinballUltraballMiniGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.notUltraBall
|
|
ld a, Bank(PinballMasterballMiniGfx)
|
|
ld hl, PinballMasterballMiniGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
Func_dd62: ; 0xdd62
|
|
ld a, $2
|
|
ld [wd4c8], a
|
|
ld a, $2a
|
|
ld hl, PinballBallMiniGfx
|
|
ld de, vTilesOB tile $40
|
|
ld bc, $0200
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
RedField_HandleBallLoss: ; 0xdd76
|
|
ld a, [wBallSaverTimerFrames]
|
|
ld hl, wBallSaverTimerSeconds
|
|
or [hl]
|
|
jr z, .rip
|
|
ld a, [wNumTimesBallSavedTextWillDisplay]
|
|
bit 7, a
|
|
jr nz, .skip_save_text
|
|
dec a
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
push af
|
|
ld de, BallSavedText
|
|
call Func_dc6d
|
|
pop af
|
|
jr nz, .skip_save_text
|
|
ld a, $1
|
|
ld [wBallSaverTimerFrames], a
|
|
ld [wBallSaverTimerSeconds], a
|
|
.skip_save_text
|
|
lb de, $15, $02
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.rip
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld bc, $001e
|
|
call AdvanceFrames
|
|
lb de, $25, $24
|
|
call PlaySoundEffect
|
|
call Start20SecondSaverTimer
|
|
ld a, $1
|
|
ld [wd4c9], a
|
|
xor a
|
|
ld [wd4de], a
|
|
ld [wd4df], a
|
|
call Func_ddfd
|
|
ld a, [wd49b]
|
|
and a
|
|
jr z, .asm_dddd
|
|
dec a
|
|
ld [wd49b], a
|
|
ld a, $1
|
|
ld [wd49c], a
|
|
ld de, EndOfBallBonusText
|
|
call Func_dc6d
|
|
ret
|
|
|
|
.asm_dddd
|
|
ld a, [wd49d]
|
|
ld hl, wd49e
|
|
cp [hl]
|
|
jr z, .asm_ddf1
|
|
inc a
|
|
ld [wd49d], a
|
|
ld de, EndOfBallBonusText
|
|
call Func_dc6d
|
|
ret
|
|
|
|
.asm_ddf1
|
|
ld de, EndOfBallBonusText
|
|
call Func_dc6d
|
|
ld a, $1
|
|
ld [wGameOver], a
|
|
ret
|
|
|
|
Func_ddfd: ; 0xddfd
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
jr nz, .asm_de14
|
|
callba Func_10157
|
|
jr .asm_de40
|
|
|
|
.asm_de14
|
|
cp $1
|
|
jr nz, .asm_de2d
|
|
xor a
|
|
ld [wd604], a
|
|
ld a, $1e
|
|
ld [wd607], a
|
|
callba Func_10ac8
|
|
jr .asm_de40
|
|
|
|
.asm_de2d
|
|
xor a
|
|
ld [wd604], a
|
|
ld a, $1e
|
|
ld [wd607], a
|
|
callba Func_3022b
|
|
.asm_de40
|
|
ld a, [wd7ad]
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
and $1
|
|
or c
|
|
ld [wStageCollisionState], a
|
|
ret
|
|
|
|
Func_de4e: ; 0xde4e
|
|
ret
|
|
|
|
BlueField_HandleBallLoss: ; 0xde4f
|
|
ld a, [wBallSaverTimerFrames]
|
|
ld hl, wBallSaverTimerSeconds
|
|
or [hl]
|
|
jr z, .rip
|
|
ld a, [wNumTimesBallSavedTextWillDisplay]
|
|
bit 7, a
|
|
jr nz, .skip_save_text
|
|
dec a
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
push af
|
|
ld de, BallSavedText
|
|
call Func_dc6d
|
|
pop af
|
|
jr nz, .skip_save_text
|
|
ld a, $1
|
|
ld [wBallSaverTimerFrames], a
|
|
ld [wBallSaverTimerSeconds], a
|
|
.skip_save_text
|
|
lb de, $15, $02
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.rip
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld bc, $001e
|
|
call AdvanceFrames
|
|
lb de, $25, $24
|
|
call PlaySoundEffect
|
|
call Start20SecondSaverTimer
|
|
ld a, $1
|
|
ld [wd4c9], a
|
|
xor a
|
|
ld [wd4de], a
|
|
ld [wd4df], a
|
|
call Func_ded6
|
|
ld a, [wd49b]
|
|
and a
|
|
jr z, .asm_deb6
|
|
dec a
|
|
ld [wd49b], a
|
|
ld a, $1
|
|
ld [wd49c], a
|
|
ld de, EndOfBallBonusText
|
|
call Func_dc6d
|
|
ret
|
|
|
|
.asm_deb6
|
|
ld a, [wd49d]
|
|
ld hl, wd49e
|
|
cp [hl]
|
|
jr z, .asm_deca
|
|
inc a
|
|
ld [wd49d], a
|
|
ld de, EndOfBallBonusText
|
|
call Func_dc6d
|
|
ret
|
|
|
|
.asm_deca
|
|
ld de, EndOfBallBonusText
|
|
call Func_dc6d
|
|
ld a, $1
|
|
ld [wGameOver], a
|
|
ret
|
|
|
|
Func_ded6: ; 0xded6
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
jr nz, .asm_deec
|
|
callba Func_10157
|
|
ret
|
|
|
|
.asm_deec
|
|
cp $1
|
|
jr nz, .asm_df05
|
|
ld a, $0
|
|
ld [wd604], a
|
|
ld a, $1e
|
|
ld [wd607], a
|
|
callba Func_10ac8
|
|
ret
|
|
|
|
.asm_df05
|
|
ld a, $0
|
|
ld [wd604], a
|
|
ld a, $1e
|
|
ld [wd607], a
|
|
callba Func_3022b
|
|
ret
|
|
|
|
Func_df1a: ; 0xdf1a
|
|
ld a, [wd4ad]
|
|
ld hl, wCurrentStage
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd6a8]
|
|
and a
|
|
jr nz, .asm_df57
|
|
ld a, [wd6a2]
|
|
cp $5
|
|
jr c, .asm_df50
|
|
xor a
|
|
ld [wd4ae], a
|
|
ld a, [wd6a7]
|
|
and a
|
|
ret nz
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ld hl, wBallXVelocity
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [wd6a7], a
|
|
.asm_df50
|
|
lb de, $00, $02
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_df57
|
|
xor a
|
|
ld [wd495], a
|
|
ld a, $1
|
|
ld [wd496], a
|
|
ld a, $2
|
|
ld [wd4c8], a
|
|
xor a
|
|
ld [wd7ac], a
|
|
ld a, [wd49a]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, EndGengarStageText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_df7e: ; 0xdf7e
|
|
ld a, [wd4ad]
|
|
ld hl, wCurrentStage
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd6b3]
|
|
and a
|
|
jr nz, .asm_dfbb
|
|
ld a, [wd6b1]
|
|
cp $8
|
|
jr c, .asm_dfb4
|
|
xor a
|
|
ld [wd4ae], a
|
|
ld a, [wd6b2]
|
|
and a
|
|
ret nz
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ld hl, wBallXVelocity
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [wd6b2], a
|
|
.asm_dfb4
|
|
lb de, $00, $0b
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_dfbb
|
|
xor a
|
|
ld [wd495], a
|
|
ld a, $1
|
|
ld [wd496], a
|
|
ld a, $2
|
|
ld [wd4c8], a
|
|
xor a
|
|
ld [wd7ac], a
|
|
ld a, [wd49a]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, EndMewtwoStageText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_dfe2: ; 0xdfe2
|
|
xor a
|
|
ld [wd64e], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jr z, .asm_dff2
|
|
ld a, [wd49a]
|
|
and a
|
|
jr z, .asm_e00f
|
|
.asm_dff2
|
|
ld a, [wMeowthStageScore]
|
|
cp $14
|
|
jr nc, .asm_e00f
|
|
cp $5
|
|
jr c, .asm_e001
|
|
sub $4
|
|
jr .asm_e002
|
|
|
|
.asm_e001
|
|
xor a
|
|
.asm_e002
|
|
ld [wMeowthStageScore], a
|
|
callba Func_24fa3
|
|
.asm_e00f
|
|
ld a, [wd4ad]
|
|
ld hl, wCurrentStage
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd712]
|
|
cp $0
|
|
jr nz, .asm_e025
|
|
lb de, $00, $02
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_e025
|
|
xor a
|
|
ld [wd57e], a
|
|
ld [wd57d], a
|
|
xor a
|
|
ld [wd495], a
|
|
ld a, $1
|
|
ld [wd496], a
|
|
ld a, $2
|
|
ld [wd4c8], a
|
|
xor a
|
|
ld [wd7ac], a
|
|
ld [wd712], a
|
|
ld a, [wd49a]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, EndMeowthStageText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_e056: ; 0xe056
|
|
ld a, [wd4ad]
|
|
ld hl, wCurrentStage
|
|
cp [hl]
|
|
ret z
|
|
lb de, $00, $0b
|
|
call PlaySoundEffect
|
|
xor a
|
|
ld [wd495], a
|
|
ld a, $1
|
|
ld [wd496], a
|
|
ld a, $2
|
|
ld [wd4c8], a
|
|
xor a
|
|
ld [wd7ac], a
|
|
ld a, [wd49a]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, EndDiglettStageText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_e08b: ; 0xe08b
|
|
xor a
|
|
ld [wd64e], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jr z, .asm_e09b
|
|
ld a, [wd49a]
|
|
and a
|
|
jr z, .asm_e0b8
|
|
.asm_e09b
|
|
ld a, [wd793]
|
|
cp $14
|
|
jr nc, .asm_e0b8
|
|
cp $5
|
|
jr c, .asm_e0aa
|
|
sub $4
|
|
jr .asm_e0ab
|
|
|
|
.asm_e0aa
|
|
xor a
|
|
.asm_e0ab
|
|
ld [wd793], a
|
|
callba Func_262f4
|
|
.asm_e0b8
|
|
ld a, [wd4ad]
|
|
ld hl, wCurrentStage
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd794]
|
|
cp $0
|
|
jr nz, .asm_e0c8
|
|
ret
|
|
|
|
.asm_e0c8
|
|
lb de, $00, $02
|
|
call PlaySoundEffect
|
|
xor a
|
|
ld [wd57d], a
|
|
ld [wd57d], a
|
|
ld [wd495], a
|
|
ld a, $1
|
|
ld [wd496], a
|
|
ld a, $2
|
|
ld [wd4c8], a
|
|
xor a
|
|
ld [wd7ac], a
|
|
ld [wd794], a
|
|
ld a, [wd49a]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, EndSeelStageText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
HandleFlippers: ; 0xe0fe
|
|
xor a
|
|
ld [wFlipperCollision], a
|
|
ld [hFlipperYCollisionAttribute], a
|
|
ld [wFlipperXForce], a
|
|
ld [wFlipperXForce + 1], a
|
|
call Func_e118
|
|
call CheckFlipperCollision
|
|
ld a, [wFlipperCollision]
|
|
and a
|
|
call nz, HandleFlipperCollision
|
|
ret
|
|
|
|
Func_e118: ; 0xe118
|
|
call PlayFlipperSoundIfPressed
|
|
ld a, [wd7af]
|
|
ld [wLeftFlipperAnimationState], a
|
|
ld a, [wd7b3]
|
|
ld [wRightFlipperAnimationState], a
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed2
|
|
ld hl, -$0333
|
|
jr z, .asm_e13b
|
|
ld a, [wd7be]
|
|
and a
|
|
jr nz, .asm_e13b
|
|
ld hl, $0333
|
|
.asm_e13b
|
|
ld a, [wd7af]
|
|
and a
|
|
jr nz, .asm_e145
|
|
bit 7, h
|
|
jr nz, .asm_e14d
|
|
.asm_e145
|
|
cp $f
|
|
jr nz, .asm_e150
|
|
bit 7, h
|
|
jr nz, .asm_e150
|
|
.asm_e14d
|
|
ld hl, $0000
|
|
.asm_e150
|
|
ld a, l
|
|
ld [wd7b0], a
|
|
ld a, h
|
|
ld [wd7b1], a
|
|
ld a, [wd7ae]
|
|
ld c, a
|
|
ld a, [wd7af]
|
|
ld b, a
|
|
add hl, bc
|
|
bit 7, h
|
|
jr nz, .asm_e16f
|
|
ld a, h
|
|
cp $10
|
|
jr c, .asm_e172
|
|
ld hl, $0f00
|
|
jr .asm_e172
|
|
|
|
.asm_e16f
|
|
ld hl, $0000
|
|
.asm_e172
|
|
ld a, l
|
|
ld [wd7ae], a
|
|
ld a, h
|
|
ld [wd7af], a
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed2
|
|
ld hl, -$0333
|
|
jr z, .asm_e18e
|
|
ld a, [wd7be]
|
|
and a
|
|
jr nz, .asm_e18e
|
|
ld hl, $0333
|
|
.asm_e18e
|
|
ld a, [wd7b3]
|
|
and a
|
|
jr nz, .asm_e198
|
|
bit 7, h
|
|
jr nz, .asm_e1a0
|
|
.asm_e198
|
|
cp $f
|
|
jr nz, .asm_e1a3
|
|
bit 7, h
|
|
jr nz, .asm_e1a3
|
|
.asm_e1a0
|
|
ld hl, $0000
|
|
.asm_e1a3
|
|
ld a, l
|
|
ld [wd7b4], a
|
|
ld a, h
|
|
ld [wd7b5], a
|
|
ld a, [wd7b2]
|
|
ld c, a
|
|
ld a, [wd7b3]
|
|
ld b, a
|
|
add hl, bc
|
|
bit 7, h
|
|
jr nz, .asm_e1c2
|
|
ld a, h
|
|
cp $10
|
|
jr c, .asm_e1c5
|
|
ld hl, $0f00
|
|
jr .asm_e1c5
|
|
|
|
.asm_e1c2
|
|
ld hl, $0000
|
|
.asm_e1c5
|
|
ld a, l
|
|
ld [wd7b2], a
|
|
ld a, h
|
|
ld [wd7b3], a
|
|
ret
|
|
|
|
PlayFlipperSoundIfPressed: ; 0xe1ce
|
|
ld a, [wd7be]
|
|
and a
|
|
ret nz
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed
|
|
jr z, .asm_e1e2
|
|
lb de, $00, $0c
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_e1e2
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed
|
|
ret z
|
|
lb de, $00, $0c
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
CheckFlipperCollision: ; 0xe1f0
|
|
ld a, [wBallXPos + 1]
|
|
cp $50 ; which half of the screen is the ball in?
|
|
jp nc, CheckRightFlipperCollision ; right half of screen
|
|
; fall through
|
|
CheckLeftFlipperCollision:
|
|
ld hl, wBallXPos
|
|
ld c, $ba
|
|
ld a, [hli]
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [hli]
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [hli]
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [hli]
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [wLeftFlipperAnimationState]
|
|
ld [$ffc2], a
|
|
ld a, [wd7af]
|
|
ld [$ffc3], a
|
|
call ReadFlipperCollisionAttributes
|
|
ld a, [wFlipperCollision]
|
|
and a
|
|
ret z
|
|
ld a, [wd7b0]
|
|
ld [$ffc0], a
|
|
ld a, [wd7b1]
|
|
ld [$ffc1], a
|
|
ret
|
|
|
|
CheckRightFlipperCollision: ; 0xe226
|
|
; ball is in right half of screen
|
|
ld hl, wBallXPos
|
|
ld c, $ba
|
|
ld a, [hli]
|
|
sub $1
|
|
cpl
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [hli]
|
|
sbc $a0
|
|
cpl
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [hli]
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [hli]
|
|
ld [$ff00+c], a
|
|
inc c
|
|
ld a, [wRightFlipperAnimationState]
|
|
ld [$ffc2], a
|
|
ld a, [wd7b3]
|
|
ld [$ffc3], a
|
|
call ReadFlipperCollisionAttributes
|
|
ld a, [wFlipperCollision]
|
|
and a
|
|
ret z
|
|
; collision with flipper occurred
|
|
ld a, [wd7b4]
|
|
ld [$ffc0], a
|
|
ld a, [wd7b5]
|
|
ld [$ffc1], a
|
|
ret
|
|
|
|
ReadFlipperCollisionAttributes: ; 0xe25a
|
|
ld a, [$ffbb] ; ball x-position high byte
|
|
sub $2b ; check if ball is in x-position range of flippers
|
|
ret c
|
|
cp $30
|
|
ret nc
|
|
; ball is in x-position range of flippers
|
|
ld [$ffbb], a ; x offset of flipper horizontal range
|
|
ld a, [$ffbd] ; ball y-position high byte
|
|
sub $7b ; check if ball is in y-position range of flippers
|
|
ret c
|
|
cp $20
|
|
ret nc
|
|
; ball is in potential collision with flippers
|
|
ld [$ffbd], a ; y offset of flipper vertical range
|
|
ld a, [$ffc2] ; flipper animation state
|
|
.asm_e270
|
|
push af
|
|
ld l, $0
|
|
ld h, a ; multiply a by 0x600
|
|
sla a
|
|
sla h
|
|
sla h
|
|
add h
|
|
ld h, a ; hl = a * 0x600 (this is the length of the flipper collision attributes)
|
|
ld a, [$ffbb] ; x offset of flipper horizontal range
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b ; bc = (x offset of flipper horizontal range) * 32
|
|
; Each row of the flipper collision attributes is 32 bytes long.
|
|
add hl, bc ; hl points to the start of the row in the flipper collisoin attributes
|
|
ld a, [$ffbd] ; y offset of flipper vertical range
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc ; hl points to the attribute byte in the flipper collision attributes
|
|
ld d, h
|
|
ld e, l ; de points to the attribute byte in the flipper collision attributes
|
|
ld a, h
|
|
cp $40
|
|
jr nc, .secondBank
|
|
add $40
|
|
ld h, a
|
|
ld a, Bank(FlipperHorizontalCollisionAttributes)
|
|
jr .readAttributeByte
|
|
|
|
.secondBank
|
|
ld a, Bank(FlipperHorizontalCollisionAttributes2)
|
|
.readAttributeByte
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
and a
|
|
jr nz, .collision
|
|
; no collision
|
|
pop af ; a = flipper animation state(?)
|
|
ld hl, $ffc3
|
|
cp [hl]
|
|
ret z
|
|
jr c, .asm_e2be
|
|
dec a
|
|
jr .asm_e270
|
|
|
|
.asm_e2be
|
|
inc a
|
|
jr .asm_e270
|
|
|
|
.collision
|
|
pop af ; a = flipper animation state(?)
|
|
ld a, b ; a = collision attribute
|
|
ld [hFlipperYCollisionAttribute], a
|
|
ld h, d
|
|
ld l, e
|
|
ld a, h
|
|
cp $20
|
|
jr nc, .asm_e2d3
|
|
add $60
|
|
ld h, a
|
|
ld a, Bank(FlipperVerticalCollisionAttributes)
|
|
jr .asm_e2d8
|
|
|
|
.asm_e2d3
|
|
add $20
|
|
ld h, a
|
|
ld a, Bank(FlipperVerticalCollisionAttributes2)
|
|
.asm_e2d8
|
|
call ReadByteFromBank
|
|
ld [wFlipperXCollisionAttribute], a
|
|
ld a, $1
|
|
ld [wFlipperCollision], a
|
|
ret
|
|
|
|
Func_e2e4:
|
|
ld a, c
|
|
or b
|
|
or l
|
|
or h
|
|
or e
|
|
or d
|
|
jr nz, .asm_e2f3
|
|
ld a, [$ffba]
|
|
ld e, a
|
|
ld a, [$ffbb]
|
|
ld d, a
|
|
ret
|
|
|
|
.asm_e2f3
|
|
ld a, d
|
|
xor h
|
|
push af
|
|
bit 7, d
|
|
jr z, .asm_e301
|
|
ld a, e
|
|
cpl
|
|
ld e, a
|
|
ld a, d
|
|
cpl
|
|
ld d, a
|
|
inc de
|
|
.asm_e301
|
|
bit 7, h
|
|
jr z, .asm_e317
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc bc
|
|
ld a, b
|
|
or c
|
|
jr nz, .asm_e317
|
|
inc hl
|
|
.asm_e317
|
|
push bc
|
|
ld c, $11
|
|
ld a, d
|
|
or e
|
|
jr nz, .asm_e324
|
|
pop bc
|
|
ld de, $7fff
|
|
jr .asm_e36a
|
|
|
|
.asm_e324
|
|
bit 7, d
|
|
jr nz, .asm_e32f
|
|
sla e
|
|
rl d
|
|
inc c
|
|
jr .asm_e324
|
|
|
|
.asm_e32f
|
|
ld a, c
|
|
ld [$ff8c], a
|
|
pop bc
|
|
xor a
|
|
ld [$ff8d], a
|
|
ld [$ff8e], a
|
|
.asm_e338
|
|
jr c, .asm_e344
|
|
ld a, d
|
|
cp h
|
|
jr nz, .asm_e342
|
|
ld a, e
|
|
cp l
|
|
jr z, .asm_e344
|
|
.asm_e342
|
|
jr nc, .asm_e34b
|
|
.asm_e344
|
|
ld a, l
|
|
sub e
|
|
ld l, a
|
|
ld a, h
|
|
sbc d
|
|
ld h, a
|
|
scf
|
|
.asm_e34b
|
|
ld a, [$ff8d]
|
|
rla
|
|
ld [$ff8d], a
|
|
ld a, [$ff8e]
|
|
rla
|
|
ld [$ff8e], a
|
|
sla c
|
|
rl b
|
|
rl l
|
|
rl h
|
|
ld a, [$ff8c]
|
|
dec a
|
|
ld [$ff8c], a
|
|
jr nz, .asm_e338
|
|
ld a, [$ff8d]
|
|
ld e, a
|
|
ld a, [$ff8e]
|
|
ld d, a
|
|
.asm_e36a
|
|
pop af
|
|
bit 7, a
|
|
ret z
|
|
ld a, e
|
|
sub $1
|
|
cpl
|
|
ld e, a
|
|
ld a, d
|
|
sbc $0
|
|
cpl
|
|
ld d, a
|
|
ret
|
|
|
|
Func_e379: ; 0xe379
|
|
ld a, b
|
|
xor d
|
|
ld [$ffbe], a
|
|
bit 7, b
|
|
jr z, .asm_e388
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_e388
|
|
bit 7, d
|
|
jr z, .asm_e393
|
|
ld a, e
|
|
cpl
|
|
ld e, a
|
|
ld a, d
|
|
cpl
|
|
ld d, a
|
|
inc de
|
|
.asm_e393
|
|
push bc
|
|
push de
|
|
ld c, d
|
|
call Func_e410
|
|
pop de
|
|
pop bc
|
|
push hl
|
|
push bc
|
|
push de
|
|
ld c, e
|
|
call Func_e410
|
|
pop de
|
|
pop bc
|
|
push hl
|
|
push bc
|
|
push de
|
|
ld b, d
|
|
call Func_e410
|
|
pop de
|
|
pop bc
|
|
push hl
|
|
ld b, e
|
|
call Func_e410
|
|
ld c, l
|
|
ld l, h
|
|
xor a
|
|
ld h, a
|
|
pop de
|
|
add hl, de
|
|
rl a
|
|
pop de
|
|
add hl, de
|
|
jr nc, .asm_e3bf
|
|
inc a
|
|
.asm_e3bf
|
|
ld b, l
|
|
Data_e3c0:
|
|
ld l, h
|
|
ld h, a
|
|
pop de
|
|
add hl, de
|
|
ld a, [$ffbe]
|
|
bit 7, a
|
|
ret z
|
|
ld a, c
|
|
sub $1
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
sbc $0
|
|
cpl
|
|
ld b, a
|
|
ld a, l
|
|
sbc $0
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
sbc $0
|
|
cpl
|
|
ld h, a
|
|
ret
|
|
|
|
Func_e3de:
|
|
push bc
|
|
push de
|
|
ld c, d
|
|
call Func_e410
|
|
pop de
|
|
pop bc
|
|
push hl
|
|
push bc
|
|
push de
|
|
ld c, e
|
|
call Func_e410
|
|
pop de
|
|
pop bc
|
|
push hl
|
|
push bc
|
|
push de
|
|
ld b, d
|
|
call Func_e410
|
|
pop de
|
|
pop bc
|
|
push hl
|
|
ld b, e
|
|
call Func_e410
|
|
ld c, l
|
|
ld l, h
|
|
xor a
|
|
ld h, a
|
|
pop de
|
|
add hl, de
|
|
rl a
|
|
pop de
|
|
add hl, de
|
|
jr nc, .asm_e40a
|
|
inc a
|
|
.asm_e40a
|
|
ld b, l
|
|
ld l, h
|
|
ld h, a
|
|
pop de
|
|
add hl, de
|
|
ret
|
|
|
|
Func_e410: ; 0xe410
|
|
ld a, b
|
|
cp c
|
|
jr nc, .asm_e416
|
|
ld b, c
|
|
ld c, a
|
|
.asm_e416
|
|
ld h, $3e
|
|
ld l, c
|
|
ld e, [hl]
|
|
inc h
|
|
ld d, [hl]
|
|
ld l, b
|
|
ld a, [hl]
|
|
dec h
|
|
ld l, [hl]
|
|
ld h, a
|
|
add hl, de
|
|
push af
|
|
ld d, $3e
|
|
ld a, b
|
|
sub c
|
|
ld e, a
|
|
ld a, [de]
|
|
ld c, a
|
|
inc d
|
|
ld a, [de]
|
|
ld b, a
|
|
ld a, l
|
|
sub c
|
|
ld l, a
|
|
ld a, h
|
|
sbc b
|
|
ld h, a
|
|
jr nc, .asm_e43c
|
|
pop af
|
|
ccf
|
|
rr h
|
|
rr l
|
|
ret
|
|
|
|
.asm_e43c
|
|
pop af
|
|
rr h
|
|
rr l
|
|
ret
|
|
|
|
HandleFlipperCollision: ; 0xe442
|
|
; This is called when the ball is colliding with either the
|
|
; right or left flipper.
|
|
ld a, $1
|
|
ld [wd7e9], a
|
|
xor a
|
|
ld [wBallPositionPointerOffsetFromStageTopLeft], a
|
|
ld [wBallPositionPointerOffsetFromStageTopLeft + 1], a
|
|
ld [wCurCollisionAttribute], a
|
|
ld [wd7f6], a
|
|
ld [wd7f7], a
|
|
ld a, [hFlipperYCollisionAttribute]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_e538
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld b, a
|
|
ld a, [$ffc0]
|
|
ld e, a
|
|
ld a, [$ffc1]
|
|
ld d, a
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d ; multiplied de by 4
|
|
call Func_e379
|
|
ld a, b
|
|
ld [wFlipperYForce], a
|
|
ld a, l
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, [wBallXPos + 1]
|
|
cp $50 ; which flipper did the ball hit?
|
|
ld a, [wFlipperXCollisionAttribute]
|
|
jr c, .asm_e48b
|
|
cpl ; invert the x collision attribute
|
|
inc a
|
|
.asm_e48b
|
|
ld [wCollisionForceAngle], a
|
|
ld a, $1
|
|
ld [wd7eb], a
|
|
ld a, [wFlipperYForce + 1]
|
|
bit 7, a
|
|
ret z
|
|
xor a
|
|
ld [wFlipperYForce], a
|
|
ld [wFlipperYForce + 1], a
|
|
ret
|
|
|
|
DrawFlippers: ; 0xe4a1
|
|
ld a, [wCurrentStage]
|
|
and a
|
|
ret z
|
|
ld hl, FlippersOAMPixelOffsetData
|
|
ld a, [hSCX]
|
|
ld d, a
|
|
ld a, [hSCY]
|
|
ld e, a
|
|
ld a, [hli]
|
|
sub d
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub e
|
|
ld c, a
|
|
push hl
|
|
ld hl, LeftFlipperOAMIds
|
|
ld a, [wd7af]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $b
|
|
jr nz, .asm_e4d6
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_e4d4
|
|
ld a, [wd7be]
|
|
and a
|
|
jr z, .asm_e4d4
|
|
ld a, $18
|
|
jr .asm_e4d6
|
|
|
|
.asm_e4d4
|
|
ld a, $b
|
|
.asm_e4d6
|
|
call LoadOAMData
|
|
pop hl
|
|
ld a, [hSCX]
|
|
ld d, a
|
|
ld a, [hSCY]
|
|
ld e, a
|
|
ld a, [hli]
|
|
sub d
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub e
|
|
ld c, a
|
|
ld hl, RightFlipperOAMIds
|
|
ld a, [wd7b3]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $8
|
|
jr nz, .asm_e506
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_e504
|
|
ld a, [wd7be]
|
|
and a
|
|
jr z, .asm_e504
|
|
ld a, $17
|
|
jr .asm_e506
|
|
|
|
.asm_e504
|
|
ld a, $8
|
|
.asm_e506
|
|
call LoadOAMData
|
|
ret
|
|
|
|
FlippersOAMPixelOffsetData:
|
|
; flipper oam pixel offsets
|
|
dw $7b38 ; left flipper
|
|
dw $7b68 ; right flipper
|
|
|
|
LeftFlipperOAMIds:
|
|
; TODO: Don't know how exactly these are used, but it is used by the animation
|
|
; when the flipper is activated and rotates upward to hit the pinball.
|
|
db $0b, $0b, $0b, $0b, $0b, $0b, $0b
|
|
db $0c, $0c, $0c, $0c, $0c, $0c, $0c
|
|
db $0d, $0d, $0d, $0d, $0d, $0d, $0d
|
|
|
|
RightFlipperOAMIds:
|
|
db $08, $08, $08, $08, $08, $08, $08
|
|
db $09, $09, $09, $09, $09, $09, $09
|
|
db $0A, $0A, $0A, $0A, $0A, $0A, $0A
|
|
|
|
Data_e538: ; 0xe538
|
|
dw $0000
|
|
dw $000C
|
|
dw $001C
|
|
dw $0030
|
|
dw $0038
|
|
dw $0048
|
|
dw $005C
|
|
dw $006C
|
|
dw $0070
|
|
dw $0080
|
|
dw $0094
|
|
dw $00A4
|
|
dw $00B4
|
|
dw $00C4
|
|
dw $00D4
|
|
dw $00E4
|
|
dw $00F8
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
dw $00FC
|
|
|
|
LoadStageCollisionAttributes: ; 0xe578
|
|
ld a, [wCurrentStage]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, StageCollisionAttributesPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_e598
|
|
ld a, [wStageCollisionState]
|
|
sla a
|
|
ld c, a
|
|
sla a
|
|
add c
|
|
ld c, a
|
|
ld b, $0 ; bc = 6 * [wStageCollisionState]
|
|
add hl, bc
|
|
.asm_e598
|
|
ld de, wStageCollisionMapPointer
|
|
ld b, $6
|
|
.asm_e59d
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_e59d
|
|
call LoadCollisionAttributes
|
|
ret
|
|
|
|
StageCollisionAttributesPointers: ; 0xe5a7
|
|
dw StageRedFieldTopCollisionAttributesPointers
|
|
dw StageRedFieldBottomCollisionAttributesPointers
|
|
dw StageUnusedCollisionAttributesPointers
|
|
dw StageUnused2CollisionAttributesPointers
|
|
dw StageBlueFieldTopCollisionAttributesPointers
|
|
dw StageBlueFieldBottomCollisionAttributesPointers
|
|
dw StageGengarBonusCollisionAttributesPointers
|
|
dw StageGengarBonusCollisionAttributesPointers
|
|
dw StageMewtwoBonusCollisionAttributesPointers
|
|
dw StageMewtwoBonusCollisionAttributesPointers
|
|
dw StageMeowthBonusCollisionAttributesPointers
|
|
dw StageMeowthBonusCollisionAttributesPointers
|
|
dw StageDiglettBonusCollisionAttributesPointers
|
|
dw StageDiglettBonusCollisionAttributesPointers
|
|
dw StageSeelBonusCollisionAttributesPointers
|
|
dw StageSeelBonusCollisionAttributesPointers
|
|
|
|
StageRedFieldTopCollisionAttributesPointers: ; 0xe5c7
|
|
db $01 ; multiple pair entries
|
|
dwb StageRedFieldTopCollisionAttributes0, Bank(StageRedFieldTopCollisionAttributes0)
|
|
dwb StageRedFieldTopCollisionMasks0, Bank(StageRedFieldTopCollisionMasks0)
|
|
dwb StageRedFieldTopCollisionAttributes1, Bank(StageRedFieldTopCollisionAttributes1)
|
|
dwb StageRedFieldTopCollisionMasks0, Bank(StageRedFieldTopCollisionMasks0)
|
|
dwb StageRedFieldTopCollisionAttributes2, Bank(StageRedFieldTopCollisionAttributes2)
|
|
dwb StageRedFieldTopCollisionMasks1, Bank(StageRedFieldTopCollisionMasks1)
|
|
dwb StageRedFieldTopCollisionAttributes3, Bank(StageRedFieldTopCollisionAttributes3)
|
|
dwb StageRedFieldTopCollisionMasks1, Bank(StageRedFieldTopCollisionMasks1)
|
|
dwb StageRedFieldTopCollisionAttributes4, Bank(StageRedFieldTopCollisionAttributes4)
|
|
dwb StageRedFieldTopCollisionMasks2, Bank(StageRedFieldTopCollisionMasks2)
|
|
dwb StageRedFieldTopCollisionAttributes5, Bank(StageRedFieldTopCollisionAttributes5)
|
|
dwb StageRedFieldTopCollisionMasks2, Bank(StageRedFieldTopCollisionMasks2)
|
|
dwb StageRedFieldTopCollisionAttributes6, Bank(StageRedFieldTopCollisionAttributes6)
|
|
dwb StageRedFieldTopCollisionMasks3, Bank(StageRedFieldTopCollisionMasks3)
|
|
dwb StageRedFieldTopCollisionAttributes7, Bank(StageRedFieldTopCollisionAttributes7)
|
|
dwb StageRedFieldTopCollisionMasks3, Bank(StageRedFieldTopCollisionMasks3)
|
|
|
|
StageRedFieldBottomCollisionAttributesPointers: ; 0xe5f8
|
|
db $00 ; single pair entry
|
|
dwb StageRedFieldBottomCollisionAttributes, Bank(StageRedFieldBottomCollisionAttributes)
|
|
dwb StageRedFieldBottomCollisionMasks, Bank(StageRedFieldBottomCollisionMasks)
|
|
|
|
StageUnusedCollisionAttributesPointers: ; 0xe5ff
|
|
; This entry is never used
|
|
db $00
|
|
|
|
StageUnused2CollisionAttributesPointers: ; 0xe600
|
|
; This entry is never used
|
|
db $00
|
|
|
|
StageBlueFieldTopCollisionAttributesPointers: ; 0xe601
|
|
db $01 ; multiple pair entries
|
|
dwb StageBlueFieldTopCollisionAttributesBallEntrance, Bank(StageBlueFieldTopCollisionAttributesBallEntrance)
|
|
dwb StageBlueFieldTopCollisionMasks, Bank(StageBlueFieldTopCollisionMasks)
|
|
dwb StageBlueFieldTopCollisionAttributes, Bank(StageBlueFieldTopCollisionAttributes)
|
|
dwb StageBlueFieldTopCollisionMasks, Bank(StageBlueFieldTopCollisionMasks)
|
|
|
|
StageBlueFieldBottomCollisionAttributesPointers: ; 0xe60e
|
|
db $00 ; single pair entry
|
|
dwb StageBlueFieldBottomCollisionAttributes, Bank(StageBlueFieldBottomCollisionAttributes)
|
|
dwb StageBlueFieldBottomCollisionMasks, Bank(StageBlueFieldBottomCollisionMasks)
|
|
|
|
StageGengarBonusCollisionAttributesPointers: ; 0xe615
|
|
db $01 ; multiple pair entries
|
|
dwb StageGengarBonusCollisionAttributesBallEntrance, Bank(StageGengarBonusCollisionAttributesBallEntrance)
|
|
dwb StageGengarBonusCollisionMasks, Bank(StageGengarBonusCollisionMasks)
|
|
dwb StageGengarBonusCollisionAttributes, Bank(StageGengarBonusCollisionAttributes)
|
|
dwb StageGengarBonusCollisionMasks, Bank(StageGengarBonusCollisionMasks)
|
|
|
|
StageMewtwoBonusCollisionAttributesPointers: ; 0xe622
|
|
db $01 ; multiple pair entries
|
|
dwb StageMewtwoBonusCollisionAttributesBallEntrance, Bank(StageMewtwoBonusCollisionAttributesBallEntrance)
|
|
dwb StageMewtwoBonusCollisionMasks, Bank(StageMewtwoBonusCollisionMasks)
|
|
dwb StageMewtwoBonusCollisionAttributes, Bank(StageMewtwoBonusCollisionAttributes)
|
|
dwb StageMewtwoBonusCollisionMasks, Bank(StageMewtwoBonusCollisionMasks)
|
|
|
|
StageMeowthBonusCollisionAttributesPointers: ; 0xe62f
|
|
db $01 ; multiple pair entries
|
|
dwb StageMeowthBonusCollisionAttributesBallEntrance, Bank(StageMeowthBonusCollisionAttributesBallEntrance)
|
|
dwb StageMeowthBonusCollisionMasks, Bank(StageMeowthBonusCollisionMasks)
|
|
dwb StageMeowthBonusCollisionAttributes, Bank(StageMeowthBonusCollisionAttributes)
|
|
dwb StageMeowthBonusCollisionMasks, Bank(StageMeowthBonusCollisionMasks)
|
|
|
|
StageDiglettBonusCollisionAttributesPointers: ; 0xe63c
|
|
db $01 ; multiple pair entries
|
|
dwb StageDiglettBonusCollisionAttributesBallEntrance, Bank(StageDiglettBonusCollisionAttributesBallEntrance)
|
|
dwb StageDiglettBonusCollisionMasks, Bank(StageDiglettBonusCollisionMasks)
|
|
dwb StageDiglettBonusCollisionAttributes, Bank(StageDiglettBonusCollisionAttributes)
|
|
dwb StageDiglettBonusCollisionMasks, Bank(StageDiglettBonusCollisionMasks)
|
|
|
|
StageSeelBonusCollisionAttributesPointers: ; 0xe649
|
|
db $01 ; multiple pair entries
|
|
dwb StageSeelBonusCollisionAttributesBallEntrance, Bank(StageSeelBonusCollisionAttributesBallEntrance)
|
|
dwb StageSeelBonusCollisionMasks, Bank(StageSeelBonusCollisionMasks)
|
|
dwb StageSeelBonusCollisionAttributes, Bank(StageSeelBonusCollisionAttributes)
|
|
dwb StageSeelBonusCollisionMasks, Bank(StageSeelBonusCollisionMasks)
|
|
|
|
LoadCollisionAttributes: ; 0xe656
|
|
; Loads the stage's collision attributes into RAM
|
|
; Input: [wStageCollisionMapPointer] = pointer to collision attributes map
|
|
; [wStageCollisionMapBank] = ROM bank of collision attributes map
|
|
ld hl, wStageCollisionMapPointer
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wStageCollisionMapBank]
|
|
ld de, wStageCollisionMap
|
|
ld bc, $0300
|
|
call FarCopyData
|
|
ld hl, wStageCollisionMapPointer
|
|
ld [hl], (wStageCollisionMap & $ff)
|
|
inc hl
|
|
ld [hl], (wStageCollisionMap >> 8)
|
|
inc hl
|
|
ld [hl], $0 ; Bank 0, because the data is in WRAM, so it doesn't matter which bank is saved
|
|
ret
|
|
|
|
FieldVerticalTransition: ; 0xe674
|
|
push af
|
|
ld a, [wd548]
|
|
push af
|
|
xor a
|
|
ld [wd548], a
|
|
ld [wd803], a
|
|
callba Func_84b7
|
|
call CleanOAMBuffer
|
|
pop af
|
|
ld [wd548], a
|
|
pop af
|
|
ld [wCurrentStage], a
|
|
xor a
|
|
ld [hBGP], a
|
|
ld [hOBP0], a
|
|
ld [hOBP1], a
|
|
rst AdvanceFrame
|
|
call Func_e5d
|
|
call Func_576
|
|
call ClearOAMBuffer
|
|
call Func_1129
|
|
call LoadStageCollisionAttributes
|
|
call Func_e6c2
|
|
call Func_e5d
|
|
call Func_588
|
|
ld a, $e4
|
|
ld [hBGP], a
|
|
ld a, $e1
|
|
ld [hOBP0], a
|
|
ld a, $e4
|
|
ld [hOBP1], a
|
|
ret
|
|
|
|
Func_e6c2: ; 0xe6c2
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ld a, $86
|
|
jr z, .asm_e6d5
|
|
ld a, [wd5ca]
|
|
and a
|
|
ld a, $86
|
|
jr nz, .asm_e6d5
|
|
ld a, $90
|
|
.asm_e6d5
|
|
ld [hWY], a
|
|
ld hl, StageGfxPointers_GameBoy
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .loadData
|
|
ld hl, StageGfxPointers_GameBoyColor
|
|
.loadData
|
|
ld a, [wCurrentStage]
|
|
call LoadVideoData
|
|
xor a
|
|
ld [wd7f2], a
|
|
callba Func_8471
|
|
ret
|
|
|
|
StageGfxPointers_GameBoy: ; 0xe6f7
|
|
dw StageRedFieldTopGfx_GameBoy
|
|
dw StageRedFieldBottomGfx_GameBoy
|
|
dw VideoData_e896
|
|
dw VideoData_e8bd
|
|
dw StageBlueFieldTopGfx_GameBoy
|
|
dw StageBlueFieldBottomGfx_GameBoy
|
|
dw StageGengarBonusGfx_GameBoy
|
|
dw StageGengarBonusGfx_GameBoy
|
|
dw StageMewtwoBonusGfx_GameBoy
|
|
dw StageMewtwoBonusGfx_GameBoy
|
|
dw StageMeowthBonusGfx_GameBoy
|
|
dw StageMeowthBonusGfx_GameBoy
|
|
dw StageDiglettBonusGfx_GameBoy
|
|
dw StageDiglettBonusGfx_GameBoy
|
|
dw StageSeelBonusGfx_GameBoy
|
|
dw StageSeelBonusGfx_GameBoy
|
|
|
|
StageGfxPointers_GameBoyColor: ; 0xe717
|
|
dw StageRedFieldTopGfx_GameBoyColor
|
|
dw StageRedFieldBottomGfx_GameBoyColor
|
|
dw VideoData_e8a6
|
|
dw VideoData_e8d4
|
|
dw StageBlueFieldTopGfx_GameBoyColor
|
|
dw StageBlueFieldBottomGfx_GameBoyColor
|
|
dw StageGengarBonusGfx_GameBoyColor
|
|
dw StageGengarBonusGfx_GameBoyColor
|
|
dw StageMewtwoBonusGfx_GameBoyColor
|
|
dw StageMewtwoBonusGfx_GameBoyColor
|
|
dw StageMeowthBonusGfx_GameBoyColor
|
|
dw StageMeowthBonusGfx_GameBoyColor
|
|
dw StageDiglettBonusGfx_GameBoyColor
|
|
dw StageDiglettBonusGfx_GameBoyColor
|
|
dw StageSeelBonusGfx_GameBoyColor
|
|
dw StageSeelBonusGfx_GameBoyColor
|
|
|
|
StageRedFieldTopGfx_GameBoy: ; 0xe737
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageRedFieldTopGfx1, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $200
|
|
VIDEO_DATA_TILES StageRedFieldTopGfx2, vTilesOB + $600, $200
|
|
VIDEO_DATA_TILES StageRedFieldTopStatusBarSymbolsGfx_GameBoy, vTilesSH, $100
|
|
VIDEO_DATA_TILES StageRedFieldTopGfx3, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES StageRedFieldTopBaseGameBoyGfx, vTilesSH + $2a0, $d60
|
|
VIDEO_DATA_TILEMAP StageRedFieldTopTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageRedFieldTopGfx_GameBoyColor: ; 0xe771
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageRedFieldTopGfx1, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $200
|
|
VIDEO_DATA_TILES StageRedFieldTopGfx2, vTilesOB + $600, $200
|
|
VIDEO_DATA_TILES StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor, vTilesSH, $100
|
|
VIDEO_DATA_TILES StageRedFieldTopGfx3, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES StageRedFieldTopBaseGameBoyColorGfx, vTilesSH + $2a0, $d60
|
|
VIDEO_DATA_TILES_BANK2 StageRedFieldTopGfx4, vTilesSH, $1000
|
|
VIDEO_DATA_TILES_BANK2 StageRedFieldTopGfx5, vTilesOB, $200
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILES_BANK2 StageRedJapaneseCharactersGfx, vTilesOB + $200, $400
|
|
VIDEO_DATA_TILES_BANK2 StageRedJapaneseCharactersGfx2, vTilesSH + $100, $200
|
|
VIDEO_DATA_TILES_BANK2 StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor, vTilesSH, $100
|
|
VIDEO_DATA_TILEMAP StageRedFieldTopTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 StageRedFieldTopTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES StageRedFieldTopPalettes, $80
|
|
VIDEO_DATA_TILES_BANK2 StageRedFieldTopGfx6, vTilesOB + $7c0, $40
|
|
db $FF, $FF ; terminators
|
|
|
|
StageRedFieldBottomGfx_GameBoy: ; 0xe7ea
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlowGfx, vTilesOB + $1a0, $160
|
|
VIDEO_DATA_TILES StageSharedArrowsGfx, vTilesOB + $300, $80
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlow2Gfx, vTilesOB + $380, $20
|
|
VIDEO_DATA_TILES StageSharedPikaBoltGfx, vTilesOB + $3c0, $440
|
|
VIDEO_DATA_TILES StageRedFieldBottomBaseGameBoyGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES SaverTextOffGfx, vTilesSH + $2a0, $40
|
|
VIDEO_DATA_TILEMAP StageRedFieldBottomTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageRedFieldBottomGfx_GameBoyColor: ; 0xe824
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlowGfx, vTilesOB + $1a0, $160
|
|
VIDEO_DATA_TILES StageSharedArrowsGfx, vTilesOB + $300, $80
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlow2Gfx, vTilesOB + $380, $20
|
|
VIDEO_DATA_TILES StageSharedPikaBoltGfx, vTilesOB + $3c0, $440
|
|
VIDEO_DATA_TILES StageRedFieldBottomBaseGameBoyColorGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES_BANK2 StageRedFieldBottomGfx5, vTilesSH, $1000
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILES SaverTextOffGfx, vTilesSH + $2a0, $40
|
|
VIDEO_DATA_TILES_BANK2 StageRedJapaneseCharactersGfx, vTilesOB + $200, $400
|
|
VIDEO_DATA_TILES_BANK2 StageRedJapaneseCharactersGfx2, vTilesSH + $100, $200
|
|
VIDEO_DATA_TILES_BANK2 StageRedFieldBottomBaseGameBoyColorGfx, vTilesSH, $100
|
|
VIDEO_DATA_TILEMAP StageRedFieldBottomTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 StageRedFieldBottomTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES StageRedFieldBottomPalettes, $80
|
|
VIDEO_DATA_TILES_BANK2 StageRedFieldTopGfx6, vTilesOB + $7c0, $40
|
|
db $FF, $FF ; terminators
|
|
|
|
VideoData_e896: ; 0xe896
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $200
|
|
db $FF, $FF ; terminators
|
|
|
|
VideoData_e8a6: ; 0xe8a6
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $200
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
db $FF, $FF ; terminators
|
|
|
|
VideoData_e8bd: ; 0xe8bd
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES PinballPokeballShakeGfx, vTilesOB + $380, $480
|
|
VIDEO_DATA_TILES SaverTextOffGfx, vTilesSH + $2a0, $40
|
|
db $FF, $FF ; terminators
|
|
|
|
VideoData_e8d4: ; 0xe8d4
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES PinballPokeballShakeGfx, vTilesOB + $380, $480
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILES SaverTextOffGfx, vTilesSH + $2a0, $40
|
|
db $FF, $FF ; terminators
|
|
|
|
StageBlueFieldTopGfx_GameBoy: ; 0xe8f2
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageBlueFieldTopGfx1, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $200
|
|
VIDEO_DATA_TILES StageBlueFieldTopGfx2, vTilesOB + $600, $200
|
|
VIDEO_DATA_TILES StageBlueFieldTopStatusBarSymbolsGfx_GameBoy, vTilesSH, $100
|
|
VIDEO_DATA_TILES StageBlueFieldTopGfx3, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES StageBlueFieldTopBaseGameBoyGfx, vTilesSH + $2a0, $d60
|
|
VIDEO_DATA_TILEMAP StageBlueFieldTopTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageBlueFieldTopGfx_GameBoyColor: ; 0xe92c
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageBlueFieldTopGfx1, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $200
|
|
VIDEO_DATA_TILES StageBlueFieldTopGfx2, vTilesOB + $600, $200
|
|
VIDEO_DATA_TILES StageBlueFieldTopStatusBarSymbolsGfx_GameBoyColor, vTilesSH, $100
|
|
VIDEO_DATA_TILES StageBlueFieldTopGfx3, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES StageBlueFieldTopBaseGameBoyColorGfx, vTilesSH + $2a0, $d60
|
|
VIDEO_DATA_TILES_BANK2 StageBlueFieldTopGfx4, vTilesSH, $1000
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILEMAP StageBlueFieldTopTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 StageBlueFieldTopTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES StageBlueFieldTopPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
StageBlueFieldBottomGfx_GameBoy: ; 0xe982
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlowGfx, vTilesOB + $1a0, $160
|
|
VIDEO_DATA_TILES StageSharedArrowsGfx, vTilesOB + $300, $80
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlow2Gfx, vTilesOB + $380, $20
|
|
VIDEO_DATA_TILES StageSharedPikaBoltGfx, vTilesOB + $3c0, $440
|
|
VIDEO_DATA_TILES StageBlueFieldBottomBaseGameBoyGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES SaverTextOffGfx, vTilesSH + $2a0, $40
|
|
VIDEO_DATA_TILEMAP StageBlueFieldBottomTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageBlueFieldBottomGfx_GameBoyColor: ; 0xe9bc
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlowGfx, vTilesOB + $1a0, $160
|
|
VIDEO_DATA_TILES StageSharedArrowsGfx, vTilesOB + $300, $80
|
|
VIDEO_DATA_TILES StageSharedBonusSlotGlow2Gfx, vTilesOB + $380, $20
|
|
VIDEO_DATA_TILES StageSharedPikaBoltGfx, vTilesOB + $3c0, $440
|
|
VIDEO_DATA_TILES StageBlueFieldBottomBaseGameBoyColorGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES_BANK2 StageBlueFieldBottomGfx1, vTilesSH, $1000
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILES SaverTextOffGfx, vTilesSH + $2a0, $40
|
|
VIDEO_DATA_TILEMAP StageBlueFieldBottomTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 StageBlueFieldBottomTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES StageBlueFieldBottomPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
StageGengarBonusGfx_GameBoy: ; 0xea12
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES GengarBonusBaseGameBoyGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES GengarBonusGastlyGfx, vTilesSH + $100, $180
|
|
VIDEO_DATA_TILES_BANK GengarBonusHaunterGfx + $180, Bank(GengarBonusHaunterGfx), vTilesSH + $280, $20
|
|
VIDEO_DATA_TILES_BANK GengarBonusHaunterGfx + $1a0, Bank(GengarBonusHaunterGfx), vTilesOB + $1a0, $100
|
|
VIDEO_DATA_TILES_BANK GengarBonusGengarGfx + $2a0, Bank(GengarBonusGengarGfx), vTilesOB + $2a0, $160
|
|
VIDEO_DATA_TILES_BANK GengarBonusGengarGfx + $400, Bank(GengarBonusGengarGfx), vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES_BANK GengarBonusGengarGfx + $460, Bank(GengarBonusGengarGfx), vTilesSH + $2a0, $2a0
|
|
VIDEO_DATA_TILEMAP GengarBonusTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageGengarBonusGfx_GameBoyColor: ; 0xea5a
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES StageSharedPikaBoltGfx, vTilesOB + $3c0, $440
|
|
VIDEO_DATA_TILES GengarBonusBaseGameBoyColorGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES GengarBonusGastlyGfx, vTilesSH + $100, $180
|
|
VIDEO_DATA_TILES_BANK GengarBonusHaunterGfx + $180, Bank(GengarBonusHaunterGfx), vTilesSH + $280, $20
|
|
VIDEO_DATA_TILES_BANK GengarBonusHaunterGfx + $1a0, Bank(GengarBonusHaunterGfx), vTilesOB + $1a0, $100
|
|
VIDEO_DATA_TILES_BANK GengarBonusGengarGfx + $2a0, Bank(GengarBonusGengarGfx), vTilesOB + $2a0, $160
|
|
VIDEO_DATA_TILES_BANK GengarBonusGengarGfx + $400, Bank(GengarBonusGengarGfx), vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES_BANK GengarBonusGengarGfx + $460, Bank(GengarBonusGengarGfx), vTilesSH + $2a0, $2a0
|
|
VIDEO_DATA_TILES_BANK2 GengarBonus1Gfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILEMAP GengarBonusBottomTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 GengarBonusBottomTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES GengarBonusPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
StageMewtwoBonusGfx_GameBoy: ; 0xeabe
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES MewtwoBonus1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES MewtwoBonus2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES MewtwoBonusBaseGameBoyGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES MewtwoBonus3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES MewtwoBonus4Gfx, vTilesSH + $2a0, $2a0
|
|
VIDEO_DATA_TILEMAP MewtwoBonusTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageMewtwoBonusGfx_GameBoyColor: ; 0xeaf8
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES MewtwoBonus1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES MewtwoBonus2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES MewtwoBonusBaseGameBoyColorGfx, vTilesSH, $1000
|
|
VIDEO_DATA_TILES MewtwoBonus3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES MewtwoBonus4Gfx, vTilesSH + $2a0, $2a0
|
|
; Can't use a macro here because it's copying the tiles from VRAM, not ROM.
|
|
dw vTilesOB
|
|
db $20 ; This is an arbitrary bank, since the data is in VRAM, not ROM.
|
|
dw vTilesSH
|
|
dw $4002
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILEMAP MewtoBonusBottomTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 MewtoBonusBottomTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES MewtwoBonusPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
StageMeowthBonusGfx_GameBoy: ; 0xeb4e
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES MeowthBonusMeowth1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES MeowthBonusMeowth2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES MeowthBonusBaseGameBoyGfx, vTilesSH, $a00
|
|
VIDEO_DATA_TILES MeowthBonusMeowth3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES MeowthBonusMeowth4Gfx, vTilesSH + $2a0, $360
|
|
VIDEO_DATA_TILEMAP MeowthBonusTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageMeowthBonusGfx_GameBoyColor: ; 0xeb88
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES MeowthBonusMeowth1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES MeowthBonusMeowth2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES MeowthBonusBaseGameBoyColorGfx, vTilesSH, $900
|
|
VIDEO_DATA_TILES MeowthBonusMeowth3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES MeowthBonusMeowth4Gfx, vTilesSH + $2a0, $360
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILEMAP MeowthBonusTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 MeowthBonusTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES MeowthBonusPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
StageDiglettBonusGfx_GameBoy: ; 0xebd7
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES DiglettBonusBaseGameBoyGfx, vTilesSH, $e00 ; $e00 is actually $100 too many bytes. Should only be $d00. This accidentally loads palette data after the tile graphics.
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio4Gfx, vTilesSH + $2a0, $280
|
|
VIDEO_DATA_TILEMAP DiglettBonusTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageDiglettBonusGfx_GameBoyColor: ; 0xec11
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES DiglettBonusBaseGameBoyColorGfx, vTilesSH, $e00
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES DiglettBonusDugtrio4Gfx, vTilesSH + $2a0, $280
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILEMAP DiglettBonusTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 DiglettBonusTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES DiglettBonusPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
StageSeelBonusGfx_GameBoy: ; 0xec60
|
|
VIDEO_DATA_TILES Alphabet1Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES SeelBonusSeel1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES SeelBonusSeel2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES SeelBonusBaseGameBoyGfx, vTilesSH, $d00 ; $d00 is actually $100 too many bytes. Should only be $c00. This accidentally loads palette data after the tile graphics.
|
|
VIDEO_DATA_TILES SeelBonusSeel3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES SeelBonusSeel4Gfx, vTilesSH + $2a0, $4a0
|
|
VIDEO_DATA_TILEMAP SeelBonusTilemap_GameBoy, vBGMap, $400
|
|
db $FF, $FF ; terminators
|
|
|
|
StageSeelBonusGfx_GameBoyColor: ; 0xec9a
|
|
VIDEO_DATA_TILES Alphabet2Gfx, vTilesOB, $1a0
|
|
VIDEO_DATA_TILES SeelBonusSeel1Gfx, vTilesOB + $1a0, $260
|
|
VIDEO_DATA_TILES PinballPokeballGfx, vTilesOB + $400, $320
|
|
VIDEO_DATA_TILES SeelBonusSeel2Gfx, vTilesOB + $7a0, $60
|
|
VIDEO_DATA_TILES SeelBonusBaseGameBoyColorGfx, vTilesSH, $b00 ; Should actually be $a00 bytes, not $b00
|
|
VIDEO_DATA_TILES SeelBonusSeel3Gfx, vTilesSH + $100, $1a0
|
|
VIDEO_DATA_TILES SeelBonusSeel4Gfx, vTilesSH + $2a0, $4a0
|
|
VIDEO_DATA_TILES_BANK2 TimerDigitsGfx, vTilesOB + $600, $160
|
|
VIDEO_DATA_TILEMAP SeelBonusTilemap_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_TILEMAP_BANK2 SeelBonusTilemap2_GameBoyColor, vBGMap, $400
|
|
VIDEO_DATA_PALETTES SeelBonusPalettes, $80
|
|
db $FF, $FF ; terminators
|
|
|
|
CheckStageTransition: ; 0xece9
|
|
call Func_ed5e
|
|
ld a, [wBallYPos + 1]
|
|
add $10
|
|
cp $18
|
|
jr c, .moving_up
|
|
cp $b8
|
|
ret c
|
|
ld a, [wCurrentStage]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallMovingDownStageTransitions
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $ff
|
|
jr z, .rip
|
|
call FieldVerticalTransition
|
|
ld a, [wBallYPos + 1]
|
|
sub $88
|
|
ld [wBallYPos + 1], a
|
|
ret
|
|
|
|
.moving_up
|
|
ld a, [wCurrentStage]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallMovingUpStageTransitions
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $ff
|
|
jr z, .rip
|
|
call FieldVerticalTransition
|
|
ld a, [wBallYPos + 1]
|
|
add $88
|
|
ld [wBallYPos + 1], a
|
|
ret
|
|
|
|
.rip
|
|
ld a, $1
|
|
ld [wd4ae], a
|
|
callba HandleBallLoss
|
|
ret
|
|
|
|
BallMovingUpStageTransitions: ; 0xed3e
|
|
; Maps the relationship between stages when
|
|
; the ball moves out of the screen upward.
|
|
db $FF ; STAGE_RED_FIELD_TOP
|
|
db STAGE_RED_FIELD_TOP ; STAGE_RED_FIELD_BOTTOM
|
|
db $FF
|
|
db $02
|
|
db $FF ; STAGE_BLUE_FIELD_TOP
|
|
db STAGE_BLUE_FIELD_TOP ; STAGE_BLUE_FIELD_BOTTOM
|
|
db $FF ; STAGE_GENGAR_BONUS
|
|
db $FF ; STAGE_GENGAR_BONUS
|
|
db $FF ; STAGE_MEWTWO_BONUS
|
|
db $FF ; STAGE_MEWTWO_BONUS
|
|
db $FF ; STAGE_MEOWTH_BONUS
|
|
db $FF ; STAGE_MEOWTH_BONUS
|
|
db $FF ; STAGE_DIGLETT_BONUS
|
|
db $FF ; STAGE_DIGLETT_BONUS
|
|
db $FF ; STAGE_SEEL_BONUS
|
|
db $FF ; STAGE_SEEL_BONUS
|
|
|
|
BallMovingDownStageTransitions: ; 0xed4e
|
|
; Maps the relationship between stages when
|
|
; the ball moves out of the screen downward.
|
|
db STAGE_RED_FIELD_BOTTOM ; STAGE_RED_FIELD_TOP
|
|
db $FF ; STAGE_RED_FIELD_BOTTOM
|
|
db $03
|
|
db $FF
|
|
db STAGE_BLUE_FIELD_BOTTOM ; STAGE_BLUE_FIELD_TOP
|
|
db $FF ; STAGE_BLUE_FIELD_BOTTOM
|
|
db $FF ; STAGE_GENGAR_BONUS
|
|
db $FF ; STAGE_GENGAR_BONUS
|
|
db $FF ; STAGE_MEWTWO_BONUS
|
|
db $FF ; STAGE_MEWTWO_BONUS
|
|
db $FF ; STAGE_MEOWTH_BONUS
|
|
db $FF ; STAGE_MEOWTH_BONUS
|
|
db $FF ; STAGE_DIGLETT_BONUS
|
|
db $FF ; STAGE_DIGLETT_BONUS
|
|
db $FF ; STAGE_SEEL_BONUS
|
|
db $FF ; STAGE_SEEL_BONUS
|
|
|
|
Func_ed5e: ; 0xed5e
|
|
ld hl, wSCX
|
|
ld a, [wd7ac]
|
|
and a
|
|
jr nz, .modify_scx_and_scy
|
|
ld a, [wBallXPos + 1]
|
|
cp $9a
|
|
ld a, 2
|
|
jr nc, .okay1
|
|
ld a, -2
|
|
.okay1
|
|
ld [wd7aa], a
|
|
add [hl]
|
|
cp $22
|
|
jr z, .modify_scx_and_scy
|
|
bit 7, a
|
|
jr nz, .modify_scx_and_scy
|
|
ld [hl], a
|
|
.modify_scx_and_scy
|
|
ld a, [hl]
|
|
ld hl, wd79f
|
|
sub [hl]
|
|
ld [hSCX], a
|
|
xor a
|
|
ld hl, wd7a0
|
|
sub [hl]
|
|
ld [hSCY], a
|
|
ret
|
|
|
|
Func_ed8e: ; 0xed8e
|
|
xor a
|
|
ld [wd803], a
|
|
ld [wd804], a
|
|
ld [wd622], a
|
|
ld a, [wNumPartyMons]
|
|
ld [wd620], a
|
|
ld a, [wBallType]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallTypeMultipliers
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd621], a
|
|
.asm_edac
|
|
xor a
|
|
ld [hJoypadState], a
|
|
ld [hNewlyPressedButtons], a
|
|
ld [hPressedButtons], a
|
|
call HandleTilts
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ld [hFarCallTempA], a
|
|
ld a, $3
|
|
ld hl, HandleFlippers
|
|
call nz, BankSwitch
|
|
callba Func_84b7
|
|
call Func_33e3
|
|
call CleanOAMBuffer
|
|
rst AdvanceFrame
|
|
ld a, [wd7af]
|
|
and a
|
|
jr nz, .asm_edac
|
|
ld a, [wd7b3]
|
|
and a
|
|
jr nz, .asm_edac
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
call nz, LoadGreyBillboardPaletteData
|
|
call GenRandom
|
|
and $f0
|
|
ld [wd61a], a
|
|
xor a
|
|
ld [wd61b], a
|
|
ld [wd61e], a
|
|
.asm_6df7
|
|
ld a, [wd61a]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_f339
|
|
add hl, bc
|
|
ld a, [wd619]
|
|
add [hl]
|
|
ld c, a
|
|
ld hl, Data_f439
|
|
add hl, bc
|
|
ld a, [hli]
|
|
bit 7, a
|
|
jr nz, .asm_ee56
|
|
call Func_eef9
|
|
ld [wd61d], a
|
|
push af
|
|
lb de, $00, $09
|
|
call PlaySoundEffect
|
|
pop af
|
|
call LoadBillboardOffPicture
|
|
ld a, [wd61b]
|
|
cp $a
|
|
jr nc, .asm_ee29
|
|
ld a, $a
|
|
.asm_ee29
|
|
ld b, a
|
|
.asm_ee2a
|
|
push bc
|
|
call Func_eeee
|
|
ld a, [wd61e]
|
|
and a
|
|
jr nz, .asm_ee47
|
|
call Func_ef1e
|
|
jr z, .asm_ee47
|
|
ld [wd61e], a
|
|
ld a, $32
|
|
ld [wd61b], a
|
|
lb de, $07, $28
|
|
call PlaySoundEffect
|
|
.asm_ee47
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_ee2a
|
|
ld a, [wd61b]
|
|
inc a
|
|
ld [wd61b], a
|
|
cp $3c
|
|
jr z, .asm_ee69
|
|
.asm_ee56
|
|
ld a, [wd61a]
|
|
and $f0
|
|
ld b, a
|
|
ld a, [wd61a]
|
|
inc a
|
|
and $f
|
|
or b
|
|
ld [wd61a], a
|
|
jp .asm_6df7
|
|
|
|
.asm_ee69
|
|
ld a, [wd61d]
|
|
cp $5
|
|
jr nz, .asm_ee78
|
|
lb de, $0c, $42
|
|
call PlaySoundEffect
|
|
jr .asm_ee7e
|
|
|
|
.asm_ee78
|
|
lb de, $0c, $43
|
|
call PlaySoundEffect
|
|
.asm_ee7e
|
|
ld b, $28
|
|
.asm_ee80
|
|
push bc
|
|
rst AdvanceFrame
|
|
pop bc
|
|
call Func_ef1e
|
|
jr nz, .asm_ee8b
|
|
dec b
|
|
jr nz, .asm_ee80
|
|
.asm_ee8b
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ld a, [wd61d]
|
|
call nz, Func_f2a0
|
|
ld b, $80
|
|
.asm_ee96
|
|
push bc
|
|
ld a, b
|
|
and $f
|
|
jr nz, .asm_eeae
|
|
bit 4, b
|
|
jr z, .asm_eea8
|
|
ld a, [wd61d]
|
|
call LoadBillboardPicture
|
|
jr .asm_eeae
|
|
|
|
.asm_eea8
|
|
ld a, [wd61d]
|
|
call LoadBillboardOffPicture
|
|
.asm_eeae
|
|
rst AdvanceFrame
|
|
pop bc
|
|
call Func_ef1e
|
|
jr nz, .asm_eeb8
|
|
dec b
|
|
jr nz, .asm_ee96
|
|
.asm_eeb8
|
|
ld a, [wd619]
|
|
add $a
|
|
cp $fa
|
|
jr nz, .asm_eec3
|
|
ld a, $64
|
|
.asm_eec3
|
|
ld [wd619], a
|
|
ld a, [wd61d]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_eeca: ; 0xeeca
|
|
dw Start30SecondSaverTimer
|
|
dw Start60SecondSaverTimer
|
|
dw Start90SecondSaverTimer
|
|
dw Func_ef83
|
|
dw Func_efa7
|
|
dw Func_efb2
|
|
dw Func_eff3
|
|
dw Func_f034
|
|
dw Func_f03a
|
|
dw UpgradeBallBlueField
|
|
dw UpgradeBallBlueField
|
|
dw UpgradeBallBlueField
|
|
dw SlotBonusMultiplier
|
|
dw Func_f172
|
|
dw Func_f172
|
|
dw Func_f172
|
|
dw Func_f172
|
|
dw Func_f172
|
|
|
|
Func_eeee: ; 0xeeee
|
|
push bc
|
|
ld bc, $0200
|
|
.asm_eef2
|
|
dec bc
|
|
ld a, b
|
|
or c
|
|
jr nz, .asm_eef2
|
|
pop bc
|
|
ret
|
|
|
|
Func_eef9: ; 0xeef9
|
|
cp $8
|
|
jr nz, .asm_ef09
|
|
ld a, [wd620]
|
|
and a
|
|
jr nz, .asm_ef06
|
|
ld a, $7
|
|
ret
|
|
|
|
.asm_ef06
|
|
ld a, $8
|
|
ret
|
|
|
|
.asm_ef09
|
|
cp $9
|
|
jr nz, .asm_ef14
|
|
push hl
|
|
ld hl, wd621
|
|
add [hl]
|
|
pop hl
|
|
ret
|
|
|
|
.asm_ef14
|
|
cp $d
|
|
ret nz
|
|
push hl
|
|
ld hl, wd498
|
|
add [hl]
|
|
pop hl
|
|
ret
|
|
|
|
Func_ef1e: ; 0xef1e
|
|
push bc
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed
|
|
jr nz, .asm_ef2d
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed
|
|
.asm_ef2d
|
|
pop bc
|
|
ret
|
|
|
|
BallTypeMultipliers: ; 0xef2f
|
|
; Score multiplier for each ball type.
|
|
db $00 ; POKE_BALL
|
|
db $00
|
|
db $01 ; GREAT_BALL
|
|
db $02 ; ULTRA_BALL
|
|
db $02
|
|
db $02 ; MASTER_BALL
|
|
|
|
Start30SecondSaverTimer: ; 0xef35
|
|
ld a, $0
|
|
ld [wBallSaverIconOn], a
|
|
ld a, $ff
|
|
ld [wd4a2], a
|
|
ld a, 59
|
|
ld [wBallSaverTimerFrames], a
|
|
ld a, 30
|
|
ld [wBallSaverTimerSeconds], a
|
|
ld a, $2
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
ret
|
|
|
|
Start60SecondSaverTimer: ; 0xef4f
|
|
ld a, $0
|
|
ld [wBallSaverIconOn], a
|
|
ld a, $ff
|
|
ld [wd4a2], a
|
|
ld a, 59
|
|
ld [wBallSaverTimerFrames], a
|
|
ld a, 60
|
|
ld [wBallSaverTimerSeconds], a
|
|
ld a, $2
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
ret
|
|
|
|
Start90SecondSaverTimer: ; 0xef69
|
|
ld a, $0
|
|
ld [wBallSaverIconOn], a
|
|
ld a, $ff
|
|
ld [wd4a2], a
|
|
ld a, 59
|
|
ld [wBallSaverTimerFrames], a
|
|
ld a, 90
|
|
ld [wBallSaverTimerSeconds], a
|
|
ld a, $2
|
|
ld [wNumTimesBallSavedTextWillDisplay], a
|
|
ret
|
|
|
|
Func_ef83: ; 0xef83
|
|
ld a, $1
|
|
ld [wd51d], a
|
|
ld a, $f
|
|
ld [wd517], a
|
|
xor a
|
|
ld [wd85d], a
|
|
call Func_310a
|
|
rst AdvanceFrame
|
|
ld a, $0
|
|
callba PlayPikachuSoundClip
|
|
ld a, $1
|
|
ld [wd85d], a
|
|
ret
|
|
|
|
Func_efa7: ; 0xefa7
|
|
callba Func_30164
|
|
ret
|
|
|
|
Func_efb2: ; 0xefb2
|
|
ld a, $8
|
|
call Func_a21
|
|
ld [wCurSlotBonus], a
|
|
ld b, $80
|
|
.asm_efbc
|
|
push bc
|
|
ld a, b
|
|
and $f
|
|
jr nz, .asm_efd8
|
|
bit 4, b
|
|
jr z, .asm_efd0
|
|
ld a, [wCurSlotBonus]
|
|
add (SmallReward100PointsOnPic_Pointer - BillboardPicturePointers) / 3
|
|
call LoadBillboardPicture
|
|
jr .asm_efd8
|
|
|
|
.asm_efd0
|
|
ld a, [wCurSlotBonus]
|
|
add (SmallReward100PointsOnPic_Pointer - BillboardPicturePointers) / 3
|
|
call LoadBillboardOffPicture
|
|
.asm_efd8
|
|
rst AdvanceFrame
|
|
pop bc
|
|
ld a, [hNewlyPressedButtons]
|
|
and FLIPPERS
|
|
jr nz, .asm_efe3
|
|
dec b
|
|
jr nz, .asm_efbc
|
|
.asm_efe3
|
|
ld a, [wCurSlotBonus]
|
|
inc a
|
|
swap a
|
|
ld e, a
|
|
ld d, $0
|
|
ld bc, $0000
|
|
call AddBCDEToCurBufferValue
|
|
ret
|
|
|
|
Func_eff3: ; 0xeff3
|
|
ld a, $8
|
|
call Func_a21
|
|
ld [wCurSlotBonus], a
|
|
ld b, $80
|
|
.asm_effd
|
|
push bc
|
|
ld a, b
|
|
and $f
|
|
jr nz, .asm_f019
|
|
bit 4, b
|
|
jr z, .asm_f011
|
|
ld a, [wCurSlotBonus]
|
|
add (BigReward1000000PointsOnPic_Pointer - BillboardPicturePointers) / 3
|
|
call LoadBillboardPicture
|
|
jr .asm_f019
|
|
|
|
.asm_f011
|
|
ld a, [wCurSlotBonus]
|
|
add (BigReward1000000PointsOnPic_Pointer - BillboardPicturePointers) / 3
|
|
call LoadBillboardOffPicture
|
|
.asm_f019
|
|
rst AdvanceFrame
|
|
pop bc
|
|
ld a, [hNewlyPressedButtons]
|
|
and FLIPPERS
|
|
jr nz, .asm_f024
|
|
dec b
|
|
jr nz, .asm_effd
|
|
.asm_f024
|
|
ld a, [wCurSlotBonus]
|
|
inc a
|
|
swap a
|
|
ld c, a
|
|
ld b, $0
|
|
ld de, $0000
|
|
call AddBCDEToCurBufferValue
|
|
ret
|
|
|
|
Func_f034: ; 0xf034
|
|
ld a, $1
|
|
ld [wd622], a
|
|
ret
|
|
|
|
Func_f03a: ; 0xf03a
|
|
ld a, $2
|
|
ld [wd622], a
|
|
ret
|
|
|
|
UpgradeBallBlueField: ; 0xf040
|
|
; load approximately 1 minute of frames into wBallTypeCounter
|
|
ld a, $10
|
|
ld [wBallTypeCounter], a
|
|
ld a, $e
|
|
ld [wBallTypeCounter + 1], a
|
|
ld a, [wBallType]
|
|
cp MASTER_BALL
|
|
jr z, .masterBall
|
|
lb de, $06, $3a
|
|
call PlaySoundEffect
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld de, FieldMultiplierText
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
; upgrade ball type
|
|
ld a, [wBallType]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallTypeProgressionBlueField
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wBallType], a
|
|
add $30
|
|
ld [wBottomMessageText + $12], a
|
|
jr .asm_f0b0
|
|
|
|
.masterBall
|
|
lb de, $0f, $4d
|
|
call PlaySoundEffect
|
|
ld bc, OneMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $100
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5d4
|
|
ld de, DigitsText1to8
|
|
call Func_32cc
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5cc
|
|
ld de, FieldMultiplierSpecialBonusText
|
|
call LoadTextHeader
|
|
.asm_f0b0
|
|
callba Func_155bb
|
|
ret
|
|
|
|
BallTypeProgressionBlueField: ; 0xf0bb
|
|
; Determines the next upgrade for the Ball.
|
|
db GREAT_BALL ; POKE_BALL -> GREAT_BALL
|
|
db GREAT_BALL ; unused
|
|
db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
|
|
db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
|
|
db MASTER_BALL ; unused
|
|
db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
|
|
|
|
SlotBonusMultiplier: ; 0xf0c1
|
|
ld a, $4
|
|
call Func_a21
|
|
ld [wCurSlotBonus], a
|
|
ld b, $80
|
|
.asm_f0cb
|
|
push bc
|
|
ld a, b
|
|
and $f
|
|
jr nz, .asm_f0e7
|
|
bit 4, b
|
|
jr z, .asm_f0df
|
|
ld a, [wCurSlotBonus]
|
|
add (BonusMultiplierX1OnPic_Pointer - BillboardPicturePointers) / 3
|
|
call LoadBillboardPicture
|
|
jr .asm_f0e7
|
|
|
|
.asm_f0df
|
|
ld a, [wCurSlotBonus]
|
|
add (BonusMultiplierX1OnPic_Pointer - BillboardPicturePointers) / 3
|
|
call LoadBillboardOffPicture
|
|
.asm_f0e7
|
|
rst AdvanceFrame
|
|
pop bc
|
|
ld a, [hNewlyPressedButtons]
|
|
and FLIPPERS
|
|
jr nz, .asm_f0f2
|
|
dec b
|
|
jr nz, .asm_f0cb
|
|
.asm_f0f2
|
|
ld a, $3
|
|
ld [wd610], a
|
|
xor a
|
|
ld [wd611], a
|
|
ld [wd612], a
|
|
ld a, [wd482]
|
|
call .DivideBy25
|
|
ld b, c
|
|
ld a, [wCurSlotBonus]
|
|
inc a
|
|
ld hl, wd482
|
|
add [hl]
|
|
cp 100
|
|
jr c, .asm_f113
|
|
ld a, 99
|
|
.asm_f113
|
|
ld [hl], a
|
|
call .DivideBy25
|
|
ld a, c
|
|
cp b
|
|
callba nz, Func_30164
|
|
callba Func_16f95
|
|
ld a, [wd60c]
|
|
callba Func_f154 ; no need for BankSwitch here...
|
|
ld a, [wd60d]
|
|
add $14
|
|
callba Func_f154 ; no need for BankSwitch here...
|
|
ret
|
|
|
|
.DivideBy25: ; 0xf14a
|
|
ld c, $0
|
|
.div_25
|
|
cp 25
|
|
ret c
|
|
sub 25
|
|
inc c
|
|
jr .div_25
|
|
|
|
Func_f154: ; 0xf154
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
CallTable_f15a: ; 0xf15a
|
|
padded_dab Func_16f28
|
|
padded_dab Func_16f28
|
|
padded_dab Func_16f28
|
|
padded_dab Func_16f28
|
|
padded_dab Func_1d5f2
|
|
padded_dab Func_1d5f2
|
|
|
|
Func_f172: ; 0xf172
|
|
ld a, $1
|
|
ld [wd623], a
|
|
ret
|
|
|
|
LoadBillboardPicture: ; 0xf178
|
|
; Loads a billboard picture's tiles into VRAM
|
|
; input: a = billboard picture id
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
add c ; a has been multplied by 3 becuase entires in BillboardPicturePointers are 3 bytes long
|
|
ld c, a
|
|
ld hl, BillboardPicturePointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld h, b
|
|
ld l, c
|
|
ld de, vTilesSH tile $10 ; destination address to copy the tiles
|
|
ld bc, $180 ; billboard pictures are $180 bytes
|
|
call LoadVRAMData ; loads the tiles into VRAM
|
|
pop hl
|
|
ret
|
|
|
|
LoadBillboardOffPicture: ; 0xf196
|
|
; Loads the dimly-lit "off" version of a billboard picture into VRAM
|
|
; Input: a = billboard picture id
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
add c
|
|
ld c, a
|
|
ld hl, BillboardPicturePointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld h, b
|
|
ld l, c
|
|
ld bc, $0180 ; get the address of the "off" version of the picture
|
|
add hl, bc
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $0180
|
|
call LoadVRAMData
|
|
pop hl
|
|
ret
|
|
|
|
INCLUDE "data/billboard/billboard_pic_pointers.asm"
|
|
|
|
LoadGreyBillboardPaletteData: ; 0xf269
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .loadPaletteMap
|
|
ld a, BANK(StageRedFieldBottomBGPalette5) ; also used in blue stage
|
|
ld hl, StageRedFieldBottomBGPalette5
|
|
ld de, $0030
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.loadPaletteMap
|
|
ld a, BANK(GreyBillboardPaletteMap)
|
|
ld de, GreyBillboardPaletteMap
|
|
hlCoord 7, 4, vBGMap
|
|
call LoadBillboardPaletteMap
|
|
ret
|
|
|
|
GreyBillboardPaletteMap:
|
|
db $06, $06, $06, $06, $06, $06
|
|
db $06, $06, $06, $06, $06, $06
|
|
db $06, $06, $06, $06, $06, $06
|
|
db $06, $06, $06, $06, $06, $06
|
|
|
|
Func_f2a0: ; 0xf2a0
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
add c
|
|
ld c, a
|
|
ld hl, PaletteDataPointerTable_f2be
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld h, b
|
|
ld l, c
|
|
ld de, $0030
|
|
ld bc, $0010
|
|
call Func_7dc
|
|
pop hl
|
|
ret
|
|
|
|
PaletteDataPointerTable_f2be: ; 0xf2be
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
|
|
dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
|
|
dwb PaletteData_dcc10, Bank(PaletteData_dcc10)
|
|
dwb PaletteData_dcc18, Bank(PaletteData_dcc18)
|
|
dwb PaletteData_dcc20, Bank(PaletteData_dcc20)
|
|
dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
|
|
dwb PaletteData_dcc28, Bank(PaletteData_dcc28)
|
|
dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
|
|
dwb PaletteData_dcc30, Bank(PaletteData_dcc30)
|
|
dwb PaletteData_dcc38, Bank(PaletteData_dcc38)
|
|
dwb PaletteData_dcc40, Bank(PaletteData_dcc40)
|
|
dwb PaletteData_dcc48, Bank(PaletteData_dcc48)
|
|
dwb PaletteData_dcc50, Bank(PaletteData_dcc50)
|
|
dwb PaletteData_dcc58, Bank(PaletteData_dcc58)
|
|
dwb PaletteData_dcc60, Bank(PaletteData_dcc60)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
|
|
|
|
Data_f339: ; 0xf339
|
|
db $02, $06, $00, $08, $04, $02, $06, $08, $04, $00, $06, $02, $04, $08, $00, $02
|
|
db $06, $02, $04, $08, $00, $06, $04, $08, $02, $00, $06, $08, $02, $00, $06, $08
|
|
db $02, $04, $00, $08, $06, $04, $00, $02, $06, $04, $00, $08, $06, $04, $02, $08
|
|
db $00, $08, $02, $04, $00, $08, $06, $02, $04, $00, $06, $08, $04, $00, $06, $02
|
|
db $00, $08, $02, $04, $00, $08, $06, $04, $02, $08, $00, $06, $02, $08, $00, $06
|
|
db $02, $00, $06, $04, $02, $00, $06, $08, $02, $04, $00, $06, $08, $04, $02, $06
|
|
db $00, $02, $08, $04, $00, $02, $06, $04, $08, $02, $06, $00, $04, $08, $06, $02
|
|
db $04, $08, $06, $02, $00, $08, $04, $06, $00, $02, $04, $06, $00, $02, $04, $08
|
|
db $02, $00, $04, $06, $02, $00, $08, $04, $02, $00, $06, $04, $08, $00, $06, $04
|
|
db $04, $00, $02, $08, $04, $06, $00, $08, $02, $04, $06, $08, $00, $04, $06, $02
|
|
db $06, $08, $04, $02, $06, $00, $08, $02, $04, $00, $06, $02, $08, $04, $06, $02
|
|
db $04, $06, $02, $00, $08, $04, $06, $00, $08, $02, $06, $00, $08, $02, $04, $00
|
|
db $02, $00, $06, $04, $02, $08, $06, $00, $04, $08, $02, $00, $04, $06, $08, $00
|
|
db $08, $06, $04, $00, $08, $06, $02, $00, $08, $06, $04, $00, $08, $06, $04, $02
|
|
db $02, $00, $06, $04, $08, $02, $00, $04, $08, $02, $00, $04, $06, $02, $08, $00
|
|
db $04, $06, $08, $02, $00, $06, $04, $08, $02, $06, $00, $08, $04, $06, $02, $08
|
|
|
|
Data_f439: ; 0xf439
|
|
db $05, $19, $0C, $4C, $00, $4C, $03, $4C, $FF, $00, $05, $19, $0C, $4C, $00, $4C
|
|
db $07, $4C, $FF, $00, $05, $19, $0C, $44, $00, $44, $03, $44, $06, $16, $05, $19
|
|
db $0C, $4C, $00, $4C, $08, $4C, $FF, $00, $01, $4C, $06, $66, $0D, $4C, $FF, $00
|
|
db $FF, $00, $05, $19, $0C, $4C, $00, $4C, $03, $4C, $FF, $00, $05, $19, $0C, $4C
|
|
db $00, $4C, $07, $4C, $FF, $00, $05, $19, $0C, $44, $00, $44, $03, $44, $06, $16
|
|
db $05, $19, $0C, $4C, $00, $4C, $08, $4C, $FF, $00, $01, $3F, $06, $3F, $0D, $3F
|
|
db $09, $3F, $FF, $00, $05, $11, $0C, $4F, $00, $4F, $03, $4F, $FF, $00, $05, $11
|
|
db $0C, $4F, $01, $4F, $07, $4F, $FF, $00, $05, $11, $0C, $44, $00, $44, $03, $44
|
|
db $06, $1E, $05, $11, $0C, $4F, $01, $4F, $08, $4F, $FF, $00, $02, $66, $06, $4C
|
|
db $0D, $4C, $FF, $00, $FF, $00, $05, $0A, $0C, $51, $00, $51, $03, $51, $FF, $00
|
|
db $05, $0A, $0C, $51, $01, $51, $07, $51, $FF, $00, $05, $0A, $0C, $44, $00, $44
|
|
db $03, $44, $06, $26, $05, $0A, $0C, $51, $01, $51, $08, $51, $FF, $00, $01, $3F
|
|
db $06, $3F, $0D, $3F, $09, $3F, $FF, $00, $05, $0A, $0C, $51, $00, $51, $03, $51
|
|
db $FF, $00, $05, $0A, $0C, $51, $01, $51, $07, $51, $FF, $00, $05, $0A, $0C, $44
|
|
db $00, $44, $03, $44, $06, $26, $05, $0A, $0C, $51, $01, $51, $08, $51, $FF, $00
|
|
db $01, $26, $06, $26, $0D, $26, $04, $8C, $FF, $00
|
|
|
|
Func_f533: ; 0xf533
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_f55c
|
|
call Func_f57f
|
|
ld a, $60
|
|
ld [hWY], a
|
|
dec a
|
|
ld [hLYC], a
|
|
ld a, $fd
|
|
ld [hLCDCMask], a
|
|
call Func_f5a0
|
|
ld a, $90
|
|
ld [hWY], a
|
|
ld a, $83
|
|
ld [hLYC], a
|
|
ld [hLastLYC], a
|
|
ld a, $ff
|
|
ld [hLCDCMask], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
ret
|
|
|
|
Func_f55c: ; 0xf55c
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .gameboyColor
|
|
ld a, BANK(GFX_d61c0)
|
|
ld hl, GFX_d61c0
|
|
ld de, vTilesSH tile $03
|
|
ld bc, $0010
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
.gameboyColor
|
|
ld a, BANK(GFX_d63c0)
|
|
ld hl, GFX_d63c0
|
|
ld de, vTilesSH tile $03
|
|
ld bc, $0010
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
Func_f57f: ; 0xf57f
|
|
xor a
|
|
ld [wd4aa], a
|
|
ld hl, wBottomMessageText
|
|
ld a, $81
|
|
ld b, $40
|
|
.clearLoop
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .clearLoop
|
|
ld a, $0
|
|
ld hl, wBottomMessageText
|
|
ld de, vBGWin
|
|
ld bc, $00c0
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
Func_f5a0: ; 0xf5a0
|
|
ld de, wBottomMessageText + $40
|
|
ld hl, BonusPointsText
|
|
call PrintTextNoHeader
|
|
ld de, wBottomMessageText + $80
|
|
ld hl, SubtotalPointsText
|
|
call PrintTextNoHeader
|
|
ld hl, wd489
|
|
call Func_f8b5
|
|
ld hl, wd48f
|
|
call Func_f8b5
|
|
ld a, $1
|
|
ld [wd4ab], a
|
|
call ValidateSignature6
|
|
call Func_f64e
|
|
call Func_f60a
|
|
call Func_f676
|
|
ld a, $1
|
|
ld [wd4ab], a
|
|
call Func_f70d
|
|
ld a, [wGameOver]
|
|
and a
|
|
ret z
|
|
ld a, $10
|
|
call SetSongBank
|
|
ld de, $0005
|
|
call PlaySong
|
|
ld hl, wBottomMessageText
|
|
ld bc, $0040
|
|
call Func_f81b
|
|
ld de, wBottomMessageText + $20
|
|
ld hl, GameOverText
|
|
call PrintTextNoHeader
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
.asm_f602
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_f602
|
|
ret
|
|
|
|
Func_f60a: ; 0xf60a
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_f60d: ; 0xf60d
|
|
; STAGE_RED_FIELD_TOP
|
|
dw Func_f945
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw Func_f945
|
|
dw Func_f9f2
|
|
dw Func_f9f2
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_f9f3
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
dw Func_f9f3
|
|
; STAGE_GENGAR_BONUS
|
|
dw Func_faf6
|
|
; STAGE_GENGAR_BONUS
|
|
dw Func_faf6
|
|
; STAGE_MEWTWO_BONUS
|
|
dw Func_faf7
|
|
; STAGE_MEWTWO_BONUS
|
|
dw Func_faf7
|
|
; STAGE_MEOWTH_BONUS
|
|
dw Func_faf8
|
|
; STAGE_MEOWTH_BONUS
|
|
dw Func_faf8
|
|
|
|
ValidateSignature6: ; 0xf626
|
|
ld de, wBottomMessageText + $01
|
|
ld hl, NumPokemonCaughtText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $01
|
|
ld a, [wd628]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd628
|
|
ld de, PointsData_f921
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_f64e: ; 0xf64e
|
|
ld de, wBottomMessageText
|
|
ld hl, NumPokemonEvolvedText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText
|
|
ld a, [wd629]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd629
|
|
ld de, PointsData_f927
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_f676: ; 0xf676
|
|
ld b, $4
|
|
.asm_f678
|
|
push bc
|
|
ld hl, wBottomMessageText + $20
|
|
ld de, wBottomMessageText
|
|
ld bc, $00e0
|
|
call LocalCopyData
|
|
ld bc, $00c0
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld a, [wd4ab]
|
|
and a
|
|
jr z, .asm_f69f
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_f69f
|
|
xor a
|
|
ld [wd4ab], a
|
|
.asm_f69f
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_f678
|
|
ld de, wBottomMessageText + $40
|
|
ld hl, MultiplierPointsText
|
|
call PrintTextNoHeader
|
|
ld de, wBottomMessageText + $80
|
|
ld hl, TotalPointsText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $50
|
|
ld a, [wd482]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0040
|
|
call Func_f80d
|
|
.asm_f6c7
|
|
push de
|
|
push hl
|
|
ld hl, wd494
|
|
ld de, wBottomMessageText + $86
|
|
call Func_f8bd
|
|
ld bc, $0040
|
|
ld de, $0080
|
|
call Func_f80d
|
|
lb de, $00, $3e
|
|
call PlaySoundEffect
|
|
ld a, [wd4ab]
|
|
and a
|
|
jr z, .asm_f6f2
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_f6f2
|
|
xor a
|
|
ld [wd4ab], a
|
|
.asm_f6f2
|
|
pop hl
|
|
pop de
|
|
ld a, [wd482]
|
|
and a
|
|
jr z, .asm_f709
|
|
dec a
|
|
ld [wd482], a
|
|
ld hl, wd48f
|
|
ld de, wd489
|
|
call AddBigBCD6
|
|
jr .asm_f6c7
|
|
|
|
.asm_f709
|
|
call Func_f83a
|
|
ret
|
|
|
|
Func_f70d: ; 0xf70d
|
|
ld b, $4
|
|
.asm_f70f
|
|
push bc
|
|
ld hl, wBottomMessageText + $20
|
|
ld de, wBottomMessageText
|
|
ld bc, $00e0
|
|
call LocalCopyData
|
|
ld bc, $00c0
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld a, [wd4ab]
|
|
and a
|
|
jr z, .asm_f736
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_f736
|
|
xor a
|
|
ld [wd4ab], a
|
|
.asm_f736
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_f70f
|
|
ld de, wBottomMessageText + $60
|
|
ld hl, ScoreText
|
|
call PrintTextNoHeader
|
|
ld hl, wScore + $5
|
|
ld de, wBottomMessageText + $66
|
|
call Func_f8bd
|
|
ld bc, $0040
|
|
ld de, $0060
|
|
call Func_f80d
|
|
lb de, $00, $3e
|
|
call PlaySoundEffect
|
|
ld a, [wd4ab]
|
|
and a
|
|
jr z, .asm_f76c
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_f76c
|
|
xor a
|
|
ld [wd4ab], a
|
|
.asm_f76c
|
|
ld hl, wScore
|
|
ld de, wd48f
|
|
call AddBigBCD6
|
|
ld hl, wScore + $5
|
|
ld de, wBottomMessageText + $66
|
|
call Func_f8bd
|
|
ld bc, $0040
|
|
ld de, $0060
|
|
call Func_f80d
|
|
call Func_f83a
|
|
call Func_f83a
|
|
ret
|
|
|
|
Func_f78e: ; 0xf78e
|
|
push hl
|
|
call ConvertHexByteToDecWord
|
|
pop hl
|
|
ld c, $1
|
|
ld a, d
|
|
call .asm_f7a4
|
|
inc hl
|
|
ld a, e
|
|
swap a
|
|
call .asm_f7a4
|
|
inc hl
|
|
ld c, $0
|
|
ld a, e
|
|
; fall through
|
|
.asm_f7a4
|
|
and $f
|
|
jr nz, .asm_f7ab
|
|
ld a, c
|
|
and a
|
|
ret nz
|
|
.asm_f7ab
|
|
add $86
|
|
ld [hl], a
|
|
ld c, $0
|
|
ret
|
|
|
|
PrintTextNoHeader: ; 0xf7b1
|
|
ld a, [wd805]
|
|
and a
|
|
jr nz, .asm_f7e0
|
|
.loop
|
|
ld a, [hli]
|
|
and a
|
|
ret z
|
|
cp "0"
|
|
jr c, .asm_f7c6
|
|
cp "9" + 1
|
|
jr nc, .asm_f7c6
|
|
add $56
|
|
jr .asm_f7dc
|
|
|
|
.asm_f7c6
|
|
cp "A"
|
|
jr c, .asm_f7d2
|
|
cp "Z" + 1
|
|
jr nc, .asm_f7d2
|
|
add $bf
|
|
jr .asm_f7dc
|
|
|
|
.asm_f7d2
|
|
cp "e"
|
|
jr nz, .asm_f7da
|
|
ld a, $83
|
|
jr .asm_f7dc
|
|
|
|
.asm_f7da
|
|
ld a, $81
|
|
.asm_f7dc
|
|
ld [de], a
|
|
inc de
|
|
jr .loop
|
|
|
|
.asm_f7e0
|
|
ld a, [hli]
|
|
and a
|
|
ret z
|
|
cp "0"
|
|
jr c, .asm_f7ef
|
|
cp "9" + 1
|
|
jr nc, .asm_f7ef
|
|
add $56
|
|
jr .asm_f809
|
|
|
|
.asm_f7ef
|
|
cp $a0
|
|
jr c, .asm_f7fb
|
|
cp $e0
|
|
jr nc, .asm_f7fb
|
|
sub $80
|
|
jr .asm_f809
|
|
|
|
.asm_f7fb
|
|
cp $e0
|
|
jr c, .asm_f807
|
|
cp $f4
|
|
jr nc, .asm_f807
|
|
sub $50
|
|
jr .asm_f809
|
|
|
|
.asm_f807
|
|
ld a, $81
|
|
.asm_f809
|
|
ld [de], a
|
|
inc de
|
|
jr .asm_f7e0
|
|
|
|
Func_f80d: ; 0xf80d
|
|
hlCoord 0, 0, vBGWin
|
|
add hl, de
|
|
push hl
|
|
ld hl, wBottomMessageText
|
|
add hl, de
|
|
pop de
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
Func_f81b: ; 0xf81b
|
|
ld a, $81
|
|
ld [hli], a
|
|
dec bc
|
|
ld a, b
|
|
or c
|
|
jr nz, Func_f81b
|
|
ret
|
|
|
|
Func_f824: ; 0xf824
|
|
call Func_f83a
|
|
ld hl, wBottomMessageText
|
|
ld bc, $0040
|
|
call Func_f81b
|
|
ld hl, wBottomMessageText + $48
|
|
ld bc, $0038
|
|
call Func_f81b
|
|
ret
|
|
|
|
Func_f83a: ; 0xf83a
|
|
ld a, [wd4ab]
|
|
and a
|
|
ret z
|
|
ld b, $46
|
|
.asm_f841
|
|
push bc
|
|
rst AdvanceFrame
|
|
pop bc
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr nz, .asm_f84e
|
|
dec b
|
|
jr nz, .asm_f841
|
|
ret
|
|
|
|
.asm_f84e
|
|
xor a
|
|
ld [wd4ab], a
|
|
ret
|
|
|
|
Func_f853: ; 0xf853
|
|
push hl
|
|
ld hl, wd483
|
|
call Func_f8b5
|
|
pop hl
|
|
.asm_f85b
|
|
push de
|
|
push hl
|
|
ld hl, wd488
|
|
ld de, wBottomMessageText + $46
|
|
call Func_f8bd
|
|
ld bc, $0040
|
|
ld de, $0040
|
|
call Func_f80d
|
|
lb de, $00, $3e
|
|
call PlaySoundEffect
|
|
ld a, [wd4ab]
|
|
and a
|
|
jr z, .asm_f886
|
|
rst AdvanceFrame
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_f886
|
|
xor a
|
|
ld [wd4ab], a
|
|
.asm_f886
|
|
pop hl
|
|
pop de
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_f899
|
|
dec [hl]
|
|
push de
|
|
push hl
|
|
ld hl, wd483
|
|
call AddBigBCD6
|
|
pop hl
|
|
pop de
|
|
jr .asm_f85b
|
|
|
|
.asm_f899
|
|
ld hl, wd489
|
|
ld de, wd483
|
|
call AddBigBCD6
|
|
ld hl, wd48e
|
|
ld de, wBottomMessageText + $86
|
|
call Func_f8bd
|
|
ld bc, $0040
|
|
ld de, $0080
|
|
call Func_f80d
|
|
ret
|
|
|
|
Func_f8b5: ; 0xf8b5
|
|
xor a
|
|
ld b, $6
|
|
.asm_f8b8
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_f8b8
|
|
ret
|
|
|
|
Func_f8bd: ; 0xf8bd
|
|
ld bc, $0c01
|
|
.asm_f8c0
|
|
ld a, [hl]
|
|
swap a
|
|
call Func_f8d5
|
|
inc de
|
|
dec b
|
|
ld a, [hld]
|
|
call Func_f8d5
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_f8c0
|
|
ld a, $86
|
|
ld [de], a
|
|
inc de
|
|
ret
|
|
|
|
Func_f8d5: ; 0xf8d5
|
|
and $f
|
|
jr nz, .asm_f8e0
|
|
ld a, b
|
|
dec a
|
|
jr z, .asm_f8e0
|
|
ld a, c
|
|
and a
|
|
ret nz
|
|
.asm_f8e0
|
|
add $86
|
|
ld [de], a
|
|
ld c, $0
|
|
ld a, b
|
|
cp $c
|
|
jr z, .asm_f8f5
|
|
cp $9
|
|
jr z, .asm_f8f5
|
|
cp $6
|
|
jr z, .asm_f8f5
|
|
cp $3
|
|
ret nz
|
|
.asm_f8f5
|
|
push de
|
|
ld a, e
|
|
add $20
|
|
ld e, a
|
|
jr nc, .asm_f8fd
|
|
inc d
|
|
.asm_f8fd
|
|
ld a, $82
|
|
ld [de], a
|
|
pop de
|
|
ret
|
|
|
|
AddBigBCD6: ; 0xf902
|
|
x = 0
|
|
rept 6
|
|
ld a, [de]
|
|
if x == 0
|
|
add [hl]
|
|
else
|
|
adc [hl]
|
|
endc
|
|
x = x + 1
|
|
daa
|
|
ld [hli], a
|
|
inc de
|
|
endr
|
|
ret
|
|
|
|
PointsData_f921: ; 0xf921
|
|
bigBCD6 50000
|
|
PointsData_f927: ; 0xf927
|
|
bigBCD6 75000
|
|
PointsData_f92d: ; 0xf92d
|
|
bigBCD6 7500
|
|
PointsData_f933: ; 0xf933
|
|
bigBCD6 5000
|
|
PointsData_f939: ; 0xf939
|
|
bigBCD6 2500
|
|
PointsData_f93f: ; 0xf93f
|
|
bigBCD6 1000
|
|
|
|
Func_f945: ; 0xf945
|
|
call Func_f952
|
|
call Func_f97a
|
|
call Func_f9a2
|
|
call Func_f9ca
|
|
ret
|
|
|
|
Func_f952: ; 0xf952
|
|
ld de, wBottomMessageText + $03
|
|
ld hl, BellsproutCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $03
|
|
ld a, [wd62a]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd62a
|
|
ld de, PointsData_f92d
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_f97a: ; 0xf97a
|
|
ld de, wBottomMessageText + $04
|
|
ld hl, DugtrioCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $04
|
|
ld a, [wd62b]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd62b
|
|
ld de, PointsData_f933
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_f9a2: ; 0xf9a2
|
|
ld de, wBottomMessageText + $03
|
|
ld hl, CaveShotCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $03
|
|
ld a, [wd62c]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd62c
|
|
ld de, PointsData_f939
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_f9ca: ; 0xf9ca
|
|
ld de, wBottomMessageText + $01
|
|
ld hl, SpinnerTurnsCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $01
|
|
ld a, [wd62d]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd62d
|
|
ld de, PointsData_f93f
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_f9f2: ; 0xf9f2
|
|
ret
|
|
|
|
Func_f9f3: ; 0xf9f3
|
|
call Func_fa06
|
|
call Func_fa2e
|
|
call Func_fa56
|
|
call Func_fa7e
|
|
call Func_faa6
|
|
call Func_face
|
|
ret
|
|
|
|
Func_fa06: ; 0xfa06
|
|
ld de, wBottomMessageText + $04
|
|
ld hl, CloysterCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $04
|
|
ld a, [wd63b]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd63b
|
|
ld de, PointsData_f92d
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_fa2e: ; 0xfa2e
|
|
ld de, wBottomMessageText + $04
|
|
ld hl, SlowpokeCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $04
|
|
ld a, [wd63a]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd63a
|
|
ld de, PointsData_f92d
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_fa56: ; 0xfa56
|
|
ld de, wBottomMessageText + $04
|
|
ld hl, PoliwagCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $04
|
|
ld a, [wd63d]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd63d
|
|
ld de, PointsData_f933
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_fa7e: ; 0xfa7e
|
|
ld de, wBottomMessageText + $04
|
|
ld hl, PsyduckCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $04
|
|
ld a, [wd63c]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd63c
|
|
ld de, PointsData_f933
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_faa6: ; 0xfaa6
|
|
ld de, wBottomMessageText + $03
|
|
ld hl, CaveShotCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $03
|
|
ld a, [wd62c]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd62c
|
|
ld de, PointsData_f939
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_face: ; 0xface :)
|
|
ld de, wBottomMessageText + $01
|
|
ld hl, SpinnerTurnsCounterText
|
|
call PrintTextNoHeader
|
|
ld hl, wBottomMessageText + $01
|
|
ld a, [wd62d]
|
|
call Func_f78e
|
|
ld bc, $0040
|
|
ld de, $0000
|
|
call Func_f80d
|
|
ld hl, wd62d
|
|
ld de, PointsData_f93f
|
|
call Func_f853
|
|
call Func_f824
|
|
ret
|
|
|
|
Func_faf6: ; 0xfaf6
|
|
ret
|
|
|
|
Func_faf7: ; 0xfaf7
|
|
ret
|
|
|
|
Func_faf8: ; 0xfaf8
|
|
ret
|
|
|
|
; XXX
|
|
ret
|
|
|
|
; XXX
|
|
ret
|
|
|
|
SECTION "bank4", ROMX, BANK[$4]
|
|
|
|
Func_10000: ; 0x10000
|
|
ld c, a
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, c
|
|
ld [wd54c], a
|
|
ld a, [wSpecialMode]
|
|
cp $1
|
|
jp z, Func_10a95
|
|
cp $2
|
|
jr nz, .asm_10021
|
|
callba Func_301ce
|
|
ret
|
|
|
|
.asm_10021
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
CallTable_10027: ; 0x10027
|
|
; STAGE_RED_FIELD_TOP
|
|
padded_dab Func_20000
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
padded_dab Func_20000
|
|
padded_dab Func_20000
|
|
padded_dab Func_20000
|
|
; STAGE_BLUE_FIELD_TOP
|
|
padded_dab Func_202bc
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
padded_dab Func_202bc
|
|
|
|
StartCatchEmMode: ; 0x1003f
|
|
ld a, [wInSpecialMode] ; current game mode?
|
|
and a
|
|
ret nz ; don't start catch 'em mode if we're already doing something like Map Move mode
|
|
ld a, $1
|
|
ld [wInSpecialMode], a ; set special mode flag
|
|
xor a
|
|
ld [wSpecialMode], a
|
|
ld [wd54d], a
|
|
ld a, [wCurrentStage]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
push bc
|
|
ld hl, WildMonOffsetsPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wCurrentMap]
|
|
sla a
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld b, a
|
|
pop de
|
|
ld hl, WildMonPointers
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
add hl, bc
|
|
call GenRandom
|
|
and $f
|
|
call CheckForMew
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc
|
|
ld a, [wRareMonsFlag] ; this gets set to $08 when the rare mons should be used.
|
|
sla a
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hl] ; a contains mon id
|
|
dec a
|
|
ld [wCurrentCatchEmMon], a
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, EvolutionLineIds
|
|
add hl, bc
|
|
ld c, [hl]
|
|
ld h, b
|
|
ld l, c
|
|
add hl, bc
|
|
add hl, bc ; multiply the evolution line id by 3
|
|
ld bc, Data_13685
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [wd5c1], a
|
|
ld [wd5be], a
|
|
ld a, [hli]
|
|
ld [wd5c2], a
|
|
ld a, [hli]
|
|
ld [wd5c3], a
|
|
ld hl, wd586
|
|
ld a, [wd5b6]
|
|
ld c, a
|
|
and a
|
|
ld b, $18
|
|
jr z, .asm_100c7
|
|
.asm_100ba
|
|
ld a, $1
|
|
ld [hli], a
|
|
xor a
|
|
ld [hli], a
|
|
dec b
|
|
dec c
|
|
jr nz, .asm_100ba
|
|
ld a, b
|
|
and a
|
|
jr z, .asm_100ce
|
|
.asm_100c7
|
|
xor a
|
|
ld [hli], a
|
|
inc a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_100c7
|
|
.asm_100ce
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
ld hl, CatchEmTimerData
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld b, a
|
|
callba StartTimer
|
|
callba InitBallSaverForCatchEmMode
|
|
call Func_10696
|
|
call Func_3579
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_1011d
|
|
ld a, BANK(StageRedFieldBottomBaseGameBoyColorGfx)
|
|
ld hl, StageRedFieldBottomBaseGameBoyColorGfx + $300
|
|
ld de, vTilesSH tile $2e
|
|
ld bc, $0020
|
|
call LoadOrCopyVRAMData
|
|
ld a, $0
|
|
ld hl, CatchBarTiles
|
|
deCoord 6, 8, vBGMap
|
|
ld bc, (CatchBarTilesEnd - CatchBarTiles)
|
|
call LoadOrCopyVRAMData
|
|
.asm_1011d
|
|
call SetPokemonSeenFlag
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_10124: ; 0x10124
|
|
; STAGE_RED_FIELD_TOP
|
|
dw Func_10871
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw Func_10871
|
|
dw DoNothing_1098a
|
|
dw DoNothing_1098a
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_1098c
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
dw Func_1098c
|
|
|
|
CheckForMew:
|
|
; Sets the encountered mon to Mew if the following conditions are met:
|
|
; 1. Random number in register a equals $f
|
|
; 2. The current map is Indigo Plateau (it does a roundabout way of checking this)
|
|
; 3. The right alley has been hit three times
|
|
; 4. The Mewtwo Bonus Stage completion counter equals 2.
|
|
push af
|
|
cp $f ; random number equals $f
|
|
jr nz, .asm_10155
|
|
ld a, c
|
|
cp $60 ; check if low-byte of map mons offset is Indigo Plateau
|
|
jr nz, .asm_10155
|
|
ld a, b
|
|
cp $1 ; check if high-byte of map mons offset is Indigo Plateau
|
|
jr nz, .asm_10155
|
|
ld a, [wRareMonsFlag]
|
|
cp $8
|
|
jr nz, .asm_10155
|
|
ld a, [wNumMewtwoBonusCompletions]
|
|
cp $2
|
|
jr nz, .asm_10155
|
|
pop af
|
|
xor a
|
|
ld [wNumMewtwoBonusCompletions], a
|
|
ld a, $10
|
|
ret
|
|
|
|
.asm_10155
|
|
pop af
|
|
ret
|
|
|
|
Func_10157: ; 0x10157
|
|
xor a
|
|
ld [wInSpecialMode], a
|
|
ld [wWildMonIsHittable], a
|
|
ld [wd5c6], a
|
|
ld [wd5b6], a
|
|
ld [wNumMonHits], a
|
|
call Func_10488
|
|
callba Func_86d2
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_10178: ; 0x10178
|
|
; STAGE_RED_FIELD_TOP
|
|
dw Func_108f5
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw Func_108f5
|
|
dw DoNothing_1098b
|
|
dw DoNothing_1098b
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_109fc
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
dw Func_109fc
|
|
|
|
Func_10184: ; 0x10184
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_10199
|
|
inc b
|
|
.asm_10199
|
|
ld hl, MonBillboardPicPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [$ff8c], a
|
|
ld a, [hli]
|
|
ld [$ff8d], a
|
|
ld a, [hl]
|
|
ld [$ff8e], a
|
|
ld hl, MonBillboardPaletteMapPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [$ff8f], a
|
|
ld a, [hli]
|
|
ld [$ff90], a
|
|
ld a, [hli]
|
|
ld [$ff91], a
|
|
ld de, wc000
|
|
ld hl, wd586
|
|
ld c, $0
|
|
.asm_101bb
|
|
ld a, [hli]
|
|
cp [hl]
|
|
ld [hli], a
|
|
jr z, .asm_101d2
|
|
ld b, a
|
|
call nz, Func_101d9
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_101d2
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ld a, b
|
|
call nz, Func_10230
|
|
.asm_101d2
|
|
inc c
|
|
ld a, c
|
|
cp $18
|
|
jr nz, .asm_101bb
|
|
ret
|
|
|
|
Func_101d9: ; 0x101d9
|
|
push bc
|
|
push hl
|
|
push de
|
|
push af
|
|
ld a, $10
|
|
ld [de], a
|
|
inc de
|
|
ld a, $1
|
|
ld [de], a
|
|
inc de
|
|
ld b, $0
|
|
ld hl, Data_102a4
|
|
add hl, bc
|
|
ld c, [hl]
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
ld hl, vTilesSH tile $10
|
|
add hl, bc
|
|
ld a, l
|
|
ld [de], a
|
|
inc de
|
|
ld a, h
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8c]
|
|
ld l, a
|
|
ld a, [$ff8d]
|
|
ld h, a
|
|
add hl, bc
|
|
pop af
|
|
and a
|
|
jr nz, .asm_10215
|
|
ld bc, $0180
|
|
add hl, bc
|
|
.asm_10215
|
|
ld a, l
|
|
ld [de], a
|
|
inc de
|
|
ld a, h
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8e]
|
|
ld [de], a
|
|
inc de
|
|
ld a, $0
|
|
ld [de], a
|
|
inc de
|
|
pop bc
|
|
push de
|
|
xor a
|
|
ld de, Func_11d2
|
|
call Func_10c5
|
|
pop de
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
|
|
Func_10230: ; 0x10230
|
|
push bc
|
|
push hl
|
|
push de
|
|
push af
|
|
ld a, $1
|
|
ld [de], a
|
|
inc de
|
|
ld [de], a
|
|
inc de
|
|
ld b, $0
|
|
ld hl, Data_102a4
|
|
add hl, bc
|
|
ld c, [hl]
|
|
sla c
|
|
ld hl, PointerTable_10274
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hl]
|
|
ld [de], a
|
|
inc de
|
|
srl c
|
|
ld a, [$ff8f]
|
|
ld l, a
|
|
ld a, [$ff90]
|
|
ld h, a
|
|
add hl, bc
|
|
pop af
|
|
and a
|
|
ld a, [$ff91]
|
|
call ReadByteFromBank
|
|
jr nz, .asm_10261
|
|
ld a, $5
|
|
.asm_10261
|
|
ld [de], a
|
|
inc de
|
|
ld a, $0
|
|
ld [de], a
|
|
inc de
|
|
pop bc
|
|
push de
|
|
xor a
|
|
ld de, LoadTileListsBank1
|
|
call Func_10c5
|
|
pop de
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
|
|
PointerTable_10274: ; 0x10274
|
|
dw $9887
|
|
dw $9888
|
|
dw $9889
|
|
dw $988A
|
|
dw $988B
|
|
dw $988C
|
|
dw $98A7
|
|
dw $98A8
|
|
dw $98A9
|
|
dw $98AA
|
|
dw $98AB
|
|
dw $98AC
|
|
dw $98C7
|
|
dw $98C8
|
|
dw $98C9
|
|
dw $98CA
|
|
dw $98CB
|
|
dw $98CC
|
|
dw $98E7
|
|
dw $98E8
|
|
dw $98E9
|
|
dw $98EA
|
|
dw $98EB
|
|
dw $98EC
|
|
|
|
Data_102a4: ; 0x102a4
|
|
db $00, $07, $06, $01, $0E, $15, $14, $0F, $04, $0B, $0A, $05, $0C, $13, $12, $0D, $02, $09, $08, $03, $10, $17, $16, $11
|
|
|
|
Func_102bc: ; 0x102bc
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_102cb
|
|
inc b
|
|
.asm_102cb
|
|
ld hl, MonBillboardPalettePointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [$ff8c], a
|
|
ld a, [hli]
|
|
ld [$ff8d], a
|
|
ld a, [hl]
|
|
ld [$ff8e], a
|
|
ld de, wc1b8
|
|
ld a, $10
|
|
ld [de], a
|
|
inc de
|
|
ld a, $8
|
|
ld [de], a
|
|
inc de
|
|
ld a, $30
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8c]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8d]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8e]
|
|
ld [de], a
|
|
inc de
|
|
ld a, $0
|
|
ld [de], a
|
|
xor a
|
|
ld bc, wc1b8
|
|
ld de, LoadPalettes
|
|
call Func_10c5
|
|
ret
|
|
|
|
Func_10301: ; 0x10301
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_10310
|
|
inc b
|
|
.asm_10310
|
|
ld hl, MonAnimatedPalettePointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [$ff8c], a
|
|
ld a, [hli]
|
|
ld [$ff8d], a
|
|
ld a, [hl]
|
|
ld [$ff8e], a
|
|
ld de, wc1b8
|
|
ld a, $10
|
|
ld [de], a
|
|
inc de
|
|
ld a, $4
|
|
ld [de], a
|
|
inc de
|
|
ld a, $58
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8c]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8d]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8e]
|
|
ld [de], a
|
|
inc de
|
|
ld a, $4
|
|
ld [de], a
|
|
inc de
|
|
ld a, $68
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8c]
|
|
ld l, a
|
|
ld a, [$ff8d]
|
|
ld h, a
|
|
ld bc, $0008
|
|
add hl, bc
|
|
ld a, l
|
|
ld [de], a
|
|
inc de
|
|
ld a, h
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8e]
|
|
ld [de], a
|
|
inc de
|
|
ld a, $0
|
|
ld [de], a
|
|
xor a
|
|
ld bc, wc1b8
|
|
ld de, LoadPalettes
|
|
call Func_10c5
|
|
ret
|
|
|
|
Func_10362: ; 0x10362
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_10371
|
|
inc b
|
|
.asm_10371
|
|
ld hl, MonAnimatedPicPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [$ff8c], a
|
|
ld a, [hli]
|
|
ld [$ff8d], a
|
|
ld a, [hl]
|
|
ld [$ff8e], a
|
|
ld de, wc150
|
|
ld bc, $0000
|
|
.asm_10384
|
|
call Func_1038e
|
|
inc c
|
|
ld a, c
|
|
cp $d
|
|
jr nz, .asm_10384
|
|
ret
|
|
|
|
Func_1038e: ; 0x1038e
|
|
push bc
|
|
push de
|
|
ld a, c
|
|
sla a
|
|
add c
|
|
ld c, a
|
|
sla c
|
|
ld hl, Data_103c6
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8c]
|
|
add [hl]
|
|
ld [de], a
|
|
inc hl
|
|
inc de
|
|
ld a, [$ff8d]
|
|
adc [hl]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [$ff8e]
|
|
ld [de], a
|
|
inc de
|
|
ld a, $0
|
|
ld [de], a
|
|
inc de
|
|
pop bc
|
|
push de
|
|
xor a
|
|
ld de, Func_11d2
|
|
call Func_10c5
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
Data_103c6: ; 0x103c6
|
|
; TODO: this might have pointers in it
|
|
db $40, $04, $00, $89, $00, $00
|
|
db $40, $04, $40, $89, $40, $00
|
|
db $40, $04, $80, $89, $80, $00
|
|
db $40, $04, $C0, $89, $C0, $00
|
|
db $40, $04, $00, $8A, $00, $01
|
|
db $40, $04, $40, $8A, $40, $01
|
|
db $20, $02, $80, $8A, $80, $01
|
|
db $20, $02, $A0, $81, $A0, $01
|
|
db $40, $04, $C0, $81, $C0, $01
|
|
db $40, $04, $00, $82, $00, $02
|
|
db $40, $04, $40, $82, $40, $02
|
|
db $40, $04, $80, $82, $80, $02
|
|
db $40, $04, $C0, $82, $C0, $02
|
|
|
|
Func_10414: ; 0x10414
|
|
ld a, BANK(Data_10420)
|
|
ld bc, Data_10420
|
|
ld de, Func_11b5
|
|
call Func_10c5
|
|
ret
|
|
|
|
Data_10420:
|
|
db $18
|
|
db $06
|
|
dw $9887
|
|
db $80
|
|
db $06
|
|
dw $98a7
|
|
db $80
|
|
db $06
|
|
dw $98c7
|
|
db $80
|
|
db $06
|
|
dw $98e7
|
|
db $80
|
|
db $00
|
|
|
|
Func_10432: ; 0x10432
|
|
ld a, BANK(Data_1043e)
|
|
ld bc, Data_1043e
|
|
ld de, LoadTileLists
|
|
call Func_10c5
|
|
ret
|
|
|
|
Data_1043e:
|
|
db $18
|
|
db $06
|
|
dw $9887
|
|
db $90, $91, $92, $93, $94, $95
|
|
db $06
|
|
dw $98a7
|
|
db $96, $97, $98, $99, $9a, $9b
|
|
db $06
|
|
dw $98c7
|
|
db $9c, $9d, $9e, $9f, $a0, $a1
|
|
db $06
|
|
dw $98e7
|
|
db $a2, $a3, $a4, $a5, $a6, $a7
|
|
db $00
|
|
|
|
Func_10464: ; 0x10464
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .noCarry
|
|
inc b
|
|
.noCarry
|
|
ld hl, MonAnimatedCollisionMaskPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld h, b
|
|
ld l, c
|
|
ld de, wMonAnimatedCollisionMask
|
|
ld bc, $0080
|
|
call FarCopyData
|
|
ret
|
|
|
|
Func_10488: ; 0x10488
|
|
xor a
|
|
ld hl, wMonAnimatedCollisionMask
|
|
ld b, $20
|
|
.asm_1048e
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_1048e
|
|
ret
|
|
|
|
BallCaptureInit: ; 0x10496
|
|
xor a
|
|
ld [wd5c6], a
|
|
ld a, BANK(PikachuSaverGfx)
|
|
ld hl, PikachuSaverGfx + $c0
|
|
ld de, vTilesOB tile $7e
|
|
ld bc, $0020
|
|
call LoadVRAMData
|
|
ld a, BANK(BallCaptureSmokeGfx)
|
|
ld hl, BallCaptureSmokeGfx
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $0180
|
|
call LoadVRAMData
|
|
call LoadShakeBallGfx
|
|
ld hl, BallCaptureAnimationData
|
|
ld de, wBallCaptureAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $1
|
|
ld [wCapturingMon], a
|
|
xor a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
xor a
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
lb de, $00, $0b
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
LoadShakeBallGfx: ; 0x104e2
|
|
; Loads the graphics for the ball shaking after a pokemon is caught.
|
|
ld a, [wBallType]
|
|
cp GREAT_BALL
|
|
jr nc, .notPokeball
|
|
ld a, Bank(PinballPokeballShakeGfx)
|
|
ld hl, PinballPokeballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
.notPokeball
|
|
cp ULTRA_BALL
|
|
jr nc, .notGreatball
|
|
ld a, Bank(PinballGreatballShakeGfx)
|
|
ld hl, PinballGreatballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
.notGreatball
|
|
cp MASTER_BALL
|
|
jr nc, .notUltraBall
|
|
ld a, Bank(PinballUltraballShakeGfx)
|
|
ld hl, PinballUltraballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
.notUltraBall
|
|
ld a, Bank(PinballMasterballShakeGfx)
|
|
ld hl, PinballMasterballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
CapturePokemon: ; 0x1052d
|
|
ld a, [wBallCaptureAnimationFrame]
|
|
cp $c
|
|
jr nz, .asm_10541
|
|
ld a, [wBallCaptureAnimationFrameCounter]
|
|
cp $1
|
|
jr nz, .asm_10541
|
|
lb de, $00, $41
|
|
call PlaySoundEffect
|
|
.asm_10541
|
|
ld hl, BallCaptureAnimationData
|
|
ld de, wBallCaptureAnimationFrameCounter
|
|
call UpdateAnimation
|
|
ld a, [wBallCaptureAnimationFrameIndex]
|
|
cp $1
|
|
jr nz, .asm_1055d
|
|
ld a, [wBallCaptureAnimationFrameCounter]
|
|
cp $1
|
|
jr nz, .asm_1055d
|
|
xor a
|
|
ld [wWildMonIsHittable], a
|
|
ret
|
|
|
|
.asm_1055d
|
|
ld a, [wBallCaptureAnimationFrameIndex]
|
|
cp $15
|
|
ret nz
|
|
ld a, [wBallCaptureAnimationFrameCounter]
|
|
cp $1
|
|
ret nz
|
|
call Func_3475
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
lb de, $23, $29
|
|
call PlaySoundEffect
|
|
call Func_10825
|
|
call Func_3475
|
|
ld a, [wNumPartyMons]
|
|
and a
|
|
call z, Func_10848
|
|
ld a, $50
|
|
ld [wd4b4], a
|
|
ld a, $40
|
|
ld [wd4b6], a
|
|
ld a, $80
|
|
ld [wBallXVelocity], a
|
|
xor a
|
|
ld [wBallXPos], a
|
|
ld [wBallYPos], a
|
|
ld [wCapturingMon], a
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
callba RestoreBallSaverAfterCatchEmMode
|
|
call Func_10157
|
|
ld de, $0001
|
|
call PlaySong
|
|
ld hl, wd628
|
|
call Func_e4a
|
|
jr nc, .asm_105d1
|
|
ld c, $a
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_105d1
|
|
call SetPokemonOwnedFlag
|
|
ld a, [wd624]
|
|
cp $3
|
|
ret z
|
|
inc a
|
|
ld [wd625], a
|
|
ld a, $80
|
|
ld [wd626], a
|
|
ret
|
|
|
|
BallCaptureAnimationData: ; 0x105e4
|
|
; Each entry is [OAM id][duration]
|
|
db $05, $00
|
|
db $05, $01
|
|
db $05, $02
|
|
db $04, $03
|
|
db $06, $04
|
|
db $08, $05
|
|
db $07, $06
|
|
db $05, $07
|
|
db $04, $08
|
|
db $04, $09
|
|
db $04, $0A
|
|
db $04, $0B
|
|
db $24, $0A
|
|
db $09, $0C
|
|
db $09, $0A
|
|
db $09, $0C
|
|
db $27, $0A
|
|
db $09, $0C
|
|
db $09, $0A
|
|
db $09, $0C
|
|
db $24, $0A
|
|
db $01, $0A
|
|
db $00 ; terminator
|
|
|
|
Func_10611: ; 0x10611
|
|
and a
|
|
ret z
|
|
dec a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_1062a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld b, a
|
|
ld a, BANK(Data_1062a)
|
|
ld de, Func_11d2
|
|
call Func_10c5
|
|
ret
|
|
|
|
Data_1062a:
|
|
dw Data_10630
|
|
dw Data_10638
|
|
dw Data_10640
|
|
|
|
Data_10630:
|
|
db $20
|
|
db $02
|
|
dw $8ae0
|
|
dw CatchTextGfx + $00
|
|
db BANK(CatchTextGfx)
|
|
db $00
|
|
|
|
Data_10638:
|
|
db $20
|
|
db $02
|
|
dw $8b00
|
|
dw CatchTextGfx + $20
|
|
db BANK(CatchTextGfx)
|
|
db $00
|
|
|
|
Data_10640:
|
|
db $20
|
|
db $02
|
|
dw $8b20
|
|
dw CatchTextGfx + $40
|
|
db BANK(CatchTextGfx)
|
|
db $00
|
|
|
|
Func_10648: ; 0x10648
|
|
call Func_10184
|
|
ld a, [wd54e]
|
|
dec a
|
|
ld [wd54e], a
|
|
jr nz, .asm_10677
|
|
ld a, $14
|
|
ld [wd54e], a
|
|
ld hl, wd586
|
|
ld b, $18
|
|
.asm_1065e
|
|
ld a, [wd54f]
|
|
and $1
|
|
ld [hli], a
|
|
xor $1
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_1065e
|
|
ld a, [wd54f]
|
|
dec a
|
|
ld [wd54f], a
|
|
jr nz, .asm_10677
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
.asm_10677
|
|
ret
|
|
|
|
ShowAnimatedWildMon: ; 0x10678
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MonAnimatedSpriteTypes
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd5bc], a
|
|
ld [wd5bd], a
|
|
ld a, $1
|
|
ld [wWildMonIsHittable], a
|
|
xor a
|
|
ld [wBallHitWildMon], a
|
|
ld [wNumMonHits], a
|
|
ret
|
|
|
|
Func_10696: ; 0x10696
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, LetsGetPokemonText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_106a6: ; 0x106a6
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, PokemonRanAwayText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_106b6: ; 0x106b6
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b ; bc was just multiplied by 16
|
|
ld hl, PokemonNames + 1
|
|
add hl, bc
|
|
ld de, YouGotAnText ; "You got an"
|
|
ld bc, Data_2a91
|
|
ld a, [hl]
|
|
; check if mon's name starts with a vowel, so it can print "an", instead of "a"
|
|
cp "A"
|
|
jr z, .asm_106f1
|
|
cp "I"
|
|
jr z, .asm_106f1
|
|
cp "U"
|
|
jr z, .asm_106f1
|
|
cp "E"
|
|
jr z, .asm_106f1
|
|
cp "O"
|
|
jr z, .asm_106f1
|
|
ld de, YouGotAText ; "You got a"
|
|
ld bc, Data_2a79
|
|
.asm_106f1
|
|
push hl
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
pop de
|
|
call LoadTextHeader
|
|
ld hl, wd5d4
|
|
pop de
|
|
call LoadTextHeader
|
|
pop hl
|
|
ld de, wBottomMessageText + $20
|
|
ld b, $0 ; count the number of letters in mon's name in register b
|
|
.readLetter
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .endOfName
|
|
ld [de], a
|
|
inc de
|
|
inc b
|
|
jr .readLetter
|
|
|
|
.endOfName
|
|
ld a, $20
|
|
ld [de], a
|
|
inc de
|
|
xor a
|
|
ld [de], a
|
|
ld a, [wd5db]
|
|
add b
|
|
ld [wd5db], a
|
|
ld a, $14
|
|
sub b
|
|
srl a
|
|
ld b, a
|
|
ld a, [wd5d8]
|
|
add b
|
|
ld [wd5d8], a
|
|
ret
|
|
|
|
Func_10732: ; 0x10732
|
|
ld a, [wCurrentCatchEmMon]
|
|
inc a
|
|
ld e, a
|
|
ld d, $0
|
|
call PlayCry
|
|
ret
|
|
|
|
AddCaughtPokemonToParty: ; 0x1073d
|
|
ld a, [wNumPartyMons]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPartyMons
|
|
add hl, bc
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld [hl], a
|
|
ld a, [wNumPartyMons]
|
|
inc a
|
|
ld [wNumPartyMons], a
|
|
ret
|
|
|
|
SetPokemonSeenFlag: ; 0x10753
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
ld a, [wCurrentCatchEmMon]
|
|
jr z, .asm_10766
|
|
ld a, [wCurrentEvolutionMon]
|
|
cp $ff
|
|
jr nz, .asm_10766
|
|
ld a, [wCurrentCatchEmMon]
|
|
.asm_10766
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
set 0, [hl]
|
|
ld hl, wPokedexFlags
|
|
ld de, sPokedexFlags
|
|
ld bc, $0098
|
|
call SaveData
|
|
ret
|
|
|
|
SetPokemonOwnedFlag: ; 0x1077c
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
ld a, [wCurrentCatchEmMon]
|
|
jr z, .asm_1078f
|
|
ld a, [wCurrentEvolutionMon]
|
|
cp $ff
|
|
jr nz, .asm_1078f
|
|
ld a, [wCurrentCatchEmMon]
|
|
.asm_1078f
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
set 1, [hl]
|
|
ld hl, wPokedexFlags
|
|
ld de, sPokedexFlags
|
|
ld bc, $0098
|
|
call SaveData
|
|
ret
|
|
|
|
Func_107a5: ; 0x107a5
|
|
xor a
|
|
ld hl, wIndicatorStates
|
|
ld b, $13
|
|
.asm_107ab
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_107ab
|
|
ret
|
|
|
|
Func_107b0: ; 0x107b0
|
|
xor a
|
|
ld [wd604], a
|
|
ld [wIndicatorStates + 4], a
|
|
callba Func_16425
|
|
ret
|
|
|
|
Func_107c2: ; 0x107c2
|
|
ld a, $1e
|
|
ld [wd607], a
|
|
ret
|
|
|
|
Func_107c8: ; 0x107c8
|
|
ld a, [wRightAlleyCount]
|
|
cp $3
|
|
jr z, .asm_107d1
|
|
set 7, a
|
|
.asm_107d1
|
|
ld [wIndicatorStates + 1], a
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
jr c, .asm_107e0
|
|
ld a, $80
|
|
ld [wIndicatorStates + 3], a
|
|
.asm_107e0
|
|
ld a, [wLeftAlleyCount]
|
|
set 7, a
|
|
ld [wIndicatorStates], a
|
|
ret
|
|
|
|
Func_107e9: ; 0x107e9
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
ld a, $4
|
|
jr nz, .asm_107f4
|
|
ld a, $6
|
|
.asm_107f4
|
|
ld [wd7ad], a
|
|
ret
|
|
|
|
Func_107f8: ; 0x107f8
|
|
ld a, [wTimerFrames]
|
|
and a
|
|
ret nz
|
|
ld a, [wTimerMinutes]
|
|
and a
|
|
ret nz
|
|
ld a, [wTimerSeconds]
|
|
cp $20
|
|
jr nz, .asm_10810
|
|
lb de, $07, $49
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_10810
|
|
cp $10
|
|
jr nz, .asm_1081b
|
|
lb de, $0a, $4a
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_1081b
|
|
cp $5
|
|
ret nz
|
|
lb de, $0d, $4b
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_10825: ; 0x10825
|
|
call Retrieve8DigitBCDValueAtwd47a
|
|
push bc
|
|
push de
|
|
call AddBCDEToCurBufferValue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5e9
|
|
ld de, Data_2a50
|
|
call Func_3372
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5e4
|
|
ld de, JackpotText
|
|
call Func_3357
|
|
ret
|
|
|
|
Func_10848: ; 0x10848
|
|
ld bc, OneHundredMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5d4
|
|
ld de, OneBillionText
|
|
call LoadTextHeader
|
|
ld hl, wd5cc
|
|
ld de, PokemonCaughtSpecialBonusText
|
|
call LoadTextHeader
|
|
call Func_3475
|
|
ret
|
|
|
|
Func_10871: ; 0x10871
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, EvolutionLineIds
|
|
add hl, bc
|
|
ld a, [hl] ; a contains evolution line id
|
|
ld c, a
|
|
ld b, $0
|
|
ld l, c
|
|
ld h, b
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
ld c, l
|
|
ld b, h
|
|
ld hl, CatchEmModeInitialIndicatorStates
|
|
add hl, bc
|
|
ld de, wIndicatorStates
|
|
ld b, $13 ; number of indicators
|
|
.loop
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .loop
|
|
xor a
|
|
ld [wRightAlleyCount], a
|
|
call Func_107b0
|
|
ld a, $4
|
|
ld [wd7ad], a
|
|
ld de, $0002
|
|
call PlaySong
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr nz, .asm_108d3
|
|
callba LoadStageCollisionAttributes
|
|
callba Func_159f4
|
|
ret
|
|
|
|
.asm_108d3
|
|
callba Func_14135
|
|
callba Func_10184
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_102bc
|
|
ret
|
|
|
|
Func_108f5: ; 0x108f5
|
|
call Func_107a5
|
|
call Func_107c2
|
|
call Func_107c8
|
|
call Func_107e9
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_14135
|
|
call Func_10432
|
|
callba Func_30253
|
|
ld a, Bank(StageSharedBonusSlotGlowGfx)
|
|
ld hl, StageSharedBonusSlotGlowGfx
|
|
ld de, vTilesOB tile $1a
|
|
ld bc, $0160
|
|
call LoadVRAMData
|
|
ld a, BANK(StageSharedBonusSlotGlow2Gfx)
|
|
ld hl, StageSharedBonusSlotGlow2Gfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0020
|
|
call LoadVRAMData
|
|
ld hl, BlankSaverSpaceTileDataRedField
|
|
ld a, BANK(BlankSaverSpaceTileDataRedField)
|
|
call Func_10aa
|
|
ld a, [wd624]
|
|
callba Func_174d4
|
|
ld hl, CaughtPokeballTileDataPointers
|
|
ld a, BANK(CaughtPokeballTileDataPointers)
|
|
call Func_10aa
|
|
ret
|
|
|
|
BlankSaverSpaceTileDataRedField:
|
|
db 3
|
|
dw BlankSaverSpaceTileDataRedField1
|
|
dw BlankSaverSpaceTileDataRedField2
|
|
dw BlankSaverSpaceTileDataRedField3
|
|
|
|
BlankSaverSpaceTileDataRedField1:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $2e
|
|
dw StageRedFieldBottomBaseGameBoyColorGfx + $2e0
|
|
db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
|
|
db $00
|
|
|
|
BlankSaverSpaceTileDataRedField2:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $30
|
|
dw StageRedFieldBottomBaseGameBoyColorGfx + $300
|
|
db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
|
|
db $00
|
|
|
|
BlankSaverSpaceTileDataRedField3:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $32
|
|
dw StageRedFieldBottomBaseGameBoyColorGfx + $320
|
|
db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
|
|
db $00
|
|
|
|
CaughtPokeballTileDataPointers:
|
|
db 1
|
|
dw CaughtPokeballTileData
|
|
|
|
CaughtPokeballTileData:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $2e
|
|
dw CaughtPokeballGfx
|
|
db Bank(CaughtPokeballGfx)
|
|
db $00
|
|
|
|
DoNothing_1098a: ; 0x1098a
|
|
ret
|
|
|
|
DoNothing_1098b: ; 0x1098b
|
|
ret
|
|
|
|
Func_1098c: ; 0x1098c
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, EvolutionLineIds
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld c, a
|
|
ld b, $0
|
|
ld l, c
|
|
ld h, b
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
ld c, l
|
|
ld b, h
|
|
ld hl, CatchEmModeInitialIndicatorStates
|
|
add hl, bc
|
|
ld de, wIndicatorStates
|
|
ld b, $13 ; number of indicators
|
|
.loop
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .loop
|
|
xor a
|
|
ld [wRightAlleyCount], a
|
|
callba Func_1f2ed
|
|
ld de, $0002
|
|
call PlaySong
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_1c2cb
|
|
ld [hFarCallTempA], a
|
|
ld a, $4
|
|
ld hl, Func_10184
|
|
call BankSwitch
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_102bc
|
|
ret
|
|
|
|
Func_109fc: ; 0x109fc
|
|
call Func_107a5
|
|
call Func_107c2
|
|
callba Func_1f2ff
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_1c2cb
|
|
call Func_10432
|
|
callba Func_30253
|
|
ld a, BANK(StageSharedBonusSlotGlowGfx)
|
|
ld hl, StageSharedBonusSlotGlowGfx
|
|
ld de, vTilesOB tile $1a
|
|
ld bc, $0160
|
|
call LoadVRAMData
|
|
ld a, BANK(StageSharedBonusSlotGlow2Gfx)
|
|
ld hl, StageSharedBonusSlotGlow2Gfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0020
|
|
call LoadVRAMData
|
|
ld hl, BlankSaverSpaceTileDataBlueField
|
|
ld a, BANK(BlankSaverSpaceTileDataBlueField)
|
|
call Func_10aa
|
|
ld a, [wd624]
|
|
callba Func_174d4
|
|
ld hl, Data_10a88
|
|
ld a, BANK(Data_10a88)
|
|
call Func_10aa
|
|
ret
|
|
|
|
BlankSaverSpaceTileDataBlueField:
|
|
db 3
|
|
dw BlankSaverSpaceTileDataBlueField1
|
|
dw BlankSaverSpaceTileDataBlueField2
|
|
dw BlankSaverSpaceTileDataBlueField3
|
|
|
|
BlankSaverSpaceTileDataBlueField1:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $2e
|
|
dw StageBlueFieldBottomBaseGameBoyColorGfx + $2e0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyColorGfx)
|
|
db $00
|
|
|
|
BlankSaverSpaceTileDataBlueField2:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $30
|
|
dw StageBlueFieldBottomBaseGameBoyColorGfx + $300
|
|
db Bank(StageBlueFieldBottomBaseGameBoyColorGfx)
|
|
db $00
|
|
|
|
BlankSaverSpaceTileDataBlueField3:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $32
|
|
dw StageBlueFieldBottomBaseGameBoyColorGfx + $320
|
|
db Bank(StageBlueFieldBottomBaseGameBoyColorGfx)
|
|
db $00
|
|
|
|
Data_10a88:
|
|
db 1
|
|
dw Data_10a8b
|
|
|
|
Data_10a8b:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $2e
|
|
dw CaughtPokeballGfx
|
|
db Bank(CaughtPokeballGfx)
|
|
db $00
|
|
|
|
Func_10a95: ; 0x19a95
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
PointerTable_10a9b: ; 0x10a9b
|
|
; STAGE_RED_FIELD_TOP
|
|
padded_dab Func_20581
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
padded_dab Func_20581
|
|
padded_dab Func_20581
|
|
padded_dab Func_20581
|
|
; STAGE_BLUE_FIELD_TOP
|
|
padded_dab Func_20bae
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
padded_dab Func_20bae
|
|
|
|
Func_10ab3: ; 0x10ab3
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret nz
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_10abc: ; 0x10abc
|
|
; STAGE_RED_FIELD_TOP
|
|
dw Func_10ebb
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw Func_10ebb
|
|
dw Func_11054
|
|
dw Func_11054
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_11061
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
dw Func_11061
|
|
|
|
Func_10ac8: ; 0x10ac8
|
|
xor a
|
|
ld [wd5ca], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
xor a
|
|
ld [wInSpecialMode], a
|
|
ld [wWildMonIsHittable], a
|
|
ld [wd5b6], a
|
|
ld [wNumMonHits], a
|
|
ld [wd551], a
|
|
ld [wd554], a
|
|
call Func_10488
|
|
callba Func_86d2
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_10af3: ; 0x10af3
|
|
; STAGE_RED_FIELD_TOP
|
|
dw Func_10fe3
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw Func_10fe3
|
|
dw Func_11060
|
|
dw Func_11060
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_11195
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_11195
|
|
|
|
Func_10aff: ; 0x10aff
|
|
ld a, [wCurrentStage]
|
|
res 0, a
|
|
ld c, a
|
|
ld b, $0
|
|
srl c
|
|
sla a
|
|
sla a
|
|
sla a
|
|
sub c
|
|
ld c, a
|
|
ld hl, VideoData_10b2a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
push af
|
|
push bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
pop hl
|
|
pop af
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
VideoData_10b2a: ; 0x10b2a
|
|
dab StageRedFieldTopGfx3
|
|
dw $8900
|
|
dw $E0
|
|
dab StageRedFieldTopGfx3
|
|
dw $8900
|
|
dw $E0
|
|
dab StageRedFieldTopGfx3
|
|
dw $8900
|
|
dw $E0
|
|
|
|
Func_10b3f: ; 0x10b3f
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld a, [wCurrentEvolutionType]
|
|
cp EVO_EXPERIENCE
|
|
ld de, StartTrainingText
|
|
jr z, .asm_10b55
|
|
ld de, FindItemsText
|
|
.asm_10b55
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_10b59: ; 0x10b59
|
|
xor a
|
|
ld [wd4aa], a
|
|
ld hl, wBottomMessageText
|
|
ld a, $81
|
|
ld b, $30
|
|
.asm_10b64
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_10b64
|
|
ld hl, wPartyMons
|
|
call Func_10b8e
|
|
ld a, BANK(InGameMenuSymbolsGfx)
|
|
ld hl, InGameMenuSymbolsGfx
|
|
ld de, vTilesSH tile $08
|
|
ld bc, $0030
|
|
call LoadVRAMData
|
|
ld a, $0
|
|
ld hl, wBottomMessageText
|
|
deCoord 0, 0, vBGWin
|
|
ld bc, $00c0
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
Func_10b8e: ; 0x10b8e
|
|
ld a, [wNumPartyMons]
|
|
ld c, $0
|
|
ld b, a
|
|
.asm_10b94
|
|
ld a, [hli]
|
|
call Func_10ba2
|
|
inc c
|
|
ld a, c
|
|
cp $6
|
|
jr z, .asm_10ba1
|
|
dec b
|
|
jr nz, .asm_10b94
|
|
.asm_10ba1
|
|
ret
|
|
|
|
Func_10ba2: ; 0x10ba2
|
|
push bc
|
|
push hl
|
|
swap c
|
|
sla c
|
|
ld b, $0
|
|
ld hl, wBottomMessageText
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
ld hl, PokemonNames
|
|
add hl, bc
|
|
ld a, $81
|
|
ld [de], a
|
|
inc de
|
|
ld a, $81
|
|
ld [de], a
|
|
inc de
|
|
ld a, $81
|
|
ld [de], a
|
|
inc de
|
|
ld a, $81
|
|
ld [de], a
|
|
inc de
|
|
call Func_3125
|
|
.asm_10bda
|
|
ld a, e
|
|
and $1f
|
|
cp $14
|
|
jr nc, .asm_10be7
|
|
ld a, $81
|
|
ld [de], a
|
|
inc de
|
|
jr .asm_10bda
|
|
|
|
.asm_10be7
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
|
|
Func_10bea: ; 0x10bea
|
|
xor a
|
|
ld [wd461], a
|
|
ld [wd462], a
|
|
ld [wd463], a
|
|
.asm_10bf4
|
|
call Func_10c0c
|
|
call Func_b2e
|
|
call Func_10c38
|
|
rst AdvanceFrame
|
|
ld a, [wd809]
|
|
bit 0, a
|
|
jr z, .asm_10bf4
|
|
lb de, $00, $01
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_10c0c: ; 0x10c0c
|
|
ld a, [wd80a]
|
|
ld b, a
|
|
ld a, [wNumPartyMons]
|
|
ld c, a
|
|
ld a, [wd461]
|
|
bit 6, b
|
|
jr z, .asm_10c28
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd461], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_10c28
|
|
bit 7, b
|
|
ret z
|
|
inc a
|
|
cp c
|
|
ret z
|
|
ld [wd461], a
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_10c38: ; 0x10c38
|
|
ld a, [wd461]
|
|
ld hl, wd462
|
|
sub [hl]
|
|
jr nc, .asm_10c45
|
|
dec [hl]
|
|
xor a
|
|
jr .asm_10c4c
|
|
|
|
.asm_10c45
|
|
cp $6
|
|
jr c, .asm_10c4c
|
|
inc [hl]
|
|
ld a, $5
|
|
.asm_10c4c
|
|
ld c, a
|
|
push bc
|
|
ld a, [hl]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPartyMons
|
|
add hl, bc
|
|
call Func_10b8e
|
|
ld a, [hJoypadState]
|
|
and a
|
|
ld a, [wd463]
|
|
jr z, .asm_10c62
|
|
xor a
|
|
.asm_10c62
|
|
inc a
|
|
ld [wd463], a
|
|
bit 3, a
|
|
pop bc
|
|
jr nz, .asm_10c78
|
|
swap c
|
|
sla c
|
|
ld b, $0
|
|
ld hl, wBottomMessageText + $03
|
|
add hl, bc
|
|
ld a, $88
|
|
ld [hl], a
|
|
.asm_10c78
|
|
ld a, [wd462]
|
|
and a
|
|
jr z, .asm_10c83
|
|
ld a, $8a
|
|
ld [wBottomMessageText + $11], a
|
|
.asm_10c83
|
|
ld a, [wd462]
|
|
add $7
|
|
jr z, .asm_10c96
|
|
ld c, a
|
|
ld a, [wNumPartyMons]
|
|
cp c
|
|
jr c, .asm_10c96
|
|
ld a, $89
|
|
ld [wBottomMessageText + $b1], a
|
|
.asm_10c96
|
|
ld a, $0
|
|
ld hl, wBottomMessageText
|
|
deCoord 0, 0, vBGWin
|
|
ld bc, $00c0
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
Func_10ca5: ; 0x10ca5
|
|
ld a, [wd461]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPartyMons
|
|
add hl, bc
|
|
ld a, [wCurrentEvolutionMon]
|
|
cp $ff
|
|
ret z
|
|
ld [hl], a
|
|
ret
|
|
|
|
Func_10cb7: ; 0x10cb7
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_10b59
|
|
ld a, $60
|
|
ld [hWY], a
|
|
dec a
|
|
ld [hLYC], a
|
|
ld a, $fd
|
|
ld [hLCDCMask], a
|
|
call Func_10bea
|
|
ld a, $86
|
|
ld [hWY], a
|
|
ld a, $83
|
|
ld [hLYC], a
|
|
ld [hLastLYC], a
|
|
ld a, $ff
|
|
ld [hLCDCMask], a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_10cee
|
|
ld a, BANK(StageRedFieldTopStatusBarSymbolsGfx_GameBoy)
|
|
ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoy + $80
|
|
ld de, vTilesSH tile $08
|
|
ld bc, $0030
|
|
call LoadVRAMData
|
|
jr .asm_10cfc
|
|
|
|
.asm_10cee
|
|
ld a, BANK(StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor)
|
|
ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor + $80
|
|
ld de, vTilesSH tile $08
|
|
ld bc, $0030
|
|
call LoadVRAMData
|
|
.asm_10cfc
|
|
call FillBottomMessageBufferWithBlackTile
|
|
ld a, $1
|
|
ld [wd4aa], a
|
|
ld [wInSpecialMode], a
|
|
ld [wSpecialMode], a
|
|
xor a
|
|
ld [wd54d], a
|
|
ld a, [wd461]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPartyMons
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wCurrentCatchEmMon], a
|
|
ret
|
|
|
|
Func_10d1d: ; 0x10d1d
|
|
ld hl, wd586
|
|
ld b, $18
|
|
.asm_10d22
|
|
ld a, $1
|
|
ld [hli], a
|
|
xor a
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_10d22
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_1298b
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add $2
|
|
ld [wd555], a
|
|
xor a
|
|
ld hl, wd566
|
|
ld b, $13
|
|
.asm_10d40
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_10d40
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
ld hl, CatchEmTimerData
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld b, a
|
|
callba StartTimer
|
|
ld a, [wCurrentCatchEmMon]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c ; multiply mon id by 6
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .noCarry
|
|
inc b
|
|
.noCarry
|
|
sla c
|
|
rl b
|
|
ld hl, MonEvolutions
|
|
add hl, bc
|
|
push hl
|
|
ld bc, $03ff
|
|
.countMonEvolutionsLoop
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .noEvolution
|
|
inc c
|
|
.noEvolution
|
|
inc hl
|
|
dec b
|
|
jr nz, .countMonEvolutionsLoop
|
|
ld a, c
|
|
cp $ff
|
|
jr nz, .asm_10d8a
|
|
xor a
|
|
.asm_10d8a
|
|
call Func_a21
|
|
sla a
|
|
ld c, a
|
|
pop hl
|
|
add hl, bc ; hl points to one of three entries in mon's evolution data
|
|
ld a, [hli] ; a = mon id of evolution
|
|
dec a
|
|
ld [wCurrentEvolutionMon], a
|
|
ld a, [hl] ; a = evoluion type id
|
|
ld [wCurrentEvolutionType], a
|
|
xor a
|
|
ld [wd554], a
|
|
ld [wd556], a
|
|
ld [wd557], a
|
|
ld hl, wd55c
|
|
ld a, $1
|
|
ld b, $3
|
|
.asm_10dac
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_10dac
|
|
xor a
|
|
ld b, $7
|
|
.asm_10db3
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_10db3
|
|
ld de, wd55c
|
|
ld a, [wd555]
|
|
ld c, a
|
|
inc a
|
|
ld b, a
|
|
.asm_10dc0
|
|
push bc
|
|
ld a, c
|
|
call Func_a21
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd55c
|
|
add hl, bc
|
|
ld c, [hl]
|
|
ld a, [de]
|
|
ld [hl], a
|
|
ld a, c
|
|
ld [de], a
|
|
pop bc
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_10dc0
|
|
callba InitBallSaverForCatchEmMode
|
|
call Func_10b3f
|
|
call Func_3579
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_10e09
|
|
ld a, BANK(StageRedFieldBottomBaseGameBoyColorGfx)
|
|
ld hl, StageRedFieldBottomBaseGameBoyColorGfx + $300
|
|
ld de, vTilesSH tile $2e
|
|
ld bc, $0020
|
|
call LoadOrCopyVRAMData
|
|
ld a, $0
|
|
ld hl, CatchBarTiles
|
|
deCoord 6, 8, vBGMap
|
|
ld bc, (CatchBarTilesEnd - CatchBarTiles)
|
|
call LoadOrCopyVRAMData
|
|
.asm_10e09
|
|
ret
|
|
|
|
Func_10e0a: ; 0x10e0a
|
|
ld a, [wCurrentEvolutionMon]
|
|
cp $ff
|
|
jp z, Func_10e8b
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
ld hl, PokemonNames + 1
|
|
add hl, bc
|
|
ld de, ItEvolvedIntoAnText ; "It evolved into an"
|
|
ld bc, Data_2b34
|
|
ld a, [hl]
|
|
; check if mon's name starts with a vowel, so it can print "an", instead of "a"
|
|
cp "A"
|
|
jr z, .nameStartsWithVowel
|
|
cp "I"
|
|
jr z, .nameStartsWithVowel
|
|
cp "U"
|
|
jr z, .nameStartsWithVowel
|
|
cp "E"
|
|
jr z, .nameStartsWithVowel
|
|
cp "O"
|
|
jr z, .nameStartsWithVowel
|
|
ld de, ItEvolvedIntoAText ; "It evolved into a"
|
|
ld bc, Data_2b1c
|
|
.nameStartsWithVowel
|
|
push hl
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
pop de
|
|
call LoadTextHeader
|
|
ld hl, wd5d4
|
|
pop de
|
|
call LoadTextHeader
|
|
pop hl
|
|
ld de, wBottomMessageText + $20
|
|
ld b, $0
|
|
.asm_10e67
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_10e70
|
|
ld [de], a
|
|
inc de
|
|
inc b
|
|
jr .asm_10e67
|
|
|
|
.asm_10e70
|
|
ld a, $20
|
|
ld [de], a
|
|
inc de
|
|
xor a
|
|
ld [de], a
|
|
ld a, [wd5db]
|
|
add b
|
|
ld [wd5db], a
|
|
ld a, $14
|
|
sub b
|
|
srl a
|
|
ld b, a
|
|
ld a, [wd5d8]
|
|
add b
|
|
ld [wd5d8], a
|
|
ret
|
|
|
|
Func_10e8b: ; 0x10e8b
|
|
ld bc, OneMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $0100
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5d4
|
|
ld de, Data_2b6b
|
|
call Func_32cc
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5cc
|
|
ld de, EvolutionSpecialBonusText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_10ebb: ; 0x10ebb
|
|
ld a, [wNumPartyMons]
|
|
and a
|
|
ret z
|
|
call Func_10cb7
|
|
call Func_10d1d
|
|
ld a, [wd555]
|
|
sub $2
|
|
ld c, a
|
|
sla c
|
|
ld hl, IndicatorStatesPointerTable_10f3b
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, wIndicatorStates
|
|
ld b, $13
|
|
.asm_10eda
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_10eda
|
|
xor a
|
|
ld [wLeftAlleyCount], a
|
|
call Func_107b0
|
|
ld a, $2
|
|
ld [wd7ad], a
|
|
ld de, $0002
|
|
call PlaySong
|
|
call SetPokemonSeenFlag
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr nz, .asm_10f0b
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $00e0
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.asm_10f0b
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call LoadOrCopyVRAMData
|
|
callba Func_14135
|
|
callba Func_10184
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_102bc
|
|
ret
|
|
|
|
IndicatorStatesPointerTable_10f3b: ; 0x10f3b
|
|
dw IndicatorStates_10f4b
|
|
dw IndicatorStates_10f5e
|
|
dw IndicatorStates_10f71
|
|
dw IndicatorStates_10f84
|
|
dw IndicatorStates_10f97
|
|
dw IndicatorStates_10faa
|
|
dw IndicatorStates_10fbd
|
|
dw IndicatorStates_10fd0
|
|
|
|
IndicatorStates_10f4b: ; 0x10f4b
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_10f5e: ; 0x10f5e
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $01, $00, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_10f71: ; 0x10f71
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_10f84: ; 0x10f84
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $01, $01, $00, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_10f97: ; 0x10f97
|
|
db $00, $00, $00, $80, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_10faa: ; 0x10faa
|
|
db $00, $00, $80, $80, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_10fbd: ; 0x10fbd
|
|
db $00, $00, $80, $80, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_10fd0: ; 0x10fd0
|
|
db $00, $00, $80, $80, $00, $00, $01, $01, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
Func_10fe3: ; 0x10fe3
|
|
call Func_107a5
|
|
call Func_107c2
|
|
call Func_107c8
|
|
call Func_107e9
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jp z, Func_10aff
|
|
callba Func_14135
|
|
callba Func_16425
|
|
callba Func_30253
|
|
ld a, BANK(StageSharedBonusSlotGlowGfx)
|
|
ld hl, StageSharedBonusSlotGlowGfx + $60
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call LoadVRAMData
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_11036
|
|
ld a, BANK(StageRedFieldBottomOBJPalette7)
|
|
ld hl, StageRedFieldBottomOBJPalette7
|
|
ld de, $0078
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_11036
|
|
ld hl, BlankSaverSpaceTileDataRedField
|
|
ld a, BANK(BlankSaverSpaceTileDataRedField)
|
|
call Func_10aa
|
|
ld a, [wd624]
|
|
callba Func_174d4
|
|
ld hl, CaughtPokeballTileDataPointers
|
|
ld a, BANK(CaughtPokeballTileDataPointers)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_11054: ; 0x11054
|
|
ld a, [wNumPartyMons]
|
|
and a
|
|
ret z
|
|
call Func_10cb7
|
|
call Func_10d1d
|
|
ret
|
|
|
|
Func_11060: ; 0x11060
|
|
ret
|
|
|
|
Func_11061: ; 0x11061
|
|
ld a, [wNumPartyMons]
|
|
and a
|
|
ret z
|
|
call Func_10cb7
|
|
call Func_10d1d
|
|
ld a, $1
|
|
ld [wd643], a
|
|
ld a, [wd555]
|
|
sub $2
|
|
ld c, a
|
|
sla c
|
|
ld hl, IndicatorStatesPointerTable_110ed
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, wIndicatorStates
|
|
ld b, $13
|
|
.asm_11085
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_11085
|
|
xor a
|
|
ld [wLeftAlleyCount], a
|
|
callba Func_1f2ed
|
|
ld a, $2
|
|
ld [wd7ad], a
|
|
ld de, $0002
|
|
call PlaySong
|
|
call SetPokemonSeenFlag
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr nz, .asm_110bd
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesOB tile $60
|
|
ld bc, $00e0
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.asm_110bd
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call LoadOrCopyVRAMData
|
|
callba Func_1c2cb
|
|
callba Func_10184
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_102bc
|
|
ret
|
|
|
|
IndicatorStatesPointerTable_110ed: ; 0x110ed
|
|
dw IndicatorStates_110fd
|
|
dw IndicatorStates_11110
|
|
dw IndicatorStates_11123
|
|
dw IndicatorStates_11136
|
|
dw IndicatorStates_11149
|
|
dw IndicatorStates_1115c
|
|
dw IndicatorStates_1116f
|
|
dw IndicatorStates_11182
|
|
|
|
IndicatorStates_110fd: ; 0x110fd
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_11110: ; 0x11110
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $01, $00, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_11123: ; 0x11123
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_11136: ; 0x11136
|
|
db $00, $00, $80, $00, $00, $00, $00, $00, $01, $01, $00, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_11149: ; 0x11149
|
|
db $00, $00, $80, $80, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_1115c: ; 0x1115c
|
|
db $00, $00, $80, $80, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_1116f: ; 0x1116f
|
|
db $80, $00, $80, $80, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
IndicatorStates_11182: ; 0x11182
|
|
db $80, $00, $80, $80, $00, $00, $01, $01, $01, $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
|
|
|
|
Func_11195: ; 0x11195
|
|
xor a
|
|
ld [wd643], a
|
|
call Func_107a5
|
|
call Func_107c2
|
|
callba Func_1f2ff
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jp z, Func_1120e
|
|
callba Func_1c2cb
|
|
callba Func_1e8f6
|
|
callba Func_30253
|
|
ld a, Bank(StageSharedBonusSlotGlowGfx)
|
|
ld hl, StageSharedBonusSlotGlowGfx + $60
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call LoadVRAMData
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_111f0
|
|
ld a, BANK(StageBlueFieldBottomOBJPalette7)
|
|
ld hl, StageBlueFieldBottomOBJPalette7
|
|
ld de, $0078
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_111f0
|
|
ld hl, BlankSaverSpaceTileDataBlueField
|
|
ld a, BANK(BlankSaverSpaceTileDataBlueField)
|
|
call Func_10aa
|
|
ld a, [wd624]
|
|
callba Func_174d4
|
|
ld hl, Data_10a88
|
|
ld a, BANK(Data_10a88)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_1120e: ; 0x1120e
|
|
ld a, [wCurrentStage]
|
|
sub $4
|
|
res 0, a
|
|
ld c, a
|
|
ld b, $0
|
|
srl c
|
|
sla a
|
|
sla a
|
|
sla a
|
|
sub c
|
|
ld c, a
|
|
ld hl, VRAMData_1123b
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
push af
|
|
push bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
pop hl
|
|
pop af
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
VRAMData_1123b: ; 0x1123b
|
|
dab StageBlueFieldTopGfx3
|
|
dw $8600, $E0
|
|
dab StageBlueFieldTopGfx3
|
|
dw $8600, $E0
|
|
dab StageBlueFieldTopGfx3
|
|
dw $8600, $E0
|
|
dab StageBlueFieldTopGfx3
|
|
dw $8600, $E0
|
|
dab StageBlueFieldTopGfx3
|
|
dw $8600, $E0
|
|
dab StageBlueFieldTopGfx3
|
|
dw $8600, $E0
|
|
dab StageBlueFieldTopGfx3
|
|
dw $8600, $E0
|
|
|
|
INCLUDE "data/wild_mons.asm"
|
|
INCLUDE "data/evolution_line_starts.asm"
|
|
INCLUDE "data/evolution_lines.asm"
|
|
INCLUDE "data/evolution_methods.asm"
|
|
INCLUDE "data/mon_names.asm"
|
|
INCLUDE "data/mon_initial_indicator_states.asm"
|
|
|
|
Data_1298b: ; 0x1298b
|
|
db $01 ; BULBASAUR
|
|
db $02 ; IVYSAUR
|
|
db $03 ; VENUSAUR
|
|
db $01 ; CHARMANDER
|
|
db $02 ; CHARMELEON
|
|
db $03 ; CHARIZARD
|
|
db $01 ; SQUIRTLE
|
|
db $02 ; WARTORTLE
|
|
db $03 ; BLASTOISE
|
|
db $01 ; CATERPIE
|
|
db $02 ; METAPOD
|
|
db $03 ; BUTTERFREE
|
|
db $01 ; WEEDLE
|
|
db $02 ; KAKUNA
|
|
db $03 ; BEEDRILL
|
|
db $01 ; PIDGEY
|
|
db $02 ; PIDGEOTTO
|
|
db $03 ; PIDGEOT
|
|
db $01 ; RATTATA
|
|
db $03 ; RATICATE
|
|
db $01 ; SPEAROW
|
|
db $03 ; FEAROW
|
|
db $01 ; EKANS
|
|
db $03 ; ARBOK
|
|
db $01 ; PIKACHU
|
|
db $03 ; RAICHU
|
|
db $01 ; SANDSHREW
|
|
db $03 ; SANDSLASH
|
|
db $01 ; NIDORAN_F
|
|
db $02 ; NIDORINA
|
|
db $04 ; NIDOQUEEN
|
|
db $01 ; NIDORAN_M
|
|
db $02 ; NIDORINO
|
|
db $04 ; NIDOKING
|
|
db $02 ; CLEFAIRY
|
|
db $03 ; CLEFABLE
|
|
db $02 ; VULPIX
|
|
db $03 ; NINETALES
|
|
db $02 ; JIGGLYPUFF
|
|
db $03 ; WIGGLYTUFF
|
|
db $02 ; ZUBAT
|
|
db $03 ; GOLBAT
|
|
db $01 ; ODDISH
|
|
db $02 ; GLOOM
|
|
db $04 ; VILEPLUME
|
|
db $02 ; PARAS
|
|
db $03 ; PARASECT
|
|
db $02 ; VENONAT
|
|
db $03 ; VENOMOTH
|
|
db $02 ; DIGLETT
|
|
db $03 ; DUGTRIO
|
|
db $02 ; MEOWTH
|
|
db $03 ; PERSIAN
|
|
db $02 ; PSYDUCK
|
|
db $03 ; GOLDUCK
|
|
db $02 ; MANKEY
|
|
db $03 ; PRIMEAPE
|
|
db $02 ; GROWLITHE
|
|
db $03 ; ARCANINE
|
|
db $01 ; POLIWAG
|
|
db $02 ; POLIWHIRL
|
|
db $04 ; POLIWRATH
|
|
db $01 ; ABRA
|
|
db $02 ; KADABRA
|
|
db $04 ; ALAKAZAM
|
|
db $01 ; MACHOP
|
|
db $02 ; MACHOKE
|
|
db $04 ; MACHAMP
|
|
db $01 ; BELLSPROUT
|
|
db $02 ; WEEPINBELL
|
|
db $04 ; VICTREEBEL
|
|
db $02 ; TENTACOOL
|
|
db $03 ; TENTACRUEL
|
|
db $01 ; GEODUDE
|
|
db $02 ; GRAVELER
|
|
db $04 ; GOLEM
|
|
db $02 ; PONYTA
|
|
db $03 ; RAPIDASH
|
|
db $02 ; SLOWPOKE
|
|
db $03 ; SLOWBRO
|
|
db $02 ; MAGNEMITE
|
|
db $03 ; MAGNETON
|
|
db $04 ; FARFETCH_D
|
|
db $02 ; DODUO
|
|
db $03 ; DODRIO
|
|
db $02 ; SEEL
|
|
db $03 ; DEWGONG
|
|
db $02 ; GRIMER
|
|
db $03 ; MUK
|
|
db $02 ; SHELLDER
|
|
db $03 ; CLOYSTER
|
|
db $01 ; GASTLY
|
|
db $02 ; HAUNTER
|
|
db $04 ; GENGAR
|
|
db $04 ; ONIX
|
|
db $02 ; DROWZEE
|
|
db $03 ; HYPNO
|
|
db $02 ; KRABBY
|
|
db $03 ; KINGLER
|
|
db $02 ; VOLTORB
|
|
db $03 ; ELECTRODE
|
|
db $02 ; EXEGGCUTE
|
|
db $03 ; EXEGGUTOR
|
|
db $02 ; CUBONE
|
|
db $03 ; MAROWAK
|
|
db $04 ; HITMONLEE
|
|
db $04 ; HITMONCHAN
|
|
db $04 ; LICKITUNG
|
|
db $02 ; KOFFING
|
|
db $03 ; WEEZING
|
|
db $02 ; RHYHORN
|
|
db $03 ; RHYDON
|
|
db $04 ; CHANSEY
|
|
db $04 ; TANGELA
|
|
db $04 ; KANGASKHAN
|
|
db $04 ; HORSEA
|
|
db $04 ; SEADRA
|
|
db $02 ; GOLDEEN
|
|
db $03 ; SEAKING
|
|
db $02 ; STARYU
|
|
db $03 ; STARMIE
|
|
db $04 ; MR_MIME
|
|
db $04 ; SCYTHER
|
|
db $04 ; JYNX
|
|
db $04 ; ELECTABUZZ
|
|
db $04 ; MAGMAR
|
|
db $04 ; PINSIR
|
|
db $04 ; TAUROS
|
|
db $02 ; MAGIKARP
|
|
db $03 ; GYARADOS
|
|
db $04 ; LAPRAS
|
|
db $04 ; DITTO
|
|
db $02 ; EEVEE
|
|
db $03 ; VAPOREON
|
|
db $03 ; JOLTEON
|
|
db $03 ; FLAREON
|
|
db $04 ; PORYGON
|
|
db $02 ; OMANYTE
|
|
db $03 ; OMASTAR
|
|
db $02 ; KABUTO
|
|
db $03 ; KABUTOPS
|
|
db $04 ; AERODACTYL
|
|
db $04 ; SNORLAX
|
|
db $04 ; ARTICUNO
|
|
db $04 ; ZAPDOS
|
|
db $04 ; MOLTRES
|
|
db $01 ; DRATINI
|
|
db $02 ; DRAGONAIR
|
|
db $04 ; DRAGONITE
|
|
db $04 ; MEWTWO
|
|
db $06 ; MEW
|
|
|
|
INCLUDE "data/catchem_timer_values.asm"
|
|
INCLUDE "data/mon_gfx/mon_gfx_pointers.asm"
|
|
INCLUDE "data/mon_animated_sprite_types.asm"
|
|
INCLUDE "data/collision/mon_collision_mask_pointers.asm"
|
|
|
|
Data_13685: ; 0x13685
|
|
; Each 3-byte entry is related to an evolution line. Don't know what this is for, yet.
|
|
db $12, $12, $10 ; EVOLINE_BULBASAUR
|
|
db $10, $10, $10 ; EVOLINE_CHARMANDER
|
|
db $12, $12, $0E ; EVOLINE_SQUIRTLE
|
|
db $14, $14, $12 ; EVOLINE_CATERPIE
|
|
db $14, $14, $10 ; EVOLINE_WEEDLE
|
|
db $0A, $0A, $0E ; EVOLINE_PIDGEY
|
|
db $11, $13, $10 ; EVOLINE_RATTATA
|
|
db $0B, $0B, $10 ; EVOLINE_SPEAROW
|
|
db $12, $12, $0E ; EVOLINE_EKANS
|
|
db $12, $14, $0E ; EVOLINE_PIKACHU
|
|
db $10, $12, $10 ; EVOLINE_SANDSHREW
|
|
db $11, $12, $0E ; EVOLINE_NIDORAN_F
|
|
db $11, $12, $0E ; EVOLINE_NIDORAN_M
|
|
db $12, $13, $10 ; EVOLINE_CLEFAIRY
|
|
db $11, $11, $10 ; EVOLINE_VULPIX
|
|
db $12, $12, $10 ; EVOLINE_JIGGLYPUFF
|
|
db $08, $08, $10 ; EVOLINE_ZUBAT
|
|
db $10, $10, $10 ; EVOLINE_ODDISH
|
|
db $10, $10, $10 ; EVOLINE_PARAS
|
|
db $11, $11, $0E ; EVOLINE_VENONAT
|
|
db $10, $10, $0E ; EVOLINE_DIGLETT
|
|
db $14, $14, $0E ; EVOLINE_MEOWTH
|
|
db $30, $30, $10 ; EVOLINE_PSYDUCK
|
|
db $12, $12, $10 ; EVOLINE_MANKEY
|
|
db $12, $12, $10 ; EVOLINE_GROWLITHE
|
|
db $10, $10, $10 ; EVOLINE_POLIWAG
|
|
db $10, $10, $10 ; EVOLINE_ABRA
|
|
db $12, $14, $10 ; EVOLINE_MACHOP
|
|
db $10, $12, $10 ; EVOLINE_BELLSPROUT
|
|
db $0C, $0C, $12 ; EVOLINE_TENTACOOL
|
|
db $12, $14, $0C ; EVOLINE_GEODUDE
|
|
db $12, $14, $0E ; EVOLINE_PONYTA
|
|
db $30, $30, $10 ; EVOLINE_SLOWPOKE
|
|
db $14, $14, $10 ; EVOLINE_MAGNEMITE
|
|
db $12, $12, $0E ; EVOLINE_FARFETCH_D
|
|
db $12, $12, $0E ; EVOLINE_DODUO
|
|
db $14, $14, $0E ; EVOLINE_SEEL
|
|
db $12, $12, $10 ; EVOLINE_GRIMER
|
|
db $14, $14, $0E ; EVOLINE_SHELLDER
|
|
db $10, $10, $0E ; EVOLINE_GASTLY
|
|
db $12, $12, $10 ; EVOLINE_ONIX
|
|
db $14, $14, $10 ; EVOLINE_DROWZEE
|
|
db $14, $12, $10 ; EVOLINE_KRABBY
|
|
db $02, $02, $10 ; EVOLINE_VOLTORB
|
|
db $12, $12, $10 ; EVOLINE_EXEGGCUTE
|
|
db $12, $12, $10 ; EVOLINE_CUBONE
|
|
db $14, $10, $10 ; EVOLINE_HITMONLEE
|
|
db $14, $10, $10 ; EVOLINE_HITMONCHAN
|
|
db $14, $12, $10 ; EVOLINE_LICKITUNG
|
|
db $11, $11, $10 ; EVOLINE_KOFFING
|
|
db $14, $14, $10 ; EVOLINE_RHYHORN
|
|
db $12, $12, $10 ; EVOLINE_CHANSEY
|
|
db $10, $10, $10 ; EVOLINE_TANGELA
|
|
db $12, $12, $10 ; EVOLINE_KANGASKHAN
|
|
db $0F, $0F, $0E ; EVOLINE_HORSEA
|
|
db $12, $12, $0E ; EVOLINE_GOLDEEN
|
|
db $23, $23, $10 ; EVOLINE_STARYU
|
|
db $13, $13, $10 ; EVOLINE_MR_MIME
|
|
db $13, $13, $10 ; EVOLINE_SCYTHER
|
|
db $12, $12, $10 ; EVOLINE_JYNX
|
|
db $12, $14, $10 ; EVOLINE_ELECTABUZZ
|
|
db $14, $14, $0E ; EVOLINE_MAGMAR
|
|
db $12, $12, $0E ; EVOLINE_PINSIR
|
|
db $12, $14, $10 ; EVOLINE_TAUROS
|
|
db $18, $18, $0C ; EVOLINE_MAGIKARP
|
|
db $16, $16, $0C ; EVOLINE_LAPRAS
|
|
db $14, $14, $10 ; EVOLINE_DITTO
|
|
db $12, $12, $10 ; EVOLINE_EEVEE
|
|
db $10, $10, $0E ; EVOLINE_PORYGON
|
|
db $12, $12, $0E ; EVOLINE_OMANYTE
|
|
db $12, $12, $0E ; EVOLINE_KABUTO
|
|
db $0C, $0C, $12 ; EVOLINE_AERODACTYL
|
|
db $26, $36, $12 ; EVOLINE_SNORLAX
|
|
db $13, $13, $10 ; EVOLINE_ARTICUNO
|
|
db $13, $13, $10 ; EVOLINE_ZAPDOS
|
|
db $13, $13, $10 ; EVOLINE_MOLTRES
|
|
db $12, $12, $0E ; EVOLINE_DRATINI
|
|
db $14, $14, $0E ; EVOLINE_MEWTWO
|
|
db $14, $14, $0E ; EVOLINE_MEW
|
|
|
|
SECTION "bank5", ROMX, BANK[$5]
|
|
|
|
Func_14000: ; 0x14000
|
|
call Func_14091
|
|
call Func_159f4
|
|
call Func_15450
|
|
call Func_16859
|
|
call Func_14ece
|
|
call Func_14234
|
|
call Func_16425
|
|
call Func_142fc
|
|
call Func_1404a
|
|
ret
|
|
|
|
Func_1401c: ; 0x1401c
|
|
call Func_14091
|
|
call Func_14377
|
|
call Func_14135
|
|
call Func_asm_1522d
|
|
call Func_14282
|
|
call Func_1414b
|
|
call Func_14234
|
|
call Func_14746
|
|
call Func_14707
|
|
call Func_140f9
|
|
call Func_16878
|
|
call Func_140e2
|
|
call Func_16425
|
|
call Func_142fc
|
|
call Func_1404a
|
|
ret
|
|
|
|
Func_1404a: ; 0x1404a
|
|
ld a, [wd57d]
|
|
and a
|
|
ret z
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret nz
|
|
ld a, [wd580]
|
|
and a
|
|
ret z
|
|
ld a, $f
|
|
ld [wd581], a
|
|
call Func_1762f
|
|
ld hl, wTimerDigits
|
|
ld a, $ff
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld hl, wTimerDigits
|
|
ld a, [wTimerMinutes]
|
|
and $f
|
|
call LoadTimerDigitTiles
|
|
ld a, [wTimerSeconds]
|
|
swap a
|
|
and $f
|
|
call LoadTimerDigitTiles
|
|
ld a, [wTimerSeconds]
|
|
and $f
|
|
call LoadTimerDigitTiles
|
|
ld a, e
|
|
srl a
|
|
srl a
|
|
ld d, $90 ; colon
|
|
call LoadTimerDigitTiles
|
|
ret
|
|
|
|
Func_14091: ; 0x14091
|
|
ld a, $ff
|
|
ld [wd4d7], a
|
|
ld [wd4db], a
|
|
ld a, [wd4b4]
|
|
ld [wd4c5], a
|
|
ld a, [wd4b6]
|
|
ld [wd4c6], a
|
|
ld a, [wBallRotation]
|
|
ld [wd4c7], a
|
|
ld a, [wd503]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd503], a
|
|
ld a, [wd502]
|
|
res 1, a
|
|
ld [wd502], a
|
|
and $1
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
and $fe
|
|
or c
|
|
ld [wStageCollisionState], a
|
|
lb de, $00, $07
|
|
call PlaySoundEffect
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret nz
|
|
callba LoadStageCollisionAttributes
|
|
call Func_159f4
|
|
ret
|
|
|
|
Func_140e2: ; 0x140e2
|
|
ld a, $ff
|
|
ld [wd60e], a
|
|
ld [wd60f], a
|
|
ld a, [wd60c]
|
|
call Func_16f28
|
|
ld a, [wd60d]
|
|
add $14
|
|
call Func_16f28
|
|
ret
|
|
|
|
Func_140f9: ; 0x140f9
|
|
ld a, [wd4ef]
|
|
and a
|
|
jr z, .asm_1410c
|
|
xor a
|
|
ld a, $66
|
|
ld [wc7e3], a
|
|
ld a, $67
|
|
ld [wc803], a
|
|
ld a, $2
|
|
.asm_1410c
|
|
call Func_149d9
|
|
ld a, [wLeftMapMoveCounter]
|
|
call Func_149f5
|
|
ld a, [wd4f1]
|
|
and a
|
|
jr z, .asm_14127
|
|
ld a, $6a
|
|
ld [wc7f0], a
|
|
ld a, $6b
|
|
ld [wc810], a
|
|
ld a, $2
|
|
.asm_14127
|
|
add $3
|
|
call Func_149d9
|
|
ld a, [wRightMapMoveCounter]
|
|
add $4
|
|
call Func_149f5
|
|
ret
|
|
|
|
Func_14135: ; 0x14135
|
|
ld bc, $0000
|
|
.asm_14138
|
|
push bc
|
|
ld hl, wIndicatorStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
res 7, a
|
|
call Func_169cd
|
|
pop bc
|
|
inc c
|
|
ld a, c
|
|
cp $5
|
|
jr nz, .asm_14138
|
|
ret
|
|
|
|
Func_1414b: ; 0x1414b
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, [wSpecialMode]
|
|
cp $2
|
|
ret z
|
|
ld a, [wd5c6]
|
|
and a
|
|
jr nz, .asm_14165
|
|
ld a, [wCapturingMon]
|
|
and a
|
|
jr nz, .asm_14165
|
|
jp Func_14210
|
|
|
|
.asm_14165
|
|
callba Func_141f2
|
|
callba Func_10362
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_10301
|
|
ld a, [wCapturingMon]
|
|
and a
|
|
ret z
|
|
ld a, BANK(PikachuSaverGfx)
|
|
ld hl, PikachuSaverGfx + $c0
|
|
ld de, vTilesOB tile $7e
|
|
ld bc, $0020
|
|
call FarCopyData
|
|
ld a, BANK(BallCaptureSmokeGfx)
|
|
ld hl, BallCaptureSmokeGfx
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $0180
|
|
call FarCopyData
|
|
ld a, [wBallType]
|
|
cp GREAT_BALL
|
|
jr nc, .notPokeball
|
|
ld a, Bank(PinballPokeballShakeGfx)
|
|
ld hl, PinballPokeballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
.notPokeball
|
|
cp ULTRA_BALL
|
|
jr nc, .notGreatball
|
|
ld a, Bank(PinballGreatballShakeGfx)
|
|
ld hl, PinballGreatballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
.notGreatball
|
|
cp MASTER_BALL
|
|
jr nc, .notUltraball
|
|
ld a, Bank(PinballUltraballShakeGfx)
|
|
ld hl, PinballUltraballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
.notUltraball
|
|
ld a, Bank(PinballMasterballShakeGfx)
|
|
ld hl, PinballMasterballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
Func_141f2: ; 0x141f2
|
|
ld a, $80
|
|
hlCoord 7, 4, vBGMap
|
|
call Func_14209
|
|
hlCoord 7, 5, vBGMap
|
|
call Func_14209
|
|
hlCoord 7, 6, vBGMap
|
|
call Func_14209
|
|
hlCoord 7, 7, vBGMap
|
|
; fall through
|
|
|
|
Func_14209: ; 0x14209
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ret
|
|
|
|
Func_14210: ; 0x14210
|
|
ld hl, wd586
|
|
ld b, $18
|
|
.asm_14215
|
|
ld a, [hli]
|
|
xor $1
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_14215
|
|
callba Func_10184
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_102bc
|
|
ret
|
|
|
|
Func_14234: ; 0x14234
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, [wSpecialMode]
|
|
cp $1
|
|
ret nz
|
|
ld a, [wd554]
|
|
cp $3
|
|
ret z
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr nz, .asm_1425c
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $00e0
|
|
call FarCopyData
|
|
jr .asm_1426a
|
|
|
|
.asm_1425c
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call FarCopyData
|
|
.asm_1426a
|
|
ld a, [wd551]
|
|
and a
|
|
ret z
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld a, BANK(PaletteData_dd188)
|
|
ld hl, PaletteData_dd188
|
|
ld de, $0070
|
|
ld bc, $0010
|
|
call Func_6fd
|
|
ret
|
|
|
|
Func_14282: ; 0x14282
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
jr z, .asm_1429e
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
jr nz, .asm_14296
|
|
ld a, [wNumMonHits]
|
|
and a
|
|
call nz, Func_142b3
|
|
ret
|
|
|
|
.asm_14296
|
|
cp $1
|
|
jr nz, .asm_1429e
|
|
call Func_142c3
|
|
ret
|
|
|
|
.asm_1429e
|
|
ld a, [wd624]
|
|
call Func_174d4
|
|
ld a, BANK(CaughtPokeballGfx)
|
|
ld hl, CaughtPokeballGfx
|
|
ld de, vTilesSH tile $2e
|
|
ld bc, $0020
|
|
call FarCopyData
|
|
ret
|
|
|
|
Func_142b3: ; 0x142b3
|
|
push af
|
|
callba Func_10611
|
|
pop af
|
|
dec a
|
|
jr nz, Func_142b3
|
|
ret
|
|
|
|
Func_142c3: ; 0x142c3
|
|
ld de, $0000
|
|
ld a, [wd554]
|
|
and a
|
|
ret z
|
|
ld b, a
|
|
.asm_142cc
|
|
ld a, [wCurrentEvolutionType]
|
|
call Func_142d7
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_142cc
|
|
ret
|
|
|
|
Func_142d7: ; 0x142d7
|
|
push bc
|
|
push de
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
swap c
|
|
sla c
|
|
ld hl, Data_d8e80
|
|
add hl, bc
|
|
swap e
|
|
sla e
|
|
push hl
|
|
ld hl, vTilesSH tile $2e
|
|
add hl, de
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
ld bc, $0020
|
|
ld a, BANK(Data_d8e80)
|
|
call FarCopyData
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
Func_142fc: ; 0x142fc
|
|
ld a, [wd4c8]
|
|
and a
|
|
jr nz, .asm_1430e
|
|
callba LoadBallGfx
|
|
jr .asm_14328
|
|
|
|
.asm_1430e
|
|
cp $1
|
|
jr nz, .asm_1431e
|
|
callba LoadMiniBallGfx
|
|
jr .asm_14328
|
|
|
|
.asm_1431e
|
|
callba Func_dd62
|
|
.asm_14328
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld a, [wBallType]
|
|
cp GREAT_BALL
|
|
jr nc, .notPokeball
|
|
ld a, BANK(PokeBallObjPalette)
|
|
ld hl, PokeBallObjPalette
|
|
ld de, $0040
|
|
ld bc, $0008
|
|
call Func_6fd
|
|
ret
|
|
|
|
.notPokeball
|
|
cp ULTRA_BALL
|
|
jr nc, .notGreatball
|
|
ld a, BANK(GreatBallObjPalette)
|
|
ld hl, GreatBallObjPalette
|
|
ld de, $0040
|
|
ld bc, $0008
|
|
call Func_6fd
|
|
ret
|
|
|
|
.notGreatball
|
|
cp MASTER_BALL
|
|
jr nc, .notUltraball
|
|
ld a, BANK(UltraBallObjPalette)
|
|
ld hl, UltraBallObjPalette
|
|
ld de, $0040
|
|
ld bc, $0008
|
|
call Func_6fd
|
|
ret
|
|
|
|
.notUltraball
|
|
ld a, BANK(MasterBallObjPalette)
|
|
ld hl, MasterBallObjPalette
|
|
ld de, $0040
|
|
ld bc, $0008
|
|
call Func_6fd
|
|
ret
|
|
|
|
Func_14377: ; 0x14377
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
jr nz, .asm_143b1
|
|
ld a, [wd609]
|
|
and a
|
|
jr z, .asm_14393
|
|
ld a, [wd498]
|
|
add $15
|
|
callba Func_30256
|
|
ret
|
|
|
|
.asm_14393
|
|
ld a, [wd608]
|
|
and a
|
|
jr z, .asm_143a6
|
|
ld a, $1a
|
|
callba Func_30256
|
|
ret
|
|
|
|
.asm_143a6
|
|
callba Func_30253
|
|
ret
|
|
|
|
.asm_143b1
|
|
ld a, [wSpecialMode]
|
|
cp $2
|
|
ret nz
|
|
ld a, [wd54d]
|
|
cp $3
|
|
jr nz, .asm_143c9
|
|
callba Func_30253
|
|
ret
|
|
|
|
.asm_143c9
|
|
ld a, [wd604]
|
|
and a
|
|
ld a, $14
|
|
jr nz, .asm_143d6
|
|
ld a, [wd55a]
|
|
add $12
|
|
.asm_143d6
|
|
callba Func_30256
|
|
ret
|
|
|
|
INCLUDE "engine/collision/red_stage_game_object_collision.asm"
|
|
|
|
Func_1460e: ; 0x1460e
|
|
call ResolveVoltorbCollision
|
|
call ResolveRedStageSpinnerCollision
|
|
call ResolveRedStagePinballUpgradeTriggersCollision
|
|
call HandleRedStageBallTypeUpgradeCounter
|
|
call Func_15270
|
|
call ResolveRedStageBoardTriggerCollision
|
|
call ResolveRedStagePikachuCollision
|
|
call ResolveStaryuCollision
|
|
call ResolveBellsproutCollision
|
|
call ResolveDittoSlotCollision
|
|
call Func_161e0
|
|
call Func_164e3
|
|
call Func_146a9
|
|
call Func_174ea
|
|
call Func_148cf
|
|
callba Func_30188
|
|
ld a, $0
|
|
callba Func_10000
|
|
ret
|
|
|
|
Func_14652: ; 0x14652
|
|
call Func_14795
|
|
call Func_15f86
|
|
call ResolveDiglettCollision
|
|
call Func_14880
|
|
call Func_14e10
|
|
call Func_154a9
|
|
call HandleRedStageBallTypeUpgradeCounter
|
|
call Func_151cb
|
|
call Func_1652d
|
|
call ResolveRedStagePikachuCollision
|
|
call Func_167ff
|
|
call Func_169a6
|
|
call ResolveRedStageBonusMultiplierCollision
|
|
call Func_16279
|
|
call Func_161af
|
|
call Func_164e3
|
|
call Func_14733
|
|
call Func_146a2
|
|
call Func_174d0
|
|
callba Func_30188
|
|
ld a, $0
|
|
callba Func_10000
|
|
ret
|
|
|
|
Func_146a2: ; 0x146a2
|
|
call Func_146a9
|
|
call nz, Func_14707
|
|
ret
|
|
|
|
Func_146a9: ; 0x146a9
|
|
ld a, [wBallSaverTimerFrames]
|
|
ld hl, wBallSaverTimerSeconds
|
|
or [hl]
|
|
ret z
|
|
ld a, [wBallXPos + 1]
|
|
cp $9a
|
|
jr nc, .asm_146e8
|
|
ld a, [wBallSaverTimerFrames]
|
|
dec a
|
|
ld [wBallSaverTimerFrames], a
|
|
bit 7, a
|
|
jr z, .asm_146e8
|
|
ld a, 59
|
|
ld [wBallSaverTimerFrames], a
|
|
ld a, [hl]
|
|
dec a
|
|
bit 7, a
|
|
jr nz, .asm_146cf
|
|
ld [hl], a
|
|
.asm_146cf
|
|
inc a
|
|
ld c, $0
|
|
cp $2
|
|
jr c, .asm_146e4
|
|
ld c, $4
|
|
cp $6
|
|
jr c, .asm_146e4
|
|
ld c, $10
|
|
cp $b
|
|
jr c, .asm_146e4
|
|
ld c, $ff
|
|
.asm_146e4
|
|
ld a, c
|
|
ld [wd4a2], a
|
|
.asm_146e8
|
|
ld a, [wd4a2]
|
|
ld c, $0
|
|
and a
|
|
jr z, .asm_146fe
|
|
ld c, $1
|
|
cp $ff
|
|
jr z, .asm_146fe
|
|
ld hl, hNumFramesDropped
|
|
and [hl]
|
|
jr z, .asm_146fe
|
|
ld c, $0
|
|
.asm_146fe
|
|
ld a, [wBallSaverIconOn]
|
|
cp c
|
|
ld a, c
|
|
ld [wBallSaverIconOn], a
|
|
ret
|
|
|
|
Func_14707: ; 0x14707
|
|
ld a, [wBallSaverIconOn]
|
|
and a
|
|
jr nz, .asm_1471c
|
|
ld a, BANK(BgTileData_1172b)
|
|
ld hl, BgTileData_1172b
|
|
deCoord 8, 13, vBGMap
|
|
ld bc, $0004
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
.asm_1471c
|
|
ld a, BANK(BgTileData_1472f)
|
|
ld hl, BgTileData_1472f
|
|
deCoord 8, 13, vBGMap
|
|
ld bc, $0004
|
|
call LoadOrCopyVRAMData
|
|
ret
|
|
|
|
BgTileData_1172b:
|
|
db $AA, $AB, $AC, $AD
|
|
|
|
BgTileData_1472f:
|
|
db $B4, $B5, $B6, $B7
|
|
|
|
Func_14733: ; 0x14733
|
|
ld c, $0
|
|
ld a, [wd49b]
|
|
and a
|
|
jr z, .asm_1473d
|
|
ld c, $1
|
|
.asm_1473d
|
|
ld a, [wd4a9]
|
|
cp c
|
|
ld a, c
|
|
ld [wd4a9], a
|
|
ret z
|
|
; fall through
|
|
|
|
Func_14746: ; 0x14746
|
|
ld c, $0
|
|
ld a, [wd49b]
|
|
and a
|
|
jr z, .asm_14750
|
|
ld c, $2
|
|
.asm_14750
|
|
ld b, $0
|
|
ld hl, AgainTextTileDataRedField
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, BANK(AgainTextTileDataRedField)
|
|
call Func_10aa
|
|
ret
|
|
|
|
AgainTextTileDataRedField:
|
|
dw AgainTextOffTileDataRedField
|
|
dw AgainTextOnTileDataRedField
|
|
|
|
AgainTextOffTileDataRedField:
|
|
db 2
|
|
dw AgainTextOffTileDataRedField1
|
|
dw AgainTextOffTileDataRedField2
|
|
|
|
AgainTextOnTileDataRedField:
|
|
db 2
|
|
dw AgainTextOnTileDataRedField1
|
|
dw AgainTextOnTileDataRedField2
|
|
|
|
AgainTextOffTileDataRedField1:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $38
|
|
dw AgainTextOffGfx
|
|
db Bank(AgainTextOffGfx)
|
|
db $00
|
|
|
|
AgainTextOffTileDataRedField2:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $3a
|
|
dw AgainTextOffGfx + $20
|
|
db Bank(AgainTextOffGfx)
|
|
db $00
|
|
|
|
AgainTextOnTileDataRedField1:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $38
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $380
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
AgainTextOnTileDataRedField2:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $3a
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $3a0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
Func_14795: ; 0x14795
|
|
ld a, [wWildMonCollision]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wWildMonCollision], a
|
|
ld a, $1
|
|
ld [wBallHitWildMon], a
|
|
lb de, $00, $06
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
ResolveDiglettCollision: ; 0x147aa
|
|
ld a, [wWhichDiglett]
|
|
and a
|
|
jp z, .asm_14834
|
|
xor a
|
|
ld [wWhichDiglett], a
|
|
ld a, [wWhichDiglettId]
|
|
sub $1
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wLeftMapMoveCounter
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $3
|
|
jr z, .asm_14834
|
|
inc a
|
|
ld [hld], a
|
|
ld [hl], $50
|
|
ld hl, wd4f7
|
|
add hl, bc
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, c
|
|
and a
|
|
jr z, .asm_14807
|
|
ld a, $6a
|
|
ld [wc7f0], a
|
|
ld a, $6b
|
|
ld [wc810], a
|
|
ld a, $5
|
|
call Func_149d9
|
|
ld a, [wRightMapMoveCounter]
|
|
add $4
|
|
call Func_149f5
|
|
ld a, $8
|
|
callba Func_10000
|
|
ld a, [wRightMapMoveCounter]
|
|
cp $3
|
|
call z, Func_14920
|
|
jr .asm_14830
|
|
|
|
.asm_14807
|
|
ld a, $66
|
|
ld [wc7e3], a
|
|
ld a, $67
|
|
ld [wc803], a
|
|
ld a, $2
|
|
call Func_149d9
|
|
ld a, [wLeftMapMoveCounter]
|
|
call Func_149f5
|
|
ld a, $7
|
|
callba Func_10000
|
|
ld a, [wLeftMapMoveCounter]
|
|
cp $3
|
|
call z, Func_14947
|
|
.asm_14830
|
|
call Func_1496d
|
|
ret
|
|
|
|
.asm_14834
|
|
ld a, [wd4ef]
|
|
and a
|
|
jr z, .asm_14857
|
|
dec a
|
|
ld [wd4ef], a
|
|
jr nz, .asm_14857
|
|
ld a, [wLeftMapMoveCounter]
|
|
sub $3
|
|
jr nz, .asm_1484d
|
|
ld [wLeftMapMoveCounter], a
|
|
call Func_149f5
|
|
.asm_1484d
|
|
ld a, $64
|
|
ld [wc7e3], a
|
|
ld a, $65
|
|
ld [wc803], a
|
|
.asm_14857
|
|
ld a, [wd4f1]
|
|
and a
|
|
jr z, .asm_1487c
|
|
dec a
|
|
ld [wd4f1], a
|
|
jr nz, .asm_1487c
|
|
ld a, [wRightMapMoveCounter]
|
|
sub $3
|
|
jr nz, .asm_14872
|
|
ld [wRightMapMoveCounter], a
|
|
add $4
|
|
call Func_149f5
|
|
.asm_14872
|
|
ld a, $68
|
|
ld [wc7f0], a
|
|
ld a, $69
|
|
ld [wc810], a
|
|
.asm_1487c
|
|
call Func_14990
|
|
ret
|
|
|
|
Func_14880: ; 0x14880
|
|
ld hl, wd4f7
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_148a6
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_148a6
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wLeftMapMoveCounter]
|
|
and a
|
|
jr z, .asm_148a6
|
|
cp $3
|
|
jr z, .asm_148a6
|
|
dec a
|
|
ld [wLeftMapMoveCounter], a
|
|
call Func_149f5
|
|
.asm_148a6
|
|
ld hl, wd4f9
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_148ce
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_148ce
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wRightMapMoveCounter]
|
|
and a
|
|
jr z, .asm_148ce
|
|
cp $3
|
|
jr z, .asm_148ce
|
|
dec a
|
|
ld [wRightMapMoveCounter], a
|
|
add $4
|
|
call Func_149f5
|
|
.asm_148ce
|
|
ret
|
|
|
|
Func_148cf: ; 0x148cf
|
|
ld b, $0
|
|
ld hl, wd4f8
|
|
ld a, [hld]
|
|
or [hl]
|
|
jr z, .asm_148f8
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_148f8
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_148f8
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wLeftMapMoveCounter]
|
|
and a
|
|
jr z, .asm_148f8
|
|
cp $3
|
|
jr z, .asm_148f8
|
|
dec a
|
|
ld [wLeftMapMoveCounter], a
|
|
.asm_148f8
|
|
ld hl, wd4fa
|
|
ld a, [hld]
|
|
or [hl]
|
|
jr z, .asm_1491f
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_1491f
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_1491f
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wRightMapMoveCounter]
|
|
and a
|
|
jr z, .asm_1491f
|
|
cp $3
|
|
jr z, .asm_1491f
|
|
dec a
|
|
ld [wRightMapMoveCounter], a
|
|
.asm_1491f
|
|
ret
|
|
|
|
Func_14920: ; 0x14920
|
|
ld hl, wd62b
|
|
call Func_e4a
|
|
jr nc, .asm_14937
|
|
ld c, $a
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_14937
|
|
ld a, $1
|
|
ld [wd55a], a
|
|
callba StartMapMoveMode
|
|
ret
|
|
|
|
Func_14947: ; 0x14947
|
|
ld hl, wd62b
|
|
call Func_e4a
|
|
jr nc, .asm_1495e
|
|
ld c, $a
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_1495e
|
|
xor a
|
|
ld [wd55a], a
|
|
callba StartMapMoveMode
|
|
ret
|
|
|
|
Func_1496d: ; 0x1496d
|
|
ld a, $55
|
|
ld [wd803], a
|
|
ld a, $4
|
|
ld [wd804], a
|
|
ld a, $2
|
|
ld [wd7eb], a
|
|
ld bc, FiveHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $0f
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_14990: ; 0x14990
|
|
ld a, [wd4ef]
|
|
and a
|
|
jr nz, .asm_149b6
|
|
ld a, [wLeftMapMoveDiglettAnimationCounter]
|
|
and a
|
|
jr z, .asm_149a2
|
|
dec a
|
|
ld [wLeftMapMoveDiglettAnimationCounter], a
|
|
jr .asm_149b6
|
|
|
|
.asm_149a2
|
|
call Func_1130
|
|
ret nz
|
|
ld a, $14
|
|
ld [wLeftMapMoveDiglettAnimationCounter], a
|
|
ld a, [wLeftMapMoveDiglettFrame]
|
|
xor $1
|
|
ld [wLeftMapMoveDiglettFrame], a
|
|
call Func_149d9
|
|
.asm_149b6
|
|
ld a, [wd4f1]
|
|
and a
|
|
ret nz
|
|
ld a, [wRightMapMoveDiglettAnimationCounter]
|
|
and a
|
|
jr z, .asm_149c6
|
|
dec a
|
|
ld [wRightMapMoveDiglettAnimationCounter], a
|
|
ret
|
|
|
|
.asm_149c6
|
|
call Func_1130
|
|
ret nz
|
|
ld a, $14
|
|
ld [wRightMapMoveDiglettAnimationCounter], a
|
|
ld a, [wRightMapMoveDiglettFrame]
|
|
xor $1
|
|
ld [wRightMapMoveDiglettFrame], a
|
|
add $3
|
|
; fall through
|
|
Func_149d9: ; 0x149d9
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileListDataPointers_14a11
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_149e9
|
|
ld hl, TileListDataPointers_14a83
|
|
.asm_149e9
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, BANK(TileListDataPointers_14a11)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_149f5: ; 0x149f5
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_14af5
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_14a05
|
|
ld hl, TileListDataPointers_14c8d
|
|
.asm_14a05
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, BANK(Data_14af5)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileListDataPointers_14a11: ; 0x14a11
|
|
dw TileListData_14a1d
|
|
dw TileListData_14a20
|
|
dw TileListData_14a23
|
|
dw TileListData_14a26
|
|
dw TileListData_14a29
|
|
dw TileListData_14a2c
|
|
|
|
TileListData_14a1d: ; 0x14a1d
|
|
db $01
|
|
dw TileListData_14a2f
|
|
|
|
TileListData_14a20: ; 0x14a20
|
|
db $01
|
|
dw TileListData_14a3d
|
|
|
|
TileListData_14a23: ; 0x14a23
|
|
db $01
|
|
dw TileListData_14a4b
|
|
|
|
TileListData_14a26: ; 0x14a26
|
|
db $01
|
|
dw TileListData_14a59
|
|
|
|
TileListData_14a29: ; 0x14a29
|
|
db $01
|
|
dw TileListData_14a67
|
|
|
|
TileListData_14a2c: ; 0x14a2c
|
|
db $01
|
|
dw TileListData_14a75
|
|
|
|
TileListData_14a2f: ; 0x14a2f
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $a3
|
|
db $4C, $4D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c3
|
|
db $4E, $4F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14a3d: ; 0x14a3d
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $a3
|
|
db $50, $51
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c3
|
|
db $52, $53
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14a4b: ; 0x14a4b
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $a3
|
|
db $54, $80
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c3
|
|
db $55, $80
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14a59: ; 0x14a59
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $af
|
|
db $56, $57
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $cf
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14a67: ; 0x14a67
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $af
|
|
db $5a, $5b
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $cf
|
|
db $5c, $5d
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14a75: ; 0x14a75
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $af
|
|
db $80, $5e
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $cf
|
|
db $80, $5f
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListDataPointers_14a83:
|
|
dw TileListData_14a8f
|
|
dw TileListData_14a92
|
|
dw TileListData_14a95
|
|
dw TileListData_14a98
|
|
dw TileListData_14a9b
|
|
dw TileListData_14a9e
|
|
|
|
TileListData_14a8f: ; 0x14a8f
|
|
db $01
|
|
dw TileListData_14aa1
|
|
|
|
TileListData_14a92: ; 0x14a92
|
|
db $01
|
|
dw TileListData_14aaf
|
|
|
|
TileListData_14a95: ; 0x14a95
|
|
db $01
|
|
dw TileListData_14abd
|
|
|
|
TileListData_14a98: ; 0x14a98
|
|
db $01
|
|
dw TileListData_14acb
|
|
|
|
TileListData_14a9b: ; 0x14a9b
|
|
db $01
|
|
dw TileListData_14ad9
|
|
|
|
TileListData_14a9e: ; 0x14a9e
|
|
db $01
|
|
dw TileListData_14ae7
|
|
|
|
TileListData_14aa1: ; 0x14aa1
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $a3
|
|
db $54, $55
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c3
|
|
db $56, $57
|
|
|
|
db $00
|
|
|
|
TileListData_14aaf: ; 0x14aaf
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $a3
|
|
db $58, $59
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c3
|
|
db $5A, $5B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14abd: ; 0x14abd
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $a3
|
|
db $5C, $80
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c3
|
|
db $5D, $80
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14acb: ; 0x14acb
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $af
|
|
db $55, $54
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $cf
|
|
db $57, $56
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14ad9: ; 0x14ad9
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $af
|
|
db $59, $58
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $cf
|
|
db $5B, $5A
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14ae7: ; 0x14ae7
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $af
|
|
db $80, $5C
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $cf
|
|
db $80, $5D
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_14af5: ; 0x14af5
|
|
dw Data_14b05
|
|
dw Data_14b0e
|
|
dw Data_14b17
|
|
dw Data_14b20
|
|
dw Data_14b29
|
|
dw Data_14b32
|
|
dw Data_14b3b
|
|
dw Data_14b44
|
|
|
|
Data_14b05: ; 0x14b05
|
|
db $04
|
|
dw Data_14b4d
|
|
dw Data_14b57
|
|
dw Data_14b61
|
|
dw Data_14b6b
|
|
|
|
Data_14b0e: ; 0x14b0e
|
|
db $04
|
|
dw Data_14b75
|
|
dw Data_14b7f
|
|
dw Data_14b89
|
|
dw Data_14b93
|
|
|
|
Data_14b17: ; 0x14b17
|
|
db $04
|
|
dw Data_14b9d
|
|
dw Data_14ba7
|
|
dw Data_14bb1
|
|
dw Data_14bbb
|
|
|
|
Data_14b20: ; 0x14b20
|
|
db $04
|
|
dw Data_14bc5
|
|
dw Data_14bcf
|
|
dw Data_14bd9
|
|
dw Data_14be3
|
|
|
|
Data_14b29: ; 0x14b29
|
|
db $04
|
|
dw Data_14bed
|
|
dw Data_14bf7
|
|
dw Data_14c01
|
|
dw Data_14c0b
|
|
|
|
Data_14b32: ; 0x14b32
|
|
db $04
|
|
dw Data_14c15
|
|
dw Data_14c1f
|
|
dw Data_14c29
|
|
dw Data_14c33
|
|
|
|
Data_14b3b: ; 0x14b3b
|
|
db $04
|
|
dw Data_14c3d
|
|
dw Data_14c47
|
|
dw Data_14c51
|
|
dw Data_14c5b
|
|
|
|
Data_14b44: ; 0x14b44
|
|
db $04
|
|
dw Data_14c65
|
|
dw Data_14c6f
|
|
dw Data_14c79
|
|
dw Data_14c83
|
|
|
|
Data_14b4d: ; 0x14b4d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $26
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $a60
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14b57: ; 0x14b57
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $29
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $a90
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14b61: ; 0x14b61
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $2C
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $ac0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14b6b: ; 0x14b6b
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $2F
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $af0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14b75: ; 0x14b75
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $26
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $720
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14b7f: ; 0x14b7f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $29
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $750
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14b89: ; 0x14b89
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $2C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $780
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14b93: ; 0x14b93
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $2F
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14b9d: ; 0x14b9d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $26
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14ba7: ; 0x14ba7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $29
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7F0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14bb1: ; 0x14bb1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $2C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $820
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14bbb: ; 0x14bbb
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $2F
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $850
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14bc5: ; 0x14bc5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $26
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $860
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14bcf: ; 0x14bcf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $29
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $890
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14bd9: ; 0x14bd9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $2C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14be3: ; 0x14be3
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $2F
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8F0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14bed: ; 0x14bed
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $30
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $B00
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14bf7: ; 0x14bf7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $33
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $B30
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14c01: ; 0x14c01
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $36
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $B60
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14c0b: ; 0x14c0b
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $39
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $B90
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
Data_14c15: ; 0x14c15
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $30
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $900
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c1f: ; 0x14c1f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $33
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $930
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c29: ; 0x14c29
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $36
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $960
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c33: ; 0x14c33
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $39
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $990
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c3d: ; 0x14c3d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $30
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c47: ; 0x14c47
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $33
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9D0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c51: ; 0x14c51
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $36
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c5b: ; 0x14c5b
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $39
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A30
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c65: ; 0x14c65
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $30
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c6f: ; 0x14c6f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $33
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A70
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c79: ; 0x14c79
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $36
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
Data_14c83: ; 0x14c83
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $39
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AD0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileListDataPointers_14c8d:
|
|
dw Data_14c9d
|
|
dw Data_14ca0
|
|
dw Data_14ca3
|
|
dw Data_14ca6
|
|
dw Data_14ca9
|
|
dw Data_14cac
|
|
dw Data_14caf
|
|
dw Data_14cb2
|
|
|
|
Data_14c9d: ; 0x14c9d
|
|
db $01
|
|
dw TileListData_14cb5
|
|
|
|
Data_14ca0: ; 0x14ca0
|
|
db $01
|
|
dw TileListData_14ccf
|
|
|
|
Data_14ca3: ; 0x14ca3
|
|
db $01
|
|
dw TileListData_14ce9
|
|
|
|
Data_14ca6: ; 0x14ca6
|
|
db $01
|
|
dw TileListData_14d03
|
|
|
|
Data_14ca9: ; 0x14ca9
|
|
db $01
|
|
dw TileListData_14d1d
|
|
|
|
Data_14cac: ; 0x14cac
|
|
db $01
|
|
dw TileListData_14d37
|
|
|
|
Data_14caf: ; 0x14caf
|
|
db $01
|
|
dw TileListData_14d51
|
|
|
|
Data_14cb2: ; 0x14cb2
|
|
db $01
|
|
dw TileListData_14d6b
|
|
|
|
TileListData_14cb5: ; 0x14cb5
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $06, $07
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $a0
|
|
db $08, $09, $0A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $c0
|
|
db $0B, $0C, $0D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $e0
|
|
db $0E, $0F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14ccf: ; 0x14ccf
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $06, $07
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $a0
|
|
db $10, $11, $0A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $c0
|
|
db $12, $13, $0D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $e0
|
|
db $14, $15
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14ce9: ; 0x14ce9
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $06, $07
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $a0
|
|
db $10, $16, $17
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $c0
|
|
db $12, $18, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $e0
|
|
db $14, $15
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14d03: ; 0x14d03
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $1A, $1B
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $a0
|
|
db $1C, $1D, $17
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $c0
|
|
db $12, $18, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $e0
|
|
db $14, $15
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14d1d: ; 014d1d
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $92
|
|
db $07, $06
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $b1
|
|
db $0A, $1E, $08
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $d1
|
|
db $22, $0C, $24
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $f2
|
|
db $0F, $0E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14d37: ; 0x14d37
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $92
|
|
db $07, $06
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $b1
|
|
db $0A, $1F, $10
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $d1
|
|
db $22, $13, $25
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $f2
|
|
db $15, $14
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14d51: ; 0x14d51
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $92
|
|
db $07, $06
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $b1
|
|
db $17, $20, $10
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $d1
|
|
db $23, $18, $25
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $f2
|
|
db $15, $14
|
|
|
|
db $00 ; terminator
|
|
|
|
TileListData_14d6b: ; 0x14d6b
|
|
dw LoadTileLists
|
|
db $0A ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $92
|
|
db $1B, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $b1
|
|
db $17, $21, $1C
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $d1
|
|
db $23, $18, $25
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $f2
|
|
db $15, $14
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolveVoltorbCollision: ; 0x14d85
|
|
ld a, [wWhichVoltorb]
|
|
and a
|
|
jr z, .noVoltorbCollision
|
|
xor a
|
|
ld [wWhichVoltorb], a
|
|
call Func_14dc9
|
|
ld a, $10
|
|
ld [wd4d6], a
|
|
ld a, [wWhichVoltorbId]
|
|
sub $3
|
|
ld [wd4d7], a
|
|
ld a, $4
|
|
callba Func_10000
|
|
ld bc, FiveHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ret
|
|
|
|
.noVoltorbCollision
|
|
ld a, [wd4d6]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd4d6], a
|
|
ret nz
|
|
ld a, $ff
|
|
ld [wd4d7], a
|
|
ret
|
|
|
|
Func_14dc9: ; 0x14dc9
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $3
|
|
ld [wd804], a
|
|
ld hl, $0200
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
lb de, $00, $0e
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
ResolveRedStageSpinnerCollision: ; 0x14dea
|
|
ld a, [wSpinnerCollision]
|
|
and a
|
|
jr z, Func_14e10
|
|
xor a
|
|
ld [wSpinnerCollision], a
|
|
ld a, [wBallYVelocity]
|
|
ld c, a
|
|
ld a, [wBallYVelocity + 1]
|
|
ld b, a
|
|
ld a, c
|
|
ld [wd50b], a
|
|
ld a, b
|
|
ld [wd50c], a
|
|
ld a, $c
|
|
callba Func_10000
|
|
; fall through
|
|
Func_14e10: ; 0x14e10
|
|
ld hl, wd50b
|
|
ld a, [hli]
|
|
or [hl]
|
|
ret z
|
|
ld a, [wd50b]
|
|
ld c, a
|
|
ld a, [wd50c]
|
|
ld b, a
|
|
bit 7, b
|
|
jr nz, .asm_14e2e
|
|
ld a, c
|
|
sub $7
|
|
ld c, a
|
|
ld a, b
|
|
sbc $0
|
|
ld b, a
|
|
jr nc, .asm_14e3b
|
|
jr .asm_14e38
|
|
|
|
.asm_14e2e
|
|
ld a, c
|
|
add $7
|
|
ld c, a
|
|
ld a, b
|
|
adc $0
|
|
ld b, a
|
|
jr nc, .asm_14e3b
|
|
.asm_14e38
|
|
ld bc, $0000
|
|
.asm_14e3b
|
|
ld a, c
|
|
ld [wd50b], a
|
|
ld a, b
|
|
ld [wd50c], a
|
|
ld hl, wd50b
|
|
ld a, [wd509]
|
|
add [hl]
|
|
ld [wd509], a
|
|
inc hl
|
|
ld a, [wd50a]
|
|
adc [hl]
|
|
bit 7, a
|
|
ld c, $0
|
|
jr z, .asm_14e5e
|
|
add $18
|
|
ld c, $1
|
|
jr .asm_14e66
|
|
|
|
.asm_14e5e
|
|
cp $18
|
|
jr c, .asm_14e66
|
|
sub $18
|
|
ld c, $1
|
|
.asm_14e66
|
|
ld [wd50a], a
|
|
ld a, c
|
|
and a
|
|
ret z
|
|
ld bc, TenPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld hl, wd62d
|
|
call Func_e4a
|
|
ld a, [wd517]
|
|
cp $f
|
|
jr nz, .asm_14e8a
|
|
call Func_14ea7
|
|
ret
|
|
|
|
.asm_14e8a
|
|
inc a
|
|
ld [wd517], a
|
|
call Func_14ea7
|
|
ld a, [wd517]
|
|
cp $f
|
|
jr nz, .asm_14e9d
|
|
ld a, $64
|
|
ld [wd51e], a
|
|
.asm_14e9d
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret nz
|
|
call Func_14ece
|
|
ret
|
|
|
|
Func_14ea7: ; 0x14ea7
|
|
ld a, [wd51e]
|
|
and a
|
|
ret nz
|
|
ld a, [wd517]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SoundEffects_14ebe
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
SoundEffects_14ebe:
|
|
db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
|
|
|
|
Func_14ece: ; 0x14ece
|
|
ld a, [wd517]
|
|
ld c, a
|
|
sla c
|
|
ld b, $0
|
|
ld hl, TileDataPointers_14eeb
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_14ee1
|
|
ld hl, TileDataPointers_1509b
|
|
.asm_14ee1
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, BANK(TileDataPointers_14eeb)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_14eeb:
|
|
dw TileData_14f0b
|
|
dw TileData_14f10
|
|
dw TileData_14f15
|
|
dw TileData_14f1a
|
|
dw TileData_14f1f
|
|
dw TileData_14f24
|
|
dw TileData_14f29
|
|
dw TileData_14f2e
|
|
dw TileData_14f33
|
|
dw TileData_14f38
|
|
dw TileData_14f3d
|
|
dw TileData_14f42
|
|
dw TileData_14f47
|
|
dw TileData_14f4c
|
|
dw TileData_14f51
|
|
dw TileData_14f56
|
|
|
|
TileData_14f0b: ; 0x14f0b
|
|
db $02
|
|
dw TileData_14f5b
|
|
dw TileData_14f65
|
|
|
|
TileData_14f10: ; 0x14f10
|
|
db $02
|
|
dw TileData_14f6f
|
|
dw TileData_14f79
|
|
|
|
TileData_14f15: ; 0x14f15
|
|
db $02
|
|
dw TileData_14f83
|
|
dw TileData_14f8d
|
|
|
|
TileData_14f1a: ; 0x14f1a
|
|
db $02
|
|
dw TileData_14f97
|
|
dw TileData_14fa1
|
|
|
|
TileData_14f1f: ; 0x14f1f
|
|
db $02
|
|
dw TileData_14fab
|
|
dw TileData_14fb5
|
|
|
|
TileData_14f24: ; 0x14f24
|
|
db $02
|
|
dw TileData_14fbf
|
|
dw TileData_14fc9
|
|
|
|
TileData_14f29: ; 0x14f29
|
|
db $02
|
|
dw TileData_14fd3
|
|
dw TileData_14fdd
|
|
|
|
TileData_14f2e: ; 0x14f2e
|
|
db $02
|
|
dw TileData_14fe7
|
|
dw TileData_14ff1
|
|
|
|
TileData_14f33: ; 0x14f33
|
|
db $02
|
|
dw TileData_14ffb
|
|
dw TileData_15005
|
|
|
|
TileData_14f38: ; 0x14f38
|
|
db $02
|
|
dw TileData_1500f
|
|
dw TileData_15019
|
|
|
|
TileData_14f3d: ; 0x14f3d
|
|
db $02
|
|
dw TileData_15023
|
|
dw TileData_1502d
|
|
|
|
TileData_14f42: ; 0x14f42
|
|
db $02
|
|
dw TileData_15037
|
|
dw TileData_15041
|
|
|
|
TileData_14f47: ; 0x14f47
|
|
db $02
|
|
dw TileData_1504b
|
|
dw TileData_15055
|
|
|
|
TileData_14f4c: ; 0x14f4c
|
|
db $02
|
|
dw TileData_1505f
|
|
dw TileData_15069
|
|
|
|
TileData_14f51: ; 0x14f51
|
|
db $02
|
|
dw TileData_15073
|
|
dw TileData_1507d
|
|
|
|
TileData_14f56: ; 0x14f56
|
|
db $02
|
|
dw TileData_15087
|
|
dw TileData_15091
|
|
|
|
TileData_14f5b: ; 0x14f5b
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldTopBaseGameBoyGfx + $cb0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
TileData_14f65: ; 0x14f65
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldTopBaseGameBoyGfx + $cd0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
TileData_14f6f: ; 0x14f6f
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AE0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14f79: ; 0x14f79
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14f83: ; 0x14f83
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14f8d: ; 0x14f8d
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14f97: ; 0x14f97
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fa1: ; 0x14fa1
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fab: ; 0x14fab
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fb5: ; 0x14fb5
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BC0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fbf: ; 0x14fbf
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BE0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fc9: ; 0x14fc9
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fd3: ; 0x14fd3
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fdd: ; 0x14fdd
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14fe7: ; 0x14fe7
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14ff1: ; 0x14ff1
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_14ffb: ; 0x14ffb
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15005: ; 0x15005
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CC0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1500f: ; 0x1500f
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CE0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15019: ; 0x15019
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15023: ; 0x15023
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1502d: ; 0x1502d
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15037: ; 0x15037
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15041: ; 0x15041
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1504b: ; 0x1504b
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15055: ; 0x15055
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DC0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1505f: ; 0x1505f
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DE0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15069: ; 0x15069
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15073: ; 0x15073
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1507d: ; 0x1507d
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15087: ; 0x15087
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $75
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_15091: ; 0x15091
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $77
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1509b:
|
|
dw TileData_150bb
|
|
dw TileData_150be
|
|
dw TileData_150c1
|
|
dw TileData_150c4
|
|
dw TileData_150c7
|
|
dw TileData_150ca
|
|
dw TileData_150cd
|
|
dw TileData_150d0
|
|
dw TileData_150d3
|
|
dw TileData_150d6
|
|
dw TileData_150d9
|
|
dw TileData_150dc
|
|
dw TileData_150df
|
|
dw TileData_150e2
|
|
dw TileData_150e5
|
|
dw TileData_150e8
|
|
|
|
TileData_150bb: ; 0x150bb
|
|
db $01
|
|
dw TileData_150eb
|
|
|
|
TileData_150be: ; 0x150be
|
|
db $01
|
|
dw TileData_150f9
|
|
|
|
TileData_150c1: ; 0x150c1
|
|
db $01
|
|
dw TileData_15107
|
|
|
|
TileData_150c4: ; 0x150c4
|
|
db $01
|
|
dw TileData_15115
|
|
|
|
TileData_150c7: ; 0x150c7
|
|
db $01
|
|
dw TileData_15123
|
|
|
|
TileData_150ca: ; 0x150ca
|
|
db $01
|
|
dw TileData_15131
|
|
|
|
TileData_150cd: ; 0x150cd
|
|
db $01
|
|
dw TileData_1513f
|
|
|
|
TileData_150d0: ; 0x150d0
|
|
db $01
|
|
dw TileData_1514d
|
|
|
|
TileData_150d3: ; 0x150d3
|
|
db $01
|
|
dw TileData_1515b
|
|
|
|
TileData_150d6: ; 0x150d6
|
|
db $01
|
|
dw TileData_15169
|
|
|
|
TileData_150d9: ; 0x150d9
|
|
db $01
|
|
dw TileData_15177
|
|
|
|
TileData_150dc: ; 0x150dc
|
|
db $01
|
|
dw TileData_15185
|
|
|
|
TileData_150df: ; 0x150df
|
|
db $01
|
|
dw TileData_15193
|
|
|
|
TileData_150e2: ; 0x150e2
|
|
db $01
|
|
dw TileData_151a1
|
|
|
|
TileData_150e5: ; 0x150e5
|
|
db $01
|
|
dw TileData_151af
|
|
|
|
TileData_150e8: ; 0x150e8
|
|
db $01
|
|
dw TileData_151bd
|
|
|
|
TileData_150eb: ; 0x150eb
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $5E, $5F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_150f9: ; 0x150f9
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $60, $61
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15107: ; 0x15107
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $62, $63
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15115: ; 0x15115
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $64, $65
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15123: ; 0x15123
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $66, $67
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15131: ; 0x15131
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $68, $69
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1513f: ; 0x1513f
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6A, $6B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1514d: ; 0x1514d
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6C, $6D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1515b: ; 0x1515b
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6E, $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15169: ; 0x15169
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $70, $71
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6E, $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15177: ; 0x15177
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $72, $73
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6E, $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15185: ; 0x15185
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $74, $75
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6E, $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15193: ; 0x15193
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $76, $77
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6E, $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_151a1: ; 0x151a1
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $78, $79
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6E, $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_151af: ; 0x151af
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $7A, $7B
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $6E, $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_151bd: ; 0x151bd
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $990E
|
|
db $7C, $7D
|
|
|
|
db $02 ; number of tiles
|
|
dw $992E
|
|
db $7E, $7F
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_151cb: ; 0x151cb
|
|
ld a, [wWhichCAVELight]
|
|
and a
|
|
jr z, .asm_15229
|
|
xor a
|
|
ld [wWhichCAVELight], a
|
|
ld a, [wd513]
|
|
and a
|
|
jr nz, .asm_15229
|
|
ld a, [wWhichCAVELightId]
|
|
sub $a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd50f
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [hl], $1
|
|
and a
|
|
ret nz
|
|
ld bc, OneHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld hl, wd50f
|
|
ld a, [hli]
|
|
and [hl]
|
|
inc hl
|
|
and [hl]
|
|
inc hl
|
|
and [hl]
|
|
jr z, Func_asm_1522d
|
|
ld a, $1
|
|
ld [wd513], a
|
|
ld a, $80
|
|
ld [wd514], a
|
|
ld bc, FourHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $09
|
|
call PlaySoundEffect
|
|
ld hl, wd62c
|
|
call Func_e4a
|
|
jr Func_asm_1522d
|
|
|
|
.asm_15229
|
|
call Func_15270
|
|
ret z
|
|
; fall through
|
|
|
|
Func_asm_1522d: ; 0x1522d
|
|
ld hl, wd512
|
|
ld b, $4
|
|
.asm_15232
|
|
ld a, [hld]
|
|
push hl
|
|
call Func_1523c
|
|
pop hl
|
|
dec b
|
|
jr nz, .asm_15232
|
|
ret
|
|
|
|
Func_1523c: ; 0x1523c
|
|
and a
|
|
jr z, .asm_1524e
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_15249
|
|
ld hl, TileDataPointers_152dd
|
|
jr .asm_1525b
|
|
|
|
.asm_15249
|
|
ld hl, TileDataPointers_1531d
|
|
jr .asm_1525b
|
|
|
|
.asm_1524e
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_15258
|
|
ld hl, TileDataPointers_152e5
|
|
jr .asm_1525b
|
|
|
|
.asm_15258
|
|
ld hl, TileDataPointers_15325
|
|
.asm_1525b
|
|
push bc
|
|
dec b
|
|
sla b
|
|
ld e, b
|
|
ld d, $0
|
|
add hl, de
|
|
ld c, [hl]
|
|
inc hl
|
|
ld b, [hl]
|
|
ld a, $5
|
|
ld de, LoadTileLists
|
|
call Func_10c5
|
|
pop bc
|
|
ret
|
|
|
|
Func_15270: ; 0x15270
|
|
ld a, [wd513]
|
|
and a
|
|
jr z, .asm_152a6
|
|
ld a, [wd514]
|
|
dec a
|
|
ld [wd514], a
|
|
jr nz, .asm_1528d
|
|
ld [wd513], a
|
|
ld a, $1
|
|
ld [wd608], a
|
|
ld a, $3
|
|
ld [wd607], a
|
|
xor a
|
|
.asm_1528d
|
|
and $7
|
|
ret nz
|
|
ld a, [wd514]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $1
|
|
ld hl, wd50f
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld a, $1
|
|
and a
|
|
ret
|
|
|
|
.asm_152a6
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed
|
|
jr z, .asm_152c2
|
|
ld hl, wd50f
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, d
|
|
ld [hld], a
|
|
ld a, e
|
|
ld [hld], a
|
|
ld a, b
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_152c2
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed
|
|
ret z
|
|
ld hl, wd50f
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld a, e
|
|
ld [hld], a
|
|
ld a, b
|
|
ld [hld], a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, d
|
|
ld [hl], a
|
|
ret
|
|
|
|
TileDataPointers_152dd:
|
|
dw TileData_152ed
|
|
dw TileData_152f3
|
|
dw TileData_152f9
|
|
dw TileData_152ff
|
|
|
|
TileDataPointers_152e5:
|
|
dw TileData_15305
|
|
dw TileData_1530b
|
|
dw TileData_15311
|
|
dw TileData_15317
|
|
|
|
TileData_152ed: ; 0x152ed
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $7d
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_152f3: ; 0x152f3
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $7d
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_152f9: ; 0x152f9
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $7f
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_152ff: ; 0x152ff
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $7f
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15305: ; 0x15305
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $7c
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1530b: ; 0x1530b
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $7c
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15311: ; 0x15311
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $7e
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15317: ; 0x15317
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $7e
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1531d:
|
|
dw TileData_1532d
|
|
dw TileData_15333
|
|
dw TileData_15339
|
|
dw TileData_1533f
|
|
|
|
TileDataPointers_15325:
|
|
dw TileData_15345
|
|
dw TileData_1534b
|
|
dw TileData_15351
|
|
dw TileData_15357
|
|
|
|
TileData_1532d: ; 0x1532d
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $27
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15333: ; 0x15333
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $29
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15339: ; 0x15339
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $7E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1533f: ; 0x1533f
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $7F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15345: ; 0x15345
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $26
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1534b: ; 0x1534b
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $28
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15351: ; 0x15351
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $7C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15357: ; 0x15357
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $7D
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d
|
|
ld a, [wWhichPinballUpgradeTrigger]
|
|
and a
|
|
jp z, .asm_1544c
|
|
xor a
|
|
ld [wWhichPinballUpgradeTrigger], a
|
|
ld a, [wStageCollisionState]
|
|
bit 0, a
|
|
jp z, .asm_1544c
|
|
ld a, [wd5fc]
|
|
and a
|
|
jp nz, .asm_1544c
|
|
xor a
|
|
ld [wRightAlleyTrigger], a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
call Func_159c9
|
|
ld a, $b
|
|
callba Func_10000
|
|
ld a, [wWhichPinballUpgradeTriggerId]
|
|
sub $e
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd5f9
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [hl], $1
|
|
and a
|
|
ret nz
|
|
ld bc, OneHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld hl, wd5f9
|
|
ld a, [hli]
|
|
and [hl]
|
|
inc hl
|
|
and [hl]
|
|
jr nz, .asm_153c0
|
|
lb de, $00, $09
|
|
call PlaySoundEffect
|
|
jp Func_15450
|
|
|
|
.asm_153c0
|
|
ld a, $1
|
|
ld [wd5fc], a
|
|
ld a, $80
|
|
ld [wd5fd], a
|
|
; load approximately 1 minute of frames into wBallTypeCounter
|
|
ld a, $10
|
|
ld [wBallTypeCounter], a
|
|
ld a, $e
|
|
ld [wBallTypeCounter + 1], a
|
|
ld bc, FourHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wBallType]
|
|
cp MASTER_BALL
|
|
jr z, .masterBall
|
|
lb de, $06, $3a
|
|
call PlaySoundEffect
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld de, FieldMultiplierText
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
ld a, [wBallType]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallTypeProgressionRedField
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wBallType], a
|
|
add $30
|
|
ld [wBottomMessageText + $12], a
|
|
jr .asm_15447
|
|
|
|
.masterBall
|
|
lb de, $0f, $4d
|
|
call PlaySoundEffect
|
|
ld bc, OneMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $0100
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5d4
|
|
ld de, DigitsText1to8
|
|
call Func_32cc
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5cc
|
|
ld de, FieldMultiplierSpecialBonusText
|
|
call LoadTextHeader
|
|
.asm_15447
|
|
call TransitionPinballUpgrade
|
|
jr Func_15450
|
|
|
|
.asm_1544c
|
|
call Func_154a9
|
|
ret z
|
|
|
|
Func_15450
|
|
ld a, [wStageCollisionState]
|
|
bit 0, a
|
|
ret z
|
|
ld hl, wd5fb
|
|
ld b, $3
|
|
.asm_1545b
|
|
ld a, [hld]
|
|
push hl
|
|
call Func_15465
|
|
pop hl
|
|
dec b
|
|
jr nz, .asm_1545b
|
|
ret
|
|
|
|
Func_15465: ; 0x15465
|
|
and a
|
|
jr z, .asm_15477
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_15472
|
|
ld hl, TileDataPointers_15511
|
|
jr .asm_15484
|
|
|
|
.asm_15472
|
|
ld hl, TileDataPointers_15543
|
|
jr .asm_15484
|
|
|
|
.asm_15477
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_15481
|
|
ld hl, TileDataPointers_15517
|
|
jr .asm_15484
|
|
|
|
.asm_15481
|
|
ld hl, TileDataPointers_15549
|
|
.asm_15484
|
|
push bc
|
|
dec b
|
|
sla b
|
|
ld e, b
|
|
ld d, $0
|
|
add hl, de
|
|
ld c, [hl]
|
|
inc hl
|
|
ld b, [hl]
|
|
ld a, $5
|
|
ld de, LoadTileLists
|
|
call Func_10c5
|
|
pop bc
|
|
ret
|
|
|
|
Func_15499: ; 0x15499
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret nz
|
|
ld b, $3
|
|
.asm_1549f
|
|
push hl
|
|
xor a
|
|
call Func_15465
|
|
pop hl
|
|
dec b
|
|
jr nz, .asm_1549f
|
|
ret
|
|
|
|
Func_154a9: ; 0x154a9
|
|
ld a, [wd5fc]
|
|
and a
|
|
jr z, .asm_154d6
|
|
ld a, [wd5fd]
|
|
dec a
|
|
ld [wd5fd], a
|
|
jr nz, .asm_154bb
|
|
ld [wd5fc], a
|
|
.asm_154bb
|
|
and $7
|
|
jr nz, .asm_154d4
|
|
ld a, [wd5fd]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $1
|
|
ld hl, wd5f9
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld a, $1
|
|
and a
|
|
ret
|
|
|
|
.asm_154d4
|
|
xor a
|
|
ret
|
|
|
|
.asm_154d6
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed
|
|
jr z, .asm_154ee
|
|
ld hl, wd5f9
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, e
|
|
ld [hld], a
|
|
ld a, b
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_154ee
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed
|
|
ret z
|
|
ld hl, wd5f9
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld a, b
|
|
ld [hld], a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, e
|
|
ld [hl], a
|
|
ret
|
|
|
|
BallTypeProgressionRedField: ; 0x15505
|
|
; Determines the next upgrade for the Ball.
|
|
db GREAT_BALL ; POKE_BALL -> GREAT_BALL
|
|
db GREAT_BALL ; unused
|
|
db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
|
|
db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
|
|
db MASTER_BALL ; unused
|
|
db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
|
|
|
|
BallTypeDegradationRedField: ; 0x1550b
|
|
; Determines the previous upgrade for the Ball.
|
|
db POKE_BALL ; POKE_BALL -> POKE_BALL
|
|
db POKE_BALL ; unused
|
|
db POKE_BALL ; GREAT_BALL -> POKE_BALL
|
|
db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
|
|
db ULTRA_BALL ; unused
|
|
db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
|
|
|
|
TileDataPointers_15511:
|
|
dw TileData_1551d
|
|
dw TileData_15523
|
|
dw TileData_1552a
|
|
|
|
TileDataPointers_15517:
|
|
dw TileData_15530
|
|
dw TileData_15536
|
|
dw TileData_1553d
|
|
|
|
TileData_1551d: ; 0x1551d
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $E7
|
|
db $ac
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15523: ; 0x15523
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $C9
|
|
db $ad, $ae
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1552a: ; 0x1552a
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $CC
|
|
db $af
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15530: ; 0x15530
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $E7
|
|
db $66
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15536: ; 0x15536
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $C9
|
|
db $68, $69
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1553d: ; 0x1553d
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $CC
|
|
db $6a
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_15543:
|
|
dw TileData_1554f
|
|
dw TileData_15555
|
|
dw TileData_1555c
|
|
|
|
TileDataPointers_15549:
|
|
dw TileData_15562
|
|
dw TileData_15568
|
|
dw TileData_1556F
|
|
|
|
TileData_1554f: ; 0x1554f
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $e7
|
|
db $3D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15555: ; 0x15555
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c9
|
|
db $3F, $40
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1555c: ; 0x1555c
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $cc
|
|
db $41
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15562: ; 0x15562
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $e7
|
|
db $37
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15568: ; 0x15568
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $c9
|
|
db $39, $3a
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1556F: ; 0x1556F
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $cc
|
|
db $3B
|
|
|
|
db $00 ; terminator
|
|
|
|
HandleRedStageBallTypeUpgradeCounter: ; 0x15575
|
|
ld a, [wCapturingMon]
|
|
and a
|
|
ret nz
|
|
ld hl, wBallTypeCounter
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld b, [hl]
|
|
or b
|
|
ret z
|
|
dec bc
|
|
ld a, b
|
|
ld [hld], a
|
|
ld [hl], c
|
|
or c
|
|
ret nz
|
|
; counter is now 0! Degrade the ball upgrade.
|
|
ld a, [wBallType]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallTypeDegradationRedField
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wBallType], a
|
|
and a
|
|
jr z, .pokeball
|
|
; load approximately 1 minute of frames into wBallTypeCounter
|
|
ld a, $10
|
|
ld [wBallTypeCounter], a
|
|
ld a, $e
|
|
ld [wBallTypeCounter + 1], a
|
|
.pokeball
|
|
call TransitionPinballUpgrade
|
|
ret
|
|
|
|
TransitionPinballUpgrade: ; 0x155a7
|
|
ld a, [wBallType]
|
|
ld c, a
|
|
sla c
|
|
ld b, $0
|
|
ld hl, PinballUpgradeTransitionPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(PinballUpgradeTransitionPointers)
|
|
call Func_10aa
|
|
; fall through
|
|
|
|
Func_155bb: ; 0x155bb
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
; gameboy color
|
|
ld a, [wBallType]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_157f7
|
|
add hl, bc
|
|
ld c, [hl]
|
|
inc hl
|
|
ld b, [hl]
|
|
ld a, BANK(Data_157f7)
|
|
ld de, LoadPalettes
|
|
call Func_10c5
|
|
ret
|
|
|
|
PinballUpgradeTransitionPointers:
|
|
dw TransitionToPokeBallPointers ; POKE_BALL
|
|
dw TransitionToPokeBallPointers ; POKE_BALL
|
|
dw TransitionToGreatBallPointers ; GREAT_BALL
|
|
dw TransitionToUltraBallPointers ; ULTRA_BALL
|
|
dw TransitionToUltraBallPointers ; ULTRA_BALL
|
|
dw TransitionToMasterBallPointers ; MASTER_BALL
|
|
|
|
TransitionToPokeBallPointers:
|
|
db 11
|
|
dw TransitionToPokeBall_TileData_1
|
|
dw TransitionToPokeBall_TileData_2
|
|
dw TransitionToPokeBall_TileData_3
|
|
dw TransitionToPokeBall_TileData_4
|
|
dw TransitionToPokeBall_TileData_5
|
|
dw TransitionToPokeBall_TileData_6
|
|
dw TransitionToPokeBall_TileData_7
|
|
dw TransitionToPokeBall_TileData_8
|
|
dw TransitionToPokeBall_TileData_9
|
|
dw TransitionToPokeBall_TileData_10
|
|
dw TransitionToPokeBall_TileData_11
|
|
|
|
TransitionToGreatBallPointers:
|
|
db 11
|
|
dw TransitionToGreatBall_TileData_1
|
|
dw TransitionToGreatBall_TileData_2
|
|
dw TransitionToGreatBall_TileData_3
|
|
dw TransitionToGreatBall_TileData_4
|
|
dw TransitionToGreatBall_TileData_5
|
|
dw TransitionToGreatBall_TileData_6
|
|
dw TransitionToGreatBall_TileData_7
|
|
dw TransitionToGreatBall_TileData_8
|
|
dw TransitionToGreatBall_TileData_9
|
|
dw TransitionToGreatBall_TileData_10
|
|
dw TransitionToGreatBall_TileData_11
|
|
|
|
TransitionToUltraBallPointers:
|
|
db 11
|
|
dw TransitionToUltraBall_TileData_1
|
|
dw TransitionToUltraBall_TileData_2
|
|
dw TransitionToUltraBall_TileData_3
|
|
dw TransitionToUltraBall_TileData_4
|
|
dw TransitionToUltraBall_TileData_5
|
|
dw TransitionToUltraBall_TileData_6
|
|
dw TransitionToUltraBall_TileData_7
|
|
dw TransitionToUltraBall_TileData_8
|
|
dw TransitionToUltraBall_TileData_9
|
|
dw TransitionToUltraBall_TileData_10
|
|
dw TransitionToUltraBall_TileData_11
|
|
|
|
TransitionToMasterBallPointers:
|
|
db 11
|
|
dw TransitionToMasterBall_TileData_1
|
|
dw TransitionToMasterBall_TileData_2
|
|
dw TransitionToMasterBall_TileData_3
|
|
dw TransitionToMasterBall_TileData_4
|
|
dw TransitionToMasterBall_TileData_5
|
|
dw TransitionToMasterBall_TileData_6
|
|
dw TransitionToMasterBall_TileData_7
|
|
dw TransitionToMasterBall_TileData_8
|
|
dw TransitionToMasterBall_TileData_9
|
|
dw TransitionToMasterBall_TileData_10
|
|
dw TransitionToMasterBall_TileData_11
|
|
|
|
TransitionToPokeBall_TileData_1:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $40)
|
|
dw PinballPokeballGfx + $0
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_2:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $43)
|
|
dw PinballPokeballGfx + $30
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_3:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $46)
|
|
dw PinballPokeballGfx + $60
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_4:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $49)
|
|
dw PinballPokeballGfx + $90
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_5:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4c)
|
|
dw PinballPokeballGfx + $c0
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_6:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4f)
|
|
dw PinballPokeballGfx + $f0
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_7:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $52)
|
|
dw PinballPokeballGfx + $120
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_8:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $55)
|
|
dw PinballPokeballGfx + $150
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_9:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $58)
|
|
dw PinballPokeballGfx + $180
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_10:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $5b)
|
|
dw PinballPokeballGfx + $1b0
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToPokeBall_TileData_11:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw (vTilesOB tile $5e)
|
|
dw PinballPokeballGfx + $1e0
|
|
db Bank(PinballPokeballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_1:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $40)
|
|
dw PinballGreatballGfx + $0
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_2:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $43)
|
|
dw PinballGreatballGfx + $30
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_3:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $46)
|
|
dw PinballGreatballGfx + $60
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_4:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $49)
|
|
dw PinballGreatballGfx + $90
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_5:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4c)
|
|
dw PinballGreatballGfx + $c0
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_6:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4f)
|
|
dw PinballGreatballGfx + $f0
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_7:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $52)
|
|
dw PinballGreatballGfx + $120
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_8:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $55)
|
|
dw PinballGreatballGfx + $150
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_9:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $58)
|
|
dw PinballGreatballGfx + $180
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_10:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $5b)
|
|
dw PinballGreatballGfx + $1b0
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToGreatBall_TileData_11:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw (vTilesOB tile $5e)
|
|
dw PinballGreatballGfx + $1e0
|
|
db Bank(PinballGreatballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_1:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $40)
|
|
dw PinballUltraballGfx + $0
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_2:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $43)
|
|
dw PinballUltraballGfx + $30
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_3:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $46)
|
|
dw PinballUltraballGfx + $60
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_4:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $49)
|
|
dw PinballUltraballGfx + $90
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_5:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4c)
|
|
dw PinballUltraballGfx + $c0
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_6:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4f)
|
|
dw PinballUltraballGfx + $f0
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_7:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $52)
|
|
dw PinballUltraballGfx + $120
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_8:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $55)
|
|
dw PinballUltraballGfx + $150
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_9:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $58)
|
|
dw PinballUltraballGfx + $180
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_10:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $5b)
|
|
dw PinballUltraballGfx + $1b0
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToUltraBall_TileData_11:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw (vTilesOB tile $5e)
|
|
dw PinballUltraballGfx + $1e0
|
|
db Bank(PinballUltraballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_1:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $40)
|
|
dw PinballMasterballGfx + $0
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_2:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $43)
|
|
dw PinballMasterballGfx + $30
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_3:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $46)
|
|
dw PinballMasterballGfx + $60
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_4:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $49)
|
|
dw PinballMasterballGfx + $90
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_5:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4c)
|
|
dw PinballMasterballGfx + $c0
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_6:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $4f)
|
|
dw PinballMasterballGfx + $f0
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_7:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $52)
|
|
dw PinballMasterballGfx + $120
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_8:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $55)
|
|
dw PinballMasterballGfx + $150
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_9:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $58)
|
|
dw PinballMasterballGfx + $180
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_10:
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw (vTilesOB tile $5b)
|
|
dw PinballMasterballGfx + $1b0
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
TransitionToMasterBall_TileData_11:
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw (vTilesOB tile $5e)
|
|
dw PinballMasterballGfx + $1e0
|
|
db Bank(PinballMasterballGfx)
|
|
db $00
|
|
|
|
Data_157f7:
|
|
dw Data_15803
|
|
dw Data_15803
|
|
dw Data_1580a
|
|
dw Data_15811
|
|
dw Data_15811
|
|
dw Data_15818
|
|
|
|
Data_15803:
|
|
db $08, $04, $40, $68, $51, $37, $00
|
|
Data_1580a:
|
|
db $08, $04, $40, $70, $51, $37, $00
|
|
Data_15811:
|
|
db $08, $04, $40, $78, $51, $37, $00
|
|
Data_15818:
|
|
db $08, $04, $40, $80, $51, $37, $00
|
|
|
|
ResolveRedStageBoardTriggerCollision: ; 0x1581f
|
|
ld a, [wWhichBoardTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wWhichBoardTrigger], a
|
|
ld bc, FivePoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wWhichBoardTriggerId]
|
|
sub $11
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd521
|
|
add hl, bc
|
|
ld [hl], $1
|
|
ld a, [wd521]
|
|
and a
|
|
call nz, Func_1587c
|
|
ld a, [wd522]
|
|
and a
|
|
call nz, Func_158c0
|
|
ld a, [wd523]
|
|
and a
|
|
call nz, Func_15904
|
|
ld a, [wd524]
|
|
and a
|
|
call nz, HandleLeftAlleyTriggerRedField
|
|
ld a, [wd525]
|
|
and a
|
|
call nz, Func_15931
|
|
ld a, [wd526]
|
|
and a
|
|
call nz, Func_15944
|
|
ld a, [wd527]
|
|
and a
|
|
call nz, HandleRightAlleyTriggerRedField
|
|
ld a, [wd528]
|
|
and a
|
|
call nz, Func_15990
|
|
ret
|
|
|
|
Func_1587c: ; 0x1587c
|
|
xor a
|
|
ld [wd521], a
|
|
ld a, [wLeftAlleyTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld a, $1
|
|
callba Func_10000
|
|
ret c
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
ret z
|
|
inc a
|
|
ld [wLeftAlleyCount], a
|
|
set 7, a
|
|
ld [wIndicatorStates], a
|
|
cp $83
|
|
ret nz
|
|
ld a, [wStageCollisionState]
|
|
and $1
|
|
or $6
|
|
ld [wStageCollisionState], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_159f4
|
|
ret
|
|
|
|
Func_158c0: ; 0x158c0
|
|
xor a
|
|
ld [wd522], a
|
|
ld a, [wLeftAlleyTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld a, $1
|
|
callba Func_10000
|
|
ret c
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
ret z
|
|
inc a
|
|
ld [wLeftAlleyCount], a
|
|
set 7, a
|
|
ld [wIndicatorStates], a
|
|
cp $83
|
|
ret nz
|
|
ld a, [wStageCollisionState]
|
|
and $1
|
|
or $6
|
|
ld [wStageCollisionState], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_159f4
|
|
ret
|
|
|
|
Func_15904: ; 0x15904
|
|
xor a
|
|
ld [wd523], a
|
|
ld a, [wSecondaryLeftAlleyTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld a, $3
|
|
callba Func_10000
|
|
ret
|
|
|
|
HandleLeftAlleyTriggerRedField: ; 0x1591e
|
|
; Ball passed over the left alley trigger point in the Red Field.
|
|
xor a
|
|
ld [wd524], a
|
|
ld [wRightAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld a, $1
|
|
ld [wLeftAlleyTrigger], a
|
|
call Func_159c9
|
|
ret
|
|
|
|
Func_15931: ; 0x15931
|
|
xor a
|
|
ld [wd525], a
|
|
ld [wRightAlleyTrigger], a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld a, $1
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
call Func_159c9
|
|
ret
|
|
|
|
Func_15944: ; 0x15944
|
|
xor a
|
|
ld [wd526], a
|
|
ld a, [wRightAlleyTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wRightAlleyTrigger], a
|
|
ld a, $2
|
|
callba Func_10000
|
|
ret c
|
|
ld a, [wRightAlleyCount]
|
|
cp $3
|
|
ret z
|
|
inc a
|
|
ld [wRightAlleyCount], a
|
|
cp $3
|
|
jr z, .asm_1596e
|
|
set 7, a
|
|
.asm_1596e
|
|
ld [wIndicatorStates + 1], a
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
ret c
|
|
ld a, $80
|
|
ld [wIndicatorStates + 3], a
|
|
ret
|
|
|
|
HandleRightAlleyTriggerRedField: ; 0x1597d
|
|
; Ball passed over the right alley trigger point in the Red Field.
|
|
xor a
|
|
ld [wd527], a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld a, $1
|
|
ld [wRightAlleyTrigger], a
|
|
call Func_159c9
|
|
ret
|
|
|
|
Func_15990: ; 0x15990
|
|
xor a
|
|
ld [wd528], a
|
|
ld a, [wRightAlleyTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wRightAlleyTrigger], a
|
|
ld a, $2
|
|
callba Func_10000
|
|
ret c
|
|
ld a, [wRightAlleyCount]
|
|
cp $3
|
|
ret z
|
|
inc a
|
|
ld [wRightAlleyCount], a
|
|
cp $3
|
|
jr z, .asm_159ba
|
|
set 7, a
|
|
.asm_159ba
|
|
ld [wIndicatorStates + 1], a
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
ret c
|
|
ld a, $80
|
|
ld [wIndicatorStates + 3], a
|
|
ret
|
|
|
|
Func_159c9: ; 0x159c9
|
|
ld a, [wd7ad]
|
|
bit 7, a
|
|
ret nz
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
and $1
|
|
or c
|
|
ld [wStageCollisionState], a
|
|
ld a, $ff
|
|
ld [wd7ad], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_159f4
|
|
ld a, $1
|
|
ld [wd580], a
|
|
call Func_1404a
|
|
ret
|
|
|
|
Func_159f4: ; 0x159f4
|
|
ld a, [hLCDC]
|
|
bit 7, a
|
|
jr z, .asm_15a13
|
|
ld a, [wd7f2]
|
|
and $fe
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
and $fe
|
|
cp c
|
|
jr z, .asm_15a13
|
|
add c
|
|
cp $2
|
|
jr z, .asm_15a13
|
|
lb de, $00, $00
|
|
call PlaySoundEffect
|
|
.asm_15a13
|
|
ld a, [wd7f2]
|
|
swap a
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
sla a
|
|
or c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_15a3f
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_15a2d
|
|
ld hl, TileDataPointers_15d05
|
|
.asm_15a2d
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_15a3f)
|
|
call Func_10aa
|
|
ld a, [wStageCollisionState]
|
|
ld [wd7f2], a
|
|
ret
|
|
|
|
TileDataPointers_15a3f:
|
|
dw $0000
|
|
dw TileData_15b71
|
|
dw TileData_15b16
|
|
dw TileData_15abf
|
|
dw TileData_15b23
|
|
dw TileData_15adc
|
|
dw TileData_15b2a
|
|
dw TileData_15af3
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b16
|
|
dw $0000
|
|
dw TileData_15b23
|
|
dw $0000
|
|
dw TileData_15b2a
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b71
|
|
dw TileData_15b3d
|
|
dw $0000
|
|
dw TileData_15b50
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b82
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b3d
|
|
dw $0000
|
|
dw TileData_15b50
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b57
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b71
|
|
dw TileData_15b2a
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b57
|
|
dw TileData_15b82
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b2a
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b6a
|
|
dw $0000
|
|
dw TileData_15b3d
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b71
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15b6a
|
|
dw $0000
|
|
dw TileData_15b3d
|
|
dw TileData_15b82
|
|
dw $0000
|
|
|
|
TileData_15abf: ; 0x15abf
|
|
db $e
|
|
dw TileData_15b93
|
|
dw TileData_15b9d
|
|
dw TileData_15ba7
|
|
dw TileData_15bb1
|
|
dw TileData_15bbb
|
|
dw TileData_15bc5
|
|
dw TileData_15c0b
|
|
dw TileData_15c15
|
|
dw TileData_15c1f
|
|
dw TileData_15c29
|
|
dw TileData_15c33
|
|
dw TileData_15c3d
|
|
dw TileData_15c47
|
|
dw TileData_15c51
|
|
|
|
TileData_15adc: ; 0x15adc
|
|
db $0b
|
|
dw TileData_15c0b
|
|
dw TileData_15c15
|
|
dw TileData_15c1f
|
|
dw TileData_15c29
|
|
dw TileData_15c33
|
|
dw TileData_15c3d
|
|
dw TileData_15c47
|
|
dw TileData_15c51
|
|
dw TileData_15ce7
|
|
dw TileData_15cf1
|
|
dw TileData_15cfb
|
|
|
|
TileData_15af3: ; 0x15af3
|
|
db $11
|
|
dw TileData_15b93
|
|
dw TileData_15b9d
|
|
dw TileData_15ba7
|
|
dw TileData_15bb1
|
|
dw TileData_15bbb
|
|
dw TileData_15bc5
|
|
dw TileData_15c0b
|
|
dw TileData_15c15
|
|
dw TileData_15c1f
|
|
dw TileData_15c29
|
|
dw TileData_15c33
|
|
dw TileData_15c3d
|
|
dw TileData_15c47
|
|
dw TileData_15c51
|
|
dw TileData_15cab
|
|
dw TileData_15cb5
|
|
dw TileData_15cbf
|
|
|
|
TileData_15b16: ; 0x15b16
|
|
db $06
|
|
dw TileData_15b93
|
|
dw TileData_15b9d
|
|
dw TileData_15ba7
|
|
dw TileData_15bb1
|
|
dw TileData_15bbb
|
|
dw TileData_15bc5
|
|
|
|
TileData_15b23: ; 0x15b23
|
|
db $03
|
|
dw TileData_15ce7
|
|
dw TileData_15cf1
|
|
dw TileData_15cfb
|
|
|
|
TileData_15b2a: ; 0x15b2a
|
|
db $09
|
|
dw TileData_15b93
|
|
dw TileData_15b9d
|
|
dw TileData_15ba7
|
|
dw TileData_15bb1
|
|
dw TileData_15bbb
|
|
dw TileData_15bc5
|
|
dw TileData_15cab
|
|
dw TileData_15cb5
|
|
dw TileData_15cbf
|
|
|
|
TileData_15b3d: ; 0x15b3d
|
|
db $09
|
|
dw TileData_15bcf
|
|
dw TileData_15bd9
|
|
dw TileData_15be3
|
|
dw TileData_15bed
|
|
dw TileData_15bf7
|
|
dw TileData_15c01
|
|
dw TileData_15ce7
|
|
dw TileData_15cf1
|
|
dw TileData_15cfb
|
|
|
|
TileData_15b50: ; 0x15b50
|
|
db $03
|
|
dw TileData_15cab
|
|
dw TileData_15cb5
|
|
dw TileData_15cbf
|
|
|
|
TileData_15b57: ; 0x15b57
|
|
db $09
|
|
dw TileData_15b93
|
|
dw TileData_15b9d
|
|
dw TileData_15ba7
|
|
dw TileData_15bb1
|
|
dw TileData_15bbb
|
|
dw TileData_15bc5
|
|
dw TileData_15cc9
|
|
dw TileData_15cd3
|
|
dw TileData_15cdd
|
|
|
|
TileData_15b6a: ; 0x15b6a
|
|
db $03
|
|
dw TileData_15cc9
|
|
dw TileData_15cd3
|
|
dw TileData_15cdd
|
|
|
|
TileData_15b71: ; 0x15b71
|
|
db $08
|
|
dw TileData_15c0b
|
|
dw TileData_15c15
|
|
dw TileData_15c1f
|
|
dw TileData_15c29
|
|
dw TileData_15c33
|
|
dw TileData_15c3d
|
|
dw TileData_15c47
|
|
dw TileData_15c51
|
|
|
|
TileData_15b82: ; 0x15b82
|
|
db $08
|
|
dw TileData_15c5b
|
|
dw TileData_15c65
|
|
dw TileData_15c6f
|
|
dw TileData_15c79
|
|
dw TileData_15c83
|
|
dw TileData_15c8d
|
|
dw TileData_15c97
|
|
dw TileData_15ca1
|
|
|
|
TileData_15b93: ; 0x15b93
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15b9d: ; 0x15b9d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $30
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15ba7: ; 0x15ba7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15bb1: ; 0x15bb1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $90
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15bbb: ; 0x15bbb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $50
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15bc5: ; 0x15bc5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $53
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15bcf: ; 0x15bcf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldTopBaseGameBoyGfx + $9a0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15bd9: ; 0x15bd9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldTopBaseGameBoyGfx + $9d0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15be3: ; 0x15be3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4A
|
|
dw StageRedFieldTopBaseGameBoyGfx + $a00
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15bed: ; 0x15bed
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4D
|
|
dw StageRedFieldTopBaseGameBoyGfx + $a30
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15bf7: ; 0x15bf7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $50
|
|
dw StageRedFieldTopBaseGameBoyGfx + $a60
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c01: ; 0x15c01
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $53
|
|
dw StageRedFieldTopBaseGameBoyGfx + $a90
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c0b: ; 0x15c0b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $56
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $120
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c15: ; 0x15c15
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $59
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $150
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c1f: ; 0x15c1f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $180
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c29: ; 0x15c29
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5F
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c33: ; 0x15c33
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $62
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c3d: ; 0x15c3d
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $65
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $210
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c47: ; 0x15c47
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $66
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $620
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c51: ; 0x15c51
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $69
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $650
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15c5b: ; 0x15c5b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $56
|
|
dw StageRedFieldTopBaseGameBoyGfx + $ac0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c65: ; 0x15c65
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $59
|
|
dw StageRedFieldTopBaseGameBoyGfx + $af0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c6f: ; 0x15c6f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5C
|
|
dw StageRedFieldTopBaseGameBoyGfx + $b20
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c79: ; 0x15c79
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5F
|
|
dw StageRedFieldTopBaseGameBoyGfx + $b50
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c83: ; 0x15c83
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $62
|
|
dw StageRedFieldTopBaseGameBoyGfx + $b80
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c8d: ; 0x15c8d
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $65
|
|
dw StageRedFieldTopBaseGameBoyGfx + $bb0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15c97: ; 0x15c97
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $66
|
|
dw StageRedFieldTopBaseGameBoyGfx + $bc0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15ca1: ; 0x15ca1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $69
|
|
dw StageRedFieldTopBaseGameBoyGfx + $bf0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15cab: ; 0x15cab
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15cb5: ; 0x15cb5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6F
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15cbf: ; 0x15cbf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $72
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $310
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15cc9: ; 0x15cc9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldTopBaseGameBoyGfx + $c20
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15cd3: ; 0x15cd3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6F
|
|
dw StageRedFieldTopBaseGameBoyGfx + $c50
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15cdd: ; 0x15cdd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $72
|
|
dw StageRedFieldTopBaseGameBoyGfx + $c80
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_15ce7: ; 0x15ce7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $220
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15cf1: ; 0x15cf1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6F
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $250
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_15cfb: ; 0x15cfb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $72
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $280
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileDataPointers_15d05:
|
|
dw $0000
|
|
dw TileData_15db1
|
|
dw TileData_15d96
|
|
dw TileData_15d85
|
|
dw TileData_15d99
|
|
dw TileData_15d8a
|
|
dw TileData_15d9c
|
|
dw TileData_15d8f
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15d96
|
|
dw $0000
|
|
dw TileData_15d99
|
|
dw $0000
|
|
dw TileData_15d9c
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15db1
|
|
dw TileData_15da1
|
|
dw $0000
|
|
dw TileData_15da6
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15db4
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15da1
|
|
dw $0000
|
|
dw TileData_15da6
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15da9
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15db1
|
|
dw TileData_15d9c
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15da9
|
|
dw TileData_15db4
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15d9c
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15dae
|
|
dw $0000
|
|
dw TileData_15da1
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15db1
|
|
dw $0000
|
|
dw $0000
|
|
dw $0000
|
|
dw TileData_15dae
|
|
dw $0000
|
|
dw TileData_15da1
|
|
dw TileData_15db4
|
|
dw $0000
|
|
|
|
TileData_15d85: ; 0x15d85
|
|
db $02
|
|
dw TileData_15db7
|
|
dw TileData_15df2
|
|
|
|
TileData_15d8a: ; 0x15d8a
|
|
db $02
|
|
dw TileData_15df2
|
|
dw TileData_15e82
|
|
|
|
TileData_15d8f: ; 0x15d8f
|
|
db $03
|
|
dw TileData_15db7
|
|
dw TileData_15df2
|
|
dw TileData_15e50
|
|
|
|
TileData_15d96: ; 0x15d96
|
|
db $01
|
|
dw TileData_15db7
|
|
|
|
TileData_15d99: ; 0x15d99
|
|
db $01
|
|
dw TileData_15e82
|
|
|
|
TileData_15d9c: ; 0x15d9c
|
|
db $02
|
|
dw TileData_15db7
|
|
dw TileData_15e50
|
|
|
|
TileData_15da1: ; 0x15da1
|
|
db $02
|
|
dw TileData_15dd5
|
|
dw TileData_15e82
|
|
|
|
TileData_15da6: ; 0x15da6
|
|
db $01
|
|
dw TileData_15e50
|
|
|
|
TileData_15da9: ; 0x15da9
|
|
db $02
|
|
dw TileData_15db7
|
|
dw TileData_15e69
|
|
|
|
TileData_15dae: ; 0x15dae
|
|
db $01
|
|
dw TileData_15e69
|
|
|
|
TileData_15db1: ; 0x15dab1
|
|
db $01
|
|
dw TileData_15df2
|
|
|
|
TileData_15db4: ; 0x15db4
|
|
db $01
|
|
dw TileData_15e21
|
|
|
|
TileData_15db7: ; 0x15db7
|
|
dw Func_1198
|
|
|
|
db ($a << 1)
|
|
db $03
|
|
dw vBGMap + $4c
|
|
|
|
db ($40 << 1)
|
|
db $09
|
|
dw vBGMap + $6c
|
|
|
|
db (($32 << 1) | 1)
|
|
db $08
|
|
dw vBGMap + $8d
|
|
|
|
db (4 << 1)
|
|
dw vBGMap + $ae
|
|
|
|
db (2 << 1)
|
|
dw vBGMap + $d0
|
|
|
|
db (2 << 1)
|
|
dw vBGMap + $f1
|
|
|
|
db (2 << 1)
|
|
dw vBGMap + $111
|
|
|
|
db (1 << 1)
|
|
dw vBGMap + $132
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15dd5: ; 0x15dd5
|
|
dw Func_1198
|
|
|
|
db ($a << 1)
|
|
db $03
|
|
dw vBGMap + $4c
|
|
|
|
db (($28 << 1) | 1)
|
|
db $08
|
|
dw vBGMap + $6c
|
|
|
|
db ($4 << 1)
|
|
dw vBGMap + $8d
|
|
|
|
db ($04 << 1)
|
|
dw vBGMap + $ae
|
|
|
|
db ($02 << 1)
|
|
dw vBGMap + $d0
|
|
|
|
db ($02 << 1)
|
|
dw vBGMap + $f1
|
|
|
|
db ($02 << 1)
|
|
dw vBGMap + $111
|
|
|
|
db (1 << 1)
|
|
dw vBGMap + $132
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15df2: ; 0x15df2
|
|
dw LoadTileLists
|
|
db $19 ; total number of tiles
|
|
|
|
db $05 ; number of tiles
|
|
dw vBGMap + $a9
|
|
db $1e, $1f, $20, $21, $22
|
|
|
|
db $07
|
|
dw vBGMap + $c7
|
|
db $23, $24, $39, $3a, $25, $3b, $26
|
|
|
|
db $08 ; number of tiles
|
|
dw vBGMap + $e6
|
|
db $27, $37, $28, $29, $2a, $2b, $3c, $2c
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $106
|
|
db $2d, $38, $2e
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $10d
|
|
db $2f
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $126
|
|
db $30
|
|
|
|
db 00 ; terminator
|
|
|
|
TileData_15e21: ; 0x15e21
|
|
dw LoadTileLists
|
|
db $19 ; total number of tiles
|
|
|
|
db $05 ; number of tiles
|
|
dw vBGMap + $a9
|
|
db $0b, $0c, $0d, $0e, $0f
|
|
|
|
db $07
|
|
dw vBGMap + $c7
|
|
db $10, $11, $33, $34, $12, $35, $13
|
|
|
|
db $08 ; number of tiles
|
|
dw vBGMap + $e6
|
|
db $14, $31, $15, $16, $17, $18, $36, $19
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $106
|
|
db $1a, $32, $1b
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $10d
|
|
db $1c
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $126
|
|
db $1d
|
|
|
|
db 00 ; terminator
|
|
|
|
TileData_15e50: ; 0x15e50
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $100
|
|
db $45, $46, $22
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $120
|
|
db $45, $46
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $140
|
|
db $45, $46
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $160
|
|
db $45, $46
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15e69: ; 0x15e69
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $100
|
|
db $43, $44, $22
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $120
|
|
db $45, $46
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $140
|
|
db $45, $46
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $160
|
|
db $45, $46
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_15e82: ; 0x15e82
|
|
dw Func_1198
|
|
|
|
db ((4 << 1) | 1)
|
|
db $07
|
|
dw vBGMap + $100
|
|
|
|
db (($23 << 1) | 1)
|
|
db $04
|
|
dw vBGMap + $120
|
|
|
|
db (2 << 1)
|
|
dw vBGMap + $140
|
|
|
|
db (2 << 1)
|
|
dw vBGMap + $160
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolveBellsproutCollision: ; 0x15e93
|
|
ld a, [wBellsproutCollision]
|
|
and a
|
|
jr z, .asm_15eda
|
|
xor a
|
|
ld [wBellsproutCollision], a
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $05
|
|
call PlaySoundEffect
|
|
ld hl, BellsproutAnimationData
|
|
ld de, wBellsproutAnimationFrameCounter
|
|
call CopyHLToDE
|
|
xor a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wBallXPos], a
|
|
ld [wBallYPos], a
|
|
ld a, $7c
|
|
ld [wBallXPos + 1], a
|
|
ld a, $78
|
|
ld [wBallYPos + 1], a
|
|
xor a
|
|
ld [wd549], a
|
|
.asm_15eda
|
|
ld hl, BellsproutAnimationData
|
|
ld de, wBellsproutAnimationFrameCounter
|
|
call UpdateAnimation
|
|
push af
|
|
ld a, [wBellsproutAnimationFrameCounter]
|
|
and a
|
|
jr nz, .asm_15ef8
|
|
ld a, $19
|
|
ld [wBellsproutAnimationFrameCounter], a
|
|
xor a
|
|
ld [wBellsproutAnimationFrame], a
|
|
ld a, $6
|
|
ld [wBellsproutAnimationFrameIndex], a
|
|
.asm_15ef8
|
|
pop af
|
|
ret nc
|
|
ld a, [wBellsproutAnimationFrameIndex]
|
|
cp $1
|
|
jr nz, .asm_15f35
|
|
xor a
|
|
ld [wd548], a
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
jr c, .noCatchEmMode
|
|
ld a, $8
|
|
jr nz, .startCatchEmMode
|
|
xor a
|
|
.startCatchEmMode
|
|
ld [wRareMonsFlag], a
|
|
callba StartCatchEmMode
|
|
.noCatchEmMode
|
|
ld hl, wd62a
|
|
call Func_e4a
|
|
ret nc
|
|
ld c, $19
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
ret
|
|
|
|
.asm_15f35
|
|
ld a, [wBellsproutAnimationFrameIndex]
|
|
cp $4
|
|
jr nz, .asm_15f42
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ret
|
|
|
|
.asm_15f42
|
|
ld a, [wBellsproutAnimationFrameIndex]
|
|
cp $5
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd549], a
|
|
xor a
|
|
ld [wBallXVelocity + 1], a
|
|
ld a, $2
|
|
ld [wBallYVelocity + 1], a
|
|
lb de, $00, $06
|
|
call PlaySoundEffect
|
|
ld a, $5
|
|
callba Func_10000
|
|
ret
|
|
|
|
BellsproutAnimationData: ; 0x15f69
|
|
; Each entry is [duration][OAM id]
|
|
db $08, $01
|
|
db $06, $02
|
|
db $20, $03
|
|
db $06, $02
|
|
db $08, $01
|
|
db $01, $00
|
|
db $29, $00
|
|
db $28, $01
|
|
db $2A, $00
|
|
db $27, $01
|
|
db $29, $00
|
|
db $28, $01
|
|
db $2B, $00
|
|
db $28, $01
|
|
db $00 ; terminator
|
|
|
|
Func_15f86: ; 0x15f86
|
|
ld a, [wWhichBumper]
|
|
and a
|
|
jr z, .asm_15f99
|
|
call Func_5fb8
|
|
call Func_15fa6
|
|
xor a
|
|
ld [wWhichBumper], a
|
|
call Func_15fda
|
|
.asm_15f99
|
|
ld a, [wd4da]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd4da], a
|
|
call z, Func_5fb8
|
|
ret
|
|
|
|
Func_15fa6: ; 0x15fa6
|
|
ld a, $10
|
|
ld [wd4da], a
|
|
ld a, [wWhichBumperId]
|
|
sub $6
|
|
ld [wd4db], a
|
|
sla a
|
|
inc a
|
|
jr asm_15fc0
|
|
|
|
Func_5fb8: ; 0x5fb8
|
|
ld a, [wd4db]
|
|
cp $ff
|
|
ret z
|
|
sla a
|
|
asm_15fc0
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_16010
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_15fd0
|
|
ld hl, Data_16080
|
|
.asm_15fd0
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_16010)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_15fda: ; 0x15fda
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $3
|
|
ld [wd804], a
|
|
ld hl, $0200
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
ld a, [wWhichBumperId]
|
|
sub $6
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, CollisionAngleDeltas_1600e
|
|
add hl, bc
|
|
ld a, [wCollisionForceAngle]
|
|
add [hl]
|
|
ld [wCollisionForceAngle], a
|
|
lb de, $00, $0b
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
CollisionAngleDeltas_1600e:
|
|
db -8, 8
|
|
|
|
TileDataPointers_16010:
|
|
dw TileData_16018
|
|
dw TileData_1601b
|
|
dw TileData_1601e
|
|
dw TileData_16021
|
|
|
|
TileData_16018: ; 0x16018
|
|
db $01
|
|
dw TileData_16024
|
|
|
|
TileData_1601b: ; 0x1601b
|
|
db $01
|
|
dw TileData_1603B
|
|
|
|
TileData_1601e: ; 0x1601e
|
|
db $01
|
|
dw TileData_16052
|
|
|
|
TileData_16021: ; 0x16021
|
|
db $01
|
|
dw TileData_16069
|
|
|
|
TileData_16024: ; 0x16024
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $60
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $61, $62
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $63, $64
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $65, $66
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1603B: ; 0x1603B
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $67
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $68, $69
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $6A, $6B
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $6C, $6D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_16052: ; 0x16052
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $6E
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $6F, $70
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $71, $72
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $73, $74
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_16069: ; 0x16069
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $75
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $76, $77
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $78, $79
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $7A, $7B
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_16080:
|
|
dw Data_16088
|
|
dw Data_1608b
|
|
dw Data_1608e
|
|
dw Data_16091
|
|
|
|
Data_16088: ; 0x16088
|
|
db $01
|
|
dw Data_16094
|
|
|
|
Data_1608b: ; 0x1608b
|
|
db $01
|
|
dw Data_160ab
|
|
|
|
Data_1608e: ; 0x1608e
|
|
db $01
|
|
dw Data_160c2
|
|
|
|
Data_16091: ; 0x16091
|
|
db $01
|
|
dw Data_160d9
|
|
|
|
Data_16094: ; 0x16094
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $2A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $2B, $2C
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $2D, $2E
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $2F, $30
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_160ab: ; 0x160ab
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $31
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $34, $35
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $36, $37
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_160c2: ; 0x160c2
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $2A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $2C, $2B
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $2E, $2D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $30, $2F
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_160d9: ; 0x160d9
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $31
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $33, $32
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $35, $34
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $37, $36
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolveDittoSlotCollision: ; 0x160f0
|
|
ld a, [wDittoSlotCollision]
|
|
and a
|
|
jr z, .asm_16137
|
|
xor a
|
|
ld [wDittoSlotCollision], a
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $21
|
|
call PlaySoundEffect
|
|
xor a
|
|
ld hl, wBallXVelocity
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wd549], a
|
|
ld [wBallXPos], a
|
|
ld [wBallYPos], a
|
|
ld a, $11
|
|
ld [wBallXPos + 1], a
|
|
ld a, $23
|
|
ld [wBallYPos + 1], a
|
|
ld a, $10
|
|
ld [wd600], a
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
.asm_16137
|
|
ld a, [wd600]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd600], a
|
|
cp $f
|
|
jr nz, .asm_1614f
|
|
callba LoadMiniBallGfx
|
|
ret
|
|
|
|
.asm_1614f
|
|
cp $c
|
|
jr nz, .asm_1615e
|
|
callba Func_dd62
|
|
ret
|
|
|
|
.asm_1615e
|
|
cp $9
|
|
jr nz, .asm_1616d
|
|
xor a
|
|
ld [wd548], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ret
|
|
|
|
.asm_1616d
|
|
cp $6
|
|
jr nz, .asm_1618e
|
|
callba Func_10ab3
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ret
|
|
|
|
.asm_1618e
|
|
cp $3
|
|
jr nz, .asm_1619d
|
|
callba LoadMiniBallGfx
|
|
ret
|
|
|
|
.asm_1619d
|
|
and a
|
|
ret nz
|
|
callba LoadBallGfx
|
|
ld a, $2
|
|
ld [wBallYVelocity + 1], a
|
|
ret
|
|
|
|
Func_161af: ; 0x161af
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wBallYPos + 1]
|
|
sub $fe
|
|
cp $30
|
|
ret nc
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
jr asm_1620f
|
|
|
|
Func_161e0: ; 0x161e0
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wBallYPos + 1]
|
|
sub $86
|
|
cp $30
|
|
ret nc
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
asm_1620f: ; 0x1620f
|
|
ld bc, Data_f0000
|
|
add hl, bc
|
|
ld de, wBallXVelocity
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
push bc
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
bit 7, b
|
|
jr z, .asm_1624e
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_1624e
|
|
pop hl
|
|
bit 7, h
|
|
jr z, .asm_1625a
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc hl
|
|
.asm_1625a
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
ld a, h
|
|
cp $2
|
|
ret c
|
|
ld a, [wd804]
|
|
and a
|
|
ret nz
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
lb de, $00, $04
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_16279: ; 0x16279
|
|
ld a, [wSlotCollision]
|
|
and a
|
|
jr z, .asm_162ae
|
|
xor a
|
|
ld [wSlotCollision], a
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wd603]
|
|
and a
|
|
jr nz, .asm_162ae
|
|
xor a
|
|
ld hl, wBallXVelocity
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wd549], a
|
|
ld [wBallXPos], a
|
|
ld [wBallYPos], a
|
|
ld a, $50
|
|
ld [wBallXPos + 1], a
|
|
ld a, $16
|
|
ld [wBallYPos + 1], a
|
|
ld a, $13
|
|
ld [wd603], a
|
|
.asm_162ae
|
|
ld a, [wd603]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd603], a
|
|
ld a, $18
|
|
ld [wd606], a
|
|
ld a, [wd603]
|
|
cp $12
|
|
jr nz, .asm_162d4
|
|
lb de, $00, $21
|
|
call PlaySoundEffect
|
|
callba LoadMiniBallGfx
|
|
ret
|
|
|
|
.asm_162d4
|
|
cp $f
|
|
jr nz, .asm_162e3
|
|
callba Func_dd62
|
|
ret
|
|
|
|
.asm_162e3
|
|
cp $c
|
|
jr nz, .asm_162f2
|
|
xor a
|
|
ld [wd548], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ret
|
|
|
|
.asm_162f2
|
|
cp $9
|
|
jr nz, .asm_162fa
|
|
call Func_16352
|
|
ret
|
|
|
|
.asm_162fa
|
|
cp $6
|
|
jr nz, .asm_16317
|
|
xor a
|
|
ld [wd604], a
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
callba LoadMiniBallGfx
|
|
ret
|
|
|
|
.asm_16317
|
|
cp $3
|
|
jr nz, .asm_16330
|
|
callba LoadBallGfx
|
|
ld a, $2
|
|
ld [wBallYVelocity + 1], a
|
|
ld a, $80
|
|
ld [wBallXVelocity], a
|
|
ret
|
|
|
|
.asm_16330
|
|
and a
|
|
ret nz
|
|
call Func_16425
|
|
ld a, [wd622]
|
|
cp $1
|
|
ret nz
|
|
call GenRandom
|
|
and $8
|
|
ld [wRareMonsFlag], a
|
|
callba StartCatchEmMode
|
|
xor a
|
|
ld [wd622], a
|
|
ret
|
|
|
|
Func_16352: ; 0x16352
|
|
xor a
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $d
|
|
callba Func_10000
|
|
jr nc, .asm_1636d
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ret
|
|
|
|
.asm_1636d
|
|
ld a, [wd624]
|
|
cp $3
|
|
jr nz, .asm_163b3
|
|
ld a, [wd607]
|
|
and a
|
|
jr nz, .asm_163b3
|
|
.asm_1637a
|
|
ld a, [wd623]
|
|
and a
|
|
jr nz, .asm_16389
|
|
xor a
|
|
ld [wd625], a
|
|
ld a, $40
|
|
ld [wd626], a
|
|
.asm_16389
|
|
xor a
|
|
ld [wd623], a
|
|
ld a, $1
|
|
ld [wd495], a
|
|
ld [wd4ae], a
|
|
ld a, [wd498]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, GoToBonusStageTextIds_RedField
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd497], a
|
|
call Func_163f2
|
|
xor a
|
|
ld [wd609], a
|
|
ld [wd622], a
|
|
ld a, $1e
|
|
ld [wd607], a
|
|
ret
|
|
|
|
.asm_163b3
|
|
callba Func_ed8e
|
|
xor a
|
|
ld [wd608], a
|
|
ld a, [wd61d]
|
|
cp $d
|
|
jr nc, .asm_1637a
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ld a, [wd622]
|
|
cp $2
|
|
ret nz
|
|
callba Func_10ab3
|
|
ld a, [wd7ad]
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
and $1
|
|
or c
|
|
ld [wStageCollisionState], a
|
|
xor a
|
|
ld [wd622], a
|
|
ret
|
|
|
|
Func_163f2: ; 0x163f2
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld a, [wd497]
|
|
ld de, GoToDiglettStageText
|
|
cp STAGE_DIGLETT_BONUS
|
|
jr z, .asm_1640f
|
|
ld de, GoToGengarStageText
|
|
cp STAGE_GENGAR_BONUS
|
|
jr z, .asm_1640f
|
|
ld de, GoToMewtwoStageText
|
|
.asm_1640f
|
|
call LoadTextHeader
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
lb de, $3c, $23
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
GoToBonusStageTextIds_RedField:
|
|
db STAGE_GENGAR_BONUS
|
|
db STAGE_MEWTWO_BONUS
|
|
db STAGE_MEOWTH_BONUS
|
|
db STAGE_DIGLETT_BONUS
|
|
db STAGE_SEEL_BONUS
|
|
|
|
Func_16425: ; 0x16425
|
|
ld a, [wCurrentStage]
|
|
and $1
|
|
sla a
|
|
ld c, a
|
|
ld a, [wd604]
|
|
add c
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1644d
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_16441
|
|
ld hl, TileDataPointers_164a1
|
|
.asm_16441
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_1644d)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_1644d:
|
|
dw TileData_16455
|
|
dw TileData_16458
|
|
dw TileData_1645b
|
|
dw TileData_16460
|
|
|
|
TileData_16455: ; 0x16455
|
|
db $01
|
|
dw TileData_16465
|
|
|
|
TileData_16458: ; 0x16458
|
|
db $01
|
|
dw TileData_1646f
|
|
|
|
TileData_1645b: ; 0x1645b
|
|
db $02
|
|
dw TileData_16479
|
|
dw TileData_16483
|
|
|
|
TileData_16460: ; 0x16460
|
|
db $02
|
|
dw TileData_1648D
|
|
dw TileData_16497
|
|
|
|
TileData_16465: ; 0x16465
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldTopBaseGameBoyGfx + $1c0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1646f: ; 0x1646f
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16479: ; 0x16479
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $48
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $c80
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16483: ; 0x16483
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $4A
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $CA0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1648D: ; 0x1648D
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16497: ; 0x16497
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $4A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $360
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileDataPointers_164a1:
|
|
dw TileData_164a9
|
|
dw TileData_164ac
|
|
dw TileData_164af
|
|
dw TileData_164b2
|
|
|
|
TileData_164a9: ; 0x164a9
|
|
db $01
|
|
dw TileData_164b5
|
|
|
|
TileData_164ac: ; 0x164ac
|
|
db $01
|
|
dw TileData_164be
|
|
|
|
TileData_164af: ; 0x164af
|
|
db $01
|
|
dw TileData_164c7
|
|
|
|
TileData_164b2: ; 0x164b2
|
|
db $01
|
|
dw TileData_164d5
|
|
|
|
TileData_164b5: ; 0x164b5
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $02
|
|
dw vBGMap + $229
|
|
db $d4, $d5
|
|
|
|
db $00
|
|
|
|
TileData_164be: ; 0x164be
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $02
|
|
|
|
dw vBGMap + $229
|
|
db $d6, $d7
|
|
|
|
db $00
|
|
|
|
TileData_164c7: ; 0x164c7
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $9
|
|
db $38, $39
|
|
|
|
db $02
|
|
dw vBGMap + $29
|
|
db $3a, $3b
|
|
|
|
db $00
|
|
|
|
TileData_164d5: ; 0x164d5
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $9
|
|
db $3c, $3d
|
|
|
|
db $02
|
|
dw vBGMap + $29
|
|
db $3e, $3f
|
|
|
|
db $00
|
|
|
|
Func_164e3: ; 0x164e3
|
|
ld a, [wd607]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd607], a
|
|
ret nz
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret nz
|
|
ld a, [wd609]
|
|
and a
|
|
jr z, .asm_164ff
|
|
ld a, [wd498]
|
|
add $15
|
|
jr .asm_16506
|
|
|
|
.asm_164ff
|
|
ld a, [wd608]
|
|
and a
|
|
ret z
|
|
ld a, $1a
|
|
.asm_16506
|
|
ld hl, wCurrentStage
|
|
bit 0, [hl]
|
|
callba nz, Func_30256
|
|
ld a, [wd604]
|
|
and a
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
call nz, Func_16425
|
|
ret
|
|
|
|
Func_1652d: ; 0x1652d
|
|
ld a, [wPinballLaunchAlley]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wPinballLaunchAlley], a
|
|
ld a, [wd4de]
|
|
and a
|
|
jr z, .asm_16566
|
|
xor a
|
|
ld [wRightAlleyTrigger], a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld hl, wBallXVelocity
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ld a, $80
|
|
ld [wBallYVelocity], a
|
|
ld a, $fa
|
|
ld [wBallYVelocity + 1], a
|
|
ld a, $1
|
|
ld [wd549], a
|
|
lb de, $00, $0a
|
|
call PlaySoundEffect
|
|
.asm_16566
|
|
ld a, $ff
|
|
ld [wPreviousTriggeredGameObject], a
|
|
ld a, [wd4de]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4e0]
|
|
and a
|
|
jr nz, .asm_16582
|
|
call Func_1658f
|
|
ld a, $1
|
|
ld [wd4e0], a
|
|
ld [wd4de], a
|
|
ret
|
|
|
|
.asm_16582
|
|
ld hl, wKeyConfigBallStart
|
|
call IsKeyPressed
|
|
ret z
|
|
ld a, $1
|
|
ld [wd4de], a
|
|
ret
|
|
|
|
Func_1658f: ; 0x1658f
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, LoadGreyBillboardPaletteData
|
|
.showNextMap
|
|
ld a, [wInitialMapSelectionIndex]
|
|
inc a
|
|
cp $7 ; number of maps to choose from at the start of play
|
|
jr c, .gotMapId
|
|
xor a ; wrap around to 0
|
|
.gotMapId
|
|
ld [wInitialMapSelectionIndex], a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, RedStageInitialMaps
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wCurrentMap], a
|
|
push af
|
|
lb de, $00, $48
|
|
call PlaySoundEffect
|
|
pop af
|
|
add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
|
|
callba LoadBillboardPicture
|
|
ld b, $20 ; number of frames to delay before the next map is shown
|
|
.waitOnCurrentMap
|
|
push bc
|
|
callba Func_eeee
|
|
ld hl, wKeyConfigBallStart
|
|
call IsKeyPressed
|
|
jr nz, .ballStartKeyPressed
|
|
pop bc
|
|
dec b
|
|
jr nz, .waitOnCurrentMap
|
|
jr .showNextMap
|
|
|
|
.ballStartKeyPressed
|
|
pop bc
|
|
callba Func_30253
|
|
ld bc, StartFromMapText
|
|
callba Func_3118f
|
|
ld a, [wCurrentMap]
|
|
ld [wd4e3], a
|
|
xor a
|
|
ld [wd4e2], a
|
|
ret
|
|
|
|
RedStageInitialMaps: ; 0x16605
|
|
db PALLET_TOWN
|
|
db VIRIDIAN_FOREST
|
|
db PEWTER_CITY
|
|
db CERULEAN_CITY
|
|
db VERMILION_SEASIDE
|
|
db ROCK_MOUNTAIN
|
|
db LAVENDER_TOWN
|
|
|
|
ResolveRedStagePikachuCollision: ; 0x1660c
|
|
ld a, [wWhichPikachu]
|
|
and a
|
|
jr z, .asm_1667b
|
|
xor a
|
|
ld [wWhichPikachu], a
|
|
ld a, [wd51c]
|
|
and a
|
|
jr nz, .asm_1667b
|
|
ld a, [wd51d]
|
|
and a
|
|
jr nz, .asm_16634
|
|
ld a, [wWhichPikachuId]
|
|
sub $1c
|
|
ld hl, wd518
|
|
cp [hl]
|
|
jr nz, .asm_1667b
|
|
ld a, [wd517]
|
|
cp $f
|
|
jr nz, .asm_16667
|
|
.asm_16634
|
|
ld hl, PikachuSaverAnimationDataBlueStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, [wd51d]
|
|
and a
|
|
jr nz, .asm_16647
|
|
xor a
|
|
ld [wd517], a
|
|
.asm_16647
|
|
ld a, $1
|
|
ld [wd51c], a
|
|
xor a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ld [wd549], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
jr .asm_1667b
|
|
|
|
.asm_16667
|
|
ld hl, PikachuSaverAnimation2DataBlueStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $2
|
|
ld [wd51c], a
|
|
lb de, $00, $3b
|
|
call PlaySoundEffect
|
|
.asm_1667b
|
|
ld a, [wd51c]
|
|
and a
|
|
call z, Func_16766
|
|
call Func_1669e
|
|
ld a, [wd517]
|
|
cp $f
|
|
ret nz
|
|
ld a, [wd51e]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd51e], a
|
|
cp $5a
|
|
ret nz
|
|
lb de, $0f, $22
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_1669e: ; 0x1669e
|
|
ld a, [wd51c]
|
|
cp $1
|
|
jr nz, .asm_16719
|
|
ld hl, PikachuSaverAnimationDataBlueStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call UpdateAnimation
|
|
ret nc
|
|
ld a, [wPikachuSaverAnimationFrameIndex]
|
|
cp $1
|
|
jr nz, .asm_166f7
|
|
xor a
|
|
ld [wd85d], a
|
|
call Func_310a
|
|
rst AdvanceFrame
|
|
ld a, $1
|
|
callba PlayPikachuSoundClip
|
|
ld a, $1
|
|
ld [wd85d], a
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $60
|
|
ld [wd804], a
|
|
ld hl, wd62e
|
|
call Func_e4a
|
|
jr nc, .asm_166f0
|
|
ld c, $a
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_166f0
|
|
lb de, $16, $10
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_166f7
|
|
ld a, [wPikachuSaverAnimationFrameIndex]
|
|
cp $11
|
|
ret nz
|
|
ld a, $fc
|
|
ld [wBallYVelocity + 1], a
|
|
ld a, $1
|
|
ld [wd549], a
|
|
ld bc, FiveThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
xor a
|
|
ld [wd51c], a
|
|
ret
|
|
|
|
.asm_16719
|
|
cp $2
|
|
jr nz, .asm_16732
|
|
ld hl, PikachuSaverAnimation2DataBlueStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call UpdateAnimation
|
|
ret nc
|
|
ld a, [wPikachuSaverAnimationFrameIndex]
|
|
cp $1
|
|
ret nz
|
|
xor a
|
|
ld [wd51c], a
|
|
ret
|
|
|
|
.asm_16732
|
|
ld a, [hNumFramesDropped]
|
|
swap a
|
|
and $1
|
|
ld [wPikachuSaverAnimationFrame], a
|
|
ret
|
|
|
|
PikachuSaverAnimationDataBlueStage: ; 0x1673c
|
|
; Each entry is [duration][OAM id]
|
|
db $0C, $02
|
|
db $05, $03
|
|
db $05, $02
|
|
db $05, $04
|
|
db $05, $05
|
|
db $05, $02
|
|
db $06, $06
|
|
db $06, $07
|
|
db $06, $08
|
|
db $06, $02
|
|
db $06, $05
|
|
db $06, $08
|
|
db $06, $07
|
|
db $06, $02
|
|
db $06, $08
|
|
db $06, $07
|
|
db $06, $02
|
|
db $01, $00
|
|
db $00
|
|
|
|
PikachuSaverAnimation2DataBlueStage: ; 0x16761
|
|
; Each entry is [duration][OAM id]
|
|
db $0C, $02
|
|
db $01, $00
|
|
db $00
|
|
|
|
Func_16766: ; 0x16766
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed2
|
|
jr z, .asm_16774
|
|
ld hl, wd518
|
|
ld [hl], $0
|
|
ret
|
|
|
|
.asm_16774
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed2
|
|
ret z
|
|
ld hl, wd518
|
|
ld [hl], $1
|
|
ret
|
|
|
|
ResolveStaryuCollision: ; 0x16781
|
|
ld a, [wStaryuCollision]
|
|
and a
|
|
jr z, .asm_167bd
|
|
xor a
|
|
ld [wStaryuCollision], a
|
|
ld a, [wd503]
|
|
and a
|
|
jr nz, .asm_167c2
|
|
ld bc, FiveThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wd502]
|
|
xor $1
|
|
set 1, a
|
|
ld [wd502], a
|
|
ld a, $14
|
|
ld [wd503], a
|
|
call Func_16859
|
|
ld a, $6
|
|
callba Func_10000
|
|
ret
|
|
|
|
.asm_167bd
|
|
ld a, [wd503]
|
|
and a
|
|
ret z
|
|
.asm_167c2
|
|
dec a
|
|
ld [wd503], a
|
|
ret nz
|
|
ld a, [wd502]
|
|
res 1, a
|
|
ld [wd502], a
|
|
call Func_16859
|
|
ld a, [wd502]
|
|
and $1
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
and $fe
|
|
or c
|
|
ld [wStageCollisionState], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_159f4
|
|
lb de, $00, $07
|
|
call PlaySoundEffect
|
|
ld a, [wStageCollisionState]
|
|
bit 0, a
|
|
jp nz, Func_15450
|
|
jp Func_15499
|
|
|
|
Func_167ff: ; 0x167ff
|
|
ld a, [wStaryuCollision]
|
|
and a
|
|
jr z, .asm_16839
|
|
xor a
|
|
ld [wStaryuCollision], a
|
|
ld a, [wd503]
|
|
and a
|
|
jr nz, .asm_1683e
|
|
ld bc, FiveThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wd502]
|
|
xor $1
|
|
ld [wd502], a
|
|
ld a, $14
|
|
ld [wd503], a
|
|
call Func_16878
|
|
ld a, $6
|
|
callba Func_10000
|
|
ret
|
|
|
|
.asm_16839
|
|
ld a, [wd503]
|
|
and a
|
|
ret z
|
|
.asm_1683e
|
|
dec a
|
|
ld [wd503], a
|
|
ret nz
|
|
ld a, [wd502]
|
|
and $1
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
and $fe
|
|
or c
|
|
ld [wStageCollisionState], a
|
|
lb de, $00, $07
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_16859: ; 0x16859
|
|
ld a, [wd502]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_16899
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1686c
|
|
ld hl, TileDataPointers_16910
|
|
.asm_1686c
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_16899)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_16878: ; 0x16878
|
|
ld a, [wd502]
|
|
and $1
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1695a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1688d
|
|
ld hl, TileDataPointers_16980
|
|
.asm_1688d
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_1695a)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_16899:
|
|
dw TileData_168a1
|
|
dw TileData_168a8
|
|
dw TileData_168af
|
|
dw TileData_168af
|
|
|
|
TileData_168a1: ; 0x168a1
|
|
db $03
|
|
dw TileData_168b6
|
|
dw TileData_168c0
|
|
dw TileData_168ca
|
|
|
|
TileData_168a8: ; 0x168a8
|
|
db $03
|
|
dw TileData_168d4
|
|
dw TileData_168de
|
|
dw TileData_168e8
|
|
|
|
TileData_168af: ; 0x168af
|
|
db $03
|
|
dw TileData_168f2
|
|
dw TileData_168fc
|
|
dw TileData_16906
|
|
|
|
TileData_168b6: ; 0x168b6
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $50
|
|
dw StageRedFieldTopBaseGameBoyGfx + $260
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_168c0: ; 0x168c0
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $53
|
|
dw StageRedFieldTopBaseGameBoyGfx + $290
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_168ca: ; 0x168ca
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesSH tile $56
|
|
dw StageRedFieldTopBaseGameBoyGfx + $2c0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_168d4: ; 0x168d4
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $52
|
|
dw StageRedFieldTopBaseGameBoyGfx + $280
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_168de: ; 0x168de
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $55
|
|
dw StageRedFieldTopBaseGameBoyGfx + $2b0
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_168e8: ; 0x168e8
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $50
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $EA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_168f2: ; 0x168f2
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $51
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_168fc: ; 0x168fc
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $54
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1110
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16906: ; 0x16906
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesSH tile $50
|
|
dw StageRedFieldTopBaseGameBoyGfx + $260
|
|
db Bank(StageRedFieldTopBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileDataPointers_16910:
|
|
dw TileData_16918
|
|
dw TileData_1691b
|
|
dw TileData_1691e
|
|
dw TileData_1691e
|
|
|
|
TileData_16918: ;0x16918
|
|
db $01
|
|
dw TileData_16921
|
|
|
|
TileData_1691b: ;0x1691b
|
|
db $01
|
|
dw TileData_16934
|
|
|
|
TileData_1691e: ;0x1691e
|
|
db $01
|
|
dw TileData_16947
|
|
|
|
TileData_16921: ; 0x16921
|
|
dw LoadTileLists
|
|
db $06
|
|
|
|
db $03
|
|
dw vBGMap + $1C6
|
|
db $C3, $C4, $C5
|
|
|
|
db $02
|
|
dw vBGMap + $1E7
|
|
db $C6, $C7
|
|
|
|
db $01
|
|
dw vBGMap + $207
|
|
db $C8
|
|
|
|
db $00
|
|
|
|
TileData_16934: ; 0x16934
|
|
dw LoadTileLists
|
|
db $06
|
|
|
|
db $03
|
|
dw vBGMap + $1C6
|
|
db $CD, $CE, $C5
|
|
|
|
db $02
|
|
dw vBGMap + $1E7
|
|
db $C6, $C7
|
|
|
|
db $01
|
|
dw vBGMap + $207
|
|
db $C8
|
|
|
|
db $00
|
|
|
|
TileData_16947: ; 0x16947
|
|
dw LoadTileLists
|
|
db $06
|
|
|
|
db $03
|
|
dw vBGMap + $1C6
|
|
db $C3, $C4, $C9
|
|
|
|
db $02
|
|
dw vBGMap + $1E7
|
|
db $CA, $CB
|
|
|
|
db $01
|
|
dw vBGMap + $207
|
|
db $CC
|
|
|
|
db $00
|
|
|
|
TileDataPointers_1695a:
|
|
dw TileData_1695e
|
|
dw TileData_16961
|
|
|
|
TileData_1695e: ; 0x1695e
|
|
db $01
|
|
dw TileData_16964
|
|
|
|
TileData_16961: ; 0x16961
|
|
db $01
|
|
dw TileData_16972
|
|
|
|
TileData_16964: ; 0x16964
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $40
|
|
db $BE, $BF
|
|
|
|
db $02
|
|
dw vBGMap + $60
|
|
db $C0, $C1
|
|
|
|
db $00
|
|
|
|
TileData_16972: ; 0x16972
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $40
|
|
db $C2, $C3
|
|
|
|
db $02
|
|
dw vBGMap + $60
|
|
db $C4, $C5
|
|
|
|
db $00
|
|
|
|
TileDataPointers_16980:
|
|
dw TileData_16984
|
|
dw TileData_16987
|
|
|
|
TileData_16984: ; 0x16984
|
|
db $01
|
|
dw TileData_1698a
|
|
|
|
TileData_16987: ; 0x16987
|
|
db $01
|
|
dw TileData_16998
|
|
|
|
TileData_1698a: ; 0x1698a
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $40
|
|
db $BC, $BD
|
|
|
|
db $02
|
|
dw vBGMap + $60
|
|
db $BE, $BF
|
|
|
|
db $00
|
|
|
|
TileData_16998: ; 0x16998
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $40
|
|
db $C0, $C1
|
|
|
|
db $02
|
|
dw vBGMap + $60
|
|
db $C2, $C3
|
|
|
|
db $00
|
|
|
|
Func_169a6: ; 0x169a6
|
|
ld a, [hNumFramesDropped]
|
|
and $1f
|
|
ret nz
|
|
ld bc, $0000
|
|
.asm_169ae
|
|
push bc
|
|
ld hl, wIndicatorStates
|
|
add hl, bc
|
|
bit 7, [hl]
|
|
jr z, .asm_169c5
|
|
ld a, [hl]
|
|
res 7, a
|
|
ld hl, hNumFramesDropped
|
|
bit 5, [hl]
|
|
jr z, .asm_169c2
|
|
inc a
|
|
.asm_169c2
|
|
call Func_169cd
|
|
.asm_169c5
|
|
pop bc
|
|
inc c
|
|
ld a, c
|
|
cp $5
|
|
jr nz, .asm_169ae
|
|
ret
|
|
|
|
Func_169cd: ; 0x169cd
|
|
push af
|
|
sla c
|
|
ld hl, TileDataPointers_169ed
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_169db
|
|
ld hl, TileDataPointers_16bef
|
|
.asm_169db
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop af
|
|
sla a
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_169ed)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_169ed:
|
|
dw TileDataPointers_169f7
|
|
dw TileDataPointers_16a01
|
|
dw TileDataPointers_16a0b
|
|
dw TileDataPointers_16a0f
|
|
dw TileDataPointers_16a13
|
|
|
|
TileDataPointers_169f7: ; 0x169f7
|
|
dw TileData_16a17
|
|
dw TileData_16a1e
|
|
dw TileData_16a25
|
|
dw TileData_16a2c
|
|
dw TileData_16a33
|
|
|
|
TileDataPointers_16a01: ; 0x16a01
|
|
dw TileData_16a3a
|
|
dw TileData_16a41
|
|
dw TileData_16a48
|
|
dw TileData_16a4f
|
|
dw TileData_16a56
|
|
|
|
TileDataPointers_16a0b: ; 0x16a0b
|
|
dw TileData_16a5d
|
|
dw TileData_16a60
|
|
|
|
TileDataPointers_16a0f: ; 0x16a0f
|
|
dw TileData_16a63
|
|
dw TileData_16a66
|
|
|
|
TileDataPointers_16a13: ; 0x16a13
|
|
dw TileData_16a69
|
|
dw TileData_16a6e
|
|
|
|
TileData_16a17: ; 0x16a17
|
|
db $03
|
|
dw TileData_16a73
|
|
dw TileData_16a7d
|
|
dw TileData_16a87
|
|
|
|
TileData_16a1e: ; 0x16a1e
|
|
db $03
|
|
dw TileData_16a91
|
|
dw TileData_16a9b
|
|
dw TileData_16aa5
|
|
|
|
TileData_16a25: ; 0x16a25
|
|
db $03
|
|
dw TileData_16aaf
|
|
dw TileData_16ab9
|
|
dw TileData_16ac3
|
|
|
|
TileData_16a2c: ; 0x16a2c
|
|
db $03
|
|
dw TileData_16acd
|
|
dw TileData_16ad7
|
|
dw TileData_16ae1
|
|
|
|
TileData_16a33: ; 0x16a33
|
|
db $03
|
|
dw TileData_16aeb
|
|
dw TileData_16af5
|
|
dw TileData_16aff
|
|
|
|
TileData_16a3a: ; 0x16a3a
|
|
db $03
|
|
dw TileData_16b09
|
|
dw TileData_16b13
|
|
dw TileData_16b1d
|
|
|
|
TileData_16a41: ; 0x16a41
|
|
db $03
|
|
dw TileData_16b27
|
|
dw TileData_16b31
|
|
dw TileData_16b3b
|
|
|
|
TileData_16a48: ; 0x16a48
|
|
db $03
|
|
dw TileData_16b45
|
|
dw TileData_16b4f
|
|
dw TileData_16b59
|
|
|
|
TileData_16a4f: ; 0x16a4f
|
|
db $03
|
|
dw TileData_16b63
|
|
dw TileData_16b6d
|
|
dw TileData_16b77
|
|
|
|
TileData_16a56: ; 0x16a56
|
|
db $03
|
|
dw TileData_16b81
|
|
dw TileData_16b8b
|
|
dw TileData_16b95
|
|
|
|
TileData_16a5d: ; 0x16a5d
|
|
db $01
|
|
dw TileData_16b9f
|
|
|
|
TileData_16a60: ; 0x16a60
|
|
db $01
|
|
dw TileData_16ba9
|
|
|
|
TileData_16a63: ; 0x16a63
|
|
db $01
|
|
dw TileData_16bb3
|
|
|
|
TileData_16a66: ; 0x16a66
|
|
db $01
|
|
dw TileData_16bbd
|
|
|
|
TileData_16a69: ; 0x16a69
|
|
db $02
|
|
dw TileData_16bc7
|
|
dw TileData_16bd1
|
|
|
|
TileData_16a6e: ; 0x16a6e
|
|
db $02
|
|
dw TileData_16bdb
|
|
dw TileData_16be5
|
|
|
|
TileData_16a73: ; 0x16a73
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3A
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $ba0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16a7d: ; 0x16a7d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3D
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $bd0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16a87: ; 0x16a87
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $40
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $c00
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16a91: ; 0x16a91
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $380
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16a9b: ; 0x16a9b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16aa5: ; 0x16aa5
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $40
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16aaf: ; 0x16aaf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3F0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16ab9: ; 0x16ab9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $420
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16ac3: ; 0x16ac3
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $40
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $450
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16acd: ; 0x16acd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $460
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16ad7: ; 0x16ad7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $490
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16ae1: ; 0x16ae1
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $40
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16aeb: ; 0x16aeb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F30
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16af5: ; 0x16af5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $3D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16aff: ; 0x16aff
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $40
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F90
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b09: ; 0x16b09
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $c10
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16b13: ; 0x16b13
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $c40
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16b1d: ; 0x16b1d
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $c70
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16b27: ; 0x16b27
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4D0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b31: ; 0x16b31
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $500
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b3b: ; 0x16b3b
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $530
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b45: ; 0x16b45
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $540
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b4f: ; 0x16b4f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $570
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b59: ; 0x16b59
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b63: ; 0x16b63
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b6d: ; 0x16b6d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b77: ; 0x16b77
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $610
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b81: ; 0x16b81
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1010
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b8b: ; 0x16b8b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1040
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b95: ; 0x16b95
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1070
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16b9f: ; 0x16b9f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $20
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $a00
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16ba9: ; 0x16ba9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $20
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1080
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16bb3: ; 0x16bb3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $23
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $a30
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16bbd: ; 0x16bbd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $23
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16bc7: ; 0x16bc7
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1C
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $9c0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16bd1: ; 0x16bd1
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1E
|
|
dw StageRedFieldBottomBaseGameBoyGfx + $9e0
|
|
db Bank(StageRedFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_16bdb: ; 0x16bdb
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $6E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_16be5: ; 0x16be5
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $700
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileDataPointers_16bef:
|
|
dw TileDataPointers_16bf9
|
|
dw TileDataPointers_16c03
|
|
dw TileDataPointers_16c0d
|
|
dw TileDataPointers_16c11
|
|
dw TileDataPointers_16c15
|
|
|
|
TileDataPointers_16bf9: ; 0x16bf9
|
|
dw TileData_16c19
|
|
dw TileData_16c1c
|
|
dw TileData_16c1f
|
|
dw TileData_16c22
|
|
dw TileData_16c25
|
|
|
|
TileDataPointers_16c03: ; 0x16c03
|
|
dw TileData_16c28
|
|
dw TileData_16c2b
|
|
dw TileData_16c2e
|
|
dw TileData_16c31
|
|
dw TileData_16c34
|
|
|
|
TileDataPointers_16c0d: ; 0x16c0d
|
|
dw TileData_16c37
|
|
dw TileData_16c3a
|
|
|
|
TileDataPointers_16c11: ; 0x16c11
|
|
dw TileData_16c3d
|
|
dw TileData_16c40
|
|
|
|
TileDataPointers_16c15: ; 0x16c15
|
|
dw TileData_16c43
|
|
dw TileData_16c46
|
|
|
|
TileData_16c19: ; 0x16c19
|
|
db $01
|
|
dw TileData_16c49
|
|
|
|
TileData_16c1c: ; 0x16c1c
|
|
db $01
|
|
dw TileData_16c63
|
|
|
|
TileData_16c1f: ; 0x16c1f
|
|
db $01
|
|
dw TileData_16c7d
|
|
|
|
TileData_16c22: ; 0x16c22
|
|
db $01
|
|
dw TileData_16c97
|
|
|
|
TileData_16c25: ; 0x16c25
|
|
db $01
|
|
dw TileData_16cb1
|
|
|
|
TileData_16c28: ; 0x16c28
|
|
db $01
|
|
dw TileData_16ccb
|
|
|
|
TileData_16c2b: ; 0x16c2b
|
|
db $01
|
|
dw TileData_16ce5
|
|
|
|
TileData_16c2e: ; 0x16c2e
|
|
db $01
|
|
dw TileData_16cff
|
|
|
|
TileData_16c31: ; 0x16c31
|
|
db $01
|
|
dw TileData_16d19
|
|
|
|
TileData_16c34: ; 0x16c34
|
|
db $01
|
|
dw TileData_16d33
|
|
|
|
TileData_16c37: ; 0x16c37
|
|
db $01
|
|
dw TileData_16d4d
|
|
|
|
TileData_16c3a: ; 0x16c3a
|
|
db $01
|
|
dw TileData_16d5a
|
|
|
|
TileData_16c3d: ; 0x16c3d
|
|
db $01
|
|
dw TileData_16d67
|
|
|
|
TileData_16c40: ; 0x16c40
|
|
db $01
|
|
dw TileData_16d74
|
|
|
|
TileData_16c43: ; 0x16c43
|
|
db $01
|
|
dw TileData_16d81
|
|
|
|
TileData_16c46: ; 0x16c46
|
|
db $01
|
|
dw TileData_16d8f
|
|
|
|
TileData_16c49: ; 0x16c49
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $23
|
|
db $5E
|
|
|
|
db $02
|
|
dw vBGMap + $43
|
|
db $5F, $60
|
|
|
|
db $02
|
|
dw vBGMap + $64
|
|
db $61, $62
|
|
|
|
db $01
|
|
dw vBGMap + $85
|
|
db $63
|
|
|
|
db $01
|
|
dw vBGMap + $A5
|
|
db $64
|
|
|
|
db $00
|
|
|
|
TileData_16c63: ; 0x16c63
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $23
|
|
db $65
|
|
|
|
db $02
|
|
dw vBGMap + $43
|
|
db $66, $67
|
|
|
|
db $02
|
|
dw vBGMap + $64
|
|
db $61, $62
|
|
|
|
db $01
|
|
dw vBGMap + $85
|
|
db $63
|
|
|
|
db $01
|
|
dw vBGMap + $A5
|
|
db $64
|
|
|
|
db $00
|
|
|
|
TileData_16c7d: ; 0x16c7d
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $23
|
|
db $65
|
|
|
|
db $02
|
|
dw vBGMap + $43
|
|
db $66, $67
|
|
|
|
db $02
|
|
dw vBGMap + $64
|
|
db $68, $69
|
|
|
|
db $01
|
|
dw vBGMap + $85
|
|
db $63
|
|
|
|
db $01
|
|
dw vBGMap + $A5
|
|
db $64
|
|
|
|
db $00
|
|
|
|
TileData_16c97: ; 0x16c97
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $23
|
|
db $65
|
|
|
|
db $02
|
|
dw vBGMap + $43
|
|
db $66, $67
|
|
|
|
db $02
|
|
dw vBGMap + $64
|
|
db $68, $69
|
|
|
|
db $01
|
|
dw vBGMap + $85
|
|
db $6A
|
|
|
|
db $01
|
|
dw vBGMap + $A5
|
|
db $6B
|
|
|
|
db $00
|
|
|
|
TileData_16cb1: ; 0x16cb1
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $23
|
|
db $5E
|
|
|
|
db $02
|
|
dw vBGMap + $43
|
|
db $5F, $60
|
|
|
|
db $02
|
|
dw vBGMap + $64
|
|
db $68, $69
|
|
|
|
db $01
|
|
dw vBGMap + $85
|
|
db $6A
|
|
|
|
db $01
|
|
dw vBGMap + $A5
|
|
db $6B
|
|
|
|
db $00
|
|
|
|
TileData_16ccb: ; 0x16ccb
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $30
|
|
db $6C
|
|
|
|
db $02
|
|
dw vBGMap + $4F
|
|
db $6D, $6E
|
|
|
|
db $02
|
|
dw vBGMap + $6E
|
|
db $6F, $70
|
|
|
|
db $01
|
|
dw vBGMap + $8E
|
|
db $71
|
|
|
|
db $01
|
|
dw vBGMap + $AE
|
|
db $72
|
|
|
|
db $00
|
|
|
|
TileData_16ce5: ; 0x16ce5
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $30
|
|
db $73
|
|
|
|
db $02
|
|
dw vBGMap + $4F
|
|
db $74, $75
|
|
|
|
db $02
|
|
dw vBGMap + $6E
|
|
db $6F, $70
|
|
|
|
db $01
|
|
dw vBGMap + $8E
|
|
db $71
|
|
|
|
db $01
|
|
dw vBGMap + $AE
|
|
db $72
|
|
|
|
db $00
|
|
|
|
TileData_16cff: ; 0x16cff
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $30
|
|
db $73
|
|
|
|
db $02
|
|
dw vBGMap + $4F
|
|
db $74, $75
|
|
|
|
db $02
|
|
dw vBGMap + $6E
|
|
db $76, $77
|
|
|
|
db $01
|
|
dw vBGMap + $8E
|
|
db $71
|
|
|
|
db $01
|
|
dw vBGMap + $AE
|
|
db $72
|
|
|
|
db $00
|
|
|
|
TileData_16d19: ; 0x16d19
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $30
|
|
db $73
|
|
|
|
db $02
|
|
dw vBGMap + $4F
|
|
db $74, $75
|
|
|
|
db $02
|
|
dw vBGMap + $6E
|
|
db $76, $77
|
|
|
|
db $01
|
|
dw vBGMap + $8E
|
|
db $78
|
|
|
|
db $01
|
|
dw vBGMap + $AE
|
|
db $79
|
|
|
|
db $00
|
|
|
|
TileData_16d33: ; 0x16d33
|
|
dw LoadTileLists
|
|
db $07
|
|
|
|
db $01
|
|
dw vBGMap + $30
|
|
db $6C
|
|
|
|
db $02
|
|
dw vBGMap + $4F
|
|
db $6D, $6E
|
|
|
|
db $02
|
|
dw vBGMap + $6E
|
|
db $76, $77
|
|
|
|
db $01
|
|
dw vBGMap + $8E
|
|
db $78
|
|
|
|
db $01
|
|
dw vBGMap + $AE
|
|
db $79
|
|
|
|
db $00
|
|
|
|
TileData_16d4d: ; 0x16d4d
|
|
dw LoadTileLists
|
|
db $03
|
|
|
|
db $01
|
|
dw vBGMap + $6
|
|
db $48
|
|
|
|
db $02
|
|
dw vBGMap + $26
|
|
db $49, $4A
|
|
|
|
db $00
|
|
|
|
TileData_16d5a: ; 0x16d5a
|
|
dw LoadTileLists
|
|
db $03
|
|
|
|
db $01
|
|
dw vBGMap + $6
|
|
db $4B
|
|
|
|
db $02
|
|
dw vBGMap + $26
|
|
db $4C, $4D
|
|
|
|
db $00
|
|
|
|
TileData_16d67: ; 0x16d67
|
|
dw LoadTileLists
|
|
db $03
|
|
|
|
db $01
|
|
dw vBGMap + $D
|
|
db $4E
|
|
|
|
db $02
|
|
dw vBGMap + $2C
|
|
db $4F, $50
|
|
|
|
db $00
|
|
|
|
TileData_16d74: ; 0x16d74
|
|
dw LoadTileLists
|
|
db $03
|
|
|
|
db $01
|
|
dw vBGMap + $D
|
|
db $51
|
|
|
|
db $02
|
|
dw vBGMap + $2C
|
|
db $52, $53
|
|
|
|
db $00
|
|
|
|
TileData_16d81: ; 0x16d81
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $49
|
|
db $40, $41
|
|
|
|
db $02
|
|
dw vBGMap + $69
|
|
db $42, $43
|
|
|
|
db $00
|
|
|
|
TileData_16d8f: ; 0x16d8f
|
|
dw LoadTileLists
|
|
db $04
|
|
|
|
db $02
|
|
dw vBGMap + $49
|
|
db $44, $45
|
|
|
|
db $02
|
|
dw vBGMap + $69
|
|
db $46, $47
|
|
|
|
db $00
|
|
|
|
ResolveRedStageBonusMultiplierCollision: ; 016d9d
|
|
ld a, [wWhichBonusMultiplierRailing]
|
|
and a
|
|
jp z, Func_16e51
|
|
xor a
|
|
ld [wWhichBonusMultiplierRailing], a
|
|
lb de, $00, $0d
|
|
call PlaySoundEffect
|
|
ld a, [wWhichBonusMultiplierRailingId]
|
|
sub $21
|
|
jr nz, .asm_16ddc
|
|
ld a, $9
|
|
callba Func_10000
|
|
ld a, [wd610]
|
|
cp $3
|
|
jr nz, .asm_16e35
|
|
ld a, $1
|
|
ld [wd610], a
|
|
ld a, $3
|
|
ld [wd611], a
|
|
ld a, [wd60c]
|
|
set 7, a
|
|
ld [wd60c], a
|
|
jr .asm_16e35
|
|
|
|
.asm_16ddc
|
|
ld a, $a
|
|
callba Func_10000
|
|
ld a, [wd611]
|
|
cp $3
|
|
jr nz, .asm_16e35
|
|
ld a, $1
|
|
ld [wd610], a
|
|
ld a, $1
|
|
ld [wd611], a
|
|
ld a, $80
|
|
ld [wd612], a
|
|
ld a, [wd60d]
|
|
set 7, a
|
|
ld [wd60d], a
|
|
ld a, [wd482]
|
|
inc a
|
|
cp 100
|
|
jr c, .asm_16e10
|
|
ld a, 99
|
|
.asm_16e10
|
|
ld [wd482], a
|
|
jr nc, .asm_16e24
|
|
ld c, $19
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_16e24
|
|
ld a, [wd60c]
|
|
ld [wd614], a
|
|
ld a, [wd60d]
|
|
ld [wd615], a
|
|
ld a, $1
|
|
ld [wd613], a
|
|
.asm_16e35
|
|
ld bc, TenPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wd60c]
|
|
call Func_16f28
|
|
ld a, [wd60d]
|
|
add $14
|
|
call Func_16f28
|
|
ret
|
|
|
|
Func_16e51: ; 0x16e51
|
|
call Func_16ef5
|
|
ld a, [wd612]
|
|
and a
|
|
jr z, .asm_16e8f
|
|
dec a
|
|
ld [wd612], a
|
|
cp $70
|
|
jr nz, .asm_16e6e
|
|
ld a, $2
|
|
ld [wd610], a
|
|
ld a, $2
|
|
ld [wd611], a
|
|
jr .asm_16e8f
|
|
|
|
.asm_16e6e
|
|
and a
|
|
jr nz, .asm_16e8f
|
|
ld a, $3
|
|
ld [wd610], a
|
|
xor a
|
|
ld [wd611], a
|
|
ld a, [wd482]
|
|
call Func_16f95
|
|
ld a, [wd60c]
|
|
call Func_16f28
|
|
ld a, [wd60d]
|
|
add $14
|
|
call Func_16f28
|
|
ret
|
|
|
|
.asm_16e8f
|
|
ld a, [wd610]
|
|
cp $2
|
|
jr c, .asm_16ec1
|
|
cp $3
|
|
ld a, [hNumFramesDropped]
|
|
jr c, .asm_16ea0
|
|
srl a
|
|
srl a
|
|
.asm_16ea0
|
|
ld b, a
|
|
and $3
|
|
jr nz, .asm_16ec1
|
|
bit 3, b
|
|
jr nz, .asm_16eb6
|
|
ld a, [wd60c]
|
|
res 7, a
|
|
ld [wd60c], a
|
|
call Func_16f28
|
|
jr .asm_16ec1
|
|
|
|
.asm_16eb6
|
|
ld a, [wd60c]
|
|
set 7, a
|
|
ld [wd60c], a
|
|
call Func_16f28
|
|
.asm_16ec1
|
|
ld a, [wd611]
|
|
cp $2
|
|
ret c
|
|
cp $3
|
|
ld a, [hNumFramesDropped]
|
|
jr c, .asm_16ed1
|
|
srl a
|
|
srl a
|
|
.asm_16ed1
|
|
ld b, a
|
|
and $3
|
|
ret nz
|
|
bit 3, b
|
|
jr nz, .asm_16ee7
|
|
ld a, [wd60d]
|
|
res 7, a
|
|
ld [wd60d], a
|
|
add $14
|
|
call Func_16f28
|
|
ret
|
|
|
|
.asm_16ee7
|
|
ld a, [wd60d]
|
|
set 7, a
|
|
ld [wd60d], a
|
|
add $14
|
|
call Func_16f28
|
|
ret
|
|
|
|
Func_16ef5: ; 0x16ef5
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
ld a, [wd613]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd613], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, BonusMultiplierText
|
|
call LoadTextHeader
|
|
ld hl, wBottomMessageText + $12
|
|
ld a, [wd614]
|
|
and $7f
|
|
jr z, .asm_16f1f
|
|
add $30
|
|
ld [hli], a
|
|
.asm_16f1f
|
|
ld a, [wd615]
|
|
res 7, a
|
|
add $30
|
|
ld [hl], a
|
|
ret
|
|
|
|
Func_16f28: ; 0x16f28
|
|
push af
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_16f33
|
|
pop af
|
|
call Func_16f38
|
|
ret
|
|
|
|
.asm_16f33
|
|
pop af
|
|
call Func_16f7b
|
|
ret
|
|
|
|
Func_16f38: ; 0x16f38
|
|
push af
|
|
res 7, a
|
|
ld hl, wd60e
|
|
cp $14
|
|
jr c, .asm_16f47
|
|
ld hl, wd60f
|
|
sub $a
|
|
.asm_16f47
|
|
cp [hl]
|
|
jr z, .asm_16f5c
|
|
ld [hl], a
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
ld hl, TileDataPointers_16fc8
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_16fc8)
|
|
call Func_10aa
|
|
.asm_16f5c
|
|
pop af
|
|
ld bc, $0000
|
|
bit 7, a
|
|
jr z, .asm_16f68
|
|
res 7, a
|
|
set 1, c
|
|
.asm_16f68
|
|
cp $14
|
|
jr c, .asm_16f6e
|
|
set 2, c
|
|
.asm_16f6e
|
|
ld hl, Data_171e4
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(Data_171e4)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_16f7b: ; 0x16f7b
|
|
bit 7, a
|
|
jr z, .asm_16f83
|
|
res 7, a
|
|
add $a
|
|
.asm_16f83
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
ld hl, TileDataPointers_17228
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_17228)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_16f95: ; 0x16f95
|
|
ld a, [wd482]
|
|
inc a
|
|
cp 100
|
|
jr c, .asm_16f9f
|
|
ld a, 99
|
|
.asm_16f9f
|
|
ld b, a
|
|
xor a
|
|
ld hl, Data_16fc1
|
|
ld c, $7
|
|
.asm_16fa6
|
|
bit 0, b
|
|
jr z, .asm_16fac
|
|
add [hl]
|
|
daa
|
|
.asm_16fac
|
|
srl b
|
|
inc hl
|
|
dec c
|
|
jr nz, .asm_16fa6
|
|
push af
|
|
swap a
|
|
and $f
|
|
ld [wd60c], a
|
|
pop af
|
|
and $f
|
|
ld [wd60d], a
|
|
ret
|
|
|
|
Data_16fc1:
|
|
; BCD powers of 2
|
|
db $01
|
|
db $02
|
|
db $04
|
|
db $08
|
|
db $16
|
|
db $32
|
|
db $64
|
|
|
|
TileDataPointers_16fc8:
|
|
dw TileData_16ff0
|
|
dw TileData_16ff5
|
|
dw TileData_16ffa
|
|
dw TileData_16fff
|
|
dw TileData_17004
|
|
dw TileData_17009
|
|
dw TileData_1700e
|
|
dw TileData_17013
|
|
dw TileData_17018
|
|
dw TileData_1701d
|
|
dw TileData_17022
|
|
dw TileData_17027
|
|
dw TileData_1702c
|
|
dw TileData_17031
|
|
dw TileData_17036
|
|
dw TileData_1703b
|
|
dw TileData_17040
|
|
dw TileData_17045
|
|
dw TileData_1704a
|
|
dw TileData_1704f
|
|
|
|
TileData_16ff0: ; 0x16ff0
|
|
db $02
|
|
dw TileData_17054
|
|
dw TileData_1705e
|
|
|
|
TileData_16ff5: ; 0x16ff5
|
|
db $02
|
|
dw TileData_17068
|
|
dw TileData_17072
|
|
|
|
TileData_16ffa: ; 0x16ffa
|
|
db $02
|
|
dw TileData_1707c
|
|
dw TileData_17086
|
|
|
|
TileData_16fff: ; 0x16fff
|
|
db $02
|
|
dw TileData_17090
|
|
dw TileData_1709a
|
|
|
|
TileData_17004: ; 0x17004
|
|
db $02
|
|
dw TileData_170a4
|
|
dw TileData_170ae
|
|
|
|
TileData_17009: ; 0x17009
|
|
db $02
|
|
dw TileData_170b8
|
|
dw TileData_170c2
|
|
|
|
TileData_1700e: ; 0x1700e
|
|
db $02
|
|
dw TileData_170cc
|
|
dw TileData_170d6
|
|
|
|
TileData_17013: ; 0x17013
|
|
db $02
|
|
dw TileData_170e0
|
|
dw TileData_170ea
|
|
|
|
TileData_17018: ; 0x17018
|
|
db $02
|
|
dw TileData_170f4
|
|
dw TileData_170fe
|
|
|
|
TileData_1701d: ; 0x1701d
|
|
db $02
|
|
dw TileData_17108
|
|
dw TileData_17112
|
|
|
|
TileData_17022: ; 0x17022
|
|
db $02
|
|
dw TileData_1711c
|
|
dw TileData_17126
|
|
|
|
TileData_17027: ; 0x17027
|
|
db $02
|
|
dw TileData_17130
|
|
dw TileData_1713a
|
|
|
|
TileData_1702c: ; 0x1702c
|
|
db $02
|
|
dw TileData_17144
|
|
dw TileData_1714e
|
|
|
|
TileData_17031: ; 0x17031
|
|
db $02
|
|
dw TileData_17158
|
|
dw TileData_17162
|
|
|
|
TileData_17036: ; 0x17036
|
|
db $02
|
|
dw TileData_1716c
|
|
dw TileData_17176
|
|
|
|
TileData_1703b: ; 0x1703b
|
|
db $02
|
|
dw TileData_17180
|
|
dw TileData_1718a
|
|
|
|
TileData_17040: ; 0x17040
|
|
db $02
|
|
dw TileData_17194
|
|
dw TileData_1719e
|
|
|
|
TileData_17045: ; 0x17045
|
|
db $02
|
|
dw TileData_171a8
|
|
dw TileData_171b2
|
|
|
|
TileData_1704a: ; 0x1704a
|
|
db $02
|
|
dw TileData_171bc
|
|
dw TileData_171c6
|
|
|
|
TileData_1704f: ; 0x1704f
|
|
db $02
|
|
dw TileData_171d0
|
|
dw TileData_171da
|
|
|
|
TileData_17054: ; 0x17054
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1280
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1705e: ; 0x1705e
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1140
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17068: ; 0x17068
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17072: ; 0x17072
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1160
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1707c: ; 0x1707c
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17086: ; 0x17086
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1180
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17090: ; 0x17090
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1709a: ; 0x1709a
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170a4: ; 0x170a4
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1300
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170ae: ; 0x170ae
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170b8: ; 0x170b8
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1320
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170c2: ; 0x170c2
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170cc: ; 0x170cc
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1340
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170d6: ; 0x170d6
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1200
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170e0: ; 0x170e0
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1360
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170ea: ; 0x170ea
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1220
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170f4: ; 0x170f4
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1380
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_170fe: ; 0x170fe
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1240
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17108: ; 0x17108
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $46
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17112: ; 0x17112
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $48
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1260
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1711c: ; 0x1711c
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1500
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17126: ; 0x17126
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17130: ; 0x17130
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1520
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1713a: ; 0x1713a
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17144: ; 0x17144
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1540
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1714e: ; 0x1714e
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1400
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17158: ; 0x17158
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1560
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17162: ; 0x17162
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1420
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1716c: ; 0x1716c
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1580
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17176: ; 0x17176
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1440
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17180: ; 0x17180
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1718a: ; 0x1718a
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1460
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_17194: ; 0x17194
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1719e: ; 0x1719e
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1480
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_171a8: ; 0x171a8
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_171b2: ; 0x171b2
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_171bc: ; 0x171bc
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1600
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_171c6: ; 0x171c6
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_171d0: ; 0x171d0
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4a
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1620
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_171da: ; 0x171da
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesSH tile $4c
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
Data_171e4:
|
|
dw Data_171ec
|
|
dw Data_171ef
|
|
dw Data_171f2
|
|
dw Data_171f5
|
|
|
|
Data_171ec: ; 0x171ec
|
|
db $01
|
|
dw Data_171f8
|
|
|
|
Data_171ef: ; 0x171ef
|
|
db $01
|
|
dw Data_17204
|
|
|
|
Data_171f2: ; 0x171f2
|
|
db $01
|
|
dw Data_17210
|
|
|
|
Data_171f5: ; 0x171f5
|
|
db $01
|
|
dw Data_1721c
|
|
|
|
Data_171f8: ; 0x171f8
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $C6
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $C7
|
|
|
|
db $00
|
|
|
|
Data_17204: ; 0x17204
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $C8
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $C9
|
|
|
|
db $00
|
|
|
|
Data_17210: ; 0x17210
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $CA
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $CB
|
|
|
|
db $00
|
|
|
|
Data_1721c: ; 0x1721c
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $CC
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $CD
|
|
|
|
db $00
|
|
|
|
TileDataPointers_17228:
|
|
dw TileData_17278
|
|
dw TileData_1727b
|
|
dw TileData_1727e
|
|
dw TileData_17281
|
|
dw TileData_17284
|
|
dw TileData_17287
|
|
dw TileData_1728a
|
|
dw TileData_1728d
|
|
dw TileData_17290
|
|
dw TileData_17293
|
|
dw TileData_17296
|
|
dw TileData_17299
|
|
dw TileData_1729c
|
|
dw TileData_1729f
|
|
dw TileData_172a2
|
|
dw TileData_172a5
|
|
dw TileData_172a8
|
|
dw TileData_172ab
|
|
dw TileData_172ae
|
|
dw TileData_172b1
|
|
dw TileData_172b4
|
|
dw TileData_172b7
|
|
dw TileData_172ba
|
|
dw TileData_172bd
|
|
dw TileData_172c0
|
|
dw TileData_172c3
|
|
dw TileData_172c6
|
|
dw TileData_172c9
|
|
dw TileData_172cc
|
|
dw TileData_172cf
|
|
dw TileData_172d2
|
|
dw TileData_172d5
|
|
dw TileData_172d8
|
|
dw TileData_172db
|
|
dw TileData_172de
|
|
dw TileData_172e1
|
|
dw TileData_172e4
|
|
dw TileData_172e7
|
|
dw TileData_172ea
|
|
dw TileData_172ed
|
|
|
|
TileData_17278: ; 0x17278
|
|
db $01
|
|
dw TileData_172f0
|
|
|
|
TileData_1727b: ; 0x1727b
|
|
db $01
|
|
dw TileData_172fc
|
|
|
|
TileData_1727e: ; 0x1727e
|
|
db $01
|
|
dw TileData_17308
|
|
|
|
TileData_17281: ; 0x17281
|
|
db $01
|
|
dw TileData_17314
|
|
|
|
TileData_17284: ; 0x17284
|
|
db $01
|
|
dw TileData_17320
|
|
|
|
TileData_17287: ; 0x17287
|
|
db $01
|
|
dw TileData_1732c
|
|
|
|
TileData_1728a: ; 0x1728a
|
|
db $01
|
|
dw TileData_17338
|
|
|
|
TileData_1728d: ; 0x1728d
|
|
db $01
|
|
dw TileData_17344
|
|
|
|
TileData_17290: ; 0x17290
|
|
db $01
|
|
dw TileData_17350
|
|
|
|
TileData_17293: ; 0x17293
|
|
db $01
|
|
dw TileData_1735c
|
|
|
|
TileData_17296: ; 0x17296
|
|
db $01
|
|
dw TileData_17368
|
|
|
|
TileData_17299: ; 0x17299
|
|
db $01
|
|
dw TileData_17374
|
|
|
|
TileData_1729c: ; 0x1729c
|
|
db $01
|
|
dw TileData_17380
|
|
|
|
TileData_1729f: ; 0x1729f
|
|
db $01
|
|
dw TileData_1738c
|
|
|
|
TileData_172a2: ; 0x172a2
|
|
db $01
|
|
dw TileData_17398
|
|
|
|
TileData_172a5: ; 0x172a5
|
|
db $01
|
|
dw TileData_173a4
|
|
|
|
TileData_172a8: ; 0x172a8
|
|
db $01
|
|
dw TileData_173b0
|
|
|
|
TileData_172ab: ; 0x172ab
|
|
db $01
|
|
dw TileData_173bc
|
|
|
|
TileData_172ae: ; 0x172ae
|
|
db $01
|
|
dw TileData_173c8
|
|
|
|
TileData_172b1: ; 0x172b1
|
|
db $01
|
|
dw TileData_173d4
|
|
|
|
TileData_172b4: ; 0x172b4
|
|
db $01
|
|
dw TileData_173e0
|
|
|
|
TileData_172b7: ; 0x172b7
|
|
db $01
|
|
dw TileData_173ec
|
|
|
|
TileData_172ba: ; 0x172ba
|
|
db $01
|
|
dw TileData_173f8
|
|
|
|
TileData_172bd: ; 0x172bd
|
|
db $01
|
|
dw TileData_17404
|
|
|
|
TileData_172c0: ; 0x172c0
|
|
db $01
|
|
dw TileData_17410
|
|
|
|
TileData_172c3: ; 0x172c3
|
|
db $01
|
|
dw TileData_1741c
|
|
|
|
TileData_172c6: ; 0x172c6
|
|
db $01
|
|
dw TileData_17428
|
|
|
|
TileData_172c9: ; 0x172c9
|
|
db $01
|
|
dw TileData_17434
|
|
|
|
TileData_172cc: ; 0x172cc
|
|
db $01
|
|
dw TileData_17440
|
|
|
|
TileData_172cf: ; 0x172cf
|
|
db $01
|
|
dw TileData_1744c
|
|
|
|
TileData_172d2: ; 0x172d2
|
|
db $01
|
|
dw TileData_17458
|
|
|
|
TileData_172d5: ; 0x172d5
|
|
db $01
|
|
dw TileData_17464
|
|
|
|
TileData_172d8: ; 0x172d8
|
|
db $01
|
|
dw TileData_17470
|
|
|
|
TileData_172db: ; 0x172db
|
|
db $01
|
|
dw TileData_1747c
|
|
|
|
TileData_172de: ; 0x172de
|
|
db $01
|
|
dw TileData_17488
|
|
|
|
TileData_172e1: ; 0x172e1
|
|
db $01
|
|
dw TileData_17494
|
|
|
|
TileData_172e4: ; 0x172e4
|
|
db $01
|
|
dw TileData_174a0
|
|
|
|
TileData_172e7: ; 0x172e7
|
|
db $01
|
|
dw TileData_174ac
|
|
|
|
TileData_172ea: ; 0x172ea
|
|
db $01
|
|
dw TileData_174b8
|
|
|
|
TileData_172ed: ; 0x172ed
|
|
db $01
|
|
dw TileData_174c4
|
|
|
|
TileData_172f0: ; 0x172f0
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $40
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $41
|
|
|
|
db $00
|
|
|
|
TileData_172fc: ; 0x172fc
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $42
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $43
|
|
|
|
db $00
|
|
|
|
TileData_17308: ; 0x17308
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $44
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $45
|
|
|
|
db $00
|
|
|
|
TileData_17314: ; 0x17314
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $46
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $47
|
|
|
|
db $00
|
|
|
|
TileData_17320: ; 0x17320
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $48
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $49
|
|
|
|
db $00
|
|
|
|
TileData_1732c: ; 0x1732c
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $4A
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $4B
|
|
|
|
db $00
|
|
|
|
TileData_17338: ; 0x17338
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $4C
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $4D
|
|
|
|
db $00
|
|
|
|
TileData_17344: ; 0x17344
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $4E
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $4F
|
|
|
|
db $00
|
|
|
|
TileData_17350: ; 0x17350
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $50
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $51
|
|
|
|
db $00
|
|
|
|
TileData_1735c: ; 0x1735c
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $52
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $53
|
|
|
|
db $00
|
|
|
|
TileData_17368: ; 0x17368
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $2C
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $2D
|
|
|
|
db $00
|
|
|
|
TileData_17374: ; 0x17374
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $2E
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $2F
|
|
|
|
db $00
|
|
|
|
TileData_17380: ; 0x17380
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $30
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $31
|
|
|
|
db $00
|
|
|
|
TileData_1738c: ; 0x1738c
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $32
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $33
|
|
|
|
db $00
|
|
|
|
TileData_17398: ; 0x17398
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $34
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $35
|
|
|
|
db $00
|
|
|
|
TileData_173a4: ; 0x173a4
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $36
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $37
|
|
|
|
db $00
|
|
|
|
TileData_173b0: ; 0x173b0
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $38
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $39
|
|
|
|
db $00
|
|
|
|
TileData_173bc: ; 0x173bc
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $3A
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $3B
|
|
|
|
db $00
|
|
|
|
TileData_173c8: ; 0x173c8
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $3C
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $3D
|
|
|
|
db $00
|
|
|
|
TileData_173d4: ; 0x173d4
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $4
|
|
db $3E
|
|
|
|
db $01
|
|
dw vBGMap + $24
|
|
db $3F
|
|
|
|
db $00
|
|
|
|
TileData_173e0: ; 0x173e0
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $68
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $69
|
|
|
|
db $00
|
|
|
|
TileData_173ec: ; 0x173ec
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $6A
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $6B
|
|
|
|
db $00
|
|
|
|
TileData_173f8: ; 0x173f8
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $6C
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $6D
|
|
|
|
db $00
|
|
|
|
TileData_17404: ; 0x17404
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $6E
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $6F
|
|
|
|
db $00
|
|
|
|
TileData_17410: ; 0x17410
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $70
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $71
|
|
|
|
db $00
|
|
|
|
TileData_1741c: ; 0x1741c
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $72
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $73
|
|
|
|
db $00
|
|
|
|
TileData_17428: ; 0x17428
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $74
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $75
|
|
|
|
db $00
|
|
|
|
TileData_17434: ; 0x17434
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $76
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $77
|
|
|
|
db $00
|
|
|
|
TileData_17440: ; 0x17440
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $78
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $79
|
|
|
|
db $00
|
|
|
|
TileData_1744c: ; 0x1744c
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $7A
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $7B
|
|
|
|
db $00
|
|
|
|
TileData_17458: ; 0x17458
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $54
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $55
|
|
|
|
db $00
|
|
|
|
TileData_17464: ; 0x17464
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $56
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $57
|
|
|
|
db $00
|
|
|
|
TileData_17470: ; 0x17470
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $58
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $59
|
|
|
|
db $00
|
|
|
|
TileData_1747c: ; 0x1747c
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $5A
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $5B
|
|
|
|
db $00
|
|
|
|
TileData_17488: ; 0x17488
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $5C
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $5D
|
|
|
|
db $00
|
|
|
|
TileData_17494: ; 0x17494
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $5E
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $5F
|
|
|
|
db $00
|
|
|
|
TileData_174a0: ; 0x174a0
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $60
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $61
|
|
|
|
db $00
|
|
|
|
TileData_174ac: ; 0x174ac
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $62
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $63
|
|
|
|
db $00
|
|
|
|
TileData_174b8: ; 0x174b8
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $64
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $65
|
|
|
|
db $00
|
|
|
|
TileData_174c4: ; 0x174c4
|
|
dw LoadTileLists
|
|
db $02
|
|
|
|
db $01
|
|
dw vBGMap + $F
|
|
db $66
|
|
|
|
db $01
|
|
dw vBGMap + $2F
|
|
db $67
|
|
|
|
db $00
|
|
|
|
Func_174d0: ; 0x174d0
|
|
call Func_174ea
|
|
ret nc
|
|
; fall through
|
|
|
|
Func_174d4: ; 0x174d4
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_17528
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, $5
|
|
ld de, LoadTileLists
|
|
call Func_10c5
|
|
ret
|
|
|
|
Func_174ea: ; 0x174ea
|
|
ld a, [wd624]
|
|
ld hl, wd625
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd626]
|
|
dec a
|
|
ld [wd626], a
|
|
jr nz, .asm_17514
|
|
ld a, [wd625]
|
|
ld [wd624], a
|
|
cp $3
|
|
jr c, .asm_1750f
|
|
ld a, $1
|
|
ld [wd609], a
|
|
ld a, $3
|
|
ld [wd607], a
|
|
.asm_1750f
|
|
ld a, [wd624]
|
|
scf
|
|
ret
|
|
|
|
.asm_17514
|
|
and $7
|
|
ret nz
|
|
ld a, [wd626]
|
|
bit 3, a
|
|
jr nz, .asm_17523
|
|
ld a, [wd624]
|
|
scf
|
|
ret
|
|
|
|
.asm_17523
|
|
ld a, [wd625]
|
|
scf
|
|
ret
|
|
|
|
TileDataPointers_17528:
|
|
dw TileData_17530
|
|
dw TileData_1753B
|
|
dw TileData_17546
|
|
dw TileData_17551
|
|
|
|
TileData_17530: ; 0x17530
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw $9907
|
|
db $B0, $B1, $B0, $B1, $B0, $B1
|
|
db $00
|
|
|
|
TileData_1753B: ; 0x1753B
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw $9907
|
|
db $AE, $AF, $B0, $B1, $B0, $B1
|
|
db $00
|
|
|
|
TileData_17546: ; 0x17546
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw $9907
|
|
db $AE, $AF, $AE, $AF, $B0, $B1
|
|
db $00
|
|
|
|
TileData_17551: ; 0x17551
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw $9907
|
|
db $AE, $AF, $AE, $AF, $AE, $AF
|
|
db $00
|
|
|
|
Func_1755c: ; 0x1755c
|
|
ld bc, $7f00
|
|
call DrawTimer
|
|
call Func_17cc4
|
|
call Func_17d34
|
|
call Func_17d59
|
|
call Func_17d7a
|
|
call Func_17d92
|
|
call Func_17de1
|
|
call DrawPinball
|
|
call Func_17efb
|
|
call Func_17f64
|
|
ret
|
|
|
|
Func_1757e: ; 0x1757e
|
|
ld bc, $7f00
|
|
call DrawTimer
|
|
call DrawMonCaptureAnimation
|
|
call DrawAnimatedMon_RedStage
|
|
call DrawPikachuSavers_RedStage
|
|
callba DrawFlippers
|
|
call DrawPinball
|
|
call Func_17f0f
|
|
call Func_17f75
|
|
call Func_17fca
|
|
ret
|
|
|
|
DrawTimer: ; 0x175a4
|
|
ld a, [wd57d]
|
|
and a
|
|
ret z
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, DrawTimer_GameBoyColor
|
|
ld a, [wd580]
|
|
and a
|
|
ret z
|
|
ld a, [wd581]
|
|
and a
|
|
jr z, .DrawTimer_GameBoy
|
|
dec a
|
|
ld [wd581], a
|
|
ret
|
|
|
|
.DrawTimer_GameBoy
|
|
call Func_1762f
|
|
ld hl, wTimerDigits
|
|
ld a, [wTimerMinutes]
|
|
and $f
|
|
call LoadTimerDigitTiles
|
|
ld a, [wTimerSeconds]
|
|
swap a
|
|
and $f
|
|
call LoadTimerDigitTiles
|
|
ld a, [wTimerSeconds]
|
|
and $f
|
|
call LoadTimerDigitTiles
|
|
ld d, $0
|
|
ld hl, TimerOAMIds
|
|
add hl, de
|
|
ld a, [hli]
|
|
call DrawTimerDigit
|
|
ld a, [hli]
|
|
call DrawTimerDigit
|
|
ld a, [hli]
|
|
call DrawTimerDigit
|
|
ld a, [hli]
|
|
call DrawTimerDigit
|
|
ret
|
|
|
|
DrawTimer_GameBoyColor: ; 0x175f5
|
|
; Loads the OAM data for the timer in the top-right corner of the screen.
|
|
ld a, [wTimerMinutes]
|
|
and $f
|
|
call DrawTimerDigit_GameBoyColor
|
|
ld a, $a ; colon
|
|
call DrawTimerDigit_GameBoyColor
|
|
ld a, [wTimerSeconds]
|
|
swap a
|
|
and $f
|
|
call DrawTimerDigit_GameBoyColor ; tens digit of the minutes
|
|
ld a, [wTimerSeconds]
|
|
and $f
|
|
call DrawTimerDigit_GameBoyColor ; ones digit of the minutes
|
|
ret
|
|
|
|
TimerOAMIds:
|
|
db $d7, $da, $d8, $d9
|
|
db $dc, $df, $dd, $de
|
|
db $dc, $db, $dd, $de
|
|
db $f5, $f8, $f6, $f7
|
|
|
|
DrawTimerDigit_GameBoyColor: ; 0x17625
|
|
add $b1 ; the timer digits' OAM ids start at $b1
|
|
DrawTimerDigit: ; 0x17627
|
|
call LoadOAMData
|
|
ld a, b
|
|
add $8
|
|
ld b, a
|
|
ret
|
|
|
|
Func_1762f: ; 0x1762f
|
|
lb de, $60, $0c
|
|
ld a, [wCurrentStage]
|
|
cp $6
|
|
ret nc
|
|
lb de, $00, $00
|
|
bit 0, a
|
|
ret z
|
|
lb de, $30, $04
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
ret nz
|
|
lb de, $30, $08
|
|
ret
|
|
|
|
LoadTimerDigitTiles: ; 0x1764f
|
|
push bc
|
|
push de
|
|
cp [hl]
|
|
jr z, .skip
|
|
push af
|
|
push hl
|
|
add d
|
|
call Func_17665
|
|
pop hl
|
|
pop af
|
|
ld [hl], a
|
|
.skip
|
|
inc hl
|
|
pop de
|
|
ld a, d
|
|
add $10
|
|
ld d, a
|
|
pop bc
|
|
ret
|
|
|
|
Func_17665: ; 0x17665
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
ld hl, TimerDigitsTileData
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TimerDigitsTileData)
|
|
call Func_10aa
|
|
ret
|
|
|
|
INCLUDE "data/timer_digits_tiledata.asm"
|
|
|
|
DrawMonCaptureAnimation: ; 0x17c67
|
|
ld a, [wCapturingMon]
|
|
and a
|
|
ret z
|
|
ld a, $50
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $38
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wBallCaptureAnimationFrame]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, BallCaptureAnimationOAMIds
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
BallCaptureAnimationOAMIds:
|
|
db $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $23, $24, $25
|
|
|
|
DrawAnimatedMon_RedStage: ; 0x17c96
|
|
ld a, [wWildMonIsHittable]
|
|
and a
|
|
ret z
|
|
ld a, $50
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $3e
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd5bd]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, AnimatedMonOAMIds_RedStage
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
AnimatedMonOAMIds_RedStage:
|
|
db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31
|
|
|
|
Func_17cc4: ; 0x17cc4
|
|
ld de, wd4cd
|
|
ld hl, OAMData_17d15
|
|
call Func_17cdc
|
|
ld de, wd4d0
|
|
ld hl, OAMData_17d1b
|
|
call Func_17cdc
|
|
ld de, wd4d3
|
|
ld hl, OAMData_17d21
|
|
; fall through
|
|
|
|
Func_17cdc: ; 0x17cdc
|
|
push hl
|
|
ld hl, AnimationData_17d27
|
|
call UpdateAnimation
|
|
ld h, d
|
|
ld l, e
|
|
ld a, [hl]
|
|
and a
|
|
jr nz, .asm_17cf6
|
|
call GenRandom
|
|
and $7
|
|
add $1e
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hli], a
|
|
xor a
|
|
ld [hl], a
|
|
.asm_17cf6
|
|
pop hl
|
|
inc de
|
|
ld a, [hSCX]
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub b
|
|
ld b, a
|
|
ld a, [hSCY]
|
|
ld c, a
|
|
ld a, [hli]
|
|
sub c
|
|
ld c, a
|
|
ld a, [wd4d7]
|
|
sub [hl]
|
|
inc hl
|
|
jr z, .asm_17d0c
|
|
ld a, [de]
|
|
.asm_17d0c
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMData_17d15:
|
|
db $3A, $4E ; x, y offsets
|
|
db $00 ; ???
|
|
db $BD, $BC, $CE ; oam ids
|
|
|
|
OAMData_17d1b:
|
|
db $53, $44 ; x, y offsets
|
|
db $01 ; ???
|
|
db $BD, $BC, $CD ; oam ids
|
|
|
|
OAMData_17d21:
|
|
db $4D, $60 ; x, y offsets
|
|
db $02 ; ???
|
|
db $BD, $BC, $CF ; oam ids
|
|
|
|
AnimationData_17d27:
|
|
; Each entry is [duration][OAM id]
|
|
db $1E, $01
|
|
db $02, $02
|
|
db $03, $01
|
|
db $02, $02
|
|
db $03, $01
|
|
db $02, $02
|
|
db $00 ; terminator
|
|
|
|
Func_17d34: ; 0x17d34
|
|
ld a, $0
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $10
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wStageCollisionState]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_17d51
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMIds_17d51:
|
|
db $C9
|
|
db $C9
|
|
db $C9
|
|
db $C9
|
|
db $C8
|
|
db $C8
|
|
db $CA
|
|
db $CA
|
|
|
|
Func_17d59: ; 0x17d59
|
|
ld a, $74
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $52
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wBellsproutAnimationFrame]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, BellsproutAnimationOAMIds
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
BellsproutAnimationOAMIds: ; 0x17d76
|
|
db $BE
|
|
db $BF
|
|
db $C0
|
|
db $C1
|
|
|
|
Func_17d7a: ; 0x17d7a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld a, $67
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $54
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, $cc
|
|
call LoadOAMData
|
|
ret
|
|
|
|
Func_17d92: ; 0x17d92
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld hl, AnimationData_17dd0
|
|
ld de, wd504
|
|
call UpdateAnimation
|
|
ld a, [wd504]
|
|
and a
|
|
jr nz, .asm_17db1
|
|
ld a, $13
|
|
ld [wd504], a
|
|
xor a
|
|
ld [wd505], a
|
|
ld [wd506], a
|
|
.asm_17db1
|
|
ld a, $2b
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $69
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd505]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_17dce
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMIds_17dce: ; 0x17dce
|
|
db $CB
|
|
db $D0
|
|
|
|
AnimationData_17dd0:
|
|
; Each entry is [duration][OAM id]
|
|
db $14, $00
|
|
db $13, $01
|
|
db $15, $00
|
|
db $12, $01
|
|
db $14, $00
|
|
db $13, $01
|
|
db $16, $00
|
|
db $13, $01
|
|
db $0 ; terminator
|
|
|
|
Func_17de1: ; 0x17de1
|
|
ld a, $88
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $5a
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd50a]
|
|
srl a
|
|
srl a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_17e02
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMIds_17e02: ; 0x17e02
|
|
db $C2
|
|
db $C3
|
|
db $C4
|
|
db $C5
|
|
db $C6
|
|
db $C7
|
|
|
|
DrawPikachuSavers_RedStage: ; 0x17e08
|
|
ld a, [hSCX]
|
|
ld d, a
|
|
ld a, [hSCY]
|
|
ld e, a
|
|
ld a, [wd51d]
|
|
and a
|
|
ld a, [wd518]
|
|
jr z, .asm_17e33
|
|
ld a, [wd51c]
|
|
and a
|
|
jr nz, .asm_17e29
|
|
ld a, [hNumFramesDropped]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $1
|
|
jr .asm_17e33
|
|
|
|
.asm_17e29
|
|
ld a, [wd4b4]
|
|
cp $50
|
|
ld a, $1
|
|
jr nc, .asm_17e33
|
|
xor a
|
|
.asm_17e33
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, PikachuSaverOAMOffsets_RedStage
|
|
add hl, bc
|
|
ld a, [hli]
|
|
sub d
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub e
|
|
ld c, a
|
|
ld a, [wPikachuSaverAnimationFrame]
|
|
add $e
|
|
call LoadOAMData
|
|
ret
|
|
|
|
PikachuSaverOAMOffsets_RedStage:
|
|
dw $7E0F
|
|
dw $7E92
|
|
|
|
Func_17e4f: ; 0x17e4f
|
|
; unused
|
|
ld hl, UnusedData_7e55
|
|
jp Func_17e5e
|
|
|
|
UnusedData_7e55: ; 0x17e55
|
|
db $00, $2B, $69, $CB, $00, $67, $54, $CC
|
|
db $FF
|
|
|
|
Func_17e5e: ; 0x17e5e
|
|
; unused
|
|
ld a, [hGameBoyColorFlag]
|
|
ld e, a
|
|
ld a, [hSCX]
|
|
ld d, a
|
|
.asm_17e64
|
|
ld a, [hli]
|
|
cp $ff
|
|
ret z
|
|
or e
|
|
jr nz, .asm_17e70
|
|
inc hl
|
|
inc hl
|
|
inc hl
|
|
jr .asm_17e64
|
|
.asm_17e70
|
|
ld a, [hli]
|
|
sub d
|
|
ld b, a
|
|
ld a, [hSCY]
|
|
ld c, a
|
|
ld a, [hli]
|
|
sub c
|
|
ld c, a
|
|
ld a, [hli]
|
|
bit 0, e
|
|
call nz, LoadOAMData
|
|
jr .asm_17e64
|
|
|
|
DrawPinball: ; 0x17e81
|
|
ld a, [wd548]
|
|
and a
|
|
ret z
|
|
ld hl, wBallSpin
|
|
ld a, [wBallRotation]
|
|
add [hl]
|
|
ld [wBallRotation], a
|
|
ld a, [wBallXPos + 1]
|
|
inc a
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
inc a
|
|
sub $10
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wBallRotation]
|
|
srl a
|
|
srl a
|
|
srl a ; divide wBallRotation by 8 because
|
|
srl a ; there are 8 frames of the ball spinning
|
|
and $7
|
|
add $0
|
|
call LoadOAMData
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret nz
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret nz
|
|
ld a, [hSGBFlag]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4c5]
|
|
inc a
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wd4c6]
|
|
inc a
|
|
sub $10
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd4c7]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $7
|
|
add $0
|
|
call LoadOAMData
|
|
ld a, [wBallXPos + 1]
|
|
ld [wd4c5], a
|
|
ld a, [wBallYPos + 1]
|
|
ld [wd4c6], a
|
|
ld a, [wBallRotation]
|
|
ld [wd4c7], a
|
|
ret
|
|
|
|
Func_17efb: ; 0x17efb
|
|
ld a, [wd551]
|
|
and a
|
|
ret nz
|
|
ld a, [hNumFramesDropped]
|
|
bit 4, a
|
|
ret z
|
|
ld de, wIndicatorStates + 5
|
|
ld hl, OAMData_17f3a
|
|
ld b, $6
|
|
jr asm_17f21
|
|
|
|
Func_17f0f: ; 0x17f0f
|
|
ld a, [wd551]
|
|
and a
|
|
ret nz
|
|
ld a, [hNumFramesDropped]
|
|
bit 4, a
|
|
ret z
|
|
ld de, wIndicatorStates + 11
|
|
ld hl, OAMData_17f4c
|
|
ld b, $8
|
|
asm_17f21: ; 0x17f21
|
|
push bc
|
|
ld a, [hSCX]
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub b
|
|
ld b, a
|
|
ld a, [hSCY]
|
|
ld c, a
|
|
ld a, [hli]
|
|
sub c
|
|
ld c, a
|
|
ld a, [de]
|
|
and a
|
|
ld a, [hli]
|
|
call nz, LoadOAMData
|
|
pop bc
|
|
inc de
|
|
dec b
|
|
jr nz, asm_17f21
|
|
ret
|
|
|
|
OAMData_17f3a:
|
|
db $0D, $37 ; x, y offsets
|
|
db $D1 ; oam id
|
|
|
|
db $46, $22 ; x, y offsets
|
|
db $D6 ; oam id
|
|
|
|
db $8A, $4A ; x, y offsets
|
|
db $D2 ; oam id
|
|
|
|
db $41, $81 ; x, y offsets
|
|
db $D3 ; oam id
|
|
|
|
db $3D, $65 ; x, y offsets
|
|
db $D5 ; oam id
|
|
|
|
db $73, $74 ; x, y offsets
|
|
db $D4 ; oam id
|
|
|
|
OAMData_17f4c:
|
|
db $2D, $13 ; x, y offsets
|
|
db $32 ; oam id
|
|
|
|
db $6A, $13 ; x, y offsets
|
|
db $33 ; oam id
|
|
|
|
db $25, $2D ; x, y offsets
|
|
db $34 ; oam id
|
|
|
|
db $73, $2D ; x, y offsets
|
|
db $35 ; oam id
|
|
|
|
db $0F, $40 ; x, y offsets
|
|
db $36 ; oam id
|
|
|
|
db $1F, $40 ; x, y offsets
|
|
db $36 ; oam id
|
|
|
|
db $79, $40 ; x, y offsets
|
|
db $37 ; oam id
|
|
|
|
db $89, $40 ; x, y offsets
|
|
db $37 ; oam id
|
|
|
|
Func_17f64: ; 0x17f64
|
|
ld a, [wd551]
|
|
and a
|
|
ret z
|
|
ld de, wd566
|
|
ld hl, OAMOffsets_17fa6
|
|
ld b, $c
|
|
ld c, $39
|
|
jr asm_17f84
|
|
|
|
Func_17f75: ; 0x17f75
|
|
ld a, [wd551]
|
|
and a
|
|
ret z
|
|
ld de, wd572
|
|
ld hl, OAMOffsets_17fbe
|
|
ld b, $6
|
|
ld c, $40
|
|
asm_17f84: ; 0x17f84
|
|
push bc
|
|
ld a, [de]
|
|
add c
|
|
cp c
|
|
push af
|
|
ld a, [hSCX]
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub b
|
|
ld b, a
|
|
ld a, [hSCY]
|
|
ld c, a
|
|
ld a, [hli]
|
|
sub c
|
|
ld c, a
|
|
ld a, [hNumFramesDropped]
|
|
and $e
|
|
jr nz, .asm_17f9c
|
|
dec c
|
|
.asm_17f9c
|
|
pop af
|
|
call nz, LoadOAMData
|
|
pop bc
|
|
inc de
|
|
dec b
|
|
jr nz, asm_17f84
|
|
ret
|
|
|
|
OAMOffsets_17fa6:
|
|
; x, y offsets
|
|
db $4C, $0C
|
|
db $32, $12
|
|
db $66, $12
|
|
db $19, $25
|
|
db $7F, $25
|
|
db $1E, $36
|
|
db $7F, $36
|
|
db $0E, $65
|
|
db $8B, $65
|
|
db $49, $7A
|
|
db $59, $7A
|
|
db $71, $7A
|
|
|
|
OAMOffsets_17fbe:
|
|
; x, y offsets
|
|
db $3D, $13
|
|
db $5B, $13
|
|
db $31, $17
|
|
db $67, $17
|
|
db $2E, $2C
|
|
db $6A, $2C
|
|
|
|
Func_17fca: ; 0x17fca
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wd606]
|
|
inc a
|
|
ld [wd606], a
|
|
ld a, $40
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $1
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd606]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $3
|
|
add $4f
|
|
cp $52
|
|
call nz, LoadOAMData
|
|
ret
|
|
|
|
SECTION "bank6", ROMX, BANK[$6]
|
|
|
|
Func_18000: ; 0x18000
|
|
ld hl, wc000
|
|
ld bc, $0a00
|
|
call ClearData
|
|
ld a, $1
|
|
ld [rVBK], a
|
|
hlCoord 0, 0, vBGWin
|
|
ld bc, $0400
|
|
call ClearData
|
|
xor a
|
|
ld [rVBK], a
|
|
ld hl, wWhichVoltorb
|
|
ld bc, $032e
|
|
call ClearData
|
|
xor a
|
|
ld hl, wScore + $5
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hl], a
|
|
ld [wNumPartyMons], a
|
|
ld [wd49b], a
|
|
ld [wd4c9], a
|
|
ld a, $1
|
|
ld [wd49d], a
|
|
ld a, $3
|
|
ld [wd49e], a
|
|
callba Start20SecondSaverTimer
|
|
ret
|
|
|
|
Func_1804a: ; 0x1804a
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $b0
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $98
|
|
ld [wBallYPos + 1], a
|
|
ret
|
|
|
|
DoNothing_1805f: ; 0x1805f
|
|
ret
|
|
|
|
DoNothing_18060: ; 0x18060
|
|
ret
|
|
|
|
DoNothing_18061: ; 0x18061
|
|
ret
|
|
|
|
CheckRedStageLaunchAlleyCollision_: ; 0x18062
|
|
callba CheckRedStageLaunchAlleyCollision
|
|
ret
|
|
|
|
DoNothing_1806d: ; 0x1806d
|
|
ret
|
|
|
|
Func_1806e: ; 0x1806e
|
|
callba Func_1652d
|
|
ret
|
|
|
|
Func_18079: ; 0x18079
|
|
callba DrawPinball
|
|
ret
|
|
|
|
Func_18084: ; 0x18084
|
|
callba DrawFlippers
|
|
callba DrawPinball
|
|
ret
|
|
|
|
InitGengarBonusStage: ; 0x18099
|
|
ld a, [wd7c1]
|
|
and a
|
|
jr z, .asm_180ac
|
|
xor a
|
|
ld [wd674], a
|
|
ld a, $8
|
|
ld [wd690], a
|
|
ld [wd6a1], a
|
|
ret
|
|
|
|
.asm_180ac
|
|
ld a, $1
|
|
ld [wd7ac], a
|
|
ld a, [wBallType]
|
|
ld [wBallTypeBackup], a
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld [wBallType], a
|
|
ld [wd49a], a
|
|
ld hl, GastlyInitialData
|
|
ld de, wd659
|
|
call Copy9BytesToDE
|
|
call Copy9BytesToDE
|
|
call Copy9BytesToDE
|
|
ld hl, HaunterInitialData
|
|
ld de, wd67e
|
|
call Copy9BytesToDE
|
|
call Copy9BytesToDE
|
|
ld hl, GengarInitialData
|
|
ld de, wd698
|
|
call Copy9BytesToDE
|
|
xor a
|
|
ld [wd67b], a
|
|
ld [wd695], a
|
|
ld hl, wd6a2
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wd656], a
|
|
ld bc, $0130 ; 1 minute 30 seconds
|
|
callba StartTimer
|
|
ld a, $f
|
|
call SetSongBank
|
|
ld de, $0005
|
|
call PlaySong
|
|
ret
|
|
|
|
Copy9BytesToDE: ; 0x18112
|
|
ld b, $3
|
|
.loop
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .loop
|
|
ret
|
|
|
|
GastlyInitialData: ; 0x18121
|
|
; Gastly 1
|
|
db $01, $01
|
|
db $00, $00 ; wGastly1AnimationState
|
|
db $00
|
|
db $00, $08 ; wGastly1XPos
|
|
db $00, $08 ; wGastly1YPos
|
|
; Gastly 2
|
|
db $01, $01
|
|
db $00, $00 ; wGastly2AnimationState
|
|
db $00
|
|
db $00, $50 ; wGastly2XPos
|
|
db $00, $20 ; wGastly2YPos
|
|
; Gastly 3
|
|
db $01, $01
|
|
db $00, $00 ; wGastly2AnimationState
|
|
db $00
|
|
db $00, $30 ; wGastly3XPos
|
|
db $00, $38 ; wGastly3YPos
|
|
|
|
HaunterInitialData: ; 0x1813c
|
|
; Haunter 1
|
|
db $00, $01
|
|
db $00, $00 ; wHaunter1AnimationState
|
|
db $00
|
|
db $00, $50 ; wHaunter1XPos
|
|
db $00, $10 ; wHaunter1YPos
|
|
; Haunter 2
|
|
db $00, $01
|
|
db $00, $00 ; wHaunter2AnimationState
|
|
db $00
|
|
db $00, $10 ; wHaunter2XPos
|
|
db $00, $34 ; wHaunter2YPos
|
|
|
|
GengarInitialData: ; 0x1814e
|
|
db $00, $01
|
|
db $00, $00 ; wGengarAnimationState
|
|
db $04
|
|
db $00, $38 ; wGengarXPos
|
|
db $00, $F8 ; wGengarYPos
|
|
|
|
StartBallGengarBonusStage: ; 0x18157
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $a6
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $56
|
|
ld [wBallYPos + 1], a
|
|
xor a
|
|
ld [wSCX], a
|
|
ld [wStageCollisionState], a
|
|
ld [wd653], a
|
|
xor a
|
|
ld [wd674], a
|
|
ld a, $8
|
|
ld [wd690], a
|
|
ld [wd6a1], a
|
|
ld a, [wd4c9]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd4c9], a
|
|
ret
|
|
|
|
Func_1818b: ; 0x1818b
|
|
callba Func_142fc
|
|
call Func_2862
|
|
call Func_18d72
|
|
ld a, [wd7c1]
|
|
callba Func_1404a
|
|
and a
|
|
ret z
|
|
call Func_183db
|
|
call Func_18d91
|
|
ret
|
|
|
|
CheckGengarBonusStageGameObjectCollisions: ; 0x181b1
|
|
call CheckGengarBonusStageGastlyCollision
|
|
call CheckGengarBonusStageHaunterCollision
|
|
call CheckGengarBonusStageGengarCollision
|
|
call GengarBonusStageGravestonesCollision
|
|
ret
|
|
|
|
CheckGengarBonusStageGastlyCollision: ; 0x181be
|
|
ld a, [wd659]
|
|
and a
|
|
ret z
|
|
ld a, [wGastly1XPos + 1]
|
|
ld b, a
|
|
ld a, [wGastly1YPos + 1]
|
|
add $10
|
|
ld c, a
|
|
ld a, [wGastly1AnimationState]
|
|
call CheckSingleGastlyCollision
|
|
ld a, $1
|
|
jr c, .hitGastly
|
|
ld a, [wGastly2XPos + 1]
|
|
ld b, a
|
|
ld a, [wGastly2YPos + 1]
|
|
add $10
|
|
ld c, a
|
|
ld a, [wGastly2AnimationState]
|
|
call CheckSingleGastlyCollision
|
|
ld a, $2
|
|
jr c, .hitGastly
|
|
ld a, [wGastly3XPos + 1]
|
|
ld b, a
|
|
ld a, [wGastly3YPos + 1]
|
|
add $10
|
|
ld c, a
|
|
ld a, [wGastly3AnimationState]
|
|
call CheckSingleGastlyCollision
|
|
ld a, $3
|
|
ret nc
|
|
.hitGastly
|
|
ld [wTriggeredGameObjectIndex], a
|
|
ld [wd657], a
|
|
add $4
|
|
ld [wTriggeredGameObject], a
|
|
ld [wd658], a
|
|
ret
|
|
|
|
CheckSingleGastlyCollision: ; 0x1820d
|
|
cp $4
|
|
jr z, .noCollision
|
|
ld a, [wBallXPos + 1]
|
|
sub b
|
|
cp $20
|
|
jr nc, .noCollision
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
sub c
|
|
cp $20
|
|
jr nc, .noCollision
|
|
ld c, a
|
|
ld e, c
|
|
ld d, $0
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
ld l, b
|
|
ld h, $0
|
|
add hl, de
|
|
ld de, CircularCollisionAngles
|
|
add hl, de
|
|
ld a, BANK(CircularCollisionAngles)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
jr nz, .noCollision
|
|
sla a
|
|
ld [wCollisionForceAngle], a
|
|
ld a, $1
|
|
ld [wd7e9], a
|
|
scf
|
|
ret
|
|
|
|
.noCollision
|
|
and a
|
|
ret
|
|
|
|
CheckGengarBonusStageHaunterCollision: ; 0x18259
|
|
ld a, [wd67e]
|
|
and a
|
|
ret z
|
|
ld a, [wHaunter1XPos + 1]
|
|
add $fe
|
|
ld b, a
|
|
ld a, [wHaunter1YPos + 1]
|
|
add $c
|
|
ld c, a
|
|
ld a, [wHaunter1AnimationState]
|
|
call CheckSingleHaunterCollision
|
|
ld a, $1
|
|
jr c, .hitHaunter
|
|
ld a, [wHaunter2XPos + 1]
|
|
add $fe
|
|
ld b, a
|
|
ld a, [wHaunter2YPos + 1]
|
|
add $c
|
|
ld c, a
|
|
ld a, [wHaunter2AnimationState]
|
|
call CheckSingleHaunterCollision
|
|
ld a, $2
|
|
ret nc
|
|
.hitHaunter
|
|
ld [wTriggeredGameObjectIndex], a
|
|
ld [wd67c], a
|
|
add $7
|
|
ld [wTriggeredGameObject], a
|
|
ld [wd67d], a
|
|
ret
|
|
|
|
CheckSingleHaunterCollision: ; 0x18298
|
|
cp $5
|
|
jr z, .noCollision
|
|
ld a, [wBallXPos + 1]
|
|
sub b
|
|
cp $20
|
|
jr nc, .noCollision
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
sub c
|
|
cp $28
|
|
jr nc, .noCollision
|
|
ld c, a
|
|
ld e, c
|
|
ld d, $0
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
ld l, b
|
|
ld h, $0
|
|
add hl, de
|
|
ld de, HaunterCollisionAngles
|
|
add hl, de
|
|
ld a, BANK(HaunterCollisionAngles)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
jr nz, .noCollision
|
|
sla a
|
|
ld [wCollisionForceAngle], a
|
|
ld a, $1
|
|
ld [wd7e9], a
|
|
scf
|
|
ret
|
|
|
|
.noCollision
|
|
and a
|
|
ret
|
|
|
|
CheckGengarBonusStageGengarCollision: ; 0x182e4
|
|
ld a, [wd698]
|
|
and a
|
|
ret z
|
|
ld a, [wGengarXPos + 1]
|
|
ld b, a
|
|
ld a, [wGengarYPos + 1]
|
|
add $c
|
|
ld c, a
|
|
call CheckGiantGengarCollision
|
|
ld a, $1
|
|
ret nc
|
|
ld [wTriggeredGameObjectIndex], a
|
|
ld [wd696], a
|
|
add $9
|
|
ld [wTriggeredGameObject], a
|
|
ld [wd697], a
|
|
ret
|
|
|
|
CheckGiantGengarCollision: ; 0x18308
|
|
ld a, [wBallXPos + 1]
|
|
sub b
|
|
cp $30
|
|
jr nc, .noCollision
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
sub c
|
|
cp $40
|
|
jr nc, .noCollision
|
|
ld c, a
|
|
ld a, c
|
|
sla a
|
|
add c
|
|
ld e, a
|
|
ld d, $0
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
ld l, b
|
|
ld h, $0
|
|
add hl, de
|
|
ld de, GengarCollisionAngles
|
|
add hl, de
|
|
ld a, BANK(GengarCollisionAngles)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
jr nz, .noCollision
|
|
sla a
|
|
ld [wCollisionForceAngle], a
|
|
ld a, $1
|
|
ld [wd7e9], a
|
|
scf
|
|
ret
|
|
|
|
.noCollision
|
|
and a
|
|
ret
|
|
|
|
GengarBonusStageGravestonesCollision: ; 0x18350
|
|
ld de, GengarBonusStageGravestonesCollisionData
|
|
ld hl, GengarBonusStageGravestonesCollisionAttributes
|
|
ld bc, wWhichGravestone
|
|
and a
|
|
jp HandleGameObjectCollision
|
|
|
|
GengarBonusStageGravestonesCollisionAttributes:
|
|
db $00 ; flat list
|
|
db $19, $1A, $1B, $1C, $27, $1D, $1E, $1F, $20
|
|
db $FF ; terminator
|
|
|
|
GengarBonusStageGravestonesCollisionData:
|
|
db $11, $11
|
|
db $01, $24, $52
|
|
db $02, $44, $3A
|
|
db $03, $74, $5A
|
|
db $04, $7C, $32
|
|
db $FF ; terminator
|
|
|
|
Func_18377: ; 0x18377
|
|
call Func_18464
|
|
call Func_1860b
|
|
call Func_187b1
|
|
call Func_18d34
|
|
call Func_183b7
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $1
|
|
ld [wd7be], a
|
|
call Func_2862
|
|
callba Func_86d2
|
|
ld a, [wd6a2]
|
|
cp $5
|
|
ret nc
|
|
ld a, $1
|
|
ld [wd6a8], a
|
|
ret
|
|
|
|
Func_183b7: ; 0x183b7
|
|
ld a, [wd653]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4b4]
|
|
cp $8a
|
|
ret nc
|
|
ld a, $1
|
|
ld [wStageCollisionState], a
|
|
ld [wd653], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_183db
|
|
call Func_18d91
|
|
ret
|
|
|
|
Func_183db: ; 0x183db
|
|
ld a, [wStageCollisionState]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_183f8
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_183ee
|
|
ld hl, TileDataPointers_1842e
|
|
.asm_183ee
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, BANK(TileDataPointers_183f8)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_183f8:
|
|
dw TileData_183fc
|
|
dw TileData_183ff
|
|
|
|
TileData_183fc: ; 0x183fc
|
|
db $01
|
|
dw TileData_18402
|
|
|
|
TileData_183ff: ; 0x183ff
|
|
db $01
|
|
dw TileData_18418
|
|
|
|
TileData_18402: ; 0x18402
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $D4
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $D5, $D6
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $D9, $D7
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $D8
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_18418: ; 0x18418
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $12
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $0C, $0D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $07, $08
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $03
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1842e:
|
|
dw TileData_18432
|
|
dw TileData_18435
|
|
|
|
TileData_18432: ; 0x18432
|
|
db $01
|
|
dw TileData_18438
|
|
|
|
TileData_18435: ; 0x18435
|
|
db $01
|
|
dw TileData_1844e
|
|
|
|
TileData_18438: ; 0x18438
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $D4
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $D5, $D6
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $D9, $D7
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $D8
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1844e: ; 0x1844e
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $21
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $15, $16
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $0A, $0B
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $03
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_18464: ; 0x18464
|
|
ld a, [wd659]
|
|
and a
|
|
ret z
|
|
ld a, [wd657]
|
|
and a
|
|
jr z, .asm_184d5
|
|
xor a
|
|
ld [wd657], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jr nz, .asm_184d5
|
|
ld a, [wd658]
|
|
sub $5
|
|
ld c, a
|
|
sla a
|
|
sla a
|
|
sla a
|
|
add c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd65d
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, [de]
|
|
and a
|
|
jr nz, .asm_184d5
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld hl, AnimationData_185e6
|
|
call CopyHLToDE
|
|
pop de
|
|
ld a, $1
|
|
ld [de], a
|
|
ld a, [wd67b]
|
|
inc a
|
|
ld [wd67b], a
|
|
ld bc, OneHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld a, $33
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ld hl, $0100
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
lb de, $00, $2c
|
|
call PlaySoundEffect
|
|
.asm_184d5
|
|
ld bc, $0830
|
|
ld de, wd65d
|
|
ld hl, wd675
|
|
call Func_1850c
|
|
ld bc, $5078
|
|
ld de, wd666
|
|
ld hl, wd677
|
|
call Func_1850c
|
|
ld bc, $3050
|
|
ld de, wd66f
|
|
ld hl, wd679
|
|
call Func_1850c
|
|
ld de, wd65d
|
|
call Func_18562
|
|
ld de, wd666
|
|
call Func_18562
|
|
ld de, wd66f
|
|
call Func_18562
|
|
ret
|
|
|
|
Func_1850c: ; 0x1850c
|
|
ld a, [de]
|
|
and a
|
|
ret nz
|
|
inc de
|
|
push hl
|
|
ld a, [hli]
|
|
push af
|
|
push bc
|
|
ld a, [hl]
|
|
inc a
|
|
and $1f
|
|
ld [hl], a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, GastlyData_18542
|
|
add hl, bc
|
|
pop bc
|
|
pop af
|
|
and a
|
|
jr nz, .asm_18534
|
|
ld a, [de]
|
|
add [hl]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
adc $0
|
|
ld [de], a
|
|
pop hl
|
|
cp c
|
|
ret c
|
|
ld a, $1
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_18534
|
|
ld a, [de]
|
|
sub [hl]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
sbc $0
|
|
ld [de], a
|
|
pop hl
|
|
cp b
|
|
ret nc
|
|
xor a
|
|
ld [hl], a
|
|
ret
|
|
|
|
GastlyData_18542: ; 0x18542
|
|
; Might be floating y offsets, not sure at the moment.
|
|
db $31, $32, $33, $34, $35, $36, $37, $36
|
|
db $35, $34, $33, $32, $33, $34, $35, $36
|
|
db $37, $38, $39, $3A, $3B, $3A, $39, $38
|
|
db $37, $36, $35, $34, $33, $32, $31, $30
|
|
|
|
Func_18562: ; 0x18562
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, AnimationDataPointers_185d9
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ret nc
|
|
ld a, [de]
|
|
dec de
|
|
and a
|
|
jr nz, .asm_1858a
|
|
ld a, [de]
|
|
cp $4
|
|
ret nz
|
|
ld hl, AnimationData_185dd
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
.asm_1858a
|
|
cp $1
|
|
ret nz
|
|
ld a, [de]
|
|
cp $12
|
|
ret nz
|
|
ld a, [wd67b]
|
|
cp $a
|
|
jr nz, .asm_185b1
|
|
ld a, $1
|
|
ld [wd67e], a
|
|
ld [wd687], a
|
|
xor a
|
|
ld [wd659], a
|
|
ld [wd662], a
|
|
ld [wd66b], a
|
|
ld de, $0006
|
|
call PlaySong
|
|
ret
|
|
|
|
.asm_185b1
|
|
ld c, a
|
|
ld a, [wd65d]
|
|
and a
|
|
jr nz, .asm_185b9
|
|
inc c
|
|
.asm_185b9
|
|
ld a, [wd666]
|
|
and a
|
|
jr nz, .asm_185c0
|
|
inc c
|
|
.asm_185c0
|
|
ld a, [wd66f]
|
|
and a
|
|
jr nz, .asm_185c7
|
|
inc c
|
|
.asm_185c7
|
|
ld a, c
|
|
cp $a
|
|
ret nc
|
|
ld hl, AnimationData_185dd
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
xor a
|
|
ld [de], a
|
|
ret
|
|
|
|
AnimationDataPointers_185d9:
|
|
dw AnimationData_185dd
|
|
dw AnimationData_185e6
|
|
|
|
AnimationData_185dd: ; 0x185dd
|
|
; Each entry is [duration][OAM id]
|
|
db $0D, $01
|
|
db $0D, $00
|
|
db $0D, $02
|
|
db $0D, $00
|
|
db $00 ; terminator
|
|
|
|
AnimationData_185e6: ; 0x185e6
|
|
; Each entry is [duration][OAM id]
|
|
db $05, $03
|
|
db $04, $03
|
|
db $04, $04
|
|
db $04, $03
|
|
db $04, $04
|
|
db $03, $03
|
|
db $03, $04
|
|
db $03, $03
|
|
db $03, $04
|
|
db $02, $03
|
|
db $02, $04
|
|
db $02, $03
|
|
db $02, $04
|
|
db $01, $03
|
|
db $01, $04
|
|
db $01, $03
|
|
db $01, $04
|
|
db $80, $04
|
|
db $00 ; terminator
|
|
|
|
Func_1860b: ; 0x1860b
|
|
ld a, [wd67e]
|
|
and a
|
|
ret z
|
|
ld a, [wd67c]
|
|
and a
|
|
jr z, .asm_1867c
|
|
xor a
|
|
ld [wd67c], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jr nz, .asm_1867c
|
|
ld a, [wd67d]
|
|
sub $8
|
|
ld c, a
|
|
sla a
|
|
sla a
|
|
sla a
|
|
add c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd682
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, [de]
|
|
and a
|
|
jr nz, .asm_1867c
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld hl, AnimationData_1878a
|
|
call CopyHLToDE
|
|
pop de
|
|
ld a, $1
|
|
ld [de], a
|
|
ld a, [wd695]
|
|
inc a
|
|
ld [wd695], a
|
|
ld bc, FiveHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld a, $33
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ld hl, $0100
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
lb de, $00, $2d
|
|
call PlaySoundEffect
|
|
.asm_1867c
|
|
ld bc, $5078
|
|
ld de, wd682
|
|
ld hl, wd691
|
|
call Func_186a1
|
|
ld bc, $1038
|
|
ld de, wd68b
|
|
ld hl, wd693
|
|
call Func_186a1
|
|
ld de, wd682
|
|
call Func_186f7
|
|
ld de, wd68b
|
|
call Func_186f7
|
|
ret
|
|
|
|
Func_186a1: ; 0x186a1
|
|
ld a, [de]
|
|
and a
|
|
ret nz
|
|
inc de
|
|
push hl
|
|
ld a, [hli]
|
|
push af
|
|
push bc
|
|
ld a, [hl]
|
|
inc a
|
|
and $1f
|
|
ld [hl], a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, HaunterData_186d7
|
|
add hl, bc
|
|
pop bc
|
|
pop af
|
|
and a
|
|
jr nz, .asm_186c9
|
|
ld a, [de]
|
|
add [hl]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
adc $0
|
|
ld [de], a
|
|
pop hl
|
|
cp c
|
|
ret c
|
|
ld a, $1
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_186c9
|
|
ld a, [de]
|
|
sub [hl]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
sbc $0
|
|
ld [de], a
|
|
pop hl
|
|
cp b
|
|
ret nc
|
|
xor a
|
|
ld [hl], a
|
|
ret
|
|
|
|
HaunterData_186d7:
|
|
; Might be floating y offsets, not sure at the moment.
|
|
db $31, $32, $33, $34, $35, $36, $37, $36
|
|
db $35, $34, $33, $32, $33, $34, $35, $36
|
|
db $37, $38, $39, $3A, $3B, $3A, $39, $38
|
|
db $37, $36, $35, $34, $33, $32, $31, $30
|
|
|
|
Func_186f7: ; 0x186f7
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, AnimationDataPointers_1877d
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ret nc
|
|
ld a, [de]
|
|
dec de
|
|
and a
|
|
jr nz, .asm_1871f
|
|
ld a, [de]
|
|
cp $4
|
|
ret nz
|
|
ld hl, AnimationData_18781
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
.asm_1871f
|
|
cp $1
|
|
ret nz
|
|
ld a, [de]
|
|
cp $12
|
|
jr nz, .asm_18761
|
|
ld a, [wd695]
|
|
cp $a
|
|
jr nz, .asm_18740
|
|
ld a, $1
|
|
ld [wd656], a
|
|
call Func_18d72
|
|
call Func_18d91
|
|
ld de, $0000
|
|
call PlaySong
|
|
ret
|
|
|
|
.asm_18740
|
|
ld c, a
|
|
ld a, [wd682]
|
|
and a
|
|
jr nz, .asm_18748
|
|
inc c
|
|
.asm_18748
|
|
ld a, [wd68b]
|
|
and a
|
|
jr nz, .asm_1874f
|
|
inc c
|
|
.asm_1874f
|
|
ld a, c
|
|
cp $a
|
|
ret nc
|
|
ld hl, AnimationData_18781
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
xor a
|
|
ld [de], a
|
|
ret
|
|
|
|
.asm_18761
|
|
cp $13
|
|
ret nz
|
|
ld a, [wd695]
|
|
cp $a
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd698], a
|
|
xor a
|
|
ld [wd67e], a
|
|
ld [wd687], a
|
|
ld de, GENGAR
|
|
call PlayCry
|
|
ret
|
|
|
|
AnimationDataPointers_1877d:
|
|
dw AnimationData_18781
|
|
dw AnimationData_1878a
|
|
|
|
AnimationData_18781:
|
|
; Each entry is [duration][OAM id]
|
|
db $0D, $00
|
|
db $0D, $01
|
|
db $0D, $02
|
|
db $0D, $03
|
|
db $00 ; terminator
|
|
|
|
AnimationData_1878a:
|
|
; Each entry is [duration][OAM id]
|
|
db $05, $04
|
|
db $04, $04
|
|
db $04, $05
|
|
db $04, $04
|
|
db $04, $05
|
|
db $03, $04
|
|
db $03, $05
|
|
db $03, $04
|
|
db $03, $05
|
|
db $02, $04
|
|
db $02, $05
|
|
db $02, $04
|
|
db $02, $05
|
|
db $01, $04
|
|
db $01, $05
|
|
db $01, $04
|
|
db $01, $05
|
|
db $80, $05
|
|
db $10, $05
|
|
db $00 ; terminator
|
|
|
|
Func_187b1: ; 0x187b1
|
|
ld a, [wd698]
|
|
and a
|
|
ret z
|
|
ld a, [wd696]
|
|
and a
|
|
jp z, .asm_1885d
|
|
xor a
|
|
ld [wd696], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jp nz, .asm_1885d
|
|
ld a, [wd697]
|
|
sub $a
|
|
ld c, a
|
|
sla a
|
|
sla a
|
|
sla a
|
|
add c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd69c
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, [de]
|
|
and a
|
|
jp nz, .asm_1885d
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [wd6a2]
|
|
inc a
|
|
ld [wd6a2], a
|
|
cp $5
|
|
jr nc, .asm_18804
|
|
ld hl, AnimationData_18b2b
|
|
call CopyHLToDE
|
|
pop de
|
|
ld a, $2
|
|
ld [de], a
|
|
lb de, $00, $37
|
|
call PlaySoundEffect
|
|
jr .asm_18826
|
|
|
|
.asm_18804
|
|
ld hl, AnimationData_18b32
|
|
call CopyHLToDE
|
|
pop de
|
|
ld a, $3
|
|
ld [de], a
|
|
ld a, $1
|
|
ld [wd7be], a
|
|
call Func_2862
|
|
callba Func_86d2
|
|
ld de, $0000
|
|
call PlaySong
|
|
.asm_18826
|
|
ld bc, FiveMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld a, $33
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ld hl, $0200
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
ld a, [wGengarYPos]
|
|
add $0
|
|
ld [wGengarYPos], a
|
|
ld a, [wGengarYPos + 1]
|
|
adc $ff
|
|
ld [wGengarYPos + 1], a
|
|
.asm_1885d
|
|
ld a, [wd69c]
|
|
cp $2
|
|
jr nc, .asm_18869
|
|
call Func_18876
|
|
jr .asm_1886c
|
|
|
|
.asm_18869
|
|
call Func_188e1
|
|
.asm_1886c
|
|
ld de, wd69c
|
|
call Func_189af
|
|
call Func_1894c
|
|
ret
|
|
|
|
Func_18876: ; 0x18876
|
|
ld a, [wd6a3]
|
|
cp $1
|
|
jr z, .asm_1889b
|
|
cp $2
|
|
jr z, .asm_1889b
|
|
ld a, [wGengarAnimationState]
|
|
cp $1
|
|
jr z, .asm_1888c
|
|
cp $2
|
|
jr nz, .asm_1889b
|
|
.asm_1888c
|
|
ld a, $1
|
|
ld [wd6a4], a
|
|
ld a, $11
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
.asm_1889b
|
|
ld a, [wGengarAnimationState]
|
|
ld hl, wd6a3
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd69c]
|
|
and a
|
|
jr nz, .asm_188da
|
|
ld a, [wGengarYPos + 1]
|
|
add $80
|
|
cp $a0
|
|
jr nc, .asm_188da
|
|
ld a, [wGengarAnimationState]
|
|
and a
|
|
jr z, .asm_188ca
|
|
ld a, [wGengarYPos]
|
|
add $0
|
|
ld [wGengarYPos], a
|
|
ld a, [wGengarYPos + 1]
|
|
adc $3
|
|
ld [wGengarYPos + 1], a
|
|
jr .asm_188da
|
|
|
|
.asm_188ca
|
|
ld a, [wGengarYPos]
|
|
add $0
|
|
ld [wGengarYPos], a
|
|
ld a, [wGengarYPos + 1]
|
|
adc $1
|
|
ld [wGengarYPos + 1], a
|
|
.asm_188da
|
|
ld a, [wGengarAnimationState]
|
|
ld [wd6a3], a
|
|
ret
|
|
|
|
Func_188e1: ; 0x188e1
|
|
ld a, [wd6a3]
|
|
cp $1
|
|
jr z, .asm_18901
|
|
cp $2
|
|
jr z, .asm_18901
|
|
ld a, [wGengarAnimationState]
|
|
cp $1
|
|
jr z, .asm_188f7
|
|
cp $2
|
|
jr nz, .asm_18901
|
|
.asm_188f7
|
|
ld a, $1
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
.asm_18901
|
|
ld a, [wGengarAnimationState]
|
|
cp $6
|
|
ret z
|
|
ld a, [wGengarAnimationState]
|
|
ld hl, wd6a3
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd69c]
|
|
cp $3
|
|
jr nz, .asm_1891d
|
|
ld a, [wd69b]
|
|
cp $9
|
|
jr c, .asm_18945
|
|
.asm_1891d
|
|
ld a, [wGengarAnimationState]
|
|
and a
|
|
jr z, .asm_18935
|
|
ld a, [wGengarYPos]
|
|
add $0
|
|
ld [wGengarYPos], a
|
|
ld a, [wGengarYPos + 1]
|
|
adc $fd
|
|
ld [wGengarYPos + 1], a
|
|
jr .asm_18945
|
|
|
|
.asm_18935
|
|
ld a, [wGengarYPos]
|
|
add $0
|
|
ld [wGengarYPos], a
|
|
ld a, [wGengarYPos + 1]
|
|
adc $ff
|
|
ld [wGengarYPos + 1], a
|
|
.asm_18945
|
|
ld a, [wGengarAnimationState]
|
|
ld [wd6a3], a
|
|
ret
|
|
|
|
Func_1894c: ; 0x1894c
|
|
ld a, [wd6a6]
|
|
and a
|
|
jr nz, .asm_1898f
|
|
ld a, [wd6a4]
|
|
and a
|
|
jr z, .asm_1898f
|
|
ld a, [wd6a5]
|
|
cp $3
|
|
jr z, .asm_18980
|
|
inc a
|
|
ld [wd6a5], a
|
|
ld a, [wd548]
|
|
ld hl, wd549
|
|
and [hl]
|
|
jr z, .asm_18973
|
|
ld a, [wd4b6]
|
|
inc a
|
|
ld [wd4b6], a
|
|
.asm_18973
|
|
ld a, [wd7a0]
|
|
dec a
|
|
ld [wd7a0], a
|
|
ld a, $1
|
|
ld [wUpperTiltPushing], a
|
|
ret
|
|
|
|
.asm_18980
|
|
lb de, $00, $2b
|
|
call PlaySoundEffect
|
|
ld a, $1
|
|
ld [wd6a6], a
|
|
xor a
|
|
ld [wd6a4], a
|
|
.asm_1898f
|
|
xor a
|
|
ld [wUpperTiltPushing], a
|
|
ld a, [wd6a5]
|
|
and a
|
|
jr z, .asm_189a5
|
|
dec a
|
|
ld [wd6a5], a
|
|
ld a, [wd7a0]
|
|
inc a
|
|
ld [wd7a0], a
|
|
ret
|
|
|
|
.asm_189a5
|
|
ld a, [wd6a4]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld [wd6a6], a
|
|
ret
|
|
|
|
Func_189af: ; 0x189af
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, AnimationDataPointers_18a57
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ret nc
|
|
ld a, [de]
|
|
dec de
|
|
and a
|
|
jr nz, .asm_189d7
|
|
ld a, [de]
|
|
cp $4
|
|
ret nz
|
|
ld hl, AnimationData_18a61
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
.asm_189d7
|
|
cp $1
|
|
jr nz, .asm_189ed
|
|
ld a, [de]
|
|
cp $60
|
|
ret nz
|
|
ld hl, AnimationData_18a61
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
xor a
|
|
ld [de], a
|
|
ret
|
|
|
|
.asm_189ed
|
|
cp $2
|
|
jr nz, .asm_18a04
|
|
ld a, [de]
|
|
cp $3
|
|
ret nz
|
|
ld hl, AnimationData_18a6a
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
ld a, $1
|
|
ld [de], a
|
|
ret
|
|
|
|
.asm_18a04
|
|
cp $3
|
|
jr nz, .asm_18a3c
|
|
ld a, [de]
|
|
cp $1
|
|
jr nz, .asm_18a14
|
|
lb de, $00, $2e
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_18a14
|
|
cp $fe
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd6a8], a
|
|
ld a, $1
|
|
ld [wd498], a
|
|
ld a, $1
|
|
ld [wd49a], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, GengarStageClearedText
|
|
call LoadTextHeader
|
|
lb de, $4b, $2a
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_18a3c
|
|
cp $4
|
|
ret nz
|
|
ld a, [de]
|
|
cp $2
|
|
ret nz
|
|
ld hl, AnimationData_18a61
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
xor a
|
|
ld [de], a
|
|
ld de, $0007
|
|
call PlaySong
|
|
ret
|
|
|
|
AnimationDataPointers_18a57:
|
|
dw AnimationData_18a61
|
|
dw AnimationData_18a6a
|
|
dw AnimationData_18b2b
|
|
dw AnimationData_18b32
|
|
dw AnimationData_18d2f
|
|
|
|
AnimationData_18a61:
|
|
; Each entry is [duration][OAM id]
|
|
db $40, $01
|
|
db $10, $00
|
|
db $40, $02
|
|
db $10, $00
|
|
db $00 ; terminator
|
|
|
|
AnimationData_18a6a:
|
|
; Each entry is [duration][OAM id]
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $01, $00
|
|
db $01, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $01, $03
|
|
db $01, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $01, $03
|
|
db $01, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $01, $04
|
|
db $01, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $00
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $04
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $02, $03
|
|
db $01, $06
|
|
db $00 ; terminator
|
|
|
|
AnimationData_18b2b:
|
|
; Each entry is [duration][OAM id]
|
|
db $10, $05
|
|
db $20, $01
|
|
db $08, $00
|
|
db $00 ; terminator
|
|
|
|
AnimationData_18b32:
|
|
; Each entry is [duration][OAM id]
|
|
db $10, $05
|
|
db $10, $00
|
|
db $08, $03
|
|
db $0C, $04
|
|
db $0A, $03
|
|
db $10, $00
|
|
db $08, $03
|
|
db $0C, $04
|
|
db $0A, $03
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $00
|
|
db $04, $06
|
|
db $04, $00
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $00
|
|
db $04, $06
|
|
db $04, $00
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $01
|
|
db $04, $06
|
|
db $04, $00
|
|
db $04, $06
|
|
db $04, $00
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $04, $02
|
|
db $04, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $00
|
|
db $03, $06
|
|
db $03, $00
|
|
db $03, $06
|
|
db $03, $00
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $03, $01
|
|
db $03, $06
|
|
db $02, $01
|
|
db $01, $00
|
|
db $03, $06
|
|
db $03, $00
|
|
db $03, $06
|
|
db $03, $00
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $03, $02
|
|
db $03, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $01
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $00
|
|
db $02, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $02, $02
|
|
db $02, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $02
|
|
db $01, $06
|
|
db $01, $00
|
|
db $01, $06
|
|
db $01, $00
|
|
db $01, $06
|
|
db $00 ; terminator
|
|
|
|
AnimationData_18d2f:
|
|
; Each entry is [duration][OAM id]
|
|
db $40, $00
|
|
db $40, $00
|
|
db $00 ; terminator
|
|
|
|
Func_18d34: ; 0x18d34
|
|
ld a, [wWhichGravestone]
|
|
and a
|
|
jr z, .asm_18d71
|
|
xor a
|
|
ld [wWhichGravestone], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jr nz, .asm_18d71
|
|
ld bc, OneHundredPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $3
|
|
ld [wd804], a
|
|
ld hl, $0100
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
ld de, $002f
|
|
call Func_4d8
|
|
.asm_18d71
|
|
ret
|
|
|
|
Func_18d72: ; 0x18d72
|
|
ld a, [wd656]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_18ddb
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_18d85
|
|
ld hl, TileDataPointers_18ed1
|
|
.asm_18d85
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_18ddb)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_18d91: ; 0x18d91
|
|
ld a, [wd656]
|
|
and a
|
|
ld hl, Data_18dc9
|
|
jr z, .asm_18d9d
|
|
ld hl, Data_18dd2
|
|
.asm_18d9d
|
|
ld de, wc7c7
|
|
call Func_18db2
|
|
ld de, wc7ae
|
|
call Func_18db2
|
|
ld de, wc823
|
|
call Func_18db2
|
|
ld de, wc84d
|
|
; fall through
|
|
|
|
Func_18db2: ; 0x18db2
|
|
push hl
|
|
ld b, $3
|
|
.asm_18db5
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
ld a, e
|
|
add $1e
|
|
ld e, a
|
|
jr nc, .asm_18dc4
|
|
inc d
|
|
.asm_18dc4
|
|
dec b
|
|
jr nz, .asm_18db5
|
|
pop hl
|
|
ret
|
|
|
|
Data_18dc9:
|
|
db $19, $1A, $1B
|
|
db $1C, $27, $1D
|
|
db $1E, $1F, $20
|
|
|
|
Data_18dd2:
|
|
db $00, $00, $00
|
|
db $00, $00, $00
|
|
db $00, $00, $00
|
|
|
|
TileDataPointers_18ddb:
|
|
dw TileData_18ddf
|
|
dw TileData_18df4
|
|
|
|
TileData_18ddf: ; 0x18ddf
|
|
db $0A
|
|
dw TileData_18e09
|
|
dw TileData_18e13
|
|
dw TileData_18e1d
|
|
dw TileData_18e27
|
|
dw TileData_18e31
|
|
dw TileData_18e3b
|
|
dw TileData_18e45
|
|
dw TileData_18e4f
|
|
dw TileData_18e59
|
|
dw TileData_18e63
|
|
|
|
TileData_18df4: ; 0x18df4
|
|
db $0A
|
|
dw TileData_18e6d
|
|
dw TileData_18e77
|
|
dw TileData_18e81
|
|
dw TileData_18e8b
|
|
dw TileData_18e95
|
|
dw TileData_18e9f
|
|
dw TileData_18ea9
|
|
dw TileData_18eb3
|
|
dw TileData_18ebd
|
|
dw TileData_18ec7
|
|
|
|
TileData_18e09: ; 0x18e09
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw $9640
|
|
dw GengarBonusBaseGameBoyGfx + $E40
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e13: ; 0x18e13
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $67
|
|
dw GengarBonusBaseGameBoyGfx + $E70
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e1d: ; 0x18e1d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6A
|
|
dw GengarBonusBaseGameBoyGfx + $EA0
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e27: ; 0x18e27
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6D
|
|
dw GengarBonusBaseGameBoyGfx + $ED0
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e31: ; 0x18e31
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $70
|
|
dw GengarBonusBaseGameBoyGfx + $F00
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e3b: ; 0x18e3b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $73
|
|
dw GengarBonusBaseGameBoyGfx + $F30
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e45: ; 0x18e45
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $76
|
|
dw GengarBonusBaseGameBoyGfx + $F60
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e4f: ; 0x18e4f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $79
|
|
dw GengarBonusBaseGameBoyGfx + $F90
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e59: ; 0x18e59
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $7C
|
|
dw GengarBonusBaseGameBoyGfx + $FC0
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e63: ; 0x18e63
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7F
|
|
dw GengarBonusBaseGameBoyGfx + $FF0
|
|
db Bank(GengarBonusBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_18e6d: ; 0x18e6d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $64
|
|
dw GengarBonusGroundGfx
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18e77: ; 0x18e77
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $67
|
|
dw GengarBonusGroundGfx + $30
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18e81: ; 0x18e81
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6A
|
|
dw GengarBonusGroundGfx + $60
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18e8b: ; 0x18e8b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $6D
|
|
dw GengarBonusGroundGfx + $90
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18e95: ; 0x18e95
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $70
|
|
dw GengarBonusGroundGfx + $C0
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18e9f: ; 0x18e9f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $73
|
|
dw GengarBonusGroundGfx + $F0
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18ea9: ; 0x18ea9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $76
|
|
dw GengarBonusGroundGfx + $120
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18eb3: ; 0x18eb3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $79
|
|
dw GengarBonusGroundGfx + $150
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18ebd: ; 0x18ebd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $7C
|
|
dw GengarBonusGroundGfx + $180
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileData_18ec7: ; 0x18ec7
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7F
|
|
dw GengarBonusGroundGfx + $1B0
|
|
db Bank(GengarBonusGroundGfx)
|
|
db $00
|
|
|
|
TileDataPointers_18ed1:
|
|
dw TileData_18ed5
|
|
dw TileData_18ede
|
|
|
|
TileData_18ed5: ; 0x18ed5
|
|
db $04
|
|
dw TileData_18ee7
|
|
dw TileData_18f03
|
|
dw TileData_18f19
|
|
dw TileData_18f2f
|
|
|
|
TileData_18ede: ; 0x18ede
|
|
db $04
|
|
dw TileData_18f4b
|
|
dw TileData_18f67
|
|
dw TileData_18f7d
|
|
dw TileData_18f93
|
|
|
|
TileData_18ee7: ; 0x18ee7
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $67
|
|
db $26, $27, $28
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $87
|
|
db $1C, $1D, $1E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A7
|
|
db $3A, $13, $14
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C7
|
|
db $31, $32, $09
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_18f03: ; 0x18f03
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6E
|
|
db $47, $48, $49
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $8E
|
|
db $3A, $13, $14
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $31, $32, $3B
|
|
|
|
db $00 ; terminator ; number of tiles
|
|
|
|
TileData_18f19: ; 0x18f19
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $E3
|
|
db $23, $24, $25
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $103
|
|
db $19, $1A, $1B
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $0E, $0F, $10
|
|
|
|
db $00 ; terminator ; number of tiles
|
|
|
|
TileData_18f2f: ; 0x18f2f
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $ED
|
|
db $26, $27, $28
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $10D
|
|
db $1C, $1D, $1E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $12D
|
|
db $12, $13, $14
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $14D
|
|
db $07, $08, $09
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_18f4b: ; 0x18f4b
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $67
|
|
db $D9, $D9, $D9
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $87
|
|
db $D9, $D9, $D9
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A7
|
|
db $74, $75, $76
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C7
|
|
db $77, $78, $79
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_18f67: ; 0x18f67
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6E
|
|
db $D9, $D9, $D9
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $8E
|
|
db $74, $75, $76
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $77, $78, $7F
|
|
|
|
db $00 ; terminator ; number of tiles
|
|
|
|
TileData_18f7d: ; 0x18f7d
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $E3
|
|
db $DB, $38, $39
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $103
|
|
db $7A, $7B, $7C
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $7D, $7E, $7F
|
|
|
|
db $00 ; terminator ; number of tiles
|
|
|
|
TileData_18f93: ; 0x18f93
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $ED
|
|
db $D9, $D9, $D9
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $10D
|
|
db $D9, $D9, $D9
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $12D
|
|
db $74, $75, $76
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $14D
|
|
db $77, $78, $79
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_18faf: ; 0x18faf
|
|
ld bc, $7f00
|
|
callba DrawTimer
|
|
call Func_19020
|
|
call Func_190b9
|
|
call Func_19185
|
|
callba DrawFlippers
|
|
callba DrawPinball
|
|
ret
|
|
|
|
Func_18fda:
|
|
ld a, [hNewlyPressedButtons]
|
|
bit 6, a
|
|
ret z
|
|
ld a, [wd659]
|
|
and a
|
|
jr z, .asm_18ff8
|
|
ld a, $1
|
|
ld [wd67e], a
|
|
ld [wd687], a
|
|
xor a
|
|
ld [wd659], a
|
|
ld [wd662], a
|
|
ld [wd66b], a
|
|
ret
|
|
|
|
.asm_18ff8
|
|
ld a, [wd67e]
|
|
and a
|
|
jr z, .asm_1900b
|
|
ld a, $1
|
|
ld [wd698], a
|
|
xor a
|
|
ld [wd67e], a
|
|
ld [wd687], a
|
|
ret
|
|
|
|
.asm_1900b
|
|
ld a, [wd698]
|
|
and a
|
|
ret z
|
|
ld a, $1
|
|
ld [wd659], a
|
|
ld [wd662], a
|
|
ld [wd66b], a
|
|
xor a
|
|
ld [wd698], a
|
|
ret
|
|
|
|
Func_19020: ; 0x19020
|
|
ld de, wd659
|
|
call Func_19033
|
|
ld de, wd662
|
|
call Func_19033
|
|
ld de, wd66b
|
|
call Func_19033
|
|
ret
|
|
|
|
Func_19033: ; 0x19033
|
|
ld a, [de]
|
|
and a
|
|
ret z
|
|
.asm_19036
|
|
call Func_19070
|
|
jr nc, .asm_19042
|
|
ld a, [rLCDC]
|
|
bit 7, a
|
|
jr z, .asm_19036
|
|
ret
|
|
|
|
.asm_19042
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_1906b
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_1906b:
|
|
db $00, $01, $02, $03
|
|
db $FF
|
|
|
|
Func_19070: ; 0x19070
|
|
ld a, [wd674]
|
|
and a
|
|
ret z
|
|
push de
|
|
dec a
|
|
ld [wd674], a
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, GastlyVideoData_190a9
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(GengarBonusGastlyGfx)
|
|
ld bc, $0060
|
|
call LoadOrCopyVRAMData
|
|
ld a, $8
|
|
ld [wd690], a
|
|
ld [wd6a1], a
|
|
xor a
|
|
ld [wd67e], a
|
|
ld [wd687], a
|
|
ld [wd698], a
|
|
pop de
|
|
scf
|
|
ret
|
|
|
|
GastlyVideoData_190a9:
|
|
dw vTilesSH tile $10, GengarBonusGastlyGfx
|
|
dw vTilesSH tile $16, GengarBonusGastlyGfx + $60
|
|
dw vTilesSH tile $1c, GengarBonusGastlyGfx + $c0
|
|
dw vTilesSH tile $22, GengarBonusGastlyGfx + $120
|
|
|
|
Func_190b9: ; 0x190b9
|
|
ld de, wd67e
|
|
call Func_190c6
|
|
ld de, wd687
|
|
call Func_190c6
|
|
ret
|
|
|
|
Func_190c6: ; 0x190c6
|
|
ld a, [de]
|
|
and a
|
|
ret z
|
|
.asm_190c9
|
|
call Func_19104
|
|
jr nc, .asm_190d5
|
|
ld a, [rLCDC]
|
|
bit 7, a
|
|
jr z, .asm_190c9
|
|
ret
|
|
|
|
.asm_190d5
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_190fe
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_190fe:
|
|
db $04, $05, $06, $07, $08
|
|
db $FF
|
|
|
|
Func_19104: ; 0x19104
|
|
ld a, [wd690]
|
|
and a
|
|
ret z
|
|
push de
|
|
dec a
|
|
ld [wd690], a
|
|
sla a
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, GengarBonusStageHaunterGfxTable
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(GengarBonusHaunterGfx)
|
|
call LoadOrCopyVRAMData
|
|
ld a, $4
|
|
ld [wd674], a
|
|
ld a, $8
|
|
ld [wd6a1], a
|
|
xor a
|
|
ld [wd659], a
|
|
ld [wd662], a
|
|
ld [wd66b], a
|
|
ld [wd698], a
|
|
pop de
|
|
scf
|
|
ret
|
|
|
|
GengarBonusStageHaunterGfxTable: ; 0x19145
|
|
; Graphics data for Haunter.
|
|
; First word: length in bytes
|
|
; Second word: destination VRAM address
|
|
; Third word: graphics data
|
|
; Fourth word: unused
|
|
dw $60, vTilesSH tile $10, GengarBonusHaunterGfx, $0000
|
|
dw $60, vTilesSH tile $16, GengarBonusHaunterGfx + $60, $0000
|
|
dw $60, vTilesSH tile $1c, GengarBonusHaunterGfx + $c0, $0000
|
|
dw $60, vTilesSH tile $22, GengarBonusHaunterGfx + $120, $0000
|
|
dw $20, vTilesSH tile $28, GengarBonusHaunterGfx + $180, $0000
|
|
dw $40, vTilesOB tile $1a, GengarBonusHaunterGfx + $1a0, $0000
|
|
dw $60, vTilesOB tile $1e, GengarBonusHaunterGfx + $1e0, $0000
|
|
dw $60, vTilesOB tile $24, GengarBonusHaunterGfx + $240, $0000
|
|
|
|
Func_19185: ; 0x19185
|
|
ld de, wd698
|
|
call Func_1918c
|
|
ret
|
|
|
|
Func_1918c: ; 0x1918c
|
|
ld a, [de]
|
|
and a
|
|
ret z
|
|
.asm_1918f
|
|
call Func_191cb
|
|
jr nc, .asm_1919b
|
|
ld a, [rLCDC]
|
|
bit 7, a
|
|
jr z, .asm_1918f
|
|
ret
|
|
|
|
.asm_1919b
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_191c4
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_191c4:
|
|
db $09, $0A, $0B, $0C, $0D, $0E
|
|
db $FF
|
|
|
|
Func_191cb: ; 0x191cb
|
|
ld a, [wd6a1]
|
|
and a
|
|
ret z
|
|
push de
|
|
dec a
|
|
ld [wd6a1], a
|
|
sla a
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, GengarBonusStageGengarGfxTable
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, $26
|
|
call LoadOrCopyVRAMData
|
|
ld a, $4
|
|
ld [wd674], a
|
|
ld a, $8
|
|
ld [wd690], a
|
|
xor a
|
|
ld [wd659], a
|
|
ld [wd662], a
|
|
ld [wd66b], a
|
|
ld [wd67e], a
|
|
ld [wd687], a
|
|
pop de
|
|
scf
|
|
ret
|
|
|
|
GengarBonusStageGengarGfxTable:
|
|
dw $60, vTilesSH tile $10, GengarBonusGengarGfx, $0000
|
|
dw $60, vTilesSH tile $16, GengarBonusGengarGfx + $60, $0000
|
|
dw $60, vTilesSH tile $1c, GengarBonusGengarGfx + $c0, $0000
|
|
dw $60, vTilesSH tile $22, GengarBonusGengarGfx + $120, $0000
|
|
dw $20, vTilesSH tile $28, GengarBonusGengarGfx + $180, $0000
|
|
dw $40, vTilesOB tile $1a, GengarBonusGengarGfx + $1a0, $0000
|
|
dw $60, vTilesOB tile $1e, GengarBonusGengarGfx + $1e0, $0000
|
|
dw $60, vTilesOB tile $24, GengarBonusGengarGfx + $240, $0000
|
|
|
|
InitMewtwoBonusStage: ; 0x1924f
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld [wStageCollisionState], a
|
|
ld a, $1
|
|
ld [wd7ac], a
|
|
ld a, [wBallType]
|
|
ld [wBallTypeBackup], a
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld [wBallType], a
|
|
ld [wd49a], a
|
|
ld hl, Data_192ab
|
|
ld de, wd6b6
|
|
ld b, $c
|
|
.loop
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .loop
|
|
ld hl, Data_192db
|
|
ld de, wd6ac
|
|
ld b, $8
|
|
.loop2
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .loop2
|
|
ld bc, $0200 ; 2 minutes 0 seconds
|
|
callba StartTimer
|
|
ld a, $12
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
Data_192ab:
|
|
db $01, $01, $00, $00
|
|
db $00, $62, $08, $00
|
|
db $01, $01, $00, $00
|
|
db $00, $55, $1F, $0C
|
|
db $01, $01, $00, $00
|
|
db $00, $3B, $1F, $18
|
|
db $01, $01, $00, $00
|
|
db $00, $2E, $08, $24
|
|
db $01, $01, $00, $00
|
|
db $00, $3B, $F1, $30
|
|
db $01, $01, $00, $00
|
|
db $00, $55, $F1, $3C
|
|
|
|
Data_192db:
|
|
db $01, $00, $00, $00, $00, $00, $00, $00
|
|
|
|
StartBallMewtwoBonusStage: ; 0x192e3
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $a6
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $56
|
|
ld [wBallYPos + 1], a
|
|
ld a, $80
|
|
ld [wBallXVelocity], a
|
|
xor a
|
|
ld [wSCX], a
|
|
ld [wStageCollisionState], a
|
|
ld [wd6a9], a
|
|
ld a, [wd4c9]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd4c9], a
|
|
ret
|
|
|
|
Func_19310: ; 0x19310
|
|
callba Func_142fc
|
|
call Func_2862
|
|
callba Func_1404a
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret z
|
|
call Func_194ac
|
|
ret
|
|
|
|
CheckMewtwoBonusStageGameObjectCollisions: ; 0x19330
|
|
call Func_19414
|
|
call Func_19337
|
|
ret
|
|
|
|
Func_19337: ; 0x19337
|
|
ld hl, wd6bb
|
|
ld bc, $0601
|
|
.asm_1933d
|
|
push bc
|
|
push hl
|
|
ld a, [hli]
|
|
add $f8
|
|
ld b, a
|
|
ld a, [hld]
|
|
add $8
|
|
ld c, a
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
ld a, [hl]
|
|
dec hl
|
|
dec hl
|
|
bit 0, [hl]
|
|
call nz, Func_1936f
|
|
pop hl
|
|
pop bc
|
|
ld a, c
|
|
jr c, .asm_19360
|
|
ld de, $0008
|
|
add hl, de
|
|
inc c
|
|
dec b
|
|
jr nz, .asm_1933d
|
|
ret
|
|
|
|
.asm_19360
|
|
ld [wTriggeredGameObjectIndex], a
|
|
ld [wd6b4], a
|
|
add $0
|
|
ld [wTriggeredGameObject], a
|
|
ld [wd6b5], a
|
|
ret
|
|
|
|
Func_1936f: ; 0x1936f
|
|
cp $b
|
|
jp z, Func_19412
|
|
ld a, [wBallXPos + 1]
|
|
sub b
|
|
cp $20
|
|
jp nc, Func_19412
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
sub c
|
|
cp $20
|
|
jp nc, Func_19412
|
|
ld c, a
|
|
ld e, a
|
|
ld d, $0
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
ld l, b
|
|
ld h, $0
|
|
add hl, de
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
ld de, Data_e4000
|
|
add hl, de
|
|
ld de, wBallXVelocity
|
|
ld a, BANK(Data_e4000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_e4000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
push bc
|
|
ld a, BANK(Data_e4000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_e4000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
bit 7, b
|
|
jr z, .asm_193ea
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_193ea
|
|
pop hl
|
|
bit 7, h
|
|
jr z, .asm_193f6
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc hl
|
|
.asm_193f6
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
ld a, h
|
|
cp $2
|
|
jr c, .asm_19410
|
|
ld a, [wd804]
|
|
and a
|
|
jr nz, .asm_19410
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
.asm_19410
|
|
scf
|
|
ret
|
|
|
|
Func_19412: ; 0x19312
|
|
and a
|
|
ret
|
|
|
|
Func_19414: ; 0x19414
|
|
ld a, [wTriggeredGameObject]
|
|
inc a
|
|
jr nz, .asm_1944f
|
|
ld a, [wd6aa]
|
|
bit 7, a
|
|
jr nz, .asm_1944f
|
|
ld a, [wd7e9]
|
|
and a
|
|
ret z
|
|
ld a, [wCurCollisionAttribute]
|
|
sub $10
|
|
ret c
|
|
cp $c
|
|
ret nc
|
|
ld a, $1
|
|
ld [wTriggeredGameObjectIndex], a
|
|
add $6
|
|
ld [wTriggeredGameObject], a
|
|
ld b, a
|
|
ld hl, wd6aa
|
|
ld [hl], $0
|
|
ld a, [wPreviousTriggeredGameObject]
|
|
cp b
|
|
jr z, .asm_1944f
|
|
ld a, [wTriggeredGameObjectIndex]
|
|
ld [hli], a
|
|
ld a, [wTriggeredGameObject]
|
|
ld [hl], a
|
|
scf
|
|
ret
|
|
|
|
.asm_1944f
|
|
and a
|
|
ret
|
|
|
|
Func_19451: ; 0x19451
|
|
call Func_19531
|
|
call Func_19701
|
|
call Func_1948b
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $1
|
|
ld [wd7be], a
|
|
call Func_2862
|
|
callba Func_86d2
|
|
ld a, [wd6b1]
|
|
cp $8
|
|
ret nc
|
|
ld a, $1
|
|
ld [wd6b3], a
|
|
ret
|
|
|
|
Func_1948b: ; 0x1948b
|
|
ld a, [wd6a9]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4b4]
|
|
cp $8a
|
|
ret nc
|
|
ld a, $1
|
|
ld [wStageCollisionState], a
|
|
ld [wd6a9], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_194ac
|
|
ret
|
|
|
|
Func_194ac: ; 0x194ac
|
|
ld a, [wStageCollisionState]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_194c9
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_194bf
|
|
ld hl, Data_194fd
|
|
.asm_194bf
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(Data_194c9)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Data_194c9:
|
|
dw Data_194cd
|
|
dw Data_194d0
|
|
|
|
Data_194cd: ; 0x194cd
|
|
db 1
|
|
dw Data_194d3
|
|
|
|
Data_194d0: ; 0x194d0
|
|
db 1
|
|
dw Data_194e8
|
|
|
|
Data_194d3: ; 0x194d3
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles to load
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $45
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $80
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $80, $09
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $12
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_194e8: ; 0x194e8
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles to load
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $46
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $47
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $48, $49
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $4A
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_194fd:
|
|
dw Data_19501
|
|
dw Data_19504
|
|
|
|
Data_19501: ; 0x19501
|
|
db 1
|
|
dw Data_19507
|
|
|
|
Data_19504: ; 0x19504
|
|
db 1
|
|
dw Data_1951c
|
|
|
|
Data_19507: ; 0x19507
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles to load
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $45
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $80
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $80, $09
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $12
|
|
|
|
db $00 ; terminator
|
|
|
|
Data_1951c: ; 0x1951c
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles to load
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $46
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $47
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $48, $49
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $4A
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_19531: ; 0x19531
|
|
ld a, [wd6aa]
|
|
and a
|
|
jr z, .asm_195a2
|
|
xor a
|
|
ld [wd6aa], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jr nz, .asm_195a2
|
|
ld a, [wd6af]
|
|
cp $2
|
|
jr nc, .asm_195a2
|
|
ld bc, FiveMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld a, [wd6b0]
|
|
inc a
|
|
cp $3
|
|
jr nz, .asm_19565
|
|
ld a, [wd6b1]
|
|
inc a
|
|
ld [wd6b1], a
|
|
xor a
|
|
.asm_19565
|
|
ld [wd6b0], a
|
|
call ResetOrbitingBalls
|
|
ld a, [wd6b1]
|
|
cp $8
|
|
jr z, .asm_19582
|
|
ld a, $2
|
|
ld de, wd6ae
|
|
call Func_19679
|
|
lb de, $00, $39
|
|
call PlaySoundEffect
|
|
jr .asm_195a2
|
|
|
|
.asm_19582
|
|
ld a, $3
|
|
ld de, wd6ae
|
|
call Func_19679
|
|
ld a, $1
|
|
ld [wd7be], a
|
|
call Func_2862
|
|
callba Func_86d2
|
|
ld de, $0000
|
|
call PlaySong
|
|
.asm_195a2
|
|
call Func_195ac
|
|
ld de, wd6af
|
|
call Func_195f5
|
|
ret
|
|
|
|
Func_195ac: ; 0x195ac
|
|
ld a, [wd6af]
|
|
and a
|
|
ret nz
|
|
ld hl, wd6bd
|
|
ld de, $0008
|
|
ld b, $6
|
|
.asm_195b9
|
|
ld a, [hl]
|
|
cp $2b
|
|
jr nz, .asm_195ce
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
ld a, [hl]
|
|
cp $2
|
|
ret nz
|
|
ld a, $1
|
|
ld de, wd6ae
|
|
call Func_19679
|
|
ret
|
|
|
|
.asm_195ce
|
|
add hl, de
|
|
dec b
|
|
jr nz, .asm_195b9
|
|
ret
|
|
|
|
Func_195d3: ; 0x195d3
|
|
ld hl, wd6bd
|
|
ld de, $0008
|
|
ld b, $6
|
|
.asm_195db
|
|
ld a, [hl]
|
|
cp $18
|
|
jr nz, .asm_195f0
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
ld a, [hl]
|
|
cp $2
|
|
ret nz
|
|
ld d, h
|
|
ld e, l
|
|
dec de
|
|
ld a, $1
|
|
call Func_19876
|
|
ret
|
|
|
|
.asm_195f0
|
|
add hl, de
|
|
dec b
|
|
jr nz, .asm_195db
|
|
ret
|
|
|
|
Func_195f5: ; 0x195f5
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_19691
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ret nc
|
|
ld a, [de]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_1960d: ; 0x1960d
|
|
dw Func_19615
|
|
dw Func_1961e
|
|
dw Func_1962f
|
|
dw Func_19638
|
|
|
|
Func_19615: ; 0x19615
|
|
dec de
|
|
ld a, [de]
|
|
cp $4
|
|
ret nz
|
|
xor a
|
|
jp Func_19679
|
|
|
|
Func_1961e: ; 0x1961e
|
|
dec de
|
|
ld a, [de]
|
|
cp $c
|
|
jr nz, .asm_19628
|
|
call Func_195d3
|
|
ret
|
|
|
|
.asm_19628
|
|
cp $d
|
|
ret nz
|
|
xor a
|
|
jp Func_19679
|
|
|
|
Func_1962f: ; 0x1962f
|
|
dec de
|
|
ld a, [de]
|
|
cp $1
|
|
ret nz
|
|
xor a
|
|
jp Func_19679
|
|
|
|
Func_19638: ; 0x19638
|
|
dec de
|
|
ld a, [de]
|
|
cp $1
|
|
jr nz, .asm_19645
|
|
lb de, $00, $40
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_19645
|
|
cp $20
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd6b3], a
|
|
ld a, [wd499]
|
|
ld [wd498], a
|
|
ld a, [wNumMewtwoBonusCompletions]
|
|
cp $2 ; only counts up to 2. Gets reset to 0 when Mew is encountered in Catch 'Em Mode.
|
|
jr z, .asm_1965e
|
|
inc a
|
|
ld [wNumMewtwoBonusCompletions], a
|
|
.asm_1965e
|
|
ld a, $1
|
|
ld [wd49a], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
.asm_1966b
|
|
ld de, MewtwoStageClearedText
|
|
call LoadTextHeader
|
|
lb de, $4b, $2a
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_19679: ; 0x19679
|
|
push af
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_19691
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
pop af
|
|
ld [de], a
|
|
ret
|
|
|
|
Data_19691:
|
|
dw Data_19699
|
|
dw Data_196a2
|
|
dw Data_196bd
|
|
dw Data_196c0
|
|
|
|
Data_19699: ; 0x19699
|
|
db $30, $00, $04, $05, $34, $04, $03, $05
|
|
db $00 ; terminator
|
|
|
|
Data_196a2: ; 0x196a2
|
|
db $0A, $00, $06, $01, $05, $02, $05, $01, $04, $02, $04, $01, $04, $02, $03, $01
|
|
db $03, $02, $03, $01, $03, $02, $04, $00, $40, $03
|
|
db $00 ; terminator
|
|
|
|
Data_196bd: ; 0x196bd
|
|
db $10, $06
|
|
db $00 ; terminator
|
|
|
|
Data_196c0: ; 0x196c0
|
|
db $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07
|
|
db $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07
|
|
db $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07
|
|
db $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07
|
|
db $00 ; terminator
|
|
|
|
Func_19701: ; 0x19701
|
|
ld a, [wd6b4]
|
|
and a
|
|
jr z, .asm_19742
|
|
xor a
|
|
ld [wd6b4], a
|
|
ld a, [wd7be]
|
|
and a
|
|
jr nz, .asm_19742
|
|
ld a, [wd6b5]
|
|
sub $1
|
|
sla a
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd6ba
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, [de]
|
|
and a
|
|
jr nz, .asm_19742
|
|
dec de
|
|
ld a, $2
|
|
call Func_19876
|
|
ld bc, OneHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
lb de, $00, $38
|
|
call PlaySoundEffect
|
|
.asm_19742
|
|
ld de, wd6bd
|
|
call SetOrbitingBallCoordinates
|
|
ld de, wd6c5
|
|
call SetOrbitingBallCoordinates
|
|
ld de, wd6cd
|
|
call SetOrbitingBallCoordinates
|
|
ld de, wd6d5
|
|
call SetOrbitingBallCoordinates
|
|
ld de, wd6dd
|
|
call SetOrbitingBallCoordinates
|
|
ld de, wd6e5
|
|
call SetOrbitingBallCoordinates
|
|
ld de, wd6b6
|
|
call UpdateOrbitingBallAnimation
|
|
ld de, wd6be
|
|
call UpdateOrbitingBallAnimation
|
|
ld de, wd6c6
|
|
call UpdateOrbitingBallAnimation
|
|
ld de, wd6ce
|
|
call UpdateOrbitingBallAnimation
|
|
ld de, wd6d6
|
|
call UpdateOrbitingBallAnimation
|
|
ld de, wd6de
|
|
call UpdateOrbitingBallAnimation
|
|
ret
|
|
|
|
SetOrbitingBallCoordinates: ; 0x1978b
|
|
; Sets the x, y coordinates for one of the balls orbiting around Mewtwo
|
|
ld a, [de]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
inc a
|
|
cp $48 ; num entries in MewtwoOrbitingBallsCoords
|
|
jr c, .looadCoords
|
|
xor a
|
|
.looadCoords
|
|
ld [de], a
|
|
ld hl, MewtwoOrbitingBallsCoords + 1
|
|
add hl, bc
|
|
dec de
|
|
ld a, [hld]
|
|
ld [de], a
|
|
dec de
|
|
ld a, [hl]
|
|
ld [de], a
|
|
ret
|
|
|
|
MewtwoOrbitingBallsCoords:
|
|
; x, y coordinates for balls that orbit around Mewtwo.
|
|
db $62, $08
|
|
db $62, $0A
|
|
db $62, $0D
|
|
db $61, $0F
|
|
db $60, $11
|
|
db $60, $13
|
|
db $5F, $15
|
|
db $5D, $17
|
|
db $5C, $19
|
|
db $5A, $1A
|
|
db $59, $1C
|
|
db $57, $1D
|
|
db $55, $1F
|
|
db $53, $20
|
|
db $51, $20
|
|
db $4F, $21
|
|
db $4D, $22
|
|
db $4A, $22
|
|
db $48, $22
|
|
db $46, $22
|
|
db $43, $22
|
|
db $41, $21
|
|
db $3F, $20
|
|
db $3D, $20
|
|
db $3B, $1F
|
|
db $39, $1D
|
|
db $37, $1C
|
|
db $36, $1A
|
|
db $34, $19
|
|
db $33, $17
|
|
db $31, $15
|
|
db $30, $13
|
|
db $30, $11
|
|
db $2F, $0F
|
|
db $2E, $0D
|
|
db $2E, $0A
|
|
db $2E, $08
|
|
db $2E, $06
|
|
db $2E, $03
|
|
db $2F, $01
|
|
db $30, $FF
|
|
db $30, $FD
|
|
db $31, $FB
|
|
db $33, $F9
|
|
db $34, $F7
|
|
db $36, $F6
|
|
db $37, $F4
|
|
db $39, $F3
|
|
db $3B, $F1
|
|
db $3D, $F0
|
|
db $3F, $F0
|
|
db $41, $EF
|
|
db $43, $EE
|
|
db $46, $EE
|
|
db $48, $EE
|
|
db $4A, $EE
|
|
db $4D, $EE
|
|
db $4F, $EF
|
|
db $51, $F0
|
|
db $53, $F0
|
|
db $55, $F1
|
|
db $57, $F3
|
|
db $59, $F4
|
|
db $5A, $F6
|
|
db $5C, $F7
|
|
db $5D, $F9
|
|
db $5F, $FB
|
|
db $60, $FD
|
|
db $60, $FF
|
|
db $61, $01
|
|
db $62, $03
|
|
db $62, $06
|
|
|
|
UpdateOrbitingBallAnimation: ; 0x19833
|
|
; Updates the animation for one of the balls orbiting around Mewtwo.
|
|
ld a, [de]
|
|
and a
|
|
ret z
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, OrbitingBallAnimations
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ret nc
|
|
ld a, [de]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_19852: ; 0x19852
|
|
dw Func_1985a
|
|
dw Func_19863
|
|
dw Func_1986c
|
|
dw Func_1986d
|
|
|
|
Func_1985a: ; 0x1985a
|
|
dec de
|
|
ld a, [de]
|
|
cp $6
|
|
ret nz
|
|
xor a
|
|
jp Func_19876
|
|
|
|
Func_19863: ; 0x19863
|
|
dec de
|
|
ld a, [de]
|
|
cp $7
|
|
ret nz
|
|
xor a
|
|
jp Func_19876
|
|
|
|
Func_1986c: ; 0x1986c
|
|
ret
|
|
|
|
Func_1986d: ; 0x1986d
|
|
dec de
|
|
ld a, [de]
|
|
cp $1
|
|
ret nz
|
|
xor a
|
|
jp Func_19876
|
|
|
|
Func_19876: ; 0x19876
|
|
push af
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, OrbitingBallAnimations
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
pop af
|
|
ld [de], a
|
|
ret
|
|
|
|
ResetOrbitingBalls: ; 0x1988e
|
|
ld a, [wd6b1]
|
|
sla a
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, OrbitingBallsStartCoordsIndices
|
|
add hl, bc
|
|
ld de, wd6bd
|
|
ld b, $6
|
|
.asm_198a3
|
|
ld a, [hli]
|
|
push bc
|
|
push de
|
|
push hl
|
|
bit 7, a
|
|
jr nz, .asm_198b7
|
|
ld [de], a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, $3
|
|
call Func_19876
|
|
jr .asm_198c0
|
|
|
|
.asm_198b7
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
xor a
|
|
ld [de], a
|
|
.asm_198c0
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
ld a, e
|
|
add $8
|
|
ld e, a
|
|
jr nc, .asm_198ca
|
|
inc d
|
|
.asm_198ca
|
|
dec b
|
|
jr nz, .asm_198a3
|
|
ret
|
|
|
|
OrbitingBallsStartCoordsIndices:
|
|
; When Mewtwo is hit, the orbs briefly disappear. When they reappear,
|
|
; this table determines which entry in the MewtwoOrbitingBallsCoords table
|
|
; each orb will start at.
|
|
; Last two bytes in each row are unused
|
|
db $00, $0C, $18, $24, $30, $3C, $FF, $FF ; All 6 orbs are up
|
|
db $00, $0E, $1D, $2B, $3A, $FF, $FF, $FF ; 5 orbs are up
|
|
db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 4 orbs
|
|
db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 3 orbs
|
|
db $00, $18, $30, $FF, $FF, $FF, $FF, $FF ; 2 orbs
|
|
db $00, $24, $FF, $FF, $FF, $FF, $FF, $FF ; 1 orb
|
|
db $00, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; 0 orbs
|
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
|
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
|
|
|
|
OrbitingBallAnimations:
|
|
dw OrbitingBallAnimation1
|
|
dw OrbitingBallAnimation2
|
|
dw OrbitingBallAnimation3
|
|
dw OrbitingBallAnimation4
|
|
|
|
OrbitingBallAnimation1: ; 0x1991e
|
|
; Each entry is [duration][OAM id]
|
|
db $0A, $00
|
|
db $08, $01
|
|
db $08, $02
|
|
db $0A, $03
|
|
db $08, $02
|
|
db $08, $01
|
|
db $00 ; terminator
|
|
|
|
OrbitingBallAnimation2: ; 0x1992b
|
|
; Each entry is [duration][OAM id]
|
|
db $05, $04
|
|
db $06, $05
|
|
db $06, $06
|
|
db $07, $07
|
|
db $07, $08
|
|
db $08, $09
|
|
db $08, $0A
|
|
db $00 ; terminator
|
|
|
|
OrbitingBallAnimation3: ; 0x1993a
|
|
; Each entry is [duration][OAM id]
|
|
db $05, $0A
|
|
db $05, $09
|
|
db $04, $08
|
|
db $04, $07
|
|
db $03, $06
|
|
db $03, $05
|
|
db $02, $04
|
|
db $80, $0B
|
|
db $00 ; terminator
|
|
|
|
OrbitingBallAnimation4: ; 0x1994b
|
|
; Each entry is [duration][OAM id]
|
|
db $0C, $0B
|
|
db $00 ; terminator
|
|
|
|
Func_1994e: ; 0x1994e
|
|
ld bc, $7f65
|
|
callba DrawTimer
|
|
call Func_1999d
|
|
callba DrawFlippers
|
|
callba DrawPinball
|
|
call Func_19976
|
|
ret
|
|
|
|
Func_19976: ; 0x19976
|
|
ld a, $40
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $0
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd6ad]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_19995
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_19995:
|
|
db $0F, $10, $11, $12, $17, $18, $19
|
|
db $FF
|
|
|
|
Func_1999d: ; 0x1999d
|
|
ld de, wd6b6
|
|
call Func_199be
|
|
ld de, wd6be
|
|
call Func_199be
|
|
ld de, wd6c6
|
|
call Func_199be
|
|
ld de, wd6ce
|
|
call Func_199be
|
|
ld de, wd6d6
|
|
call Func_199be
|
|
ld de, wd6de
|
|
; fall through
|
|
|
|
Func_199be: ; 0x199be
|
|
ld a, [de]
|
|
and a
|
|
ret z
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_199e6
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_199e6:
|
|
db $13, $14, $15, $16, $1A, $1B, $1C, $1D, $1E, $1F, $20
|
|
db $FF
|
|
|
|
InitDiglettBonusStage: ; 0x199f2
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld [wStageCollisionState], a
|
|
ld a, $1
|
|
ld [wd7ac], a
|
|
ld a, [wBallType]
|
|
ld [wBallTypeBackup], a
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld [wBallType], a
|
|
ld [wd49a], a
|
|
; initialize all digletts to hiding
|
|
ld a, $1 ; hiding diglett state
|
|
ld hl, wDiglettStates
|
|
ld b, NUM_DIGLETTS
|
|
.initDiglettsLoop
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .initDiglettsLoop
|
|
ld a, $1
|
|
ld [wDugtrioAnimationFrameCounter], a
|
|
ld a, $c
|
|
ld [wDugtrioAnimationFrame], a
|
|
xor a
|
|
ld [wDugtrioAnimationFrameIndex], a
|
|
ld [wDugrioState], a
|
|
ld a, $11
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
StartBallDiglettBonusStage: ; 0x19a38
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $a6
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $56
|
|
ld [wBallYPos + 1], a
|
|
ld a, $40
|
|
ld [wBallXVelocity], a
|
|
xor a
|
|
ld [wSCX], a
|
|
ld [wStageCollisionState], a
|
|
ld [wd73a], a
|
|
ld hl, wDiglettStates
|
|
ld b, NUM_DIGLETTS
|
|
.asm_19a60
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_19a67
|
|
ld a, $1 ; hiding diglett state
|
|
ld [hl], a
|
|
.asm_19a67
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_19a60
|
|
xor a
|
|
ld [wCurrentDiglett], a
|
|
ld [wDiglettsInitializedFlag], a
|
|
ld [wd765], a
|
|
ret
|
|
|
|
Func_19a76: ; 0x19a76
|
|
callba Func_142fc
|
|
call Func_2862
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret z
|
|
call Func_19bbd
|
|
call Func_19a96
|
|
ld a, [wDugrioState]
|
|
and a
|
|
call nz, Func_1ac2c
|
|
ret
|
|
|
|
Func_19a96: ; 0x19a96
|
|
ld hl, wDiglettStates
|
|
ld bc, NUM_DIGLETTS << 8
|
|
.asm_19a9c
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_19aae
|
|
push bc
|
|
push hl
|
|
push af
|
|
call Func_19da8
|
|
pop af
|
|
cp $6
|
|
call c, Func_19dcd
|
|
pop hl
|
|
pop bc
|
|
.asm_19aae
|
|
inc c
|
|
dec b
|
|
jr nz, .asm_19a9c
|
|
ret
|
|
|
|
CheckDiglettBonusStageGameObjectCollisions: ; 0x19ab3
|
|
call CheckDiglettBonusStageDiglettHeadsCollision
|
|
call CheckDiglettBonusStageDugtrioCollision
|
|
ret
|
|
|
|
CheckDiglettBonusStageDiglettHeadsCollision: ; 0x19aba
|
|
ld a, [wTriggeredGameObject]
|
|
inc a
|
|
jr nz, .asm_19b16
|
|
ld a, [wd73b]
|
|
bit 7, a
|
|
jr nz, .asm_19b16
|
|
ld a, [wd7e9]
|
|
and a
|
|
ret z ; is a collision happening?
|
|
ld a, [wCurCollisionAttribute]
|
|
sub $19
|
|
ret c ; is the pinball colliding with a Diglett head?
|
|
cp $33
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_19b18
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $a
|
|
jr nc, .asm_19aed
|
|
ld a, [wBallXPos + 1]
|
|
cp $48
|
|
ld a, $11
|
|
jr nc, .asm_19af7
|
|
xor a
|
|
jr .asm_19af7
|
|
|
|
.asm_19aed
|
|
ld a, [wBallXPos + 1]
|
|
cp $68
|
|
ld a, $11
|
|
jr nc, .asm_19af7
|
|
xor a
|
|
.asm_19af7
|
|
add [hl]
|
|
ld [wTriggeredGameObjectIndex], a
|
|
add $0
|
|
ld [wTriggeredGameObject], a
|
|
ld b, a
|
|
ld hl, wd73b
|
|
ld [hl], $0
|
|
ld a, [wPreviousTriggeredGameObject]
|
|
cp b
|
|
jr z, .asm_19b16
|
|
ld a, [wTriggeredGameObjectIndex]
|
|
ld [hli], a
|
|
ld a, [wTriggeredGameObject]
|
|
ld [hl], a
|
|
scf
|
|
ret
|
|
|
|
.asm_19b16
|
|
and a
|
|
ret
|
|
|
|
Data_19b18:
|
|
db $01, $01, $01
|
|
db $02, $02, $02
|
|
db $03, $03, $03
|
|
db $04, $04, $04
|
|
db $05, $05, $05
|
|
db $06, $06, $06
|
|
db $07, $07, $07
|
|
db $08, $08, $08
|
|
db $09, $09, $09
|
|
db $0A, $0A, $0A
|
|
db $0B, $0B, $0B
|
|
db $0C, $0C, $0C
|
|
db $0D, $0D, $0D
|
|
db $0E, $0E, $0E
|
|
db $0F, $0F, $0F
|
|
db $10, $10, $10
|
|
db $11, $11, $11
|
|
|
|
CheckDiglettBonusStageDugtrioCollision: ; 0x19b4b
|
|
ld a, [wTriggeredGameObject]
|
|
inc a
|
|
jr nz, .asm_19b86
|
|
ld a, [wd75f]
|
|
bit 7, a
|
|
jr nz, .asm_19b86
|
|
ld a, [wd7e9]
|
|
and a
|
|
ret z
|
|
ld a, [wCurCollisionAttribute]
|
|
sub $14
|
|
ret c
|
|
cp $5
|
|
ret nc
|
|
ld a, $1
|
|
ld [wTriggeredGameObjectIndex], a
|
|
add $1f
|
|
ld [wTriggeredGameObject], a
|
|
ld b, a
|
|
ld hl, wd75f
|
|
ld [hl], $0
|
|
ld a, [wPreviousTriggeredGameObject]
|
|
cp b
|
|
jr z, .asm_19b86
|
|
ld a, [wTriggeredGameObjectIndex]
|
|
ld [hli], a
|
|
ld a, [wTriggeredGameObject]
|
|
ld [hl], a
|
|
scf
|
|
ret
|
|
|
|
.asm_19b86
|
|
and a
|
|
ret
|
|
|
|
Func_19b88: ; 0x19b88
|
|
call Func_19c52
|
|
call Func_1aad4
|
|
call Func_19b92
|
|
ret
|
|
|
|
Func_19b92: ; 0x19b92
|
|
ld a, [wd73a]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4b4]
|
|
cp $8a
|
|
ret nc
|
|
ld a, $1
|
|
ld [wStageCollisionState], a
|
|
ld [wd73a], a
|
|
xor a
|
|
ld [wc853], a
|
|
ld [wc873], a
|
|
ld [wc893], a
|
|
ld a, $5
|
|
ld [wc872], a
|
|
ld a, $7
|
|
ld [wc892], a
|
|
call Func_19bbd
|
|
ret
|
|
|
|
Func_19bbd: ; 0x19bbd
|
|
ld a, [wStageCollisionState]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_19bda
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_19bd0
|
|
ld hl, Data_19c16
|
|
.asm_19bd0
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(Data_19bda)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Data_19bda:
|
|
dw Data_19bde
|
|
dw Data_19be1
|
|
|
|
Data_19bde: ; 0x19bde
|
|
dbw $1, TileListData_19be4
|
|
|
|
Data_19be1: ; 0x19be1
|
|
dbw $1, TileListData_19bfd
|
|
|
|
TileListData_19be4: ; 0x19be4
|
|
dw LoadTileLists
|
|
db $09
|
|
db $02
|
|
dw vBGMap + $113
|
|
db $4E, $4F
|
|
db $02
|
|
dw vBGMap + $133
|
|
db $80, $4D
|
|
db $03
|
|
dw vBGMap + $152
|
|
db $80, $4B, $4C
|
|
db $02
|
|
dw vBGMap + $172
|
|
db $49, $4A
|
|
db $00 ; terminator
|
|
|
|
TileListData_19bfd: ; 0x19bfd
|
|
dw LoadTileLists
|
|
db $09
|
|
db $02
|
|
dw vBGMap + $113
|
|
db $1D, $FB
|
|
db $02
|
|
dw vBGMap + $133
|
|
db $1B, $FA
|
|
db $03
|
|
dw vBGMap + $152
|
|
db $18, $19, $FB
|
|
db $02
|
|
dw vBGMap + $172
|
|
db $14, $15
|
|
db $00 ; terminator
|
|
|
|
Data_19c16:
|
|
dw Data_19c1a
|
|
dw Data_19c1d
|
|
|
|
Data_19c1a: ; 0x19c1a
|
|
dbw $1, Data_19c20
|
|
|
|
Data_19c1d: ; 0x19c1d
|
|
dbw $1, Data_19c39
|
|
|
|
Data_19c20: ; 0x19c20
|
|
dw LoadTileLists
|
|
db $09
|
|
db $02
|
|
dw vBGMap + $113
|
|
db $4E, $4F
|
|
db $02
|
|
dw vBGMap + $133
|
|
db $80, $4D
|
|
db $03
|
|
dw vBGMap + $152
|
|
db $80, $4B, $4C
|
|
db $02
|
|
dw vBGMap + $172
|
|
db $49, $4A
|
|
db $00 ; terminator
|
|
|
|
Data_19c39: ; 0x19c39
|
|
dw LoadTileLists
|
|
db $09
|
|
db $02
|
|
dw vBGMap + $113
|
|
db $1D, $FB
|
|
db $02
|
|
dw vBGMap + $133
|
|
db $1B, $FA
|
|
db $03
|
|
dw vBGMap + $152
|
|
db $18, $19, $FB
|
|
db $02
|
|
dw vBGMap + $172
|
|
db $14, $15
|
|
db $00 ; terminator
|
|
|
|
Func_19c52: ; 0x19c52
|
|
ld a, [wd73b]
|
|
and a
|
|
jr z, .asm_19cc8
|
|
xor a
|
|
ld [wd73b], a
|
|
ld bc, OneHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
lb de, $00, $35
|
|
call PlaySoundEffect
|
|
ld hl, $0100
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
ld a, [wd73c]
|
|
sub $1
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wDiglettStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $6
|
|
jr nc, .asm_19cc8
|
|
ld a, $8
|
|
ld [hl], a
|
|
call Func_19da8
|
|
call Func_19df0
|
|
ld hl, wDiglettStates
|
|
ld bc, NUM_DIGLETTS << 8
|
|
xor a
|
|
.asm_19ca0
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_19ca8
|
|
cp $6
|
|
jr c, .asm_19ca9
|
|
.asm_19ca8
|
|
inc c
|
|
.asm_19ca9
|
|
dec b
|
|
jr nz, .asm_19ca0
|
|
ld a, c
|
|
cp NUM_DIGLETTS
|
|
jr nz, .asm_19cc8
|
|
ld hl, AnimationData_1ac75
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $1
|
|
ld [wDugrioState], a
|
|
call Func_1ac2c
|
|
ld de, $0002
|
|
call PlaySong
|
|
.asm_19cc8
|
|
call Func_19cdd
|
|
ld a, [wd765]
|
|
and a
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd765], a
|
|
ld a, [wDugrioState]
|
|
and a
|
|
call nz, Func_1ac2c
|
|
ret
|
|
|
|
Func_19cdd: ; 0x19cdd
|
|
ld a, [wDiglettsInitializedFlag]
|
|
and a
|
|
jr nz, .alreadyInitializedDigletts
|
|
ld a, [wDiglettInitDelayCounter]
|
|
add DIGLETT_INITIALIZE_DELAY
|
|
ld [wDiglettInitDelayCounter], a
|
|
ret nc
|
|
ld hl, DiglettInitializeOrder
|
|
ld a, [wCurrentDiglett]
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc
|
|
ld b, $1
|
|
.asm_19cf8
|
|
push bc
|
|
ld a, [hli]
|
|
bit 7, a
|
|
jr z, .asm_19d02
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [hli]
|
|
.asm_19d02
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wDiglettStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_19d29
|
|
dec a
|
|
jr nz, .asm_19d21
|
|
; pick a random starting state for the diglett that isn't the "hiding" state
|
|
call GenRandom
|
|
and $3
|
|
add $2
|
|
ld [hl], a
|
|
call Func_19da8
|
|
call Func_19dcd
|
|
jr .asm_19d29
|
|
|
|
.asm_19d21
|
|
and $3
|
|
add $2
|
|
ld [hl], a
|
|
call Func_19da8
|
|
.asm_19d29
|
|
pop hl
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_19cf8
|
|
ld hl, wDiglettsInitializedFlag
|
|
ld a, [wCurrentDiglett]
|
|
add $1
|
|
cp NUM_DIGLETTS
|
|
jr c, .notDoneInitializingDigletts
|
|
set 0, [hl]
|
|
sub NUM_DIGLETTS
|
|
.notDoneInitializingDigletts
|
|
ld [wCurrentDiglett], a
|
|
ret
|
|
|
|
.alreadyInitializedDigletts
|
|
ld hl, DiglettUpdateOrder
|
|
ld a, [wCurrentDiglett]
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc
|
|
ld b, $4 ; update 4 digletts
|
|
.updateDiglettLoop
|
|
push bc
|
|
ld a, [hli]
|
|
bit 7, a
|
|
jr z, .asm_19d58
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [hli]
|
|
.asm_19d58
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wDiglettStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_19d8f
|
|
dec a
|
|
jr nz, .asm_19d77
|
|
call GenRandom
|
|
and $3
|
|
add $2
|
|
ld [hl], a
|
|
call Func_19da8
|
|
call Func_19dcd
|
|
jr .asm_19d8f
|
|
|
|
.asm_19d77
|
|
cp $5
|
|
jr c, .incrementDiglettState
|
|
ld [hl], a
|
|
jr nz, .asm_19d8f
|
|
xor a
|
|
ld [hl], a
|
|
ld a, $1
|
|
call Func_19da8
|
|
jr .asm_19d8f
|
|
|
|
.incrementDiglettState
|
|
and $3
|
|
add $2
|
|
ld [hl], a
|
|
call Func_19da8
|
|
.asm_19d8f
|
|
pop hl
|
|
pop bc
|
|
dec b
|
|
jr nz, .updateDiglettLoop
|
|
ld hl, wDiglettsInitializedFlag
|
|
ld a, [wCurrentDiglett]
|
|
add $4
|
|
cp NUM_DIGLETTS
|
|
jr c, .asm_19da4
|
|
set 0, [hl]
|
|
sub NUM_DIGLETTS
|
|
.asm_19da4
|
|
ld [wCurrentDiglett], a
|
|
ret
|
|
|
|
Func_19da8: ; 0x19da8
|
|
; input: a = diglett state
|
|
; c = diglett index
|
|
cp $6
|
|
jr c, .asm_19dae
|
|
ld a, $6 ; "getting hit" state
|
|
.asm_19dae
|
|
push bc
|
|
ld b, a
|
|
sla c
|
|
ld a, c
|
|
sla c
|
|
add c
|
|
add b ; a = (index * 6) + state
|
|
dec a
|
|
ld c, a
|
|
ld b, $0 ; bc = (index * 6) + state - 1
|
|
sla c
|
|
rl b ; bc = 2 * ((index * 6) + state - 1)
|
|
ld hl, DiglettTileDataPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(DiglettTileDataPointers)
|
|
call Func_10aa
|
|
pop bc
|
|
ret
|
|
|
|
Func_19dcd: ; 0x19dcd
|
|
sla c
|
|
ld a, c
|
|
sla c
|
|
add c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_19e13
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
ld a, e
|
|
add $1f
|
|
ld e, a
|
|
jr nc, .asm_19dea
|
|
inc d
|
|
.asm_19dea
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
ret
|
|
|
|
Func_19df0: ; 0x19df0
|
|
sla c
|
|
ld a, c
|
|
sla c
|
|
add c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_19e13
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, $2
|
|
ld [de], a
|
|
inc de
|
|
ld [de], a
|
|
ld a, e
|
|
add $1f
|
|
ld e, a
|
|
jr nc, .asm_19e0d
|
|
inc d
|
|
.asm_19e0d
|
|
ld a, $2
|
|
ld [de], a
|
|
inc de
|
|
ld [de], a
|
|
ret
|
|
|
|
Data_19e13:
|
|
dw wc7a1
|
|
db $19, $19, $1A, $1B
|
|
|
|
dw wc7e1
|
|
db $1C, $1C, $1D, $1E
|
|
|
|
dw wc821
|
|
db $1F, $1F, $20, $21
|
|
|
|
dw wc7c3
|
|
db $22, $22, $23, $24
|
|
|
|
dw wc803
|
|
db $25, $25, $26, $27
|
|
|
|
dw wc843
|
|
db $28, $28, $29, $2A
|
|
|
|
dw wc7a5
|
|
db $2B, $2B, $2C, $2D
|
|
|
|
dw wc7e5
|
|
db $2E, $2E, $2F, $30
|
|
|
|
dw wc825
|
|
db $31, $31, $32, $33
|
|
|
|
dw wc865
|
|
db $34, $34, $35, $36
|
|
|
|
dw wc7c7
|
|
db $37, $37, $38, $39
|
|
|
|
dw wc807
|
|
db $3A, $3A, $3B, $3C
|
|
|
|
dw wc847
|
|
db $3D, $3D, $3E, $3F
|
|
|
|
dw wc887
|
|
db $40, $40, $41, $42
|
|
|
|
dw wc7e9
|
|
db $43, $43, $44, $45
|
|
|
|
dw wc829
|
|
db $46, $46, $47, $48
|
|
|
|
dw wc869
|
|
db $49, $49, $4A, $4B
|
|
|
|
dw wc7cb
|
|
db $19, $19, $1A, $1B
|
|
|
|
dw wc80b
|
|
db $1C, $1C, $1D, $1E
|
|
|
|
dw wc84b
|
|
db $1F, $1F, $20, $21
|
|
|
|
dw wc88b
|
|
db $22, $22, $23, $24
|
|
|
|
dw wc7ad
|
|
db $25, $25, $26, $27
|
|
|
|
dw wc7ed
|
|
db $28, $28, $29, $2A
|
|
|
|
dw wc82d
|
|
db $2B, $2B, $2C, $2D
|
|
|
|
dw wc86d
|
|
db $2E, $2E, $2F, $30
|
|
|
|
dw wc7cf
|
|
db $31, $31, $32, $33
|
|
|
|
dw wc80f
|
|
db $34, $34, $35, $36
|
|
|
|
dw wc84f
|
|
db $37, $37, $38, $39
|
|
|
|
dw wc7b1
|
|
db $3A, $3A, $3B, $3C
|
|
|
|
dw wc7f1
|
|
db $3D, $3D, $3E, $3F
|
|
|
|
dw wc831
|
|
db $40, $40, $41, $42
|
|
|
|
; unused pointers?
|
|
dw DiglettInitializeOrder
|
|
dw DiglettUpdateOrder
|
|
|
|
INCLUDE "data/diglett_stage/diglett_stage_animation_data.asm"
|
|
|
|
Func_1aad4: ; 0x1aad4
|
|
ld a, [wd75f]
|
|
and a
|
|
jr z, .asm_1ab2c
|
|
xor a
|
|
ld [wd75f], a
|
|
ld a, [wDugrioState]
|
|
bit 0, a
|
|
jr z, .asm_1ab2c
|
|
cp $7
|
|
jr z, .asm_1ab2c
|
|
inc a
|
|
ld [wDugrioState], a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, AnimationDataPointers_1ac62
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld bc, FiveMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
lb de, $00, $36
|
|
call PlaySoundEffect
|
|
ld a, $33
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ld hl, $0200
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
.asm_1ab2c
|
|
call Func_1ab30
|
|
ret
|
|
|
|
Func_1ab30: ; 0x1ab30
|
|
ld a, [wDugrioState]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, AnimationDataPointers_1ac62
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call UpdateAnimation
|
|
ret nc
|
|
ld a, [wDugrioState]
|
|
and a
|
|
ret z
|
|
cp $1
|
|
jr nz, .asm_1ab64
|
|
ld a, [wDugtrioAnimationFrameIndex]
|
|
cp $3
|
|
ret nz
|
|
ld hl, AnimationData_1ac75
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $1
|
|
ld [wDugrioState], a
|
|
ret
|
|
|
|
.asm_1ab64
|
|
cp $2
|
|
jr nz, .asm_1ab7d
|
|
ld a, [wDugtrioAnimationFrameIndex]
|
|
cp $1
|
|
ret nz
|
|
ld hl, AnimationData_1ac7f
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $3
|
|
ld [wDugrioState], a
|
|
ret
|
|
|
|
.asm_1ab7d
|
|
cp $3
|
|
jr nz, .asm_1ab96
|
|
ld a, [wDugtrioAnimationFrameIndex]
|
|
cp $3
|
|
ret nz
|
|
ld hl, AnimationData_1ac7f
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $3
|
|
ld [wDugrioState], a
|
|
ret
|
|
|
|
.asm_1ab96
|
|
cp $4
|
|
jr nz, .asm_1abaf
|
|
ld a, [wDugtrioAnimationFrameIndex]
|
|
cp $1
|
|
ret nz
|
|
ld hl, AnimationData_1ac89
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $5
|
|
ld [wDugrioState], a
|
|
ret
|
|
|
|
.asm_1abaf
|
|
cp $5
|
|
jr nz, .asm_1abc8
|
|
ld a, [wDugtrioAnimationFrameIndex]
|
|
cp $3
|
|
ret nz
|
|
ld hl, AnimationData_1ac89
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $5
|
|
ld [wDugrioState], a
|
|
ret
|
|
|
|
.asm_1abc8
|
|
cp $6
|
|
jr nz, .asm_1abe1
|
|
ld a, [wDugtrioAnimationFrameIndex]
|
|
cp $1
|
|
ret nz
|
|
ld hl, AnimationData_1ac93
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $7
|
|
ld [wDugrioState], a
|
|
ret
|
|
|
|
.asm_1abe1
|
|
cp $7
|
|
ret nz
|
|
ld a, [wDugtrioAnimationFrameIndex]
|
|
cp $1
|
|
jr nz, .asm_1abf2
|
|
ld de, $0000
|
|
call PlaySong
|
|
ret
|
|
|
|
.asm_1abf2
|
|
cp $2
|
|
ret nz
|
|
ld hl, AnimationData_1ac72
|
|
ld de, wDugtrioAnimationFrameCounter
|
|
call CopyHLToDE
|
|
xor a
|
|
ld [wDugrioState], a
|
|
ld [wd498], a
|
|
ld a, $1
|
|
ld [wd49a], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, DiglettStageClearedText
|
|
call LoadTextHeader
|
|
lb de, $4b, $2a
|
|
call PlaySoundEffect
|
|
ld a, $1
|
|
ld [wd7be], a
|
|
call Func_2862
|
|
ld hl, Data_1ac56
|
|
jr asm_1ac2f
|
|
|
|
Func_1ac2c: ; 0x1ac2c
|
|
ld hl, Data_1ac4a
|
|
asm_1ac2f:
|
|
ld de, wc768
|
|
ld b, $3
|
|
.asm_1ac34
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
ld a, e
|
|
add $1d
|
|
ld e, a
|
|
jr nc, .asm_1ac46
|
|
inc d
|
|
.asm_1ac46
|
|
dec b
|
|
jr nz, .asm_1ac34
|
|
ret
|
|
|
|
Data_1ac4a:
|
|
db $00, $00, $00, $00
|
|
db $14, $14, $14, $14
|
|
db $15, $16, $17, $18
|
|
|
|
Data_1ac56:
|
|
db $50, $02, $02, $51
|
|
db $02, $02, $02, $02
|
|
db $02, $02, $02, $02
|
|
|
|
AnimationDataPointers_1ac62: ; 0x1ac62
|
|
dw AnimationData_1ac72
|
|
dw AnimationData_1ac75
|
|
dw AnimationData_1ac7c
|
|
dw AnimationData_1ac7f
|
|
dw AnimationData_1ac86
|
|
dw AnimationData_1ac89
|
|
dw AnimationData_1ac90
|
|
dw AnimationData_1ac93
|
|
|
|
AnimationData_1ac72: ; 0x1ac72
|
|
; Each entry is [duration][OAM id]
|
|
db $01, $0C
|
|
db $00 ; terminator
|
|
|
|
AnimationData_1ac75: ; 0x1ac75
|
|
; Each entry is [duration][OAM id]
|
|
db $0E, $00
|
|
db $0E, $01
|
|
db $0E, $02
|
|
db $00 ; terminator
|
|
|
|
AnimationData_1ac7c: ; 0x1ac7c
|
|
; Each entry is [duration][OAM id]
|
|
db $0D, $03
|
|
db $00 ; terminator
|
|
|
|
AnimationData_1ac7f: ; 0x1ac7f
|
|
; Each entry is [duration][OAM id]
|
|
db $0E, $04
|
|
db $0E, $05
|
|
db $0E, $06
|
|
db $00
|
|
|
|
AnimationData_1ac86: ; 0x1ac86
|
|
; Each entry is [duration][OAM id]
|
|
db $0D, $07
|
|
db $00 ; terminator
|
|
|
|
AnimationData_1ac89: ; 0x1ac89
|
|
; Each entry is [duration][OAM id]
|
|
db $0E, $08
|
|
db $0E, $09
|
|
db $0E, $0A
|
|
db $00
|
|
|
|
AnimationData_1ac90: ; 0x1ac90
|
|
; Each entry is [duration][OAM id]
|
|
db $0D, $0B
|
|
db $00 ; terminator
|
|
|
|
AnimationData_1ac93: ; 0x1ac93
|
|
; Each entry is [duration][OAM id]
|
|
db $01, $0D
|
|
db $40, $0D
|
|
db $00 ; terminator
|
|
|
|
Func_1ac98: ; 0x1ac98
|
|
callba DrawFlippers
|
|
callba DrawPinball
|
|
call Func_1acb0
|
|
ret
|
|
|
|
Func_1acb0: ; 0x1acb0
|
|
ld a, $40
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $0
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wDugtrioAnimationFrame]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_1accf
|
|
add hl, de
|
|
ld a, [hl]
|
|
bit 7, a
|
|
call z, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_1accf:
|
|
db $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53
|
|
db $FF
|
|
|
|
SECTION "bank7", ROMX, BANK[$7]
|
|
|
|
InitBlueField: ; 0x1c000
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld hl, wScore + $5
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hl], a
|
|
ld [wNumPartyMons], a
|
|
ld [wd49b], a
|
|
ld [wd4c9], a
|
|
ld [wBallType], a
|
|
ld [wd4c8], a
|
|
ld hl, wd624
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wd7ac], a
|
|
ld [wd7be], a
|
|
ld [wCurrentMap], a ; PALLET_TOWN
|
|
ld a, $1
|
|
ld [wd49d], a
|
|
ld [wd482], a
|
|
ld a, $2
|
|
ld [wRightAlleyCount], a
|
|
ld a, $3
|
|
ld [wd49e], a
|
|
ld [wd610], a
|
|
ld a, $2
|
|
ld [wd498], a
|
|
ld [wd499], a
|
|
ld a, $80
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, $82
|
|
ld [wIndicatorStates + 1], a
|
|
xor a
|
|
ld [wd648], a
|
|
ld [wd649], a
|
|
ld [wd64a], a
|
|
ld [wd643], a
|
|
ld [wd644], a
|
|
ld [wd645], a
|
|
ld [wd646], a
|
|
callba Start20SecondSaverTimer
|
|
callba Func_1d65f
|
|
ld a, $10
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
StartBallBlueField: ; 0x1c08d
|
|
ld a, [wd496]
|
|
and a
|
|
jp nz, StartBallAfterBonusStageBlueField
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $a7
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $98
|
|
ld [wBallYPos + 1], a
|
|
xor a
|
|
ld [wd549], a
|
|
ld [wd580], a
|
|
call Func_1c7c7
|
|
ld a, [wd4c9]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd4c9], a
|
|
xor a
|
|
ld [wd50b], a
|
|
ld [wd50c], a
|
|
ld [wd51d], a
|
|
ld [wd51e], a
|
|
ld [wd517], a
|
|
ld hl, wd50f
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wLeftMapMoveCounter], a
|
|
ld [wRightMapMoveCounter], a
|
|
ld hl, wd5f9
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wBallType], a
|
|
ld [wd611], a
|
|
ld [wd612], a
|
|
ld [wd628], a
|
|
ld [wd629], a
|
|
ld [wd62a], a
|
|
ld [wd62b], a
|
|
ld [wd62c], a
|
|
ld [wd63a], a
|
|
ld [wd63b], a
|
|
ld [wd63d], a
|
|
ld [wd63c], a
|
|
ld [wd62d], a
|
|
ld [wd62e], a
|
|
ld [wd613], a
|
|
inc a
|
|
ld [wd482], a
|
|
ld [wd4ef], a
|
|
ld [wd4f1], a
|
|
ld a, $3
|
|
ld [wd610], a
|
|
call Func_1d65f
|
|
ld a, $10
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
StartBallAfterBonusStageBlueField: ; 0x1c129
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $50
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $16
|
|
ld [wBallYPos + 1], a
|
|
xor a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wd496], a
|
|
ld [wSCX], a
|
|
ld [wd7be], a
|
|
ld a, [wBallTypeBackup]
|
|
ld [wBallType], a
|
|
ld a, $10
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
Func_1c165: ; 0x1c165
|
|
call asm_1e475
|
|
call Func_1cb43
|
|
call Func_1c3ee
|
|
call Func_1e8f6
|
|
callba Func_142fc
|
|
ld a, $1
|
|
ld [wd640], a
|
|
call Func_1f18a
|
|
callba Func_1404a
|
|
call Func_1c203
|
|
ret
|
|
|
|
Func_1c191: ; 0x1c191
|
|
call Func_1c1db
|
|
call Func_1c4b6
|
|
call Func_1c2cb
|
|
call Func_1e627
|
|
call Func_1c43c
|
|
call Func_1c305
|
|
call Func_1c3ee
|
|
callba Func_14746
|
|
callba Func_14707
|
|
call Func_1c235
|
|
call Func_1c21e
|
|
call Func_1e8f6
|
|
callba Func_142fc
|
|
callba Func_1404a
|
|
call Func_1c203
|
|
ret
|
|
|
|
Func_1c1db: ; 0x1c1db
|
|
ld a, [wd641]
|
|
cp $0
|
|
ret z
|
|
ld a, $1
|
|
ld [wd640], a
|
|
ld a, $0
|
|
ld [wd641], a
|
|
ld a, [wBlueStageForceFieldDirection]
|
|
cp $2 ; down direction
|
|
ret nz
|
|
ld a, $0
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld a, $1 ; right direction
|
|
ld [wd64a], a
|
|
xor a
|
|
ld [wd649], a
|
|
ld [wd648], a
|
|
ret
|
|
|
|
Func_1c203: ; 0x1c203
|
|
ld a, $ff
|
|
ld [wd4d7], a
|
|
ld [wd4db], a
|
|
ld a, [wd4b4]
|
|
ld [wd4c5], a
|
|
ld a, [wd4b6]
|
|
ld [wd4c6], a
|
|
ld a, [wBallRotation]
|
|
ld [wd4c7], a
|
|
ret
|
|
|
|
Func_1c21e: ; 0x1c21e
|
|
ld a, $ff
|
|
ld [wd60e], a
|
|
ld [wd60f], a
|
|
ld a, [wd60c]
|
|
call Func_1d5f2
|
|
ld a, [wd60d]
|
|
add $14
|
|
call Func_1d5f2
|
|
ret
|
|
|
|
Func_1c235: ; 0x1c235
|
|
ld a, [wLeftMapMoveDiglettAnimationCounter]
|
|
and a
|
|
jr z, .asm_1c249
|
|
ld a, $54
|
|
ld [wc7e3], a
|
|
ld a, $55
|
|
ld [wc803], a
|
|
ld a, $1
|
|
jr .asm_1c24a
|
|
|
|
.asm_1c249
|
|
xor a
|
|
.asm_1c24a
|
|
call Func_1de4b
|
|
ld a, [wLeftMapMoveCounter]
|
|
call Func_1de6f
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1c267
|
|
ld a, [wLeftMapMoveCounter]
|
|
cp $0
|
|
jr z, .asm_1c264
|
|
ld b, $7
|
|
add b
|
|
jr .asm_1c269
|
|
|
|
.asm_1c264
|
|
xor a
|
|
jr .asm_1c269
|
|
|
|
.asm_1c267
|
|
ld a, $8
|
|
.asm_1c269
|
|
call Func_1de6f
|
|
ld a, [wRightMapMoveDiglettFrame]
|
|
and a
|
|
jr z, .asm_1c295
|
|
ld a, $52
|
|
ld [wc7f0], a
|
|
ld a, $53
|
|
ld [wc810], a
|
|
ld a, [wd644]
|
|
and a
|
|
jr z, .asm_1c28a
|
|
ld a, [wd55a]
|
|
and a
|
|
jr nz, .asm_1c2bd
|
|
jr .asm_1c291
|
|
|
|
.asm_1c28a
|
|
ld a, [wRightMapMoveCounter]
|
|
add $3
|
|
jr .asm_1c297
|
|
|
|
.asm_1c291
|
|
ld a, $3
|
|
jr .asm_1c297
|
|
|
|
.asm_1c295
|
|
ld a, $2
|
|
.asm_1c297
|
|
call Func_1de4b
|
|
ld a, [wRightMapMoveCounter]
|
|
add $4
|
|
call Func_1de6f
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1c2b7
|
|
ld a, [wRightMapMoveCounter]
|
|
cp $0
|
|
jr z, .asm_1c2b3
|
|
ld b, $a
|
|
add b
|
|
jr .asm_1c2b9
|
|
|
|
.asm_1c2b3
|
|
ld a, $4
|
|
jr .asm_1c2b9
|
|
|
|
.asm_1c2b7
|
|
ld a, $9
|
|
.asm_1c2b9
|
|
call Func_1de6f
|
|
ret
|
|
|
|
.asm_1c2bd
|
|
ld a, $6
|
|
call Func_1de4b
|
|
ld a, [wRightMapMoveCounter]
|
|
add $4
|
|
call Func_1de6f
|
|
ret
|
|
|
|
Func_1c2cb: ; 0x1c2cb
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld bc, $0000
|
|
.asm_1c2d4
|
|
push bc
|
|
ld hl, wIndicatorStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
res 7, a
|
|
call Func_1eb41
|
|
pop bc
|
|
inc c
|
|
ld a, c
|
|
cp $2
|
|
jr nz, .asm_1c2d4
|
|
ld bc, $0002
|
|
.asm_1c2e9
|
|
push bc
|
|
ld hl, wIndicatorStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
push af
|
|
ld hl, wd648
|
|
add hl, bc
|
|
dec hl
|
|
dec hl
|
|
ld a, [hl]
|
|
ld d, a
|
|
pop af
|
|
add d
|
|
call Func_1eb41
|
|
pop bc
|
|
inc c
|
|
ld a, c
|
|
cp $5
|
|
jr nz, .asm_1c2e9
|
|
ret
|
|
|
|
Func_1c305: ; 0x1c305
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, [wSpecialMode]
|
|
cp $2
|
|
ret z
|
|
ld a, [wd5c6]
|
|
and a
|
|
jr nz, .asm_1c31f
|
|
ld a, [wCapturingMon]
|
|
and a
|
|
jr nz, .asm_1c31f
|
|
jp Func_1c3ca
|
|
|
|
.asm_1c31f
|
|
callba Func_1c3ac
|
|
callba Func_10362
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_10301
|
|
ld a, [wCapturingMon]
|
|
and a
|
|
ret z
|
|
ld a, BANK(PikachuSaverGfx)
|
|
ld hl, PikachuSaverGfx + $c0
|
|
ld de, vTilesOB tile $7e
|
|
ld bc, $0020
|
|
call FarCopyData
|
|
ld a, BANK(StageSharedPikaBoltGfx)
|
|
ld hl, BallCaptureSmokeGfx
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $0180
|
|
call FarCopyData
|
|
ld a, [wBallType]
|
|
cp GREAT_BALL
|
|
jr nc, .notPokeball
|
|
ld a, Bank(PinballPokeballShakeGfx)
|
|
ld hl, PinballPokeballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
.notPokeball
|
|
cp ULTRA_BALL
|
|
jr nc, .notGreatball
|
|
ld a, Bank(PinballGreatballShakeGfx)
|
|
ld hl, PinballGreatballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
.notGreatball
|
|
cp MASTER_BALL
|
|
jr nc, .notUltraBall
|
|
ld a, Bank(PinballUltraballShakeGfx)
|
|
ld hl, PinballUltraballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
.notUltraBall
|
|
ld a, Bank(PinballMasterballShakeGfx)
|
|
ld hl, PinballMasterballShakeGfx
|
|
ld de, vTilesOB tile $38
|
|
ld bc, $0040
|
|
call FarCopyData
|
|
ret
|
|
|
|
Func_1c3ac: ; 0x1c3ac
|
|
ld a, $80
|
|
hlCoord 7, 4, vBGMap
|
|
call Func_1c3c3
|
|
hlCoord 7, 5, vBGMap
|
|
call Func_1c3c3
|
|
hlCoord 7, 6, vBGMap
|
|
call Func_1c3c3
|
|
hlCoord 7, 7, vBGMap
|
|
; fall through
|
|
|
|
Func_1c3c3: ; 0x1c3c3
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ret
|
|
|
|
Func_1c3ca: ; 0x1c3ca
|
|
ld hl, wd586
|
|
ld b, $18
|
|
.asm_1c3cf
|
|
ld a, [hli]
|
|
xor $1
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_1c3cf
|
|
callba Func_10184
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_102bc
|
|
ret
|
|
|
|
Func_1c3ee: ; 0x1c3ee
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret z
|
|
ld a, [wSpecialMode]
|
|
cp $1
|
|
ret nz
|
|
ld a, [wd554]
|
|
cp $3
|
|
ret z
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr nz, .asm_1c416
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesOB tile $60
|
|
ld bc, $00e0
|
|
call FarCopyData
|
|
jr .asm_1c424
|
|
|
|
.asm_1c416
|
|
ld a, BANK(EvolutionTrinketsGfx)
|
|
ld hl, EvolutionTrinketsGfx
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call FarCopyData
|
|
.asm_1c424
|
|
ld a, [wd551]
|
|
and a
|
|
ret z
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld a, BANK(PaletteData_dd188)
|
|
ld hl, PaletteData_dd188
|
|
ld de, $0070
|
|
ld bc, $0010
|
|
call Func_6fd
|
|
ret
|
|
|
|
Func_1c43c: ; 0x1c43c
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
jr z, .asm_1c458
|
|
ld a, [wSpecialMode]
|
|
and a
|
|
jr nz, .asm_1c450
|
|
ld a, [wNumMonHits]
|
|
and a
|
|
call nz, Func_1c46d
|
|
ret
|
|
|
|
.asm_1c450
|
|
cp $1
|
|
jr nz, .asm_1c458
|
|
call Func_1c47d
|
|
ret
|
|
|
|
.asm_1c458
|
|
ld a, [wd624]
|
|
call Func_1f265
|
|
ld a, BANK(CaughtPokeballGfx)
|
|
ld hl, CaughtPokeballGfx
|
|
ld de, vTilesSH tile $2e
|
|
ld bc, $0020
|
|
call FarCopyData
|
|
ret
|
|
|
|
Func_1c46d: ; 0x1c46d
|
|
push af
|
|
callba Func_10611
|
|
pop af
|
|
dec a
|
|
jr nz, Func_1c46d
|
|
ret
|
|
|
|
Func_1c47d: ; 0x1c47d
|
|
ld de, $0000
|
|
ld a, [wd554]
|
|
and a
|
|
ret z
|
|
ld b, a
|
|
.asm_1c486
|
|
ld a, [wCurrentEvolutionType]
|
|
call Func_1c491
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_1c486
|
|
ret
|
|
|
|
Func_1c491: ; 0x1c491
|
|
push bc
|
|
push de
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
swap c
|
|
sla c
|
|
ld hl, Data_d8e80
|
|
add hl, bc
|
|
swap e
|
|
sla e
|
|
push hl
|
|
ld hl, vTilesSH tile $2e
|
|
add hl, de
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
ld bc, $0020
|
|
ld a, BANK(Data_d8e80)
|
|
call FarCopyData
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
Func_1c4b6: ; 0x1c4b6
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
jr nz, .asm_1c4f0
|
|
ld a, [wd609]
|
|
and a
|
|
jr z, .asm_1c4d2
|
|
ld a, [wd498]
|
|
add $15
|
|
callba Func_30256
|
|
ret
|
|
|
|
.asm_1c4d2
|
|
ld a, [wd608]
|
|
and a
|
|
jr z, .asm_1c4e5
|
|
ld a, $1a
|
|
callba Func_30256
|
|
ret
|
|
|
|
.asm_1c4e5
|
|
callba Func_30253
|
|
ret
|
|
|
|
.asm_1c4f0
|
|
ld a, [wSpecialMode]
|
|
cp $2
|
|
ret nz
|
|
ld a, [wd54d]
|
|
cp $3
|
|
jr nz, .asm_1c508
|
|
callba Func_30253
|
|
ret
|
|
|
|
.asm_1c508
|
|
ld a, [wd604]
|
|
and a
|
|
ld a, $14
|
|
jr nz, .asm_1c515
|
|
ld a, [wd55a]
|
|
add $12
|
|
.asm_1c515
|
|
callba Func_30256
|
|
ret
|
|
|
|
INCLUDE "engine/collision/blue_stage_game_object_collision.asm"
|
|
|
|
Func_1c715: ; 0x1c715
|
|
call ResolveShellderCollision
|
|
call ResolveBlueStageSpinnerCollision
|
|
call ResolveBlueStagePinballUpgradeTriggersCollision
|
|
call HandleBlueStageBallTypeUpgradeCounter
|
|
call Func_1e66a
|
|
call ResolveBlueStageBoardTriggerCollision
|
|
call ResolveBlueStagePikachuCollision
|
|
call ResolveSlowpokeCollision
|
|
call ResolveCloysterCollision
|
|
call Func_1ea3b
|
|
call ResolvePsyduckPoliwagCollision
|
|
call ResolveBlueStageForceFieldCollision
|
|
call Func_1e9c0
|
|
call Func_1c8b6
|
|
call Func_1f18a
|
|
callba Func_146a9
|
|
call Func_1f27b
|
|
call Func_1df15
|
|
callba Func_30188
|
|
ld a, $0
|
|
callba Func_10000
|
|
ret
|
|
|
|
Func_1c769: ; 0x1c769
|
|
call Func_1ca4a
|
|
call Func_1ce40
|
|
call ResolvePsyduckPoliwagCollision
|
|
call Func_1ca85
|
|
call Func_1e4b8
|
|
call HandleBlueStageBallTypeUpgradeCounter
|
|
call Func_1e5c5
|
|
call Func_1c7d7
|
|
call ResolveBlueStagePikachuCollision
|
|
call Func_1ead4
|
|
call ResolveBlueStageBonusMultiplierCollision
|
|
call Func_1e757
|
|
call Func_1e9c0
|
|
call Func_1ea0a
|
|
call Func_1c8b6
|
|
callba Func_14733
|
|
callba Func_146a2
|
|
call Func_1f261
|
|
call Func_1de93
|
|
callba Func_30188
|
|
ld a, $0
|
|
callba Func_10000
|
|
ret
|
|
|
|
Func_1c7c7: ; 0x1c7c7
|
|
ld a, $0
|
|
ld [wStageCollisionState], a
|
|
callba LoadStageCollisionAttributes
|
|
ret
|
|
|
|
Func_1c7d7: ; 0x1c7d7
|
|
ld a, [wPinballLaunchAlley]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wPinballLaunchAlley], a
|
|
ld a, [wd4de]
|
|
and a
|
|
jr z, .asm_1c810
|
|
xor a
|
|
ld [wRightAlleyTrigger], a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld hl, wBallXVelocity
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ld a, $71
|
|
ld [wBallYVelocity], a
|
|
ld a, $fa
|
|
ld [wBallYVelocity + 1], a
|
|
ld a, $1
|
|
ld [wd549], a
|
|
lb de, $00, $0a
|
|
call PlaySoundEffect
|
|
.asm_1c810
|
|
ld a, $ff
|
|
ld [wPreviousTriggeredGameObject], a
|
|
ld a, [wd4de]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4e0]
|
|
and a
|
|
jr nz, .asm_1c82c
|
|
call Func_1c839
|
|
ld a, $1
|
|
ld [wd4e0], a
|
|
ld [wd4de], a
|
|
ret
|
|
|
|
.asm_1c82c
|
|
ld hl, wKeyConfigBallStart
|
|
call IsKeyPressed
|
|
ret z
|
|
ld a, $1
|
|
ld [wd4de], a
|
|
ret
|
|
|
|
Func_1c839: ; 0x1c839
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, LoadGreyBillboardPaletteData
|
|
.showNextMap
|
|
ld a, [wInitialMapSelectionIndex]
|
|
inc a
|
|
cp $7 ; number of maps to choose from at the start of play
|
|
jr c, .gotMapId
|
|
xor a ; wrap around to 0
|
|
.gotMapId
|
|
ld [wInitialMapSelectionIndex], a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BlueStageInitialMaps
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wCurrentMap], a
|
|
push af
|
|
lb de, $00, $48
|
|
call PlaySoundEffect
|
|
pop af
|
|
add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
|
|
callba LoadBillboardPicture
|
|
ld b, $20 ; number of frames to delay before the next map is shown
|
|
.waitOnCurrentMap
|
|
push bc
|
|
callba Func_eeee
|
|
ld hl, wKeyConfigBallStart
|
|
call IsKeyPressed
|
|
jr nz, .ballStartKeyPressed
|
|
pop bc
|
|
dec b
|
|
jr nz, .waitOnCurrentMap
|
|
jr .showNextMap
|
|
|
|
.ballStartKeyPressed
|
|
pop bc
|
|
callba Func_30253
|
|
ld bc, StartFromMapText
|
|
callba Func_3118f
|
|
ld a, [wCurrentMap]
|
|
ld [wd4e3], a
|
|
xor a
|
|
ld [wd4e2], a
|
|
ret
|
|
|
|
BlueStageInitialMaps: ; 0x1c8af
|
|
db VIRIDIAN_CITY
|
|
db VIRIDIAN_FOREST
|
|
db MT_MOON
|
|
db CERULEAN_CITY
|
|
db VERMILION_STREETS
|
|
db ROCK_MOUNTAIN
|
|
db CELADON_CITY
|
|
|
|
Func_1c8b6: ; 0x1c8b6
|
|
ld a, [wd64c]
|
|
inc a
|
|
cp $3c
|
|
jr z, .asm_1c8c2
|
|
ld [wd64c], a
|
|
ret
|
|
|
|
.asm_1c8c2
|
|
xor a
|
|
ld [wd64c], a
|
|
ld hl, wd64d
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $5
|
|
ret nz
|
|
ld a, [wd644]
|
|
and a
|
|
jr nz, .asm_1c8e1
|
|
ld a, [wd643]
|
|
and a
|
|
jr nz, .asm_1c8e5
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
jr nc, .asm_1c8e5
|
|
.asm_1c8e1
|
|
xor a
|
|
ld [wd64b], a
|
|
.asm_1c8e5
|
|
ld a, [wd644]
|
|
and a
|
|
jr nz, .asm_1c8f8
|
|
ld a, [wd643]
|
|
and a
|
|
jr nz, .asm_1c8fc
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
jr z, .asm_1c8fc
|
|
.asm_1c8f8
|
|
xor a
|
|
ld [wd64b], a
|
|
.asm_1c8fc
|
|
xor a
|
|
ld [wd64d], a
|
|
xor a
|
|
ld [wd64a], a
|
|
ld [wd649], a
|
|
ld [wd648], a
|
|
ld a, [wBlueStageForceFieldDirection]
|
|
cp $1 ; right direction
|
|
jr z, .asm_1c97f
|
|
cp $3 ; left direction
|
|
jr z, .asm_1c97f
|
|
.asm_1c915
|
|
ld a, [wd644]
|
|
cp $0
|
|
jr z, .asm_1c925
|
|
ld a, [wd55a]
|
|
cp $0
|
|
jr nz, .asm_1c933
|
|
jr .asm_1c947
|
|
|
|
.asm_1c925
|
|
ld a, [wd643]
|
|
cp $0
|
|
jr nz, .asm_1c933
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
jr c, .asm_1c947
|
|
.asm_1c933
|
|
ld a, [wd64b]
|
|
cp $1
|
|
jr z, .asm_1c947
|
|
ld a, $1 ; right direction
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld [wd64b], a
|
|
ld [wd640], a
|
|
jr .asm_1c99e
|
|
|
|
.asm_1c947
|
|
ld a, [wd644]
|
|
cp $0
|
|
jr z, .asm_1c955
|
|
ld a, [wd55a]
|
|
cp $0
|
|
jr z, .asm_1c969
|
|
.asm_1c955
|
|
ld a, [wd643]
|
|
cp $0
|
|
jr nz, .asm_1c969
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
jr nz, .asm_1c97f
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
jr nz, .asm_1c97f
|
|
.asm_1c969
|
|
ld a, [wd64b]
|
|
cp $3
|
|
jr z, .asm_1c915
|
|
ld a, $3 ; left direction
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld [wd64b], a
|
|
ld a, $1
|
|
ld [wd640], a
|
|
jr .asm_1c99e
|
|
|
|
.asm_1c97f
|
|
ld a, [wd641]
|
|
and a
|
|
jr nz, .asm_1c993
|
|
xor a
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld a, $1
|
|
ld [wd640], a
|
|
ld [wd64a], a
|
|
jr .asm_1c99e
|
|
|
|
.asm_1c993
|
|
ld a, $2 ; down direction
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld a, $1
|
|
ld [wd640], a
|
|
ret
|
|
|
|
.asm_1c99e
|
|
ld a, [wBlueStageForceFieldDirection]
|
|
cp $0 ; up direction
|
|
jr nz, .asm_1c9ac
|
|
ld a, $1
|
|
ld [wd64a], a
|
|
jr .asm_1c9c0
|
|
|
|
.asm_1c9ac
|
|
cp $1
|
|
jr nz, .asm_1c9b7
|
|
ld a, $1
|
|
ld [wd649], a
|
|
jr .asm_1c9c0
|
|
|
|
.asm_1c9b7
|
|
cp $3
|
|
jr nz, .asm_1c9c0
|
|
ld a, $1
|
|
ld [wd648], a
|
|
.asm_1c9c0
|
|
ret
|
|
|
|
ResolveShellderCollision: ; 0x1c9c1
|
|
ld a, [wWhichShellder]
|
|
and a
|
|
jr z, .noCollision
|
|
xor a
|
|
ld [wWhichShellder], a
|
|
call Func_1ca29
|
|
ld a, [wd641]
|
|
and a
|
|
jr nz, .asm_1c9f2
|
|
ld a, $1
|
|
ld [wd641], a
|
|
ld a, [wBlueStageForceFieldDirection]
|
|
cp $0 ; up direction
|
|
jr nz, .asm_1c9f2
|
|
ld a, $2 ; down direction
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld a, $1
|
|
ld [wd640], a
|
|
ld a, $3
|
|
ld [wd64c], a
|
|
ld [wd64d], a
|
|
.asm_1c9f2
|
|
ld a, $10
|
|
ld [wd4d6], a
|
|
ld a, [wWhichShellderId]
|
|
sub $3
|
|
ld [wd4d7], a
|
|
ld a, $4
|
|
callba Func_10000
|
|
ld bc, FiveHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ret
|
|
|
|
.noCollision
|
|
ld a, [wd4d6]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd4d6], a
|
|
ret nz
|
|
ld a, $ff
|
|
ld [wd4d7], a
|
|
ret
|
|
|
|
Func_1ca29: ; 0x1ca29
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $3
|
|
ld [wd804], a
|
|
ld hl, $0200
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
lb de, $00, $0e
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_1ca4a: ; 1ca4a
|
|
ld a, [wWildMonCollision]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wWildMonCollision], a
|
|
ld a, $1
|
|
ld [wBallHitWildMon], a
|
|
lb de, $00, $06
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
ResolveBlueStageSpinnerCollision: ; 0x1ca5f
|
|
ld a, [wSpinnerCollision]
|
|
and a
|
|
jr z, Func_1ca85
|
|
xor a
|
|
ld [wSpinnerCollision], a
|
|
ld a, [wBallYVelocity]
|
|
ld c, a
|
|
ld a, [wBallYVelocity + 1]
|
|
ld b, a
|
|
ld a, c
|
|
ld [wd50b], a
|
|
ld a, b
|
|
ld [wd50c], a
|
|
ld a, $c
|
|
callba Func_10000
|
|
; fall through
|
|
|
|
Func_1ca85: ; 0x1ca85
|
|
ld hl, wd50b
|
|
ld a, [hli]
|
|
or [hl]
|
|
ret z
|
|
ld a, [wd50b]
|
|
ld c, a
|
|
ld a, [wd50c]
|
|
ld b, a
|
|
bit 7, b
|
|
jr nz, .asm_1caa3
|
|
ld a, c
|
|
sub $7
|
|
ld c, a
|
|
ld a, b
|
|
sbc $0
|
|
ld b, a
|
|
jr nc, .asm_1cab0
|
|
jr .asm_1caad
|
|
|
|
.asm_1caa3
|
|
ld a, c
|
|
add $7
|
|
ld c, a
|
|
ld a, b
|
|
adc $0
|
|
ld b, a
|
|
jr nc, .asm_1cab0
|
|
.asm_1caad
|
|
ld bc, $0000
|
|
.asm_1cab0
|
|
ld a, c
|
|
ld [wd50b], a
|
|
ld a, b
|
|
ld [wd50c], a
|
|
ld hl, wd50b
|
|
ld a, [wd509]
|
|
add [hl]
|
|
ld [wd509], a
|
|
inc hl
|
|
ld a, [wd50a]
|
|
adc [hl]
|
|
bit 7, a
|
|
ld c, $0
|
|
jr z, .asm_1cad3
|
|
add $18
|
|
ld c, $1
|
|
jr .asm_1cadb
|
|
|
|
.asm_1cad3
|
|
cp $18
|
|
jr c, .asm_1cadb
|
|
sub $18
|
|
ld c, $1
|
|
.asm_1cadb
|
|
ld [wd50a], a
|
|
ld a, c
|
|
and a
|
|
ret z
|
|
ld bc, TenPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld hl, wd62d
|
|
call Func_e4a
|
|
ld a, [wd517]
|
|
cp $f
|
|
jr nz, .asm_1caff
|
|
call Func_1cb1c
|
|
ret
|
|
|
|
.asm_1caff
|
|
inc a
|
|
ld [wd517], a
|
|
call Func_1cb1c
|
|
ld a, [wd517]
|
|
cp $f
|
|
jr nz, .asm_1cb12
|
|
ld a, $64
|
|
ld [wd51e], a
|
|
.asm_1cb12
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret nz
|
|
call Func_1cb43
|
|
ret
|
|
|
|
Func_1cb1c: ; 0x1cb1c
|
|
ld a, [wd51e]
|
|
and a
|
|
ret nz
|
|
ld a, [wd517]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SoundEffectIds_1cb33
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
SoundEffectIds_1cb33:
|
|
db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
|
|
|
|
Func_1cb43: ; 0x1cb43
|
|
ld a, [wd517]
|
|
ld c, a
|
|
sla c
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1cb60
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1cb56
|
|
ld hl, TileDataPointers_1cd10
|
|
.asm_1cb56
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_1cb60)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_1cb60:
|
|
dw TileData_1cb80
|
|
dw TileData_1cb85
|
|
dw TileData_1cb8a
|
|
dw TileData_1cb8f
|
|
dw TileData_1cb94
|
|
dw TileData_1cb99
|
|
dw TileData_1cb9e
|
|
dw TileData_1cba3
|
|
dw TileData_1cba8
|
|
dw TileData_1cbad
|
|
dw TileData_1cbb2
|
|
dw TileData_1cbb7
|
|
dw TileData_1cbbc
|
|
dw TileData_1cbc1
|
|
dw TileData_1cbc6
|
|
dw TileData_1cbcb
|
|
|
|
TileData_1cb80: ; 0x1cb80
|
|
db $02
|
|
dw TileData_1cbd0
|
|
dw TileData_1cbda
|
|
|
|
TileData_1cb85: ; 0x1cb85
|
|
db $02
|
|
dw TileData_1cbe4
|
|
dw TileData_1cbee
|
|
|
|
TileData_1cb8a: ; 0x1cb8a
|
|
db $02
|
|
dw TileData_1cbf8
|
|
dw TileData_1cc02
|
|
|
|
TileData_1cb8f: ; 0x1cb8f
|
|
db $02
|
|
dw TileData_1cc0c
|
|
dw TileData_1cc16
|
|
|
|
TileData_1cb94: ; 0x1cb94
|
|
db $02
|
|
dw TileData_1cc20
|
|
dw TileData_1cc2a
|
|
|
|
TileData_1cb99: ; 0x1cb99
|
|
db $02
|
|
dw TileData_1cc34
|
|
dw TileData_1cc3e
|
|
|
|
TileData_1cb9e: ; 0x1cb9e
|
|
db $02
|
|
dw TileData_1cc48
|
|
dw TileData_1cc52
|
|
|
|
TileData_1cba3: ; 0x1cba3
|
|
db $02
|
|
dw TileData_1cc5c
|
|
dw TileData_1cc66
|
|
|
|
TileData_1cba8: ; 0x1cba8
|
|
db $02
|
|
dw TileData_1cc70
|
|
dw TileData_1cc7a
|
|
|
|
TileData_1cbad: ; 0x1cbad
|
|
db $02
|
|
dw TileData_1cc84
|
|
dw TileData_1cc8e
|
|
|
|
TileData_1cbb2: ; 0x1cbb2
|
|
db $02
|
|
dw TileData_1cc98
|
|
dw TileData_1cca2
|
|
|
|
TileData_1cbb7: ; 0x1cbb7
|
|
db $02
|
|
dw TileData_1ccac
|
|
dw TileData_1ccb6
|
|
|
|
TileData_1cbbc: ; 0x1cbbc
|
|
db $02
|
|
dw TileData_1ccc0
|
|
dw TileData_1ccca
|
|
|
|
TileData_1cbc1: ; 0x1cbc1
|
|
db $02
|
|
dw TileData_1ccd4
|
|
dw TileData_1ccde
|
|
|
|
TileData_1cbc6: ; 0x1cbc6
|
|
db $02
|
|
dw TileData_1cce8
|
|
dw TileData_1ccf2
|
|
|
|
TileData_1cbcb: ; 0x1cbcb
|
|
db $02
|
|
dw TileData_1ccfc
|
|
dw TileData_1cd06
|
|
|
|
TileData_1cbd0: ; 0xcbd0
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageBlueFieldTopBaseGameBoyGfx + $c20
|
|
db Bank(StageBlueFieldTopBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cbda: ; 0xcbda
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageBlueFieldTopBaseGameBoyGfx + $c40
|
|
db Bank(StageBlueFieldTopBaseGameBoyGfx)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cbe4: ; 0xcbe4
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1800
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cbee: ; 0xcbee
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1820
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cbf8: ; 0xcbf8
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1840
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc02: ; 0xcc02
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1860
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc0c: ; 0xcc0c
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1880
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc16: ; 0xcc16
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc20: ; 0xcc20
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc2a: ; 0xcc2a
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc34: ; 0xcc34
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1900
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc3e: ; 0xcc3e
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1920
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc48: ; 0xcc48
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1940
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc52: ; 0xcc52
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1960
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc5c: ; 0xcc5c
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1980
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc66: ; 0xcc66
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc70: ; 0xcc70
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc7a: ; 0xcc7a
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc84: ; 0xcc84
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc8e: ; 0xcc8e
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cc98: ; 0xcc98
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cca2: ; 0xcca2
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccac: ; 0xccac
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccb6: ; 0xccb6
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccc0: ; 0xccc0
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AC0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccca: ; 0xccca
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AE0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccd4: ; 0xccd4
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccde: ; 0xccde
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cce8: ; 0xcce8
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccf2: ; 0xccf2
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1ccfc: ; 0xccfc
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6C
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileData_1cd06: ; 0xcd06
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $6E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1cd10:
|
|
dw TileData_1cd30
|
|
dw TileData_1cd33
|
|
dw TileData_1cd36
|
|
dw TileData_1cd39
|
|
dw TileData_1cd3c
|
|
dw TileData_1cd3f
|
|
dw TileData_1cd42
|
|
dw TileData_1cd45
|
|
dw TileData_1cd48
|
|
dw TileData_1cd4b
|
|
dw TileData_1cd4e
|
|
dw TileData_1cd51
|
|
dw TileData_1cd54
|
|
dw TileData_1cd57
|
|
dw TileData_1cd5a
|
|
dw TileData_1cd5d
|
|
|
|
TileData_1cd30: ; 0x1cd30
|
|
db $01
|
|
dw TileData_1cd60
|
|
|
|
TileData_1cd33: ; 0x1cd33
|
|
db $01
|
|
dw TileData_1cd6e
|
|
|
|
TileData_1cd36: ; 0x1cd36
|
|
db $01
|
|
dw TileData_1cd7c
|
|
|
|
TileData_1cd39: ; 0x1cd39
|
|
db $01
|
|
dw TileData_1cd8a
|
|
|
|
TileData_1cd3c: ; 0x1cd3c
|
|
db $01
|
|
dw TileData_1cd98
|
|
|
|
TileData_1cd3f: ; 0x1cd3f
|
|
db $01
|
|
dw TileData_1cda6
|
|
|
|
TileData_1cd42: ; 0x1cd42
|
|
db $01
|
|
dw TileData_1cdb4
|
|
|
|
TileData_1cd45: ; 0x1cd45
|
|
db $01
|
|
dw TileData_1cdc2
|
|
|
|
TileData_1cd48: ; 0x1cd48
|
|
db $01
|
|
dw TileData_1cdd0
|
|
|
|
TileData_1cd4b: ; 0x1cd4b
|
|
db $01
|
|
dw TileData_1cdde
|
|
|
|
TileData_1cd4e: ; 0x1cd4e
|
|
db $01
|
|
dw TileData_1cdec
|
|
|
|
TileData_1cd51: ; 0x1cd51
|
|
db $01
|
|
dw TileData_1cdfa
|
|
|
|
TileData_1cd54: ; 0x1cd54
|
|
db $01
|
|
dw TileData_1ce08
|
|
|
|
TileData_1cd57: ; 0x1cd57
|
|
db $01
|
|
dw TileData_1ce16
|
|
|
|
TileData_1cd5a: ; 0x1cd5a
|
|
db $01
|
|
dw TileData_1ce24
|
|
|
|
TileData_1cd5d: ; 0x1cd5d
|
|
db $01
|
|
dw TileData_1ce32
|
|
|
|
TileData_1cd60: ; 0x1cd60
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $4A, $4B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cd6e: ; 0x1cd6e
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $4C, $4D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cd7c: ; 0x1cd7c
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $4E, $4F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cd8a: ; 0x1cd8a
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $50, $51
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cd98: ; 0x1cd98
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $52, $53
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cda6: ; 0x1cda6
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $54, $55
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cdb4: ; 0x1cdb4
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $56, $57
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cdc2: ; 0x1cdc2
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cdd0: ; 0x1cdd0
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $48, $49
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cdde: ; 0x1cdde
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $5C, $5D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cdec: ; 0x1cdec
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $5E, $5F
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cdfa: ; 0x1cdfa
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $60, $61
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ce08: ; 0x1ce08
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $62, $63
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ce16: ; 0x1ce16
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $64, $65
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ce24: ; 0x1ce24
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $66, $67
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $58, $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ce32: ; 0x1ce32
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $143
|
|
db $68, $69
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $163
|
|
db $6A, $6B
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_1ce40: ; 1ce40
|
|
ld a, [wWhichBumper]
|
|
and a
|
|
jr z, .asm_1ce53
|
|
call Func_1ce72
|
|
call Func_1ce60
|
|
xor a
|
|
ld [wWhichBumper], a
|
|
call Func_1ce94
|
|
.asm_1ce53
|
|
ld a, [wd4da]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd4da], a
|
|
call z, Func_1ce72
|
|
ret
|
|
|
|
Func_1ce60: ; 0x1ce60
|
|
ld a, $10
|
|
ld [wd4da], a
|
|
ld a, [wWhichBumperId]
|
|
sub $1
|
|
ld [wd4db], a
|
|
sla a
|
|
inc a
|
|
jr asm_1ce7a
|
|
|
|
Func_1ce72: ; 1ce72
|
|
ld a, [wd4db]
|
|
cp $ff
|
|
ret z
|
|
sla a
|
|
asm_1ce7a: ; 0x1ce7a
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1ceca
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1ce8a
|
|
ld hl, TileDataPointers_1cf3a
|
|
.asm_1ce8a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_1ceca)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_1ce94: ; 0x1ce94
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $3
|
|
ld [wd804], a
|
|
ld hl, $0200
|
|
ld a, l
|
|
ld [wFlipperYForce], a
|
|
ld a, h
|
|
ld [wFlipperYForce + 1], a
|
|
ld a, $80
|
|
ld [wFlipperCollision], a
|
|
ld a, [wWhichBumperId]
|
|
sub $1
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, Data_1cec8
|
|
add hl, bc
|
|
ld a, [wCollisionForceAngle]
|
|
add [hl]
|
|
ld [wCollisionForceAngle], a
|
|
lb de, $00, $0b
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Data_1cec8:
|
|
db -8, 8
|
|
|
|
TileDataPointers_1ceca:
|
|
dw TileData_1ced2
|
|
dw TileData_1ced5
|
|
dw TileData_1ced8
|
|
dw TileData_1cedb
|
|
|
|
TileData_1ced2: ; 0x1ced2
|
|
db $01
|
|
dw TileData_1cede
|
|
|
|
TileData_1ced5: ; 0x1ced5
|
|
db $01
|
|
dw TileData_1cef5
|
|
|
|
TileData_1ced8: ; 0x1ced8
|
|
db $01
|
|
dw TileData_1cf0c
|
|
|
|
TileData_1cedb: ; 0x1cedb
|
|
db $01
|
|
dw TileData_1cf23
|
|
|
|
TileData_1cede: ; 0x1cede
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $61
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $62, $63
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $64, $65
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $66, $67
|
|
|
|
db $00 ; number of tiles
|
|
|
|
TileData_1cef5: ; 0x1cef5
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $68
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $69, $6A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $6B, $6C
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $6D, $6E
|
|
|
|
db $00 ; number of tiles
|
|
|
|
TileData_1cf0c: ; 0x1cf0c
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $6F
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $70, $71
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $72, $73
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $74, $75
|
|
|
|
db $00 ; number of tiles
|
|
|
|
TileData_1cf23: ; 0x1cf23
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $76
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $77, $78
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $79, $7A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $7B, $7C
|
|
|
|
db $00 ; number of tiles
|
|
|
|
TileDataPointers_1cf3a:
|
|
dw TileData_1cf42
|
|
dw TileData_1cf45
|
|
dw TileData_1cf48
|
|
dw TileData_1cf4b
|
|
|
|
TileData_1cf42: ; 0x1cf42
|
|
db $01
|
|
dw TileData_1cf4e
|
|
|
|
TileData_1cf45: ; 0x1cf45
|
|
db $01
|
|
dw TileData_1cf65
|
|
|
|
TileData_1cf48: ; 0x1cf48
|
|
db $01
|
|
dw TileData_1cf7c
|
|
|
|
TileData_1cf4b: ; 0x1cf4b
|
|
db $01
|
|
dw TileData_1cf93
|
|
|
|
TileData_1cf4e: ; 0x1cf4e
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $39
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $3A, $3B
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $3C, $3D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $3E, $3F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cf65: ; 0x1cf65
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $124
|
|
db $40
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $144
|
|
db $41, $42
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $164
|
|
db $43, $44
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $185
|
|
db $45, $46
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cf7c: ; 0x1cf7c
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $39
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $3B, $3A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $3D, $3C
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $3F, $3E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1cf93: ; 0x1cf93
|
|
dw LoadTileLists
|
|
db $07 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $12F
|
|
db $40
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $14E
|
|
db $42, $41
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $16E
|
|
db $44, $43
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $18D
|
|
db $46, $45
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolveBlueStageBoardTriggerCollision: ; 0x1cfaa
|
|
ld a, [wWhichBoardTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wWhichBoardTrigger], a
|
|
ld bc, FivePoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wStageCollisionState]
|
|
cp $0
|
|
jr nz, .asm_1cfe5
|
|
ld a, $1
|
|
ld [wStageCollisionState], a
|
|
callba LoadStageCollisionAttributes
|
|
ld a, $1
|
|
ld [wd580], a
|
|
callba Func_1404a
|
|
.asm_1cfe5
|
|
ld a, [wWhichBoardTriggerId]
|
|
sub $7
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd521
|
|
add hl, bc
|
|
ld [hl], $1
|
|
ld a, [wd521]
|
|
and a
|
|
call nz, Func_1d010
|
|
ld a, [wd522]
|
|
and a
|
|
call nz, Func_1d047
|
|
ld a, [wd523]
|
|
and a
|
|
call nz, HandleLeftAlleyTriggerBlueField
|
|
ld a, [wd524]
|
|
and a
|
|
call nz, HandleRightAlleyTriggerBlueField
|
|
ret
|
|
|
|
Func_1d010: ; 0x1d010
|
|
xor a
|
|
ld [wd521], a
|
|
ld a, [wLeftAlleyTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld a, $1
|
|
callba Func_10000
|
|
ret c
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
ret z
|
|
inc a
|
|
ld [wLeftAlleyCount], a
|
|
cp $3
|
|
jr z, .asm_1d03e
|
|
set 7, a
|
|
ld [wIndicatorStates], a
|
|
ret
|
|
|
|
.asm_1d03e
|
|
ld [wIndicatorStates], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 2], a
|
|
ret
|
|
|
|
Func_1d047: ; 0x1d047
|
|
xor a
|
|
ld [wd522], a
|
|
ld a, [wRightAlleyTrigger]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wRightAlleyTrigger], a
|
|
ld a, $2
|
|
callba Func_10000
|
|
ret c
|
|
ld a, [wRightAlleyCount]
|
|
cp $3
|
|
ret z
|
|
inc a
|
|
ld [wRightAlleyCount], a
|
|
cp $3
|
|
jr z, .asm_1d071
|
|
set 7, a
|
|
.asm_1d071
|
|
ld [wIndicatorStates + 1], a
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
ret c
|
|
ld a, $80
|
|
ld [wIndicatorStates + 3], a
|
|
ret
|
|
|
|
HandleLeftAlleyTriggerBlueField: ; 0x1d080
|
|
; Ball passed over the left alley trigger point in the Blue Field.
|
|
xor a
|
|
ld [wd523], a
|
|
ld [wRightAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld a, $1
|
|
ld [wLeftAlleyTrigger], a
|
|
ret c
|
|
ret
|
|
|
|
HandleRightAlleyTriggerBlueField: ; 0x1d091
|
|
; Ball passed over the right alley trigger point in the Blue Field.
|
|
xor a
|
|
ld [wd524], a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld a, $1
|
|
ld [wRightAlleyTrigger], a
|
|
ret
|
|
|
|
ResolveBlueStagePikachuCollision: ; 0x1d0a1
|
|
ld a, [wWhichPikachu]
|
|
and a
|
|
jr z, .asm_1d110
|
|
xor a
|
|
ld [wWhichPikachu], a
|
|
ld a, [wd51c]
|
|
and a
|
|
jr nz, .asm_1d110
|
|
ld a, [wd51d]
|
|
and a
|
|
jr nz, .asm_1d0c9
|
|
ld a, [wWhichPikachuId]
|
|
sub $d
|
|
ld hl, wd518
|
|
cp [hl]
|
|
jr nz, .asm_1d110
|
|
ld a, [wd517]
|
|
cp $f
|
|
jr nz, .asm_1d0fc
|
|
.asm_1d0c9
|
|
ld hl, PikachuSaverAnimationDataRedStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, [wd51d]
|
|
and a
|
|
jr nz, .asm_1d0dc
|
|
xor a
|
|
ld [wd517], a
|
|
.asm_1d0dc
|
|
ld a, $1
|
|
ld [wd51c], a
|
|
xor a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ld [wd549], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
jr .asm_1d110
|
|
|
|
.asm_1d0fc
|
|
ld hl, PikachuSaverAnimation2DataRedStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $2
|
|
ld [wd51c], a
|
|
lb de, $00, $3b
|
|
call PlaySoundEffect
|
|
.asm_1d110
|
|
ld a, [wd51c]
|
|
and a
|
|
call z, Func_1d1fb
|
|
call Func_1d133
|
|
ld a, [wd517]
|
|
cp $f
|
|
ret nz
|
|
ld a, [wd51e]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd51e], a
|
|
cp $5a
|
|
ret nz
|
|
lb de, $0f, $22
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_1d133: ; 0x1d133
|
|
ld a, [wd51c]
|
|
cp $1
|
|
jr nz, .asm_1d1ae
|
|
ld hl, PikachuSaverAnimationDataRedStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call UpdateAnimation
|
|
ret nc
|
|
ld a, [wPikachuSaverAnimationFrameIndex]
|
|
cp $1
|
|
jr nz, .asm_1d18c
|
|
xor a
|
|
ld [wd85d], a
|
|
call Func_310a
|
|
rst AdvanceFrame
|
|
ld a, $1
|
|
callba PlayPikachuSoundClip
|
|
ld a, $1
|
|
ld [wd85d], a
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $60
|
|
ld [wd804], a
|
|
ld hl, wd62e
|
|
call Func_e4a
|
|
jr nc, .asm_1d185
|
|
ld c, $a
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_1d185
|
|
lb de, $16, $10
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_1d18c
|
|
ld a, [wPikachuSaverAnimationFrameIndex]
|
|
cp $11
|
|
ret nz
|
|
ld a, $fc
|
|
ld [wBallYVelocity + 1], a
|
|
ld a, $1
|
|
ld [wd549], a
|
|
ld bc, FiveThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
xor a
|
|
ld [wd51c], a
|
|
ret
|
|
|
|
.asm_1d1ae
|
|
cp $2
|
|
jr nz, .asm_1d1c7
|
|
ld hl, PikachuSaverAnimation2DataRedStage
|
|
ld de, wPikachuSaverAnimationFrameCounter
|
|
call UpdateAnimation
|
|
ret nc
|
|
ld a, [wPikachuSaverAnimationFrameIndex]
|
|
cp $1
|
|
ret nz
|
|
xor a
|
|
ld [wd51c], a
|
|
ret
|
|
|
|
.asm_1d1c7
|
|
ld a, [hNumFramesDropped]
|
|
swap a
|
|
and $1
|
|
ld [wPikachuSaverAnimationFrame], a
|
|
ret
|
|
|
|
PikachuSaverAnimationDataRedStage: ; 0x1d1d1
|
|
; Each entry is [duration][OAM id]
|
|
db $0C, $02
|
|
db $05, $03
|
|
db $05, $02
|
|
db $05, $04
|
|
db $05, $05
|
|
db $05, $02
|
|
db $06, $06
|
|
db $06, $07
|
|
db $06, $08
|
|
db $06, $02
|
|
db $06, $05
|
|
db $06, $08
|
|
db $06, $07
|
|
db $06, $02
|
|
db $06, $08
|
|
db $06, $07
|
|
db $06, $02
|
|
db $01, $00
|
|
db $00
|
|
|
|
PikachuSaverAnimation2DataRedStage: ; 0x1d1f6
|
|
; Each entry is [duration][OAM id]
|
|
db $0C, $02
|
|
db $01, $00
|
|
db $00
|
|
|
|
Func_1d1fb: ; 0x1d1fb
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed2
|
|
jr z, .asm_1d209
|
|
ld hl, wd518
|
|
ld [hl], $0
|
|
ret
|
|
|
|
.asm_1d209
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed2
|
|
ret z
|
|
ld hl, wd518
|
|
ld [hl], $1
|
|
ret
|
|
|
|
ResolveSlowpokeCollision: ; 0x1d216
|
|
ld a, [wSlowpokeCollision]
|
|
and a
|
|
jr z, .asm_1d253
|
|
xor a
|
|
ld [wSlowpokeCollision], a
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $05
|
|
call PlaySoundEffect
|
|
ld hl, SlowpokeCollisionAnimationData ; 0x1d312
|
|
ld de, wd632
|
|
call CopyHLToDE
|
|
xor a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wBallXPos], a
|
|
ld [wBallYPos], a
|
|
xor a
|
|
ld [wd549], a
|
|
.asm_1d253
|
|
ld hl, SlowpokeCollisionAnimationData ; 0x1d312
|
|
ld de, wd632
|
|
call UpdateAnimation
|
|
push af
|
|
ld a, [wd632]
|
|
and a
|
|
jr nz, .asm_1d271
|
|
ld a, $19
|
|
ld [wd632], a
|
|
xor a
|
|
ld [wd633], a
|
|
ld a, $6
|
|
ld [wd634], a
|
|
.asm_1d271
|
|
pop af
|
|
ret nc
|
|
ld a, [wd634]
|
|
cp $1
|
|
jr nz, .asm_1d2b6
|
|
xor a
|
|
ld [wd548], a
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
jr nz, .asm_1d299
|
|
callba Func_10ab3
|
|
ld a, [wd643]
|
|
and a
|
|
ret z
|
|
ld a, $1
|
|
ld [wd642], a
|
|
.asm_1d299
|
|
ld hl, wd63a
|
|
call Func_e4a
|
|
ld hl, wd62a
|
|
call Func_e4a
|
|
ret nc
|
|
ld c, $19
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
ret
|
|
|
|
.asm_1d2b6
|
|
ld a, [wd634]
|
|
cp $4
|
|
jr nz, .asm_1d2c3
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ret
|
|
|
|
.asm_1d2c3
|
|
ld a, [wd634]
|
|
cp $5
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd549], a
|
|
ld a, $b0
|
|
ld [wBallXVelocity], a
|
|
ld a, $0
|
|
ld [wBallXVelocity + 1], a
|
|
xor a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
lb de, $00, $06
|
|
call PlaySoundEffect
|
|
ld a, [wd642]
|
|
cp $0
|
|
jr nz, .asm_1d2f8
|
|
ld a, $f
|
|
callba Func_10000
|
|
.asm_1d2f8
|
|
xor a
|
|
ld [wd642], a
|
|
ld [wd64c], a
|
|
ld [wd64d], a
|
|
ld a, $1
|
|
ld [wd641], a
|
|
ld a, $2 ; down direction
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld a, $1
|
|
ld [wd640], a
|
|
ret
|
|
|
|
SlowpokeCollisionAnimationData: ; 0x1d312
|
|
; Each entry is [OAM id][duration]
|
|
db $08, $01
|
|
db $06, $02
|
|
db $06, $02
|
|
db $08, $01
|
|
db $01, $00
|
|
db $29, $00
|
|
db $28, $01
|
|
db $2A, $00
|
|
db $27, $01
|
|
db $29, $00
|
|
db $28, $01
|
|
db $2B, $00
|
|
db $28, $01
|
|
db $00
|
|
|
|
ResolveCloysterCollision: ; 0x1d32d
|
|
ld a, [wCloysterCollision]
|
|
and a
|
|
jr z, .asm_1d36a
|
|
xor a
|
|
ld [wCloysterCollision], a
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $05
|
|
call PlaySoundEffect
|
|
ld hl, CloysterCollisionAnimationData
|
|
ld de, wd637
|
|
call CopyHLToDE
|
|
xor a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wBallXPos], a
|
|
ld [wBallYPos], a
|
|
xor a
|
|
ld [wd549], a
|
|
.asm_1d36a
|
|
ld hl, CloysterCollisionAnimationData
|
|
ld de, wd637
|
|
call UpdateAnimation
|
|
push af
|
|
ld a, [wd637]
|
|
and a
|
|
jr nz, .asm_1d388
|
|
ld a, $19
|
|
ld [wd637], a
|
|
xor a
|
|
ld [wd638], a
|
|
ld a, $6
|
|
ld [wd639], a
|
|
.asm_1d388
|
|
pop af
|
|
ret nc
|
|
ld a, [wd639]
|
|
cp $1
|
|
jr nz, .asm_1d3cb
|
|
xor a
|
|
ld [wd548], a
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
jr c, .noCatchEmMode
|
|
ld a, $8
|
|
jr nz, .asm_1d3a1
|
|
xor a
|
|
.asm_1d3a1
|
|
ld [wRareMonsFlag], a
|
|
callba StartCatchEmMode
|
|
.noCatchEmMode
|
|
ld hl, wd63b
|
|
call Func_e4a
|
|
ld hl, wd62a
|
|
call Func_e4a
|
|
ret nc
|
|
ld c, $19
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
ret
|
|
|
|
.asm_1d3cb
|
|
ld a, [wd639]
|
|
cp $4
|
|
jr nz, .asm_1d3d8
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ret
|
|
|
|
.asm_1d3d8
|
|
ld a, [wd639]
|
|
cp $5
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd549], a
|
|
ld a, $4f
|
|
ld [wBallXVelocity], a
|
|
ld a, $ff
|
|
ld [wBallXVelocity + 1], a
|
|
xor a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
lb de, $00, $06
|
|
call PlaySoundEffect
|
|
ld a, $e
|
|
callba Func_10000
|
|
xor a
|
|
ld [wd64c], a
|
|
ld [wd64d], a
|
|
ld a, $1
|
|
ld [wd641], a
|
|
ld a, $2 ; down direction
|
|
ld [wBlueStageForceFieldDirection], a
|
|
ld a, $1
|
|
ld [wd640], a
|
|
ret
|
|
|
|
CloysterCollisionAnimationData: ; 0x1d41d
|
|
; Each entry is [OAM id][duration]
|
|
db $08, $01
|
|
db $06, $02
|
|
db $06, $02
|
|
db $08, $01
|
|
db $01, $00
|
|
db $29, $00
|
|
db $28, $01
|
|
db $2A, $00
|
|
db $27, $01
|
|
db $29, $00
|
|
db $28, $01
|
|
db $2B, $00
|
|
db $28, $01
|
|
db 00 ; terminator
|
|
|
|
ResolveBlueStageBonusMultiplierCollision: ; 0x1d438
|
|
call Func_1d692
|
|
ld a, [wWhichBonusMultiplierRailing]
|
|
and a
|
|
jp z, Func_1d51b
|
|
xor a
|
|
ld [wWhichBonusMultiplierRailing], a
|
|
lb de, $00, $0d
|
|
call PlaySoundEffect
|
|
ld a, [wWhichBonusMultiplierRailingId]
|
|
sub $f
|
|
jr nz, .asm_1d48e
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1d45c
|
|
ld a, $1f
|
|
jr .asm_1d45e
|
|
|
|
.asm_1d45c
|
|
ld a, $29
|
|
.asm_1d45e
|
|
call Func_1d5f2
|
|
ld a, $3c
|
|
ld [wd647], a
|
|
ld a, $9
|
|
callba Func_10000
|
|
ld a, [wd610]
|
|
cp $3
|
|
jp nz, asm_1d4fa
|
|
ld a, $1
|
|
ld [wd610], a
|
|
ld a, $3
|
|
ld [wd611], a
|
|
ld a, [wd60c]
|
|
set 7, a
|
|
ld [wd60c], a
|
|
jr asm_1d4fa
|
|
|
|
.asm_1d48e
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1d497
|
|
ld a, $21
|
|
jr .asm_1d499
|
|
|
|
.asm_1d497
|
|
ld a, $2b
|
|
.asm_1d499
|
|
call Func_1d5f2
|
|
ld a, $1e
|
|
ld [wd647], a
|
|
ld a, $a
|
|
callba Func_10000
|
|
ld a, [wd611]
|
|
cp $3
|
|
jr nz, asm_1d4fa
|
|
ld a, $1
|
|
ld [wd610], a
|
|
ld a, $1
|
|
ld [wd611], a
|
|
ld a, $80
|
|
ld [wd612], a
|
|
ld a, [wd60d]
|
|
set 7, a
|
|
ld [wd60d], a
|
|
ld a, [wd482]
|
|
inc a
|
|
cp 100
|
|
jr c, .asm_1d4d5
|
|
ld a, 99
|
|
.asm_1d4d5
|
|
ld [wd482], a
|
|
jr nc, .asm_1d4e9
|
|
ld c, $19
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_1d4e9
|
|
ld a, [wd60c]
|
|
ld [wd614], a
|
|
ld a, [wd60d]
|
|
ld [wd615], a
|
|
ld a, $1
|
|
ld [wd613], a
|
|
asm_1d4fa: ; 0x1d4fa
|
|
ld bc, TenPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wd60c]
|
|
call Func_1d5f2
|
|
ld a, [wd60d]
|
|
add $14
|
|
call Func_1d5f2
|
|
ld a, $3c
|
|
ld [wd647], a
|
|
ret
|
|
|
|
Func_1d51b: ; 0x1d51b
|
|
call Func_1d5bf
|
|
ld a, [wd612]
|
|
and a
|
|
jr z, .asm_1d559
|
|
dec a
|
|
ld [wd612], a
|
|
cp $70
|
|
jr nz, .asm_1d538
|
|
ld a, $2
|
|
ld [wd610], a
|
|
ld a, $2
|
|
ld [wd611], a
|
|
jr .asm_1d559
|
|
|
|
.asm_1d538
|
|
and a
|
|
jr nz, .asm_1d559
|
|
ld a, $3
|
|
ld [wd610], a
|
|
xor a
|
|
ld [wd611], a
|
|
ld a, [wd482]
|
|
call Func_1d65f
|
|
ld a, [wd60c]
|
|
call Func_1d5f2
|
|
ld a, [wd60d]
|
|
add $14
|
|
call Func_1d5f2
|
|
ret
|
|
|
|
.asm_1d559
|
|
ld a, [wd610]
|
|
cp $2
|
|
jr c, .asm_1d58b
|
|
cp $3
|
|
ld a, [hNumFramesDropped]
|
|
jr c, .asm_1d56a
|
|
srl a
|
|
srl a
|
|
.asm_1d56a
|
|
ld b, a
|
|
and $3
|
|
jr nz, .asm_1d58b
|
|
bit 3, b
|
|
jr nz, .asm_1d580
|
|
ld a, [wd60c]
|
|
res 7, a
|
|
ld [wd60c], a
|
|
call Func_1d5f2
|
|
jr .asm_1d58b
|
|
|
|
.asm_1d580
|
|
ld a, [wd60c]
|
|
set 7, a
|
|
ld [wd60c], a
|
|
call Func_1d5f2
|
|
.asm_1d58b
|
|
ld a, [wd611]
|
|
cp $2
|
|
ret c
|
|
cp $3
|
|
ld a, [hNumFramesDropped]
|
|
jr c, .asm_1d59b
|
|
srl a
|
|
srl a
|
|
.asm_1d59b
|
|
ld b, a
|
|
and $3
|
|
ret nz
|
|
bit 3, b
|
|
jr nz, .asm_1d5b1
|
|
ld a, [wd60d]
|
|
res 7, a
|
|
ld [wd60d], a
|
|
add $14
|
|
call Func_1d5f2
|
|
ret
|
|
|
|
.asm_1d5b1
|
|
ld a, [wd60d]
|
|
set 7, a
|
|
ld [wd60d], a
|
|
add $14
|
|
call Func_1d5f2
|
|
ret
|
|
|
|
Func_1d5bf: ; 0x1d5bf
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
ld a, [wd613]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd613], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, BonusMultiplierText
|
|
call LoadTextHeader
|
|
ld hl, wBottomMessageText + $12
|
|
ld a, [wd614]
|
|
and $7f
|
|
jr z, .asm_1d5e9
|
|
add $30
|
|
ld [hli], a
|
|
.asm_1d5e9
|
|
ld a, [wd615]
|
|
res 7, a
|
|
add $30
|
|
ld [hl], a
|
|
ret
|
|
|
|
Func_1d5f2: ; 0x1d5f2
|
|
push af
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1d5fd
|
|
pop af
|
|
call Func_1d602
|
|
ret
|
|
|
|
.asm_1d5fd
|
|
pop af
|
|
call Func_1d645
|
|
ret
|
|
|
|
Func_1d602: ; 0x1d602
|
|
push af
|
|
res 7, a
|
|
ld hl, wd60e
|
|
cp $14
|
|
jr c, .asm_1d611
|
|
ld hl, wd60f
|
|
sub $a
|
|
.asm_1d611
|
|
cp [hl]
|
|
jr z, .asm_1d626
|
|
ld [hl], a
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
ld hl, TileDataPointers_1d6be
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_1d6be)
|
|
call Func_10aa
|
|
.asm_1d626
|
|
pop af
|
|
ld bc, $0000
|
|
bit 7, a
|
|
jr z, .asm_1d632
|
|
res 7, a
|
|
set 1, c
|
|
.asm_1d632
|
|
cp $14
|
|
jr c, .asm_1d638
|
|
set 2, c
|
|
.asm_1d638
|
|
ld hl, TileDataPointers_1d946
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_1d946)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_1d645: ; 0x1d645
|
|
bit 7, a
|
|
jr z, .asm_1d64d
|
|
res 7, a
|
|
add $a
|
|
.asm_1d64d
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
ld hl, TileDataPointers_1d97a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_1d97a)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_1d65f: ; 0x1d65f
|
|
ld a, [wd482]
|
|
inc a
|
|
cp $64
|
|
jr c, .asm_1d669
|
|
ld a, $63
|
|
.asm_1d669
|
|
ld b, a
|
|
xor a
|
|
ld hl, Data_1d68b
|
|
ld c, $7
|
|
.asm_1d670
|
|
bit 0, b
|
|
jr z, .asm_1d676
|
|
add [hl]
|
|
daa
|
|
.asm_1d676
|
|
srl b
|
|
inc hl
|
|
dec c
|
|
jr nz, .asm_1d670
|
|
push af
|
|
swap a
|
|
and $f
|
|
ld [wd60c], a
|
|
pop af
|
|
and $f
|
|
ld [wd60d], a
|
|
ret
|
|
|
|
Data_1d68b:
|
|
; BCD powers of 2
|
|
db $01, $02, $04, $08, $16, $32, $64
|
|
|
|
Func_1d692: ; 0x1d692
|
|
ld a, [wd647]
|
|
cp $1
|
|
jr z, .asm_1d69e
|
|
dec a
|
|
ld [wd647], a
|
|
ret
|
|
|
|
.asm_1d69e
|
|
ld a, $0
|
|
ld [wd647], a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1d6b3
|
|
ld a, $1e
|
|
call Func_1d5f2
|
|
ld a, $20
|
|
call Func_1d5f2
|
|
ret
|
|
|
|
.asm_1d6b3
|
|
ld a, $2a
|
|
call Func_1d5f2
|
|
ld a, $28
|
|
call Func_1d5f2
|
|
ret
|
|
|
|
TileDataPointers_1d6be:
|
|
dw TileData_1d6ee
|
|
dw TileData_1d6f3
|
|
dw TileData_1d6f8
|
|
dw TileData_1d6fd
|
|
dw TileData_1d702
|
|
dw TileData_1d707
|
|
dw TileData_1d70c
|
|
dw TileData_1d711
|
|
dw TileData_1d716
|
|
dw TileData_1d71b
|
|
dw TileData_1d720
|
|
dw TileData_1d725
|
|
dw TileData_1d72a
|
|
dw TileData_1d72f
|
|
dw TileData_1d734
|
|
dw TileData_1d739
|
|
dw TileData_1d73e
|
|
dw TileData_1d743
|
|
dw TileData_1d748
|
|
dw TileData_1d74d
|
|
dw TileData_1d752
|
|
dw TileData_1d757
|
|
dw TileData_1d75c
|
|
dw TileData_1d761
|
|
|
|
TileData_1d6ee: ; 0x1d6ee
|
|
db $02
|
|
dw TileData_1d766
|
|
dw TileData_1d770
|
|
|
|
TileData_1d6f3: ; 0x1d6f3
|
|
db $02
|
|
dw TileData_1d77a
|
|
dw TileData_1d784
|
|
|
|
TileData_1d6f8: ; 0x1d6f8
|
|
db $02
|
|
dw TileData_1d78e
|
|
dw TileData_1d798
|
|
|
|
TileData_1d6fd: ; 0x1d6fd
|
|
db $02
|
|
dw TileData_1d7a2
|
|
dw TileData_1d7AC
|
|
|
|
TileData_1d702: ; 0x1d702
|
|
db $02
|
|
dw TileData_1d7b6
|
|
dw TileData_1d7C0
|
|
|
|
TileData_1d707: ; 0x1d707
|
|
db $02
|
|
dw TileData_1d7ca
|
|
dw TileData_1d7D4
|
|
|
|
TileData_1d70c: ; 0x1d70c
|
|
db $02
|
|
dw TileData_1d7de
|
|
dw TileData_1d7E8
|
|
|
|
TileData_1d711: ; 0x1d711
|
|
db $02
|
|
dw TileData_1d7f2
|
|
dw TileData_1d7FC
|
|
|
|
TileData_1d716: ; 0x1d716
|
|
db $02
|
|
dw TileData_1d806
|
|
dw TileData_1d810
|
|
|
|
TileData_1d71b: ; 0x1d71b
|
|
db $02
|
|
dw TileData_1d81a
|
|
dw TileData_1d824
|
|
|
|
TileData_1d720: ; 0x1d720
|
|
db $02
|
|
dw TileData_1d82e
|
|
dw TileData_1d838
|
|
|
|
TileData_1d725: ; 0x1d725
|
|
db $02
|
|
dw TileData_1d842
|
|
dw TileData_1d84C
|
|
|
|
TileData_1d72a: ; 0x1d72a
|
|
db $02
|
|
dw TileData_1d856
|
|
dw TileData_1d860
|
|
|
|
TileData_1d72f: ; 0x1d72f
|
|
db $02
|
|
dw TileData_1d86a
|
|
dw TileData_1d874
|
|
|
|
TileData_1d734: ; 0x1d734
|
|
db $02
|
|
dw TileData_1d87e
|
|
dw TileData_1d888
|
|
|
|
TileData_1d739: ; 0x1d739
|
|
db $02
|
|
dw TileData_1d892
|
|
dw TileData_1d89C
|
|
|
|
TileData_1d73e: ; 0x1d73e
|
|
db $02
|
|
dw TileData_1d8a6
|
|
dw TileData_1d8B0
|
|
|
|
TileData_1d743: ; 0x1d743
|
|
db $02
|
|
dw TileData_1d8ba
|
|
dw TileData_1d8C4
|
|
|
|
TileData_1d748: ; 0x1d748
|
|
db $02
|
|
dw TileData_1d8ce
|
|
dw TileData_1d8D8
|
|
|
|
TileData_1d74d: ; 0x1d74d
|
|
db $02
|
|
dw TileData_1d8e2
|
|
dw TileData_1d8EC
|
|
|
|
TileData_1d752: ; 0x1d752
|
|
db $02
|
|
dw TileData_1d8f6
|
|
dw TileData_1d900
|
|
|
|
TileData_1d757: ; 0x1d757
|
|
db $02
|
|
dw TileData_1d90a
|
|
dw TileData_1d914
|
|
|
|
TileData_1d75c: ; 0x1d75c
|
|
db $02
|
|
dw TileData_1d91e
|
|
dw TileData_1d928
|
|
|
|
TileData_1d761: ; 0x1d761
|
|
db $02
|
|
dw TileData_1d932
|
|
dw TileData_1d93C
|
|
|
|
TileData_1d766: ; 0x1d766
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d770: ; 0x1d770
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cc0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d77a: ; 0x1d77a
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d70
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d784: ; 0x1d784
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cd0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d78e: ; 0x1d78e
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d798: ; 0x1d798
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ce0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7a2: ; 0x1d7a2
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d90
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7AC: ; 0x1d7AC
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cf0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7b6: ; 0x1d7b6
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1da0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7C0: ; 0x1d7C0
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7ca: ; 0x1d7ca
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1db0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7D4: ; 0x1d7D4
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d10
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7de: ; 0x1d7de
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dc0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7E8: ; 0x1d7E8
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7f2: ; 0x1d7f2
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dd0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d7FC: ; 0x1d7FC
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d30
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d806: ; 0x1d806
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1de0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d810: ; 0x1d810
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d81a: ; 0x1d81a
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $27
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1df0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d824: ; 0x1d824
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7D
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d50
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d82e: ; 0x1d82e
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ea0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d838: ; 0x1d838
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d842: ; 0x1d842
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1eb0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d84C: ; 0x1d84C
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e10
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d856: ; 0x1d856
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ec0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d860: ; 0x1d860
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d86a: ; 0x1d86a
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ed0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d874: ; 0x1d874
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e30
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d87e: ; 0x1d87e
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ee0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d888: ; 0x1d888
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d892: ; 0x1d892
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ef0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d89C: ; 0x1d89C
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e50
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8a6: ; 0x1d8a6
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8B0: ; 0x1d8B0
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8ba: ; 0x1d8ba
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f10
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8C4: ; 0x1d8C4
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e70
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8ce: ; 0x1d8ce
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8D8: ; 0x1d8D8
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8e2: ; 0x1d8e2
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $28
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f30
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8EC: ; 0x1d8EC
|
|
dw Func_11d2
|
|
db $10, $01
|
|
dw vTilesBG tile $7E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e90
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1d8f6: ; 0x1d8f6
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $29
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $A90
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1d900: ; 0x1d900
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $2C
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $AC0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1d90a: ; 0x1d90a
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $29
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $AE0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1d914: ; 0x1d914
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $2C
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $B10
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1d91e: ; 0x1d91e
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $33
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $B30
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1d928: ; 0x1d928
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $36
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $B60
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1d932: ; 0x1d932
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $33
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $B80
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1d93C: ; 0x1d93C
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $36
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $BB0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileDataPointers_1d946:
|
|
dw TileData_1d94e
|
|
dw TileData_1d951
|
|
dw TileData_1d954
|
|
dw TileData_1d957
|
|
|
|
TileData_1d94e: ; 0x1d94e
|
|
db $01
|
|
dw TileData_1d95a
|
|
|
|
TileData_1d951: ; 0x1d951
|
|
db $01
|
|
dw TileData_1d962
|
|
|
|
TileData_1d954: ; 0x1d954
|
|
db $01
|
|
dw TileData_1d96a
|
|
|
|
TileData_1d957: ; 0x1d957
|
|
db $01
|
|
dw TileData_1d972
|
|
|
|
TileData_1d95a: ; 0x1d95a
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $27
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1d962: ; 0x1d962
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $7D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1d96a: ; 0x1d96a
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $28
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1d972: ; 0x1d972
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $7E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1d97a:
|
|
dw TileData_1d9d2
|
|
dw TileData_1d9d5
|
|
dw TileData_1d9d8
|
|
dw TileData_1d9db
|
|
dw TileData_1d9de
|
|
dw TileData_1d9e1
|
|
dw TileData_1d9e4
|
|
dw TileData_1d9e7
|
|
dw TileData_1d9ea
|
|
dw TileData_1d9ed
|
|
dw TileData_1d9f0
|
|
dw TileData_1d9f3
|
|
dw TileData_1d9f6
|
|
dw TileData_1d9f9
|
|
dw TileData_1d9fc
|
|
dw TileData_1d9ff
|
|
dw TileData_1da02
|
|
dw TileData_1da05
|
|
dw TileData_1da08
|
|
dw TileData_1da0b
|
|
dw TileData_1da0e
|
|
dw TileData_1da11
|
|
dw TileData_1da14
|
|
dw TileData_1da17
|
|
dw TileData_1da1a
|
|
dw TileData_1da1d
|
|
dw TileData_1da20
|
|
dw TileData_1da23
|
|
dw TileData_1da26
|
|
dw TileData_1da29
|
|
dw TileData_1da2c
|
|
dw TileData_1da2f
|
|
dw TileData_1da32
|
|
dw TileData_1da35
|
|
dw TileData_1da38
|
|
dw TileData_1da3b
|
|
dw TileData_1da3e
|
|
dw TileData_1da41
|
|
dw TileData_1da44
|
|
dw TileData_1da47
|
|
dw TileData_1da4a
|
|
dw TileData_1da4d
|
|
dw TileData_1da50
|
|
dw TileData_1da53
|
|
|
|
TileData_1d9d2: ; 0x1d9d2
|
|
db $01
|
|
dw TileData_1da56
|
|
|
|
TileData_1d9d5: ; 0x1d9d5
|
|
db $01
|
|
dw TileData_1da5e
|
|
|
|
TileData_1d9d8: ; 0x1d9d8
|
|
db $01
|
|
dw TileData_1da66
|
|
|
|
TileData_1d9db: ; 0x1d9db
|
|
db $01
|
|
dw TileData_1da6e
|
|
|
|
TileData_1d9de: ; 0x1d9de
|
|
db $01
|
|
dw TileData_1da76
|
|
|
|
TileData_1d9e1: ; 0x1d9e1
|
|
db $01
|
|
dw TileData_1da7e
|
|
|
|
TileData_1d9e4: ; 0x1d9e4
|
|
db $01
|
|
dw TileData_1da86
|
|
|
|
TileData_1d9e7: ; 0x1d9e7
|
|
db $01
|
|
dw TileData_1da8e
|
|
|
|
TileData_1d9ea: ; 0x1d9ea
|
|
db $01
|
|
dw TileData_1da96
|
|
|
|
TileData_1d9ed: ; 0x1d9ed
|
|
db $01
|
|
dw TileData_1da9e
|
|
|
|
TileData_1d9f0: ; 0x1d9f0
|
|
db $01
|
|
dw TileData_1daa6
|
|
|
|
TileData_1d9f3: ; 0x1d9f3
|
|
db $01
|
|
dw TileData_1daae
|
|
|
|
TileData_1d9f6: ; 0x1d9f6
|
|
db $01
|
|
dw TileData_1dab6
|
|
|
|
TileData_1d9f9: ; 0x1d9f9
|
|
db $01
|
|
dw TileData_1dabe
|
|
|
|
TileData_1d9fc: ; 0x1d9fc
|
|
db $01
|
|
dw TileData_1dac6
|
|
|
|
TileData_1d9ff: ; 0x1d9ff
|
|
db $01
|
|
dw TileData_1dace
|
|
|
|
TileData_1da02: ; 0x1da02
|
|
db $01
|
|
dw TileData_1dad6
|
|
|
|
TileData_1da05: ; 0x1da05
|
|
db $01
|
|
dw TileData_1dade
|
|
|
|
TileData_1da08: ; 0x1da08
|
|
db $01
|
|
dw TileData_1dae6
|
|
|
|
TileData_1da0b: ; 0x1da0b
|
|
db $01
|
|
dw TileData_1daee
|
|
|
|
TileData_1da0e: ; 0x1da0e
|
|
db $01
|
|
dw TileData_1daf6
|
|
|
|
TileData_1da11: ; 0x1da11
|
|
db $01
|
|
dw TileData_1dafe
|
|
|
|
TileData_1da14: ; 0x1da14
|
|
db $01
|
|
dw TileData_1db06
|
|
|
|
TileData_1da17: ; 0x1da17
|
|
db $01
|
|
dw TileData_1db0e
|
|
|
|
TileData_1da1a: ; 0x1da1a
|
|
db $01
|
|
dw TileData_1db16
|
|
|
|
TileData_1da1d: ; 0x1da1d
|
|
db $01
|
|
dw TileData_1db1e
|
|
|
|
TileData_1da20: ; 0x1da20
|
|
db $01
|
|
dw TileData_1db26
|
|
|
|
TileData_1da23: ; 0x1da23
|
|
db $01
|
|
dw TileData_1db2e
|
|
|
|
TileData_1da26: ; 0x1da26
|
|
db $01
|
|
dw TileData_1db36
|
|
|
|
TileData_1da29: ; 0x1da29
|
|
db $01
|
|
dw TileData_1db3e
|
|
|
|
TileData_1da2c: ; 0x1da2c
|
|
db $01
|
|
dw TileData_1db46
|
|
|
|
TileData_1da2f: ; 0x1da2f
|
|
db $01
|
|
dw TileData_1db4e
|
|
|
|
TileData_1da32: ; 0x1da32
|
|
db $01
|
|
dw TileData_1db56
|
|
|
|
TileData_1da35: ; 0x1da35
|
|
db $01
|
|
dw TileData_1db5e
|
|
|
|
TileData_1da38: ; 0x1da38
|
|
db $01
|
|
dw TileData_1db66
|
|
|
|
TileData_1da3b: ; 0x1da3b
|
|
db $01
|
|
dw TileData_1db6e
|
|
|
|
TileData_1da3e: ; 0x1da3e
|
|
db $01
|
|
dw TileData_1db76
|
|
|
|
TileData_1da41: ; 0x1da41
|
|
db $01
|
|
dw TileData_1db7e
|
|
|
|
TileData_1da44: ; 0x1da44
|
|
db $01
|
|
dw TileData_1db86
|
|
|
|
TileData_1da47: ; 0x1da47
|
|
db $01
|
|
dw TileData_1db8e
|
|
|
|
TileData_1da4a: ; 0x1da4a
|
|
db $01
|
|
dw TileData_1db96
|
|
|
|
TileData_1da4d: ; 0x1da4d
|
|
db $01
|
|
dw TileData_1dba5
|
|
|
|
TileData_1da50: ; 0x1da50
|
|
db $01
|
|
dw TileData_1dbb4
|
|
|
|
TileData_1da53: ; 0x1da53
|
|
db $01
|
|
dw TileData_1dbc3
|
|
|
|
TileData_1da56: ; 0x1da56
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $62
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da5e: ; 0x1da5e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $63
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da66: ; 0x1da66
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $64
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da6e: ; 0x1da6e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $65
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da76: ; 0x1da76
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $66
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da7e: ; 0x1da7e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $67
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da86: ; 0x1da86
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $68
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da8e: ; 0x1da8e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $69
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da96: ; 0x1da96
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $6A
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1da9e: ; 0x1da9e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $6B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1daa6: ; 0x1daa6
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $58
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1daae: ; 0x1daae
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $59
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dab6: ; 0x1dab6
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $5A
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dabe: ; 0x1dabe
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $5B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dac6: ; 0x1dac6
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $5C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dace: ; 0x1dace
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $5D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dad6: ; 0x1dad6
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $5E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dade: ; 0x1dade
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $5F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dae6: ; 0x1dae6
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $60
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1daee: ; 0x1daee
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $4
|
|
db $61
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1daf6: ; 0x1daf6
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $76
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dafe: ; 0x1dafe
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $77
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db06: ; 0x1db06
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $78
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db0e: ; 0x1db0e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $79
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db16: ; 0x1db16
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $7A
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db1e: ; 0x1db1e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $7B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db26: ; 0x1db26
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $7C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db2e: ; 0x1db2e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $7D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db36: ; 0x1db36
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $7E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db3e: ; 0x1db3e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $7F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db46: ; 0x1db46
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $6C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db4e: ; 0x1db4e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $6D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db56: ; 0x1db56
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $6E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db5e: ; 0x1db5e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $6F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db66: ; 0x1db66
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $70
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db6e: ; 0x1db6e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $71
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db76: ; 0x1db76
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $72
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db7e: ; 0x1db7e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $73
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db86: ; 0x1db86
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $74
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db8e: ; 0x1db8e
|
|
dw LoadTileLists
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $75
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1db96: ; 0x1db96
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $24
|
|
db $25, $26, $27
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $44
|
|
db $28, $29
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dba5: ; 0x1dba5
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $24
|
|
db $2A, $2B, $2C
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $44
|
|
db $2D, $2E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dbb4: ; 0x1dbb4
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $2D
|
|
db $27, $26, $2F
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $4E
|
|
db $29, $28
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dbc3: ; 0x1dbc3
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $2D
|
|
db $2C, $2B, $30
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $4E
|
|
db $2E, $2D
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolvePsyduckPoliwagCollision: ; 0x1dbd2
|
|
ld a, [wWhichPsyduckPoliwag]
|
|
and a
|
|
jp z, Func_1dc8e
|
|
cp $2
|
|
jr z, .asm_1dc33
|
|
xor a
|
|
ld [wWhichPsyduckPoliwag], a
|
|
ld hl, wLeftMapMoveCounter
|
|
ld a, [hl]
|
|
cp $3
|
|
jp z, Func_1dc8e
|
|
inc a
|
|
ld [hl], a
|
|
ld hl, wd4f7
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_1dc06
|
|
ld a, $54
|
|
ld [wc7e3], a
|
|
ld a, $55
|
|
ld [wc803], a
|
|
.asm_1dc06
|
|
ld a, $1
|
|
call Func_1de4b
|
|
ld a, [wLeftMapMoveCounter]
|
|
call Func_1de6f
|
|
ld a, [wLeftMapMoveCounter]
|
|
cp $3
|
|
ld a, $7
|
|
callba Func_10000
|
|
ld a, $2
|
|
ld [wd646], a
|
|
ld a, $78
|
|
ld [wLeftMapMoveDiglettAnimationCounter], a
|
|
ld a, $14
|
|
ld [wLeftMapMoveDiglettFrame], a
|
|
jr .asm_1dc8a
|
|
|
|
.asm_1dc33
|
|
xor a
|
|
ld [wWhichPsyduckPoliwag], a
|
|
ld hl, wRightMapMoveCounter
|
|
ld a, [hl]
|
|
cp $3
|
|
jp z, Func_1dc8e
|
|
inc a
|
|
ld [hl], a
|
|
ld hl, wd4f9
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_1dc5c
|
|
ld a, $52
|
|
ld [wc7f0], a
|
|
ld a, $53
|
|
ld [wc810], a
|
|
.asm_1dc5c
|
|
ld a, $3
|
|
call Func_1de4b
|
|
ld a, [wRightMapMoveCounter]
|
|
cp $3
|
|
ld a, $8
|
|
callba Func_10000
|
|
ld a, [wRightMapMoveCounter]
|
|
cp $3
|
|
ccf
|
|
call z, Func_1ddf4
|
|
ld a, $2
|
|
ld [wd645], a
|
|
ld a, $28
|
|
ld [wRightMapMoveDiglettAnimationCounter], a
|
|
ld a, $78
|
|
ld [wRightMapMoveDiglettFrame], a
|
|
.asm_1dc8a
|
|
call Func_1de22
|
|
ret
|
|
|
|
Func_1dc8e: ; 0x1dc8e
|
|
call Func_1dc95
|
|
call Func_1dd2e
|
|
ret
|
|
|
|
Func_1dc95: ; 0x1dc95
|
|
ld a, [wd646]
|
|
cp $0
|
|
ret z
|
|
ld a, [wLeftMapMoveDiglettAnimationCounter]
|
|
and a
|
|
jr z, .asm_1dceb
|
|
dec a
|
|
ld [wLeftMapMoveDiglettAnimationCounter], a
|
|
ld a, [wd644]
|
|
and a
|
|
ret nz
|
|
ld a, [wLeftMapMoveDiglettFrame]
|
|
cp $1
|
|
jr z, .asm_1dcb9
|
|
cp $0
|
|
ret z
|
|
dec a
|
|
ld [wLeftMapMoveDiglettFrame], a
|
|
ret
|
|
|
|
.asm_1dcb9
|
|
ld a, [wd646]
|
|
cp $2
|
|
ret nz
|
|
call Func_1130
|
|
ret nz
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1dcd7
|
|
ld a, [wLeftMapMoveCounter]
|
|
cp $0
|
|
jr z, .asm_1dcd4
|
|
ld b, $7
|
|
add b
|
|
jr .asm_1dcd9
|
|
|
|
.asm_1dcd4
|
|
xor a
|
|
jr .asm_1dcd9
|
|
|
|
.asm_1dcd7
|
|
ld a, $8
|
|
.asm_1dcd9
|
|
call Func_1de6f
|
|
ld a, [wLeftMapMoveCounter]
|
|
cp $3
|
|
ccf
|
|
call z, Func_1ddc7
|
|
ld a, $1
|
|
ld [wd646], a
|
|
ret
|
|
|
|
.asm_1dceb
|
|
ld a, [wd646]
|
|
cp $1
|
|
ret nz
|
|
ld a, [wLeftMapMoveDiglettAnimationCounter]
|
|
and a
|
|
ret nz
|
|
ld a, $0
|
|
call Func_1de4b
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_1dd0c
|
|
ld a, $5e
|
|
ld [wc7e3], a
|
|
ld a, $5f
|
|
ld [wc803], a
|
|
.asm_1dd0c
|
|
ld a, $0
|
|
ld [wd646], a
|
|
ld a, [wLeftMapMoveCounter]
|
|
sub $3
|
|
ret nz
|
|
ld a, [wLeftMapMoveCounter]
|
|
sub $3
|
|
ld [wLeftMapMoveCounter], a
|
|
call Func_1de6f
|
|
ld a, $0
|
|
call Func_1de4b
|
|
ld a, $0
|
|
ld [wd646], a
|
|
ret
|
|
|
|
; XXX
|
|
ret
|
|
|
|
Func_1dd2e: ; 0x1dd2e
|
|
ld a, [wd645]
|
|
cp $0
|
|
ret z
|
|
cp $1
|
|
jr z, .asm_1dd53
|
|
cp $3
|
|
jr z, .asm_1dd69
|
|
ld a, [wRightMapMoveDiglettAnimationCounter]
|
|
cp $0
|
|
jr z, .asm_1dd48
|
|
dec a
|
|
ld [wRightMapMoveDiglettAnimationCounter], a
|
|
ret
|
|
|
|
.asm_1dd48
|
|
ld a, $2
|
|
call Func_1de4b
|
|
ld a, $1
|
|
ld [wd645], a
|
|
ret
|
|
|
|
.asm_1dd53
|
|
ld a, [wRightMapMoveCounter]
|
|
add $4
|
|
call Func_1de6f
|
|
ld a, [wRightMapMoveCounter]
|
|
add $3
|
|
call Func_1de4b
|
|
ld a, $3
|
|
ld [wd645], a
|
|
ret
|
|
|
|
.asm_1dd69
|
|
ld a, [wRightMapMoveDiglettFrame]
|
|
and a
|
|
jr z, .asm_1dd74
|
|
dec a
|
|
ld [wRightMapMoveDiglettFrame], a
|
|
ret
|
|
|
|
.asm_1dd74
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1dd89
|
|
ld a, [wRightMapMoveCounter]
|
|
cp $0
|
|
jr z, .asm_1dd85
|
|
ld b, $a
|
|
add b
|
|
jr .asm_1dd8b
|
|
|
|
.asm_1dd85
|
|
ld a, $4
|
|
jr .asm_1dd8b
|
|
|
|
.asm_1dd89
|
|
ld a, $9
|
|
.asm_1dd8b
|
|
call Func_1de6f
|
|
ld a, $2
|
|
call Func_1de4b
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_1dda9
|
|
ld a, $24
|
|
ld [wc7f0], a
|
|
ld a, $25
|
|
ld [wc810], a
|
|
ld a, $0
|
|
ld [wd645], a
|
|
.asm_1dda9
|
|
ld a, [wRightMapMoveCounter]
|
|
sub $3
|
|
ret nz
|
|
ld a, [wRightMapMoveCounter]
|
|
sub $3
|
|
ld [wRightMapMoveCounter], a
|
|
ld a, $4
|
|
call Func_1de6f
|
|
ld a, $2
|
|
call Func_1de4b
|
|
ld a, $0
|
|
ld [wd645], a
|
|
ret
|
|
|
|
Func_1ddc7: ; 0x1ddc7
|
|
ld hl, wd63d
|
|
call Func_e4a
|
|
ld hl, wd62b
|
|
call Func_e4a
|
|
jr nc, .asm_1dde4
|
|
ld c, $a
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_1dde4
|
|
xor a
|
|
ld [wd55a], a
|
|
callba StartMapMoveMode
|
|
scf
|
|
ret
|
|
|
|
Func_1ddf4: ; 0x1ddf4
|
|
ld hl, wd63c
|
|
call Func_e4a
|
|
ld hl, wd62b
|
|
call Func_e4a
|
|
jr nc, .asm_1de11
|
|
ld c, $a
|
|
call Func_e55
|
|
callba z, Func_30164
|
|
.asm_1de11
|
|
ld a, $1
|
|
ld [wd55a], a
|
|
callba StartMapMoveMode
|
|
scf
|
|
ret
|
|
|
|
Func_1de22: ; 0x1de22
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld a, $55
|
|
ld [wd803], a
|
|
ld a, $4
|
|
ld [wd804], a
|
|
ld a, $2
|
|
ld [wd7eb], a
|
|
ld bc, FiveHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $0f
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_1de4b: ; 0x1de4b
|
|
ld b, a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld a, b
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1df66
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1de63
|
|
ld hl, TileDataPointers_1e00f
|
|
.asm_1de63
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_1df66)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_1de6f: ; 0x1de6f
|
|
ld b, a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld a, b
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1e0a4
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1de87
|
|
ld hl, TileDataPointers_1e1d6
|
|
.asm_1de87
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_1e0a4)
|
|
call Func_10aa
|
|
ret
|
|
|
|
Func_1de93: ; 0x1de93
|
|
ld hl, wd4f7
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_1ded2
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_1ded2
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wLeftMapMoveCounter]
|
|
and a
|
|
jr z, .asm_1ded2
|
|
cp $3
|
|
jr z, .asm_1ded2
|
|
dec a
|
|
ld [wLeftMapMoveCounter], a
|
|
call Func_1de6f
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1decd
|
|
ld a, [wLeftMapMoveCounter]
|
|
cp $0
|
|
jr z, .asm_1deca
|
|
ld b, $7
|
|
add b
|
|
jr .asm_1decf
|
|
|
|
.asm_1deca
|
|
xor a
|
|
jr .asm_1decf
|
|
|
|
.asm_1decd
|
|
ld a, $8
|
|
.asm_1decf
|
|
call Func_1de6f
|
|
.asm_1ded2
|
|
ld hl, wd4f9
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_1df14
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_1df14
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wRightMapMoveCounter]
|
|
and a
|
|
jr z, .asm_1df14
|
|
cp $3
|
|
jr z, .asm_1df14
|
|
dec a
|
|
ld [wRightMapMoveCounter], a
|
|
add $4
|
|
call Func_1de6f
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1df0f
|
|
ld a, [wRightMapMoveCounter]
|
|
cp $0
|
|
jr z, .asm_1df0b
|
|
ld b, $a
|
|
add b
|
|
jr .asm_1df11
|
|
|
|
.asm_1df0b
|
|
ld a, $4
|
|
jr .asm_1df11
|
|
|
|
.asm_1df0f
|
|
ld a, $9
|
|
.asm_1df11
|
|
call Func_1de6f
|
|
.asm_1df14
|
|
ret
|
|
|
|
Func_1df15: ; 0x1df15
|
|
ld b, $0
|
|
ld hl, wd4f8
|
|
ld a, [hld]
|
|
or [hl]
|
|
jr z, .asm_1df3e
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_1df3e
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_1df3e
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wLeftMapMoveCounter]
|
|
and a
|
|
jr z, .asm_1df3e
|
|
cp $3
|
|
jr z, .asm_1df3e
|
|
dec a
|
|
ld [wLeftMapMoveCounter], a
|
|
.asm_1df3e
|
|
ld hl, wd4fa
|
|
ld a, [hld]
|
|
or [hl]
|
|
jr z, .asm_1df65
|
|
dec [hl]
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr nz, .asm_1df65
|
|
dec [hl]
|
|
ld a, [hld]
|
|
cp $ff
|
|
jr nz, .asm_1df65
|
|
ld a, $e0
|
|
ld [hli], a
|
|
ld a, $1
|
|
ld [hl], a
|
|
ld a, [wRightMapMoveCounter]
|
|
and a
|
|
jr z, .asm_1df65
|
|
cp $3
|
|
jr z, .asm_1df65
|
|
dec a
|
|
ld [wRightMapMoveCounter], a
|
|
.asm_1df65
|
|
ret
|
|
|
|
TileDataPointers_1df66:
|
|
dw TileData_1df74
|
|
dw TileData_1df77
|
|
dw TileData_1df7a
|
|
dw TileData_1df7f
|
|
dw TileData_1df84
|
|
dw TileData_1df89
|
|
dw TileData_1df8e
|
|
|
|
TileData_1df74: ; 0x1df74
|
|
db $01
|
|
dw TileData_1df93
|
|
|
|
TileData_1df77: ; 0x1df77
|
|
db $01
|
|
dw TileData_1df9f
|
|
|
|
TileData_1df7a: ; 0x1df7a
|
|
db $02
|
|
dw TileData_1dfab
|
|
dw TileData_1dfb5
|
|
|
|
TileData_1df7f: ; 0x1df7f
|
|
db $02
|
|
dw TileData_1dfbf
|
|
dw TileData_1dfc9
|
|
|
|
TileData_1df84: ; 0x1df84
|
|
db $02
|
|
dw TileData_1dfd3
|
|
dw TileData_1dfdd
|
|
|
|
TileData_1df89: ; 0x1df89
|
|
db $02
|
|
dw TileData_1dfe7
|
|
dw TileData_1dff1
|
|
|
|
TileData_1df8e: ; 0x1df8e
|
|
db $02
|
|
dw TileData_1dffb
|
|
dw TileData_1e005
|
|
|
|
TileData_1df93: ; 0x1df93
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A3
|
|
db $4A
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $C3
|
|
db $4B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1df9f: ; 0x1df9f
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A3
|
|
db $4C
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $C3
|
|
db $4D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1dfab: ; 0x1dfab
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4E
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $CE0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1dfb5: ; 0x1dfb5
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $51
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $D10
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1dfbf: ; 0x1dfbf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4E
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $D30
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1dfc9: ; 0x1dfc9
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $51
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $D60
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1dfd3: ; 0x1dfd3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1dfdd: ; 0x1dfdd
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $51
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1dfe7: ; 0x1dfe7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2100
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1dff1: ; 0x1dff1
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $51
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2130
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1dffb: ; 0x1dffb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $4E
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2150
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e005: ; 0x1e005
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $51
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2180
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileDataPointers_1e00f:
|
|
dw TileData_1e01d
|
|
dw TileData_1e020
|
|
dw TileData_1e023
|
|
dw TileData_1e026
|
|
dw TileData_1e029
|
|
dw TileData_1e02c
|
|
dw TileData_1e02f
|
|
|
|
TileData_1e01d: ; 0x1e01d
|
|
db $01
|
|
dw TileData_1e032
|
|
|
|
TileData_1e020: ; 0x1e020
|
|
db $01
|
|
dw TileData_1e03e
|
|
|
|
TileData_1e023: ; 0x1e023
|
|
db $01
|
|
dw TileData_1e04a
|
|
|
|
TileData_1e026: ; 0x1e026
|
|
db $01
|
|
dw TileData_1e05c
|
|
|
|
TileData_1e029: ; 0x1e029
|
|
db $01
|
|
dw TileData_1e06e
|
|
|
|
TileData_1e02c: ; 0x1e02c
|
|
db $01
|
|
dw TileData_1e080
|
|
|
|
TileData_1e02f: ; 0x1e02f
|
|
db $01
|
|
dw TileData_1e092
|
|
|
|
TileData_1e032: ; 0x1e032
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A3
|
|
db $35
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $C3
|
|
db $36
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e03e: ; 0x1e03e
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A3
|
|
db $37
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $C3
|
|
db $38
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e04a: ; 0x1e04a
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $90
|
|
db $4F
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $AF
|
|
db $50, $51
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $CF
|
|
db $52, $53
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e05c: ; 0x1e05c
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $90
|
|
db $54
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $AF
|
|
db $55, $56
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $CF
|
|
db $57, $58
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e06e: ; 0x1e06e
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $90
|
|
db $59
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $AF
|
|
db $5A, $5B
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $CF
|
|
db $5C, $5D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e080: ; 0x1e080
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $90
|
|
db $59
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $AF
|
|
db $5A, $5E
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $CF
|
|
db $5C, $5F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e092: ; 0x1e092
|
|
dw LoadTileLists
|
|
db $05 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $90
|
|
db $60
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $AF
|
|
db $61, $62
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $CF
|
|
db $63, $64
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1e0a4:
|
|
dw TileData_1e0b8
|
|
dw TileData_1e0bf
|
|
dw TileData_1e0c6
|
|
dw TileData_1e0cd
|
|
dw TileData_1e0d4
|
|
dw TileData_1e0d9
|
|
dw TileData_1e0de
|
|
dw TileData_1e0e3
|
|
dw TileData_1e0e8
|
|
dw TileData_1e0ed
|
|
|
|
TileData_1e0b8: ; 0x1e0b8
|
|
db $03
|
|
dw TileData_1e0f0
|
|
dw TileData_1e0fa
|
|
dw TileData_1e104
|
|
|
|
TileData_1e0bf: ; 0x1e0bf
|
|
db $03
|
|
dw TileData_1e10e
|
|
dw TileData_1e118
|
|
dw TileData_1e122
|
|
|
|
TileData_1e0c6: ; 0x1e0c6
|
|
db $03
|
|
dw TileData_1e12c
|
|
dw TileData_1e136
|
|
dw TileData_1e140
|
|
|
|
TileData_1e0cd: ; 0x1e0cd
|
|
db $03
|
|
dw TileData_1e14a
|
|
dw TileData_1e154
|
|
dw TileData_1e15e
|
|
|
|
TileData_1e0d4: ; 0x1e0d4
|
|
db $02
|
|
dw TileData_1e168
|
|
dw TileData_1e172
|
|
|
|
TileData_1e0d9: ; 0x1e0d9
|
|
db $02
|
|
dw TileData_1e17c
|
|
dw TileData_1e186
|
|
|
|
TileData_1e0de: ; 0x1e0de
|
|
db $02
|
|
dw TileData_1e190
|
|
dw TileData_1e19a
|
|
|
|
TileData_1e0e3: ; 0x1e0e3
|
|
db $02
|
|
dw TileData_1e1a4
|
|
dw TileData_1e1ae
|
|
|
|
TileData_1e0e8: ; 0x1e0e8
|
|
db $02
|
|
dw TileData_1e1b8
|
|
dw TileData_1e1c2
|
|
|
|
TileData_1e0ed: ; 0x1e0ed
|
|
db $01
|
|
dw TileData_1e1cc
|
|
|
|
TileData_1e0f0: ; 0x1e0f0
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $C10
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e0fa: ; 0x1e0fa
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $C40
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e104: ; 0x1e104
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $47
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $C70
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e10e: ; 0x1e10e
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FC0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e118: ; 0x1e118
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e122: ; 0x1e122
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e12c: ; 0x1e12c
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FF0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e136: ; 0x1e136
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e140: ; 0x1e140
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e14a: ; 0x1e14a
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $41
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2020
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e154: ; 0x1e154
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e15e: ; 0x1e15e
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $47
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e168: ; 0x1e168
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $58
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $D80
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e172: ; 0x1e172
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5A
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $DA0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e17c: ; 0x1e17c
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $58
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e186: ; 0x1e186
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21E0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e190: ; 0x1e190
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $58
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e19a: ; 0x1e19a
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2210
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e1a4: ; 0x1e1a4
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $58
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21C0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e1ae: ; 0x1e1ae
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $5A
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2240
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e1b8: ; 0x1e1b8
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $44
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $C40
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e1c2: ; 0x1e1c2
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesBG tile $47
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $C70
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e1cc: ; 0x1e1cc
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $58
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $D80
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileDataPointers_1e1d6:
|
|
dw TileData_1e1f2
|
|
dw TileData_1e1f5
|
|
dw TileData_1e1f8
|
|
dw TileData_1e1fb
|
|
dw TileData_1e1fe
|
|
dw TileData_1e201
|
|
dw TileData_1e204
|
|
dw TileData_1e207
|
|
dw TileData_1e20a
|
|
dw TileData_1e20d
|
|
dw TileData_1e210
|
|
dw TileData_1e213
|
|
dw TileData_1e216
|
|
dw TileData_1e219
|
|
|
|
TileData_1e1f2: ; 0x1e1f2
|
|
db $01
|
|
dw TileData_1e21c
|
|
|
|
TileData_1e1f5: ; 0x1e1f5
|
|
db $01
|
|
dw TileData_1e238
|
|
|
|
TileData_1e1f8: ; 0x1e1f8
|
|
db $01
|
|
dw TileData_1e254
|
|
|
|
TileData_1e1fb: ; 0x1e1fb
|
|
db $01
|
|
dw TileData_1e270
|
|
|
|
TileData_1e1fe: ; 0x1e1fe
|
|
db $01
|
|
dw TileData_1e28c
|
|
|
|
TileData_1e201: ; 0x1e201
|
|
db $01
|
|
dw TileData_1e2a2
|
|
|
|
TileData_1e204: ; 0x1e204
|
|
db $01
|
|
dw TileData_1e2b8
|
|
|
|
TileData_1e207: ; 0x1e207
|
|
db $01
|
|
dw TileData_1e2ce
|
|
|
|
TileData_1e20a: ; 0x1e20a
|
|
db $01
|
|
dw TileData_1e2e4
|
|
|
|
TileData_1e20d: ; 0x1e20d
|
|
db $01
|
|
dw TileData_1e2fa
|
|
|
|
TileData_1e210: ; 0x1e210
|
|
db $01
|
|
dw TileData_1e310
|
|
|
|
TileData_1e213: ; 0x1e213
|
|
db $01
|
|
dw TileData_1e326
|
|
|
|
TileData_1e216: ; 0x1e216
|
|
db $01
|
|
dw TileData_1e336
|
|
|
|
TileData_1e219: ; 0x1e219
|
|
db $01
|
|
dw TileData_1e346
|
|
|
|
TileData_1e21c: ; 0x1e21c
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $60
|
|
db $36, $37, $38
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $39, $3A, $3B
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A0
|
|
db $4C, $4D, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C0
|
|
db $4F, $50, $51
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e238: ; 0x1e238
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $60
|
|
db $3C, $37, $38
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $3D, $3E, $3B
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A0
|
|
db $52, $53, $54
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C0
|
|
db $55, $56, $57
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e254: ; 0x1e254
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $60
|
|
db $40, $41, $38
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $42, $43, $3B
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A0
|
|
db $52, $53, $54
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C0
|
|
db $55, $56, $57
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e270: ; 0x1e270
|
|
dw LoadTileLists
|
|
db $0C ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $60
|
|
db $36, $46, $47
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $48, $49, $4A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A0
|
|
db $52, $53, $54
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C0
|
|
db $55, $56, $57
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e28c: ; 0x1e28c
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $91
|
|
db $4D, $65, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $B1
|
|
db $66, $67, $68
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $D1
|
|
db $69, $6A, $6B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e2a2: ; 0x1e2a2
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $91
|
|
db $4D, $6C, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $B1
|
|
db $6D, $6E, $68
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $D1
|
|
db $6F, $70, $6B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e2b8: ; 0x1e2b8
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $91
|
|
db $4D, $6C, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $B1
|
|
db $66, $72, $68
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $D1
|
|
db $69, $73, $6B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e2ce: ; 0x1e2ce
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $91
|
|
db $4D, $75, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $B1
|
|
db $66, $76, $77
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $D1
|
|
db $69, $78, $79
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e2e4: ; 0x1e2e4
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $3F, $3A, $3B
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A0
|
|
db $4C, $4D, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C0
|
|
db $4F, $50, $51
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e2fa: ; 0x1e2fa
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $44, $45, $3B
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A0
|
|
db $4C, $4D, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C0
|
|
db $4F, $50, $51
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e310: ; 0x1e310
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $80
|
|
db $39, $4B, $4A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $A0
|
|
db $4C, $4D, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C0
|
|
db $4F, $50, $51
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e326: ; 0x1e326
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $91
|
|
db $4D, $65, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $B1
|
|
db $6D, $71, $68
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e336: ; 0x1e336
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $91
|
|
db $4D, $65, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $B1
|
|
db $66, $74, $68
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e346: ; 0x1e346
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $91
|
|
db $4D, $65, $4E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $B1
|
|
db $66, $67, $77
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356
|
|
ld a, [wWhichPinballUpgradeTrigger]
|
|
and a
|
|
jp z, Func_1e471
|
|
xor a
|
|
ld [wWhichPinballUpgradeTrigger], a
|
|
ld a, [wStageCollisionState]
|
|
cp $0
|
|
jr nz, .asm_1e386
|
|
ld a, $1
|
|
ld [wStageCollisionState], a
|
|
callba LoadStageCollisionAttributes
|
|
ld a, $1
|
|
ld [wd580], a
|
|
callba Func_1404a
|
|
.asm_1e386
|
|
ld a, [wStageCollisionState]
|
|
bit 0, a
|
|
jp z, Func_1e471
|
|
ld a, [wd5fc]
|
|
and a
|
|
jp nz, Func_1e471
|
|
xor a
|
|
ld [wRightAlleyTrigger], a
|
|
ld [wLeftAlleyTrigger], a
|
|
ld [wSecondaryLeftAlleyTrigger], a
|
|
ld a, $b
|
|
callba Func_10000
|
|
ld a, [wWhichPinballUpgradeTriggerId]
|
|
sub $13
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd5f9
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [hl], $1
|
|
and a
|
|
jr z, .asm_1e3bf
|
|
ld [hl], $0
|
|
.asm_1e3bf
|
|
ld bc, OneHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld hl, wd5f9
|
|
ld a, [hli]
|
|
and [hl]
|
|
inc hl
|
|
and [hl]
|
|
jr nz, .asm_1e3de
|
|
lb de, $00, $09
|
|
call PlaySoundEffect
|
|
jp asm_1e475
|
|
|
|
.asm_1e3de
|
|
ld a, $1
|
|
ld [wd5fc], a
|
|
ld a, $80
|
|
ld [wd5fd], a
|
|
; load approximately 1 minute of frames into wBallTypeCounter
|
|
ld a, $10
|
|
ld [wBallTypeCounter], a
|
|
ld a, $e
|
|
ld [wBallTypeCounter + 1], a
|
|
ld bc, FourHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld a, [wBallType]
|
|
cp MASTER_BALL
|
|
jr z, .masterBall
|
|
lb de, $06, $3a
|
|
call PlaySoundEffect
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, FieldMultiplierText
|
|
call LoadTextHeader
|
|
ld a, [wBallType]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallTypeProgression2BlueField
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wBallType], a
|
|
add $30
|
|
ld [wBottomMessageText + $12], a
|
|
jr .asm_1e465
|
|
|
|
.masterBall
|
|
lb de, $0f, $4d
|
|
call PlaySoundEffect
|
|
ld bc, OneMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $0100
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5d4
|
|
ld de, DigitsText1to8
|
|
call Func_32cc
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5cc
|
|
ld de, FieldMultiplierSpecialBonusText
|
|
call LoadTextHeader
|
|
.asm_1e465
|
|
callba TransitionPinballUpgrade
|
|
jr asm_1e475
|
|
|
|
Func_1e471: ; 0x1e471
|
|
call Func_1e4b8
|
|
ret z
|
|
asm_1e475: ; 0x1e475
|
|
ld hl, wd5fb
|
|
ld b, $3
|
|
.asm_1e47a
|
|
ld a, [hld]
|
|
push hl
|
|
call Func_1e484
|
|
pop hl
|
|
dec b
|
|
jr nz, .asm_1e47a
|
|
ret
|
|
|
|
Func_1e484: ; 0x1e484
|
|
and a
|
|
jr z, .asm_1e496
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1e491
|
|
ld hl, TileDataPointers_1e520
|
|
jr .asm_1e4a3
|
|
|
|
.asm_1e491
|
|
ld hl, TileDataPointers_1e556
|
|
jr .asm_1e4a3
|
|
|
|
.asm_1e496
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1e4a0
|
|
ld hl, TileDataPointers_1e526
|
|
jr .asm_1e4a3
|
|
|
|
.asm_1e4a0
|
|
ld hl, TileDataPointers_1e55c
|
|
.asm_1e4a3
|
|
push bc
|
|
dec b
|
|
sla b
|
|
ld e, b
|
|
ld d, $0
|
|
add hl, de
|
|
ld c, [hl]
|
|
inc hl
|
|
ld b, [hl]
|
|
ld a, $7
|
|
ld de, LoadTileLists
|
|
call Func_10c5
|
|
pop bc
|
|
ret
|
|
|
|
Func_1e4b8: ; 0x1e4b8
|
|
ld a, [wd5fc]
|
|
and a
|
|
jr z, .asm_1e4e5
|
|
ld a, [wd5fd]
|
|
dec a
|
|
ld [wd5fd], a
|
|
jr nz, .asm_1e4ca
|
|
ld [wd5fc], a
|
|
.asm_1e4ca
|
|
and $7
|
|
jr nz, .asm_1e4e3
|
|
ld a, [wd5fd]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $1
|
|
ld hl, wd5f9
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld a, $1
|
|
and a
|
|
ret
|
|
|
|
.asm_1e4e3
|
|
xor a
|
|
ret
|
|
|
|
.asm_1e4e5
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed
|
|
jr z, .leftFlipperKeyIsPressed
|
|
; left flipper key is pressed
|
|
ld hl, wd5f9
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, e
|
|
ld [hld], a
|
|
ld a, b
|
|
ld [hl], a
|
|
ret
|
|
|
|
.leftFlipperKeyIsPressed
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed
|
|
ret z
|
|
; right flipper key is pressed
|
|
ld hl, wd5f9
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld a, b
|
|
ld [hld], a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, e
|
|
ld [hl], a
|
|
ret
|
|
|
|
BallTypeProgression2BlueField: ; 0x1e514
|
|
; Determines the next upgrade for the Ball.
|
|
db GREAT_BALL ; POKE_BALL -> GREAT_BALL
|
|
db GREAT_BALL ; unused
|
|
db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
|
|
db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
|
|
db MASTER_BALL ; unused
|
|
db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
|
|
|
|
BallTypeDegradation2BlueField: ; 0x1e51a
|
|
; Determines the previous upgrade for the Ball.
|
|
db POKE_BALL ; POKE_BALL -> POKE_BALL
|
|
db POKE_BALL ; unused
|
|
db POKE_BALL ; GREAT_BALL -> POKE_BALL
|
|
db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
|
|
db ULTRA_BALL ; unused
|
|
db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
|
|
|
|
TileDataPointers_1e520:
|
|
dw TileData_1e52c
|
|
dw TileData_1e533
|
|
dw TileData_1e53a
|
|
|
|
TileDataPointers_1e526:
|
|
dw TileData_1e541
|
|
dw TileData_1e548
|
|
dw TileData_1e54f
|
|
|
|
TileData_1e52c: ; 0x1e52c
|
|
db $02, $02
|
|
dw vBGMap + $86
|
|
db $66, $67
|
|
db $00
|
|
|
|
TileData_1e533: ; 0x1e533
|
|
db $02, $02
|
|
dw vBGMap + $69
|
|
db $66, $67
|
|
db $00
|
|
|
|
TileData_1e53a: ; 0x1e53a
|
|
db $02, $02
|
|
dw vBGMap + $8C
|
|
db $66, $67
|
|
db $00
|
|
|
|
TileData_1e541: ; 0x1e541
|
|
db $02, $02
|
|
dw vBGMap + $86
|
|
db $64, $65
|
|
db $00
|
|
|
|
TileData_1e548: ; 0x1e548
|
|
db $02, $02
|
|
dw vBGMap + $69
|
|
db $64, $65
|
|
db $00
|
|
|
|
TileData_1e54f: ; 0x1e54f
|
|
db $02, $02
|
|
dw vBGMap + $8C
|
|
db $64, $65
|
|
db $00
|
|
|
|
TileDataPointers_1e556:
|
|
dw TileData_1e562
|
|
dw TileData_1e569
|
|
dw TileData_1e570
|
|
|
|
TileDataPointers_1e55c:
|
|
dw TileData_1e577
|
|
dw TileData_1e57e
|
|
dw TileData_1e585
|
|
|
|
TileData_1e562: ; 0x1e562
|
|
db $02, $02
|
|
dw vBGMap + $86
|
|
db $43, $43
|
|
db $00
|
|
|
|
TileData_1e569: ; 0x1e569
|
|
db $02, $02
|
|
dw vBGMap + $69
|
|
db $43, $43
|
|
db $00
|
|
|
|
TileData_1e570: ; 0x1e570
|
|
db $02, $02
|
|
dw vBGMap + $8C
|
|
db $43, $43
|
|
db $00
|
|
|
|
TileData_1e577: ; 0x1e577
|
|
db $02, $02
|
|
dw vBGMap + $86
|
|
db $42, $42
|
|
db $00
|
|
|
|
TileData_1e57e: ; 0x1e57e
|
|
db $02, $02
|
|
dw vBGMap + $69
|
|
db $42, $42
|
|
db $00
|
|
|
|
TileData_1e585: ; 0x1e585
|
|
db $02, $02
|
|
dw vBGMap + $8C
|
|
db $42, $42
|
|
db $00
|
|
|
|
HandleBlueStageBallTypeUpgradeCounter: ; 0x1e58c
|
|
ld a, [wCapturingMon]
|
|
and a
|
|
ret nz
|
|
; check if counter is at 0
|
|
ld hl, wBallTypeCounter
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld b, [hl]
|
|
or b
|
|
ret z
|
|
dec bc
|
|
ld a, b
|
|
ld [hld], a
|
|
ld [hl], c
|
|
or c
|
|
ret nz
|
|
; counter is now 0! Degrade the ball upgrade.
|
|
ld a, [wBallType]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BallTypeDegradation2BlueField
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wBallType], a
|
|
and a
|
|
jr z, .pokeball
|
|
; load approximately 1 minute of frames into wBallTypeCounter
|
|
ld a, $10
|
|
ld [wBallTypeCounter], a
|
|
ld a, $e
|
|
ld [wBallTypeCounter + 1], a
|
|
.pokeball
|
|
callba TransitionPinballUpgrade
|
|
ret
|
|
|
|
Func_1e5c5: ; 0x1e5c5
|
|
ld a, [wWhichCAVELight]
|
|
and a
|
|
jr z, .asm_1e623
|
|
xor a
|
|
ld [wWhichCAVELight], a
|
|
ld a, [wd513]
|
|
and a
|
|
jr nz, .asm_1e623
|
|
ld a, [wWhichCAVELightId]
|
|
sub $16
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd50f
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [hl], $1
|
|
and a
|
|
ret nz
|
|
ld bc, OneHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld hl, wd50f
|
|
ld a, [hli]
|
|
and [hl]
|
|
inc hl
|
|
and [hl]
|
|
inc hl
|
|
and [hl]
|
|
jr z, Func_1e627
|
|
ld a, $1
|
|
ld [wd513], a
|
|
ld a, $80
|
|
ld [wd514], a
|
|
ld bc, FourHundredPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
lb de, $00, $09
|
|
call PlaySoundEffect
|
|
ld hl, wd62c
|
|
call Func_e4a
|
|
jr Func_1e627
|
|
|
|
.asm_1e623
|
|
call Func_1e66a
|
|
ret z
|
|
; fall through
|
|
|
|
Func_1e627: ; 0x1e627
|
|
ld hl, wd512
|
|
ld b, $4
|
|
.asm_1e62c
|
|
ld a, [hld]
|
|
push hl
|
|
call Func_1e636
|
|
pop hl
|
|
dec b
|
|
jr nz, .asm_1e62c
|
|
ret
|
|
|
|
Func_1e636: ; 0x1e636
|
|
and a
|
|
jr z, .asm_1e648
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1e643
|
|
ld hl, TileDataPointers_1e6d7
|
|
jr .asm_1e655
|
|
|
|
.asm_1e643
|
|
ld hl, TileDataPointers_1e717
|
|
jr .asm_1e655
|
|
|
|
.asm_1e648
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr nz, .asm_1e652
|
|
ld hl, TileDataPointers_1e6df
|
|
jr .asm_1e655
|
|
|
|
.asm_1e652
|
|
ld hl, TileDataPointers_1e71f
|
|
.asm_1e655
|
|
push bc
|
|
dec b
|
|
sla b
|
|
ld e, b
|
|
ld d, $0
|
|
add hl, de
|
|
ld c, [hl]
|
|
inc hl
|
|
ld b, [hl]
|
|
ld a, $7
|
|
ld de, LoadTileLists
|
|
call Func_10c5
|
|
pop bc
|
|
ret
|
|
|
|
Func_1e66a: ; 0x1e66a
|
|
ld a, [wd513]
|
|
and a
|
|
jr z, .asm_1e6a0
|
|
ld a, [wd514]
|
|
dec a
|
|
ld [wd514], a
|
|
jr nz, .asm_1e687
|
|
ld [wd513], a
|
|
ld a, $1
|
|
ld [wd608], a
|
|
ld a, $3
|
|
ld [wd607], a
|
|
xor a
|
|
.asm_1e687
|
|
and $7
|
|
ret nz
|
|
ld a, [wd514]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $1
|
|
ld hl, wd50f
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld a, $1
|
|
and a
|
|
ret
|
|
|
|
.asm_1e6a0
|
|
ld hl, wKeyConfigLeftFlipper
|
|
call IsKeyPressed
|
|
jr z, .asm_1e6bc
|
|
ld hl, wd50f
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, d
|
|
ld [hld], a
|
|
ld a, e
|
|
ld [hld], a
|
|
ld a, b
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_1e6bc
|
|
ld hl, wKeyConfigRightFlipper
|
|
call IsKeyPressed
|
|
ret z
|
|
ld hl, wd50f
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld a, e
|
|
ld [hld], a
|
|
ld a, b
|
|
ld [hld], a
|
|
ld a, c
|
|
ld [hld], a
|
|
ld a, d
|
|
ld [hl], a
|
|
ret
|
|
|
|
TileDataPointers_1e6d7:
|
|
dw TileData_1e6e7
|
|
dw TileData_1e6ed
|
|
dw TileData_1e6f3
|
|
dw TileData_1e6f9
|
|
|
|
TileDataPointers_1e6df:
|
|
dw TileData_1e6ff
|
|
dw TileData_1e705
|
|
dw TileData_1e70b
|
|
dw TileData_1e711
|
|
|
|
TileData_1e6e7: ; 0x1e6e7
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $5E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e6ed: ; 0x1e6ed
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $5E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e6f3: ; 0x1e6f3
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $60
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e6f9: ; 0x1e6f9
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $60
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e6ff: ; 0x1e6ff
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $5D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e705: ; 0x1e705
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $5D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e70b: ; 0x1e70b
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $5F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e711: ; 0x1e711
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $5F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1e717:
|
|
dw TileData_1e727
|
|
dw TileData_1e72d
|
|
dw TileData_1e733
|
|
dw TileData_1e739
|
|
|
|
TileDataPointers_1e71f:
|
|
dw TileData_1e73f
|
|
dw TileData_1e745
|
|
dw TileData_1e74b
|
|
dw TileData_1e751
|
|
|
|
TileData_1e727: ; 0x1e727
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $49
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e72d: ; 0x1e72d
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $4A
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e733: ; 0x1e733
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $4B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e739: ; 0x1e739
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $4C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e73f: ; 0x1e73f
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $121
|
|
db $47
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e745: ; 0x1e745
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $123
|
|
db $48
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e74b: ; 0x1e74b
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $130
|
|
db $7A
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e751: ; 0x1e751
|
|
db $01 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $132
|
|
db $7B
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_1e757: ; 0x1e757
|
|
ld a, [wSlotCollision]
|
|
and a
|
|
jr z, .asm_1e78c
|
|
xor a
|
|
ld [wSlotCollision], a
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wd603]
|
|
and a
|
|
jr nz, .asm_1e78c
|
|
xor a
|
|
ld hl, wBallXVelocity
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wd549], a
|
|
ld [wBallXPos], a
|
|
ld [wBallYPos], a
|
|
ld a, $50
|
|
ld [wBallXPos + 1], a
|
|
ld a, $16
|
|
ld [wBallYPos + 1], a
|
|
ld a, $13
|
|
ld [wd603], a
|
|
.asm_1e78c
|
|
ld a, [wd603]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd603], a
|
|
ld a, $18
|
|
ld [wd606], a
|
|
ld a, [wd603]
|
|
cp $12
|
|
jr nz, .asm_1e7b2
|
|
lb de, $00, $21
|
|
call PlaySoundEffect
|
|
callba LoadMiniBallGfx
|
|
ret
|
|
|
|
.asm_1e7b2
|
|
cp $f
|
|
jr nz, .asm_1e7c1
|
|
callba Func_dd62
|
|
ret
|
|
|
|
.asm_1e7c1
|
|
cp $c
|
|
jr nz, .asm_1e7d0
|
|
xor a
|
|
ld [wd548], a
|
|
ld [wBallSpin], a
|
|
ld [wBallRotation], a
|
|
ret
|
|
|
|
.asm_1e7d0
|
|
cp $9
|
|
jr nz, .asm_1e7d8
|
|
call Func_1e830
|
|
ret
|
|
|
|
.asm_1e7d8
|
|
cp $6
|
|
jr nz, .asm_1e7f5
|
|
xor a
|
|
ld [wd604], a
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
callba LoadMiniBallGfx
|
|
ret
|
|
|
|
.asm_1e7f5
|
|
cp $3
|
|
jr nz, .asm_1e80e
|
|
callba LoadBallGfx
|
|
ld a, $2
|
|
ld [wBallYVelocity + 1], a
|
|
ld a, $80
|
|
ld [wBallXVelocity], a
|
|
ret
|
|
|
|
.asm_1e80e
|
|
and a
|
|
ret nz
|
|
call Func_1e8f6
|
|
ld a, [wd622]
|
|
cp $1
|
|
ret nz
|
|
call GenRandom
|
|
and $8
|
|
ld [wRareMonsFlag], a
|
|
callba StartCatchEmMode
|
|
xor a
|
|
ld [wd622], a
|
|
ret
|
|
|
|
Func_1e830: ; 0x1e830
|
|
xor a
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $d
|
|
callba Func_10000
|
|
jr nc, .asm_1e84b
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ret
|
|
|
|
.asm_1e84b
|
|
ld a, [wd624]
|
|
cp $3
|
|
jr nz, .asm_1e891
|
|
ld a, [wd607]
|
|
and a
|
|
jr nz, .asm_1e891
|
|
.asm_1e858
|
|
ld a, [wd623]
|
|
and a
|
|
jr nz, .asm_1e867
|
|
xor a
|
|
ld [wd625], a
|
|
ld a, $40
|
|
ld [wd626], a
|
|
.asm_1e867
|
|
xor a
|
|
ld [wd623], a
|
|
ld a, $1
|
|
ld [wd495], a
|
|
ld [wd4ae], a
|
|
ld a, [wd498]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, GoToBonusStageTextIds_BlueField
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd497], a
|
|
call Func_1e8c3
|
|
xor a
|
|
ld [wd609], a
|
|
ld [wd622], a
|
|
ld a, $1e
|
|
ld [wd607], a
|
|
ret
|
|
|
|
.asm_1e891
|
|
callba Func_ed8e
|
|
xor a
|
|
ld [wd608], a
|
|
ld a, [wd61d]
|
|
cp $d
|
|
jr nc, .asm_1e858
|
|
ld a, $1
|
|
ld [wd548], a
|
|
ld [wd549], a
|
|
ld a, [wd622]
|
|
cp $2
|
|
ret nz
|
|
callba Func_10ab3
|
|
xor a
|
|
ld [wd622], a
|
|
ret
|
|
|
|
Func_1e8c3: ; 0x1e8c3
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld a, [wd497]
|
|
ld de, GoToMeowthStageText
|
|
cp STAGE_MEOWTH_BONUS
|
|
jr z, .loadText
|
|
ld de, GoToSeelStageText
|
|
cp STAGE_SEEL_BONUS
|
|
jr z, .loadText
|
|
ld de, GoToMewtwoStageText
|
|
.loadText
|
|
call LoadTextHeader
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
lb de, $3c, $23
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
GoToBonusStageTextIds_BlueField:
|
|
db STAGE_GENGAR_BONUS
|
|
db STAGE_MEWTWO_BONUS
|
|
db STAGE_MEOWTH_BONUS
|
|
db STAGE_DIGLETT_BONUS
|
|
db STAGE_SEEL_BONUS
|
|
|
|
Func_1e8f6: ; 0x1e8f6
|
|
ld a, [wCurrentStage]
|
|
and $1
|
|
sla a
|
|
ld c, a
|
|
ld a, [wd604]
|
|
add c
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1e91e
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1e912
|
|
ld hl, TileDataPointers_1e970
|
|
.asm_1e912
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_1e91e)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_1e91e:
|
|
dw TileData_1e926
|
|
dw TileData_1e929
|
|
dw TileData_1e92c
|
|
dw TileData_1e931
|
|
|
|
TileData_1e926: ; 0x1e926
|
|
db $01
|
|
dw TileData_1e936
|
|
|
|
TileData_1e929: ; 0x1e929
|
|
db $01
|
|
dw TileData_1e93f
|
|
|
|
TileData_1e92c: ; 0x1e92c
|
|
db $02
|
|
dw TileData_1e948
|
|
dw TileData_1e952
|
|
|
|
TileData_1e931: ; 0x1e931
|
|
db $02
|
|
dw TileData_1e95c
|
|
dw TileData_1e966
|
|
|
|
TileData_1e936: ; 0x1e936
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $229
|
|
db $EE, $EF
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e93f: ; 0x1e93f
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $229
|
|
db $F0, $F1
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e948: ; 0x1e948
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1F
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $9F0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e952: ; 0x1e952
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $21
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $A10
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1e95c: ; 0x1e95c
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1F
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BC0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e966: ; 0x1e966
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $21
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BE0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileDataPointers_1e970:
|
|
dw TileData_1e978
|
|
dw TileData_1e97d
|
|
dw TileData_1e980
|
|
dw TileData_1e983
|
|
|
|
TileData_1e978: ; 0x1e978
|
|
db $02
|
|
dw TileData_1e986
|
|
dw TileData_1e98F
|
|
|
|
TileData_1e97d: ; 0x1e97d
|
|
db $01
|
|
dw TileData_1e99b
|
|
|
|
TileData_1e980: ; 0x1e980
|
|
db $01
|
|
dw TileData_1e9a4
|
|
|
|
TileData_1e983: ; 0x1e983
|
|
db $01
|
|
dw TileData_1e9b2
|
|
|
|
TileData_1e986: ; 0x1e986
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $229
|
|
db $F0, $F1
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e98F: ; 0x1e98F
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $224
|
|
db $D8
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $22f
|
|
db $EC
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e99b: ; 0x1e99b
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $229
|
|
db $F2, $F3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e9a4: ; 0x1e9a4
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw $9809
|
|
db $15, $16
|
|
|
|
db $02 ; terminator
|
|
dw vBGMap + $29
|
|
db $17, $18
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1e9b2: ; 0x1e9b2
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $19, $1A
|
|
|
|
db $02 ; terminator
|
|
dw vBGMap + $29
|
|
db $1B, $1C
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_1e9c0: ; 0x1e9c0
|
|
ld a, [wd607]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd607], a
|
|
ret nz
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret nz
|
|
ld a, [wd609]
|
|
and a
|
|
jr z, .asm_1e9dc
|
|
ld a, [wd498]
|
|
add $15
|
|
jr .asm_1e9e3
|
|
|
|
.asm_1e9dc
|
|
ld a, [wd608]
|
|
and a
|
|
ret z
|
|
ld a, $1a
|
|
.asm_1e9e3
|
|
ld hl, wCurrentStage
|
|
bit 0, [hl]
|
|
callba nz, Func_30256
|
|
ld a, [wd604]
|
|
and a
|
|
ret nz
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
call nz, Func_1e8f6
|
|
ret
|
|
|
|
Func_1ea0a: ; 0x1ea0a
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wBallYPos + 1]
|
|
sub $fe
|
|
cp $30
|
|
ret nc
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
jr asm_1ea6a
|
|
|
|
Func_1ea3b: ; 0x1ea3b
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wBallYPos + 1]
|
|
sub $86
|
|
cp $30
|
|
ret nc
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
; fall through
|
|
|
|
asm_1ea6a: ; 0x1ea6a
|
|
ld bc, Data_f0000
|
|
add hl, bc
|
|
ld de, wBallXVelocity
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
push bc
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_f0000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
bit 7, b
|
|
jr z, .asm_1eaa9
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_1eaa9
|
|
pop hl
|
|
bit 7, h
|
|
jr z, .asm_1eab5
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc hl
|
|
.asm_1eab5
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
ld a, h
|
|
cp $2
|
|
ret c
|
|
ld a, [wd804]
|
|
and a
|
|
ret nz
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
lb de, $00, $04
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_1ead4: ; 0x1ead4
|
|
ld a, [hNumFramesDropped]
|
|
and $f
|
|
ret nz
|
|
ld bc, $0000
|
|
.asm_1eadc
|
|
push bc
|
|
ld hl, wIndicatorStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $1
|
|
jr z, .asm_1eaf8
|
|
bit 7, [hl]
|
|
jr z, .asm_1eaf8
|
|
ld a, [hl]
|
|
res 7, a
|
|
ld hl, hNumFramesDropped
|
|
bit 4, [hl]
|
|
jr z, .asm_1eaf5
|
|
inc a
|
|
.asm_1eaf5
|
|
call Func_1eb41
|
|
.asm_1eaf8
|
|
pop bc
|
|
inc c
|
|
ld a, c
|
|
cp $2
|
|
jr nz, .asm_1eadc
|
|
ld a, [hNumFramesDropped]
|
|
and $f
|
|
ret nz
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld bc, $0002
|
|
.asm_1eb0d
|
|
push bc
|
|
ld hl, wIndicatorStates
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $1
|
|
jr z, .asm_1eb29
|
|
bit 7, [hl]
|
|
jr z, .asm_1eb29
|
|
ld a, [hl]
|
|
res 7, a
|
|
ld hl, hNumFramesDropped
|
|
bit 4, [hl]
|
|
jr z, .asm_1eb2b
|
|
inc a
|
|
inc a
|
|
jr .asm_1eb2b
|
|
|
|
.asm_1eb29
|
|
ld a, $0
|
|
.asm_1eb2b
|
|
push af
|
|
ld hl, wd648
|
|
add hl, bc
|
|
dec hl
|
|
dec hl
|
|
ld a, [hl]
|
|
ld d, a
|
|
pop af
|
|
add d
|
|
call Func_1eb41
|
|
pop bc
|
|
inc c
|
|
ld a, c
|
|
cp $5
|
|
jr nz, .asm_1eb0d
|
|
ret
|
|
|
|
Func_1eb41: ; 0x1eb41
|
|
push af
|
|
sla c
|
|
ld hl, TileDataPointers_1eb61
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1eb4f
|
|
ld hl, TileDataPointers_1ed51
|
|
.asm_1eb4f
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop af
|
|
sla a
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_1eb61)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_1eb61:
|
|
dw TileDataPointers_1eb6b
|
|
dw TileDataPointers_1eb75
|
|
dw TileDataPointers_1eb7f
|
|
dw TileDataPointers_1eb87
|
|
dw TileDataPointers_1eb8f
|
|
|
|
TileDataPointers_1eb6b: ; 0x1eb6b
|
|
dw TileData_1eb97
|
|
dw TileData_1eb9a
|
|
dw TileData_1eb9d
|
|
dw TileData_1eba0
|
|
dw TileData_1eba3
|
|
|
|
TileDataPointers_1eb75: ; 0x1eb75
|
|
dw TileData_1eba6
|
|
dw TileData_1eba9
|
|
dw TileData_1ebac
|
|
dw TileData_1ebaf
|
|
dw TileData_1ebb2
|
|
|
|
TileDataPointers_1eb7f: ; 0x1eb7f
|
|
dw TileData_1ebb5
|
|
dw TileData_1ebb8
|
|
dw TileData_1ebbb
|
|
dw TileData_1ebbe
|
|
|
|
TileDataPointers_1eb87: ; 0x1eb87
|
|
dw TileData_1ebc1
|
|
dw TileData_1ebc6
|
|
dw TileData_1ebcb
|
|
dw TileData_1ebd0
|
|
|
|
TileDataPointers_1eb8f: ; 0x1eb8f
|
|
dw TileData_1ebd5
|
|
dw TileData_1ebda
|
|
dw TileData_1ebdf
|
|
dw TileData_1ebe4
|
|
|
|
TileData_1eb97: ; 0x1eb97
|
|
db $01
|
|
dw TileData_1ebe9
|
|
|
|
TileData_1eb9a: ; 0x1eb9a
|
|
db $01
|
|
dw TileData_1ebf9
|
|
|
|
TileData_1eb9d: ; 0x1eb9d
|
|
db $01
|
|
dw TileData_1ec09
|
|
|
|
TileData_1eba0: ; 0x1eba0
|
|
db $01
|
|
dw TileData_1ec19
|
|
|
|
TileData_1eba3: ; 0x1eba3
|
|
db $01
|
|
dw TileData_1ec29
|
|
|
|
TileData_1eba6: ; 0x1eba6
|
|
db $01
|
|
dw TileData_1ec39
|
|
|
|
TileData_1eba9: ; 0x1eba9
|
|
db $01
|
|
dw TileData_1ec49
|
|
|
|
TileData_1ebac: ; 0x1ebac
|
|
db $01
|
|
dw TileData_1ec59
|
|
|
|
TileData_1ebaf: ; 0x1ebaf
|
|
db $01
|
|
dw TileData_1ec69
|
|
|
|
TileData_1ebb2: ; 0x1ebb2
|
|
db $01
|
|
dw TileData_1ec79
|
|
|
|
TileData_1ebb5: ; 0x1ebb5
|
|
db $01
|
|
dw TileData_1ec89
|
|
|
|
TileData_1ebb8: ; 0x1ebb8
|
|
db $01
|
|
dw TileData_1ec93
|
|
|
|
TileData_1ebbb: ; 0x1ebbb
|
|
db $01
|
|
dw TileData_1ec9d
|
|
|
|
TileData_1ebbe: ; 0x1ebbe
|
|
db $01
|
|
dw TileData_1eca7
|
|
|
|
TileData_1ebc1: ; 0x1ebc1
|
|
db $02
|
|
dw TileData_1ecb1
|
|
dw TileData_1ecbb
|
|
|
|
TileData_1ebc6: ; 0x1ebc6
|
|
db $02
|
|
dw TileData_1ecc5
|
|
dw TileData_1eccf
|
|
|
|
TileData_1ebcb: ; 0x1ebcb
|
|
db $02
|
|
dw TileData_1ecd9
|
|
dw TileData_1ece3
|
|
|
|
TileData_1ebd0: ; 0x1ebd0
|
|
db $02
|
|
dw TileData_1eced
|
|
dw TileData_1ecf7
|
|
|
|
TileData_1ebd5: ; 0x1ebd5
|
|
db $02
|
|
dw TileData_1ed01
|
|
dw TileData_1ed0b
|
|
|
|
TileData_1ebda: ; 0x1ebda
|
|
db $02
|
|
dw TileData_1ed15
|
|
dw TileData_1ed1f
|
|
|
|
TileData_1ebdf: ; 0x1ebdf
|
|
db $02
|
|
dw TileData_1ed01
|
|
dw TileData_1ed0b
|
|
|
|
TileData_1ebe4: ; 0x1ebe4
|
|
db $02
|
|
dw TileData_1ed15
|
|
dw TileData_1ed1f
|
|
|
|
TileData_1ebe9: ; 0x1ebe9
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $3D
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $17
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $3D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ebf9: ; 0x1ebf9
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $3E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $17
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $3D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec09: ; 0x1ec09
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $3E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $18
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $3D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec19: ; 0x1ec19
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $3E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $18
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $3E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec29: ; 0x1ec29
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $3D
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $18
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $3D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec39: ; 0x1ec39
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $3F
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $1D
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $3F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec49: ; 0x1ec49
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $40
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $1D
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $3F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec59: ; 0x1ec59
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $40
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $1E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $3F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec69: ; 0x1ec69
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $40
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $1E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $40
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec79: ; 0x1ec79
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $40
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $1D
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $40
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ec89: ; 0x1ec89
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $15
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $950
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1ec93: ; 0x1ec93
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $15
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ec9d: ; 0x1ec9d
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $15
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1eca7: ; 0x1eca7
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $15
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ecb1: ; 0x1ecb1
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $19
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $990
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1ecbb: ; 0x1ecbb
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1B
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $9B0
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1ecc5: ; 0x1ecc5
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $19
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2270
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1eccf: ; 0x1eccf
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1B
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2290
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ecd9: ; 0x1ecd9
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $19
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22B0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ece3: ; 0x1ece3
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1B
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22D0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1eced: ; 0x1eced
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $19
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22F0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ecf7: ; 0x1ecf7
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $1B
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2310
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ed01: ; 0x1ed01
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $23
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $A30
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1ed0b: ; 0x1ed0b
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $25
|
|
dw StageBlueFieldBottomBaseGameBoyGfx + $A50
|
|
db Bank(StageBlueFieldBottomBaseGameBoyGfx)
|
|
db $00
|
|
|
|
TileData_1ed15: ; 0x1ed15
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $23
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C00
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ed1f: ; 0x1ed1f
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $25
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C20
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ed29: ; 0x1ed29
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $23
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C40
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ed33: ; 0x1ed33
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $25
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C60
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1e3d: ; 0x1e3d
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $23
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C80
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileData_1ed47: ; 0x1ed47
|
|
dw Func_11d2
|
|
db $20, $02
|
|
dw vTilesBG tile $25
|
|
dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1CA0
|
|
db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
|
|
db $00
|
|
|
|
TileDataPointers_1ed51: ; 0x1ed51
|
|
dw TileDataPointers_1ed5b
|
|
dw TileDataPointers_1ed65
|
|
dw TileDataPointers_1ed6f
|
|
dw TileDataPointers_1ed77
|
|
dw TileDataPointers_1ed7f
|
|
|
|
TileDataPointers_1ed5b: ; 0x1ed5b
|
|
dw TileData_1ed87
|
|
dw TileData_1ed8a
|
|
dw TileData_1ed8d
|
|
dw TileData_1ed90
|
|
dw TileData_1ed93
|
|
|
|
TileDataPointers_1ed65: ; 0x1ed65
|
|
dw TileData_1ed96
|
|
dw TileData_1ed99
|
|
dw TileData_1ed9c
|
|
dw TileData_1ed9f
|
|
dw TileData_1eda2
|
|
|
|
TileDataPointers_1ed6f: ; 0x1ed6f
|
|
dw TileData_1eda5
|
|
dw TileData_1eda8
|
|
dw TileData_1edab
|
|
dw TileData_1edae
|
|
|
|
TileDataPointers_1ed77: ; 0x1ed77
|
|
dw TileData_1edb1
|
|
dw TileData_1edb4
|
|
dw TileData_1edb7
|
|
dw TileData_1edba
|
|
|
|
TileDataPointers_1ed7f: ; 0x1ed7f
|
|
dw TileData_1edbd
|
|
dw TileData_1edc0
|
|
dw TileData_1edc3
|
|
dw TileData_1edc6
|
|
|
|
TileData_1ed87: ; 0x1ed87
|
|
db $01
|
|
dw TileData_1edc9
|
|
|
|
TileData_1ed8a: ; 0x1ed8a
|
|
db $01
|
|
dw TileData_1edd9
|
|
|
|
TileData_1ed8d: ; 0x1ed8d
|
|
db $01
|
|
dw TileData_1ede9
|
|
|
|
TileData_1ed90: ; 0x1ed90
|
|
db $01
|
|
dw TileData_1edf9
|
|
|
|
TileData_1ed93: ; 0x1ed93
|
|
db $01
|
|
dw TileData_1ee09
|
|
|
|
TileData_1ed96: ; 0x1ed96
|
|
db $01
|
|
dw TileData_1ee19
|
|
|
|
TileData_1ed99: ; 0x1ed99
|
|
db $01
|
|
dw TileData_1ee29
|
|
|
|
TileData_1ed9c: ; 0x1ed9c
|
|
db $01
|
|
dw TileData_1ee39
|
|
|
|
TileData_1ed9f: ; 0x1ed9f
|
|
db $01
|
|
dw TileData_1ee49
|
|
|
|
TileData_1eda2: ; 0x1eda2
|
|
db $01
|
|
dw TileData_1ee59
|
|
|
|
TileData_1eda5: ; 0x1eda5
|
|
db $01
|
|
dw TileData_1ee69
|
|
|
|
TileData_1eda8: ; 0x1eda8
|
|
db $01
|
|
dw TileData_1ee75
|
|
|
|
TileData_1edab: ; 0x1edab
|
|
db $01
|
|
dw TileData_1ee81
|
|
|
|
TileData_1edae: ; 0x1edae
|
|
db $01
|
|
dw TileData_1ee8d
|
|
|
|
TileData_1edb1: ; 0x1edb1
|
|
db $01
|
|
dw TileData_1ee99
|
|
|
|
TileData_1edb4: ; 0x1edb4
|
|
db $01
|
|
dw TileData_1eea7
|
|
|
|
TileData_1edb7: ; 0x1edb7
|
|
db $01
|
|
dw TileData_1eeb5
|
|
|
|
TileData_1edba: ; 0x1edba
|
|
db $01
|
|
dw TileData_1eec3
|
|
|
|
TileData_1edbd: ; 0x1edbd
|
|
db $01
|
|
dw TileData_1eed1
|
|
|
|
TileData_1edc0: ; 0x1edc0
|
|
db $01
|
|
dw TileData_1eedf
|
|
|
|
TileData_1edc3: ; 0x1edc3
|
|
db $01
|
|
dw TileData_1eeed
|
|
|
|
TileData_1edc6: ; 0x1edc6
|
|
db $01
|
|
dw TileData_1eefb
|
|
|
|
TileData_1edc9: ; 0x1edc9
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $31
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $0D
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $7C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1edd9: ; 0x1edd9
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $32
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $0D
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $7C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ede9: ; 0x1ede9
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $32
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $0E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $7C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1edf9: ; 0x1edf9
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $32
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $0E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $7D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee09: ; 0x1ee09
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $64
|
|
db $31
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $84
|
|
db $0E
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $A5
|
|
db $7C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee19: ; 0x1ee19
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $33
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $0F
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $7E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee29: ; 0x1ee29
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $34
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $0F
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $7E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee39: ; 0x1ee39
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $34
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $10
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $7E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee49: ; 0x1ee49
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $34
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $10
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $7F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee59: ; 0x1ee59
|
|
dw LoadTileLists
|
|
db $03 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $6F
|
|
db $33
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $8F
|
|
db $10
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $AE
|
|
db $7E
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee69: ; 0x1ee69
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $48
|
|
db $05
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $68
|
|
db $06
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee75: ; 0x1ee75
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $48
|
|
db $07
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $68
|
|
db $08
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee81: ; 0x1ee81
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $48
|
|
db $09
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $68
|
|
db $0A
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee8d: ; 0x1ee8d
|
|
dw LoadTileLists
|
|
db $02 ; total number of tiles
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $48
|
|
db $0B
|
|
|
|
db $01 ; number of tiles
|
|
dw vBGMap + $68
|
|
db $0C
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1ee99: ; 0x1ee99
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $4B
|
|
db $26, $27
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $6B
|
|
db $28, $29
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1eea7: ; 0x1eea7
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $4B
|
|
db $2A, $2B
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $6B
|
|
db $2C, $2D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1eeb5: ; 0x1eeb5
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $4B
|
|
db $2E, $2F
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $6B
|
|
db $30, $31
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1eec3: ; 0x1eec3
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $4B
|
|
db $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $6B
|
|
db $34, $35
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1eed1: ; 0x1eed1
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $49
|
|
db $16, $17
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $69
|
|
db $18, $19
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1eedf: ; 0x1eedf
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $49
|
|
db $1A, $1B
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $69
|
|
db $1C, $1D
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1eeed: ; 0x1eeed
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $49
|
|
db $1E, $1F
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $69
|
|
db $20, $21
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1eefb: ; 0x1eefb
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $49
|
|
db $22, $23
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $69
|
|
db $24, $25
|
|
|
|
db $00 ; terminator
|
|
|
|
ResolveBlueStageForceFieldCollision: ; 0x1ef09
|
|
ld a, [wBlueStageForceFieldDirection]
|
|
cp $0 ; up direction
|
|
jp z, Func_1ef20
|
|
cp $1 ; right direction
|
|
jp z, Func_1ef4d
|
|
cp $2 ; down direction
|
|
jp z, Func_1ef7e
|
|
cp $3 ; left direction
|
|
jp z, Func_1efae
|
|
; fall through
|
|
; default to upward forcefield
|
|
|
|
Func_1ef20: ; 0x1ef20
|
|
ld a, [wBallYPos + 1]
|
|
sub $60
|
|
cp $30
|
|
ret nc
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
jp Func_1efdc
|
|
|
|
Func_1ef4d: ; 0x1ef4d
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld a, $30
|
|
sub c
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallYPos + 1]
|
|
sub $60
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
jp Func_1efdc
|
|
|
|
Func_1ef7e: ; 0x1ef7e
|
|
ld a, [wBallYPos + 1]
|
|
sub $60
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld a, $30
|
|
sub c
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
jr Func_1efdc
|
|
|
|
Func_1efae: ; 0x1efae
|
|
ld a, [wBallXPos + 1]
|
|
sub $38
|
|
cp $30
|
|
ret nc
|
|
ld c, $0
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl h
|
|
rr l
|
|
add hl, bc
|
|
ld a, [wBallYPos + 1]
|
|
sub $60
|
|
cp $30
|
|
ret nc
|
|
ld c, a
|
|
ld a, $30
|
|
sub c
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
sla c
|
|
add hl, bc
|
|
; fall through
|
|
Func_1efdc: ; 0x1efdc
|
|
ld a, [wBlueStageForceFieldDirection]
|
|
cp $0 ; up direction
|
|
jp z, Func_1eff3
|
|
cp $1 ; right direction
|
|
jp z, Func_1f0be
|
|
cp $2 ; down direction
|
|
jp z, Func_1f057
|
|
cp $3 ; left direction
|
|
jp z, Func_1f124
|
|
; fall through
|
|
; default to upward forcefield
|
|
|
|
Func_1eff3: ; 0x1eff3
|
|
ld bc, Data_ec000
|
|
add hl, bc
|
|
ld de, wBallXVelocity
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
push bc
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
bit 7, b
|
|
jr z, .asm_1f032
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_1f032
|
|
pop hl
|
|
bit 7, h
|
|
jr z, .asm_1f03e
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc hl
|
|
.asm_1f03e
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
ld a, h
|
|
cp $2
|
|
ret c
|
|
ld a, [wd804]
|
|
and a
|
|
ret nz
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ret
|
|
|
|
Func_1f057: ; 0x1f057
|
|
ld bc, Data_ec000
|
|
add hl, bc
|
|
ld de, wBallXVelocity
|
|
bit 2, l
|
|
ret nz
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
push bc
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
sub c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
sbc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
bit 7, b
|
|
jr z, .asm_1f099
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_1f099
|
|
pop hl
|
|
bit 7, h
|
|
jr z, .asm_1f0a5
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc hl
|
|
.asm_1f0a5
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
ld a, h
|
|
cp $2
|
|
ret c
|
|
ld a, [wd804]
|
|
and a
|
|
ret nz
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ret
|
|
|
|
Func_1f0be: ; 0x1f0be
|
|
ld bc, Data_ec000
|
|
add hl, bc
|
|
ld de, wBallYVelocity
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc hl
|
|
push bc
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
sub c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
sbc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
bit 7, b
|
|
jr z, .asm_1f0ff
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_1f0ff
|
|
pop hl
|
|
bit 7, h
|
|
jr z, .asm_1f10b
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc hl
|
|
.asm_1f10b
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
ld a, h
|
|
cp $2
|
|
ret c
|
|
ld a, [wd804]
|
|
and a
|
|
ret nz
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ret
|
|
|
|
Func_1f124: ; 0x1f124
|
|
ld bc, Data_ec000
|
|
add hl, bc
|
|
ld de, wBallYVelocity
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
sub c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
sbc b
|
|
ld [de], a
|
|
inc hl
|
|
push bc
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [de]
|
|
add c
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
ld a, BANK(Data_ec000)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld a, [de]
|
|
adc b
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
bit 7, b
|
|
jr z, .asm_1f165
|
|
ld a, c
|
|
cpl
|
|
ld c, a
|
|
ld a, b
|
|
cpl
|
|
ld b, a
|
|
inc bc
|
|
.asm_1f165
|
|
pop hl
|
|
bit 7, h
|
|
jr z, .asm_1f171
|
|
ld a, l
|
|
cpl
|
|
ld l, a
|
|
ld a, h
|
|
cpl
|
|
ld h, a
|
|
inc hl
|
|
.asm_1f171
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
ld a, h
|
|
cp $2
|
|
ret c
|
|
ld a, [wd804]
|
|
and a
|
|
ret nz
|
|
ld a, $5
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
ret
|
|
|
|
Func_1f18a: ; 0x1f18a
|
|
ld a, [wd640]
|
|
cp $0
|
|
jr z, .asm_1f1b4
|
|
ld a, [wBlueStageForceFieldDirection]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1f1b5
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_1f1a4
|
|
ld hl, TileDataPointers_1f201
|
|
.asm_1f1a4
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
or h
|
|
ret z
|
|
ld a, Bank(TileDataPointers_1f1b5)
|
|
call Func_10aa
|
|
ld a, $0
|
|
ld [wd640], a
|
|
.asm_1f1b4
|
|
ret
|
|
|
|
TileDataPointers_1f1b5:
|
|
dw TileData_1f1bd
|
|
dw TileData_1f1c0
|
|
dw TileData_1f1c3
|
|
dw TileData_1f1c6
|
|
|
|
TileData_1f1bd: ; 0x1f1bd
|
|
db $01
|
|
dw TileData_1f1c9
|
|
|
|
TileData_1f1c0: ; 0x1f1c0
|
|
db $01
|
|
dw TileData_1f1d7
|
|
|
|
TileData_1f1c3: ; 0x1f1c3
|
|
db $01
|
|
dw TileData_1f1e5
|
|
|
|
TileData_1f1c6: ; 0x1f1c6
|
|
db $01
|
|
dw TileData_1f1f3
|
|
|
|
TileData_1f1c9: ; 0x1f1c9
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $189
|
|
db $70, $71
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $72, $73
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f1d7: ; 0x1f1d7
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $189
|
|
db $74, $75
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $76, $77
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f1e5: ; 0x1f1e5
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $189
|
|
db $78, $79
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $7A, $7B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f1f3: ; 0x1f1f3
|
|
dw LoadTileLists
|
|
db $04 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $189
|
|
db $7C, $7D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $7E, $7F
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_1f201:
|
|
dw TileData_1f209
|
|
dw TileData_1f20c
|
|
dw TileData_1f20f
|
|
dw TileData_1f212
|
|
|
|
TileData_1f209: ; 0x1f209
|
|
db $01
|
|
dw TileData_1f215
|
|
|
|
TileData_1f20c: ; 0x1f20c
|
|
db $01
|
|
dw TileData_1f228
|
|
|
|
TileData_1f20f: ; 0x1f20f
|
|
db $01
|
|
dw TileData_1f23b
|
|
|
|
TileData_1f212: ; 0x1f212
|
|
db $01
|
|
dw TileData_1f24e
|
|
|
|
TileData_1f215: ; 0x1f215
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $02 ; number of otiles
|
|
dw vBGMap + $189
|
|
db $6C, $6D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $6E, $6F
|
|
|
|
db $02
|
|
dw vBGMap + $1c9
|
|
db $70, $71
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f228: ; 0x1f228
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $02 ; number of otiles
|
|
dw vBGMap + $189
|
|
db $72, $80
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $73, $74
|
|
|
|
db $02
|
|
dw vBGMap + $1c9
|
|
db $75, $80
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f23b: ; 0x1f23b
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $02 ; number of otiles
|
|
dw vBGMap + $189
|
|
db $76, $77
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $78, $79
|
|
|
|
db $02
|
|
dw vBGMap + $1c9
|
|
db $7A, $7B
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f24e: ; 0x1f24e
|
|
dw LoadTileLists
|
|
db $06 ; total number of tiles
|
|
|
|
db $02 ; number of otiles
|
|
dw vBGMap + $189
|
|
db $80, $7C
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $1a9
|
|
db $7D, $7E
|
|
|
|
db $02
|
|
dw vBGMap + $1c9
|
|
db $80, $7F
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_1f261: ; 0x1f261
|
|
call Func_1f27b
|
|
ret nc
|
|
; fall through
|
|
|
|
Func_1f265: ; 0x1f265
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_1f2b9
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, $7
|
|
ld de, LoadTileLists
|
|
call Func_10c5
|
|
ret
|
|
|
|
Func_1f27b: ; 0x1f27b
|
|
ld a, [wd624]
|
|
ld hl, wd625
|
|
cp [hl]
|
|
ret z
|
|
ld a, [wd626]
|
|
dec a
|
|
ld [wd626], a
|
|
jr nz, .asm_1f2a5
|
|
ld a, [wd625]
|
|
ld [wd624], a
|
|
cp $3
|
|
jr c, .asm_1f2a0
|
|
ld a, $1
|
|
ld [wd609], a
|
|
ld a, $3
|
|
ld [wd607], a
|
|
.asm_1f2a0
|
|
ld a, [wd624]
|
|
scf
|
|
ret
|
|
|
|
.asm_1f2a5
|
|
and $7
|
|
ret nz
|
|
ld a, [wd626]
|
|
bit 3, a
|
|
jr nz, .asm_1f2b4
|
|
ld a, [wd624]
|
|
scf
|
|
ret
|
|
|
|
.asm_1f2b4
|
|
ld a, [wd625]
|
|
scf
|
|
ret
|
|
|
|
TileDataPointers_1f2b9:
|
|
dw TileData_1f2c1
|
|
dw TileData_1f2cc
|
|
dw TileData_1f2d7
|
|
dw TileData_1f2e2
|
|
|
|
TileData_1f2c1: ; 0x1f2c1
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw vBGMap + $107
|
|
db $B0, $B1, $B0, $B1, $B0, $B1
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f2cc: ; 0x1f2cc
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw vBGMap + $107
|
|
db $AE, $AF, $B0, $B1, $B0, $B1
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f2d7: ; 0x1f2d7
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw vBGMap + $107
|
|
db $AE, $AF, $AE, $AF, $B0, $B1
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_1f2e2: ; 0x1f2e2
|
|
db $06 ; total number of tiles
|
|
|
|
db $06 ; number of tiles
|
|
dw vBGMap + $107
|
|
db $AE, $AF, $AE, $AF, $AE, $AF
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_1f2ed: ; 0x1f2ed
|
|
xor a
|
|
ld [wd604], a
|
|
ld [wIndicatorStates + 4], a
|
|
ld [hFarCallTempA], a
|
|
ld a, Bank(Func_1e8f6) ; this is in the same bank...
|
|
ld hl, Func_1e8f6
|
|
call BankSwitch
|
|
ret
|
|
|
|
Func_1f2ff: ; 0x1f2ff
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
jr c, .asm_1f30b
|
|
ld a, $80
|
|
ld [wIndicatorStates + 2], a
|
|
.asm_1f30b
|
|
ld a, [wLeftAlleyCount]
|
|
cp $3
|
|
jr z, .asm_1f314
|
|
set 7, a
|
|
.asm_1f314
|
|
ld [wIndicatorStates], a
|
|
ld a, [wRightAlleyCount]
|
|
cp $2
|
|
jr c, .asm_1f323
|
|
ld a, $80
|
|
ld [wIndicatorStates + 3], a
|
|
.asm_1f323
|
|
ld a, [wRightAlleyCount]
|
|
cp $3
|
|
jr z, .asm_1f32c
|
|
set 7, a
|
|
.asm_1f32c
|
|
ld [wIndicatorStates + 1], a
|
|
ret
|
|
|
|
Func_1f330: ; 0x1f330
|
|
ld bc, $7f00
|
|
callba DrawTimer
|
|
call Func_1f395
|
|
call Func_1f3e1
|
|
call Func_1f408
|
|
call Func_1f428
|
|
callba DrawPinball
|
|
call Func_1f48f
|
|
call Func_1f4f8
|
|
ret
|
|
|
|
Func_1f35a: ; 0x1f35a
|
|
ld bc, $7f00
|
|
callba DrawTimer
|
|
callba DrawMonCaptureAnimation
|
|
call DrawAnimatedMon_BlueStage
|
|
call DrawPikachuSavers_BlueStage
|
|
callba DrawFlippers
|
|
callba DrawPinball
|
|
call Func_1f4a3
|
|
call Func_1f509
|
|
call Func_1f55e
|
|
ret
|
|
|
|
Func_1f395: ; 0x1f395
|
|
ld de, wd4cd
|
|
ld hl, Data_1f3cf
|
|
call Func_1f3ad
|
|
ld de, wd4d0
|
|
ld hl, Data_1f3d5
|
|
call Func_1f3ad
|
|
ld de, wd4d3
|
|
ld hl, Data_1f3db
|
|
; fall through
|
|
|
|
Func_1f3ad: ; 0x1f3ad
|
|
ld a, [hSCX]
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub b
|
|
ld b, a
|
|
ld a, [hSCY]
|
|
ld c, a
|
|
ld a, [hli]
|
|
sub c
|
|
ld c, a
|
|
ld a, [wd4d7]
|
|
sub [hl]
|
|
inc hl
|
|
jr z, .asm_1f3c4
|
|
ld a, $0
|
|
jr .asm_1f3c6
|
|
|
|
.asm_1f3c4
|
|
ld a, $1
|
|
.asm_1f3c6
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
Data_1f3cf:
|
|
db $48, $2D ; background scroll offsets (x, y)
|
|
db $01
|
|
db $E0, $E1, $E0 ; OAM ids
|
|
|
|
Data_1f3d5:
|
|
db $33, $3E ; background scroll offsets (x, y)
|
|
db $00
|
|
db $E0, $E1, $E0 ; OAM ids
|
|
|
|
Data_1f3db:
|
|
db $5D, $3E ; background scroll offsets (x, y)
|
|
db $02
|
|
db $E0, $E1, $E0 ; OAM ids
|
|
|
|
Func_1f3e1: ; 0x1f3e1
|
|
ld a, $8a
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $53
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd50a]
|
|
srl a
|
|
srl a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_1f402
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMIds_1f402:
|
|
db $E8, $E9, $EA, $EB, $EC, $ED
|
|
|
|
Func_1f408: ; 0x1f408
|
|
ld a, $18
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $5f
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd633]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_1f425
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMIds_1f425:
|
|
db $E2, $E3, $E4
|
|
|
|
Func_1f428: ; 0x1f428
|
|
ld a, $70
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $59
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd638]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_1f445
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
OAMIds_1f445:
|
|
db $E5, $E6, $E7
|
|
|
|
DrawPikachuSavers_BlueStage: ; 0x1f448
|
|
ld a, [hSCX]
|
|
ld d, a
|
|
ld a, [hSCY]
|
|
ld e, a
|
|
ld a, [wd51d]
|
|
and a
|
|
ld a, [wd518]
|
|
jr z, .asm_1f473
|
|
ld a, [wd51c]
|
|
and a
|
|
jr nz, .asm_1f469
|
|
ld a, [hNumFramesDropped]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $1
|
|
jr .asm_1f473
|
|
|
|
.asm_1f469
|
|
ld a, [wd4b4]
|
|
cp $50
|
|
ld a, $1
|
|
jr nc, .asm_1f473
|
|
xor a
|
|
.asm_1f473
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, PikachuSaverOAMOffsets_BlueStage
|
|
add hl, bc
|
|
ld a, [hli]
|
|
sub d
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub e
|
|
ld c, a
|
|
ld a, [wPikachuSaverAnimationFrame]
|
|
add $e
|
|
call LoadOAMData
|
|
ret
|
|
|
|
PikachuSaverOAMOffsets_BlueStage:
|
|
dw $7E0F
|
|
dw $7E92
|
|
|
|
Func_1f48f: ; 0x1f48f
|
|
ld a, [wd551]
|
|
and a
|
|
ret nz
|
|
ld a, [hNumFramesDropped]
|
|
bit 4, a
|
|
ret z
|
|
ld de, wIndicatorStates + 5
|
|
ld hl, OAMDataTable_1f4ce
|
|
ld b, $6
|
|
jr asm_1f4b5
|
|
|
|
Func_1f4a3: ; 0x1f4a3
|
|
ld a, [wd551]
|
|
and a
|
|
ret nz
|
|
ld a, [hNumFramesDropped]
|
|
bit 4, a
|
|
ret z
|
|
ld de, wIndicatorStates + 11
|
|
ld hl, OAMDataTable_1f4e0
|
|
ld b, $8
|
|
asm_1f4b5:
|
|
push bc
|
|
ld a, [hSCX]
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub b
|
|
ld b, a
|
|
ld a, [hSCY]
|
|
ld c, a
|
|
ld a, [hli]
|
|
sub c
|
|
ld c, a
|
|
ld a, [de]
|
|
and a
|
|
ld a, [hli]
|
|
call nz, LoadOAMData
|
|
pop bc
|
|
inc de
|
|
dec b
|
|
jr nz, asm_1f4b5
|
|
ret
|
|
|
|
OAMDataTable_1f4ce: ; 0x1f4ce
|
|
; Each entry is:
|
|
; [OAM x/y Offsets],[OAM Id]
|
|
db $0D, $37
|
|
db $EE
|
|
|
|
db $35, $0D
|
|
db $F1
|
|
|
|
db $8E, $4E
|
|
db $F4
|
|
|
|
db $36, $64
|
|
db $EF
|
|
|
|
db $4C, $49
|
|
db $EE
|
|
|
|
db $61, $64
|
|
db $F0
|
|
|
|
OAMDataTable_1f4e0: ; 0x1f4e0
|
|
; Each entry is 3 bytes:
|
|
; [OAM x/y Offsets],[OAM Id]
|
|
db $2D, $13
|
|
db $32
|
|
|
|
db $6A, $13
|
|
db $33
|
|
|
|
db $25, $2D
|
|
db $34
|
|
|
|
db $73, $2D
|
|
db $35
|
|
|
|
db $38, $14
|
|
db $36
|
|
|
|
db $66, $14
|
|
db $36
|
|
|
|
db $79, $40
|
|
db $37
|
|
|
|
db $89, $40
|
|
db $37
|
|
|
|
Func_1f4f8: ; 0x1f4f8
|
|
ld a, [wd551]
|
|
and a
|
|
ret z
|
|
ld de, wd566
|
|
ld hl, OAMOffsetsTable_1f53a
|
|
ld b, $c
|
|
ld c, $47
|
|
jr asm_1f518
|
|
|
|
Func_1f509: ; 0x1f509
|
|
ld a, [wd551]
|
|
and a
|
|
ret z
|
|
ld de, wd572
|
|
ld hl, OAMOffsetsTable_1f552
|
|
ld b, $6
|
|
ld c, $40
|
|
asm_1f518: ; 0x1f518
|
|
push bc
|
|
ld a, [de]
|
|
add c
|
|
cp c
|
|
push af
|
|
ld a, [hSCX]
|
|
ld b, a
|
|
ld a, [hli]
|
|
sub b
|
|
ld b, a
|
|
ld a, [hSCY]
|
|
ld c, a
|
|
ld a, [hli]
|
|
sub c
|
|
ld c, a
|
|
ld a, [hNumFramesDropped]
|
|
and $e
|
|
jr nz, .asm_1f530
|
|
dec c
|
|
.asm_1f530
|
|
pop af
|
|
call nz, LoadOAMData
|
|
pop bc
|
|
inc de
|
|
dec b
|
|
jr nz, asm_1f518
|
|
ret
|
|
|
|
OAMOffsetsTable_1f53a: ; 0x1f53a
|
|
; OAM data x, y offsets
|
|
db $4C, $08
|
|
db $2B, $12
|
|
db $6D, $12
|
|
db $15, $25
|
|
db $82, $25
|
|
db $0D, $3F
|
|
db $4C, $7F
|
|
db $8B, $3F
|
|
db $0A, $65
|
|
db $36, $7F
|
|
db $61, $7F
|
|
db $8D, $65
|
|
|
|
OAMOffsetsTable_1f552: ; 0x1f552
|
|
; OAM data x, y offsets
|
|
db $3B, $12
|
|
db $5D, $12
|
|
db $31, $16
|
|
db $67, $16
|
|
db $25, $2C
|
|
db $73, $2C
|
|
|
|
Func_1f55e: ; 0x1f55e
|
|
ld a, [wd604]
|
|
and a
|
|
ret z
|
|
ld a, [wd606]
|
|
inc a
|
|
ld [wd606], a
|
|
ld a, $40
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $1
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd606]
|
|
srl a
|
|
srl a
|
|
srl a
|
|
and $3
|
|
add $4f
|
|
cp $52
|
|
call nz, LoadOAMData
|
|
ret
|
|
|
|
DrawAnimatedMon_BlueStage: ; 0x1f58b
|
|
ld a, [wWildMonIsHittable]
|
|
and a
|
|
ret z
|
|
ld a, $50
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, $3e
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd5bd]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, AnimatedMonOAMIds_BlueStage
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ret
|
|
|
|
AnimatedMonOAMIds_BlueStage:
|
|
db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31
|
|
|
|
SECTION "bank8", ROMX, BANK[$8]
|
|
|
|
Func_20000: ; 0x20000
|
|
ld a, [wd54c]
|
|
cp $4
|
|
jp z, Func_20230
|
|
cp $c
|
|
jp z, Func_202a8
|
|
cp $5
|
|
jp z, Func_202b2
|
|
cp $0
|
|
jr z, .asm_20018
|
|
scf
|
|
ret
|
|
|
|
.asm_20018
|
|
call Func_201f2
|
|
ld a, [wd54d]
|
|
call CallInFollowingTable
|
|
PointerTable_20021: ; 0x20021
|
|
padded_dab Func_20041
|
|
padded_dab Func_2005f
|
|
padded_dab Func_2006b
|
|
padded_dab Func_200a3
|
|
padded_dab Func_200d3
|
|
padded_dab Func_20193
|
|
padded_dab CapturePokemonRedStage
|
|
padded_dab Func_201ce
|
|
|
|
Func_20041: ; 0x20041
|
|
ld a, [wd5b6]
|
|
cp $18
|
|
jr nz, .asm_2005d
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_2005d
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
ld a, $14
|
|
ld [wd54e], a
|
|
ld a, $5
|
|
ld [wd54f], a
|
|
.asm_2005d
|
|
scf
|
|
ret
|
|
|
|
Func_2005f: ; 0x2005f
|
|
callba Func_10648
|
|
scf
|
|
ret
|
|
|
|
Func_2006b: ; 0x2006b
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_20098
|
|
call Func_1130
|
|
jr nz, .asm_200a1
|
|
callba Func_10414
|
|
callba Func_10362
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_10301
|
|
.asm_20098
|
|
ld a, $1
|
|
ld [wd5c6], a
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
.asm_200a1
|
|
scf
|
|
ret
|
|
|
|
Func_200a3: ; 0x200a3
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_200af
|
|
call Func_1130
|
|
jr nz, .asm_200d1
|
|
.asm_200af
|
|
callba ShowAnimatedWildMon
|
|
callba Func_10732
|
|
callba Func_10464
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
.asm_200d1
|
|
scf
|
|
ret
|
|
|
|
Func_200d3: ; 0x200d3
|
|
ld a, [wd5be]
|
|
dec a
|
|
ld [wd5be], a
|
|
jr z, .asm_200e6
|
|
ld a, [wd5c4]
|
|
inc a
|
|
ld [wd5c4], a
|
|
and $3
|
|
ret nz
|
|
.asm_200e6
|
|
ld a, [wBallHitWildMon]
|
|
and a
|
|
jp z, .asm_20167
|
|
xor a
|
|
ld [wBallHitWildMon], a
|
|
ld a, [wd5c3]
|
|
ld [wd5be], a
|
|
xor a
|
|
ld [wd5c4], a
|
|
ld a, [wCurrentCatchEmMon]
|
|
cp MEW - 1
|
|
jr nz, .notMew
|
|
ld a, [wNumMewHitsLow]
|
|
inc a
|
|
ld [wNumMewHitsLow], a
|
|
jr nz, .asm_20116
|
|
.notMew
|
|
ld a, [wNumMonHits]
|
|
cp $3
|
|
jr z, .hitMonThreeTimes
|
|
inc a
|
|
ld [wNumMonHits], a
|
|
.asm_20116
|
|
ld bc, ThreeHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $0030
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5e9
|
|
ld de, Data_2a2a
|
|
call Func_3372
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5e4
|
|
ld de, HitText
|
|
call Func_3357
|
|
ld a, [wNumMonHits]
|
|
callba Func_10611
|
|
ld c, $2
|
|
jr .asm_2018a
|
|
|
|
.hitMonThreeTimes
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $1
|
|
ld [wd57f], a
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
ld c, $2
|
|
jr .asm_2018a
|
|
|
|
.asm_20167
|
|
ld a, [wd5be]
|
|
and a
|
|
ret nz
|
|
ld a, [wd5bc]
|
|
ld c, a
|
|
ld a, [wd5bd]
|
|
sub c
|
|
cp $1
|
|
ld c, $0
|
|
jr nc, .asm_2017c
|
|
ld c, $1
|
|
.asm_2017c
|
|
ld b, $0
|
|
ld hl, wd5c1
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd5be], a
|
|
xor a
|
|
ld [wd5c4], a
|
|
.asm_2018a
|
|
ld a, [wd5bc]
|
|
add c
|
|
ld [wd5bd], a
|
|
scf
|
|
ret
|
|
|
|
Func_20193: ; 0x20193
|
|
ld a, [wd580]
|
|
and a
|
|
jr z, .asm_2019e
|
|
xor a
|
|
ld [wd580], a
|
|
ret
|
|
|
|
.asm_2019e
|
|
callba BallCaptureInit
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
callba Func_106b6
|
|
callba AddCaughtPokemonToParty
|
|
scf
|
|
ret
|
|
|
|
CapturePokemonRedStage: ; 0x201c2
|
|
callba CapturePokemon
|
|
scf
|
|
ret
|
|
|
|
Func_201ce: ; 0x201ce
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
callba RestoreBallSaverAfterCatchEmMode
|
|
callba Func_10157
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_201f2: ; 0x201f2
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $7
|
|
ld [wd54d], a
|
|
; Automatically set Mew as caught, since you can't possibly catch it
|
|
ld a, [wCurrentCatchEmMon]
|
|
cp MEW - 1
|
|
jr nz, .asm_2021b
|
|
callba SetPokemonOwnedFlag
|
|
.asm_2021b
|
|
callba Func_86d2
|
|
callba Func_106a6
|
|
ret
|
|
|
|
Func_20230: ; 0x20230
|
|
ld a, [wd5b6]
|
|
cp $18
|
|
jr z, .asm_2029d
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd586
|
|
add hl, bc
|
|
ld d, $4
|
|
.asm_20242
|
|
ld a, $1
|
|
ld [hli], a
|
|
inc hl
|
|
ld a, l
|
|
cp wd5b6 % $100
|
|
jr z, .asm_2024e
|
|
dec d
|
|
jr nz, .asm_20242
|
|
.asm_2024e
|
|
ld a, [wd5b6]
|
|
add $4
|
|
cp $18
|
|
jr c, .master_loop9
|
|
ld a, $18
|
|
.master_loop9
|
|
ld [wd5b6], a
|
|
cp $18
|
|
jr nz, .asm_20264
|
|
xor a
|
|
ld [wIndicatorStates + 9], a
|
|
.asm_20264
|
|
callba Func_10184
|
|
ld bc, OneHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $0010
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5e9
|
|
ld de, Data_2a3d
|
|
call Func_3372
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5e4
|
|
ld de, FlippedText
|
|
call Func_3357
|
|
.asm_2029d
|
|
ld bc, $0001
|
|
ld de, $0000
|
|
call Func_3538
|
|
scf
|
|
ret
|
|
|
|
Func_202a8: ; 0x202a8
|
|
ld bc, $0000
|
|
ld de, $1000
|
|
call Func_3538
|
|
ret
|
|
|
|
Func_202b2: ; 0x202b2
|
|
ld bc, $0005
|
|
ld de, $0000
|
|
call Func_3538
|
|
ret
|
|
|
|
Func_202bc: ; 0x202bc
|
|
ld a, [wd54c]
|
|
cp $4
|
|
jp z, Func_204f1
|
|
cp $c
|
|
jp z, Func_20569
|
|
cp $f
|
|
jp z, Func_20573
|
|
cp $e
|
|
jp z, Func_2057a
|
|
cp $0
|
|
jr z, .asm_202d9
|
|
scf
|
|
ret
|
|
|
|
.asm_202d9
|
|
call Func_204b3
|
|
ld a, [wd54d]
|
|
call CallInFollowingTable
|
|
PointerTable_202e2: ; 0x202e2
|
|
padded_dab Func_20302
|
|
padded_dab Func_20320
|
|
padded_dab Func_2032c
|
|
padded_dab Func_20364
|
|
padded_dab Func_20394
|
|
padded_dab Func_20454
|
|
padded_dab CapturePokemonBlueStage
|
|
padded_dab Func_2048f
|
|
|
|
Func_20302: ; 0x20302
|
|
ld a, [wd5b6]
|
|
cp $18
|
|
jr nz, .asm_2031e
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_2031e
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
ld a, $14
|
|
ld [wd54e], a
|
|
ld a, $5
|
|
ld [wd54f], a
|
|
.asm_2031e
|
|
scf
|
|
ret
|
|
|
|
Func_20320: ; 0x20320
|
|
callba Func_10648
|
|
scf
|
|
ret
|
|
|
|
Func_2032c: ; 0x2032c
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_20333
|
|
call Func_1130
|
|
jr nz, .asm_20362
|
|
callba Func_10414
|
|
callba Func_10362
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
callba nz, Func_10301
|
|
.asm_20333
|
|
ld a, $1
|
|
ld [wd5c6], a
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
.asm_20362
|
|
scf
|
|
ret
|
|
|
|
Func_20364: ; 0x20364
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_20370
|
|
call Func_1130
|
|
jr nz, .asm_20392
|
|
.asm_20370
|
|
callba ShowAnimatedWildMon
|
|
callba Func_10732
|
|
callba Func_10464
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
.asm_20392
|
|
scf
|
|
ret
|
|
|
|
Func_20394: ; 0x20394
|
|
ld a, [wd5be]
|
|
dec a
|
|
ld [wd5be], a
|
|
jr z, .asm_203a7
|
|
ld a, [wd5c4]
|
|
inc a
|
|
ld [wd5c4], a
|
|
and $3
|
|
ret nz
|
|
.asm_203a7
|
|
ld a, [wBallHitWildMon]
|
|
and a
|
|
jp z, .asm_20428
|
|
xor a
|
|
ld [wBallHitWildMon], a
|
|
ld a, [wd5c3]
|
|
ld [wd5be], a
|
|
xor a
|
|
ld [wd5c4], a
|
|
ld a, [wCurrentCatchEmMon]
|
|
cp MEW - 1
|
|
jr nz, .notMew
|
|
ld a, [wNumMewHitsLow]
|
|
inc a
|
|
ld [wNumMewHitsLow], a
|
|
jr nz, .asm_203d7
|
|
.notMew
|
|
ld a, [wNumMonHits]
|
|
cp $3
|
|
jr z, .asm_20417
|
|
inc a
|
|
ld [wNumMonHits], a
|
|
.asm_203d7
|
|
ld bc, ThreeHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $0030
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5e9
|
|
ld de, Data_2a2a
|
|
call Func_3372
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5e4
|
|
ld de, HitText
|
|
call Func_3357
|
|
ld a, [wNumMonHits]
|
|
callba Func_10611
|
|
ld c, $2
|
|
jr .asm_2044b
|
|
|
|
.asm_20417
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $1
|
|
ld [wd57f], a
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
ld c, $2
|
|
jr .asm_2044b
|
|
|
|
.asm_20428
|
|
ld a, [wd5be]
|
|
and a
|
|
ret nz
|
|
ld a, [wd5bc]
|
|
ld c, a
|
|
ld a, [wd5bd]
|
|
sub c
|
|
cp $1
|
|
ld c, $0
|
|
jr nc, .asm_2043d
|
|
ld c, $1
|
|
.asm_2043d
|
|
ld b, $0
|
|
ld hl, wd5c1
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd5be], a
|
|
xor a
|
|
ld [wd5c4], a
|
|
.asm_2044b
|
|
ld a, [wd5bc]
|
|
add c
|
|
ld [wd5bd], a
|
|
scf
|
|
ret
|
|
|
|
Func_20454: ; 0x20454
|
|
ld a, [wd580]
|
|
and a
|
|
jr z, .asm_2045f
|
|
xor a
|
|
ld [wd580], a
|
|
ret
|
|
|
|
.asm_2045f
|
|
callba BallCaptureInit
|
|
ld hl, wd54d
|
|
inc [hl]
|
|
callba Func_106b6
|
|
callba AddCaughtPokemonToParty
|
|
scf
|
|
ret
|
|
|
|
CapturePokemonBlueStage: ; 0x20483
|
|
callba CapturePokemon
|
|
scf
|
|
ret
|
|
|
|
Func_2048f: ; 0x2048f
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
callba RestoreBallSaverAfterCatchEmMode
|
|
callba Func_10157
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_204b3: ; 0x204b3
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $7
|
|
ld [wd54d], a
|
|
; Automatically set Mew as caught, since you can't possibly catch it
|
|
ld a, [wCurrentCatchEmMon]
|
|
cp MEW - 1
|
|
jr nz, .notMew
|
|
callba SetPokemonOwnedFlag
|
|
.notMew
|
|
callba Func_86d2
|
|
callba Func_106a6
|
|
ret
|
|
|
|
Func_204f1: ; 0x204f1
|
|
ld a, [wd5b6]
|
|
cp $18
|
|
jr z, .asm_2055e
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd586
|
|
add hl, bc
|
|
ld d, $4
|
|
.asm_20503
|
|
ld a, $1
|
|
ld [hli], a
|
|
inc hl
|
|
ld a, l
|
|
cp wd5b6 % $100
|
|
jr z, .asm_2050f
|
|
dec d
|
|
jr nz, .asm_20503
|
|
.asm_2050f
|
|
ld a, [wd5b6]
|
|
add $4
|
|
cp $18
|
|
jr c, .asm_2051a
|
|
ld a, $18
|
|
.asm_2051a
|
|
ld [wd5b6], a
|
|
cp $18
|
|
jr nz, .asm_20525
|
|
xor a
|
|
ld [wIndicatorStates + 9], a
|
|
.asm_20525
|
|
callba Func_10184
|
|
ld bc, OneHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld bc, $0010
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5e9
|
|
ld de, Data_2a3d
|
|
call Func_3372
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5e4
|
|
ld de, FlippedText
|
|
call Func_3357
|
|
.asm_2055e
|
|
ld bc, $0001
|
|
ld de, $0000
|
|
call Func_3538
|
|
scf
|
|
ret
|
|
|
|
Func_20569: ; 0x20569
|
|
ld bc, $0000
|
|
ld de, $1000
|
|
call Func_3538
|
|
ret
|
|
|
|
Func_20573: ; 0x20573
|
|
ld bc, $0005
|
|
ld de, $0000
|
|
ret
|
|
|
|
Func_2057a: ; 0x2057a
|
|
ld bc, $0005
|
|
ld de, $0000
|
|
ret
|
|
|
|
Func_20581: ; 0x20581
|
|
ld a, [wd54c]
|
|
cp $4
|
|
jp z, Func_2080f
|
|
cp $3
|
|
jp z, Func_20839
|
|
cp $5
|
|
jp z, Func_2085a
|
|
cp $6
|
|
jp z, Func_20887
|
|
cp $7
|
|
jp z, Func_208a8
|
|
cp $8
|
|
jp z, Func_208c9
|
|
cp $9
|
|
jp z, Func_208ea
|
|
cp $a
|
|
jp z, Func_2090b
|
|
cp $b
|
|
jp z, Func_2092c
|
|
cp $c
|
|
jp z, Func_2094d
|
|
cp $d
|
|
jp z, Func_20b02
|
|
cp $2
|
|
jp z, Func_20a65
|
|
cp $1
|
|
jp z, Func_20a82
|
|
cp $0
|
|
jr z, .asm_205cb
|
|
scf
|
|
ret
|
|
|
|
.asm_205cb
|
|
call Func_2077b
|
|
ld a, [wd54d]
|
|
call CallInFollowingTable
|
|
PointerTable_205d4: ; 0x205d4
|
|
padded_dab Func_205e0
|
|
padded_dab Func_2070b
|
|
padded_dab Func_20757
|
|
|
|
Func_205e0: ; 0x205e0
|
|
ld a, [wCurrentStage]
|
|
ld b, a
|
|
ld a, [wd578]
|
|
and a
|
|
ret z
|
|
dec a
|
|
bit 0, b
|
|
jr z, .asm_205f0
|
|
add $c
|
|
.asm_205f0
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd566
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [hl], a
|
|
ld [wd551], a
|
|
call Func_20651
|
|
ld a, [wd558]
|
|
ld [wIndicatorStates + 2], a
|
|
ld a, [wd559]
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_14135
|
|
ld bc, OneMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld de, YeahYouGotItText
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_2064f
|
|
ld a, BANK(StageRedFieldBottomOBJPalette6)
|
|
ld hl, StageRedFieldBottomOBJPalette6
|
|
ld de, $0070
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_2064f
|
|
scf
|
|
ret
|
|
|
|
Func_20651: ; 0x20651
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_20681
|
|
ld a, [wCurrentEvolutionType]
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
swap c
|
|
sla c
|
|
ld hl, Data_d8e80
|
|
add hl, bc
|
|
ld a, [wd554]
|
|
ld c, a
|
|
ld b, $0
|
|
swap c
|
|
sla c
|
|
push hl
|
|
ld hl, vTilesSH tile $2e
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
ld bc, $0020
|
|
ld a, BANK(Data_d8e80)
|
|
call LoadVRAMData
|
|
.asm_20681
|
|
ld a, [wd554]
|
|
inc a
|
|
ld [wd554], a
|
|
cp $1
|
|
jr nz, .asm_20693
|
|
lb de, $07, $28
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_20693
|
|
cp $2
|
|
jr nz, .asm_2069e
|
|
lb de, $07, $44
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_2069e
|
|
cp $3
|
|
ret nz
|
|
lb de, $07, $45
|
|
call PlaySoundEffect
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
xor a
|
|
ld [wIndicatorStates + 9], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld [wIndicatorStates + 8], a
|
|
ld [wIndicatorStates + 13], a
|
|
ld [wIndicatorStates + 14], a
|
|
ld [wIndicatorStates + 11], a
|
|
ld [wIndicatorStates + 12], a
|
|
ld [wIndicatorStates + 6], a
|
|
ld [wIndicatorStates + 7], a
|
|
ld [wd558], a
|
|
ld [wd559], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld a, BANK(StageSharedBonusSlotGlowGfx)
|
|
ld hl, StageSharedBonusSlotGlowGfx + $60
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call LoadVRAMData
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_20700
|
|
ld a, BANK(StageRedFieldBottomOBJPalette7)
|
|
ld hl, StageRedFieldBottomOBJPalette7
|
|
ld de, $0078
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_20700
|
|
callba Func_16425
|
|
ret
|
|
|
|
Func_2070b: ; 0x2070b
|
|
callba RestoreBallSaverAfterCatchEmMode
|
|
callba Func_10ca5
|
|
callba Func_10ac8
|
|
ld de, $0001
|
|
call PlaySong
|
|
ld hl, wd629
|
|
call Func_e4a
|
|
callba SetPokemonOwnedFlag
|
|
ld a, [wd624]
|
|
cp $3
|
|
ret z
|
|
add $2
|
|
cp $3
|
|
jr c, .asm_2074d
|
|
ld a, $3
|
|
.asm_2074d
|
|
ld [wd625], a
|
|
ld a, $80
|
|
ld [wd626], a
|
|
scf
|
|
ret
|
|
|
|
Func_20757: ; 0x20757
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
callba RestoreBallSaverAfterCatchEmMode
|
|
callba Func_10ac8
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_2077b: ; 0x2077b
|
|
ld hl, wd556
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld b, [hl]
|
|
or b
|
|
jr z, .asm_2078e
|
|
dec bc
|
|
ld a, b
|
|
ld [hld], a
|
|
ld [hl], c
|
|
or c
|
|
jr nz, .asm_2078e
|
|
call Func_20a55
|
|
.asm_2078e
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $2
|
|
ld [wd54d], a
|
|
xor a
|
|
ld [wd604], a
|
|
ld hl, wIndicatorStates
|
|
ld [wIndicatorStates + 4], a
|
|
ld [wIndicatorStates + 9], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld [wIndicatorStates + 8], a
|
|
ld [wIndicatorStates + 13], a
|
|
ld [wIndicatorStates + 14], a
|
|
ld [wIndicatorStates + 11], a
|
|
ld [wIndicatorStates + 12], a
|
|
ld [wIndicatorStates + 6], a
|
|
ld [wIndicatorStates + 7], a
|
|
ld [wd558], a
|
|
ld [wd559], a
|
|
ld [wd551], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_207f5
|
|
callba Func_14135
|
|
callba Func_16425
|
|
.asm_207f5
|
|
callba Func_86d2
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, EvolutionFailedText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_2080f: ; 0x2080f
|
|
ld bc, $0001
|
|
ld de, $5000
|
|
call Func_3538
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20837
|
|
ld a, [wIndicatorStates + 9]
|
|
and a
|
|
jr z, .asm_20837
|
|
xor a
|
|
ld [wIndicatorStates + 9], a
|
|
ld a, [wd55c]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55c], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_20837
|
|
scf
|
|
ret
|
|
|
|
Func_20839: ; 0x20839
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20858
|
|
ld a, [wIndicatorStates + 2]
|
|
and a
|
|
jr z, .asm_20858
|
|
xor a
|
|
ld [wIndicatorStates + 2], a
|
|
ld a, [wd563]
|
|
and a
|
|
ld a, $0
|
|
ld [wd563], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_20858
|
|
scf
|
|
ret
|
|
|
|
Func_2085a: ; 0x2085a
|
|
ld bc, $0007
|
|
ld de, $5000
|
|
call Func_3538
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20885
|
|
ld a, [wIndicatorStates + 3]
|
|
and a
|
|
jr z, .asm_20885
|
|
xor a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld a, [wd562]
|
|
and a
|
|
ld a, $0
|
|
ld [wd562], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_20885
|
|
scf
|
|
ret
|
|
|
|
Func_20887: ; 0x20887
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_208a6
|
|
ld a, [wIndicatorStates + 8]
|
|
and a
|
|
jr z, .asm_208a6
|
|
xor a
|
|
ld [wIndicatorStates + 8], a
|
|
ld a, [wd561]
|
|
and a
|
|
ld a, $0
|
|
ld [wd561], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_208a6
|
|
scf
|
|
ret
|
|
|
|
Func_208a8: ; 0x208a8
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_208c7
|
|
ld a, [wIndicatorStates + 13]
|
|
and a
|
|
jr z, .asm_208c7
|
|
xor a
|
|
ld [wIndicatorStates + 13], a
|
|
ld a, [wd55d]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55d], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_208c7
|
|
scf
|
|
ret
|
|
|
|
Func_208c9: ; 0x208c9
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_208e8
|
|
ld a, [wIndicatorStates + 14]
|
|
and a
|
|
jr z, .asm_208e8
|
|
xor a
|
|
ld [wIndicatorStates + 14], a
|
|
ld a, [wd55e]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55e], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_208e8
|
|
scf
|
|
ret
|
|
|
|
Func_208ea: ; 0x208ea
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20909
|
|
ld a, [wIndicatorStates + 11]
|
|
and a
|
|
jr z, .asm_20909
|
|
xor a
|
|
ld [wIndicatorStates + 11], a
|
|
ld a, [wd55f]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55f], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_20909
|
|
scf
|
|
ret
|
|
|
|
Func_2090b: ; 0x2090b
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_2092a
|
|
ld a, [wIndicatorStates + 12]
|
|
and a
|
|
jr z, .asm_2092a
|
|
xor a
|
|
ld [wIndicatorStates + 12], a
|
|
ld a, [wd560]
|
|
and a
|
|
ld a, $0
|
|
ld [wd560], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_2092a
|
|
scf
|
|
ret
|
|
|
|
Func_2092c: ; 0x2092c
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_2094b
|
|
ld a, [wIndicatorStates + 6]
|
|
and a
|
|
jr z, .asm_2094b
|
|
xor a
|
|
ld [wIndicatorStates + 6], a
|
|
ld a, [wd565]
|
|
and a
|
|
ld a, $0
|
|
ld [wd565], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_2094b
|
|
scf
|
|
ret
|
|
|
|
Func_2094d: ; 0x2094d
|
|
ld bc, $0000
|
|
ld de, $1500
|
|
call Func_3538
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20975
|
|
ld a, [wIndicatorStates + 7]
|
|
and a
|
|
jr z, .asm_20975
|
|
xor a
|
|
ld [wIndicatorStates + 7], a
|
|
ld a, [wd564]
|
|
and a
|
|
ld a, $0
|
|
ld [wd564], a
|
|
jp nz, Func_20977
|
|
jp Func_209eb
|
|
|
|
.asm_20975
|
|
scf
|
|
ret
|
|
|
|
Func_20977: ; 0x20977
|
|
lb de, $07, $46
|
|
call PlaySoundEffect
|
|
call Func_20af5
|
|
ld a, [wCurrentEvolutionType]
|
|
ld [hl], a
|
|
ld [wd551], a
|
|
ld a, [wIndicatorStates + 2]
|
|
ld [wd558], a
|
|
ld a, [wIndicatorStates + 3]
|
|
ld [wd559], a
|
|
xor a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_14135
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_209bf
|
|
ld a, BANK(PaletteData_dd188)
|
|
ld hl, PaletteData_dd188
|
|
ld de, $0070
|
|
ld bc, $0010
|
|
call Func_7dc
|
|
.asm_209bf
|
|
ld bc, ThreeHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld a, [wCurrentEvolutionType]
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
ld hl, EvolutionTypeGetTextPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
scf
|
|
ret
|
|
|
|
Func_209eb: ; 0x209eb
|
|
lb de, $07, $47
|
|
call PlaySoundEffect
|
|
ld a, $1
|
|
ld [wd551], a
|
|
ld a, $80
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 1], a
|
|
ld a, [wIndicatorStates + 2]
|
|
ld [wd558], a
|
|
ld a, [wIndicatorStates + 3]
|
|
ld [wd559], a
|
|
xor a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_14135
|
|
ld a, $58
|
|
ld [wd556], a
|
|
ld a, $2
|
|
ld [wd557], a
|
|
ld bc, ThreeHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld a, [wCurrentEvolutionType]
|
|
cp EVO_EXPERIENCE
|
|
ld de, PokemonIsTiredText
|
|
jr z, .asm_20a50
|
|
ld de, ItemNotFoundText
|
|
.asm_20a50
|
|
call LoadTextHeader
|
|
scf
|
|
ret
|
|
|
|
Func_20a55: ; 0x20a55
|
|
ld a, [wd551]
|
|
and a
|
|
jr z, .asm_20a63
|
|
ld a, [wIndicatorStates + 1]
|
|
and a
|
|
jr z, .asm_20a63
|
|
jr asm_20a9f
|
|
|
|
.asm_20a63
|
|
scf
|
|
ret
|
|
|
|
Func_20a65: ; 0x20a65
|
|
ld a, [wd551]
|
|
and a
|
|
jr z, .asm_20a80
|
|
ld a, [wIndicatorStates + 1]
|
|
and a
|
|
jr z, .asm_20a80
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
jr asm_20a9f
|
|
|
|
.asm_20a80
|
|
scf
|
|
ret
|
|
|
|
Func_20a82: ; 0x20a82
|
|
ld a, [wd551]
|
|
and a
|
|
jr z, .asm_20a9d
|
|
ld a, [wIndicatorStates]
|
|
and a
|
|
jr z, .asm_20a9d
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
jr asm_20a9f
|
|
|
|
.asm_20a9d
|
|
scf
|
|
ret
|
|
|
|
asm_20a9f:
|
|
xor a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wd551], a
|
|
ld a, [wd558]
|
|
ld [wIndicatorStates + 2], a
|
|
ld a, [wd559]
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_14135
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_20ada
|
|
ld a, BANK(StageRedFieldBottomOBJPalette6)
|
|
ld hl, StageRedFieldBottomOBJPalette6
|
|
ld de, $0070
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_20ada
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld a, [wCurrentEvolutionType]
|
|
cp EVO_EXPERIENCE
|
|
ld de, PokemonRecoveredText
|
|
jr z, .asm_20aed
|
|
ld de, TryNextPlaceText
|
|
.asm_20aed
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
scf
|
|
ret
|
|
|
|
Func_20af5: ; 0x20af5
|
|
ld a, $11
|
|
call Func_a21
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd566
|
|
add hl, bc
|
|
ret
|
|
|
|
Func_20b02: ; 0x20b02
|
|
ld a, [wCurrentEvolutionMon]
|
|
cp $ff
|
|
jr nz, .asm_20b0c
|
|
ld a, [wCurrentCatchEmMon]
|
|
.asm_20b0c
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_20b18
|
|
inc b
|
|
.asm_20b18
|
|
push bc
|
|
ld hl, MonBillboardPicPointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld c, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld b, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
ld h, b
|
|
ld l, c
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $0180
|
|
call LoadOrCopyVRAMData
|
|
pop bc
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_20b80
|
|
push bc
|
|
ld hl, MonBillboardPaletteMapPointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
hlCoord 7, 4, vBGMap
|
|
call LoadBillboardPaletteMap
|
|
pop bc
|
|
ld hl, MonBillboardPalettePointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
ld bc, $10b0
|
|
ld hl, rBGPI
|
|
call Func_8e1
|
|
.asm_20b80
|
|
callba Func_10e0a
|
|
call Func_3475
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
lb de, $2d, $26
|
|
call PlaySoundEffect
|
|
callba Func_10825
|
|
call Func_3475
|
|
ld a, $1
|
|
ld [wd54d], a
|
|
scf
|
|
ret
|
|
|
|
Func_20bae: ; 0x20bae
|
|
ld a, [wd54c]
|
|
cp $4
|
|
jp z, Func_20e34
|
|
cp $1
|
|
jp z, Func_21089
|
|
cp $e
|
|
jp z, Func_20e5e
|
|
cp $f
|
|
jp z, Func_20e82
|
|
cp $7
|
|
jp z, Func_20ea6
|
|
cp $8
|
|
jp z, Func_20ec7
|
|
cp $9
|
|
jp z, Func_20ee8
|
|
cp $a
|
|
jp z, Func_20f09
|
|
cp $b
|
|
jp z, Func_20f2a
|
|
cp $c
|
|
jp z, Func_20f4b
|
|
cp $d
|
|
jp z, Func_2112a
|
|
cp $2
|
|
jp z, Func_2105c
|
|
cp $0
|
|
jr z, .asm_20bf3
|
|
scf
|
|
ret
|
|
|
|
.asm_20bf3
|
|
call Func_20da0
|
|
ld a, [wd54d]
|
|
call CallInFollowingTable
|
|
PointerTable_20bfc: ; 0x20bfc
|
|
padded_dab Func_20c08
|
|
padded_dab Func_20d30
|
|
padded_dab Func_20d7c
|
|
|
|
Func_20c08: ; 0x20c08
|
|
ld a, [wCurrentStage]
|
|
ld b, a
|
|
ld a, [wd578]
|
|
and a
|
|
ret z
|
|
dec a
|
|
bit 0, b
|
|
jr z, .asm_20c18
|
|
add $c
|
|
.asm_20c18
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd566
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [hl], a
|
|
ld [wd551], a
|
|
call Func_20c76
|
|
ld a, [wd558]
|
|
ld [wIndicatorStates], a
|
|
ld a, [wd559]
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_1c2cb
|
|
ld bc, OneMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld de, YeahYouGotItText
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_20c74
|
|
ld a, BANK(StageBlueFieldBottomOBJPalette6)
|
|
ld hl, StageBlueFieldBottomOBJPalette6
|
|
ld de, $0070
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_20c74
|
|
scf
|
|
ret
|
|
|
|
Func_20c76: ; 0x20c76
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_20ca6
|
|
ld a, [wCurrentEvolutionType]
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
swap c
|
|
sla c
|
|
ld hl, Data_d8e80
|
|
add hl, bc
|
|
ld a, [wd554]
|
|
ld c, a
|
|
ld b, $0
|
|
swap c
|
|
sla c
|
|
push hl
|
|
ld hl, vTilesSH tile $2e
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
pop hl
|
|
ld bc, $0020
|
|
ld a, BANK(Data_d8e80)
|
|
call LoadVRAMData
|
|
.asm_20ca6
|
|
ld a, [wd554]
|
|
inc a
|
|
ld [wd554], a
|
|
cp $1
|
|
jr nz, .asm_20cb8
|
|
lb de, $07, $28
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_20cb8
|
|
cp $2
|
|
jr nz, .asm_20cc3
|
|
lb de, $07, $44
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_20cc3
|
|
cp $3
|
|
ret nz
|
|
lb de, $07, $45
|
|
call PlaySoundEffect
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
xor a
|
|
ld [wIndicatorStates + 9], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 8], a
|
|
ld [wIndicatorStates + 13], a
|
|
ld [wIndicatorStates + 14], a
|
|
ld [wIndicatorStates + 11], a
|
|
ld [wIndicatorStates + 12], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld [wIndicatorStates + 6], a
|
|
ld [wIndicatorStates + 7], a
|
|
ld [wd558], a
|
|
ld [wd559], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
ld a, BANK(StageSharedBonusSlotGlowGfx)
|
|
ld hl, StageSharedBonusSlotGlowGfx + $60
|
|
ld de, vTilesOB tile $20
|
|
ld bc, $00e0
|
|
call LoadVRAMData
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_20d25
|
|
ld a, BANK(StageBlueFieldBottomOBJPalette7)
|
|
ld hl, StageBlueFieldBottomOBJPalette7
|
|
ld de, $0078
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_20d25
|
|
callba Func_1e8f6
|
|
ret
|
|
|
|
Func_20d30: ; 0x20d30
|
|
callba RestoreBallSaverAfterCatchEmMode
|
|
callba Func_10ca5
|
|
callba Func_10ac8
|
|
ld de, $0001
|
|
call PlaySong
|
|
ld hl, wd629
|
|
call Func_e4a
|
|
callba SetPokemonOwnedFlag
|
|
ld a, [wd624]
|
|
cp $3
|
|
ret z
|
|
add $2
|
|
cp $3
|
|
jr c, .asm_20d72
|
|
ld a, $3
|
|
.asm_20d72
|
|
ld [wd625], a
|
|
ld a, $80
|
|
ld [wd626], a
|
|
scf
|
|
ret
|
|
|
|
Func_20d7c: ; 0x20d7c
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
callba RestoreBallSaverAfterCatchEmMode
|
|
callba Func_10ac8
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_20da0: ; 0x20da0
|
|
ld hl, wd556
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld b, [hl]
|
|
or b
|
|
jr z, .asm_20db3
|
|
dec bc
|
|
ld a, b
|
|
ld [hld], a
|
|
ld [hl], c
|
|
or c
|
|
jr nz, .asm_20db3
|
|
call Func_21079
|
|
.asm_20db3
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $2
|
|
ld [wd54d], a
|
|
xor a
|
|
ld [wd604], a
|
|
ld hl, wIndicatorStates
|
|
ld [wIndicatorStates + 4], a
|
|
ld [wIndicatorStates + 9], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 8], a
|
|
ld [wIndicatorStates + 13], a
|
|
ld [wIndicatorStates + 14], a
|
|
ld [wIndicatorStates + 11], a
|
|
ld [wIndicatorStates + 12], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld [wIndicatorStates + 6], a
|
|
ld [wIndicatorStates + 7], a
|
|
ld [wd558], a
|
|
ld [wd559], a
|
|
ld [wd551], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_20e1a
|
|
callba Func_1c2cb
|
|
callba Func_1e8f6
|
|
.asm_20e1a
|
|
callba Func_86d2
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, EvolutionFailedText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_20e34: ; 0x20e34
|
|
ld bc, $0001
|
|
ld de, $5000
|
|
call Func_3538
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20e5c
|
|
ld a, [wIndicatorStates + 9]
|
|
and a
|
|
jr z, .asm_20e5c
|
|
xor a
|
|
ld [wIndicatorStates + 9], a
|
|
ld a, [wd55c]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55c], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20e5c
|
|
scf
|
|
ret
|
|
|
|
Func_20e5e: ; 0x20e5e
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20e80
|
|
ld a, [wIndicatorStates + 3]
|
|
and a
|
|
jr z, .asm_20e80
|
|
xor a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 10], a
|
|
ld a, [wd562]
|
|
and a
|
|
ld a, $0
|
|
ld [wd562], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20e80
|
|
scf
|
|
ret
|
|
|
|
Func_20e82: ; 0x20e82
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20ea4
|
|
ld a, [wIndicatorStates + 8]
|
|
and a
|
|
jr z, .asm_20ea4
|
|
xor a
|
|
ld [wIndicatorStates + 8], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld a, [wd561]
|
|
and a
|
|
ld a, $0
|
|
ld [wd561], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20ea4
|
|
scf
|
|
ret
|
|
|
|
Func_20ea6: ; 0x20ea6
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20ec5
|
|
ld a, [wIndicatorStates + 13]
|
|
and a
|
|
jr z, .asm_20ec5
|
|
xor a
|
|
ld [wIndicatorStates + 13], a
|
|
ld a, [wd55d]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55d], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20ec5
|
|
scf
|
|
ret
|
|
|
|
Func_20ec7: ; 0x20ec7
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20ee6
|
|
ld a, [wIndicatorStates + 14]
|
|
and a
|
|
jr z, .asm_20ee6
|
|
xor a
|
|
ld [wIndicatorStates + 14], a
|
|
ld a, [wd55e]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55e], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20ee6
|
|
scf
|
|
ret
|
|
|
|
Func_20ee8: ; 0x20ee8
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20f07
|
|
ld a, [wIndicatorStates + 11]
|
|
and a
|
|
jr z, .asm_20f07
|
|
xor a
|
|
ld [wIndicatorStates + 11], a
|
|
ld a, [wd55f]
|
|
and a
|
|
ld a, $0
|
|
ld [wd55f], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20f07
|
|
scf
|
|
ret
|
|
|
|
Func_20f09: ; 0x20f09
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20f28
|
|
ld a, [wIndicatorStates + 12]
|
|
and a
|
|
jr z, .asm_20f28
|
|
xor a
|
|
ld [wIndicatorStates + 12], a
|
|
ld a, [wd560]
|
|
and a
|
|
ld a, $0
|
|
ld [wd560], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20f28
|
|
scf
|
|
ret
|
|
|
|
Func_20f2a: ; 0x20f2a
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20f49
|
|
ld a, [wIndicatorStates + 6]
|
|
and a
|
|
jr z, .asm_20f49
|
|
xor a
|
|
ld [wIndicatorStates + 6], a
|
|
ld a, [wd565]
|
|
and a
|
|
ld a, $0
|
|
ld [wd565], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20f49
|
|
scf
|
|
ret
|
|
|
|
Func_20f4b: ; 0x20f4b
|
|
ld bc, $0000
|
|
ld de, $1500
|
|
call Func_3538
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_20f73
|
|
ld a, [wIndicatorStates + 7]
|
|
and a
|
|
jr z, .asm_20f73
|
|
xor a
|
|
ld [wIndicatorStates + 7], a
|
|
ld a, [wd564]
|
|
and a
|
|
ld a, $0
|
|
ld [wd564], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_20f73
|
|
scf
|
|
ret
|
|
|
|
Func_20f75: ; 0x20f75
|
|
lb de, $07, $46
|
|
call PlaySoundEffect
|
|
call Func_2111d
|
|
ld a, [wCurrentEvolutionType]
|
|
ld [hl], a
|
|
ld [wd551], a
|
|
ld a, [wIndicatorStates]
|
|
ld [wd558], a
|
|
ld a, [wIndicatorStates + 3]
|
|
ld [wd559], a
|
|
ld a, [wIndicatorStates + 2]
|
|
ld [wd63f], a
|
|
xor a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_1c2cb
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_20fc3
|
|
ld a, BANK(PaletteData_dd188)
|
|
ld hl, PaletteData_dd188
|
|
ld de, $0070
|
|
ld bc, $0010
|
|
call Func_7dc
|
|
.asm_20fc3
|
|
ld bc, ThreeHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld a, [wCurrentEvolutionType]
|
|
dec a
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
ld hl, EvolutionTypeGetTextPointers
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
scf
|
|
ret
|
|
|
|
Func_20fef: ; 0x20fef
|
|
lb de, $07, $47
|
|
call PlaySoundEffect
|
|
ld a, $1
|
|
ld [wd551], a
|
|
ld a, [wIndicatorStates]
|
|
ld [wd558], a
|
|
ld a, $80
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 1], a
|
|
ld a, [wIndicatorStates + 3]
|
|
ld [wd559], a
|
|
ld a, [wIndicatorStates + 2]
|
|
ld [wd63f], a
|
|
xor a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_1c2cb
|
|
ld a, $58
|
|
ld [wd556], a
|
|
ld a, $2
|
|
ld [wd557], a
|
|
ld bc, ThreeHundredThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld a, [wCurrentEvolutionType]
|
|
cp EVO_EXPERIENCE
|
|
ld de, PokemonIsTiredText
|
|
jr z, .asm_21057
|
|
ld de, ItemNotFoundText
|
|
.asm_21057
|
|
call LoadTextHeader
|
|
scf
|
|
ret
|
|
|
|
Func_2105c: ; 0x2105c
|
|
ld a, [wd551]
|
|
and a
|
|
jr z, .asm_21077
|
|
ld a, [wIndicatorStates + 1]
|
|
and a
|
|
jr z, .asm_21077
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
jr asm_210c7
|
|
|
|
.asm_21077
|
|
scf
|
|
ret
|
|
|
|
Func_21079: ; 0x21079
|
|
ld a, [wd551]
|
|
and a
|
|
jr z, .asm_21087
|
|
ld a, [wIndicatorStates + 1]
|
|
and a
|
|
jr z, .asm_21087
|
|
jr asm_210c7
|
|
|
|
.asm_21087
|
|
scf
|
|
ret
|
|
|
|
Func_21089: ; 0x21089
|
|
ld a, [wd551]
|
|
and a
|
|
jr nz, .asm_210aa
|
|
ld a, [wIndicatorStates]
|
|
and a
|
|
jr z, .asm_210a8
|
|
xor a
|
|
ld [wIndicatorStates], a
|
|
ld a, [wd563]
|
|
and a
|
|
ld a, $0
|
|
ld [wd563], a
|
|
jp nz, Func_20f75
|
|
jp Func_20fef
|
|
|
|
.asm_210a8
|
|
scf
|
|
ret
|
|
|
|
.asm_210aa
|
|
ld a, [wd551]
|
|
and a
|
|
jr z, .asm_210c5
|
|
ld a, [wIndicatorStates]
|
|
and a
|
|
jr z, .asm_210c5
|
|
ld bc, TenThousandPoints
|
|
callba AddBigBCD6FromQueue
|
|
jr asm_210c7
|
|
|
|
.asm_210c5
|
|
scf
|
|
ret
|
|
|
|
asm_210c7:
|
|
xor a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wd551], a
|
|
ld a, [wd558]
|
|
ld [wIndicatorStates], a
|
|
ld a, [wd559]
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, [wd63f]
|
|
ld [wIndicatorStates + 2], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
callba nz, Func_1c2cb
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_21102
|
|
ld a, BANK(StageBlueFieldBottomOBJPalette6)
|
|
ld hl, StageBlueFieldBottomOBJPalette6
|
|
ld de, $0070
|
|
ld bc, $0008
|
|
call Func_7dc
|
|
.asm_21102
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld a, [wCurrentEvolutionType]
|
|
cp EVO_EXPERIENCE
|
|
ld de, PokemonRecoveredText
|
|
jr z, .asm_21115
|
|
ld de, TryNextPlaceText
|
|
.asm_21115
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
scf
|
|
ret
|
|
|
|
Func_2111d: ; 0x2111d
|
|
ld a, $11
|
|
call Func_a21
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd566
|
|
add hl, bc
|
|
ret
|
|
|
|
Func_2112a: ; 0x2112a
|
|
ld a, [wCurrentEvolutionMon]
|
|
cp $ff
|
|
jr nz, .asm_21134
|
|
ld a, [wCurrentCatchEmMon]
|
|
.asm_21134
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_21140
|
|
inc b
|
|
.asm_21140
|
|
push bc
|
|
ld hl, MonBillboardPicPointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld c, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld b, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
ld h, b
|
|
ld l, c
|
|
ld de, vTilesSH tile $10
|
|
ld bc, $0180
|
|
call LoadOrCopyVRAMData
|
|
pop bc
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_211a8
|
|
push bc
|
|
ld hl, MonBillboardPaletteMapPointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
hlCoord 7, 4, vBGMap
|
|
call LoadBillboardPaletteMap
|
|
pop bc
|
|
ld hl, MonBillboardPalettePointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
ld bc, $10b0
|
|
ld hl, rBGPI
|
|
call Func_8e1
|
|
.asm_211a8
|
|
callba Func_10e0a
|
|
call Func_3475
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
lb de, $2d, $26
|
|
call PlaySoundEffect
|
|
callba Func_10825
|
|
call Func_3475
|
|
ld a, $1
|
|
ld [wd54d], a
|
|
scf
|
|
ret
|
|
|
|
SECTION "bank9", ROMX, BANK[$9]
|
|
|
|
InitMeowthBonusStage: ; 0x24000
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld [wStageCollisionState], a
|
|
ld a, [wBallType]
|
|
ld [wBallTypeBackup], a
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld [wBallType], a
|
|
ld [wd49a], a
|
|
ld a, $1
|
|
ld [wd7ac], a
|
|
ld a, $40
|
|
ld [wMeowthXPosition], a
|
|
ld a, $20
|
|
ld [wMeowthYPosition], a
|
|
ld a, $10
|
|
ld [wMeowthAnimationFrameCounter], a
|
|
xor a
|
|
ld [wMeowthStageScore], a
|
|
ld [wd70b], a
|
|
ld [wMeowthStageBonusCounter], a
|
|
ld [wd713], a
|
|
ld [wd739], a
|
|
ld bc, $0100 ; 1 minute 0 seconds
|
|
callba StartTimer
|
|
ld a, $12
|
|
call SetSongBank
|
|
ld de, $0004
|
|
call PlaySong
|
|
ret
|
|
|
|
StartBallMeowthBonusStage: ; 0x24059
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $a6
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $56
|
|
ld [wBallYPos + 1], a
|
|
ld a, $40
|
|
ld [wBallXVelocity], a
|
|
xor a
|
|
ld [wSCX], a
|
|
ld [wStageCollisionState], a
|
|
ld [wd6e6], a
|
|
ld hl, wd6f3
|
|
ld b, $16
|
|
.asm_24081
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_24088
|
|
ld a, $1
|
|
ld [hl], a
|
|
.asm_24088
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_24081
|
|
ld a, $1
|
|
ld [wd7ac], a
|
|
ld a, $40
|
|
ld [wMeowthXPosition], a
|
|
ld a, $20
|
|
ld [wMeowthYPosition], a
|
|
ld a, $10
|
|
ld [wMeowthAnimationFrameCounter], a
|
|
ld a, $ff ; walk left
|
|
ld [wMeowthXMovement], a
|
|
xor a
|
|
ld [wMeowthAnimationFrame], a
|
|
ld [wd6ec], a
|
|
ld [wMeowthAnimationFrameIndex], a
|
|
ld [wd70b], a
|
|
ld [wd70c], a
|
|
ld a, $c8
|
|
ld [wd71a], a
|
|
ld [wd727], a
|
|
ld [wd71b], a
|
|
ld [wd728], a
|
|
ld [wd71c], a
|
|
ld [wd729], a
|
|
ld [wd724], a
|
|
ld [wd731], a
|
|
ld [wd725], a
|
|
ld [wd732], a
|
|
ld [wd726], a
|
|
ld [wd733], a
|
|
xor a
|
|
ld [wd717], a
|
|
ld [wd718], a
|
|
ld [wd719], a
|
|
ld [wd721], a
|
|
ld [wd722], a
|
|
ld [wd723], a
|
|
ld [wd714], a
|
|
ld [wd715], a
|
|
ld [wd716], a
|
|
ld [wd71e], a
|
|
ld [wd71f], a
|
|
ld [wd720], a
|
|
ld [wd64e], a
|
|
ld [wd64f], a
|
|
ld [wd650], a
|
|
ld [wd651], a
|
|
ld [wd795], a
|
|
ld [wd796], a
|
|
ld [wd797], a
|
|
ld [wd798], a
|
|
ld [wd799], a
|
|
ld [wd79a], a
|
|
ld a, [wd4c9]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd4c9], a
|
|
ret
|
|
|
|
Func_24128: ; 0x24128
|
|
callba Func_142fc
|
|
call Func_2862
|
|
callba Func_24fa3
|
|
call Func_24516
|
|
callba Func_1404a
|
|
ret
|
|
|
|
CheckMeowthBonusStageGameObjectCollisions: ; 0x2414d
|
|
call CheckMeowthBonusStageMeowthCollision
|
|
call CheckMeowthBonusStageJewelsCollision
|
|
call CheckMeowthBonusStageJewelsCollision2
|
|
ret
|
|
|
|
CheckMeowthBonusStageMeowthCollision: ; 0x24157
|
|
ld a, [wd6e7]
|
|
cp $0
|
|
ret nz
|
|
ld a, [wMeowthXPosition]
|
|
add -9
|
|
ld b, a
|
|
ld a, [wMeowthYPosition]
|
|
add $6
|
|
ld c, a
|
|
call CheckMeowthCollision
|
|
ld a, $3
|
|
ret nc
|
|
ret
|
|
|
|
CheckMeowthCollision: ; 0x24170
|
|
ld a, [wBallXPos + 1]
|
|
sub b
|
|
cp $30
|
|
jp nc, .noCollision
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
sub c
|
|
cp $28
|
|
jp nc, .noCollision
|
|
ld c, a
|
|
ld e, c
|
|
ld d, $0
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
ld h, d
|
|
ld l, e
|
|
sla e
|
|
rl d
|
|
add hl, de
|
|
ld d, h
|
|
ld e, l
|
|
sla e
|
|
rl d
|
|
ld l, b
|
|
ld h, $0
|
|
add hl, de
|
|
ld de, MeowthCollisionAngles
|
|
add hl, de
|
|
ld a, BANK(MeowthCollisionAngles)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
jr nz, .noCollision
|
|
sla a
|
|
ld [wCollisionForceAngle], a
|
|
ld a, $1
|
|
ld [wd7e9], a
|
|
ld a, [wd6ec]
|
|
cp $2
|
|
ret z
|
|
cp $3
|
|
ret z
|
|
ld a, [wd713]
|
|
and a
|
|
ret nz
|
|
ld a, [wMeowthYMovement]
|
|
and a
|
|
jr z, .asm_241ed
|
|
ld a, [wMeowthYMovement]
|
|
cp $1
|
|
jr nz, .asm_241df
|
|
ld a, [wd70b]
|
|
cp $3
|
|
jr z, .asm_241eb
|
|
jr .asm_241e6
|
|
|
|
.asm_241df
|
|
ld a, [wd70c]
|
|
cp $3
|
|
jr z, .asm_241eb
|
|
.asm_241e6
|
|
ld a, $2
|
|
ld [wd6e7], a
|
|
.asm_241eb
|
|
scf
|
|
ret
|
|
|
|
.asm_241ed
|
|
ld a, [wMeowthYPosition]
|
|
cp $20
|
|
jr nz, .asm_241fd
|
|
ld a, [wd70b]
|
|
cp $3
|
|
jr z, .asm_24210
|
|
jr .asm_2420b
|
|
|
|
.asm_241fd
|
|
ld a, [wMeowthYPosition]
|
|
cp $10
|
|
jr nz, .asm_24210
|
|
ld a, [wd70c]
|
|
cp $3
|
|
jr z, .asm_24210
|
|
.asm_2420b
|
|
ld a, $1
|
|
ld [wd6e7], a
|
|
.asm_24210
|
|
scf
|
|
ret
|
|
|
|
.noCollision
|
|
and a
|
|
ret
|
|
|
|
CheckMeowthBonusStageJewelsCollision: ; 0x24214
|
|
ld a, [wd717]
|
|
cp $2
|
|
jr nz, .asm_2422e
|
|
ld a, [wd71a]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd727]
|
|
add $c
|
|
ld c, a
|
|
call CheckJewelCollision
|
|
ld a, $0
|
|
jr c, .asm_24260
|
|
.asm_2422e
|
|
ld a, [wd718]
|
|
cp $2
|
|
jr nz, .asm_24248
|
|
ld a, [wd71b]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd728]
|
|
add $c
|
|
ld c, a
|
|
call CheckJewelCollision
|
|
ld a, $1
|
|
jr c, .asm_24260
|
|
.asm_24248
|
|
ld a, [wd719]
|
|
cp $2
|
|
ret nz
|
|
ld a, [wd71c]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd729]
|
|
add $c
|
|
ld c, a
|
|
call CheckJewelCollision
|
|
ld a, $2
|
|
ret nc
|
|
.asm_24260
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd717
|
|
add hl, bc
|
|
ld a, $3
|
|
ld [hl], a
|
|
ld hl, wd714
|
|
add hl, bc
|
|
ld a, $0
|
|
ld [hl], a
|
|
ret
|
|
|
|
CheckJewelCollision: ; 0x24272
|
|
ld a, [wBallXPos + 1]
|
|
sub b
|
|
cp $18
|
|
jr nc, .noCollision
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
sub c
|
|
cp $18
|
|
jr nc, .noCollision
|
|
ld c, a
|
|
ld e, c
|
|
ld d, $0
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
ld h, d
|
|
ld l, e
|
|
sla e
|
|
rl d
|
|
add hl, de
|
|
ld d, h
|
|
ld e, l
|
|
ld l, b
|
|
ld h, $0
|
|
add hl, de
|
|
ld de, MeowthJewelCollisionAngles
|
|
add hl, de
|
|
ld a, BANK(MeowthJewelCollisionAngles)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
jr nz, .noCollision
|
|
sla a
|
|
ld [wCollisionForceAngle], a
|
|
ld a, $1
|
|
ld [wd7e9], a
|
|
scf
|
|
ret
|
|
|
|
.noCollision
|
|
and a
|
|
ret
|
|
|
|
CheckMeowthBonusStageJewelsCollision2: ; 0x242bb
|
|
ld a, [wd721]
|
|
cp $2
|
|
jr nz, .asm_242d5
|
|
ld a, [wd724]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd731]
|
|
add $c
|
|
ld c, a
|
|
call CheckJewelCollision
|
|
ld a, $0
|
|
jr c, .asm_24307
|
|
.asm_242d5
|
|
ld a, [wd722]
|
|
cp $2
|
|
jr nz, .asm_242ef
|
|
ld a, [wd725]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd732]
|
|
add $c
|
|
ld c, a
|
|
call CheckJewelCollision
|
|
ld a, $1
|
|
jr c, .asm_24307
|
|
.asm_242ef
|
|
ld a, [wd723]
|
|
cp $2
|
|
ret nz
|
|
ld a, [wd726]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd733]
|
|
add $c
|
|
ld c, a
|
|
call CheckJewelCollision
|
|
ld a, $2
|
|
ret nc
|
|
.asm_24307
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd721
|
|
add hl, bc
|
|
ld a, $3
|
|
ld [hl], a
|
|
ld hl, wd71e
|
|
add hl, bc
|
|
ld a, $0
|
|
ld [hl], a
|
|
ret
|
|
|
|
Func_24319: ; 0x2438f
|
|
ld a, [wd6f4]
|
|
cp $0
|
|
jr z, .asm_24333
|
|
ld a, [wd71a]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd727]
|
|
add $4
|
|
ld c, a
|
|
call Func_24405
|
|
ld a, $0
|
|
jr c, .asm_24373
|
|
.asm_24333
|
|
ld a, [wd6f4]
|
|
cp $1
|
|
jr z, .asm_2434d
|
|
ld a, [wd71b]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd728]
|
|
add $4
|
|
ld c, a
|
|
call Func_24405
|
|
ld a, $1
|
|
jr c, .asm_24373
|
|
.asm_2434d
|
|
ld a, [wd6f4]
|
|
cp $2
|
|
ret z
|
|
ld a, [wd71c]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd729]
|
|
add $4
|
|
ld c, a
|
|
call Func_24405
|
|
ld a, $2
|
|
jr c, .asm_24373
|
|
ld a, [wd6f4]
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd6f8
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ret
|
|
|
|
.asm_24373
|
|
ld a, [wd6f4]
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd6f8
|
|
add hl, bc
|
|
inc [hl]
|
|
ld d, $4
|
|
ld a, [wd6f4]
|
|
add d
|
|
ld d, a
|
|
ld a, [hl]
|
|
cp d
|
|
ret nc
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ret
|
|
|
|
Func_2438f: ; 0x2438f
|
|
ld a, [wd6f4]
|
|
cp $a
|
|
jr z, .asm_243a9
|
|
ld a, [wd724]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd731]
|
|
add $4
|
|
ld c, a
|
|
call Func_24405
|
|
ld a, $a
|
|
jr c, .asm_243e9
|
|
.asm_243a9
|
|
ld a, [wd6f4]
|
|
cp $b
|
|
jr z, .asm_243c3
|
|
ld a, [wd725]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd732]
|
|
add $4
|
|
ld c, a
|
|
call Func_24405
|
|
ld a, $b
|
|
jr c, .asm_243e9
|
|
.asm_243c3
|
|
ld a, [wd6f4]
|
|
cp $c
|
|
ret z
|
|
ld a, [wd726]
|
|
sub $4
|
|
ld b, a
|
|
ld a, [wd733]
|
|
add $4
|
|
ld c, a
|
|
call Func_24405
|
|
ld a, $c
|
|
jr c, .asm_243e9
|
|
ld a, [wd6f4]
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd6f8
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ret
|
|
|
|
.asm_243e9
|
|
ld a, [wd6f4]
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd6f8
|
|
add hl, bc
|
|
inc [hl]
|
|
ld d, $4
|
|
ld a, [wd6f4]
|
|
add d
|
|
ld d, a
|
|
ld a, [hl]
|
|
cp d
|
|
ret nc
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ret
|
|
|
|
Func_24405: ; 0x24405
|
|
ld hl, wd71a
|
|
ld a, [wd6f4]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
add $8
|
|
sub b
|
|
cp $18
|
|
jr nc, .asm_24428
|
|
ld b, a
|
|
ld hl, wd727
|
|
add hl, de
|
|
ld a, [hl]
|
|
add $8
|
|
sub c
|
|
cp $18
|
|
jr nc, .asm_24428
|
|
ld c, a
|
|
ld d, b
|
|
scf
|
|
ret
|
|
|
|
.asm_24428
|
|
and a
|
|
ret
|
|
|
|
Func_2442a: ; 0x2442a
|
|
ld a, [wd710]
|
|
jr nz, .asm_2443f
|
|
ld a, [wMeowthStageBonusCounter]
|
|
dec a
|
|
dec a
|
|
cp $fe
|
|
jr z, .asm_24447
|
|
cp $ff
|
|
jr z, .asm_24447
|
|
ld [wd79a], a
|
|
.asm_2443f
|
|
ld de, wd79a
|
|
call Func_24f00
|
|
jr .asm_2444b
|
|
|
|
.asm_24447
|
|
xor a
|
|
ld [wd79a], a
|
|
.asm_2444b
|
|
call Func_244f5
|
|
call Func_245ab
|
|
call Func_248ac
|
|
call Func_24d07
|
|
ld a, [wMeowthStageScore]
|
|
cp $14
|
|
jr c, .asm_24498
|
|
ld a, [wd712]
|
|
cp $2
|
|
jr nc, .asm_24498
|
|
ld a, [wd498]
|
|
cp $4
|
|
ret z
|
|
ld a, $4
|
|
ld [wd712], a
|
|
ld [wd498], a
|
|
ld a, $96
|
|
ld [wd739], a
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld a, $1
|
|
ld [wd49a], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, MeowthStageClearedText
|
|
call LoadTextHeader
|
|
lb de, $4b, $2a
|
|
call PlaySoundEffect
|
|
.asm_24498
|
|
ld a, [wd712]
|
|
cp $4
|
|
jr nz, .asm_244b0
|
|
ld a, [wSFXTimer]
|
|
and a
|
|
jr nz, .asm_244b0
|
|
ld de, $0004
|
|
call PlaySong
|
|
ld a, $5
|
|
ld [wd712], a
|
|
.asm_244b0
|
|
ld a, [wd712]
|
|
cp $4
|
|
jr z, .asm_244c1
|
|
callba Func_107f8
|
|
.asm_244c1
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $1
|
|
ld [wd7be], a
|
|
call Func_2862
|
|
callba Func_86d2
|
|
ld a, $1
|
|
ld [wd713], a
|
|
ld a, $1
|
|
ld [wd712], a
|
|
ld hl, MeowthAnimationData5
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $4
|
|
ld [wd6ec], a
|
|
ret
|
|
|
|
Func_244f5: ; 0x244f5
|
|
ld a, [wd6e6]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4b4]
|
|
cp $8a
|
|
ret nc
|
|
ld a, $1
|
|
ld [wStageCollisionState], a
|
|
ld [wd6e6], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_24516
|
|
ret
|
|
|
|
Func_24516: ; 0x24516
|
|
ld a, [wStageCollisionState]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_24533
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_24529
|
|
ld hl, TileDataPointers_2456f
|
|
.asm_24529
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_24533)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_24533: ; 0x24533
|
|
dw TileData_24537
|
|
dw TileData_2453a
|
|
|
|
TileData_24537: ; 0x24537
|
|
db $01
|
|
dw TileData_2453D
|
|
|
|
TileData_2453a: ; 0x2453a
|
|
db $01
|
|
dw TileData_24556
|
|
|
|
TileData_2453D: ; 0x2453D
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $01, $02
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $FF, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $80, $FD, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $F6, $FA
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_24556: ; 0x24556
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $E9, $E5
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $E7, $E3
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $12, $13, $E4
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $10, $11
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_2456f: ; 0x2456f
|
|
dw TileData_24573
|
|
dw TileData_24576
|
|
|
|
TileData_24573: ; 0x
|
|
db $01
|
|
dw TileData_24579
|
|
|
|
TileData_24576: ; 0x
|
|
db $01
|
|
dw TileData_24592
|
|
|
|
TileData_24579: ; 0x24579
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $F6, $F5
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $F4, $F3
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $80, $F1, $F2
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $EA, $EE
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_24592: ; 0x24592
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $E5, $E3
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $E4, $E2
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $F0, $EF, $E3
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $ED, $EC
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_245ab: ; 0x245ab
|
|
ld a, [wd6e7]
|
|
and a
|
|
jr z, .asm_24621
|
|
cp $2
|
|
jr z, .asm_24621
|
|
ld a, $1
|
|
ld [wd6f3], a
|
|
ld a, [wMeowthYPosition]
|
|
cp $20
|
|
jr z, .asm_245c7
|
|
cp $10
|
|
jr z, .asm_245cc
|
|
jr .asm_245cf
|
|
|
|
.asm_245c7
|
|
call Func_247d9
|
|
jr .asm_245cf
|
|
|
|
.asm_245cc
|
|
call Func_24c28
|
|
.asm_245cf
|
|
xor a
|
|
ld [wd6e7], a
|
|
ld [wd6f3], a
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $3
|
|
ld [wd804], a
|
|
lb de, $00, $33
|
|
call PlaySoundEffect
|
|
ld bc, OneThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
xor a
|
|
ld [wMeowthStageBonusCounter], a
|
|
ld a, [wd6ec]
|
|
cp $2
|
|
jr nc, .asm_24621
|
|
and a
|
|
jr nz, .asm_24611
|
|
ld hl, MeowthAnimationData3
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $2
|
|
ld [wd6ec], a
|
|
jr .asm_24651
|
|
|
|
.asm_24611
|
|
ld hl, MeowthAnimationData4
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $3
|
|
ld [wd6ec], a
|
|
jr .asm_24651
|
|
|
|
.asm_24621
|
|
ld a, [wd713]
|
|
and a
|
|
jr z, .asm_2462e
|
|
ld a, $4
|
|
ld [wd6ec], a
|
|
jr .asm_24651
|
|
|
|
.asm_2462e
|
|
ld a, [wd6ec]
|
|
cp $2
|
|
jr nc, .asm_24651
|
|
ld a, [wd70b]
|
|
cp $3
|
|
jr nz, .asm_24651
|
|
ld a, [wd70c]
|
|
cp $3
|
|
jr nz, .asm_24651
|
|
ld hl, MeowthAnimationData5
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $4
|
|
ld [wd6ec], a
|
|
.asm_24651
|
|
ld a, [wd6ec]
|
|
cp $2
|
|
call c, Func_24709
|
|
call Func_2465d
|
|
ret
|
|
|
|
Func_2465d: ; 0x2465d
|
|
ld a, [wd6ec]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MewothAnimationDataTable ; 0x246e2
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call UpdateAnimation
|
|
ret nc
|
|
ld a, [wd6ec]
|
|
and a
|
|
jr nz, .asm_24689
|
|
ld a, [wMeowthAnimationFrameIndex]
|
|
cp $4
|
|
ret nz
|
|
ld hl, MeowthAnimationData1
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
.asm_24689
|
|
cp $1
|
|
jr nz, .asm_2469d
|
|
ld a, [wMeowthAnimationFrameIndex]
|
|
cp $4
|
|
ret nz
|
|
ld hl, MeowthAnimationData2
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
.asm_2469d
|
|
cp $2
|
|
jr nz, .asm_246b5
|
|
ld a, [wMeowthAnimationFrameIndex]
|
|
cp $1
|
|
ret nz
|
|
ld hl, MeowthAnimationData1
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
xor a
|
|
ld [wd6ec], a
|
|
ret
|
|
|
|
.asm_246b5
|
|
cp $3
|
|
jr nz, .asm_246ce
|
|
ld a, [wMeowthAnimationFrameIndex]
|
|
cp $1
|
|
ret nz
|
|
ld hl, MeowthAnimationData2
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $1
|
|
ld [wd6ec], a
|
|
ret
|
|
|
|
.asm_246ce
|
|
cp $4
|
|
jr nz, .asm_24689
|
|
ld a, [wMeowthAnimationFrameIndex]
|
|
cp $2
|
|
ret nz
|
|
ld hl, MeowthAnimationData5
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
MewothAnimationDataTable: ; 0x246e2
|
|
dw MeowthAnimationData1
|
|
dw MeowthAnimationData2
|
|
dw MeowthAnimationData3
|
|
dw MeowthAnimationData4
|
|
dw MeowthAnimationData5
|
|
|
|
MeowthAnimationData1: ; 0x246ec
|
|
; Each entry is [OAM id][duration]
|
|
db $10, $00
|
|
db $0B, $01
|
|
db $10, $02
|
|
db $0C, $01
|
|
db $00 ; terminator
|
|
|
|
MeowthAnimationData2: ; 0x246f5
|
|
; Each entry is [OAM id][duration]
|
|
db $10, $04
|
|
db $0B, $05
|
|
db $10, $06
|
|
db $0C, $05
|
|
db $00 ; terminator
|
|
|
|
MeowthAnimationData3: ; 0x246fe
|
|
; Each entry is [OAM id][duration]
|
|
db $16, $03
|
|
db $00 ; terminator
|
|
|
|
MeowthAnimationData4: ; 0x24701
|
|
; Each entry is [OAM id][duration]
|
|
db $16, $07
|
|
db $00 ; terminator
|
|
|
|
MeowthAnimationData5: ; 0x24704
|
|
db $17, $08
|
|
db $17, $09
|
|
db $00 ; terminator
|
|
|
|
Func_24709: ; 0x24709
|
|
ld a, [wMeowthXPosition]
|
|
ld hl, wMeowthXMovement
|
|
add [hl]
|
|
ld [wMeowthXPosition], a
|
|
ld hl, wMeowthYMovement
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_24730
|
|
bit 7, [hl]
|
|
ld a, [wMeowthYPosition]
|
|
jr nz, .asm_24724
|
|
inc a
|
|
jr .asm_24725
|
|
|
|
.asm_24724
|
|
dec a
|
|
.asm_24725
|
|
cp $21
|
|
jr z, .asm_24730
|
|
cp $f
|
|
jr z, .asm_24730
|
|
ld [wMeowthYPosition], a
|
|
.asm_24730
|
|
call Func_24737
|
|
call Func_2476d
|
|
ret
|
|
|
|
Func_24737: ; 0x24737
|
|
ld a, [wMeowthXPosition]
|
|
cp $8
|
|
jr nc, .asm_24742
|
|
ld a, $1
|
|
jr .asm_2475a
|
|
|
|
.asm_24742
|
|
cp $78
|
|
jr c, .asm_2474a
|
|
ld a, $ff
|
|
jr .asm_2475a
|
|
|
|
.asm_2474a
|
|
ld a, [hNumFramesDropped]
|
|
and $3f
|
|
ret nz
|
|
call GenRandom
|
|
bit 7, a
|
|
ld a, $1
|
|
jr z, .asm_2475a
|
|
ld a, $ff
|
|
.asm_2475a
|
|
ld [wMeowthXMovement], a
|
|
bit 7, a
|
|
ld a, $1
|
|
jr z, .asm_24764
|
|
xor a
|
|
.asm_24764
|
|
ld [wd6ec], a
|
|
ld a, $2
|
|
ld [wMeowthAnimationFrameCounter], a
|
|
ret
|
|
|
|
Func_2476d: ; 0x2476d
|
|
ld a, [wMeowthYMovement]
|
|
and a
|
|
jr z, .asm_247ab
|
|
cp $1
|
|
jr z, .asm_24791
|
|
ld a, [wMeowthYPosition]
|
|
cp $10
|
|
jr nz, .asm_2478d
|
|
ld a, [wd6e7]
|
|
cp $2
|
|
jr nz, .asm_2478a
|
|
ld a, $1
|
|
ld [wd6e7], a
|
|
.asm_2478a
|
|
xor a
|
|
jr .asm_247c9
|
|
|
|
.asm_2478d
|
|
ld a, $ff
|
|
jr .asm_247c9
|
|
|
|
.asm_24791
|
|
ld a, [wMeowthYPosition]
|
|
cp $20
|
|
jr nz, .asm_247a7
|
|
ld a, [wd6e7]
|
|
cp $2
|
|
jr nz, .asm_247a4
|
|
ld a, $1
|
|
ld [wd6e7], a
|
|
.asm_247a4
|
|
xor a
|
|
jr .asm_247c9
|
|
|
|
.asm_247a7
|
|
ld a, $1
|
|
jr .asm_247c9
|
|
|
|
.asm_247ab
|
|
ld a, [wd70b]
|
|
cp $3
|
|
jr z, .asm_247cd
|
|
ld a, [wd70c]
|
|
cp $3
|
|
jr z, .asm_247d3
|
|
ld a, [hNumFramesDropped]
|
|
and $3f
|
|
ret nz
|
|
call GenRandom
|
|
bit 0, a
|
|
ld a, $1
|
|
jr z, .asm_247c9
|
|
ld a, $ff
|
|
.asm_247c9
|
|
ld [wMeowthYMovement], a
|
|
ret
|
|
|
|
.asm_247cd
|
|
ld a, $ff
|
|
ld [wMeowthYMovement], a
|
|
ret
|
|
|
|
.asm_247d3
|
|
ld a, $1
|
|
ld [wMeowthYMovement], a
|
|
ret
|
|
|
|
Func_247d9: ; 0x247d9
|
|
ld a, [wd6f3]
|
|
and a
|
|
ret z
|
|
ld a, [wd71a]
|
|
cp $c8
|
|
jr nz, .asm_24823
|
|
ld a, [wMeowthXPosition]
|
|
add $8
|
|
ld [wd71a], a
|
|
ld a, [wMeowthYPosition]
|
|
add $fb
|
|
ld [wd727], a
|
|
ld a, $1
|
|
ld [wd717], a
|
|
xor a
|
|
ld [wd6f3], a
|
|
ld [wd714], a
|
|
ld [wd6f5], a
|
|
ld [wd6f8], a
|
|
ld [wd6fb], a
|
|
ld a, [wMeowthXPosition]
|
|
add $14
|
|
ld b, a
|
|
ld a, [wd4b4]
|
|
cp b
|
|
jr nc, .asm_2481d
|
|
ld a, $0
|
|
ld [wd72a], a
|
|
jr .asm_24822
|
|
|
|
.asm_2481d
|
|
ld a, $1
|
|
ld [wd72a], a
|
|
.asm_24822
|
|
ret
|
|
|
|
.asm_24823
|
|
ld a, [wd71b]
|
|
cp $c8
|
|
jr nz, .asm_24868
|
|
ld a, [wMeowthXPosition]
|
|
add $8
|
|
ld [wd71b], a
|
|
ld a, [wMeowthYPosition]
|
|
add $fb
|
|
ld [wd728], a
|
|
ld a, $1
|
|
ld [wd718], a
|
|
xor a
|
|
ld [wd6f3], a
|
|
ld [wd715], a
|
|
ld [wd6f6], a
|
|
ld [wd6f9], a
|
|
ld [wd6fc], a
|
|
ld a, [wMeowthXPosition]
|
|
add $14
|
|
ld b, a
|
|
ld a, [wd4b4]
|
|
cp b
|
|
jr nc, .asm_24862
|
|
ld a, $0
|
|
ld [wd72b], a
|
|
jr .asm_24867
|
|
|
|
.asm_24862
|
|
ld a, $1
|
|
ld [wd72b], a
|
|
.asm_24867
|
|
ret
|
|
|
|
.asm_24868
|
|
ld a, [wd71c]
|
|
cp $c8
|
|
ret nz
|
|
ld a, [wMeowthXPosition]
|
|
add $8
|
|
ld [wd71c], a
|
|
ld a, [wMeowthYPosition]
|
|
add $fb
|
|
ld [wd729], a
|
|
ld a, $1
|
|
ld [wd719], a
|
|
xor a
|
|
ld [wd6f3], a
|
|
ld [wd716], a
|
|
ld [wd6f7], a
|
|
ld [wd6fa], a
|
|
ld [wd6fd], a
|
|
ld a, [wMeowthXPosition]
|
|
add $14
|
|
ld b, a
|
|
ld a, [wd4b4]
|
|
cp b
|
|
jr nc, .asm_248a6
|
|
ld a, $0
|
|
ld [wd72c], a
|
|
jr .asm_248ab
|
|
|
|
.asm_248a6
|
|
ld a, $1
|
|
ld [wd72c], a
|
|
.asm_248ab
|
|
ret
|
|
|
|
Func_248ac: ; 0x248ac
|
|
ld a, [wd717]
|
|
cp $1
|
|
jr nz, .asm_248d3
|
|
ld a, [wd714]
|
|
cp $a
|
|
jr z, .asm_248c4
|
|
ld a, $0
|
|
ld [wd6f4], a
|
|
call Func_24a30
|
|
jr .asm_248d3
|
|
|
|
.asm_248c4
|
|
ld hl, wd70b
|
|
inc [hl]
|
|
ld a, $2
|
|
ld [wd717], a
|
|
lb de, $00, $34
|
|
call PlaySoundEffect
|
|
.asm_248d3
|
|
ld a, [wd718]
|
|
cp $1
|
|
jr nz, .asm_248fa
|
|
ld a, [wd715]
|
|
cp $a
|
|
jr z, .asm_248eb
|
|
ld a, $1
|
|
ld [wd6f4], a
|
|
call Func_24a30
|
|
jr .asm_248fa
|
|
|
|
.asm_248eb
|
|
ld hl, wd70b
|
|
inc [hl]
|
|
ld a, $2
|
|
ld [wd718], a
|
|
lb de, $00, $34
|
|
call PlaySoundEffect
|
|
.asm_248fa
|
|
ld a, [wd719]
|
|
cp $1
|
|
jr nz, .asm_24921
|
|
ld a, [wd716]
|
|
cp $a
|
|
jr z, .asm_24912
|
|
ld a, $2
|
|
ld [wd6f4], a
|
|
call Func_24a30
|
|
jr .asm_24921
|
|
|
|
.asm_24912
|
|
ld hl, wd70b
|
|
inc [hl]
|
|
ld a, $2
|
|
ld [wd719], a
|
|
lb de, $00, $34
|
|
call PlaySoundEffect
|
|
.asm_24921
|
|
ld a, [wd717]
|
|
cp $2
|
|
jr nz, .asm_2492c
|
|
ld hl, wd714
|
|
inc [hl]
|
|
.asm_2492c
|
|
ld a, [wd718]
|
|
cp $2
|
|
jr nz, .asm_24937
|
|
ld hl, wd715
|
|
inc [hl]
|
|
.asm_24937
|
|
ld a, [wd719]
|
|
cp $2
|
|
jr nz, .asm_24942
|
|
ld hl, wd716
|
|
inc [hl]
|
|
.asm_24942
|
|
ld a, [wd717]
|
|
cp $3
|
|
jr nz, .asm_24968
|
|
ld a, [wd71a]
|
|
ld b, a
|
|
ld a, [wd727]
|
|
ld c, a
|
|
ld hl, wd714
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr nz, .asm_2495f
|
|
call Func_24e7f
|
|
jr .asm_24968
|
|
|
|
.asm_2495f
|
|
cp $a
|
|
jr nz, .asm_24968
|
|
ld a, $4
|
|
ld [wd717], a
|
|
.asm_24968
|
|
ld a, [wd718]
|
|
cp $3
|
|
jr nz, .asm_2498e
|
|
ld a, [wd71b]
|
|
ld b, a
|
|
ld a, [wd728]
|
|
ld c, a
|
|
ld hl, wd715
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr nz, .asm_24985
|
|
call Func_24e7f
|
|
jr .asm_2498e
|
|
|
|
.asm_24985
|
|
cp $a
|
|
jr nz, .asm_2498e
|
|
ld a, $4
|
|
ld [wd718], a
|
|
.asm_2498e
|
|
ld a, [wd719]
|
|
cp $3
|
|
jr nz, .asm_249b4
|
|
ld a, [wd71c]
|
|
ld b, a
|
|
ld a, [wd729]
|
|
ld c, a
|
|
ld hl, wd716
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr nz, .asm_249ab
|
|
call Func_24e7f
|
|
jr .asm_249b4
|
|
|
|
.asm_249ab
|
|
cp $a
|
|
jr nz, .asm_249b4
|
|
ld a, $4
|
|
ld [wd719], a
|
|
.asm_249b4
|
|
ld a, [wd717]
|
|
cp $4
|
|
jr nz, .asm_249d0
|
|
ld a, $c8
|
|
ld [wd71a], a
|
|
ld [wd727], a
|
|
xor a
|
|
ld [wd717], a
|
|
ld hl, wd70b
|
|
dec [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr z, .asm_24a06
|
|
.asm_249d0
|
|
ld a, [wd718]
|
|
cp $4
|
|
jr nz, .asm_249ec
|
|
ld a, $c8
|
|
ld [wd71b], a
|
|
ld [wd728], a
|
|
xor a
|
|
ld [wd718], a
|
|
ld hl, wd70b
|
|
dec [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr z, .asm_24a06
|
|
.asm_249ec
|
|
ld a, [wd719]
|
|
cp $4
|
|
ret nz
|
|
ld a, $c8
|
|
ld [wd71c], a
|
|
ld [wd729], a
|
|
xor a
|
|
ld [wd719], a
|
|
ld hl, wd70b
|
|
dec [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
ret nz
|
|
.asm_24a06
|
|
ld a, [wd713]
|
|
and a
|
|
ret nz
|
|
ld a, [wMeowthXMovement]
|
|
cp $ff
|
|
jr z, .asm_24a21
|
|
ld hl, MeowthAnimationData2
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $1
|
|
ld [wd6ec], a
|
|
ret
|
|
|
|
.asm_24a21
|
|
ld hl, MeowthAnimationData1
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $0
|
|
ld [wd6ec], a
|
|
ret
|
|
|
|
Func_24a30: ; 0x24a30
|
|
ld a, [wd6f4]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd6f8
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_24a42
|
|
call Func_24b41
|
|
ret
|
|
|
|
.asm_24a42
|
|
ld a, [wd6f4]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
bit 2, a
|
|
jr z, .asm_24a5e
|
|
bit 1, a
|
|
jr nz, .asm_24a5e
|
|
bit 0, a
|
|
jr nz, .asm_24a5e
|
|
ld hl, wd714
|
|
add hl, bc
|
|
inc [hl]
|
|
.asm_24a5e
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld hl, Data_24af1
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld hl, wd72a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr nz, .asm_24a97
|
|
.asm_24a72
|
|
ld hl, wd72a
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
push af
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, Data_24af1
|
|
add hl, de
|
|
pop af
|
|
add [hl]
|
|
cp $8e
|
|
jr nc, .asm_24a97
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld [hl], a
|
|
jr .asm_24abf
|
|
|
|
.asm_24a97
|
|
ld hl, wd72a
|
|
add hl, bc
|
|
ld [hl], $1
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, Data_24af1
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld a, $ff
|
|
sub d
|
|
inc a
|
|
ld d, a
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add d
|
|
cp $5
|
|
jr c, .asm_24a72
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld [hl], a
|
|
.asm_24abf
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, Data_24af1
|
|
add hl, de
|
|
inc hl
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld hl, wd727
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add d
|
|
ld hl, wd727
|
|
add hl, bc
|
|
ld [hl], a
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
inc [hl]
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $46
|
|
jr nz, .asm_24af0
|
|
ld a, c
|
|
cp $9
|
|
jr c, .asm_24aed
|
|
call Func_2438f
|
|
ret
|
|
|
|
.asm_24aed
|
|
call Func_24319
|
|
.asm_24af0
|
|
ret
|
|
|
|
Data_24af1:
|
|
; These are offsets for something in the Meowth stage
|
|
db 2, -4
|
|
db 2, -4
|
|
db 2, -4
|
|
db 2, 0
|
|
db 2, -2
|
|
db 2, 0
|
|
db 2, -2
|
|
db 2, 0
|
|
db 2, -2
|
|
db 2, 0
|
|
db 2, -2
|
|
db 2, 0
|
|
db 2, 0
|
|
db 2, 0
|
|
db 2, 0
|
|
db 2, 2
|
|
db 2, 2
|
|
db 2, 2
|
|
db 2, 2
|
|
db 2, 2
|
|
db 2, 3
|
|
db 2, 4
|
|
db 2, 4
|
|
db 2, 4
|
|
db 2, 4
|
|
db 2, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 1, 4
|
|
db 0, 0
|
|
db 0, 0
|
|
db 0, 0
|
|
db 0, 0
|
|
|
|
Func_24b41: ; 0x24b41
|
|
ld a, [wd6f4]
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $14
|
|
jp nc, Func_24bf6
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld hl, Data_24c0a
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld hl, wd72a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr nz, .asm_24b8a
|
|
.asm_24b65
|
|
ld hl, wd72a
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
push af
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, Data_24c0a
|
|
add hl, de
|
|
pop af
|
|
add [hl]
|
|
cp $90
|
|
jr nc, .asm_24b8a
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld [hl], a
|
|
jr .asm_24bb2
|
|
|
|
.asm_24b8a
|
|
ld hl, wd72a
|
|
add hl, bc
|
|
ld [hl], $1
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, Data_24c0a
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld a, $ff
|
|
sub d
|
|
inc a
|
|
ld d, a
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add d
|
|
cp $6
|
|
jr c, .asm_24b65
|
|
ld hl, wd71a
|
|
add hl, bc
|
|
ld [hl], a
|
|
.asm_24bb2
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, Data_24c0a
|
|
add hl, de
|
|
inc hl
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld hl, wd727
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add d
|
|
ld hl, wd727
|
|
add hl, bc
|
|
ld [hl], a
|
|
ld hl, wd6f5
|
|
add hl, bc
|
|
inc [hl]
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $12
|
|
jr nz, .asm_24bf4
|
|
ld a, c
|
|
cp $9
|
|
jr c, .asm_24be1
|
|
call Func_2438f
|
|
jr .asm_24be4
|
|
|
|
.asm_24be1
|
|
call Func_24319
|
|
.asm_24be4
|
|
ld a, [wd6f4]
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd6f8
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jr nz, .asm_24bf4
|
|
ld [hl], $1
|
|
.asm_24bf4
|
|
scf
|
|
ret
|
|
|
|
Func_24bf6: ; 0x24bf6
|
|
ld a, [wd6f4]
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wd6f8
|
|
add hl, bc
|
|
ld [hl], $0
|
|
ld hl, wd714
|
|
add hl, bc
|
|
ld [hl], $a
|
|
ccf
|
|
ret
|
|
|
|
Data_24c0a:
|
|
; These are offsets for something in the Meowth stage
|
|
db 2, -2
|
|
db 2, -1
|
|
db 2, -1
|
|
db 2, 0
|
|
db 2, 0
|
|
db 2, 0
|
|
db 2, 1
|
|
db 2, 1
|
|
db 2, 2
|
|
db 2, 4
|
|
db 1, 4
|
|
db 0, 0
|
|
db 0, 0
|
|
db 0, 0
|
|
db 0, 0
|
|
|
|
Func_24c28: ; 0x24c28
|
|
ld a, [wd6f3]
|
|
and a
|
|
ret z
|
|
ld a, [wd724]
|
|
cp $c8
|
|
jr nz, .asm_24c76
|
|
ld a, [wMeowthXPosition]
|
|
add $8
|
|
ld [wd724], a
|
|
ld a, [wMeowthYPosition]
|
|
add $fb
|
|
ld [wd731], a
|
|
ld a, $1
|
|
ld [wd721], a
|
|
ld hl, wd70c
|
|
inc [hl]
|
|
xor a
|
|
ld [wd6f3], a
|
|
ld [wd71e], a
|
|
ld [wd6ff], a
|
|
ld [wd702], a
|
|
ld [wd705], a
|
|
ld a, [wMeowthXPosition]
|
|
add $14
|
|
ld b, a
|
|
ld a, [wd4b4]
|
|
cp b
|
|
jr nc, .asm_24c70
|
|
ld a, $0
|
|
ld [wd734], a
|
|
jr .asm_24c75
|
|
|
|
.asm_24c70
|
|
ld a, $1
|
|
ld [wd734], a
|
|
.asm_24c75
|
|
ret
|
|
|
|
.asm_24c76
|
|
ld a, [wd725]
|
|
cp $c8
|
|
jr nz, .asm_24cbf
|
|
ld a, [wMeowthXPosition]
|
|
add $8
|
|
ld [wd725], a
|
|
ld a, [wMeowthYPosition]
|
|
add $fb
|
|
ld [wd732], a
|
|
ld a, $1
|
|
ld [wd722], a
|
|
ld hl, wd70c
|
|
inc [hl]
|
|
xor a
|
|
ld [wd6f3], a
|
|
ld [wd71f], a
|
|
ld [wd700], a
|
|
ld [wd703], a
|
|
ld [wd706], a
|
|
ld a, [wd6f7]
|
|
add $14
|
|
ld b, a
|
|
ld a, [wd4b4]
|
|
cp b
|
|
jr nc, .asm_24cb9
|
|
ld a, $0
|
|
ld [wd735], a
|
|
jr .asm_24cbe
|
|
|
|
.asm_24cb9
|
|
ld a, $1
|
|
ld [wd735], a
|
|
.asm_24cbe
|
|
ret
|
|
|
|
.asm_24cbf
|
|
ld a, [wd726]
|
|
cp $c8
|
|
ret nz
|
|
ld a, [wMeowthXPosition]
|
|
add $8
|
|
ld [wd726], a
|
|
ld a, [wMeowthYPosition]
|
|
add $fb
|
|
ld [wd733], a
|
|
ld a, $1
|
|
ld [wd723], a
|
|
ld hl, wd70c
|
|
inc [hl]
|
|
xor a
|
|
ld [wd6f3], a
|
|
ld [wd720], a
|
|
ld [wd701], a
|
|
ld [wd704], a
|
|
ld [wd707], a
|
|
ld a, [wMeowthXPosition]
|
|
add $14
|
|
ld b, a
|
|
ld a, [wd4b4]
|
|
cp b
|
|
jr nc, .asm_24d01
|
|
ld a, $0
|
|
ld [wd736], a
|
|
jr .asm_24d06
|
|
|
|
.asm_24d01
|
|
ld a, $1
|
|
ld [wd736], a
|
|
.asm_24d06
|
|
ret
|
|
|
|
Func_24d07: ; 0x24d07
|
|
ld a, [wd721]
|
|
cp $1
|
|
jr nz, .asm_24d2a
|
|
ld a, [wd71e]
|
|
cp $a
|
|
jr z, .asm_24d1f
|
|
ld a, $a
|
|
ld [wd6f4], a
|
|
call Func_24a30
|
|
jr .asm_24d2a
|
|
|
|
.asm_24d1f
|
|
ld a, $2
|
|
ld [wd721], a
|
|
lb de, $00, $34
|
|
call PlaySoundEffect
|
|
.asm_24d2a
|
|
ld a, [wd722]
|
|
cp $1
|
|
jr nz, .asm_24d4d
|
|
ld a, [wd71f]
|
|
cp $a
|
|
jr z, .asm_24d42
|
|
ld a, $b
|
|
ld [wd6f4], a
|
|
call Func_24a30
|
|
jr .asm_24d4d
|
|
|
|
.asm_24d42
|
|
ld a, $2
|
|
ld [wd722], a
|
|
lb de, $00, $34
|
|
call PlaySoundEffect
|
|
.asm_24d4d
|
|
ld a, [wd723]
|
|
cp $1
|
|
jr nz, .asm_24d70
|
|
ld a, [wd720]
|
|
cp $a
|
|
jr z, .asm_24d65
|
|
ld a, $c
|
|
ld [wd6f4], a
|
|
call Func_24a30
|
|
jr .asm_24d70
|
|
|
|
.asm_24d65
|
|
ld a, $2
|
|
ld [wd723], a
|
|
lb de, $00, $34
|
|
call PlaySoundEffect
|
|
.asm_24d70
|
|
ld a, [wd721]
|
|
cp $2
|
|
jr nz, .asm_24d7b
|
|
ld hl, wd71e
|
|
inc [hl]
|
|
.asm_24d7b
|
|
ld a, [wd722]
|
|
cp $2
|
|
jr nz, .asm_24d86
|
|
ld hl, wd71f
|
|
inc [hl]
|
|
.asm_24d86
|
|
ld a, [wd723]
|
|
cp $2
|
|
jr nz, .asm_24d91
|
|
ld hl, wd720
|
|
inc [hl]
|
|
.asm_24d91
|
|
ld a, [wd721]
|
|
cp $3
|
|
jr nz, .asm_24db7
|
|
ld a, [wd724]
|
|
ld b, a
|
|
ld a, [wd731]
|
|
ld c, a
|
|
ld hl, wd71e
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr nz, .asm_24dae
|
|
call Func_24e7f
|
|
jr .asm_24db7
|
|
|
|
.asm_24dae
|
|
cp $a
|
|
jr nz, .asm_24db7
|
|
ld a, $4
|
|
ld [wd721], a
|
|
.asm_24db7
|
|
ld a, [wd722]
|
|
cp $3
|
|
jr nz, .asm_24ddd
|
|
ld a, [wd725]
|
|
ld b, a
|
|
ld a, [wd732]
|
|
ld c, a
|
|
ld hl, wd71f
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr nz, .asm_24dd4
|
|
call Func_24e7f
|
|
jr .asm_24ddd
|
|
|
|
.asm_24dd4
|
|
cp $a
|
|
jr nz, .asm_24ddd
|
|
ld a, $4
|
|
ld [wd722], a
|
|
.asm_24ddd
|
|
ld a, [wd723]
|
|
cp $3
|
|
jr nz, .asm_24e03
|
|
ld a, [wd726]
|
|
ld b, a
|
|
ld a, [wd733]
|
|
ld c, a
|
|
ld hl, wd720
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr nz, .asm_24dfa
|
|
call Func_24e7f
|
|
jr .asm_24e03
|
|
|
|
.asm_24dfa
|
|
cp $a
|
|
jr nz, .asm_24e03
|
|
ld a, $4
|
|
ld [wd723], a
|
|
.asm_24e03
|
|
ld a, [wd721]
|
|
cp $4
|
|
jr nz, .asm_24e1f
|
|
ld a, $c8
|
|
ld [wd724], a
|
|
ld [wd731], a
|
|
xor a
|
|
ld [wd721], a
|
|
ld hl, wd70c
|
|
dec [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr z, .asm_24e55
|
|
.asm_24e1f
|
|
ld a, [wd722]
|
|
cp $4
|
|
jr nz, .asm_24e3b
|
|
ld a, $c8
|
|
ld [wd725], a
|
|
ld [wd732], a
|
|
xor a
|
|
ld [wd722], a
|
|
ld hl, wd70c
|
|
dec [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
jr z, .asm_24e55
|
|
.asm_24e3b
|
|
ld a, [wd723]
|
|
cp $4
|
|
ret nz
|
|
ld a, $c8
|
|
ld [wd726], a
|
|
ld [wd733], a
|
|
xor a
|
|
ld [wd723], a
|
|
ld hl, wd70c
|
|
dec [hl]
|
|
ld a, [hl]
|
|
cp $2
|
|
ret nz
|
|
.asm_24e55
|
|
ld a, [wd713]
|
|
and a
|
|
ret nz
|
|
ld a, [wMeowthXMovement]
|
|
cp $ff
|
|
jr z, .asm_24e70
|
|
ld hl, MeowthAnimationData2
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $1
|
|
ld [wd6ec], a
|
|
ret
|
|
|
|
.asm_24e70
|
|
ld hl, MeowthAnimationData1
|
|
ld de, wMeowthAnimationFrameCounter
|
|
call CopyHLToDE
|
|
ld a, $0
|
|
ld [wd6ec], a
|
|
ret
|
|
|
|
Func_24e7f: ; 0x24e7f
|
|
ld a, b
|
|
ld [wd79c], a
|
|
ld a, c
|
|
ld [wd79e], a
|
|
ld hl, wMeowthStageBonusCounter
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $7 ; maximum bonus
|
|
jr nz, .asm_24e92
|
|
xor a
|
|
ld [hl], a
|
|
.asm_24e92
|
|
ld a, $ff
|
|
ld [wd803], a
|
|
ld a, $3
|
|
ld [wd804], a
|
|
lb de, $00, $32
|
|
call PlaySoundEffect
|
|
ld a, [wMeowthStageBonusCounter]
|
|
dec a
|
|
.asm_24ea6
|
|
push af
|
|
ld bc, OneHundredThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
ld hl, wMeowthStageScore
|
|
inc [hl]
|
|
pop af
|
|
and a
|
|
jr z, .asm_24ebf
|
|
dec a
|
|
jr .asm_24ea6
|
|
|
|
.asm_24ebf
|
|
ld a, [wMeowthStageBonusCounter]
|
|
dec a
|
|
dec a
|
|
cp $fe
|
|
jr z, .asm_24ed7
|
|
cp $ff
|
|
jr z, .asm_24ed7
|
|
ld [wd79a], a
|
|
ld de, wd79a
|
|
call Func_24ee7
|
|
jr .asm_24ede
|
|
|
|
.asm_24ed7
|
|
xor a
|
|
ld [wd79a], a
|
|
ld [wd795], a
|
|
.asm_24ede
|
|
ld a, $1
|
|
ld [wd64e], a
|
|
call Func_24fa3
|
|
ret
|
|
|
|
Func_24ee7: ; 0x24ee7
|
|
ld a, $ff
|
|
ld [wd795], a
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MeowthStageAnimationDataTable
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
Func_24f00: ; 0x24f00
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MeowthStageAnimationDataTable
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ld a, $1
|
|
ld [wd710], a
|
|
ret nc
|
|
dec de
|
|
ld a, [de]
|
|
cp $a
|
|
ret nz
|
|
xor a
|
|
ld [de], a
|
|
ld [wd79c], a
|
|
ld [wd79e], a
|
|
ld [wd795], a
|
|
xor a
|
|
ld [wd710], a
|
|
ret
|
|
|
|
MeowthStageAnimationDataTable: ; 0x24f30
|
|
dw MeowthStageAnimationData1
|
|
dw MeowthStageAnimationData2
|
|
dw MeowthStageAnimationData3
|
|
dw MeowthStageAnimationData4
|
|
dw MeowthStageAnimationData5
|
|
|
|
MeowthStageAnimationData1: ; 0x24f3a
|
|
; Each entry is [OAM id][duration]
|
|
db $02, $00
|
|
db $02, $01
|
|
db $02, $02
|
|
db $10, $00
|
|
db $04, $0F
|
|
db $04, $00
|
|
db $04, $0F
|
|
db $04, $00
|
|
db $04, $0F
|
|
db $04, $00
|
|
db $00 ; terminator
|
|
|
|
MeowthStageAnimationData2: ; 0x24f4f
|
|
; Each entry is [OAM id][duration]
|
|
db $02, $03
|
|
db $02, $04
|
|
db $02, $05
|
|
db $10, $03
|
|
db $04, $0F
|
|
db $04, $03
|
|
db $04, $0F
|
|
db $04, $03
|
|
db $04, $0F
|
|
db $04, $03
|
|
db $00 ; terminator
|
|
|
|
MeowthStageAnimationData3: ; 0x24f64
|
|
; Each entry is [OAM id][duration]
|
|
db $02, $06
|
|
db $02, $07
|
|
db $02, $08
|
|
db $10, $06
|
|
db $04, $0F
|
|
db $04, $06
|
|
db $04, $0F
|
|
db $04, $06
|
|
db $04, $0F
|
|
db $04, $06
|
|
db $00 ; terminator
|
|
|
|
MeowthStageAnimationData4: ; 0x24f79
|
|
; Each entry is [OAM id][duration]
|
|
db $02, $09
|
|
db $02, $0A
|
|
db $02, $0B
|
|
db $10, $09
|
|
db $04, $0F
|
|
db $04, $09
|
|
db $04, $0F
|
|
db $04, $09
|
|
db $04, $0F
|
|
db $04, $09
|
|
db $00 ; terminator
|
|
|
|
MeowthStageAnimationData5: ; 0x24f8e
|
|
; Each entry is [OAM id][duration]
|
|
db $02, $0C
|
|
db $02, $0D
|
|
db $02, $0E
|
|
db $10, $0C
|
|
db $04, $0F
|
|
db $04, $0C
|
|
db $04, $0F
|
|
db $04, $0C
|
|
db $04, $0F
|
|
db $04, $0C
|
|
db $00 ; terminator
|
|
|
|
Func_24fa3: ; 0x24fa3
|
|
ld a, [wMeowthStageScore]
|
|
ld c, a
|
|
ld b, $0
|
|
.asm_24fa9
|
|
ld a, c
|
|
and a
|
|
jr z, .asm_24fb5
|
|
ld a, b
|
|
add $8
|
|
ld b, a
|
|
dec c
|
|
ld a, c
|
|
jr .asm_24fa9
|
|
|
|
.asm_24fb5
|
|
ld a, b
|
|
and a
|
|
jr z, .asm_24fbb
|
|
sub $8
|
|
.asm_24fbb
|
|
ld [wd652], a
|
|
ld a, [wMeowthStageBonusCounter]
|
|
and a
|
|
jr z, .asm_24fca
|
|
ld b, a
|
|
ld a, [wMeowthStageScore]
|
|
inc a
|
|
sub b
|
|
.asm_24fca
|
|
ld [wd651], a
|
|
ld a, $0
|
|
ld [wd64e], a
|
|
ld a, [wMeowthStageScore]
|
|
and a
|
|
ret z
|
|
cp $15
|
|
jr c, .asm_24fe2
|
|
ld a, $14
|
|
ld [wMeowthStageScore], a
|
|
jr .asm_24fed
|
|
|
|
.asm_24fe2
|
|
push af
|
|
xor a
|
|
ld [wd650], a
|
|
ld a, $1
|
|
ld [wd64e], a
|
|
pop af
|
|
.asm_24fed
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_25007
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_24ffd
|
|
ld hl, TileDataPointers_25421
|
|
.asm_24ffd
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_25007)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_25007:
|
|
dw TileData_25031
|
|
dw TileData_25034
|
|
dw TileData_25037
|
|
dw TileData_2503a
|
|
dw TileData_2503d
|
|
dw TileData_25040
|
|
dw TileData_25043
|
|
dw TileData_25046
|
|
dw TileData_25049
|
|
dw TileData_2504c
|
|
dw TileData_2504f
|
|
dw TileData_25052
|
|
dw TileData_25055
|
|
dw TileData_25058
|
|
dw TileData_2505b
|
|
dw TileData_2505e
|
|
dw TileData_25061
|
|
dw TileData_25064
|
|
dw TileData_25067
|
|
dw TileData_2506a
|
|
dw TileData_2506d
|
|
|
|
TileData_25031: ; 0x25031
|
|
db $01
|
|
dw TileData_25070
|
|
|
|
TileData_25034: ; 0x25034
|
|
db $01
|
|
dw TileData_2509d
|
|
|
|
TileData_25037: ; 0x25037
|
|
db $01
|
|
dw TileData_250ca
|
|
|
|
TileData_2503a: ; 0x2503a
|
|
db $01
|
|
dw TileData_250f7
|
|
|
|
TileData_2503d: ; 0x2503d
|
|
db $01
|
|
dw TileData_25124
|
|
|
|
TileData_25040: ; 0x25040
|
|
db $01
|
|
dw TileData_25151
|
|
|
|
TileData_25043: ; 0x25043
|
|
db $01
|
|
dw TileData_2517e
|
|
|
|
TileData_25046: ; 0x25046
|
|
db $01
|
|
dw TileData_251ab
|
|
|
|
TileData_25049: ; 0x25049
|
|
db $01
|
|
dw TileData_251d8
|
|
|
|
TileData_2504c: ; 0x2504c
|
|
db $01
|
|
dw TileData_25205
|
|
|
|
TileData_2504f: ; 0x2504f
|
|
db $01
|
|
dw TileData_25232
|
|
|
|
TileData_25052: ; 0x25052
|
|
db $01
|
|
dw TileData_2525f
|
|
|
|
TileData_25055: ; 0x25055
|
|
db $01
|
|
dw TileData_2528c
|
|
|
|
TileData_25058: ; 0x25058
|
|
db $01
|
|
dw TileData_252b9
|
|
|
|
TileData_2505b: ; 0x2505b
|
|
db $01
|
|
dw TileData_252e6
|
|
|
|
TileData_2505e: ; 0x2505e
|
|
db $01
|
|
dw TileData_25313
|
|
|
|
TileData_25061: ; 0x25061
|
|
db $01
|
|
dw TileData_25340
|
|
|
|
TileData_25064: ; 0x25064
|
|
db $01
|
|
dw TileData_2536d
|
|
|
|
TileData_25067: ; 0x25067
|
|
db $01
|
|
dw TileData_2539a
|
|
|
|
TileData_2506a: ; 0x2506a
|
|
db $01
|
|
dw TileData_253c7
|
|
|
|
TileData_2506d: ; 0x2506d
|
|
db $01
|
|
dw TileData_253f4
|
|
|
|
TileData_25070: ; 0x25070
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $E4, $0C, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2509d: ; 0x2509d
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $0C, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_250ca: ; 0x250ca
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_250f7: ; 0x250f7
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25124: ; 0x25124
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25151: ; 0x25151
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2517e: ; 0x2517e
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_251ab: ; 0x251ab
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_251d8: ; 0x251d8
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25205: ; 0x25205
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $0E, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25232: ; 0x25232
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $0D, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2525f: ; 0x2525f
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $0E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2528c: ; 0x2528c
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $0D, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_252b9: ; 0x252b9
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_252e6: ; 0x252e6
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $16, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25313: ; 0x25313
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $0E, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25340: ; 0x25340
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $16, $0D, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2536d: ; 0x2536d
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $16, $16, $0E
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2539a: ; 0x2539a
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $16, $16, $16
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $0F, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_253c7: ; 0x253c7
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $16, $16, $16
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $17, $E4
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_253f4: ; 0x253f4
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $14, $15, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $16, $16, $16
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $16, $16, $16
|
|
|
|
db $02
|
|
dw vBGMap + $12
|
|
db $17, $18
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_25421: ; 0x25421
|
|
dw TileData_2544b
|
|
dw TileData_2544e
|
|
dw TileData_25451
|
|
dw TileData_25454
|
|
dw TileData_25457
|
|
dw TileData_2545a
|
|
dw TileData_2545d
|
|
dw TileData_25460
|
|
dw TileData_25463
|
|
dw TileData_25466
|
|
dw TileData_25469
|
|
dw TileData_2546c
|
|
dw TileData_2546f
|
|
dw TileData_25472
|
|
dw TileData_25475
|
|
dw TileData_25478
|
|
dw TileData_2547b
|
|
dw TileData_2547e
|
|
dw TileData_25481
|
|
dw TileData_25484
|
|
dw TileData_25487
|
|
|
|
TileData_2544b: ; 0x2544b
|
|
db $01
|
|
dw TileData_2548a
|
|
|
|
TileData_2544e: ; 0x2544e
|
|
db $01
|
|
dw TileData_254b7
|
|
|
|
TileData_25451: ; 0x25451
|
|
db $01
|
|
dw TileData_254e4
|
|
|
|
TileData_25454: ; 0x25454
|
|
db $01
|
|
dw TileData_25511
|
|
|
|
TileData_25457: ; 0x25457
|
|
db $01
|
|
dw TileData_2553e
|
|
|
|
TileData_2545a: ; 0x2545a
|
|
db $01
|
|
dw TileData_2556b
|
|
|
|
TileData_2545d: ; 0x2545d
|
|
db $01
|
|
dw TileData_25598
|
|
|
|
TileData_25460: ; 0x25460
|
|
db $01
|
|
dw TileData_255c5
|
|
|
|
TileData_25463: ; 0x25463
|
|
db $01
|
|
dw TileData_255f2
|
|
|
|
TileData_25466: ; 0x25466
|
|
db $01
|
|
dw TileData_2561f
|
|
|
|
TileData_25469: ; 0x25469
|
|
db $01
|
|
dw TileData_2564c
|
|
|
|
TileData_2546c: ; 0x2546c
|
|
db $01
|
|
dw TileData_25679
|
|
|
|
TileData_2546f: ; 0x2546f
|
|
db $01
|
|
dw TileData_256a6
|
|
|
|
TileData_25472: ; 0x25472
|
|
db $01
|
|
dw TileData_256d3
|
|
|
|
TileData_25475: ; 0x25475
|
|
db $01
|
|
dw TileData_25700
|
|
|
|
TileData_25478: ; 0x25478
|
|
db $01
|
|
dw TileData_2572d
|
|
|
|
TileData_2547b: ; 0x2547b
|
|
db $01
|
|
dw TileData_2575a
|
|
|
|
TileData_2547e: ; 0x2547e
|
|
db $01
|
|
dw TileData_25787
|
|
|
|
TileData_25481: ; 0x25481
|
|
db $01
|
|
dw TileData_257b4
|
|
|
|
TileData_25484: ; 0x25484
|
|
db $01
|
|
dw TileData_257e1
|
|
|
|
TileData_25487: ; 0x25487
|
|
db $01
|
|
dw TileData_2580e
|
|
|
|
TileData_2548a: ; 0x2548a
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $E3, $FD, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_254b7: ; 0x254b7
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $FD, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_254e4: ; 0x254e4
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25511: ; 0x25511
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2553e: ; 0x2553e
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2556b: ; 0x2556b
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25598: ; 0x25598
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_255c5: ; 0x255c5
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_255f2: ; 0x255f2
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2561f: ; 0x2561f
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2564c: ; 0x2564c
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25679: ; 0x25679
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_256a6: ; 0x256a6
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $FE, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_256d3: ; 0x256d3
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $FE, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25700: ; 0x25700
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $00, $FE
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2572d: ; 0x2572d
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $FE, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2575a: ; 0x2575a
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $00, $FE, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25787: ; 0x25787
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $00, $00, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_257b4: ; 0x257b4
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $00, $00, $00
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $FD, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_257e1: ; 0x257e1
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $00, $00, $00
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $02, $E3
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2580e: ; 0x2580e
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FF, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $00, $00, $00
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $00, $00, $00
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $02, $03
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_2583b: ; 0x2583b
|
|
ld bc, $7f65
|
|
callba DrawTimer
|
|
callba DrawFlippers
|
|
call Func_259fe
|
|
call Func_25895
|
|
call Func_2595e
|
|
call Func_2586c
|
|
callba DrawPinball
|
|
call Func_25a39
|
|
ret
|
|
|
|
Func_2586c: ; 0x2586c
|
|
ld a, [wMeowthXPosition]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wMeowthYPosition]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wMeowthAnimationFrame]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_2588b
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_2588b:
|
|
db $21, $22, $23, $24, $25, $26, $27, $28, $33, $34
|
|
|
|
Func_25895: ; 0x25895
|
|
ld a, [wd714]
|
|
cp $b
|
|
jr nz, .asm_258a0
|
|
xor a
|
|
ld [wd714], a
|
|
.asm_258a0
|
|
ld a, [wd715]
|
|
cp $b
|
|
jr nz, .asm_258ab
|
|
xor a
|
|
ld [wd715], a
|
|
.asm_258ab
|
|
ld a, [wd716]
|
|
cp $b
|
|
jr nz, .asm_258b6
|
|
xor a
|
|
ld [wd716], a
|
|
.asm_258b6
|
|
ld a, [wd71a]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wd727]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd717]
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPointers_25935
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wd714]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ld a, [wd71b]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wd728]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd718]
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPointers_25935
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wd715]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ld a, [wd71c]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wd729]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd719]
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPointers_25935
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wd716]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ret
|
|
|
|
OAMPointers_25935:
|
|
dw OAMIds_2593d
|
|
dw OAMIds_2593d
|
|
dw OAMIds_25948
|
|
dw OAMIds_25953
|
|
|
|
OAMIds_2593d:
|
|
db $29, $29, $29, $29, $2A, $2A, $2A, $2A, $2A, $2A, $2A
|
|
|
|
OAMIds_25948:
|
|
db $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2C, $2C, $2C, $2C
|
|
|
|
OAMIds_25953:
|
|
db $2D, $32, $31, $30, $2F, $2E, $2F, $30, $31, $32, $32
|
|
|
|
Func_2595e: ; 0x2595e
|
|
ld a, [wd71e]
|
|
cp $b
|
|
jr nz, .asm_25969
|
|
xor a
|
|
ld [wd71e], a
|
|
.asm_25969
|
|
ld a, [wd71f]
|
|
cp $b
|
|
jr nz, .asm_25974
|
|
xor a
|
|
ld [wd71f], a
|
|
.asm_25974
|
|
ld a, [wd720]
|
|
cp $b
|
|
jr nz, .asm_2597f
|
|
xor a
|
|
ld [wd720], a
|
|
.asm_2597f
|
|
ld a, [wd724]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wd731]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd721]
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPointers_25935
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wd71e]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ld a, [wd725]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wd732]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd722]
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPointers_25935
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wd71f]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ld a, [wd726]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
ld a, [wd733]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd723]
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMPointers_25935
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wd720]
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ret
|
|
|
|
Func_259fe: ; 0x259fe
|
|
ld a, [wd795]
|
|
and a
|
|
ret z
|
|
ld de, wd79c
|
|
ld a, [de]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_25a29
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_25a29:
|
|
db $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43
|
|
db $FF
|
|
|
|
Func_25a39: ; 0x25a39
|
|
ld a, [wd64e]
|
|
and a
|
|
ret z
|
|
ld a, [wd652]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
xor a
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd64f]
|
|
cp $a
|
|
jr c, .asm_25a58
|
|
ld de, $0000
|
|
jr .asm_25a5b
|
|
|
|
.asm_25a58
|
|
ld de, $0001
|
|
.asm_25a5b
|
|
ld hl, OAMIds_25a7a
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ld hl, wd64f
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $14
|
|
ret c
|
|
ld [hl], $0
|
|
ld hl, wd650
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $a
|
|
ret nz
|
|
xor a
|
|
ld [wd64e], a
|
|
ret
|
|
|
|
OAMIds_25a7a: ; 0x25a7a
|
|
db $44, $45
|
|
|
|
InitSeelBonusStage: ; 0x25a7c
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld [wStageCollisionState], a
|
|
ld a, $1
|
|
ld [wd7ac], a
|
|
ld a, [wBallType]
|
|
ld [wBallTypeBackup], a
|
|
xor a
|
|
ld [wd4c8], a
|
|
ld [wBallType], a
|
|
ld [wd49a], a
|
|
ld hl, InitialSeelCoords
|
|
ld de, wd76d
|
|
call InitSeelPosition
|
|
ld de, wd777
|
|
call InitSeelPosition
|
|
ld de, wd781
|
|
call InitSeelPosition
|
|
xor a
|
|
ld [wd793], a
|
|
ld [wd791], a
|
|
ld [wd792], a
|
|
ld [wd739], a
|
|
ld bc, $0130 ; 1 minute 30 seconds
|
|
callba StartTimer
|
|
ld a, $11
|
|
call SetSongBank
|
|
ld de, $0003
|
|
call PlaySong
|
|
ret
|
|
|
|
InitSeelPosition: ; 0x25ad8
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ret
|
|
|
|
InitialSeelCoords:
|
|
; Seel 1
|
|
db $00, $60 ; x coordinate
|
|
db $00, $00 ; y coordinate
|
|
; Seel 2
|
|
db $00, $20 ; x coordinate
|
|
db $00, $1A ; y coordinate
|
|
; Seel 3
|
|
db $00, $40 ; x coordinate
|
|
db $00, $34 ; y coordinate
|
|
|
|
StartBallSeelBonusStage: ; 0x25af1
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $a6
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $56
|
|
ld [wBallYPos + 1], a
|
|
ld a, $80
|
|
ld [wBallXVelocity], a
|
|
xor a
|
|
ld [wSCX], a
|
|
ld [wStageCollisionState], a
|
|
ld [wd766], a
|
|
ld a, $0
|
|
ld [wd772], a
|
|
ld a, $1
|
|
ld [wd77c], a
|
|
ld a, $0
|
|
ld [wd786], a
|
|
ld a, $4
|
|
ld [wd775], a
|
|
ld [wd77f], a
|
|
ld [wd76b], a
|
|
ld a, $1
|
|
ld [wd76c], a
|
|
ld a, $4
|
|
ld [wd776], a
|
|
ld a, $1
|
|
ld [wd780], a
|
|
ld a, $5
|
|
ld [wd771], a
|
|
ld [wd77b], a
|
|
ld [wd785], a
|
|
ld a, $ff
|
|
ld [wd79a], a
|
|
xor a
|
|
ld [wd792], a
|
|
ld [wd791], a
|
|
ld [wd64e], a
|
|
ld [wd64f], a
|
|
ld [wd650], a
|
|
ld [wd651], a
|
|
ld [wd795], a
|
|
ld [wd796], a
|
|
ld [wd797], a
|
|
ld [wd798], a
|
|
ld [wd799], a
|
|
ld [wd79a], a
|
|
ld de, wd76b
|
|
ld a, [wd76c]
|
|
call Func_26137
|
|
ld de, wd775
|
|
ld a, [wd776]
|
|
call Func_26137
|
|
ld de, wd77f
|
|
ld a, [wd780]
|
|
call Func_26137
|
|
ld a, [wd4c9]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd4c9], a
|
|
ret
|
|
|
|
Func_25b97: ; 0x25b97
|
|
callba Func_142fc
|
|
call Func_2862
|
|
callba Func_262f4
|
|
call Func_25d0e
|
|
callba Func_1404a
|
|
ret
|
|
|
|
CheckSeelBonusStageGameObjectCollisions: ; 0x25bbc
|
|
call CheckSeelBonusStageSeelHeadCollisions
|
|
ret
|
|
|
|
CheckSeelBonusStageSeelHeadCollisions: ; 0x25bc0
|
|
ld a, [wd76c]
|
|
cp $0
|
|
jr nz, .seel2
|
|
ld a, [wd76e]
|
|
ld b, a
|
|
ld a, [wd770]
|
|
add $14
|
|
ld c, a
|
|
call CheckSeelHeadCollision
|
|
ld a, $0
|
|
jr c, .hitSeelHead
|
|
.seel2
|
|
ld a, [wd776]
|
|
cp $0
|
|
jr nz, .seel3
|
|
ld a, [wd778]
|
|
ld b, a
|
|
ld a, [wd77a]
|
|
add $14
|
|
ld c, a
|
|
call CheckSeelHeadCollision
|
|
ld a, $1
|
|
jr c, .hitSeelHead
|
|
.seel3
|
|
ld a, [wd780]
|
|
cp $0
|
|
jr nz, .done
|
|
ld a, [wd782]
|
|
ld b, a
|
|
ld a, [wd784]
|
|
add $14
|
|
ld c, a
|
|
call CheckSeelHeadCollision
|
|
ld a, $2
|
|
jr c, .hitSeelHead
|
|
.done
|
|
ret
|
|
|
|
.hitSeelHead
|
|
ld [wd768], a
|
|
ld a, $1
|
|
ld [wd767], a
|
|
ret
|
|
|
|
CheckSeelHeadCollision: ; 0x25c12
|
|
ld a, [wBallXPos + 1]
|
|
sub b
|
|
cp $20
|
|
jr nc, .noCollision
|
|
ld b, a
|
|
ld a, [wBallYPos + 1]
|
|
sub c
|
|
cp $20
|
|
jr nc, .noCollision
|
|
ld c, a
|
|
ld e, c
|
|
ld d, $0
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
sla e
|
|
rl d
|
|
ld l, b
|
|
ld h, $0
|
|
add hl, de
|
|
ld de, CircularCollisionAngles
|
|
add hl, de
|
|
ld a, BANK(CircularCollisionAngles)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
jr nz, .noCollision
|
|
sla a
|
|
ld [wCollisionForceAngle], a
|
|
ld a, $1
|
|
ld [wd7e9], a
|
|
scf
|
|
ret
|
|
|
|
.noCollision
|
|
and a
|
|
ret
|
|
|
|
Func_25c5a: ; 0x25c5a
|
|
call Func_25da3
|
|
call Func_25ced
|
|
ld a, [wd793]
|
|
cp $14
|
|
jr c, .asm_25c98
|
|
ld a, [wd794]
|
|
cp $2
|
|
jr nc, .asm_25c98
|
|
ld a, $1
|
|
ld [wd498], a
|
|
ld de, $0000
|
|
call PlaySong
|
|
ld a, $1
|
|
ld [wd49a], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5dc
|
|
ld de, SeelStageClearedText
|
|
call LoadTextHeader
|
|
ld a, $2
|
|
ld [wd794], a
|
|
lb de, $4b, $2a
|
|
call PlaySoundEffect
|
|
.asm_25c98
|
|
ld a, [wd794]
|
|
cp $2
|
|
jr nz, .asm_25cb0
|
|
ld a, [wSFXTimer]
|
|
and a
|
|
jr nz, .asm_25cb0
|
|
ld de, $0003
|
|
call PlaySong
|
|
ld a, $5
|
|
ld [wd794], a
|
|
.asm_25cb0
|
|
ld a, [wd794]
|
|
cp $2
|
|
jr z, .asm_25cc1
|
|
callba Func_107f8
|
|
.asm_25cc1
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $1
|
|
ld [wd7be], a
|
|
call Func_2862
|
|
callba Func_86d2
|
|
ld a, $3
|
|
ld [wd791], a
|
|
ld a, [wd794]
|
|
cp $5
|
|
ret z
|
|
ld a, $1
|
|
ld [wd794], a
|
|
ret
|
|
|
|
Func_25ced: ; 0x25ced
|
|
ld a, [wd766]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4b4]
|
|
cp $8a
|
|
ret nc
|
|
ld a, $1
|
|
ld [wStageCollisionState], a
|
|
ld [wd766], a
|
|
callba LoadStageCollisionAttributes
|
|
call Func_25d0e
|
|
ret
|
|
|
|
Func_25d0e: ; 0x25d0e
|
|
ld a, [wStageCollisionState]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_25d2b
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_25d21
|
|
ld hl, TileDataPointers_25d67
|
|
.asm_25d21
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_25d2b)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_25d2b:
|
|
dw TileData_25d2f
|
|
dw TileData_25d32
|
|
|
|
TileData_25d2f: ; 0x25d2f
|
|
db $01
|
|
dw TileData_25d35
|
|
|
|
TileData_25d32: ; 0x25d32
|
|
db $01
|
|
dw TileData_25d4e
|
|
|
|
TileData_25d35: ; 0x25d35
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $1F, $20
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $1D, $1E
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $80, $1B, $1C
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $17, $18
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25d4e: ; 0x25d4e
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $24, $F9
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $22, $04
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $36, $37, $FE
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $172
|
|
db $35, $F9
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_25d67:
|
|
dw TileData_25d6b
|
|
dw TileData_25d6e
|
|
|
|
TileData_25d6b: ; 0x25d6b
|
|
db $01
|
|
dw TileData_25d71
|
|
|
|
TileData_25d6e: ; 0x25d6e
|
|
db $01
|
|
dw TileData_25d8a
|
|
|
|
TileData_25d71: ; 0x25d71
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $11, $10
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $0E, $0D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $80, $0B, $0A
|
|
|
|
db $02
|
|
dw vBGMap + $172
|
|
db $07, $06
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_25d8a: ; 0x25d8a
|
|
dw LoadTileLists
|
|
db $09 ; total number of tiles
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $113
|
|
db $0F, $F4
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $133
|
|
db $0C, $FB
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $152
|
|
db $09, $08, $F8
|
|
|
|
db $02
|
|
dw vBGMap + $172
|
|
db $04, $F4
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_25da3: ; 0x25da3
|
|
ld a, [wd767]
|
|
and a
|
|
jp z, .asm_25e38
|
|
xor a
|
|
ld [wd767], a
|
|
ld a, [wd768]
|
|
sla a
|
|
ld c, a
|
|
sla a
|
|
sla a
|
|
add c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd76c
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, $9
|
|
ld [de], a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
push bc
|
|
ld hl, SeelAnimationData10
|
|
call CopyHLToDE
|
|
pop bc
|
|
ld hl, wd76e
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd79c], a
|
|
ld hl, wd770
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add $8
|
|
ld [wd79e], a
|
|
ld a, [wd792]
|
|
cp $9
|
|
jr nz, .asm_25df1
|
|
ld a, $0
|
|
ld [wd792], a
|
|
ld [wd79a], a
|
|
.asm_25df1
|
|
ld a, [wd792]
|
|
dec a
|
|
cp $ff
|
|
jr z, .asm_25e04
|
|
ld [wd79a], a
|
|
ld de, wd79a
|
|
call Func_261f9
|
|
jr .asm_25e07
|
|
|
|
.asm_25e04
|
|
ld [wd79a], a
|
|
.asm_25e07
|
|
ld a, $33
|
|
ld [wd803], a
|
|
ld a, $8
|
|
ld [wd804], a
|
|
lb de, $00, $30
|
|
call PlaySoundEffect
|
|
call Func_25e85
|
|
ld hl, wd792
|
|
inc [hl]
|
|
ld a, [wd793]
|
|
cp $14
|
|
ret nc
|
|
ld hl, wd793
|
|
inc [hl]
|
|
ld a, [wd792]
|
|
dec a
|
|
ld b, a
|
|
ld a, [hl]
|
|
add b
|
|
ld [hl], a
|
|
ld a, $1
|
|
ld [wd64e], a
|
|
call Func_262f4
|
|
.asm_25e38
|
|
ld de, wd76c ; I think these three calls are one for each Seel swimming around
|
|
call Func_25f47
|
|
ld de, wd776
|
|
call Func_25f47
|
|
ld de, wd780
|
|
call Func_25f47
|
|
ld a, [wd792]
|
|
dec a
|
|
cp $ff
|
|
jr z, .asm_25e5d
|
|
ld [wd79a], a
|
|
ld de, wd79a
|
|
call Func_26212
|
|
jr .asm_25e60
|
|
|
|
.asm_25e5d
|
|
ld [wd79a], a
|
|
.asm_25e60
|
|
ld bc, $087a ; again, probably one call for each Seel swimming around
|
|
ld de, wd76d
|
|
ld hl, wd772
|
|
call Func_25ec5
|
|
ld bc, $087a
|
|
ld de, wd777
|
|
ld hl, wd77c
|
|
call Func_25ec5
|
|
ld bc, $087a
|
|
ld de, wd781
|
|
ld hl, wd786
|
|
call Func_25ec5
|
|
ret
|
|
|
|
Func_25e85: ; 0x25e85
|
|
ld a, [wd792]
|
|
inc a
|
|
ld d, $1
|
|
ld e, a
|
|
ld a, $1
|
|
.asm_25e8e
|
|
cp e
|
|
jr z, .asm_25e96
|
|
sla d
|
|
inc a
|
|
jr .asm_25e8e
|
|
|
|
.asm_25e96
|
|
push de
|
|
ld a, d
|
|
cp $32
|
|
jr nc, .asm_25ead
|
|
ld bc, OneHundredThousandPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
pop de
|
|
dec d
|
|
jr .asm_25ebf
|
|
|
|
.asm_25ead
|
|
ld bc, FiveMillionPoints
|
|
callba AddBigBCD6FromQueueWithBallMultiplier
|
|
pop de
|
|
ld a, d
|
|
sub $32
|
|
ld d, a
|
|
.asm_25ebf
|
|
ld a, d
|
|
cp $0
|
|
jr nz, .asm_25e96
|
|
ret
|
|
|
|
Func_25ec5: ; 0x25ec5
|
|
dec de
|
|
ld a, [de]
|
|
cp $1
|
|
jr z, .asm_25ece
|
|
cp $4
|
|
ret nz
|
|
.asm_25ece
|
|
inc de
|
|
push hl
|
|
ld a, [hld]
|
|
push af
|
|
push bc
|
|
ld a, [hl]
|
|
and $f
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SeelSwimmingYOffsets
|
|
add hl, bc
|
|
pop bc
|
|
pop af
|
|
and a
|
|
jr nz, .asm_25f05
|
|
ld a, [de]
|
|
add [hl]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
adc $0
|
|
ld [de], a
|
|
pop hl
|
|
cp c
|
|
ret c
|
|
ld a, $1
|
|
ld [hl], a
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
ld a, $7
|
|
ld [hl], a
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, SeelAnimationData8
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
.asm_25f05
|
|
ld a, [de]
|
|
sub [hl]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [de]
|
|
sbc $0
|
|
ld [de], a
|
|
pop hl
|
|
cp b
|
|
ret nc
|
|
xor a
|
|
ld [hl], a
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
ld a, $8
|
|
ld [hl], a
|
|
dec hl
|
|
dec hl
|
|
dec hl
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, SeelAnimationData9
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
SeelSwimmingYOffsets:
|
|
db $31, $32, $33, $34, $35, $36, $37, $36, $35, $34, $33, $32, $33, $34, $35, $36
|
|
db $37, $38, $39, $3A, $3B, $3A, $39, $38, $37, $36, $35, $34, $33, $32, $31, $30
|
|
|
|
Func_25f47: ; 0x25f47
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SeelAnimationsTable
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ret nc
|
|
ld a, [de]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_25f5f: ; 0x25f5f
|
|
dw Func_25f77
|
|
dw Func_25fbe
|
|
dw Func_25ff3
|
|
dw Func_2602a
|
|
dw Func_2604c
|
|
dw Func_2607f
|
|
dw Func_260b6
|
|
dw Func_260d8
|
|
dw Func_260e2
|
|
dw Func_260ec
|
|
dw Func_26109
|
|
dw Func_26120
|
|
|
|
Func_25f77: ; 0x25f77
|
|
dec de
|
|
ld a, [de]
|
|
cp $2
|
|
ret nz
|
|
push de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
dec a
|
|
ld [de], a
|
|
ld a, $3
|
|
jr z, .asm_25f8f
|
|
pop de
|
|
xor a
|
|
jp Func_26137
|
|
|
|
.asm_25f8f
|
|
ld hl, wd792
|
|
ld [hl], $0
|
|
call GenRandom
|
|
bit 7, a
|
|
jr z, .asm_25fa2
|
|
inc de
|
|
ld a, $1
|
|
ld [de], a
|
|
dec de
|
|
jr .asm_25fa7
|
|
|
|
.asm_25fa2
|
|
inc de
|
|
ld a, $0
|
|
ld [de], a
|
|
dec de
|
|
.asm_25fa7
|
|
inc de
|
|
ld a, [de]
|
|
and a
|
|
jr z, .asm_25fb0
|
|
ld a, $6
|
|
jr .asm_25fb2
|
|
|
|
.asm_25fb0
|
|
ld a, $3
|
|
.asm_25fb2
|
|
push af
|
|
lb de, $00, $31
|
|
call PlaySoundEffect
|
|
pop af
|
|
pop de
|
|
jp Func_26137
|
|
|
|
Func_25fbe: ; 0x25fbe
|
|
dec de
|
|
ld a, [de]
|
|
cp $4
|
|
ret nz
|
|
push de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
dec a
|
|
ld [de], a
|
|
jr z, .asm_25fd5
|
|
pop de
|
|
ld a, $1
|
|
jp Func_26137
|
|
|
|
.asm_25fd5
|
|
ld a, [wd791]
|
|
cp $0
|
|
jr z, .asm_25fe9
|
|
ld a, $2
|
|
ld [de], a
|
|
pop de
|
|
ld a, $4
|
|
ld [de], a
|
|
ld a, $1
|
|
jp Func_26137
|
|
ret ; unused instruction
|
|
|
|
.asm_25fe9
|
|
ld hl, wd791
|
|
inc [hl]
|
|
pop de
|
|
ld a, $2
|
|
jp Func_26137
|
|
|
|
Func_25ff3: ; 0x25ff3
|
|
dec de
|
|
ld a, [de]
|
|
cp $7
|
|
ret nz
|
|
xor a
|
|
call Func_26137
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [wd792]
|
|
cp $6
|
|
jr nc, .asm_26020
|
|
cp $2
|
|
jr nc, .asm_26016
|
|
ld a, $3
|
|
ld [de], a
|
|
lb de, $00, $31
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_26016
|
|
ld a, $2
|
|
ld [de], a
|
|
lb de, $00, $31
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_26020
|
|
ld a, $1
|
|
ld [de], a
|
|
lb de, $00, $31
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_2602a: ; 0x2602a
|
|
dec de
|
|
ld a, [de]
|
|
cp $9
|
|
ret nz
|
|
ld a, $1
|
|
call Func_26137
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
call GenRandom
|
|
bit 7, a
|
|
jr z, .asm_26044
|
|
ld a, $3
|
|
jr .asm_26046
|
|
|
|
.asm_26044
|
|
ld a, $5
|
|
.asm_26046
|
|
ld [de], a
|
|
ld hl, wd791
|
|
dec [hl]
|
|
ret
|
|
|
|
Func_2604c: ; 0x2604c
|
|
dec de
|
|
ld a, [de]
|
|
cp $4
|
|
ret nz
|
|
push de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
dec a
|
|
ld [de], a
|
|
jr z, .asm_26063
|
|
pop de
|
|
ld a, $4
|
|
jp Func_26137
|
|
|
|
.asm_26063
|
|
ld a, [wd791]
|
|
cp $0
|
|
jr z, .asm_26075
|
|
ld a, $2
|
|
ld [de], a
|
|
pop de
|
|
ld a, $4
|
|
ld [de], a
|
|
jp Func_26137
|
|
ret ; unused instruction
|
|
|
|
.asm_26075
|
|
ld hl, wd791
|
|
inc [hl]
|
|
pop de
|
|
ld a, $5
|
|
jp Func_26137
|
|
|
|
Func_2607f: ; 0x2607f
|
|
dec de
|
|
ld a, [de]
|
|
cp $7
|
|
ret nz
|
|
xor a
|
|
call Func_26137
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [wd792]
|
|
cp $6
|
|
jr nc, .asm_260ac
|
|
cp $2
|
|
jr nc, .asm_260a2
|
|
ld a, $3
|
|
ld [de], a
|
|
lb de, $00, $31
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_260a2
|
|
ld a, $2
|
|
ld [de], a
|
|
lb de, $00, $31
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
.asm_260ac
|
|
ld a, $1
|
|
ld [de], a
|
|
lb de, $00, $31
|
|
call PlaySoundEffect
|
|
ret
|
|
|
|
Func_260b6: ; 0x260b6
|
|
dec de
|
|
ld a, [de]
|
|
cp $9
|
|
ret nz
|
|
ld a, $4
|
|
call Func_26137
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
call GenRandom
|
|
bit 7, a
|
|
jr z, .asm_260d0
|
|
ld a, $3
|
|
jr .asm_260d2
|
|
|
|
.asm_260d0
|
|
ld a, $5
|
|
.asm_260d2
|
|
ld [de], a
|
|
ld hl, wd791
|
|
dec [hl]
|
|
ret
|
|
|
|
Func_260d8: ; 0x260d8
|
|
dec de
|
|
ld a, [de]
|
|
cp $5
|
|
ret nz
|
|
ld a, $4
|
|
jp Func_26137
|
|
|
|
Func_260e2: ; 0x260e2
|
|
dec de
|
|
ld a, [de]
|
|
cp $5
|
|
ret nz
|
|
ld a, $1
|
|
jp Func_26137
|
|
|
|
Func_260ec: ; 0x260ec
|
|
dec de
|
|
ld a, [de]
|
|
cp $1
|
|
ret nz
|
|
push de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
and a
|
|
jr z, .asm_26103
|
|
pop de
|
|
ld a, $b
|
|
jp Func_26137
|
|
|
|
.asm_26103
|
|
pop de
|
|
ld a, $a
|
|
jp Func_26137
|
|
|
|
Func_26109: ; 0x26109
|
|
dec de
|
|
ld a, [de]
|
|
cp $7
|
|
ret nz
|
|
ld a, $1
|
|
call Func_26137
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, $5
|
|
ld [de], a
|
|
ld hl, wd791
|
|
dec [hl]
|
|
ret
|
|
|
|
Func_26120: ; 0x26120
|
|
dec de
|
|
ld a, [de]
|
|
cp $7
|
|
ret nz
|
|
ld a, $4
|
|
call Func_26137
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, $5
|
|
ld [de], a
|
|
ld hl, wd791
|
|
dec [hl]
|
|
ret
|
|
|
|
Func_26137: ; 0x26137
|
|
push af
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SeelAnimationsTable
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
pop de
|
|
inc de
|
|
pop af
|
|
ld [de], a
|
|
ret
|
|
|
|
SeelAnimationsTable: ; 0x2614f
|
|
dw SeelAnimationData1
|
|
dw SeelAnimationData2
|
|
dw SeelAnimationData3
|
|
dw SeelAnimationData4
|
|
dw SeelAnimationData5
|
|
dw SeelAnimationData6
|
|
dw SeelAnimationData7
|
|
dw SeelAnimationData8
|
|
dw SeelAnimationData9
|
|
dw SeelAnimationData10
|
|
dw SeelAnimationData11
|
|
dw SeelAnimationData12
|
|
|
|
SeelAnimationData1:
|
|
db $1C, $00
|
|
db $1C, $01
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData2:
|
|
db $0C, $03
|
|
db $08, $04
|
|
db $0C, $05
|
|
db $08, $04
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData3:
|
|
db $04, $06
|
|
db $04, $07
|
|
db $05, $08
|
|
db $05, $09
|
|
db $06, $0A
|
|
db $04, $0B
|
|
db $08, $0C
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData4:
|
|
db $08, $0C
|
|
db $04, $0B
|
|
db $06, $0D
|
|
db $10, $17
|
|
db $06, $0A
|
|
db $05, $09
|
|
db $05, $08
|
|
db $04, $0E
|
|
db $04, $0F
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData5:
|
|
db $0C, $10
|
|
db $08, $11
|
|
db $0C, $12
|
|
db $08, $11
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData6:
|
|
db $04, $13
|
|
db $04, $14
|
|
db $05, $08
|
|
db $05, $09
|
|
db $06, $0A
|
|
db $04, $0B
|
|
db $08, $0C
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData7:
|
|
db $08, $0C
|
|
db $04, $0B
|
|
db $06, $0D
|
|
db $10, $17
|
|
db $06, $0A
|
|
db $05, $09
|
|
db $05, $08
|
|
db $04, $15
|
|
db $04, $16
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData8:
|
|
db $04, $06
|
|
db $04, $07
|
|
db $06, $0A
|
|
db $04, $15
|
|
db $04, $16
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData9:
|
|
db $04, $13
|
|
db $04, $14
|
|
db $06, $0A
|
|
db $04, $0E
|
|
db $04, $0F
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData10:
|
|
db $10, $02
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData11:
|
|
db $06, $0D
|
|
db $10, $17
|
|
db $06, $0A
|
|
db $05, $09
|
|
db $05, $08
|
|
db $04, $0E
|
|
db $04, $0F
|
|
db $00 ; terminator
|
|
|
|
SeelAnimationData12:
|
|
db $06, $0D
|
|
db $10, $17
|
|
db $06, $0A
|
|
db $05, $09
|
|
db $05, $08
|
|
db $04, $15
|
|
db $04, $16
|
|
db $00 ; terminator
|
|
|
|
Func_261f9: ; 0x261f9
|
|
ld a, $ff
|
|
ld [wd795], a
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SeelStageAnimations
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call CopyHLToDE
|
|
ret
|
|
|
|
Func_26212: ; 0x26212
|
|
ld a, [de]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SeelStageAnimations
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
push de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
call UpdateAnimation
|
|
pop de
|
|
ret nc
|
|
dec de
|
|
ld a, [de]
|
|
cp $a
|
|
ret nz
|
|
xor a
|
|
ld [de], a
|
|
ld [wd79c], a
|
|
ld [wd79e], a
|
|
ld a, a
|
|
ld [wd795], a
|
|
ret
|
|
|
|
SeelStageAnimations:
|
|
dw SeelStageAnimationData1
|
|
dw SeelStageAnimationData1
|
|
dw SeelStageAnimationData2
|
|
dw SeelStageAnimationData3
|
|
dw SeelStageAnimationData4
|
|
dw SeelStageAnimationData5
|
|
dw SeelStageAnimationData6
|
|
dw SeelStageAnimationData7
|
|
dw SeelStageAnimationData8
|
|
|
|
SeelStageAnimationData1:
|
|
db $02, $00
|
|
db $02, $01
|
|
db $02, $02
|
|
db $10, $00
|
|
db $04, $18
|
|
db $04, $00
|
|
db $04, $18
|
|
db $04, $00
|
|
db $04, $18
|
|
db $04, $00
|
|
db $00 ; terminator
|
|
|
|
SeelStageAnimationData2:
|
|
db $02, $03
|
|
db $02, $04
|
|
db $02, $05
|
|
db $10, $03
|
|
db $04, $18
|
|
db $04, $03
|
|
db $04, $18
|
|
db $04, $03
|
|
db $04, $18
|
|
db $04, $03
|
|
db $00 ; terminator
|
|
|
|
SeelStageAnimationData3:
|
|
db $02, $06
|
|
db $02, $07
|
|
db $02, $08
|
|
db $10, $06
|
|
db $04, $18
|
|
db $04, $06
|
|
db $04, $18
|
|
db $04, $06
|
|
db $04, $18
|
|
db $04, $06
|
|
db $00 ; terminator
|
|
|
|
SeelStageAnimationData4:
|
|
db $02, $09
|
|
db $02, $0A
|
|
db $02, $0B
|
|
db $10, $09
|
|
db $04, $18
|
|
db $04, $09
|
|
db $04, $18
|
|
db $04, $09
|
|
db $04, $18
|
|
db $04, $09
|
|
db $00 ; terminator
|
|
|
|
SeelStageAnimationData5:
|
|
db $02, $0C
|
|
db $02, $0D
|
|
db $02, $0E
|
|
db $10, $0C
|
|
db $04, $18
|
|
db $04, $0C
|
|
db $04, $18
|
|
db $04, $0C
|
|
db $04, $18
|
|
db $04, $0C
|
|
db $00 ; terminator
|
|
|
|
SeelStageAnimationData6:
|
|
db $02, $0F
|
|
db $02, $10
|
|
db $02, $11
|
|
db $10, $0F
|
|
db $04, $18
|
|
db $04, $0F
|
|
db $04, $18
|
|
db $04, $0F
|
|
db $04, $18
|
|
db $04, $0F
|
|
db $00 ; terminator
|
|
|
|
SeelStageAnimationData7:
|
|
db $02, $12
|
|
db $02, $13
|
|
db $02, $14
|
|
db $10, $12
|
|
db $04, $18
|
|
db $04, $12
|
|
db $04, $18
|
|
db $04, $12
|
|
db $04, $18
|
|
db $04, $12
|
|
db $00 ; terminator
|
|
|
|
SeelStageAnimationData8:
|
|
db $02, $15
|
|
db $02, $16
|
|
db $02, $17
|
|
db $10, $15
|
|
db $04, $18
|
|
db $04, $15
|
|
db $04, $18
|
|
db $04, $15
|
|
db $04, $18
|
|
db $04, $15
|
|
db $00 ; terminator
|
|
|
|
Func_262f4: ; 0x262f4
|
|
ld a, [wd793]
|
|
ld c, a
|
|
ld b, $0
|
|
.asm_262fa
|
|
ld a, c
|
|
and a
|
|
jr z, .asm_26306
|
|
ld a, b
|
|
add $8
|
|
ld b, a
|
|
dec c
|
|
ld a, c
|
|
jr .asm_262fa
|
|
|
|
.asm_26306
|
|
ld a, b
|
|
and a
|
|
jr z, .asm_2630c
|
|
sub $8
|
|
.asm_2630c
|
|
ld [wd652], a
|
|
ld a, [wd792]
|
|
and a
|
|
jr z, .asm_2631b
|
|
ld b, a
|
|
ld a, [wd793]
|
|
inc a
|
|
sub b
|
|
.asm_2631b
|
|
ld [wd651], a
|
|
ld a, [wd793]
|
|
cp $15
|
|
jr c, .asm_2632a
|
|
ld a, $14
|
|
ld [wd793], a
|
|
.asm_2632a
|
|
push af
|
|
xor a
|
|
ld [wd650], a
|
|
pop af
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileDataPointers_2634a
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_26340
|
|
ld hl, TileDataPointers_26764
|
|
.asm_26340
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_2634a)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_2634a:
|
|
dw TileData_26374
|
|
dw TileData_26377
|
|
dw TileData_2637a
|
|
dw TileData_2637d
|
|
dw TileData_26380
|
|
dw TileData_26383
|
|
dw TileData_26386
|
|
dw TileData_26389
|
|
dw TileData_2638c
|
|
dw TileData_2638f
|
|
dw TileData_26392
|
|
dw TileData_26395
|
|
dw TileData_26398
|
|
dw TileData_2639b
|
|
dw TileData_2639e
|
|
dw TileData_263a1
|
|
dw TileData_263a4
|
|
dw TileData_263a7
|
|
dw TileData_263aa
|
|
dw TileData_263ad
|
|
dw TileData_263b0
|
|
|
|
TileData_26374: ; 0x26374
|
|
db $01
|
|
dw TileData_263b3
|
|
|
|
TileData_26377: ; 0x26377
|
|
db $01
|
|
dw TileData_263e0
|
|
|
|
TileData_2637a: ; 0x2637a
|
|
db $01
|
|
dw TileData_2640d
|
|
|
|
TileData_2637d: ; 0x2637d
|
|
db $01
|
|
dw TileData_2643a
|
|
|
|
TileData_26380: ; 0x26380
|
|
db $01
|
|
dw TileData_26467
|
|
|
|
TileData_26383: ; 0x26383
|
|
db $01
|
|
dw TileData_26494
|
|
|
|
TileData_26386: ; 0x26386
|
|
db $01
|
|
dw TileData_264c1
|
|
|
|
TileData_26389: ; 0x26389
|
|
db $01
|
|
dw TileData_264ee
|
|
|
|
TileData_2638c: ; 0x2638c
|
|
db $01
|
|
dw TileData_2651b
|
|
|
|
TileData_2638f: ; 0x2638f
|
|
db $01
|
|
dw TileData_26548
|
|
|
|
TileData_26392: ; 0x26392
|
|
db $01
|
|
dw TileData_26575
|
|
|
|
TileData_26395: ; 0x26395
|
|
db $01
|
|
dw TileData_265a2
|
|
|
|
TileData_26398: ; 0x26398
|
|
db $01
|
|
dw TileData_265cf
|
|
|
|
TileData_2639b: ; 0x2639b
|
|
db $01
|
|
dw TileData_265fc
|
|
|
|
TileData_2639e: ; 0x2639e
|
|
db $01
|
|
dw TileData_26629
|
|
|
|
TileData_263a1: ; 0x263a1
|
|
db $01
|
|
dw TileData_26656
|
|
|
|
TileData_263a4: ; 0x263a4
|
|
db $01
|
|
dw TileData_26683
|
|
|
|
TileData_263a7: ; 0x263a7
|
|
db $01
|
|
dw TileData_266b0
|
|
|
|
TileData_263aa: ; 0x263aa
|
|
db $01
|
|
dw TileData_266dd
|
|
|
|
TileData_263ad: ; 0x263ad
|
|
db $01
|
|
dw TileData_2670a
|
|
|
|
TileData_263b0: ; 0x263b0
|
|
db $01
|
|
dw TileData_26737
|
|
|
|
TileData_263b3: ; 0x263b3
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $01, $30, $31
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_263e0: ; 0x263e0
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $30, $31
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2640d: ; 0x2640d
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $31
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2643a: ; 0x2643a
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26467: ; 0x26467
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26494: ; 0x26494
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_264c1: ; 0x264c1
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_264ee: ; 0x264ee
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2651b: ; 0x2651b
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26548: ; 0x26548
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26575: ; 0x26575
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_265a2: ; 0x265a2
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_265cf: ; 0x265cf
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $32, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_265fc: ; 0x265fc
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $32, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26629: ; 0x26629
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $3A, $32
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26656: ; 0x26656
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $32, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26683: ; 0x26683
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $3A, $32, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_266b0: ; 0x266b0
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $3A, $3A, $33
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_266dd: ; 0x266dd
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $3A, $3A, $3A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $34, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2670a: ; 0x2670a
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $3A, $3A, $3A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $3B, $04
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26737: ; 0x26737
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $38, $39, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $3A, $3A, $3A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $3A, $3A, $3A
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $3B, $38
|
|
|
|
db $00 ; terminator
|
|
|
|
TileDataPointers_26764:
|
|
dw TileData_2678e
|
|
dw TileData_26791
|
|
dw TileData_26794
|
|
dw TileData_26797
|
|
dw TileData_2679a
|
|
dw TileData_2679d
|
|
dw TileData_267a0
|
|
dw TileData_267a3
|
|
dw TileData_267a6
|
|
dw TileData_267a9
|
|
dw TileData_267ac
|
|
dw TileData_267af
|
|
dw TileData_267b2
|
|
dw TileData_267b5
|
|
dw TileData_267b8
|
|
dw TileData_267bb
|
|
dw TileData_267be
|
|
dw TileData_267c1
|
|
dw TileData_267c4
|
|
dw TileData_267c7
|
|
dw TileData_267ca
|
|
|
|
TileData_2678e: ; 0x2678e
|
|
db $01
|
|
dw TileData_267cd
|
|
|
|
TileData_26791: ; 0x26791
|
|
db $01
|
|
dw TileData_267fa
|
|
|
|
TileData_26794: ; 0x26794
|
|
db $01
|
|
dw TileData_26827
|
|
|
|
TileData_26797: ; 0x26797
|
|
db $01
|
|
dw TileData_26854
|
|
|
|
TileData_2679a: ; 0x2679a
|
|
db $01
|
|
dw TileData_26881
|
|
|
|
TileData_2679d: ; 0x2679d
|
|
db $01
|
|
dw TileData_268ae
|
|
|
|
TileData_267a0: ; 0x267a0
|
|
db $01
|
|
dw TileData_268db
|
|
|
|
TileData_267a3: ; 0x267a3
|
|
db $01
|
|
dw TileData_26908
|
|
|
|
TileData_267a6: ; 0x267a6
|
|
db $01
|
|
dw TileData_26935
|
|
|
|
TileData_267a9: ; 0x267a9
|
|
db $01
|
|
dw TileData_26962
|
|
|
|
TileData_267ac: ; 0x267ac
|
|
db $01
|
|
dw TileData_2698f
|
|
|
|
TileData_267af: ; 0x267af
|
|
db $01
|
|
dw TileData_269bc
|
|
|
|
TileData_267b2: ; 0x267b2
|
|
db $01
|
|
dw TileData_269e9
|
|
|
|
TileData_267b5: ; 0x267b5
|
|
db $01
|
|
dw TileData_26a16
|
|
|
|
TileData_267b8: ; 0x267b8
|
|
db $01
|
|
dw TileData_26a43
|
|
|
|
TileData_267bb: ; 0x267bb
|
|
db $01
|
|
dw TileData_26a70
|
|
|
|
TileData_267be: ; 0x267be
|
|
db $01
|
|
dw TileData_26a9d
|
|
|
|
TileData_267c1: ; 0x267c1
|
|
db $01
|
|
dw TileData_26aca
|
|
|
|
TileData_267c4: ; 0x267c4
|
|
db $01
|
|
dw TileData_26af7
|
|
|
|
TileData_267c7: ; 0x267c7
|
|
db $01
|
|
dw TileData_26b24
|
|
|
|
TileData_267ca: ; 0x267ca
|
|
db $01
|
|
dw TileData_26b51
|
|
|
|
TileData_267cd: ; 0x267cd
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $FB, $18, $19
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_267fa: ; 0x267fa
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $18, $19
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26827: ; 0x26827
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $19
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26854: ; 0x26854
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26881: ; 0x26881
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_268ae: ; 0x268ae
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_268db: ; 0x268db
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26908: ; 0x26908
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26935: ; 0x26935
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26962: ; 0x26962
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_2698f: ; 0x2698f
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_269bc: ; 0x269bc
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_269e9: ; 0x269e9
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1A, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26a16: ; 0x26a16
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1A, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26a43: ; 0x26a43
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1D, $1A
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26a70: ; 0x26a70
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1A, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26a9d: ; 0x26a9d
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1D, $1A, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26aca: ; 0x26aca
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1D, $1D, $19
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26af7: ; 0x26af7
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1D, $1D, $1D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $18, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26b24: ; 0x26b24
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1D, $1D, $1D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $1E, $FB
|
|
|
|
db $00 ; terminator
|
|
|
|
TileData_26b51: ; 0x26b51
|
|
dw LoadTileLists
|
|
db $14 ; total number of tiles
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap
|
|
db $1B, $1C, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $3
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $6
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $9
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $C
|
|
db $1D, $1D, $1D
|
|
|
|
db $03 ; number of tiles
|
|
dw vBGMap + $F
|
|
db $1D, $1D, $1D
|
|
|
|
db $02 ; number of tiles
|
|
dw vBGMap + $12
|
|
db $1E, $1B
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_26b7e: ; 0x26b7e
|
|
ld bc, $7f65
|
|
callba DrawTimer
|
|
call Func_26bf7
|
|
callba DrawFlippers
|
|
callba DrawPinball
|
|
call Func_26ba9
|
|
call Func_26c3c
|
|
ret
|
|
|
|
Func_26ba9: ; 0x26ba9
|
|
ld de, wd76e
|
|
call Func_26bbc
|
|
ld de, wd778
|
|
call Func_26bbc
|
|
ld de, wd782
|
|
call Func_26bbc
|
|
ret
|
|
|
|
Func_26bbc: ; 0x26bbc
|
|
ld a, [de]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_26bdf
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_26bdf:
|
|
db $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60, $61, $62, $63
|
|
db $64, $65, $66, $67, $68, $69, $6A
|
|
db $FF
|
|
|
|
Func_26bf7: ; 0x26bf7: ; 0x26bf7
|
|
ld a, [wd795]
|
|
cp $0
|
|
ret z
|
|
ld de, wd79c
|
|
ld a, [de]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
inc de
|
|
inc de
|
|
ld a, [de]
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
dec de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OAMIds_26c23
|
|
add hl, de
|
|
ld a, [hl]
|
|
cp $ff
|
|
call nz, LoadOAMData2
|
|
ret
|
|
|
|
OAMIds_26c23:
|
|
db $6B, $6C, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A
|
|
db $7B, $7C, $7D, $7E, $7F, $80, $81, $82
|
|
db $FF
|
|
|
|
Func_26c3c: ; 0x26c3c
|
|
ld a, [wd64e]
|
|
and a
|
|
ret z
|
|
ld a, [wd652]
|
|
ld hl, hSCX
|
|
sub [hl]
|
|
ld b, a
|
|
xor a
|
|
ld hl, hSCY
|
|
sub [hl]
|
|
ld c, a
|
|
ld a, [wd64f]
|
|
cp $a
|
|
jr c, .asm_26c5b
|
|
ld de, $0000
|
|
jr .asm_26c5e
|
|
|
|
.asm_26c5b
|
|
ld de, $0001
|
|
.asm_26c5e
|
|
ld hl, OAMIds_26c7d
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData2
|
|
ld hl, wd64f
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $14
|
|
ret c
|
|
ld [hl], $0
|
|
ld hl, wd650
|
|
inc [hl]
|
|
ld a, [hl]
|
|
cp $a
|
|
ret nz
|
|
xor a
|
|
ld [wd64e], a
|
|
ret
|
|
|
|
OAMIds_26c7d:
|
|
db $83, $84
|
|
|
|
SECTION "banka", ROMX, BANK[$a]
|
|
|
|
HandlePokedexScreen: ; 0x28000
|
|
ld a, [wScreenState]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
PointerTable_28004: ; 0x28004
|
|
dw LoadPokedexScreen
|
|
dw MainPokedexScreen
|
|
dw MonInfoPokedexScreen
|
|
dw Func_282e9 ; not sure if this is used ever...
|
|
dw ExitPokedexScreen
|
|
|
|
LoadPokedexScreen: ; 0x2800e
|
|
ld a, $23
|
|
ld [hLCDC], a
|
|
ld a, $e4
|
|
ld [wBGP], a
|
|
ld a, $93
|
|
ld [wOBP0], a
|
|
ld a, $e4
|
|
ld [wOBP1], a
|
|
xor a
|
|
ld [hSCX], a
|
|
ld a, $8
|
|
ld [hSCY], a
|
|
ld a, $7
|
|
ld [hWX], a
|
|
ld a, $8c
|
|
ld [hWY], a
|
|
ld a, $3b
|
|
ld [hLYC], a
|
|
ld [hLastLYC], a
|
|
ld [hNextLYCSub], a
|
|
ld [hLYCSub], a
|
|
ld hl, hSTAT
|
|
set 6, [hl]
|
|
ld hl, rIE
|
|
set 1, [hl]
|
|
ld a, $2
|
|
ld [hHBlankRoutine], a
|
|
ld hl, PointerTable_280a2
|
|
ld a, [hGameBoyColorFlag]
|
|
call LoadVideoData
|
|
xor a
|
|
ld [wCurPokedexIndex], a
|
|
ld [wPokedexOffset], a
|
|
ld [wd95b], a
|
|
ld [wd95c], a
|
|
ld [wd960], a
|
|
ld [wd961], a
|
|
ld [wd95e], a
|
|
ld a, $1
|
|
ld [wd862], a
|
|
call ClearOAMBuffer
|
|
call Func_285db
|
|
call Func_28931
|
|
call Func_289c8
|
|
call Func_28a15
|
|
call Func_28972
|
|
call Func_28a8a
|
|
call Func_28ad1
|
|
call Func_28add
|
|
call CountNumSeenOwnedMons
|
|
call Func_b66
|
|
ld a, $f
|
|
call SetSongBank
|
|
ld de, $0004
|
|
call PlaySong
|
|
call Func_588
|
|
call Func_bbe
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
PointerTable_280a2: ; 0x280a2
|
|
dw Data_280a6
|
|
dw Data_280c4
|
|
|
|
Data_280a6: ; 0x280a6
|
|
dab PokedexInitialGfx
|
|
dw vTilesOB
|
|
dw $6000
|
|
dab Data_c5000
|
|
dw $9800
|
|
dw $1000
|
|
dab Data_c4800
|
|
dw vBGWin
|
|
dw $800
|
|
dab Data_c4800
|
|
dw $9e00
|
|
dw $800
|
|
dw $FFFF ; terminators
|
|
|
|
Data_280c4: ; 0x280c4
|
|
dab PokedexInitialGfx
|
|
dw vTilesOB
|
|
dw $6000
|
|
dab Data_c5000
|
|
dw $9800
|
|
dw $1000
|
|
dab Data_c5400
|
|
dw $9800
|
|
dw $1002
|
|
dab Data_c4800
|
|
dw vBGWin
|
|
dw $800
|
|
dab Data_c4800
|
|
dw $9e00
|
|
dw $800
|
|
dab Data_c4c00
|
|
dw vBGWin
|
|
dw $802
|
|
dab Data_c4c00
|
|
dw $9e00
|
|
dw $802
|
|
dab PokedexPalettes
|
|
dw $0000
|
|
dw $101
|
|
dw $FFFF ; terminators
|
|
|
|
MainPokedexScreen: ; 0x280fe
|
|
call Func_28513
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_28142
|
|
ld a, [wd95f]
|
|
and a
|
|
jp nz, .asm_28174
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jp z, .asm_28174
|
|
push hl
|
|
ld a, [wCurPokedexIndex]
|
|
inc a
|
|
ld e, a
|
|
ld d, $0
|
|
call PlayCry
|
|
pop hl
|
|
bit 1, [hl]
|
|
jp z, .asm_28174
|
|
call Func_288c6
|
|
call Func_2885c
|
|
call CleanOAMBuffer
|
|
call Func_2887c
|
|
call Func_2885c
|
|
ld hl, wScreenState
|
|
inc [hl]
|
|
ret
|
|
|
|
.asm_28142
|
|
bit BIT_B_BUTTON, a
|
|
jr z, .asm_2814f
|
|
call Func_285db
|
|
ld a, $4
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
.asm_2814f
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_28174
|
|
ld a, [hJoypadState]
|
|
bit BIT_START, a
|
|
jr z, .asm_28168
|
|
ld a, [wd960]
|
|
and a
|
|
ld a, $ff
|
|
ld [wd960], a
|
|
call z, Func_28add
|
|
jr .asm_28174
|
|
|
|
.asm_28168
|
|
ld a, [wd960]
|
|
and a
|
|
ld a, $0
|
|
ld [wd960], a
|
|
call nz, Func_28add
|
|
.asm_28174
|
|
call Func_285db
|
|
ret
|
|
|
|
MonInfoPokedexScreen: ; 0x28178
|
|
ld a, [wd956]
|
|
bit 0, a
|
|
jr z, .asm_28190
|
|
ld a, [hNewlyPressedButtons]
|
|
bit BIT_A_BUTTON, a
|
|
jr z, .asm_2818a
|
|
call Func_28912
|
|
jr .asm_281a2
|
|
|
|
.asm_2818a
|
|
bit 1, a
|
|
jr z, .asm_281a2
|
|
jr .asm_28196
|
|
|
|
.asm_28190
|
|
ld a, [hNewlyPressedButtons]
|
|
and $3
|
|
jr z, .asm_281a2
|
|
.asm_28196
|
|
call Func_288a2
|
|
call Func_285db
|
|
ld a, $1
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
.asm_281a2
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
jr z, .asm_281c7
|
|
ld a, [hJoypadState]
|
|
bit BIT_START, a
|
|
jr z, .asm_281bb
|
|
ld a, [wd960]
|
|
and a
|
|
ld a, $ff
|
|
ld [wd960], a
|
|
call z, Func_28add
|
|
jr .asm_281c7
|
|
|
|
.asm_281bb
|
|
ld a, [wd960]
|
|
and a
|
|
ld a, $0
|
|
ld [wd960], a
|
|
call nz, Func_28add
|
|
.asm_281c7
|
|
call Func_2885c
|
|
ret
|
|
|
|
Func_281cb:
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_281da
|
|
inc b
|
|
.asm_281da
|
|
ld a, [wd960]
|
|
and a
|
|
jr nz, .asm_281fb
|
|
ld hl, MonBillboardPalettePointers
|
|
add hl, bc
|
|
ld a, BANK(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, BANK(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, BANK(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
ld [$ff8c], a
|
|
jr .asm_28214
|
|
|
|
.asm_281fb
|
|
ld hl, MonAnimatedPalettePointers
|
|
add hl, bc
|
|
ld a, BANK(MonAnimatedPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, BANK(MonAnimatedPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, BANK(MonAnimatedPalettePointers)
|
|
call ReadByteFromBank
|
|
ld [$ff8c], a
|
|
.asm_28214
|
|
ld h, d
|
|
ld l, e
|
|
ld de, wda8a
|
|
ld b, $8
|
|
.asm_2821b
|
|
push bc
|
|
ld a, [$ff8c]
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld c, a
|
|
ld a, [$ff8c]
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld b, a
|
|
ld a, c
|
|
and $1f
|
|
ld [de], a
|
|
inc de
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
ld a, c
|
|
and $1f
|
|
ld [de], a
|
|
inc de
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
srl b
|
|
rr c
|
|
ld a, c
|
|
and $1f
|
|
ld [de], a
|
|
inc de
|
|
pop bc
|
|
dec b
|
|
jr nz, .asm_2821b
|
|
ld hl, VRAMAddresses_28289
|
|
ld de, wda8a
|
|
ld b, $18
|
|
.asm_2826d
|
|
push hl
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [de]
|
|
inc de
|
|
push af
|
|
swap a
|
|
and $f
|
|
call PutTileInVRAM
|
|
inc hl
|
|
pop af
|
|
and $f
|
|
call PutTileInVRAM
|
|
pop hl
|
|
inc hl
|
|
inc hl
|
|
dec b
|
|
jr nz, .asm_2826d
|
|
ret
|
|
|
|
VRAMAddresses_28289:
|
|
dw vBGWin + $26
|
|
dw vBGWin + $2B
|
|
dw vBGWin + $30
|
|
dw vBGWin + $46
|
|
dw vBGWin + $4B
|
|
dw vBGWin + $50
|
|
dw vBGWin + $66
|
|
dw vBGWin + $6B
|
|
dw vBGWin + $70
|
|
dw vBGWin + $86
|
|
dw vBGWin + $8B
|
|
dw vBGWin + $90
|
|
dw vBGWin + $C6
|
|
dw vBGWin + $CB
|
|
dw vBGWin + $D0
|
|
dw vBGWin + $E6
|
|
dw vBGWin + $EB
|
|
dw vBGWin + $F0
|
|
dw vBGWin + $106
|
|
dw vBGWin + $10B
|
|
dw vBGWin + $110
|
|
dw vBGWin + $126
|
|
dw vBGWin + $12B
|
|
dw vBGWin + $130
|
|
|
|
OAMOffsetsTable_282b9:
|
|
; y, x coordinates
|
|
db $40, $18
|
|
db $40, $40
|
|
db $40, $68
|
|
db $48, $18
|
|
db $48, $40
|
|
db $48, $68
|
|
db $50, $18
|
|
db $50, $40
|
|
db $50, $68
|
|
db $58, $18
|
|
db $58, $40
|
|
db $58, $68
|
|
db $68, $18
|
|
db $68, $40
|
|
db $68, $68
|
|
db $70, $18
|
|
db $70, $40
|
|
db $70, $68
|
|
db $78, $18
|
|
db $78, $40
|
|
db $78, $68
|
|
db $80, $18
|
|
db $80, $40
|
|
db $80, $68
|
|
|
|
Func_282e9: ; 0x282e9
|
|
ld a, [wd960]
|
|
and a
|
|
jr z, .asm_28318
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MonAnimatedSpriteTypes
|
|
add hl, bc
|
|
ld a, Bank(MonAnimatedSpriteTypes)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld a, [hNumFramesDropped]
|
|
swap a
|
|
and $7
|
|
cp $7
|
|
jr z, .asm_2830d
|
|
and $1
|
|
jr .asm_2830f
|
|
|
|
.asm_2830d
|
|
ld a, $2
|
|
.asm_2830f
|
|
add c
|
|
add $a5
|
|
ld bc, $2030
|
|
call LoadOAMData
|
|
.asm_28318
|
|
ld a, [wdaa2]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, OAMOffsetsTable_282b9
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld a, $63
|
|
call LoadOAMData
|
|
call Func_28368
|
|
ld a, [hNewlyPressedButtons]
|
|
and $6
|
|
jr z, .asm_28367
|
|
ld a, BANK(Data_c4800)
|
|
ld hl, Data_c4800
|
|
ld de, vBGWin
|
|
ld bc, $0200
|
|
call LoadVRAMData
|
|
ld a, $1
|
|
ld [rVBK], a
|
|
ld a, BANK(Data_c4c00)
|
|
ld hl, Data_c4c00
|
|
ld de, vBGWin
|
|
ld bc, $0200
|
|
call LoadVRAMData
|
|
xor a
|
|
ld [rVBK], a
|
|
call Func_28972
|
|
call Func_28a8a
|
|
call Func_28ad1
|
|
ld a, $1
|
|
ld [wScreenState], a
|
|
.asm_28367
|
|
ret
|
|
|
|
Func_28368: ; 0x28368
|
|
ld a, [hJoypadState]
|
|
bit BIT_A_BUTTON, a
|
|
jr nz, .asm_28371
|
|
jp Func_284bc
|
|
|
|
.asm_28371
|
|
ld a, [hPressedButtons]
|
|
ld b, a
|
|
ld a, [wdaa2]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, wda8a
|
|
add hl, de
|
|
ld a, [hl]
|
|
bit 5, b
|
|
jr z, .asm_28386
|
|
dec a
|
|
jr .asm_2838a
|
|
|
|
.asm_28386
|
|
bit 4, b
|
|
ret z
|
|
inc a
|
|
.asm_2838a
|
|
and $1f
|
|
ld [hl], a
|
|
push af
|
|
sla e
|
|
rl d
|
|
ld hl, VRAMAddresses_28289
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop af
|
|
push af
|
|
swap a
|
|
and $f
|
|
call PutTileInVRAM
|
|
inc hl
|
|
pop af
|
|
and $f
|
|
call PutTileInVRAM
|
|
ld hl, Data_2842c
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [hld]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
ld a, [hld]
|
|
or c
|
|
ld c, a
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
ld a, [hl]
|
|
or c
|
|
ld c, a
|
|
ld a, [wd960]
|
|
and a
|
|
jr nz, .asm_283ff
|
|
ld hl, BGPaletteIndices_2845c
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld hl, rBGPI
|
|
call PutTileInVRAM
|
|
ld hl, rBGPD
|
|
ld a, c
|
|
call PutTileInVRAM
|
|
ld a, b
|
|
call PutTileInVRAM
|
|
ret
|
|
|
|
.asm_283ff
|
|
ld hl, BGPaletteIndices_2845c
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld hl, rBGPI
|
|
call PutTileInVRAM
|
|
ld hl, rBGPD
|
|
ld a, c
|
|
call PutTileInVRAM
|
|
ld a, b
|
|
call PutTileInVRAM
|
|
ld hl, SpritePaletteIndices_2848c
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld hl, rOBPI
|
|
call PutTileInVRAM
|
|
ld hl, rOBPD
|
|
ld a, c
|
|
call PutTileInVRAM
|
|
ld a, b
|
|
call PutTileInVRAM
|
|
ret
|
|
|
|
Data_2842c:
|
|
dw wda8c
|
|
dw wda8c
|
|
dw wda8c
|
|
dw wda8f
|
|
dw wda8f
|
|
dw wda8f
|
|
dw wda92
|
|
dw wda92
|
|
dw wda92
|
|
dw wda95
|
|
dw wda95
|
|
dw wda95
|
|
dw wda98
|
|
dw wda98
|
|
dw wda98
|
|
dw wda9b
|
|
dw wda9b
|
|
dw wda9b
|
|
dw wda9e
|
|
dw wda9e
|
|
dw wda9e
|
|
dw wdaa1
|
|
dw wdaa1
|
|
dw wdaa1
|
|
|
|
BGPaletteIndices_2845c:
|
|
; second byte is unused
|
|
db $30 | $80, $00
|
|
db $30 | $80, $00
|
|
db $30 | $80, $00
|
|
db $32 | $80, $00
|
|
db $32 | $80, $00
|
|
db $32 | $80, $00
|
|
db $34 | $80, $00
|
|
db $34 | $80, $00
|
|
db $34 | $80, $00
|
|
db $36 | $80, $00
|
|
db $36 | $80, $00
|
|
db $36 | $80, $00
|
|
db $38 | $80, $00
|
|
db $38 | $80, $00
|
|
db $38 | $80, $00
|
|
db $3A | $80, $00
|
|
db $3A | $80, $00
|
|
db $3A | $80, $00
|
|
db $3C | $80, $00
|
|
db $3C | $80, $00
|
|
db $3C | $80, $00
|
|
db $3E | $80, $00
|
|
db $3E | $80, $00
|
|
db $3E | $80, $00
|
|
|
|
SpritePaletteIndices_2848c:
|
|
db $D8, $00
|
|
db $D8, $00
|
|
db $D8, $00
|
|
db $DA, $00
|
|
db $DA, $00
|
|
db $DA, $00
|
|
db $DC, $00
|
|
db $DC, $00
|
|
db $DC, $00
|
|
db $DE, $00
|
|
db $DE, $00
|
|
db $DE, $00
|
|
db $E8, $00
|
|
db $E8, $00
|
|
db $E8, $00
|
|
db $EA, $00
|
|
db $EA, $00
|
|
db $EA, $00
|
|
db $EC, $00
|
|
db $EC, $00
|
|
db $EC, $00
|
|
db $EE, $00
|
|
db $EE, $00
|
|
db $EE, $00
|
|
|
|
Func_284bc: ; 0x284bc
|
|
ld a, [hPressedButtons]
|
|
ld b, a
|
|
ld a, [wdaa2]
|
|
bit 5, b
|
|
jr z, .asm_284cd
|
|
dec a
|
|
bit 7, a
|
|
jr nz, .asm_284ef
|
|
jr .asm_284f5
|
|
|
|
.asm_284cd
|
|
bit 4, b
|
|
jr z, .asm_284d8
|
|
inc a
|
|
cp $18
|
|
jr nc, .asm_284f3
|
|
jr .asm_284f5
|
|
|
|
.asm_284d8
|
|
bit 6, b
|
|
jr z, .asm_284e4
|
|
sub $3
|
|
bit 7, a
|
|
jr nz, .asm_284ef
|
|
jr .asm_284f5
|
|
|
|
.asm_284e4
|
|
bit 7, b
|
|
ret z
|
|
add $3
|
|
cp $18
|
|
jr nc, .asm_284f3
|
|
jr .asm_284f5
|
|
|
|
.asm_284ef
|
|
add $18
|
|
jr .asm_284f5
|
|
|
|
.asm_284f3
|
|
sub $18
|
|
.asm_284f5
|
|
ld [wdaa2], a
|
|
ret
|
|
|
|
ExitPokedexScreen: ; 0x284f9
|
|
call Func_cb5
|
|
call Func_576
|
|
ld hl, hSTAT
|
|
res 6, [hl]
|
|
ld hl, rIE
|
|
res 1, [hl]
|
|
ld a, SCREEN_TITLESCREEN
|
|
ld [wCurrentScreen], a
|
|
xor a
|
|
ld [wScreenState], a
|
|
ret
|
|
|
|
Func_28513: ; 0x28513
|
|
ld a, [hPressedButtons]
|
|
ld hl, wd95e
|
|
or [hl]
|
|
ld [hl], a
|
|
ld a, [wd95c]
|
|
and a
|
|
ret nz
|
|
ld a, [wd95e]
|
|
ld b, a
|
|
ld a, [wd9f8]
|
|
and a
|
|
ld a, NUM_POKEMON - 1
|
|
jr z, .asm_2852d
|
|
ld a, NUM_POKEMON
|
|
.asm_2852d
|
|
ld d, a
|
|
ld a, [wCurPokedexIndex]
|
|
bit 6, b
|
|
jr z, .asm_28548
|
|
and a
|
|
jr z, .asm_285a9
|
|
dec a
|
|
ld [wCurPokedexIndex], a
|
|
ld a, $4
|
|
ld [wd95c], a
|
|
ld a, $1
|
|
ld [wd95f], a
|
|
jr .asm_285a9
|
|
|
|
.asm_28548
|
|
bit 7, b
|
|
jr z, .asm_2855f
|
|
inc a
|
|
cp d
|
|
jr z, .asm_285a9
|
|
ld [wCurPokedexIndex], a
|
|
ld a, $4
|
|
ld [wd95c], a
|
|
ld a, $1
|
|
ld [wd95f], a
|
|
jr .asm_285a9
|
|
|
|
.asm_2855f
|
|
ld a, d
|
|
sub $9
|
|
ld d, a
|
|
ld a, [wPokedexOffset]
|
|
ld c, $5
|
|
bit 5, b
|
|
jr z, .asm_28586
|
|
cp $5
|
|
jr nc, .asm_28571
|
|
ld c, a
|
|
.asm_28571
|
|
sub c
|
|
ld [wPokedexOffset], a
|
|
ld a, [wCurPokedexIndex]
|
|
sub c
|
|
ld [wCurPokedexIndex], a
|
|
ld a, $1
|
|
ld [wd95f], a
|
|
call Func_285ca
|
|
jr .asm_285aa
|
|
|
|
.asm_28586
|
|
bit 4, b
|
|
jr z, .asm_285ae
|
|
cp d
|
|
jr c, .asm_28594
|
|
push af
|
|
cpl
|
|
add d
|
|
add $5
|
|
ld c, a
|
|
pop af
|
|
.asm_28594
|
|
add c
|
|
ld [wPokedexOffset], a
|
|
ld a, [wCurPokedexIndex]
|
|
add c
|
|
ld [wCurPokedexIndex], a
|
|
ld a, $1
|
|
ld [wd95f], a
|
|
call Func_285ca
|
|
jr .asm_285aa
|
|
|
|
.asm_285a9
|
|
xor a
|
|
.asm_285aa
|
|
ld [wd95e], a
|
|
ret
|
|
|
|
.asm_285ae
|
|
ld a, [wd95f]
|
|
and a
|
|
ret z
|
|
lb de, $00, $03
|
|
call PlaySoundEffect
|
|
call Func_28931
|
|
call Func_289c8
|
|
call Func_28a15
|
|
call Func_28add
|
|
xor a
|
|
ld [wd95f], a
|
|
ret
|
|
|
|
Func_285ca: ; 0x285ca
|
|
xor a
|
|
ld [wd80a], a
|
|
call Func_28972
|
|
call Func_28a8a
|
|
call Func_28ad1
|
|
ld a, [wd80a]
|
|
ret
|
|
|
|
Func_285db: ; 0x285db
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
bit 1, [hl] ; has pokemon been seen or captured?
|
|
call nz, Func_287e7
|
|
ld bc, $8c38
|
|
ld a, $64
|
|
call LoadOAMData
|
|
ld bc, vTilesSH tile $04
|
|
ld a, $65
|
|
call LoadOAMData
|
|
ld bc, $8888
|
|
ld a, $66
|
|
call LoadOAMData
|
|
call DrawCornerInfoPokedexScreen
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, DexScrollBarOffsets
|
|
add hl, bc
|
|
ld a, [hl]
|
|
add $49
|
|
ld c, a
|
|
ld b, $90
|
|
ld a, [wd95b]
|
|
srl a
|
|
srl a
|
|
and $3
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, DexScrollBarOAMIds
|
|
add hl, de
|
|
ld a, [hl]
|
|
call LoadOAMData
|
|
ld a, [wCurPokedexIndex]
|
|
ld hl, wPokedexOffset
|
|
sub [hl]
|
|
jr nc, .asm_2863b
|
|
dec [hl]
|
|
ld a, $1
|
|
ld [wd95d], a
|
|
xor a
|
|
jr .asm_28647
|
|
|
|
.asm_2863b
|
|
cp $5
|
|
jr c, .asm_28647
|
|
ld a, $1
|
|
ld [wd95d], a
|
|
inc [hl]
|
|
ld a, $4
|
|
.asm_28647
|
|
ld c, a
|
|
push bc
|
|
ld a, [hJoypadState]
|
|
and a
|
|
ld a, [wd95b]
|
|
jr z, .asm_28652
|
|
xor a
|
|
.asm_28652
|
|
inc a
|
|
ld [wd95b], a
|
|
bit 3, a
|
|
jr nz, .asm_28667
|
|
swap c
|
|
ld a, c
|
|
add $40
|
|
ld c, a
|
|
ld b, $10
|
|
ld a, $63
|
|
call LoadOAMData
|
|
.asm_28667
|
|
pop bc
|
|
ld a, [wd95c]
|
|
and a
|
|
ret z
|
|
dec a
|
|
ld [wd95c], a
|
|
sla a
|
|
ld e, a
|
|
ld d, $0
|
|
push hl
|
|
ld hl, PointerTable_2867f
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp [hl]
|
|
|
|
PointerTable_2867f: ; 0x2867f
|
|
dw Func_286dd
|
|
dw Func_28721
|
|
dw Func_286dd
|
|
dw Func_28765
|
|
|
|
DexScrollBarOAMIds:
|
|
db $67, $68, $69, $68
|
|
|
|
DrawCornerInfoPokedexScreen: ; 0x2868b
|
|
; If player is holding SELECT button, it draws the seen/own count in the top-right corner.
|
|
; Otherwise, it draws the word "POKeDEX".
|
|
ld a, [hJoypadState]
|
|
bit BIT_SELECT, a
|
|
jr z, .asm_286c8
|
|
ld bc, $6d03
|
|
ld a, [wNumPokemonSeen + 1]
|
|
call LoadSeenOwnDigitOAM
|
|
ld a, [wNumPokemonSeen]
|
|
swap a
|
|
call LoadSeenOwnDigitOAM
|
|
ld a, [wNumPokemonSeen]
|
|
call LoadSeenOwnDigitOAM
|
|
ld bc, $8202
|
|
ld a, $76
|
|
call LoadOAMData ; draws the "/" between the seen/owned numbers
|
|
ld bc, $8703
|
|
ld a, [wNumPokemonOwned + 1]
|
|
call LoadSeenOwnDigitOAM
|
|
ld a, [wNumPokemonOwned]
|
|
swap a
|
|
call LoadSeenOwnDigitOAM
|
|
ld a, [wNumPokemonOwned]
|
|
call LoadSeenOwnDigitOAM
|
|
ret
|
|
|
|
.asm_286c8
|
|
ld bc, $6800
|
|
ld a, $6a
|
|
call LoadOAMData
|
|
ret
|
|
|
|
LoadSeenOwnDigitOAM: ; 0x286d1
|
|
and $f
|
|
add $6c
|
|
call LoadOAMData
|
|
ld a, b
|
|
add $7 ; adds 7 pixels to the next digit's x position on screen
|
|
ld b, a
|
|
ret
|
|
|
|
Func_286dd: ; 0x286dd
|
|
pop hl
|
|
ld a, [wd862]
|
|
and a
|
|
jr nz, .asm_286ff
|
|
push bc
|
|
push hl
|
|
ld a, [wd863]
|
|
ld e, a
|
|
ld a, [wd864]
|
|
ld d, a
|
|
ld hl, wc010
|
|
xor a
|
|
ld bc, $00a0
|
|
call LoadOrCopyVRAMData
|
|
ld a, $1
|
|
ld [wd862], a
|
|
pop hl
|
|
pop bc
|
|
.asm_286ff
|
|
ld a, [wd95d]
|
|
and a
|
|
ret z
|
|
ld a, [wd95c]
|
|
and a
|
|
jr nz, .asm_2870d
|
|
ld [wd95d], a
|
|
.asm_2870d
|
|
ld a, c
|
|
and a
|
|
jr nz, .asm_28719
|
|
ld hl, hNextFrameHBlankSCX
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
ret
|
|
|
|
.asm_28719
|
|
ld hl, hNextFrameHBlankSCX
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
ret
|
|
|
|
Func_28721: ; 0x28721
|
|
pop hl
|
|
ld a, [wd95d]
|
|
and a
|
|
ret z
|
|
ld a, c
|
|
and a
|
|
jr nz, .asm_28747
|
|
ld a, [hl]
|
|
push af
|
|
sla a
|
|
and $1e
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BGMapLocations_287c7
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop af
|
|
call Func_28aaa
|
|
ld hl, hNextFrameHBlankSCX
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
ret
|
|
|
|
.asm_28747
|
|
ld a, [hl]
|
|
add $5
|
|
push af
|
|
sla a
|
|
and $1e
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, BGMapLocations_287c7
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop af
|
|
call Func_28aaa
|
|
ld hl, hNextFrameHBlankSCX
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
ret
|
|
|
|
Func_28765: ; 0x28765
|
|
pop hl
|
|
ld a, [wd95d]
|
|
and a
|
|
ret z
|
|
ld a, c
|
|
and a
|
|
jr nz, .asm_28791
|
|
push hl
|
|
ld a, [hl]
|
|
sla a
|
|
and $e
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileLocations_287b7
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld hl, hNextFrameHBlankSCX
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
dec [hl]
|
|
pop hl
|
|
xor a
|
|
ld [wd862], a
|
|
ld a, [hl]
|
|
call Func_28993
|
|
ret
|
|
|
|
.asm_28791
|
|
push hl
|
|
ld a, [hl]
|
|
add $5
|
|
sla a
|
|
and $e
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, TileLocations_287b7
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld hl, hNextFrameHBlankSCX
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
inc [hl]
|
|
pop hl
|
|
xor a
|
|
ld [wd862], a
|
|
ld a, [hl]
|
|
add $5
|
|
call Func_28993
|
|
ret
|
|
|
|
TileLocations_287b7:
|
|
dw vTilesOB tile $0
|
|
dw vTilesOB tile $A
|
|
dw vTilesOB tile $14
|
|
dw vTilesOB tile $1E
|
|
dw vTilesOB tile $28
|
|
dw vTilesOB tile $32
|
|
dw vTilesOB tile $3C
|
|
dw vTilesOB tile $46
|
|
|
|
BGMapLocations_287c7:
|
|
dw vBGWin + $7
|
|
dw vBGWin + $47
|
|
dw vBGWin + $87
|
|
dw vBGWin + $C7
|
|
dw vBGWin + $107
|
|
dw vBGWin + $147
|
|
dw vBGWin + $187
|
|
dw vBGWin + $1C7
|
|
dw vBGWin + $207
|
|
dw vBGWin + $247
|
|
dw vBGWin + $287
|
|
dw vBGWin + $2C7
|
|
dw vBGWin + $307
|
|
dw vBGWin + $347
|
|
dw vBGWin + $387
|
|
dw vBGWin + $3C7
|
|
|
|
Func_287e7: ; 0x287e7
|
|
ld a, [wd960]
|
|
and a
|
|
ret z
|
|
ld a, [wd95f]
|
|
and a
|
|
ret nz
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MonAnimatedSpriteTypes
|
|
add hl, bc
|
|
ld a, Bank(MonAnimatedSpriteTypes)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
ret nz
|
|
ld [wd5bc], a
|
|
call Func_28815
|
|
ld a, [wd5bd]
|
|
add $a5
|
|
ld bc, $2030
|
|
call LoadOAMData
|
|
ret
|
|
|
|
Func_28815: ; 0x28815
|
|
ld a, [wd5be]
|
|
dec a
|
|
ld [wd5be], a
|
|
ret nz
|
|
ld a, [wBallHitWildMon]
|
|
inc a
|
|
and $7
|
|
ld [wBallHitWildMon], a
|
|
jr nz, .asm_28836
|
|
ld a, [wd5c3]
|
|
ld [wd5be], a
|
|
xor a
|
|
ld [wd5c4], a
|
|
ld c, $2
|
|
jr .asm_28854
|
|
|
|
.asm_28836
|
|
ld a, [wd5bc]
|
|
ld c, a
|
|
ld a, [wd5bd]
|
|
sub c
|
|
cp $1
|
|
ld c, $0
|
|
jr nc, .asm_28846
|
|
ld c, $1
|
|
.asm_28846
|
|
ld b, $0
|
|
ld hl, wd5c1
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd5be], a
|
|
xor a
|
|
ld [wd5c4], a
|
|
.asm_28854
|
|
ld a, [wd5bc]
|
|
add c
|
|
ld [wd5bd], a
|
|
ret
|
|
|
|
Func_2885c: ; 0x2885c
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
bit 1, [hl]
|
|
call nz, Func_287e7
|
|
ld bc, $8888
|
|
ld a, $66
|
|
call LoadOAMData
|
|
ld bc, $6800
|
|
ld a, $6a
|
|
call LoadOAMData
|
|
ret
|
|
|
|
Func_2887c: ; 0x2887c
|
|
ld a, BANK(Data_c5120)
|
|
ld hl, Data_c5120
|
|
deCoord 0, 8, vBGMap
|
|
ld bc, $0100
|
|
call LoadVRAMData
|
|
ld a, $3f
|
|
ld [hLYC], a
|
|
ld a, $47
|
|
ld [hNextLYCSub], a
|
|
ld b, $33
|
|
.asm_28894
|
|
push bc
|
|
ld a, $7a
|
|
sub b
|
|
ld [hNextLYCSub], a
|
|
rst AdvanceFrame
|
|
pop bc
|
|
dec b
|
|
dec b
|
|
dec b
|
|
jr nz, .asm_28894
|
|
ret
|
|
|
|
Func_288a2: ; 0x288a2
|
|
ld b, $33
|
|
.asm_288a4
|
|
push bc
|
|
ld a, $44
|
|
add b
|
|
ld [hNextLYCSub], a
|
|
rst AdvanceFrame
|
|
pop bc
|
|
dec b
|
|
dec b
|
|
dec b
|
|
jr nz, .asm_288a4
|
|
ld a, $3b
|
|
ld [hLYC], a
|
|
ld [hNextLYCSub], a
|
|
ld a, BANK(Data_c5100)
|
|
ld hl, Data_c5100
|
|
deCoord 0, 8, vBGMap
|
|
ld bc, $0020
|
|
call LoadVRAMData
|
|
ret
|
|
|
|
Func_288c6: ; 0x288c6
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
bit 1, [hl]
|
|
ld hl, Unknown_2c000
|
|
jr z, .asm_288f4
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
ld hl, PokedexDescriptionPointers
|
|
add hl, bc
|
|
ld a, BANK(PokedexDescriptionPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld c, a
|
|
ld a, BANK(PokedexDescriptionPointers)
|
|
call ReadByteFromBank
|
|
ld b, a
|
|
ld h, b
|
|
ld l, c
|
|
.asm_288f4
|
|
xor a
|
|
ld [wd860], a
|
|
ld [wd861], a
|
|
ld bc, $906c
|
|
ld de, vTilesSH tile $10
|
|
call Func_28d97
|
|
rl a
|
|
ld [wd956], a
|
|
ld a, l
|
|
ld [wd957], a
|
|
ld a, h
|
|
ld [wd958], a
|
|
ret
|
|
|
|
Func_28912: ; 0x28912
|
|
ld bc, $906c
|
|
ld de, vTilesSH tile $10
|
|
ld a, [wd957]
|
|
ld l, a
|
|
ld a, [wd958]
|
|
ld h, a
|
|
call Func_28d97
|
|
rl a
|
|
ld [wd956], a
|
|
ld a, l
|
|
ld [wd957], a
|
|
ld a, h
|
|
ld [wd958], a
|
|
ret
|
|
|
|
Func_28931: ; 0x28931
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
ld hl, BlankDexName
|
|
jr z, .asm_2895d
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld h, b
|
|
ld l, c
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
ld bc, MonDexNames
|
|
add hl, bc
|
|
.asm_2895d
|
|
ld a, $ff
|
|
ld [wd860], a
|
|
xor a
|
|
ld [wd861], a
|
|
ld bc, $500a
|
|
ld de, vTilesBG tile $50
|
|
call Func_28e09
|
|
ret
|
|
|
|
BlankDexName:
|
|
db " @"
|
|
|
|
Func_28972: ; 0x28972
|
|
ld a, [wPokedexOffset]
|
|
ld c, a
|
|
ld b, $6
|
|
.asm_28978
|
|
push bc
|
|
ld a, c
|
|
sla a
|
|
and $e
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, TileLocations_287b7
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hl]
|
|
ld d, a
|
|
ld a, c
|
|
call Func_28993
|
|
pop bc
|
|
inc c
|
|
dec b
|
|
jr nz, .asm_28978
|
|
ret
|
|
|
|
Func_28993: ; 0x28993
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
ld hl, BlankDexName2
|
|
jr z, .asm_289b7
|
|
ld h, b
|
|
ld l, c
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
ld bc, MonDexNames
|
|
add hl, bc
|
|
.asm_289b7
|
|
xor a
|
|
ld [wd860], a
|
|
ld [wd861], a
|
|
ld bc, $500a ; not a pointer
|
|
call Func_28e09
|
|
pop hl
|
|
ret
|
|
|
|
BlankDexName2:
|
|
db " @"
|
|
|
|
Func_289c8: ; 0x289c8
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
bit 1, [hl]
|
|
ld hl, BlankSpeciesName
|
|
jr z, .pokemonNotOwned
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MonSpecies
|
|
add hl, bc
|
|
ld c, [hl]
|
|
ld h, b
|
|
ld l, c
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc ; value * 11
|
|
sla l
|
|
rl h
|
|
add hl, bc ; value * 23
|
|
ld bc, MonSpeciesNames
|
|
add hl, bc
|
|
.pokemonNotOwned
|
|
ld a, $ff
|
|
ld [wd860], a
|
|
ld a, $4
|
|
ld [wd861], a
|
|
ld bc, $5816
|
|
ld de, vTilesBG tile $5a
|
|
call Func_28e09
|
|
ret
|
|
|
|
BlankSpeciesName:
|
|
dw $4081 ; variable-width font character
|
|
db $00
|
|
|
|
Func_28a15: ; 0x28a15
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld h, b
|
|
ld l, c
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
ld bc, PokedexMonAttributesTexts
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, $0
|
|
ld [wd865], a
|
|
push de
|
|
hlCoord 4, 2, vBGMap
|
|
call Func_28d71
|
|
pop de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
bit 1, [hl]
|
|
jr nz, .asm_28a54
|
|
ld de, BlankPokemonTileData_28a7f
|
|
.asm_28a54
|
|
push de
|
|
hlCoord 8, 6, vBGMap
|
|
call Func_28d71
|
|
pop de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
push de
|
|
hlCoord 14, 6, vBGMap
|
|
call Func_28d71
|
|
pop de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
hlCoord 16, 7, vBGMap
|
|
ld a, [rLCDC]
|
|
bit 7, a
|
|
jr nz, .asm_28a7a
|
|
ld a, [de]
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_28a7a
|
|
ld a, [de]
|
|
call PutTileInVRAM
|
|
ret
|
|
|
|
BlankPokemonTileData_28a7f:
|
|
db $FF, $FF, $72, $FF
|
|
db $00 ; terminator
|
|
|
|
db $FF, $FF, $FF, $FF
|
|
db $00 ; terminator
|
|
|
|
db $83 ; tile id
|
|
|
|
Func_28a8a: ; 0x28a8a
|
|
ld a, [wPokedexOffset]
|
|
ld c, a
|
|
ld b, $6
|
|
.asm_28a90
|
|
push bc
|
|
ld a, c
|
|
sla a
|
|
and $1e
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, BGMapLocations_287c7
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, c
|
|
call Func_28aaa
|
|
pop bc
|
|
inc c
|
|
dec b
|
|
jr nz, .asm_28a90
|
|
ret
|
|
|
|
Func_28aaa: ; 0x28aaa
|
|
push hl
|
|
ld c, a
|
|
ld b, $0
|
|
ld h, b
|
|
ld l, c
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
sla l
|
|
rl h
|
|
add hl, bc
|
|
ld bc, PokedexMonAttributesTexts
|
|
add hl, bc
|
|
ld d, h
|
|
ld e, l
|
|
ld a, $23
|
|
ld [wd865], a
|
|
pop hl
|
|
push hl
|
|
call Func_28d71
|
|
pop hl
|
|
ret
|
|
|
|
Func_28ad1: ; 0x28ad1
|
|
ld a, [wPokedexOffset]
|
|
swap a
|
|
and $f0
|
|
sub $3c
|
|
ld [hNextFrameHBlankSCX], a
|
|
ret
|
|
|
|
Func_28add: ; 0x28add
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wPokedexFlags
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and a
|
|
jp z, LoadUncaughtPokemonBackgroundGfx
|
|
dec a
|
|
jp z, LoadSeenPokemonGfx
|
|
ld a, [wd960]
|
|
and a
|
|
jr z, .asm_28afc
|
|
call Func_28cc2
|
|
jp z, Func_28bf5
|
|
.asm_28afc
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_28b0b
|
|
inc b
|
|
.asm_28b0b
|
|
push bc
|
|
ld hl, MonBillboardPicPointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld c, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld b, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
ld h, b
|
|
ld l, c
|
|
ld de, vTilesBG tile $00
|
|
ld bc, $0180
|
|
call LoadOrCopyVRAMData
|
|
call Func_28cd4
|
|
pop bc
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
push bc
|
|
ld hl, MonBillboardPaletteMapPointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, Bank(MonBillboardPaletteMapPointers)
|
|
call ReadByteFromBank
|
|
hlCoord 1, 3, vBGMap
|
|
call LoadBillboardPaletteMap
|
|
pop bc
|
|
ld hl, MonBillboardPalettePointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, Bank(MonBillboardPalettePointers)
|
|
call ReadByteFromBank
|
|
ld bc, $10b0
|
|
ld hl, rBGPI
|
|
call Func_8e1
|
|
ret
|
|
|
|
LoadUncaughtPokemonBackgroundGfx: ; 0x28b76
|
|
ld a, BANK(UncaughtPokemonBackgroundPic)
|
|
ld hl, UncaughtPokemonBackgroundPic
|
|
ld de, vTilesBG tile $00
|
|
ld bc, $0180
|
|
call LoadOrCopyVRAMData
|
|
call Func_28cd4
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld a, BANK(UncaughtPokemonPaletteMap)
|
|
ld de, UncaughtPokemonPaletteMap
|
|
hlCoord 1, 3, vBGMap
|
|
call LoadBillboardPaletteMap
|
|
ret
|
|
|
|
UncaughtPokemonPaletteMap:
|
|
db $05, $05, $05, $05, $05, $05
|
|
db $05, $05, $05, $05, $05, $05
|
|
db $05, $05, $05, $05, $05, $05
|
|
db $05, $05, $05, $05, $05, $05
|
|
|
|
LoadSeenPokemonGfx: ; 0x28baf
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_28bbe
|
|
inc b
|
|
.asm_28bbe
|
|
ld hl, MonBillboardPicPointers
|
|
add hl, bc
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld c, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld b, a
|
|
ld a, Bank(MonBillboardPicPointers)
|
|
call ReadByteFromBank
|
|
ld hl, $0180
|
|
add hl, bc
|
|
ld de, vTilesBG tile $00
|
|
ld bc, $0180
|
|
call LoadOrCopyVRAMData
|
|
call Func_28cd4
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld a, BANK(UncaughtPokemonPaletteMap)
|
|
ld de, UncaughtPokemonPaletteMap
|
|
hlCoord 1, 3, vBGMap
|
|
call LoadBillboardPaletteMap
|
|
ret
|
|
|
|
Func_28bf5: ; 0x28bf5
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_28c04
|
|
inc b
|
|
.asm_28c04
|
|
push bc
|
|
ld a, $1
|
|
ld [rVBK], a
|
|
ld hl, MonAnimatedPicPointers
|
|
add hl, bc
|
|
ld a, Bank(MonAnimatedPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld c, a
|
|
ld a, Bank(MonAnimatedPicPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld b, a
|
|
ld a, Bank(MonAnimatedPicPointers)
|
|
call ReadByteFromBank
|
|
ld h, b
|
|
ld l, c
|
|
ld de, vTilesOB
|
|
ld bc, $0300
|
|
call LoadOrCopyVRAMData
|
|
xor a
|
|
ld [rVBK], a
|
|
pop bc
|
|
push bc
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, EvolutionLineIds
|
|
add hl, bc
|
|
ld a, BANK(EvolutionLineIds)
|
|
call ReadByteFromBank
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add c
|
|
ld c, a
|
|
jr nc, .asm_28c4b
|
|
inc b
|
|
.asm_28c4b
|
|
ld hl, Data_13685
|
|
add hl, bc
|
|
ld a, Bank(Data_13685)
|
|
call ReadByteFromBank
|
|
ld [wd5c1], a
|
|
ld [wd5be], a
|
|
inc hl
|
|
ld a, Bank(Data_13685)
|
|
call ReadByteFromBank
|
|
ld [wd5c2], a
|
|
inc hl
|
|
ld a, Bank(Data_13685)
|
|
call ReadByteFromBank
|
|
ld [wd5c3], a
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MonAnimatedSpriteTypes
|
|
add hl, bc
|
|
ld a, Bank(MonAnimatedSpriteTypes)
|
|
call ReadByteFromBank
|
|
ld [wd5bc], a
|
|
ld [wd5bd], a
|
|
call Func_28cf8
|
|
pop bc
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld hl, MonAnimatedPalettePointers
|
|
add hl, bc
|
|
ld a, Bank(MonAnimatedPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld e, a
|
|
ld a, Bank(MonAnimatedPalettePointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
ld d, a
|
|
ld a, Bank(MonAnimatedPalettePointers)
|
|
call ReadByteFromBank
|
|
push af
|
|
push de
|
|
ld bc, $10b0
|
|
ld hl, rBGPI
|
|
call Func_8e1
|
|
pop de
|
|
pop af
|
|
push af
|
|
ld bc, $08d8
|
|
ld hl, rOBPI
|
|
call Func_8e1
|
|
pop af
|
|
ld bc, $08e8
|
|
ld hl, rOBPI
|
|
call Func_8e1
|
|
ret
|
|
|
|
Func_28cc2: ; 0x28cc2
|
|
ld a, [wCurPokedexIndex]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MonAnimatedSpriteTypes
|
|
add hl, bc
|
|
ld a, Bank(MonAnimatedSpriteTypes)
|
|
call ReadByteFromBank
|
|
bit 7, a
|
|
ret
|
|
|
|
Func_28cd4: ; 0x28cd4
|
|
xor a
|
|
ld hl, wd961
|
|
cp [hl]
|
|
ret z
|
|
ld [hl], a
|
|
ld de, .Data_28ce0
|
|
jr asm_28d1d
|
|
|
|
.Data_28ce0: ; 0x28ce0
|
|
db $0
|
|
db $1
|
|
db $2
|
|
db $3
|
|
db $4
|
|
db $5
|
|
db $6
|
|
db $7
|
|
db $8
|
|
db $9
|
|
db $a
|
|
db $b
|
|
db $c
|
|
db $d
|
|
db $e
|
|
db $f
|
|
db $10
|
|
db $11
|
|
db $12
|
|
db $13
|
|
db $14
|
|
db $15
|
|
db $16
|
|
db $17
|
|
|
|
Func_28cf8: ; 0x28cf8
|
|
ld a, $1
|
|
ld hl, wd961
|
|
cp [hl]
|
|
ret z
|
|
ld [hl], a
|
|
ld de, .data_28d05
|
|
jr asm_28d1d
|
|
|
|
.data_28d05
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
db $fe
|
|
|
|
asm_28d1d
|
|
hlCoord 1, 3, vBGMap
|
|
ld b, $4
|
|
.asm_28d22
|
|
ld c, $6
|
|
.asm_28d24
|
|
ld a, [de]
|
|
call PutTileInVRAM
|
|
inc de
|
|
inc hl
|
|
dec c
|
|
jr nz, .asm_28d24
|
|
ld a, l
|
|
add $1a
|
|
ld l, a
|
|
dec b
|
|
jr nz, .asm_28d22
|
|
ret
|
|
|
|
CountNumSeenOwnedMons: ; 0x28d35
|
|
ld hl, wPokedexFlags
|
|
ld de, $0000 ; keep a running count: d = owned, e = seen
|
|
ld b, NUM_POKEMON
|
|
.checkSeen
|
|
bit 0, [hl] ; is mon seen?
|
|
jr z, .checkOwned
|
|
inc e
|
|
.checkOwned
|
|
bit 1, [hl] ; is mon owned?
|
|
jr z, .nextMon
|
|
inc d
|
|
.nextMon
|
|
inc hl
|
|
dec b
|
|
jr nz, .checkSeen
|
|
push de
|
|
ld a, d
|
|
call ConvertHexByteToDecWord
|
|
ld a, e
|
|
ld [wNumPokemonSeen], a
|
|
ld a, d
|
|
ld [wNumPokemonSeen + 1], a
|
|
pop de
|
|
ld a, e
|
|
call ConvertHexByteToDecWord
|
|
ld a, e
|
|
ld [wNumPokemonOwned], a
|
|
ld a, d
|
|
ld [wNumPokemonOwned + 1], a
|
|
ret
|
|
|
|
ClearPokedexData: ; 0x28d66
|
|
ld hl, wPokedexFlags
|
|
xor a
|
|
ld b, NUM_POKEMON
|
|
.asm_28d6c
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_28d6c
|
|
ret
|
|
|
|
Func_28d71: ; 0x28d71
|
|
ld a, [wd865]
|
|
ld c, a
|
|
ld a, [de]
|
|
inc de
|
|
and a
|
|
ret z
|
|
cp $20
|
|
jr nz, .asm_28d81
|
|
ld a, $ff
|
|
jr .asm_28d82
|
|
|
|
.asm_28d81
|
|
add c
|
|
.asm_28d82
|
|
call Func_28d88
|
|
inc hl
|
|
jr Func_28d71
|
|
|
|
Func_28d88: ; 0x28d88
|
|
push af
|
|
ld a, [rLCDC]
|
|
bit 7, a
|
|
jr nz, .asm_28d92
|
|
pop af
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_28d92
|
|
pop af
|
|
call PutTileInVRAM
|
|
ret
|
|
|
|
Func_28d97: ; 0x28d97
|
|
push de
|
|
ld a, b
|
|
ld [$ff8c], a
|
|
ld [$ff8d], a
|
|
ld a, c
|
|
ld [$ff8f], a
|
|
xor a
|
|
ld [$ff8e], a
|
|
ld [$ff90], a
|
|
ld [$ff91], a
|
|
call Func_28e73
|
|
.asm_28daa
|
|
call Func_2957c
|
|
jr nc, .asm_28dcb
|
|
push hl
|
|
ld [$ff92], a
|
|
cp $ff
|
|
jr nz, .asm_28dbb
|
|
call Func_208c
|
|
jr .asm_28dc8
|
|
|
|
.asm_28dbb
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, CharacterWidths
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [$ff93], a
|
|
call LoadDexVWFCharacter
|
|
.asm_28dc8
|
|
pop hl
|
|
jr nc, .asm_28daa
|
|
.asm_28dcb
|
|
pop de
|
|
push af
|
|
ld a, e
|
|
ld [wd863], a
|
|
ld a, d
|
|
ld [wd864], a
|
|
ld a, [wd862]
|
|
and a
|
|
jr nz, .asm_28ddd
|
|
pop af
|
|
ret
|
|
|
|
.asm_28ddd
|
|
push hl
|
|
ld a, [wd861]
|
|
ld c, a
|
|
ld b, $0
|
|
bit 7, c
|
|
jr z, .asm_28de9
|
|
dec b
|
|
.asm_28de9
|
|
ld hl, wc010
|
|
add hl, bc
|
|
ld a, [$ff8f]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
xor a
|
|
call LoadOrCopyVRAMData
|
|
pop hl
|
|
pop af
|
|
ret
|
|
|
|
Func_28e09: ; 0x28e09
|
|
push de
|
|
ld a, b
|
|
ld [$ff8c], a
|
|
ld [$ff8d], a
|
|
ld a, c
|
|
ld [$ff8f], a
|
|
xor a
|
|
ld [$ff8e], a
|
|
ld [$ff90], a
|
|
ld [$ff91], a
|
|
call Func_28e73
|
|
.asm_28e1c
|
|
call Func_295e1
|
|
jr nc, .asm_28e35
|
|
push hl
|
|
ld [$ff92], a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, CharacterWidths
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [$ff93], a
|
|
call LoadDexVWFCharacter
|
|
pop hl
|
|
jr nc, .asm_28e1c
|
|
nop
|
|
.asm_28e35
|
|
pop de
|
|
push af
|
|
ld a, e
|
|
ld [wd863], a
|
|
ld a, d
|
|
ld [wd864], a
|
|
ld a, [wd862]
|
|
and a
|
|
jr nz, .asm_28e47
|
|
pop af
|
|
ret
|
|
|
|
.asm_28e47
|
|
push hl
|
|
ld a, [wd861]
|
|
ld c, a
|
|
ld b, $0
|
|
bit 7, c
|
|
jr z, .asm_28e53
|
|
dec b
|
|
.asm_28e53
|
|
ld hl, wc010
|
|
add hl, bc
|
|
ld a, [$ff8f]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
xor a
|
|
call LoadOrCopyVRAMData
|
|
pop hl
|
|
pop af
|
|
ret
|
|
|
|
Func_28e73: ; 0x28e73
|
|
push hl
|
|
ld a, [$ff8f]
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
sla c
|
|
rl b
|
|
ld hl, Func_29566
|
|
ld a, l
|
|
sub c
|
|
ld l, a
|
|
ld a, h
|
|
sbc b
|
|
ld h, a
|
|
push hl
|
|
ld hl, wc000
|
|
ld a, [wd860]
|
|
ret
|
|
|
|
Func_28e9a:
|
|
REPT 20 * 87
|
|
ld [hli], a
|
|
ENDR
|
|
Func_29566:
|
|
REPT 20
|
|
ld [hli], a
|
|
ENDR
|
|
pop hl
|
|
ret
|
|
|
|
Func_2957c: ; 0x2957c
|
|
ld a, BANK(PokedexDescriptionPointers)
|
|
call ReadByteFromBank
|
|
inc hl
|
|
and a
|
|
ret z
|
|
cp $d ; carriage return
|
|
jr nz, .asm_2958c
|
|
ld a, $ff
|
|
scf
|
|
ret
|
|
|
|
.asm_2958c
|
|
cp "0"
|
|
jr c, .asm_29594
|
|
cp "9" + 1
|
|
jr c, .asm_295be
|
|
.asm_29594
|
|
cp "A"
|
|
jr c, .asm_2959c
|
|
cp "Z" + 1
|
|
jr c, .asm_295c2
|
|
.asm_2959c
|
|
cp "a"
|
|
jr c, .asm_295a4
|
|
cp "z" + 1
|
|
jr c, .asm_295c6
|
|
.asm_295a4
|
|
cp " "
|
|
jr z, .asm_295ca
|
|
cp ","
|
|
jr z, .asm_295cd
|
|
cp "."
|
|
jr z, .asm_295d1
|
|
cp "`"
|
|
jr z, .asm_295d5
|
|
cp "-"
|
|
jr z, .asm_295d9
|
|
cp "é"
|
|
jr z, .asm_295dd
|
|
and a
|
|
ret
|
|
|
|
.asm_295be
|
|
sub $88
|
|
scf
|
|
ret
|
|
|
|
.asm_295c2
|
|
sub $8e
|
|
scf
|
|
ret
|
|
|
|
.asm_295c6
|
|
sub $94
|
|
scf
|
|
ret
|
|
|
|
.asm_295ca
|
|
xor a
|
|
scf
|
|
ret
|
|
|
|
.asm_295cd
|
|
ld a, $f3
|
|
scf
|
|
ret
|
|
|
|
.asm_295d1
|
|
ld a, $f4
|
|
scf
|
|
ret
|
|
|
|
.asm_295d5
|
|
ld a, $fa
|
|
scf
|
|
ret
|
|
|
|
.asm_295d9
|
|
ld a, $b2
|
|
scf
|
|
ret
|
|
|
|
.asm_295dd
|
|
ld a, $f9
|
|
scf
|
|
ret
|
|
|
|
Func_295e1: ; 0x295e1
|
|
ld a, [hli]
|
|
and a
|
|
ret z
|
|
cp $80
|
|
jr nc, .asm_295ed
|
|
ld c, a
|
|
ld b, $0
|
|
jr .asm_295f0
|
|
|
|
.asm_295ed
|
|
ld b, a
|
|
ld a, [hli]
|
|
ld c, a
|
|
.asm_295f0
|
|
ld a, b
|
|
and a
|
|
jr nz, .asm_295f9
|
|
ld a, c
|
|
sub $20
|
|
scf
|
|
ret
|
|
|
|
.asm_295f9
|
|
push hl
|
|
call Func_29605
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc
|
|
ld a, [hl]
|
|
pop hl
|
|
scf
|
|
ret
|
|
|
|
Func_29605: ; 0x29605
|
|
ld a, b
|
|
cp $81
|
|
jr nz, .asm_29611
|
|
ld hl, Data_2962f
|
|
ld a, c
|
|
sub $40
|
|
ret
|
|
|
|
.asm_29611
|
|
cp $83
|
|
jr nz, .asm_2961c
|
|
ld hl, Data_2973b
|
|
ld a, c
|
|
sub $40
|
|
ret
|
|
|
|
.asm_2961c
|
|
ld a, c
|
|
cp $9f
|
|
jr nc, .asm_29628
|
|
ld hl, Data_2969c
|
|
ld a, c
|
|
sub $4f
|
|
ret
|
|
|
|
.asm_29628
|
|
ld hl, Data_296e8
|
|
ld a, c
|
|
sub $9f
|
|
ret
|
|
|
|
Data_2962f:
|
|
dr $2962f, $2969c
|
|
|
|
Data_2969c:
|
|
dr $2969c, $296e8
|
|
|
|
Data_296e8:
|
|
dr $296e8, $2973b
|
|
|
|
Data_2973b:
|
|
dr $2973b, $29792
|
|
|
|
CharacterWidths: ; 0x29792
|
|
; The Pokedex shows variable-width font. This list specifies the width of every letter (tile?)
|
|
db $05
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $05
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $06
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $08 ; "A"
|
|
db $07 ; "B"
|
|
db $07 ; "C"
|
|
db $07 ; "D"
|
|
db $07 ; "E"
|
|
db $07 ; "F"
|
|
db $07 ; "G"
|
|
db $07 ; "H"
|
|
db $05 ; "I"
|
|
db $08 ; "J"
|
|
db $07 ; "K"
|
|
db $07 ; "L"
|
|
db $08 ; "M"
|
|
db $07 ; "N"
|
|
db $07 ; "O"
|
|
db $07 ; "P"
|
|
db $08 ; "Q"
|
|
db $07 ; "R"
|
|
db $07 ; "S"
|
|
db $08 ; "T"
|
|
db $07 ; "U"
|
|
db $08 ; "V"
|
|
db $08 ; "W"
|
|
db $08 ; "X"
|
|
db $08 ; "Y"
|
|
db $08 ; "Z"
|
|
db $07
|
|
db $08
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $08
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $05
|
|
db $08
|
|
db $07
|
|
db $07
|
|
db $08
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $08
|
|
db $07
|
|
db $07
|
|
db $08
|
|
db $07
|
|
db $08
|
|
db $08
|
|
db $08
|
|
db $08
|
|
db $08
|
|
db $07 ; "a"
|
|
db $07 ; "b"
|
|
db $07 ; "c"
|
|
db $07 ; "d"
|
|
db $07 ; "e"
|
|
db $07 ; "f"
|
|
db $07 ; "g"
|
|
db $07 ; "h"
|
|
db $03 ; "i"
|
|
db $07 ; "j"
|
|
db $07 ; "k"
|
|
db $03 ; "l"
|
|
db $08 ; "m"
|
|
db $07 ; "n"
|
|
db $07 ; "o"
|
|
db $07 ; "p"
|
|
db $07 ; "q"
|
|
db $07 ; "r"
|
|
db $07 ; "s"
|
|
db $07 ; "t"
|
|
db $07 ; "u"
|
|
db $07 ; "v"
|
|
db $08 ; "w"
|
|
db $07 ; "x"
|
|
db $07 ; "y"
|
|
db $07 ; "z"
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $03
|
|
db $07
|
|
db $05
|
|
db $05
|
|
db $05
|
|
db $05
|
|
db $05
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $05
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
db $07
|
|
|
|
INCLUDE "text/pokedex_mon_names.asm"
|
|
INCLUDE "data/mon_species.asm"
|
|
INCLUDE "text/pokedex_species.asm"
|
|
INCLUDE "text/pokedex_mon_attributes.asm"
|
|
INCLUDE "data/dex_scroll_offsets.asm"
|
|
|
|
SECTION "bankb", ROMX, BANK[$b]
|
|
|
|
Unknown_2c000: ; 0x2c000
|
|
dex_text " "
|
|
dex_end
|
|
|
|
INCLUDE "text/pokedex_descriptions.asm"
|
|
|
|
SECTION "bankc", ROMX, BANK[$c]
|
|
|
|
InitRedField: ; 0x30000
|
|
ld a, [wd7c1]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld hl, wScore + $5
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hld], a
|
|
ld [hl], a
|
|
ld [wNumPartyMons], a
|
|
ld [wd49b], a
|
|
ld [wd4c9], a
|
|
ld [wBallType], a
|
|
ld [wd4c8], a
|
|
ld hl, wd624
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wd7ac], a
|
|
ld [wd7be], a
|
|
ld [wCurrentMap], a ; PALLET_TOWN
|
|
ld a, $1
|
|
ld [wd49d], a
|
|
ld [wd482], a
|
|
ld a, $2
|
|
ld [wRightAlleyCount], a
|
|
ld a, $3
|
|
ld [wd49e], a
|
|
ld [wd610], a
|
|
ld [wd498], a
|
|
ld [wd499], a
|
|
ld a, $4
|
|
ld [wStageCollisionState], a
|
|
ld [wd7ad], a
|
|
ld a, $80
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, $82
|
|
ld [wIndicatorStates + 1], a
|
|
callba Start20SecondSaverTimer
|
|
callba Func_16f95
|
|
ld a, $f
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
StartBallRedField: ; 0x3007d
|
|
ld a, [wd496]
|
|
and a
|
|
jp nz, StartBallAfterBonusStageRedField
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $a7
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $98
|
|
ld [wBallYPos + 1], a
|
|
xor a
|
|
ld [wd549], a
|
|
ld [wd580], a
|
|
ld a, [wd7ad]
|
|
bit 7, a
|
|
jr z, .asm_300ae
|
|
ld a, [wStageCollisionState]
|
|
res 0, a
|
|
ld [wd7ad], a
|
|
.asm_300ae
|
|
ld a, [wStageCollisionState]
|
|
and $1
|
|
ld [wStageCollisionState], a
|
|
ld a, [wd4c9]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd4c9], a
|
|
xor a
|
|
ld [wd50b], a
|
|
ld [wd50c], a
|
|
ld [wd51d], a
|
|
ld [wd517], a
|
|
ld [wd51e], a
|
|
ld hl, wd50f
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wLeftMapMoveCounter], a
|
|
ld [wRightMapMoveCounter], a
|
|
ld hl, wd5f9
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [wBallType], a
|
|
ld [wd611], a
|
|
ld [wd612], a
|
|
ld [wd628], a
|
|
ld [wd629], a
|
|
ld [wd62a], a
|
|
ld [wd62b], a
|
|
ld [wd62c], a
|
|
ld [wd62d], a
|
|
ld [wd62e], a
|
|
ld [wd613], a
|
|
inc a
|
|
ld [wd482], a
|
|
ld [wd4ef], a
|
|
ld [wd4f1], a
|
|
ld a, $3
|
|
ld [wd610], a
|
|
callba Func_16f95
|
|
ld a, $f
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
StartBallAfterBonusStageRedField: ; 0x30128
|
|
ld a, $0
|
|
ld [wBallXPos], a
|
|
ld a, $50
|
|
ld [wBallXPos + 1], a
|
|
ld a, $0
|
|
ld [wBallYPos], a
|
|
ld a, $16
|
|
ld [wBallYPos + 1], a
|
|
xor a
|
|
ld [wBallYVelocity], a
|
|
ld [wBallYVelocity + 1], a
|
|
ld [wBallXVelocity], a
|
|
ld [wBallXVelocity + 1], a
|
|
ld [wd496], a
|
|
ld [wSCX], a
|
|
ld [wd7be], a
|
|
ld a, [wBallTypeBackup]
|
|
ld [wBallType], a
|
|
ld a, $f
|
|
call SetSongBank
|
|
ld de, $0001
|
|
call PlaySong
|
|
ret
|
|
|
|
Func_30164: ; 0x30164
|
|
ld a, [wd49b]
|
|
inc a
|
|
cp $b
|
|
jr z, .asm_30175
|
|
ld [wd49b], a
|
|
ld a, $1
|
|
ld [wd4ca], a
|
|
ret
|
|
|
|
.asm_30175
|
|
ld bc, TenMillionPoints
|
|
callba AddBigBCD6FromQueue
|
|
ld a, $2
|
|
ld [wd4ca], a
|
|
ret
|
|
|
|
Func_30188: ; 0x30188
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
ld a, [wd4ca]
|
|
and a
|
|
ret z
|
|
cp $1
|
|
jr nz, .asm_301a7
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, ExtraBallText
|
|
call LoadTextHeader
|
|
jr .asm_301c9
|
|
|
|
.asm_301a7
|
|
ld bc, $1000
|
|
ld de, $0000
|
|
push bc
|
|
push de
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5d4
|
|
ld de, DigitsText1to9
|
|
call Func_32cc
|
|
pop de
|
|
pop bc
|
|
ld hl, wd5cc
|
|
ld de, ExtraBallSpecialBonusText
|
|
call LoadTextHeader
|
|
.asm_301c9
|
|
xor a
|
|
ld [wd4ca], a
|
|
ret
|
|
|
|
Func_301ce: ; 0x301ce
|
|
ld a, [wCurrentStage]
|
|
call CallInFollowingTable
|
|
PointerTable_301d4: ; 0x301d4
|
|
; STAGE_RED_FIELD_TOP
|
|
padded_dab Func_314ae
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
padded_dab Func_314ae
|
|
padded_dab Func_314ae
|
|
padded_dab Func_314ae
|
|
; STAGE_BLUE_FIELD_TOP
|
|
padded_dab Func_3161b
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
padded_dab Func_3161b
|
|
|
|
StartMapMoveMode: ; 0x301ec
|
|
ld a, [wInSpecialMode]
|
|
and a
|
|
ret nz
|
|
ld a, $1
|
|
ld [wInSpecialMode], a
|
|
ld a, $2
|
|
ld [wSpecialMode], a
|
|
xor a
|
|
ld [wd54d], a
|
|
ld bc, $0030 ; 30 seconds
|
|
callba StartTimer
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_3021b
|
|
ld a, [wd55a]
|
|
add $12
|
|
call Func_30256
|
|
.asm_3021b
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_3021f: ; 0x3021f
|
|
; STAGE_RED_FIELD_TOP
|
|
dw Func_311b4
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw Func_311b4
|
|
dw Func_31324
|
|
dw Func_31324
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_31326
|
|
; STAGE_BLUE_FIELD_BOTTOM
|
|
dw Func_31326
|
|
|
|
Func_3022b: ; 0x3022b
|
|
xor a
|
|
ld [wd5ca], a
|
|
call FillBottomMessageBufferWithBlackTile
|
|
xor a
|
|
ld [wInSpecialMode], a
|
|
ld [wSpecialMode], a
|
|
callba Func_86d2
|
|
ld a, [wCurrentStage]
|
|
rst JumpTable ; calls JumpToFuncInTable
|
|
CallTable_30247: ; 0x30247
|
|
; STAGE_RED_FIELD_TOP
|
|
dw Func_31234
|
|
; STAGE_RED_FIELD_BOTTOM
|
|
dw Func_31234
|
|
dw Func_31325
|
|
dw Func_31325
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_313c3
|
|
; STAGE_BLUE_FIELD_TOP
|
|
dw Func_313c3
|
|
|
|
Func_30253: ; 0x30253
|
|
ld a, [wCurrentMap]
|
|
; fall through
|
|
Func_30256: ; 0x30256
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
push bc
|
|
ld hl, TileDataPointers_3027a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(TileDataPointers_3027a)
|
|
call Func_10aa
|
|
pop bc
|
|
ld a, [hGameBoyColorFlag]
|
|
and a
|
|
ret z
|
|
ld hl, PaletteDataPointers_30ceb
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, Bank(PaletteDataPointers_30ceb)
|
|
call Func_10aa
|
|
ret
|
|
|
|
TileDataPointers_3027a: ; 0x3027a
|
|
dw TileData_302b0
|
|
dw TileData_302c1
|
|
dw TileData_302d2
|
|
dw TileData_302e3
|
|
dw TileData_302f4
|
|
dw TileData_30305
|
|
dw TileData_30316
|
|
dw TileData_30327
|
|
dw TileData_30338
|
|
dw TileData_30349
|
|
dw TileData_3035a
|
|
dw TileData_3036b
|
|
dw TileData_3037c
|
|
dw TileData_3038d
|
|
dw TileData_3039e
|
|
dw TileData_303af
|
|
dw TileData_303c0
|
|
dw TileData_303d1
|
|
dw TileData_303e2
|
|
dw TileData_303f3
|
|
dw TileData_30404
|
|
dw TileData_30415
|
|
dw TileData_30426
|
|
dw TileData_30437
|
|
dw TileData_30448
|
|
dw TileData_30459
|
|
dw TileData_3046a
|
|
|
|
TileData_302b0: ; 0x302b0
|
|
db $08
|
|
dw TileData_3047b
|
|
dw TileData_30485
|
|
dw TileData_3048f
|
|
dw TileData_30499
|
|
dw TileData_304a3
|
|
dw TileData_304ad
|
|
dw TileData_304b7
|
|
dw TileData_304c1
|
|
|
|
TileData_302c1: ; 0x302c1
|
|
db $08
|
|
dw TileData_304cb
|
|
dw TileData_304d5
|
|
dw TileData_304df
|
|
dw TileData_304e9
|
|
dw TileData_304f3
|
|
dw TileData_304fd
|
|
dw TileData_30507
|
|
dw TileData_30511
|
|
|
|
TileData_302d2: ; 0x302d2
|
|
db $08
|
|
dw TileData_3051b
|
|
dw TileData_30525
|
|
dw TileData_3052f
|
|
dw TileData_30539
|
|
dw TileData_30543
|
|
dw TileData_3054d
|
|
dw TileData_30557
|
|
dw TileData_30561
|
|
|
|
TileData_302e3: ; 0x302e3
|
|
db $08
|
|
dw TileData_3056b
|
|
dw TileData_30575
|
|
dw TileData_3057f
|
|
dw TileData_30589
|
|
dw TileData_30593
|
|
dw TileData_3059d
|
|
dw TileData_305a7
|
|
dw TileData_305b1
|
|
|
|
TileData_302f4: ; 0x302f4
|
|
db $08
|
|
dw TileData_305bb
|
|
dw TileData_305c5
|
|
dw TileData_305cf
|
|
dw TileData_305d9
|
|
dw TileData_305e3
|
|
dw TileData_305ed
|
|
dw TileData_305f7
|
|
dw TileData_30601
|
|
|
|
TileData_30305: ; 0x30305
|
|
db $08
|
|
dw TileData_3060b
|
|
dw TileData_30615
|
|
dw TileData_3061f
|
|
dw TileData_30629
|
|
dw TileData_30633
|
|
dw TileData_3063d
|
|
dw TileData_30647
|
|
dw TileData_30651
|
|
|
|
TileData_30316: ; 0x30316
|
|
db $08
|
|
dw TileData_3065b
|
|
dw TileData_30665
|
|
dw TileData_3066f
|
|
dw TileData_30679
|
|
dw TileData_30683
|
|
dw TileData_3068d
|
|
dw TileData_30697
|
|
dw TileData_306a1
|
|
|
|
TileData_30327: ; 0x30327
|
|
db $08
|
|
dw TileData_306ab
|
|
dw TileData_306b5
|
|
dw TileData_306bf
|
|
dw TileData_306c9
|
|
dw TileData_306d3
|
|
dw TileData_306dd
|
|
dw TileData_306e7
|
|
dw TileData_306f1
|
|
|
|
TileData_30338: ; 0x30338
|
|
db $08
|
|
dw TileData_306fb
|
|
dw TileData_30705
|
|
dw TileData_3070f
|
|
dw TileData_30719
|
|
dw TileData_30723
|
|
dw TileData_3072d
|
|
dw TileData_30737
|
|
dw TileData_30741
|
|
|
|
TileData_30349: ; 0x30349
|
|
db $08
|
|
dw TileData_3074b
|
|
dw TileData_30755
|
|
dw TileData_3075f
|
|
dw TileData_30769
|
|
dw TileData_30773
|
|
dw TileData_3077d
|
|
dw TileData_30787
|
|
dw TileData_30791
|
|
|
|
TileData_3035a: ; 0x3035a
|
|
db $08
|
|
dw TileData_3079b
|
|
dw TileData_307a5
|
|
dw TileData_307af
|
|
dw TileData_307b9
|
|
dw TileData_307c3
|
|
dw TileData_307cd
|
|
dw TileData_307d7
|
|
dw TileData_307e1
|
|
|
|
TileData_3036b: ; 0x3036b
|
|
db $08
|
|
dw TileData_307eb
|
|
dw TileData_307f5
|
|
dw TileData_307ff
|
|
dw TileData_30809
|
|
dw TileData_30813
|
|
dw TileData_3081d
|
|
dw TileData_30827
|
|
dw TileData_30831
|
|
|
|
TileData_3037c: ; 0x3037c
|
|
db $08
|
|
dw TileData_3083b
|
|
dw TileData_30845
|
|
dw TileData_3084f
|
|
dw TileData_30859
|
|
dw TileData_30863
|
|
dw TileData_3086d
|
|
dw TileData_30877
|
|
dw TileData_30881
|
|
|
|
TileData_3038d: ; 0x3038d
|
|
db $08
|
|
dw TileData_3088b
|
|
dw TileData_30895
|
|
dw TileData_3089f
|
|
dw TileData_308a9
|
|
dw TileData_308b3
|
|
dw TileData_308bd
|
|
dw TileData_308c7
|
|
dw TileData_308d1
|
|
|
|
TileData_3039e: ; 0x3039e
|
|
db $08
|
|
dw TileData_308db
|
|
dw TileData_308e5
|
|
dw TileData_308ef
|
|
dw TileData_308f9
|
|
dw TileData_30903
|
|
dw TileData_3090d
|
|
dw TileData_30917
|
|
dw TileData_30921
|
|
|
|
TileData_303af: ; 0x303af
|
|
db $08
|
|
dw TileData_3092b
|
|
dw TileData_30935
|
|
dw TileData_3093f
|
|
dw TileData_30949
|
|
dw TileData_30953
|
|
dw TileData_3095d
|
|
dw TileData_30967
|
|
dw TileData_30971
|
|
|
|
TileData_303c0: ; 0x303c0
|
|
db $08
|
|
dw TileData_3097b
|
|
dw TileData_30985
|
|
dw TileData_3098f
|
|
dw TileData_30999
|
|
dw TileData_309a3
|
|
dw TileData_309ad
|
|
dw TileData_309b7
|
|
dw TileData_309c1
|
|
|
|
TileData_303d1: ; 0x303d1
|
|
db $08
|
|
dw TileData_309cb
|
|
dw TileData_309d5
|
|
dw TileData_309df
|
|
dw TileData_309e9
|
|
dw TileData_309f3
|
|
dw TileData_309fd
|
|
dw TileData_30a07
|
|
dw TileData_30a11
|
|
|
|
TileData_303e2: ; 0x303e2
|
|
db $08
|
|
dw TileData_30a1b
|
|
dw TileData_30a25
|
|
dw TileData_30a2f
|
|
dw TileData_30a39
|
|
dw TileData_30a43
|
|
dw TileData_30a4d
|
|
dw TileData_30a57
|
|
dw TileData_30a61
|
|
|
|
TileData_303f3: ; 0x303f3
|
|
db $08
|
|
dw TileData_30a6b
|
|
dw TileData_30a75
|
|
dw TileData_30a7f
|
|
dw TileData_30a89
|
|
dw TileData_30a93
|
|
dw TileData_30a9d
|
|
dw TileData_30aa7
|
|
dw TileData_30ab1
|
|
|
|
TileData_30404: ; 0x30404
|
|
db $08
|
|
dw TileData_30abb
|
|
dw TileData_30ac5
|
|
dw TileData_30acf
|
|
dw TileData_30ad9
|
|
dw TileData_30ae3
|
|
dw TileData_30aed
|
|
dw TileData_30af7
|
|
dw TileData_30b01
|
|
|
|
TileData_30415: ; 0x30415
|
|
db $08
|
|
dw TileData_30b0b
|
|
dw TileData_30b15
|
|
dw TileData_30b1f
|
|
dw TileData_30b29
|
|
dw TileData_30b33
|
|
dw TileData_30b3d
|
|
dw TileData_30b47
|
|
dw TileData_30b51
|
|
|
|
TileData_30426: ; 0x30426
|
|
db $08
|
|
dw TileData_30b5b
|
|
dw TileData_30b65
|
|
dw TileData_30b6f
|
|
dw TileData_30b79
|
|
dw TileData_30b83
|
|
dw TileData_30b8d
|
|
dw TileData_30b97
|
|
dw TileData_30ba1
|
|
|
|
TileData_30437: ; 0x30437
|
|
db $08
|
|
dw TileData_30bab
|
|
dw TileData_30bb5
|
|
dw TileData_30bbf
|
|
dw TileData_30bc9
|
|
dw TileData_30bd3
|
|
dw TileData_30bdd
|
|
dw TileData_30be7
|
|
dw TileData_30bf1
|
|
|
|
TileData_30448: ; 0x30448
|
|
db $08
|
|
dw TileData_30bfb
|
|
dw TileData_30c05
|
|
dw TileData_30c0f
|
|
dw TileData_30c19
|
|
dw TileData_30c23
|
|
dw TileData_30c2d
|
|
dw TileData_30c37
|
|
dw TileData_30c41
|
|
|
|
TileData_30459: ; 0x30459
|
|
db $08
|
|
dw TileData_30c4b
|
|
dw TileData_30c55
|
|
dw TileData_30c5f
|
|
dw TileData_30c69
|
|
dw TileData_30c73
|
|
dw TileData_30c7d
|
|
dw TileData_30c87
|
|
dw TileData_30c91
|
|
|
|
TileData_3046a: ; 0x3046a
|
|
db $08
|
|
dw TileData_30c9b
|
|
dw TileData_30ca5
|
|
dw TileData_30caf
|
|
dw TileData_30cb9
|
|
dw TileData_30cc3
|
|
dw TileData_30ccd
|
|
dw TileData_30cd7
|
|
dw TileData_30ce1
|
|
|
|
TileData_3047b: ; 0x3047b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw PalletTownPic
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_30485: ; 0x30485
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw PalletTownPic + $30
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_3048f: ; 0x3048f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw PalletTownPic + $60
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_30499: ; 0x30499
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw PalletTownPic + $90
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_304a3: ; 0x304a3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw PalletTownPic + $C0
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_304ad: ; 0x304ad
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw PalletTownPic + $F0
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_304b7: ; 0x304b7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw PalletTownPic + $120
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_304c1: ; 0x304c1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw PalletTownPic + $150
|
|
db Bank(PalletTownPic)
|
|
db $00
|
|
|
|
TileData_304cb: ; 0x304cb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw ViridianCityPic
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_304d5: ; 0x304d5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw ViridianCityPic + $30
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_304df: ; 0x304df
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw ViridianCityPic + $60
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_304e9: ; 0x304e9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw ViridianCityPic + $90
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_304f3: ; 0x304f3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw ViridianCityPic + $C0
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_304fd: ; 0x304fd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw ViridianCityPic + $F0
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_30507: ; 0x30507
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw ViridianCityPic + $120
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_30511: ; 0x30511
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw ViridianCityPic + $150
|
|
db Bank(ViridianCityPic)
|
|
db $00
|
|
|
|
TileData_3051b: ; 0x3051b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw ViridianForestPic
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_30525: ; 0x30525
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw ViridianForestPic + $30
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_3052f: ; 0x3052f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw ViridianForestPic + $60
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_30539: ; 0x30539
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw ViridianForestPic + $90
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_30543: ; 0x30543
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw ViridianForestPic + $C0
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_3054d: ; 0x3054d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw ViridianForestPic + $F0
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_30557: ; 0x30557
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw ViridianForestPic + $120
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_30561: ; 0x30561
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw ViridianForestPic + $150
|
|
db Bank(ViridianForestPic)
|
|
db $00
|
|
|
|
TileData_3056b: ; 0x3056b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw PewterCityPic
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_30575: ; 0x30575
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw PewterCityPic + $30
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_3057f: ; 0x3057f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw PewterCityPic + $60
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_30589: ; 0x30589
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw PewterCityPic + $90
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_30593: ; 0x30593
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw PewterCityPic + $C0
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_3059d: ; 0x3059d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw PewterCityPic + $F0
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_305a7: ; 0x305a7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw PewterCityPic + $120
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_305b1: ; 0x305b1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw PewterCityPic + $150
|
|
db Bank(PewterCityPic)
|
|
db $00
|
|
|
|
TileData_305bb: ; 0x305bb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw MtMoonPic
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_305c5: ; 0x305c5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw MtMoonPic + $30
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_305cf: ; 0x305cf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw MtMoonPic + $60
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_305d9: ; 0x305d9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw MtMoonPic + $90
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_305e3: ; 0x305e3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw MtMoonPic + $C0
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_305ed: ; 0x305ed
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw MtMoonPic + $F0
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_305f7: ; 0x305f7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw MtMoonPic + $120
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_30601: ; 0x30601
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw MtMoonPic + $150
|
|
db Bank(MtMoonPic)
|
|
db $00
|
|
|
|
TileData_3060b: ; 0x3060b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw CeruleanCityPic
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_30615: ; 0x30615
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw CeruleanCityPic + $30
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_3061f: ; 0x3061f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw CeruleanCityPic + $60
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_30629: ; 0x30629
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw CeruleanCityPic + $90
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_30633: ; 0x30633
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw CeruleanCityPic + $C0
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_3063d: ; 0x3063d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw CeruleanCityPic + $F0
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_30647: ; 0x30647
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw CeruleanCityPic + $120
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_30651: ; 0x30651
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw CeruleanCityPic + $150
|
|
db Bank(CeruleanCityPic)
|
|
db $00
|
|
|
|
TileData_3065b: ; 0x3065b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw VermilionCitySeasidePic
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_30665: ; 0x30665
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw VermilionCitySeasidePic + $30
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_3066f: ; 0x3066f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw VermilionCitySeasidePic + $60
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_30679: ; 0x30679
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw VermilionCitySeasidePic + $90
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_30683: ; 0x30683
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw VermilionCitySeasidePic + $C0
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_3068d: ; 0x3068d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw VermilionCitySeasidePic + $F0
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_30697: ; 0x30697
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw VermilionCitySeasidePic + $120
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_306a1: ; 0x306a1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw VermilionCitySeasidePic + $150
|
|
db Bank(VermilionCitySeasidePic)
|
|
db $00
|
|
|
|
TileData_306ab: ; 0x306ab
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw VermilionCityStreetsPic
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306b5: ; 0x306b5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw VermilionCityStreetsPic + $30
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306bf: ; 0x306bf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw VermilionCityStreetsPic + $60
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306c9: ; 0x306c9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw VermilionCityStreetsPic + $90
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306d3: ; 0x306d3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw VermilionCityStreetsPic + $C0
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306dd: ; 0x306dd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw VermilionCityStreetsPic + $F0
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306e7: ; 0x306e7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw VermilionCityStreetsPic + $120
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306f1: ; 0x306f1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw VermilionCityStreetsPic + $150
|
|
db Bank(VermilionCityStreetsPic)
|
|
db $00
|
|
|
|
TileData_306fb: ; 0x306fb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw RockMountainPic
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_30705: ; 0x30705
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw RockMountainPic + $30
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_3070f: ; 0x3070f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw RockMountainPic + $60
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_30719: ; 0x30719
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw RockMountainPic + $90
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_30723: ; 0x30723
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw RockMountainPic + $C0
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_3072d: ; 0x3072d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw RockMountainPic + $F0
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_30737: ; 0x30737
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw RockMountainPic + $120
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_30741: ; 0x30741
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw RockMountainPic + $150
|
|
db Bank(RockMountainPic)
|
|
db $00
|
|
|
|
TileData_3074b: ; 0x3074b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw LavenderTownPic
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_30755: ; 0x30755
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw LavenderTownPic + $30
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_3075f: ; 0x3075f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw LavenderTownPic + $60
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_30769: ; 0x30769
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw LavenderTownPic + $90
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_30773: ; 0x30773
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw LavenderTownPic + $C0
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_3077d: ; 0x3077d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw LavenderTownPic + $F0
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_30787: ; 0x30787
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw LavenderTownPic + $120
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_30791: ; 0x30791
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw LavenderTownPic + $150
|
|
db Bank(LavenderTownPic)
|
|
db $00
|
|
|
|
TileData_3079b: ; 0x3079b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw CeladonCityPic
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307a5: ; 0x307a5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw CeladonCityPic + $30
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307af: ; 0x307af
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw CeladonCityPic + $60
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307b9: ; 0x307b9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw CeladonCityPic + $90
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307c3: ; 0x307c3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw CeladonCityPic + $C0
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307cd: ; 0x307cd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw CeladonCityPic + $F0
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307d7: ; 0x307d7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw CeladonCityPic + $120
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307e1: ; 0x307e1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw CeladonCityPic + $150
|
|
db Bank(CeladonCityPic)
|
|
db $00
|
|
|
|
TileData_307eb: ; 0x307eb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw CyclingRoadPic
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_307f5: ; 0x307f5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw CyclingRoadPic + $30
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_307ff: ; 0x307ff
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw CyclingRoadPic + $60
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_30809: ; 0x30809
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw CyclingRoadPic + $90
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_30813: ; 0x30813
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw CyclingRoadPic + $C0
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_3081d: ; 0x3081d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw CyclingRoadPic + $F0
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_30827: ; 0x30827
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw CyclingRoadPic + $120
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_30831: ; 0x30831
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw CyclingRoadPic + $150
|
|
db Bank(CyclingRoadPic)
|
|
db $00
|
|
|
|
TileData_3083b: ; 0x3083b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw FuchsiaCityPic
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_30845: ; 0x30845
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw FuchsiaCityPic + $30
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_3084f: ; 0x3084f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw FuchsiaCityPic + $60
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_30859: ; 0x30859
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw FuchsiaCityPic + $90
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_30863: ; 0x30863
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw FuchsiaCityPic + $C0
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_3086d: ; 0x3086d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw FuchsiaCityPic + $F0
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_30877: ; 0x30877
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw FuchsiaCityPic + $120
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_30881: ; 0x30881
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw FuchsiaCityPic + $150
|
|
db Bank(FuchsiaCityPic)
|
|
db $00
|
|
|
|
TileData_3088b: ; 0x3088b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw SafariZonePic
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_30895: ; 0x30895
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw SafariZonePic + $30
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_3089f: ; 0x3089f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw SafariZonePic + $60
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_308a9: ; 0x308a9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw SafariZonePic + $90
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_308b3: ; 0x308b3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw SafariZonePic + $C0
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_308bd: ; 0x308bd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw SafariZonePic + $F0
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_308c7: ; 0x308c7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw SafariZonePic + $120
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_308d1: ; 0x308d1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw SafariZonePic + $150
|
|
db Bank(SafariZonePic)
|
|
db $00
|
|
|
|
TileData_308db: ; 0x308db
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw SaffronCityPic
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_308e5: ; 0x308e5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw SaffronCityPic + $30
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_308ef: ; 0x308ef
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw SaffronCityPic + $60
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_308f9: ; 0x308f9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw SaffronCityPic + $90
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_30903: ; 0x30903
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw SaffronCityPic + $C0
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_3090d: ; 0x3090d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw SaffronCityPic + $F0
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_30917: ; 0x30917
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw SaffronCityPic + $120
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_30921: ; 0x30921
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw SaffronCityPic + $150
|
|
db Bank(SaffronCityPic)
|
|
db $00
|
|
|
|
TileData_3092b: ; 0x3092b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw SeafoamIslandsPic
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_30935: ; 0x30935
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw SeafoamIslandsPic + $30
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_3093f: ; 0x3093f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw SeafoamIslandsPic + $60
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_30949: ; 0x30949
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw SeafoamIslandsPic + $90
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_30953: ; 0x30953
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw SeafoamIslandsPic + $C0
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_3095d: ; 0x3095d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw SeafoamIslandsPic + $F0
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_30967: ; 0x30967
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw SeafoamIslandsPic + $120
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_30971: ; 0x30971
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw SeafoamIslandsPic + $150
|
|
db Bank(SeafoamIslandsPic)
|
|
db $00
|
|
|
|
TileData_3097b: ; 0x3097b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw CinnabarIslandPic
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_30985: ; 0x30985
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw CinnabarIslandPic + $30
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_3098f: ; 0x3098f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw CinnabarIslandPic + $60
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_30999: ; 0x30999
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw CinnabarIslandPic + $90
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_309a3: ; 0x309a3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw CinnabarIslandPic + $C0
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_309ad: ; 0x309ad
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw CinnabarIslandPic + $F0
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_309b7: ; 0x309b7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw CinnabarIslandPic + $120
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_309c1: ; 0x309c1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw CinnabarIslandPic + $150
|
|
db Bank(CinnabarIslandPic)
|
|
db $00
|
|
|
|
TileData_309cb: ; 0x309cb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw IndigoPlateauPic
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_309d5: ; 0x309d5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw IndigoPlateauPic + $30
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_309df: ; 0x309df
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw IndigoPlateauPic + $60
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_309e9: ; 0x309e9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw IndigoPlateauPic + $90
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_309f3: ; 0x309f3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw IndigoPlateauPic + $C0
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_309fd: ; 0x309fd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw IndigoPlateauPic + $F0
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_30a07: ; 0x30a07
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw IndigoPlateauPic + $120
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_30a11: ; 0x30a11
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw IndigoPlateauPic + $150
|
|
db Bank(IndigoPlateauPic)
|
|
db $00
|
|
|
|
TileData_30a1b: ; 0x30a1b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw HurryUp2OnPic
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a25: ; 0x30a25
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw HurryUp2OnPic + $30
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a2f: ; 0x30a2f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw HurryUp2OnPic + $60
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a39: ; 0x30a39
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw HurryUp2OnPic + $90
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a43: ; 0x30a43
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw HurryUp2OnPic + $C0
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a4d: ; 0x30a4d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw HurryUp2OnPic + $F0
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a57: ; 0x30a57
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw HurryUp2OnPic + $120
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a61: ; 0x30a61
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw HurryUp2OnPic + $150
|
|
db Bank(HurryUp2OnPic)
|
|
db $00
|
|
|
|
TileData_30a6b: ; 0x30a6b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw HurryUpOnPic
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30a75: ; 0x30a75
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw HurryUpOnPic + $30
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30a7f: ; 0x30a7f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw HurryUpOnPic + $60
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30a89: ; 0x30a89
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw HurryUpOnPic + $90
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30a93: ; 0x30a93
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw HurryUpOnPic + $C0
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30a9d: ; 0x30a9d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw HurryUpOnPic + $F0
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30aa7: ; 0x30aa7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw HurryUpOnPic + $120
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30ab1: ; 0x30ab1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw HurryUpOnPic + $150
|
|
db Bank(HurryUpOnPic)
|
|
db $00
|
|
|
|
TileData_30abb: ; 0x30abb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw GoToNextOnPic
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30ac5: ; 0x30ac5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw GoToNextOnPic + $30
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30acf: ; 0x30acf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw GoToNextOnPic + $60
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30ad9: ; 0x30ad9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw GoToNextOnPic + $90
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30ae3: ; 0x30ae3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw GoToNextOnPic + $C0
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30aed: ; 0x30aed
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw GoToNextOnPic + $F0
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30af7: ; 0x30af7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw GoToNextOnPic + $120
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30b01: ; 0x30b01
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw GoToNextOnPic + $150
|
|
db Bank(GoToNextOnPic)
|
|
db $00
|
|
|
|
TileData_30b0b: ; 0x30b0b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw GoToGengarBonusOnPic
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b15: ; 0x30b15
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw GoToGengarBonusOnPic + $30
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b1f: ; 0x30b1f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw GoToGengarBonusOnPic + $60
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b29: ; 0x30b29
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw GoToGengarBonusOnPic + $90
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b33: ; 0x30b33
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw GoToGengarBonusOnPic + $C0
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b3d: ; 0x30b3d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw GoToGengarBonusOnPic + $F0
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b47: ; 0x30b47
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw GoToGengarBonusOnPic + $120
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b51: ; 0x30b51
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw GoToGengarBonusOnPic + $150
|
|
db Bank(GoToGengarBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b5b: ; 0x30b5b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw GoToMewtwoBonusOnPic
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b65: ; 0x30b65
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw GoToMewtwoBonusOnPic + $30
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b6f: ; 0x30b6f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw GoToMewtwoBonusOnPic + $60
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b79: ; 0x30b79
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw GoToMewtwoBonusOnPic + $90
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b83: ; 0x30b83
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw GoToMewtwoBonusOnPic + $C0
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b8d: ; 0x30b8d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw GoToMewtwoBonusOnPic + $F0
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30b97: ; 0x30b97
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw GoToMewtwoBonusOnPic + $120
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30ba1: ; 0x30ba1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw GoToMewtwoBonusOnPic + $150
|
|
db Bank(GoToMewtwoBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bab: ; 0x30bab
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw GoToMeowthBonusOnPic
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bb5: ; 0x30bb5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw GoToMeowthBonusOnPic + $30
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bbf: ; 0x30bbf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw GoToMeowthBonusOnPic + $60
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bc9: ; 0x30bc9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw GoToMeowthBonusOnPic + $90
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bd3: ; 0x30bd3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw GoToMeowthBonusOnPic + $C0
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bdd: ; 0x30bdd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw GoToMeowthBonusOnPic + $F0
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30be7: ; 0x30be7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw GoToMeowthBonusOnPic + $120
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bf1: ; 0x30bf1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw GoToMeowthBonusOnPic + $150
|
|
db Bank(GoToMeowthBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30bfb: ; 0x30bfb
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw GoToDiglettBonusOnPic
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c05: ; 0x30c05
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw GoToDiglettBonusOnPic + $30
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c0f: ; 0x30c0f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw GoToDiglettBonusOnPic + $60
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c19: ; 0x30c19
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw GoToDiglettBonusOnPic + $90
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c23: ; 0x30c23
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw GoToDiglettBonusOnPic + $C0
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c2d: ; 0x30c2d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw GoToDiglettBonusOnPic + $F0
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c37: ; 0x30c37
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw GoToDiglettBonusOnPic + $120
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c41: ; 0x30c41
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw GoToDiglettBonusOnPic + $150
|
|
db Bank(GoToDiglettBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c4b: ; 0x30c4b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw GoToSeelBonusOnPic
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c55: ; 0x30c55
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw GoToSeelBonusOnPic + $30
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c5f: ; 0x30c5f
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw GoToSeelBonusOnPic + $60
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c69: ; 0x30c69
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw GoToSeelBonusOnPic + $90
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c73: ; 0x30c73
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw GoToSeelBonusOnPic + $C0
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c7d: ; 0x30c7d
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw GoToSeelBonusOnPic + $F0
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c87: ; 0x30c87
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw GoToSeelBonusOnPic + $120
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c91: ; 0x30c91
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw GoToSeelBonusOnPic + $150
|
|
db Bank(GoToSeelBonusOnPic)
|
|
db $00
|
|
|
|
TileData_30c9b: ; 0x30c9b
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $10
|
|
dw SlotOnPic
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
TileData_30ca5: ; 0x30ca5
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $13
|
|
dw SlotOnPic + $30
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
TileData_30caf: ; 0x30caf
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $16
|
|
dw SlotOnPic + $60
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
TileData_30cb9: ; 0x30cb9
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $19
|
|
dw SlotOnPic + $90
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
TileData_30cc3: ; 0x30cc3
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1C
|
|
dw SlotOnPic + $C0
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
TileData_30ccd: ; 0x30ccd
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $1F
|
|
dw SlotOnPic + $F0
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
TileData_30cd7: ; 0x30cd7
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $22
|
|
dw SlotOnPic + $120
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
TileData_30ce1: ; 0x30ce1
|
|
dw Func_11d2
|
|
db $30, $03
|
|
dw vTilesSH tile $25
|
|
dw SlotOnPic + $150
|
|
db Bank(SlotOnPic)
|
|
db $00
|
|
|
|
PaletteDataPointers_30ceb: ; 0x30ceb
|
|
dw PaletteData_30d21
|
|
dw PaletteData_30d26
|
|
dw PaletteData_30d2b
|
|
dw PaletteData_30d30
|
|
dw PaletteData_30d35
|
|
dw PaletteData_30d3a
|
|
dw PaletteData_30d3f
|
|
dw PaletteData_30d44
|
|
dw PaletteData_30d49
|
|
dw PaletteData_30d4e
|
|
dw PaletteData_30d53
|
|
dw PaletteData_30d58
|
|
dw PaletteData_30d5d
|
|
dw PaletteData_30d62
|
|
dw PaletteData_30d67
|
|
dw PaletteData_30d6c
|
|
dw PaletteData_30d71
|
|
dw PaletteData_30d76
|
|
dw PaletteData_30d7b
|
|
dw PaletteData_30d80
|
|
dw PaletteData_30d85
|
|
dw PaletteData_30d8a
|
|
dw PaletteData_30d8f
|
|
dw PaletteData_30d94
|
|
dw PaletteData_30d99
|
|
dw PaletteData_30d9e
|
|
dw PaletteData_30da3
|
|
|
|
PaletteData_30d21: ; 0x30d21
|
|
db $02
|
|
dw PaletteData_30da8
|
|
dw PaletteMapData_30db1
|
|
|
|
PaletteData_30d26: ; 0x30d26
|
|
db $02
|
|
dw PaletteData_30dcd
|
|
dw PaletteMapData_30dd6
|
|
|
|
PaletteData_30d2b: ; 0x30d2b
|
|
db $02
|
|
dw PaletteData_30df2
|
|
dw PaletteMapData_30dfb
|
|
|
|
PaletteData_30d30: ; 0x30d30
|
|
db $02
|
|
dw PaletteData_30e17
|
|
dw PaletteMapData_30e20
|
|
|
|
PaletteData_30d35: ; 0x30d35
|
|
db $02
|
|
dw PaletteData_30e3c
|
|
dw PaletteMapData_30e45
|
|
|
|
PaletteData_30d3a: ; 0x30d3a
|
|
db $02
|
|
dw PaletteData_30e61
|
|
dw PaletteMapData_30e6a
|
|
|
|
PaletteData_30d3f: ; 0x30d3f
|
|
db $02
|
|
dw PaletteData_30e86
|
|
dw PaletteMapData_30e8f
|
|
|
|
PaletteData_30d44: ; 0x30d44
|
|
db $02
|
|
dw PaletteData_30eab
|
|
dw PaletteMapData_30eb4
|
|
|
|
PaletteData_30d49: ; 0x30d49
|
|
db $02
|
|
dw PaletteData_30ed0
|
|
dw PaletteMapData_30ed9
|
|
|
|
PaletteData_30d4e: ; 0x30d4e
|
|
db $02
|
|
dw PaletteData_30ef5
|
|
dw PaletteMapData_30efe
|
|
|
|
PaletteData_30d53: ; 0x30d53
|
|
db $02
|
|
dw PaletteData_30f1a
|
|
dw PaletteMapData_30f23
|
|
|
|
PaletteData_30d58: ; 0x30d58
|
|
db $02
|
|
dw PaletteData_30f3f
|
|
dw PaletteMapData_30f48
|
|
|
|
PaletteData_30d5d: ; 0x30d5d
|
|
db $02
|
|
dw PaletteData_30f64
|
|
dw PaletteMapData_30f6d
|
|
|
|
PaletteData_30d62: ; 0x30d62
|
|
db $02
|
|
dw PaletteData_30f89
|
|
dw PaletteMapData_30f92
|
|
|
|
PaletteData_30d67: ; 0x30d67
|
|
db $02
|
|
dw PaletteData_30fae
|
|
dw PaletteMapData_30fb7
|
|
|
|
PaletteData_30d6c: ; 0x30d6c
|
|
db $02
|
|
dw PaletteData_30fd3
|
|
dw PaletteMapData_30fdc
|
|
|
|
PaletteData_30d71: ; 0x30d71
|
|
db $02
|
|
dw PaletteData_30ff8
|
|
dw PaletteMapData_31001
|
|
|
|
PaletteData_30d76: ; 0x30d76
|
|
db $02
|
|
dw PaletteData_3101d
|
|
dw PaletteMapData_31026
|
|
|
|
PaletteData_30d7b: ; 0x30d7b
|
|
db $02
|
|
dw PaletteData_31042
|
|
dw PaletteMapData_3104b
|
|
|
|
PaletteData_30d80: ; 0x30d80
|
|
db $02
|
|
dw PaletteData_31067
|
|
dw PaletteMapData_31070
|
|
|
|
PaletteData_30d85: ; 0x30d85
|
|
db $02
|
|
dw PaletteData_3108c
|
|
dw PaletteMapData_31095
|
|
|
|
PaletteData_30d8a: ; 0x30d8a
|
|
db $02
|
|
dw PaletteData_310b1
|
|
dw PaletteMapData_310ba
|
|
|
|
PaletteData_30d8f: ; 0x30d8f
|
|
db $02
|
|
dw PaletteData_310d6
|
|
dw PaletteMapData_310df
|
|
|
|
PaletteData_30d94: ; 0x30d94
|
|
db $02
|
|
dw PaletteData_310fb
|
|
dw PaletteMapData_31104
|
|
|
|
PaletteData_30d99: ; 0x30d99
|
|
db $02
|
|
dw PaletteData_31120
|
|
dw PaletteMapData_31129
|
|
|
|
PaletteData_30d9e: ; 0x30d9e
|
|
db $02
|
|
dw PaletteData_31145
|
|
dw PaletteMapData_3114e
|
|
|
|
PaletteData_30da3: ; 0x30da3
|
|
db $02
|
|
dw PaletteData_3116a
|
|
dw PaletteMapData_31173
|
|
|
|
PaletteData_30da8: ; 0x30da8
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PalletTownBillboardBGPalettes
|
|
db Bank(PalletTownBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30db1: ; 0x30db1
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteTownBillboardBGPaletteMap
|
|
db Bank(PaletteTownBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteTownBillboardBGPaletteMap + $6
|
|
db Bank(PaletteTownBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteTownBillboardBGPaletteMap + $C
|
|
db Bank(PaletteTownBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteTownBillboardBGPaletteMap + $12
|
|
db Bank(PaletteTownBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30dcd: ; 0x30dcd
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw ViridianCityBillboardBGPalettes
|
|
db Bank(ViridianCityBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30dd6: ; 0x30dd6
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw ViridianCityBillboardBGPaletteMap
|
|
db Bank(ViridianCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw ViridianCityBillboardBGPaletteMap + $6
|
|
db Bank(ViridianCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw ViridianCityBillboardBGPaletteMap + $C
|
|
db Bank(ViridianCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw ViridianCityBillboardBGPaletteMap + $12
|
|
db Bank(ViridianCityBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30df2: ; 0x30df2
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw ViridianForestBillboardBGPalettes
|
|
db Bank(ViridianForestBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30dfb: ; 0x30dfb
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw ViridianForestBillboardBGPaletteMap
|
|
db Bank(ViridianForestBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw ViridianForestBillboardBGPaletteMap + $6
|
|
db Bank(ViridianForestBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw ViridianForestBillboardBGPaletteMap + $C
|
|
db Bank(ViridianForestBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw ViridianForestBillboardBGPaletteMap + $12
|
|
db Bank(ViridianForestBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30e17: ; 0x30e17
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PewterCityBillboardBGPalettes
|
|
db Bank(PewterCityBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30e20: ; 0x30e20
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PewterCityBillboardBGPaletteMap
|
|
db Bank(PewterCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PewterCityBillboardBGPaletteMap + $6
|
|
db Bank(PewterCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PewterCityBillboardBGPaletteMap + $C
|
|
db Bank(PewterCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PewterCityBillboardBGPaletteMap + $12
|
|
db Bank(PewterCityBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30e3c: ; 0x30e3c
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw MtMoonBillboardBGPalettes
|
|
db Bank(MtMoonBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30e45: ; 0x30e45
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw MtMoonBillboardBGPaletteMap
|
|
db Bank(MtMoonBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw MtMoonBillboardBGPaletteMap + $6
|
|
db Bank(MtMoonBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw MtMoonBillboardBGPaletteMap + $C
|
|
db Bank(MtMoonBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw MtMoonBillboardBGPaletteMap + $12
|
|
db Bank(MtMoonBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30e61: ; 0x30e61
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw CeruleanCityBillboardBGPalettes
|
|
db Bank(CeruleanCityBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30e6a: ; 0x30e6a
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw CeruleanCityBillboardBGPaletteMap
|
|
db Bank(CeruleanCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw CeruleanCityBillboardBGPaletteMap + $6
|
|
db Bank(CeruleanCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw CeruleanCityBillboardBGPaletteMap + $C
|
|
db Bank(CeruleanCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw CeruleanCityBillboardBGPaletteMap + $12
|
|
db Bank(CeruleanCityBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30e86: ; 0x30e86
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw VermilionSeasideBillboardBGPalettes
|
|
db Bank(VermilionSeasideBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30e8f: ; 0x30e8f
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw VermilionSeasideBillboardBGPaletteMap
|
|
db Bank(VermilionSeasideBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw VermilionSeasideBillboardBGPaletteMap + $6
|
|
db Bank(VermilionSeasideBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw VermilionSeasideBillboardBGPaletteMap + $C
|
|
db Bank(VermilionSeasideBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw VermilionSeasideBillboardBGPaletteMap + $12
|
|
db Bank(VermilionSeasideBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30eab: ; 0x30eab
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw VermilionStreetsBillboardBGPalettes
|
|
db Bank(VermilionStreetsBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30eb4: ; 0x30eb4
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw VermilionStreetsBillboardBGPaletteMap
|
|
db Bank(VermilionStreetsBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw VermilionStreetsBillboardBGPaletteMap + $6
|
|
db Bank(VermilionStreetsBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw VermilionStreetsBillboardBGPaletteMap + $C
|
|
db Bank(VermilionStreetsBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw VermilionStreetsBillboardBGPaletteMap + $12
|
|
db Bank(VermilionStreetsBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30ed0: ; 0x30ed0
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw RockMountainBillboardBGPalettes
|
|
db Bank(RockMountainBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30ed9: ; 0x30ed9
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw RockMountainBillboardBGPaletteMap
|
|
db Bank(RockMountainBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw RockMountainBillboardBGPaletteMap + $6
|
|
db Bank(RockMountainBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw RockMountainBillboardBGPaletteMap + $C
|
|
db Bank(RockMountainBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw RockMountainBillboardBGPaletteMap + $12
|
|
db Bank(RockMountainBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30ef5: ; 0x30ef5
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw LavenderTownBillboardBGPalettes
|
|
db Bank(LavenderTownBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30efe: ; 0x30efe
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw LavenderTownBillboardBGPaletteMap
|
|
db Bank(LavenderTownBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw LavenderTownBillboardBGPaletteMap + $6
|
|
db Bank(LavenderTownBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw LavenderTownBillboardBGPaletteMap + $C
|
|
db Bank(LavenderTownBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw LavenderTownBillboardBGPaletteMap + $12
|
|
db Bank(LavenderTownBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30f1a: ; 0x30f1a
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw CeladonCityBillboardBGPalettes
|
|
db Bank(CeladonCityBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30f23: ; 0x30f23
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw CeladonCityBillboardBGPaletteMap
|
|
db Bank(CeladonCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw CeladonCityBillboardBGPaletteMap + $6
|
|
db Bank(CeladonCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw CeladonCityBillboardBGPaletteMap + $C
|
|
db Bank(CeladonCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw CeladonCityBillboardBGPaletteMap + $12
|
|
db Bank(CeladonCityBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30f3f: ; 0x30f3f
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw CyclingRoadBillboardBGPalettes
|
|
db Bank(CyclingRoadBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30f48: ; 0x30f48
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw CyclingRoadBillboardBGPaletteMap
|
|
db Bank(CyclingRoadBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw CyclingRoadBillboardBGPaletteMap + $6
|
|
db Bank(CyclingRoadBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw CyclingRoadBillboardBGPaletteMap + $C
|
|
db Bank(CyclingRoadBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw CyclingRoadBillboardBGPaletteMap + $12
|
|
db Bank(CyclingRoadBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30f64: ; 0x30f64
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw FuchsiaCityBillboardBGPalettes
|
|
db Bank(FuchsiaCityBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30f6d: ; 0x30f6d
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw FuchsiaCityBillboardBGPaletteMap
|
|
db Bank(FuchsiaCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw FuchsiaCityBillboardBGPaletteMap + $6
|
|
db Bank(FuchsiaCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw FuchsiaCityBillboardBGPaletteMap + $C
|
|
db Bank(FuchsiaCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw FuchsiaCityBillboardBGPaletteMap + $12
|
|
db Bank(FuchsiaCityBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30f89: ; 0x30f89
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw SafariZoneBillboardBGPalettes
|
|
db Bank(SafariZoneBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30f92: ; 0x30f92
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw SafariZoneBillboardBGPaletteMap
|
|
db Bank(SafariZoneBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw SafariZoneBillboardBGPaletteMap + $6
|
|
db Bank(SafariZoneBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw SafariZoneBillboardBGPaletteMap + $C
|
|
db Bank(SafariZoneBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw SafariZoneBillboardBGPaletteMap + $12
|
|
db Bank(SafariZoneBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30fae: ; 0x30fae
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw SaffronCityBillboardBGPalettes
|
|
db Bank(SaffronCityBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30fb7: ; 0x30fb7
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw SaffronCityBillboardBGPaletteMap
|
|
db Bank(SaffronCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw SaffronCityBillboardBGPaletteMap + $6
|
|
db Bank(SaffronCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw SaffronCityBillboardBGPaletteMap + $C
|
|
db Bank(SaffronCityBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw SaffronCityBillboardBGPaletteMap + $12
|
|
db Bank(SaffronCityBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30fd3: ; 0x30fd3
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw SeafoamIslandsBillboardBGPalettes
|
|
db Bank(SeafoamIslandsBillboardBGPalettes)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_30fdc: ; 0x30fdc
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw SeafoamIslandsBillboardBGPaletteMap
|
|
db Bank(SeafoamIslandsBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw SeafoamIslandsBillboardBGPaletteMap + $6
|
|
db Bank(SeafoamIslandsBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw SeafoamIslandsBillboardBGPaletteMap + $C
|
|
db Bank(SeafoamIslandsBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw SeafoamIslandsBillboardBGPaletteMap + $12
|
|
db Bank(SeafoamIslandsBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_30ff8: ; 0x30ff8
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw CinnabarIslandBillboardBGPalette1
|
|
db Bank(CinnabarIslandBillboardBGPalette1)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_31001: ; 0x31001
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw CinnabarIslandBillboardBGPaletteMap
|
|
db Bank(CinnabarIslandBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw CinnabarIslandBillboardBGPaletteMap + $6
|
|
db Bank(CinnabarIslandBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw CinnabarIslandBillboardBGPaletteMap + $C
|
|
db Bank(CinnabarIslandBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw CinnabarIslandBillboardBGPaletteMap + $12
|
|
db Bank(CinnabarIslandBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_3101d: ; 0x3101d
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw IndigoPlateauBillboardBGPalette1
|
|
db Bank(IndigoPlateauBillboardBGPalette1)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_31026: ; 0x31026
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw IndigoPlateauBillboardBGPaletteMap
|
|
db Bank(IndigoPlateauBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw IndigoPlateauBillboardBGPaletteMap + $6
|
|
db Bank(IndigoPlateauBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw IndigoPlateauBillboardBGPaletteMap + $C
|
|
db Bank(IndigoPlateauBillboardBGPaletteMap)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw IndigoPlateauBillboardBGPaletteMap + $12
|
|
db Bank(IndigoPlateauBillboardBGPaletteMap)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_31042: ; 0x31042
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc68
|
|
db Bank(PaletteData_dcc68)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_3104b: ; 0x3104b
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_31067: ; 0x31067
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc68
|
|
db Bank(PaletteData_dcc68)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_31070: ; 0x31070
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_3108c: ; 0x3108c
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc70
|
|
db Bank(PaletteData_dcc70)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_31095: ; 0x31095
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_310b1: ; 0x310b1
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc40
|
|
db Bank(PaletteData_dcc40)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_310ba: ; 0x310ba
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_310d6: ; 0x310d6
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc48
|
|
db Bank(PaletteData_dcc48)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_310df: ; 0x310df
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_310fb: ; 0x310fb
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc50
|
|
db Bank(PaletteData_dcc50)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_31104: ; 0x31104
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_31120: ; 0x31120
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc58
|
|
db Bank(PaletteData_dcc58)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_31129: ; 0x31129
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_31145: ; 0x31145
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dcc60
|
|
db Bank(PaletteData_dcc60)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_3114e: ; 0x3114e
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
PaletteData_3116a: ; 0x3116a
|
|
dw LoadPalettes
|
|
db $10
|
|
db $08 ; number of colors
|
|
db $30 ; OAM palettes
|
|
dw PaletteData_dd198
|
|
db Bank(PaletteData_dd198)
|
|
db $00 ; terminator
|
|
|
|
PaletteMapData_31173: ; 0x31173
|
|
dw Func_122e
|
|
db $18 ; total number of bytes
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $87
|
|
dw PaletteMap_d8000
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $a7
|
|
dw PaletteMap_d8000 + $6
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $c7
|
|
dw PaletteMap_d8000 + $C
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $06 ; number of bytes
|
|
dw vBGMap + $e7
|
|
dw PaletteMap_d8000 + $12
|
|
db Bank(PaletteMap_d8000)
|
|
|
|
db $00 ; terminator
|
|
|
|
Func_3118f: ; 0x3118f
|
|
push bc
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld a, [wCurrentMap]
|
|
sla a
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, MapNames
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld hl, wd5d4
|
|
call LoadTextHeader
|
|
pop de
|
|
ld hl, wd5cc
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_311b4: ; 0x311b4
|
|
ld a, [wd55a]
|
|
and a
|
|
jr nz, .asm_311ce
|
|
ld a, $80
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 2], a
|
|
xor a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 4], a
|
|
jr .asm_311e2
|
|
|
|
.asm_311ce
|
|
ld a, $80
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 3], a
|
|
xor a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 4], a
|
|
jr .asm_311e2
|
|
|
|
.asm_311e2
|
|
ld a, $2
|
|
callba Func_149d9
|
|
ld a, $5
|
|
callba Func_149d9
|
|
ld a, $6a
|
|
ld [wc7f0], a
|
|
ld a, $6b
|
|
ld [wc810], a
|
|
ld a, $66
|
|
ld [wc7e3], a
|
|
ld a, $67
|
|
ld [wc803], a
|
|
callba Func_107b0
|
|
ld a, $4
|
|
ld [wd7ad], a
|
|
ld de, $0003
|
|
call PlaySong
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_14135
|
|
ret
|
|
|
|
Func_31234: ; 0x31234
|
|
callba Func_107a5
|
|
callba Func_107c2
|
|
callba Func_107c8
|
|
callba Func_107e9
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_14135
|
|
callba Func_16425
|
|
callba Func_30253
|
|
ret
|
|
|
|
Func_31281: ; 0x31282
|
|
ld a, [wd4e2]
|
|
inc a
|
|
cp $6
|
|
jr c, .asm_3129e
|
|
ld a, $ff
|
|
ld [wd4e3], a
|
|
ld [wd4e4], a
|
|
ld [wd4e5], a
|
|
ld [wd4e6], a
|
|
ld [wd4e7], a
|
|
ld [wd4e8], a
|
|
xor a
|
|
.asm_3129e
|
|
ld [wd4e2], a
|
|
cp $3
|
|
jr c, .chooseFirstMapMoveIndex
|
|
cp $5
|
|
jr c, .chooseSecondMapMoveIndex
|
|
ld a, INDIGO_PLATEAU
|
|
ld [wCurrentMap], a
|
|
ld [wd4e8], a
|
|
ret
|
|
|
|
.chooseFirstMapMoveIndex
|
|
call GenRandom
|
|
and $7
|
|
cp $7
|
|
jr nc, .chooseFirstMapMoveIndex
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, FirstMapMoveSet_RedField
|
|
add hl, bc
|
|
ld c, [hl]
|
|
ld hl, wd4e3
|
|
ld a, [wd4e2]
|
|
and a
|
|
jr z, .asm_312d4
|
|
ld b, a
|
|
.asm_312cd
|
|
ld a, [hli]
|
|
cp c
|
|
jr z, .chooseFirstMapMoveIndex
|
|
dec b
|
|
jr nz, .asm_312cd
|
|
.asm_312d4
|
|
ld a, c
|
|
ld [wCurrentMap], a
|
|
ld a, [wd4e2]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd4e3
|
|
add hl, bc
|
|
ld a, [wCurrentMap]
|
|
ld [hl], a
|
|
ret
|
|
|
|
.chooseSecondMapMoveIndex
|
|
call GenRandom
|
|
and $3
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SecondMapMoveSet_RedField
|
|
add hl, bc
|
|
ld c, [hl]
|
|
ld hl, wd4e6
|
|
ld a, [wd4e2]
|
|
sub $3
|
|
jr z, .asm_31306
|
|
ld b, a
|
|
.asm_312ff
|
|
ld a, [hli]
|
|
cp c
|
|
jr z, .chooseSecondMapMoveIndex
|
|
dec b
|
|
jr nz, .asm_312ff
|
|
.asm_31306
|
|
ld a, c
|
|
ld [wCurrentMap], a
|
|
ld a, [wd4e2]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd4e3
|
|
add hl, bc
|
|
ld a, [wCurrentMap]
|
|
ld [hl], a
|
|
ret
|
|
|
|
FirstMapMoveSet_RedField:
|
|
db PALLET_TOWN
|
|
db VIRIDIAN_FOREST
|
|
db PEWTER_CITY
|
|
db CERULEAN_CITY
|
|
db VERMILION_SEASIDE
|
|
db ROCK_MOUNTAIN
|
|
db LAVENDER_TOWN
|
|
|
|
SecondMapMoveSet_RedField:
|
|
db CYCLING_ROAD
|
|
db SAFARI_ZONE
|
|
db SEAFOAM_ISLANDS
|
|
db CINNABAR_ISLAND
|
|
|
|
Func_31324: ; 0x31324
|
|
ret
|
|
|
|
Func_31325: ; 0x31325
|
|
ret
|
|
|
|
Func_31326: ; 0x31326
|
|
ld a, [wd55a]
|
|
and a
|
|
jr nz, .asm_3134c
|
|
ld a, $80
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 2], a
|
|
xor a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $3
|
|
callba Func_1de4b
|
|
jr .asm_31382
|
|
|
|
.asm_3134c
|
|
ld a, $80
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 3], a
|
|
xor a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $1
|
|
callba Func_1de4b
|
|
ld a, $6
|
|
callba Func_1de4b
|
|
ld a, $7
|
|
callba Func_1de6f
|
|
.asm_31382
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_3139d
|
|
ld a, $54
|
|
ld [wc7e3], a
|
|
ld a, $55
|
|
ld [wc803], a
|
|
ld a, $52
|
|
ld [wc7f0], a
|
|
ld a, $53
|
|
ld [wc810], a
|
|
.asm_3139d
|
|
ld a, $1
|
|
ld [wd644], a
|
|
callba Func_1f2ed
|
|
ld de, $0003
|
|
call PlaySong
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_1c2cb
|
|
ret
|
|
|
|
Func_313c3: ; 0x313c3
|
|
callba Func_107a5
|
|
callba Func_107c2
|
|
callba Func_1f2ff
|
|
ld a, $0
|
|
ld [wd644], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
ret z
|
|
callba Func_1c2cb
|
|
callba Func_1e8f6
|
|
callba Func_30253
|
|
ret
|
|
|
|
Func_3140b: ; 0x3140b
|
|
ld a, [wd4e2]
|
|
inc a
|
|
cp $6
|
|
jr c, .asm_31428
|
|
ld a, $ff
|
|
ld [wd4e3], a
|
|
ld [wd4e4], a
|
|
ld [wd4e5], a
|
|
ld [wd4e6], a
|
|
ld [wd4e7], a
|
|
ld [wd4e8], a
|
|
xor a
|
|
.asm_31428
|
|
ld [wd4e2], a
|
|
cp $3
|
|
jr c, .asm_3143c
|
|
cp $5
|
|
jr c, .asm_31471
|
|
ld a, INDIGO_PLATEAU
|
|
ld [wCurrentMap], a
|
|
ld [wd4e8], a
|
|
ret
|
|
|
|
.asm_3143c
|
|
call GenRandom
|
|
and $7
|
|
cp $7
|
|
jr nc, .asm_3143c
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, FirstMapMoveSet_BlueField
|
|
add hl, bc
|
|
ld c, [hl]
|
|
ld hl, wd4e3
|
|
ld a, [wd4e2]
|
|
and a
|
|
jr z, .asm_3145e
|
|
ld b, a
|
|
.asm_31457
|
|
ld a, [hli]
|
|
cp c
|
|
jr z, .asm_3143c
|
|
dec b
|
|
jr nz, .asm_31457
|
|
.asm_3145e
|
|
ld a, c
|
|
ld [wCurrentMap], a
|
|
ld a, [wd4e2]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd4e3
|
|
add hl, bc
|
|
ld a, [wCurrentMap]
|
|
ld [hl], a
|
|
ret
|
|
|
|
.asm_31471
|
|
call GenRandom
|
|
and $3
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, SecondMapMoveSet_BlueField
|
|
add hl, bc
|
|
ld c, [hl]
|
|
ld hl, wd4e6
|
|
ld a, [wd4e2]
|
|
sub $3
|
|
jr z, .asm_31490
|
|
ld b, a
|
|
.asm_31489
|
|
ld a, [hli]
|
|
cp c
|
|
jr z, .asm_31471
|
|
dec b
|
|
jr nz, .asm_31489
|
|
.asm_31490
|
|
ld a, c
|
|
ld [wCurrentMap], a
|
|
ld a, [wd4e2]
|
|
ld c, a
|
|
ld b, $0
|
|
ld hl, wd4e3
|
|
add hl, bc
|
|
ld a, [wCurrentMap]
|
|
ld [hl], a
|
|
ret
|
|
|
|
FirstMapMoveSet_BlueField:
|
|
db VIRIDIAN_CITY
|
|
db VIRIDIAN_FOREST
|
|
db MT_MOON
|
|
db CERULEAN_CITY
|
|
db VERMILION_STREETS
|
|
db ROCK_MOUNTAIN
|
|
db CELADON_CITY
|
|
|
|
SecondMapMoveSet_BlueField:
|
|
db FUCHSIA_CITY
|
|
db SAFARI_ZONE
|
|
db SAFFRON_CITY
|
|
db CINNABAR_ISLAND
|
|
|
|
Func_314ae: ; 0x314ae
|
|
ld a, [wd57d]
|
|
and a
|
|
ld a, [wd54c]
|
|
jr z, .asm_314d0
|
|
cp $1
|
|
jp z, Func_31591
|
|
cp $3
|
|
jp z, Func_31591
|
|
cp $2
|
|
jp z, Func_315b3
|
|
cp $5
|
|
jp z, Func_315b3
|
|
cp $d
|
|
jp z, Func_315d5
|
|
.asm_314d0
|
|
cp $0
|
|
jr z, .asm_314d6
|
|
scf
|
|
ret
|
|
|
|
.asm_314d6
|
|
call Func_3151f
|
|
ld a, [wd54d]
|
|
call CallInFollowingTable
|
|
PointerTable_314df: ; 0xd13df
|
|
padded_dab Func_314ef
|
|
padded_dab Func_314f1
|
|
padded_dab Func_314f3
|
|
padded_dab Func_31505
|
|
|
|
Func_314ef: ; 0x314ef
|
|
scf
|
|
ret
|
|
|
|
Func_314f1: ; 0x314f1
|
|
scf
|
|
ret
|
|
|
|
Func_314f3: ; 0x314f3
|
|
callba Func_3022b
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_31505: ; 0x31505
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
callba Func_3022b
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_3151f: ; 0x3151f
|
|
ld a, $50
|
|
ld [wd4ef], a
|
|
ld [wd4f1], a
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $3
|
|
ld [wd54d], a
|
|
xor a
|
|
ld [wd604], a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_31577
|
|
callba Func_14135
|
|
callba Func_16425
|
|
callba Func_30253
|
|
.asm_31577
|
|
callba Func_86d2
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, MapMoveFailedText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_31591: ; 0x31591
|
|
ld a, [wd55a]
|
|
and a
|
|
jr nz, .asm_315b1
|
|
ld a, [wIndicatorStates]
|
|
and a
|
|
jr z, .asm_315b1
|
|
xor a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld [wd54d], a
|
|
.asm_315b1
|
|
scf
|
|
ret
|
|
|
|
Func_315b3: ; 0x315b3
|
|
ld a, [wd55a]
|
|
and a
|
|
jr z, .asm_315d3
|
|
ld a, [wIndicatorStates + 1]
|
|
and a
|
|
jr z, .asm_315d3
|
|
xor a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld [wd54d], a
|
|
.asm_315d3
|
|
scf
|
|
ret
|
|
|
|
Func_315d5: ; 0x315d5
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
callba Func_31281
|
|
callba Func_30253
|
|
lb de, $25, $25
|
|
call PlaySoundEffect
|
|
ld bc, ArrivedAtMapText
|
|
callba Func_3118f
|
|
.asm_31603
|
|
callba Func_33e3
|
|
rst AdvanceFrame
|
|
ld a, [wd5ca]
|
|
and a
|
|
jr nz, .asm_31603
|
|
ld a, $2
|
|
ld [wd54d], a
|
|
scf
|
|
ret
|
|
|
|
Func_3161b: ; 0x3161b
|
|
ld a, [wd57d]
|
|
and a
|
|
ld a, [wd54c]
|
|
jr z, .asm_3163d
|
|
cp $1
|
|
jp z, Func_31708
|
|
cp $f
|
|
jp z, Func_31708
|
|
cp $2
|
|
jp z, Func_3172a
|
|
cp $e
|
|
jp z, Func_3172a
|
|
cp $d
|
|
jp z, Func_3174c
|
|
.asm_3163d
|
|
cp $0
|
|
jr z, .asm_31643
|
|
scf
|
|
ret
|
|
|
|
.asm_31643
|
|
call Func_3168c
|
|
ld a, [wd54d]
|
|
call CallInFollowingTable
|
|
PointerTable_3164c: ; 0x3164c
|
|
padded_dab Func_3165c
|
|
padded_dab Func_3165e
|
|
padded_dab Func_31660
|
|
padded_dab Func_31672
|
|
|
|
Func_3165c: ; 0x3165c
|
|
scf
|
|
ret
|
|
|
|
Func_3165e: ; 0x3165e
|
|
scf
|
|
ret
|
|
|
|
Func_31660: ; 0x31660
|
|
callba Func_3022b
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_31672: ; 0x31672
|
|
ld a, [wd5ca]
|
|
and a
|
|
ret nz
|
|
call FillBottomMessageBufferWithBlackTile
|
|
callba Func_3022b
|
|
ld de, $0001
|
|
call PlaySong
|
|
scf
|
|
ret
|
|
|
|
Func_3168c: ; 0x3168c
|
|
ld a, $50
|
|
ld [wLeftMapMoveDiglettAnimationCounter], a
|
|
ld [wRightMapMoveDiglettFrame], a
|
|
ld a, $3
|
|
ld [wd645], a
|
|
ld a, $1
|
|
ld [wd646], a
|
|
callba Func_107f8
|
|
ld a, [wd57e]
|
|
and a
|
|
ret z
|
|
xor a
|
|
ld [wd57e], a
|
|
ld a, $3
|
|
ld [wd54d], a
|
|
xor a
|
|
ld [wd604], a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, [wCurrentStage]
|
|
bit 0, a
|
|
jr z, .asm_316ee
|
|
callba Func_1c2cb
|
|
callba Func_1e8f6
|
|
callba Func_30253
|
|
.asm_316ee
|
|
callba Func_86d2
|
|
call FillBottomMessageBufferWithBlackTile
|
|
call Func_30db
|
|
ld hl, wd5cc
|
|
ld de, MapMoveFailedText
|
|
call LoadTextHeader
|
|
ret
|
|
|
|
Func_31708: ; 0x31708
|
|
ld a, [wd55a]
|
|
and a
|
|
jr nz, .asm_31728
|
|
ld a, [wIndicatorStates]
|
|
and a
|
|
jr z, .asm_31728
|
|
xor a
|
|
ld [wIndicatorStates], a
|
|
ld [wIndicatorStates + 2], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld [wd54d], a
|
|
.asm_31728
|
|
scf
|
|
ret
|
|
|
|
Func_3172a: ; 0x3172a
|
|
ld a, [wd55a]
|
|
and a
|
|
jr z, .asm_3174a
|
|
ld a, [wIndicatorStates + 1]
|
|
and a
|
|
jr z, .asm_3174a
|
|
xor a
|
|
ld [wIndicatorStates + 1], a
|
|
ld [wIndicatorStates + 3], a
|
|
ld a, $80
|
|
ld [wIndicatorStates + 4], a
|
|
ld a, $1
|
|
ld [wd604], a
|
|
ld [wd54d], a
|
|
.asm_3174a
|
|
scf
|
|
ret
|
|
|
|
Func_3174c: ; 0x3174c
|
|
ld de, $0000
|
|
call PlaySong
|
|
rst AdvanceFrame
|
|
callba Func_3140b
|
|
callba Func_30253
|
|
lb de, $25, $25
|
|
call PlaySoundEffect
|
|
ld bc, ArrivedAtMapText
|
|
callba Func_3118f
|
|
.asm_3177a
|
|
callba Func_33e3
|
|
rst AdvanceFrame
|
|
ld a, [wd5ca]
|
|
and a
|
|
jr nz, .asm_3177a
|
|
ld a, $2
|
|
ld [wd54d], a
|
|
scf
|
|
ret
|
|
|
|
SECTION "bankd", ROMX, BANK[$d]
|
|
|
|
SlotOnPic: ; 0x34000
|
|
INCBIN "gfx/billboard/slot/slot_on.2bpp"
|
|
SlotOffPic: ; 0x34180
|
|
INCBIN "gfx/billboard/slot/slot_off.2bpp"
|
|
|
|
SECTION "bankd.2", ROMX [$7f00], BANK[$d]
|
|
|
|
StageSeelBonusCollisionMasks: ; 0x37f00
|
|
INCBIN "data/collision/masks/seel_bonus.masks"
|
|
|
|
SECTION "banke", ROMX, BANK[$e]
|
|
Data_38000:
|
|
db $89, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
|
|
Data_38010:
|
|
db $89, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
|
|
Data_38020:
|
|
db $51, $10, $00, $10, $00, $10, $00, $10, $00, $80, $00, $00, $00, $00, $00, $00
|
|
|
|
Data_38030:
|
|
db $a9, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
|
|
Data_3809a:
|
|
db $00, $00, $00
|
|
db $40, $40, $40
|
|
db $90, $90, $90
|
|
db $e4, $e4, $e4
|
|
|
|
Data_380a6:
|
|
db $59, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
RGB 31, 31, 31
|
|
|
|
RGB 30, 31, 29
|
|
RGB 28, 28, 25
|
|
RGB 27, 26, 24
|
|
RGB 24, 24, 24
|
|
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
RGB 23, 23, 23
|
|
|
|
RGB 30, 31, 27
|
|
RGB 25, 26, 20
|
|
RGB 23, 21, 18
|
|
RGB 17, 17, 17
|
|
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
RGB 15, 15, 15
|
|
|
|
RGB 29, 31, 25
|
|
RGB 22, 24, 15
|
|
RGB 19, 16, 12
|
|
RGB 10, 10, 10
|
|
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
RGB 7, 7, 7
|
|
|
|
RGB 29, 31, 23
|
|
RGB 20, 22, 10
|
|
RGB 15, 12, 6
|
|
RGB 3, 3, 4
|
|
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
RGB 0, 0, 0
|
|
|
|
Data_38156:
|
|
db $99, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
INCBIN "gfx/sgb_border.interleave.2bpp"
|
|
|
|
Data_39166:
|
|
db $99, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
INCBIN "gfx/sgb_border_blank.2bpp"
|
|
|
|
Data_3a176:
|
|
db $a1, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
INCBIN "gfx/tilemaps/sgb_border.map"
|
|
|
|
Data_3a9e6:
|
|
db $79, $5d, $08, $00, $0b, $8c, $d0, $f4, $60, $00, $00, $00, $00, $00, $00, $00
|
|
Data_3a9f6:
|
|
db $79, $52, $08, $00, $0b, $a9, $e7, $9f, $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0
|
|
Data_3aa06:
|
|
db $79, $47, $08, $00, $0b, $c4, $d0, $16, $a5, $cb, $c9, $05, $d0, $10, $a2, $28
|
|
Data_3aa16:
|
|
db $79, $3c, $08, $00, $0b, $f0, $12, $a5, $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9
|
|
Data_3aa26:
|
|
db $79, $31, $08, $00, $0b, $0c, $a5, $ca, $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e
|
|
Data_3aa36:
|
|
db $79, $26, $08, $00, $0b, $39, $cd, $48, $0c, $d0, $34, $a5, $c9, $c9, $80, $d0
|
|
Data_3aa46:
|
|
db $79, $1b, $08, $00, $0b, $ea, $ea, $ea, $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0
|
|
Data_3aa56:
|
|
db $79, $10, $08, $00, $0b, $4c, $20, $08, $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea
|
|
Data_3aa66:
|
|
db $b9, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
Data_3aa76:
|
|
db $b9, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
|
|
SECTION "bankf", ROMX, BANK[$f]
|
|
|
|
INCLUDE "audio/engine_0f.asm"
|
|
|
|
SECTION "bank10", ROMX, BANK[$10]
|
|
|
|
INCLUDE "audio/engine_10.asm"
|
|
|
|
SECTION "bank11", ROMX, BANK[$11]
|
|
|
|
INCLUDE "audio/engine_11.asm"
|
|
|
|
SECTION "bank12", ROMX, BANK[$12]
|
|
|
|
INCLUDE "audio/engine_12.asm"
|
|
|
|
SECTION "bank13", ROMX, BANK[$13]
|
|
|
|
INCLUDE "audio/engine_13.asm"
|
|
|
|
SECTION "bank14", ROMX, BANK[$14]
|
|
|
|
INCLUDE "audio/pikapcm.asm"
|
|
|
|
; bank $15 is blank
|
|
|
|
SECTION "bank16", ROMX, BANK[$16]
|
|
|
|
INCLUDE "data/billboard/billboard_pics.asm"
|
|
INCLUDE "data/mon_gfx/mon_billboard_palettes_1.asm"
|
|
|
|
SECTION "bank17", ROMX, BANK[$17]
|
|
|
|
INCLUDE "data/billboard/reward_pics.asm"
|
|
|
|
MeowthBonusBaseGameBoyGfx: ; 0x5f600
|
|
INCBIN "gfx/stage/meowth_bonus/meowth_bonus_base_gameboy.2bpp"
|
|
|
|
SECTION "bank18", ROMX, BANK[$18]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_1.asm"
|
|
|
|
StageRedFieldTopStatusBarSymbolsGfx_GameBoy: ; 0x63000
|
|
INCBIN "gfx/stage/red_top/status_bar_symbols_gameboy.2bpp"
|
|
|
|
INCBIN "gfx/unused_pocket_monster.2bpp"
|
|
ds $20 ; free space
|
|
|
|
StageRedFieldTopBaseGameBoyGfx: ; 0x632a0
|
|
INCBIN "gfx/stage/red_top/red_top_base_gameboy.2bpp"
|
|
|
|
SECTION "bank19", ROMX, BANK[$19]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_2.asm"
|
|
|
|
StageBlueFieldBottomBaseGameBoyGfx: ; 0x67000
|
|
INCBIN "gfx/stage/blue_bottom/blue_bottom_base_gameboy.2bpp"
|
|
|
|
SECTION "bank1a", ROMX, BANK[$1a]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_3.asm"
|
|
|
|
StageBlueFieldTopStatusBarSymbolsGfx_GameBoy: ; 0x6b000
|
|
INCBIN "gfx/stage/blue_top/status_bar_symbols_gameboy.2bpp"
|
|
|
|
INCBIN "gfx/unused_pocket_monster.2bpp"
|
|
ds $20 ; free space
|
|
|
|
StageBlueFieldTopBaseGameBoyGfx: ; 0x6b2a0
|
|
INCBIN "gfx/stage/blue_top/blue_top_base_gameboy.2bpp"
|
|
|
|
SECTION "bank1b", ROMX, BANK[$1b]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_4.asm"
|
|
|
|
UnusedStageGfx: ; 0x6f000
|
|
INCBIN "gfx/stage/unused_stage.2bpp"
|
|
|
|
SECTION "bank1c", ROMX, BANK[$1c]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_5.asm"
|
|
|
|
UncaughtPokemonBackgroundPic:
|
|
INCBIN "gfx/pokedex/uncaught_pokemon.2bpp"
|
|
INCBIN "gfx/pokedex/uncaught_pokemon.2bpp" ; This pic is unnecessarily duplicated.
|
|
|
|
ds $1800 ; free space
|
|
|
|
GengarBonusBaseGameBoyGfx: ; 0x73000
|
|
INCBIN "gfx/stage/gengar_bonus/gengar_bonus_base_gameboy.2bpp"
|
|
|
|
SECTION "bank1d", ROMX, BANK[$1d]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_6.asm"
|
|
|
|
StageRedFieldBottomBaseGameBoyGfx: ; 0x77000
|
|
INCBIN "gfx/stage/red_bottom/red_bottom_base_gameboy.2bpp"
|
|
|
|
SECTION "bank1e", ROMX, BANK[$1e]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_7.asm"
|
|
|
|
INCLUDE "data/billboard/bonus_multiplier_pics.asm"
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palettes_2.asm"
|
|
|
|
SECTION "bank1f", ROMX, BANK[$1f]
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_pics_1.asm"
|
|
|
|
MewtwoBonusBaseGameBoyGfx: ; 0x7f000
|
|
INCBIN "gfx/stage/mewtwo_bonus/mewtwo_bonus_base_gameboy.2bpp"
|
|
|
|
EraseAllDataGfx: ; 0x7fd00: ; 0x7fd00
|
|
INCBIN "gfx/erase_all_data.2bpp"
|
|
|
|
SECTION "bank20", ROMX, BANK[$20]
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_pics_2.asm"
|
|
|
|
MewtwoBonusBaseGameBoyColorGfx: ; 0x83000
|
|
INCBIN "gfx/stage/mewtwo_bonus/mewtwo_bonus_base_gameboycolor.2bpp"
|
|
|
|
StageDiglettBonusCollisionMasks: ; 0x83d00
|
|
INCBIN "data/collision/masks/diglett_bonus.masks"
|
|
|
|
SECTION "bank21", ROMX, BANK[$21]
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_pics_3.asm"
|
|
|
|
ds $300 ; free space
|
|
|
|
DiglettBonusBaseGameBoyColorGfx: ; 0x87000
|
|
INCBIN "gfx/stage/diglett_bonus/diglett_bonus_base_gameboycolor.2bpp"
|
|
|
|
GengarBonusHaunterGfx: ; 0x87d00
|
|
INCBIN "gfx/stage/gengar_bonus/haunter.interleave.2bpp"
|
|
|
|
SECTION "bank22", ROMX, BANK[$22]
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_pics_4.asm"
|
|
|
|
FieldSelectScreenGfx:
|
|
FieldSelectBlinkingBorderGfx: ; 0x8b000
|
|
INCBIN "gfx/field_select/blinking_border.2bpp"
|
|
FieldSelectGfx: ; 0x8b100
|
|
INCBIN "gfx/field_select/field_select_tiles.2bpp"
|
|
|
|
GengarBonusGastlyGfx: ; 0x8bd00
|
|
INCBIN "gfx/stage/gengar_bonus/gastly.interleave.2bpp"
|
|
|
|
ds $80 ; free space
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palettes_3.asm"
|
|
|
|
SECTION "bank23", ROMX, BANK[$23]
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_pics_5.asm"
|
|
|
|
DiglettBonusBaseGameBoyGfx: ; 0x8f000
|
|
INCBIN "gfx/stage/diglett_bonus/diglett_bonus_base_gameboy.2bpp"
|
|
|
|
INCLUDE "gfx/high_scores/high_scores_transition_palettes.asm"
|
|
INCLUDE "data/billboard/map_palettes.asm"
|
|
|
|
SECTION "bank24", ROMX, BANK[$24]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_8.asm"
|
|
|
|
SeelBonusBaseGameBoyGfx: ; 0x93000
|
|
INCBIN "gfx/stage/seel_bonus/seel_bonus_base_gameboy.2bpp"
|
|
|
|
INCLUDE "data/billboard/map_palette_maps_2.asm"
|
|
|
|
SECTION "bank25", ROMX, BANK[$25]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_9.asm"
|
|
|
|
SeelBonusBaseGameBoyColorGfx: ; 0x97000
|
|
INCBIN "gfx/stage/seel_bonus/seel_bonus_base_gameboycolor.2bpp"
|
|
|
|
StageRedFieldTopGfx3: ; 0x97a00
|
|
INCBIN "gfx/stage/red_top/red_top_3.2bpp"
|
|
StageRedFieldTopGfx1: ; 0x97ba0
|
|
INCBIN "gfx/stage/red_top/red_top_1.2bpp"
|
|
StageRedFieldTopGfx2: ; 0x97e00
|
|
INCBIN "gfx/stage/red_top/red_top_2.2bpp"
|
|
|
|
SECTION "bank26", ROMX, BANK[$26]
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_pics_10.asm"
|
|
|
|
SeelBonusSeel3Gfx: ; 0x9b000
|
|
INCBIN "gfx/stage/seel_bonus/seel_3.2bpp"
|
|
SeelBonusSeel1Gfx: ; 0x9b1a0
|
|
INCBIN "gfx/stage/seel_bonus/seel_1.2bpp"
|
|
SeelBonusSeel2Gfx: ; 0x9b400
|
|
INCBIN "gfx/stage/seel_bonus/seel_2.2bpp"
|
|
SeelBonusSeel4Gfx: ; 0x9b460
|
|
INCBIN "gfx/stage/seel_bonus/seel_4.2bpp"
|
|
|
|
GengarBonusGengarGfx: ; 0x9b900
|
|
INCBIN "gfx/stage/gengar_bonus/gengar.interleave.2bpp"
|
|
|
|
SECTION "bank27", ROMX, BANK[$27]
|
|
|
|
StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor: ; 0x9c000
|
|
INCBIN "gfx/stage/red_top/status_bar_symbols_gameboycolor.2bpp"
|
|
|
|
INCBIN "gfx/unused_pocket_monster_2.2bpp"
|
|
ds $20 ; free space
|
|
|
|
StageRedFieldTopBaseGameBoyColorGfx: ; 0x9c2a0
|
|
INCBIN "gfx/stage/red_top/red_top_base_gameboycolor.2bpp"
|
|
|
|
StageRedFieldTopGfx4: ; 0x9d000
|
|
INCBIN "gfx/stage/red_top/red_top_4.2bpp"
|
|
|
|
GengarBonusBaseGameBoyColorGfx: ; 0x9e000
|
|
INCBIN "gfx/stage/gengar_bonus/gengar_bonus_base_gameboycolor.2bpp"
|
|
GengarBonus1Gfx: ; 0x9f000
|
|
INCBIN "gfx/stage/gengar_bonus/gengar_bonus_1.2bpp"
|
|
|
|
SECTION "bank28", ROMX, BANK[$28]
|
|
|
|
StageBlueFieldTopStatusBarSymbolsGfx_GameBoyColor: ; 0xa0000
|
|
INCBIN "gfx/stage/blue_top/status_bar_symbols_gameboycolor.2bpp"
|
|
|
|
INCBIN "gfx/unused_pocket_monster_2.2bpp"
|
|
ds $20 ; free space
|
|
|
|
StageBlueFieldTopBaseGameBoyColorGfx: ; 0xa02a0
|
|
INCBIN "gfx/stage/blue_top/blue_top_base_gameboycolor.2bpp"
|
|
|
|
StageBlueFieldTopGfx4: ; 0xa1000
|
|
INCBIN "gfx/stage/blue_top/blue_top_4.2bpp"
|
|
|
|
StageRedFieldBottomBaseGameBoyColorGfx: ; 0xa2000
|
|
INCBIN "gfx/stage/red_bottom/red_bottom_base_gameboycolor.2bpp"
|
|
|
|
StageRedFieldBottomGfx5: ; 0xa3000
|
|
INCBIN "gfx/stage/red_bottom/red_bottom_5.2bpp"
|
|
|
|
SECTION "bank29", ROMX, BANK[$29]
|
|
|
|
StageBlueFieldBottomBaseGameBoyColorGfx: ; 0xa4000
|
|
INCBIN "gfx/stage/blue_bottom/blue_bottom_base_gameboycolor.2bpp"
|
|
StageBlueFieldBottomGfx1: ; 0xa5000
|
|
INCBIN "gfx/stage/blue_bottom/blue_bottom_1.2bpp"
|
|
|
|
INCLUDE "data/billboard/map_pics.asm"
|
|
|
|
HighScoresHexadecimalCharsGfx:
|
|
INCBIN "gfx/high_scores/hexadecimal_characters.2bpp"
|
|
|
|
SECTION "bank2a", ROMX, BANK[$2a]
|
|
|
|
ds $2c0 ; free space
|
|
|
|
PinballGreatballShakeGfx: ; 0xa82c0
|
|
INCBIN "gfx/stage/ball_greatball_shake.w16.interleave.2bpp"
|
|
PinballUltraballShakeGfx: ; 0xa8300
|
|
INCBIN "gfx/stage/ball_ultraball_shake.w16.interleave.2bpp"
|
|
PinballMasterballShakeGfx: ; 0xa8340
|
|
INCBIN "gfx/stage/ball_masterball_shake.w16.interleave.2bpp"
|
|
PinballPokeballShakeGfx: ; 0xa8380
|
|
INCBIN "gfx/stage/ball_pokeball_shake.w16.interleave.2bpp"
|
|
|
|
StageSharedPikaBoltGfx: ; 0xa83c0
|
|
INCBIN "gfx/stage/shared/pika_bolt.2bpp"
|
|
|
|
PinballPokeballGfx: ; 0xa8400
|
|
INCBIN "gfx/stage/ball_pokeball.w32.interleave.2bpp"
|
|
|
|
FlipperGfx: ; 0xa8600
|
|
INCBIN "gfx/stage/flipper.2bpp"
|
|
|
|
PikachuSaverGfx: ; 0xa8720
|
|
INCBIN "gfx/stage/pikachu_saver.2bpp"
|
|
|
|
BallCaptureSmokeGfx:
|
|
INCBIN "gfx/stage/ball_capture_smoke.interleave.2bpp"
|
|
|
|
ds $80 ; free space
|
|
|
|
PinballGreatballGfx: ; 0xa8a00
|
|
INCBIN "gfx/stage/ball_greatball.w32.interleave.2bpp"
|
|
PinballUltraballGfx: ; 0xa8c00
|
|
INCBIN "gfx/stage/ball_ultraball.w32.interleave.2bpp"
|
|
PinballMasterballGfx: ; 0xa8e00
|
|
INCBIN "gfx/stage/ball_masterball.w32.interleave.2bpp"
|
|
|
|
PinballPokeballMiniGfx: ; 0xa9000
|
|
INCBIN "gfx/stage/ball_pokeball_mini.w32.interleave.2bpp"
|
|
PinballGreatballMiniGfx: ; 0xa9200
|
|
INCBIN "gfx/stage/ball_greatball_mini.w32.interleave.2bpp"
|
|
PinballUltraballMiniGfx: ; 0xa9400
|
|
INCBIN "gfx/stage/ball_ultraball_mini.w32.interleave.2bpp"
|
|
PinballMasterballMiniGfx: ; 0xa9600
|
|
INCBIN "gfx/stage/ball_masterball_mini.w32.interleave.2bpp"
|
|
PinballBallMiniGfx: ; 0xa9800
|
|
INCBIN "gfx/stage/ball_mini.w32.interleave.2bpp"
|
|
|
|
HighScoresBaseGameBoyGfx: ; 0xa9a00
|
|
INCBIN "gfx/high_scores/high_scores_base_gameboy.2bpp"
|
|
|
|
MeowthBonusBaseGameBoyColorGfx: ; 0xab200
|
|
INCBIN "gfx/stage/meowth_bonus/meowth_bonus_base_gameboycolor.2bpp"
|
|
|
|
INCLUDE "data/billboard/map_palette_maps.asm"
|
|
|
|
ds $280 ; free space
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_palettes_1.asm"
|
|
|
|
SECTION "bank2b", ROMX, BANK[$2b]
|
|
|
|
TitlescreenFadeInGfx: ; 0xac000
|
|
INCBIN "gfx/titlescreen/titlescreen_fade_in.2bpp"
|
|
|
|
PokedexInitialGfx:
|
|
INCBIN "gfx/pokedex/pokedex_initial.2bpp"
|
|
|
|
StageBlueFieldBottomCollisionMasks: ; 0xaf000
|
|
INCBIN "data/collision/masks/blue_stage_bottom.masks"
|
|
|
|
ds $100 ; free space
|
|
|
|
DiglettBonusDugtrio3Gfx: ; 0xaf900
|
|
INCBIN "gfx/stage/diglett_bonus/dugtrio_3.2bpp"
|
|
DiglettBonusDugtrio1Gfx: ; 0xafaa0
|
|
INCBIN "gfx/stage/diglett_bonus/dugtrio_1.2bpp"
|
|
DiglettBonusDugtrio2Gfx: ; 0xafd00
|
|
INCBIN "gfx/stage/diglett_bonus/dugtrio_2.2bpp"
|
|
DiglettBonusDugtrio4Gfx: ; 0xafd60
|
|
INCBIN "gfx/stage/diglett_bonus/dugtrio_4.2bpp"
|
|
|
|
SECTION "bank2c", ROMX, BANK[$2c]
|
|
|
|
StageRedFieldBottomIndicatorsGfx_Gameboy: ; 0xb0000
|
|
INCBIN "gfx/stage/red_bottom/red_bottom_indicators_gameboy.2bpp"
|
|
|
|
StageRedFieldTopCollisionAttributes6: ; 0xb3000
|
|
INCBIN "data/collision/maps/red_stage_top_6.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
FieldSelectTilemap: ; 0xb3800
|
|
INCBIN "gfx/tilemaps/field_select.map"
|
|
FieldSelectBGAttributes: ; 0xb3c00
|
|
INCBIN "gfx/bgattr/field_select.bgattr"
|
|
|
|
SECTION "bank2d", ROMX, BANK[$2d]
|
|
|
|
TitlescreenGfx: ; 0xb4000
|
|
INCBIN "gfx/titlescreen/titlescreen.2bpp"
|
|
|
|
OptionMenuAndKeyConfigGfx:
|
|
OptionMenuBlankGfx: ; 0xb5800
|
|
INCBIN "gfx/option_menu/blank.2bpp"
|
|
OptionMenuArrowGfx: ; 0xb5a00
|
|
INCBIN "gfx/option_menu/arrow.2bpp"
|
|
OptionMenuPikaBubbleGfx: ; 0xb5a20
|
|
INCBIN "gfx/option_menu/pika_bubble.2bpp"
|
|
OptionMenuBouncingPokeballGfx: ; 0xb5a80
|
|
INCBIN "gfx/option_menu/bouncing_pokeball.2bpp"
|
|
OptionMenuRumblePikachuAnimationGfx: ; 0xb5b40
|
|
INCBIN "gfx/option_menu/rumble_pikachu_animation.2bpp"
|
|
OptionMenuPsyduckGfx: ; 0xb5c00
|
|
INCBIN "gfx/option_menu/psyduck.2bpp"
|
|
OptionMenuBoldArrowGfx: ; 0xb5fc0
|
|
INCBIN "gfx/option_menu/bold_arrow.2bpp"
|
|
OptionMenuUnknownGfx: ; 0xb5fd0
|
|
INCBIN "gfx/option_menu/solid_colors.2bpp"
|
|
OptionMenuOptionTextGfx: ; 0xb6020
|
|
INCBIN "gfx/option_menu/option_text.2bpp"
|
|
OptionMenuPikachuGfx: ; 0xb6080
|
|
INCBIN "gfx/option_menu/pikachu.2bpp"
|
|
OptionMenuPsyduckFeetGfx: ; 0xb6170
|
|
INCBIN "gfx/option_menu/psyduck_feet.2bpp"
|
|
OptionMenuUnknown2Gfx: ; 0xb6200
|
|
INCBIN "gfx/option_menu/blank2.2bpp"
|
|
OptionMenuRumbleTextGfx: ; 0xb6250
|
|
INCBIN "gfx/option_menu/rumble_text.2bpp"
|
|
OptionMenuUnknown3Gfx: ; 0xb62b0
|
|
INCBIN "gfx/option_menu/blank3.2bpp"
|
|
OptionMenuKeyCoTextGfx: ; 0xb6320
|
|
INCBIN "gfx/option_menu/key_co_text.2bpp"
|
|
OptionMenuSoundTestDigitsGfx: ; 0xb6370
|
|
INCBIN "gfx/option_menu/sound_test_digits.2bpp"
|
|
OptionMenuNfigTextGfx: ; 0xb6470
|
|
INCBIN "gfx/option_menu/nfig_text.2bpp"
|
|
OptionMenuUnknown4Gfx: ; 0xb64a0
|
|
INCBIN "gfx/option_menu/blank4.2bpp"
|
|
|
|
KeyConfigResetTextGfx: ; 0xb6500
|
|
INCBIN "gfx/key_config/reset_text.2bpp"
|
|
KeyConfigBallStartTextGfx: ; 0xb6560
|
|
INCBIN "gfx/key_config/ball_start_text.2bpp"
|
|
KeyConfigLeftFlipperTextGfx: ; 0xb65f0
|
|
INCBIN "gfx/key_config/left_flipper_text.2bpp"
|
|
KeyConfigRightFlipperTextGfx: ; 0xb6680
|
|
INCBIN "gfx/key_config/right_flipper_text.2bpp"
|
|
KeyConfigTiltTextGfx: ; 0xb6710
|
|
INCBIN "gfx/key_config/tilt_text.2bpp"
|
|
KeyConfigMenuTextGfx: ; 0xb6810
|
|
INCBIN "gfx/key_config/menu_text.2bpp"
|
|
KeyConfigKeyConfigTextGfx: ; 0xb6880
|
|
INCBIN "gfx/key_config/key_config_text.2bpp"
|
|
KeyConfigIconsGfx: ; 0xb6900
|
|
INCBIN "gfx/key_config/icons.2bpp"
|
|
|
|
OptionMenuSoundTextTextGfx: ; 0xb6a40
|
|
INCBIN "gfx/option_menu/sound_test_text.2bpp"
|
|
OptionMenuOnOffTextGfx: ; 0xb6ad0
|
|
INCBIN "gfx/option_menu/on_off_text.2bpp"
|
|
OptionMenuBGMSETextGfx: ; 0xb6b10
|
|
INCBIN "gfx/option_menu/bgm_se_text.2bpp"
|
|
|
|
StageRedFieldTopCollisionAttributes5: ; 0xb6c00
|
|
INCBIN "data/collision/maps/red_stage_top_5.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
StageRedFieldTopCollisionAttributes4: ; 0xb7400
|
|
INCBIN "data/collision/maps/red_stage_top_4.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palette_maps_5.asm"
|
|
|
|
SECTION "bank2e", ROMX, BANK[$2e]
|
|
|
|
StageRedFieldTopCollisionAttributes3: ; 0xb8000
|
|
INCBIN "data/collision/maps/red_stage_top_3.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
StageRedFieldTopCollisionAttributes2: ; 0xb8800
|
|
INCBIN "data/collision/maps/red_stage_top_2.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
StageRedFieldTopCollisionAttributes1: ; 0xb9000
|
|
INCBIN "data/collision/maps/red_stage_top_1.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
StageRedFieldTopCollisionAttributes0: ; 0xb9800
|
|
INCBIN "data/collision/maps/red_stage_top_0.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
StageRedFieldTopTilemap_GameBoy: ; 0xba000
|
|
INCBIN "gfx/tilemaps/stage_red_field_top_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageRedFieldBottomTilemap_GameBoy: ; 0xba800
|
|
INCBIN "gfx/tilemaps/stage_red_field_bottom_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageRedFieldTopCollisionMasks0: ; 0xbb000
|
|
INCBIN "data/collision/masks/red_stage_top_0.masks"
|
|
|
|
StageRedFieldTopCollisionMasks1: ; 0xbb800
|
|
INCBIN "data/collision/masks/red_stage_top_1.masks"
|
|
|
|
SECTION "bank2f", ROMX, BANK[$2f]
|
|
|
|
StageRedFieldTopCollisionMasks2: ; 0xbc000
|
|
INCBIN "data/collision/masks/red_stage_top_2.masks"
|
|
|
|
StageRedFieldTopCollisionMasks3: ; 0xbc800
|
|
INCBIN "data/collision/masks/red_stage_top_3.masks"
|
|
|
|
StageRedFieldTopCollisionAttributes7: ; 0xbd000
|
|
INCBIN "data/collision/maps/red_stage_top_7.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
StageRedFieldBottomCollisionAttributes: ; 0xbd800
|
|
INCBIN "data/collision/maps/red_stage_bottom.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageRedFieldTopTilemap_GameBoyColor: ; 0xbe000
|
|
INCBIN "gfx/tilemaps/stage_red_field_top_gameboycolor.map"
|
|
|
|
StageRedFieldTopTilemap2_GameBoyColor: ; 0xbe400
|
|
INCBIN "gfx/tilemaps/stage_red_field_top_gameboycolor_2.map"
|
|
|
|
StageRedFieldBottomTilemap_GameBoyColor: ; 0xbe800
|
|
INCBIN "gfx/tilemaps/stage_red_field_bottom_gameboycolor.map"
|
|
|
|
StageRedFieldBottomTilemap2_GameBoyColor: ; 0xbec00
|
|
INCBIN "gfx/tilemaps/stage_red_field_bottom_gameboycolor_2.map"
|
|
|
|
StageBlueFieldTopTilemap_GameBoy: ; 0xbf000
|
|
INCBIN "gfx/tilemaps/stage_blue_field_top_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
EraseAllDataTilemap: ; 0xbf800
|
|
INCBIN "gfx/tilemaps/erase_all_data.map"
|
|
EraseAllDataBGAttributes: ; 0xbfc00
|
|
INCBIN "gfx/bgattr/erase_all_data.bgattr"
|
|
|
|
SECTION "bank30", ROMX, BANK[$30]
|
|
|
|
StageBlueFieldBottomTilemap_GameBoy: ; 0xc0000
|
|
INCBIN "gfx/tilemaps/stage_blue_field_bottom_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageBlueFieldTopCollisionMasks: ; 0xc0800
|
|
INCBIN "data/collision/masks/blue_stage_top.masks"
|
|
|
|
StageBlueFieldTopCollisionAttributesBallEntrance: ; 0xc1000
|
|
INCBIN "data/collision/maps/blue_stage_top_ball_entrance.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
HighScoresTilemap2: ; 0xc1800
|
|
INCBIN "gfx/tilemaps/high_scores_screen_2.map"
|
|
HighScoresTilemap5: ; 0xc1c00
|
|
INCBIN "gfx/tilemaps/high_scores_screen_5.map"
|
|
HighScoresTilemap: ; 0xc2000
|
|
INCBIN "gfx/tilemaps/high_scores_screen.map"
|
|
HighScoresTilemap4: ; 0xc2400
|
|
INCBIN "gfx/tilemaps/high_scores_screen_4.map"
|
|
|
|
StageBlueFieldTopCollisionAttributes: ; 0xc2800
|
|
INCBIN "data/collision/maps/blue_stage_top.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
OptionMenuTilemap2: ; 0xc3000
|
|
INCBIN "gfx/tilemaps/option_menu_2.map"
|
|
|
|
ds $1c0 ; free space
|
|
|
|
OptionMenuTilemap4: ; 0xc3400
|
|
INCBIN "gfx/tilemaps/option_menu_4.map"
|
|
INCBIN "gfx/tilemaps/unused_tilemap_c3640.map"
|
|
|
|
OptionMenuTilemap: ; 0xc3800
|
|
INCBIN "gfx/tilemaps/option_menu.map"
|
|
|
|
ds $1c0 ; free space
|
|
|
|
OptionMenuTilemap3: ; 0xc3c00
|
|
INCBIN "gfx/tilemaps/option_menu_3.map"
|
|
INCBIN "gfx/tilemaps/unused_tilemap_c3640.map"
|
|
|
|
SECTION "bank31", ROMX, BANK[$31]
|
|
|
|
StageBlueFieldBottomCollisionAttributes: ; 0xc4000
|
|
INCBIN "data/collision/maps/blue_stage_bottom.collision"
|
|
INCBIN "data/collision/unused_trailing_data.bin"
|
|
|
|
Data_c4800:
|
|
dr $c4800, $c4c00
|
|
|
|
Data_c4c00:
|
|
dr $c4c00, $c5000
|
|
|
|
Data_c5000:
|
|
dr $c5000, $c5100
|
|
|
|
Data_c5100:
|
|
dr $c5100, $c5120
|
|
|
|
Data_c5120:
|
|
dr $c5120, $c5400
|
|
|
|
Data_c5400:
|
|
dr $c5400, $c5800
|
|
|
|
TitlescreenTilemap: ; 0xc5800
|
|
INCBIN "gfx/tilemaps/titlescreen.map"
|
|
TitlescreenBGAttributes: ; 0xc5c00
|
|
INCBIN "gfx/bgattr/titlescreen.bgattr"
|
|
|
|
ds $1c0 ; free space
|
|
|
|
CopyrightScreenTilemap: ; 0xc6000
|
|
INCBIN "gfx/tilemaps/copyright_screen.map"
|
|
CopyrightScreenBGAttributes: ; 0xc6400
|
|
INCBIN "gfx/bgattr/copyright_screen.bgattr"
|
|
|
|
StageBlueFieldTopTilemap_GameBoyColor: ; 0xc6800
|
|
INCBIN "gfx/tilemaps/stage_blue_field_top_gameboycolor.map"
|
|
StageBlueFieldTopTilemap2_GameBoyColor: ; 0xc6c00
|
|
INCBIN "gfx/tilemaps/stage_blue_field_top_gameboycolor_2.map"
|
|
|
|
StageBlueFieldBottomTilemap_GameBoyColor: ; 0xc7000
|
|
INCBIN "gfx/tilemaps/stage_blue_field_bottom_gameboycolor.map"
|
|
StageBlueFieldBottomTilemap2_GameBoyColor: ; 0xc7400
|
|
INCBIN "gfx/tilemaps/stage_blue_field_bottom_gameboycolor_2.map"
|
|
|
|
StageGengarBonusCollisionAttributesBallEntrance: ; 0xc7800
|
|
INCBIN "data/collision/maps/gengar_bonus_ball_entrance.collision"
|
|
|
|
SECTION "bank32", ROMX, BANK[$32]
|
|
|
|
StageGengarBonusCollisionAttributes: ; 0xc8000
|
|
INCBIN "data/collision/maps/gengar_bonus.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
GengarBonusTilemap_GameBoy: ; 0xc8800
|
|
INCBIN "gfx/tilemaps/stage_gengar_bonus_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
GengarBonusBottomTilemap_GameBoyColor: ; 0xc9000
|
|
INCBIN "gfx/tilemaps/stage_gengar_bonus_gameboycolor.map"
|
|
GengarBonusBottomTilemap2_GameBoyColor: ; 0xc9400
|
|
INCBIN "gfx/tilemaps/stage_gengar_bonus_gameboycolor_2.map"
|
|
|
|
MewtwoBonus3Gfx: ; 0xc9800
|
|
INCBIN "gfx/stage/mewtwo_bonus/mewtwo_3.2bpp"
|
|
MewtwoBonus1Gfx: ; 0xc99a0
|
|
INCBIN "gfx/stage/mewtwo_bonus/mewtwo_1.2bpp"
|
|
MewtwoBonus2Gfx: ; 0xc9c00
|
|
INCBIN "gfx/stage/mewtwo_bonus/mewtwo_2.2bpp"
|
|
MewtwoBonus4Gfx: ; 0xc9c60
|
|
INCBIN "gfx/stage/mewtwo_bonus/mewtwo_4.2bpp"
|
|
|
|
ds $100 ; free space
|
|
|
|
StageMewtwoBonusCollisionAttributesBallEntrance: ; 0xca000
|
|
INCBIN "data/collision/maps/mewtwo_bonus_ball_entrance.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageMewtwoBonusCollisionAttributes: ; 0xca800
|
|
INCBIN "data/collision/maps/mewtwo_bonus.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
MewtwoBonusTilemap_GameBoy: ; 0xcb000
|
|
INCBIN "gfx/tilemaps/stage_mewtwo_bonus_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
MewtoBonusBottomTilemap_GameBoyColor: ; 0xcb800
|
|
INCBIN "gfx/tilemaps/stage_mewtwo_bonus_gameboycolor.map"
|
|
MewtoBonusBottomTilemap2_GameBoyColor: ; 0xcbc00
|
|
INCBIN "gfx/tilemaps/stage_mewtwo_bonus_gameboycolor_2.map"
|
|
|
|
SECTION "bank33", ROMX, BANK[$33]
|
|
|
|
MeowthBonusMeowth3Gfx: ; 0xcc000
|
|
INCBIN "gfx/stage/meowth_bonus/meowth_3.2bpp"
|
|
MeowthBonusMeowth1Gfx: ; 0xcc1a0
|
|
INCBIN "gfx/stage/meowth_bonus/meowth_1.2bpp"
|
|
MeowthBonusMeowth2Gfx: ; 0xcc400
|
|
INCBIN "gfx/stage/meowth_bonus/meowth_2.2bpp"
|
|
MeowthBonusMeowth4Gfx: ; 0xcc460
|
|
INCBIN "gfx/stage/meowth_bonus/meowth_4.2bpp"
|
|
|
|
ds $40 ; free space
|
|
|
|
StageMeowthBonusCollisionAttributesBallEntrance: ; 0xcc800
|
|
INCBIN "data/collision/maps/meowth_bonus_ball_entrance.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageMeowthBonusCollisionAttributes: ; 0xcd000
|
|
INCBIN "data/collision/maps/meowth_bonus.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
MeowthBonusTilemap_GameBoy: ; 0xcd800
|
|
INCBIN "gfx/tilemaps/stage_meowth_bonus_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
MeowthBonusTilemap_GameBoyColor: ; 0xce000
|
|
INCBIN "gfx/tilemaps/stage_meowth_bonus_gameboycolor.map"
|
|
MeowthBonusTilemap2_GameBoyColor: ; 0xce400
|
|
INCBIN "gfx/tilemaps/stage_meowth_bonus_gameboycolor_2.map"
|
|
|
|
StageDiglettBonusCollisionAttributesBallEntrance: ; 0xce800
|
|
INCBIN "data/collision/maps/diglett_bonus_ball_entrance.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageDiglettBonusCollisionAttributes: ; 0xcf000
|
|
INCBIN "data/collision/maps/diglett_bonus.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
DiglettBonusTilemap_GameBoy: ; 0xcf800
|
|
INCBIN "gfx/tilemaps/stage_diglett_bonus_gameboy.map"
|
|
|
|
SECTION "bank34", ROMX, BANK[$34]
|
|
|
|
INCLUDE "data/collision/mon_collision_masks.asm"
|
|
|
|
INCBIN "gfx/tilemaps/unused_tilemap_d2800.map"
|
|
|
|
DiglettBonusTilemap_GameBoyColor: ; 0xd3000
|
|
INCBIN "gfx/tilemaps/stage_diglett_bonus_gameboycolor.map"
|
|
DiglettBonusTilemap2_GameBoyColor: ; 0xd3400
|
|
INCBIN "gfx/tilemaps/stage_diglett_bonus_gameboycolor_2.map"
|
|
|
|
INCBIN "data/unused_data_d3800.bin"
|
|
|
|
SECTION "bank35", ROMX, BANK[$35]
|
|
|
|
StageSeelBonusCollisionAttributesBallEntrance: ; 0xd4000
|
|
INCBIN "data/collision/maps/seel_bonus_ball_entrance.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
StageSeelBonusCollisionAttributes: ; 0xd4800
|
|
INCBIN "data/collision/maps/seel_bonus.collision"
|
|
|
|
ds $400 ; free space
|
|
|
|
SeelBonusTilemap_GameBoy: ; 0xd5000
|
|
INCBIN "gfx/tilemaps/stage_seel_bonus_gameboy.map"
|
|
|
|
ds $400 ; free space
|
|
|
|
SeelBonusTilemap_GameBoyColor: ; 0xd5800
|
|
INCBIN "gfx/tilemaps/stage_seel_bonus_gameboycolor.map"
|
|
SeelBonusTilemap2_GameBoyColor: ; 0xd5c00
|
|
INCBIN "gfx/tilemaps/stage_seel_bonus_gameboycolor_2.map"
|
|
|
|
Alphabet1Gfx: ; 0xd6000
|
|
INCBIN "gfx/stage/alphabet_1.2bpp"
|
|
|
|
GFX_d61a0: INCBIN "gfx/unknown/d61a0.2bpp"
|
|
GFX_d61b0: INCBIN "gfx/unknown/d61b0.2bpp"
|
|
GFX_d61c0: INCBIN "gfx/stage/e_acute_mono.2bpp"
|
|
GFX_d61d0: INCBIN "gfx/unknown/d61d0.2bpp"
|
|
GFX_d61e0: INCBIN "gfx/unknown/d61e0.2bpp"
|
|
|
|
ds $10 ; free space
|
|
|
|
Alphabet2Gfx: ; 0xd6200
|
|
INCBIN "gfx/stage/alphabet_2.2bpp"
|
|
|
|
GFX_d63a0: INCBIN "gfx/unknown/d63a0.2bpp"
|
|
GFX_d63b0: INCBIN "gfx/unknown/d63b0.2bpp"
|
|
GFX_d63c0: INCBIN "gfx/stage/e_acute_color.2bpp"
|
|
GFX_d63d0: INCBIN "gfx/unknown/d63d0.2bpp"
|
|
GFX_d63e0: INCBIN "gfx/unknown/d63e0.2bpp"
|
|
|
|
dr $d63f0, $d6410
|
|
|
|
GFX_d6410: INCBIN "gfx/unknown/d6410.2bpp"
|
|
|
|
dr $d6420, $d6430
|
|
|
|
GFX_d6430: INCBIN "gfx/unknown/d6430.2bpp"
|
|
GFX_d6440: INCBIN "gfx/unknown/d6440.2bpp"
|
|
|
|
InGameMenuSymbolsGfx: ; 0xd6450
|
|
INCBIN "gfx/stage/menu_symbols.2bpp"
|
|
GFX_d6480: INCBIN "gfx/unknown/d6480.2bpp"
|
|
|
|
ds $170 ; free space
|
|
|
|
StageBlueFieldTopGfx3: ; 0xd6600
|
|
INCBIN "gfx/stage/blue_top/blue_top_3.2bpp"
|
|
StageBlueFieldTopGfx1: ; 0xd67a0
|
|
INCBIN "gfx/stage/blue_top/blue_top_1.2bpp"
|
|
StageBlueFieldTopGfx2: ; 0xd6a00
|
|
INCBIN "gfx/stage/blue_top/blue_top_2.2bpp"
|
|
|
|
StageRedJapaneseCharactersGfx: ; 0xd6c00
|
|
INCBIN "gfx/stage/red_bottom/japanese_characters.2bpp"
|
|
StageRedJapaneseCharactersGfx2: ; 0xd7000
|
|
INCBIN "gfx/stage/red_bottom/japanese_characters_2.2bpp"
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palette_maps_1.asm"
|
|
INCLUDE "gfx/high_scores/high_scores_transition_palettes_2.asm"
|
|
|
|
|
|
SECTION "bank36", ROMX, BANK[$36]
|
|
|
|
PaletteMap_d8000: ; 0xd8000
|
|
db $6, $6, $6, $6, $6, $6
|
|
db $6, $6, $6, $6, $6, $6
|
|
db $6, $6, $6, $6, $6, $6
|
|
db $6, $6, $6, $6, $6, $6
|
|
|
|
ds $3e8 ; free space
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palette_maps_2.asm"
|
|
|
|
SaverTextOffGfx: ; 0xd8c00
|
|
INCBIN "gfx/stage/saver_off.2bpp"
|
|
|
|
AgainTextOffGfx: ; 0xd8c40
|
|
INCBIN "gfx/stage/again_off.2bpp"
|
|
|
|
CatchTextGfx:
|
|
INCBIN "gfx/stage/catch.w48.2bpp"
|
|
dr $d8ce0, $d8e80
|
|
|
|
Data_d8e80:
|
|
dr $d8e80, $d8f60
|
|
|
|
CaughtPokeballGfx: ; 0xd8f60
|
|
INCBIN "gfx/stage/caught_pokeball.2bpp"
|
|
|
|
ds $80 ; free space
|
|
|
|
StageRedFieldBottomCollisionMasks: ; 0xd9000
|
|
INCBIN "data/collision/masks/red_stage_bottom.masks"
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palette_maps_3.asm"
|
|
|
|
SelectGameboyTargetTextGfx: ; 0xd9c00
|
|
INCBIN "gfx/select_gb_target_text.2bpp"
|
|
|
|
CopyrightTextGfx: ; 0xda000
|
|
INCBIN "gfx/copyright_text.2bpp"
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palette_maps_4.asm"
|
|
|
|
StageSharedBonusSlotGlowGfx: ; 0xdac00
|
|
INCBIN "gfx/stage/shared/bonus_slot_glow.2bpp"
|
|
|
|
ds $80 ; free space
|
|
|
|
StageSharedBonusSlotGlow2Gfx: ; 0xdade0
|
|
INCBIN "gfx/stage/shared/bonus_slot_glow_2.2bpp"
|
|
|
|
StageRedFieldTopGfx5: ; 0xdae00
|
|
INCBIN "gfx/stage/red_top/red_top_5.2bpp"
|
|
|
|
TimerDigitsGfx2: ; 0xdb000
|
|
INCBIN "gfx/stage/timer_digits.2bpp"
|
|
|
|
ds $a0 ; free space
|
|
|
|
TimerDigitsGfx: ; 0xdb200
|
|
INCBIN "gfx/stage/timer_digits.2bpp"
|
|
|
|
ds $a0 ; free space
|
|
|
|
GengarBonusGroundGfx: ; 0xdb400
|
|
INCBIN "gfx/stage/gengar_bonus/gengar_ground.2bpp"
|
|
|
|
ds $40 ; free space
|
|
|
|
StageGengarBonusCollisionMasks: ; 0xdb600
|
|
INCBIN "data/collision/masks/gengar_bonus.masks"
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_palettes_2.asm"
|
|
INCLUDE "data/mon_gfx/mon_billboard_palettes_4.asm"
|
|
|
|
StageRedFieldTopGfx6: ; 0xdbb80
|
|
INCBIN "gfx/stage/red_top/red_top_6.2bpp"
|
|
|
|
ds $c0 ; free space
|
|
|
|
StageMewtwoBonusCollisionMasks: ; 0xdbc80
|
|
INCBIN "data/collision/masks/mewtwo_bonus.masks"
|
|
|
|
INCLUDE "data/mon_gfx/mon_animated_palettes_3.asm"
|
|
|
|
EvolutionTrinketsGfx:
|
|
INCBIN "gfx/stage/shared/evolution_trinkets.2bpp"
|
|
|
|
dr $dbf60, $dc000
|
|
|
|
SECTION "bank37", ROMX, BANK[$37]
|
|
|
|
StageSharedArrowsGfx: ; 0xdc000
|
|
INCBIN "gfx/stage/shared/arrows.2bpp"
|
|
|
|
ds $80 ; free space
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palettes_5.asm"
|
|
|
|
StageMeowthBonusCollisionMasks: ; 0xdc600
|
|
INCBIN "data/collision/masks/meowth_bonus.masks"
|
|
|
|
INCLUDE "data/mon_gfx/mon_billboard_palettes_6.asm"
|
|
INCLUDE "data/stage_palettes.asm"
|
|
INCLUDE "data/billboard/map_palettes_2.asm"
|
|
|
|
PokeBallObjPalette: ; 0xdd168
|
|
RGB 21, 21, 21
|
|
RGB 31, 31, 31
|
|
RGB 31, 5, 4
|
|
RGB 0, 0, 0
|
|
GreatBallObjPalette: ; 0xdd170
|
|
RGB 21, 21, 21
|
|
RGB 31, 31, 31
|
|
RGB 2, 8, 31
|
|
RGB 0, 0, 0
|
|
UltraBallObjPalette: ; 0xdd178
|
|
RGB 21, 21, 21
|
|
RGB 31, 31, 31
|
|
RGB 27, 21, 0
|
|
RGB 0, 0, 0
|
|
MasterBallObjPalette: ; 0xdd180
|
|
RGB 21, 21, 21
|
|
RGB 31, 31, 31
|
|
RGB 21, 3, 21
|
|
RGB 0, 0, 0
|
|
|
|
PaletteData_dd188: ; 0xdd188
|
|
RGB 31, 31, 31
|
|
RGB 31, 29, 0
|
|
RGB 29, 3, 2
|
|
RGB 2, 2, 2
|
|
PaletteData_dd190: ; 0xdd190
|
|
RGB 31, 31, 31
|
|
RGB 9, 22, 6
|
|
RGB 4, 13, 31
|
|
RGB 2, 2, 2
|
|
PaletteData_dd198: ; 0xdd198
|
|
RGB 31, 31, 31
|
|
RGB 31, 26, 2
|
|
RGB 31, 3, 0
|
|
RGB 0, 0, 0
|
|
PaletteData_dd1a0: ; 0xdd1a0
|
|
RGB 31, 31, 31
|
|
RGB 31, 26, 2
|
|
RGB 31, 3, 0
|
|
RGB 0, 0, 0
|
|
|
|
SECTION "bank38", ROMX, BANK[$38]
|
|
; unused bank
|
|
|
|
SECTION "bank39", ROMX, BANK[$39]
|
|
|
|
Data_e4000:
|
|
dr $e4000, $e5000 ; 0xe4000
|
|
|
|
SECTION "bank3a", ROMX, BANK[$3a]
|
|
|
|
GengarCollisionAngles:
|
|
INCBIN "data/collision/gengar_collision_angles.bin"
|
|
|
|
HaunterCollisionAngles:
|
|
INCBIN "data/collision/haunter_collision_angles.bin"
|
|
|
|
CircularCollisionAngles: ; 0xe9100
|
|
INCBIN "data/collision/circle_collision_angles.bin"
|
|
|
|
MeowthCollisionAngles:
|
|
INCBIN "data/collision/meowth_collision_angles.bin"
|
|
|
|
MeowthJewelCollisionAngles:
|
|
INCBIN "data/collision/meowth_jewel_collision_angles.bin"
|
|
|
|
SECTION "bank3b", ROMX, BANK[$3b]
|
|
Data_ec000:
|
|
dr $ec000, $f0000 ; 0xec000
|
|
|
|
SECTION "bank3c", ROMX, BANK[$3c]
|
|
Data_f0000:
|
|
dr $f0000, $f2400 ; 0xf0000
|
|
|
|
TiltRightOnlyForce: ; 0xf2400
|
|
INCBIN "data/tilt/right_only"
|
|
TiltUpRightForce:
|
|
INCBIN "data/tilt/up_right"
|
|
TiltUpOnlyForce:
|
|
INCBIN "data/tilt/up_only"
|
|
TiltUpLeftForce:
|
|
INCBIN "data/tilt/up_left"
|
|
TiltLeftOnlyForce:
|
|
INCBIN "data/tilt/left_only"
|
|
|
|
SECTION "bank3d", ROMX, BANK[$3d]
|
|
|
|
FlipperHorizontalCollisionAttributes: ; 0xf4000
|
|
INCBIN "data/collision/flippers/horizontal_attributes_0"
|
|
|
|
SECTION "bank3e", ROMX, BANK[$3e]
|
|
|
|
FlipperHorizontalCollisionAttributes2: ; 0xf8000
|
|
INCBIN "data/collision/flippers/horizontal_attributes_1"
|
|
|
|
FlipperVerticalCollisionAttributes: ; 0xfa000
|
|
INCBIN "data/collision/flippers/vertical_attributes_0"
|
|
|
|
SECTION "bank3f", ROMX, BANK[$3f]
|
|
|
|
FlipperVerticalCollisionAttributes2: ; 0xfc000
|
|
INCBIN "data/collision/flippers/vertical_attributes_1"
|