summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rwxr-xr-xmain.asm1456
1 files changed, 1 insertions, 1455 deletions
diff --git a/main.asm b/main.asm
index 7e8be32..92d815e 100755
--- a/main.asm
+++ b/main.asm
@@ -214,1461 +214,7 @@ CallTable_10027: ; 0x10027
; STAGE_BLUE_FIELD_BOTTOM
padded_dab Func_202bc
-StartCatchEmMode: ; 0x1003f
- ld a, [wInSpecialMode] ; current game mode?
- and a
- ret nz ; don't start catch 'em mode if we're already doing something like Map Move mode
- ld a, $1
- ld [wInSpecialMode], a ; set special mode flag
- xor a
- ld [wSpecialMode], a
- ld [wd54d], a
- ld a, [wCurrentStage]
- sla a
- ld c, a
- ld b, $0
- push bc
- ld hl, WildMonOffsetsPointers
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wCurrentMap]
- sla a
- ld c, a
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hl]
- ld b, a
- pop de
- ld hl, WildMonPointers
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, bc
- call GenRandom
- and $f
- call CheckForMew
- ld c, a
- ld b, $0
- add hl, bc
- ld a, [wRareMonsFlag] ; this gets set to $08 when the rare mons should be used.
- sla a
- ld c, a
- add hl, bc
- ld a, [hl] ; a contains mon id
- dec a
- ld [wCurrentCatchEmMon], a
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- ld hl, EvolutionLineIds
- add hl, bc
- ld c, [hl]
- ld h, b
- ld l, c
- add hl, bc
- add hl, bc ; multiply the evolution line id by 3
- ld bc, Data_13685
- add hl, bc
- ld a, [hli]
- ld [wd5c1], a
- ld [wd5be], a
- ld a, [hli]
- ld [wd5c2], a
- ld a, [hli]
- ld [wd5c3], a
- ld hl, wd586
- ld a, [wd5b6]
- ld c, a
- and a
- ld b, $18
- jr z, .asm_100c7
-.asm_100ba
- ld a, $1
- ld [hli], a
- xor a
- ld [hli], a
- dec b
- dec c
- jr nz, .asm_100ba
- ld a, b
- and a
- jr z, .asm_100ce
-.asm_100c7
- xor a
- ld [hli], a
- inc a
- ld [hli], a
- dec b
- jr nz, .asm_100c7
-.asm_100ce
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- sla c
- rl b
- ld hl, CatchEmTimerData
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hl]
- ld b, a
- callba StartTimer
- callba InitBallSaverForCatchEmMode
- call Func_10696
- call Func_3579
- ld a, [wCurrentStage]
- bit 0, a
- jr z, .asm_1011d
- ld a, BANK(StageRedFieldBottomBaseGameBoyColorGfx)
- ld hl, StageRedFieldBottomBaseGameBoyColorGfx + $300
- ld de, vTilesSH tile $2e
- ld bc, $0020
- call LoadOrCopyVRAMData
- ld a, $0
- ld hl, CatchBarTiles
- deCoord 6, 8, vBGMap
- ld bc, (CatchBarTilesEnd - CatchBarTiles)
- call LoadOrCopyVRAMData
-.asm_1011d
- call SetPokemonSeenFlag
- ld a, [wCurrentStage]
- rst JumpTable ; calls JumpToFuncInTable
-CallTable_10124: ; 0x10124
- ; STAGE_RED_FIELD_TOP
- dw Func_10871
- ; STAGE_RED_FIELD_BOTTOM
- dw Func_10871
- dw DoNothing_1098a
- dw DoNothing_1098a
- ; STAGE_BLUE_FIELD_TOP
- dw Func_1098c
- ; STAGE_BLUE_FIELD_BOTTOM
- dw Func_1098c
-
-CheckForMew:
-; Sets the encountered mon to Mew if the following conditions are met:
-; 1. Random number in register a equals $f
-; 2. The current map is Indigo Plateau (it does a roundabout way of checking this)
-; 3. The right alley has been hit three times
-; 4. The Mewtwo Bonus Stage completion counter equals 2.
- push af
- cp $f ; random number equals $f
- jr nz, .asm_10155
- ld a, c
- cp (BlueStageIndigoPlateauWildMons - BlueStageWildMons) & $ff ; check if low-byte of map mons offset is Indigo Plateau
- jr nz, .asm_10155
- ld a, b
- cp (BlueStageIndigoPlateauWildMons - BlueStageWildMons) >> 8 ; check if high-byte of map mons offset is Indigo Plateau
- jr nz, .asm_10155
- ld a, [wRareMonsFlag]
- cp $8
- jr nz, .asm_10155
- ld a, [wNumMewtwoBonusCompletions]
- cp NUM_MEWTWO_COMPLETIONS_FOR_MEW
- jr nz, .asm_10155
- pop af
- xor a
- ld [wNumMewtwoBonusCompletions], a
- ld a, $10
- ret
-
-.asm_10155
- pop af
- ret
-
-ConcludeCatchEmMode: ; 0x10157
- xor a
- ld [wInSpecialMode], a
- ld [wWildMonIsHittable], a
- ld [wd5c6], a
- ld [wd5b6], a
- ld [wNumMonHits], a
- call ClearWildMonCollisionMask
- callba StopTimer
- ld a, [wCurrentStage]
- rst JumpTable ; calls JumpToFuncInTable
-CallTable_10178: ; 0x10178
- ; STAGE_RED_FIELD_TOP
- dw Func_108f5
- ; STAGE_RED_FIELD_BOTTOM
- dw Func_108f5
- dw DoNothing_1098b
- dw DoNothing_1098b
- ; STAGE_BLUE_FIELD_TOP
- dw Func_109fc
- ; STAGE_BLUE_FIELD_BOTTOM
- dw Func_109fc
-
-Func_10184: ; 0x10184
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- sla c
- rl b
- add c
- ld c, a
- jr nc, .asm_10199
- inc b
-.asm_10199
- ld hl, MonBillboardPicPointers
- add hl, bc
- ld a, [hli]
- ld [$ff8c], a
- ld a, [hli]
- ld [$ff8d], a
- ld a, [hl]
- ld [$ff8e], a
- ld hl, MonBillboardPaletteMapPointers
- add hl, bc
- ld a, [hli]
- ld [$ff8f], a
- ld a, [hli]
- ld [$ff90], a
- ld a, [hli]
- ld [$ff91], a
- ld de, wc000
- ld hl, wd586
- ld c, $0
-.asm_101bb
- ld a, [hli]
- cp [hl]
- ld [hli], a
- jr z, .asm_101d2
- ld b, a
- call nz, Func_101d9
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_101d2
- ld a, [wCurrentStage]
- bit 0, a
- ld a, b
- call nz, Func_10230
-.asm_101d2
- inc c
- ld a, c
- cp $18
- jr nz, .asm_101bb
- ret
-
-Func_101d9: ; 0x101d9
- push bc
- push hl
- push de
- push af
- ld a, $10
- ld [de], a
- inc de
- ld a, $1
- ld [de], a
- inc de
- ld b, $0
- ld hl, Data_102a4
- add hl, bc
- ld c, [hl]
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- ld hl, vTilesSH tile $10
- add hl, bc
- ld a, l
- ld [de], a
- inc de
- ld a, h
- ld [de], a
- inc de
- ld a, [$ff8c]
- ld l, a
- ld a, [$ff8d]
- ld h, a
- add hl, bc
- pop af
- and a
- jr nz, .asm_10215
- ld bc, $0180
- add hl, bc
-.asm_10215
- ld a, l
- ld [de], a
- inc de
- ld a, h
- ld [de], a
- inc de
- ld a, [$ff8e]
- ld [de], a
- inc de
- ld a, $0
- ld [de], a
- inc de
- pop bc
- push de
- xor a
- ld de, Func_11d2
- call Func_10c5
- pop de
- pop hl
- pop bc
- ret
-
-Func_10230: ; 0x10230
- push bc
- push hl
- push de
- push af
- ld a, $1
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld b, $0
- ld hl, Data_102a4
- add hl, bc
- ld c, [hl]
- sla c
- ld hl, PointerTable_10274
- add hl, bc
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hl]
- ld [de], a
- inc de
- srl c
- ld a, [$ff8f]
- ld l, a
- ld a, [$ff90]
- ld h, a
- add hl, bc
- pop af
- and a
- ld a, [$ff91]
- call ReadByteFromBank
- jr nz, .asm_10261
- ld a, $5
-.asm_10261
- ld [de], a
- inc de
- ld a, $0
- ld [de], a
- inc de
- pop bc
- push de
- xor a
- ld de, LoadTileListsBank1
- call Func_10c5
- pop de
- pop hl
- pop bc
- ret
-
-PointerTable_10274: ; 0x10274
- dw $9887
- dw $9888
- dw $9889
- dw $988A
- dw $988B
- dw $988C
- dw $98A7
- dw $98A8
- dw $98A9
- dw $98AA
- dw $98AB
- dw $98AC
- dw $98C7
- dw $98C8
- dw $98C9
- dw $98CA
- dw $98CB
- dw $98CC
- dw $98E7
- dw $98E8
- dw $98E9
- dw $98EA
- dw $98EB
- dw $98EC
-
-Data_102a4: ; 0x102a4
- db $00, $07, $06, $01, $0E, $15, $14, $0F, $04, $0B, $0A, $05, $0C, $13, $12, $0D, $02, $09, $08, $03, $10, $17, $16, $11
-
-Func_102bc: ; 0x102bc
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- sla c
- rl b
- add c
- ld c, a
- jr nc, .asm_102cb
- inc b
-.asm_102cb
- ld hl, MonBillboardPalettePointers
- add hl, bc
- ld a, [hli]
- ld [$ff8c], a
- ld a, [hli]
- ld [$ff8d], a
- ld a, [hl]
- ld [$ff8e], a
- ld de, wc1b8
- ld a, $10
- ld [de], a
- inc de
- ld a, $8
- ld [de], a
- inc de
- ld a, $30
- ld [de], a
- inc de
- ld a, [$ff8c]
- ld [de], a
- inc de
- ld a, [$ff8d]
- ld [de], a
- inc de
- ld a, [$ff8e]
- ld [de], a
- inc de
- ld a, $0
- ld [de], a
- xor a
- ld bc, wc1b8
- ld de, LoadPalettes
- call Func_10c5
- ret
-
-Func_10301: ; 0x10301
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- sla c
- rl b
- add c
- ld c, a
- jr nc, .asm_10310
- inc b
-.asm_10310
- ld hl, MonAnimatedPalettePointers
- add hl, bc
- ld a, [hli]
- ld [$ff8c], a
- ld a, [hli]
- ld [$ff8d], a
- ld a, [hl]
- ld [$ff8e], a
- ld de, wc1b8
- ld a, $10
- ld [de], a
- inc de
- ld a, $4
- ld [de], a
- inc de
- ld a, $58
- ld [de], a
- inc de
- ld a, [$ff8c]
- ld [de], a
- inc de
- ld a, [$ff8d]
- ld [de], a
- inc de
- ld a, [$ff8e]
- ld [de], a
- inc de
- ld a, $4
- ld [de], a
- inc de
- ld a, $68
- ld [de], a
- inc de
- ld a, [$ff8c]
- ld l, a
- ld a, [$ff8d]
- ld h, a
- ld bc, $0008
- add hl, bc
- ld a, l
- ld [de], a
- inc de
- ld a, h
- ld [de], a
- inc de
- ld a, [$ff8e]
- ld [de], a
- inc de
- ld a, $0
- ld [de], a
- xor a
- ld bc, wc1b8
- ld de, LoadPalettes
- call Func_10c5
- ret
-
-Func_10362: ; 0x10362
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- sla c
- rl b
- add c
- ld c, a
- jr nc, .asm_10371
- inc b
-.asm_10371
- ld hl, MonAnimatedPicPointers
- add hl, bc
- ld a, [hli]
- ld [$ff8c], a
- ld a, [hli]
- ld [$ff8d], a
- ld a, [hl]
- ld [$ff8e], a
- ld de, wc150
- ld bc, $0000
-.asm_10384
- call Func_1038e
- inc c
- ld a, c
- cp $d
- jr nz, .asm_10384
- ret
-
-Func_1038e: ; 0x1038e
- push bc
- push de
- ld a, c
- sla a
- add c
- ld c, a
- sla c
- ld hl, Data_103c6
- add hl, bc
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [$ff8c]
- add [hl]
- ld [de], a
- inc hl
- inc de
- ld a, [$ff8d]
- adc [hl]
- ld [de], a
- inc de
- ld a, [$ff8e]
- ld [de], a
- inc de
- ld a, $0
- ld [de], a
- inc de
- pop bc
- push de
- xor a
- ld de, Func_11d2
- call Func_10c5
- pop de
- pop bc
- ret
-
-Data_103c6: ; 0x103c6
-; TODO: this might have pointers in it
- db $40, $04, $00, $89, $00, $00
- db $40, $04, $40, $89, $40, $00
- db $40, $04, $80, $89, $80, $00
- db $40, $04, $C0, $89, $C0, $00
- db $40, $04, $00, $8A, $00, $01
- db $40, $04, $40, $8A, $40, $01
- db $20, $02, $80, $8A, $80, $01
- db $20, $02, $A0, $81, $A0, $01
- db $40, $04, $C0, $81, $C0, $01
- db $40, $04, $00, $82, $00, $02
- db $40, $04, $40, $82, $40, $02
- db $40, $04, $80, $82, $80, $02
- db $40, $04, $C0, $82, $C0, $02
-
-Func_10414: ; 0x10414
- ld a, BANK(Data_10420)
- ld bc, Data_10420
- ld de, Func_11b5
- call Func_10c5
- ret
-
-Data_10420:
- db $18
- db $06
- dw $9887
- db $80
- db $06
- dw $98a7
- db $80
- db $06
- dw $98c7
- db $80
- db $06
- dw $98e7
- db $80
- db $00
-
-Func_10432: ; 0x10432
- ld a, BANK(Data_1043e)
- ld bc, Data_1043e
- ld de, LoadTileLists
- call Func_10c5
- ret
-
-Data_1043e:
- db $18
- db $06
- dw $9887
- db $90, $91, $92, $93, $94, $95
- db $06
- dw $98a7
- db $96, $97, $98, $99, $9a, $9b
- db $06
- dw $98c7
- db $9c, $9d, $9e, $9f, $a0, $a1
- db $06
- dw $98e7
- db $a2, $a3, $a4, $a5, $a6, $a7
- db $00
-
-LoadWildMonCollisionMask: ; 0x10464
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- sla c
- rl b
- add c
- ld c, a
- jr nc, .noCarry
- inc b
-.noCarry
- ld hl, MonAnimatedCollisionMaskPointers
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld h, b
- ld l, c
- ld de, wMonAnimatedCollisionMask
- ld bc, $0080
- call FarCopyData
- ret
-
-ClearWildMonCollisionMask: ; 0x10488
- xor a
- ld hl, wMonAnimatedCollisionMask
- ld b, $20
-.asm_1048e
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- dec b
- jr nz, .asm_1048e
- ret
-
-BallCaptureInit: ; 0x10496
- xor a
- ld [wd5c6], a
- ld a, BANK(PikachuSaverGfx)
- ld hl, PikachuSaverGfx + $c0
- ld de, vTilesOB tile $7e
- ld bc, $0020
- call LoadVRAMData
- ld a, BANK(BallCaptureSmokeGfx)
- ld hl, BallCaptureSmokeGfx
- ld de, vTilesSH tile $10
- ld bc, $0180
- call LoadVRAMData
- call LoadShakeBallGfx
- ld hl, BallCaptureAnimationData
- ld de, wBallCaptureAnimationFrameCounter
- call CopyHLToDE
- ld a, $1
- ld [wCapturingMon], a
- xor a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- xor a
- ld [wd548], a
- ld [wd549], a
- lb de, $00, $0b
- call PlaySoundEffect
- ret
-
-LoadShakeBallGfx: ; 0x104e2
-; Loads the graphics for the ball shaking after a pokemon is caught.
- ld a, [wBallType]
- cp GREAT_BALL
- jr nc, .notPokeball
- ld a, Bank(PinballPokeballShakeGfx)
- ld hl, PinballPokeballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call LoadVRAMData
- ret
-
-.notPokeball
- cp ULTRA_BALL
- jr nc, .notGreatball
- ld a, Bank(PinballGreatballShakeGfx)
- ld hl, PinballGreatballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call LoadVRAMData
- ret
-
-.notGreatball
- cp MASTER_BALL
- jr nc, .notUltraBall
- ld a, Bank(PinballUltraballShakeGfx)
- ld hl, PinballUltraballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call LoadVRAMData
- ret
-
-.notUltraBall
- ld a, Bank(PinballMasterballShakeGfx)
- ld hl, PinballMasterballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call LoadVRAMData
- ret
-
-CapturePokemon: ; 0x1052d
- ld a, [wBallCaptureAnimationFrame]
- cp $c
- jr nz, .asm_10541
- ld a, [wBallCaptureAnimationFrameCounter]
- cp $1
- jr nz, .asm_10541
- lb de, $00, $41
- call PlaySoundEffect
-.asm_10541
- ld hl, BallCaptureAnimationData
- ld de, wBallCaptureAnimationFrameCounter
- call UpdateAnimation
- ld a, [wBallCaptureAnimationFrameIndex]
- cp $1
- jr nz, .asm_1055d
- ld a, [wBallCaptureAnimationFrameCounter]
- cp $1
- jr nz, .asm_1055d
- xor a
- ld [wWildMonIsHittable], a
- ret
-
-.asm_1055d
- ld a, [wBallCaptureAnimationFrameIndex]
- cp $15
- ret nz
- ld a, [wBallCaptureAnimationFrameCounter]
- cp $1
- ret nz
- call Func_3475
- ld de, $0000
- call PlaySong
- rst AdvanceFrame
- lb de, $23, $29
- call PlaySoundEffect
- call Func_10825
- call Func_3475
- ld a, [wNumPartyMons]
- and a
- call z, Func_10848
- ld a, $50
- ld [wd4b4], a
- ld a, $40
- ld [wd4b6], a
- ld a, $80
- ld [wBallXVelocity], a
- xor a
- ld [wBallXPos], a
- ld [wBallYPos], a
- ld [wCapturingMon], a
- ld a, $1
- ld [wd548], a
- ld [wd549], a
- callba RestoreBallSaverAfterCatchEmMode
- call ConcludeCatchEmMode
- ld de, $0001
- call PlaySong
- ld hl, wd628
- call Func_e4a
- jr nc, .asm_105d1
- ld c, $a
- call Func_e55
- callba z, Func_30164
-.asm_105d1
- call SetPokemonOwnedFlag
- ld a, [wd624]
- cp $3
- ret z
- inc a
- ld [wd625], a
- ld a, $80
- ld [wd626], a
- ret
-
-BallCaptureAnimationData: ; 0x105e4
-; Each entry is [OAM id][duration]
- db $05, $00
- db $05, $01
- db $05, $02
- db $04, $03
- db $06, $04
- db $08, $05
- db $07, $06
- db $05, $07
- db $04, $08
- db $04, $09
- db $04, $0A
- db $04, $0B
- db $24, $0A
- db $09, $0C
- db $09, $0A
- db $09, $0C
- db $27, $0A
- db $09, $0C
- db $09, $0A
- db $09, $0C
- db $24, $0A
- db $01, $0A
- db $00 ; terminator
-
-Func_10611: ; 0x10611
- and a
- ret z
- dec a
- sla a
- ld c, a
- ld b, $0
- ld hl, Data_1062a
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hl]
- ld b, a
- ld a, BANK(Data_1062a)
- ld de, Func_11d2
- call Func_10c5
- ret
-
-Data_1062a:
- dw Data_10630
- dw Data_10638
- dw Data_10640
-
-Data_10630:
- db $20
- db $02
- dw $8ae0
- dw CatchTextGfx + $00
- db BANK(CatchTextGfx)
- db $00
-
-Data_10638:
- db $20
- db $02
- dw $8b00
- dw CatchTextGfx + $20
- db BANK(CatchTextGfx)
- db $00
-
-Data_10640:
- db $20
- db $02
- dw $8b20
- dw CatchTextGfx + $40
- db BANK(CatchTextGfx)
- db $00
-
-Func_10648: ; 0x10648
- call Func_10184
- ld a, [wd54e]
- dec a
- ld [wd54e], a
- jr nz, .asm_10677
- ld a, $14
- ld [wd54e], a
- ld hl, wd586
- ld b, $18
-.asm_1065e
- ld a, [wd54f]
- and $1
- ld [hli], a
- xor $1
- ld [hli], a
- dec b
- jr nz, .asm_1065e
- ld a, [wd54f]
- dec a
- ld [wd54f], a
- jr nz, .asm_10677
- ld hl, wd54d
- inc [hl]
-.asm_10677
- ret
-
-ShowAnimatedWildMon: ; 0x10678
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- ld hl, MonAnimatedSpriteTypes
- add hl, bc
- ld a, [hl]
- ld [wd5bc], a
- ld [wd5bd], a
- ld a, $1
- ld [wWildMonIsHittable], a
- xor a
- ld [wBallHitWildMon], a
- ld [wNumMonHits], a
- ret
-
-Func_10696: ; 0x10696
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5cc
- ld de, LetsGetPokemonText
- call LoadTextHeader
- ret
-
-Func_106a6: ; 0x106a6
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5cc
- ld de, PokemonRanAwayText
- call LoadTextHeader
- ret
-
-Func_106b6: ; 0x106b6
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b ; bc was just multiplied by 16
- ld hl, PokemonNames + 1
- add hl, bc
- ld de, YouGotAnText ; "You got an"
- ld bc, Data_2a91
- ld a, [hl]
- ; check if mon's name starts with a vowel, so it can print "an", instead of "a"
- cp "A"
- jr z, .asm_106f1
- cp "I"
- jr z, .asm_106f1
- cp "U"
- jr z, .asm_106f1
- cp "E"
- jr z, .asm_106f1
- cp "O"
- jr z, .asm_106f1
- ld de, YouGotAText ; "You got a"
- ld bc, Data_2a79
-.asm_106f1
- push hl
- push bc
- push de
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5cc
- pop de
- call LoadTextHeader
- ld hl, wd5d4
- pop de
- call LoadTextHeader
- pop hl
- ld de, wBottomMessageText + $20
- ld b, $0 ; count the number of letters in mon's name in register b
-.readLetter
- ld a, [hli]
- and a
- jr z, .endOfName
- ld [de], a
- inc de
- inc b
- jr .readLetter
-
-.endOfName
- ld a, $20
- ld [de], a
- inc de
- xor a
- ld [de], a
- ld a, [wd5db]
- add b
- ld [wd5db], a
- ld a, $14
- sub b
- srl a
- ld b, a
- ld a, [wd5d8]
- add b
- ld [wd5d8], a
- ret
-
-Func_10732: ; 0x10732
- ld a, [wCurrentCatchEmMon]
- inc a
- ld e, a
- ld d, $0
- call PlayCry
- ret
-
-AddCaughtPokemonToParty: ; 0x1073d
- ld a, [wNumPartyMons]
- ld c, a
- ld b, $0
- ld hl, wPartyMons
- add hl, bc
- ld a, [wCurrentCatchEmMon]
- ld [hl], a
- ld a, [wNumPartyMons]
- inc a
- ld [wNumPartyMons], a
- ret
-
-SetPokemonSeenFlag: ; 0x10753
- ld a, [wSpecialMode]
- and a
- ld a, [wCurrentCatchEmMon]
- jr z, .asm_10766
- ld a, [wCurrentEvolutionMon]
- cp $ff
- jr nz, .asm_10766
- ld a, [wCurrentCatchEmMon]
-.asm_10766
- ld c, a
- ld b, $0
- ld hl, wPokedexFlags
- add hl, bc
- set 0, [hl]
- ld hl, wPokedexFlags
- ld de, sPokedexFlags
- ld bc, $0098
- call SaveData
- ret
-
-SetPokemonOwnedFlag: ; 0x1077c
- ld a, [wSpecialMode]
- and a
- ld a, [wCurrentCatchEmMon]
- jr z, .asm_1078f
- ld a, [wCurrentEvolutionMon]
- cp $ff
- jr nz, .asm_1078f
- ld a, [wCurrentCatchEmMon]
-.asm_1078f
- ld c, a
- ld b, $0
- ld hl, wPokedexFlags
- add hl, bc
- set 1, [hl]
- ld hl, wPokedexFlags
- ld de, sPokedexFlags
- ld bc, $0098
- call SaveData
- ret
-
-Func_107a5: ; 0x107a5
- xor a
- ld hl, wIndicatorStates
- ld b, $13
-.asm_107ab
- ld [hli], a
- dec b
- jr nz, .asm_107ab
- ret
-
-Func_107b0: ; 0x107b0
- xor a
- ld [wd604], a
- ld [wIndicatorStates + 4], a
- callba Func_16425
- ret
-
-Func_107c2: ; 0x107c2
- ld a, $1e
- ld [wd607], a
- ret
-
-Func_107c8: ; 0x107c8
- ld a, [wRightAlleyCount]
- cp $3
- jr z, .asm_107d1
- set 7, a
-.asm_107d1
- ld [wIndicatorStates + 1], a
- ld a, [wRightAlleyCount]
- cp $2
- jr c, .asm_107e0
- ld a, $80
- ld [wIndicatorStates + 3], a
-.asm_107e0
- ld a, [wLeftAlleyCount]
- set 7, a
- ld [wIndicatorStates], a
- ret
-
-Func_107e9: ; 0x107e9
- ld a, [wLeftAlleyCount]
- cp $3
- ld a, $4
- jr nz, .asm_107f4
- ld a, $6
-.asm_107f4
- ld [wd7ad], a
- ret
-
-Func_107f8: ; 0x107f8
- ld a, [wTimerFrames]
- and a
- ret nz
- ld a, [wTimerMinutes]
- and a
- ret nz
- ld a, [wTimerSeconds]
- cp $20
- jr nz, .asm_10810
- lb de, $07, $49
- call PlaySoundEffect
- ret
-
-.asm_10810
- cp $10
- jr nz, .asm_1081b
- lb de, $0a, $4a
- call PlaySoundEffect
- ret
-
-.asm_1081b
- cp $5
- ret nz
- lb de, $0d, $4b
- call PlaySoundEffect
- ret
-
-Func_10825: ; 0x10825
- call Retrieve8DigitBCDValueAtwd47a
- push bc
- push de
- call AddBCDEToCurBufferValue
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5e9
- ld de, Data_2a50
- call Func_3372
- pop de
- pop bc
- ld hl, wd5e4
- ld de, JackpotText
- call Func_3357
- ret
-
-Func_10848: ; 0x10848
- ld bc, OneHundredMillionPoints
- callba AddBigBCD6FromQueue
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5d4
- ld de, OneBillionText
- call LoadTextHeader
- ld hl, wd5cc
- ld de, PokemonCaughtSpecialBonusText
- call LoadTextHeader
- call Func_3475
- ret
-
-Func_10871: ; 0x10871
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- ld hl, EvolutionLineIds
- add hl, bc
- ld a, [hl] ; a contains evolution line id
- ld c, a
- ld b, $0
- ld l, c
- ld h, b
- sla l
- rl h
- sla l
- rl h
- sla l
- rl h
- sla l
- rl h
- add hl, bc
- add hl, bc
- add hl, bc
- ld c, l
- ld b, h
- ld hl, CatchEmModeInitialIndicatorStates
- add hl, bc
- ld de, wIndicatorStates
- ld b, $13 ; number of indicators
-.loop
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .loop
- xor a
- ld [wRightAlleyCount], a
- call Func_107b0
- ld a, $4
- ld [wd7ad], a
- ld de, $0002
- call PlaySong
- ld a, [wCurrentStage]
- bit 0, a
- jr nz, .asm_108d3
- callba LoadStageCollisionAttributes
- callba Func_159f4
- ret
-
-.asm_108d3
- callba Func_14135
- callba Func_10184
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, Func_102bc
- ret
-
-Func_108f5: ; 0x108f5
- call Func_107a5
- call Func_107c2
- call Func_107c8
- call Func_107e9
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- callba Func_14135
- call Func_10432
- callba Func_30253
- ld a, Bank(StageSharedBonusSlotGlowGfx)
- ld hl, StageSharedBonusSlotGlowGfx
- ld de, vTilesOB tile $1a
- ld bc, $0160
- call LoadVRAMData
- ld a, BANK(StageSharedBonusSlotGlow2Gfx)
- ld hl, StageSharedBonusSlotGlow2Gfx
- ld de, vTilesOB tile $38
- ld bc, $0020
- call LoadVRAMData
- ld hl, BlankSaverSpaceTileDataRedField
- ld a, BANK(BlankSaverSpaceTileDataRedField)
- call Func_10aa
- ld a, [wd624]
- callba Func_174d4
- ld hl, CaughtPokeballTileDataPointers
- ld a, BANK(CaughtPokeballTileDataPointers)
- call Func_10aa
- ret
-
-BlankSaverSpaceTileDataRedField:
- db 3
- dw BlankSaverSpaceTileDataRedField1
- dw BlankSaverSpaceTileDataRedField2
- dw BlankSaverSpaceTileDataRedField3
-
-BlankSaverSpaceTileDataRedField1:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $2e
- dw StageRedFieldBottomBaseGameBoyColorGfx + $2e0
- db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
- db $00
-
-BlankSaverSpaceTileDataRedField2:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $30
- dw StageRedFieldBottomBaseGameBoyColorGfx + $300
- db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
- db $00
-
-BlankSaverSpaceTileDataRedField3:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $32
- dw StageRedFieldBottomBaseGameBoyColorGfx + $320
- db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
- db $00
-
-CaughtPokeballTileDataPointers:
- db 1
- dw CaughtPokeballTileData
-
-CaughtPokeballTileData:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $2e
- dw CaughtPokeballGfx
- db Bank(CaughtPokeballGfx)
- db $00
-
-DoNothing_1098a: ; 0x1098a
- ret
-
-DoNothing_1098b: ; 0x1098b
- ret
-
-Func_1098c: ; 0x1098c
- ld a, [wCurrentCatchEmMon]
- ld c, a
- ld b, $0
- ld hl, EvolutionLineIds
- add hl, bc
- ld a, [hl]
- ld c, a
- ld b, $0
- ld l, c
- ld h, b
- sla l
- rl h
- sla l
- rl h
- sla l
- rl h
- sla l
- rl h
- add hl, bc
- add hl, bc
- add hl, bc
- ld c, l
- ld b, h
- ld hl, CatchEmModeInitialIndicatorStates
- add hl, bc
- ld de, wIndicatorStates
- ld b, $13 ; number of indicators
-.loop
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .loop
- xor a
- ld [wRightAlleyCount], a
- callba Func_1f2ed
- ld de, $0002
- call PlaySong
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- callba Func_1c2cb
- ld [hFarCallTempA], a
- ld a, $4
- ld hl, Func_10184
- call BankSwitch
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, Func_102bc
- ret
-
-Func_109fc: ; 0x109fc
- call Func_107a5
- call Func_107c2
- callba Func_1f2ff
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- callba Func_1c2cb
- call Func_10432
- callba Func_30253
- ld a, BANK(StageSharedBonusSlotGlowGfx)
- ld hl, StageSharedBonusSlotGlowGfx
- ld de, vTilesOB tile $1a
- ld bc, $0160
- call LoadVRAMData
- ld a, BANK(StageSharedBonusSlotGlow2Gfx)
- ld hl, StageSharedBonusSlotGlow2Gfx
- ld de, vTilesOB tile $38
- ld bc, $0020
- call LoadVRAMData
- ld hl, BlankSaverSpaceTileDataBlueField
- ld a, BANK(BlankSaverSpaceTileDataBlueField)
- call Func_10aa
- ld a, [wd624]
- callba Func_174d4
- ld hl, Data_10a88
- ld a, BANK(Data_10a88)
- call Func_10aa
- ret
-
-BlankSaverSpaceTileDataBlueField:
- db 3
- dw BlankSaverSpaceTileDataBlueField1
- dw BlankSaverSpaceTileDataBlueField2
- dw BlankSaverSpaceTileDataBlueField3
-
-BlankSaverSpaceTileDataBlueField1:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $2e
- dw StageBlueFieldBottomBaseGameBoyColorGfx + $2e0
- db Bank(StageBlueFieldBottomBaseGameBoyColorGfx)
- db $00
-
-BlankSaverSpaceTileDataBlueField2:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $30
- dw StageBlueFieldBottomBaseGameBoyColorGfx + $300
- db Bank(StageBlueFieldBottomBaseGameBoyColorGfx)
- db $00
-
-BlankSaverSpaceTileDataBlueField3:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $32
- dw StageBlueFieldBottomBaseGameBoyColorGfx + $320
- db Bank(StageBlueFieldBottomBaseGameBoyColorGfx)
- db $00
-
-Data_10a88:
- db 1
- dw Data_10a8b
-
-Data_10a8b:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $2e
- dw CaughtPokeballGfx
- db Bank(CaughtPokeballGfx)
- db $00
+INCLUDE "engine/pinball_game/catchem_mode.asm"
Func_10a95: ; 0x19a95
ld a, [wCurrentStage]