diff options
author | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
commit | 794410352fd92ccf06974763e4b3be0b807641ab (patch) | |
tree | 05f5dd861966762db9556082229cee82e8b5eed9 /battle | |
parent | 9c5473e965520f672640daf4ee76622640e0de15 (diff) | |
parent | 4bcd71e3227181baa536357af3d87a8d02af3890 (diff) |
Merge pull request #328 from PikalaxALT/master
Split out most of main.asm
Diffstat (limited to 'battle')
-rw-r--r-- | battle/anim_commands.asm | 8 | ||||
-rw-r--r-- | battle/bg_effects.asm | 8 | ||||
-rw-r--r-- | battle/core.asm | 486 | ||||
-rw-r--r-- | battle/effect_commands.asm | 6 | ||||
-rwxr-xr-x | battle/used_move_text.asm | 349 |
5 files changed, 604 insertions, 253 deletions
diff --git a/battle/anim_commands.asm b/battle/anim_commands.asm index fed2c9236..ebc6a8a43 100644 --- a/battle/anim_commands.asm +++ b/battle/anim_commands.asm @@ -1172,7 +1172,7 @@ BattleAnimCmd_BeatUp: ; cc776 (33:4776) .done pop af ld [CurPartySpecies], a ; CurPartySpecies - ld b, $1 + ld b, SCGB_01 call GetSGBLayout pop af ld [rSVBK], a @@ -1437,13 +1437,13 @@ Functioncc91a: ; cc91a ld a, $5 ld [rSVBK], a ld hl, BGPals - ld de, wMapPals + ld de, UnknBGPals ld a, [rBGP] ld b, a ld c, $7 call CopyPals ld hl, OBPals - ld de, Unkn2Pals + ld de, UnknOBPals ld a, [rBGP] ld b, a ld c, $2 @@ -1465,7 +1465,7 @@ Functioncc94b: ; cc94b ld a, $5 ld [rSVBK], a ld hl, OBPals + $10 - ld de, Unkn2Pals + $10 + ld de, UnknOBPals + $10 ld a, [rOBP0] ld b, a ld c, $2 diff --git a/battle/bg_effects.asm b/battle/bg_effects.asm index da3d6b4a1..b6b1901da 100644 --- a/battle/bg_effects.asm +++ b/battle/bg_effects.asm @@ -2571,12 +2571,12 @@ Functionc8e52: ; c8e52 (32:4e52) push bc push af ld hl, BGPals ; BGPals - ld de, wMapPals ; wd000 + ld de, UnknBGPals ; wd000 ld b, a ld c, $1 call CopyPals ld hl, OBPals + 8 - ld de, Unkn2Pals + 8 + ld de, UnknOBPals + 8 pop af ld b, a ld c, $1 @@ -2598,12 +2598,12 @@ Functionc8e7f: ; c8e7f (32:4e7f) push bc push af ld hl, BGPals + 8 - ld de, wMapPals + 8 + ld de, UnknBGPals + 8 ld b, a ld c, $1 call CopyPals ld hl, OBPals ; OBPals - ld de, Unkn2Pals ; wd040 + ld de, UnknOBPals ; wd040 pop af ld b, a ld c, $1 diff --git a/battle/core.asm b/battle/core.asm index 1defd0e23..bda8e736d 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -7,7 +7,7 @@ SendOutFirstMons: ; 3c000 xor a ld [wBattleParticipantsNotFainted], a ld [wc6fc], a - ld [wd0ec], a + ld [wPlayerAction], a ld [BattleEnded], a inc a ld [wd264], a @@ -302,7 +302,7 @@ HandleBetweenTurnEffects: ; 3c1d6 call HandleHealingItems call UpdateBattleMonInParty call LoadTileMapToTempTileMap - jp Function3c4df + jp HandleEncore ; 3c23c CheckFaint_PlayerThenEnemy: ; 3c23c @@ -461,7 +461,7 @@ DetermineMoveOrder: ; 3c314 jr z, .use_move sub BATTLEACTION_SWITCH1 jr c, .use_move - ld a, [wd0ec] + ld a, [wPlayerAction] cp $2 jr nz, .switch ld a, [hLinkPlayerNumber] @@ -486,7 +486,7 @@ DetermineMoveOrder: ; 3c314 jp .enemy_first .use_move - ld a, [wd0ec] + ld a, [wPlayerAction] and a jp nz, .player_first call CompareMovePriority @@ -629,7 +629,7 @@ ParsePlayerAction: ; 3c434 jr .encored .not_encored - ld a, [wd0ec] + ld a, [wPlayerAction] cp $2 jr z, .reset_rage and a @@ -638,7 +638,7 @@ ParsePlayerAction: ; 3c434 and 1 << SUBSTATUS_BIDE jr nz, .locked_in xor a - ld [wd235], a + ld [wMoveSelectionMenuType], a inc a ; POUND ld [FXAnimIDLo], a call MoveSelectionScreen @@ -714,23 +714,23 @@ ParsePlayerAction: ; 3c434 ret ; 3c4df -Function3c4df: ; 3c4df +HandleEncore: ; 3c4df ld a, [hLinkPlayerNumber] cp $1 - jr z, .asm_3c4ea - call .asm_3c4ed - jr .asm_3c518 + jr z, .player_1 + call .do_player + jr .do_enemy -.asm_3c4ea - call .asm_3c518 -.asm_3c4ed +.player_1 + call .do_enemy +.do_player ld hl, PlayerSubStatus5 bit SUBSTATUS_ENCORED, [hl] ret z ld a, [PlayerEncoreCount] dec a ld [PlayerEncoreCount], a - jr z, .asm_3c50a + jr z, .end_player_encore ld hl, BattleMonPP ld a, [CurMoveNum] ld c, a @@ -740,21 +740,21 @@ Function3c4df: ; 3c4df and $3f ret nz -.asm_3c50a +.end_player_encore ld hl, PlayerSubStatus5 res SUBSTATUS_ENCORED, [hl] call SetEnemyTurn ld hl, BattleText_TargetsEncoreEnded jp StdBattleTextBox -.asm_3c518 +.do_enemy ld hl, EnemySubStatus5 bit SUBSTATUS_ENCORED, [hl] ret z ld a, [EnemyEncoreCount] dec a ld [EnemyEncoreCount], a - jr z, .asm_3c535 + jr z, .end_enemy_encore ld hl, EnemyMonPP ld a, [CurEnemyMoveNum] ld c, a @@ -764,7 +764,7 @@ Function3c4df: ; 3c4df and $3f ret nz -.asm_3c535 +.end_enemy_encore ld hl, EnemySubStatus5 res SUBSTATUS_ENCORED, [hl] call SetPlayerTurn @@ -972,7 +972,7 @@ Battle_EnemyFirst: ; 3c5fe jp z, HandlePlayerMonFaint call RefreshBattleHuds xor a - ld [wd0ec], a + ld [wPlayerAction], a ret ; 3c664 @@ -1022,7 +1022,7 @@ Battle_PlayerFirst: ; 3c664 jp z, HandleEnemyMonFaint call RefreshBattleHuds xor a - ld [wd0ec], a + ld [wPlayerAction], a ret ; 3c6cf @@ -2004,7 +2004,8 @@ GetMaxHP: ; 3ccac ret ; 3ccc2 -Function3ccc2: ; 3ccc2 +GetHalfHP: ; 3ccc2 +; unreferenced ld hl, BattleMonHP ld a, [hBattleTurn] and a @@ -2160,22 +2161,22 @@ HandleEnemyMonFaint: ; 3cd55 jp c, WildFled_EnemyFled_LinkBattleCanceled ld a, $1 - ld [wd0ec], a + ld [wPlayerAction], a call Function3cf4a jp z, WildFled_EnemyFled_LinkBattleCanceled - jr Function3cdca + jr DoubleSwitch .player_mon_not_fainted ld a, $1 - ld [wd0ec], a + ld [wPlayerAction], a call Function3cf4a jp z, WildFled_EnemyFled_LinkBattleCanceled xor a - ld [wd0ec], a + ld [wPlayerAction], a ret ; 3cdca -Function3cdca: ; 3cdca +DoubleSwitch: ; 3cdca ld a, [hLinkPlayerNumber] cp $1 jr z, .player_1 @@ -2201,7 +2202,7 @@ Function3cdca: ; 3cdca .done xor a - ld [wd0ec], a + ld [wPlayerAction], a ret ; 3ce01 @@ -2412,14 +2413,14 @@ CheckEnemyTrainerDefeated: ; 3cf35 Function3cf4a: ; 3cf4a ld hl, EnemyHPPal ld e, HP_BAR_LENGTH_PX - call Function3e12e + call UpdateHPPal call WaitBGMap callba Function2c012 ld a, [wLinkMode] and a jr z, .not_linked - call Function3e8e4 + call LinkBattleSendReceiveAction ld a, [wBattleAction] cp BATTLEACTION_FORFEIT ret z @@ -2459,7 +2460,7 @@ EnemyPartyMonEntrance: ; 3cf78 call SpikesDamage xor a ld [wEnemyMoveStruct + MOVE_ANIM], a - ld [wd0ec], a + ld [wPlayerAction], a inc a ret ; 3cfa4 @@ -2532,48 +2533,48 @@ WinTrainerBattle: ; 3cfa4 ; 3d02b Function3d02b: ; 3d02b - ld a, [wc73d] + ld a, [wAmuletCoin] and a - call nz, Function3d099 - call Function3d0b1 + call nz, .DoubleReward + call .CheckMaxedOutMomMoney push af ld a, $0 - jr nc, .asm_3d044 + jr nc, .okay ld a, [wMomSavingMoney] and $7 cp $3 - jr nz, .asm_3d044 + jr nz, .okay inc a -.asm_3d044 +.okay ld b, a ld c, $4 -.asm_3d047 +.loop ld a, b and a - jr z, .asm_3d052 - call Function3d081 + jr z, .loop2 + call .SendMoneyToMom dec c dec b - jr .asm_3d047 + jr .loop -.asm_3d052 +.loop2 ld a, c and a - jr z, .asm_3d05c - call Function3d08d + jr z, .done + call .AddMoneyToWallet dec c - jr .asm_3d052 + jr .loop2 -.asm_3d05c - call Function3d099 - call Function3d099 +.done + call .DoubleReward + call .DoubleReward pop af jr nc, .KeepItAll ld a, [wMomSavingMoney] and $7 jr z, .KeepItAll - ld hl, SentToMomTexts + ld hl, .SentToMomTexts dec a ld c, a ld b, 0 @@ -2590,26 +2591,26 @@ endr jp StdBattleTextBox ; 3d081 -Function3d081: ; 3d081 +.SendMoneyToMom: ; 3d081 push bc - ld hl, wc688 + ld hl, wBattleReward + 2 ld de, wMomsMoney + 2 - call Function3d0be + call AddBattleMoneyToAccount pop bc ret ; 3d08d -Function3d08d: ; 3d08d +.AddMoneyToWallet: ; 3d08d push bc - ld hl, wc688 + ld hl, wBattleReward + 2 ld de, Money + 2 - call Function3d0be + call AddBattleMoneyToAccount pop bc ret ; 3d099 -Function3d099: ; 3d099 - ld hl, wc688 +.DoubleReward: ; 3d099 + ld hl, wBattleReward + 2 sla [hl] dec hl rl [hl] @@ -2624,14 +2625,14 @@ endr ret ; 3d0ab -SentToMomTexts: ; 3d0ab +.SentToMomTexts: ; 3d0ab dw SentSomeToMomText dw SentHalfToMomText dw SentAllToMomText ; 3d0b1 -Function3d0b1: ; 3d0b1 +.CheckMaxedOutMomMoney: ; 3d0b1 ld hl, wMomsMoney + 2 ld a, [hld] cp 999999 % $100 @@ -2642,7 +2643,7 @@ Function3d0b1: ; 3d0b1 ret ; 3d0be -Function3d0be: ; 3d0be +AddBattleMoneyToAccount: ; 3d0be ld c, $3 and a push de @@ -2653,14 +2654,14 @@ Function3d0be: ; 3d0be callba MobileFn_106008 pop bc pop hl -.asm_3d0ce +.loop ld a, [de] adc [hl] ld [de], a dec de dec hl dec c - jr nz, .asm_3d0ce + jr nz, .loop pop hl ld a, [hld] cp 999999 % $100 @@ -2813,17 +2814,17 @@ HandlePlayerMonFaint: ; 3d14e and a ret nz ld a, $1 - ld [wd0ec], a + ld [wPlayerAction], a call Function3cf4a jp z, WildFled_EnemyFled_LinkBattleCanceled - jp Function3cdca + jp DoubleSwitch ; 3d1aa PlayerMonFaintHappinessMod: ; 3d1aa ld a, [CurBattleMon] ld c, a ld hl, wBattleParticipantsNotFainted - ld b, $0 + ld b, RESET_FLAG predef FlagPredef ld hl, EnemySubStatus3 res SUBSTATUS_IN_LOOP, [hl] @@ -2896,12 +2897,12 @@ ForcePlayerMonChoice: ; 3d227 and a jr z, .skip_link ld a, $1 - ld [wd0ec], a - call Function3e8e4 + ld [wPlayerAction], a + call LinkBattleSendReceiveAction .skip_link xor a - ld [wd0ec], a + ld [wPlayerAction], a call CheckMobileBattleError jr c, .enemy_fainted_mobile_error ld hl, EnemyMonHP @@ -2916,7 +2917,7 @@ ForcePlayerMonChoice: ; 3d227 call ExitMenu call LoadTileMapToTempTileMap call WaitBGMap - call ClearSGB + call GetMemSGBLayout call SetPalettes xor a ld c, a @@ -2935,7 +2936,7 @@ ForcePlayerMonChoice: ; 3d227 call DelayFrame call _LoadHPBar call WriteBackup - call ClearSGB + call GetMemSGBLayout call SetPalettes call SendOutPkmnText call NewBattleMonStatus @@ -2997,10 +2998,10 @@ IsMobileBattle: ; 3d2f1 Function3d2f7: ; 3d2f7 call ClearBGPalettes Function3d2fa: ; switch to fullscreen menu? - callba Function5004f - callba Function50405 + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel callba Function8e85 - callba Function503e0 + callba InitPartyMenuGFX ret ; 3d313 @@ -3146,7 +3147,7 @@ LostBattle: ; 3d38e jr nz, .LostLinkBattle ; Greyscale - ld b, 0 + ld b, SCGB_00 call GetSGBLayout call SetPalettes jr .end @@ -3344,7 +3345,7 @@ EnemySwitch: ; 3d4e1 xor a ld [wBattleParticipantsNotFainted], a ld [wc6fc], a - ld [wd0ec], a + ld [wPlayerAction], a inc a ld [wEnemyIsSwitching], a call LoadTileMapToTempTileMap @@ -3938,9 +3939,9 @@ TryToRunAwayFromBattle: ; 3d8b3 jp .can_escape .no_flee_item - ld a, [wd267] + ld a, [wNumFleeAttempts] inc a - ld [wd267], a + ld [wNumFleeAttempts], a ld a, [hli] ld [hStringCmpString2 + 0], a ld a, [hl] @@ -3981,12 +3982,12 @@ TryToRunAwayFromBattle: ; 3d8b3 ld a, [hQuotient + 1] and a jr nz, .can_escape - ld a, [wd267] + ld a, [wNumFleeAttempts] ld c, a .loop dec c jr z, .cant_escape_2 - ld b, $1e + ld b, 30 ld a, [hQuotient + 2] add b ld [hQuotient + 2], a @@ -4000,7 +4001,7 @@ TryToRunAwayFromBattle: ; 3d8b3 cp b jr nc, .can_escape ld a, $1 - ld [wd0ec], a + ld [wPlayerAction], a ld hl, BattleText_CantEscape2 jr .print_inescapable_text @@ -4014,7 +4015,7 @@ TryToRunAwayFromBattle: ; 3d8b3 .print_inescapable_text call StdBattleTextBox ld a, $1 - ld [wd266], a + ld [wFailedToFlee], a call LoadTileMapToTempTileMap and a ret @@ -4026,12 +4027,12 @@ TryToRunAwayFromBattle: ; 3d8b3 jr z, .fled call LoadTileMapToTempTileMap xor a - ld [wd0ec], a + ld [wPlayerAction], a ld a, $f ld [CurMoveNum], a xor a ld [CurPlayerMove], a - call Function3e8e4 + call LinkBattleSendReceiveAction call Call_LoadTempTileMapToTileMap call CheckMobileBattleError jr c, .mobile @@ -4886,7 +4887,7 @@ DrawPlayerHUD: ; 3df58 UpdatePlayerHPPal: ; 3df98 ld hl, PlayerHPPal - jp Function3e12e + jp UpdateHPPal ; 3df9e CheckDanger: ; 3df9e @@ -4917,7 +4918,7 @@ CheckDanger: ; 3df9e PrintPlayerHUD: ; 3dfbf ld de, BattleMonNick hlcoord 10, 7 - call Function3e138 + call ret_3e138 call PlaceString push bc @@ -5005,7 +5006,7 @@ DrawEnemyHUD: ; 3e043 call GetBaseData ld de, EnemyMonNick hlcoord 1, 0 - call Function3e138 + call ret_3e138 call PlaceString ld h, b ld l, c @@ -5028,12 +5029,12 @@ DrawEnemyHUD: ; 3e043 ld [MonType], a callab GetGender ld a, " " - jr c, .asm_3e09a + jr c, .got_gender ld a, "♂" - jr nz, .asm_3e09a + jr nz, .got_gender ld a, "♀" -.asm_3e09a +.got_gender hlcoord 9, 1 ld [hl], a @@ -5044,16 +5045,16 @@ DrawEnemyHUD: ; 3e043 predef PlaceNonFaintStatus pop hl pop bc - jr nz, .asm_3e0be + jr nz, .skip_level ld a, b cp " " - jr nz, .asm_3e0b5 + jr nz, .print_level dec hl -.asm_3e0b5 +.print_level ld a, [EnemyMonLevel] ld [TempMonLevel], a call PrintLevel -.asm_3e0be +.skip_level ld hl, EnemyMonHP ld a, [hli] @@ -5061,14 +5062,14 @@ DrawEnemyHUD: ; 3e043 ld a, [hld] ld [hMultiplicand + 2], a or [hl] - jr nz, .asm_3e0d1 + jr nz, .not_fainted ld c, a ld e, a ld d, HP_BAR_LENGTH - jp .asm_3e11a + jp .draw_bar -.asm_3e0d1 +.not_fainted xor a ld [hMultiplicand], a ld a, HP_BAR_LENGTH_PX @@ -5081,7 +5082,7 @@ DrawEnemyHUD: ; 3e043 ld [hMultiplier], a ld a, b and a - jr z, .asm_3e105 + jr z, .less_than_256_max ld a, [hMultiplier] srl b rr a @@ -5099,12 +5100,12 @@ DrawEnemyHUD: ; 3e043 ld a, b ld [hProduct + 2], a -.asm_3e105 +.less_than_256_max ld a, [hProduct + 2] ld [hDividend + 0], a ld a, [hProduct + 3] ld [hDividend + 1], a - ld a, $2 + ld a, 2 ld b, a call Divide ld a, [hQuotient + 2] @@ -5113,7 +5114,7 @@ DrawEnemyHUD: ; 3e043 ld d, a ld c, a -.asm_3e11a +.draw_bar xor a ld [wd10a], a hlcoord 2, 2 @@ -5124,11 +5125,11 @@ DrawEnemyHUD: ; 3e043 UpdateEnemyHPPal: ; 3e127 ld hl, EnemyHPPal - call Function3e12e + call UpdateHPPal ret ; 3e12e -Function3e12e: ; 3e12e +UpdateHPPal: ; 3e12e ld b, [hl] call SetHPPal ld a, [hl] @@ -5137,7 +5138,7 @@ Function3e12e: ; 3e12e jp FinishBattleAnim ; 3e138 -Function3e138: ; 3e138 +ret_3e138: ; 3e138 ret ; 3e139 @@ -5192,7 +5193,7 @@ BattleMenu: ; 3e139 BattleMenu_Fight: ; 3e192 xor a - ld [wd267], a + ld [wNumFleeAttempts], a call Call_LoadTempTileMapToTileMap and a ret @@ -5242,13 +5243,13 @@ BattleMenu_Pack: ; 3e1c7 jr z, .contest callba BattlePack - ld a, [wd0ec] + ld a, [wPlayerAction] and a jr z, .didnt_use_item jr .got_item .tutorial - callba Function107bb + callba TutorialPack ld a, POKE_BALL ld [CurItem], a call DoItemEffect @@ -5372,7 +5373,7 @@ Function3e299: call _LoadHPBar call WriteBackup call LoadTileMapToTempTileMap - call ClearSGB + call GetMemSGBLayout call SetPalettes jp BattleMenu ; 3e2f5 @@ -5448,13 +5449,13 @@ Function3e358: ; 3e358 ld a, [CurBattleMon] ld [LastPlayerMon], a ld a, $2 - ld [wd0ec], a + ld [wPlayerAction], a call ClearPalettes call DelayFrame call ClearSprites call _LoadHPBar call WriteBackup - call ClearSGB + call GetMemSGBLayout call SetPalettes ld a, [CurPartyMon] ld [CurBattleMon], a @@ -5468,7 +5469,7 @@ PlayerSwitch: ; 3e3ad and a jr z, .not_linked call LoadStandardMenuDataHeader - call Function3e8e4 + call LinkBattleSendReceiveAction call WriteBackup .not_linked @@ -5585,9 +5586,9 @@ BattleMenu_Run: ; 3e489 ld de, EnemyMonSpeed call TryToRunAwayFromBattle ld a, $0 - ld [wd266], a + ld [wFailedToFlee], a ret c - ld a, [wd0ec] + ld a, [wPlayerAction] and a ret nz jp BattleMenu @@ -5602,33 +5603,33 @@ CheckAmuletCoin: ; 3e4a8 cp HELD_AMULET_COIN ret nz ld a, 1 - ld [wc73d], a + ld [wAmuletCoin], a ret ; 3e4bc MoveSelectionScreen: ; 3e4bc call IsMobileBattle - jr nz, .asm_3e4c8 - callba Function100b9f + jr nz, .not_mobile + callba MobileMoveSelectionScreen ret -.asm_3e4c8 +.not_mobile ld hl, EnemyMonMoves - ld a, [wd235] + ld a, [wMoveSelectionMenuType] dec a - jr z, .asm_3e4e2 + jr z, .got_menu_type dec a - jr z, .asm_3e4dd - call Function3e786 - ret z + jr z, .ether_elixer_menu + call CheckPlayerHasUsableMoves + ret z ; use Struggle ld hl, BattleMonMoves - jr .asm_3e4e2 + jr .got_menu_type -.asm_3e4dd +.ether_elixer_menu ld a, MON_MOVES call GetPartyParamLocation -.asm_3e4e2 +.got_menu_type ld de, wListMoves_MoveIndicesBuffer ld bc, NUM_MOVES call CopyBytes @@ -5638,44 +5639,44 @@ MoveSelectionScreen: ; 3e4bc hlcoord 4, 17 - NUM_MOVES - 1 ld b, 4 ld c, 14 - ld a, [wd235] + ld a, [wMoveSelectionMenuType] cp $2 - jr nz, .asm_3e503 + jr nz, .got_dims hlcoord 4, 17 - NUM_MOVES - 1 - 4 ld b, 4 ld c, 14 -.asm_3e503 +.got_dims call TextBox hlcoord 6, 17 - NUM_MOVES - ld a, [wd235] + ld a, [wMoveSelectionMenuType] cp $2 - jr nz, .asm_3e513 + jr nz, .got_start_coord hlcoord 6, 17 - NUM_MOVES - 4 -.asm_3e513 +.got_start_coord ld a, SCREEN_WIDTH ld [Buffer1], a predef ListMoves ld b, 5 - ld a, [wd235] + ld a, [wMoveSelectionMenuType] cp $2 ld a, 17 - NUM_MOVES - jr nz, .asm_3e52c + jr nz, .got_default_coord ld b, 5 ld a, 17 - NUM_MOVES - 4 -.asm_3e52c +.got_default_coord ld [wcfa1], a ld a, b ld [wcfa2], a - ld a, [wd235] + ld a, [wMoveSelectionMenuType] cp $1 - jr z, .asm_3e53e + jr z, .skip_inc ld a, [CurMoveNum] inc a -.asm_3e53e +.skip_inc ld [MenuSelection2], a ld a, $1 ld [wcfaa], a @@ -5685,19 +5686,19 @@ MoveSelectionScreen: ; 3e4bc ld a, $1 ld [wcfa4], a ld c, $2c - ld a, [wd235] + ld a, [wMoveSelectionMenuType] dec a ld b, $c1 - jr z, .asm_3e569 + jr z, .okay dec a ld b, $c3 - jr z, .asm_3e569 + jr z, .okay ld a, [wLinkMode] and a - jr nz, .asm_3e569 + jr nz, .okay ld b, $c7 -.asm_3e569 +.okay ld a, b ld [wcfa8], a ld a, c @@ -5706,64 +5707,64 @@ MoveSelectionScreen: ; 3e4bc ld [wcfa6], a ld a, $10 ld [wcfa7], a -.asm_3e57a - ld a, [wd235] +.menu_loop + ld a, [wMoveSelectionMenuType] and a - jr z, .asm_3e58e + jr z, .battle_player_moves dec a - jr nz, .asm_3e5a3 + jr nz, .interpret_joypad hlcoord 11, 14 ld de, .string_3e61c call PlaceString - jr .asm_3e5a3 + jr .interpret_joypad -.asm_3e58e +.battle_player_moves call MoveInfoBox - ld a, [wd0e3] + ld a, [wMoveSwapBuffer] and a - jr z, .asm_3e5a3 + jr z, .interpret_joypad hlcoord 5, 13 ld bc, SCREEN_WIDTH dec a call AddNTimes ld [hl], "▷" -.asm_3e5a3 +.interpret_joypad ld a, $1 ld [hBGMapMode], a call Function1bd3 - bit 6, a ; D_UP - jp nz, .asm_3e61d - bit 7, a ; D_DOWN - jp nz, .asm_3e62e - bit 2, a ; B_BUTTON - jp nz, .asm_3e643 - bit 1, a ; A_BUTTON + bit D_UP_F, a + jp nz, .pressed_up + bit D_DOWN_F, a + jp nz, .pressed_down + bit SELECT_F, a + jp nz, .pressed_select + bit B_BUTTON_F, a push af xor a - ld [wd0e3], a + ld [wMoveSwapBuffer], a ld a, [MenuSelection2] dec a ld [MenuSelection2], a ld b, a - ld a, [wd235] + ld a, [wMoveSelectionMenuType] dec a - jr nz, .asm_3e5d0 + jr nz, .not_enemy_moves_process_b pop af ret -.asm_3e5d0 +.not_enemy_moves_process_b dec a ld a, b ld [CurMoveNum], a - jr nz, .asm_3e5d9 + jr nz, .use_move pop af ret -.asm_3e5d9 +.use_move pop af ret nz @@ -5774,16 +5775,16 @@ MoveSelectionScreen: ; 3e4bc add hl, bc ld a, [hl] and $3f - jr z, .asm_3e610 + jr z, .no_pp_left ld a, [PlayerDisableCount] swap a and $f dec a cp c - jr z, .asm_3e60b + jr z, .move_disabled ld a, [wc6e1] and a - jr nz, .asm_3e606 + jr nz, .skip2 ld a, [MenuSelection2] ld hl, BattleMonMoves ld c, a @@ -5791,19 +5792,19 @@ MoveSelectionScreen: ; 3e4bc add hl, bc ld a, [hl] -.asm_3e606 +.skip2 ld [CurPlayerMove], a xor a ret -.asm_3e60b +.move_disabled ld hl, BattleText_TheMoveIsDisabled - jr .asm_3e613 + jr .place_textbox_start_over -.asm_3e610 +.no_pp_left ld hl, BattleText_TheresNoPPLeftForThisMove -.asm_3e613 +.place_textbox_start_over call StdBattleTextBox call Call_LoadTempTileMapToTileMap jp MoveSelectionScreen @@ -5813,17 +5814,17 @@ MoveSelectionScreen: ; 3e4bc db "@" ; 3e61d -.asm_3e61d +.pressed_up ld a, [MenuSelection2] and a - jp nz, .asm_3e57a + jp nz, .menu_loop ld a, [wd0eb] inc a ld [MenuSelection2], a - jp .asm_3e57a + jp .menu_loop ; 3e62e -.asm_3e62e ; 3e62e +.pressed_down ; 3e62e ld a, [MenuSelection2] ld b, a ld a, [wd0eb] @@ -5831,20 +5832,20 @@ rept 2 inc a endr cp b - jp nz, .asm_3e57a + jp nz, .menu_loop ld a, $1 ld [MenuSelection2], a - jp .asm_3e57a + jp .menu_loop ; 3e643 -.asm_3e643 ; 3e643 - ld a, [wd0e3] +.pressed_select ; 3e643 + ld a, [wMoveSwapBuffer] and a - jr z, .asm_3e6bf + jr z, .start_swap ld hl, BattleMonMoves - call .asm_3e6a5 + call .swap_bytes ld hl, BattleMonPP - call .asm_3e6a5 + call .swap_bytes ld hl, PlayerDisableCount ld a, [hl] swap a @@ -5852,20 +5853,20 @@ endr ld b, a ld a, [MenuSelection2] cp b - jr nz, .asm_3e671 + jr nz, .not_swapping_disabled_move ld a, [hl] and $f ld b, a - ld a, [wd0e3] + ld a, [wMoveSwapBuffer] swap a add b ld [hl], a - jr .asm_3e682 + jr .swap_moves_in_party_struct -.asm_3e671 - ld a, [wd0e3] +.not_swapping_disabled_move + ld a, [wMoveSwapBuffer] cp b - jr nz, .asm_3e682 + jr nz, .swap_moves_in_party_struct ld a, [hl] and $f ld b, a @@ -5874,28 +5875,29 @@ endr add b ld [hl], a -.asm_3e682 +.swap_moves_in_party_struct +; Fixes the COOLTRAINER glitch ld a, [PlayerSubStatus5] bit SUBSTATUS_TRANSFORMED, a - jr nz, .asm_3e69e + jr nz, .transformed ld hl, PartyMon1Moves ld a, [CurBattleMon] call GetPartyLocation push hl - call .asm_3e6a5 + call .swap_bytes pop hl ld bc, MON_PP - MON_MOVES add hl, bc - call .asm_3e6a5 + call .swap_bytes -.asm_3e69e +.transformed xor a - ld [wd0e3], a + ld [wMoveSwapBuffer], a jp MoveSelectionScreen -.asm_3e6a5 +.swap_bytes push hl - ld a, [wd0e3] + ld a, [wMoveSwapBuffer] dec a ld c, a ld b, 0 @@ -5915,9 +5917,9 @@ endr ld [de], a ret -.asm_3e6bf +.start_swap ld a, [MenuSelection2] - ld [wd0e3], a + ld [wMoveSwapBuffer], a jp MoveSelectionScreen ; 3e6c8 @@ -5933,21 +5935,21 @@ MoveInfoBox: ; 3e6c8 ld a, [PlayerDisableCount] and a - jr z, .asm_3e6f4 + jr z, .not_disabled swap a and $f ld b, a ld a, [MenuSelection2] cp b - jr nz, .asm_3e6f4 + jr nz, .not_disabled hlcoord 1, 10 ld de, .Disabled call PlaceString jr .done -.asm_3e6f4 +.not_disabled ld hl, MenuSelection2 dec [hl] call SetPlayerTurn @@ -5974,7 +5976,7 @@ MoveInfoBox: ; 3e6c8 ld a, [hl] and $3f ld [StringBuffer1], a - call Function3e75f + call .PrintPP hlcoord 1, 9 ld de, .Type @@ -6000,7 +6002,7 @@ MoveInfoBox: ; 3e6c8 ; 3e75f -Function3e75f: ; 3e75f +.PrintPP: ; 3e75f hlcoord 5, 11 ld a, [wLinkMode] ; What's the point of this check? cp LINK_MOBILE @@ -6023,13 +6025,13 @@ endr ret ; 3e786 -Function3e786: ; 3e786 +CheckPlayerHasUsableMoves: ; 3e786 ld a, STRUGGLE ld [CurPlayerMove], a ld a, [PlayerDisableCount] and a ld hl, BattleMonPP - jr nz, .asm_3e79f + jr nz, .disabled ld a, [hli] or [hl] @@ -6039,29 +6041,29 @@ Function3e786: ; 3e786 or [hl] and $3f ret nz - jr .asm_3e7b4 + jr .force_struggle -.asm_3e79f +.disabled swap a and $f ld b, a ld d, $5 xor a -.asm_3e7a7 +.loop dec d - jr z, .asm_3e7b2 + jr z, .done ld c, [hl] inc hl dec b - jr z, .asm_3e7a7 + jr z, .loop or c - jr .asm_3e7a7 + jr .loop -.asm_3e7b2 +.done and a ret nz -.asm_3e7b4 +.force_struggle ld hl, BattleText_PkmnHasNoMovesLeft call StdBattleTextBox ld c, 60 @@ -6081,9 +6083,9 @@ ParseEnemyAction: ; 3e7c1 jr z, .not_linked call EmptyBattleTextBox call LoadTileMapToTempTileMap - ld a, [wd0ec] + ld a, [wPlayerAction] and a - call z, Function3e8e4 + call z, LinkBattleSendReceiveAction call Call_LoadTempTileMapToTileMap ld a, [wBattleAction] cp BATTLEACTION_E @@ -6247,8 +6249,8 @@ CheckSubstatus_RechargeChargedRampageBideRollout: ; 3e8d1 ret ; 3e8e4 -Function3e8e4: ; 3e8e4 - callba Function100a09 +LinkBattleSendReceiveAction: ; 3e8e4 + callba _LinkBattleSendReceiveAction ret ; 3e8eb @@ -6569,13 +6571,13 @@ LoadEnemyMon: ; 3e8eb xor a ld [hli], a -; Full HP... +; Full HP.. ld a, [EnemyMonMaxHP] ld [hli], a ld a, [EnemyMonMaxHP + 1] ld [hl], a -; ...unless it's a RoamMon +; ..unless it's a RoamMon ld a, [BattleType] cp a, BATTLETYPE_ROAMING jr nz, .Moves @@ -6678,7 +6680,7 @@ endr call CopyBytes .Finish -; Only the first five base stats are copied... +; Only the first five base stats are copied.. ld hl, BaseStats ld de, EnemyMonBaseStats ld b, BaseSpecialDefense - BaseStats @@ -6716,7 +6718,7 @@ endr ld a, [TempEnemyMonSpecies] dec a ld c, a - ld b, 1 ; set + ld b, SET_FLAG ld hl, PokedexSeen predef FlagPredef @@ -7375,7 +7377,7 @@ FinishBattleAnim: ; 3ee27 push bc push de push hl - ld b, $1 + ld b, SCGB_01 call GetSGBLayout call SetPalettes call DelayFrame @@ -7741,7 +7743,7 @@ endr ld hl, EvolvableFlags ld a, [CurPartyMon] ld c, a - ld b, $1 + ld b, SET_FLAG predef FlagPredef pop af ld [CurPartyLevel], a @@ -8450,7 +8452,7 @@ Function3f486: ; 3f486 ld hl, EnemyMonDVs predef GetUnownLetter ld de, VTiles2 - predef Function5108b + predef FrontpicPredef pop af ld [CurPartySpecies], a ret @@ -8510,7 +8512,7 @@ BattleIntro: ; 3f4dd callba ClearBattleRAM call InitEnemy call BackUpVBGMap2 - ld b, $0 + ld b, SCGB_00 call GetSGBLayout ld hl, rLCDC res 6, [hl] @@ -8569,7 +8571,7 @@ BackUpVBGMap2: ; 3f568 ld a, $1 ld [rVBK], a ld de, w6_d000 - ld hl, VBGMap0 ; VBGMap2 + hlbgcoord 0, 0 ; VBGMap2 lb bc, BANK(BackUpVBGMap2), $40 call Request2bpp pop af @@ -8659,7 +8661,7 @@ InitEnemyWildmon: ; 3f607 ld [wdef4], a .skip_unown ld de, VTiles2 - predef Function5108b + predef FrontpicPredef xor a ld [TrainerClass], a ld [hFillBox], a @@ -8745,7 +8747,7 @@ Function3f6a5: ; 3f6a5 call CheckPayDay xor a ld [wd1e9], a - predef Function421e6 + predef EvolveAfterBattle callba Function2ed44 ret ; 3f6d0 @@ -8759,8 +8761,8 @@ CleanUpBattleRAM: ; 3f6d0 ld [AttackMissed], a ld [TempWildMonSpecies], a ld [OtherTrainerClass], a - ld [wd266], a - ld [wd267], a + ld [wFailedToFlee], a + ld [wNumFleeAttempts], a ld [wForcedSwitch], a ld [wd0d8], a ld [wKeyItemsPocketCursor], a @@ -8768,13 +8770,13 @@ CleanUpBattleRAM: ; 3f6d0 ld [wd0d2], a ld [CurMoveNum], a ld [wBallsPocketCursor], a - ld [wd0d6], a - ld [wd0e4], a - ld [wd0e0], a - ld [wd0df], a - ld [wd0e1], a + ld [wLastPocket], a + ld [wMenuScrollPosition], a + ld [wKeyItemsPocketScrollPosition], a + ld [wItemsPocketScrollPosition], a + ld [wBallsPocketScrollPosition], a ld hl, PlayerSubStatus1 - ld b, $18 + ld b, EnemyFuryCutterCount - PlayerSubStatus1 .loop ld [hli], a dec b @@ -8790,7 +8792,7 @@ CheckPayDay: ; 3f71d inc hl or [hl] ret z - ld a, [wc73d] + ld a, [wAmuletCoin] and a jr z, .okay ld hl, wPayDayMoney + 2 @@ -8809,7 +8811,7 @@ endr .okay ld hl, wPayDayMoney + 2 ld de, Money + 2 - call Function3d0be + call AddBattleMoneyToAccount ld hl, BattleText_PlayerPickuedUpPayDayMoney call StdBattleTextBox ld a, [InBattleTowerBattle] @@ -8924,7 +8926,7 @@ IsMobileBattle2: ; 3f830 ; 3f836 -Function3f836: ; 3f836 +DisplayLinkRecord: ; 3f836 ld a, BANK(sLinkBattleStats) call GetSRAMBank @@ -8936,7 +8938,7 @@ Function3f836: ; 3f836 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT call ByteFill call Function3200 - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call SetPalettes ld c, $8 @@ -9438,7 +9440,7 @@ InitBattleDisplay: ; 3fb6c ld [rWY], a call WaitBGMap call HideSprites - ld b, $1 + ld b, SCGB_01 call GetSGBLayout call SetPalettes ld a, $90 @@ -9460,7 +9462,7 @@ InitBattleDisplay: ; 3fb6c call ByteFill ld de, w6_d000 - ld hl, VBGMap0 + hlbgcoord 0, 0 lb bc, BANK(.BlankBGMap), $40 call Request2bpp @@ -9488,7 +9490,7 @@ GetTrainerBackpic: ; 3fbff ; What gender are we? ld a, [wPlayerSpriteSetupFlags] - bit 2, a + bit 2, a ; transformed to male jr nz, .Chris ld a, [PlayerGender] bit 0, a diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index 38a00bb73..506dc9746 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -8966,7 +8966,7 @@ BattleCommand_BatonPass: ; 379c9 hlcoord 1, 0 lb bc, 4, 10 call ClearBox - ld b, 1 + ld b, SCGB_01 call GetSGBLayout call SetPalettes call BatonPass_LinkPlayerSwitch @@ -9028,7 +9028,7 @@ BatonPass_LinkPlayerSwitch: ; 37a67 ld [wd0ec], a call LoadStandardMenuDataHeader - ld hl, Function3e8e4 + ld hl, LinkBattleSendReceiveAction call CallBattleCore call WriteBackup @@ -9044,7 +9044,7 @@ BatonPass_LinkEnemySwitch: ; 37a82 ret z call LoadStandardMenuDataHeader - ld hl, Function3e8e4 + ld hl, LinkBattleSendReceiveAction call CallBattleCore ld a, [OTPartyCount] diff --git a/battle/used_move_text.asm b/battle/used_move_text.asm new file mode 100755 index 000000000..dac38dbef --- /dev/null +++ b/battle/used_move_text.asm @@ -0,0 +1,349 @@ +DisplayUsedMoveText: ; 105db0 +; battle command 03 + ld hl, UsedMoveText + call BattleTextBox + jp WaitBGMap +; 105db9 + + +UsedMoveText: ; 105db9 +; this is a stream of text and asm from 105db9 to 105ef6 + + text_jump _ActorNameText + start_asm + + ld a, [hBattleTurn] + and a + jr nz, .start + + ld a, [wPlayerMoveStruct + MOVE_ANIM] + call UpdateUsedMoves + +.start + ld a, BATTLE_VARS_LAST_MOVE + call GetBattleVarAddr + ld d, h + ld e, l + + ld a, BATTLE_VARS_LAST_COUNTER_MOVE + call GetBattleVarAddr + + ld a, BATTLE_VARS_MOVE_ANIM + call GetBattleVar + ld [wd265], a + + push hl + callba CheckUserIsCharging + pop hl + jr nz, .grammar + + ; update last move + ld a, [wd265] + ld [hl], a + ld [de], a + +.grammar + call GetMoveGrammar +; wd265 now contains MoveGrammar + + +; everything except 'instead' made redundant in localization + + ; check obedience + ld a, [AlreadyDisobeyed] + and a + ld hl, UsedMove2Text + ret nz + + ; check move grammar + ld a, [wd265] + cp $3 + ld hl, UsedMove2Text + ret c + ld hl, UsedMove1Text + ret +; 105e04 + +UsedMove1Text: ; 105e04 + text_jump _UsedMove1Text + start_asm + jr Function105e10 +; 105e0b + +UsedMove2Text: ; 105e0b + text_jump _UsedMove2Text + start_asm +; 105e10 + +Function105e10: ; 105e10 +; check obedience + ld a, [AlreadyDisobeyed] + and a + jr z, GetMoveNameText +; print "instead," + ld hl, UsedInsteadText + ret +; 105e1a + +UsedInsteadText: ; 105e1a + text_jump _UsedInsteadText + start_asm +; 105e1f + +GetMoveNameText: ; 105e1f + ld hl, MoveNameText + ret +; 105e23 + +MoveNameText: ; 105e23 + text_jump _MoveNameText + start_asm +; 105e28 + +GetUsedMoveTextEnder: ; 105e28 +; get start address + ld hl, .endusedmovetexts + +; get move id + ld a, [wd265] + +; 2-byte pointer + add a + +; seek + push bc + ld b, $0 + ld c, a + add hl, bc + pop bc + +; get pointer to usedmovetext ender + ld a, [hli] + ld h, [hl] + ld l, a + ret +; 105e39 + +.endusedmovetexts ; 105e39 + dw EndUsedMove1Text + dw EndUsedMove2Text + dw EndUsedMove3Text + dw EndUsedMove4Text + dw EndUsedMove5Text +; 105e43 + +EndUsedMove1Text: ; 105e43 + text_jump _EndUsedMove1Text + db "@" +; 105e48 +EndUsedMove2Text: ; 105e48 + text_jump _EndUsedMove2Text + db "@" +; 105e4d +EndUsedMove3Text: ; 105e4d + text_jump _EndUsedMove3Text + db "@" +; 105e52 +EndUsedMove4Text: ; 105e52 + text_jump _EndUsedMove4Text + db "@" +; 105e57 +EndUsedMove5Text: ; 105e57 + text_jump _EndUsedMove5Text + db "@" +; 105e5c + + +GetMoveGrammar: ; 105e5c +; store move grammar type in wd265 + + push bc +; c = move id + ld a, [wd265] + ld c, a + ld b, $0 + +; read grammar table + ld hl, MoveGrammar +.loop + ld a, [hli] +; end of table? + cp $ff + jr z, .end +; match? + cp c + jr z, .end +; advance grammar type at $00 + and a + jr nz, .loop +; next grammar type + inc b + jr .loop + +.end +; wd265 now contains move grammar + ld a, b + ld [wd265], a + +; we're done + pop bc + ret +; 105e7a + +MoveGrammar: ; 105e7a +; made redundant in localization +; each move is given an identifier for what usedmovetext to use (0-4): + +; 0 + db SWORDS_DANCE + db GROWTH + db STRENGTH + db HARDEN + db MINIMIZE + db SMOKESCREEN + db WITHDRAW + db DEFENSE_CURL + db EGG_BOMB + db SMOG + db BONE_CLUB + db FLASH + db SPLASH + db ACID_ARMOR + db BONEMERANG + db REST + db SHARPEN + db SUBSTITUTE + db MIND_READER + db SNORE + db PROTECT + db SPIKES + db ENDURE + db ROLLOUT + db SWAGGER + db SLEEP_TALK + db HIDDEN_POWER + db PSYCH_UP + db EXTREMESPEED + db 0 ; end set + +; 1 + db RECOVER + db TELEPORT + db BIDE + db SELFDESTRUCT + db AMNESIA + db FLAIL + db 0 ; end set + +; 2 + db MEDITATE + db AGILITY + db MIMIC + db DOUBLE_TEAM + db BARRAGE + db TRANSFORM + db STRUGGLE + db SCARY_FACE + db 0 ; end set + +; 3 + db POUND + db SCRATCH + db VICEGRIP + db WING_ATTACK + db FLY + db BIND + db SLAM + db HORN_ATTACK + db WRAP + db THRASH + db TAIL_WHIP + db LEER + db BITE + db GROWL + db ROAR + db SING + db PECK + db ABSORB + db STRING_SHOT + db EARTHQUAKE + db FISSURE + db DIG + db TOXIC + db SCREECH + db METRONOME + db LICK + db CLAMP + db CONSTRICT + db POISON_GAS + db BUBBLE + db SLASH + db SPIDER_WEB + db NIGHTMARE + db CURSE + db FORESIGHT + db CHARM + db ATTRACT + db ROCK_SMASH + db 0 ; end set + +; all other moves = 4 + db $ff ; end +; 105ed0 + + +UpdateUsedMoves: ; 105ed0 +; append move a to PlayerUsedMoves unless it has already been used + + push bc +; start of list + ld hl, PlayerUsedMoves +; get move id + ld b, a +; next count + ld c, NUM_MOVES + +.loop +; get move from the list + ld a, [hli] +; not used yet? + and a + jr z, .add +; already used? + cp b + jr z, .quit +; next byte + dec c + jr nz, .loop + +; if the list is full and the move hasn't already been used +; shift the list back one byte, deleting the first move used +; this can occur with struggle or a new learned move + ld hl, PlayerUsedMoves + 1 +; 1 = 2 + ld a, [hld] + ld [hli], a +; 2 = 3 + inc hl + ld a, [hld] + ld [hli], a +; 3 = 4 + inc hl + ld a, [hld] + ld [hl], a +; 4 = new move + ld a, b + ld [PlayerUsedMoves + 3], a + jr .quit + +.add +; go back to the byte we just inced from + dec hl +; add the new move + ld [hl], b + +.quit +; list updated + pop bc + ret +; 105ef6 |