From 0a244e043c83dff064d7e3ec054a587c7f999d0d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 19 Oct 2015 10:23:58 -0400 Subject: [PATCH] Move battle start animation functions to its own file --- battle/ai/items.asm | 6 +- battle/core.asm | 140 +- battle/effect_commands.asm | 50 +- battle/effects/thief.asm | 4 +- battle/misc.asm | 2 +- constants/battle_constants.asm | 29 + engine/battle_start.asm | 872 ++++++++++ engine/events.asm | 4 +- engine/pack.asm | 2 +- .../trainer_battle_pokeball_tiles.2bpp} | 0 gfx/pics/animation.asm | 2 +- home/battle.asm | 34 +- home/copy.asm | 4 +- home/joypad.asm | 67 +- home/serial.asm | 4 +- home/text.asm | 186 ++- items/item_effects.asm | 16 +- macros.asm | 10 +- main.asm | 1471 ++--------------- misc/crystal_misc.asm | 88 +- misc/mobile_40.asm | 16 +- misc/mobile_45.asm | 8 +- misc/mobile_5f.asm | 4 +- wram.asm | 4 +- 24 files changed, 1350 insertions(+), 1673 deletions(-) create mode 100644 engine/battle_start.asm rename gfx/{unknown/08c2f4.2bpp => overworld/trainer_battle_pokeball_tiles.2bpp} (100%) diff --git a/battle/ai/items.asm b/battle/ai/items.asm index 7d847b9da..95997a67e 100644 --- a/battle/ai/items.asm +++ b/battle/ai/items.asm @@ -1,11 +1,11 @@ AI_SwitchOrTryItem: ; 38000 and a - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz @@ -731,7 +731,7 @@ AI_Switch: ; 3846c callba Function3d57a xor a ld [wd264], a - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz scf diff --git a/battle/core.asm b/battle/core.asm index fc10569fd..64246f723 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -25,7 +25,7 @@ Function3c000: ; 3c000 .asm_3c021 ld a, d ld [wBattleAction], a - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3c031 @@ -34,7 +34,7 @@ Function3c000: ; 3c000 jr z, .asm_3c04c .asm_3c031 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3c047 xor a @@ -97,7 +97,7 @@ Function3c000: ; 3c000 call Function309d call SetPlayerTurn call SpikesDamage - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3c0df ld a, [$ffcb] @@ -127,7 +127,7 @@ WildFled_EnemyFled_LinkBattleCanceled: ; 3c0e5 and $c0 add $2 ld [wd0ee], a - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ld hl, BattleText_WildFled jr z, .asm_3c115 @@ -438,7 +438,7 @@ Function3c27c: ; 3c27c ; 3c300 Function3c300: ; 3c300 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3c30d ld a, [wBattleAction] @@ -456,7 +456,7 @@ Function3c300: ; 3c300 ; 3c314 Function3c314: ; 3c314 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3c35b ld a, [wBattleAction] @@ -778,7 +778,7 @@ Function3c4df: ; 3c4df Function3c543: ; 3c543 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .Stay @@ -1272,7 +1272,7 @@ Function3c801: ; 3c801 xor a ld [hli], a ld [hl], a - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z ld hl, OTPartyMon1HP @@ -1429,7 +1429,7 @@ Function3c93c: ; 3c93c jr z, .asm_3c99b ld de, wc739 ld hl, wc735 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3c99b ld hl, OTPartyMon1PP @@ -1518,7 +1518,7 @@ Function3c93c: ; 3c93c ld a, [hBattleTurn] and a jr z, .asm_3ca12 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3ca14 call Function3df1f @@ -1637,7 +1637,7 @@ HanleDefrost: ; 3ca8f xor a ld [EnemyMonStatus], a - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3caef ld a, [CurOTMon] @@ -2119,7 +2119,7 @@ Function3cd55: ; 3cd55 ld c, 60 call DelayFrames - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_3cd8c @@ -2196,7 +2196,7 @@ Function3cdca: ; 3cdca Function3ce01: ; 3ce01 call UpdateBattleMonInParty - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3ce16 ld a, [CurOTMon] @@ -2215,7 +2215,7 @@ Function3ce01: ; 3ce01 ld [hl], a call NewEnemyMonStatus call BreakAttraction - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3ce2f jr .asm_3ce37 @@ -2240,7 +2240,7 @@ Function3ce01: ; 3ce01 ld a, d and a ret z - ld a, [IsInBattle] + ld a, [wBattleMode] dec a call z, Function3d0ea call EmptyBattleTextBox @@ -2401,7 +2401,7 @@ Function3cf4a: ; 3cf4a call Function3e12e call WaitBGMap callba Function2c012 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3cf6d call Function3e8e4 @@ -2452,7 +2452,7 @@ Function3cfa4: ; 3cfa4 ld a, $1 ld [wc6fd], a ld [BattleEnded], a - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ld a, b call z, Function3d0ea @@ -2461,7 +2461,7 @@ Function3cfa4: ; 3cfa4 call StdBattleTextBox call IsMobileBattle jr z, .asm_3cff5 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz @@ -2664,7 +2664,7 @@ Function3d0ea: ; 3d0ea call PlayMusic call DelayFrame ld de, MUSIC_WILD_VICTORY - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_3d113 push de @@ -2747,7 +2747,7 @@ KantoGymLeaders: db SABRINA db BLAINE db BLUE - db $ff + db -1 Function3d14e: ; 3d14e @@ -2768,7 +2768,7 @@ Function3d14e: ; 3d14e or [hl] jr nz, .asm_3d185 call Function3ce01 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_3d17f ld a, $1 @@ -2842,7 +2842,7 @@ Function3d1aa: ; 3d1aa Function3d1f8: ; 3d1f8 call EmptyBattleTextBox call Function309d - ld a, [IsInBattle] + ld a, [wBattleMode] and a dec a ret nz @@ -2870,7 +2870,7 @@ Function3d227: ; 3d227 call Function1d6e call Function3d2f7 call ForcePickPartyMonInBattle - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3d241 ld a, $1 @@ -2949,8 +2949,8 @@ Function3d2b3: ; 3d2b3 Function3d2e0: ; 3d2e0 - ld a, [InLinkBattle] - cp $4 + ld a, [wLinkMode] + cp LINK_MOBILE jr nz, .asm_3d2ef ; It's not a mobile battle ld a, [wcd2b] @@ -2967,8 +2967,8 @@ Function3d2e0: ; 3d2e0 ; 3d2f1 IsMobileBattle: ; 3d2f1 - ld a, [InLinkBattle] - cp $4 + ld a, [wLinkMode] + cp LINK_MOBILE ret ; 3d2f7 @@ -3119,7 +3119,7 @@ LostBattle: ; 3d38e ret .asm_3d3e3 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .LostLinkBattle @@ -3337,7 +3337,7 @@ Function3d517: ; 3d517 ; 3d533 Function3d533: ; 3d533 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3d541 @@ -3630,7 +3630,7 @@ Function3d714: ; 3d714 ld a, [PartyCount] dec a jp z, .asm_3d749 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp nz, .asm_3d749 ld a, [Options] @@ -3862,11 +3862,11 @@ Function3d8b3: ; 3d8b3 cp BATTLETYPE_SUICUNE jp z, .asm_3d98d - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp nz, .asm_3d9a2 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jp nz, .asm_3d992 @@ -3979,7 +3979,7 @@ Function3d8b3: ; 3d8b3 ret .asm_3d9a2 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ld a, $2 jr z, .asm_3d9cf @@ -4107,7 +4107,7 @@ Function3da97: ; 3da97 bit SUBSTATUS_TRANSFORMED, a ret z ld hl, wc6f2 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z ld hl, OTPartyMon1DVs @@ -4658,7 +4658,7 @@ Function3de51: ; 3de51 call Function3df1f xor a ld [bc], a - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z ld [hl], $0 @@ -5127,7 +5127,7 @@ BattleMenu: ; 3e139 ld a, [InputType] or a jr z, .asm_3e171 - callba Function1de294 + callba _DudeAutoInput_DownA .asm_3e171 call LoadBattleMenu2 @@ -5183,7 +5183,7 @@ LoadBattleMenu2: ; 3e19b ; 3e1c7 BattleMenu_Pack: ; 3e1c7 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp nz, ItemsCantBeUsed @@ -5422,7 +5422,7 @@ Function3e358: ; 3e358 Function3e3ad: ; 3e3ad ld a, 1 ld [wPlayerIsSwitching], a - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3e3c1 call Function1d6e @@ -5431,7 +5431,7 @@ Function3e3ad: ; 3e3ad .asm_3e3c1 call Function3e7c1 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .asm_3e3cf @@ -5650,7 +5650,7 @@ Function3e4bc: ; 3e4bc dec a ld b, $c3 jr z, .asm_3e569 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .asm_3e569 ld b, $c7 @@ -5960,8 +5960,8 @@ MoveInfoBox: ; 3e6c8 Function3e75f: ; 3e75f hlcoord 5, 11 - ld a, [InLinkBattle] - cp $4 + ld a, [wLinkMode] ; What's the point of this check? + cp LINK_MOBILE jr c, .ok hlcoord 5, 11 .ok @@ -6034,7 +6034,7 @@ Function3e7c1: ; 3e7c1 ld a, [wEnemyIsSwitching] and a ret nz - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3e817 call EmptyBattleTextBox @@ -6108,7 +6108,7 @@ Function3e7c1: ; 3e7c1 jr .asm_3e8bd .asm_3e84f - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_3e882 .asm_3e855 @@ -6222,7 +6222,7 @@ LoadEnemyMon: ; 3e8eb call ByteFill ; We don't need to be here if we're in a link battle - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp nz, Function3dabd @@ -6244,7 +6244,7 @@ LoadEnemyMon: ; 3e8eb ; Let's get the item: ; Is the item predetermined? - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .WildItem @@ -6293,7 +6293,7 @@ LoadEnemyMon: ; 3e8eb ; Initialize DVs ; If we're in a trainer battle, DVs are predetermined - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr z, .InitDVs @@ -6320,7 +6320,7 @@ LoadEnemyMon: ; 3e8eb ; See GetTrainerDVs for more on that callba GetTrainerDVs ; These are the DVs we'll use if we're actually in a trainer battle - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .UpdateDVs @@ -6396,7 +6396,7 @@ LoadEnemyMon: ; 3e8eb ; We've still got more to do if we're dealing with a wild monster - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .Happiness @@ -6496,7 +6496,7 @@ LoadEnemyMon: ; 3e8eb ; If we're in a trainer battle, ; get the rest of the parameters from the party struct - ld a, [IsInBattle] + ld a, [wBattleMode] cp a, TRAINER_BATTLE jr z, .OpponentParty @@ -6586,7 +6586,7 @@ LoadEnemyMon: ; 3e8eb ; Get moves ld de, EnemyMonMoves ; Are we in a trainer battle? - ld a, [IsInBattle] + ld a, [wBattleMode] cp a, TRAINER_BATTLE jr nz, .WildMoves ; Then copy moves from the party struct @@ -6613,7 +6613,7 @@ endr .PP ; Trainer battle? - ld a, [IsInBattle] + ld a, [wBattleMode] cp a, TRAINER_BATTLE jr z, .TrainerPP @@ -6657,7 +6657,7 @@ endr call GetPokemonName ; Did we catch it? - ld a, [IsInBattle] + ld a, [wBattleMode] and a ret z @@ -6725,7 +6725,7 @@ CheckSleepingTreeMon: ; 3eb38 db EXEGGCUTE db LEDYBA db AIPOM - db $ff ; end + db -1 ; end .Day db VENONAT @@ -6733,7 +6733,7 @@ CheckSleepingTreeMon: ; 3eb38 db NOCTOWL db SPINARAK db HERACROSS - db $ff ; end + db -1 ; end .Morn db VENONAT @@ -6741,7 +6741,7 @@ CheckSleepingTreeMon: ; 3eb38 db NOCTOWL db SPINARAK db HERACROSS - db $ff ; end + db -1 ; end ; 3eb75 @@ -7116,7 +7116,7 @@ BadgeStatBoosts: ; 3ed45 ; The boosted stats are in order, except PlainBadge and MineralBadge's boosts are swapped. - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz @@ -7237,7 +7237,7 @@ _BattleRandom:: ; 3edd8 ; To circumvent this a shared PRNG is used instead. ; But if we're in a non-link battle we're safe to use it - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp z, Random @@ -7338,7 +7338,7 @@ Function3ee27: ; 3ee27 Function3ee3b: ; 3ee3b ; Give experience. - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz @@ -7452,7 +7452,7 @@ endr .asm_3eee2 ld [StringBuffer2 + 2], a - ld a, [IsInBattle] + ld a, [wBattleMode] dec a call nz, DoubleExp push bc @@ -7977,7 +7977,7 @@ Function3f22c: ; 3f22c SendOutPkmnText: ; 3f26d - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3f27c @@ -8446,7 +8446,7 @@ Function3f4dd: ; 3f4dd ld bc, 4 << 8 + 10 call ClearBox call ClearSprites - ld a, [IsInBattle] + ld a, [wBattleMode] cp $1 call z, UpdateEnemyHUD ld a, $1 @@ -8521,10 +8521,10 @@ Function3f594: ; 3f594 hlcoord 12, 0 lb bc, 7, 7 predef FillBox - ld a, $ff + ld a, -1 ld [CurOTMon], a ld a, TRAINER_BATTLE - ld [IsInBattle], a + ld [wBattleMode], a call IsJohtoGymLeader jr nc, .done @@ -8554,7 +8554,7 @@ Function3f594: ; 3f594 Function3f607: ; 3f607 ld a, $1 - ld [IsInBattle], a + ld [wBattleMode], a callba Function10605d call LoadEnemyMon ld hl, EnemyMonMoves @@ -8647,7 +8647,7 @@ Function3f69e: ; 3f69e ; 3f6a5 Function3f6a5: ; 3f6a5 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_3f6b7 call Function3f759 @@ -8672,7 +8672,7 @@ Function3f6d0: ; 3f6d0 call Function3f998 xor a ld [Danger], a - ld [IsInBattle], a + ld [wBattleMode], a ld [BattleType], a ld [AttackMissed], a ld [TempWildMonSpecies], a @@ -8830,8 +8830,8 @@ Function3f80f: ; 3f80f Function3f830: ; 3f830 - ld a, [InLinkBattle] - cp $4 + ld a, [wLinkMode] + cp LINK_MOBILE ret ; 3f836 @@ -9478,7 +9478,7 @@ Function3fc5b: ; 3fc5b BattleStartMessage: ; 3fc8b - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3fcaa diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index 63e27359d..cb5a6757a 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -12,7 +12,7 @@ DoPlayerTurn: ; 34000 DoEnemyTurn: ; 3400a call SetEnemyTurn - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, DoTurn @@ -696,7 +696,7 @@ BattleCommand02: ; 343db ; No obedience in link battles ; (since no handling exists for enemy) - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz @@ -1080,7 +1080,7 @@ endr jr z, .asm_345a4 ; skip this part entirely if wildbattle - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_345c5 @@ -3521,7 +3521,7 @@ Function3534d: ; 3534d inc l .asm_3536b - ld a, [InLinkBattle] + ld a, [wLinkMode] cp 3 jr z, .done @@ -3835,11 +3835,11 @@ BattleCommanda1: ; 35461 sub b ld [DefaultFlypoint], a .asm_3550d - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .asm_3556b - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .asm_35532 @@ -4825,7 +4825,7 @@ BattleCommand46: ; 35a74 call Function372d8 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .asm_35a83 call AnimateFailedMove @@ -4888,7 +4888,7 @@ BattleCommand46: ; 35a74 ld a, [hBattleTurn] and a jr z, .asm_35af6 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_35af6 ld a, [hl] @@ -5180,7 +5180,7 @@ endr ld a, [hBattleTurn] and a jr nz, .asm_35c81 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_35c81 ld hl, wc739 @@ -5585,7 +5585,7 @@ Function35ece: ; 35ece jr z, .asm_35eec ; Not in link battle - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .asm_35eec @@ -5683,7 +5683,7 @@ BattleCommand2f: ; 35f2c and a jr z, .asm_35f89 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .asm_35f89 @@ -6331,7 +6331,7 @@ BattleCommand1d: ; 362e3 and a jr z, .DidntMiss - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .DidntMiss @@ -7124,7 +7124,7 @@ BattleCommanda0: ; 36778 ld a, [hBattleTurn] and a jr nz, .asm_367bf - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .failed ld a, [CurPartyLevel] @@ -7149,7 +7149,7 @@ BattleCommanda0: ; 36778 jp PrintButItFailed .asm_367bf - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .failed ld a, [BattleMonLevel] @@ -7214,7 +7214,7 @@ BattleCommand23: ; 3680f ld a, [AttackMissed] and a jr nz, .asm_36852 ; 36830 $20 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_36869 ; 36836 $31 ld a, [CurPartyLevel] @@ -7300,7 +7300,7 @@ BattleCommand23: ; 3680f and a jr nz, .asm_368f3 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_36908 @@ -7496,7 +7496,7 @@ BattleCommand24: ; 369b6 dec a jr .asm_36a3a .asm_36a0b - ld a, [IsInBattle] + ld a, [wBattleMode] cp $1 jp z, .asm_36a1e ld a, [OTPartyCount] @@ -8177,7 +8177,7 @@ BattleCommand30: ; 36dc7 and a jr z, .asm_36e0e - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .asm_36e0e @@ -9281,7 +9281,7 @@ BattleCommand53: ; 37563 and a jr z, .party - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .done @@ -9493,7 +9493,7 @@ BattleCommand60: ; 3784b BattleCommand61: ; 37874 ; present - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $3 jr z, .asm_3787d push bc @@ -9502,7 +9502,7 @@ BattleCommand61: ; 37874 call BattleCommand07 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $3 jr z, .asm_37889 pop de @@ -9765,7 +9765,7 @@ BattleCommand67: ; 379c9 .Enemy ; Wildmons don't have anything to switch to - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ; WILDMON jp z, FailedBatonPass @@ -9800,7 +9800,7 @@ BattleCommand67: ; 379c9 BatonPass_LinkPlayerSwitch: ; 37a67 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret z @@ -9819,7 +9819,7 @@ BatonPass_LinkPlayerSwitch: ; 37a67 BatonPass_LinkEnemySwitch: ; 37a82 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret z @@ -10057,7 +10057,7 @@ BattleCommand6a6c: ; 37b7e jr z, .Full ; Don't factor in time of day in link battles. - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .Weather diff --git a/battle/effects/thief.asm b/battle/effects/thief.asm index dbbe0396b..730fcd66c 100644 --- a/battle/effects/thief.asm +++ b/battle/effects/thief.asm @@ -30,11 +30,11 @@ BattleCommand50: ; 37492 and a ret nz - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr z, .stealenemyitem - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z diff --git a/battle/misc.asm b/battle/misc.asm index a8dccca84..6d38b8e2f 100644 --- a/battle/misc.asm +++ b/battle/misc.asm @@ -161,7 +161,7 @@ endr DoBadgeTypeBoosts: ; fbe24 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz diff --git a/constants/battle_constants.asm b/constants/battle_constants.asm index 523e1345c..6ee0995cd 100644 --- a/constants/battle_constants.asm +++ b/constants/battle_constants.asm @@ -315,3 +315,32 @@ SUBSTATUS_CURLED EQU 0 const EFFECT_BEAT_UP const EFFECT_FLY const EFFECT_DEFENSE_CURL + +; Battle vars used in home/battle.asm + const_def + const PLAYER_SUBSTATUS_1 + const ENEMY_SUBSTATUS_1 + const PLAYER_SUBSTATUS_2 + const ENEMY_SUBSTATUS_2 + const PLAYER_SUBSTATUS_3 + const ENEMY_SUBSTATUS_3 + const PLAYER_SUBSTATUS_4 + const ENEMY_SUBSTATUS_4 + const PLAYER_SUBSTATUS_5 + const ENEMY_SUBSTATUS_5 + const PLAYER_STATUS + const ENEMY_STATUS + const PLAYER_MOVE_ANIMATION + const ENEMY_MOVE_ANIMATION + const PLAYER_MOVE_EFFECT + const ENEMY_MOVE_EFFECT + const PLAYER_MOVE_POWER + const ENEMY_MOVE_POWER + const PLAYER_MOVE_TYPE + const ENEMY_MOVE_TYPE + const PLAYER_CUR_MOVE + const ENEMY_CUR_MOVE + const PLAYER_COUNTER_MOVE + const ENEMY_COUNTER_MOVE + const PLAYER_LAST_MOVE + const ENEMY_LAST_MOVE diff --git a/engine/battle_start.asm b/engine/battle_start.asm new file mode 100644 index 000000000..e78bfad3b --- /dev/null +++ b/engine/battle_start.asm @@ -0,0 +1,872 @@ +Predef_StartBattle: ; 8c20f + call Function8c26d + ld a, [rBGP] + ld [wcfc7], a + ld a, [rOBP0] + ld [wcfc8], a + ld a, [rOBP1] + ld [wcfc9], a + call DelayFrame + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $1 + +.loop + ld a, [wcf63] + bit 7, a + jr nz, .done + call FlashyTransitionToBattle + call DelayFrame + jr .loop + +.done + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + + ld hl, Unkn1Pals + ld bc, $0040 + xor a + call ByteFill + + pop af + ld [rSVBK], a + + ld a, %11111111 + ld [wcfc7], a + call DmgToCgbBGPals + call DelayFrame + xor a + ld [hLCDStatCustom], a + ld [hLCDStatCustom + 1], a + ld [hLCDStatCustom + 2], a + ld [hSCY], a + + ld a, $1 + ld [rSVBK], a + pop af + ld [hVBlank], a + call DelayFrame + ret +; 8c26d + +Function8c26d: ; 8c26d + ld a, [wLinkMode] + cp LINK_MOBILE + jr z, .mobile + callba Function6454 + call UpdateSprites + call DelayFrame + call Function8c2a0 + call Function8cf4f + jr .resume + +.mobile + call LoadTrainerBattlePokeballTiles + +.resume + ld a, SCREEN_HEIGHT_PX + ld [hWY], a + call DelayFrame + xor a + ld [hBGMapMode], a + ld hl, wcf63 + xor a +rept 2 + ld [hli], a +endr + ld [hl], a + call WipeLYOverrides + ret +; 8c2a0 + +Function8c2a0: ; 8c2a0 + call LoadTrainerBattlePokeballTiles + ld hl, VBGMap0 + call Function8c2cf + ret +; 8c2aa + +LoadTrainerBattlePokeballTiles: +; Load the tiles used in the Pokeball Graphic that fills the screen +; at the start of every Trainer battle. + ld de, TrainerBattlePokeballTiles + ld hl, VTiles1 tile $7e + ld b, BANK(TrainerBattlePokeballTiles) + ld c, 2 + call Request2bpp + + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + + ld de, TrainerBattlePokeballTiles + ld hl, VTiles4 tile $7e + ld b, BANK(TrainerBattlePokeballTiles) + ld c, 2 + call Request2bpp + + pop af + ld [rVBK], a + ret +; 8c2cf + +Function8c2cf: ; 8c2cf + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push hl + ld hl, w6_d000 + ld bc, $28 * $10 + +.loop + ld [hl], -1 + inc hl + dec bc + ld a, c + or b + jr nz, .loop + + pop hl + ld de, w6_d000 + ld b, BANK(Function8c2cf) ; BANK(@) + ld c, $28 + call Request2bpp + pop af + ld [rSVBK], a + ret +; 8c2f4 + +TrainerBattlePokeballTiles: ; 8c2f4 +INCBIN "gfx/overworld/trainer_battle_pokeball_tiles.2bpp" + + +FlashyTransitionToBattle: ; 8c314 + ld a, [wcf63] + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8c323 + +.jumptable: ; 8c323 (23:4323) + dw StartTrainerBattle_DetermineWhichAnimation ; 00 + + ; Animation 1: cave + dw StartTrainerBattle_LoadPokeBallGraphics ; 01 + dw StartTrainerBattle_SetUpBGMap ; 02 + dw StartTrainerBattle_Flash ; 03 + dw StartTrainerBattle_Flash ; 04 + dw StartTrainerBattle_Flash ; 05 + dw StartTrainerBattle_NextScene ; 06 + dw StartTrainerBattle_SetUpForWavyOutro ; 07 + dw StartTrainerBattle_SineWave ; 08 + + ; Animation 2: cave, stronger + dw StartTrainerBattle_LoadPokeBallGraphics ; 09 + dw StartTrainerBattle_SetUpBGMap ; 0a + dw StartTrainerBattle_Flash ; 0b + dw StartTrainerBattle_Flash ; 0c + dw StartTrainerBattle_Flash ; 0d + dw StartTrainerBattle_NextScene ; 0e + ; There is no setup for this one + dw StartTrainerBattle_ZoomToBlack ; 0f + + ; Animation 3: no cave + dw StartTrainerBattle_LoadPokeBallGraphics ; 10 + dw StartTrainerBattle_SetUpBGMap ; 11 + dw StartTrainerBattle_Flash ; 12 + dw StartTrainerBattle_Flash ; 13 + dw StartTrainerBattle_Flash ; 14 + dw StartTrainerBattle_NextScene ; 15 + dw StartTrainerBattle_SetUpForSpinOutro ; 16 + dw StartTrainerBattle_SpinToBlack ; 17 + + ; Animation 4: no cave, stronger + dw StartTrainerBattle_LoadPokeBallGraphics ; 18 + dw StartTrainerBattle_SetUpBGMap ; 19 + dw StartTrainerBattle_Flash ; 1a + dw StartTrainerBattle_Flash ; 1b + dw StartTrainerBattle_Flash ; 1c + dw StartTrainerBattle_NextScene ; 1d + dw StartTrainerBattle_SetUpForRandomScatterOutro ; 1e + dw StartTrainerBattle_SpeckleToBlack ; 1f + + ; All animations jump to here. + dw StartTrainerBattle_Finish ; 20 + + +StartTrainerBattle_DetermineWhichAnimation: ; 8c365 (23:4365) +; The screen flashes a different number of +; times depending on the level of your lead +; Pokemon relative to the opponent's. + ld de, 0 + ld a, [BattleMonLevel] + add 3 + ld hl, EnemyMonLevel + cp [hl] + jr nc, .okay + set 0, e +.okay + ld a, [wPermission] + cp CAVE + jr z, .okay2 + cp PERM_5 + jr z, .okay2 + cp DUNGEON + jr z, .okay2 + set 1, e +.okay2 + ld hl, .StartingPoints + add hl, de + ld a, [hl] + ld [wcf63], a + ret +; 8c38f (23:438f) + +.StartingPoints: ; 8c38f + db 1, 9 + db 16, 24 +; 8c393 + +StartTrainerBattle_Finish: ; 8c393 (23:4393) + call ClearSprites + ld a, $80 + ld [wcf63], a + ret + +StartTrainerBattle_NextScene: ; 8c39c (23:439c) + ld hl, wcf63 + inc [hl] + ret + +StartTrainerBattle_SetUpBGMap: ; 8c3a1 (23:43a1) + call StartTrainerBattle_NextScene + xor a + ld [wcf64], a + ld [hBGMapMode], a ; $ff00+$d4 + ret + +StartTrainerBattle_Flash: ; 8c3ab (23:43ab) + call .DoFlashAnimation + ret nc + call StartTrainerBattle_NextScene + ret + +.DoFlashAnimation: ; 8c3b3 (23:43b3) + ld a, [wd847] + cp -1 + jr z, .done + ld hl, wcf64 + ld a, [hl] + inc [hl] + srl a + ld e, a + ld d, 0 + ld hl, .pals + add hl, de + ld a, [hl] + cp %00000001 + jr z, .done + ld [wcfc7], a + call DmgToCgbBGPals + and a + ret + +.done + xor a + ld [wcf64], a + scf + ret +; 8c3db (23:43db) + +.pals: ; 8c3db + db %11111001 ; 3321 + db %11111110 ; 3332 + db %11111111 ; 3333 + db %11111110 ; 3332 + db %11111001 ; 3321 + db %11100100 ; 3210 + db %10010000 ; 2100 + db %01000000 ; 1000 + db %00000000 ; 0000 + db %01000000 ; 1000 + db %10010000 ; 2100 + db %11100100 ; 3210 + db %00000001 ; 0001 +; 8c3e8 + +StartTrainerBattle_SetUpForWavyOutro: ; 8c3e8 (23:43e8) + callba Function5602 + ld a, $5 + ld [rSVBK], a ; $ff00+$70 + call StartTrainerBattle_NextScene + ld a, $43 + ld [hLCDStatCustom], a ; $ff00+$c6 + xor a + ld [hLCDStatCustom + 1], a + ld a, $90 + ld [hLCDStatCustom + 2], a + xor a + ld [wcf64], a + ld [wcf65], a + ret + +StartTrainerBattle_SineWave: ; 8c408 (23:4408) + ld a, [wcf64] + cp $60 + jr nc, .end + call .DoSineWave + ret + +.end + ld a, $20 + ld [wcf63], a + ret + +.DoSineWave: ; 8c419 (23:4419) + ld hl, wcf65 + ld a, [hl] + inc [hl] + ld hl, wcf64 + ld d, [hl] + add [hl] + ld [hl], a + ld a, $90 + ld bc, wd100 + ld e, $0 + +.loop + push af + push de + ld a, e + call StartTrainerBattle_DrawSineWave + ld [bc], a + inc bc + pop de + ld a, e + add $2 + ld e, a + pop af + dec a + jr nz, .loop + ret + +StartTrainerBattle_SetUpForSpinOutro: ; 8c43d (23:443d) + callba Function5602 + ld a, $5 + ld [rSVBK], a ; $ff00+$70 + call StartTrainerBattle_NextScene + xor a + ld [wcf64], a + ret + +spintable_entry: MACRO + db \1 + dw .wedge\2 + dwcoord \3, \4 +ENDM + +; quadrants + const_def + const UPPER_LEFT + const UPPER_RIGHT + const LOWER_LEFT + const LOWER_RIGHT + +StartTrainerBattle_SpinToBlack: ; 8c44f (23:444f) + xor a + ld [hBGMapMode], a ; $ff00+$d4 + ld a, [wcf64] + ld e, a + ld d, 0 + ld hl, .spintable +rept 5 + add hl, de +endr + ld a, [hli] + cp -1 + jr z, .end + ld [wcf65], a + call .load + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + call DelayFrame + call DelayFrame + ld hl, wcf64 + inc [hl] + ret + +.end + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + call DelayFrame + call DelayFrame + call DelayFrame + xor a + ld [hBGMapMode], a ; $ff00+$d4 + ld a, $20 + ld [wcf63], a + ret +; 8c490 (23:4490) + +.spintable: ; 8c490 + spintable_entry UPPER_LEFT, 1, 1, 6 + spintable_entry UPPER_LEFT, 2, 0, 3 + spintable_entry UPPER_LEFT, 3, 1, 0 + spintable_entry UPPER_LEFT, 4, 5, 0 + spintable_entry UPPER_LEFT, 5, 9, 0 + spintable_entry UPPER_RIGHT, 5, 10, 0 + spintable_entry UPPER_RIGHT, 4, 14, 0 + spintable_entry UPPER_RIGHT, 3, 18, 0 + spintable_entry UPPER_RIGHT, 2, 19, 3 + spintable_entry UPPER_RIGHT, 1, 18, 6 + spintable_entry LOWER_RIGHT, 1, 18, 11 + spintable_entry LOWER_RIGHT, 2, 19, 14 + spintable_entry LOWER_RIGHT, 3, 18, 17 + spintable_entry LOWER_RIGHT, 4, 14, 17 + spintable_entry LOWER_RIGHT, 5, 10, 17 + spintable_entry LOWER_LEFT, 5, 9, 17 + spintable_entry LOWER_LEFT, 4, 5, 17 + spintable_entry LOWER_LEFT, 3, 1, 17 + spintable_entry LOWER_LEFT, 2, 0, 14 + spintable_entry LOWER_LEFT, 1, 1, 11 + db -1 +; 8c4f5 + +.load: ; 8c4f5 (23:44f5) + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a +.loop + push hl + ld a, [de] + ld c, a + inc de +.loop1 + ld [hl], $ff + ld a, [wcf65] + bit 0, a + jr z, .leftside + inc hl + jr .okay1 +.leftside + dec hl +.okay1 + dec c + jr nz, .loop1 + pop hl + ld a, [wcf65] + bit 1, a + ld bc, SCREEN_WIDTH + jr z, .upper + ld bc, -SCREEN_WIDTH +.upper + add hl, bc + ld a, [de] + inc de + cp -1 + ret z + and a + jr z, .loop + ld c, a +.loop2 + ld a, [wcf65] + bit 0, a + jr z, .leftside2 + dec hl + jr .okay2 +.leftside2 + inc hl +.okay2 + dec c + jr nz, .loop2 + jr .loop +; 8c538 (23:4538) + +.wedge1: db 2, 3, 5, 4, 9, -1 +.wedge2: db 1, 1, 2, 2, 4, 2, 4, 2, 3, -1 +.wedge3: db 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 3, 1, 2, 1, 1, 1, 1, -1 +.wedge4: db 4, 1, 4, 0, 3, 1, 3, 0, 2, 1, 2, 0, 1, -1 +.wedge5: db 4, 0, 3, 0, 3, 0, 2, 0, 2, 0, 1, 0, 1, 0, 1, -1 +; 8c578 + +StartTrainerBattle_SetUpForRandomScatterOutro: ; 8c578 (23:4578) + callba Function5602 + ld a, $5 + ld [rSVBK], a ; $ff00+$70 + call StartTrainerBattle_NextScene + ld a, $10 + ld [wcf64], a + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + ret + +StartTrainerBattle_SpeckleToBlack: ; 8c58f (23:458f) + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + ld c, $c +.loop + push bc + call .BlackOutRandomTile + pop bc + dec c + jr nz, .loop + ret + +.done + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + call DelayFrame + call DelayFrame + call DelayFrame + xor a + ld [hBGMapMode], a ; $ff00+$d4 + ld a, $20 + ld [wcf63], a + ret + +.BlackOutRandomTile: ; 8c5b8 (23:45b8) +.y_loop + call Random + cp SCREEN_HEIGHT + jr nc, .y_loop + ld b, a + +.x_loop + call Random + cp SCREEN_WIDTH + jr nc, .x_loop + ld c, a + + hlcoord 0, -1 + ld de, SCREEN_WIDTH + inc b + +.row_loop + add hl, de + dec b + jr nz, .row_loop + add hl, bc + +; If the tile has already been blacked out, +; sample a new tile + ld a, [hl] + cp $ff + jr z, .y_loop + ld [hl], $ff + ret + +StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc) + ld a, [OtherTrainerClass] + and a + jp z, .nextscene + + xor a + ld [hBGMapMode], a ; $ff00+$d4 + hlcoord 0, 0, AttrMap + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + inc b + inc c + jr .enter_loop_midway + +.loop + ld a, [hl] + or %00000111 + ld [hli], a +.enter_loop_midway + dec c + jr nz, .loop + dec b + jr nz, .loop + + call .loadpokeballgfx ; load a, [OtherTrainerClass] \ ld de, PokeBallTransition + hlcoord 2, 1 + + ld b, SCREEN_WIDTH - 4 +.loop2 + push hl + ld c, 2 +.loop3 + push hl + ld a, [de] + inc de +.loop4 +; Loading is done bit by bit + and a + jr z, .done + sla a + jr nc, .no_load + ld [hl], $fe ; "8" +.no_load + inc hl + jr .loop4 + +.done + pop hl + push bc + ld bc, (SCREEN_WIDTH - 4) / 2 + add hl, bc + pop bc + dec c + jr nz, .loop3 + + pop hl + push bc + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .loop2 + + ld a, [hCGB] ; $ff00+$e6 + and a + jr nz, .cgb + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + call DelayFrame + call DelayFrame + jr .nextscene + +.cgb + ld hl, .daypals + ld a, [TimeOfDayPal] + and (1 << 2) - 1 + cp 3 + jr nz, .daytime + ld hl, .nightpals +.daytime + ld a, [rSVBK] ; $ff00+$70 + push af + ld a, $5 ; WRAM5 = palettes + ld [rSVBK], a ; $ff00+$70 + call .copypals + push hl + ld de, Unkn1Pals + 8 * 7 + ld bc, $8 + call CopyBytes + pop hl + ld de, BGPals + 8 * 7 + ld bc, $8 + call CopyBytes + pop af + ld [rSVBK], a ; $ff00+$70 + ld a, $1 + ld [hCGBPalUpdate], a ; $ff00+$e5 + call DelayFrame + call Function8cf4f + +.nextscene: ; 8c673 (23:4673) + call StartTrainerBattle_NextScene + ret + +.copypals: ; 8c677 (23:4677) + ld de, Unkn1Pals + 8 * 7 + call .copy + ld de, BGPals + 8 * 7 + call .copy + ld de, Unkn2Pals + 8 * 6 + call .copy + ld de, OBPals + 8 * 6 + call .copy + ld de, Unkn2Pals + 8 * 7 + call .copy + ld de, OBPals + 8 * 7 + +.copy: ; 8c698 (23:4698) + push hl + ld bc, $8 + call CopyBytes + pop hl + ret +; 8c6a1 (23:46a1) + +.daypals: ; 8c6a1 + RGB 31, 18, 29 + RGB 31, 11, 15 + RGB 31, 05, 05 + RGB 07, 07, 07 +; 8c6a9 + +.nightpals: ; 8c6a9 + RGB 31, 18, 29 + RGB 31, 05, 05 + RGB 31, 05, 05 + RGB 31, 05, 05 + +.loadpokeballgfx: + ld a, [OtherTrainerClass] + ld de, PokeBallTransition + ret + +PokeBallTransition: + db %00000011, %11000000 + db %00001111, %11110000 + db %00111100, %00111100 + db %00110000, %00001100 + db %01100000, %00000110 + db %01100011, %11000110 + db %11000110, %01100011 + db %11111100, %00111111 + db %11111100, %00111111 + db %11000110, %01100011 + db %01100011, %11000110 + db %01100000, %00000110 + db %00110000, %00001100 + db %00111100, %00111100 + db %00001111, %11110000 + db %00000011, %11000000 + +WipeLYOverrides: ; 8c6d8 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, LYOverrides + call .wipe + ld hl, LYOverridesBackup + call .wipe + pop af + ld [rSVBK], a + ret +; 8c6ef + +.wipe: ; 8c6ef + xor a + ld c, SCREEN_HEIGHT_PX +.loop + ld [hli], a + dec c + jr nz, .loop + ret +; 8c6f7 + + +StartTrainerBattle_DrawSineWave: ; 8c6f7 (23:46f7) + and (1 << 6) - 1 + cp 1 << 5 + jr nc, .okay + call .DoSineWave + ld a, h + ret + +.okay + and (1 << 5) - 1 + call .DoSineWave + ld a, h + xor -1 ; cpl + inc a + ret + +.DoSineWave: ; 8c70c (23:470c) + ld e, a + ld a, d + ld d, 0 + ld hl, .sinewave +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + ld hl, 0 +.loop + srl a + jr nc, .skip + add hl, de +.skip + sla e + rl d + and a + jr nz, .loop + ret +; 8c728 (23:4728) + +.sinewave: ; 8c728 + sine_wave $100 +; 8c768 + +zoombox: macro +; width, height, start y, start x + db \1, \2 + dwcoord \3, \4 +endm + +StartTrainerBattle_ZoomToBlack: ; 8c768 (23:4768) + callba Function5602 + ld de, .boxes + +.loop + ld a, [de] + cp -1 + jr z, .done + inc de + ld c, a + ld a, [de] + inc de + ld b, a + ld a, [de] + inc de + ld l, a + ld a, [de] + inc de + ld h, a + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call .Copy + call WaitBGMap + jr .loop + +.done + ld a, $20 + ld [wcf63], a + ret +; 8c792 (23:4792) + +.boxes: ; 8c792 + zoombox 4, 2, 8, 8 + zoombox 6, 4, 7, 7 + zoombox 8, 6, 6, 6 + zoombox 10, 8, 5, 5 + zoombox 12, 10, 4, 4 + zoombox 14, 12, 3, 3 + zoombox 16, 14, 2, 2 + zoombox 18, 16, 1, 1 + zoombox 20, 18, 0, 0 + db -1 +; 8c7b7 + +.Copy: ; 8c7b7 (23:47b7) + ld a, $ff +.row + push bc + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .row + ret +; 8c7c9 (23:47c9) diff --git a/engine/events.asm b/engine/events.asm index b0f9fb769..634528843 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -506,7 +506,7 @@ endr ; 9693a Function9693a: ; 9693a - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .nothing @@ -957,7 +957,7 @@ SelectMenuCallback: ; 96b66 CountStep: ; 96b79 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .done diff --git a/engine/pack.asm b/engine/pack.asm index f39a6e528..408930823 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -1112,7 +1112,7 @@ Function107bb: ; 107bb ld a, [InputType] or a jr z, .asm_107ca - callba Function1de28f + callba _DudeAutoInput_RightA .asm_107ca call Function107d7 diff --git a/gfx/unknown/08c2f4.2bpp b/gfx/overworld/trainer_battle_pokeball_tiles.2bpp similarity index 100% rename from gfx/unknown/08c2f4.2bpp rename to gfx/overworld/trainer_battle_pokeball_tiles.2bpp diff --git a/gfx/pics/animation.asm b/gfx/pics/animation.asm index d736ef37e..165cf642d 100644 --- a/gfx/pics/animation.asm +++ b/gfx/pics/animation.asm @@ -3,7 +3,7 @@ Functiond0000: ; d0000 hlcoord 12, 0 - ld a, [IsInBattle] + ld a, [wBattleMode] cp $1 jr z, .asm_d0012 ld e, $0 diff --git a/home/battle.asm b/home/battle.asm index a374d59bc..37f39572a 100644 --- a/home/battle.asm +++ b/home/battle.asm @@ -106,7 +106,7 @@ UpdateEnemyMonInParty:: ; 39b0 ; Update level, status, current HP ; No wildmons. - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z @@ -194,34 +194,6 @@ endr dw .status, .statusopp, .animation, .effect, .power, .type dw .curmove, .lastcounter, .lastcounteropp, .lastmove, .lastmoveopp - const_def - const PLAYER_SUBSTATUS_1 - const ENEMY_SUBSTATUS_1 - const PLAYER_SUBSTATUS_2 - const ENEMY_SUBSTATUS_2 - const PLAYER_SUBSTATUS_3 - const ENEMY_SUBSTATUS_3 - const PLAYER_SUBSTATUS_4 - const ENEMY_SUBSTATUS_4 - const PLAYER_SUBSTATUS_5 - const ENEMY_SUBSTATUS_5 - const PLAYER_STATUS - const ENEMY_STATUS - const PLAYER_MOVE_ANIMATION - const ENEMY_MOVE_ANIMATION - const PLAYER_MOVE_EFFECT - const ENEMY_MOVE_EFFECT - const PLAYER_MOVE_POWER - const ENEMY_MOVE_POWER - const PLAYER_MOVE_TYPE - const ENEMY_MOVE_TYPE - const PLAYER_CUR_MOVE - const ENEMY_CUR_MOVE - const PLAYER_COUNTER_MOVE - const ENEMY_COUNTER_MOVE - const PLAYER_LAST_MOVE - const ENEMY_LAST_MOVE - ; player enemy .substatus1 db PLAYER_SUBSTATUS_1, ENEMY_SUBSTATUS_1 .substatus1opp db ENEMY_SUBSTATUS_1, PLAYER_SUBSTATUS_1 @@ -293,8 +265,8 @@ CELL_PHONE_TOP EQU $5e CELL_PHONE_BOTTOM EQU $5f ; For mobile link battles only. - ld a, [InLinkBattle] - cp 4 + ld a, [wLinkMode] + cp LINK_MOBILE ret c ; Draw a cell phone icon at the diff --git a/home/copy.asm b/home/copy.asm index ed5f3cc64..d418030eb 100644 --- a/home/copy.asm +++ b/home/copy.asm @@ -227,7 +227,7 @@ Request2bpp:: ; eba ld a, $8 ld [$ffd3], a - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $4 jr nz, .okay ld a, [$ffe9] @@ -301,7 +301,7 @@ Request1bpp:: ; f1e ld a, $8 ld [$ffd3], a - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $4 jr nz, .NotMobile ld a, [$ffe9] diff --git a/home/joypad.asm b/home/joypad.asm index 6d9bd743e..d5bfc83f3 100644 --- a/home/joypad.asm +++ b/home/joypad.asm @@ -198,14 +198,14 @@ GetJoypad:: ; 984 .updateauto ; An input of $ff will end the stream. ld a, [hli] - cp a, $ff + cp a, -1 jr z, .stopauto ld b, a ; A duration of $ff will end the stream indefinitely. ld a, [hli] ld [AutoInputLength], a - cp a, $ff + cp a, -1 jr nz, .next ; The current input is overwritten. @@ -362,17 +362,20 @@ Functiona80:: ; a80 push af xor a ld [hConnectionStripLength], a - ld a, $6 + ld a, 6 ld [hConnectedMapWidth], a -.asm_a8d + +.loop push hl hlcoord 18, 17 call Functionb06 pop hl + call JoyTextDelay ld a, [hJoyLast] - and $3 - jr z, .asm_a8d + and A_BUTTON | B_BUTTON + jr z, .loop + pop af ld [hConnectedMapWidth], a pop af @@ -381,67 +384,69 @@ Functiona80:: ; a80 ; aa5 Functionaa5:: ; aa5 +.loop call JoyTextDelay ld a, [hJoyLast] and A_BUTTON | B_BUTTON - jr z, Functionaa5 + jr z, .loop ret ; aaf KeepTextOpen:: ; aaf - ld a, [InLinkBattle] + ld a, [wLinkMode] and a - jr nz, .asm_ac1 - call Functionac6 + jr nz, .link + call .wait_input push de ld de, SFX_READ_TEXT_2 call PlaySFX pop de ret -.asm_ac1 +.link ld c, 65 jp DelayFrames ; ac6 -Functionac6:: ; ac6 +.wait_input: ; ac6 ld a, [hOAMUpdate] push af ld a, $1 ld [hOAMUpdate], a ld a, [InputType] or a - jr z, .asm_ad9 - callba Function1de28a -.asm_ad9 - call Functionaf5 + jr z, .input_wait_loop + callba _DudeAutoInput_A + +.input_wait_loop + call .blink_cursor call JoyTextDelay ld a, [hJoyPressed] - and $3 - jr nz, .asm_af1 + and A_BUTTON | B_BUTTON + jr nz, .received_input call RTC ld a, $1 ld [hBGMapMode], a call DelayFrame - jr .asm_ad9 + jr .input_wait_loop -.asm_af1 +.received_input pop af ld [hOAMUpdate], a ret ; af5 -Functionaf5:: ; af5 +.blink_cursor: ; af5 ld a, [$ff9b] - and $10 - jr z, .asm_aff - ld a, $ee - jr .asm_b02 + and %00010000 ; bit 4, a + jr z, .cursor_off + ld a, "▼" + jr .load_cursor_state -.asm_aff +.cursor_off ld a, [TileMap + 17 + 17 * SCREEN_WIDTH] -.asm_b02 +.load_cursor_state ld [TileMap + 18 + 17 * SCREEN_WIDTH], a ret ; b06 @@ -450,7 +455,7 @@ Functionb06:: ; b06 push bc ld a, [hl] ld b, a - ld a, $ee + ld a, "▼" cp b pop bc jr nz, .asm_b27 @@ -462,11 +467,11 @@ Functionb06:: ; b06 dec a ld [hConnectedMapWidth], a ret nz - ld a, $7a + ld a, "─" ld [hl], a - ld a, $ff + ld a, -1 ld [hConnectionStripLength], a - ld a, $6 + ld a, 6 ld [hConnectedMapWidth], a ret diff --git a/home/serial.asm b/home/serial.asm index 302630cc7..ab97d6b2e 100644 --- a/home/serial.asm +++ b/home/serial.asm @@ -334,7 +334,7 @@ Function87d:: ; 87d Function8c1:: ; 8c1 push bc ld b, $60 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $1 jr z, .asm_8d7 ld b, $60 @@ -391,7 +391,7 @@ Function908:: ; 908 ; 919 Function919:: ; 919 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz ld a, $2 diff --git a/home/text.asm b/home/text.asm index 77053d0d6..1445aa5ef 100644 --- a/home/text.asm +++ b/home/text.asm @@ -389,7 +389,7 @@ PlaceMoveTargetsName_5A: ; 1205 PlaceEnemysName:: ; 121b push de - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .linkbattle @@ -428,9 +428,9 @@ PlaceGenderedPlayerName:: ; 1252 ld l, c ld a, [PlayerGender] bit 0, a - ld de, String12a5 + ld de, String_kun jr z, PlaceCommandCharacter - ld de, String12a6 + ld de, String_chan jr PlaceCommandCharacter @@ -456,8 +456,8 @@ String12a2:: db " @" ; 12a2 Char35Text:: Char36Text:: Char37Text:: db "@" ; 12a4 -String12a5:: db "@" ; 12a5 -String12a6:: db "@" ; 12a6 +String_kun:: db "@" ; 12a5 +String_chan:: db "@" ; 12a6 ; 12a7 NextLineChar:: ; 12a7 @@ -483,31 +483,31 @@ TextFar:: ; 12b9 add hl, bc ld de, -SCREEN_WIDTH ld c, 1 -.asm_12c4 +.loop ld a, h and a - jr nz, .asm_12cd + jr nz, .next ld a, l cp SCREEN_WIDTH - jr c, .asm_12d1 + jr c, .done -.asm_12cd +.next add hl, de inc c - jr .asm_12c4 + jr .loop -.asm_12d1 +.done hlcoord 0, 0 ld de, SCREEN_WIDTH ld a, c -.asm_12d8 +.loop2 and a - jr z, .asm_12df + jr z, .done2 add hl, de dec a - jr .asm_12d8 + jr .loop2 -.asm_12df +.done2 pop de inc de ld a, [de] @@ -529,20 +529,20 @@ LineChar:: ; 12ea Paragraph:: ; 12f2 push de - ld a, [InLinkBattle] - cp $3 - jr z, .asm_1301 - cp $4 - jr z, .asm_1301 - call Function13c7 -.asm_1301 + ld a, [wLinkMode] + cp LINK_COLOSSEUM + jr z, .linkbattle + cp LINK_MOBILE + jr z, .linkbattle + call LoadBlinkingCursor +.linkbattle call Function13b6 call KeepTextOpen hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW call ClearBox - call Function13cd + call UnloadBlinkingCursor ld c, 20 call DelayFrames hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY @@ -552,26 +552,26 @@ Paragraph:: ; 12f2 Char4B:: ; 131f - ld a, [InLinkBattle] + ld a, [wLinkMode] or a - jr nz, .asm_1328 - call Function13c7 -.asm_1328 + jr nz, .communication + call LoadBlinkingCursor +.communication call Function13b6 push de call KeepTextOpen pop de - ld a, [InLinkBattle] + ld a, [wLinkMode] or a - call z, Function13cd + call z, UnloadBlinkingCursor Char4C:: ; 1337 push de - call Function138c - call Function138c + call TextScroll + call TextScroll hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2 pop de jp NextChar @@ -602,22 +602,22 @@ PlaceDexEnd:: ; 1356 ; 135a PromptText:: ; 135a - ld a, [InLinkBattle] - cp $3 + ld a, [wLinkMode] + cp LINK_COLOSSEUM jr z, .ok - cp $4 + cp LINK_MOBILE jr z, .ok - call Function13c7 -.ok + call LoadBlinkingCursor +.ok call Function13b6 call KeepTextOpen - ld a, [InLinkBattle] - cp $3 + ld a, [wLinkMode] + cp LINK_COLOSSEUM jr z, DoneText - cp $4 + cp LINK_MOBILE jr z, DoneText - call Function13cd + call UnloadBlinkingCursor DoneText:: ; 137c pop hl @@ -634,19 +634,22 @@ NullChar:: ; 1383 jp NextChar ; 138c -Function138c:: ; 138c +TextScroll:: ; 138c hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY decoord TEXTBOX_INNERX, TEXTBOX_INNERY - 1 ld a, TEXTBOX_INNERH - 1 + .col push af ld c, TEXTBOX_INNERW + .row ld a, [hli] ld [de], a inc de dec c jr nz, .row + rept 2 inc de endr @@ -656,6 +659,7 @@ endr pop af dec a jr nz, .col + hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2 ld a, " " ld bc, TEXTBOX_INNERW @@ -671,7 +675,9 @@ Function13b6:: ; 13b6 push af ld a, 1 ld [hOAMUpdate], a + call WaitBGMap + pop af ld [hOAMUpdate], a pop bc @@ -682,15 +688,15 @@ Diacritic:: ; 13c6 ret ; 13c7 -Function13c7:: ; 13c7 +LoadBlinkingCursor:: ; 13c7 ld a, "▼" - ld [TileMap + 18 + 17 * SCREEN_WIDTH], a + ldcoord_a 18, 17 ret ; 13cd -Function13cd:: ; 13cd - ld a, [TileMap + 17 + 17 * SCREEN_WIDTH] - ld [TileMap + 18 + 17 * SCREEN_WIDTH], a +UnloadBlinkingCursor:: ; 13cd + lda_coord 17, 17 + ldcoord_a 18, 17 ret ; 13d4 @@ -722,19 +728,19 @@ PlaceWholeStringInBoxAtOnce:: ; 13e5 set 1, a ld [TextBoxFrame + 1], a - call Function13f6 + call DoTextUntilTerminator pop af ld [TextBoxFrame + 1], a ret ; 13f6 -Function13f6:: ; 13f6 +DoTextUntilTerminator:: ; 13f6 ld a, [hli] cp "@" ret z call .TextCommand - jr Function13f6 + jr DoTextUntilTerminator .TextCommand: push hl @@ -757,19 +763,19 @@ endr ; 1410 TextCommands:: ; 1410 - dw Text_00 - dw Text_01 - dw Text_02 - dw Text_03 - dw Text_04 - dw Text_05 - dw Text_06 - dw Text_07 - dw Text_08 - dw Text_09 - dw Text_0A + dw Text_TX + dw Text_TX_RAM + dw Text_TX_BCD + dw Text_TX_MOVE + dw Text_TX_BOX + dw Text_TX_LOW + dw Text_WAIT_BUTTON + dw Text_TX_SCROLL + dw Text_START_ASM + dw Text_TX_NUM + dw Text_TX_EXIT dw Text_PlaySound ; $0b - dw Text_0C + dw Text_TX_DOTS dw Text_0D dw Text_PlaySound ; $0e dw Text_PlaySound ; $0f @@ -777,12 +783,12 @@ TextCommands:: ; 1410 dw Text_PlaySound ; $11 dw Text_PlaySound ; $12 dw Text_PlaySound ; $13 - dw Text_14 - dw Text_15 - dw Text_16 + dw Text_TX_STRINGBUFFER + dw Text_TX_DAY + dw Text_TX_FAR ; 143e -Text_00:: ; 143e +Text_TX:: ; 143e ; TX ; write text until "@" ; [$00]["...@"] @@ -798,7 +804,7 @@ Text_00:: ; 143e ret ; 1449 -Text_01:: ; 1449 +Text_TX_RAM:: ; 1449 ; text_from_ram ; write text from a ram address ; little endian @@ -816,7 +822,7 @@ Text_01:: ; 1449 ret ; 1455 -Text_16:: ; 1455 +Text_TX_FAR:: ; 1455 ; text_jump ; write text from a different bank ; little endian @@ -837,7 +843,7 @@ Text_16:: ; 1455 push hl ld h, d ld l, e - call Function13f6 + call DoTextUntilTerminator pop hl pop af @@ -846,7 +852,7 @@ Text_16:: ; 1455 ret ; 1470 -Text_02:: ; 1470 +Text_TX_BCD:: ; 1470 ; TX_BCD ; write bcd from address, typically ram ; [$02][addr][flags] @@ -868,7 +874,7 @@ Text_02:: ; 1470 ret ; 1480 -Text_03:: ; 1480 +Text_TX_MOVE:: ; 1480 ; TX_MOVE ; move to a new tile ; [$03][addr] @@ -882,7 +888,7 @@ Text_03:: ; 1480 ret ; 148b -Text_04:: ; 148b +Text_TX_BOX:: ; 148b ; TX_BOX ; draw a box ; little endian @@ -904,7 +910,7 @@ Text_04:: ; 148b ret ; 149b -Text_05:: ; 149b +Text_TX_LOW:: ; 149b ; TX_LOW ; write text at (1,16) ; [$05] @@ -913,39 +919,41 @@ Text_05:: ; 149b ret ; 149f -Text_06:: ; 149f +Text_WAIT_BUTTON:: ; 149f ; TX_WAITBUTTON ; wait for button press ; show arrow ; [06] - ld a, [InLinkBattle] - cp $3 + ld a, [wLinkMode] + cp LINK_COLOSSEUM jp z, Text_0D - cp $4 + cp LINK_MOBILE jp z, Text_0D push hl - call Function13c7 + call LoadBlinkingCursor push bc call KeepTextOpen pop bc - call Function13cd + call UnloadBlinkingCursor pop hl ret ; 14ba -Text_07:: ; 14ba +Text_TX_SCROLL:: ; 14ba +; pushes text up two lines and sets the BC cursor to the border tile +; below the first character column of the text box. push hl - call Function13cd - call Function138c - call Function138c + call UnloadBlinkingCursor + call TextScroll + call TextScroll pop hl bccoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2 ret ; 14c9 -Text_08:: ; 14c9 +Text_START_ASM:: ; 14c9 ; TX_ASM bit 7, h @@ -958,7 +966,7 @@ Text_08:: ; 14c9 ret ; 14d2 -Text_09:: ; 14d2 +Text_TX_NUM:: ; 14d2 ; TX_NUM ; [$09][addr][hi:bytes lo:digits] ld a, [hli] @@ -984,7 +992,7 @@ Text_09:: ; 14d2 ret ; 14ed -Text_0A:: ; 14ed +Text_TX_EXIT:: ; 14ed push hl push bc call GetJoypad @@ -1059,13 +1067,14 @@ TextSFX:: ; 152d db -1 ; 1543 -Text_0C:: ; 1543 +Text_TX_DOTS:: ; 1543 ; [$0C][num] ld a, [hli] ld d, a push hl ld h, b ld l, c + .loop push de ld a, "…" @@ -1080,6 +1089,7 @@ Text_0C:: ; 1543 pop de dec d jr nz, .loop + ld b, h ld c, l pop hl @@ -1097,7 +1107,7 @@ Text_0D:: ; 1562 ret ; 156a -Text_14:: ; 156a +Text_TX_STRINGBUFFER:: ; 156a ; Print a string from one of the following: ; 0: StringBuffer3 ; 1: StringBuffer4 @@ -1127,7 +1137,7 @@ endr ret ; 1582 -Text_15:: ; 1582 +Text_TX_DAY:: ; 1582 ; TX_DAY call GetWeekday diff --git a/items/item_effects.asm b/items/item_effects.asm index b68c7c85c..77f278ebd 100644 --- a/items/item_effects.asm +++ b/items/item_effects.asm @@ -208,7 +208,7 @@ FriendBall: MoonBall: LoveBall: ParkBall: ; e8a2 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jp nz, Functionf7a0 @@ -1657,7 +1657,7 @@ Functionf0d6: ; f0d6 call Functionf30d ld a, 1 ret nz - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr z, .asm_f104 @@ -1936,7 +1936,7 @@ Functionf2a2: ; f2a2 (3:72a2) ret Functionf2a6: ; f2a6 (3:72a6) - ld a, [IsInBattle] + ld a, [wBattleMode] and a ret z ld a, [CurPartyMon] @@ -2280,7 +2280,7 @@ XAccuracy: ; f482 PokeDoll: ; f48f - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .asm_f4a6 inc a @@ -2362,7 +2362,7 @@ Tablef504: ; f504 PokeFlute: ; f50c - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr nz, .asm_f512 .asm_f512 @@ -2375,7 +2375,7 @@ PokeFlute: ; f50c ld hl, PartyMon1Status call .Functionf554 - ld a, [IsInBattle] + ld a, [wBattleMode] cp WILD_BATTLE jr z, .asm_f52b ld hl, OTPartyMon1Status @@ -2448,7 +2448,7 @@ UnknownText_0xf576: ; 0xf576 Function_0xf57b: ; f57b - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr nz, .asm_f58c @@ -2600,7 +2600,7 @@ Functionf64c: ; f64c ; f652 Functionf652: ; f652 - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr z, .asm_f66c ld a, [CurPartyMon] diff --git a/macros.asm b/macros.asm index e1f3fa31b..147468cdd 100644 --- a/macros.asm +++ b/macros.asm @@ -111,7 +111,7 @@ dwcoord: MACRO endr ENDM -ldcoord: MACRO +ldcoord_a: MACRO if _NARG < 3 ld [TileMap + SCREEN_WIDTH * (\2) + (\1)], a else @@ -119,6 +119,14 @@ ldcoord: MACRO endc ENDM +lda_coord: MACRO + if _NARG < 3 + ld a, [TileMap + SCREEN_WIDTH * (\2) + (\1)] + else + ld a, [\3 + SCREEN_WIDTH * (\2) + (\1)] + endc + ENDM + ; pic animations frame: MACRO db \1 diff --git a/main.asm b/main.asm index 10de1f4a5..ef5f7ab14 100644 --- a/main.asm +++ b/main.asm @@ -9,7 +9,7 @@ Function4000:: ; 4000 ld b, 1 ld c, 11 - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr z, .notinbattle @@ -542,7 +542,7 @@ FinishContinueFunction: ; 5e5d .loop xor a ld [wc2c1], a - ld [InLinkBattle], a + ld [wLinkMode], a ld hl, GameTimerPause set 0, [hl] res 7, [hl] @@ -1620,7 +1620,7 @@ LearnMove: ; 6508 ld [wd265], a ld b, a - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr z, .not_disabled ld a, [DisabledMove] @@ -1656,7 +1656,7 @@ LearnMove: ; 6508 ld [hl], a - ld a, [IsInBattle] + ld a, [wBattleMode] and a jp z, .learned @@ -2772,7 +2772,7 @@ endr .done ld [de], a - ld a, [IsInBattle] + ld a, [wBattleMode] and a ret z ld a, [CurPartyMon] @@ -8017,7 +8017,7 @@ GeneratePartyMonStats: ; d906 ld a, [BaseDexNo] ld [de], a inc de - ld a, [IsInBattle] + ld a, [wBattleMode] and a ld a, $0 jr z, .skipitem @@ -8029,7 +8029,7 @@ GeneratePartyMonStats: ; d906 push de ld h, d ld l, e - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr z, .randomlygeneratemoves ld a, [MonType] @@ -8108,7 +8108,7 @@ endr pop de pop hl push hl - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr nz, .copywildmonstats call Random @@ -8213,7 +8213,7 @@ endr inc de .next2 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr nz, .generatestats ld hl, EnemyMonMaxHP @@ -9207,7 +9207,7 @@ Functione039: ; e039 ld a, [wd10b] and a jp nz, CloseSRAM - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz ld a, BANK(s0_a600) @@ -12723,7 +12723,7 @@ endr call .AppendMenuList .no_pokemon - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .no_pack ld hl, StatusFlags2 @@ -12743,7 +12743,7 @@ endr ld a, 3 ; status call .AppendMenuList - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .no_save ld hl, StatusFlags2 @@ -13521,7 +13521,7 @@ MonMailAction: ; 12d45 ; If in the time capsule or trade center, ; selecting the mail only allows you to ; read the mail. - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .read cp LINK_TRADECENTER @@ -14103,7 +14103,7 @@ Function12fd5: ; 12fd5 ld bc, $0015 add hl, bc call Function1313a - ld a, [IsInBattle] + ld a, [wBattleMode] jr z, .asm_13113 ld hl, BattleMonMoves ld bc, $0020 @@ -24230,7 +24230,7 @@ Function24dd4: ; 24dd4 ld a, [CurPartySpecies] cp EGG jr z, .egg - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .skip ld a, PartyMon1Moves - PartyMon1 @@ -24264,7 +24264,7 @@ Function24dd4: ; 24dd4 call Function24e83 ld a, $13 call Function24e83 - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .skip2 push hl @@ -27157,7 +27157,7 @@ Function27192: ; 27192 ld a, [hBattleTurn] and a jr nz, .ourturn - ld a, [IsInBattle] + ld a, [wBattleMode] dec a jr z, .done @@ -27245,7 +27245,7 @@ LinkCommunications: ; 28000 xor a ld [hli], a ld [hl], $50 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE jp nz, Function28177 @@ -27443,7 +27443,7 @@ Function28177: ; 28177 ld de, wc6d0 ld bc, $00c8 call Function75f - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TRADECENTER jr nz, .asm_281fd ld hl, wc9f4 @@ -27494,7 +27494,7 @@ Function28177: ; 28177 ld hl, wc90f dec c jr nz, .asm_28224 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TRADECENTER jp nz, .asm_282fe ld hl, wcb84 @@ -27628,7 +27628,7 @@ Function28177: ; 28177 cp $2 ld c, 66 call z, DelayFrames - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_COLOSSEUM jr nz, .asm_283a9 ld a, CAL @@ -27811,7 +27811,7 @@ endr dec a jr nz, .asm_2847f push bc - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE ld b, $d jr z, .asm_2847a @@ -28042,7 +28042,7 @@ Function28595: ; 28595 ld hl, PartyMonNicknames ld bc, $0042 call CopyBytes - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TRADECENTER ret nz ld de, wc9f4 @@ -28585,7 +28585,7 @@ Function28926: ; 28926 .asm_28946 ld a, $7f - ldcoord 11, 16 + ldcoord_a 11, 16 ld a, $13 ld [wcfa8], a ld a, $1 @@ -28617,7 +28617,7 @@ Function28926: ; 28926 .asm_2898d ld a, $7f - ldcoord 1, 16 + ldcoord_a 1, 16 ld a, $23 ld [wcfa8], a ld a, $1 @@ -28763,7 +28763,7 @@ Function28ac9: ; 28ac9 Function28ade: ; 28ade .asm_28ade ld a, $ed - ldcoord 9, 17 + ldcoord_a 9, 17 .asm_28ae3 call JoyTextDelay ld a, [hJoyLast] @@ -28773,7 +28773,7 @@ Function28ade: ; 28ade jr nz, .asm_28b0b push af ld a, " " - ldcoord 9, 17 + ldcoord_a 9, 17 pop af bit 6, a jr z, .asm_28b03 @@ -28788,7 +28788,7 @@ Function28ade: ; 28ade .asm_28b0b ld a, $ec - ldcoord 9, 17 + ldcoord_a 9, 17 ld a, $f ld [wcf56], a callba Function16d6ce @@ -29162,7 +29162,7 @@ Function28b87: ; 28b87 push bc call Function862 pop bc - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .asm_28e63 ld a, b @@ -29188,7 +29188,7 @@ Function28b87: ; 28b87 callba Function4d354 ld c, $32 call DelayFrames - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE jp z, Function2805d jp Function28177 @@ -30455,7 +30455,7 @@ Function296f2: ; 296f2 (a:56f2) ; 29701 (a:5701) Function29701: ; 29701 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .asm_29725 ld hl, UnknownText_0x29737 @@ -30891,7 +30891,7 @@ Special_EnterTimeCapsule: ; 29c7b xor a ld [hVBlank], a inc a - ld [InLinkBattle], a + ld [wLinkMode], a ret ; 29c92 @@ -30939,7 +30939,7 @@ Special_AbortLink: ; 29c92 ld [hli], a ld [hl], a ld [hVBlank], a - ld [InLinkBattle], a + ld [wLinkMode], a ret ; 29ce8 @@ -31211,7 +31211,7 @@ Special_CheckBothSelectedSameRoom: ; 29e82 jr nz, .asm_29eaa ld a, [wd265] inc a - ld [InLinkBattle], a + ld [wLinkMode], a xor a ld [hVBlank], a ld a, $1 @@ -31226,7 +31226,7 @@ Special_CheckBothSelectedSameRoom: ; 29e82 Special_TimeCapsule: ; 29eaf ld a, LINK_TIMECAPSULE - ld [InLinkBattle], a + ld [wLinkMode], a call Function2ed3 callab LinkCommunications call Function2ee4 @@ -31237,7 +31237,7 @@ Special_TimeCapsule: ; 29eaf Special_TradeCenter: ; 29ec4 ld a, LINK_TRADECENTER - ld [InLinkBattle], a + ld [wLinkMode], a call Function2ed3 callab LinkCommunications call Function2ee4 @@ -31248,7 +31248,7 @@ Special_TradeCenter: ; 29ec4 Special_Colosseum: ; 29ed9 ld a, LINK_COLOSSEUM - ld [InLinkBattle], a + ld [wLinkMode], a call Function2ed3 callab LinkCommunications call Function2ee4 @@ -31259,7 +31259,7 @@ Special_Colosseum: ; 29ed9 Special_CloseLink: ; 29eee xor a - ld [InLinkBattle], a + ld [wLinkMode], a ld c, $3 call DelayFrames jp Function29f04 @@ -32589,7 +32589,7 @@ Function2c000: ; 2c000 ld [rOBP0], a call Function2c165 call Function2c01c - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z jp Function2c03a @@ -32730,7 +32730,7 @@ Function2c0c5: ; 2c0c5 hlcoord 1, 2 ld de, 1 call Function2c0f1 - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret nz ld a, [TempEnemyMonSpecies] @@ -34119,7 +34119,7 @@ ConvertBerriesToBerryJuice: ; 2ede6 Function2ee18: ; 2ee18 ; If we're not in a communications room, ; we don't need to be here. - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret z @@ -34245,7 +34245,7 @@ PlayBattleMusic: ; 2ee6c jr .done .othertrainer - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .johtotrainer @@ -34424,7 +34424,7 @@ GetTrainerClassName: ; 3952d Function39550: ; 39550 ld hl, wd26b - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .ok @@ -34476,7 +34476,7 @@ ReadTrainerParty: ; 39771 bit 0, a ret nz - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz @@ -35030,7 +35030,7 @@ endr cp EVOLVE_TRADE jr z, .trade - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp nz, .asm_423f9 @@ -35107,7 +35107,7 @@ endr .trade - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp z, .asm_423f9 @@ -35119,7 +35119,7 @@ endr inc a jr z, .asm_422fd - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE jp z, .asm_423fa @@ -35142,7 +35142,7 @@ endr ld a, [wd1e9] and a jp z, .asm_423fa - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jp nz, .asm_423fa jr .asm_422fd @@ -35303,10 +35303,10 @@ Function423ff: ; 423ff pop de pop bc pop hl - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz - ld a, [IsInBattle] + ld a, [wBattleMode] and a ret nz ld a, [wd268] @@ -35652,11 +35652,11 @@ AIChooseMove: ; 440ce ; Pick the move with the lowest score. ; Wildmons attack at random. - ld a, [IsInBattle] + ld a, [wBattleMode] dec a ret z - ld a, [InLinkBattle] + ld a, [wLinkMode] and a ret nz @@ -39350,8 +39350,8 @@ Function49797: ; 49797 ld a, $4 call Function49336 ld a, $3 - ldcoord 0, 1, AttrMap - ldcoord 0, 14, AttrMap + ldcoord_a 0, 1, AttrMap + ldcoord_a 0, 14, AttrMap hlcoord 2, 0, AttrMap ld bc, $0812 ld a, $5 @@ -43924,11 +43924,11 @@ RetroactivelyIgnoreEggs: ; 4dc67 Function4dc7b: ; 4dc7b (13:5c7b) - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_MOBILE jr nz, StatsScreenInit - ld a, [IsInBattle] ; wd22d (aliases: EnemyMonEnd) + ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd) and a jr z, StatsScreenInit jr Function4dc8f @@ -45850,7 +45850,7 @@ CheckBattleScene: ; 4ea44 ; Return carry if battle scene is turned off. ld a, 0 - ld hl, InLinkBattle + ld hl, wLinkMode call GetFarWRAMByte cp LINK_MOBILE jr z, .mobile @@ -54146,1287 +54146,10 @@ Predef36: ; 8c001 -Function8c001:: ; 8c001 - call UpdateTime - ld a, [TimeOfDay] - ld [CurTimeOfDay], a - call GetTimePalette - ld [TimeOfDayPal], a - ret -; 8c011 +INCLUDE "engine/timeofdaypals.asm" +INCLUDE "engine/battle_start.asm" - -_TimeOfDayPals:: ; 8c011 -; return carry if pals are changed - -; forced pals? - ld hl, wd846 - bit 7, [hl] - jr nz, .dontchange - -; do we need to bother updating? - ld a, [TimeOfDay] - ld hl, CurTimeOfDay - cp [hl] - jr z, .dontchange - -; if so, the time of day has changed - ld a, [TimeOfDay] - ld [CurTimeOfDay], a - -; get palette id - call GetTimePalette - -; same palette as before? - ld hl, TimeOfDayPal - cp [hl] - jr z, .dontchange - -; update palette id - ld [TimeOfDayPal], a - - -; save bg palette 8 - ld hl, Unkn1Pals + 8 * 7 ; Unkn1Pals + 7 pals - -; save wram bank - ld a, [rSVBK] - ld b, a -; wram bank 5 - ld a, 5 - ld [rSVBK], a - -; push palette - ld c, 4 ; NUM_PAL_COLORS -.push - ld d, [hl] - inc hl - ld e, [hl] - inc hl - push de - dec c - jr nz, .push - -; restore wram bank - ld a, b - ld [rSVBK], a - - -; update sgb pals - ld b, $9 - call GetSGBLayout - - -; restore bg palette 8 - ld hl, Unkn2Pals - 1 ; last byte in Unkn1Pals - -; save wram bank - ld a, [rSVBK] - ld d, a -; wram bank 5 - ld a, 5 - ld [rSVBK], a - -; pop palette - ld e, 4 ; NUM_PAL_COLORS -.pop - pop bc - ld [hl], c - dec hl - ld [hl], b - dec hl - dec e - jr nz, .pop - -; restore wram bank - ld a, d - ld [rSVBK], a - -; update palettes - call _UpdateTimePals - call DelayFrame - -; successful change - scf - ret - -.dontchange -; no change occurred - and a - ret -; 8c070 - - -_UpdateTimePals:: ; 8c070 - ld c, $9 ; normal - call GetTimePalFade - call DmgToCgbTimePals - ret -; 8c079 - -FadeInBGMap:: ; 8c079 - ld c, $12 - call GetTimePalFade - ld b, $4 - call Function8c16d - ret -; 8c084 - -FadeBlackBGMap:: ; 8c084 - call Function8c0c1 - ld c, $9 - call GetTimePalFade - ld b, $4 - call Function8c15e - ret -; 8c092 - -Special_BattleTowerFade: ; 8c092 - call Function8c0c1 - ld c, $9 - call GetTimePalFade - ld b, $4 -.asm_8c09c - call DmgToCgbTimePals -rept 3 - inc hl -endr - ld c, $7 - call DelayFrames - dec b - jr nz, .asm_8c09c - ret -; 8c0ab - -Special_FadeInQuickly: ; 8c0ab - ld c, $0 - call GetTimePalFade - ld b, $4 - call Function8c15e - ret -; 8c0b6 - -Special_FadeBlackQuickly: ; 8c0b6 - ld c, $9 - call GetTimePalFade - ld b, $4 - call Function8c16d - ret -; 8c0c1 - - -Function8c0c1: ; 8c0c1 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Unkn1Pals - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld hl, Unkn1Pals + 8 - ld c, $6 -.asm_8c0d4 - ld a, e - ld [hli], a - ld a, d - ld [hli], a -rept 6 - inc hl -endr - dec c - jr nz, .asm_8c0d4 - pop af - ld [rSVBK], a - ret -; 8c0e5 - -brightlevel: MACRO - db (\1 << 6) | (\2 << 4) | (\3 << 2) | \4 -ENDM - -Function8c0e5: ; 8c0e5 - ld hl, .BrightnessLevels - ld a, [wc2d0] - cp $4 ; Dark cave, needs Flash - jr z, .DarkCave - and $7 - add l - ld l, a - ld a, $0 - adc h - ld h, a - ld a, [hl] - ld [wd847], a - ret -.DarkCave - ld a, [StatusFlags] - bit 2, a - jr nz, .UsedFlash - ld a, $ff ; 3, 3, 3, 3 - ld [wd847], a - ret -.UsedFlash - ld a, $aa ; 2, 2, 2, 2 - ld [wd847], a - ret -; 8c10f (23:410f) - -.BrightnessLevels: ; 8c10f - brightlevel 3, 2, 1, 0 - brightlevel 1, 1, 1, 1 - brightlevel 2, 2, 2, 2 - brightlevel 0, 0, 0, 0 - brightlevel 3, 3, 3, 3 - brightlevel 3, 2, 1, 0 - brightlevel 3, 2, 1, 0 - brightlevel 3, 2, 1, 0 -; 8c117 - -GetTimePalette: ; 8c117 - ld a, [TimeOfDay] - ld e, a - ld d, 0 - ld hl, .TimePalettes -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8c126 - -.TimePalettes - dw .MorningPalette - dw .DayPalette - dw .NitePalette - dw .DarknessPalette - -.MorningPalette - ld a, [wd847] - and %00000011 ; 0 - ret - -.DayPalette - ld a, [wd847] - and %00001100 ; 1 - srl a - srl a - ret - -.NitePalette - ld a, [wd847] - and %00110000 ; 2 - swap a - ret - -.DarknessPalette - ld a, [wd847] - and %11000000 ; 3 - rlca - rlca - ret -; 8c14e - - -DmgToCgbTimePals: ; 8c14e - push hl - push de - ld a, [hli] - call DmgToCgbBGPals - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - call DmgToCgbObjPals - pop de - pop hl - ret -; 8c15e - -Function8c15e: ; 8c15e -.asm_8c15e - call DmgToCgbTimePals -rept 3 - inc hl -endr - ld c, $2 - call DelayFrames - dec b - jr nz, .asm_8c15e - ret -; 8c16d - -Function8c16d: ; 8c16d -.asm_8c16d - call DmgToCgbTimePals -rept 3 - dec hl -endr - ld c, $2 - call DelayFrames - dec b - jr nz, .asm_8c16d - ret -; 8c17c - - -GetTimePalFade: ; 8c17c -; check cgb - ld a, [hCGB] - and a - jr nz, .cgb - -; else: dmg - -; index - ld a, [TimeOfDayPal] - and %11 - -; get fade table - push bc - ld c, a - ld b, $0 - ld hl, .dmgfades -rept 2 - add hl, bc -endr - ld a, [hli] - ld h, [hl] - ld l, a - pop bc - -; get place in fade table - ld b, $0 - add hl, bc - ret - -.cgb - ld hl, .cgbfade - ld b, $0 - add hl, bc - ret - -.dmgfades - dw .morn - dw .day - dw .nite - dw .darkness - -.morn - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11100100, %11100100 - db %11100100, %11010000, %11010000 - db %10010000, %10000000, %10000000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 - -.day - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11100100, %11100100 - db %11100100, %11010000, %11010000 - db %10010000, %10000000, %10000000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 - -.nite - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11100100, %11100100 - db %11101001, %11010000, %11010000 - db %10010000, %10000000, %10000000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 - -.darkness - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111111 - db %11111110, %11100100, %11111111 - db %11111101, %11010000, %11111111 - db %11111101, %10000000, %11111111 - db %00000000, %01000000, %00000000 - db %00000000, %00000000, %00000000 - -.cgbfade - db %11111111, %11111111, %11111111 - db %11111110, %11111110, %11111110 - db %11111001, %11111001, %11111001 - db %11100100, %11100100, %11100100 - db %10010000, %10010000, %10010000 - db %01000000, %01000000, %01000000 - db %00000000, %00000000, %00000000 -; 8c20f - - -Predef_StartBattle: ; 8c20f - call Function8c26d - ld a, [rBGP] - ld [wcfc7], a - ld a, [rOBP0] - ld [wcfc8], a - ld a, [rOBP1] - ld [wcfc9], a - call DelayFrame - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $1 - -.loop - ld a, [wcf63] - bit 7, a - jr nz, .done - call FlashingPokeballAnimation - call DelayFrame - jr .loop - -.done - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - - ld hl, Unkn1Pals - ld bc, $0040 - xor a - call ByteFill - - pop af - ld [rSVBK], a - - ld a, %11111111 - ld [wcfc7], a - call DmgToCgbBGPals - call DelayFrame - xor a - ld [hLCDStatCustom], a - ld [hLCDStatCustom + 1], a - ld [hLCDStatCustom + 2], a - ld [hSCY], a - - ld a, $1 - ld [rSVBK], a - pop af - ld [hVBlank], a - call DelayFrame - ret -; 8c26d - -Function8c26d: ; 8c26d - ld a, [InLinkBattle] - cp LINK_MOBILE - jr z, .mobile - callba Function6454 - call UpdateSprites - call DelayFrame - call Function8c2a0 - call Function8cf4f - jr .resume - -.mobile - call Function8c2aa - -.resume - ld a, SCREEN_HEIGHT_PX - ld [hWY], a - call DelayFrame - xor a - ld [hBGMapMode], a - ld hl, wcf63 - xor a -rept 2 - ld [hli], a -endr - ld [hl], a - call WipeLYOverrides - ret -; 8c2a0 - -Function8c2a0: ; 8c2a0 - call Function8c2aa - ld hl, VBGMap0 - call Function8c2cf - ret -; 8c2aa - -Function8c2aa: ; 8c2aa - ld de, GFX_8c2f4 - ld hl, VTiles1 tile $7e - ld b, BANK(GFX_8c2f4) - ld c, 2 - call Request2bpp - - ld a, [rVBK] - push af - ld a, $1 - ld [rVBK], a - - ld de, GFX_8c2f4 - ld hl, VTiles4 tile $7e - ld b, BANK(GFX_8c2f4) - ld c, 2 - call Request2bpp - - pop af - ld [rVBK], a - ret -; 8c2cf - -Function8c2cf: ; 8c2cf - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - push hl - ld hl, w6_d000 - ld bc, $28 * $10 - -.loop - ld [hl], -1 - inc hl - dec bc - ld a, c - or b - jr nz, .loop - - pop hl - ld de, w6_d000 - ld b, BANK(Function8c2cf) ; BANK(@) - ld c, $28 - call Request2bpp - pop af - ld [rSVBK], a - ret -; 8c2f4 - -GFX_8c2f4: ; 8c2f4 -INCBIN "gfx/unknown/08c2f4.2bpp" - - -FlashingPokeballAnimation: ; 8c314 - ld a, [wcf63] - ld e, a - ld d, 0 - ld hl, .jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8c323 - -.jumptable: ; 8c323 (23:4323) - dw StartTrainerBattle_DetermineWhichAnimation ; 00 - - ; Animation 1: cave - dw StartTrainerBattle_LoadPokeBallGraphics ; 01 - dw StartTrainerBattle_SetUpBGMap ; 02 - dw StartTrainerBattle_Flash ; 03 - dw StartTrainerBattle_Flash ; 04 - dw StartTrainerBattle_Flash ; 05 - dw StartTrainerBattle_NextScene ; 06 - dw StartTrainerBattle_SetUpForWavyOutro ; 07 - dw StartTrainerBattle_SineWave ; 08 - - ; Animation 2: cave, stronger - dw StartTrainerBattle_LoadPokeBallGraphics ; 09 - dw StartTrainerBattle_SetUpBGMap ; 0a - dw StartTrainerBattle_Flash ; 0b - dw StartTrainerBattle_Flash ; 0c - dw StartTrainerBattle_Flash ; 0d - dw StartTrainerBattle_NextScene ; 0e - ; There is no setup for this one - dw StartTrainerBattle_ZoomToBlack ; 0f - - ; Animation 3: no cave - dw StartTrainerBattle_LoadPokeBallGraphics ; 10 - dw StartTrainerBattle_SetUpBGMap ; 11 - dw StartTrainerBattle_Flash ; 12 - dw StartTrainerBattle_Flash ; 13 - dw StartTrainerBattle_Flash ; 14 - dw StartTrainerBattle_NextScene ; 15 - dw StartTrainerBattle_SetUpForSpinOutro ; 16 - dw StartTrainerBattle_SpinToBlack ; 17 - - ; Animation 4: no cave, stronger - dw StartTrainerBattle_LoadPokeBallGraphics ; 18 - dw StartTrainerBattle_SetUpBGMap ; 19 - dw StartTrainerBattle_Flash ; 1a - dw StartTrainerBattle_Flash ; 1b - dw StartTrainerBattle_Flash ; 1c - dw StartTrainerBattle_NextScene ; 1d - dw StartTrainerBattle_SetUpForRandomScatterOutro ; 1e - dw StartTrainerBattle_SpeckleToBlack ; 1f - - ; All animations jump to here. - dw StartTrainerBattle_Finish ; 20 - - -StartTrainerBattle_DetermineWhichAnimation: ; 8c365 (23:4365) -; The screen flashes a different number of -; times depending on the level of your lead -; Pokemon relative to the opponent's. - ld de, 0 - ld a, [BattleMonLevel] - add 3 - ld hl, EnemyMonLevel - cp [hl] - jr nc, .okay - set 0, e -.okay - ld a, [wPermission] - cp CAVE - jr z, .okay2 - cp PERM_5 - jr z, .okay2 - cp DUNGEON - jr z, .okay2 - set 1, e -.okay2 - ld hl, .StartingPoints - add hl, de - ld a, [hl] - ld [wcf63], a - ret -; 8c38f (23:438f) - -.StartingPoints: ; 8c38f - db 1, 9 - db 16, 24 -; 8c393 - -StartTrainerBattle_Finish: ; 8c393 (23:4393) - call ClearSprites - ld a, $80 - ld [wcf63], a - ret - -StartTrainerBattle_NextScene: ; 8c39c (23:439c) - ld hl, wcf63 - inc [hl] - ret - -StartTrainerBattle_SetUpBGMap: ; 8c3a1 (23:43a1) - call StartTrainerBattle_NextScene - xor a - ld [wcf64], a - ld [hBGMapMode], a ; $ff00+$d4 - ret - -StartTrainerBattle_Flash: ; 8c3ab (23:43ab) - call Function8c3b3 - ret nc - call StartTrainerBattle_NextScene - ret - -Function8c3b3: ; 8c3b3 (23:43b3) - ld a, [wd847] - cp -1 - jr z, .done - ld hl, wcf64 - ld a, [hl] - inc [hl] - srl a - ld e, a - ld d, 0 - ld hl, .pals - add hl, de - ld a, [hl] - cp $1 - jr z, .done - ld [wcfc7], a - call DmgToCgbBGPals - and a - ret - -.done - xor a - ld [wcf64], a - scf - ret -; 8c3db (23:43db) - -.pals: ; 8c3db - db %11111001 ; 3321 - db %11111110 ; 3332 - db %11111111 ; 3333 - db %11111110 ; 3332 - db %11111001 ; 3321 - db %11100100 ; 3210 - db %10010000 ; 2100 - db %01000000 ; 1000 - db %00000000 ; 0000 - db %01000000 ; 1000 - db %10010000 ; 2100 - db %11100100 ; 3210 - db %00000001 ; 0001 -; 8c3e8 - -StartTrainerBattle_SetUpForWavyOutro: ; 8c3e8 (23:43e8) - callba Function5602 - ld a, $5 - ld [rSVBK], a ; $ff00+$70 - call StartTrainerBattle_NextScene - ld a, $43 - ld [hLCDStatCustom], a ; $ff00+$c6 - xor a - ld [hLCDStatCustom + 1], a - ld a, $90 - ld [hLCDStatCustom + 2], a - xor a - ld [wcf64], a - ld [wcf65], a - ret - -StartTrainerBattle_SineWave: ; 8c408 (23:4408) - ld a, [wcf64] - cp $60 - jr nc, .end - call .DoSineWave - ret - -.end - ld a, $20 - ld [wcf63], a - ret - -.DoSineWave: ; 8c419 (23:4419) - ld hl, wcf65 - ld a, [hl] - inc [hl] - ld hl, wcf64 - ld d, [hl] - add [hl] - ld [hl], a - ld a, $90 - ld bc, wd100 - ld e, $0 - -.loop - push af - push de - ld a, e - call StartTrainerBattle_DrawSineWave - ld [bc], a - inc bc - pop de - ld a, e - add $2 - ld e, a - pop af - dec a - jr nz, .loop - ret - -StartTrainerBattle_SetUpForSpinOutro: ; 8c43d (23:443d) - callba Function5602 - ld a, $5 - ld [rSVBK], a ; $ff00+$70 - call StartTrainerBattle_NextScene - xor a - ld [wcf64], a - ret - -spintable_entry: MACRO - db \1 - dw .wedge\2 - dwcoord \3, \4 -ENDM - -; quadrants - const_def - const UPPER_LEFT - const UPPER_RIGHT - const LOWER_LEFT - const LOWER_RIGHT - -StartTrainerBattle_SpinToBlack: ; 8c44f (23:444f) - xor a - ld [hBGMapMode], a ; $ff00+$d4 - ld a, [wcf64] - ld e, a - ld d, 0 - ld hl, .spintable -rept 5 - add hl, de -endr - ld a, [hli] - cp -1 - jr z, .end - ld [wcf65], a - call .load - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - call DelayFrame - call DelayFrame - ld hl, wcf64 - inc [hl] - ret - -.end - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - call DelayFrame - call DelayFrame - call DelayFrame - xor a - ld [hBGMapMode], a ; $ff00+$d4 - ld a, $20 - ld [wcf63], a - ret -; 8c490 (23:4490) - -.spintable: ; 8c490 - spintable_entry UPPER_LEFT, 1, 1, 6 - spintable_entry UPPER_LEFT, 2, 0, 3 - spintable_entry UPPER_LEFT, 3, 1, 0 - spintable_entry UPPER_LEFT, 4, 5, 0 - spintable_entry UPPER_LEFT, 5, 9, 0 - spintable_entry UPPER_RIGHT, 5, 10, 0 - spintable_entry UPPER_RIGHT, 4, 14, 0 - spintable_entry UPPER_RIGHT, 3, 18, 0 - spintable_entry UPPER_RIGHT, 2, 19, 3 - spintable_entry UPPER_RIGHT, 1, 18, 6 - spintable_entry LOWER_RIGHT, 1, 18, 11 - spintable_entry LOWER_RIGHT, 2, 19, 14 - spintable_entry LOWER_RIGHT, 3, 18, 17 - spintable_entry LOWER_RIGHT, 4, 14, 17 - spintable_entry LOWER_RIGHT, 5, 10, 17 - spintable_entry LOWER_LEFT, 5, 9, 17 - spintable_entry LOWER_LEFT, 4, 5, 17 - spintable_entry LOWER_LEFT, 3, 1, 17 - spintable_entry LOWER_LEFT, 2, 0, 14 - spintable_entry LOWER_LEFT, 1, 1, 11 - db -1 -; 8c4f5 - -.load: ; 8c4f5 (23:44f5) - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a -.loop - push hl - ld a, [de] - ld c, a - inc de -.loop1 - ld [hl], $ff - ld a, [wcf65] - bit 0, a - jr z, .leftside - inc hl - jr .okay1 -.leftside - dec hl -.okay1 - dec c - jr nz, .loop1 - pop hl - ld a, [wcf65] - bit 1, a - ld bc, SCREEN_WIDTH - jr z, .upper - ld bc, -SCREEN_WIDTH -.upper - add hl, bc - ld a, [de] - inc de - cp -1 - ret z - and a - jr z, .loop - ld c, a -.loop2 - ld a, [wcf65] - bit 0, a - jr z, .leftside2 - dec hl - jr .okay2 -.leftside2 - inc hl -.okay2 - dec c - jr nz, .loop2 - jr .loop -; 8c538 (23:4538) - -.wedge1: db 2, 3, 5, 4, 9, -1 -.wedge2: db 1, 1, 2, 2, 4, 2, 4, 2, 3, -1 -.wedge3: db 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 3, 1, 2, 1, 1, 1, 1, -1 -.wedge4: db 4, 1, 4, 0, 3, 1, 3, 0, 2, 1, 2, 0, 1, -1 -.wedge5: db 4, 0, 3, 0, 3, 0, 2, 0, 2, 0, 1, 0, 1, 0, 1, -1 -; 8c578 - -StartTrainerBattle_SetUpForRandomScatterOutro: ; 8c578 (23:4578) - callba Function5602 - ld a, $5 - ld [rSVBK], a ; $ff00+$70 - call StartTrainerBattle_NextScene - ld a, $10 - ld [wcf64], a - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - ret - -StartTrainerBattle_SpeckleToBlack: ; 8c58f (23:458f) - ld hl, wcf64 - ld a, [hl] - and a - jr z, .done - dec [hl] - ld c, $c -.loop - push bc - call .BlackOutRandomTile - pop bc - dec c - jr nz, .loop - ret - -.done - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - call DelayFrame - call DelayFrame - call DelayFrame - xor a - ld [hBGMapMode], a ; $ff00+$d4 - ld a, $20 - ld [wcf63], a - ret - -.BlackOutRandomTile: ; 8c5b8 (23:45b8) -.y_loop - call Random - cp SCREEN_HEIGHT - jr nc, .y_loop - ld b, a - -.x_loop - call Random - cp SCREEN_WIDTH - jr nc, .x_loop - ld c, a - - hlcoord 0, -1 - ld de, SCREEN_WIDTH - inc b - -.row_loop - add hl, de - dec b - jr nz, .row_loop - add hl, bc - -; If the tile has already been blacked out, -; sample a new tile - ld a, [hl] - cp $ff - jr z, .y_loop - ld [hl], $ff - ret - -StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc) - ld a, [OtherTrainerClass] - and a - jp z, .nextscene - xor a - ld [hBGMapMode], a ; $ff00+$d4 - hlcoord 0, 0, AttrMap - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - inc b - inc c - jr .enter_loop_midway - -.loop - ld a, [hl] - or $7 - ld [hli], a -.enter_loop_midway - dec c - jr nz, .loop - dec b - jr nz, .loop - call .loadpokeballgfx - hlcoord 2, 1 - ld b, $10 -.loop2 - push hl - ld c, $2 -.loop3 - push hl - ld a, [de] - inc de -.loop4 - and a - jr z, .asm_8c614 - sla a - jr nc, .asm_8c611 - ld [hl], $fe -.asm_8c611 - inc hl - jr .loop4 -.asm_8c614 - pop hl - push bc - ld bc, $8 - add hl, bc - pop bc - dec c - jr nz, .loop3 - pop hl - push bc - ld bc, $14 - add hl, bc - pop bc - dec b - jr nz, .loop2 - ld a, [hCGB] ; $ff00+$e6 - and a - jr nz, .cgb - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - call DelayFrame - call DelayFrame - jr .nextscene - -.cgb - ld hl, .daypals - ld a, [TimeOfDayPal] - and (1 << 2) - 1 - cp 3 - jr nz, .daytime - ld hl, .nightpals -.daytime - ld a, [rSVBK] ; $ff00+$70 - push af - ld a, $5 ; WRAM5 = palettes - ld [rSVBK], a ; $ff00+$70 - call .copypals - push hl - ld de, Unkn1Pals + 8 * 7 - ld bc, $8 - call CopyBytes - pop hl - ld de, BGPals + 8 * 7 - ld bc, $8 - call CopyBytes - pop af - ld [rSVBK], a ; $ff00+$70 - ld a, $1 - ld [hCGBPalUpdate], a ; $ff00+$e5 - call DelayFrame - call Function8cf4f - -.nextscene: ; 8c673 (23:4673) - call StartTrainerBattle_NextScene - ret - -.copypals: ; 8c677 (23:4677) - ld de, Unkn1Pals + 8 * 7 - call .copy - ld de, BGPals + 8 * 7 - call .copy - ld de, Unkn2Pals + 8 * 6 - call .copy - ld de, OBPals + 8 * 6 - call .copy - ld de, Unkn2Pals + 8 * 7 - call .copy - ld de, OBPals + 8 * 7 - -.copy: ; 8c698 (23:4698) - push hl - ld bc, $8 - call CopyBytes - pop hl - ret -; 8c6a1 (23:46a1) - -.daypals: ; 8c6a1 - RGB 31, 18, 29 - RGB 31, 11, 15 - RGB 31, 05, 05 - RGB 07, 07, 07 -; 8c6a9 - -.nightpals: ; 8c6a9 - RGB 31, 18, 29 - RGB 31, 05, 05 - RGB 31, 05, 05 - RGB 31, 05, 05 - -.loadpokeballgfx: - ld a, [OtherTrainerClass] - ld de, PokeBallTransition - ret - -PokeBallTransition: - db %00000011, %11000000 - db %00001111, %11110000 - db %00111100, %00111100 - db %00110000, %00001100 - db %01100000, %00000110 - db %01100011, %11000110 - db %11000110, %01100011 - db %11111100, %00111111 - db %11111100, %00111111 - db %11000110, %01100011 - db %01100011, %11000110 - db %01100000, %00000110 - db %00110000, %00001100 - db %00111100, %00111100 - db %00001111, %11110000 - db %00000011, %11000000 - -WipeLYOverrides: ; 8c6d8 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, LYOverrides - call .wipe - ld hl, LYOverridesBackup - call .wipe - pop af - ld [rSVBK], a - ret -; 8c6ef - -.wipe: ; 8c6ef - xor a - ld c, SCREEN_HEIGHT_PX -.loop - ld [hli], a - dec c - jr nz, .loop - ret -; 8c6f7 - - -StartTrainerBattle_DrawSineWave: ; 8c6f7 (23:46f7) - and (1 << 6) - 1 - cp 1 << 5 - jr nc, .okay - call .DoSineWave - ld a, h - ret - -.okay - and (1 << 5) - 1 - call .DoSineWave - ld a, h - xor -1 ; cpl - inc a - ret - -.DoSineWave: ; 8c70c (23:470c) - ld e, a - ld a, d - ld d, 0 - ld hl, .sinewave -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - ld hl, 0 -.loop - srl a - jr nc, .skip - add hl, de -.skip - sla e - rl d - and a - jr nz, .loop - ret -; 8c728 (23:4728) - -.sinewave: ; 8c728 - sine_wave $100 -; 8c768 - -zoombox: macro -; width, height, start y, start x - db \1, \2 - dwcoord \3, \4 -endm - -StartTrainerBattle_ZoomToBlack: ; 8c768 (23:4768) - callba Function5602 - ld de, .boxes - -.loop - ld a, [de] - cp -1 - jr z, .done - inc de - ld c, a - ld a, [de] - inc de - ld b, a - ld a, [de] - inc de - ld l, a - ld a, [de] - inc de - ld h, a - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call .Copy - call WaitBGMap - jr .loop - -.done - ld a, $20 - ld [wcf63], a - ret -; 8c792 (23:4792) - -.boxes: ; 8c792 - zoombox 4, 2, 8, 8 - zoombox 6, 4, 7, 7 - zoombox 8, 6, 6, 6 - zoombox 10, 8, 5, 5 - zoombox 12, 10, 4, 4 - zoombox 14, 12, 3, 3 - zoombox 16, 14, 2, 2 - zoombox 18, 16, 1, 1 - zoombox 20, 18, 0, 0 - db -1 -; 8c7b7 - -.Copy: ; 8c7b7 (23:47b7) - ld a, $ff -.row - push bc - push hl -.col - ld [hli], a - dec c - jr nz, .col - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .row - ret -; 8c7c9 (23:47c9) - -Function8c7c9: ; 8c7c9 +Function8c7c9: ; unreferenced ld a, $1 ld [hBGMapMode], a call WaitBGMap @@ -55475,25 +54198,25 @@ ShakeHeadbuttTree: ; 8c80a ld a, $90 ld [wc3b5], a callba Function8cf7a - call Function8c913 + call GetHeadbuttTreeRelativeLocation ld a, $20 ld [wcf64], a call WaitSFX ld de, SFX_SANDSTORM call PlaySFX -.asm_8c852 +.loop ld hl, wcf64 ld a, [hl] and a - jr z, .asm_8c86a + jr z, .done dec [hl] ld a, $90 ld [wc3b5], a callba Function8cf7a call DelayFrame - jr .asm_8c852 + jr .loop -.asm_8c86a +.done call Function2173 call WaitBGMap xor a @@ -55515,19 +54238,20 @@ HeadbuttTreeGFX: ; 8c893 INCBIN "gfx/unknown/08c893.2bpp" ; 8c913 -Function8c913: ; 8c913 +GetHeadbuttTreeRelativeLocation: ; 8c913 xor a ld [hBGMapMode], a ld a, [PlayerDirection] - and $c + and %00001100 srl a ld e, a ld d, 0 - ld hl, Unknown_8c938 + ld hl, TreeRelativeLocationTable add hl, de ld a, [hli] ld h, [hl] ld l, a + ld a, $5 ld [hli], a ld [hld], a @@ -55541,11 +54265,12 @@ Function8c913: ; 8c913 ret ; 8c938 -Unknown_8c938: ; 8c938 - dwcoord 8, 10 - dwcoord 8, 6 - dwcoord 6, 8 - dwcoord 10, 8 +TreeRelativeLocationTable: ; 8c938 + dwcoord 8, 8 + 2 ; RIGHT + dwcoord 8, 8 - 2 ; LEFT + dwcoord 8 - 2, 8 ; DOWN + dwcoord 8 + 2, 8 ; UP +; 8c940 ; 8c940 Function8c940: ; 8c940 @@ -56409,9 +55134,11 @@ Function8cf69: ; 8cf69 push de push bc push af + ld a, $0 ld [wc3b5], a call Function8cf7a + pop af pop bc pop de @@ -56422,6 +55149,7 @@ Function8cf69: ; 8cf69 Function8cf7a: ; 8cf7a ld hl, wPartyMonMenuIconAnims ld e, 10 ; Do this first loop 10 times + .loop ld a, [hl] and a @@ -56444,6 +55172,7 @@ Function8cf7a: ; 8cf7a ld a, [wc3b5] ld l, a ld h, Sprites / $0100 + .loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd) ld a, l cp SpritesEnd % $0100 @@ -56458,7 +55187,8 @@ Function8cf7a: ; 8cf7a Function8cfa8: ; 8cfa8 (23:4fa8) ld hl, wPartyMonMenuIconAnims - ld e, $a + ld e, 10 + .loop ld a, [hl] and a @@ -56472,21 +55202,24 @@ Function8cfa8: ; 8cfa8 (23:4fa8) pop de pop hl jr c, .done + .next - ld bc, $10 + ld bc, $0010 add hl, bc dec e jr nz, .loop + ld a, [wc3b5] ld l, a - ld h, $c4 + ld h, Sprites / $100 .loop2 ld a, l - cp $40 + cp 4 * 16 jr nc, .done xor a ld [hli], a jr .loop2 + .done ret @@ -57033,7 +55766,7 @@ endr ld hl, $7 add hl, bc ld a, d - and $10 + and $10 ; bit 4 jr z, .asm_8d2df ld a, e and a @@ -59686,7 +58419,7 @@ endr ; 8ea3f GetGFXUnlessMobile: ; 8ea3f - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_MOBILE jp nz, Request2bpp jp Functiondc9 @@ -60100,7 +58833,7 @@ Function90197: ; 90197 ret Function90199: ; 90199 (24:4199) - ld a, [InLinkBattle] + ld a, [wLinkMode] and a jr nz, .asm_901e7 call GetMapHeaderPhoneServiceNybble @@ -65997,13 +64730,13 @@ UnknownText_0x931b9: ; 0x931b9 Function931ba: ; 931ba ld a, [EffectFailed] add $25 - ldcoord 2, 13 + ldcoord_a 2, 13 inc a - ldcoord 2, 14 + ldcoord_a 2, 14 inc a - ldcoord 3, 13 + ldcoord_a 3, 13 inc a - ldcoord 3, 14 + ldcoord_a 3, 14 hlcoord 18, 17 ld [hl], $ee ld hl, UnknownText_0x931db @@ -77831,7 +76564,7 @@ Functionfb57e: ; fb57e ld a, [hl] cp 101 jr nc, .asm_fb5db - ld a, [InLinkBattle] + ld a, [wLinkMode] cp LINK_TIMECAPSULE jr nz, .asm_fb5d9 ld hl, OTPartySpecies @@ -84400,22 +83133,22 @@ Function1de27f: ; 1de27f -Function1de28a:: ; 1de28a +_DudeAutoInput_A:: ; 1de28a ld hl, DudeAutoInput_A - jr Function1de299 + jr _DudeAutoInput ; 1de28f -Function1de28f: ; 1de28f +_DudeAutoInput_RightA: ; 1de28f ld hl, DudeAutoInput_RightA - jr Function1de299 + jr _DudeAutoInput ; 1de294 -Function1de294: ; 1de294 +_DudeAutoInput_DownA: ; 1de294 ld hl, DudeAutoInput_DownA - jr Function1de299 + jr _DudeAutoInput ; 1de299 -Function1de299: ; 1de299 +_DudeAutoInput: ; 1de299 ld a, BANK(DudeAutoInputs) call StartAutoInput ret diff --git a/misc/crystal_misc.asm b/misc/crystal_misc.asm index a752e9e83..956ee30dd 100644 --- a/misc/crystal_misc.asm +++ b/misc/crystal_misc.asm @@ -19,6 +19,7 @@ Function17a68f:: ; 17a68f (5e:668f) pop de xor a ret + .asm_17a6a6 scf ret @@ -82,6 +83,7 @@ Function17a713: ; 17a713 (5e:6713) inc c and a ret + .asm_17a71d ld [hl], $ff scf @@ -113,10 +115,12 @@ Function17a721: ; 17a721 (5e:6721) dec b jr nz, .asm_17a732 ret + .asm_17a748 ld a, $ff ld [de], a ret + .asm_17a74c ld a, $f0 or c @@ -167,6 +171,7 @@ Function17a78f: ; 17a78f (5e:678f) jr nz, .asm_17a79f callba Function10402d ret + .asm_17a79f callba Function104061 ret @@ -297,41 +302,49 @@ Function17a848: ; 17a848 (5e:6848) jr nz, .asm_17a8a7 xor a ret + .asm_17a876 ld a, $9 call Function17aad0 scf ret + .asm_17a87d ld a, $a call Function17aad0 scf ret + .asm_17a884 ld a, $b call Function17aad0 scf ret + .asm_17a88b ld a, $c call Function17aad0 scf ret + .asm_17a892 ld a, $5 call Function17aad0 scf ret + .asm_17a899 ld a, $6 call Function17aad0 scf ret + .asm_17a8a0 ld a, $7 call Function17aad0 scf ret + .asm_17a8a7 ld a, $8 call Function17aad0 @@ -347,6 +360,7 @@ Function17a8ae: ; 17a8ae (5e:68ae) jr nz, .asm_17a8d7 xor a ret + .asm_17a8bc ld a, $b ld [$d08a], a @@ -355,12 +369,14 @@ Function17a8ae: ; 17a8ae (5e:68ae) call Function17aa88 scf ret + .asm_17a8cc call Function17aad7 call Function17aa98 call Function17a8de scf ret + .asm_17a8d7 ld a, $c call Function17aad3 @@ -383,16 +399,19 @@ Function17a8de: ; 17a8de (5e:68de) ld [$d087], a call Function17aa88 ret + .asm_17a8fd call Function17a943 call Function17aa88 ret + .asm_17a904 call Function17aad7 call Function17aa98 call Function17a91e call Function17aa88 ret + .asm_17a911 call Function17aa98 ld a, $5 @@ -409,6 +428,7 @@ Function17a91e: ; 17a91e (5e:691e) ld [$d087], a xor a ret + .asm_17a92c call Function1d6e call Function17a99e @@ -436,6 +456,7 @@ Function17a943: ; 17a943 (5e:6943) ld [$d087], a and a ret + .asm_17a95d ld a, $5 ld [$d087], a @@ -455,6 +476,7 @@ Function17a964: ; 17a964 (5e:6964) ld [hl], e and a ret + .asm_17a979 scf ret @@ -479,6 +501,7 @@ Function17a97b: ; 17a97b (5e:697b) dec c jr nz, .asm_17a990 ret + .asm_17a99d ret @@ -503,12 +526,13 @@ Function17a9cb: ; 17a9cb (5e:69cb) ld de, Sprites ; $c400 ld hl, $d088 bit 6, [hl] - jr nz, .asm_17a9df + jr nz, .bit_6_set call Function17a9e3 call Function17aa22 call Function17a9f5 ret -.asm_17a9df + +.bit_6_set call Function17a9e3 ret @@ -533,9 +557,9 @@ Function17a9f5: ; 17a9f5 (5e:69f5) ld [$d08e], a ld a, [$d08c] cp $10 - jr c, .asm_17aa0f + jr c, .okay dec a -.asm_17aa0f +.okay ld c, $8 call SimpleMultiply add $18 @@ -581,7 +605,7 @@ Function17aa4a: ; 17aa4a (5e:6a4a) add $10 ld c, a ld a, [hli] -.asm_17aa56 +.loop push af ld a, [hli] add c @@ -603,7 +627,7 @@ Function17aa4a: ; 17aa4a (5e:6a4a) inc de pop af dec a - jr nz, .asm_17aa56 + jr nz, .loop ret ; 17aa72 (5e:6a72) @@ -662,7 +686,7 @@ rept 2 ld [hli], a endr pop hl - ld de, $14 + ld de, SCREEN_WIDTH add hl, de rept 2 ld [hli], a @@ -721,16 +745,20 @@ Function17aba0: ; 17aba0 (5e:6ba0) push af ld a, $1 ld [rVBK], a ; $ff00+$4f - ld hl, VTiles2 tile $00 + + ld hl, VTiles5 tile $00 ld de, GFX_17afa5 lb bc, BANK(GFX_17afa5), $80 call Get2bpp + pop af ld [rVBK], a ; $ff00+$4f + ld hl, VTiles0 tile $00 ld de, GFX_17afa5 + $4c0 lb bc, BANK(GFX_17afa5), 5 call Get2bpp + ld hl, VTiles0 tile $05 ld de, GFX_11601a lb bc, BANK(GFX_11601a), 4 @@ -740,25 +768,30 @@ Function17aba0: ; 17aba0 (5e:6ba0) Function17abcf: ; 17abcf (5e:6bcf) ld a, [rSVBK] ; $ff00+$70 push af - ld a, $5 + ld a, BANK(Unkn1Pals) ld [rSVBK], a ; $ff00+$70 + ld hl, Palette_17ac55 ld de, Unkn1Pals ; $d000 ld bc, $30 call CopyBytes + ld hl, Palette_17ac95 ld de, Unkn2Pals ld bc, $40 call CopyBytes + ld hl, GFX_17afa5 + $510 - ld de, $d048 + ld de, Unkn2Pals + 2 * 4 ld bc, $10 call CopyBytes + ld hl, MapObjectPals + 8 - ld de, $d058 + ld de, Unkn2Pals + 6 * 4 ld bc, $8 ld a, BANK(MapObjectPals) call FarCopyBytes + pop af ld [rSVBK], a ; $ff00+$70 ret @@ -767,42 +800,43 @@ Function17ac0c: ; 17ac0c (5e:6c0c) call Function17ac1d call Function17ac2a hlcoord 0, 0 - ld b, $2 - ld c, $12 + ld b, 2 + ld c, SCREEN_WIDTH - 2 call Function17ac46 ret Function17ac1d: ; 17ac1d (5e:6c1d) ld hl, Tilemap_17acd5 decoord 0, 4 - ld bc, $118 + ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH call CopyBytes ret Function17ac2a: ; 17ac2a (5e:6c2a) ld hl, Tilemap_17ae3d decoord 0, 4, AttrMap - ld bc, $118 + ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH call CopyBytes hlcoord 0, 4, AttrMap - ld bc, $118 -.asm_17ac3c + ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH +.loop ld a, [hl] or $8 ld [hli], a dec bc ld a, b or c - jr nz, .asm_17ac3c + jr nz, .loop ret Function17ac46: ; 17ac46 (5e:6c46) ld a, [$d088] bit 4, a - jr nz, .asm_17ac51 + jr nz, .bit_4_set call TextBox ret -.asm_17ac51 + +.bit_4_set call Function3eea ret ; 17ac55 (5e:6c55) @@ -812,30 +846,37 @@ Palette_17ac55: ; 17ac55 RGB 9, 10, 25 RGB 16, 19, 31 RGB 31, 31, 31 + RGB 5, 11, 9 RGB 7, 14, 12 RGB 17, 24, 22 RGB 28, 31, 31 + RGB 0, 0, 0 RGB 3, 0, 10 RGB 3, 3, 16 RGB 6, 8, 25 + RGB 5, 11, 9 RGB 28, 31, 31 RGB 7, 14, 12 RGB 17, 24, 22 + RGB 0, 0, 0 RGB 5, 2, 16 RGB 8, 8, 26 RGB 13, 9, 17 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 @@ -846,30 +887,37 @@ Palette_17ac95: ; 17ac95 RGB 4, 3, 3 RGB 31, 13, 0 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 0, 0, 0 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 0, 0 RGB 16, 3, 0 RGB 28, 19, 11 RGB 31, 31, 31 + RGB 31, 16, 0 RGB 9, 6, 4 RGB 31, 16, 0 RGB 31, 24, 0 + RGB 31, 18, 6 RGB 0, 3, 0 RGB 0, 9, 0 RGB 0, 12, 0 + RGB 0, 16, 0 RGB 0, 22, 0 RGB 0, 25, 0 RGB 0, 27, 0 + RGB 0, 31, 0 RGB 3, 31, 0 RGB 8, 31, 0 RGB 14, 31, 0 + RGB 16, 31, 0 RGB 22, 31, 0 RGB 27, 31, 0 diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm index bce647792..59e6e58e3 100644 --- a/misc/mobile_40.asm +++ b/misc/mobile_40.asm @@ -168,17 +168,17 @@ Function1000fa: ; 1000fa ld [$ffc9], a ld [$ffe9], a ei - ld a, [InLinkBattle] + ld a, [wLinkMode] push af xor a - ld [InLinkBattle], a + ld [wLinkMode], a ld a, $4 ld [wPartyMonMenuIconAnims + 5], a callba Function11619d ld hl, wcd29 set 6, [hl] pop af - ld [InLinkBattle], a + ld [wLinkMode], a ret ; 100144 @@ -1612,7 +1612,7 @@ Function100a09: ; 100a09 call Function100a2e ld [wd431], a callba Function4000 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $4 jr nz, .asm_100a2a call Function100a87 @@ -2134,7 +2134,7 @@ Function100db0: ; 100db0 Function100dc0: ; 100dc0 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $4 jr nz, .asm_100dd0 ld hl, wcd2a @@ -2770,13 +2770,13 @@ Function1011f1: ; 1011f1 ld [wdc5f], a ld [wdc60], a ld a, $4 - ld [InLinkBattle], a + ld [wLinkMode], a ret ; 101220 Function101220: ; 101220 xor a - ld [InLinkBattle], a + ld [wLinkMode], a ret ; 101225 @@ -6802,7 +6802,7 @@ Function102e07: ; 102e07 hlcoord 3, 10 ld b, $1 ld c, $b - ld a, [IsInBattle] + ld a, [wBattleMode] and a jr z, .asm_102e19 call TextBox diff --git a/misc/mobile_45.asm b/misc/mobile_45.asm index 935544f93..ce2ea1d21 100644 --- a/misc/mobile_45.asm +++ b/misc/mobile_45.asm @@ -5976,7 +5976,7 @@ Function1163c0: ; 1163c0 pop af ld [rSVBK], a callba Function104061 - ld a, [InLinkBattle] + ld a, [wLinkMode] cp $4 jr z, .asm_11642a ld a, $8 @@ -16146,10 +16146,10 @@ Function11b7e5: ; 11b7e5 ld a, $1 ld [wd1e9], a ld a, $2 - ld [InLinkBattle], a + ld [wLinkMode], a callba Function421d8 xor a - ld [InLinkBattle], a + ld [wLinkMode], a callba Function14a58 ld a, $5 call GetSRAMBank @@ -22841,7 +22841,7 @@ RunBattleTowerBattle: ; 17024d or $1 ld [InBattleTowerBattle], a xor a - ld [InLinkBattle], a + ld [wLinkMode], a callba Mobile_HealParty callba HealParty call Function1702b7 diff --git a/misc/mobile_5f.asm b/misc/mobile_5f.asm index 06cd74a7b..95eb07557 100644 --- a/misc/mobile_5f.asm +++ b/misc/mobile_5f.asm @@ -300,10 +300,10 @@ Function17d0f3: ; 17d0f3 ld a, $1 ld [wd1e9], a ld a, $2 - ld [InLinkBattle], a + ld [wLinkMode], a callba Function421d8 xor a - ld [InLinkBattle], a + ld [wLinkMode], a callba Function14a58 ld a, $5 call GetSRAMBank diff --git a/wram.asm b/wram.asm index 1da920859..a6e76deec 100644 --- a/wram.asm +++ b/wram.asm @@ -294,7 +294,7 @@ wc2d7:: ds 1 wc2d8:: ds 1 wc2d9:: ds 1 wc2da:: ds 2 -InLinkBattle:: ; c2dc +wLinkMode:: ; c2dc ; 0 not in link battle ; 1 link battle ; 4 mobile battle @@ -1760,7 +1760,7 @@ EnemyMonBaseExp:: db ; d22c EnemyMonEnd:: -IsInBattle:: ; d22d +wBattleMode:: ; d22d ; 0: overworld ; 1: wild battle ; 2: trainer battle