pokeyellow/engine/bank3e.asm

4499 lines
59 KiB
NASM

SurfingPikachuMinigame:
call SurfingPikachuMinigame_BlankPals
call DelayFrame
call DelayFrame
call DelayFrame
ld a, [hTilesetType]
push af
xor a
ld [hTilesetType], a
ld a, [wUpdateSpritesEnabled]
push af
ld a, $ff
ld [wUpdateSpritesEnabled], a
ld a, [rIE]
push af
xor a
ld [rIF], a
ld a, $f
ld [rIE], a
ld a, $8
ld [rSTAT], a
ld a, [H_AUTOBGTRANSFERDEST + 1]
push af
ld a, $98
ld [H_AUTOBGTRANSFERDEST + 1], a
call Func_f8fb3
call Func_f807a
xor a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
call ClearObjectAnimationBuffers
call ClearSprites
xor a
ld [hLCDCPointer], a
ld [hSCX], a
ld [hSCY], a
ld a, $90
ld [hWY], a
call DelayFrame
pop af
ld [H_AUTOBGTRANSFERDEST + 1], a
xor a
ld [rIF], a
pop af
ld [rIE], a
xor a
ld [rSTAT], a
call RunDefaultPaletteCommand
call Func_0f16
call PlayDefaultMusic
call GBPalNormal
pop af
ld [wUpdateSpritesEnabled], a
pop af
ld [hTilesetType], a
ret
Func_f807a:
call Func_f8116
call DelayFrame
ld b, $e
call RunPaletteCommand
.loop
ld a, [wc5d1]
bit 7, a
ret nz
call Func_f923f
call Func_f80ac
ret nz
call Func_f8282
ld a, $3c
ld [wCurrentAnimatedObjectOAMBufferOffset], a
call RunObjectAnimations
call Func_f8848
call Func_f80a8
call Func_f80c4
jr .loop
Func_f80a8:
call DelayFrame
ret
Func_f80ac:
ld hl, wPreventBlackout
bit 1, [hl]
ret z
ld a, [hJoyPressed]
and $4
ret
Func_f80b7:
ld a, [hJoyPressed]
and $8
ret z
ld hl, wc5e2
ld a, [hl]
xor $1
ld [hl], a
ret
Func_f80c4:
ld a, [wc634]
and a
ret z
ld hl, wChannelNoteDelayCounters
ld a, $1
cp [hl]
ret nz
inc hl
cp [hl]
ret nz
inc hl
cp [hl]
ret nz
ld a, [wc5e3]
ld e, a
ld a, [wc5e3 + 1]
and $3
ld d, a
sla e
rl d
ld e, d
ld d, $0
ld hl, Unkn_f80f5
add hl, de
add hl, de
ld a, [hli]
ld [wMusicTempo + 1], a
ld a, [hl]
ld [wMusicTempo], a
ret
Unkn_f80f5:
dw $75
dw $6d
dw $65
dw $5d
dw $55
Func_f80ff:
ld hl, wChannelNoteDelayCounters
ld a, $1
cp [hl]
ret nz
inc hl
cp [hl]
ret nz
inc hl
cp [hl]
ret nz
ld a, $75
ld [wMusicTempo + 1], a
xor a
ld [wMusicTempo], a
ret
Func_f8116:
call Func_f9279
call ClearSprites
call DisableLCD
ld hl, wSerialEnemyMonsPatchList
ld bc, $67
xor a
call FillMemory
ld hl, wc700
ld bc, $200
xor a
call FillMemory
xor a
ld [H_AUTOBGTRANSFERENABLED], a
call ClearObjectAnimationBuffers
ld hl, SurfingPikachu1Graphics
ld de, $9000
ld bc, $500
ld a, BANK(SurfingPikachu1Graphics)
call FarCopyData
ld hl, SurfingPikachu1Graphics + $410
ld de, $8000
ld bc, $1000
ld a, BANK(SurfingPikachu1Graphics)
call FarCopyData
ld a, Unkn_f93d3 % $100
ld [wAnimatedObjectSpawnStateDataPointer], a
ld a, Unkn_f93d3 / $100
ld [wAnimatedObjectSpawnStateDataPointer + 1], a
ld a, Jumptable_f93fa % $100
ld [wAnimatedObjectJumptablePointer], a
ld a, Jumptable_f93fa / $100
ld [wAnimatedObjectJumptablePointer + 1], a
ld a, Unkn_f9507 % $100
ld [wAnimatedObjectOAMDataPointer], a
ld a, Unkn_f9507 / $100
ld [wAnimatedObjectOAMDataPointer + 1], a
ld a, Unkn_f9405 % $100
ld [wAnimatedObjectFramesDataPointer], a
ld a, Unkn_f9405 / $100
ld [wAnimatedObjectFramesDataPointer + 1], a
ld hl, vBGMap0
ld bc, $800
ld a, $0
call FillMemory
ld hl, $98c0
ld bc, $180
ld a, $b
call FillMemory
ld a, $1
lb de, $74, $58
call SpawnAnimatedObject
ld a, $74
ld [wc5ea], a
call Func_f9223
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7e
ld [hWY], a
ld a, $42
ld [hLCDCPointer], a
ld a, $40
ld [wc5e3], a
xor a
ld [wc5e3 + 1], a
xor a
ld [wc5d6], a
ld a, $60
ld [wc5d7], a
ld hl, wc61a
ld bc, $14
ld a, $74
call FillMemory
call Func_f81ff
call Func_f8256
ld a, $e3
ld [rLCDC], a
call Func_f81e9
ld a, $e4
ld [rOBP0], a
ld a, $e0
ld [rOBP1], a
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
ret
Func_f81e9:
ld a, [wOnSGB]
and a
jr nz, .asm_f81f7
ld a, $d0
ld [rBGP], a
call UpdateGBCPal_BGP
ret
.asm_f81f7
ld a, $e4
ld [rBGP], a
call UpdateGBCPal_BGP
ret
Func_f81ff:
ld hl, wSpriteDataEnd
ld de, Unkn_f8249
ld b, $97
ld c, $80
ld a, $4
call Func_f8233
ld de, Unkn_f8248
ld b, $96
ld c, $50
ld a, $1
call Func_f8233
ld de, Unkn_f824d
ld b, $14
ld c, $20
ld a, $5
call Func_f8233
ld de, Unkn_f8252
ld b, $20
ld c, $80
ld a, $4
call Func_f8233
ret
Func_f8233:
.asm_f8233
push af
ld [hl], b
inc hl
ld [hl], c
inc hl
ld a, [de]
ld [hl], a
inc hl
ld [hl], $0
inc hl
ld a, c
add $8
ld c, a
inc de
pop af
dec a
jr nz, .asm_f8233
ret
Unkn_f8248:
db $fe
Unkn_f8249:
db $d0
db $d0
db $d0
db $d0
Unkn_f824d:
db $ec
db $ed
db $ed
db $ee
db $ef
Unkn_f8252:
db $ec
db $ed
db $ee
db $ef
Func_f8256:
ld de, $9c21
ld hl, Unkn_f8279
ld c, $9
.asm_f825e
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .asm_f825e
ld hl, $9c01
ld [hl], $15
ld hl, $9c02
ld [hl], $16
ld hl, $9c2c
ld [hl], $1b
ld hl, $9c2d
ld [hl], $1c
ret
Unkn_f8279:
db $17
db $18
db $19
db $19
db $19
db $19
db $19
db $19
db $19
Func_f8282:
ld a, [wc5d1]
ld e, a
ld d, $0
ld hl, Jumptable_f8291
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
Jumptable_f8291:
dw Func_f82ab
dw Func_f82bd
dw Func_f8324
dw Func_f835c
dw Func_f838c
dw Func_f8399
dw Func_f83aa
dw Func_f83bb
dw Func_f83cc
dw Func_f83e3
dw Func_f8406
dw Func_f840f
dw Func_f841d
Func_f82ab:
ld a, $2
lb de, $48, $e0
call SpawnAnimatedObject
ld hl, wc5d1
inc [hl]
ld a, $1
ld [wc634], a
ret
Func_f82bd:
ld a, [wc5e5]
cp $18
jr nc, .asm_f82e8
ld hl, wc5d6
ld a, [hli]
or [hl]
and a
jr z, .asm_f82f6
call Random
ld [wc5d5], a
call Func_f9210
call Func_f88ae
call Func_f886b
call Func_f8cb0
call Func_f844c
call Func_f88e4
call Func_f88fd
ret
.asm_f82e8
ld hl, wc5d1
inc [hl]
xor a
ld [wc634], a
ld a, $c0
ld [wc632], a
ret
.asm_f82f6
ld a, $1
Func_f82f8:
ld [wc630], a
ld a, $c
ld [wc5d1], a
Func_f8300:
ld a, $80
ld [wc631], a
ld a, $b
lb de, $88, $58
call SpawnAnimatedObject
ld hl, $7
add hl, bc
ld [hl], $80
ld hl, $b
add hl, bc
ld [hl], $80
ld hl, $c
add hl, bc
ld [hl], $30
xor a
ld [wc634], a
ret
Func_f8324:
call Func_f8440
jr c, .asm_f833d
xor a
ld [wc5d5], a
call Func_f9210
call Func_f88ae
call Func_f886b
call Func_f8c97
call Func_f80ff
ret
.asm_f833d
ld hl, wc5d1
inc [hl]
ld a, $90
ld [hSCX], a
ld a, $72
ld [wc5d3], a
ld a, $4
ld [wc5d2], a
xor a
ld [hLCDCPointer], a
ld [wc617], a
ld [wc618], a
ld [wc619], a
ret
Func_f835c:
ld a, [hSCX]
and a
jr z, .asm_f837b
call Func_f9210
call Func_f88ae
call Func_f886b
ld a, [hSCX]
dec a
dec a
dec a
dec a
ld [hSCX], a
ld a, $e0
ld [wc62e], a
call Func_f8cc7
ret
.asm_f837b
xor a
ld [wc5e3], a
ld [wc5e3 + 1], a
ld hl, wc5d1
inc [hl]
ld a, $5
ld [wc5d2], a
ret
Func_f838c:
call Func_f891e
ld a, $20
ld [wc632], a
ld hl, wc5d1
inc [hl]
ret
Func_f8399:
call Func_f8440
ret nc
call Func_f8a92
ld a, $40
ld [wc632], a
ld hl, wc5d1
inc [hl]
ret
Func_f83aa:
call Func_f8440
ret nc
call Func_f8ae4
ld a, $40
ld [wc632], a
ld hl, wc5d1
inc [hl]
ret
Func_f83bb:
call Func_f8440
ret nc
call Func_f8b7a
ld a, $40
ld [wc632], a
ld hl, wc5d1
inc [hl]
ret
Func_f83cc:
call Func_f8440
ret nc
call Func_f8aa9
push af
call Func_f8b5d
pop af
ret nc
ld a, $40
ld [wc632], a
ld hl, wc5d1
inc [hl]
ret
Func_f83e3:
call Func_f8440
ret nc
call Func_f8afb
push af
call Func_f8b5d
pop af
ret nc
ld a, $80
ld [wc632], a
ld hl, wc5d1
inc [hl]
call Func_f8b92
ret nc
call Func_f8a7c
Func_f83ff:
ld a, $6
ld [wc5d2], a
ret
Func_f8406:
call Func_f8440
Func_f8408:
ret nc
ld hl, wc5d1
inc [hl]
ret
Func_f840f:
call Func_f9210
ld a, [hJoyPressed]
and $1
ret z
ld hl, wc5d1
set 7, [hl]
ret
Func_f841d:
call Func_f9210
call Func_f88ae
call Func_f886b
call Func_f8cb0
call Func_f80ff
ld hl, wc631
ld a, [hl]
and a
jr z, .asm_f8435
dec [hl]
ret
.asm_f8435
ld a, [hJoyPressed]
and $1
ret z
ld hl, wc5d1
set 7, [hl]
ret
Func_f8440:
ld hl, wc632
ld a, [hl]
and a
jr z, .asm_f844a
dec [hl]
and a
ret
.asm_f844a
scf
ret
Func_f844c:
ld a, [wc5e6]
ld h, a
ld a, [wc5e7]
ld l, a
ld a, [wc5e3]
ld e, a
ld a, [wc5e3 + 1]
ld d, a
add hl, de
ld a, h
ld [wc5e6], a
ld a, l
ld [wc5e7], a
ret nc
ld hl, wc5e5
inc [hl]
ld hl, wOAMBuffer + 4 * 4 + 1
dec [hl]
dec [hl]
ret
Func_f8470
ld a, [wc5d2]
ld e, a
ld d, $0
ld hl, Jumptable_f847f
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
Jumptable_f847f:
dw Func_f848d
dw Func_f84e2
dw Func_f8516
dw Func_f8545
dw Func_f8561
dw Func_f856d
dw Func_f8579
Func_f848d:
ld a, [wc630]
and a
jr nz, .asm_f84d2
call Func_f87b5
ld a, [wc5ea]
ld hl, $5
add hl, bc
ld [hl], a
call Func_f871e
jr c, .asm_f84aa
call Func_f8742
call Func_f86b8
ret
.asm_f84aa
call Func_f8742
ld a, $1
ld [wc5d2], a
xor a
ld hl, $c
add hl, bc
ld [hl], a
ld hl, $d
add hl, bc
ld [hl], a
ld hl, $e
add hl, bc
ld [hl], a
ld [wc5d9], a
ld [wc62f], a
xor a
ld [wChannelSoundIDs + CH7], a
ld a, $91
call PlaySound
ret
.asm_f84d2
xor a
ld [wc5e3], a
ld [wc5e3 + 1], a
ld a, $4
ld [wc5d2], a
call Func_f8742
ret
Func_f84e2:
call Func_f8598
call Func_f928c
ret nc
call Func_f8606
jr c, .asm_f84fd
call Func_f8bed
ld hl, $c
add hl, bc
ld [hl], $0
ld a, $2
ld [wc5d2], a
ret
.asm_f84fd
ld a, $3
ld [wc5d2], a
ld a, $60
ld [wc5e1], a
ld a, $10
call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters
xor a
ld [wChannelSoundIDs + CH7], a
ld a, $93
call PlaySound
ret
Func_f8516:
ld hl, $c
add hl, bc
ld a, [hl]
cp $20
jr nc, .asm_f8539
inc [hl]
inc [hl]
inc [hl]
inc [hl]
ld d, $4
call Func_f9362
ld hl, $7
add hl, bc
ld [hl], a
call Func_f87b5
ld a, [wc5ea]
ld hl, $5
add hl, bc
ld [hl], a
ret
.asm_f8539
ld hl, $7
add hl, bc
ld [hl], $0
ld a, $0
ld [wc5d2], a
ret
Func_f8545:
ld hl, wc5e1
ld a, [hl]
and a
jr z, .asm_f8556
dec [hl]
ld a, [wc5ea]
ld hl, $5
add hl, bc
ld [hl], a
ret
.asm_f8556
ld a, $0
ld [wc5d2], a
ld a, $4
call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters
ret
Func_f8561:
ld a, [wc5ea]
ld hl, $5
add hl, bc
ld [hl], a
call Func_f8742
ret
Func_f856d:
ld a, $f
call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters
ld hl, $c
add hl, bc
ld [hl], $0
ret
Func_f8579:
ld hl, $c
add hl, bc
ld a, [hl]
inc [hl]
inc [hl]
and $3f
cp $20
jr c, .asm_f8591
ld d, $10
call Func_f9362
ld hl, $7
add hl, bc
ld [hl], a
ret
.asm_f8591
ld hl, $7
add hl, bc
ld [hl], $0
ret
Func_f8598:
ld de, hJoy5
ld a, [de]
and $20
jr nz, .asm_f85a6
ld a, [de]
and $10
jr nz, .asm_f85cc
ret
.asm_f85a6
ld hl, $e
add hl, bc
ld [hl], $0
ld hl, $d
add hl, bc
ld a, [hl]
inc [hl]
cp $b
jr c, .asm_f85be
call Func_f85f2
ld hl, wc62f
set 0, [hl]
.asm_f85be
ld hl, $1
add hl, bc
ld a, [hl]
cp $e
jr nc, .asm_f85c9
inc [hl]
ret
.asm_f85c9
ld [hl], $1
ret
.asm_f85cc
ld hl, $d
add hl, bc
ld [hl], $0
ld hl, $e
add hl, bc
ld a, [hl]
inc [hl]
cp $d
jr c, .asm_f85e4
call Func_f85f2
ld hl, wc62f
set 1, [hl]
.asm_f85e4
ld hl, $1
add hl, bc
ld a, [hl]
cp $1
jr z, .asm_f85ef
dec [hl]
ret
.asm_f85ef
ld [hl], $e
ret
Func_f85f2:
call Func_f8bdf
xor a
ld hl, $d
add hl, bc
ld [hl], a
ld hl, $e
add hl, bc
ld [hl], a
ld a, $92
call PlaySound
ret
Func_f8606:
ld hl, $1
add hl, bc
ld a, [wc5ef]
cp $6
jr z, .asm_f863d
cp $14
jr z, .asm_f867b
cp $12
jr z, .asm_f867b
cp $7
jr z, .asm_f865c
ld a, [hl]
cp $1
jp z, .asm_f86ad
cp $2
jr z, .asm_f869a
cp $3
jr z, .asm_f869f
cp $4
jr z, .asm_f86a2
cp $5
jr z, .asm_f869f
cp $6
jr z, .asm_f869a
cp $7
jr z, .asm_f86ad
jr .asm_f86ad
.asm_f863d
ld a, [hl]
cp $1
jr z, .asm_f86ad
cp $2
jr z, .asm_f86ad
cp $3
jr z, .asm_f86ad
cp $4
jr z, .asm_f869a
cp $5
jr z, .asm_f869f
cp $6
jr z, .asm_f86a2
cp $7
jr z, .asm_f869f
jr .asm_f86ad
.asm_f865c
ld a, [hl]
cp $1
jr z, .asm_f869f
cp $2
jr z, .asm_f86a2
cp $3
jr z, .asm_f869f
cp $4
jr z, .asm_f869a
cp $5
jr z, .asm_f86ad
cp $6
jr z, .asm_f86ad
cp $7
jr z, .asm_f86ad
jr .asm_f86ad
.asm_f867b
ld a, [hl]
cp $1
jr z, .asm_f86ad
cp $2
jr z, .asm_f869a
cp $3
jr z, .asm_f869f
cp $4
jr z, .asm_f86a2
cp $5
jr z, .asm_f86a2
cp $6
jr z, .asm_f869f
cp $7
jr z, .asm_f869a
jr .asm_f86ad
.asm_f869a
call Func_f86f7
jr .asm_f86a2
.asm_f869f
call Func_f86d0
.asm_f86a2
xor a
ld [wChannelSoundIDs + CH7], a
ld a, $95
call PlaySound
and a
ret
.asm_f86ad
ld a, $40
ld [wc5e3], a
xor a
ld [wc5e3 + 1], a
scf
ret
Func_f86b8:
ld a, [wc5e3 + 1]
cp $2
ret nc
ld h, a
ld a, [wc5e3]
ld l, a
ld de, $2
add hl, de
ld a, h
ld [wc5e3 + 1], a
ld a, l
ld [wc5e3], a
ret
Func_f86d0:
ld a, [wc5e3 + 1]
and a
jr nz, .asm_f86e2
ld a, [wc5e3]
cp $40
jr nc, .asm_f86e2
xor a
ld [wc5e3], a
ret
.asm_f86e2
ld a, [wc5e3 + 1]
ld h, a
ld a, [wc5e3]
ld l, a
ld de, $ffc0
add hl, de
ld a, h
ld [wc5e3 + 1], a
ld a, l
ld [wc5e3], a
ret
Func_f86f7:
ld a, [wc5e3 + 1]
and a
jr nz, .asm_f8709
ld a, [wc5e3]
cp $80
jr nc, .asm_f8709
xor a
ld [wc5e3], a
ret
.asm_f8709
ld a, [wc5e3 + 1]
ld h, a
ld a, [wc5e3]
ld l, a
ld de, $ff80
add hl, de
ld a, h
ld [wc5e3 + 1], a
ld a, l
ld [wc5e3], a
ret
Func_f871e:
ld a, [hSCX]
and $7
cp $3
jr c, .asm_f8740
cp $5
jr nc, .asm_f8740
ld a, [wc5ef]
cp $14
jr nz, .asm_f8740
call Func_f87a8
cp $a
jr c, .asm_f8740
ld [wc5ec], a
call Func_f9284
scf
ret
.asm_f8740
and a
ret
Func_f8742:
ld a, [hSCX]
and $7
cp $3
ret c
cp $5
ret nc
ld a, [wc5ef]
cp $6
jr z, .asm_f8766
cp $14
jr z, .asm_f8766
cp $7
jr z, .asm_f876a
call Func_f8778
ld a, $4
ld hl, $1
add hl, bc
ld [hl], a
ret
.asm_f8766
ld a, $6
jr .asm_f876c
.asm_f876a
ld a, $2
.asm_f876c
ld e, a
ld a, [wc5de]
dec a
add e
ld hl, $1
add hl, bc
ld [hl], a
ret
Func_f8778:
ld hl, wc5e0
ld a, [hl]
inc [hl]
and $7
ret nz
ld a, [wc5df]
and a
jr z, .asm_f8796
ld a, [wc5de]
and a
jr z, .asm_f8791
dec a
ld [wc5de], a
ret
.asm_f8791
xor a
ld [wc5df], a
ret
.asm_f8796
ld a, [wc5de]
cp $2
jr z, .asm_f87a2
inc a
ld [wc5de], a
ret
.asm_f87a2
ld a, $1
ld [wc5df], a
ret
Func_f87a8:
ld a, [wc5e3]
ld l, a
ld a, [wc5e3 + 1]
ld h, a
add hl, hl
add hl, hl
add hl, hl
ld a, h
ret
Func_f87b5:
ld hl, wc5eb
ld a, [hl]
inc [hl]
and $3
ret nz
call Func_f87ce
ld d, a
ld hl, $4
add hl, bc
ld e, [hl]
ld a, $a
push bc
call SpawnAnimatedObject
pop bc
ret
Func_f87ce:
ld a, [hSCX]
and $8
jr nz, .asm_f87d9
ld hl, wc622
jr .asm_f87dc
.asm_f87d9
ld hl, wc623
.asm_f87dc
ld a, [wc5f0]
cp $6
jr z, .asm_f87ed
cp $14
jr z, .asm_f87ed
cp $7
jr z, .asm_f87f5
ld a, [hl]
ret
.asm_f87ed
ld a, [hSCX]
and $7
ld e, a
ld a, [hl]
sub e
ret
.asm_f87f5
ld a, [hSCX]
and $7
add [hl]
ret
Func_f87fb:
ld hl, $4
add hl, bc
ld a, [hl]
cp $58
ret z
add $4
ld [hl], a
ret
Func_f8807:
call MaskCurrentAnimatedObjectStruct
ret
Func_f880b:
ld hl, $b
add hl, bc
ld a, [hl]
and a
ret z
dec [hl]
dec [hl]
ld d, a
ld hl, $c
add hl, bc
ld a, [hl]
inc [hl]
call Func_f9362
cp $80
jr nc, .asm_f8825
xor $ff
inc a
.asm_f8825
ld hl, $7
add hl, bc
ld [hl], a
ret
Func_f882b:
ld hl, $b
add hl, bc
ld a, [hl]
inc [hl]
and $1
ret z
ld hl, $4
add hl, bc
ld a, [hl]
cp $c0
jr z, .asm_f883f
inc [hl]
ret
.asm_f883f
ld a, $1
ld [wc633], a
call MaskCurrentAnimatedObjectStruct
ret
Func_f8848:
ld a, [wc635]
ld e, a
ld d, $0
ld a, [wc5e3]
ld l, a
ld a, [wc5e3 + 1]
ld h, a
add hl, de
ld a, l
ld [wc635], a
ld d, h
ld hl, wOAMBuffer + 5 * 4 + 1
ld e, $9
.asm_f8861
ld a, [hl]
add d
ld [hli], a
inc hl
inc hl
inc hl
dec e
jr nz, .asm_f8861
ret
Func_f886b:
ld a, [wc5ef]
ld a, [hSCX]
add $48
ld e, a
srl e
srl e
srl e
ld d, $0
ld hl, vBGMap0
add hl, de
ld a, [wc5ea]
srl a
srl a
srl a
ld c, a
.asm_f8889
ld a, c
and a
jr z, .asm_f889a
dec c
ld de, $20
add hl, de
ld a, h
and $3
or $98
ld h, a
jr .asm_f8889
.asm_f889a
ld de, wc5ef
ld a, e
ld [H_VBCOPYDEST], a
ld a, d
ld [H_VBCOPYDEST + 1], a
ld a, l
ld [H_VBCOPYSRC], a
ld a, h
ld [H_VBCOPYSRC + 1], a
ld a, $1
ld [H_VBCOPYSIZE], a
ret
Func_f88ae:
ld a, [hSCX]
and $8
jr nz, .asm_f88b9
ld hl, wc621
jr .asm_f88bc
.asm_f88b9
ld hl, wc622
.asm_f88bc
ld a, [wc5ef]
cp $6
jr z, .asm_f88d0
cp $14
jr z, .asm_f88d0
cp $7
jr z, .asm_f88db
ld a, [hl]
ld [wc5ea], a
ret
.asm_f88d0
ld a, [hSCX]
and $7
ld e, a
ld a, [hl]
sub e
ld [wc5ea], a
ret
.asm_f88db
ld a, [hSCX]
and $7
add [hl]
ld [wc5ea], a
ret
Func_f88e4:
ld hl, wc5d6
ld e, $99
call Func_f88f0
ret nc
inc hl
ld e, $99
Func_f88f0:
ld a, [hl]
and a
jr z, .asm_f88fa
sub $1
daa
ld [hl], a
and a
ret
.asm_f88fa
ld [hl], e
scf
ret
Func_f88fd:
ld de, wc5d7
ld hl, wOAMBuffer + 0 * 4 + 2
ld a, [de]
call Func_f890b
ld hl, wOAMBuffer + 2 * 4 + 2
ld a, [de]
Func_f890b:
ld c, a
swap a
and $f
add $d0
ld [hli], a
inc hl
inc hl
inc hl
ld a, c
and $f
add $d0
ld [hl], a
dec de
ret
Func_f891e:
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call FillMemory
ld hl, Tilemap_f8946
coord de, 0, 6
ld bc, Tilemap_f8946End - Tilemap_f8946
call CopyData
call Func_f8a0e
ld hl, wOAMBuffer + 5 * 4 + 1
ld bc, $24
xor a
call FillMemory
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
ret
Tilemap_f8946:
INCBIN "gfx/unknown_f8946.map"
Tilemap_f8946End:
Func_f8a0e:
coord hl, 1, 1
lb de, $3b, $3c
ld a, $40
call Func_f8a72
coord hl, 1, 2
lb de, $3f, $3f
ld a, $ff
call Func_f8a72
coord hl, 1, 3
lb de, $3f, $3f
ld a, $ff
call Func_f8a72
coord hl, 1, 4
lb de, $3f, $3f
ld a, $ff
call Func_f8a72
coord hl, 1, 5
lb de, $3f, $3f
ld a, $ff
call Func_f8a72
coord hl, 1, 6
lb de, $3f, $3f
ld a, $ff
call Func_f8a72
coord hl, 1, 7
lb de, $3f, $3f
ld a, $ff
call Func_f8a72
coord hl, 1, 8
lb de, $3f, $3f
ld a, $ff
call Func_f8a72
coord hl, 1, 9
lb de, $3d, $3e
ld a, $40
call Func_f8a72
ret
Func_f8a72:
ld [hl], d
inc hl
ld c, $10
.asm_f8a76
ld [hli], a
dec c
jr nz, .asm_f8a76
ld [hl], e
ret
Func_f8a7c:
ld hl, Tilemap_f8a89
coord de, 6, 8
ld bc, $9
call CopyData
ret
Tilemap_f8a89:
db $20,$2e,$2f,$30,$31,$2c,$32,$23,$33
Func_f8a92:
ld hl, Tilemap_f8aa2
coord de, 2, 2
ld bc, $7
call CopyData
call Func_f8aca
ret
Tilemap_f8aa2:
db $20,$21,$ff,$22,$23,$24,$25
Func_f8aa9:
ld c, $63
.asm_f8aab
push bc
ld hl, wc5d6
ld a, [hli]
or [hl]
and a
jr z, .asm_f8ac7
call Func_f88e4
ld e, $1
.asm_f8ab9
call Func_f8b42
pop bc
dec c
jr nz, .asm_f8aab
.asm_f8abf
ld a, $90
call PlaySound
.asm_f8ac5
and a
ret
.asm_f8ac7
pop bc
scf
ret
Func_f8aca:
coord hl, 10, 2
ld de, wc5d7
ld a, [de]
call Func_f9350
inc hl
ld a, [de]
call Func_f9350
inc hl
inc hl
ld [hl], $21
inc hl
ld [hl], $25
inc hl
ld [hl], $26
ret
Func_f8ae4:
ld hl, Tilemap_f8af4
coord de, 2, 4
ld bc, $7
call CopyData
call Func_f8b25
ret
Tilemap_f8af4:
db $27,$28,$29,$2a,$23,$26,$26
Func_f8afb:
ld c, $63
.asm_f8afd
push bc
ld hl, wc5da
ld a, [hli]
ld e, a
or [hl]
jr z, .asm_f8b22
ld d, [hl]
ld a, e
sub $1
daa
ld e, a
ld a, d
sbc $0
daa
ld [hld], a
ld [hl], e
ld e, $1
call Func_f8b42
pop bc
dec c
jr nz, .asm_f8afd
ld a, $90
call PlaySound
.asm_f8b20
and a
ret
.asm_f8b22
pop bc
scf
ret
Func_f8b25:
ld a, [wc5db]
coord hl, 10, 4
call Func_f9350
ld a, [wc5da]
coord hl, 12, 4
call Func_f9350
inc hl
inc hl
ld [hl], $21
inc hl
ld [hl], $25
inc hl
ld [hl], $26
ret
Func_f8b42:
ld a, [wc5dc]
add e
daa
ld [wc5dc], a
ld a, [wc5dd]
adc $0
daa
ld [wc5dd], a
ret nc
ld a, $99
ld [wc5dc], a
ld [wc5dd], a
ret
Func_f8b5d:
ld a, [wc5dd]
coord hl, 10, 6
call Func_f9350
ld a, [wc5dc]
coord hl, 12, 6
call Func_f9350
inc hl
inc hl
ld [hl], $21
inc hl
ld [hl], $25
inc hl
ld [hl], $26
ret
Func_f8b7a:
ld hl, Tilemap_f8b8d
coord de, 2, 6
ld bc, $5
call CopyData
call Func_f8b25
call Func_f8b5d
ret
Tilemap_f8b8d:
db $2b,$2c,$25,$28,$2d
Func_f8b92:
ld hl, wd496
ld a, [wc5dd]
cp [hl]
jr c, .asm_f8ba6
jr nz, .asm_f8bb0
dec hl
ld a, [wc5dc]
cp [hl]
jr c, .asm_f8ba6
jr nz, .asm_f8bb0
.asm_f8ba6
call WaitForSoundToFinish
ld e, $1b
call Func_f8bcb
and a
ret
.asm_f8bb0
ld a, [wc5dc]
ld [wd495], a
ld a, [wc5dd]
ld [wd496], a
call WaitForSoundToFinish
ld e, $21
call Func_f8bcb
ld a, $96
call PlaySound
scf
ret
Func_f8bcb: ; f8bcb (3e:4bcb)
push de
callab IsSurfingPikachuInThePlayersParty
pop de
ret nc
callab PlayPikachuSoundClip
ret
Func_f8bdf:
ld a, [wc5d9]
inc a
cp $4
jr c, .asm_f8be9
ld a, $3
.asm_f8be9
ld [wc5d9], a
ret
Func_f8bed:
ld a, [wc5d9]
and a
ret z
ld a, [wc62f]
and $3
cp $3
jr z, .asm_f8c2b
ld a, [wc5d9]
ld d, a
ld e, $1
ld a, $0
.asm_f8c03
add e
sla e
dec d
jr nz, .asm_f8c03
.asm_f8c09
push af
ld e, $50
call Func_f8c7c
pop af
dec a
jr nz, .asm_f8c09
ld hl, $5
add hl, bc
ld a, [hl]
sub $10
ld d, a
ld hl, $4
add hl, bc
ld e, [hl]
ld a, [wc5d9]
add $3
push bc
call SpawnAnimatedObject
pop bc
ret
.asm_f8c2b
ld a, [wc5d9]
cp $3
jr c, .asm_f8c53
ld a, $a
.asm_f8c34
push af
ld e, $50
call Func_f8c7c
pop af
dec a
jr nz, .asm_f8c34
ld hl, $5
add hl, bc
ld a, [hl]
sub $10
ld d, a
ld hl, $4
add hl, bc
ld e, [hl]
ld a, $9
push bc
call SpawnAnimatedObject
pop bc
ret
.asm_f8c53
ld e, $50
call Func_f8c7c
ld e, $50
call Func_f8c7c
ld e, $50
call Func_f8c7c
ld e, $30
call Func_f8c7c
ld hl, $5
add hl, bc
ld a, [hl]
sub $10
ld d, a
ld hl, $4
add hl, bc
ld e, [hl]
ld a, $8
push bc
call SpawnAnimatedObject
pop bc
ret
Func_f8c7c:
ld a, [wc5da]
add e
daa
ld [wc5da], a
ld a, [wc5db]
adc $0
daa
ld [wc5db], a
ret nc
ld a, $99
ld [wc5da], a
ld [wc5db], a
ret
Func_f8c97:
ld a, $a0
ld [wc62e], a
ld a, [hSCX]
ld h, a
ld a, [wc617]
ld l, a
ld de, $900
add hl, de
ld a, l
ld [wc617], a
ld a, h
ld [hSCX], a
jr Func_f8cc7
Func_f8cb0:
ld a, $a0
ld [wc62e], a
ld a, [hSCX]
ld h, a
ld a, [wc617]
ld l, a
ld de, $180
add hl, de
ld a, l
ld [wc617], a
ld a, h
ld [hSCX], a
Func_f8cc7:
ld hl, wc618
ld a, [hSCX]
cp [hl]
ret z
ld [hl], a
and $f0
ld hl, wc619
cp [hl]
ret z
ld [hl], a
call Func_f8d44
ld a, b
ld [wc5e8], a
ld a, c
ld [wc5e9], a
push de
ld hl, wc61a
ld de, wc61c
ld c, $12
.asm_f8ceb
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .asm_f8ceb
ld a, [wc5e8]
ld [hli], a
ld a, [wc5e9]
ld [hl], a
pop de
ld hl, wRedrawRowOrColumnSrcTiles
ld c, $8
.asm_f8cff
ld a, [de]
call Func_f8d28
inc de
dec c
jr nz, .asm_f8cff
ld a, [wc62e]
ld e, a
ld a, [hSCX]
add e
and $f0
srl a
srl a
srl a
ld e, a
ld d, $0
ld hl, vBGMap0
add hl, de
ld a, l
ld [hRedrawRowOrColumnDest], a
ld a, h
ld [hRedrawRowOrColumnDest + 1], a
ld a, $1
ld [hRedrawRowOrColumnMode], a
ret
Func_f8d28:
push de
push hl
ld l, a
ld h, $0
ld de, Unkn_f96e5
add hl, hl
add hl, hl
add hl, de
ld e, l
ld d, h
pop hl
ld a, [de]
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
pop de
ret
Func_f8d44:
ld a, [wc5d3]
ld e, a
ld d, $0
ld hl, Jumptable_f8d53
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
Jumptable_f8d53:
dw Func_f8e4b
dw Func_f8f28
dw Func_f8f31
dw Func_f8f3a
dw Func_f8f43
dw Func_f8e7d
dw Func_f8f4c
dw Func_f8f55
dw Func_f8f5e
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8ec5
dw Func_f8ece
dw Func_f8ed7
dw Func_f8ee0
dw Func_f8ee9
dw Func_f8ef2
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8efb
dw Func_f8f04
dw Func_f8f0d
dw Func_f8f16
dw Func_f8f1f
dw Func_f8efb
dw Func_f8f04
dw Func_f8f0d
dw Func_f8f16
dw Func_f8f1f
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8f28
dw Func_f8f31
dw Func_f8f3a
dw Func_f8f43
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8f4c
dw Func_f8f55
dw Func_f8f5e
dw Func_f8f4c
dw Func_f8f55
dw Func_f8f5e
dw Func_f8f4c
dw Func_f8f55
dw Func_f8f5e
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8f67
dw Func_f8f70
dw Func_f8efb
dw Func_f8f04
dw Func_f8f0d
dw Func_f8f16
dw Func_f8f1f
dw Func_f8f67
dw Func_f8f70
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8ec5
dw Func_f8ece
dw Func_f8ed7
dw Func_f8ee0
dw Func_f8ee9
dw Func_f8ef2
dw Func_f8e7d
dw Func_f8f67
dw Func_f8f70
dw Func_f8f67
dw Func_f8f70
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8efb
dw Func_f8f04
dw Func_f8f0d
dw Func_f8f16
dw Func_f8f1f
dw Func_f8f28
dw Func_f8f31
dw Func_f8f3a
dw Func_f8f43
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8e7d
dw Func_f8f94
dw Func_f8e86
dw Func_f8e8f
dw Func_f8e98
dw Func_f8ea1
dw Func_f8eaa
dw Func_f8eb3
dw Func_f8ebc
dw Func_f8f9d
dw Func_f8e7d
dw Func_f8f79
dw Func_f8f82
dw Func_f8f82
dw Func_f8f82
dw Func_f8f82
dw Func_f8f82
dw Func_f8f82
dw Func_f8f82
dw Func_f8f8b
Func_f8e4b:
ld a, [wc5e5]
cp $16
jr c, .asm_f8e5a
jr z, .asm_f8e56
jr nc, .asm_f8e6e
.asm_f8e56
ld a, $6a
jr .asm_f8e6b
.asm_f8e5a
ld a, [wc5d5]
and a
jr z, .asm_f8e6e
dec a
and $7
ld e, a
ld d, $0
ld hl, Unkn_f8e75
add hl, de
ld a, [hl]
.asm_f8e6b
ld [wc5d3], a
.asm_f8e6e
lb bc, $74, $74
ld de, Unkn_f973d
ret
Unkn_f8e75:
db $01,$0e,$1a,$29,$32,$40,$4d,$5c
Func_f8e7d:
lb bc, $74, $74
ld de, Unkn_f973d
jp Func_f8fa9
Func_f8e86:
lb bc, $74, $6c
ld de, Unkn_f9745
jp Func_f8fa9
Func_f8e8f:
lb bc, $64, $5c
ld de, Unkn_f974d
jp Func_f8fa9
Func_f8e98:
lb bc, $54, $4c
ld de, Unkn_f9755
jp Func_f8fa9
Func_f8ea1:
lb bc, $44, $44
ld de, Unkn_f975d
jp Func_f8fa9
Func_f8eaa:
lb bc, $44, $4c
ld de, Unkn_f9765
jp Func_f8fa9
Func_f8eb3:
lb bc, $54, $5c
ld de, Unkn_f976d
jp Func_f8fa9
Func_f8ebc:
lb bc, $64, $6c
ld de, Unkn_f9775
jp Func_f8fa9
Func_f8ec5:
lb bc, $74, $6c
ld de, Unkn_f977d
jp Func_f8fa9
Func_f8ece:
lb bc, $64, $5c
ld de, Unkn_f9785
jp Func_f8fa9
Func_f8ed7:
lb bc, $54, $4c
ld de, Unkn_f978d
jp Func_f8fa9
Func_f8ee0:
lb bc, $4c, $4c
ld de, Unkn_f9795
jp Func_f8fa9
Func_f8ee9:
lb bc, $54, $5c
ld de, Unkn_f979d
jp Func_f8fa9
Func_f8ef2:
lb bc, $64, $6c
ld de, Unkn_f97a5
jp Func_f8fa9
Func_f8efb:
lb bc, $74, $6c
ld de, Unkn_f97ad
jp Func_f8fa9
Func_f8f04:
lb bc, $64, $5c
ld de, Unkn_f97b5
jp Func_f8fa9
Func_f8f0d:
lb bc, $54, $54
ld de, Unkn_f97bd
jp Func_f8fa9
Func_f8f16:
lb bc, $54, $5c
ld de, Unkn_f97c5
jp Func_f8fa9
Func_f8f1f:
lb bc, $64, $6c
ld de, Unkn_f97cd
jp Func_f8fa9
Func_f8f28:
lb bc, $74, $6c
ld de, Unkn_f97d5
jp Func_f8fa9
Func_f8f31:
lb bc, $64, $5c
ld de, Unkn_f97dd
jp Func_f8fa9
Func_f8f3a:
lb bc, $5c, $5c
ld de, Unkn_f97e5
jp Func_f8fa9
Func_f8f43:
lb bc, $64, $6c
ld de, Unkn_f97ed
jp Func_f8fa9
Func_f8f4c:
lb bc, $74, $6c
ld de, Unkn_f97f5
jp Func_f8fa9
Func_f8f55:
lb bc, $64, $64
ld de, Unkn_f97fd
jp Func_f8fa9
Func_f8f5e:
lb bc, $64, $6c
ld de, Unkn_f9805
jp Func_f8fa9
Func_f8f67:
lb bc, $74, $6c
ld de, Unkn_f980d
jp Func_f8fa9
Func_f8f70:
lb bc, $6c, $6c
ld de, Unkn_f9815
jp Func_f8fa9
Func_f8f79:
lb bc, $74, $74
ld de, Unkn_f981d
jp Func_f8fa9
Func_f8f82:
lb bc, $74, $74
ld de, Unkn_f9825
jp Func_f8fa9
Func_f8f8b:
lb bc, $74, $74
ld de, Unkn_f9825
jp Func_f8fae
Func_f8f94:
lb bc, $74, $74
ld de, Unkn_f973d
jp Func_f8fae
Func_f8f9d:
lb bc, $74, $74
ld de, Unkn_f973d
ret
Func_f8fa4:
inc a
ld [wc5d3], a
ret
Func_f8fa9:
ld hl, wc5d3
inc [hl]
ret
Func_f8fae:
xor a
ld [wc5d3], a
ret
Func_f8fb3:
call Func_f9279
call ClearSprites
call DisableLCD
xor a
ld [H_AUTOBGTRANSFERENABLED], a
call ClearObjectAnimationBuffers
ld hl, $6324
ld de, $8800
ld bc, $900
ld a, $20
call FarCopyData
ld a, Unkn_f93d3 % $100
ld [wAnimatedObjectSpawnStateDataPointer], a
ld a, Unkn_f93d3 / $100
ld [wAnimatedObjectSpawnStateDataPointer + 1], a
ld a, Jumptable_f93fa % $100
ld [wAnimatedObjectJumptablePointer], a
ld a, Jumptable_f93fa / $100
ld [wAnimatedObjectJumptablePointer + 1], a
ld a, Unkn_f9507 % $100
ld [wAnimatedObjectOAMDataPointer], a
ld a, Unkn_f9507 / $100
ld [wAnimatedObjectOAMDataPointer + 1], a
ld a, Unkn_f9405 % $100
ld [wAnimatedObjectFramesDataPointer], a
ld a, Unkn_f9405 / $100
ld [wAnimatedObjectFramesDataPointer + 1], a
ld a, $c
lb de, $74, $58
call SpawnAnimatedObject
call Func_f9053
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $90
ld [hWY], a
ld b, $f
call RunPaletteCommand
ld a, $e3
ld [rLCDC], a
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call DelayFrame
call DelayFrame
call DelayFrame
call Func_f81e9
ld a, $e4
ld [rOBP0], a
ld a, $e0
ld [rOBP1], a
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
call DelayFrame
ld a, $99
ld c, $20
call PlayMusic
xor a
ld [wc633], a
.asm_f9041
ld a, [wc633]
and a
ret nz
ld a, $0
ld [wCurrentAnimatedObjectOAMBufferOffset], a
call RunObjectAnimations
call DelayFrame
jr .asm_f9041
Func_f9053:
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, $ff
call FillMemory
ld hl, Tilemap_f90bc
coord de, 0, 6
ld bc, 12 * SCREEN_WIDTH
call CopyData
ld de, Tilemap_f91c8
coord hl, 4, 0
lb bc, 6, 12
call .CopyBox
coord hl, 3, 7
lb bc, 3, 15
call .FillBoxWithFF
ld hl, Tilemap_f91ac
coord de, 3, 7
ld bc, 15
call CopyData
ld hl, Tilemap_f91bb
coord de, 4, 9
ld bc, 13
call CopyData
ret
.CopyBox:
.copy_row
push bc
push hl
.copy_col
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .copy_col
ld bc, SCREEN_WIDTH
pop hl
add hl, bc
pop bc
dec b
jr nz, .copy_row
ret
.FillBoxWithFF:
.fill_row
push bc
push hl
.fill_col
ld [hl], $ff
inc hl
dec c
jr nz, .fill_col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
jr nz, .fill_row
ret
Tilemap_f90bc: INCBIN "gfx/unknown_f90bc.map"
Tilemap_f91ac: INCBIN "gfx/unknown_f91ac.map"
Tilemap_f91bb: INCBIN "gfx/unknown_f91bb.map"
Tilemap_f91c8: INCBIN "gfx/unknown_f91c8.map"
Func_f9210:
ld hl, wc710
ld de, wc710 + 1
ld c, $80
ld a, [hl]
push af
.asm_f921a
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .asm_f921a
pop af
ld [hl], a
ret
Func_f9223:
ld hl, wc700
ld bc, $100
ld de, $0
.asm_f922c
ld a, e
and $1f
ld e, a
push hl
ld hl, Unkn_f96c5
add hl, de
ld a, [hl]
pop hl
ld [hli], a
inc e
dec bc
ld a, c
or b
jr nz, .asm_f922c
ret
Func_f923f:
call Joypad
ld a, [H_FRAMECOUNTER]
and a
jr nz, .asm_f9250
ld a, [hJoyHeld]
ld [hJoy5], a
ld a, $2
ld [H_FRAMECOUNTER], a
ret
.asm_f9250
xor a
ld [hJoy5], a
ret
SurfingPikachuMinigame_BlankPals:
xor a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
ret
SurfingPikachuMinigame_NormalPals:
ld a, $e4
ld [rBGP], a
ld [rOBP0], a
ld a, $e0
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
ret
Func_f9279:
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call FillMemory
ret
Func_f9284:
xor a
ld [wc5ed], a
ld [wc5ee], a
ret
Func_f928c:
ld a, [wc5ed]
and a
jr nz, .asm_f92e4
ld a, [wc5ec]
ld d, a
ld a, [wc5ee]
or d
jr z, .asm_f92dd
ld a, [wc5ee]
ld e, a
ld hl, $ff80
add hl, de
ld a, l
ld [wc5ee], a
ld a, h
ld [wc5ec], a
ld e, a
ld d, $0
call Func_f9340
ld e, l
ld d, h
ld a, $4
call Func_f9340
ld a, l
xor $ff
inc a
ld l, a
ld a, h
xor $ff
ld h, a
push hl
ld hl, $5
add hl, bc
ld d, [hl]
ld hl, $c
add hl, bc
ld e, [hl]
pop hl
add hl, de
ld e, l
ld d, h
ld hl, $5
add hl, bc
ld [hl], d
ld hl, $c
add hl, bc
ld [hl], e
and a
ret
.asm_f92dd
ld a, $1
ld [wc5ed], a
and a
ret
.asm_f92e4
ld a, [wc5ea]
ld e, a
ld hl, $5
add hl, bc
ld a, [hl]
cp $90
jr nc, .asm_f92f4
cp e
jr nc, .asm_f9330
.asm_f92f4
ld a, [wc5ec]
ld d, a
ld a, [wc5ee]
ld e, a
ld hl, $80
add hl, de
ld a, l
ld [wc5ee], a
ld a, h
ld [wc5ec], a
ld e, a
ld d, $0
call Func_f9340
ld e, l
ld d, h
ld a, $4
call Func_f9340
push hl
ld hl, $5
add hl, bc
ld d, [hl]
ld hl, $c
add hl, bc
ld e, [hl]
pop hl
add hl, de
ld e, l
ld d, h
ld hl, $5
add hl, bc
ld [hl], d
ld hl, $c
add hl, bc
ld [hl], e
and a
ret
.asm_f9330
ld hl, $5
add hl, bc
ld a, [wc5ea]
ld [hl], a
ld hl, $c
add hl, bc
ld [hl], $0
scf
ret
Func_f9340:
ld hl, $0
.asm_f9343
srl a
jr nc, .asm_f9348
add hl, de
.asm_f9348
sla e
rl d
and a
jr nz, .asm_f9343
ret
Func_f9350:
ld c, a
swap a
and $f
add $d0
ld [hli], a
ld a, c
and $f
add $d0
ld [hl], a
dec de
ret
Func_f9360: ; cosine
add $10
Func_f9362: ; sine
and $3f
cp $20
jr nc, .asm_f936d
call Func_f9377
ld a, h
ret
.asm_f936d
and $1f
call Func_f9377
ld a, h
xor $ff
inc a
ret
Func_f9377:
ld e, a
ld a, d
ld d, $0
ld hl, Unkn_f9393
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld hl, $0
.asm_f9386
srl a
jr nc, .asm_f938b
add hl, de
.asm_f938b
sla e
rl d
and a
jr nz, .asm_f9386
ret
Unkn_f9393:
sine_wave $100
Unkn_f93d3:
db $00, $00, $00
db $04, $01, $00
db $11, $02, $00
db $12, $02, $00
db $15, $00, $00
db $16, $00, $00
db $17, $00, $00
db $18, $00, $00
db $19, $00, $00
db $1a, $00, $00
db $14, $00, $00
db $13, $03, $00
db $1b, $04, $00
Jumptable_f93fa:
dw Func_f9404
dw Func_f8470
dw Func_f87fb
dw Func_f880b
dw Func_f882b
Func_f9404:
ret
Unkn_f9405:
dw Unkn_f943d
dw Unkn_f9440
dw Unkn_f9445
dw Unkn_f944a
dw Unkn_f944f
dw Unkn_f9454
dw Unkn_f9459
dw Unkn_f945e
dw Unkn_f9463
dw Unkn_f9468
dw Unkn_f946d
dw Unkn_f9472
dw Unkn_f9477
dw Unkn_f947c
dw Unkn_f9481
dw Unkn_f9486
dw Unkn_f948b
dw Unkn_f9494
dw Unkn_f9499
dw Unkn_f949e
dw Unkn_f94fb
dw Unkn_f94a1
dw Unkn_f94b0
dw Unkn_f94bf
dw Unkn_f94ce
dw Unkn_f94dd
dw Unkn_f94ec
dw Unkn_f94fe
Unkn_f943d:
frame $00, 32
endanim
Unkn_f9440:
frame $01, 8
frame $02, 8
dorestart
Unkn_f9445:
frame $03, 8
frame $04, 8
dorestart
Unkn_f944a:
frame $05, 8
frame $06, 8
dorestart
Unkn_f944f:
frame $07, 8
frame $08, 8
dorestart
Unkn_f9454:
frame $09, 8
frame $0a, 8
dorestart
Unkn_f9459:
frame $0b, 8
frame $0c, 8
dorestart
Unkn_f945e:
frame $0d, 8
frame $0e, 8
dorestart
Unkn_f9463:
frame $01, 8, OAM_HFLIP, OAM_VFLIP
frame $02, 8, OAM_HFLIP, OAM_VFLIP
dorestart
Unkn_f9468:
frame $03, 8, OAM_HFLIP, OAM_VFLIP
frame $04, 8, OAM_HFLIP, OAM_VFLIP
dorestart
Unkn_f946d:
frame $05, 8, OAM_HFLIP, OAM_VFLIP
frame $06, 8, OAM_HFLIP, OAM_VFLIP
dorestart
Unkn_f9472:
frame $07, 8, OAM_HFLIP, OAM_VFLIP
frame $08, 8, OAM_HFLIP, OAM_VFLIP
dorestart
Unkn_f9477:
frame $09, 8, OAM_HFLIP, OAM_VFLIP
frame $0a, 8, OAM_HFLIP, OAM_VFLIP
dorestart
Unkn_f947c:
frame $0b, 8, OAM_HFLIP, OAM_VFLIP
frame $0c, 8, OAM_HFLIP, OAM_VFLIP
dorestart
Unkn_f9481:
frame $0d, 8, OAM_HFLIP, OAM_VFLIP
frame $0e, 8, OAM_HFLIP, OAM_VFLIP
dorestart
Unkn_f9486:
frame $11, 7
frame $12, 7
dorestart
Unkn_f948b:
frame $13, 2
frame $14, 2
dorepeat 8
frame $15, 2
endanim
Unkn_f9494:
frame $16, 32
frame $16, 32
delanim
Unkn_f9499:
frame $17, 32
frame $17, 32
delanim
Unkn_f949e:
frame $18, 32
endanim
Unkn_f94a1:
frame $1a, 4
dorepeat 1
frame $1a, 3
dorepeat 1
frame $1a, 2
dorepeat 1
frame $1a, 1
delanim
Unkn_f94b0:
frame $1b, 4
dorepeat 1
frame $1b, 3
dorepeat 1
frame $1b, 2
dorepeat 1
frame $1b, 1
delanim
Unkn_f94bf:
frame $1c, 4
dorepeat 1
frame $1c, 3
dorepeat 1
frame $1c, 2
dorepeat 1
frame $1c, 1
delanim
Unkn_f94ce:
frame $1d, 4
dorepeat 1
frame $1d, 3
dorepeat 1
frame $1d, 2
dorepeat 1
frame $1d, 1
delanim
Unkn_f94dd:
frame $1e, 4
dorepeat 1
frame $1e, 3
dorepeat 1
frame $1e, 2
dorepeat 1
frame $1e, 1
delanim
Unkn_f94ec:
frame $1f, 4
dorepeat 1
frame $1f, 3
dorepeat 1
frame $1f, 2
dorepeat 1
frame $1f, 1
delanim
Unkn_f94fb:
frame $19, 1
delanim
Unkn_f94fe:
frame $20, 7
frame $21, 7
frame $22, 7
frame $23, 7
dorestart
Unkn_f9507:
dbw $00, Unkn_f9573
dbw $00, Unkn_f9578
dbw $36, Unkn_f9578
dbw $03, Unkn_f9578
dbw $39, Unkn_f9578
dbw $06, Unkn_f9578
dbw $3c, Unkn_f9578
dbw $09, Unkn_f9578
dbw $60, Unkn_f9578
dbw $0c, Unkn_f9578
dbw $63, Unkn_f9578
dbw $30, Unkn_f9578
dbw $66, Unkn_f9578
dbw $33, Unkn_f9578
dbw $69, Unkn_f9578
dbw $6c, Unkn_f9578
dbw $9c, Unkn_f9578
dbw $a0, Unkn_f9578
dbw $a3, Unkn_f9578
dbw $a7, Unkn_f95db
dbw $a8, Unkn_f95f4
dbw $98, Unkn_f9625
dbw $e0, Unkn_f959d
dbw $e6, Unkn_f959d
dbw $ca, Unkn_f959d
dbw $a7, Unkn_f95ce
dbw $00, Unkn_f9632
dbw $00, Unkn_f963f
dbw $00, Unkn_f9650
dbw $00, Unkn_f9661
dbw $00, Unkn_f9672
dbw $00, Unkn_f9683
dbw $80, Unkn_f9694
dbw $84, Unkn_f9694
dbw $88, Unkn_f9694
dbw $8c, Unkn_f9694
Unkn_f9573:
db 1
db $fc, $fc, $00, $00
Unkn_f9578:
db 9
db $f4, $f4, $00, $00
db $f4, $fc, $01, $00
db $f4, $04, $02, $00
db $fc, $f4, $10, $00
db $fc, $fc, $11, $00
db $fc, $04, $12, $00
db $04, $f4, $20, $00
db $04, $fc, $21, $00
db $04, $04, $22, $00
Unkn_f959d:
db 12
db $f8, $e8, $00, $00
db $f8, $f0, $01, $00
db $f8, $f8, $02, $00
db $f8, $00, $03, $00
db $f8, $08, $04, $00
db $f8, $10, $05, $00
db $00, $e8, $10, $00
db $00, $f0, $11, $00
db $00, $f8, $12, $00
db $00, $00, $13, $00
db $00, $08, $14, $00
db $00, $10, $15, $00
Unkn_f95ce:
db 3
db $fc, $0b, $00, $10
db $04, $03, $0f, $10
db $04, $0b, $10, $10
Unkn_f95db:
db 6
db $fc, $f0, $00, $30
db $fc, $08, $00, $10
db $04, $f0, $10, $30
db $04, $f8, $0f, $30
db $04, $00, $0f, $10
db $04, $08, $10, $10
Unkn_f95f4:
db 12
db $f4, $f0, $00, $10
db $f4, $f8, $01, $10
db $f4, $00, $01, $30
db $f4, $08, $00, $30
db $fc, $f0, $10, $10
db $fc, $f8, $11, $10
db $fc, $00, $11, $30
db $fc, $08, $10, $30
db $04, $f0, $20, $10
db $04, $f8, $21, $10
db $04, $00, $21, $30
db $04, $08, $20, $30
Unkn_f9625:
db 3
db $04, $f4, $00, $00
db $04, $fc, $01, $00
db $04, $04, $02, $00
Unkn_f9632:
db 3
db $fc, $f4, $bf, $00
db $fc, $fc, $d5, $00
db $fc, $04, $d0, $00
Unkn_f963f:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d1, $00
db $fc, $00, $d5, $00
db $fc, $08, $d0, $00
Unkn_f9650:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d3, $00
db $fc, $00, $d5, $00
db $fc, $08, $d0, $00
Unkn_f9661:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d7, $00
db $fc, $00, $d5, $00
db $fc, $08, $d0, $00
Unkn_f9672:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d1, $00
db $fc, $00, $d8, $00
db $fc, $08, $d0, $00
Unkn_f9683:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d5, $00
db $fc, $00, $d0, $00
db $fc, $08, $d0, $00
Unkn_f9694:
db 12
db $f4, $f0, $03, $20
db $f4, $f8, $02, $20
db $f4, $00, $01, $20
db $f4, $08, $00, $20
db $fc, $f0, $13, $20
db $fc, $f8, $12, $20
db $fc, $00, $11, $20
db $fc, $08, $10, $20
db $04, $f0, $23, $20
db $04, $f8, $22, $20
db $04, $00, $21, $20
db $04, $08, $20, $20
Unkn_f96c5:
db 0, 0, 0, 1, 1, 1, 1, 2
db 2, 2, 1, 1, 1, 1, 0, 0
db 0, 0, 0, -1, -1, -1, -1, -2
db -2, -2, -1, -1, -1, -1, 0, 0
Unkn_f96e5:
db $00, $00, $00, $00
db $0b, $0b, $0b, $0b
db $0b, $02, $02, $06
db $03, $0b, $07, $03
db $06, $06, $06, $06
db $07, $07, $07, $07
db $06, $04, $04, $08
db $05, $07, $08, $05
db $0b, $0b, $11, $12
db $0b, $0b, $13, $03
db $14, $12, $04, $08
db $13, $07, $08, $05
db $06, $14, $06, $14
db $13, $07, $13, $07
db $08, $08, $08, $08
db $14, $12, $14, $12
db $0b, $11, $02, $14
db $06, $14, $06, $14
db $0c, $0c, $0d, $0d
db $0d, $0d, $0d, $0d
db $0e, $0f, $10, $0b
db $12, $13, $12, $13
Unkn_f973d:
db $00, $00, $00, $01, $01, $01, $01, $01
Unkn_f9745:
db $00, $00, $00, $01, $01, $02, $04, $06
Unkn_f974d:
db $00, $00, $00, $01, $02, $04, $06, $0e
Unkn_f9755:
db $00, $00, $00, $10, $11, $06, $0e, $0e
Unkn_f975d:
db $00, $00, $00, $15, $15, $0e, $0e, $0e
Unkn_f9765:
db $00, $00, $00, $03, $05, $07, $0e, $0e
Unkn_f976d:
db $00, $00, $00, $01, $03, $05, $07, $0e
Unkn_f9775:
db $00, $00, $00, $01, $01, $03, $05, $07
Unkn_f977d:
db $00, $00, $00, $01, $01, $02, $04, $06
Unkn_f9785:
db $00, $00, $00, $01, $02, $04, $06, $0e
Unkn_f978d:
db $00, $00, $00, $08, $0f, $0a, $0e, $0e
Unkn_f9795:
db $00, $00, $00, $09, $0d, $0b, $0e, $0e
Unkn_f979d:
db $00, $00, $00, $01, $03, $05, $07, $0e
Unkn_f97a5:
db $00, $00, $00, $01, $01, $03, $05, $07
Unkn_f97ad:
db $00, $00, $00, $01, $01, $02, $04, $06
Unkn_f97b5:
db $00, $00, $00, $01, $10, $11, $06, $0e
Unkn_f97bd:
db $00, $00, $00, $01, $15, $15, $0e, $0e
Unkn_f97c5:
db $00, $00, $00, $01, $03, $05, $07, $0e
Unkn_f97cd:
db $00, $00, $00, $01, $01, $03, $05, $07
Unkn_f97d5:
db $00, $00, $00, $01, $01, $02, $04, $06
Unkn_f97dd:
db $00, $00, $00, $01, $08, $0f, $0a, $0e
Unkn_f97e5:
db $00, $00, $00, $01, $09, $0d, $0b, $0e
Unkn_f97ed:
db $00, $00, $00, $01, $01, $03, $05, $07
Unkn_f97f5:
db $00, $00, $00, $01, $01, $10, $11, $06
Unkn_f97fd:
db $00, $00, $00, $01, $01, $15, $15, $0e
Unkn_f9805:
db $00, $00, $00, $01, $01, $03, $05, $07
Unkn_f980d:
db $00, $00, $00, $01, $01, $08, $0f, $0a
Unkn_f9815:
db $00, $00, $00, $01, $01, $09, $0d, $0b
Unkn_f981d:
db $00, $00, $00, $14, $14, $14, $14, $14
Unkn_f9825:
db $00, $00, $00, $12, $13, $13, $13, $13
PlayIntroScene:
ld a, [rIE]
push af
xor a
ld [rIF], a
ld a, $f
ld [rIE], a
ld a, $8
ld [rSTAT], a
call Func_f9f0d
call DelayFrame
.asm_f9841
ld a, [wc634]
bit 7, a
jr nz, .asm_f986e
call JoypadLowSensitivity
ld a, [hJoyPressed]
and $b
jr nz, .asm_f986e
call Func_f98fc
ld a, $0
ld [wCurrentAnimatedObjectOAMBufferOffset], a
call RunObjectAnimations
ld a, [wc634]
cp $7
call z, Func_f98a2
cp $b
call z, Func_f98cb
call DelayFrame
jr .asm_f9841
.asm_f986e
call Func_f9fc9
xor a
ld [hLCDCPointer], a
call DelayFrame
xor a
ld [rIF], a
pop af
ld [rIE], a
ld a, $90
ld [hWY], a
call ClearObjectAnimationBuffers
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call Func_f9fb3
call Func_f9fbe
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call DelayFrame
call DelayFrame
call DelayFrame
xor a
ld [H_AUTOBGTRANSFERENABLED], a
ret
Func_f98a2:
ld a, [wOAMBuffer + 8 * 4 + 3]
or $1
ld [wOAMBuffer + 8 * 4 + 3], a
ld a, [wOAMBuffer + 14 * 4 + 3]
or $1
ld [wOAMBuffer + 14 * 4 + 3], a
ld a, [wOAMBuffer + 16 * 4 + 3]
or $1
ld [wOAMBuffer + 16 * 4 + 3], a
Func_f98b8:
ld a, [wOAMBuffer + 18 * 4 + 3]
or $1
ld [wOAMBuffer + 18 * 4 + 3], a
ld a, [wOAMBuffer + 19 * 4 + 3]
or $1
ld [wOAMBuffer + 19 * 4 + 3], a
ret
Func_f98cb:
ld a, [wOAMBuffer + 18 * 4 + 3]
or $1
ld [wOAMBuffer + 18 * 4 + 3], a
ld a, [wOAMBuffer + 19 * 4 + 3]
or $1
ld [wOAMBuffer + 19 * 4 + 3], a
ld a, [wOAMBuffer + 20 * 4 + 3]
or $1
ld [wOAMBuffer + 20 * 4 + 3], a
ld a, [wOAMBuffer + 25 * 4 + 3]
or $1
ld [wOAMBuffer + 25 * 4 + 3], a
ld a, [wOAMBuffer + 26 * 4 + 3]
or $1
ld [wOAMBuffer + 26 * 4 + 3], a
ld a, [wOAMBuffer + 28 * 4 + 3]
or $1
ld [wOAMBuffer + 28 * 4 + 3], a
ret
Func_f98fc:
ld a, [wc634]
ld hl, Jumptable_f9906
call Func_fa06e
jp [hl]
Jumptable_f9906:
dw Func_f992f
dw Func_f995f
dw Func_f996a
dw Func_f9a08
dw Func_f9a1e
dw Func_f9a60
dw Func_f9a6b
dw Func_f9ab1
dw Func_f9ad8
dw Func_f9af9
dw Func_f9b04
dw Func_f9bf6
dw Func_f9cac
dw Func_f9d12
dw Func_f9d22
dw Func_f9d8f
dw Func_f9dbf
dw Func_f9e12
Func_f992a:
ld hl, wc634
inc [hl]
ret
Func_f992f:
xor a
ld [hLCDCPointer], a
lb de, $58, $58
ld a, $1
call Func_f9e1d
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $90
ld [hWY], a
ld a, $e4
ld [rBGP], a
ld [rOBP0], a
ld a, $c4
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
ld a, $82
ld [wc635], a
call Func_f992a
ret
Func_f995f:
call Func_f9e41
ret nc
call Func_f9e29
call Func_f992a
ret
Func_f996a:
call Func_f9e80
ld c, $8
call UpdateMusicCTimes
xor a
ld [hLCDCPointer], a
ld hl, vBGMap0
ld bc, $400
xor a
call Func_f9fb3
call Func_f9996
lb de, $58, $b8 ; overloaded
ld a, $4 ; overloaded
call Func_f99d2
ld a, $1
call Func_f9e9a
call Func_f9e35
call Func_f992a
ret
Func_f9996:
ld hl, $98d4
ld de, $20
ld b, $6
ld a, $90
.asm_f99a0
ld c, $6
push af
push hl
.asm_f99a4
ld [hli], a
inc a
dec c
jr nz, .asm_f99a4
pop hl
add hl, de
pop af
add $10
dec b
jr nz, .asm_f99a0
ld a, [hGBC]
and a
jr z, .asm_f99d1
ld hl, $98d4
ld de, $20
ld b, $6
ld a, $1
ld [rVBK], a
.asm_f99c2
ld c, $6
push hl
.asm_f99c5
ld [hli], a
dec c
jr nz, .asm_f99c5
pop hl
add hl, de
dec b
jr nz, .asm_f99c2
xor a
ld [rVBK], a
.asm_f99d1
ret
Func_f99d2:
ld hl, Unkn_f99f0
ld a, $8
.asm_f99d7
push af
ld e, [hl]
inc hl
ld d, [hl]
inc hl
ld a, [hli]
push hl
push af
ld a, $8
call SpawnAnimatedObject
pop af
ld hl, $b
add hl, bc
ld [hl], a
pop hl
pop af
dec a
jr nz, .asm_f99d7
ret
Unkn_f99f0:
db $d0, $20, $02
db $f0, $30, $04
db $d0, $40, $06
db $c0, $50, $08
db $e0, $60, $08
db $c0, $70, $06
db $e0, $80, $04
db $f0, $90, $02
Func_f9a08:
call Func_f9e41
jr c, .asm_f9a17
ld a, [hSCX]
cp $68
ret z
add $4
ld [hSCX], a
ret
.asm_f9a17
call MaskAllAnimatedObjectStructs
call Func_f992a
ret
Func_f9a1e:
call Func_f9e80
ld c, $5
call UpdateMusicCTimes
ld a, [hGBC]
and a
jr z, .asm_f9a47
ld hl, $98d4
ld de, $20
ld b, $6
ld a, $1
ld [rVBK], a
xor a
.asm_f9a38
ld c, $6
push hl
.asm_f9a3b
ld [hli], a
dec c
jr nz, .asm_f9a3b
pop hl
add hl, de
dec b
jr nz, .asm_f9a38
xor a
ld [rVBK], a
.asm_f9a47
xor a
ld [hLCDCPointer], a
call Func_f9e5f
lb de, $58, $58
ld a, $2
call Func_f9e1d
xor a
call Func_f9e9a
call Func_f9e35
call Func_f992a
ret
Func_f9a60:
call Func_f9e41
ret nc
call Func_f9e29
call Func_f992a
ret
Func_f9a6b:
call Func_f9e80
ld c, $5
call UpdateMusicCTimes
ld a, $42
ld [hLCDCPointer], a
call Func_f9ec4
ld hl, vBGMap0
ld bc, $60
xor a
call Func_f9fb3
ld hl, $9860
ld c, $10
ld a, $20
.asm_f9a8b
ld [hli], a
inc a
ld [hli], a
dec a
dec c
jr nz, .asm_f9a8b
ld hl, $9880
ld bc, $300
ld a, $10
call Func_f9fb3
lb de, $40, $f8
ld a, $5
call Func_f9e1d
ld a, $1
call Func_f9e9a
call Func_f9e3b
call Func_f992a
ret
Func_f9ab1:
call Func_f9e41
jr c, .asm_f9ad1
ld hl, hSCX
inc [hl]
inc [hl]
ld hl, wc800
ld de, wc800 + 1
ld a, [hl]
push af
ld c, $ff
.asm_f9ac5
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .asm_f9ac5
pop af
ld [hl], a
call Func_f9ef8
ret
.asm_f9ad1
call Func_f9e29
call Func_f992a
ret
Func_f9ad8:
call Func_f9e80
ld c, $5
call UpdateMusicCTimes
xor a
ld [hLCDCPointer], a
call Func_f9e5f
lb de, $58, $58
ld a, $3
call Func_f9e1d
xor a
call Func_f9e9a
call Func_f9e35
call Func_f992a
ret
Func_f9af9:
call Func_f9e41
ret nc
call Func_f9e29
call Func_f992a
ret
Func_f9b04:
call Func_f9e80
ld c, $5
call UpdateMusicCTimes
xor a
ld [hLCDCPointer], a
ld hl, vBGMap0
ld bc, $400
xor a
call Func_f9fb3
ld hl, vBGMap0
ld bc, $100
ld a, $2
call Func_f9fb3
ld hl, $9900
ld de, Unkn_f9b6e
lb bc, 6, 20
call .FillBGMapBox
ld hl, $988c
ld de, Unkn_f9be6
lb bc, 3, 4
call .FillBGMapBox
ld hl, $98e3
ld de, Unkn_f9bf2
lb bc, 2, 2
call .FillBGMapBox
lb de, $98, $58
ld a, $6
call Func_f9e1d
ld a, $1
call Func_f9e9a
call Func_f9e35
call Func_f992a
ret
.FillBGMapBox:
.fill_row
push bc
push hl
.fill_col
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .fill_col
pop hl
ld bc, $20
add hl, bc
pop bc
dec b
jr nz, .fill_row
ret
Unkn_f9b6e: INCBIN "gfx/unknown_f9b6e.map"
Unkn_f9be6: INCBIN "gfx/unknown_f9be6.map"
Unkn_f9bf2: INCBIN "gfx/unknown_f9bf2.map"
Func_f9bf6:
call Func_f9e41
jr c, .asm_f9c25
ld a, [wc635]
and $7
ret nz
ld a, [wc635]
and $8
sla a
sla a
sla a
ld e, a
ld d, $0
ld hl, GFX_f9c2c
add hl, de
ld a, l
ld [H_VBCOPYSRC], a
ld a, h
ld [H_VBCOPYSRC + 1], a
xor a
ld [H_VBCOPYDEST], a
ld a, $96
ld [H_VBCOPYDEST + 1], a
ld a, $4
ld [H_VBCOPYSIZE], a
ret
.asm_f9c25
call Func_f9e29
call Func_f992a
ret
GFX_f9c2c: INCBIN "gfx/unknown_f9c2c.2bpp"
GFX_f9c6c: INCBIN "gfx/unknown_f9c6c.2bpp" ; indirectly referenced
Func_f9cac:
call Func_f9e80
ld c, $5
call UpdateMusicCTimes
xor a
ld [hLCDCPointer], a
ld hl, vBGMap0
ld bc, $80
ld a, $1
call Func_f9fb3
ld hl, $9880
ld bc, $140
xor a
call Func_f9fb3
ld hl, $99c0
ld bc, $80
ld a, $1
call Func_f9fb3
ld hl, $98c5
ld de, $20
ld a, $4
ld b, $8
.asm_f9ce1
ld c, $c
push hl
.asm_f9ce4
ld [hli], a
inc a
dec c
jr nz, .asm_f9ce4
pop hl
add hl, de
add $4
dec b
jr nz, .asm_f9ce1
ld hl, $98c4
ld [hl], $3
ld hl, $98e4
ld [hl], $74
ld hl, $99a5
ld [hl], $0
lb de, $60, $58
ld a, $9
call Func_f9e1d
xor a
call Func_f9e9a
call Func_f9e35
call Func_f992a
ret
Func_f9d12:
call Func_f9e41
ret nc
lb de, $68, $58
ld a, $a
call SpawnAnimatedObject
call Func_f992a
ret
Func_f9d22:
ld de, Unkn_f9dd6
call Func_f9e4d
jr c, .asm_f9d3c
ld [rBGP], a
ld [rOBP0], a
and $f0
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
ret
.asm_f9d3c
call MaskAllAnimatedObjectStructs
call Func_f9fbe
ld hl, wTileMap
ld bc, $50
ld a, $1
call Func_f9fb3
coord hl, 0, 4
ld bc, CopyVideoDataAlternate
xor a
call Func_f9fb3
coord hl, 0, 14
ld bc, $50
ld a, $1
call Func_f9fb3
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call DelayFrame
call DelayFrame
call DelayFrame
xor a
ld [H_AUTOBGTRANSFERENABLED], a
ld a, $e4
ld [rOBP0], a
ld [rBGP], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
lb de, $58, $58
ld a, $7
call Func_f9e1d
call Func_f992a
ld a, $28
ld [wc635], a
ret
Func_f9d8f:
call Func_f9e41
jr c, .asm_f9dad
ld a, [wc635]
and $3
ret nz
ld a, [rOBP0]
xor $ff
ld [rOBP0], a
ld a, [rBGP]
xor $3
ld [rBGP], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
ret
.asm_f9dad
xor a
ld [hLCDCPointer], a
ld a, $e4
ld [rBGP], a
ld [rOBP0], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call Func_f992a
Func_f9dbf:
ld de, Unkn_f9e0a
call Func_f9e4d
jr c, .asm_f9dd2
ld [rOBP0], a
ld [rBGP], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
ret
.asm_f9dd2
call Func_f992a
ret
Unkn_f9dd6:
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $e4
db $e4, $c0, $c0, $ff
Unkn_f9e0a:
db $e4, $90, $90, $40
db $40, $00, $00, $ff
Func_f9e12:
ld c, 64
call DelayFrames
ld hl, wc634
set 7, [hl]
ret
Func_f9e1d:
call SpawnAnimatedObject
ld a, c
ld [wc636], a
ld a, b
ld [wc636 + 1], a
ret
Func_f9e29:
ld a, [wc636]
ld c, a
ld a, [wc636 + 1]
ld b, a
call MaskCurrentAnimatedObjectStruct
ret
Func_f9e35:
ld a, $80
ld [wc635], a
ret
Func_f9e3b:
ld a, $58
ld [wc635], a
ret
Func_f9e41:
ld hl, wc635
ld a, [hl]
and a
jr z, .asm_f9e4b
dec [hl]
and a
ret
.asm_f9e4b
scf
ret
Func_f9e4d:
ld hl, wc635
ld a, [hl]
inc [hl]
ld l, a
ld h, $0
add hl, de
ld a, [hl]
cp $ff
jr z, .asm_f9e5d
and a
ret
.asm_f9e5d
scf
ret
Func_f9e5f:
ld hl, vBGMap0
ld bc, $80
ld a, $1
call Func_f9fb3
ld hl, $9880
ld bc, $140
xor a
call Func_f9fb3
ld hl, $99c0
ld bc, $80
ld a, $1
call Func_f9fb3
ret
Func_f9e80:
xor a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
call DelayFrame
call DelayFrame
call DisableLCD
ret
Func_f9e9a:
ld e, a
callab Func_720ad
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $90
ld [hWY], a
ld a, $e3
ld [rLCDC], a
ld a, $e4
ld [rBGP], a
ld [rOBP0], a
ld a, $e0
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
ret
Func_f9ec4:
ld de, wc800
ld a, $8
.asm_f9ec9
push af
ld hl, Unkn_f9ed8
ld bc, $20
call Func_f9faa
pop af
dec a
jr nz, .asm_f9ec9
ret
Unkn_f9ed8:
db 0, 0, 1, 2, 2, 3, 3, 3
db 4, 3, 3, 3, 2, 2, 1, 0
db 0, 0, -1, -2, -2, -3, -3, -3
db -4, -3, -3, -3, -2, -2, -1, 0
Func_f9ef8:
ld a, $10
ld [H_VBCOPYSRC], a
ld a, $c8
ld [H_VBCOPYSRC + 1], a
ld a, $10
ld [H_VBCOPYDEST], a
ld a, $c7
ld [H_VBCOPYDEST + 1], a
ld a, $7
ld [H_VBCOPYSIZE], a
ret
Func_f9f0d:
xor a
ld [H_AUTOBGTRANSFERENABLED], a
ld [hSCX], a
ld [hSCY], a
ld [H_AUTOBGTRANSFERDEST], a
ld a, $98
ld [H_AUTOBGTRANSFERDEST + 1], a
call Func_f9f9e
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, $1
call Func_f9fb3
coord hl, 0, 4
ld bc, CopyVideoDataAlternate
xor a
call Func_f9fb3
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call DelayFrame
call DelayFrame
call DelayFrame
xor a
ld [H_AUTOBGTRANSFERENABLED], a
ld de, $6b5a
ld hl, $8000
ld bc, $3eff
call CopyVideoData
ld de, $635a
ld hl, $9000
ld bc, $3e80
call CopyVideoData
call ClearObjectAnimationBuffers
call Func_f9f75
ld b, $8
call RunPaletteCommand
xor a
ld hl, wc634
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
ld a, MUSIC_INTRO_BATTLE
ld c, BANK(Music_IntroBattle)
call PlayMusic
ret
Func_f9f75:
ld a, Unkn_f9fda % $100
ld [wAnimatedObjectSpawnStateDataPointer], a
ld a, Unkn_f9fda / $100
ld [wAnimatedObjectSpawnStateDataPointer + 1], a
ld a, Jumptable_f9ffb % $100
ld [wAnimatedObjectJumptablePointer], a
ld a, Jumptable_f9ffb / $100
ld [wAnimatedObjectJumptablePointer + 1], a
ld a, Unkn_fa13d % $100
ld [wAnimatedObjectOAMDataPointer], a
ld a, Unkn_fa13d / $100
ld [wAnimatedObjectOAMDataPointer + 1], a
ld a, Unkn_fa0ea % $100
ld [wAnimatedObjectFramesDataPointer], a
ld a, Unkn_fa0ea / $100
ld [wAnimatedObjectFramesDataPointer + 1], a
ret
Func_f9f9e:
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, $7f
call Func_f9fb3
ret
Func_f9faa:
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b
jr nz, Func_f9faa
ret
Func_f9fb3:
push de
ld e, a
.asm_f9fb5
ld a, e
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_f9fb5
pop de
ret
Func_f9fbe:
ld hl, wSpriteDataEnd
ld bc, $a0
xor a
call Func_f9fb3
ret
Func_f9fc9:
xor a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
ret
Unkn_f9fda:
db $00, $00, $00
db $01, $01, $00
db $02, $01, $00
db $03, $01, $00
db $04, $02, $00
db $05, $03, $00
db $06, $04, $00
db $07, $01, $00
db $08, $05, $00
db $09, $01, $00
db $0a, $01, $00
Jumptable_f9ffb:
dw Func_fa007
dw Func_fa007
dw Func_fa008
dw Func_fa014
dw Func_fa02b
dw Func_fa062
Func_fa007:
ret
Func_fa008:
ld hl, $4
add hl, bc
ld a, [hl]
cp $58
ret z
sub $4
ld [hl], a
ret
Func_fa014:
ld hl, $4
add hl, bc
ld a, [hl]
cp $58
jr z, .asm_fa020
add $4
ld [hl], a
.asm_fa020
ld hl, $5
add hl, bc
cp $58
ret z
add $1
ld [hl], a
ret
Func_fa02b:
ld hl, $b
add hl, bc
ld e, [hl]
ld d, $0
ld hl, Jumptable_fa03b
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
Jumptable_fa03b:
dw Func_fa03f
dw Func_fa051
Func_fa03f:
ld hl, $5
add hl, bc
ld a, [hl]
cp $58
jr z, .asm_fa04c
sub $2
ld [hl], a
ret
.asm_fa04c
ld hl, $b
add hl, bc
inc [hl]
Func_fa051:
ld hl, $c
add hl, bc
ld a, [hl]
inc [hl]
ld d, $8
call Func_fa079
ld hl, $7
add hl, bc
ld [hl], a
ret
Func_fa062:
ld hl, $b
add hl, bc
ld a, [hl]
ld hl, $4
add hl, bc
add [hl]
ld [hl], a
ret
Func_fa06e:
ld e, a
ld d, $0
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ret
Func_fa077: ; cosine
add $10
Func_fa079:
and $3f
cp $20
jr nc, .asm_fa084
call Func_fa08e
ld a, h
ret
.asm_fa084
and $1f
call Func_fa08e
ld a, h
xor $ff
inc a
ret
Func_fa08e:
ld e, a
ld a, d
ld d, $0
ld hl, Unkn_fa0aa
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld hl, $0
.asm_fa09d
srl a
jr nc, .asm_fa0a2
add hl, de
.asm_fa0a2
sla e
rl d
and a
jr nz, .asm_fa09d
ret
Unkn_fa0aa:
sine_wave $100
Unkn_fa0ea:
dw Unkn_fa100
dw Unkn_fa103
dw Unkn_fa10a
dw Unkn_fa111
dw Unkn_fa118
dw Unkn_fa11b
dw Unkn_fa11e
dw Unkn_fa121
dw Unkn_fa124
dw Unkn_fa127
dw Unkn_fa138
Unkn_fa100:
frame $00, 32
endanim
Unkn_fa103:
frame $01, 4
frame $02, 4
frame $03, 4
dorestart
Unkn_fa10a:
frame $04, 4
frame $05, 4
frame $06, 4
dorestart
Unkn_fa111:
frame $07, 4
frame $08, 4
frame $09, 4
dorestart
Unkn_fa118:
frame $0a, 32
endanim
Unkn_fa11b:
frame $0b, 32
endanim
Unkn_fa11e:
frame $0c, 32
endanim
Unkn_fa121:
frame $0d, 32
endanim
Unkn_fa124:
frame $0e, 32
endanim
Unkn_fa127:
frame $0f, 31
frame $11, 2
frame $0f, 2
frame $11, 2
frame $0f, 31
frame $11, 2
frame $0f, 23
frame $10, 32
endanim
Unkn_fa138:
frame $12, 4
frame $13, 4
dorestart
Unkn_fa13d:
dbw $00, Unkn_fa179
dbw $96, Unkn_fa17e
dbw $98, Unkn_fa17e
dbw $9a, Unkn_fa17e
dbw $0c, Unkn_fa18f
dbw $0e, Unkn_fa18f
dbw $3c, Unkn_fa18f
dbw $60, Unkn_fa1b0
dbw $70, Unkn_fa1b0
dbw $80, Unkn_fa1b0
dbw $90, Unkn_fa201
dbw $00, Unkn_fa201
dbw $06, Unkn_fa201
dbw $c6, Unkn_fa292
dbw $6d, Unkn_fa2f7
dbw $f0, Unkn_fa308
dbw $f4, Unkn_fa308
dbw $f8, Unkn_fa308
dbw $9c, Unkn_fa329
dbw $ec, Unkn_fa329
Unkn_fa179:
db 1
db $fc, $fc, $00, $00
Unkn_fa17e:
db 4
db $f8, $f8, $00, $00
db $f8, $00, $01, $00
db $00, $f8, $10, $00
db $00, $00, $11, $00
Unkn_fa18f:
db 8
db $f0, $f8, $00, $00
db $f0, $00, $01, $00
db $f8, $f8, $10, $00
db $f8, $00, $11, $00
db $00, $f8, $20, $00
db $00, $00, $20, $20
db $08, $f8, $21, $00
db $08, $00, $21, $20
Unkn_fa1b0:
db 20
db $e8, $f8, $00, $00
db $e8, $00, $01, $00
db $f0, $f8, $02, $00
db $f0, $00, $03, $00
db $f8, $f0, $04, $00
db $f8, $f8, $05, $00
db $f8, $00, $06, $00
db $f8, $08, $04, $20
db $00, $f0, $07, $00
db $00, $f8, $08, $00
db $00, $00, $08, $20
db $00, $08, $07, $20
db $08, $f0, $09, $00
db $08, $f8, $0a, $00
db $08, $00, $0a, $20
db $08, $08, $09, $20
db $10, $f0, $0b, $00
db $10, $f8, $0c, $00
db $10, $00, $0c, $20
db $10, $08, $0b, $20
Unkn_fa201:
db 36
db $e8, $e8, $00, $00
db $e8, $f0, $01, $00
db $e8, $f8, $02, $00
db $e8, $00, $03, $00
db $e8, $08, $04, $00
db $e8, $10, $05, $00
db $f0, $e8, $10, $00
db $f0, $f0, $11, $00
db $f0, $f8, $12, $00
db $f0, $00, $13, $00
db $f0, $08, $14, $00
db $f0, $10, $15, $00
db $f8, $e8, $20, $00
db $f8, $f0, $21, $00
db $f8, $f8, $22, $00
db $f8, $00, $23, $00
db $f8, $08, $24, $00
db $f8, $10, $25, $00
db $00, $e8, $30, $00
db $00, $f0, $31, $00
db $00, $f8, $32, $00
db $00, $00, $33, $00
db $00, $08, $34, $00
db $00, $10, $35, $00
db $08, $e8, $40, $00
db $08, $f0, $41, $00
db $08, $f8, $42, $00
db $08, $00, $43, $00
db $08, $08, $44, $00
db $08, $10, $45, $00
db $10, $e8, $50, $00
db $10, $f0, $51, $00
db $10, $f8, $52, $00
db $10, $00, $53, $00
db $10, $08, $54, $00
db $10, $10, $55, $00
Unkn_fa292:
db 25
db $ec, $f0, $00, $00
db $ec, $f8, $01, $00
db $ec, $00, $02, $00
db $ec, $08, $03, $00
db $ec, $10, $04, $00
db $f4, $f0, $05, $00
db $f4, $f8, $06, $00
db $f4, $00, $07, $00
db $f4, $08, $08, $00
db $f4, $10, $09, $00
db $fc, $f0, $10, $00
db $fc, $f8, $11, $00
db $fc, $00, $12, $00
db $fc, $08, $13, $00
db $fc, $10, $14, $00
db $04, $f0, $15, $00
db $04, $f8, $16, $00
db $04, $00, $17, $00
db $04, $08, $18, $00
db $04, $10, $19, $00
db $0c, $f0, $20, $00
db $0c, $f8, $21, $00
db $0c, $00, $22, $00
db $0c, $08, $23, $00
db $0c, $10, $24, $00
Unkn_fa2f7:
db 4
db $fc, $f0, $00, $00
db $fc, $f8, $01, $00
db $fc, $00, $01, $20
db $fc, $08, $00, $20
Unkn_fa308:
db 8
db $f8, $e8, $00, $10
db $f8, $f0, $01, $10
db $00, $e8, $02, $10
db $00, $f0, $03, $10
db $f8, $08, $01, $30
db $f8, $10, $00, $30
db $00, $08, $03, $30
db $00, $10, $02, $30
Unkn_fa329:
db 12
db $f8, $d8, $00, $10
db $f8, $e0, $01, $10
db $f8, $e8, $02, $10
db $00, $d8, $10, $10
db $00, $e0, $11, $10
db $00, $e8, $12, $10
db $f8, $10, $02, $30
db $f8, $18, $01, $30
db $f8, $20, $00, $30
db $00, $10, $12, $30
db $00, $18, $11, $30
db $00, $20, $10, $30
YellowIntroGraphics: INCBIN "gfx/yellow_intro.2bpp"
INCLUDE "engine/animated_objects_3e.asm"