diff options
Diffstat (limited to 'engine/battle/16.asm')
-rwxr-xr-x | engine/battle/16.asm | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/engine/battle/16.asm b/engine/battle/16.asm new file mode 100755 index 00000000..f2f4ada9 --- /dev/null +++ b/engine/battle/16.asm @@ -0,0 +1,238 @@ +PrintBeginningBattleText: ; 58d99 (16:4d99) + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr nz, .trainerBattle + ld a, [W_CURMAP] ; $d35e + cp POKEMONTOWER_3 + jr c, .notPokemonTower + cp LAVENDER_HOUSE_1 + jr c, .pokemonTower +.notPokemonTower + ld a, [W_ENEMYMONID] + call PlayCry + ld hl, WildMonAppearedText + ld a, [W_MOVEMISSED] ; $d05f + and a + jr z, .notFishing + ld hl, HookedMonAttackedText +.notFishing + jr .wildBattle +.trainerBattle + call .playSFX + ld c, $14 + call DelayFrames + ld hl, TrainerWantsToFightText +.wildBattle + push hl + callab DrawAllPokeballs + pop hl + call PrintText + jr .done +.pokemonTower + ld b, SILPH_SCOPE + call IsItemInBag + ld a, [W_ENEMYMONID] + ld [$cf91], a + cp MAROWAK + jr z, .isMarowak + ld a, b + and a + jr z, .noSilphScope + callab Func_3eb01 + jr .notPokemonTower +.noSilphScope + ld hl, EnemyAppearedText + call PrintText + ld hl, GhostCantBeIDdText + call PrintText + jr .done +.isMarowak + ld a, b + and a + jr z, .noSilphScope + ld hl, EnemyAppearedText + call PrintText + ld hl, UnveiledGhostText + call PrintText + callab Func_3eb01 + callab Func_708ca + ld hl, WildMonAppearedText + call PrintText + +.playSFX + xor a + ld [$c0f1], a + ld a, $80 + ld [$c0f2], a + ld a, (SFX_08_77 - SFX_Headers_08) / 3 + call PlaySound + jp WaitForSoundToFinish +.done + ret + +WildMonAppearedText: ; 58e3b (16:4e3b) + TX_FAR _WildMonAppearedText + db "@" + +HookedMonAttackedText: ; 58e40 (16:4e40) + TX_FAR _HookedMonAttackedText + db "@" + +EnemyAppearedText: ; 58e45 (16:4e45) + TX_FAR _EnemyAppearedText + db "@" + +TrainerWantsToFightText: ; 58e4a (16:4e4a) + TX_FAR _TrainerWantsToFightText + db "@" + +UnveiledGhostText: ; 58e4f (16:4e4f) + TX_FAR _UnveiledGhostText + db "@" + +GhostCantBeIDdText: ; 58e54 (16:4e54) + TX_FAR _GhostCantBeIDdText + db "@" + +SendOutMon: ; 58e59 (16:4e59) + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld a, [hli] + or [hl] + ld hl, GoText + jr z, .printText + xor a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld a, [hli] + ld [$cce3], a + ld [$ff97], a + ld a, [hl] + ld [$cce4], a + ld [$ff98], a + ld a, $19 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld hl, W_ENEMYMONMAXHP ; $cff4 + ld a, [hli] + ld b, [hl] + srl a + rr b + srl a + rr b + ld a, b + ld b, $4 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Divide + ld a, [$ff98] + ld hl, GoText + cp $46 + jr nc, .printText + ld hl, DoItText + cp $28 + jr nc, .printText + ld hl, GetmText + cp $a + jr nc, .printText + ld hl, EnemysWeakText +.printText + jp PrintText + +GoText: ; 58eae (16:4eae) + TX_FAR _GoText + db $08 ; asm + jr PrintPlayerMon1Text + +DoItText: ; 58eb5 (16:4eb5) + TX_FAR _DoItText + db $08 ; asm + jr PrintPlayerMon1Text + +GetmText: ; 58ebc (16:4ebc) + TX_FAR _GetmText + db $08 ; asm + jr PrintPlayerMon1Text + +EnemysWeakText: ; 58ec3 (16:4ec3) + TX_FAR _EnemysWeakText + db $08 ; asm + +PrintPlayerMon1Text: + ld hl, PlayerMon1Text + ret + +PlayerMon1Text: ; 58ecc (16:4ecc) + TX_FAR _PlayerMon1Text + db "@" + +RetreatMon: ; 58ed1 (16:4ed1) + ld hl, PlayerMon2Text + jp PrintText + +PlayerMon2Text: ; 58ed7 (16:4ed7) + TX_FAR _PlayerMon2Text + db $08 ; asm + push de + push bc + ld hl, $cfe7 + ld de, $cce4 + ld b, [hl] + dec hl + ld a, [de] + sub b + ld [$ff98], a + dec de + ld b, [hl] + ld a, [de] + sbc b + ld [$ff97], a + ld a, $19 + ld [H_POWEROFTEN], a + call Multiply + ld hl, W_ENEMYMONMAXHP + ld a, [hli] + ld b, [hl] + srl a + rr b + srl a + rr b + ld a, b + ld b, $4 + ld [H_POWEROFTEN], a + call Divide + pop bc + pop de + ld a, [$ff98] + ld hl, EnoughText + and a + ret z + ld hl, ComeBackText + cp $1e + ret c + ld hl, OKExclamationText + cp $46 + ret c + ld hl, GoodText + ret + +EnoughText: ; 58f25 (16:4f25) + TX_FAR _EnoughText + db $08 ; asm + jr PrintComeBackText + +OKExclamationText: ; 58f2c (16:4f2c) + TX_FAR _OKExclamationText + db $08 ; asm + jr PrintComeBackText + +GoodText: ; 58f33 (16:4f33) + TX_FAR _GoodText + db $08 ; asm + jr PrintComeBackText + +PrintComeBackText: ; 58f3a (16:4f3a) + ld hl, ComeBackText + ret + +ComeBackText: ; 58f3e (16:4f3e) + TX_FAR _ComeBackText + db "@" |