diff options
| author | Marcus Huderle <huderlem@gmail.com> | 2017-07-04 14:40:08 -0700 |
|---|---|---|
| committer | Marcus Huderle <huderlem@gmail.com> | 2017-07-04 14:40:08 -0700 |
| commit | e0ead8526ec0928983010a663a4c24a6b7175d80 (patch) | |
| tree | abef3440420053be55e5075376d3fdfc894ec053 /engine | |
| parent | f8b61dfb144a6fc3671802139a73bd6e86d4b49c (diff) | |
More refactoring stuff out of main.asm
Diffstat (limited to 'engine')
9 files changed, 2720 insertions, 10 deletions
diff --git a/engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm b/engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm new file mode 100755 index 0000000..c4b90fa --- /dev/null +++ b/engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm @@ -0,0 +1,303 @@ +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 LoadWildMonCollisionMask
+ 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 ConcludeCatchEmMode
+ 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 StopTimer
+ 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
diff --git a/engine/pinball_game/catchem_mode/catchem_mode_red_field.asm b/engine/pinball_game/catchem_mode/catchem_mode_red_field.asm new file mode 100755 index 0000000..b34f93d --- /dev/null +++ b/engine/pinball_game/catchem_mode/catchem_mode_red_field.asm @@ -0,0 +1,297 @@ +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 LoadWildMonCollisionMask
+ 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 ConcludeCatchEmMode
+ 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 StopTimer
+ 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
diff --git a/engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm b/engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm new file mode 100755 index 0000000..a9b0b00 --- /dev/null +++ b/engine/pinball_game/evolution_mode/evolution_mode_blue_field.asm @@ -0,0 +1,729 @@ +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, EvolutionProgressIconsGfx
+ 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(EvolutionProgressIconsGfx)
+ 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, wNumPokemonEvolvedInBallBonus
+ call Increment_Max100
+ callba SetPokemonOwnedFlag
+ ld a, [wPreviousNumPokeballs]
+ cp $3
+ ret z
+ add $2
+ cp $3
+ jr c, .asm_20d72
+ ld a, $3
+.asm_20d72
+ ld [wNumPokeballs], a
+ ld a, $80
+ ld [wPokeballBlinkingCounter], 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 StopTimer
+ 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 [wIndicatorState2Backup], 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 [wIndicatorState2Backup], 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, [wIndicatorState2Backup]
+ 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
diff --git a/engine/pinball_game/evolution_mode/evolution_mode_red_field.asm b/engine/pinball_game/evolution_mode/evolution_mode_red_field.asm new file mode 100755 index 0000000..ca7faaf --- /dev/null +++ b/engine/pinball_game/evolution_mode/evolution_mode_red_field.asm @@ -0,0 +1,731 @@ +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, EvolutionProgressIconsGfx
+ 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(EvolutionProgressIconsGfx)
+ 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, wNumPokemonEvolvedInBallBonus
+ call Increment_Max100
+ callba SetPokemonOwnedFlag
+ ld a, [wPreviousNumPokeballs]
+ cp $3
+ ret z
+ add $2
+ cp $3
+ jr c, .asm_2074d
+ ld a, $3
+.asm_2074d
+ ld [wNumPokeballs], a
+ ld a, $80
+ ld [wPokeballBlinkingCounter], 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 StopTimer
+ 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
diff --git a/engine/pinball_game/load_stage_data/load_unused_stage.asm b/engine/pinball_game/load_stage_data/load_unused_stage.asm index 8f4dadf..0e4137a 100755 --- a/engine/pinball_game/load_stage_data/load_unused_stage.asm +++ b/engine/pinball_game/load_stage_data/load_unused_stage.asm @@ -4,3 +4,18 @@ DoNothing_1805f: ; 0x1805f DoNothing_18060: ; 0x18060
ret
+
+DoNothing_18061: ; 0x18061
+ ret
+
+Func_18062: ; 0x18062
+; used by unused stage
+ callba CheckRedStageLaunchAlleyCollision
+ ret
+
+DoNothing_1806d: ; 0x1806d
+ ret
+
+Func_1806e: ; 0x1806e
+ callba Func_1652d
+ ret
diff --git a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm index ec955f1..cf35329 100755 --- a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm @@ -8066,3 +8066,40 @@ TileData_1f2e2: ; 0x1f2e2 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
diff --git a/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm index 97ed5fa..6a7e301 100755 --- a/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm +++ b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm @@ -386,7 +386,7 @@ AnimationDataPointers_185d9: dw AnimationData_185e6
AnimationData_185dd: ; 0x185dd
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $0D, $01
db $0D, $00
db $0D, $02
@@ -394,7 +394,7 @@ AnimationData_185dd: ; 0x185dd db $00 ; terminator
AnimationData_185e6: ; 0x185e6
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $05, $03
db $04, $03
db $04, $04
@@ -635,7 +635,7 @@ AnimationDataPointers_1877d: dw AnimationData_1878a
AnimationData_18781:
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $0D, $00
db $0D, $01
db $0D, $02
@@ -643,7 +643,7 @@ AnimationData_18781: db $00 ; terminator
AnimationData_1878a:
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $05, $04
db $04, $04
db $04, $05
@@ -1039,7 +1039,7 @@ AnimationDataPointers_18a57: dw AnimationData_18d2f
AnimationData_18a61:
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $40, $01
db $10, $00
db $40, $02
@@ -1047,7 +1047,7 @@ AnimationData_18a61: db $00 ; terminator
AnimationData_18a6a:
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $02, $00
db $01, $06
db $02, $00
@@ -1147,14 +1147,14 @@ AnimationData_18a6a: db $00 ; terminator
AnimationData_18b2b:
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $10, $05
db $20, $01
db $08, $00
db $00 ; terminator
AnimationData_18b32:
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $10, $05
db $10, $00
db $08, $03
@@ -1412,7 +1412,7 @@ AnimationData_18b32: db $00 ; terminator
AnimationData_18d2f:
-; Each entry is [duration][OAM id]
+; Each entry is [duration][frame]
db $40, $00
db $40, $00
db $00 ; terminator
@@ -1443,3 +1443,441 @@ Func_18d34: ; 0x18d34 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, wStageCollisionMap + $c7
+ call Func_18db2
+ ld de, wStageCollisionMap + $ae
+ call Func_18db2
+ ld de, wStageCollisionMap + $123
+ call Func_18db2
+ ld de, wStageCollisionMap + $14d
+ ; 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
diff --git a/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm index 87e930c..9aa3d36 100755 --- a/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm +++ b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm @@ -1,3 +1,163 @@ +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
+
ResolveMeowthBonusGameObjectCollisions: ; 0x2442a
ld a, [wd710]
jr nz, .asm_2443f
diff --git a/engine/pinball_game/object_collision/object_collision.asm b/engine/pinball_game/object_collision/object_collision.asm index b4ca37b..49a2253 100755 --- a/engine/pinball_game/object_collision/object_collision.asm +++ b/engine/pinball_game/object_collision/object_collision.asm @@ -18,7 +18,7 @@ GameObjectCollisions_CallTable: ; 0x2735 padded_dab DoNothing_18061
- padded_dab CheckRedStageLaunchAlleyCollision_
+ padded_dab Func_18062
; STAGE_BLUE_FIELD_TOP
padded_dab CheckBlueStageTopGameObjectCollisions
|
