diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2017-12-18 16:58:14 +0100 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2017-12-18 16:58:14 +0100 |
commit | cb229f56e8951e3f9efc35516447a54e18e8fef0 (patch) | |
tree | 656599caae716c6cc8e81121f2b1cd061927b99e | |
parent | c3abe2863feb8ebb21921c40d3c685a27a4135c4 (diff) | |
parent | 6a674e1e83db097d7a31a3786d12e42987f09f70 (diff) |
fix pokeblock conflicts
174 files changed, 5471 insertions, 7168 deletions
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 973e87fbb..fd372f81b 100755 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -13791,7 +13791,7 @@ sub_8195FF8: @ 8195FF8 push {r4-r6,lr} adds r5, r0, 0 movs r4, 0 - ldr r6, =gUnknown_085500A4 + ldr r6, =gRematchTable _08196000: movs r1, 0xAE lsls r1, 1 @@ -13887,7 +13887,7 @@ task_prev_quest: @ 81960A8 cmp r0, 0 bne _081960C2 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects bl sub_808B864 bl sub_808BCF4 _081960C2: @@ -14659,7 +14659,7 @@ sub_8196710: @ 8196710 thumb_func_start sub_819672C sub_819672C: @ 819672C push {lr} - ldr r1, =gUnknown_085500A4 + ldr r1, =gRematchTable lsls r0, 4 adds r0, r1 ldrh r2, [r0, 0xA] @@ -14677,10 +14677,10 @@ sub_8196748: @ 8196748 push {r4-r6,lr} movs r5, 0 movs r6, 0 - ldr r4, =gUnknown_085500A4 + ldr r4, =gRematchTable _08196750: ldrh r0, [r4] - bl HasTrainerAlreadyBeenFought + bl HasTrainerBeenFought lsls r0, 24 cmp r0, 0 beq _0819675E @@ -14703,10 +14703,10 @@ sub_8196774: @ 8196774 adds r7, r0, 0 movs r4, 0 movs r6, 0 - ldr r5, =gUnknown_085500A4 + ldr r5, =gRematchTable _0819677E: ldrh r0, [r5] - bl HasTrainerAlreadyBeenFought + bl HasTrainerBeenFought lsls r0, 24 cmp r0, 0 beq _0819679A @@ -14766,7 +14766,7 @@ _081967EC: adds r4, r0, 0 movs r7, 0x1 adds r0, r5, 0 - bl sub_80B1E94 + bl UpdateRematchIfDefeated b _08196832 _0819680A: bl Random @@ -15270,7 +15270,7 @@ sub_8196B98: @ 8196B98 adds r7, r0, 0 cmp r1, 0xFF beq _08196C5C - ldr r1, =gUnknown_085500A4 + ldr r1, =gRematchTable lsls r0, r2, 4 adds r2, r0, r1 ldrh r4, [r2, 0xA] @@ -15373,7 +15373,7 @@ sub_8196C70: @ 8196C70 lsls r1, 2 adds r1, r2 ldrh r0, [r1] - bl sub_80B2250 + bl GetLastBeatenRematchTrainerId lsls r0, 16 lsrs r0, 16 ldr r5, =gTrainers diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index d90fa94f0..ead4750e1 100755 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -12380,7 +12380,7 @@ _081A0C8E: sub_81A0C9C: @ 81A0C9C push {lr} bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects bl sub_808B864 bl sub_808BCF4 movs r0, 0 diff --git a/asm/battle_setup.s b/asm/battle_setup.s deleted file mode 100644 index f77e7a5d0..000000000 --- a/asm/battle_setup.s +++ /dev/null @@ -1,3550 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start task01_battle_start -task01_battle_start: @ 80B05F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080B0614 - cmp r0, 0x1 - beq _080B062E - b _080B0652 - .pool -_080B0614: - bl c3_80A0DD8_is_running - cmp r0, 0 - bne _080B0652 - ldrb r0, [r4, 0x2] - bl sub_8145EF4 - bl sub_81BE72C - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080B0652 -_080B062E: - bl IsBattleTransitionDone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B0652 - bl overworld_free_bg_tilemaps - ldr r0, =CB2_InitBattle - bl SetMainCallback2 - bl prev_quest_postbuffer_cursor_backup_reset - bl overworld_poison_timer_set - adds r0, r5, 0 - bl DestroyTask -_080B0652: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end task01_battle_start - - thumb_func_start task_add_01_battle_start -task_add_01_battle_start: @ 80B065C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r0, =task01_battle_start - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - adds r0, r5, 0 - bl PlayMapChosenOrBattleBGM - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end task_add_01_battle_start - - thumb_func_start BattleSetup_StartWildBattle -BattleSetup_StartWildBattle: @ 80B0698 - push {lr} - bl GetSafariZoneFlag - cmp r0, 0 - beq _080B06A8 - bl sub_80B077C - b _080B06AC -_080B06A8: - bl sub_80B06BC -_080B06AC: - pop {r0} - bx r0 - thumb_func_end BattleSetup_StartWildBattle - - thumb_func_start BattleSetup_StartBattlePikeWildBattle -BattleSetup_StartBattlePikeWildBattle: @ 80B06B0 - push {lr} - bl sub_80B07B4 - pop {r0} - bx r0 - thumb_func_end BattleSetup_StartBattlePikeWildBattle - - thumb_func_start sub_80B06BC -sub_80B06BC: @ 80B06BC - push {r4,lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_808BCF4 - ldr r1, =gMain - ldr r0, =sub_80B0AF8 - str r0, [r1, 0x8] - ldr r4, =gBattleTypeFlags - movs r0, 0 - str r0, [r4] - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B06F2 - ldr r0, =0x0000400e - movs r1, 0 - bl VarSet - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 14 - orrs r0, r1 - str r0, [r4] -_080B06F2: - bl sub_80B0EC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B06BC - - thumb_func_start BattleSetup_StartRoamerBattle -BattleSetup_StartRoamerBattle: @ 80B072C - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_808BCF4 - ldr r1, =gMain - ldr r0, =sub_80B0AF8 - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 3 - str r0, [r1] - bl sub_80B0EC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r0} - bx r0 - .pool - thumb_func_end BattleSetup_StartRoamerBattle - - thumb_func_start sub_80B077C -sub_80B077C: @ 80B077C - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_808BCF4 - ldr r1, =gMain - ldr r0, =sub_80FC190 - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0x80 - str r0, [r1] - bl sub_80B0EC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B077C - - thumb_func_start sub_80B07B4 -sub_80B07B4: @ 80B07B4 - push {lr} - bl ScriptContext2_Enable - bl player_bitmagic - bl sub_808BCF4 - ldr r1, =gMain - ldr r0, =sub_80B0AF8 - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 13 - str r0, [r1] - bl sub_80B0EC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B07B4 - - thumb_func_start task_add_01_battle_start_with_music_and_stats -task_add_01_battle_start_with_music_and_stats: @ 80B0804 - push {lr} - bl reads_trainer_data_byte1_byte0x18 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x9 - bl IncrementGameStat - bl sub_80B1234 - pop {r0} - bx r0 - thumb_func_end task_add_01_battle_start_with_music_and_stats - - thumb_func_start sub_80B0828 -sub_80B0828: @ 80B0828 - push {lr} - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B0846 - movs r0, 0xA - bl sub_80B100C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - b _080B0856 -_080B0846: - movs r0, 0xB - bl sub_80B100C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start -_080B0856: - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x9 - bl IncrementGameStat - bl sub_80B1234 - pop {r0} - bx r0 - thumb_func_end sub_80B0828 - - thumb_func_start sub_80B086C -sub_80B086C: @ 80B086C - push {lr} - ldr r0, =gEnemyParty - movs r1, 0xC4 - lsls r1, 1 - movs r2, 0x5 - bl CreateMaleMon - bl ScriptContext2_Enable - ldr r1, =gMain - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 2 - str r0, [r1] - movs r0, 0x8 - movs r1, 0 - bl task_add_01_battle_start - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B086C - - thumb_func_start BattleSetup_StartScriptedWildBattle -BattleSetup_StartScriptedWildBattle: @ 80B08A8 - push {lr} - bl ScriptContext2_Enable - ldr r1, =gMain - ldr r0, =sub_80B0B6C - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0 - str r0, [r1] - bl sub_80B0EC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r0} - bx r0 - .pool - thumb_func_end BattleSetup_StartScriptedWildBattle - - thumb_func_start sub_80B08EC -sub_80B08EC: @ 80B08EC - push {lr} - bl ScriptContext2_Enable - ldr r1, =gMain - ldr r0, =sub_80B0B6C - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 6 - str r0, [r1] - bl sub_80B0EC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl task_add_01_battle_start - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B08EC - - thumb_func_start sub_80B0934 -sub_80B0934: @ 80B0934 - push {r4,lr} - bl ScriptContext2_Enable - ldr r1, =gMain - ldr r0, =sub_80B0B6C - str r0, [r1, 0x8] - ldr r4, =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 6 - str r0, [r4] - ldr r0, =gEnemyParty - movs r1, 0xB - movs r2, 0 - bl GetMonData - adds r1, r0, 0 - movs r0, 0xCA - lsls r0, 1 - cmp r1, r0 - beq _080B09B8 - cmp r1, r0 - bhi _080B0988 - cmp r1, 0x97 - beq _080B09F4 - cmp r1, 0x97 - bcc _080B099A - cmp r1, 0xFA - bhi _080B099A - cmp r1, 0xF9 - bcc _080B099A - ldr r1, =0x00000229 - b _080B09E6 - .pool -_080B0988: - movs r0, 0xCB - lsls r0, 1 - cmp r1, r0 - beq _080B09CE - cmp r1, r0 - bcc _080B099A - adds r0, 0x4 - cmp r1, r0 - beq _080B09E4 -_080B099A: - ldr r2, =gBattleTypeFlags - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 21 - orrs r0, r1 - str r0, [r2] - movs r1, 0xF0 - lsls r1, 1 - movs r0, 0x17 - bl task_add_01_battle_start - b _080B09FE - .pool -_080B09B8: - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 22 - orrs r0, r1 - str r0, [r4] - movs r1, 0xF0 - lsls r1, 1 - movs r0, 0x16 - bl task_add_01_battle_start - b _080B09FE -_080B09CE: - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 23 - orrs r0, r1 - str r0, [r4] - movs r1, 0xEB - lsls r1, 1 - movs r0, 0x18 - bl task_add_01_battle_start - b _080B09FE -_080B09E4: - ldr r1, =0x00000227 -_080B09E6: - movs r0, 0 - bl task_add_01_battle_start - b _080B09FE - .pool -_080B09F4: - movs r1, 0xEC - lsls r1, 1 - movs r0, 0xA - bl task_add_01_battle_start -_080B09FE: - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B0934 - - thumb_func_start sub_80B0A18 -sub_80B0A18: @ 80B0A18 - push {lr} - bl ScriptContext2_Enable - ldr r1, =gMain - ldr r0, =sub_80B0B6C - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0xC0 - lsls r0, 6 - str r0, [r1] - ldr r0, =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - bne _080B0A50 - movs r1, 0xF0 - lsls r1, 1 - movs r0, 0xB - bl task_add_01_battle_start - b _080B0A5A - .pool -_080B0A50: - movs r1, 0xF0 - lsls r1, 1 - movs r0, 0x6 - bl task_add_01_battle_start -_080B0A5A: - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r0} - bx r0 - thumb_func_end sub_80B0A18 - - thumb_func_start sub_80B0A74 -sub_80B0A74: @ 80B0A74 - push {lr} - bl ScriptContext2_Enable - ldr r1, =gMain - ldr r0, =sub_80B0B6C - str r0, [r1, 0x8] - ldr r1, =gBattleTypeFlags - movs r0, 0xC0 - lsls r0, 7 - str r0, [r1] - ldr r0, =gEnemyParty - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - adds r2, r1, 0 - movs r0, 0xC9 - lsls r0, 1 - cmp r1, r0 - beq _080B0ACC - cmp r1, r0 - bgt _080B0ABC - subs r0, 0x1 - cmp r1, r0 - beq _080B0AC8 - b _080B0AD4 - .pool -_080B0ABC: - ldr r0, =0x00000193 - cmp r2, r0 - beq _080B0AD0 - b _080B0AD4 - .pool -_080B0AC8: - movs r0, 0x15 - b _080B0AD6 -_080B0ACC: - movs r0, 0x13 - b _080B0AD6 -_080B0AD0: - movs r0, 0x14 - b _080B0AD6 -_080B0AD4: - movs r0, 0xA -_080B0AD6: - ldr r1, =0x000001df - bl task_add_01_battle_start - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B0A74 - - thumb_func_start sub_80B0AF8 -sub_80B0AF8: @ 80B0AF8 - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - movs r1, 0xA0 - lsls r1, 19 - ldr r2, =0x01000100 - mov r0, sp - bl CpuSet - movs r0, 0 - movs r1, 0x80 - bl ResetOamRange - ldr r0, =gBattleOutcome - ldrb r0, [r0] - bl battle_exit_is_player_defeat - cmp r0, 0x1 - bne _080B0B4C - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080B0B4C - bl InBattlePike - lsls r0, 24 - cmp r0, 0 - bne _080B0B4C - ldr r0, =c2_whiteout - bl SetMainCallback2 - b _080B0B58 - .pool -_080B0B4C: - ldr r0, =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - ldr r1, =gFieldCallback - ldr r0, =sub_80AF6F0 - str r0, [r1] -_080B0B58: - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B0AF8 - - thumb_func_start sub_80B0B6C -sub_80B0B6C: @ 80B0B6C - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - movs r1, 0xA0 - lsls r1, 19 - ldr r2, =0x01000100 - mov r0, sp - bl CpuSet - movs r0, 0 - movs r1, 0x80 - bl ResetOamRange - ldr r0, =gBattleOutcome - ldrb r0, [r0] - bl battle_exit_is_player_defeat - cmp r0, 0x1 - bne _080B0BC0 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B0BB4 - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - b _080B0BC6 - .pool -_080B0BB4: - ldr r0, =c2_whiteout - bl SetMainCallback2 - b _080B0BC6 - .pool -_080B0BC0: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080B0BC6: - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B0B6C - - thumb_func_start BattleSetup_GetTerrainId -BattleSetup_GetTerrainId: @ 80B0BD0 - push {r4,r5,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsTallGrass - lsls r0, 24 - cmp r0, 0 - beq _080B0C06 - movs r0, 0 - b _080B0D1A -_080B0C06: - adds r0, r4, 0 - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _080B0C16 - movs r0, 0x1 - b _080B0D1A -_080B0C16: - adds r0, r4, 0 - bl MetatileBehavior_IsSandOrDeepSand - lsls r0, 24 - cmp r0, 0 - bne _080B0D18 - ldr r0, =gMapHeader - ldrb r0, [r0, 0x17] - subs r0, 0x1 - cmp r0, 0x8 - bhi _080B0C9C - lsls r0, 2 - ldr r1, =_080B0C40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080B0C40: - .4byte _080B0C9C - .4byte _080B0C9C - .4byte _080B0C9C - .4byte _080B0C64 - .4byte _080B0C88 - .4byte _080B0C8C - .4byte _080B0C9C - .4byte _080B0C74 - .4byte _080B0C74 -_080B0C64: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsMB_0B - lsls r0, 24 - cmp r0, 0 - beq _080B0C78 -_080B0C74: - movs r0, 0x8 - b _080B0D1A -_080B0C78: - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _080B0CE0 - movs r0, 0x7 - b _080B0D1A -_080B0C88: - movs r0, 0x3 - b _080B0D1A -_080B0C8C: - lsls r0, r5, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _080B0CF2 - b _080B0D10 -_080B0C9C: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsDeepOrOceanWater - lsls r0, 24 - cmp r0, 0 - bne _080B0CF2 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _080B0CE0 - adds r0, r4, 0 - bl MetatileBehavior_IsMountain - lsls r0, 24 - cmp r0, 0 - beq _080B0CC8 - movs r0, 0x6 - b _080B0D1A -_080B0CC8: - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _080B0CF6 - adds r0, r4, 0 - bl MetatileBehavior_GetBridgeSth - lsls r0, 24 - cmp r0, 0 - beq _080B0CE4 -_080B0CE0: - movs r0, 0x5 - b _080B0D1A -_080B0CE4: - adds r0, r4, 0 - bl MetatileBehavior_IsBridge - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B0CF6 -_080B0CF2: - movs r0, 0x4 - b _080B0D1A -_080B0CF6: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - movs r0, 0xE0 - lsls r0, 5 - cmp r1, r0 - beq _080B0D18 - bl sav1_get_weather_probably - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - beq _080B0D18 -_080B0D10: - movs r0, 0x9 - b _080B0D1A - .pool -_080B0D18: - movs r0, 0x2 -_080B0D1A: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end BattleSetup_GetTerrainId - - thumb_func_start sub_80B0D24 -sub_80B0D24: @ 80B0D24 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r4, r0, 16 - bl sav1_get_flash_used_on_map - lsls r0, 24 - cmp r0, 0 - beq _080B0D54 - movs r0, 0x2 - b _080B0D7E -_080B0D54: - lsls r0, r4, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _080B0D7C - ldr r0, =gMapHeader - ldrb r0, [r0, 0x17] - cmp r0, 0x4 - beq _080B0D78 - cmp r0, 0x5 - beq _080B0D7C - movs r0, 0 - b _080B0D7E - .pool -_080B0D78: - movs r0, 0x1 - b _080B0D7E -_080B0D7C: - movs r0, 0x3 -_080B0D7E: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80B0D24 - - thumb_func_start sub_80B0D88 -sub_80B0D88: @ 80B0D88 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - movs r6, 0 -_080B0D92: - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - adds r1, r0, 0 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _080B0DD6 - cmp r1, 0 - beq _080B0DD6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080B0DD6 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - adds r0, r7, r0 - lsls r0, 24 - lsrs r7, r0, 24 - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _080B0DDC -_080B0DD6: - adds r6, 0x1 - cmp r6, 0x5 - ble _080B0D92 -_080B0DDC: - adds r0, r7, 0 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B0D88 - - thumb_func_start reads_trainer_data_byte0 -reads_trainer_data_byte0: @ 80B0DE8 - push {r4,r5,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r5, =gTrainers - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r5 - adds r0, r2, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r4 - bcs _080B0E08 - adds r4, r0, 0 -_080B0E08: - movs r3, 0 - ldrb r0, [r2] - cmp r0, 0x1 - beq _080B0E50 - cmp r0, 0x1 - bgt _080B0E20 - cmp r0, 0 - beq _080B0E2A - b _080B0EC0 - .pool -_080B0E20: - cmp r0, 0x2 - beq _080B0E76 - cmp r0, 0x3 - beq _080B0E9C - b _080B0EC0 -_080B0E2A: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _080B0EC0 -_080B0E38: - lsls r0, r2, 3 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _080B0E38 - b _080B0EC0 -_080B0E50: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _080B0EC0 -_080B0E5E: - lsls r0, r2, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _080B0E5E - b _080B0EC0 -_080B0E76: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _080B0EC0 -_080B0E84: - lsls r0, r2, 3 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _080B0E84 - b _080B0EC0 -_080B0E9C: - adds r0, r5, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r1, [r0] - movs r2, 0 - cmp r3, r4 - bcs _080B0EC0 -_080B0EAA: - lsls r0, r2, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - adds r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bcc _080B0EAA -_080B0EC0: - adds r0, r3, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end reads_trainer_data_byte0 - - thumb_func_start sub_80B0EC8 -sub_80B0EC8: @ 80B0EC8 - push {r4-r6,lr} - bl sub_80B0D24 - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - ldr r0, =gEnemyParty - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl sub_80B0D88 - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080B0F10 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B0F04 - movs r0, 0 - b _080B0F2E - .pool -_080B0F04: - ldr r0, =gUnknown_0854FE88 - lsls r1, r5, 1 - b _080B0F20 - .pool -_080B0F10: - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080B0F2C - ldr r0, =gUnknown_0854FE88 - lsls r1, r6, 1 - adds r0, 0x1 -_080B0F20: - adds r1, r0 - ldrb r0, [r1] - b _080B0F2E - .pool -_080B0F2C: - movs r0, 0xA -_080B0F2E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80B0EC8 - - thumb_func_start reads_trainer_data_byte1_byte0x18 -reads_trainer_data_byte1_byte0x18: @ 80B0F34 - push {r4-r6,lr} - ldr r4, =gTrainerBattleOpponent_A - ldrh r1, [r4] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _080B0F98 - ldr r1, =gTrainers - ldrh r2, [r4] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x1] - cmp r1, 0x1F - bne _080B0F94 - adds r1, r2, 0 - ldr r0, =0x00000105 - cmp r1, r0 - bne _080B0F6C - movs r0, 0xC - b _080B1000 - .pool -_080B0F6C: - movs r0, 0x83 - lsls r0, 1 - cmp r1, r0 - bne _080B0F78 - movs r0, 0xD - b _080B1000 -_080B0F78: - ldr r0, =0x00000107 - cmp r1, r0 - bne _080B0F88 - movs r0, 0xE - b _080B1000 - .pool -_080B0F88: - movs r0, 0x84 - lsls r0, 1 - cmp r1, r0 - bne _080B0F98 - movs r0, 0xF - b _080B1000 -_080B0F94: - cmp r1, 0x26 - bne _080B0F9C -_080B0F98: - movs r0, 0x10 - b _080B1000 -_080B0F9C: - cmp r1, 0x9 - beq _080B0FA8 - cmp r1, 0x35 - beq _080B0FA8 - cmp r1, 0x31 - bne _080B0FAC -_080B0FA8: - movs r0, 0x12 - b _080B1000 -_080B0FAC: - cmp r1, 0x3 - beq _080B0FB8 - cmp r1, 0xD - beq _080B0FB8 - cmp r1, 0xB - bne _080B0FBC -_080B0FB8: - movs r0, 0x11 - b _080B1000 -_080B0FBC: - ldrb r0, [r0, 0x18] - movs r5, 0x1 - cmp r0, 0x1 - bne _080B0FC6 - movs r5, 0x2 -_080B0FC6: - bl sub_80B0D24 - lsls r0, 24 - lsrs r6, r0, 24 - ldrh r0, [r4] - adds r1, r5, 0 - bl reads_trainer_data_byte0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_80B0D88 - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _080B0FF8 - ldr r0, =gUnknown_0854FE90 - lsls r1, r6, 1 - adds r0, 0x1 - b _080B0FFC - .pool -_080B0FF8: - ldr r0, =gUnknown_0854FE90 - lsls r1, r6, 1 -_080B0FFC: - adds r1, r0 - ldrb r0, [r1] -_080B1000: - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end reads_trainer_data_byte1_byte0x18 - - thumb_func_start sub_80B100C -sub_80B100C: @ 80B100C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gEnemyParty - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl sub_80B0D88 - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcs _080B1090 - cmp r5, 0xA - beq _080B1048 - cmp r5, 0xA - bgt _080B1040 - cmp r5, 0x3 - beq _080B105C - b _080B106C - .pool -_080B1040: - cmp r5, 0xD - bgt _080B106C - movs r0, 0x4 - b _080B1120 -_080B1048: - ldr r4, =gUnknown_0854FEA4 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - b _080B1114 - .pool -_080B105C: - ldr r4, =gUnknown_0854FEA7 - bl Random - ands r5, r0 - lsls r0, r5, 16 - b _080B111A - .pool -_080B106C: - ldr r0, =0x000040ce - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3 - beq _080B10EC - ldr r4, =gUnknown_0854FE98 - bl Random - lsls r0, 16 - lsrs r0, 16 - b _080B1112 - .pool -_080B1090: - cmp r5, 0xA - beq _080B10A6 - cmp r5, 0xA - bgt _080B109E - cmp r5, 0x3 - beq _080B10B8 - b _080B10C8 -_080B109E: - cmp r5, 0xD - bgt _080B10C8 - movs r0, 0x3 - b _080B1120 -_080B10A6: - ldr r4, =gUnknown_0854FEA4 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - b _080B1114 - .pool -_080B10B8: - ldr r4, =gUnknown_0854FEA7 - bl Random - ands r5, r0 - lsls r0, r5, 16 - b _080B111A - .pool -_080B10C8: - ldr r0, =0x000040ce - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3 - beq _080B10EC - ldr r4, =gUnknown_0854FE98 - bl Random - lsls r0, 16 - lsrs r0, 16 - b _080B1112 - .pool -_080B10EC: - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r2, =0x00000cb2 - adds r0, r1, r2 - ldrh r0, [r0] - lsls r2, r0, 2 - ldr r3, =0x00000cb4 - adds r1, r3 - adds r2, r1, r2 - lsls r0, 1 - adds r0, 0x1 - lsls r0, 1 - adds r1, r0 - ldrh r0, [r1] - ldrh r2, [r2] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gUnknown_0854FE98 -_080B1112: - movs r1, 0xC -_080B1114: - bl __umodsi3 - lsls r0, 16 -_080B111A: - lsrs r0, 16 - adds r0, r4 - ldrb r0, [r0] -_080B1120: - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B100C - - thumb_func_start sub_80B1138 -sub_80B1138: @ 80B1138 - push {lr} - ldr r0, =CB2_ChooseStarter - bl SetMainCallback2 - ldr r1, =gMain - ldr r0, =sub_80B1158 - str r0, [r1, 0x8] - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B1138 - - thumb_func_start sub_80B1158 -sub_80B1158: @ 80B1158 - push {lr} - sub sp, 0x8 - ldr r0, =0x00004023 - bl GetVarPointer - ldr r2, =gSpecialVar_Result - ldrh r1, [r2] - strh r1, [r0] - ldrh r0, [r2] - bl GetStarterPokemon - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r1, 0x5 - movs r2, 0 - movs r3, 0 - bl ScriptGiveMon - bl ResetTasks - bl PlayBattleBGM - ldr r0, =sub_80B11A8 - bl SetMainCallback2 - movs r0, 0 - bl sub_8145F10 - add sp, 0x8 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B1158 - - thumb_func_start sub_80B11A8 -sub_80B11A8: @ 80B11A8 - push {lr} - bl UpdatePaletteFade - bl RunTasks - bl IsBattleTransitionDone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B11F0 - ldr r1, =gBattleTypeFlags - movs r0, 0x10 - str r0, [r1] - ldr r1, =gMain - ldr r0, =sub_80B1204 - str r0, [r1, 0x8] - bl FreeAllWindowBuffers - ldr r0, =CB2_InitBattle - bl SetMainCallback2 - bl prev_quest_postbuffer_cursor_backup_reset - bl overworld_poison_timer_set - movs r0, 0x7 - bl IncrementGameStat - movs r0, 0x8 - bl IncrementGameStat - bl sub_80EECC8 - bl sub_80B1218 -_080B11F0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B11A8 - - thumb_func_start sub_80B1204 -sub_80B1204: @ 80B1204 - push {lr} - bl sav1_reset_battle_music_maybe - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B1204 - - thumb_func_start sub_80B1218 -sub_80B1218: @ 80B1218 - push {lr} - movs r0, 0x8 - bl GetGameStat - movs r1, 0x3C - bl __umodsi3 - cmp r0, 0 - bne _080B122E - bl sub_81DA57C -_080B122E: - pop {r0} - bx r0 - thumb_func_end sub_80B1218 - - thumb_func_start sub_80B1234 -sub_80B1234: @ 80B1234 - push {lr} - movs r0, 0x9 - bl GetGameStat - movs r1, 0x14 - bl __umodsi3 - cmp r0, 0 - bne _080B124A - bl sub_81DA57C -_080B124A: - pop {r0} - bx r0 - thumb_func_end sub_80B1234 - - thumb_func_start TrainerBattleLoadArg32 -@ u32 TrainerBattleLoadArg32(u8 *arg) -TrainerBattleLoadArg32: @ 80B1250 - adds r2, r0, 0 - ldrb r0, [r2] - ldrb r1, [r2, 0x1] - lsls r1, 8 - orrs r0, r1 - ldrb r1, [r2, 0x2] - lsls r1, 16 - orrs r0, r1 - ldrb r1, [r2, 0x3] - lsls r1, 24 - orrs r0, r1 - bx lr - thumb_func_end TrainerBattleLoadArg32 - - thumb_func_start TrainerBattleLoadArg16 -@ u16 TrainerBattleLoadArg16(u8 *arg) -TrainerBattleLoadArg16: @ 80B1268 - adds r1, r0, 0 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - lsls r1, 8 - orrs r0, r1 - bx lr - thumb_func_end TrainerBattleLoadArg16 - - thumb_func_start TrainerBattleLoadArg8 -@ u8 TrainerBattleLoadArg8(u8 *arg) -TrainerBattleLoadArg8: @ 80B1274 - ldrb r0, [r0] - bx lr - thumb_func_end TrainerBattleLoadArg8 - - thumb_func_start trainerflag_opponent -trainerflag_opponent: @ 80B1278 - ldr r1, =gTrainerBattleOpponent_A - movs r2, 0xA0 - lsls r2, 3 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bx lr - .pool - thumb_func_end trainerflag_opponent - - thumb_func_start sub_80B1290 -sub_80B1290: @ 80B1290 - ldr r1, =gTrainerBattleOpponent_B - movs r2, 0xA0 - lsls r2, 3 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bx lr - .pool - thumb_func_end sub_80B1290 - - thumb_func_start battle_exit_is_player_defeat -battle_exit_is_player_defeat: @ 80B12A8 - push {lr} - subs r0, 0x1 - cmp r0, 0x6 - bhi _080B12E0 - lsls r0, 2 - ldr r1, =_080B12C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080B12C0: - .4byte _080B12E0 - .4byte _080B12DC - .4byte _080B12DC - .4byte _080B12E0 - .4byte _080B12E0 - .4byte _080B12E0 - .4byte _080B12E0 -_080B12DC: - movs r0, 0x1 - b _080B12E2 -_080B12E0: - movs r0, 0 -_080B12E2: - pop {r1} - bx r1 - thumb_func_end battle_exit_is_player_defeat - - thumb_func_start ResetTrainerOpponentIds -ResetTrainerOpponentIds: @ 80B12E8 - ldr r0, =gTrainerBattleOpponent_A - movs r1, 0 - strh r1, [r0] - ldr r0, =gTrainerBattleOpponent_B - strh r1, [r0] - bx lr - .pool - thumb_func_end ResetTrainerOpponentIds - - thumb_func_start InitTrainerBattleVariables -@ void InitTrainerBattleVariables() -InitTrainerBattleVariables: @ 80B12FC - push {lr} - ldr r0, =gUnknown_02038BC8 - movs r1, 0 - strh r1, [r0] - ldr r0, =gUnknown_02038BFC - ldrb r1, [r0] - cmp r1, 0 - bne _080B132C - ldr r0, =gUnknown_02038BD4 - str r1, [r0] - ldr r0, =gUnknown_02038BDC - str r1, [r0] - ldr r0, =gUnknown_02038BF0 - b _080B1338 - .pool -_080B132C: - ldr r0, =gUnknown_02038BD8 - movs r1, 0 - str r1, [r0] - ldr r0, =gUnknown_02038BE0 - str r1, [r0] - ldr r0, =gUnknown_02038BF4 -_080B1338: - str r1, [r0] - ldr r1, =gUnknown_02038BD0 - movs r0, 0 - strh r0, [r1] - ldr r0, =gUnknown_02038BE4 - movs r1, 0 - str r1, [r0] - ldr r0, =gUnknown_02038BE8 - str r1, [r0] - ldr r0, =gUnknown_02038BEC - str r1, [r0] - pop {r0} - bx r0 - .pool - thumb_func_end InitTrainerBattleVariables - - thumb_func_start TrainerBattleLoadArgs -@ void TrainerBattleLoadArgs(struct TrainerBattleArgSpec *argSpecs, u8 *args) -TrainerBattleLoadArgs: @ 80B1370 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 -_080B1376: - ldrb r0, [r4, 0x4] - cmp r0, 0x6 - bhi _080B13E8 - lsls r0, 2 - ldr r1, =_080B138C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080B138C: - .4byte _080B13A8 - .4byte _080B13B6 - .4byte _080B13C4 - .4byte _080B13D2 - .4byte _080B13DA - .4byte _080B13E2 - .4byte _080B13EC -_080B13A8: - adds r0, r5, 0 - bl TrainerBattleLoadArg8 - ldr r1, [r4] - strb r0, [r1] - adds r5, 0x1 - b _080B13E8 -_080B13B6: - adds r0, r5, 0 - bl TrainerBattleLoadArg16 - ldr r1, [r4] - strh r0, [r1] - adds r5, 0x2 - b _080B13E8 -_080B13C4: - adds r0, r5, 0 - bl TrainerBattleLoadArg32 - ldr r1, [r4] - str r0, [r1] - adds r5, 0x4 - b _080B13E8 -_080B13D2: - ldr r1, [r4] - movs r0, 0 - strb r0, [r1] - b _080B13E8 -_080B13DA: - ldr r1, [r4] - movs r0, 0 - strh r0, [r1] - b _080B13E8 -_080B13E2: - ldr r1, [r4] - movs r0, 0 - str r0, [r1] -_080B13E8: - adds r4, 0x8 - b _080B1376 -_080B13EC: - ldr r0, [r4] - str r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end TrainerBattleLoadArgs - - thumb_func_start battle_80801F0 -battle_80801F0: @ 80B13F8 - push {lr} - ldr r0, =gUnknown_02038BD0 - ldrh r1, [r0] - cmp r1, 0 - beq _080B141A - ldr r0, =gSpecialVar_LastTalked - strh r1, [r0] - lsls r0, r1, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl GetFieldObjectIdByLocalIdAndMap - ldr r1, =gSelectedMapObject - strb r0, [r1] -_080B141A: - pop {r0} - bx r0 - .pool - thumb_func_end battle_80801F0 - - thumb_func_start BattleSetup_ConfigureTrainerBattle -@ u8 *BattleSetup_ConfigureTrainerBattle(u8 *args) -BattleSetup_ConfigureTrainerBattle: @ 80B1430 - push {r4,r5,lr} - adds r5, r0, 0 - bl InitTrainerBattleVariables - ldr r4, =gUnknown_02038BC8 - adds r0, r5, 0 - bl TrainerBattleLoadArg8 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - ldrh r0, [r4] - subs r0, 0x1 - cmp r0, 0xB - bls _080B1450 - b _080B15F4 -_080B1450: - lsls r0, 2 - ldr r1, =_080B1464 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080B1464: - .4byte _080B14CC - .4byte _080B14B0 - .4byte _080B1494 - .4byte _080B14A8 - .4byte _080B1514 - .4byte _080B14D4 - .4byte _080B14EC - .4byte _080B14D4 - .4byte _080B153C - .4byte _080B1590 - .4byte _080B1598 - .4byte _080B15A8 -_080B1494: - ldr r0, =gUnknown_0854FF84 - adds r1, r5, 0 - bl TrainerBattleLoadArgs - ldr r0, =EventScript_2713C2 - b _080B161E - .pool -_080B14A8: - ldr r0, =gUnknown_0854FF3C - b _080B14D6 - .pool -_080B14B0: - ldr r0, =gUnknown_02038BFC - ldrb r0, [r0] - cmp r0, 0 - bne _080B14C4 - ldr r0, =gUnknown_0854FEF4 - b _080B15FE - .pool -_080B14C4: - ldr r0, =gUnknown_0855005C - b _080B1616 - .pool -_080B14CC: - ldr r0, =gUnknown_0854FEF4 - b _080B15FE - .pool -_080B14D4: - ldr r0, =gUnknown_0854FFCC -_080B14D6: - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r0, =EventScript_27138A - b _080B161E - .pool -_080B14EC: - ldr r0, =gUnknown_0854FF3C - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r4, =gTrainerBattleOpponent_A - ldrh r0, [r4] - bl sub_80B2234 - strh r0, [r4] - ldr r0, =EventScript_2713F8 - b _080B161E - .pool -_080B1514: - ldr r0, =gUnknown_0854FEAC - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r4, =gTrainerBattleOpponent_A - ldrh r0, [r4] - bl sub_80B2234 - strh r0, [r4] - ldr r0, =EventScript_2713D1 - b _080B161E - .pool -_080B153C: - ldr r0, =gUnknown_02038BFC - ldrb r0, [r0] - cmp r0, 0 - bne _080B156C - ldr r0, =gUnknown_0854FEAC - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r0, =gSpecialVar_LastTalked - ldrb r0, [r0] - bl sub_81A9AA8 - ldr r1, =gTrainerBattleOpponent_A - b _080B157E - .pool -_080B156C: - ldr r0, =gUnknown_08550014 - adds r1, r5, 0 - bl TrainerBattleLoadArgs - ldr r0, =gSpecialVar_LastTalked - ldrb r0, [r0] - bl sub_81A9AA8 -_080B157C: - ldr r1, =gTrainerBattleOpponent_B -_080B157E: - strh r0, [r1] - b _080B161C - .pool -_080B1590: - ldr r0, =gUnknown_0854FEAC - b _080B159A - .pool -_080B1598: - ldr r0, =gUnknown_08550014 -_080B159A: - adds r1, r5, 0 - bl TrainerBattleLoadArgs - movs r0, 0 - b _080B161E - .pool -_080B15A8: - ldr r0, =gUnknown_02038BFC - ldrb r0, [r0] - cmp r0, 0 - bne _080B15D8 - ldr r0, =gUnknown_0854FEAC - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - ldr r0, =gSpecialVar_LastTalked - ldrb r0, [r0] - bl battle_init - ldr r1, =gTrainerBattleOpponent_A - b _080B157E - .pool -_080B15D8: - ldr r0, =gUnknown_08550014 - adds r1, r5, 0 - bl TrainerBattleLoadArgs - ldr r0, =gSpecialVar_LastTalked - ldrb r0, [r0] - bl battle_init - b _080B157C - .pool -_080B15F4: - ldr r0, =gUnknown_02038BFC - ldrb r0, [r0] - cmp r0, 0 - bne _080B1614 - ldr r0, =gUnknown_0854FEAC -_080B15FE: - adds r1, r5, 0 - bl TrainerBattleLoadArgs - bl battle_80801F0 - b _080B161C - .pool -_080B1614: - ldr r0, =gUnknown_08550014 -_080B1616: - adds r1, r5, 0 - bl TrainerBattleLoadArgs -_080B161C: - ldr r0, =EventScript_271362 -_080B161E: - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end BattleSetup_ConfigureTrainerBattle - - thumb_func_start SingleTrainerWantsBattle -@ void SingleTrainerWantsBattle(u8 trainerFieldObjectId, u8 *trainerScript) -SingleTrainerWantsBattle: @ 80B162C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gSelectedMapObject - strb r0, [r2] - ldr r4, =gSpecialVar_LastTalked - ldr r3, =gMapObjects - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r0, [r2, 0x8] - strh r0, [r4] - adds r1, 0x1 - adds r0, r1, 0 - bl BattleSetup_ConfigureTrainerBattle - ldr r0, =EventScript_271354 - bl ScriptContext1_SetupScript - bl ScriptContext2_Enable - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end SingleTrainerWantsBattle - - thumb_func_start TwoTrainersWantBattle -@ void TwoTrainersWantBattle(u8 trainerFieldObjectId, u8 *trainerScript) -TwoTrainersWantBattle: @ 80B1670 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gSelectedMapObject - strb r0, [r2] - ldr r4, =gSpecialVar_LastTalked - ldr r3, =gMapObjects - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r0, [r2, 0x8] - strh r0, [r4] - adds r1, 0x1 - adds r0, r1, 0 - bl BattleSetup_ConfigureTrainerBattle - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end TwoTrainersWantBattle - - thumb_func_start TwoTrainersWantBattleExecuteScript -@ void TwoTrainersWantBattleExecuteScript() -TwoTrainersWantBattleExecuteScript: @ 80B16A4 - push {lr} - ldr r0, =EventScript_271354 - bl ScriptContext1_SetupScript - bl ScriptContext2_Enable - pop {r0} - bx r0 - .pool - thumb_func_end TwoTrainersWantBattleExecuteScript - - thumb_func_start GetTrainerFlagFromScriptPointer -@ u8 GetTrainerFlagFromScriptPointer(u8 *scriptPointer) -GetTrainerFlagFromScriptPointer: @ 80B16B8 - push {lr} - adds r0, 0x2 - bl TrainerBattleLoadArg16 - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetTrainerFlagFromScriptPointer - - thumb_func_start sub_80B16D8 -sub_80B16D8: @ 80B16D8 - push {r4,lr} - ldr r0, =gSelectedMapObject - ldrb r0, [r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, =gMapObjects - adds r4, r0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl npc_running_behaviour_by_direction - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl npc_set_running_behaviour_etc - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B16D8 - - thumb_func_start sub_80B170C -sub_80B170C: @ 80B170C - ldr r0, =gUnknown_02038BC8 - ldrb r0, [r0] - bx lr - .pool - thumb_func_end sub_80B170C - - thumb_func_start check_trainer_flag -@ pokescrcmd -check_trainer_flag: @ 80B1718 - push {lr} - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B1734 - ldr r0, =gSelectedMapObject - ldrb r0, [r0] - bl GetBattlePyramidTrainerFlag - b _080B1752 - .pool -_080B1734: - bl InTrainerHill - cmp r0, 0 - bne _080B174A - bl trainerflag_opponent - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - b _080B1752 -_080B174A: - ldr r0, =gSelectedMapObject - ldrb r0, [r0] - bl GetTrainerHillTrainerFlag -_080B1752: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .pool - thumb_func_end check_trainer_flag - - thumb_func_start rom_npc_set_flag_for_script_id -rom_npc_set_flag_for_script_id: @ 80B1760 - push {lr} - ldr r0, =gTrainerBattleOpponent_B - ldrh r0, [r0] - cmp r0, 0 - beq _080B1776 - bl sub_80B1290 - lsls r0, 16 - lsrs r0, 16 - bl FlagSet -_080B1776: - bl trainerflag_opponent - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - pop {r0} - bx r0 - .pool - thumb_func_end rom_npc_set_flag_for_script_id - - thumb_func_start sub_80B178C -sub_80B178C: @ 80B178C - push {lr} - bl trainerflag_opponent - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - pop {r0} - bx r0 - thumb_func_end sub_80B178C - - thumb_func_start HasTrainerAlreadyBeenFought -HasTrainerAlreadyBeenFought: @ 80B17A0 - push {lr} - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end HasTrainerAlreadyBeenFought - - thumb_func_start trainer_flag_set -trainer_flag_set: @ 80B17B8 - push {lr} - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagSet - pop {r0} - bx r0 - thumb_func_end trainer_flag_set - - thumb_func_start trainer_flag_clear -trainer_flag_clear: @ 80B17CC - push {lr} - lsls r0, 16 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r0, 16 - bl FlagClear - pop {r0} - bx r0 - thumb_func_end trainer_flag_clear - - thumb_func_start BattleSetup_StartTrainerBattle -BattleSetup_StartTrainerBattle: @ 80B17E0 - push {r4,lr} - ldr r0, =gUnknown_030060A8 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080B17FC - ldr r1, =gBattleTypeFlags - ldr r0, =0x00008009 - b _080B1800 - .pool -_080B17FC: - ldr r1, =gBattleTypeFlags - movs r0, 0x8 -_080B1800: - str r0, [r1] - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B1884 - ldr r0, =0x0000400e - movs r1, 0 - bl VarSet - ldr r2, =gBattleTypeFlags - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 14 - orrs r0, r1 - str r0, [r2] - ldr r0, =gUnknown_030060A8 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080B1864 - movs r0, 0x1 - bl sub_816306C - ldr r4, =gEnemyParty + 100 - adds r0, r4, 0 - bl ZeroMonData - adds r0, r4, 0 - adds r0, 0x64 - bl ZeroMonData - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - bl ZeroMonData - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, r1 - bl ZeroMonData - b _080B187A - .pool -_080B1864: - movs r0, 0x1 - bl sub_8163048 - ldr r4, =gEnemyParty + 100 - adds r0, r4, 0 - bl ZeroMonData - adds r4, 0x64 - adds r0, r4, 0 - bl ZeroMonData -_080B187A: - bl sub_81A9B04 - b _080B18B8 - .pool -_080B1884: - bl sub_81D5C18 - lsls r0, 24 - cmp r0, 0 - beq _080B18B8 - ldr r2, =gBattleTypeFlags - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 19 - orrs r0, r1 - str r0, [r2] - ldr r0, =gUnknown_030060A8 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080B18B0 - bl sub_81D639C - b _080B18B4 - .pool -_080B18B0: - bl sub_81D6384 -_080B18B4: - bl sub_81D61E8 -_080B18B8: - ldr r1, =gUnknown_02038BF9 - ldr r2, =gUnknown_030060A8 - ldrb r0, [r2] - strb r0, [r1] - movs r1, 0 - strb r1, [r2] - ldr r0, =gUnknown_02038BF8 - strb r1, [r0] - ldr r1, =gUnknown_03006080 - movs r0, 0 - strh r0, [r1] - ldr r1, =gMain - ldr r0, =sub_80B1918 - str r0, [r1, 0x8] - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080B18E8 - bl sub_81D5C18 - lsls r0, 24 - cmp r0, 0 - beq _080B1908 -_080B18E8: - bl sub_80B0828 - b _080B190C - .pool -_080B1908: - bl task_add_01_battle_start_with_music_and_stats -_080B190C: - bl ScriptContext1_Stop - pop {r4} - pop {r0} - bx r0 - thumb_func_end BattleSetup_StartTrainerBattle - - thumb_func_start sub_80B1918 -sub_80B1918: @ 80B1918 - push {lr} - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _080B1946 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - bl battle_exit_is_player_defeat - cmp r0, 0x1 - bne _080B1968 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080B1946 - bl sub_81D5C18 - lsls r0, 24 - cmp r0, 0 - beq _080B195C -_080B1946: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - b _080B198A - .pool -_080B195C: - ldr r0, =c2_whiteout - bl SetMainCallback2 - b _080B198A - .pool -_080B1968: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080B198A - bl sub_81D5C18 - lsls r0, 24 - cmp r0, 0 - bne _080B198A - bl sub_80B20BC - bl rom_npc_set_flag_for_script_id -_080B198A: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B1918 - - thumb_func_start sub_80B1994 -sub_80B1994: @ 80B1994 - push {lr} - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _080B19B4 - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - b _080B19E2 - .pool -_080B19B4: - ldr r0, =gBattleOutcome - ldrb r0, [r0] - bl battle_exit_is_player_defeat - cmp r0, 0x1 - bne _080B19D0 - ldr r0, =c2_whiteout - bl SetMainCallback2 - b _080B19E2 - .pool -_080B19D0: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - bl sub_80B20BC - bl rom_npc_set_flag_for_script_id - bl sub_80B22BC -_080B19E2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B1994 - - thumb_func_start sub_80B19EC -sub_80B19EC: @ 80B19EC - push {lr} - ldr r1, =gBattleTypeFlags - movs r0, 0x8 - str r0, [r1] - ldr r1, =gMain - ldr r0, =sub_80B1994 - str r0, [r1, 0x8] - bl task_add_01_battle_start_with_music_and_stats - bl ScriptContext1_Stop - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B19EC - - thumb_func_start sub_80B1A14 -sub_80B1A14: @ 80B1A14 - push {lr} - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B1A7C - ldr r0, =gUnknown_030060A8 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _080B1A44 - ldr r0, =gSpecialVar_LastTalked - ldrb r0, [r0] - bl sub_81A9AA8 - lsls r0, 16 - lsrs r0, 16 - bl sub_81A9EDC - b _080B1AD8 - .pool -_080B1A44: - ldr r3, =gMapObjects - ldr r2, =gUnknown_03006090 - ldr r0, =gUnknown_02038BFC - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x8] - bl sub_81A9AA8 - lsls r0, 16 - lsrs r0, 16 - bl sub_81A9EDC - b _080B1AD8 - .pool -_080B1A7C: - bl sub_81D5C18 - lsls r0, 24 - cmp r0, 0 - beq _080B1AEC - ldr r0, =gUnknown_030060A8 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _080B1AAC - ldr r0, =gSpecialVar_LastTalked - ldrb r0, [r0] - bl battle_init - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x2 - bl sub_81D572C - b _080B1AD8 - .pool -_080B1AAC: - ldr r3, =gMapObjects - ldr r2, =gUnknown_03006090 - ldr r0, =gUnknown_02038BFC - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x8] - bl battle_init - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x2 - bl sub_81D572C -_080B1AD8: - bl sub_80982B8 - b _080B1AF4 - .pool -_080B1AEC: - bl sub_80B1C7C - bl ShowFieldMessage -_080B1AF4: - pop {r0} - bx r0 - thumb_func_end sub_80B1A14 - - thumb_func_start BattleSetup_GetScriptAddrAfterBattle -BattleSetup_GetScriptAddrAfterBattle: @ 80B1AF8 - push {lr} - ldr r0, =gUnknown_02038BEC - ldr r0, [r0] - cmp r0, 0 - bne _080B1B04 - ldr r0, =EventScript_2C8436 -_080B1B04: - pop {r1} - bx r1 - .pool - thumb_func_end BattleSetup_GetScriptAddrAfterBattle - - thumb_func_start BattleSetup_GetTrainerPostBattleScript -BattleSetup_GetTrainerPostBattleScript: @ 80B1B10 - push {lr} - ldr r1, =gUnknown_02038BF8 - ldrb r2, [r1] - cmp r2, 0 - beq _080B1B3C - movs r0, 0 - strb r0, [r1] - ldr r0, =gUnknown_02038BF4 - ldr r2, [r0] - cmp r2, 0 - beq _080B1B54 - ldr r1, =gUnknown_03006080 - movs r0, 0x1 - strh r0, [r1] - adds r0, r2, 0 - b _080B1B56 - .pool -_080B1B3C: - ldr r0, =gUnknown_02038BF0 - ldr r1, [r0] - cmp r1, 0 - beq _080B1B54 - ldr r0, =gUnknown_03006080 - strh r2, [r0] - adds r0, r1, 0 - b _080B1B56 - .pool -_080B1B54: - ldr r0, =LavaridgeTown_Gym_1F_EventScript_2742E6 -_080B1B56: - pop {r1} - bx r1 - .pool - thumb_func_end BattleSetup_GetTrainerPostBattleScript - - thumb_func_start special_trainer_unable_to_battle -special_trainer_unable_to_battle: @ 80B1B60 - push {lr} - bl sub_80B1D18 - bl ShowFieldMessage - pop {r0} - bx r0 - thumb_func_end special_trainer_unable_to_battle - - thumb_func_start SetUpTrainerEncounterMusic -@ void SetUpTrainerEncounterMusic() -SetUpTrainerEncounterMusic: @ 80B1B70 - push {lr} - ldr r0, =gUnknown_02038BFC - ldrb r0, [r0] - cmp r0, 0 - bne _080B1B88 - ldr r0, =gTrainerBattleOpponent_A - b _080B1B8A - .pool -_080B1B88: - ldr r0, =gTrainerBattleOpponent_B -_080B1B8A: - ldrh r1, [r0] - ldr r0, =gUnknown_02038BC8 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080B1C62 - cmp r0, 0x8 - beq _080B1C62 - adds r0, r1, 0 - bl GetTrainerEncounterMusicId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bhi _080B1C5C - lsls r0, 2 - ldr r1, =_080B1BBC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080B1BBC: - .4byte _080B1BF4 - .4byte _080B1BFA - .4byte _080B1C04 - .4byte _080B1C5C - .4byte _080B1C0C - .4byte _080B1C12 - .4byte _080B1C1C - .4byte _080B1C24 - .4byte _080B1C2C - .4byte _080B1C34 - .4byte _080B1C3C - .4byte _080B1C42 - .4byte _080B1C4C - .4byte _080B1C54 -_080B1BF4: - movs r0, 0xBE - lsls r0, 1 - b _080B1C5E -_080B1BFA: - ldr r0, =0x00000197 - b _080B1C5E - .pool -_080B1C04: - ldr r0, =0x0000017b - b _080B1C5E - .pool -_080B1C0C: - movs r0, 0xD0 - lsls r0, 1 - b _080B1C5E -_080B1C12: - ldr r0, =0x000001a1 - b _080B1C5E - .pool -_080B1C1C: - ldr r0, =0x000001a3 - b _080B1C5E - .pool -_080B1C24: - ldr r0, =0x000001b9 - b _080B1C5E - .pool -_080B1C2C: - ldr r0, =0x00000181 - b _080B1C5E - .pool -_080B1C34: - ldr r0, =0x000001c1 - b _080B1C5E - .pool -_080B1C3C: - movs r0, 0xE1 - lsls r0, 1 - b _080B1C5E -_080B1C42: - ldr r0, =0x000001c3 - b _080B1C5E - .pool -_080B1C4C: - ldr r0, =0x000001c5 - b _080B1C5E - .pool -_080B1C54: - ldr r0, =0x0000018d - b _080B1C5E - .pool -_080B1C5C: - ldr r0, =0x000001a7 -_080B1C5E: - bl PlayNewMapMusic -_080B1C62: - pop {r0} - bx r0 - .pool - thumb_func_end SetUpTrainerEncounterMusic - - thumb_func_start ReturnEmptyStringIfNull -@ u8 *ReturnEmptyStringIfNull(u8 *str) -ReturnEmptyStringIfNull: @ 80B1C6C - push {lr} - cmp r0, 0 - bne _080B1C74 - ldr r0, =gText_EmptyString2 -_080B1C74: - pop {r1} - bx r1 - .pool - thumb_func_end ReturnEmptyStringIfNull - - thumb_func_start sub_80B1C7C -sub_80B1C7C: @ 80B1C7C - push {lr} - ldr r0, =gUnknown_02038BFC - ldrb r0, [r0] - cmp r0, 0 - beq _080B1C94 - ldr r0, =gUnknown_02038BD8 - b _080B1C96 - .pool -_080B1C94: - ldr r0, =gUnknown_02038BD4 -_080B1C96: - ldr r0, [r0] - bl ReturnEmptyStringIfNull - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B1C7C - - thumb_func_start GetTrainer1LoseText -GetTrainer1LoseText: @ 80B1CA4 - push {r4,lr} - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _080B1CBC - bl sub_80EA250 - b _080B1CC0 - .pool -_080B1CBC: - ldr r0, =gUnknown_02038BDC - ldr r0, [r0] -_080B1CC0: - ldr r4, =gStringVar4 - bl ReturnEmptyStringIfNull - adds r1, r0, 0 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end GetTrainer1LoseText - - thumb_func_start GetTrainer2LoseText -GetTrainer2LoseText: @ 80B1CE0 - push {r4,lr} - ldr r4, =gStringVar4 - ldr r0, =gUnknown_02038BE0 - ldr r0, [r0] - bl ReturnEmptyStringIfNull - adds r1, r0, 0 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end GetTrainer2LoseText - - thumb_func_start sub_80B1D04 -sub_80B1D04: @ 80B1D04 - push {lr} - ldr r0, =gUnknown_02038BE4 - ldr r0, [r0] - bl ReturnEmptyStringIfNull - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B1D04 - - thumb_func_start sub_80B1D18 -sub_80B1D18: @ 80B1D18 - push {lr} - ldr r0, =gUnknown_02038BE8 - ldr r0, [r0] - bl ReturnEmptyStringIfNull - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B1D18 - - thumb_func_start sub_80B1D2C -sub_80B1D2C: @ 80B1D2C - push {lr} - lsls r1, 16 - lsrs r1, 16 - movs r3, 0 - adds r2, r0, 0 -_080B1D36: - ldrh r0, [r2] - cmp r0, r1 - bne _080B1D40 - adds r0, r3, 0 - b _080B1D4C -_080B1D40: - adds r2, 0x10 - adds r3, 0x1 - cmp r3, 0x4D - ble _080B1D36 - movs r0, 0x1 - negs r0, r0 -_080B1D4C: - pop {r1} - bx r1 - thumb_func_end sub_80B1D2C - - thumb_func_start sub_80B1D50 -sub_80B1D50: @ 80B1D50 - push {r4,r5,lr} - lsls r1, 16 - lsrs r5, r1, 16 - movs r4, 0 - adds r2, r0, 0 -_080B1D5A: - movs r1, 0 - ldrh r0, [r2] - cmp r0, 0 - beq _080B1D80 - movs r3, 0 -_080B1D64: - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, r5 - bne _080B1D70 - adds r0, r4, 0 - b _080B1D8C -_080B1D70: - adds r3, 0x2 - adds r1, 0x1 - cmp r1, 0x4 - bgt _080B1D80 - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, 0 - bne _080B1D64 -_080B1D80: - adds r2, 0x10 - adds r4, 0x1 - cmp r4, 0x4D - ble _080B1D5A - movs r0, 0x1 - negs r0, r0 -_080B1D8C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80B1D50 - - thumb_func_start sub_80B1D94 -sub_80B1D94: @ 80B1D94 - push {lr} - cmp r0, 0x48 - ble _080B1D9E - movs r0, 0x1 - b _080B1DB8 -_080B1D9E: - cmp r0, 0x40 - bne _080B1DB6 - movs r0, 0x7E - bl FlagGet - movs r1, 0 - lsls r0, 24 - cmp r0, 0 - bne _080B1DB2 - movs r1, 0x1 -_080B1DB2: - adds r0, r1, 0 - b _080B1DB8 -_080B1DB6: - movs r0, 0 -_080B1DB8: - pop {r1} - bx r1 - thumb_func_end sub_80B1D94 - - thumb_func_start sub_80B1DBC -sub_80B1DBC: @ 80B1DBC - push {r4-r6,lr} - adds r6, r1, 0 - movs r5, 0x1 - lsls r1, r6, 4 - adds r1, r0 - adds r4, r1, 0x2 - b _080B1DCE -_080B1DCA: - adds r4, 0x2 - adds r5, 0x1 -_080B1DCE: - cmp r5, 0x4 - bgt _080B1DE2 - ldrh r0, [r4] - cmp r0, 0 - beq _080B1DE2 - bl HasTrainerAlreadyBeenFought - lsls r0, 24 - cmp r0, 0 - bne _080B1DCA -_080B1DE2: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000009ca - adds r0, r1 - adds r0, r6 - strb r5, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B1DBC - - thumb_func_start sub_80B1DFC -sub_80B1DFC: @ 80B1DFC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r6, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - movs r7, 0 - movs r5, 0 - adds r4, r6, 0 - adds r4, 0xA -_080B1E1A: - ldrh r0, [r4] - cmp r0, r9 - bne _080B1E74 - ldrh r0, [r4, 0x2] - cmp r0, r8 - bne _080B1E74 - adds r0, r5, 0 - bl sub_80B1D94 - cmp r0, 0 - bne _080B1E74 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000009ca - adds r0, r1 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _080B1E72 - movs r1, 0xAE - lsls r1, 1 - adds r0, r5, r1 - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080B1E74 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bhi _080B1E74 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80B1DBC -_080B1E72: - movs r7, 0x1 -_080B1E74: - adds r4, 0x10 - adds r5, 0x1 - cmp r5, 0x40 - ble _080B1E1A - adds r0, r7, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B1DFC - - thumb_func_start sub_80B1E94 -sub_80B1E94: @ 80B1E94 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gUnknown_085500A4 - lsls r0, r4, 4 - adds r0, r5 - ldrh r0, [r0] - bl HasTrainerAlreadyBeenFought - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B1EB4 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80B1DBC -_080B1EB4: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B1E94 - - thumb_func_start sub_80B1EC0 -sub_80B1EC0: @ 80B1EC0 - push {r4-r6,lr} - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - movs r1, 0 - adds r3, r0, 0 - adds r3, 0xA - ldr r5, =gSaveBlock1Ptr -_080B1ED2: - ldrh r0, [r3] - cmp r0, r4 - bne _080B1EF8 - ldrh r0, [r3, 0x2] - cmp r0, r2 - bne _080B1EF8 - ldr r0, [r5] - ldr r6, =0x000009ca - adds r0, r6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080B1EF8 - movs r0, 0x1 - b _080B1F02 - .pool -_080B1EF8: - adds r3, 0x10 - adds r1, 0x1 - cmp r1, 0x4D - ble _080B1ED2 - movs r0, 0 -_080B1F02: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80B1EC0 - - thumb_func_start sub_80B1F08 -sub_80B1F08: @ 80B1F08 - push {r4,lr} - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - movs r1, 0 - adds r3, r0, 0 - adds r3, 0xA -_080B1F18: - ldrh r0, [r3] - cmp r0, r4 - bne _080B1F28 - ldrh r0, [r3, 0x2] - cmp r0, r2 - bne _080B1F28 - movs r0, 0x1 - b _080B1F32 -_080B1F28: - adds r3, 0x10 - adds r1, 0x1 - cmp r1, 0x4D - ble _080B1F18 - movs r0, 0 -_080B1F32: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80B1F08 - - thumb_func_start sub_80B1F38 -sub_80B1F38: @ 80B1F38 - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl sub_80B1D2C - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080B1F6C - cmp r1, 0x63 - bgt _080B1F6C - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x000009ca - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080B1F6C - movs r0, 0x1 - b _080B1F6E - .pool -_080B1F6C: - movs r0, 0 -_080B1F6E: - pop {r1} - bx r1 - thumb_func_end sub_80B1F38 - - thumb_func_start sub_80B1F74 -sub_80B1F74: @ 80B1F74 - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl sub_80B1D50 - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080B1FA8 - cmp r1, 0x63 - bgt _080B1FA8 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x000009ca - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080B1FA8 - movs r0, 0x1 - b _080B1FAA - .pool -_080B1FA8: - movs r0, 0 -_080B1FAA: - pop {r1} - bx r1 - thumb_func_end sub_80B1F74 - - thumb_func_start sub_80B1FB0 -sub_80B1FB0: @ 80B1FB0 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - bl sub_80B1D2C - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080B1FD8 - movs r0, 0 - b _080B1FFE -_080B1FCA: - subs r0, r6, 0x1 - lsls r0, 1 - adds r0, r7, r0 - ldrh r0, [r0] - b _080B1FFE -_080B1FD4: - ldrh r0, [r5] - b _080B1FFE -_080B1FD8: - lsls r0, r1, 4 - adds r7, r4, r0 - movs r6, 0x1 - adds r5, r7, 0x2 - adds r4, r5, 0 -_080B1FE2: - ldrh r0, [r4] - cmp r0, 0 - beq _080B1FCA - bl HasTrainerAlreadyBeenFought - lsls r0, 24 - cmp r0, 0 - beq _080B1FD4 - adds r4, 0x2 - adds r5, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _080B1FE2 - ldrh r0, [r7, 0x8] -_080B1FFE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B1FB0 - - thumb_func_start sub_80B2004 -sub_80B2004: @ 80B2004 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - bl sub_80B1D2C - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080B2032 - movs r0, 0 - b _080B2054 -_080B201E: - subs r0, r5, 0x1 - lsls r0, 1 - adds r0, r6, r0 - ldrh r0, [r0] - b _080B2054 -_080B2028: - subs r0, r5, 0x1 - lsls r0, 1 - adds r0, r6, r0 - ldrh r0, [r0] - b _080B2054 -_080B2032: - lsls r0, r1, 4 - adds r6, r4, r0 - movs r5, 0x1 - adds r4, r6, 0x2 -_080B203A: - ldrh r0, [r4] - cmp r0, 0 - beq _080B201E - bl HasTrainerAlreadyBeenFought - lsls r0, 24 - cmp r0, 0 - beq _080B2028 - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x4 - ble _080B203A - ldrh r0, [r6, 0x8] -_080B2054: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80B2004 - - thumb_func_start sub_80B205C -sub_80B205C: @ 80B205C - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl sub_80B1D50 - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080B207E - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x000009ca - adds r0, r2 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_080B207E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B205C - - thumb_func_start sub_80B208C -sub_80B208C: @ 80B208C - push {r4,lr} - adds r3, r0, 0 - movs r1, 0 - movs r4, 0xAE - lsls r4, 1 - ldr r2, =gUnknown_085500A4 -_080B2098: - ldrh r0, [r2] - cmp r0, r3 - bne _080B20A8 - adds r0, r1, r4 - b _080B20B2 - .pool -_080B20A8: - adds r2, 0x10 - adds r1, 0x1 - cmp r1, 0x4D - ble _080B2098 - ldr r0, =0x0000ffff -_080B20B2: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B208C - - thumb_func_start sub_80B20BC -sub_80B20BC: @ 80B20BC - push {lr} - ldr r0, =0x0000012f - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080B20E2 - ldr r0, =gTrainerBattleOpponent_A - ldrh r0, [r0] - bl sub_80B208C - adds r1, r0, 0 - ldr r0, =0x0000ffff - cmp r1, r0 - beq _080B20E2 - lsls r0, r1, 16 - lsrs r0, 16 - bl FlagSet -_080B20E2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B20BC - - thumb_func_start sub_80B20F4 -sub_80B20F4: @ 80B20F4 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - bl sub_80B1D2C - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080B211E - lsls r0, r1, 4 - adds r0, r4 - ldrh r0, [r0, 0x2] - bl HasTrainerAlreadyBeenFought - lsls r0, 24 - cmp r0, 0 - beq _080B211E - movs r0, 0x1 - b _080B2120 -_080B211E: - movs r0, 0 -_080B2120: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80B20F4 - - thumb_func_start sub_80B2128 -sub_80B2128: @ 80B2128 - push {r4-r6,lr} - movs r6, 0 - movs r5, 0 - ldr r4, =gUnknown_08550584 -_080B2130: - ldrh r0, [r4] - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B214C - adds r6, 0x1 - cmp r6, 0x4 - ble _080B214C - movs r0, 0x1 - b _080B2156 - .pool -_080B214C: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x7 - bls _080B2130 - movs r0, 0 -_080B2156: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80B2128 - - thumb_func_start sub_80B215C -sub_80B215C: @ 80B215C - push {lr} - bl sub_80B2128 - cmp r0, 0 - beq _080B2184 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x000009c8 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0xFE - bls _080B2180 - movs r0, 0xFF - b _080B2182 - .pool -_080B2180: - adds r0, 0x1 -_080B2182: - strh r0, [r1] -_080B2184: - pop {r0} - bx r0 - thumb_func_end sub_80B215C - - thumb_func_start sub_80B2188 -sub_80B2188: @ 80B2188 - push {lr} - bl sub_80B2128 - cmp r0, 0 - beq _080B21AC - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000009c8 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0xFE - bls _080B21AC - movs r0, 0x1 - b _080B21AE - .pool -_080B21AC: - movs r0, 0 -_080B21AE: - pop {r1} - bx r1 - thumb_func_end sub_80B2188 - - thumb_func_start sub_80B21B4 -sub_80B21B4: @ 80B21B4 - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - bl sub_80B2188 - cmp r0, 0 - beq _080B21E0 - ldr r0, =gUnknown_085500A4 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_80B1DFC - cmp r0, 0x1 - bne _080B21E0 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x000009c8 - adds r0, r1 - movs r1, 0 - strh r1, [r0] -_080B21E0: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B21B4 - - thumb_func_start sub_80B21F4 -sub_80B21F4: @ 80B21F4 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 16 - lsrs r3, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r0, =gUnknown_085500A4 - adds r1, r3, 0 - bl sub_80B1EC0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B21F4 - - thumb_func_start sub_80B2214 -sub_80B2214: @ 80B2214 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 16 - lsrs r3, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r0, =gUnknown_085500A4 - adds r1, r3, 0 - bl sub_80B1F08 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B2214 - - thumb_func_start sub_80B2234 -sub_80B2234: @ 80B2234 - push {lr} - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, =gUnknown_085500A4 - bl sub_80B1FB0 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B2234 - - thumb_func_start sub_80B2250 -sub_80B2250: @ 80B2250 - push {lr} - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, =gUnknown_085500A4 - bl sub_80B2004 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B2250 - - thumb_func_start sub_80B226C -sub_80B226C: @ 80B226C - push {r4,r5,lr} - ldr r5, =gUnknown_085500A4 - ldr r4, =gTrainerBattleOpponent_A - ldrh r1, [r4] - adds r0, r5, 0 - bl sub_80B1F38 - lsls r0, 24 - cmp r0, 0 - bne _080B2298 - ldrh r1, [r4] - adds r0, r5, 0 - bl sub_80B20F4 - lsls r0, 24 - lsrs r0, 24 - b _080B229A - .pool -_080B2298: - movs r0, 0x1 -_080B229A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80B226C - - thumb_func_start sub_80B22A0 -sub_80B22A0: @ 80B22A0 - push {lr} - ldr r0, =gUnknown_085500A4 - ldr r1, =gTrainerBattleOpponent_A - ldrh r1, [r1] - bl sub_80B1F74 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80B22A0 - - thumb_func_start sub_80B22BC -sub_80B22BC: @ 80B22BC - push {lr} - ldr r0, =gUnknown_085500A4 - ldr r1, =gTrainerBattleOpponent_A - ldrh r1, [r1] - bl sub_80B205C - bl rom_npc_set_flag_for_script_id - pop {r0} - bx r0 - .pool - thumb_func_end sub_80B22BC - - thumb_func_start CheckIfMultipleTrainersWantBattle -CheckIfMultipleTrainersWantBattle: @ 80B22D8 - push {lr} - ldr r1, =gUnknown_02038BF9 - ldrb r0, [r1] - cmp r0, 0x1 - bls _080B2300 - movs r0, 0 - strb r0, [r1] - ldr r1, =gUnknown_02038BF8 - movs r0, 0x1 - strb r0, [r1] - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - b _080B230A - .pool -_080B2300: - ldr r1, =gUnknown_02038BF8 - movs r0, 0 - strb r0, [r1] - ldr r1, =gSpecialVar_Result - movs r0, 0 -_080B230A: - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end CheckIfMultipleTrainersWantBattle - - thumb_func_start sub_80B2318 -sub_80B2318: @ 80B2318 - push {r4-r7,lr} - lsls r0, 16 - ldr r7, =gUnknown_085500A4 - lsrs r4, r0, 12 - adds r6, r4, r7 - ldrh r0, [r6] - bl HasTrainerAlreadyBeenFought - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B2338 - movs r0, 0 - b _080B2364 - .pool -_080B2338: - movs r5, 0x1 - adds r0, r4, 0x2 - adds r0, r7 - ldrh r0, [r0] - cmp r0, 0 - beq _080B2360 - adds r4, r6, 0x2 -_080B2346: - ldrh r0, [r4] - bl HasTrainerAlreadyBeenFought - lsls r0, 24 - cmp r0, 0 - beq _080B2360 - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x4 - bgt _080B2360 - ldrh r0, [r4] - cmp r0, 0 - bne _080B2346 -_080B2360: - lsls r0, r5, 16 - lsrs r0, 16 -_080B2364: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B2318 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 42dcb431a..96769dcbf 100755 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -3534,7 +3534,7 @@ _08163E10: bl sub_80B100C lsls r0, 24 lsrs r0, 24 - bl sub_8145EF4 + bl BattleTransition_StartOnField b _08163E68 .pool _08163E2C: @@ -3544,7 +3544,7 @@ _08163E2C: ldr r5, =0x00000c03 adds r0, r5, 0 bl sub_8165404 - ldr r4, =gUnknown_02038BFC + ldr r4, =gApproachingTrainerId movs r0, 0 strb r0, [r4] ldr r0, =MossdeepCity_SpaceCenter_2F_EventScript_224157 + 1 @@ -3561,7 +3561,7 @@ _08163E2C: movs r0, 0 bl PlayMapChosenOrBattleBGM movs r0, 0x12 - bl sub_8145EF4 + bl BattleTransition_StartOnField _08163E68: add sp, 0x4 pop {r4-r6} diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 6ffa17320..b7f2746ec 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -57,8 +57,8 @@ TestBattleTransition: @ 8145EDC .pool thumb_func_end TestBattleTransition - thumb_func_start sub_8145EF4 -sub_8145EF4: @ 8145EF4 + thumb_func_start BattleTransition_StartOnField +BattleTransition_StartOnField: @ 8145EF4 push {lr} lsls r0, 24 lsrs r0, 24 @@ -69,17 +69,17 @@ sub_8145EF4: @ 8145EF4 pop {r0} bx r0 .pool - thumb_func_end sub_8145EF4 + thumb_func_end BattleTransition_StartOnField - thumb_func_start sub_8145F10 -sub_8145F10: @ 8145F10 + thumb_func_start BattleTransition_Start +BattleTransition_Start: @ 8145F10 push {lr} lsls r0, 24 lsrs r0, 24 bl LaunchBattleTransitionTask pop {r0} bx r0 - thumb_func_end sub_8145F10 + thumb_func_end BattleTransition_Start thumb_func_start IsBattleTransitionDone IsBattleTransitionDone: @ 8145F20 diff --git a/asm/bike.s b/asm/bike.s index b5d40a312..89791b987 100644 --- a/asm/bike.s +++ b/asm/bike.s @@ -2004,7 +2004,7 @@ GetOnOffBike: @ 811A080 beq _0811A0B0 movs r0, 0x1 bl SetPlayerAvatarTransitionFlags - bl sav1_reset_battle_music_maybe + bl Overworld_ClearSavedMusic bl sub_8085784 b _0811A0C4 .pool diff --git a/asm/clock.s b/asm/clock.s deleted file mode 100644 index 5d771a8b6..000000000 --- a/asm/clock.s +++ /dev/null @@ -1,175 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_809E778 -sub_809E778: @ 809E778 - push {lr} - ldr r0, =0x00000895 - bl FlagSet - bl RtcCalcLocalTime - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - adds r2, 0xA0 - ldr r3, =gLocalTime - ldr r0, [r3] - ldr r1, [r3, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, =0x00004040 - ldrh r1, [r3] - bl VarSet - pop {r0} - bx r0 - .pool - thumb_func_end sub_809E778 - - thumb_func_start DoTimeBasedEvents -DoTimeBasedEvents: @ 809E7B0 - push {r4,lr} - ldr r0, =0x00000895 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0809E7DA - bl sub_813B9C0 - lsls r0, 24 - cmp r0, 0 - bne _0809E7DA - bl RtcCalcLocalTime - ldr r4, =gLocalTime - adds r0, r4, 0 - bl sub_809E7E8 - adds r0, r4, 0 - bl sub_809E858 -_0809E7DA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end DoTimeBasedEvents - - thumb_func_start sub_809E7E8 -sub_809E7E8: @ 809E7E8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, =0x00004040 - bl GetVarPointer - adds r6, r0, 0 - ldrh r0, [r6] - movs r2, 0 - ldrsh r1, [r5, r2] - cmp r0, r1 - beq _0809E84E - cmp r0, r1 - bgt _0809E84E - ldrh r4, [r5] - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - bl ClearUpperFlags - adds r0, r4, 0 - bl sub_8122580 - adds r0, r4, 0 - bl sub_80ED888 - adds r0, r4, 0 - bl sub_80AEFBC - adds r0, r4, 0 - bl UpdatePartyPokerusTime - adds r0, r4, 0 - bl sub_8137904 - adds r0, r4, 0 - bl sub_8137A20 - adds r0, r4, 0 - bl sub_8139EF4 - adds r0, r4, 0 - bl sub_813A7F4 - adds r0, r4, 0 - bl sub_813945C - adds r0, r4, 0 - bl SetRandomLotteryNumber - ldrh r0, [r5] - strh r0, [r6] -_0809E84E: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_809E7E8 - - thumb_func_start sub_809E858 -sub_809E858: @ 809E858 - push {r4-r6,lr} - sub sp, 0x8 - adds r5, r0, 0 - mov r4, sp - ldr r6, =gSaveBlock2Ptr - ldr r1, [r6] - adds r1, 0xA0 - mov r0, sp - adds r2, r5, 0 - bl CalcTimeDifference - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - movs r2, 0x2 - ldrsb r2, [r4, r2] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 2 - adds r1, r0 - movs r0, 0x3 - ldrsb r0, [r4, r0] - adds r0, r1, r0 - cmp r0, 0 - beq _0809E8A8 - cmp r0, 0 - blt _0809E8A8 - bl BerryTreeTimeUpdate - ldr r2, [r6] - adds r2, 0xA0 - ldr r0, [r5] - ldr r1, [r5, 0x4] - str r0, [r2] - str r1, [r2, 0x4] -_0809E8A8: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_809E858 - - thumb_func_start sub_809E8B4 -sub_809E8B4: @ 809E8B4 - push {lr} - bl sub_809E778 - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_809E8B4 - - thumb_func_start Special_StartWallClock -Special_StartWallClock: @ 809E8C8 - push {lr} - ldr r0, =Cb2_StartWallClock - bl SetMainCallback2 - ldr r1, =gMain - ldr r0, =sub_809E8B4 - str r0, [r1, 0x8] - pop {r0} - bx r0 - .pool - thumb_func_end Special_StartWallClock - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/dewford_trend.s b/asm/dewford_trend.s index 89f89c4e0..7d9d67902 100644 --- a/asm/dewford_trend.s +++ b/asm/dewford_trend.s @@ -79,8 +79,8 @@ _08122522: .pool thumb_func_end InitDewfordTrend - thumb_func_start sub_8122580 -sub_8122580: @ 8122580 + thumb_func_start UpdateDewfordTrendPerDay +UpdateDewfordTrendPerDay: @ 8122580 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -253,7 +253,7 @@ _081226BE: pop {r0} bx r0 .pool - thumb_func_end sub_8122580 + thumb_func_end UpdateDewfordTrendPerDay thumb_func_start sub_81226D8 sub_81226D8: @ 81226D8 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 602e7b3e7..3a359c9fa 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -1635,7 +1635,7 @@ _0811AF86: thumb_func_start sub_811AF8C sub_811AF8C: @ 811AF8C push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -1684,7 +1684,7 @@ _0811AFE6: thumb_func_start sub_811AFEC sub_811AFEC: @ 811AFEC push {r4,lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -1727,7 +1727,7 @@ _0811B03A: thumb_func_start sub_811B040 sub_811B040: @ 811B040 push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -1832,7 +1832,7 @@ sub_811B0E8: @ 811B0E8 thumb_func_start sub_811B0F8 sub_811B0F8: @ 811B0F8 push {r4,lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 29164ed7b..9252b79d2 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -721,7 +721,7 @@ TryGetInvisibleMapObjectScript: @ 809C458 ldr r2, [r0, 0x8] cmp r2, 0 bne _0809C490 - ldr r0, =EventScript_2C8436 + ldr r0, =EventScript_TestSignpostMsg b _0809C532 .pool _0809C490: @@ -1365,7 +1365,7 @@ per_step_scripts: @ 809C9F4 bne _0809CA04 b _0809CB24 _0809CA04: - bl sub_80B215C + bl IncrementRematchStepCounter bl AdjustFriendship_step bl sub_81D4998 ldr r0, =gPlayerAvatar @@ -1531,8 +1531,8 @@ _0809CB72: .pool thumb_func_end AdjustFriendship_step - thumb_func_start overworld_poison_timer_set -overworld_poison_timer_set: @ 809CB80 + thumb_func_start ResetPoisonStepCounter +ResetPoisonStepCounter: @ 809CB80 push {lr} ldr r0, =0x0000402b movs r1, 0 @@ -1540,7 +1540,7 @@ overworld_poison_timer_set: @ 809CB80 pop {r0} bx r0 .pool - thumb_func_end overworld_poison_timer_set + thumb_func_end ResetPoisonStepCounter thumb_func_start overworld_poison_step overworld_poison_step: @ 809CB94 diff --git a/asm/field_effect.s b/asm/field_effect.s index bfa563af1..170aa6a63 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -1961,7 +1961,7 @@ mapldr_080842E8: @ 80B69FC movs r1, 0 bl CreateTask bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects ldr r1, =gFieldCallback movs r0, 0 str r0, [r1] @@ -2057,7 +2057,7 @@ mapldr_08084390: @ 80B6AA4 bl FieldObjectTurn _080B6AE6: bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects ldr r1, =gFieldCallback movs r0, 0 str r0, [r1] @@ -2116,7 +2116,7 @@ sub_80B6B68: @ 80B6B68 bl sub_8085784 bl pal_fill_for_maplights bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects ldr r0, =sub_80B6B94 movs r1, 0 bl CreateTask @@ -2534,7 +2534,7 @@ _080B6E9A: sub_80B6EC0: @ 80B6EC0 push {r4,lr} adds r4, r0, 0 - bl player_bitmagic + bl FreezeMapObjects bl CameraObjectReset2 ldrb r0, [r4, 0xA] bl sub_80E1558 @@ -3476,7 +3476,7 @@ sub_80B764C: @ 80B764C push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 - bl player_bitmagic + bl FreezeMapObjects bl CameraObjectReset2 movs r0, 0 bl SetCameraPanningCallback @@ -3807,7 +3807,7 @@ sub_80B78EC: @ 80B78EC adds r5, r0, 0 adds r4, r1, 0 bl CameraObjectReset2 - bl player_bitmagic + bl FreezeMapObjects ldr r1, =gPlayerAvatar movs r0, 0x1 strb r0, [r1, 0x6] @@ -4055,7 +4055,7 @@ sub_80B7AE8: @ 80B7AE8 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 - bl player_bitmagic + bl FreezeMapObjects bl CameraObjectReset2 ldr r1, =gPlayerAvatar movs r0, 0x1 @@ -4287,7 +4287,7 @@ _080B7CC4: sub_80B7CC8: @ 80B7CC8 push {lr} bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects ldr r0, =sub_80B7CE4 movs r1, 0x50 bl CreateTask @@ -4461,7 +4461,7 @@ mapldr_080859D4: @ 80B7E48 bl sub_8085784 bl pal_fill_for_maplights bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects ldr r1, =gFieldCallback movs r0, 0 str r0, [r1] @@ -4672,7 +4672,7 @@ sub_80B800C: @ 80B800C push {r4,lr} adds r4, r0, 0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects bl CameraObjectReset2 bl player_get_direction_lower_nybble lsls r0, 24 @@ -4906,7 +4906,7 @@ mapldr_08085D88: @ 80B8200 bl sub_8085784 bl pal_fill_for_maplights bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects ldr r1, =gFieldCallback movs r0, 0 str r0, [r1] @@ -6295,7 +6295,7 @@ sub_80B8D44: @ 80B8D44 ldr r0, =gFieldEffectArguments ldr r0, [r0] strh r0, [r1, 0x26] - bl sav1_reset_battle_music_maybe + bl Overworld_ClearSavedMusic ldr r0, =0x0000016d bl Overworld_ChangeMusicTo movs r0, 0 @@ -6334,7 +6334,7 @@ sub_80B8DB4: @ 80B8DB4 push {r6} adds r4, r0, 0 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects ldr r5, =gPlayerAvatar movs r0, 0x1 strb r0, [r5, 0x6] diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index ae405f127..62681e7fb 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -3896,7 +3896,7 @@ sub_808C750: @ 808C750 lsls r4, 24 lsrs r4, 24 bl ScriptContext2_Enable - bl sav1_reset_battle_music_maybe + bl Overworld_ClearSavedMusic bl Overworld_ChangeMusicToDefault ldr r2, =gPlayerAvatar ldrb r1, [r2] diff --git a/asm/field_screen.s b/asm/field_screen.s index 497346f8a..408f131c7 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -7527,15 +7527,15 @@ SetSav1Weather: @ 80AED7C .pool thumb_func_end SetSav1Weather - thumb_func_start sav1_get_weather_probably -sav1_get_weather_probably: @ 80AEDAC + thumb_func_start GetSav1Weather +GetSav1Weather: @ 80AEDAC ldr r0, =gSaveBlock1Ptr ldr r0, [r0] adds r0, 0x2E ldrb r0, [r0] bx lr .pool - thumb_func_end sav1_get_weather_probably + thumb_func_end GetSav1Weather thumb_func_start sub_80AEDBC sub_80AEDBC: @ 80AEDBC @@ -7565,7 +7565,7 @@ sub_80AEDBC: @ 80AEDBC sub_80AEDF0: @ 80AEDF0 push {lr} bl SetSav1Weather - bl sav1_get_weather_probably + bl GetSav1Weather lsls r0, 24 lsrs r0, 24 bl weather_set @@ -7577,7 +7577,7 @@ sub_80AEDF0: @ 80AEDF0 sub_80AEE08: @ 80AEE08 push {lr} bl SetSav1Weather - bl sav1_get_weather_probably + bl GetSav1Weather lsls r0, 24 lsrs r0, 24 bl sub_80AB104 @@ -7588,7 +7588,7 @@ sub_80AEE08: @ 80AEE08 thumb_func_start DoCurrentWeather DoCurrentWeather: @ 80AEE20 push {r4,r5,lr} - bl sav1_get_weather_probably + bl GetSav1Weather lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xF @@ -7632,7 +7632,7 @@ _080AEE6E: thumb_func_start sub_80AEE84 sub_80AEE84: @ 80AEE84 push {r4,r5,lr} - bl sav1_get_weather_probably + bl GetSav1Weather lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xF @@ -7777,8 +7777,8 @@ _080AEFB6: bx r1 thumb_func_end sub_80AEEE8 - thumb_func_start sub_80AEFBC -sub_80AEFBC: @ 80AEFBC + thumb_func_start UpdateWeatherPerDay +UpdateWeatherPerDay: @ 80AEFBC lsls r0, 16 ldr r1, =gSaveBlock1Ptr ldr r2, [r1] @@ -7794,7 +7794,7 @@ sub_80AEFBC: @ 80AEFBC strb r1, [r2] bx lr .pool - thumb_func_end sub_80AEFBC + thumb_func_end UpdateWeatherPerDay thumb_func_start sub_80AEFDC sub_80AEFDC: @ 80AEFDC @@ -8382,7 +8382,7 @@ _080AF46C: _080AF480: movs r0, 0 bl sub_80AF0F4 - bl player_bitmagic + bl FreezeMapObjects adds r0, r6, 0 adds r1, r7, 0 bl PlayerGetDestCoords @@ -8508,7 +8508,7 @@ _080AF580: _080AF58A: movs r0, 0 bl sub_80AF0F4 - bl player_bitmagic + bl FreezeMapObjects adds r0, r6, 0 adds r1, r7, 0 bl PlayerGetDestCoords @@ -8583,7 +8583,7 @@ task_map_chg_seq_0807E2CC: @ 80AF610 b _080AF65A .pool _080AF634: - bl player_bitmagic + bl FreezeMapObjects bl ScriptContext2_Enable ldrh r0, [r4, 0x8] adds r0, 0x1 @@ -9062,7 +9062,7 @@ _080AFA34: beq _080AFA6C b _080AFA7C _080AFA3A: - bl player_bitmagic + bl FreezeMapObjects bl ScriptContext2_Enable b _080AFA64 _080AFA44: @@ -9133,7 +9133,7 @@ _080AFAC0: .4byte _080AFBB8 .4byte _080AFBD4 _080AFAD4: - bl player_bitmagic + bl FreezeMapObjects adds r0, r4, 0 adds r1, r6, 0 bl PlayerGetDestCoords @@ -9290,7 +9290,7 @@ _080AFC1C: beq _080AFC46 b _080AFC56 _080AFC22: - bl player_bitmagic + bl FreezeMapObjects bl ScriptContext2_Enable b _080AFC3E _080AFC2C: @@ -9877,7 +9877,7 @@ sub_80B009C: @ 80B009C lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 - bl sav1_get_flash_used_on_map + bl Overworld_GetFlashLevel lsls r0, 24 lsrs r0, 24 movs r5, 0 @@ -9982,7 +9982,7 @@ task0A_mpl_807E31C: @ 80B0160 b _080B01B6 .pool _080B0184: - bl player_bitmagic + bl FreezeMapObjects bl ScriptContext2_Enable bl sub_808D194 ldrh r0, [r4, 0x8] @@ -10033,7 +10033,7 @@ _080B01E4: beq _080B022A b _080B023A _080B01EE: - bl player_bitmagic + bl FreezeMapObjects bl ScriptContext2_Enable movs r0, 0x2D bl PlaySE diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s index 369bef809..a1e4f4ff6 100644 --- a/asm/fldeff_80F9BCC.s +++ b/asm/fldeff_80F9BCC.s @@ -2275,8 +2275,8 @@ overworld_poison_effect: @ 80FAEA8 .pool thumb_func_end overworld_poison_effect - thumb_func_start c3_80A0DD8_is_running -c3_80A0DD8_is_running: @ 80FAEC0 + thumb_func_start FieldPoisonEffectIsRunning +FieldPoisonEffectIsRunning: @ 80FAEC0 push {lr} ldr r0, =task50_overworld_poison_effect bl FuncIsActiveTask @@ -2285,7 +2285,7 @@ c3_80A0DD8_is_running: @ 80FAEC0 pop {r1} bx r1 .pool - thumb_func_end c3_80A0DD8_is_running + thumb_func_end FieldPoisonEffectIsRunning thumb_func_start sub_80FAED4 sub_80FAED4: @ 80FAED4 diff --git a/asm/international_string_util.s b/asm/international_string_util.s index 08e435249..469d88787 100755 --- a/asm/international_string_util.s +++ b/asm/international_string_util.s @@ -113,8 +113,8 @@ _081DB4D4: bx r1 thumb_func_end sub_81DB494 - thumb_func_start sub_81DB4DC -sub_81DB4DC: @ 81DB4DC + thumb_func_start PadNameString +PadNameString: @ 81DB4DC push {r4,r5,lr} adds r4, r0, 0 lsls r1, 24 @@ -156,7 +156,7 @@ _081DB51E: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_81DB4DC + thumb_func_end PadNameString thumb_func_start sub_81DB52C sub_81DB52C: @ 81DB52C diff --git a/asm/item_menu.s b/asm/item_menu.s index 43483216f..49f587939 100755 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -3360,7 +3360,7 @@ _081AC8D4: bl memcpy ldr r0, =gSpecialVar_ItemId ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4664,7 +4664,7 @@ item_menu_type_b: @ 81AD4B4 lsrs r4, r0, 24 ldr r5, =gSpecialVar_ItemId ldrh r0, [r5] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4748,7 +4748,7 @@ _081AD550: cmp r6, 0x1 bne _081AD5C4 bl ScriptContext2_Enable - bl player_bitmagic + bl FreezeMapObjects bl sub_808B864 bl sub_808BCF4 ldr r2, =gSpecialVar_ItemId diff --git a/asm/item_use.s b/asm/item_use.s index 378ed09f1..ebf5ac979 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -266,7 +266,7 @@ sub_80FD254: @ 80FD254 ldr r1, =bag_menu_mail_related mov r0, sp movs r2, 0 - bl sub_8121478 + bl ReadMail add sp, 0x24 pop {r0} bx r0 diff --git a/asm/learn_move.s b/asm/learn_move.s index 4670b4e48..f42514e68 100755 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -353,7 +353,7 @@ _08160994: b _08160E88 .pool _081609A8: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -433,7 +433,7 @@ _08160A50: b _08160E88 .pool _08160A64: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -493,7 +493,7 @@ _08160ADC: b _08160E88 .pool _08160AEC: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -551,7 +551,7 @@ _08160B6C: b _08160E88 .pool _08160B80: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 diff --git a/asm/link.s b/asm/link.s index dc156b269..a6e580d5c 100644 --- a/asm/link.s +++ b/asm/link.s @@ -26142,7 +26142,7 @@ _080170E0: negs r0, r0 b _08017110 _080170F2: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 movs r2, 0x80 @@ -29500,7 +29500,7 @@ _08018BD6: b _08018C3E .pool _08018BE4: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r6, r0, 24 movs r1, 0x80 @@ -52112,7 +52112,7 @@ _0802426A: bl sub_8197930 b _080242D0 _08024270: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r4, r0, 24 movs r0, 0x2 @@ -71033,7 +71033,7 @@ _0802DA84: thumb_func_start sub_802DA8C sub_802DA8C: @ 802DA8C push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r0, 24 pop {r1} diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 69cdb38e5..a88db5f1f 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -663,11 +663,13 @@ .byte 0x5d .endm - .macro ontrainerbattleend + @ Goes to address after the trainerbattle command (called by the battle functions, see battle_setup.c) + .macro gotopostbattlescript .byte 0x5e .endm - .macro ontrainerbattleendgoto + @ Goes to address specified in the trainerbattle command (called by the battle functions, see battle_setup.c) + .macro gotobeatenscript .byte 0x5f .endm diff --git a/asm/mail_data.s b/asm/mail_data.s deleted file mode 100755 index 70fc856d1..000000000 --- a/asm/mail_data.s +++ /dev/null @@ -1,589 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ClearMailData -ClearMailData: @ 80D436C - push {r4,r5,lr} - movs r4, 0 - ldr r5, =gSaveBlock1Ptr -_080D4372: - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, =0x00002be0 - adds r1, r0 - ldr r0, [r5] - adds r0, r1 - bl ClearMailStruct - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080D4372 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ClearMailData - - thumb_func_start ClearMailStruct -ClearMailStruct: @ 80D439C - push {r4-r6,lr} - adds r3, r0, 0 - ldr r0, =0x0000ffff - adds r4, r0, 0 - adds r1, r3, 0 - movs r2, 0x8 -_080D43A8: - ldrh r0, [r1] - orrs r0, r4 - strh r0, [r1] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080D43A8 - movs r2, 0 - adds r6, r3, 0 - adds r6, 0x1A - adds r4, r3, 0 - adds r4, 0x12 - movs r5, 0xFF -_080D43C2: - adds r1, r4, r2 - ldrb r0, [r1] - orrs r0, r5 - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x7 - ble _080D43C2 - adds r1, r6, 0 - movs r2, 0 - adds r0, r1, 0x3 -_080D43D6: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _080D43D6 - movs r1, 0 - movs r0, 0x1 - strh r0, [r3, 0x1E] - strh r1, [r3, 0x20] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ClearMailStruct - - thumb_func_start MonHasMail -MonHasMail: @ 80D43F0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl itemid_is_mail - lsls r0, 24 - cmp r0, 0 - beq _080D4418 - adds r0, r4, 0 - movs r1, 0x40 - bl GetMonData - cmp r0, 0xFF - beq _080D4418 - movs r0, 0x1 - b _080D441A -_080D4418: - movs r0, 0 -_080D441A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MonHasMail - - thumb_func_start sub_80D4420 -sub_80D4420: @ 80D4420 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r8, r0 - lsls r1, 16 - lsrs r0, r1, 16 - str r0, [sp, 0x8] - mov r0, sp - movs r2, 0 - ldrb r3, [r0, 0x8] - strb r3, [r0] - lsrs r1, 24 - strb r1, [r0, 0x1] - add r3, sp, 0x4 - strb r2, [r3] - ldr r4, =gSaveBlock1Ptr - mov r10, r4 - mov r9, r3 - adds r4, r3, 0 -_080D444C: - mov r1, r10 - ldr r0, [r1] - ldrb r2, [r4] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r0, r1 - movs r1, 0xB0 - lsls r1, 6 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _080D4468 - b _080D45A8 -_080D4468: - movs r4, 0 - ldr r2, =gSaveBlock2Ptr - mov r12, r2 - ldr r7, =gSaveBlock1Ptr - add r5, sp, 0x4 - ldr r3, =0x0000ffff - adds r6, r3, 0 -_080D4476: - ldr r2, [r7] - lsls r3, r4, 1 - ldrb r1, [r5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r3, r0 - ldr r0, =0x00002be0 - adds r2, r0 - adds r2, r3 - ldrh r0, [r2] - orrs r0, r6 - strh r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _080D4476 - movs r4, 0 - ldr r5, =gSaveBlock1Ptr - add r3, sp, 0x4 -_080D44A0: - ldr r2, [r5] - ldrb r1, [r3] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldr r1, =0x00002bf2 - adds r2, r1 - adds r2, r0 - mov r1, r12 - ldr r0, [r1] - adds r0, r4 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080D44A0 - mov r3, r10 - ldr r2, [r3] - mov r0, r9 - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldr r1, =0x00002bf2 - adds r2, r1 - adds r2, r0 - movs r0, 0xFF - strb r0, [r2] - mov r2, r9 - ldrb r1, [r2] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, [r3] - adds r0, r1 - ldr r3, =0x00002bf2 - adds r0, r3 - movs r1, 0 - bl sub_81DB4DC - movs r4, 0 - ldr r6, =gSaveBlock1Ptr - add r3, sp, 0x4 - ldr r5, =gSaveBlock2Ptr -_080D4500: - ldr r2, [r6] - ldrb r1, [r3] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldr r1, =0x00002bfa - adds r2, r1 - adds r2, r0 - ldr r0, [r5] - adds r0, 0xA - adds r0, r4 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080D4500 - mov r0, r8 - movs r1, 0xB - bl GetBoxMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r8 - movs r1, 0 - bl GetBoxMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_80D45C8 - mov r2, r10 - ldr r3, [r2] - mov r4, r9 - ldrb r2, [r4] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r3, r1 - ldr r2, =0x00002bfe - adds r1, r2 - strh r0, [r1] - ldrb r1, [r4] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r3, r0 - movs r4, 0xB0 - lsls r4, 6 - adds r3, r4 - mov r0, sp - ldrh r0, [r0, 0x8] - strh r0, [r3] - mov r0, r8 - movs r1, 0x40 - mov r2, r9 - bl SetMonData - mov r0, r8 - movs r1, 0xC - mov r2, sp - bl SetMonData - mov r1, r9 - ldrb r0, [r1] - b _080D45B6 - .pool -_080D45A8: - adds r0, r2, 0x1 - strb r0, [r3] - ldrb r0, [r4] - cmp r0, 0x5 - bhi _080D45B4 - b _080D444C -_080D45B4: - movs r0, 0xFF -_080D45B6: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80D4420 - - thumb_func_start sub_80D45C8 -sub_80D45C8: @ 80D45C8 - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC9 - bne _080D45E0 - adds r0, r1, 0 - bl mon_icon_personality_to_unown_id - lsls r0, 16 - ldr r1, =0x75300000 - adds r0, r1 - lsrs r0, 16 -_080D45E0: - pop {r1} - bx r1 - .pool - thumb_func_end sub_80D45C8 - - thumb_func_start sub_80D45E8 -sub_80D45E8: @ 80D45E8 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, =0xffff8ad0 - adds r2, r3, r0 - lsls r0, r2, 16 - lsrs r0, 16 - cmp r0, 0x1B - bhi _080D4604 - movs r0, 0xC9 - strh r2, [r1] - b _080D4606 - .pool -_080D4604: - adds r0, r3, 0 -_080D4606: - pop {r1} - bx r1 - thumb_func_end sub_80D45E8 - - thumb_func_start GiveMailToMon2 -GiveMailToMon2: @ 80D460C - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r0, 0 - adds r7, r1, 0 - ldrh r5, [r7, 0x20] - adds r1, r5, 0 - bl sub_80D4420 - add r4, sp, 0x4 - strb r0, [r4] - ldrb r2, [r4] - cmp r2, 0xFF - beq _080D4670 - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, =0x00002be0 - adds r1, r0 - adds r0, r7, 0 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r6, 0 - movs r1, 0x40 - adds r2, r4, 0 - bl SetMonData - mov r0, sp - strb r5, [r0] - mov r1, sp - lsrs r0, r5, 8 - strb r0, [r1, 0x1] - adds r0, r6, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - ldrb r0, [r4] - b _080D4672 - .pool -_080D4670: - movs r0, 0xFF -_080D4672: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end GiveMailToMon2 - - thumb_func_start sub_80D467C -sub_80D467C: @ 80D467C - movs r0, 0 - bx lr - thumb_func_end sub_80D467C - - thumb_func_start TakeMailFromMon -TakeMailFromMon: @ 80D4680 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - bl MonHasMail - lsls r0, 24 - cmp r0, 0 - beq _080D46D2 - adds r0, r4, 0 - movs r1, 0x40 - bl GetMonData - add r2, sp, 0x4 - strb r0, [r2] - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - ldrb r1, [r2] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r3, r0 - movs r0, 0xB0 - lsls r0, 6 - adds r3, r0 - movs r1, 0 - movs r0, 0 - strh r0, [r3] - movs r0, 0xFF - strb r0, [r2] - mov r0, sp - strb r1, [r0] - strb r1, [r0, 0x1] - adds r0, r4, 0 - movs r1, 0x40 - bl SetMonData - adds r0, r4, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData -_080D46D2: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end TakeMailFromMon - - thumb_func_start sub_80D46E0 -sub_80D46E0: @ 80D46E0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r2, r1 - movs r0, 0xB0 - lsls r0, 6 - adds r2, r0 - movs r0, 0 - strh r0, [r2] - bx lr - .pool - thumb_func_end sub_80D46E0 - - thumb_func_start sub_80D4700 -sub_80D4700: @ 80D4700 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - adds r5, r0, 0 - mov r0, sp - movs r1, 0 - strb r1, [r0] - strb r1, [r0, 0x1] - add r1, sp, 0x4 - movs r0, 0xFF - strb r0, [r1] - movs r7, 0x6 - mov r9, r1 - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - ldr r3, =0x00002be0 -_080D4724: - mov r1, r8 - ldr r0, [r1] - lsls r1, r7, 3 - adds r1, r7 - lsls r1, 2 - adds r4, r0, r1 - movs r2, 0xB0 - lsls r2, 6 - adds r0, r4, r2 - ldrh r6, [r0] - cmp r6, 0 - bne _080D47A0 - adds r4, r3 - adds r0, r5, 0 - movs r1, 0x40 - str r3, [sp, 0x8] - bl GetMonData - mov r1, r8 - ldr r2, [r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r3, [sp, 0x8] - adds r1, r3 - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - adds r0, r5, 0 - movs r1, 0x40 - bl GetMonData - mov r1, r8 - ldr r2, [r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r2, r1 - movs r3, 0xB0 - lsls r3, 6 - adds r2, r3 - strh r6, [r2] - adds r0, r5, 0 - movs r1, 0x40 - mov r2, r9 - bl SetMonData - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - adds r0, r7, 0 - b _080D47AC - .pool -_080D47A0: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xF - bls _080D4724 - movs r0, 0xFF -_080D47AC: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80D4700 - - thumb_func_start itemid_is_mail -itemid_is_mail: @ 80D47BC - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x84 - bgt _080D47CE - cmp r0, 0x79 - blt _080D47CE - movs r0, 0x1 - b _080D47D0 -_080D47CE: - movs r0, 0 -_080D47D0: - pop {r1} - bx r1 - thumb_func_end itemid_is_mail - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/main_menu.s b/asm/main_menu.s index 7b7ce49f7..52afc783e 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -3025,7 +3025,7 @@ task_new_game_prof_birch_speech_part2_4: @ 8031188 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 diff --git a/asm/map_obj_8097404.s b/asm/map_obj_8097404.s index 96ffc2254..4a6ae9945 100644 --- a/asm/map_obj_8097404.s +++ b/asm/map_obj_8097404.s @@ -82,9 +82,9 @@ _0809748E: bx r1 thumb_func_end sub_8097404 - thumb_func_start player_bitmagic -@ void player_bitmagic() -player_bitmagic: @ 8097494 + thumb_func_start FreezeMapObjects +@ void FreezeMapObjects() +FreezeMapObjects: @ 8097494 push {r4,r5,lr} movs r4, 0 ldr r5, =gMapObjects @@ -113,7 +113,7 @@ _080974B8: pop {r0} bx r0 .pool - thumb_func_end player_bitmagic + thumb_func_end FreezeMapObjects thumb_func_start sub_80974D0 sub_80974D0: @ 80974D0 diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s index 2270051c2..f7a33e508 100644 --- a/asm/map_obj_lock.s +++ b/asm/map_obj_lock.s @@ -62,7 +62,7 @@ _080983E2: thumb_func_start ScriptFreezeMapObjects ScriptFreezeMapObjects: @ 80983E8 push {lr} - bl player_bitmagic + bl FreezeMapObjects ldr r0, =sub_80983A4 movs r1, 0x50 bl CreateTask @@ -348,7 +348,7 @@ sub_8098630: @ 8098630 bl sub_80B47E0 lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gUnknown_030060A8 + ldr r0, =gNoOfApproachingTrainers ldrb r0, [r0] cmp r0, 0x2 bne _080986E0 diff --git a/asm/menu.s b/asm/menu.s index e1102893a..64644504e 100755 --- a/asm/menu.s +++ b/asm/menu.s @@ -2266,8 +2266,8 @@ sub_8198C34: @ 8198C34 bx r0 thumb_func_end sub_8198C34 - thumb_func_start sub_8198C58 -sub_8198C58: @ 8198C58 + thumb_func_start ProcessMenuInputNoWrap_ +ProcessMenuInputNoWrap_: @ 8198C58 push {r4,lr} bl ProcessMenuInputNoWrapAround lsls r0, 24 @@ -2282,7 +2282,7 @@ _08198C6E: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8198C58 + thumb_func_end ProcessMenuInputNoWrap_ thumb_func_start sub_8198C78 sub_8198C78: @ 8198C78 diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index 0dc4cdbf1..26e800944 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -277,7 +277,7 @@ Task_CallYesOrNoCallback: @ 8121FDC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -512,7 +512,7 @@ itemid_80BF6D8_mail_related: @ 812217C bne _081221A4 _08122192: adds r0, r4, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s index fbcc5f036..4580ecb87 100644 --- a/asm/mystery_event_script.s +++ b/asm/mystery_event_script.s @@ -721,7 +721,7 @@ _08153D86: bl GetMonData lsls r0, 16 lsrs r0, 16 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _08153DA4 diff --git a/asm/overworld.s b/asm/overworld.s index c8f5d6699..739c10ed6 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1381,12 +1381,12 @@ _080850C8: bl prev_quest_postbuffer_cursor_backup_reset adds r0, r6, 0 adds r1, r5, 0 - bl sub_80B21B4 + bl TryUpdateRandomTrainerRematches bl DoTimeBasedEvents bl sub_80AEDBC bl sub_8085B2C bl update_sav1_flash_used_on_map - bl sav1_reset_battle_music_maybe + bl Overworld_ClearSavedMusic bl mapheader_run_script_with_tag_x3 bl not_trainer_hill_battle_pyramid ldr r0, [r4] @@ -1478,7 +1478,7 @@ _080851A2: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl sub_80B21B4 + bl TryUpdateRandomTrainerRematches cmp r7, 0x1 beq _080851EE bl DoTimeBasedEvents @@ -1491,7 +1491,7 @@ _080851EE: bl FlagClear _08085200: bl update_sav1_flash_used_on_map - bl sav1_reset_battle_music_maybe + bl Overworld_ClearSavedMusic bl mapheader_run_script_with_tag_x3 bl UpdateLocationHistoryForRoamer bl RoamerMoveToOtherLocationSet @@ -1880,15 +1880,15 @@ _080854FE: .pool thumb_func_end Overworld_SetFlashLevel - thumb_func_start sav1_get_flash_used_on_map -sav1_get_flash_used_on_map: @ 8085514 + thumb_func_start Overworld_GetFlashLevel +Overworld_GetFlashLevel: @ 8085514 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] adds r0, 0x30 ldrb r0, [r0] bx lr .pool - thumb_func_end sav1_get_flash_used_on_map + thumb_func_end Overworld_GetFlashLevel thumb_func_start sub_8085524 sub_8085524: @ 8085524 @@ -2133,7 +2133,7 @@ sav1_map_get_music: @ 80856D4 lsls r0, 5 cmp r1, r0 bne _080856FC - bl sav1_get_weather_probably + bl GetSav1Weather lsls r0, 24 lsrs r0, 24 cmp r0, 0x8 @@ -2272,15 +2272,15 @@ Overworld_SetSavedMusic: @ 80857F4 .pool thumb_func_end Overworld_SetSavedMusic - thumb_func_start sav1_reset_battle_music_maybe -sav1_reset_battle_music_maybe: @ 8085800 + thumb_func_start Overworld_ClearSavedMusic +Overworld_ClearSavedMusic: @ 8085800 ldr r0, =gSaveBlock1Ptr ldr r1, [r0] movs r0, 0 strh r0, [r1, 0x2C] bx lr .pool - thumb_func_end sav1_reset_battle_music_maybe + thumb_func_end Overworld_ClearSavedMusic thumb_func_start sub_8085810 sub_8085810: @ 8085810 @@ -3192,8 +3192,8 @@ CB2_NewGame: @ 8085EF8 .pool thumb_func_end CB2_NewGame - thumb_func_start c2_whiteout -c2_whiteout: @ 8085F58 + thumb_func_start CB2_WhiteOut +CB2_WhiteOut: @ 8085F58 push {lr} sub sp, 0x4 ldr r1, =gMain @@ -3232,7 +3232,7 @@ _08085FB0: pop {r0} bx r0 .pool - thumb_func_end c2_whiteout + thumb_func_end CB2_WhiteOut thumb_func_start c2_load_new_map c2_load_new_map: @ 8085FCC @@ -3661,7 +3661,7 @@ sub_80863B0: @ 80863B0 b _080863F0 .pool _080863D4: - bl sav1_get_flash_used_on_map + bl Overworld_GetFlashLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0 diff --git a/asm/party_menu.s b/asm/party_menu.s index 4214b06fc..4a70ab1da 100755 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -2554,7 +2554,7 @@ sub_81B1708: @ 81B1708 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -3402,14 +3402,14 @@ sub_81B1DB8: @ 81B1DB8 lsrs r4, r5, 16 adds r7, r4, 0 adds r0, r4, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _081B1DE2 adds r0, r6, 0 adds r1, r4, 0 - bl sub_80D4420 + bl GiveMailToMon lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF @@ -4010,7 +4010,7 @@ sub_81B227C: @ 81B227C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -6216,7 +6216,7 @@ _081B34D2: bl GetMonData lsls r0, 16 lsrs r0, 16 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081B3508 @@ -7791,7 +7791,7 @@ _081B425A: .pool _081B4278: ldrh r0, [r6] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081B42A4 @@ -7952,7 +7952,7 @@ sub_81B43DC: @ 81B43DC push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -7999,7 +7999,7 @@ _081B4402: .pool _081B4458: ldrh r0, [r5] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081B4498 @@ -8485,7 +8485,7 @@ sub_81B48DC: @ 81B48DC muls r1, r0 ldr r0, =gPlayerParty adds r4, r1, r0 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -8681,7 +8681,7 @@ sub_81B4A98: @ 81B4A98 adds r0, r1 ldr r1, =sub_81B4AE0 movs r2, 0x1 - bl sub_8121478 + bl ReadMail pop {r0} bx r0 .pool @@ -8777,7 +8777,7 @@ sub_81B4BA0: @ 81B4BA0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -8801,7 +8801,7 @@ _081B4BC6: muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 - bl sub_80D4700 + bl TakeMailFromMon2 lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF @@ -8883,7 +8883,7 @@ sub_81B4C94: @ 81B4C94 push {r7} lsls r0, 24 lsrs r5, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -9691,7 +9691,7 @@ sub_81B5430: @ 81B5430 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -9985,7 +9985,7 @@ sub_81B56D8: @ 81B56D8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -10735,7 +10735,7 @@ sub_81B5CB0: @ 81B5CB0 b _081B5D24 .pool _081B5CD8: - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081B5CFC @@ -10821,7 +10821,7 @@ _081B5D68: adds r0, r7, r5 ldrb r4, [r0] adds r0, r1, 0 - bl itemid_is_mail + bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -10853,7 +10853,7 @@ _081B5DAC: adds r0, r5, r7 ldrb r4, [r0, 0x6] adds r0, r1, 0 - bl itemid_is_mail + bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -12970,7 +12970,7 @@ sub_81B7028: @ 81B7028 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -13272,7 +13272,7 @@ sub_81B72C8: @ 81B72C8 muls r1, r0 ldr r0, =gPlayerParty adds r4, r1, r0 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r5, r0, 24 cmp r5, 0 @@ -14728,7 +14728,7 @@ sub_81B7FAC: @ 81B7FAC .pool _081B7FF8: ldrh r0, [r5] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081B800C @@ -14770,7 +14770,7 @@ sub_81B8044: @ 81B8044 lsrs r4, r0, 24 ldr r5, =gUnknown_0203CEC8 ldrh r0, [r5, 0xC] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081B807C @@ -15054,7 +15054,7 @@ sub_81B82D4: @ 81B82D4 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -15093,7 +15093,7 @@ _081B82FA: .pool _081B8338: adds r0, r4, 0 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081B835C diff --git a/asm/player_pc.s b/asm/player_pc.s index 125650cda..5f32a00c2 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -1263,7 +1263,7 @@ sub_816B8A4: @ 816B8A4 adds r0, r1 ldr r1, =sub_816B900 movs r2, 0x1 - bl sub_8121478 + bl ReadMail adds r0, r4, 0 bl DestroyTask _0816B8E6: @@ -1378,7 +1378,7 @@ sub_816B9D8: @ 816B9D8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r0, 24 movs r1, 0x1 diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s index 6009bd3f3..79838f6f9 100755 --- a/asm/pokemon_icon.s +++ b/asm/pokemon_icon.s @@ -156,7 +156,7 @@ mon_icon_convert_unown_species_id: @ 80D2E08 cmp r2, 0xC9 bne _080D2E32 adds r0, r1, 0 - bl mon_icon_personality_to_unown_id + bl GetUnownLetterByPersonality lsls r0, 16 lsrs r0, 16 cmp r0, 0 @@ -186,8 +186,8 @@ _080D2E40: bx r1 thumb_func_end mon_icon_convert_unown_species_id - thumb_func_start mon_icon_personality_to_unown_id -mon_icon_personality_to_unown_id: @ 80D2E48 + thumb_func_start GetUnownLetterByPersonality +GetUnownLetterByPersonality: @ 80D2E48 push {lr} adds r2, r0, 0 cmp r2, 0 @@ -219,7 +219,7 @@ _080D2E7E: _080D2E80: pop {r1} bx r1 - thumb_func_end mon_icon_personality_to_unown_id + thumb_func_end GetUnownLetterByPersonality thumb_func_start sub_80D2E84 sub_80D2E84: @ 80D2E84 @@ -229,7 +229,7 @@ sub_80D2E84: @ 80D2E84 lsrs r4, r0, 16 adds r0, r4, 0 mov r1, sp - bl sub_80D45E8 + bl MailSpeciesToSpecies lsls r0, 16 lsrs r0, 16 cmp r0, 0xC9 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index c30cd7c28..1b93496a7 100755 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -2201,7 +2201,7 @@ _080C83CC: ldr r1, =0x00000ce6 adds r0, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _080C83F4 @@ -2304,7 +2304,7 @@ _080C84C8: ldr r1, =0x00000ce6 adds r0, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _080C84F8 @@ -2874,7 +2874,7 @@ _080C8A0C: ldr r2, =0x00000ce6 adds r0, r2 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 bne _080C8A8C @@ -2913,7 +2913,7 @@ _080C8A7C: ldr r2, =0x00000ce6 adds r0, r1, r2 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _080C8A98 @@ -3409,7 +3409,7 @@ _080C8F0C: adds r0, 0x1 strb r0, [r1] _080C8F22: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -3661,7 +3661,7 @@ _080C914E: ldr r1, =0x00000ce6 adds r0, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 bne _080C9168 @@ -3943,7 +3943,7 @@ _080C93E4: ldr r1, =0x00000ce6 adds r0, r1 ldrh r0, [r0] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 bne _080C9404 @@ -4133,7 +4133,7 @@ _080C9584: b _080C9664 .pool _080C95A4: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4927,7 +4927,7 @@ _080C9C78: b _080C9CAA .pool _080C9C8C: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -5058,7 +5058,7 @@ _080C9DAC: b _080C9DE0 .pool _080C9DC0: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -16168,7 +16168,7 @@ sub_80CFB44: @ 80CFB44 .pool _080CFB8C: ldrh r0, [r1] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 bne _080CFBA4 @@ -16197,7 +16197,7 @@ _080CFBAC: .pool _080CFBCC: ldrh r0, [r1] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index b71d6518c..5ae458d6d 100755 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -4207,7 +4207,7 @@ sub_81C61E0: @ 81C61E0 cmp r0, 0x3 beq _081C620C ldrh r0, [r4] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4673,7 +4673,7 @@ sub_81C6648: @ 81C6648 bl sub_81C61A8 ldr r5, =gSpecialVar_ItemId ldrh r0, [r5] - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/pokenav.s b/asm/pokenav.s index d0988563a..de7b93c5f 100755 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -8089,7 +8089,7 @@ _081CB0C0: thumb_func_start sub_81CB0C8 sub_81CB0C8: @ 81CB0C8 push {lr} - ldr r1, =gUnknown_085500A4 + ldr r1, =gRematchTable lsls r0, 4 adds r0, r1 ldrh r2, [r0, 0xA] @@ -20738,7 +20738,7 @@ _081D15B6: thumb_func_start sub_81D15BC sub_81D15BC: @ 81D15BC - ldr r1, =gUnknown_085500A4 + ldr r1, =gRematchTable lsls r0, 4 adds r0, r1 ldrh r0, [r0] @@ -20751,7 +20751,7 @@ sub_81D15CC: @ 81D15CC push {lr} adds r3, r0, 0 movs r1, 0 - ldr r2, =gUnknown_085500A4 + ldr r2, =gRematchTable _081D15D4: ldrh r0, [r2] cmp r0, r3 @@ -21440,7 +21440,7 @@ _081D1A24: cmp r0, 0 bne _081D1A1C adds r0, r7, 0 - bl sub_80B2318 + bl CountBattledRematchTeams lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 @@ -30343,8 +30343,8 @@ _081D6176: .pool thumb_func_end sub_81D6134 - thumb_func_start battle_init -battle_init: @ 81D6180 + thumb_func_start sub_81D6180 +sub_81D6180: @ 81D6180 lsls r0, 24 ldr r1, =gSaveBlock2Ptr ldr r1, [r1] @@ -30355,7 +30355,7 @@ battle_init: @ 81D6180 ldrh r0, [r1] bx lr .pool - thumb_func_end battle_init + thumb_func_end sub_81D6180 thumb_func_start GetTrainerHillTrainerFlag @ u8 GetTrainerHillTrainerFlag(u8 fieldObjectId) diff --git a/asm/record_mixing.s b/asm/record_mixing.s index e7d7c8a38..f4271556c 100644 --- a/asm/record_mixing.s +++ b/asm/record_mixing.s @@ -3650,7 +3650,7 @@ _080E8A78: beq _080E8A90 mov r0, r8 movs r1, 0xFC - bl sub_81DB4DC + bl PadNameString _080E8A90: ldrb r1, [r7] lsrs r1, 4 diff --git a/asm/rom6.s b/asm/rom6.s index 51ae2834f..e3145fb8a 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -447,5 +447,5 @@ _081357EE: bx r0 .pool thumb_func_end sub_81357BC - + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_81370FC.s b/asm/rom_81370FC.s index 7ca021bd4..02d8fb350 100644 --- a/asm/rom_81370FC.s +++ b/asm/rom_81370FC.s @@ -5,9 +5,6 @@ .text - - - thumb_func_start sub_81370FC sub_81370FC: @ 81370FC push {r4,lr} @@ -862,7 +859,7 @@ _0813785A: thumb_func_start sp0C8_whiteout_maybe sp0C8_whiteout_maybe: @ 813787C push {lr} - ldr r0, =c2_whiteout + ldr r0, =CB2_WhiteOut bl SetMainCallback2 movs r0, 0 pop {r1} @@ -870,6 +867,8 @@ sp0C8_whiteout_maybe: @ 813787C .pool thumb_func_end sp0C8_whiteout_maybe +@ time_events.o + thumb_func_start sub_8137890 sub_8137890: @ 8137890 push {r4,lr} @@ -926,8 +925,8 @@ sub_81378E4: @ 81378E4 bx r0 thumb_func_end sub_81378E4 - thumb_func_start sub_8137904 -sub_8137904: @ 8137904 + thumb_func_start UpdateMirageRnd +UpdateMirageRnd: @ 8137904 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -953,7 +952,7 @@ _08137928: pop {r0} bx r0 .pool - thumb_func_end sub_8137904 + thumb_func_end UpdateMirageRnd thumb_func_start sub_813793C sub_813793C: @ 813793C @@ -1067,8 +1066,8 @@ sub_8137A0C: @ 8137A0C .pool thumb_func_end sub_8137A0C - thumb_func_start sub_8137A20 -sub_8137A20: @ 8137A20 + thumb_func_start UpdateBirchState +UpdateBirchState: @ 8137A20 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 16 @@ -1087,7 +1086,9 @@ sub_8137A20: @ 8137A20 pop {r0} bx r0 .pool - thumb_func_end sub_8137A20 + thumb_func_end UpdateBirchState + +@ birch_pc.o thumb_func_start sub_8137A4C sub_8137A4C: @ 8137A4C @@ -4287,15 +4288,15 @@ _08139456: bx r1 thumb_func_end sub_81393FC - thumb_func_start sub_813945C -sub_813945C: @ 813945C + thumb_func_start SetShoalItemFlag +SetShoalItemFlag: @ 813945C push {lr} ldr r0, =0x000008bf bl FlagSet pop {r0} bx r0 .pool - thumb_func_end sub_813945C + thumb_func_end SetShoalItemFlag thumb_func_start sub_813946C sub_813946C: @ 813946C @@ -5616,8 +5617,8 @@ _08139EEE: bx r1 thumb_func_end sub_8139ED0 - thumb_func_start sub_8139EF4 -sub_8139EF4: @ 8139EF4 + thumb_func_start UpdateFrontierManiac +UpdateFrontierManiac: @ 8139EF4 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 16 @@ -5636,7 +5637,7 @@ sub_8139EF4: @ 8139EF4 pop {r0} bx r0 .pool - thumb_func_end sub_8139EF4 + thumb_func_end UpdateFrontierManiac thumb_func_start sub_8139F20 sub_8139F20: @ 8139F20 @@ -6684,8 +6685,8 @@ _0813A7C6: .pool thumb_func_end sub_813A7B8 - thumb_func_start sub_813A7F4 -sub_813A7F4: @ 813A7F4 + thumb_func_start UpdateFrontierGambler +UpdateFrontierGambler: @ 813A7F4 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 16 @@ -6704,7 +6705,7 @@ sub_813A7F4: @ 813A7F4 pop {r0} bx r0 .pool - thumb_func_end sub_813A7F4 + thumb_func_end UpdateFrontierGambler thumb_func_start sub_813A820 sub_813A820: @ 813A820 diff --git a/asm/script_menu.s b/asm/script_menu.s index be7cbfbc7..233a5e14c 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -444,7 +444,7 @@ task_yes_no_maybe: @ 80E215C b _080E21C4 .pool _080E2180: - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 movs r0, 0x1 diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s index 8f25318ab..4f0fb850b 100644 --- a/asm/script_pokemon_util_80F87D8.s +++ b/asm/script_pokemon_util_80F87D8.s @@ -1359,8 +1359,8 @@ ScriptGiveEgg: @ 80F92C8 bx r1 thumb_func_end ScriptGiveEgg - thumb_func_start sub_80F92F8 -sub_80F92F8: @ 80F92F8 + thumb_func_start HasEnoughMonsForDoubleBattle +HasEnoughMonsForDoubleBattle: @ 80F92F8 push {lr} bl GetMonsStateToDoubles lsls r0, 24 @@ -1382,7 +1382,7 @@ _080F9318: pop {r0} bx r0 .pool - thumb_func_end sub_80F92F8 + thumb_func_end HasEnoughMonsForDoubleBattle thumb_func_start sub_80F9320 sub_80F9320: @ 80F9320 diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 6390ae992..24e755648 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -1581,7 +1581,7 @@ sub_812B158: @ 812B158 thumb_func_start sub_812B1B0 sub_812B1B0: @ 812B1B0 push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 diff --git a/asm/start_menu.s b/asm/start_menu.s index 634425f80..6182c3c27 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -356,7 +356,7 @@ sub_809FA9C: @ 809FA9C bl is_c1_link_related_active cmp r0, 0 bne _0809FAB2 - bl player_bitmagic + bl FreezeMapObjects bl sub_808B864 bl sub_808BCF4 _0809FAB2: @@ -1121,7 +1121,7 @@ sub_80A00EC: @ 80A00EC thumb_func_start sub_80A0108 sub_80A0108: @ 80A0108 push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -1226,7 +1226,7 @@ sub_80A01D0: @ 80A01D0 thumb_func_start sub_80A01EC sub_80A01EC: @ 80A01EC push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -1441,7 +1441,7 @@ sub_80A0388: @ 80A0388 thumb_func_start sub_80A03A4 sub_80A03A4: @ 80A03A4 push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 diff --git a/asm/trade.s b/asm/trade.s index d36ae3c67..10daff6b9 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -3696,7 +3696,7 @@ _0807920E: thumb_func_start sub_8079218 sub_8079218: @ 8079218 push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -3798,7 +3798,7 @@ _080792D8: thumb_func_start sub_80792E4 sub_80792E4: @ 80792E4 push {lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -13369,7 +13369,7 @@ sub_807E7E8: @ 807E7E8 ldrh r0, [r5, 0x28] cmp r0, 0 beq _0807E960 - bl itemid_is_mail + bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0807E954 @@ -13442,7 +13442,7 @@ _0807E98E: bl StringCopy adds r0, r4, 0 movs r1, 0 - bl sub_81DB4DC + bl PadNameString ldr r1, [r6, 0x18] lsrs r0, r1, 24 strb r0, [r5, 0x1A] diff --git a/asm/trainer_rematch.s b/asm/trainer_rematch.s index b814934a3..1c874f28f 100755 --- a/asm/trainer_rematch.s +++ b/asm/trainer_rematch.s @@ -178,14 +178,14 @@ sub_81DA6CC: @ 81DA6CC push {r4-r6,lr} adds r5, r0, 0 movs r4, 0 - ldr r6, =gUnknown_085500A4 + ldr r6, =gRematchTable _081DA6D4: lsls r0, r4, 1 lsls r1, r5, 4 adds r0, r1 adds r0, r6 ldrh r0, [r0] - bl HasTrainerAlreadyBeenFought + bl HasTrainerBeenFought lsls r0, 24 cmp r0, 0 bne _081DA6F0 diff --git a/asm/trainer_see.s b/asm/trainer_see.s index ad6cc370e..16398f9a4 100644 --- a/asm/trainer_see.s +++ b/asm/trainer_see.s @@ -5,133 +5,6 @@ .text - thumb_func_start CheckForTrainersWantingBattle -@ bool8 CheckForTrainersWantingBattle() -CheckForTrainersWantingBattle: @ 80B3BE8 - push {r4-r7,lr} - ldr r0, =gUnknown_030060A8 - movs r1, 0 - strb r1, [r0] - ldr r0, =gUnknown_02038BFC - strb r1, [r0] - movs r4, 0 - ldr r6, =gMapObjects -_080B3BF8: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r1, r0, r6 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _080B3C38 - ldrb r0, [r1, 0x7] - cmp r0, 0x1 - beq _080B3C12 - cmp r0, 0x3 - bne _080B3C38 -_080B3C12: - adds r0, r4, 0 - bl CheckIfTrainerWantsBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080B3C42 - cmp r0, 0 - beq _080B3C38 - ldr r0, =gUnknown_030060A8 - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0x1 - bhi _080B3C88 - bl GetMonsStateToDoubles_2 - lsls r0, 24 - cmp r0, 0 - bne _080B3C42 -_080B3C38: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080B3BF8 -_080B3C42: - ldr r0, =gUnknown_030060A8 - ldrb r4, [r0] - adds r5, r0, 0 - cmp r4, 0x1 - bne _080B3C88 - bl ResetTrainerOpponentIds - ldr r2, =gUnknown_03006090 - ldrb r0, [r5] - subs r0, 0x1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, 0x4 - adds r1, r2 - ldr r1, [r1] - bl SingleTrainerWantsBattle - ldr r0, =gUnknown_030060AC - strb r4, [r0] - movs r0, 0x1 - b _080B3CF4 - .pool -_080B3C88: - ldrb r0, [r5] - cmp r0, 0x2 - bne _080B3CEC - bl ResetTrainerOpponentIds - movs r4, 0 - ldrb r5, [r5] - cmp r4, r5 - bcs _080B3CC6 - ldr r6, =gUnknown_03006090 - adds r7, r6, 0x4 - ldr r5, =gUnknown_02038BFC -_080B3CA0: - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r0, r1, r6 - ldrb r0, [r0] - adds r1, r7 - ldr r1, [r1] - bl TwoTrainersWantBattle - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r0, =gUnknown_030060A8 - ldrb r0, [r0] - cmp r4, r0 - bcc _080B3CA0 -_080B3CC6: - bl TwoTrainersWantBattleExecuteScript - ldr r1, =gUnknown_02038BFC - movs r0, 0 - strb r0, [r1] - ldr r1, =gUnknown_030060AC - movs r0, 0x1 - strb r0, [r1] - movs r0, 0x1 - b _080B3CF4 - .pool -_080B3CEC: - ldr r1, =gUnknown_030060AC - movs r0, 0 - strb r0, [r1] - movs r0, 0 -_080B3CF4: - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end CheckForTrainersWantingBattle - thumb_func_start CheckIfTrainerWantsBattle @ u8 CheckIfTrainerWantsBattle(u8 trainerFieldObjectId) CheckIfTrainerWantsBattle: @ 80B3D00 @@ -203,8 +76,8 @@ _080B3D7C: movs r1, 0x2 mov r9, r1 _080B3D8A: - ldr r2, =gUnknown_03006090 - ldr r4, =gUnknown_030060A8 + ldr r2, =gApproachingTrainers + ldr r4, =gNoOfApproachingTrainers ldrb r1, [r4] lsls r0, r1, 1 adds r0, r1 @@ -608,8 +481,8 @@ TrainerApproachPlayer: @ 80B406C ldr r0, =c3_8081EDC movs r1, 0x50 bl CreateTask - ldr r4, =gUnknown_03006090 - ldr r3, =gUnknown_030060A8 + ldr r4, =gApproachingTrainers + ldr r3, =gNoOfApproachingTrainers ldrb r2, [r3] lsls r1, r2, 1 adds r1, r2 @@ -645,16 +518,16 @@ TrainerApproachPlayer: @ 80B406C sub_80B40C8: @ 80B40C8 push {r4,r5,lr} adds r2, r0, 0 - ldr r0, =gUnknown_02038BFC + ldr r0, =gApproachingTrainerId ldrb r0, [r0] cmp r0, 0 bne _080B40E4 - ldr r0, =gUnknown_03006090 + ldr r0, =gApproachingTrainers ldrb r5, [r0, 0x8] b _080B40E8 .pool _080B40E4: - ldr r0, =gUnknown_03006090 + ldr r0, =gApproachingTrainers ldrb r5, [r0, 0x14] _080B40E8: ldr r4, =c3_8081EDC @@ -1290,11 +1163,11 @@ sub_80B45BC: @ 80B45BC thumb_func_start sub_80B45D0 sub_80B45D0: @ 80B45D0 push {lr} - ldr r0, =gUnknown_030060A8 + ldr r0, =gNoOfApproachingTrainers ldrb r0, [r0] cmp r0, 0x2 bne _080B4610 - ldr r1, =gUnknown_02038BFC + ldr r1, =gApproachingTrainerId ldrb r0, [r1] cmp r0, 0 bne _080B460C @@ -1304,7 +1177,7 @@ sub_80B45D0: @ 80B45D0 movs r0, 0x1 strh r0, [r1] bl UnfreezeMapObjects - ldr r0, =gUnknown_03006090 + ldr r0, =gApproachingTrainers ldrb r0, [r0, 0xC] bl sub_80974D0 b _080B4616 @@ -1531,16 +1404,16 @@ _080B47B2: thumb_func_start sub_80B47BC sub_80B47BC: @ 80B47BC push {lr} - ldr r0, =gUnknown_02038BFC + ldr r0, =gApproachingTrainerId ldrb r0, [r0] cmp r0, 0 beq _080B47D4 - ldr r0, =gUnknown_03006090 + ldr r0, =gApproachingTrainers ldrb r0, [r0, 0xC] b _080B47D8 .pool _080B47D4: - ldr r0, =gUnknown_03006090 + ldr r0, =gApproachingTrainers ldrb r0, [r0] _080B47D8: pop {r1} @@ -1560,12 +1433,12 @@ sub_80B47E0: @ 80B47E0 _080B47EE: cmp r0, 0 beq _080B47FC - ldr r0, =gUnknown_03006090 + ldr r0, =gApproachingTrainers ldrb r0, [r0, 0xC] b _080B4800 .pool _080B47FC: - ldr r0, =gUnknown_03006090 + ldr r0, =gApproachingTrainers ldrb r0, [r0] _080B4800: pop {r1} @@ -1580,7 +1453,7 @@ sub_80B4808: @ 80B4808 ldrb r0, [r0] cmp r0, 0x1 bne _080B4870 - ldr r2, =gUnknown_03006090 + ldr r2, =gApproachingTrainers ldr r0, =gUnknown_03006080 ldrh r1, [r0] lsls r0, r1, 1 diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 9d7014db7..b01f1eff4 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -900,7 +900,7 @@ sub_8166D44: @ 8166D44 thumb_func_start sub_8166DE4 sub_8166DE4: @ 8166DE4 push {r4,lr} - bl sub_8198C58 + bl ProcessMenuInputNoWrap_ lsls r0, 24 lsrs r4, r0, 24 asrs r1, r0, 24 diff --git a/asm/wallclock.s b/asm/wallclock.s deleted file mode 100644 index 5c818212c..000000000 --- a/asm/wallclock.s +++ /dev/null @@ -1,1515 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_81347B4 -sub_81347B4: @ 81347B4 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_81347B4 - - thumb_func_start LoadWallClockGraphics -LoadWallClockGraphics: @ 81347C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0xE - movs r1, 0 - bl SetGpuReg - movs r0, 0xC - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0 - bl SetGpuReg - movs r0, 0x8 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0813486C: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _0813486C - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, =gUnknown_08DCC05C - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - bne _081348FC - ldr r0, =gUnknown_08DCC01C - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - b _08134906 - .pool -_081348FC: - ldr r0, =gUnknown_08DCC03C - movs r1, 0 - movs r2, 0x20 - bl LoadPalette -_08134906: - bl GetOverworldTextboxPalettePtr - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - ldr r0, =gUnknown_085B21D4 - movs r1, 0xC0 - movs r2, 0x8 - bl LoadPalette - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085B21FC - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r0, =gUnknown_085B21DC - bl InitWindows - bl DeactivateAllTextPrinters - movs r1, 0x94 - lsls r1, 2 - movs r0, 0 - movs r2, 0xD0 - bl sub_809882C - bl clear_scheduled_bg_copies_to_vram - bl remove_some_task - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - ldr r0, =gUnknown_085B2208 - bl LoadCompressedObjectPic - ldr r0, =gUnknown_085B2218 - bl LoadSpritePalettes - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end LoadWallClockGraphics - - thumb_func_start sub_813498C -sub_813498C: @ 813498C - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x1 - bl EnableInterrupts - ldr r0, =sub_81347B4 - bl SetVBlankCallback - ldr r0, =sub_8134C9C - bl SetMainCallback2 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_813498C - - thumb_func_start Cb2_StartWallClock -Cb2_StartWallClock: @ 81349F4 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0xC - bl LoadWallClockGraphics - ldr r0, =gUnknown_08DCC648 - ldr r1, =0x06003800 - bl LZ77UnCompVram - ldr r0, =sub_8134CB8 - movs r1, 0 - bl CreateTask - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - mov r8, r1 - movs r1, 0xA - strh r1, [r0, 0xC] - mov r2, r8 - strh r2, [r0, 0xE] - strh r2, [r0, 0x10] - strh r2, [r0, 0x12] - strh r2, [r0, 0x14] - strh r2, [r0, 0x8] - movs r1, 0x96 - lsls r1, 1 - strh r1, [r0, 0xA] - ldr r0, =gUnknown_085B2250 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSprites - mov r9, r1 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - strh r6, [r1, 0x2E] - ldrb r2, [r1, 0x1] - movs r5, 0x4 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - movs r2, 0x1 - mov r10, r2 - mov r2, r10 - orrs r0, r2 - strb r0, [r1, 0x1] - ldrb r2, [r1, 0x3] - movs r4, 0x3F - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x3] - ldr r0, =gUnknown_085B2268 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - strh r6, [r1, 0x2E] - ldrb r0, [r1, 0x1] - ands r5, r0 - mov r0, r10 - orrs r5, r0 - strb r5, [r1, 0x1] - ldrb r0, [r1, 0x3] - ands r4, r0 - movs r0, 0x2 - orrs r4, r0 - strb r4, [r1, 0x3] - ldr r0, =gUnknown_085B22A0 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - strh r6, [r1, 0x2E] - movs r0, 0x2D - strh r0, [r1, 0x30] - ldr r0, =gUnknown_085B22B8 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - strh r6, [r1, 0x2E] - movs r0, 0x5A - strh r0, [r1, 0x30] - bl sub_813498C - ldr r2, =gText_Confirm3 - movs r0, 0x1 - str r0, [sp] - mov r1, r8 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - movs r3, 0 - bl PrintTextOnWindow - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end Cb2_StartWallClock - - thumb_func_start Cb2_ViewWallClock -Cb2_ViewWallClock: @ 8134B44 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - bl LoadWallClockGraphics - ldr r0, =gUnknown_08DCC908 - ldr r1, =0x06003800 - bl LZ77UnCompVram - ldr r0, =sub_8134F10 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r7, 0 - bl sub_8135130 - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x12 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08134B9C - movs r2, 0x2D - mov r10, r2 - movs r0, 0x5A - str r0, [sp, 0xC] - b _08134BA4 - .pool -_08134B9C: - movs r1, 0x5A - mov r10, r1 - movs r2, 0x87 - str r2, [sp, 0xC] -_08134BA4: - ldr r0, =gUnknown_085B2250 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r6, =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - movs r0, 0 - mov r9, r0 - strh r7, [r1, 0x2E] - ldrb r2, [r1, 0x1] - movs r5, 0x4 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - movs r2, 0x1 - mov r8, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, 0x1] - ldrb r2, [r1, 0x3] - movs r4, 0x3F - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x3] - ldr r0, =gUnknown_085B2268 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - strh r7, [r1, 0x2E] - ldrb r0, [r1, 0x1] - ands r5, r0 - mov r0, r8 - orrs r5, r0 - strb r5, [r1, 0x1] - ldrb r0, [r1, 0x3] - ands r4, r0 - movs r0, 0x2 - orrs r4, r0 - strb r4, [r1, 0x3] - ldr r0, =gUnknown_085B22A0 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - strh r7, [r1, 0x2E] - mov r2, r10 - strh r2, [r1, 0x30] - ldr r0, =gUnknown_085B22B8 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - strh r7, [r1, 0x2E] - mov r0, sp - ldrh r0, [r0, 0xC] - strh r0, [r1, 0x30] - bl sub_813498C - ldr r2, =gText_Cancel4 - movs r0, 0x1 - str r0, [sp] - mov r1, r9 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - movs r3, 0 - bl PrintTextOnWindow - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end Cb2_ViewWallClock - - thumb_func_start sub_8134C9C -sub_8134C9C: @ 8134C9C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl do_scheduled_bg_tilemap_copies_to_vram - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8134C9C - - thumb_func_start sub_8134CB8 -sub_8134CB8: @ 8134CB8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08134CD8 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_8134CE8 - str r0, [r1] -_08134CD8: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8134CB8 - - thumb_func_start sub_8134CE8 -sub_8134CE8: @ 8134CE8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - movs r1, 0x6 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - beq _08134D1C - ldrh r0, [r5, 0x8] - ldrb r1, [r5, 0x10] - ldrb r2, [r5, 0x14] - bl sub_8134FFC - strh r0, [r5, 0x8] - b _08134DBE - .pool -_08134D1C: - movs r2, 0xE - ldrsh r1, [r5, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - strh r0, [r5, 0x8] - movs r3, 0xC - ldrsh r0, [r5, r3] - movs r1, 0xC - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 1 - movs r1, 0xE - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - adds r4, r1 - strh r4, [r5, 0xA] - ldr r2, =gMain - ldrh r0, [r2, 0x2E] - movs r3, 0x1 - adds r1, r3, 0 - ands r1, r0 - cmp r1, 0 - beq _08134D70 - ldr r0, =sub_8134DC4 - str r0, [r5] - b _08134DBE - .pool -_08134D70: - strh r1, [r5, 0x10] - ldrh r1, [r2, 0x2C] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08134D7E - strh r3, [r5, 0x10] -_08134D7E: - ldrh r1, [r2, 0x2C] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08134D8C - movs r0, 0x2 - strh r0, [r5, 0x10] -_08134D8C: - ldrh r1, [r5, 0x10] - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _08134DBC - ldrh r2, [r5, 0x14] - movs r3, 0x14 - ldrsh r0, [r5, r3] - cmp r0, 0xFE - bgt _08134DA4 - adds r0, r2, 0x1 - strh r0, [r5, 0x14] -_08134DA4: - ldrh r0, [r5, 0x8] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r5, 0x14] - bl sub_8134FFC - strh r0, [r5, 0x8] - ldrb r1, [r5, 0x10] - adds r0, r6, 0 - bl sub_813504C - b _08134DBE -_08134DBC: - strh r0, [r5, 0x14] -_08134DBE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8134CE8 - - thumb_func_start sub_8134DC4 -sub_8134DC4: @ 8134DC4 - push {r4,r5,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r5, 0x94 - lsls r5, 2 - movs r0, 0 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0xD - bl SetWindowBorderStyle - ldr r2, =gText_IsThisTheCorrectTime - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r1, 0x1 - movs r3, 0 - bl PrintTextOnWindow - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - ldr r0, =gUnknown_085B21F4 - adds r1, r5, 0 - movs r2, 0xD - movs r3, 0x1 - bl CreateYesNoMenu - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =c3_80BF560 - str r1, [r0] - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8134DC4 - - thumb_func_start c3_80BF560 -c3_80BF560: @ 8134E30 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8198C58 - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _08134E56 - cmp r1, 0 - bgt _08134E50 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08134E74 - b _08134E96 -_08134E50: - cmp r1, 0x1 - beq _08134E74 - b _08134E96 -_08134E56: - movs r0, 0x5 - bl PlaySE - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_8134EA4 - b _08134E94 - .pool -_08134E74: - movs r0, 0x5 - bl PlaySE - movs r0, 0 - movs r1, 0 - bl sub_8198070 - movs r0, 0 - bl ClearWindowTilemap - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_8134CE8 -_08134E94: - str r0, [r1] -_08134E96: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end c3_80BF560 - - thumb_func_start sub_8134EA4 -sub_8134EA4: @ 8134EA4 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r2, 0xE - ldrsh r1, [r4, r2] - bl RtcInitLocalTimeOffset - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =c2_080111BC - str r0, [r4] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8134EA4 - - thumb_func_start c2_080111BC -c2_080111BC: @ 8134EE8 - push {lr} - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08134F02 - bl FreeAllWindowBuffers - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_08134F02: - pop {r0} - bx r0 - .pool - thumb_func_end c2_080111BC - - thumb_func_start sub_8134F10 -sub_8134F10: @ 8134F10 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08134F30 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_8134F40 - str r0, [r1] -_08134F30: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8134F10 - - thumb_func_start sub_8134F40 -sub_8134F40: @ 8134F40 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8135130 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08134F66 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_8134F78 - str r0, [r1] -_08134F66: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8134F40 - - thumb_func_start sub_8134F78 -sub_8134F78: @ 8134F78 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_8134FB0 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8134F78 - - thumb_func_start sub_8134FB0 -sub_8134FB0: @ 8134FB0 - push {lr} - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08134FC6 - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_08134FC6: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8134FB0 - - thumb_func_start sub_8134FD4 -sub_8134FD4: @ 8134FD4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, 0x3C - bls _08134FE4 - movs r0, 0x6 - b _08134FF6 -_08134FE4: - cmp r0, 0x1E - bls _08134FEC - movs r0, 0x3 - b _08134FF6 -_08134FEC: - cmp r1, 0xA - bhi _08134FF4 - movs r0, 0x1 - b _08134FF6 -_08134FF4: - movs r0, 0x2 -_08134FF6: - pop {r1} - bx r1 - thumb_func_end sub_8134FD4 - - thumb_func_start sub_8134FFC -sub_8134FFC: @ 8134FFC - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r2, 24 - adds r0, r2, 0 - bl sub_8134FD4 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r5, 0x1 - beq _0813501E - cmp r5, 0x2 - beq _08135030 - b _08135044 -_0813501E: - cmp r4, 0 - beq _08135026 - subs r0, r4, r1 - b _0813503C -_08135026: - movs r2, 0xB4 - lsls r2, 1 - adds r0, r2, 0 - subs r0, r1 - b _0813503C -_08135030: - movs r0, 0xB4 - lsls r0, 1 - subs r0, r1 - cmp r4, r0 - bge _08135042 - adds r0, r4, r1 -_0813503C: - lsls r0, 16 - lsrs r4, r0, 16 - b _08135044 -_08135042: - movs r4, 0 -_08135044: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8134FFC - - thumb_func_start sub_813504C -sub_813504C: @ 813504C - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r4, 0x1 - beq _08135060 - cmp r4, 0x2 - beq _081350A0 - b _081350DE -_08135060: - ldr r0, =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xE] - movs r5, 0xE - ldrsh r0, [r1, r5] - cmp r0, 0 - ble _08135080 - subs r0, r2, 0x1 - strh r0, [r1, 0xE] - b _081350DE - .pool -_08135080: - movs r0, 0x3B - strh r0, [r1, 0xE] - ldrh r2, [r1, 0xC] - movs r6, 0xC - ldrsh r0, [r1, r6] - cmp r0, 0 - ble _08135092 - subs r0, r2, 0x1 - b _08135094 -_08135092: - movs r0, 0x17 -_08135094: - strh r0, [r1, 0xC] - adds r0, r3, 0 - adds r1, r4, 0 - bl sub_81350E8 - b _081350DE -_081350A0: - ldr r0, =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xE] - movs r5, 0xE - ldrsh r0, [r1, r5] - cmp r0, 0x3A - bgt _081350C0 - adds r0, r2, 0x1 - strh r0, [r1, 0xE] - b _081350DE - .pool -_081350C0: - movs r5, 0 - strh r5, [r1, 0xE] - ldrh r2, [r1, 0xC] - movs r6, 0xC - ldrsh r0, [r1, r6] - cmp r0, 0x16 - bgt _081350D4 - adds r0, r2, 0x1 - strh r0, [r1, 0xC] - b _081350D6 -_081350D4: - strh r5, [r1, 0xC] -_081350D6: - adds r0, r3, 0 - adds r1, r4, 0 - bl sub_81350E8 -_081350DE: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_813504C - - thumb_func_start sub_81350E8 -sub_81350E8: @ 81350E8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0xC] - cmp r3, 0x1 - beq _0813510C - cmp r3, 0x2 - beq _0813511E - b _0813512A - .pool -_0813510C: - cmp r0, 0xB - beq _08135116 - cmp r0, 0x17 - beq _0813511A - b _0813512A -_08135116: - movs r0, 0 - b _08135128 -_0813511A: - strh r3, [r1, 0x12] - b _0813512A -_0813511E: - cmp r0, 0 - beq _08135128 - cmp r0, 0xC - bne _0813512A - movs r0, 0x1 -_08135128: - strh r0, [r1, 0x12] -_0813512A: - pop {r0} - bx r0 - thumb_func_end sub_81350E8 - - thumb_func_start sub_8135130 -sub_8135130: @ 8135130 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl RtcCalcLocalTime - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r6, r0, r1 - ldr r5, =gLocalTime - movs r0, 0x2 - ldrsb r0, [r5, r0] - strh r0, [r6, 0xC] - movs r0, 0x3 - ldrsb r0, [r5, r0] - strh r0, [r6, 0xE] - movs r0, 0xE - ldrsh r1, [r6, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - strh r0, [r6, 0x8] - movs r1, 0xC - ldrsh r0, [r6, r1] - movs r1, 0xC - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 1 - movs r1, 0xE - ldrsh r0, [r6, r1] - movs r1, 0xA - bl __divsi3 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - adds r4, r1 - strh r4, [r6, 0xA] - movs r0, 0x2 - ldrsb r0, [r5, r0] - cmp r0, 0xB - bgt _081351A0 - movs r0, 0 - b _081351A2 - .pool -_081351A0: - movs r0, 0x1 -_081351A2: - strh r0, [r6, 0x12] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8135130 - - thumb_func_start sub_81351AC -sub_81351AC: @ 81351AC - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r2, =gTasks - movs r0, 0x2E - ldrsh r1, [r6, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r4, [r0, 0x8] - adds r7, r4, 0 - adds r0, r4, 0 - bl Sin2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _081351D4 - adds r0, 0xF -_081351D4: - lsls r0, 12 - lsrs r5, r0, 16 - adds r0, r4, 0 - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _081351E8 - adds r0, 0xF -_081351E8: - lsls r1, r0, 12 - lsrs r1, 16 - lsls r3, r5, 16 - lsrs r2, r3, 16 - negs r3, r3 - lsrs r3, 16 - str r1, [sp] - movs r0, 0 - bl SetOamMatrix - ldr r1, =gUnknown_085B22D0 - lsls r2, r7, 1 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r3, r0, 16 - adds r1, 0x1 - adds r2, r1 - movs r0, 0 - ldrsb r0, [r2, r0] - lsls r0, 16 - lsrs r2, r0, 16 - cmp r3, 0x80 - bls _08135224 - movs r1, 0xFF - lsls r1, 8 - adds r0, r1, 0 - orrs r3, r0 -_08135224: - cmp r2, 0x80 - bls _08135230 - movs r1, 0xFF - lsls r1, 8 - adds r0, r1, 0 - orrs r2, r0 -_08135230: - strh r3, [r6, 0x24] - strh r2, [r6, 0x26] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81351AC - - thumb_func_start sub_8135244 -sub_8135244: @ 8135244 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r2, =gTasks - movs r0, 0x2E - ldrsh r1, [r6, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r4, [r0, 0xA] - adds r7, r4, 0 - adds r0, r4, 0 - bl Sin2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0813526C - adds r0, 0xF -_0813526C: - lsls r0, 12 - lsrs r5, r0, 16 - adds r0, r4, 0 - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _08135280 - adds r0, 0xF -_08135280: - lsls r1, r0, 12 - lsrs r1, 16 - lsls r3, r5, 16 - lsrs r2, r3, 16 - negs r3, r3 - lsrs r3, 16 - str r1, [sp] - movs r0, 0x1 - bl SetOamMatrix - ldr r1, =gUnknown_085B22D0 - lsls r2, r7, 1 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r3, r0, 16 - adds r1, 0x1 - adds r2, r1 - movs r0, 0 - ldrsb r0, [r2, r0] - lsls r0, 16 - lsrs r2, r0, 16 - cmp r3, 0x80 - bls _081352BC - movs r1, 0xFF - lsls r1, 8 - adds r0, r1, 0 - orrs r3, r0 -_081352BC: - cmp r2, 0x80 - bls _081352C8 - movs r1, 0xFF - lsls r1, 8 - adds r0, r1, 0 - orrs r2, r0 -_081352C8: - strh r3, [r6, 0x24] - strh r2, [r6, 0x26] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8135244 - - thumb_func_start sub_81352DC -sub_81352DC: @ 81352DC - push {r4,lr} - adds r4, r0, 0 - ldr r2, =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x12 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _0813531C - ldrh r1, [r4, 0x30] - adds r0, r1, 0 - subs r0, 0x3C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1D - bhi _08135308 - adds r0, r1, 0x5 - strh r0, [r4, 0x30] -_08135308: - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x3B - bgt _0813533C - adds r0, r1, 0x1 - b _0813533A - .pool -_0813531C: - ldrh r1, [r4, 0x30] - adds r0, r1, 0 - subs r0, 0x2E - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1D - bhi _0813532E - subs r0, r1, 0x5 - strh r0, [r4, 0x30] -_0813532E: - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x4B - ble _0813533C - subs r0, r1, 0x1 -_0813533A: - strh r0, [r4, 0x30] -_0813533C: - ldrh r0, [r4, 0x30] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - subs r1, r0 - lsls r0, r1, 1 - cmp r0, 0 - bge _08135354 - ldr r1, =0x00000fff - adds r0, r1 -_08135354: - asrs r0, 12 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - bl Sin2 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - subs r1, r0 - lsls r0, r1, 1 - cmp r0, 0 - bge _08135370 - ldr r2, =0x00000fff - adds r0, r2 -_08135370: - asrs r0, 12 - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81352DC - - thumb_func_start sub_8135380 -sub_8135380: @ 8135380 - push {r4,lr} - adds r4, r0, 0 - ldr r2, =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x12 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _081353C0 - ldrh r1, [r4, 0x30] - adds r0, r1, 0 - subs r0, 0x69 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1D - bhi _081353AC - adds r0, r1, 0x5 - strh r0, [r4, 0x30] -_081353AC: - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x68 - bgt _081353E0 - adds r0, r1, 0x1 - b _081353DE - .pool -_081353C0: - ldrh r1, [r4, 0x30] - adds r0, r1, 0 - subs r0, 0x5B - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1D - bhi _081353D2 - subs r0, r1, 0x5 - strh r0, [r4, 0x30] -_081353D2: - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x78 - ble _081353E0 - subs r0, r1, 0x1 -_081353DE: - strh r0, [r4, 0x30] -_081353E0: - ldrh r0, [r4, 0x30] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - subs r1, r0 - lsls r0, r1, 1 - cmp r0, 0 - bge _081353F8 - ldr r1, =0x00000fff - adds r0, r1 -_081353F8: - asrs r0, 12 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - bl Sin2 - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - subs r1, r0 - lsls r0, r1, 1 - cmp r0, 0 - bge _08135414 - ldr r2, =0x00000fff - adds r0, r2 -_08135414: - asrs r0, 12 - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8135380 - - .align 2, 0 @ Don't pad with nop. diff --git a/constants/battle_constants.inc b/constants/battle_constants.inc index 34f16a8c9..7309d68cd 100644 --- a/constants/battle_constants.inc +++ b/constants/battle_constants.inc @@ -19,7 +19,7 @@ .set BATTLE_TYPE_PALACE, 0x20000 .set BATTLE_TYPE_ARENA, 0x40000 .set BATTLE_TYPE_FACTORY, 0x80000 - .set BATTLE_TYPE_x100000, 0x100000 + .set BATTLE_TYPE_PIKE, 0x100000 .set BATTLE_TYPE_PYRAMID, 0x200000 .set BATTLE_TYPE_INGAME_PARTNER, 0x400000 .set BATTLE_TYPE_x800000, 0x800000 @@ -28,7 +28,7 @@ .set BATTLE_TYPE_x4000000, 0x4000000 .set BATTLE_TYPE_SECRET_BASE, 0x8000000 .set BATTLE_TYPE_GROUDON, 0x10000000 - .set BATTLE_TYPE_KYORGE, 0x20000000 + .set BATTLE_TYPE_KYOGRE, 0x20000000 .set BATTLE_TYPE_RAYQUAZA, 0x40000000 .set BATTLE_TYPE_x80000000, 0x80000000 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index ef6df1584..4efa72858 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2870,7 +2870,7 @@ BattleScript_FaintedMonTryChooseAnother:: jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_x2000000, BattleScript_FaintedMonChooseAnother - jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_FaintedMonChooseAnother + jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother jumpifword COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonChooseAnother jumpifbyte EQUAL, sBATTLE_STYLE, 0x1, BattleScript_FaintedMonChooseAnother @@ -2965,7 +2965,7 @@ BattleScript_PayDayMoneyAndPickUpItems:: BattleScript_LocalBattleLost:: jumpifbattletype BATTLE_TYPE_DOME, BattleScript_CheckDomeDrew - jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText + jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText jumpifbattletype BATTLE_TYPE_x4000000, BattleScript_LocalBattleLostPrintTrainersWinText jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd diff --git a/data/battle_setup.s b/data/battle_setup.s deleted file mode 100644 index d5043aae9..000000000 --- a/data/battle_setup.s +++ /dev/null @@ -1,190 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_0854FE88:: @ 854FE88 - .byte 0x08, 0x09, 0x05, 0x0a, 0x00, 0x0a, 0x07, 0x06 - -gUnknown_0854FE90:: @ 854FE90 - .byte 0x04, 0x0b, 0x02, 0x03, 0x00, 0x0a, 0x01, 0x06 - -gUnknown_0854FE98:: @ 854FE98 - .byte 0x1d, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29 - -gUnknown_0854FEA4:: @ 854FEA4 - .byte 0x1f, 0x20, 0x21 - -gUnknown_0854FEA7:: @ 854FEA7 - .byte 0x1d, 0x1f, 0x20, 0x21, 0x00 - - .align 2 -gUnknown_0854FEAC:: @ 854FEAC - .4byte gUnknown_02038BC8, 0x00000000 - .4byte gTrainerBattleOpponent_A, 0x00000001 - .4byte gUnknown_02038BD0, 0x00000001 - .4byte gUnknown_02038BD4, 0x00000002 - .4byte gUnknown_02038BDC, 0x00000002 - .4byte gUnknown_02038BE4, 0x00000005 - .4byte gUnknown_02038BE8, 0x00000005 - .4byte gUnknown_02038BF0, 0x00000005 - .4byte gUnknown_02038BEC, 0x00000006 - - .align 2 -gUnknown_0854FEF4:: @ 854FEF4 - .4byte gUnknown_02038BC8, 0x00000000 - .4byte gTrainerBattleOpponent_A, 0x00000001 - .4byte gUnknown_02038BD0, 0x00000001 - .4byte gUnknown_02038BD4, 0x00000002 - .4byte gUnknown_02038BDC, 0x00000002 - .4byte gUnknown_02038BE4, 0x00000005 - .4byte gUnknown_02038BE8, 0x00000005 - .4byte gUnknown_02038BF0, 0x00000002 - .4byte gUnknown_02038BEC, 0x00000006 - - .align 2 -gUnknown_0854FF3C:: @ 854FF3C - .4byte gUnknown_02038BC8, 0x00000000 - .4byte gTrainerBattleOpponent_A, 0x00000001 - .4byte gUnknown_02038BD0, 0x00000001 - .4byte gUnknown_02038BD4, 0x00000002 - .4byte gUnknown_02038BDC, 0x00000002 - .4byte gUnknown_02038BE4, 0x00000005 - .4byte gUnknown_02038BE8, 0x00000002 - .4byte gUnknown_02038BF0, 0x00000005 - .4byte gUnknown_02038BEC, 0x00000006 - - .align 2 -gUnknown_0854FF84:: @ 854FF84 - .4byte gUnknown_02038BC8, 0x00000000 - .4byte gTrainerBattleOpponent_A, 0x00000001 - .4byte gUnknown_02038BD0, 0x00000001 - .4byte gUnknown_02038BD4, 0x00000005 - .4byte gUnknown_02038BDC, 0x00000002 - .4byte gUnknown_02038BE4, 0x00000005 - .4byte gUnknown_02038BE8, 0x00000005 - .4byte gUnknown_02038BF0, 0x00000005 - .4byte gUnknown_02038BEC, 0x00000006 - - .align 2 -gUnknown_0854FFCC:: @ 854FFCC - .4byte gUnknown_02038BC8, 0x00000000 - .4byte gTrainerBattleOpponent_A, 0x00000001 - .4byte gUnknown_02038BD0, 0x00000001 - .4byte gUnknown_02038BD4, 0x00000002 - .4byte gUnknown_02038BDC, 0x00000002 - .4byte gUnknown_02038BE4, 0x00000005 - .4byte gUnknown_02038BE8, 0x00000002 - .4byte gUnknown_02038BF0, 0x00000002 - .4byte gUnknown_02038BEC, 0x00000006 - - .align 2 -gUnknown_08550014:: @ 8550014 - .4byte gUnknown_02038BC8, 0x00000000 - .4byte gTrainerBattleOpponent_B, 0x00000001 - .4byte gUnknown_02038BD0, 0x00000001 - .4byte gUnknown_02038BD8, 0x00000002 - .4byte gUnknown_02038BE0, 0x00000002 - .4byte gUnknown_02038BE4, 0x00000005 - .4byte gUnknown_02038BE8, 0x00000005 - .4byte gUnknown_02038BF4, 0x00000005 - .4byte gUnknown_02038BEC, 0x00000006 - - .align 2 -gUnknown_0855005C:: @ 855005C - .4byte gUnknown_02038BC8, 0x00000000 - .4byte gTrainerBattleOpponent_B, 0x00000001 - .4byte gUnknown_02038BD0, 0x00000001 - .4byte gUnknown_02038BD8, 0x00000002 - .4byte gUnknown_02038BE0, 0x00000002 - .4byte gUnknown_02038BE4, 0x00000005 - .4byte gUnknown_02038BE8, 0x00000005 - .4byte gUnknown_02038BF4, 0x00000002 - .4byte gUnknown_02038BEC, 0x00000006 - - .align 2 -gUnknown_085500A4:: @ 85500A4 - .2byte 0x0025, 0x0028, 0x0029, 0x002a, 0x002b, 0x0000, 0x0021, 0x0000 - .2byte 0x02e1, 0x032c, 0x032d, 0x032e, 0x032f, 0x0000, 0x0014, 0x0000 - .2byte 0x002c, 0x002f, 0x0030, 0x0031, 0x0032, 0x0000, 0x001a, 0x0000 - .2byte 0x0039, 0x003c, 0x003d, 0x003e, 0x003f, 0x0000, 0x0018, 0x0000 - .2byte 0x0040, 0x0043, 0x0044, 0x0045, 0x0046, 0x0000, 0x0018, 0x0000 - .2byte 0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x0000, 0x0027, 0x0000 - .2byte 0x02ff, 0x033c, 0x033d, 0x033e, 0x033f, 0x0000, 0x0024, 0x0000 - .2byte 0x005e, 0x0065, 0x0066, 0x0067, 0x0068, 0x0000, 0x001a, 0x0000 - .2byte 0x004e, 0x0054, 0x0055, 0x0056, 0x0057, 0x0000, 0x001a, 0x0000 - .2byte 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0018, 0x0014, 0x0000 - .2byte 0x0072, 0x0078, 0x0079, 0x007a, 0x007b, 0x0000, 0x0013, 0x0000 - .2byte 0x0090, 0x034c, 0x034d, 0x034e, 0x034f, 0x0018, 0x0038, 0x0000 - .2byte 0x007f, 0x0084, 0x0085, 0x0086, 0x0087, 0x0000, 0x0024, 0x0000 - .2byte 0x0088, 0x008b, 0x008c, 0x008d, 0x008e, 0x0000, 0x0013, 0x0000 - .2byte 0x008f, 0x0093, 0x0094, 0x0095, 0x0096, 0x0000, 0x001d, 0x0000 - .2byte 0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x0000, 0x0016, 0x0000 - .2byte 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x0000, 0x001e, 0x0000 - .2byte 0x02a0, 0x0338, 0x0339, 0x033a, 0x033b, 0x0000, 0x002a, 0x0000 - .2byte 0x00c3, 0x0340, 0x0341, 0x0342, 0x0343, 0x0000, 0x0026, 0x0000 - .2byte 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x0000, 0x0021, 0x0000 - .2byte 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x0000, 0x001d, 0x0000 - .2byte 0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0018, 0x000d, 0x0000 - .2byte 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x0018, 0x0001, 0x0000 - .2byte 0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x0000, 0x0023, 0x0000 - .2byte 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x0000, 0x0026, 0x0000 - .2byte 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0000, 0x0026, 0x0000 - .2byte 0x00fe, 0x0101, 0x0102, 0x0103, 0x0104, 0x0000, 0x0024, 0x0000 - .2byte 0x0118, 0x011a, 0x011b, 0x011c, 0x011d, 0x0000, 0x001f, 0x0000 - .2byte 0x0111, 0x0114, 0x0115, 0x0116, 0x0117, 0x0000, 0x001f, 0x0000 - .2byte 0x011f, 0x0120, 0x0121, 0x0122, 0x0123, 0x0000, 0x0020, 0x0000 - .2byte 0x012e, 0x012f, 0x0130, 0x0131, 0x0132, 0x0000, 0x0019, 0x0000 - .2byte 0x0125, 0x0127, 0x0128, 0x0129, 0x012a, 0x0000, 0x0012, 0x0000 - .2byte 0x0133, 0x0134, 0x0135, 0x0136, 0x0137, 0x0000, 0x001e, 0x0000 - .2byte 0x0139, 0x013a, 0x013b, 0x013c, 0x013d, 0x0018, 0x000c, 0x0000 - .2byte 0x013e, 0x0148, 0x0149, 0x014a, 0x014b, 0x0000, 0x0011, 0x0000 - .2byte 0x0153, 0x015a, 0x015b, 0x015c, 0x015d, 0x0000, 0x0015, 0x0000 - .2byte 0x0178, 0x017b, 0x017c, 0x017d, 0x017e, 0x0000, 0x002b, 0x0000 - .2byte 0x0171, 0x0172, 0x0173, 0x0174, 0x0175, 0x0000, 0x0020, 0x0000 - .2byte 0x0166, 0x0168, 0x0169, 0x016a, 0x016b, 0x0000, 0x0019, 0x0000 - .2byte 0x016c, 0x016d, 0x016e, 0x016f, 0x0170, 0x0000, 0x0020, 0x0000 - .2byte 0x0182, 0x0184, 0x0185, 0x0186, 0x0187, 0x0000, 0x002b, 0x0000 - .2byte 0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0000, 0x0019, 0x0000 - .2byte 0x0179, 0x0334, 0x0335, 0x0336, 0x0337, 0x0000, 0x0029, 0x0000 - .2byte 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x0018, 0x0001, 0x0000 - .2byte 0x0196, 0x0199, 0x019a, 0x019b, 0x019c, 0x0000, 0x0023, 0x0000 - .2byte 0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x0000, 0x001c, 0x0000 - .2byte 0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x0000, 0x001e, 0x0000 - .2byte 0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8, 0x0000, 0x001c, 0x0000 - .2byte 0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4, 0x0000, 0x0027, 0x0000 - .2byte 0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0, 0x0018, 0x000d, 0x0000 - .2byte 0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9, 0x0000, 0x0012, 0x0000 - .2byte 0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4, 0x0000, 0x0028, 0x0000 - .2byte 0x02e4, 0x0330, 0x0331, 0x0332, 0x0333, 0x0000, 0x0017, 0x0000 - .2byte 0x0200, 0x0203, 0x0204, 0x0205, 0x0206, 0x0000, 0x0019, 0x0000 - .2byte 0x0221, 0x0224, 0x0225, 0x0226, 0x0227, 0x0000, 0x0020, 0x0000 - .2byte 0x021a, 0x021d, 0x021e, 0x021f, 0x0220, 0x0000, 0x0020, 0x0000 - .2byte 0x0009, 0x0348, 0x0349, 0x034a, 0x034b, 0x0018, 0x0011, 0x0000 - .2byte 0x022f, 0x0232, 0x0233, 0x0234, 0x0235, 0x0000, 0x0022, 0x0000 - .2byte 0x0228, 0x022b, 0x022c, 0x022d, 0x022e, 0x0000, 0x0022, 0x0000 - .2byte 0x025c, 0x025f, 0x0260, 0x0261, 0x0262, 0x0000, 0x0013, 0x0000 - .2byte 0x026d, 0x026e, 0x026f, 0x0270, 0x0271, 0x0018, 0x000b, 0x0000 - .2byte 0x0273, 0x027c, 0x027d, 0x027e, 0x027f, 0x0000, 0x001b, 0x0000 - .2byte 0x0001, 0x0344, 0x0345, 0x0346, 0x0347, 0x0018, 0x000c, 0x0000 - .2byte 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0018, 0x003e, 0x0000 - .2byte 0x0291, 0x0292, 0x0293, 0x0294, 0x0294, 0x0018, 0x002b, 0x0000 - .2byte 0x0109, 0x0302, 0x0303, 0x0304, 0x0305, 0x0000, 0x0003, 0x0000 - .2byte 0x010a, 0x0306, 0x0307, 0x0308, 0x0309, 0x0000, 0x000b, 0x0000 - .2byte 0x010b, 0x030a, 0x030b, 0x030c, 0x030d, 0x0000, 0x0002, 0x0000 - .2byte 0x010c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0000, 0x000c, 0x0000 - .2byte 0x010d, 0x0312, 0x0313, 0x0314, 0x0315, 0x0000, 0x0000, 0x0000 - .2byte 0x010e, 0x0316, 0x0317, 0x0318, 0x0319, 0x0000, 0x0004, 0x0000 - .2byte 0x010f, 0x031a, 0x031b, 0x031c, 0x031d, 0x0000, 0x0006, 0x0000 - .2byte 0x0110, 0x031e, 0x031f, 0x0320, 0x0321, 0x0000, 0x0007, 0x0000 - .2byte 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0000, 0x0008, 0x0000 - .2byte 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0000, 0x0008, 0x0000 - .2byte 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0008, 0x0000 - .2byte 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0000, 0x0008, 0x0000 - .2byte 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0000, 0x0008, 0x0000 - - .align 2 -gUnknown_08550584:: @ 8550584 - .2byte 0x0867, 0x0868, 0x0869, 0x086a, 0x086b, 0x086c, 0x086d, 0x086e - diff --git a/data/data4c.s b/data/data4c.s deleted file mode 100644 index c1bfab6c3..000000000 --- a/data/data4c.s +++ /dev/null @@ -1,40 +0,0 @@ -@ the fourth big chunk of data - - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_085B21D4:: @ 85B21D4 - .incbin "baserom.gba", 0x5b21d4, 0x8 - -gUnknown_085B21DC:: @ 85B21DC - .incbin "baserom.gba", 0x5b21dc, 0x18 - -gUnknown_085B21F4:: @ 85B21F4 - .incbin "baserom.gba", 0x5b21f4, 0x8 - -gUnknown_085B21FC:: @ 85B21FC - .incbin "baserom.gba", 0x5b21fc, 0xc - -gUnknown_085B2208:: @ 85B2208 - .incbin "baserom.gba", 0x5b2208, 0x10 - -gUnknown_085B2218:: @ 85B2218 - .incbin "baserom.gba", 0x5b2218, 0x38 - -gUnknown_085B2250:: @ 85B2250 - .incbin "baserom.gba", 0x5b2250, 0x18 - -gUnknown_085B2268:: @ 85B2268 - .incbin "baserom.gba", 0x5b2268, 0x38 - -gUnknown_085B22A0:: @ 85B22A0 - .incbin "baserom.gba", 0x5b22a0, 0x18 - -gUnknown_085B22B8:: @ 85B22B8 - .incbin "baserom.gba", 0x5b22b8, 0x18 - -gUnknown_085B22D0:: @ 85B22D0 - .incbin "baserom.gba", 0x5b22d0, 0x2d0 - diff --git a/data/event_scripts.s b/data/event_scripts.s index d76653433..99469dda7 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -846,101 +846,101 @@ EventScript_271356:: @ 8271356 special SetUpTrainerEncounterMusic special sub_80B45AC waitstate - goto EventScript_27143C + goto EventScript_ShowTrainerIntroMsg EventScript_271362:: @ 8271362 lock faceplayer - applymovement 0x800F, Movement_27143A + applymovement VAR_LAST_TALKED, Movement_27143A waitmovement 0 - specialvar VAR_RESULT, check_trainer_flag + specialvar VAR_RESULT, GetTrainerFlag compare_var_to_value VAR_RESULT, 0 goto_if 5, EventScript_271389 special SetUpTrainerEncounterMusic special sub_80B16D8 - goto EventScript_27143C + goto EventScript_ShowTrainerIntroMsg EventScript_271389:: @ 8271389 - ontrainerbattleend + gotopostbattlescript -EventScript_27138A:: @ 827138A +EventScript_TryDoDoubleTrainerBattle:: @ 827138A lock faceplayer call EventScript_27142F - specialvar VAR_RESULT, check_trainer_flag + specialvar VAR_RESULT, GetTrainerFlag compare_var_to_value VAR_RESULT, 0 goto_if 5, EventScript_2713C1 - special sub_80F92F8 + special HasEnoughMonsForDoubleBattle compare_var_to_value VAR_RESULT, 0 - goto_if 5, EventScript_2713BA + goto_if 5, EventScript_NotEnoughMonsForDoubleBattle special SetUpTrainerEncounterMusic special sub_80B16D8 - goto EventScript_27143C + goto EventScript_ShowTrainerIntroMsg -EventScript_2713BA:: @ 82713BA - special special_trainer_unable_to_battle +EventScript_NotEnoughMonsForDoubleBattle:: @ 82713BA + special ShowTrainerCantBattleSpeech waitmessage waitbuttonpress release end EventScript_2713C1:: @ 82713C1 - ontrainerbattleend + gotopostbattlescript EventScript_2713C2:: @ 82713C2 - applymovement 0x800F, Movement_27143A + applymovement VAR_LAST_TALKED, Movement_27143A waitmovement 0 special SetUpTrainerEncounterMusic trainerbattlebegin - ontrainerbattleend + gotopostbattlescript EventScript_2713D1:: @ 82713D1 call EventScript_27142F - specialvar VAR_RESULT, sub_80B22A0 + specialvar VAR_RESULT, IsTrainerReadyForRematch compare_var_to_value VAR_RESULT, 0 goto_eq EventScript_2713F7 special SetUpTrainerEncounterMusic special sub_80B16D8 - special sub_80B1A14 + special ShowTrainerIntroSpeech waitmessage waitbuttonpress - special sub_80B19EC + special BattleSetup_StartRematchBattle waitstate releaseall end EventScript_2713F7:: @ 82713F7 - ontrainerbattleend + gotopostbattlescript -EventScript_2713F8:: @ 82713F8 - specialvar VAR_RESULT, sub_80B22A0 +EventScript_TryDoDoubleRematchBattle:: @ 82713F8 + specialvar VAR_RESULT, IsTrainerReadyForRematch compare_var_to_value VAR_RESULT, 0 goto_eq EventScript_271427 - special sub_80F92F8 + special HasEnoughMonsForDoubleBattle compare_var_to_value VAR_RESULT, 0 - goto_if 5, EventScript_271428 + goto_if 5, EventScript_NotEnoughMonsForDoubleRematchBattle special SetUpTrainerEncounterMusic special sub_80B16D8 - special sub_80B1A14 + special ShowTrainerIntroSpeech waitmessage waitbuttonpress - special sub_80B19EC + special BattleSetup_StartRematchBattle waitstate releaseall end EventScript_271427:: @ 8271427 - ontrainerbattleend + gotopostbattlescript -EventScript_271428:: @ 8271428 - special special_trainer_unable_to_battle +EventScript_NotEnoughMonsForDoubleRematchBattle:: @ 8271428 + special ShowTrainerCantBattleSpeech waitmessage waitbuttonpress release end EventScript_27142F:: @ 827142F - applymovement 0x800F, Movement_27143A + applymovement VAR_LAST_TALKED, Movement_27143A waitmovement 0 return @@ -948,18 +948,18 @@ Movement_27143A: @ 827143A step_59 step_end -EventScript_27143C:: @ 827143C - special sub_80B1A14 +EventScript_ShowTrainerIntroMsg:: @ 827143C + special ShowTrainerIntroSpeech waitmessage waitbuttonpress special sub_80B45D0 compare_var_to_value VAR_RESULT, 1 goto_eq EventScript_271356 - goto EventScript_271454 + goto EventScript_DoTrainerBattle -EventScript_271454:: @ 8271454 +EventScript_DoTrainerBattle:: @ 8271454 trainerbattlebegin - specialvar VAR_RESULT, sub_80B170C + specialvar VAR_RESULT, GetTrainerBattleMode compare_var_to_value VAR_RESULT, 0 goto_eq EventScript_271491 compare_var_to_value VAR_RESULT, 2 @@ -972,7 +972,7 @@ EventScript_271454:: @ 8271454 goto_eq EventScript_271491 EventScript_271491:: @ 8271491 - ontrainerbattleendgoto + gotobeatenscript releaseall end @@ -2272,7 +2272,7 @@ Route101_EventScript_272141:: @ 8272141 Route103_EventScript_272141:: @ 8272141 lock faceplayer - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_if 0, Route101_EventScript_272155 checkflag FLAG_0x119 goto_if 0, Route101_EventScript_1FA2D2 @@ -4086,15 +4086,15 @@ Std_8:: @ 82742C9 delay 30 return -LavaridgeTown_Gym_1F_EventScript_2742E6:: @ 82742E6 - special CheckIfMultipleTrainersWantBattle +EventScript_TryGetTrainerScript:: @ 82742E6 + special ShouldTryGetTrainerScript compare_var_to_value VAR_RESULT, 1 - goto_eq LavaridgeTown_Gym_1F_EventScript_2742F6 + goto_eq EventScript_GotoTrainerScript releaseall end -LavaridgeTown_Gym_1F_EventScript_2742F6:: @ 82742F6 - ontrainerbattleendgoto +EventScript_GotoTrainerScript:: @ 82742F6 + gotobeatenscript releaseall end @@ -13973,12 +13973,12 @@ EventScript_2C83F0:: @ 82C83F0 closemessage end -Text_2C840A:: @ 82C840A +Text_ThisIsATestSignpostMsg:: @ 82C840A .string "This is a test message.\n" .string "This is a signpost.$" -EventScript_2C8436:: @ 82C8436 - msgbox Text_2C840A, 3 +EventScript_TestSignpostMsg:: @ 82C8436 + msgbox Text_ThisIsATestSignpostMsg, 3 end .string "It’s very disappointing…$" diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index b33db9218..96f42dfb0 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -94,8 +94,8 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_turnobject .4byte ScrCmd_trainerbattle .4byte ScrCmd_dotrainerbattle - .4byte ScrCmd_ontrainerbattleend - .4byte ScrCmd_ontrainerbattleendgoto + .4byte ScrCmd_gotopostbattlescript + .4byte ScrCmd_gotobeatenscript .4byte ScrCmd_checktrainerflag .4byte ScrCmd_settrainerflag .4byte ScrCmd_cleartrainerflag diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index 362a78e65..c1e1e540d 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -409,7 +409,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276F23:: @ 8276F23 end OldaleTown_PokemonCenter_2F_EventScript_276F2E:: @ 8276F2E - special sub_80F92F8 + special HasEnoughMonsForDoubleBattle compare_var_to_value VAR_RESULT, 0 goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_276F47 setvar VAR_0x8004, 2 @@ -1194,7 +1194,7 @@ OldaleTown_PokemonCenter_2F_EventScript_27788E:: @ 827788E end OldaleTown_PokemonCenter_2F_EventScript_277899:: @ 8277899 - special sub_80F92F8 + special HasEnoughMonsForDoubleBattle compare_var_to_value VAR_RESULT, 0 goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_2778B2 setvar VAR_0x8004, 1 diff --git a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc index 7d86c6f3f..0b687aaeb 100644 --- a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc +++ b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc @@ -3,7 +3,7 @@ AbandonedShip_Rooms2_1F_MapScripts:: @ 82380A6 AbandonedShip_Rooms2_1F_EventScript_2380A7:: @ 82380A7 trainerbattle 6, TRAINER_KIRA_AND_DAN_1, 0, AbandonedShip_Rooms2_1F_Text_23819D, AbandonedShip_Rooms2_1F_Text_2381DA, AbandonedShip_Rooms2_1F_Text_238257, AbandonedShip_Rooms2_1F_EventScript_2380D7 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq AbandonedShip_Rooms2_1F_EventScript_2380F0 msgbox AbandonedShip_Rooms2_1F_Text_23820F, 4 @@ -26,7 +26,7 @@ AbandonedShip_Rooms2_1F_EventScript_2380F0:: @ 82380F0 AbandonedShip_Rooms2_1F_EventScript_23810B:: @ 823810B trainerbattle 6, TRAINER_KIRA_AND_DAN_1, 0, AbandonedShip_Rooms2_1F_Text_2382A4, AbandonedShip_Rooms2_1F_Text_2382F4, AbandonedShip_Rooms2_1F_Text_23836F, AbandonedShip_Rooms2_1F_EventScript_23813B - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq AbandonedShip_Rooms2_1F_EventScript_238154 msgbox AbandonedShip_Rooms2_1F_Text_23830A, 4 diff --git a/data/scripts/maps/AbandonedShip_Rooms_1F.inc b/data/scripts/maps/AbandonedShip_Rooms_1F.inc index 025b497dd..beaea9b34 100644 --- a/data/scripts/maps/AbandonedShip_Rooms_1F.inc +++ b/data/scripts/maps/AbandonedShip_Rooms_1F.inc @@ -12,7 +12,7 @@ AbandonedShip_Rooms_1F_EventScript_237A9C:: @ 8237A9C AbandonedShip_Rooms_1F_EventScript_237AB3:: @ 8237AB3 trainerbattle 2, TRAINER_THALIA_1, 0, AbandonedShip_Rooms_1F_Text_237B76, AbandonedShip_Rooms_1F_Text_237BB8, AbandonedShip_Rooms_1F_EventScript_237ADF - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq AbandonedShip_Rooms_1F_EventScript_237AFE msgbox AbandonedShip_Rooms_1F_Text_237BDB, 4 diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc index 85a1d708d..240a40fd8 100644 --- a/data/scripts/maps/AncientTomb.inc +++ b/data/scripts/maps/AncientTomb.inc @@ -72,7 +72,7 @@ AncientTomb_EventScript_23905A:: @ 823905A waitmoncry setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0A74 + special StartRegiBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/BattleFrontier_Lounge2.inc b/data/scripts/maps/BattleFrontier_Lounge2.inc index 6b43747cc..bd20f13ac 100644 --- a/data/scripts/maps/BattleFrontier_Lounge2.inc +++ b/data/scripts/maps/BattleFrontier_Lounge2.inc @@ -17,29 +17,29 @@ BattleFrontier_Lounge2_EventScript_26065F:: @ 826065F end BattleFrontier_Lounge2_EventScript_26066D:: @ 826066D - compare_var_to_value VAR_0x402F, 0 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 0 call_if 1, BattleFrontier_Lounge2_EventScript_26070A - compare_var_to_value VAR_0x402F, 1 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 1 call_if 1, BattleFrontier_Lounge2_EventScript_26070F - compare_var_to_value VAR_0x402F, 2 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 2 call_if 1, BattleFrontier_Lounge2_EventScript_260714 - compare_var_to_value VAR_0x402F, 3 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 3 call_if 1, BattleFrontier_Lounge2_EventScript_260719 - compare_var_to_value VAR_0x402F, 4 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 4 call_if 1, BattleFrontier_Lounge2_EventScript_26071E - compare_var_to_value VAR_0x402F, 5 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 5 call_if 1, BattleFrontier_Lounge2_EventScript_260723 - compare_var_to_value VAR_0x402F, 6 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 6 call_if 1, BattleFrontier_Lounge2_EventScript_260728 - compare_var_to_value VAR_0x402F, 7 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 7 call_if 1, BattleFrontier_Lounge2_EventScript_26072D - compare_var_to_value VAR_0x402F, 8 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 8 call_if 1, BattleFrontier_Lounge2_EventScript_260732 - compare_var_to_value VAR_0x402F, 9 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 9 call_if 1, BattleFrontier_Lounge2_EventScript_260737 - compare_var_to_value VAR_0x402F, 3 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 3 call_if 3, BattleFrontier_Lounge2_EventScript_2606F8 - compare_var_to_value VAR_0x402F, 4 + compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 4 call_if 4, BattleFrontier_Lounge2_EventScript_260701 special sub_8139F20 waitmessage diff --git a/data/scripts/maps/BattleFrontier_Lounge3.inc b/data/scripts/maps/BattleFrontier_Lounge3.inc index 0612ccb8e..5fb7a8367 100644 --- a/data/scripts/maps/BattleFrontier_Lounge3.inc +++ b/data/scripts/maps/BattleFrontier_Lounge3.inc @@ -32,7 +32,7 @@ BattleFrontier_Lounge3_EventScript_261DAF:: @ 8261DAF BattleFrontier_Lounge3_EventScript_261DE9:: @ 8261DE9 multichoice 20, 4, 87, 0 - copyvar VAR_0x4032, VAR_RESULT + copyvar VAR_FRONTIER_GAMBLER_AMOUNT_BET, VAR_RESULT switch VAR_RESULT case 0, BattleFrontier_Lounge3_EventScript_261E30 case 1, BattleFrontier_Lounge3_EventScript_261E3B @@ -69,7 +69,7 @@ BattleFrontier_Lounge3_EventScript_261E51:: @ 8261E51 BattleFrontier_Lounge3_EventScript_261E75:: @ 8261E75 copyvar VAR_0x8004, VAR_0x8008 special sub_813A9A4 - setvar VAR_0x4033, 1 + setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1 special sub_813A8FC playse SE_REGI msgbox BattleFrontier_Lounge3_Text_262BE0, 4 @@ -113,37 +113,37 @@ BattleFrontier_Lounge3_EventScript_261EEB:: @ 8261EEB BattleFrontier_Lounge3_EventScript_261EF9:: @ 8261EF9 msgbox BattleFrontier_Lounge3_Text_26346B, 4 - compare_var_to_value VAR_0x4033, 1 + compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1 goto_if 4, BattleFrontier_Lounge3_EventScript_261F12 goto BattleFrontier_Lounge3_EventScript_261DAF end BattleFrontier_Lounge3_EventScript_261F12:: @ 8261F12 - compare_var_to_value VAR_0x4033, 1 + compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1 goto_eq BattleFrontier_Lounge3_EventScript_261F9E - compare_var_to_value VAR_0x4033, 2 + compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 2 goto_eq BattleFrontier_Lounge3_EventScript_261F2E goto BattleFrontier_Lounge3_EventScript_261F71 end BattleFrontier_Lounge3_EventScript_261F2E:: @ 8261F2E msgbox BattleFrontier_Lounge3_Text_263334, 4 - compare_var_to_value VAR_0x4032, 0 + compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 0 call_if 1, BattleFrontier_Lounge3_EventScript_261F80 - compare_var_to_value VAR_0x4032, 1 + compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 1 call_if 1, BattleFrontier_Lounge3_EventScript_261F8A - compare_var_to_value VAR_0x4032, 2 + compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 2 call_if 1, BattleFrontier_Lounge3_EventScript_261F94 msgbox BattleFrontier_Lounge3_Text_2633D4, 9 special sub_813A9D0 msgbox BattleFrontier_Lounge3_Text_2633F2, 4 - setvar VAR_0x4033, 0 + setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 0 release end BattleFrontier_Lounge3_EventScript_261F71:: @ 8261F71 msgbox BattleFrontier_Lounge3_Text_263298, 4 - setvar VAR_0x4033, 0 + setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 0 release end diff --git a/data/scripts/maps/BirthIsland_Exterior.inc b/data/scripts/maps/BirthIsland_Exterior.inc index 8ea18a673..8c298c85a 100644 --- a/data/scripts/maps/BirthIsland_Exterior.inc +++ b/data/scripts/maps/BirthIsland_Exterior.inc @@ -88,7 +88,7 @@ BirthIsland_Exterior_EventScript_267FC1:: @ 8267FC1 setvar VAR_0x8006, 0 special DoScriptedWildBattle setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0934 + special BattleSetup_StartLegendaryBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc index bb2f6d23d..afbd24903 100644 --- a/data/scripts/maps/DesertRuins.inc +++ b/data/scripts/maps/DesertRuins.inc @@ -72,7 +72,7 @@ DesertRuins_EventScript_22DA02:: @ 822DA02 waitmoncry setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0A74 + special StartRegiBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/DewfordTown_Gym.inc b/data/scripts/maps/DewfordTown_Gym.inc index a3f996f25..5e9b5fa7d 100644 --- a/data/scripts/maps/DewfordTown_Gym.inc +++ b/data/scripts/maps/DewfordTown_Gym.inc @@ -157,7 +157,7 @@ DewfordTown_Gym_EventScript_1FC7C1:: @ 81FC7C1 DewfordTown_Gym_EventScript_1FC7C2:: @ 81FC7C2 trainerbattle 1, TRAINER_BRAWLY_1, 0, DewfordTown_Gym_Text_1FCF44, DewfordTown_Gym_Text_1FD008, DewfordTown_Gym_EventScript_1FC7F7 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq DewfordTown_Gym_EventScript_1FC89C checkflag FLAG_0x0A6 diff --git a/data/scripts/maps/FarawayIsland_Interior.inc b/data/scripts/maps/FarawayIsland_Interior.inc index f49d938a7..e86a2da52 100644 --- a/data/scripts/maps/FarawayIsland_Interior.inc +++ b/data/scripts/maps/FarawayIsland_Interior.inc @@ -145,7 +145,7 @@ FarawayIsland_Interior_EventScript_267DF2:: @ 8267DF2 setvar VAR_0x8006, 0 special DoScriptedWildBattle setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0934 + special BattleSetup_StartLegendaryBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc index e3990cd23..67d5a21eb 100644 --- a/data/scripts/maps/FortreeCity_Gym.inc +++ b/data/scripts/maps/FortreeCity_Gym.inc @@ -17,7 +17,7 @@ FortreeCity_Gym_EventScript_2165C4:: @ 82165C4 FortreeCity_Gym_EventScript_2165C8:: @ 82165C8 trainerbattle 1, TRAINER_WINONA_1, 0, FortreeCity_Gym_Text_216D75, FortreeCity_Gym_Text_216E60, FortreeCity_Gym_EventScript_2165FD - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq FortreeCity_Gym_EventScript_21668D checkflag FLAG_0x0AA diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc index 69a3ef76a..4d6a4fda9 100644 --- a/data/scripts/maps/IslandCave.inc +++ b/data/scripts/maps/IslandCave.inc @@ -104,7 +104,7 @@ IslandCave_EventScript_238F58:: @ 8238F58 waitmoncry setwildbattle SPECIES_REGICE, 40, ITEM_NONE setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0A74 + special StartRegiBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/JaggedPass.inc b/data/scripts/maps/JaggedPass.inc index 1fb3b316e..4cc415b30 100644 --- a/data/scripts/maps/JaggedPass.inc +++ b/data/scripts/maps/JaggedPass.inc @@ -104,7 +104,7 @@ JaggedPass_EventScript_230785:: @ 8230785 JaggedPass_EventScript_23079C:: @ 823079C trainerbattle 2, TRAINER_DIANA_1, 0, JaggedPass_Text_230974, JaggedPass_Text_2309B5, JaggedPass_EventScript_2307C8 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq JaggedPass_EventScript_2307E4 msgbox JaggedPass_Text_2309D8, 4 @@ -128,7 +128,7 @@ JaggedPass_EventScript_2307E4:: @ 82307E4 JaggedPass_EventScript_2307FB:: @ 82307FB trainerbattle 2, TRAINER_ETHAN_1, 0, JaggedPass_Text_230B10, JaggedPass_Text_230B50, JaggedPass_EventScript_230827 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq JaggedPass_EventScript_230843 msgbox JaggedPass_Text_230B93, 4 diff --git a/data/scripts/maps/LavaridgeTown_Gym_1F.inc b/data/scripts/maps/LavaridgeTown_Gym_1F.inc index 55ae851e0..581f4ca1d 100644 --- a/data/scripts/maps/LavaridgeTown_Gym_1F.inc +++ b/data/scripts/maps/LavaridgeTown_Gym_1F.inc @@ -60,7 +60,7 @@ LavaridgeTown_Gym_1F_EventScript_1FE78B:: @ 81FE78B LavaridgeTown_Gym_1F_EventScript_1FE78C:: @ 81FE78C trainerbattle 1, TRAINER_FLANNERY_1, 0, LavaridgeTown_Gym_1F_Text_1FF0DC, LavaridgeTown_Gym_1F_Text_1FF233, LavaridgeTown_Gym_1F_EventScript_1FE7C1 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq LavaridgeTown_Gym_1F_EventScript_1FE864 checkflag FLAG_0x0A8 @@ -127,9 +127,9 @@ LavaridgeTown_Gym_1F_EventScript_1FE89A:: @ 81FE89A LavaridgeTown_Gym_B1F_EventScript_1FE89A:: @ 81FE89A call LavaridgeTown_Gym_1F_EventScript_1FE705 release - special CheckIfMultipleTrainersWantBattle + special ShouldTryGetTrainerScript compare_var_to_value VAR_RESULT, 1 - goto_eq LavaridgeTown_Gym_1F_EventScript_2742F6 + goto_eq EventScript_GotoTrainerScript end LavaridgeTown_Gym_1F_EventScript_1FE8AF:: @ 81FE8AF diff --git a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc index cef69c7b2..1dd35ab18 100644 --- a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc +++ b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc @@ -482,7 +482,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_1FA25A:: @ 81FA25A goto_eq LittlerootTown_ProfessorBirchsLab_EventScript_1FA28A compare_var_to_value VAR_0x40D3, 2 goto_eq LittlerootTown_ProfessorBirchsLab_EventScript_1FA294 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1FA29E checkflag FLAG_0x119 goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1FA2D2 diff --git a/data/scripts/maps/MarineCave_End.inc b/data/scripts/maps/MarineCave_End.inc index dc2e2b3a0..fafc10b63 100644 --- a/data/scripts/maps/MarineCave_End.inc +++ b/data/scripts/maps/MarineCave_End.inc @@ -38,7 +38,7 @@ MarineCave_End_EventScript_23B01B:: @ 823B01B setvar VAR_LAST_TALKED, 1 setwildbattle SPECIES_KYOGRE, 70, ITEM_NONE setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0934 + special BattleSetup_StartLegendaryBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE setvar VAR_0x4001, 0 diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc index 899550337..dd2d502db 100644 --- a/data/scripts/maps/MauvilleCity_Gym.inc +++ b/data/scripts/maps/MauvilleCity_Gym.inc @@ -77,7 +77,7 @@ MauvilleCity_Gym_EventScript_20DEE7:: @ 820DEE7 MauvilleCity_Gym_EventScript_20DEEB:: @ 820DEEB trainerbattle 1, TRAINER_WATTSON_1, 0, MauvilleCity_Gym_Text_20E602, MauvilleCity_Gym_Text_20E734, MauvilleCity_Gym_EventScript_20DF2B - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MauvilleCity_Gym_EventScript_20DFDE checkflag FLAG_0x0A7 diff --git a/data/scripts/maps/MeteorFalls_1F_2R.inc b/data/scripts/maps/MeteorFalls_1F_2R.inc index 8cf171209..12e84c761 100644 --- a/data/scripts/maps/MeteorFalls_1F_2R.inc +++ b/data/scripts/maps/MeteorFalls_1F_2R.inc @@ -3,7 +3,7 @@ MeteorFalls_1F_2R_MapScripts:: @ 822C4DD MeteorFalls_1F_2R_EventScript_22C4DE:: @ 822C4DE trainerbattle 2, TRAINER_NICOLAS_1, 0, MeteorFalls_1F_2R_Text_22C608, MeteorFalls_1F_2R_Text_22C678, MeteorFalls_1F_2R_EventScript_22C50A - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MeteorFalls_1F_2R_EventScript_22C529 msgbox MeteorFalls_1F_2R_Text_22C6A3, 4 @@ -28,7 +28,7 @@ MeteorFalls_1F_2R_EventScript_22C529:: @ 822C529 MeteorFalls_1F_2R_EventScript_22C540:: @ 822C540 trainerbattle 6, TRAINER_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_22C843, MeteorFalls_1F_2R_Text_22C89C, MeteorFalls_1F_2R_Text_22C92B, MeteorFalls_1F_2R_EventScript_22C570 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MeteorFalls_1F_2R_EventScript_22C589 msgbox MeteorFalls_1F_2R_Text_22C8C1, 4 @@ -51,7 +51,7 @@ MeteorFalls_1F_2R_EventScript_22C589:: @ 822C589 MeteorFalls_1F_2R_EventScript_22C5A4:: @ 822C5A4 trainerbattle 6, TRAINER_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_22C9E6, MeteorFalls_1F_2R_Text_22CA44, MeteorFalls_1F_2R_Text_22CACD, MeteorFalls_1F_2R_EventScript_22C5D4 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MeteorFalls_1F_2R_EventScript_22C5ED msgbox MeteorFalls_1F_2R_Text_22CA70, 4 diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc index 89c243767..dfcb14721 100644 --- a/data/scripts/maps/MossdeepCity_Gym.inc +++ b/data/scripts/maps/MossdeepCity_Gym.inc @@ -50,7 +50,7 @@ MossdeepCity_Gym_EventScript_220885:: @ 8220885 MossdeepCity_Gym_EventScript_220898:: @ 8220898 trainerbattle 8, TRAINER_TATE_AND_LIZA_1, 0, MossdeepCity_Gym_Text_221783, MossdeepCity_Gym_Text_2218EC, MossdeepCity_Gym_Text_221BCE, MossdeepCity_Gym_EventScript_2208D1 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MossdeepCity_Gym_EventScript_22097E checkflag FLAG_0x0AB diff --git a/data/scripts/maps/MtChimney.inc b/data/scripts/maps/MtChimney.inc index d7a2ed83a..b93fbd3ec 100644 --- a/data/scripts/maps/MtChimney.inc +++ b/data/scripts/maps/MtChimney.inc @@ -488,7 +488,7 @@ MtChimney_EventScript_22F141:: @ 822F141 MtChimney_EventScript_22F14A:: @ 822F14A trainerbattle 2, TRAINER_SHELBY_1, 0, MtChimney_Text_23001D, MtChimney_Text_230076, MtChimney_EventScript_22F176 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MtChimney_EventScript_22F195 msgbox MtChimney_Text_2300A2, 4 @@ -533,7 +533,7 @@ MtChimney_EventScript_22F1F1:: @ 822F1F1 MtChimney_EventScript_22F208:: @ 822F208 trainerbattle 2, TRAINER_SAWYER_1, 0, MtChimney_Text_2304B3, MtChimney_Text_2304F7, MtChimney_EventScript_22F234 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MtChimney_EventScript_22F253 msgbox MtChimney_Text_230519, 4 diff --git a/data/scripts/maps/MtPyre_3F.inc b/data/scripts/maps/MtPyre_3F.inc index ad99e6c9a..7c95a8d84 100644 --- a/data/scripts/maps/MtPyre_3F.inc +++ b/data/scripts/maps/MtPyre_3F.inc @@ -13,7 +13,7 @@ MtPyre_3F_EventScript_23176A:: @ 823176A MtPyre_3F_EventScript_231781:: @ 8231781 trainerbattle 2, TRAINER_GABRIELLE_1, 0, MtPyre_3F_Text_231952, MtPyre_3F_Text_23196A, MtPyre_3F_EventScript_2317AD - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MtPyre_3F_EventScript_2317CC msgbox MtPyre_3F_Text_23199B, 4 diff --git a/data/scripts/maps/MtPyre_6F.inc b/data/scripts/maps/MtPyre_6F.inc index 36a727daa..6c61221d5 100644 --- a/data/scripts/maps/MtPyre_6F.inc +++ b/data/scripts/maps/MtPyre_6F.inc @@ -3,7 +3,7 @@ MtPyre_6F_MapScripts:: @ 8231D3A MtPyre_6F_EventScript_231D3B:: @ 8231D3B trainerbattle 2, TRAINER_VALERIE_1, 0, MtPyre_6F_Text_231DB4, MtPyre_6F_Text_231DE2, MtPyre_6F_EventScript_231D67 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq MtPyre_6F_EventScript_231D86 msgbox MtPyre_6F_Text_231DFC, 4 diff --git a/data/scripts/maps/NavelRock_Bottom.inc b/data/scripts/maps/NavelRock_Bottom.inc index 055697d23..5167af41a 100644 --- a/data/scripts/maps/NavelRock_Bottom.inc +++ b/data/scripts/maps/NavelRock_Bottom.inc @@ -61,7 +61,7 @@ NavelRock_Bottom_EventScript_2692A2:: @ 82692A2 setvar VAR_0x8006, 0 special DoScriptedWildBattle setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0934 + special BattleSetup_StartLegendaryBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/NavelRock_Top.inc b/data/scripts/maps/NavelRock_Top.inc index 01c9a1523..edebb3976 100644 --- a/data/scripts/maps/NavelRock_Top.inc +++ b/data/scripts/maps/NavelRock_Top.inc @@ -65,7 +65,7 @@ NavelRock_Top_EventScript_26916F:: @ 826916F setvar VAR_0x8006, 0 special DoScriptedWildBattle setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0934 + special BattleSetup_StartLegendaryBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE setvar VAR_LAST_TALKED, 1 diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc index e223bf414..ad7e2f1cb 100644 --- a/data/scripts/maps/PetalburgCity.inc +++ b/data/scripts/maps/PetalburgCity.inc @@ -36,7 +36,7 @@ PetalburgCity_EventScript_1DC32E:: @ 81DC32E applymovement 255, PetalburgCity_Movement_1DC430 waitmovement 0 msgbox PetalburgCity_Text_1EC1F8, 4 - special sub_80B086C + special StartWallyTutorialBattle waitstate msgbox PetalburgCity_Text_1EC271, 4 applymovementat 2, PetalburgCity_Movement_2725A4, PETALBURG_CITY diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc index e6cdd1334..3c119a227 100644 --- a/data/scripts/maps/PetalburgCity_Gym.inc +++ b/data/scripts/maps/PetalburgCity_Gym.inc @@ -62,7 +62,7 @@ PetalburgCity_Gym_EventScript_204955:: @ 8204955 PetalburgCity_Gym_EventScript_20495D:: @ 820495D setorcopyvar 0x8015, 269 - specialvar VAR_RESULT, sub_80B22A0 + specialvar VAR_RESULT, IsTrainerReadyForRematch compare_var_to_value VAR_RESULT, 1 goto_eq PetalburgCity_Gym_EventScript_204985 compare_var_to_value VAR_0x4085, 8 diff --git a/data/scripts/maps/PetalburgWoods.inc b/data/scripts/maps/PetalburgWoods.inc index a6b018134..64cf94754 100644 --- a/data/scripts/maps/PetalburgWoods.inc +++ b/data/scripts/maps/PetalburgWoods.inc @@ -279,7 +279,7 @@ PetalburgWoods_EventScript_22E26D:: @ 822E26D PetalburgWoods_EventScript_22E284:: @ 822E284 trainerbattle 2, TRAINER_JAMES_1, 0, PetalburgWoods_Text_22E827, PetalburgWoods_Text_22E86B, PetalburgWoods_EventScript_22E2C5 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq PetalburgWoods_EventScript_22E31B setvar VAR_0x8004, 621 @@ -293,7 +293,7 @@ PetalburgWoods_EventScript_22E284:: @ 822E284 PetalburgWoods_EventScript_22E2C5:: @ 822E2C5 special sub_80B4808 waitmovement 0 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq PetalburgWoods_EventScript_22E2D6 release end @@ -308,7 +308,7 @@ PetalburgWoods_EventScript_22E2D6:: @ 822E2D6 end PetalburgWoods_EventScript_22E2EF:: @ 822E2EF - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq PetalburgWoods_EventScript_22E302 msgbox PetalburgWoods_Text_22E889, 4 release diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc index a50fec657..eb178a850 100644 --- a/data/scripts/maps/Route101.inc +++ b/data/scripts/maps/Route101.inc @@ -225,7 +225,7 @@ Route101_EventScript_1EBE16:: @ 81EBE16 setobjectxy 255, 6, 13 applymovement 255, Route101_Movement_2725A4 waitmovement 0 - special sub_80B1138 + special ChooseStarter waitstate applymovement 2, Route101_Movement_1EBE8D waitmovement 0 diff --git a/data/scripts/maps/Route102.inc b/data/scripts/maps/Route102.inc index 00c8c309f..99e9f610c 100644 --- a/data/scripts/maps/Route102.inc +++ b/data/scripts/maps/Route102.inc @@ -19,7 +19,7 @@ Route102_EventScript_1EC0FC:: @ 81EC0FC Route102_EventScript_1EC105:: @ 81EC105 trainerbattle 2, TRAINER_CALVIN_1, 0, Route102_Text_294513, Route102_Text_29457C, Route102_EventScript_1EC146 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route102_EventScript_1EC19C setvar VAR_0x8004, 318 @@ -33,7 +33,7 @@ Route102_EventScript_1EC105:: @ 81EC105 Route102_EventScript_1EC146:: @ 81EC146 special sub_80B4808 waitmovement 0 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route102_EventScript_1EC157 release end @@ -48,7 +48,7 @@ Route102_EventScript_1EC157:: @ 81EC157 end Route102_EventScript_1EC170:: @ 81EC170 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route102_EventScript_1EC183 msgbox Route102_Text_2945AC, 4 release diff --git a/data/scripts/maps/Route103.inc b/data/scripts/maps/Route103.inc index 4dd68204a..dcfa8cde3 100644 --- a/data/scripts/maps/Route103.inc +++ b/data/scripts/maps/Route103.inc @@ -209,7 +209,7 @@ Route103_EventScript_1EC5F4:: @ 81EC5F4 Route103_EventScript_1EC60B:: @ 81EC60B trainerbattle 6, TRAINER_AMY_AND_LIV_1, 0, Route103_Text_2949F9, Route103_Text_294A3D, Route103_Text_294AAE, Route103_EventScript_1EC63A - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route103_EventScript_1EC653 msgbox Route103_Text_294A52, 6 @@ -231,7 +231,7 @@ Route103_EventScript_1EC653:: @ 81EC653 Route103_EventScript_1EC66E:: @ 81EC66E trainerbattle 6, TRAINER_AMY_AND_LIV_1, 0, Route103_Text_294AFD, Route103_Text_294B22, Route103_Text_294BD0, Route103_EventScript_1EC69D - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route103_EventScript_1EC6B6 msgbox Route103_Text_294B40, 6 @@ -258,7 +258,7 @@ Route103_EventScript_1EC6D1:: @ 81EC6D1 Route103_EventScript_1EC6E8:: @ 81EC6E8 trainerbattle 2, TRAINER_MIGUEL_1, 0, Route103_Text_294EDF, Route103_Text_294F21, Route103_EventScript_1EC714 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route103_EventScript_1EC733 msgbox Route103_Text_294F42, 4 diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc index 8c4138f11..df209ced9 100644 --- a/data/scripts/maps/Route104.inc +++ b/data/scripts/maps/Route104.inc @@ -882,7 +882,7 @@ Route104_EventScript_1ED376:: @ 81ED376 Route104_EventScript_1ED38D:: @ 81ED38D trainerbattle 2, TRAINER_HALEY_1, 0, Route104_Text_29563A, Route104_Text_29566F, Route104_EventScript_1ED3CE - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route104_EventScript_1ED424 setvar VAR_0x8004, 604 @@ -896,7 +896,7 @@ Route104_EventScript_1ED38D:: @ 81ED38D Route104_EventScript_1ED3CE:: @ 81ED3CE special sub_80B4808 waitmovement 0 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route104_EventScript_1ED3DF release end @@ -911,7 +911,7 @@ Route104_EventScript_1ED3DF:: @ 81ED3DF end Route104_EventScript_1ED3F8:: @ 81ED3F8 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route104_EventScript_1ED40B msgbox Route104_Text_295689, 4 release @@ -933,7 +933,7 @@ Route104_EventScript_1ED424:: @ 81ED424 Route104_EventScript_1ED43B:: @ 81ED43B trainerbattle 2, TRAINER_WINSTON_1, 0, Route104_Text_295870, Route104_Text_2958AD, Route104_EventScript_1ED47C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route104_EventScript_1ED4D2 setvar VAR_0x8004, 136 @@ -947,7 +947,7 @@ Route104_EventScript_1ED43B:: @ 81ED43B Route104_EventScript_1ED47C:: @ 81ED47C special sub_80B4808 waitmovement 0 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route104_EventScript_1ED48D release end @@ -962,7 +962,7 @@ Route104_EventScript_1ED48D:: @ 81ED48D end Route104_EventScript_1ED4A6:: @ 81ED4A6 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route104_EventScript_1ED4B9 msgbox Route104_Text_2958C1, 4 release @@ -984,7 +984,7 @@ Route104_EventScript_1ED4D2:: @ 81ED4D2 Route104_EventScript_1ED4E9:: @ 81ED4E9 trainerbattle 2, TRAINER_CINDY_1, 0, Route104_Text_295A7E, Route104_Text_295ABB, Route104_EventScript_1ED52A - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route104_EventScript_1ED580 setvar VAR_0x8004, 114 @@ -998,7 +998,7 @@ Route104_EventScript_1ED4E9:: @ 81ED4E9 Route104_EventScript_1ED52A:: @ 81ED52A special sub_80B4808 waitmovement 0 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route104_EventScript_1ED53B release end @@ -1013,7 +1013,7 @@ Route104_EventScript_1ED53B:: @ 81ED53B end Route104_EventScript_1ED554:: @ 81ED554 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route104_EventScript_1ED567 msgbox Route104_Text_295AC3, 4 release diff --git a/data/scripts/maps/Route105.inc b/data/scripts/maps/Route105.inc index 72b35e7b0..b527fc7a8 100644 --- a/data/scripts/maps/Route105.inc +++ b/data/scripts/maps/Route105.inc @@ -63,7 +63,7 @@ Route105_EventScript_1EE2BD:: @ 81EE2BD Route105_EventScript_1EE2D4:: @ 81EE2D4 trainerbattle 2, TRAINER_ANDRES_1, 0, Route105_Text_2960A9, Route105_Text_2960DB, Route105_EventScript_1EE300 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route105_EventScript_1EE31F msgbox Route105_Text_2960FA, 4 diff --git a/data/scripts/maps/Route106.inc b/data/scripts/maps/Route106.inc index 3bb5e27e7..8b0df4336 100644 --- a/data/scripts/maps/Route106.inc +++ b/data/scripts/maps/Route106.inc @@ -17,7 +17,7 @@ Route106_EventScript_1EE4AA:: @ 81EE4AA Route106_EventScript_1EE4C1:: @ 81EE4C1 trainerbattle 2, TRAINER_ELLIOT_1, 0, Route106_Text_296327, Route106_Text_29635C, Route106_EventScript_1EE4ED - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route106_EventScript_1EE50C msgbox Route106_Text_29638C, 4 diff --git a/data/scripts/maps/Route107.inc b/data/scripts/maps/Route107.inc index 736eaa8ee..0f144a6bb 100644 --- a/data/scripts/maps/Route107.inc +++ b/data/scripts/maps/Route107.inc @@ -8,7 +8,7 @@ Route107_EventScript_1EE595:: @ 81EE595 Route107_EventScript_1EE5AC:: @ 81EE5AC trainerbattle 2, TRAINER_TONY_1, 0, Route107_Text_2967AD, Route107_Text_2967D8, Route107_EventScript_1EE5D8 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route107_EventScript_1EE5F7 msgbox Route107_Text_2967FF, 4 diff --git a/data/scripts/maps/Route108.inc b/data/scripts/maps/Route108.inc index d88f63ca1..5c416d7dd 100644 --- a/data/scripts/maps/Route108.inc +++ b/data/scripts/maps/Route108.inc @@ -28,7 +28,7 @@ Route108_EventScript_1EE6E6:: @ 81EE6E6 Route108_EventScript_1EE6FD:: @ 81EE6FD trainerbattle 2, TRAINER_CORY_1, 0, Route108_Text_296F5D, Route108_Text_296F93, Route108_EventScript_1EE729 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route108_EventScript_1EE748 msgbox Route108_Text_296FB0, 4 diff --git a/data/scripts/maps/Route109.inc b/data/scripts/maps/Route109.inc index 4cdd835ff..da36de73c 100644 --- a/data/scripts/maps/Route109.inc +++ b/data/scripts/maps/Route109.inc @@ -397,7 +397,7 @@ Route109_EventScript_1EEA82:: @ 81EEA82 Route109_EventScript_1EEA99:: @ 81EEA99 trainerbattle 2, TRAINER_RICKY_1, 0, Route109_Text_29733B, Route109_Text_297379, Route109_EventScript_1EEAC5 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route109_EventScript_1EEAE4 msgbox Route109_Text_297380, 4 @@ -422,7 +422,7 @@ Route109_EventScript_1EEAE4:: @ 81EEAE4 Route109_EventScript_1EEAFB:: @ 81EEAFB trainerbattle 2, TRAINER_LOLA_1, 0, Route109_Text_29749C, Route109_Text_2974CF, Route109_EventScript_1EEB27 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route109_EventScript_1EEB46 msgbox Route109_Text_2974D6, 4 diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc index 0fa78b385..f07ca623e 100644 --- a/data/scripts/maps/Route110.inc +++ b/data/scripts/maps/Route110.inc @@ -176,7 +176,7 @@ Route110_EventScript_1EF409:: @ 81EF409 Route110_EventScript_1EF420:: @ 81EF420 trainerbattle 2, TRAINER_EDWIN_1, 0, Route110_Text_29815E, Route110_Text_29818F, Route110_EventScript_1EF44C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route110_EventScript_1EF46B msgbox Route110_Text_2981B3, 4 @@ -216,7 +216,7 @@ Route110_EventScript_1EF4B0:: @ 81EF4B0 Route110_EventScript_1EF4C7:: @ 81EF4C7 trainerbattle 2, TRAINER_BENJAMIN_1, 0, Route110_Text_297C63, Route110_Text_297C8A, Route110_EventScript_1EF4F3 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route110_EventScript_1EF512 msgbox Route110_Text_297CB4, 4 @@ -246,7 +246,7 @@ Route110_EventScript_1EF529:: @ 81EF529 Route110_EventScript_1EF540:: @ 81EF540 trainerbattle 2, TRAINER_ABIGAIL_1, 0, Route110_Text_297DFA, Route110_Text_297E69, Route110_EventScript_1EF56C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route110_EventScript_1EF58B msgbox Route110_Text_297E88, 4 @@ -271,7 +271,7 @@ Route110_EventScript_1EF58B:: @ 81EF58B Route110_EventScript_1EF5A2:: @ 81EF5A2 trainerbattle 2, TRAINER_ISABEL_1, 0, Route110_Text_298349, Route110_Text_298389, Route110_EventScript_1EF5CE - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route110_EventScript_1EF5ED msgbox Route110_Text_2983A2, 4 diff --git a/data/scripts/maps/Route111.inc b/data/scripts/maps/Route111.inc index c51b07b6c..18dc4c389 100644 --- a/data/scripts/maps/Route111.inc +++ b/data/scripts/maps/Route111.inc @@ -473,7 +473,7 @@ Route111_EventScript_1F1249:: @ 81F1249 Route111_EventScript_1F1260:: @ 81F1260 trainerbattle 2, TRAINER_DUSTY_1, 0, Route111_Text_298B08, Route111_Text_298B53, Route111_EventScript_1F128C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route111_EventScript_1F12AB msgbox Route111_Text_298B9A, 4 @@ -513,7 +513,7 @@ Route111_EventScript_1F12F0:: @ 81F12F0 Route111_EventScript_1F1307:: @ 81F1307 trainerbattle 2, TRAINER_WILTON_1, 0, Route111_Text_298F79, Route111_Text_298FA9, Route111_EventScript_1F1333 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route111_EventScript_1F1352 msgbox Route111_Text_298FD4, 4 @@ -538,7 +538,7 @@ Route111_EventScript_1F1352:: @ 81F1352 Route111_EventScript_1F1369:: @ 81F1369 trainerbattle 2, TRAINER_BROOKE_1, 0, Route111_Text_299143, Route111_Text_299193, Route111_EventScript_1F1395 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route111_EventScript_1F13B4 msgbox Route111_Text_2991C2, 4 diff --git a/data/scripts/maps/Route112.inc b/data/scripts/maps/Route112.inc index 066a7a347..6a9f506f6 100644 --- a/data/scripts/maps/Route112.inc +++ b/data/scripts/maps/Route112.inc @@ -67,7 +67,7 @@ Route112_EventScript_1F1E6A:: @ 81F1E6A Route112_EventScript_1F1E81:: @ 81F1E81 trainerbattle 2, TRAINER_TRENT_1, 0, Route112_Text_299815, Route112_Text_29987C, Route112_EventScript_1F1EAD - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route112_EventScript_1F1ECC msgbox Route112_Text_299896, 4 diff --git a/data/scripts/maps/Route113.inc b/data/scripts/maps/Route113.inc index 7ee63e492..30bf10068 100644 --- a/data/scripts/maps/Route113.inc +++ b/data/scripts/maps/Route113.inc @@ -60,7 +60,7 @@ Route113_EventScript_1F21D7:: @ 81F21D7 Route113_EventScript_1F21EE:: @ 81F21EE trainerbattle 2, TRAINER_MADELINE_1, 0, Route113_Text_299EA6, Route113_Text_299EF9, Route113_EventScript_1F221A - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route113_EventScript_1F2239 msgbox Route113_Text_299F15, 4 @@ -85,7 +85,7 @@ Route113_EventScript_1F2239:: @ 81F2239 Route113_EventScript_1F2250:: @ 81F2250 trainerbattle 2, TRAINER_LAO_1, 0, Route113_Text_29A015, Route113_Text_29A04C, Route113_EventScript_1F227C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route113_EventScript_1F229B msgbox Route113_Text_29A067, 4 diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc index cca7be5af..f1aaf24d2 100644 --- a/data/scripts/maps/Route114.inc +++ b/data/scripts/maps/Route114.inc @@ -110,7 +110,7 @@ Route114_EventScript_1F2685:: @ 81F2685 Route114_EventScript_1F269C:: @ 81F269C trainerbattle 2, TRAINER_STEVE_1, 0, Route114_Text_29A943, Route114_Text_29A973, Route114_EventScript_1F26C8 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route114_EventScript_1F26E7 msgbox Route114_Text_29A981, 4 @@ -135,7 +135,7 @@ Route114_EventScript_1F26E7:: @ 81F26E7 Route114_EventScript_1F26FE:: @ 81F26FE trainerbattle 2, TRAINER_BERNIE_1, 0, Route114_Text_29AADB, Route114_Text_29AB1A, Route114_EventScript_1F272A - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route114_EventScript_1F2749 msgbox Route114_Text_29AB36, 4 diff --git a/data/scripts/maps/Route115.inc b/data/scripts/maps/Route115.inc index 8ea531f9d..8adf2fa04 100644 --- a/data/scripts/maps/Route115.inc +++ b/data/scripts/maps/Route115.inc @@ -38,7 +38,7 @@ Route115_EventScript_1F2985:: @ 81F2985 Route115_EventScript_1F298E:: @ 81F298E trainerbattle 2, TRAINER_TIMOTHY_1, 0, Route115_Text_29B1FA, Route115_Text_29B230, Route115_EventScript_1F29BA - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route115_EventScript_1F29D9 msgbox Route115_Text_29B258, 4 @@ -68,7 +68,7 @@ Route115_EventScript_1F29F0:: @ 81F29F0 Route115_EventScript_1F2A07:: @ 81F2A07 trainerbattle 2, TRAINER_NOB_1, 0, Route115_Text_29B449, Route115_Text_29B480, Route115_EventScript_1F2A33 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route115_EventScript_1F2A52 msgbox Route115_Text_29B49D, 4 @@ -93,7 +93,7 @@ Route115_EventScript_1F2A52:: @ 81F2A52 Route115_EventScript_1F2A69:: @ 81F2A69 trainerbattle 2, TRAINER_CYNDY_1, 0, Route115_Text_29B5EF, Route115_Text_29B62D, Route115_EventScript_1F2A95 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route115_EventScript_1F2AB4 msgbox Route115_Text_29B647, 4 diff --git a/data/scripts/maps/Route116.inc b/data/scripts/maps/Route116.inc index 359f21375..4e6a6be80 100644 --- a/data/scripts/maps/Route116.inc +++ b/data/scripts/maps/Route116.inc @@ -259,7 +259,7 @@ Route116_EventScript_1F2EA0:: @ 81F2EA0 Route116_EventScript_1F2EB7:: @ 81F2EB7 trainerbattle 2, TRAINER_JERRY_1, 0, Route116_Text_29BD0C, Route116_Text_29BD66, Route116_EventScript_1F2EF8 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route116_EventScript_1F2F4E setvar VAR_0x8004, 273 @@ -271,7 +271,7 @@ Route116_EventScript_1F2EB7:: @ 81F2EB7 end Route116_EventScript_1F2EF8:: @ 81F2EF8 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route116_EventScript_1F2F03 release end @@ -288,7 +288,7 @@ Route116_EventScript_1F2F03:: @ 81F2F03 end Route116_EventScript_1F2F22:: @ 81F2F22 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route116_EventScript_1F2F35 msgbox Route116_Text_29BD92, 4 release @@ -320,7 +320,7 @@ Route116_EventScript_1F2F7C:: @ 81F2F7C Route116_EventScript_1F2F93:: @ 81F2F93 trainerbattle 2, TRAINER_KAREN_1, 0, Route116_Text_29BFC5, Route116_Text_29BFFA, Route116_EventScript_1F2FD4 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route116_EventScript_1F302A setvar VAR_0x8004, 280 @@ -332,7 +332,7 @@ Route116_EventScript_1F2F93:: @ 81F2F93 end Route116_EventScript_1F2FD4:: @ 81F2FD4 - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route116_EventScript_1F2FDF release end @@ -349,7 +349,7 @@ Route116_EventScript_1F2FDF:: @ 81F2FDF end Route116_EventScript_1F2FFE:: @ 81F2FFE - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq Route116_EventScript_1F3011 msgbox Route116_Text_29C010, 4 release diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc index 01463516b..5140596d8 100644 --- a/data/scripts/maps/Route117.inc +++ b/data/scripts/maps/Route117.inc @@ -40,7 +40,7 @@ Route117_EventScript_1F39C7:: @ 81F39C7 Route117_EventScript_1F39D0:: @ 81F39D0 trainerbattle 2, TRAINER_ISAAC_1, 0, Route117_Text_29C43F, Route117_Text_29C47A, Route117_EventScript_1F39FC - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route117_EventScript_1F3A1B msgbox Route117_Text_29C498, 4 @@ -65,7 +65,7 @@ Route117_EventScript_1F3A1B:: @ 81F3A1B Route117_EventScript_1F3A32:: @ 81F3A32 trainerbattle 2, TRAINER_LYDIA_1, 0, Route117_Text_29C612, Route117_Text_29C659, Route117_EventScript_1F3A5E - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route117_EventScript_1F3A7D msgbox Route117_Text_29C679, 4 @@ -90,7 +90,7 @@ Route117_EventScript_1F3A7D:: @ 81F3A7D Route117_EventScript_1F3A94:: @ 81F3A94 trainerbattle 2, TRAINER_DYLAN_1, 0, Route117_Text_29C7A5, Route117_Text_29C7EB, Route117_EventScript_1F3AC0 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route117_EventScript_1F3ADF msgbox Route117_Text_29C800, 4 @@ -115,7 +115,7 @@ Route117_EventScript_1F3ADF:: @ 81F3ADF Route117_EventScript_1F3AF6:: @ 81F3AF6 trainerbattle 2, TRAINER_MARIA_1, 0, Route117_Text_29C955, Route117_Text_29C9A6, Route117_EventScript_1F3B22 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route117_EventScript_1F3B41 msgbox Route117_Text_29C9D0, 4 @@ -145,7 +145,7 @@ Route117_EventScript_1F3B58:: @ 81F3B58 Route117_EventScript_1F3B6F:: @ 81F3B6F trainerbattle 6, TRAINER_ANNA_AND_MEG_1, 0, Route117_Text_29CC4A, Route117_Text_29CC8E, Route117_Text_29CD61, Route117_EventScript_1F3B9F - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route117_EventScript_1F3BB8 msgbox Route117_Text_29CCCB, 4 @@ -168,7 +168,7 @@ Route117_EventScript_1F3BB8:: @ 81F3BB8 Route117_EventScript_1F3BD3:: @ 81F3BD3 trainerbattle 6, TRAINER_ANNA_AND_MEG_1, 0, Route117_Text_29CD9D, Route117_Text_29CDE9, Route117_Text_29CE52, Route117_EventScript_1F3C03 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route117_EventScript_1F3C1C msgbox Route117_Text_29CE17, 4 diff --git a/data/scripts/maps/Route118.inc b/data/scripts/maps/Route118.inc index 42c3d6d57..5d46224a9 100644 --- a/data/scripts/maps/Route118.inc +++ b/data/scripts/maps/Route118.inc @@ -188,7 +188,7 @@ Route118_Movement_1F3F7E: @ 81F3F7E Route118_EventScript_1F3F87:: @ 81F3F87 trainerbattle 2, TRAINER_ROSE_1, 0, Route118_Text_29D290, Route118_Text_29D2D8, Route118_EventScript_1F3FB3 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route118_EventScript_1F3FD2 msgbox Route118_Text_29D2FA, 4 @@ -223,7 +223,7 @@ Route118_EventScript_1F4000:: @ 81F4000 Route118_EventScript_1F4017:: @ 81F4017 trainerbattle 2, TRAINER_DALTON_1, 0, Route118_Text_29D6AF, Route118_Text_29D6CD, Route118_EventScript_1F4043 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route118_EventScript_1F4062 msgbox Route118_Text_29D6D8, 4 diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc index 4436005ba..f9bbadb85 100644 --- a/data/scripts/maps/Route119.inc +++ b/data/scripts/maps/Route119.inc @@ -368,7 +368,7 @@ Route119_EventScript_1F47F9:: @ 81F47F9 Route119_EventScript_1F4810:: @ 81F4810 trainerbattle 2, TRAINER_JACKSON_1, 0, Route119_Text_29DC4C, Route119_Text_29DC9F, Route119_EventScript_1F483C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route119_EventScript_1F485B msgbox Route119_Text_29DCC6, 4 @@ -393,7 +393,7 @@ Route119_EventScript_1F485B:: @ 81F485B Route119_EventScript_1F4872:: @ 81F4872 trainerbattle 2, TRAINER_CATHERINE_1, 0, Route119_Text_29DE0F, Route119_Text_29DE5D, Route119_EventScript_1F489E - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route119_EventScript_1F48BD msgbox Route119_Text_29DE88, 4 diff --git a/data/scripts/maps/Route120.inc b/data/scripts/maps/Route120.inc index aaffe0f12..9651ab8ab 100644 --- a/data/scripts/maps/Route120.inc +++ b/data/scripts/maps/Route120.inc @@ -297,7 +297,7 @@ Route120_EventScript_1F57D7:: @ 81F57D7 Route120_EventScript_1F57EE:: @ 81F57EE trainerbattle 2, TRAINER_ROBERT_1, 0, Route120_Text_29E6E3, Route120_Text_29E70A, Route120_EventScript_1F581A - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route120_EventScript_1F5839 msgbox Route120_Text_29E726, 4 @@ -332,7 +332,7 @@ Route120_EventScript_1F5867:: @ 81F5867 Route120_EventScript_1F587E:: @ 81F587E trainerbattle 2, TRAINER_JEFFREY_1, 0, Route120_Text_29E9D7, Route120_Text_29E9FF, Route120_EventScript_1F58AA - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route120_EventScript_1F58C9 msgbox Route120_Text_29EA08, 4 diff --git a/data/scripts/maps/Route121.inc b/data/scripts/maps/Route121.inc index 0d1f8863e..59623b4e6 100644 --- a/data/scripts/maps/Route121.inc +++ b/data/scripts/maps/Route121.inc @@ -72,7 +72,7 @@ Route121_EventScript_1F5E74:: @ 81F5E74 Route121_EventScript_1F5E8B:: @ 81F5E8B trainerbattle 2, TRAINER_WALTER_1, 0, Route121_Text_29F199, Route121_Text_29F20D, Route121_EventScript_1F5EB7 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route121_EventScript_1F5ED6 msgbox Route121_Text_29F21E, 4 @@ -112,7 +112,7 @@ Route121_EventScript_1F5F1F:: @ 81F5F1F Route121_EventScript_1F5F3A:: @ 81F5F3A trainerbattle 2, TRAINER_JESSICA_1, 0, Route121_Text_29F612, Route121_Text_29F641, Route121_EventScript_1F5F66 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route121_EventScript_1F5F85 msgbox Route121_Text_29F66F, 4 @@ -157,7 +157,7 @@ Route121_EventScript_1F5FE1:: @ 81F5FE1 Route121_EventScript_1F5FF8:: @ 81F5FF8 trainerbattle 2, TRAINER_CRISTIN_1, 0, Route121_Text_29F770, Route121_Text_29F7C1, Route121_EventScript_1F6024 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route121_EventScript_1F6043 msgbox Route121_Text_29F7D4, 4 diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc index 8eb397fd4..ee659a496 100644 --- a/data/scripts/maps/Route123.inc +++ b/data/scripts/maps/Route123.inc @@ -62,7 +62,7 @@ Route123_EventScript_1F61F3:: @ 81F61F3 Route123_EventScript_1F620A:: @ 81F620A trainerbattle 2, TRAINER_CAMERON_1, 0, Route123_Text_29FDBA, Route123_Text_29FE1E, Route123_EventScript_1F6236 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route123_EventScript_1F6255 msgbox Route123_Text_29FE2A, 4 @@ -87,7 +87,7 @@ Route123_EventScript_1F6255:: @ 81F6255 Route123_EventScript_1F626C:: @ 81F626C trainerbattle 2, TRAINER_JACKI_1, 0, Route123_Text_29FF61, Route123_Text_29FFD8, Route123_EventScript_1F6298 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route123_EventScript_1F62B7 msgbox Route123_Text_29FFE5, 4 @@ -162,7 +162,7 @@ Route123_EventScript_1F63A5:: @ 81F63A5 Route123_EventScript_1F63BC:: @ 81F63BC trainerbattle 2, TRAINER_FERNANDO_1, 0, Route123_Text_2A0323, Route123_Text_2A035C, Route123_EventScript_1F63E8 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route123_EventScript_1F6407 msgbox Route123_Text_2A0389, 4 diff --git a/data/scripts/maps/Route124.inc b/data/scripts/maps/Route124.inc index 2a0298650..01687eba8 100644 --- a/data/scripts/maps/Route124.inc +++ b/data/scripts/maps/Route124.inc @@ -23,7 +23,7 @@ Route124_EventScript_1F659C:: @ 81F659C Route124_EventScript_1F65B3:: @ 81F65B3 trainerbattle 2, TRAINER_JENNY_1, 0, Route124_Text_2A0B37, Route124_Text_2A0B7C, Route124_EventScript_1F65DF - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route124_EventScript_1F65FE msgbox Route124_Text_2A0B9A, 4 @@ -58,7 +58,7 @@ Route124_EventScript_1F662C:: @ 81F662C Route124_EventScript_1F6643:: @ 81F6643 trainerbattle 6, TRAINER_LILA_AND_ROY_1, 0, Route124_Text_2A0E87, Route124_Text_2A0EFE, Route124_Text_2A0F8C, Route124_EventScript_1F6673 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route124_EventScript_1F668C msgbox Route124_Text_2A0F3A, 4 @@ -81,7 +81,7 @@ Route124_EventScript_1F668C:: @ 81F668C Route124_EventScript_1F66A7:: @ 81F66A7 trainerbattle 6, TRAINER_LILA_AND_ROY_1, 0, Route124_Text_2A0FD1, Route124_Text_2A1012, Route124_Text_2A10E5, Route124_EventScript_1F66D7 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route124_EventScript_1F66F0 msgbox Route124_Text_2A103E, 4 diff --git a/data/scripts/maps/Route125.inc b/data/scripts/maps/Route125.inc index 953bf52b2..b93e7f016 100644 --- a/data/scripts/maps/Route125.inc +++ b/data/scripts/maps/Route125.inc @@ -48,7 +48,7 @@ Route125_EventScript_1F67E9:: @ 81F67E9 Route125_EventScript_1F6800:: @ 81F6800 trainerbattle 2, TRAINER_ERNEST_1, 0, Route125_Text_2A16FC, Route125_Text_2A173A, Route125_EventScript_1F682C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route125_EventScript_1F684B msgbox Route125_Text_2A1755, 4 diff --git a/data/scripts/maps/Route126.inc b/data/scripts/maps/Route126.inc index 4678fe39d..e6f8848b7 100644 --- a/data/scripts/maps/Route126.inc +++ b/data/scripts/maps/Route126.inc @@ -44,7 +44,7 @@ Route126_EventScript_1F6960:: @ 81F6960 Route126_EventScript_1F6977:: @ 81F6977 trainerbattle 2, TRAINER_PABLO_1, 0, Route126_Text_2A1EA5, Route126_Text_2A1EE3, Route126_EventScript_1F69A3 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route126_EventScript_1F69C2 msgbox Route126_Text_2A1F10, 4 diff --git a/data/scripts/maps/Route127.inc b/data/scripts/maps/Route127.inc index 9851df043..68992425e 100644 --- a/data/scripts/maps/Route127.inc +++ b/data/scripts/maps/Route127.inc @@ -63,7 +63,7 @@ Route127_EventScript_1F6ABF:: @ 81F6ABF Route127_EventScript_1F6AD6:: @ 81F6AD6 trainerbattle 2, TRAINER_KOJI_1, 0, Route127_Text_2A264D, Route127_Text_2A2685, Route127_EventScript_1F6B02 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route127_EventScript_1F6B21 msgbox Route127_Text_2A26AC, 4 diff --git a/data/scripts/maps/Route128.inc b/data/scripts/maps/Route128.inc index 1ba1b3448..21824eb41 100644 --- a/data/scripts/maps/Route128.inc +++ b/data/scripts/maps/Route128.inc @@ -177,7 +177,7 @@ Route128_Movement_1F6CBB: @ 81F6CBB Route128_EventScript_1F6CBE:: @ 81F6CBE trainerbattle 2, TRAINER_ISAIAH_1, 0, Route128_Text_2A287F, Route128_Text_2A28AB, Route128_EventScript_1F6CEA - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route128_EventScript_1F6D09 msgbox Route128_Text_2A28D7, 4 @@ -202,7 +202,7 @@ Route128_EventScript_1F6D09:: @ 81F6D09 Route128_EventScript_1F6D20:: @ 81F6D20 trainerbattle 2, TRAINER_KATELYN_1, 0, Route128_Text_2A2A1F, Route128_Text_2A2A94, Route128_EventScript_1F6D4C - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq Route128_EventScript_1F6D6B msgbox Route128_Text_2A2AB7, 4 diff --git a/data/scripts/maps/RustboroCity.inc b/data/scripts/maps/RustboroCity.inc index 31182439b..14f155cee 100644 --- a/data/scripts/maps/RustboroCity.inc +++ b/data/scripts/maps/RustboroCity.inc @@ -52,7 +52,7 @@ RustboroCity_EventScript_1E0715:: @ 81E0715 waitmovement 0 msgbox RustboroCity_Text_1E22A5, 4 closemessage - setflag FLAG_0x12F + setflag FLAG_HAS_MATCH_CALL applymovement 15, RustboroCity_Movement_2725A4 waitmovement 0 playse SE_TK_KASYA diff --git a/data/scripts/maps/RustboroCity_Gym.inc b/data/scripts/maps/RustboroCity_Gym.inc index dec6a8e73..dde0cc6a6 100644 --- a/data/scripts/maps/RustboroCity_Gym.inc +++ b/data/scripts/maps/RustboroCity_Gym.inc @@ -3,7 +3,7 @@ RustboroCity_Gym_MapScripts:: @ 8212F30 RustboroCity_Gym_EventScript_212F31:: @ 8212F31 trainerbattle 1, TRAINER_ROXANNE_1, 0, RustboroCity_Gym_Text_21362A, RustboroCity_Gym_Text_21370B, RustboroCity_Gym_EventScript_212F66 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq RustboroCity_Gym_EventScript_212FC8 checkflag FLAG_0x0A5 diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc index d5a4e477c..7d7e575fc 100644 --- a/data/scripts/maps/SkyPillar_Top.inc +++ b/data/scripts/maps/SkyPillar_Top.inc @@ -53,7 +53,7 @@ SkyPillar_Top_EventScript_239722:: @ 8239722 waitmoncry setwildbattle SPECIES_RAYQUAZA, 70, ITEM_NONE setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0934 + special BattleSetup_StartLegendaryBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc index e28d8d13f..8b6a5754e 100644 --- a/data/scripts/maps/SootopolisCity_Gym_1F.inc +++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc @@ -87,7 +87,7 @@ SootopolisCity_Gym_1F_Movement_224F42: @ 8224F42 SootopolisCity_Gym_1F_EventScript_224F44:: @ 8224F44 trainerbattle 1, TRAINER_JUAN_1, 0, SootopolisCity_Gym_1F_Text_225268, SootopolisCity_Gym_1F_Text_225432, SootopolisCity_Gym_1F_EventScript_224F82 - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq SootopolisCity_Gym_1F_EventScript_225025 checkflag FLAG_0x0AC diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc index 1853c08b8..aa19dc5fb 100644 --- a/data/scripts/maps/SouthernIsland_Interior.inc +++ b/data/scripts/maps/SouthernIsland_Interior.inc @@ -87,7 +87,7 @@ SouthernIsland_Interior_EventScript_242AD0:: @ 8242AD0 compare_var_to_value VAR_0x40D5, 0 call_if 5, SouthernIsland_Interior_EventScript_242BB7 setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B08EC + special BattleSetup_StartLatiBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE specialvar VAR_RESULT, sub_8138B80 diff --git a/data/scripts/maps/TerraCave_End.inc b/data/scripts/maps/TerraCave_End.inc index a39856dda..f3168036f 100644 --- a/data/scripts/maps/TerraCave_End.inc +++ b/data/scripts/maps/TerraCave_End.inc @@ -38,7 +38,7 @@ TerraCave_End_EventScript_23B0EC:: @ 823B0EC setvar VAR_LAST_TALKED, 1 setwildbattle SPECIES_GROUDON, 70, ITEM_NONE setflag FLAG_SYS_CTRL_OBJ_DELETE - special sub_80B0934 + special BattleSetup_StartLegendaryBattle waitstate clearflag FLAG_SYS_CTRL_OBJ_DELETE setvar VAR_0x4001, 0 diff --git a/data/scripts/maps/VictoryRoad_1F.inc b/data/scripts/maps/VictoryRoad_1F.inc index 8bc22aa3d..94ecc0946 100644 --- a/data/scripts/maps/VictoryRoad_1F.inc +++ b/data/scripts/maps/VictoryRoad_1F.inc @@ -83,7 +83,7 @@ VictoryRoad_1F_EventScript_235E2C:: @ 8235E2C VictoryRoad_1F_EventScript_235E35:: @ 8235E35 trainerbattle 0, TRAINER_WALLY_3, 0, VictoryRoad_1F_Text_236073, VictoryRoad_1F_Text_2360DA - specialvar VAR_RESULT, sub_80B226C + specialvar VAR_RESULT, ShouldTryRematchBattle compare_var_to_value VAR_RESULT, 1 goto_eq VictoryRoad_1F_EventScript_235E5C msgbox VictoryRoad_1F_Text_2360FE, 6 diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc index 85952d9f0..184a00a0d 100644 --- a/data/scripts/players_house.inc +++ b/data/scripts/players_house.inc @@ -114,7 +114,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_29283F:: @ 829283F LittlerootTown_BrendansHouse_2F_EventScript_292849:: @ 8292849 fadescreen 1 - special Special_StartWallClock + special StartWallClock waitstate return @@ -318,7 +318,7 @@ LittlerootTown_MaysHouse_1F_EventScript_2929C5:: @ 82929C5 goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A0F compare_var_to_value VAR_0x408C, 4 goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A0F - checkflag FLAG_0x12F + checkflag FLAG_HAS_MATCH_CALL goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A19 checkflag FLAG_0x052 goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A86 diff --git a/data/specials.inc b/data/specials.inc index bf06289bb..4343f4da6 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -61,17 +61,17 @@ gSpecials:: @ 81DBA64 def_special FieldObjectInteractionWaterBerryTree def_special PlayerHasBerries def_special IsEnigmaBerryValid - def_special sub_80B170C - def_special sub_80B1A14 - def_special special_trainer_unable_to_battle - def_special check_trainer_flag + def_special GetTrainerBattleMode + def_special ShowTrainerIntroSpeech + def_special ShowTrainerCantBattleSpeech + def_special GetTrainerFlag def_special sub_80B45AC def_special SetUpTrainerEncounterMusic - def_special sub_80B226C - def_special sub_80B22A0 - def_special sub_80B19EC + def_special ShouldTryRematchBattle + def_special IsTrainerReadyForRematch + def_special BattleSetup_StartRematchBattle def_special sub_80C7578 - def_special sub_80F92F8 + def_special HasEnoughMonsForDoubleBattle def_special TurnOffTVScreen def_special DoTVShow def_special DoPokeNews @@ -164,10 +164,10 @@ gSpecials:: @ 81DBA64 def_special sub_8138B8C def_special sub_814FC9C def_special sub_8085784 - def_special Special_StartWallClock + def_special StartWallClock def_special Special_ViewWallClock - def_special sub_80B1138 - def_special sub_80B086C + def_special ChooseStarter + def_special StartWallyTutorialBattle def_special ChangePokemonNickname def_special sub_81B94B0 def_special GetFirstFreePokeblockSlot @@ -320,9 +320,9 @@ gSpecials:: @ 81DBA64 def_special sub_8139540 def_special sub_809E1C8 def_special sub_8139560 - def_special sub_80B0A18 - def_special sub_80B0934 - def_special sub_80B0A74 + def_special StartGroudonKyogreBattle + def_special BattleSetup_StartLegendaryBattle + def_special StartRegiBattle def_special sub_80B16D8 def_special DoSealedChamberShakingEffect2 def_special sub_8139634 @@ -332,7 +332,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F8D28 def_special sub_80F8EB8 def_special sub_8162794 - def_special sub_80B08EC + def_special BattleSetup_StartLatiBattle def_special sub_8139648 def_special sub_8139668 def_special sub_80F8FA0 @@ -415,7 +415,7 @@ gSpecials:: @ 81DBA64 def_special PutLilycoveContestLadyShowOnTheAir def_special sub_813B880 def_special sub_81A085C - def_special CheckIfMultipleTrainersWantBattle + def_special ShouldTryGetTrainerScript def_special AddMapNamePopUpWindowTask def_special AddMapNamePopUpWindowTask def_special sub_81BE994 diff --git a/data/starter_choose.s b/data/starter_choose.s index ae81aae20..a951a8987 100644 --- a/data/starter_choose.s +++ b/data/starter_choose.s @@ -63,5 +63,4 @@ sSpriteTemplate_PokeBall:: @ 85B1F28 .incbin "baserom.gba", 0x5b1f28, 0x18 gUnknown_085B1F40:: @ 85B1F40 - .incbin "baserom.gba", 0x5b1f40, 0x294 - + .incbin "baserom.gba", 0x5b1f40, 0x18 diff --git a/graphics/wallclock/graphics_85b1f58.png b/graphics/wallclock/graphics_85b1f58.png Binary files differnew file mode 100644 index 000000000..06a4ecad0 --- /dev/null +++ b/graphics/wallclock/graphics_85b1f58.png diff --git a/graphics/wallclock/palette_85b21d4.pal b/graphics/wallclock/palette_85b21d4.pal new file mode 100644 index 000000000..fda317608 --- /dev/null +++ b/graphics/wallclock/palette_85b21d4.pal @@ -0,0 +1,7 @@ +JASC-PAL +0100 +4 +0 0 0 +74 180 189 +255 255 255 +0 0 0 diff --git a/include/battle.h b/include/battle.h index 7c8c81f52..71dbe9a57 100644 --- a/include/battle.h +++ b/include/battle.h @@ -53,7 +53,7 @@ #define BATTLE_TYPE_PALACE 0x20000 #define BATTLE_TYPE_ARENA 0x40000 #define BATTLE_TYPE_FACTORY 0x80000 -#define BATTLE_TYPE_x100000 0x100000 +#define BATTLE_TYPE_PIKE 0x100000 #define BATTLE_TYPE_PYRAMID 0x200000 #define BATTLE_TYPE_INGAME_PARTNER 0x400000 #define BATTLE_TYPE_x800000 0x800000 @@ -62,7 +62,7 @@ #define BATTLE_TYPE_x4000000 0x4000000 #define BATTLE_TYPE_SECRET_BASE 0x8000000 #define BATTLE_TYPE_GROUDON 0x10000000 -#define BATTLE_TYPE_KYORGE 0x20000000 +#define BATTLE_TYPE_KYOGRE 0x20000000 #define BATTLE_TYPE_RAYQUAZA 0x40000000 #define BATTLE_TYPE_x80000000 0x80000000 @@ -72,8 +72,8 @@ #define STEVEN_PARTNER_ID 0xC03 #define SECRET_BASE_OPPONENT 0x400 -#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID) -#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000) +#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) +#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) #define BATTLE_WON 0x1 #define BATTLE_LOST 0x2 @@ -229,9 +229,9 @@ #define BATTLE_TERRAIN_UNDERWATER 3 #define BATTLE_TERRAIN_WATER 4 #define BATTLE_TERRAIN_POND 5 -#define BATTLE_TERRAIN_ROCK 6 +#define BATTLE_TERRAIN_MOUNTAIN 6 #define BATTLE_TERRAIN_CAVE 7 -#define BATTLE_TERRAIN_INSIDE 8 +#define BATTLE_TERRAIN_BUILDING 8 #define BATTLE_TERRAIN_PLAIN 9 // array entries for battle communication @@ -298,7 +298,6 @@ struct TrainerMonNoItemDefaultMoves u16 species; }; -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); u8 GetBankSide(u8 bank); struct TrainerMonItemDefaultMoves @@ -328,10 +327,10 @@ struct TrainerMonItemCustomMoves union TrainerMonPtr { - struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves; - struct TrainerMonNoItemCustomMoves* NoItemCustomMoves; - struct TrainerMonItemDefaultMoves* ItemDefaultMoves; - struct TrainerMonItemCustomMoves* ItemCustomMoves; + struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves; + struct TrainerMonNoItemCustomMoves *NoItemCustomMoves; + struct TrainerMonItemDefaultMoves *ItemDefaultMoves; + struct TrainerMonItemCustomMoves *ItemCustomMoves; }; struct Trainer @@ -348,9 +347,6 @@ struct Trainer /*0x24*/ union TrainerMonPtr party; }; -#define PARTY_FLAG_CUSTOM_MOVES 0x1 -#define PARTY_FLAG_HAS_ITEM 0x2 - extern const struct Trainer gTrainers[]; #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) diff --git a/include/battle_setup.h b/include/battle_setup.h index 0168022cc..e4bae6fdb 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -1,18 +1,85 @@ #ifndef GUARD_BATTLE_SETUP_H #define GUARD_BATTLE_SETUP_H -void BattleSetup_StartScriptedWildBattle(void); -u8 BattleSetup_GetTerrainId(void); -u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); -void BattleSetup_StartBattlePikeWildBattle(void); +enum +{ + TRAINER_BATTLE_NORMAL, + TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, + TRAINER_BATTLE_CONTINUE_SCRIPT, + TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT, + TRAINER_BATTLE_DOUBLE, + TRAINER_BATTLE_REMATCH, + TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE, + TRAINER_BATTLE_REMATCH_DOUBLE, + TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC, + TRAINER_BATTLE_9, + TRAINER_BATTLE_SET_TRAINER_A, + TRAINER_BATTLE_SET_TRAINER_B, + TRAINER_BATTLE_12, +}; + +#define REMATCHES_COUNT 5 +#define REMATCH_TABLE_ENTRIES 78 +#define REMATCH_WALLY_ENTRY 64 +#define REMATCH_ELITE_FOUR_ENTRIES 73 + +struct RematchTrainer +{ + u16 trainerIds[REMATCHES_COUNT]; + u16 mapGroup; + u16 mapNum; +}; + +extern const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES]; + +extern u16 gTrainerBattleOpponent_A; +extern u16 gTrainerBattleOpponent_B; +extern u16 gPartnerTrainerId; + void BattleSetup_StartWildBattle(void); +void BattleSetup_StartBattlePikeWildBattle(void); void BattleSetup_StartRoamerBattle(void); - -u8 HasTrainerAlreadyBeenFought(u16); -void trainer_flag_set(u16); -void trainer_flag_clear(u16); +void StartWallyTutorialBattle(void); +void BattleSetup_StartScriptedWildBattle(void); +void BattleSetup_StartLatiBattle(void); +void BattleSetup_StartLegendaryBattle(void); +void StartGroudonKyogreBattle(void); +void StartRegiBattle(void); +u8 BattleSetup_GetTerrainId(void); +u8 sub_80B100C(s32 arg0); +void ChooseStarter(void); +void ResetTrainerOpponentIds(void); +void SetMapVarsToTrainer(void); +const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); +void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript); +void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript); +void SetUpTwoTrainersBattle(void); +bool32 GetTrainerFlagFromScriptPointer(const u8 *data); +void sub_80B16D8(void); +u8 GetTrainerBattleMode(void); +bool8 GetTrainerFlag(void); +bool8 HasTrainerBeenFought(u16 trainerId); +void SetTrainerFlag(u16 trainerId); +void ClearTrainerFlag(u16 trainerId); void BattleSetup_StartTrainerBattle(void); -u8 *BattleSetup_GetScriptAddrAfterBattle(void); -u8 *BattleSetup_GetTrainerPostBattleScript(void); +void BattleSetup_StartRematchBattle(void); +void ShowTrainerIntroSpeech(void); +const u8 *BattleSetup_GetScriptAddrAfterBattle(void); +const u8 *BattleSetup_GetTrainerPostBattleScript(void); +void ShowTrainerCantBattleSpeech(void); +void SetUpTrainerEncounterMusic(void); +const u8 *GetTrainerALoseText(void); +const u8 *GetTrainerBLoseText(void); +const u8 *GetTrainerWonSpeech(void); +void UpdateRematchIfDefeated(s32 rematchTableId); +void IncrementRematchStepCounter(void); +void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum); +bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum); +bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum); +u16 GetLastBeatenRematchTrainerId(u16 trainerId); +bool8 ShouldTryRematchBattle(void); +bool8 IsTrainerReadyForRematch(void); +void ShouldTryGetTrainerScript(void); +u16 CountBattledRematchTeams(u16 trainerId); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/battle_transition.h b/include/battle_transition.h index 1603f5c93..84b5e37ec 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -2,5 +2,55 @@ #define GUARD_BATTLE_TRANSITION_H void sub_8149DFC(u8 a1); +void BattleTransition_StartOnField(u8 transitionID); +void BattleTransition_Start(u8 transitionID); +bool8 IsBattleTransitionDone(void); + +// credits for the names go to Dyskinesia and Tetrable +// names are naturally subject to change + +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_SWIRL 1 +#define B_TRANSITION_SHUFFLE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_POKEBALLS_TRAIL 4 +#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 +#define B_TRANSITION_RIPPLE 6 +#define B_TRANSITION_WAVE 7 +#define B_TRANSITION_SLICE 8 +#define B_TRANSITION_WHITEFADE 9 +#define B_TRANSITION_GRID_SQUARES 10 +#define B_TRANSITION_SHARDS 11 +#define B_TRANSITION_SYDNEY 12 +#define B_TRANSITION_PHOEBE 13 +#define B_TRANSITION_GLACIA 14 +#define B_TRANSITION_DRAKE 15 +#define B_TRANSITION_CHAMPION 16 +// added in Emerald +#define B_TRANSITION_AQUA 17 +#define B_TRANSITION_MAGMA 18 +#define B_TRANSITION_REGICE 19 +#define B_TRANSITION_REGISTEEL 20 +#define B_TRANSITION_REGIROCK 21 +#define B_TRANSITION_KYOGRE 22 +#define B_TRANSITION_GROUDON 23 +#define B_TRANSITION_RAYQUAZA 24 +#define B_TRANSITION_25 25 +#define B_TRANSITION_26 26 +#define B_TRANSITION_27 27 +#define B_TRANSITION_28 28 +#define B_TRANSITION_29 29 +#define B_TRANSITION_30 30 +#define B_TRANSITION_31 31 +#define B_TRANSITION_32 32 +#define B_TRANSITION_33 33 +#define B_TRANSITION_34 34 +#define B_TRANSITION_35 35 +#define B_TRANSITION_36 36 +#define B_TRANSITION_37 37 +#define B_TRANSITION_38 38 +#define B_TRANSITION_39 39 +#define B_TRANSITION_40 40 +#define B_TRANSITION_41 41 #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/constants/flags.h b/include/constants/flags.h index e74ef1ef0..26d015c84 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -303,7 +303,7 @@ #define FLAG_0x12C 0x12C #define FLAG_0x12D 0x12D #define FLAG_0x12E 0x12E -#define FLAG_0x12F 0x12F +#define FLAG_HAS_MATCH_CALL 0x12F #define FLAG_0x130 0x130 #define FLAG_0x131 0x131 #define FLAG_0x132 0x132 @@ -348,7 +348,7 @@ #define FLAG_0x159 0x159 #define FLAG_0x15A 0x15A #define FLAG_0x15B 0x15B -#define FLAG_0x15C 0x15C +#define FLAG_MATCH_CALL_REGISTERED 0x15C #define FLAG_0x15D 0x15D #define FLAG_0x15E 0x15E #define FLAG_0x15F 0x15F diff --git a/include/constants/trainers.h b/include/constants/trainers.h new file mode 100644 index 000000000..48d4f081e --- /dev/null +++ b/include/constants/trainers.h @@ -0,0 +1,1129 @@ +#ifndef GUARD_TRAINERS_H +#define GUARD_TRAINERS_H + +#define TRAINER_NONE 0 +#define TRAINER_SAWYER_1 1 +#define TRAINER_GRUNT_1 2 +#define TRAINER_GRUNT_2 3 +#define TRAINER_GRUNT_3 4 +#define TRAINER_GRUNT_4 5 +#define TRAINER_GRUNT_5 6 +#define TRAINER_GRUNT_6 7 +#define TRAINER_GRUNT_7 8 +#define TRAINER_GABRIELLE_1 9 +#define TRAINER_GRUNT_8 10 +#define TRAINER_MARCEL 11 +#define TRAINER_ALBERTO 12 +#define TRAINER_ED 13 +#define TRAINER_GRUNT_9 14 +#define TRAINER_DECLAN 15 +#define TRAINER_GRUNT_10 16 +#define TRAINER_GRUNT_11 17 +#define TRAINER_GRUNT_12 18 +#define TRAINER_GRUNT_13 19 +#define TRAINER_GRUNT_14 20 +#define TRAINER_GRUNT_15 21 +#define TRAINER_GRUNT_16 22 +#define TRAINER_GRUNT_17 23 +#define TRAINER_GRUNT_18 24 +#define TRAINER_GRUNT_19 25 +#define TRAINER_GRUNT_20 26 +#define TRAINER_GRUNT_21 27 +#define TRAINER_GRUNT_22 28 +#define TRAINER_FREDRICK 29 +#define TRAINER_MATT 30 +#define TRAINER_ZANDER 31 +#define TRAINER_SHELLY_1 32 +#define TRAINER_SHELLY_2 33 +#define TRAINER_ARCHIE 34 +#define TRAINER_LEAH 35 +#define TRAINER_DAISY 36 +#define TRAINER_ROSE_1 37 +#define TRAINER_FELIX 38 +#define TRAINER_VIOLET 39 +#define TRAINER_ROSE_2 40 +#define TRAINER_ROSE_3 41 +#define TRAINER_ROSE_4 42 +#define TRAINER_ROSE_5 43 +#define TRAINER_DUSTY_1 44 +#define TRAINER_CHIP 45 +#define TRAINER_FOSTER 46 +#define TRAINER_DUSTY_2 47 +#define TRAINER_DUSTY_3 48 +#define TRAINER_DUSTY_4 49 +#define TRAINER_DUSTY_5 50 +#define TRAINER_GABBY_AND_TY_1 51 +#define TRAINER_GABBY_AND_TY_2 52 +#define TRAINER_GABBY_AND_TY_3 53 +#define TRAINER_GABBY_AND_TY_4 54 +#define TRAINER_GABBY_AND_TY_5 55 +#define TRAINER_GABBY_AND_TY_6 56 +#define TRAINER_LOLA_1 57 +#define TRAINER_AUSTINA 58 +#define TRAINER_GWEN 59 +#define TRAINER_LOLA_2 60 +#define TRAINER_LOLA_3 61 +#define TRAINER_LOLA_4 62 +#define TRAINER_LOLA_5 63 +#define TRAINER_RICKY_1 64 +#define TRAINER_SIMON 65 +#define TRAINER_CHARLIE 66 +#define TRAINER_RICKY_2 67 +#define TRAINER_RICKY_3 68 +#define TRAINER_RICKY_4 69 +#define TRAINER_RICKY_5 70 +#define TRAINER_RANDALL 71 +#define TRAINER_PARKER 72 +#define TRAINER_GEORGE 73 +#define TRAINER_BERKE 74 +#define TRAINER_BRAXTON 75 +#define TRAINER_VINCENT 76 +#define TRAINER_LEROY 77 +#define TRAINER_WILTON_1 78 +#define TRAINER_EDGAR 79 +#define TRAINER_ALBERT 80 +#define TRAINER_SAMUEL 81 +#define TRAINER_VITO 82 +#define TRAINER_OWEN 83 +#define TRAINER_WILTON_2 84 +#define TRAINER_WILTON_3 85 +#define TRAINER_WILTON_4 86 +#define TRAINER_WILTON_5 87 +#define TRAINER_WARREN 88 +#define TRAINER_MARY 89 +#define TRAINER_ALEXIA 90 +#define TRAINER_JODY 91 +#define TRAINER_WENDY 92 +#define TRAINER_KEIRA 93 +#define TRAINER_BROOKE_1 94 +#define TRAINER_JENNIFER 95 +#define TRAINER_HOPE 96 +#define TRAINER_SHANNON 97 +#define TRAINER_MICHELLE 98 +#define TRAINER_CAROLINE 99 +#define TRAINER_JULIE 100 +#define TRAINER_BROOKE_2 101 +#define TRAINER_BROOKE_3 102 +#define TRAINER_BROOKE_4 103 +#define TRAINER_BROOKE_5 104 +#define TRAINER_PATRICIA 105 +#define TRAINER_KINDRA 106 +#define TRAINER_TAMMY 107 +#define TRAINER_VALERIE_1 108 +#define TRAINER_TASHA 109 +#define TRAINER_VALERIE_2 110 +#define TRAINER_VALERIE_3 111 +#define TRAINER_VALERIE_4 112 +#define TRAINER_VALERIE_5 113 +#define TRAINER_CINDY_1 114 +#define TRAINER_DAPHNE 115 +#define TRAINER_GRUNT_23 116 +#define TRAINER_CINDY_2 117 +#define TRAINER_BRIANNA 118 +#define TRAINER_NAOMI 119 +#define TRAINER_CINDY_3 120 +#define TRAINER_CINDY_4 121 +#define TRAINER_CINDY_5 122 +#define TRAINER_CINDY_6 123 +#define TRAINER_MELISSA 124 +#define TRAINER_SHEILA 125 +#define TRAINER_SHIRLEY 126 +#define TRAINER_JESSICA_1 127 +#define TRAINER_CONNIE 128 +#define TRAINER_BRIDGET 129 +#define TRAINER_OLIVIA 130 +#define TRAINER_TIFFANY 131 +#define TRAINER_JESSICA_2 132 +#define TRAINER_JESSICA_3 133 +#define TRAINER_JESSICA_4 134 +#define TRAINER_JESSICA_5 135 +#define TRAINER_WINSTON_1 136 +#define TRAINER_MOLLIE 137 +#define TRAINER_GARRET 138 +#define TRAINER_WINSTON_2 139 +#define TRAINER_WINSTON_3 140 +#define TRAINER_WINSTON_4 141 +#define TRAINER_WINSTON_5 142 +#define TRAINER_STEVE_1 143 +#define TRAINER_THALIA_1 144 +#define TRAINER_MARK 145 +#define TRAINER_GRUNT_24 146 +#define TRAINER_STEVE_2 147 +#define TRAINER_STEVE_3 148 +#define TRAINER_STEVE_4 149 +#define TRAINER_STEVE_5 150 +#define TRAINER_LUIS 151 +#define TRAINER_DOMINIK 152 +#define TRAINER_DOUGLAS 153 +#define TRAINER_DARRIN 154 +#define TRAINER_TONY_1 155 +#define TRAINER_JEROME 156 +#define TRAINER_MATTHEW 157 +#define TRAINER_DAVID 158 +#define TRAINER_SPENCER 159 +#define TRAINER_ROLAND 160 +#define TRAINER_NOLEN 161 +#define TRAINER_STAN 162 +#define TRAINER_BARRY 163 +#define TRAINER_DEAN 164 +#define TRAINER_RODNEY 165 +#define TRAINER_RICHARD 166 +#define TRAINER_HERMAN 167 +#define TRAINER_SANTIAGO 168 +#define TRAINER_GILBERT 169 +#define TRAINER_FRANKLIN 170 +#define TRAINER_KEVIN 171 +#define TRAINER_JACK 172 +#define TRAINER_DUDLEY 173 +#define TRAINER_CHAD 174 +#define TRAINER_TONY_2 175 +#define TRAINER_TONY_3 176 +#define TRAINER_TONY_4 177 +#define TRAINER_TONY_5 178 +#define TRAINER_TAKAO 179 +#define TRAINER_HITOSHI 180 +#define TRAINER_KIYO 181 +#define TRAINER_KOICHI 182 +#define TRAINER_NOB_1 183 +#define TRAINER_NOB_2 184 +#define TRAINER_NOB_3 185 +#define TRAINER_NOB_4 186 +#define TRAINER_NOB_5 187 +#define TRAINER_YUJI 188 +#define TRAINER_DAISUKE 189 +#define TRAINER_ATSUSHI 190 +#define TRAINER_KIRK 191 +#define TRAINER_GRUNT_25 192 +#define TRAINER_GRUNT_26 193 +#define TRAINER_SHAWN 194 +#define TRAINER_FERNANDO_1 195 +#define TRAINER_DALTON_1 196 +#define TRAINER_DALTON_2 197 +#define TRAINER_DALTON_3 198 +#define TRAINER_DALTON_4 199 +#define TRAINER_DALTON_5 200 +#define TRAINER_COLE 201 +#define TRAINER_JEFF 202 +#define TRAINER_AXLE 203 +#define TRAINER_JACE 204 +#define TRAINER_KEEGAN 205 +#define TRAINER_BERNIE_1 206 +#define TRAINER_BERNIE_2 207 +#define TRAINER_BERNIE_3 208 +#define TRAINER_BERNIE_4 209 +#define TRAINER_BERNIE_5 210 +#define TRAINER_DREW 211 +#define TRAINER_BEAU 212 +#define TRAINER_LARRY 213 +#define TRAINER_SHANE 214 +#define TRAINER_JUSTIN 215 +#define TRAINER_ETHAN_1 216 +#define TRAINER_AUTUMN 217 +#define TRAINER_TRAVIS 218 +#define TRAINER_ETHAN_2 219 +#define TRAINER_ETHAN_3 220 +#define TRAINER_ETHAN_4 221 +#define TRAINER_ETHAN_5 222 +#define TRAINER_BRENT 223 +#define TRAINER_DONALD 224 +#define TRAINER_TAYLOR 225 +#define TRAINER_JEFFREY_1 226 +#define TRAINER_DEREK 227 +#define TRAINER_JEFFREY_2 228 +#define TRAINER_JEFFREY_3 229 +#define TRAINER_JEFFREY_4 230 +#define TRAINER_JEFFREY_5 231 +#define TRAINER_EDWARD 232 +#define TRAINER_PRESTON 233 +#define TRAINER_VIRGIL 234 +#define TRAINER_BLAKE 235 +#define TRAINER_WILLIAM 236 +#define TRAINER_JOSHUA 237 +#define TRAINER_CAMERON_1 238 +#define TRAINER_CAMERON_2 239 +#define TRAINER_CAMERON_3 240 +#define TRAINER_CAMERON_4 241 +#define TRAINER_CAMERON_5 242 +#define TRAINER_JACLYN 243 +#define TRAINER_HANNAH 244 +#define TRAINER_SAMANTHA 245 +#define TRAINER_MAURA 246 +#define TRAINER_KAYLA 247 +#define TRAINER_ALEXIS 248 +#define TRAINER_JACKI_1 249 +#define TRAINER_JACKI_2 250 +#define TRAINER_JACKI_3 251 +#define TRAINER_JACKI_4 252 +#define TRAINER_JACKI_5 253 +#define TRAINER_WALTER_1 254 +#define TRAINER_MICAH 255 +#define TRAINER_THOMAS 256 +#define TRAINER_WALTER_2 257 +#define TRAINER_WALTER_3 258 +#define TRAINER_WALTER_4 259 +#define TRAINER_WALTER_5 260 +#define TRAINER_SIDNEY 261 +#define TRAINER_PHOEBE 262 +#define TRAINER_GLACIA 263 +#define TRAINER_DRAKE 264 +#define TRAINER_ROXANNE_1 265 +#define TRAINER_BRAWLY_1 266 +#define TRAINER_WATTSON_1 267 +#define TRAINER_FLANNERY_1 268 +#define TRAINER_NORMAN_1 269 +#define TRAINER_WINONA_1 270 +#define TRAINER_TATE_AND_LIZA_1 271 +#define TRAINER_JUAN_1 272 +#define TRAINER_JERRY_1 273 +#define TRAINER_TED 274 +#define TRAINER_PAUL 275 +#define TRAINER_JERRY_2 276 +#define TRAINER_JERRY_3 277 +#define TRAINER_JERRY_4 278 +#define TRAINER_JERRY_5 279 +#define TRAINER_KAREN_1 280 +#define TRAINER_GEORGIA 281 +#define TRAINER_KAREN_2 282 +#define TRAINER_KAREN_3 283 +#define TRAINER_KAREN_4 284 +#define TRAINER_KAREN_5 285 +#define TRAINER_KATE_AND_JOY 286 +#define TRAINER_ANNA_AND_MEG_1 287 +#define TRAINER_ANNA_AND_MEG_2 288 +#define TRAINER_ANNA_AND_MEG_3 289 +#define TRAINER_ANNA_AND_MEG_4 290 +#define TRAINER_ANNA_AND_MEG_5 291 +#define TRAINER_VICTOR 292 +#define TRAINER_MIGUEL_1 293 +#define TRAINER_COLTON 294 +#define TRAINER_MIGUEL_2 295 +#define TRAINER_MIGUEL_3 296 +#define TRAINER_MIGUEL_4 297 +#define TRAINER_MIGUEL_5 298 +#define TRAINER_VICTORIA 299 +#define TRAINER_VANESSA 300 +#define TRAINER_BETHANY 301 +#define TRAINER_ISABEL_1 302 +#define TRAINER_ISABEL_2 303 +#define TRAINER_ISABEL_3 304 +#define TRAINER_ISABEL_4 305 +#define TRAINER_ISABEL_5 306 +#define TRAINER_TIMOTHY_1 307 +#define TRAINER_TIMOTHY_2 308 +#define TRAINER_TIMOTHY_3 309 +#define TRAINER_TIMOTHY_4 310 +#define TRAINER_TIMOTHY_5 311 +#define TRAINER_VICKY 312 +#define TRAINER_SHELBY_1 313 +#define TRAINER_SHELBY_2 314 +#define TRAINER_SHELBY_3 315 +#define TRAINER_SHELBY_4 316 +#define TRAINER_SHELBY_5 317 +#define TRAINER_CALVIN_1 318 +#define TRAINER_BILLY 319 +#define TRAINER_JOSH 320 +#define TRAINER_TOMMY 321 +#define TRAINER_JOEY 322 +#define TRAINER_BEN 323 +#define TRAINER_QUINCY 324 +#define TRAINER_KATELYNN 325 +#define TRAINER_JAYLEN 326 +#define TRAINER_DILLON 327 +#define TRAINER_CALVIN_2 328 +#define TRAINER_CALVIN_3 329 +#define TRAINER_CALVIN_4 330 +#define TRAINER_CALVIN_5 331 +#define TRAINER_EDDIE 332 +#define TRAINER_ALLEN 333 +#define TRAINER_TIMMY 334 +#define TRAINER_WALLACE 335 +#define TRAINER_ANDREW 336 +#define TRAINER_IVAN 337 +#define TRAINER_CLAUDE 338 +#define TRAINER_ELLIOT_1 339 +#define TRAINER_NED 340 +#define TRAINER_DALE 341 +#define TRAINER_NOLAN 342 +#define TRAINER_BARNY 343 +#define TRAINER_WADE 344 +#define TRAINER_CARTER 345 +#define TRAINER_ELLIOT_2 346 +#define TRAINER_ELLIOT_3 347 +#define TRAINER_ELLIOT_4 348 +#define TRAINER_ELLIOT_5 349 +#define TRAINER_RONALD 350 +#define TRAINER_JACOB 351 +#define TRAINER_ANTHONY 352 +#define TRAINER_BENJAMIN_1 353 +#define TRAINER_BENJAMIN_2 354 +#define TRAINER_BENJAMIN_3 355 +#define TRAINER_BENJAMIN_4 356 +#define TRAINER_BENJAMIN_5 357 +#define TRAINER_ABIGAIL_1 358 +#define TRAINER_JASMINE 359 +#define TRAINER_ABIGAIL_2 360 +#define TRAINER_ABIGAIL_3 361 +#define TRAINER_ABIGAIL_4 362 +#define TRAINER_ABIGAIL_5 363 +#define TRAINER_DYLAN_1 364 +#define TRAINER_DYLAN_2 365 +#define TRAINER_DYLAN_3 366 +#define TRAINER_DYLAN_4 367 +#define TRAINER_DYLAN_5 368 +#define TRAINER_MARIA_1 369 +#define TRAINER_MARIA_2 370 +#define TRAINER_MARIA_3 371 +#define TRAINER_MARIA_4 372 +#define TRAINER_MARIA_5 373 +#define TRAINER_CAMDEN 374 +#define TRAINER_DEMETRIUS 375 +#define TRAINER_ISAIAH_1 376 +#define TRAINER_PABLO_1 377 +#define TRAINER_CHASE 378 +#define TRAINER_ISAIAH_2 379 +#define TRAINER_ISAIAH_3 380 +#define TRAINER_ISAIAH_4 381 +#define TRAINER_ISAIAH_5 382 +#define TRAINER_ISOBEL 383 +#define TRAINER_DONNY 384 +#define TRAINER_TALIA 385 +#define TRAINER_KATELYN_1 386 +#define TRAINER_ALLISON 387 +#define TRAINER_KATELYN_2 388 +#define TRAINER_KATELYN_3 389 +#define TRAINER_KATELYN_4 390 +#define TRAINER_KATELYN_5 391 +#define TRAINER_NICOLAS_1 392 +#define TRAINER_NICOLAS_2 393 +#define TRAINER_NICOLAS_3 394 +#define TRAINER_NICOLAS_4 395 +#define TRAINER_NICOLAS_5 396 +#define TRAINER_AARON 397 +#define TRAINER_PERRY 398 +#define TRAINER_HUGH 399 +#define TRAINER_PHIL 400 +#define TRAINER_JARED 401 +#define TRAINER_HUMBERTO 402 +#define TRAINER_PRESLEY 403 +#define TRAINER_EDWARDO 404 +#define TRAINER_COLIN 405 +#define TRAINER_ROBERT_1 406 +#define TRAINER_BENNY 407 +#define TRAINER_CHESTER 408 +#define TRAINER_ROBERT_2 409 +#define TRAINER_ROBERT_3 410 +#define TRAINER_ROBERT_4 411 +#define TRAINER_ROBERT_5 412 +#define TRAINER_ALEX 413 +#define TRAINER_BECK 414 +#define TRAINER_YASU 415 +#define TRAINER_TAKASHI 416 +#define TRAINER_DIANNE 417 +#define TRAINER_JANI 418 +#define TRAINER_LAO_1 419 +#define TRAINER_LUNG 420 +#define TRAINER_LAO_2 421 +#define TRAINER_LAO_3 422 +#define TRAINER_LAO_4 423 +#define TRAINER_LAO_5 424 +#define TRAINER_JOCELYN 425 +#define TRAINER_LAURA 426 +#define TRAINER_CYNDY_1 427 +#define TRAINER_CORA 428 +#define TRAINER_PAULA 429 +#define TRAINER_CYNDY_2 430 +#define TRAINER_CYNDY_3 431 +#define TRAINER_CYNDY_4 432 +#define TRAINER_CYNDY_5 433 +#define TRAINER_MADELINE_1 434 +#define TRAINER_CLARISSA 435 +#define TRAINER_ANGELICA 436 +#define TRAINER_MADELINE_2 437 +#define TRAINER_MADELINE_3 438 +#define TRAINER_MADELINE_4 439 +#define TRAINER_MADELINE_5 440 +#define TRAINER_BEVERLY 441 +#define TRAINER_IMANI 442 +#define TRAINER_KYLA 443 +#define TRAINER_DENISE 444 +#define TRAINER_BETH 445 +#define TRAINER_TARA 446 +#define TRAINER_MISSY 447 +#define TRAINER_ALICE 448 +#define TRAINER_JENNY_1 449 +#define TRAINER_GRACE 450 +#define TRAINER_TANYA 451 +#define TRAINER_SHARON 452 +#define TRAINER_NIKKI 453 +#define TRAINER_BRENDA 454 +#define TRAINER_KATIE 455 +#define TRAINER_SUSIE 456 +#define TRAINER_KARA 457 +#define TRAINER_DANA 458 +#define TRAINER_SIENNA 459 +#define TRAINER_DEBRA 460 +#define TRAINER_LINDA 461 +#define TRAINER_KAYLEE 462 +#define TRAINER_LAUREL 463 +#define TRAINER_CARLEE 464 +#define TRAINER_JENNY_2 465 +#define TRAINER_JENNY_3 466 +#define TRAINER_JENNY_4 467 +#define TRAINER_JENNY_5 468 +#define TRAINER_HEIDI 469 +#define TRAINER_BECKY 470 +#define TRAINER_CAROL 471 +#define TRAINER_NANCY 472 +#define TRAINER_MARTHA 473 +#define TRAINER_DIANA_1 474 +#define TRAINER_CEDRIC 475 +#define TRAINER_IRENE 476 +#define TRAINER_DIANA_2 477 +#define TRAINER_DIANA_3 478 +#define TRAINER_DIANA_4 479 +#define TRAINER_DIANA_5 480 +#define TRAINER_AMY_AND_LIV_1 481 +#define TRAINER_AMY_AND_LIV_2 482 +#define TRAINER_GINA_AND_MIA_1 483 +#define TRAINER_MIU_AND_YUKI 484 +#define TRAINER_AMY_AND_LIV_3 485 +#define TRAINER_GINA_AND_MIA_2 486 +#define TRAINER_AMY_AND_LIV_4 487 +#define TRAINER_AMY_AND_LIV_5 488 +#define TRAINER_AMY_AND_LIV_6 489 +#define TRAINER_HUEY 490 +#define TRAINER_EDMOND 491 +#define TRAINER_ERNEST_1 492 +#define TRAINER_DWAYNE 493 +#define TRAINER_PHILLIP 494 +#define TRAINER_LEONARD 495 +#define TRAINER_DUNCAN 496 +#define TRAINER_ERNEST_2 497 +#define TRAINER_ERNEST_3 498 +#define TRAINER_ERNEST_4 499 +#define TRAINER_ERNEST_5 500 +#define TRAINER_ELI 501 +#define TRAINER_ANNIKA 502 +#define TRAINER_JAZMYN 503 +#define TRAINER_JONAS 504 +#define TRAINER_KAYLEY 505 +#define TRAINER_AURON 506 +#define TRAINER_KELVIN 507 +#define TRAINER_MARLEY 508 +#define TRAINER_REYNA 509 +#define TRAINER_HUDSON 510 +#define TRAINER_CONOR 511 +#define TRAINER_EDWIN_1 512 +#define TRAINER_HECTOR 513 +#define TRAINER_TABITHA_1 514 +#define TRAINER_EDWIN_2 515 +#define TRAINER_EDWIN_3 516 +#define TRAINER_EDWIN_4 517 +#define TRAINER_EDWIN_5 518 +#define TRAINER_WALLY_1 519 +#define TRAINER_BRENDAN_1 520 +#define TRAINER_BRENDAN_2 521 +#define TRAINER_BRENDAN_3 522 +#define TRAINER_BRENDAN_4 523 +#define TRAINER_BRENDAN_5 524 +#define TRAINER_BRENDAN_6 525 +#define TRAINER_BRENDAN_7 526 +#define TRAINER_BRENDAN_8 527 +#define TRAINER_BRENDAN_9 528 +#define TRAINER_MAY_1 529 +#define TRAINER_MAY_2 530 +#define TRAINER_MAY_3 531 +#define TRAINER_MAY_4 532 +#define TRAINER_MAY_5 533 +#define TRAINER_MAY_6 534 +#define TRAINER_MAY_7 535 +#define TRAINER_MAY_8 536 +#define TRAINER_MAY_9 537 +#define TRAINER_ISAAC_1 538 +#define TRAINER_DAVIS 539 +#define TRAINER_MITCHELL 540 +#define TRAINER_ISAAC_2 541 +#define TRAINER_ISAAC_3 542 +#define TRAINER_ISAAC_4 543 +#define TRAINER_ISAAC_5 544 +#define TRAINER_LYDIA_1 545 +#define TRAINER_HALLE 546 +#define TRAINER_GARRISON 547 +#define TRAINER_LYDIA_2 548 +#define TRAINER_LYDIA_3 549 +#define TRAINER_LYDIA_4 550 +#define TRAINER_LYDIA_5 551 +#define TRAINER_JACKSON_1 552 +#define TRAINER_LORENZO 553 +#define TRAINER_SEBASTIAN 554 +#define TRAINER_JACKSON_2 555 +#define TRAINER_JACKSON_3 556 +#define TRAINER_JACKSON_4 557 +#define TRAINER_JACKSON_5 558 +#define TRAINER_CATHERINE_1 559 +#define TRAINER_JENNA 560 +#define TRAINER_SOPHIA 561 +#define TRAINER_CATHERINE_2 562 +#define TRAINER_CATHERINE_3 563 +#define TRAINER_CATHERINE_4 564 +#define TRAINER_CATHERINE_5 565 +#define TRAINER_JULIO 566 +#define TRAINER_GRUNT_27 567 +#define TRAINER_GRUNT_28 568 +#define TRAINER_GRUNT_29 569 +#define TRAINER_GRUNT_30 570 +#define TRAINER_MARC 571 +#define TRAINER_BRENDEN 572 +#define TRAINER_LILITH 573 +#define TRAINER_CRISTIAN 574 +#define TRAINER_SYLVIA 575 +#define TRAINER_LEONARDO 576 +#define TRAINER_ATHENA 577 +#define TRAINER_HARRISON 578 +#define TRAINER_GRUNT_31 579 +#define TRAINER_CLARENCE 580 +#define TRAINER_TERRY 581 +#define TRAINER_NATE 582 +#define TRAINER_KATHLEEN 583 +#define TRAINER_CLIFFORD 584 +#define TRAINER_NICHOLAS 585 +#define TRAINER_GRUNT_32 586 +#define TRAINER_GRUNT_33 587 +#define TRAINER_GRUNT_34 588 +#define TRAINER_GRUNT_35 589 +#define TRAINER_GRUNT_36 590 +#define TRAINER_MACEY 591 +#define TRAINER_BRENDAN_10 592 +#define TRAINER_BRENDAN_11 593 +#define TRAINER_PAXTON 594 +#define TRAINER_ISABELLA 595 +#define TRAINER_GRUNT_37 596 +#define TRAINER_TABITHA_2 597 +#define TRAINER_JONATHAN 598 +#define TRAINER_BRENDAN_12 599 +#define TRAINER_MAY_10 600 +#define TRAINER_MAXIE_1 601 +#define TRAINER_MAXIE_2 602 +#define TRAINER_TIANA 603 +#define TRAINER_HALEY_1 604 +#define TRAINER_JANICE 605 +#define TRAINER_VIVI 606 +#define TRAINER_HALEY_2 607 +#define TRAINER_HALEY_3 608 +#define TRAINER_HALEY_4 609 +#define TRAINER_HALEY_5 610 +#define TRAINER_SALLY 611 +#define TRAINER_ROBIN 612 +#define TRAINER_ANDREA 613 +#define TRAINER_CRISSY 614 +#define TRAINER_RICK 615 +#define TRAINER_LYLE 616 +#define TRAINER_JOSE 617 +#define TRAINER_DOUG 618 +#define TRAINER_GREG 619 +#define TRAINER_KENT 620 +#define TRAINER_JAMES_1 621 +#define TRAINER_JAMES_2 622 +#define TRAINER_JAMES_3 623 +#define TRAINER_JAMES_4 624 +#define TRAINER_JAMES_5 625 +#define TRAINER_BRICE 626 +#define TRAINER_TRENT_1 627 +#define TRAINER_LENNY 628 +#define TRAINER_LUCAS_1 629 +#define TRAINER_ALAN 630 +#define TRAINER_CLARK 631 +#define TRAINER_ERIC 632 +#define TRAINER_LUCAS_2 633 +#define TRAINER_MIKE_1 634 +#define TRAINER_MIKE_2 635 +#define TRAINER_TRENT_2 636 +#define TRAINER_TRENT_3 637 +#define TRAINER_TRENT_4 638 +#define TRAINER_TRENT_5 639 +#define TRAINER_DEZ_AND_LUKE 640 +#define TRAINER_LEA_AND_JED 641 +#define TRAINER_KIRA_AND_DAN_1 642 +#define TRAINER_KIRA_AND_DAN_2 643 +#define TRAINER_KIRA_AND_DAN_3 644 +#define TRAINER_KIRA_AND_DAN_4 645 +#define TRAINER_KIRA_AND_DAN_5 646 +#define TRAINER_JOHANNA 647 +#define TRAINER_GERALD 648 +#define TRAINER_VIVIAN 649 +#define TRAINER_DANIELLE 650 +#define TRAINER_HIDEO 651 +#define TRAINER_KEIGO 652 +#define TRAINER_RILEY 653 +#define TRAINER_FLINT 654 +#define TRAINER_ASHLEY 655 +#define TRAINER_WALLY_2 656 +#define TRAINER_WALLY_3 657 +#define TRAINER_WALLY_4 658 +#define TRAINER_WALLY_5 659 +#define TRAINER_WALLY_6 660 +#define TRAINER_BRENDAN_13 661 +#define TRAINER_BRENDAN_14 662 +#define TRAINER_BRENDAN_15 663 +#define TRAINER_MAY_11 664 +#define TRAINER_MAY_12 665 +#define TRAINER_MAY_13 666 +#define TRAINER_JONAH 667 +#define TRAINER_HENRY 668 +#define TRAINER_ROGER 669 +#define TRAINER_ALEXA 670 +#define TRAINER_RUBEN 671 +#define TRAINER_KOJI_1 672 +#define TRAINER_WAYNE 673 +#define TRAINER_AIDAN 674 +#define TRAINER_REED 675 +#define TRAINER_TISHA 676 +#define TRAINER_TORI_AND_TIA 677 +#define TRAINER_KIM_AND_IRIS 678 +#define TRAINER_TYRA_AND_IVY 679 +#define TRAINER_MEL_AND_PAUL 680 +#define TRAINER_JOHN_AND_JAY_1 681 +#define TRAINER_JOHN_AND_JAY_2 682 +#define TRAINER_JOHN_AND_JAY_3 683 +#define TRAINER_JOHN_AND_JAY_4 684 +#define TRAINER_JOHN_AND_JAY_5 685 +#define TRAINER_RELI_AND_IAN 686 +#define TRAINER_LILA_AND_ROY_1 687 +#define TRAINER_LILA_AND_ROY_2 688 +#define TRAINER_LILA_AND_ROY_3 689 +#define TRAINER_LILA_AND_ROY_4 690 +#define TRAINER_LILA_AND_ROY_5 691 +#define TRAINER_LISA_AND_RAY 692 +#define TRAINER_CHRIS 693 +#define TRAINER_DAWSON 694 +#define TRAINER_SARAH 695 +#define TRAINER_DARIAN 696 +#define TRAINER_HAILEY 697 +#define TRAINER_CHANDLER 698 +#define TRAINER_KALEB 699 +#define TRAINER_JOSEPH 700 +#define TRAINER_ALYSSA 701 +#define TRAINER_MARCOS 702 +#define TRAINER_RHETT 703 +#define TRAINER_TYRON 704 +#define TRAINER_CELINA 705 +#define TRAINER_BIANCA 706 +#define TRAINER_HAYDEN 707 +#define TRAINER_SOPHIE 708 +#define TRAINER_COBY 709 +#define TRAINER_LAWRENCE 710 +#define TRAINER_WYATT 711 +#define TRAINER_ANGELINA 712 +#define TRAINER_KAI 713 +#define TRAINER_CHARLOTTE 714 +#define TRAINER_DEANDRE 715 +#define TRAINER_GRUNT_38 716 +#define TRAINER_GRUNT_39 717 +#define TRAINER_GRUNT_40 718 +#define TRAINER_GRUNT_41 719 +#define TRAINER_GRUNT_42 720 +#define TRAINER_GRUNT_43 721 +#define TRAINER_GRUNT_44 722 +#define TRAINER_GRUNT_45 723 +#define TRAINER_GRUNT_46 724 +#define TRAINER_GRUNT_47 725 +#define TRAINER_GRUNT_48 726 +#define TRAINER_GRUNT_49 727 +#define TRAINER_GRUNT_50 728 +#define TRAINER_GRUNT_51 729 +#define TRAINER_GRUNT_52 730 +#define TRAINER_GRUNT_53 731 +#define TRAINER_TABITHA_3 732 +#define TRAINER_DARCY 733 +#define TRAINER_MAXIE_3 734 +#define TRAINER_PETE 735 +#define TRAINER_ISABELLE 736 +#define TRAINER_ANDRES_1 737 +#define TRAINER_JOSUE 738 +#define TRAINER_CAMRON 739 +#define TRAINER_CORY_1 740 +#define TRAINER_CAROLINA 741 +#define TRAINER_ELIJAH 742 +#define TRAINER_CELIA 743 +#define TRAINER_BRYAN 744 +#define TRAINER_BRANDEN 745 +#define TRAINER_BRYANT 746 +#define TRAINER_SHAYLA 747 +#define TRAINER_KYRA 748 +#define TRAINER_JAIDEN 749 +#define TRAINER_ALIX 750 +#define TRAINER_HELENE 751 +#define TRAINER_MARLENE 752 +#define TRAINER_DEVAN 753 +#define TRAINER_JOHNSON 754 +#define TRAINER_MELINA 755 +#define TRAINER_BRANDI 756 +#define TRAINER_AISHA 757 +#define TRAINER_MAKAYLA 758 +#define TRAINER_FABIAN 759 +#define TRAINER_DAYTON 760 +#define TRAINER_RACHEL 761 +#define TRAINER_LEONEL 762 +#define TRAINER_CALLIE 763 +#define TRAINER_CALE 764 +#define TRAINER_MYLES 765 +#define TRAINER_PAT 766 +#define TRAINER_CRISTIN_1 767 +#define TRAINER_MAY_14 768 +#define TRAINER_MAY_15 769 +#define TRAINER_ROXANNE_2 770 +#define TRAINER_ROXANNE_3 771 +#define TRAINER_ROXANNE_4 772 +#define TRAINER_ROXANNE_5 773 +#define TRAINER_BRAWLY_2 774 +#define TRAINER_BRAWLY_3 775 +#define TRAINER_BRAWLY_4 776 +#define TRAINER_BRAWLY_5 777 +#define TRAINER_WATTSON_2 778 +#define TRAINER_WATTSON_3 779 +#define TRAINER_WATTSON_4 780 +#define TRAINER_WATTSON_5 781 +#define TRAINER_FLANNERY_2 782 +#define TRAINER_FLANNERY_3 783 +#define TRAINER_FLANNERY_4 784 +#define TRAINER_FLANNERY_5 785 +#define TRAINER_NORMAN_2 786 +#define TRAINER_NORMAN_3 787 +#define TRAINER_NORMAN_4 788 +#define TRAINER_NORMAN_5 789 +#define TRAINER_WINONA_2 790 +#define TRAINER_WINONA_3 791 +#define TRAINER_WINONA_4 792 +#define TRAINER_WINONA_5 793 +#define TRAINER_TATE_AND_LIZA_2 794 +#define TRAINER_TATE_AND_LIZA_3 795 +#define TRAINER_TATE_AND_LIZA_4 796 +#define TRAINER_TATE_AND_LIZA_5 797 +#define TRAINER_JUAN_2 798 +#define TRAINER_JUAN_3 799 +#define TRAINER_JUAN_4 800 +#define TRAINER_JUAN_5 801 +#define TRAINER_ANGELO 802 +#define TRAINER_DARIUS 803 +#define TRAINER_STEVEN 804 +#define TRAINER_ANABEL 805 +#define TRAINER_TUCKER 806 +#define TRAINER_SPENSER 807 +#define TRAINER_GRETA 808 +#define TRAINER_NOLAND 809 +#define TRAINER_LUCY 810 +#define TRAINER_BRANDON 811 +#define TRAINER_ANDRES_2 812 +#define TRAINER_ANDRES_3 813 +#define TRAINER_ANDRES_4 814 +#define TRAINER_ANDRES_5 815 +#define TRAINER_CORY_2 816 +#define TRAINER_CORY_3 817 +#define TRAINER_CORY_4 818 +#define TRAINER_CORY_5 819 +#define TRAINER_PABLO_2 820 +#define TRAINER_PABLO_3 821 +#define TRAINER_PABLO_4 822 +#define TRAINER_PABLO_5 823 +#define TRAINER_KOJI_2 824 +#define TRAINER_KOJI_3 825 +#define TRAINER_KOJI_4 826 +#define TRAINER_KOJI_5 827 +#define TRAINER_CRISTIN_2 828 +#define TRAINER_CRISTIN_3 829 +#define TRAINER_CRISTIN_4 830 +#define TRAINER_CRISTIN_5 831 +#define TRAINER_FERNANDO_2 832 +#define TRAINER_FERNANDO_3 833 +#define TRAINER_FERNANDO_4 834 +#define TRAINER_FERNANDO_5 835 +#define TRAINER_SAWYER_2 836 +#define TRAINER_SAWYER_3 837 +#define TRAINER_SAWYER_4 838 +#define TRAINER_SAWYER_5 839 +#define TRAINER_GABRIELLE_2 840 +#define TRAINER_GABRIELLE_3 841 +#define TRAINER_GABRIELLE_4 842 +#define TRAINER_GABRIELLE_5 843 +#define TRAINER_THALIA_2 844 +#define TRAINER_THALIA_3 845 +#define TRAINER_THALIA_4 846 +#define TRAINER_THALIA_5 847 +#define TRAINER_MARIELA 848 +#define TRAINER_ALVARO 849 +#define TRAINER_EVERETT 850 +#define TRAINER_RED 851 +#define TRAINER_LEAF 852 +#define TRAINER_BRENDAN_16 853 +#define TRAINER_MAY_16 854 + +#define NO_OF_TRAINERS 854 + +#define TRAINER_PIC_HIKER 0 +#define TRAINER_PIC_AQUA_GRUNT_M 1 +#define TRAINER_PIC_POKEMON_BREEDER_F 2 +#define TRAINER_PIC_COOL_TRAINER_M 3 +#define TRAINER_PIC_BIRD_KEEPER 4 +#define TRAINER_PIC_COLLECTOR 5 +#define TRAINER_PIC_AQUA_GRUNT_F 6 +#define TRAINER_PIC_SWIMMER_M 7 +#define TRAINER_PIC_MAGMA_GRUNT_M 8 +#define TRAINER_PIC_EXPERT_M 9 +#define TRAINER_PIC_AQUA_ADMIN_M 10 +#define TRAINER_PIC_BLACK_BELT 11 +#define TRAINER_PIC_AQUA_ADMIN_F 12 +#define TRAINER_PIC_AQUA_LEADER_ARCHIE 13 +#define TRAINER_PIC_HEX_MANIAC 14 +#define TRAINER_PIC_AROMA_LADY 15 +#define TRAINER_PIC_RUIN_MANIAC 16 +#define TRAINER_PIC_INTERVIEWER 17 +#define TRAINER_PIC_TUBER_F 18 +#define TRAINER_PIC_TUBER_M 19 +#define TRAINER_PIC_COOL_TRAINER_F 20 +#define TRAINER_PIC_LADY 21 +#define TRAINER_PIC_BEAUTY 22 +#define TRAINER_PIC_RICH_BOY 23 +#define TRAINER_PIC_EXPERT_F 24 +#define TRAINER_PIC_POKEMANIAC 25 +#define TRAINER_PIC_MAGMA_GRUNT_F 26 +#define TRAINER_PIC_GUITARIST 27 +#define TRAINER_PIC_KINDLER 28 +#define TRAINER_PIC_CAMPER 29 +#define TRAINER_PIC_PICNICKER 30 +#define TRAINER_PIC_BUG_MANIAC 31 +#define TRAINER_PIC_POKEMON_BREEDER_M 32 +#define TRAINER_PIC_PSYCHIC_M 33 +#define TRAINER_PIC_PSYCHIC_F 34 +#define TRAINER_PIC_GENTLEMAN 35 +#define TRAINER_PIC_ELITE_FOUR_SIDNEY 36 +#define TRAINER_PIC_ELITE_FOUR_PHOEBE 37 +#define TRAINER_PIC_ELITE_FOUR_GLACIA 38 +#define TRAINER_PIC_ELITE_FOUR_DRAKE 39 +#define TRAINER_PIC_LEADER_ROXANNE 40 +#define TRAINER_PIC_LEADER_BRAWLY 41 +#define TRAINER_PIC_LEADER_WATTSON 42 +#define TRAINER_PIC_LEADER_FLANNERY 43 +#define TRAINER_PIC_LEADER_NORMAN 44 +#define TRAINER_PIC_LEADER_WINONA 45 +#define TRAINER_PIC_LEADER_TATE_AND_LIZA 46 +#define TRAINER_PIC_LEADER_JUAN 47 +#define TRAINER_PIC_SCHOOL_KID_M 48 +#define TRAINER_PIC_SCHOOL_KID_F 49 +#define TRAINER_PIC_SR_AND_JR 50 +#define TRAINER_PIC_WINSTRATE_M 51 +#define TRAINER_PIC_WINSTRATE_F 52 +#define TRAINER_PIC_YOUNGSTER 53 +#define TRAINER_PIC_CHAMPION_WALLACE 54 +#define TRAINER_PIC_FISHERMAN 55 +#define TRAINER_PIC_CYCLING_TRIATHLETE_M 56 +#define TRAINER_PIC_CYCLING_TRIATHLETE_F 57 +#define TRAINER_PIC_RUNNING_TRIATHLETE_M 58 +#define TRAINER_PIC_RUNNING_TRIATHLETE_F 59 +#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 60 +#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 61 +#define TRAINER_PIC_DRAGON_TAMER 62 +#define TRAINER_PIC_NINJA_BOY 63 +#define TRAINER_PIC_BATTLE_GIRL 64 +#define TRAINER_PIC_PARASOL_LADY 65 +#define TRAINER_PIC_SWIMMER_F 66 +#define TRAINER_PIC_TWINS 67 +#define TRAINER_PIC_SAILOR 68 +#define TRAINER_PIC_MAGMA_ADMIN 69 +#define TRAINER_PIC_WALLY 70 +#define TRAINER_PIC_BRENDAN 71 +#define TRAINER_PIC_MAY 72 +#define TRAINER_PIC_BUG_CATCHER 73 +#define TRAINER_PIC_POKEMON_RANGER_M 74 +#define TRAINER_PIC_POKEMON_RANGER_F 75 +#define TRAINER_PIC_MAGMA_LEADER_MAXIE 76 +#define TRAINER_PIC_LASS 77 +#define TRAINER_PIC_YOUNG_COUPLE 78 +#define TRAINER_PIC_OLD_COUPLE 79 +#define TRAINER_PIC_SIS_AND_BRO 80 +#define TRAINER_PIC_STEVEN 81 +#define TRAINER_PIC_SALON_MAIDEN_ANABEL 82 +#define TRAINER_PIC_DOME_ACE_TUCKER 83 +#define TRAINER_PIC_PALACE_MAVEN_SPENSER 84 +#define TRAINER_PIC_ARENA_TYCOON_GRETA 85 +#define TRAINER_PIC_FACTORY_HEAD_NOLAND 86 +#define TRAINER_PIC_PIKE_QUEEN_LUCY 87 +#define TRAINER_PIC_PYRAMID_KING_BRANDON 88 +#define TRAINER_PIC_RED 89 +#define TRAINER_PIC_LEAF 90 +#define TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN 91 +#define TRAINER_PIC_RUBY_SAPPHIRE_MAY 92 + +#define FACILITY_CLASS_HIKER 0x0 +#define FACILITY_CLASS_TEAM_AQUA_1 0x1 +#define FACILITY_CLASS_PKMN_BREEDER_1 0x2 +#define FACILITY_CLASS_COOLTRAINER_1 0x3 +#define FACILITY_CLASS_BIRD_KEEPER 0x4 +#define FACILITY_CLASS_COLLECTOR 0x5 +#define FACILITY_CLASS_TEAM_AQUA_2 0x6 +#define FACILITY_CLASS_SWIMMER_M 0x7 +#define FACILITY_CLASS_TEAM_MAGMA_1 0x8 +#define FACILITY_CLASS_EXPERT_1 0x9 +#define FACILITY_CLASS_BLACK_BELT 0xa +#define FACILITY_CLASS_AQUA_LEADER 0xb +#define FACILITY_CLASS_HEX_MANIAC 0xc +#define FACILITY_CLASS_AROMA_LADY 0xd +#define FACILITY_CLASS_RUIN_MANIAC 0xe +#define FACILITY_CLASS_INTERVIEWER 0xf +#define FACILITY_CLASS_TUBER_1 0x10 +#define FACILITY_CLASS_TUBER_2 0x11 +#define FACILITY_CLASS_COOLTRAINER_2 0x12 +#define FACILITY_CLASS_LADY 0x13 +#define FACILITY_CLASS_BEAUTY 0x14 +#define FACILITY_CLASS_RICH_BOY 0x15 +#define FACILITY_CLASS_EXPERT_2 0x16 +#define FACILITY_CLASS_POKEMANIAC 0x17 +#define FACILITY_CLASS_TEAM_MAGMA_2 0x18 +#define FACILITY_CLASS_GUITARIST 0x19 +#define FACILITY_CLASS_KINDLER 0x1a +#define FACILITY_CLASS_CAMPER 0x1b +#define FACILITY_CLASS_PICNICKER 0x1c +#define FACILITY_CLASS_BUG_MANIAC 0x1d +#define FACILITY_CLASS_PSYCHIC_1 0x1e +#define FACILITY_CLASS_PSYCHIC_2 0x1f +#define FACILITY_CLASS_GENTLEMAN 0x20 +#define FACILITY_CLASS_ELITE_FOUR_1 0x21 +#define FACILITY_CLASS_ELITE_FOUR_2 0x22 +#define FACILITY_CLASS_LEADER_1 0x23 +#define FACILITY_CLASS_LEADER_2 0x24 +#define FACILITY_CLASS_LEADER_3 0x25 +#define FACILITY_CLASS_SCHOOL_KID_1 0x26 +#define FACILITY_CLASS_SCHOOL_KID_2 0x27 +#define FACILITY_CLASS_SR_AND_JR 0x28 +#define FACILITY_CLASS_POKEFAN_1 0x29 +#define FACILITY_CLASS_POKEFAN_2 0x2a +#define FACILITY_CLASS_YOUNGSTER 0x2b +#define FACILITY_CLASS_CHAMPION 0x2c +#define FACILITY_CLASS_FISHERMAN 0x2d +#define FACILITY_CLASS_TRIATHLETE_1 0x2e +#define FACILITY_CLASS_TRIATHLETE_2 0x2f +#define FACILITY_CLASS_TRIATHLETE_3 0x30 +#define FACILITY_CLASS_TRIATHLETE_4 0x31 +#define FACILITY_CLASS_TRIATHLETE_5 0x32 +#define FACILITY_CLASS_TRIATHLETE_6 0x33 +#define FACILITY_CLASS_DRAGON_TAMER 0x34 +#define FACILITY_CLASS_NINJA_BOY 0x35 +#define FACILITY_CLASS_BATTLE_GIRL 0x36 +#define FACILITY_CLASS_PARASOL_LADY 0x37 +#define FACILITY_CLASS_SWIMMER_F 0x38 +#define FACILITY_CLASS_TWINS 0x39 +#define FACILITY_CLASS_SAILOR 0x3a +#define FACILITY_CLASS_PKMN_TRAINER_1 0x3b +#define FACILITY_CLASS_PKMN_TRAINER_2 0x3c +#define FACILITY_CLASS_PKMN_TRAINER_3 0x3d +#define FACILITY_CLASS_PKMN_TRAINER_4 0x3e +#define FACILITY_CLASS_PKMN_TRAINER_5 0x3f +#define FACILITY_CLASS_PKMN_TRAINER_6 0x40 +#define FACILITY_CLASS_PKMN_TRAINER_7 0x41 +#define FACILITY_CLASS_PKMN_BREEDER_2 0x42 +#define FACILITY_CLASS_BUG_CATCHER 0x43 +#define FACILITY_CLASS_PKMN_RANGER_1 0x44 +#define FACILITY_CLASS_PKMN_RANGER_2 0x45 +#define FACILITY_CLASS_MAGMA_LEADER 0x46 +#define FACILITY_CLASS_LASS 0x47 +#define FACILITY_CLASS_YOUNG_COUPLE 0x48 +#define FACILITY_CLASS_OLD_COUPLE 0x49 +#define FACILITY_CLASS_SIS_AND_BRO 0x4a +#define FACILITY_CLASS_PKMN_TRAINER_8 0x4b +#define FACILITY_CLASS_SALON_MAIDEN 0x4c +#define FACILITY_CLASS_DOME_ACE 0x4d +#define FACILITY_CLASS_PKMN_TRAINER_9 0x4e +#define FACILITY_CLASS_PKMN_TRAINER_10 0x4f +#define FACILITY_CLASS_PKMN_TRAINER_11 0x50 +#define FACILITY_CLASS_PKMN_TRAINER_12 0x51 + +#define TRAINER_CLASS_PKMN_TRAINER_1 0x0 +#define TRAINER_CLASS_PKMN_TRAINER_2 0x1 +#define TRAINER_CLASS_HIKER 0x2 +#define TRAINER_CLASS_TEAM_AQUA 0x3 +#define TRAINER_CLASS_PKMN_BREEDER 0x4 +#define TRAINER_CLASS_COOLTRAINER_1 0x5 +#define TRAINER_CLASS_BIRD_KEEPER 0x6 +#define TRAINER_CLASS_COLLECTOR 0x7 +#define TRAINER_CLASS_SWIMMER_M 0x8 +#define TRAINER_CLASS_TEAM_MAGMA 0x9 +#define TRAINER_CLASS_EXPERT 0xa +#define TRAINER_CLASS_AQUA_ADMIN 0xb +#define TRAINER_CLASS_BLACK_BELT 0xc +#define TRAINER_CLASS_AQUA_LEADER 0xd +#define TRAINER_CLASS_HEX_MANIAC 0xe +#define TRAINER_CLASS_AROMA_LADY 0xf +#define TRAINER_CLASS_RUIN_MANIAC 0x10 +#define TRAINER_CLASS_INTERVIEWER 0x11 +#define TRAINER_CLASS_TUBER_1 0x12 +#define TRAINER_CLASS_TUBER_2 0x13 +#define TRAINER_CLASS_LADY 0x14 +#define TRAINER_CLASS_BEAUTY 0x15 +#define TRAINER_CLASS_RICH_BOY 0x16 +#define TRAINER_CLASS_POKEMANIAC 0x17 +#define TRAINER_CLASS_GUITARIST 0x18 +#define TRAINER_CLASS_KINDLER 0x19 +#define TRAINER_CLASS_CAMPER 0x1a +#define TRAINER_CLASS_PICNICKER 0x1b +#define TRAINER_CLASS_BUG_MANIAC 0x1c +#define TRAINER_CLASS_PSYCHIC 0x1d +#define TRAINER_CLASS_GENTLEMAN 0x1e +#define TRAINER_CLASS_ELITE_FOUR 0x1f +#define TRAINER_CLASS_LEADER 0x20 +#define TRAINER_CLASS_SCHOOL_KID 0x21 +#define TRAINER_CLASS_SR_AND_JR 0x22 +#define TRAINER_CLASS_WINSTRATE 0x23 +#define TRAINER_CLASS_POKEFAN 0x24 +#define TRAINER_CLASS_YOUNGSTER 0x25 +#define TRAINER_CLASS_CHAMPION 0x26 +#define TRAINER_CLASS_FISHERMAN 0x27 +#define TRAINER_CLASS_TRIATHLETE 0x28 +#define TRAINER_CLASS_DRAGON_TAMER 0x29 +#define TRAINER_CLASS_NINJA_BOY 0x2a +#define TRAINER_CLASS_BATTLE_GIRL 0x2b +#define TRAINER_CLASS_PARASOL_LADY 0x2c +#define TRAINER_CLASS_SWIMMER_F 0x2d +#define TRAINER_CLASS_TWINS 0x2e +#define TRAINER_CLASS_SAILOR 0x2f +#define TRAINER_CLASS_COOLTRAINER_2 0x30 +#define TRAINER_CLASS_MAGMA_ADMIN 0x31 +#define TRAINER_CLASS_PKMN_TRAINER_3 0x32 +#define TRAINER_CLASS_BUG_CATCHER 0x33 +#define TRAINER_CLASS_PKMN_RANGER 0x34 +#define TRAINER_CLASS_MAGMA_LEADER 0x35 +#define TRAINER_CLASS_LASS 0x36 +#define TRAINER_CLASS_YOUNG_COUPLE 0x37 +#define TRAINER_CLASS_OLD_COUPLE 0x38 +#define TRAINER_CLASS_SIS_AND_BRO 0x39 +#define TRAINER_CLASS_SALON_MAIDEN 0x3a +#define TRAINER_CLASS_DOME_ACE 0x3b +#define TRAINER_CLASS_PALACE_MAVEN 0x3c +#define TRAINER_CLASS_ARENA_TYCOON 0x3d +#define TRAINER_CLASS_FACTORY_HEAD 0x3e +#define TRAINER_CLASS_PIKE_QUEEN 0x3f +#define TRAINER_CLASS_PYRAMID_KING 0x40 +#define TRAINER_CLASS_PKMN_TRAINER_4 0x41 + +#define TRAINER_ENCOUNTER_MUSIC_MALE 0 // standard male encounter music +#define TRAINER_ENCOUNTER_MUSIC_FEMALE 1 // standard female encounter music +#define TRAINER_ENCOUNTER_MUSIC_GIRL 2 // used for male Tubers and Young Couples too +#define TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS 3 +#define TRAINER_ENCOUNTER_MUSIC_INTENSE 4 +#define TRAINER_ENCOUNTER_MUSIC_COOL 5 +#define TRAINER_ENCOUNTER_MUSIC_AQUA 6 +#define TRAINER_ENCOUNTER_MUSIC_MAGMA 7 +#define TRAINER_ENCOUNTER_MUSIC_SWIMMER 8 +#define TRAINER_ENCOUNTER_MUSIC_TWINS 9 // used for other trainer classes too +#define TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR 10 +#define TRAINER_ENCOUNTER_MUSIC_HIKER 11 // used for other trainer classes too +#define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12 +#define TRAINER_ENCOUNTER_MUSIC_RICH 13 // Rich Boys and Gentlemen + +#define F_TRAINER_FEMALE (1 << 7) + +// All trainer parties specify the IV, level, and species for each Pokémon in the +// party. Some trainer parties also specify held items and custom moves for each +// Pokémon. +#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0) +#define F_TRAINER_PARTY_HELD_ITEM (1 << 1) + +#endif // GUARD_TRAINERS_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 6828614bf..6dc8d0ccd 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -50,11 +50,14 @@ #define VAR_RESET_RTC_ENABLE 0x402C #define VAR_0x402D 0x402D #define VAR_0x402E 0x402E -#define VAR_0x402F 0x402F -#define VAR_0x4030 0x4030 -#define VAR_0x4031 0x4031 -#define VAR_0x4032 0x4032 -#define VAR_0x4033 0x4033 + +#define VAR_FRONTIER_MANIAC_FACILITY 0x402F + +#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030 +#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031 +#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032 +#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033 + #define VAR_0x4034 0x4034 #define VAR_0x4035 0x4035 #define VAR_STORAGE_UNKNOWN 0x4036 diff --git a/include/dewford_trend.h b/include/dewford_trend.h index 01e5d9762..dac5ea6c9 100644 --- a/include/dewford_trend.h +++ b/include/dewford_trend.h @@ -3,5 +3,6 @@ void InitDewfordTrend(void); void UpdateDewfordTrendPerDay(u16); +void UpdateDewfordTrendPerDay(u16 days); #endif // GUARD_DEWFORDTREND_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 844f1052a..a54e0e463 100755 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -7,10 +7,18 @@ extern const u8 gUnknown_0823B4E8[]; extern const u8 gUnknown_0823B5E9[]; +extern const u8 EventScript_TestSignpostMsg[]; +extern const u8 EventScript_TryGetTrainerScript[]; extern const u8 EventScript_275BB7[]; extern const u8 EventScript_275D0C[]; extern const u8 EventScript_275D1F[]; extern const u8 EventScript_275D2E[]; +extern const u8 EventScript_271354[]; +extern const u8 EventScript_2713C2[]; +extern const u8 EventScript_TryDoDoubleTrainerBattle[]; +extern const u8 EventScript_271362[]; +extern const u8 EventScript_TryDoDoubleRematchBattle[]; +extern const u8 EventScript_2713D1[]; extern const u8 EventScript_2766A2[]; extern const u8 EventScript_2766A6[]; diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 0107fa10f..696d1c2e2 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -76,6 +76,8 @@ void MoveCoords(u8, s16 *, s16 *); bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z); +void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern); +u8 npc_running_behaviour_by_direction(u8 direction); // Exported data declarations diff --git a/include/field_screen.h b/include/field_screen.h index 089e79cc4..cfc0d081f 100644 --- a/include/field_screen.h +++ b/include/field_screen.h @@ -9,5 +9,6 @@ void pal_fill_black(void); bool8 sub_80ABDFC(void); void sub_80AF168(void); +void UpdateWeatherPerDay(u16 days); #endif //GUARD_FIELD_SCREEN_H diff --git a/include/gba/macro.h b/include/gba/macro.h index 7b6b98c06..ad4820bcf 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -78,6 +78,81 @@ #define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16) #define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32) +#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, (block)); \ + _src += (block); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) + +#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) + +#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, value, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, value, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16) + +#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32) + +#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + DmaCopy##bit(dmaNum, _src, _dest, _size); \ +} + +#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) +#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) + +#define DmaFillDefvars(dmaNum, value, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + DmaFill##bit(dmaNum, value, _dest, _size); \ +} + +#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16) +#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32) + +#define DmaClearDefvars(dmaNum, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + DmaClear##bit(dmaNum, _dest, _size); \ +} + +#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16) +#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32) + #define DmaStop(dmaNum) \ { \ vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \ diff --git a/include/global.h b/include/global.h index f52919c9d..b6a496dd1 100644 --- a/include/global.h +++ b/include/global.h @@ -36,6 +36,24 @@ extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; +// There are many quirks in the source code which have overarching behavioral differences from +// a number of other files. For example, diploma.c seems to declare rodata before each use while +// other files declare out of order and must be at the beginning. There are also a number of +// macros which differ from one file to the next due to the method of obtaining the result, such +// as these below. Because of this, there is a theory (Two Team Theory) that states that these +// programming projects had more than 1 "programming team" which utilized different macros for +// each of the files that were worked on. +#define T1_READ_8(ptr) ((ptr)[0]) +#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24)) +#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr) + +// T2_READ_8 is a duplicate to remain consistent with each group. +#define T2_READ_8(ptr) ((ptr)[0]) +#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr) + enum { VERSION_SAPPHIRE = 1, @@ -45,7 +63,8 @@ enum VERSION_LEAF_GREEN = 5, }; -enum LanguageId { +enum LanguageId +{ LANGUAGE_JAPANESE = 1, LANGUAGE_ENGLISH = 2, LANGUAGE_FRENCH = 3, @@ -222,7 +241,7 @@ struct SaveBlock2 /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; - /*0x214*/ u8 field_214[1032]; + /*0x21C*/ u8 field_21C[1032]; /*0x624*/ u16 contestLinkResults[20]; // 4 positions for 5 categories, possibly a struct or a 2d array // All below could be a one giant struct @@ -244,7 +263,7 @@ struct SaveBlock2 /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 /*0xCAA*/ u16 field_CAA[4]; /*0xCB2*/ u16 battlePyramidWildHeaderId; - /*0xCB4*/ u8 field_CB4[82]; + /*0xCB4*/ u16 field_CB4[41]; /*0xD06*/ u8 field_D06; /*0xD07*/ u8 field_D07; /*0xD08*/ u8 filler_D08[0x112]; @@ -360,10 +379,12 @@ struct EasyChatPair u16 words[2]; }; /*size = 0x8*/ +#define MAIL_WORDS_COUNT 9 + struct MailStruct { - /*0x00*/ u16 words[9]; - /*0x12*/ u8 playerName[8]; + /*0x00*/ u16 words[MAIL_WORDS_COUNT]; + /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH]; /*0x1A*/ u8 trainerId[4]; /*0x1E*/ u16 species; /*0x20*/ u16 itemId; diff --git a/include/graphics.h b/include/graphics.h index 24448308d..5690eea14 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -136,6 +136,11 @@ extern const u8 gUnknown_08DB9F08[]; extern const u8 gUnknown_08DB9FFC[]; extern const u8 gUnknown_08DBA020[]; extern const u8 gUnknown_08DBA12C[]; +extern const u8 gUnknown_08DCC05C[]; +extern const u16 gUnknown_08DCC01C[]; +extern const u16 gUnknown_08DCC03C[]; +extern const u8 gUnknown_08DCC648[]; +extern const u8 gUnknown_08DCC908[]; extern const u8 gUnknown_08DD87C0[]; extern const u8 gUnknown_08DD8EE0[]; extern const u16 gUnknown_08DD8780[]; diff --git a/include/international_string_util.h b/include/international_string_util.h index e7876162e..f4ba827e3 100644 --- a/include/international_string_util.h +++ b/include/international_string_util.h @@ -14,7 +14,7 @@ s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2); // sub_81DB41C // CopyMonCategoryText // sub_81DB494 -// sub_81DB4DC +void PadNameString(u8 *dst, u8 padWith); // sub_81DB554 // sub_81DB5AC u32 sub_81DB604(const u8 *); diff --git a/include/mail.h b/include/mail.h index 0a70237bf..042586653 100644 --- a/include/mail.h +++ b/include/mail.h @@ -14,10 +14,20 @@ || itemId == ITEM_FAB_MAIL \ || itemId == ITEM_RETRO_MAIL)) +// mail.h +void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag); +// mail_data.h +void ClearMailData(void); +void ClearMailStruct(struct MailStruct *mail); bool8 MonHasMail(struct Pokemon *mon); -void TakeMailFromMon(struct Pokemon *mon); +u8 GiveMailToMon(struct Pokemon *mon, u16 itemId); +u16 SpeciesToMailSpecies(u16 species, u32 personality); +u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer); u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail); -void ClearMailStruct(struct MailStruct *mail); +void TakeMailFromMon(struct Pokemon *mon); +void ClearMailItemId(u8 mailId); +u8 TakeMailFromMon2(struct Pokemon *mon); +bool8 ItemIsMail(u16 itemId); #endif // GUARD_MAIL_H diff --git a/include/mail_data.h b/include/mail_data.h deleted file mode 100644 index bf6540bad..000000000 --- a/include/mail_data.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_MAIL_DATA_H -#define GUARD_MAIL_DATA_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - -u16 sub_80D45E8(u16, u16 *); - -#endif //GUARD_MAIL_DATA_H diff --git a/include/menu.h b/include/menu.h index e5e69160a..124303570 100644 --- a/include/menu.h +++ b/include/menu.h @@ -32,7 +32,7 @@ int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u bool8 free_temp_tile_data_buffers_if_possible(void); u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); -s8 sub_8198C58(void); +s8 ProcessMenuInputNoWrap_(void); void do_scheduled_bg_tilemap_copies_to_vram(void); void clear_scheduled_bg_copies_to_vram(void); void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); diff --git a/include/pokemon.h b/include/pokemon.h index 480c8d9b9..cdab96687 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -653,6 +653,7 @@ u8 GetSecretBaseTrainerPicIndex(void); bool8 TryIncrementMonLevel(struct Pokemon *mon); void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon); u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); +u8 GetMonsStateToDoubles_2(void); #include "sprite.h" diff --git a/include/pokemon_3.h b/include/pokemon_3.h index 5c9862d57..82dfacf48 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -3,5 +3,7 @@ const u8* GetTrainerClassNameFromId(u16 trainerId); const u8* GetTrainerNameFromId(u16 trainerId); +void PlayMapChosenOrBattleBGM(u16 song); +u8 GetTrainerEncounterMusicId(u16 trainerOpponentId); #endif // GUARD_POKEMON_3_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index b6d21823e..e0a9aa0c5 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -3,6 +3,7 @@ const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); const u16 *GetValidMonIconPalettePtr(u16 speciesId); +u16 GetUnownLetterByPersonality(u32 personality); u16 sub_80D2E84(u16 speciesId); void sub_80D2F68(u16 iconId); u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); diff --git a/include/rom6.h b/include/rom6.h index 3804f27d1..fc33b7d1f 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -5,5 +5,11 @@ void OpenPokeblockCase(u8, void(void)); u8 GetLeadMonIndex(void); u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y); void sub_813BADC(bool8); +bool8 sub_813B9C0(void); +void UpdateMirageRnd(u16 days); +void UpdateBirchState(u16 days); +void UpdateFrontierManiac(u16 days); +void UpdateFrontierGambler(u16 days); +void SetShoalItemFlag(u16 days); #endif //GUARD_ROM6_H diff --git a/include/safari_zone.h b/include/safari_zone.h index 9a81894b8..39ee3ccb3 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -13,6 +13,8 @@ void ExitSafariMode(void); bool8 SafariZoneTakeStep(void); void SafariZoneRetirePrompt(void); +void CB2_EndSafariBattle(void); + struct Pokeblock *SafariZoneGetActivePokeblock(void); void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index); diff --git a/include/secret_base.h b/include/secret_base.h index 630a36773..b2502889c 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -9,5 +9,6 @@ void sub_80E9578(void); void sub_80E980C(void); u8 *GetSecretBaseMapName(u8 *dest); +const u8 *GetSecretBaseTrainerLoseText(void); #endif //GUARD_SECRET_BASE_H diff --git a/include/songs.h b/include/songs.h index 5a1fff00c..37c4f16b4 100644 --- a/include/songs.h +++ b/include/songs.h @@ -372,20 +372,20 @@ enum BGM_BATTLE_DOME_TOURNAMENT, BGM_BATTLE_PIKE, BGM_BATTLE_FACTORY, - BGM_BATTLE_LEGENDARY, - BGM_BATTLE_FRONTIER_BRAIN, - BGM_BATTLE_MEW, - BGM_BATTLE_DOME, // end of the human-readable names + /*0x1D6*/ BGM_BATTLE_LEGENDARY, + /*0x1D7*/ BGM_BATTLE_FRONTIER_BRAIN, + /*0x1D8*/ BGM_BATTLE_MEW, + /*0x1D9*/ BGM_BATTLE_DOME, // end of the human-readable names /*0x1DA*/ BGM_BATTLE27, // wild - BGM_BATTLE31, // aqua/magma grunt - BGM_BATTLE20, // trainer - BGM_BATTLE32, // gym leader - BGM_BATTLE33, // champion - BGM_BATTLE36, // regi - BGM_BATTLE34, // weather trio - BGM_BATTLE35, // rival - BGM_BATTLE38, // elite four - BGM_BATTLE30, // aqua/magma leader + /*0x1DB*/ BGM_BATTLE31, // aqua/magma grunt + /*0x1DC*/ BGM_BATTLE20, // trainer + /*0x1DD*/ BGM_BATTLE32, // gym leader + /*0x1DE*/ BGM_BATTLE33, // champion + /*0x1DF*/ BGM_BATTLE36, // regi + /*0x1E0*/ BGM_BATTLE34, // weather trio + /*0x1E1*/ BGM_BATTLE35, // rival + /*0x1E2*/ BGM_BATTLE38, // elite four + /*0x1E3*/ BGM_BATTLE30, // aqua/magma leader /*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again! BGM_FRLG_GAMECORNER, BGM_FRLG_ROCKET_HIDEOUT, @@ -453,14 +453,14 @@ enum BGM_FRLG_ISLAND_FOUR, BGM_FRLG_ISLAND_SIX, BGM_FRLG_FLUTE, - BGM_FRLG_BATTLE_DEOXYS, - BGM_FRLG_BATTLE_MEWTWO, - BGM_FRLG_BATTLE_LEGENDARY, - BGM_FRLG_LEADER_EYE, - BGM_FRLG_DEOXYS_EYE, - BGM_FRLG_TRAINER_TOWER, - BGM_FRLG_HALL_OF_FAME_PALLET_TOWN, - /*0x22E*/BGM_FRLG_TEACHY_TV, + /*0x227*/ BGM_FRLG_BATTLE_DEOXYS, + /*0x228*/ BGM_FRLG_BATTLE_MEWTWO, + /*0x229*/ BGM_FRLG_BATTLE_LEGENDARY, + /*0x22A*/ BGM_FRLG_LEADER_EYE, + /*0x22B*/ BGM_FRLG_DEOXYS_EYE, + /*0x22C*/ BGM_FRLG_TRAINER_TOWER, + /*0x22D*/ BGM_FRLG_HALL_OF_FAME_PALLET_TOWN, + /*0x22E*/ BGM_FRLG_TEACHY_TV, }; #endif // GUARD_SONGS_H diff --git a/include/strings.h b/include/strings.h index 15a6374a3..757cc8cac 100644 --- a/include/strings.h +++ b/include/strings.h @@ -101,6 +101,10 @@ extern const u8 gText_NoRegistry[]; extern const u8 gText_OkayToDeleteFromRegistry[]; extern const u8 gText_RegisteredDataDeleted[]; extern const u8 gUnknown_085EA79D[]; +extern const u8 gText_EmptyString2[]; +extern const u8 gText_Confirm3[]; +extern const u8 gText_Cancel4[]; +extern const u8 gText_IsThisTheCorrectTime[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gText_Coins[]; diff --git a/include/trainer_classes.h b/include/trainer_classes.h deleted file mode 100644 index e5e26b359..000000000 --- a/include/trainer_classes.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef GUARD_TRAINER_CLASSES_H -#define GUARD_TRAINER_CLASSES_H - -enum -{ - CLASS_PKMN_TRAINER0, // 0 - CLASS_PKMN_TRAINER1, // 1 - CLASS_HIKER, // 2 - CLASS_TEAM_AQUA, // 3 - CLASS_PKMN_BREEDER, // 4 - CLASS_COOLTRAINER, // 5 - CLASS_BIRDKEEPER, // 6 - CLASS_COLLECTOR, // 7 - CLASS_SWIMMER_MALE, // 8 - CLASS_TEAM_MAGMA, // 9 - CLASS_EXPERT, // 0xA - CLASS_AQUA_ADMIN, // 0xB - CLASS_BLACK_BELT, // 0xC - CLASS_AQUA_LEADER, // 0xD - CLASS_HEX_MANIAC, // 0xE - CLASS_AROMA_LADY, // 0xF - CLASS_RUIN_MANIAC, // 0x10 - CLASS_INTERVIEWER, // 0x11 - CLASS_TUBER_FEMALE, // 0x12 - CLASS_TUBER_MALE, // 0x13 - CLASS_LADY, // 0x14 - CLASS_BEAUTY, // 0x15 - CLASS_RICH_BOY, // 0x16 - CLASS_POKEMANIAC, // 0x17 - CLASS_GUITARIST, // 0x18 - CLASS_KINDLER, // 0x19 - CLASS_CAMPER, // 0x1A - CLASS_PICKNICKER, // 0x1B - CLASS_BUG_MANIAC, // 0x1C - CLASS_PSYCHIC, // 0x1D - CLASS_GENTLEMAN, // 0x1E - CLASS_ELITE_FOUR, // 0x1F - CLASS_LEADER, // 0x20 - CLASS_SCHOOL_KID, // 0x21 - CLASS_SCHOOL_SR_JR, // 0x22 - CLASS_WINSTRATE, // 0x23 - CLASS_POKE_FAN, // 0x24 - CLASS_YOUNGSTER, // 0x25 - CLASS_CHAMPION, // 0x26 - CLASS_FISHERMAN, // 0x27 - CLASS_TRIATHLETE, // 0x28 - CLASS_DRAGON_TAMER, // 0x29 - CLASS_NINJA_BOY, // 0x2A - CLASS_BATTLE_GIRL, // 0x2B - CLASS_PARASOL_LADY, // 0x2C - CLASS_SWIMMER_FEMALE, // 0x2D - CLASS_TWINS, // 0x2E - CLASS_SAILOR, // 0x2F - CLASS_COOLTRAINER_2, // 0x30 - CLASS_MAGMA_ADMIN, // 0x31 - CLASS_PKMN_TRAINER_RIVAL, // 0x32 - CLASS_BUG_CATCHER, // 0x33 - CLASS_PKMN_RANGER, // 0x34 - CLASS_MAGMA_LEADER, // 0x35 - CLASS_LASS, // 0x36 - CLASS_YOUNG_COUPLE, // 0x37 - CLASS_OLD_COUPLE, // 0x38 - CLASS_SIS_AND_BRO, // 0x39 - CLASS_SALON_MAIDEN, // 0x3A - CLASS_DOME_ACE, // 0x3B - CLASS_PALACE_MAVEN, // 0x3C - CLASS_ARENA_TYCOON, // 0x3D - CLASS_FACTORY_HEAD, // 0x3E - CLASS_PIKE_QUEEN, // 0x3F - CLASS_PYRAMID_KING, // 0x40 - CLASS_PKMN_TRAINER2, // 0x41 -}; - -#endif // GUARD_TRAINER_CLASSES_H diff --git a/include/trainer_front_sprites.h b/include/trainer_front_sprites.h deleted file mode 100644 index 3259bec88..000000000 --- a/include/trainer_front_sprites.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef GUARD_TRAINER_FRONT_SPRITES_H -#define GUARD_TRAINER_FRONT_SPRITES_H - -enum -{ - TRAINER_FRONT_PIC_HIKER, - TRAINER_FRONT_PIC_AQUA_GRUNT_M, - TRAINER_FRONT_PIC_PKMN_BREEDER_F, - TRAINER_FRONT_PIC_COOLTRAINER_M, - TRAINER_FRONT_PIC_BIRD_KEEPER, - TRAINER_FRONT_PIC_COLLECTOR, - TRAINER_FRONT_PIC_AQUA_GRUNT_F, - TRAINER_FRONT_PIC_SWIMMER_M, - TRAINER_FRONT_PIC_MAGMA_GRUNT_M, - TRAINER_FRONT_PIC_EXPERT_M, - TRAINER_FRONT_PIC_AQUA_ADMIN_M, - TRAINER_FRONT_PIC_BLACK_BELT, - TRAINER_FRONT_PIC_AQUA_ADMIN_F, - TRAINER_FRONT_PIC_AQUA_LEADER, - TRAINER_FRONT_PIC_HEX_MANIAC, - TRAINER_FRONT_PIC_AROMA_LADY, - TRAINER_FRONT_PIC_RUIN_MANIAC, - TRAINER_FRONT_PIC_INTERVIEWER, - TRAINER_FRONT_PIC_TUBER_F, - TRAINER_FRONT_PIC_TUBER_M, - TRAINER_FRONT_PIC_COOLTRAINER_F, - TRAINER_FRONT_PIC_LADY, - TRAINER_FRONT_PIC_BEAUTY, - TRAINER_FRONT_PIC_RICH_BOY, - TRAINER_FRONT_PIC_EXPERT_F, - TRAINER_FRONT_PIC_POKE_MANIAC, - TRAINER_FRONT_PIC_MAGMA_GRUNT_F, - TRAINER_FRONT_PIC_GUITARIST, - TRAINER_FRONT_PIC_KINDLER, - TRAINER_FRONT_PIC_CAMPER, - TRAINER_FRONT_PIC_PICNICKER, - TRAINER_FRONT_PIC_BUG_MANIAC, - TRAINER_FRONT_PIC_PKMN_BREEDER_M, - TRAINER_FRONT_PIC_PSYCHIC_M, - TRAINER_FRONT_PIC_PSYCHIC_F, - TRAINER_FRONT_PIC_GENTLEMAN, - TRAINER_FRONT_PIC_SIDNEY, - TRAINER_FRONT_PIC_PHOEBE, - TRAINER_FRONT_PIC_GLACIA, - TRAINER_FRONT_PIC_DRAKE, - TRAINER_FRONT_PIC_ROXANNE, - TRAINER_FRONT_PIC_BRAWLY, - TRAINER_FRONT_PIC_WATTSON, - TRAINER_FRONT_PIC_FLANNERY, - TRAINER_FRONT_PIC_NORMAN, - TRAINER_FRONT_PIC_WINONA, - TRAINER_FRONT_PIC_TATE_LIZA, - TRAINER_FRONT_PIC_JUAN, - TRAINER_FRONT_PIC_SCHOOL_KID_M, - TRAINER_FRONT_PIC_SCHOOL_KID_F, - TRAINER_FRONT_PIC_SR_JR, - TRAINER_FRONT_PIC_POKÉFAN_M, - TRAINER_FRONT_PIC_POKÉFAN_F, - TRAINER_FRONT_PIC_YOUNGSTER, - TRAINER_FRONT_PIC_WALLACE, - TRAINER_FRONT_PIC_FISHERMAN, - TRAINER_FRONT_PIC_TRIATHLETE_BIKER_M, - TRAINER_FRONT_PIC_TRIATHLETE_BIKER_F, - TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_M, - TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_F, - TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_M, - TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_F, - TRAINER_FRONT_PIC_DRAGON_TAMER, - TRAINER_FRONT_PIC_NINJA_BOY, - TRAINER_FRONT_PIC_BATTLE_GIRL, - TRAINER_FRONT_PIC_PARASOL_LADY, - TRAINER_FRONT_PIC_SWIMMER_F, - TRAINER_FRONT_PIC_TWINS, - TRAINER_FRONT_PIC_SAILOR, - TRAINER_FRONT_PIC_MAGMA_ADMIN_M, - TRAINER_FRONT_PIC_WALLY, - TRAINER_FRONT_PIC_BRENDAN_E, - TRAINER_FRONT_PIC_MAY_E, - TRAINER_FRONT_PIC_BUG_CATCHER, - TRAINER_FRONT_PIC_PKMN_RANGER_M, - TRAINER_FRONT_PIC_PKMN_RANGER_F, - TRAINER_FRONT_PIC_MAGMA_LEADER, - TRAINER_FRONT_PIC_LASS, - TRAINER_FRONT_PIC_YOUNG_COUPLE, - TRAINER_FRONT_PIC_OLD_COUPLE, - TRAINER_FRONT_PIC_SIS_AND_BRO, - TRAINER_FRONT_PIC_STEVEN, - TRAINER_FRONT_PIC_ANABEL, - TRAINER_FRONT_PIC_TUCKER, - TRAINER_FRONT_PIC_SPENSER, - TRAINER_FRONT_PIC_GRETA, - TRAINER_FRONT_PIC_NOLAND, - TRAINER_FRONT_PIC_LUCY, - TRAINER_FRONT_PIC_BRANDON, - TRAINER_FRONT_PIC_RED, - TRAINER_FRONT_PIC_LEAF, - TRAINER_FRONT_PIC_BRENDAN_RS, - TRAINER_FRONT_PIC_MAY_RS -}; - -#endif // GUARD_TRAINER_FRONT_SPRITES_H diff --git a/include/trainer_ids.h b/include/trainer_ids.h deleted file mode 100644 index 65c80187f..000000000 --- a/include/trainer_ids.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef GUARD_TRAINER_IDS_H -#define GUARD_TRAINER_IDS_H - -#define NO_OF_TRAINERS 854 -#define TRAINER_ID_STEVEN 804 - -#endif // GUARD_TRAINER_IDS_H diff --git a/include/trainer_see.h b/include/trainer_see.h index ab035d9f8..5da50cfa1 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -1,6 +1,21 @@ #ifndef GUARD_TRAINER_SEE_H #define GUARD_TRAINER_SEE_H +struct ApproachingTrainer +{ + u8 mapObjectId; + u8 radius; + u8 field_2; + u8 field_3; + const u8 *trainerScriptPtr; + u8 field_8; + u8 field_9; + u8 field_A; + u8 field_B; +}; + +extern struct ApproachingTrainer gApproachingTrainers[]; + void sub_80B4578(struct MapObject *); u8 sub_80B47BC(void); void sub_8155D78(struct MapObject *); diff --git a/include/tv.h b/include/tv.h index 75338704f..eca11385e 100644 --- a/include/tv.h +++ b/include/tv.h @@ -15,5 +15,6 @@ void sub_80F14F8(TVShow *shows); size_t sub_80EF370(int value); bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language); void SetPokemonAnglerSpecies(u16 species); +void UpdateTVShowsPerDay(u16 days); #endif //GUARD_TV_H diff --git a/include/wallclock.h b/include/wallclock.h new file mode 100644 index 000000000..48697c19f --- /dev/null +++ b/include/wallclock.h @@ -0,0 +1,6 @@ +#ifndef GUARD_WALLCLOCK_H +#define GUARD_WALLCLOCK_H + +void Cb2_StartWallClock(void); + +#endif //GUARD_WALLCLOCK_H diff --git a/ld_script.txt b/ld_script.txt index 765c2e2a8..ded4b4730 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -105,7 +105,7 @@ SECTIONS { src/event_data.o(.text); asm/coord_event_weather.o(.text); asm/field_tasks.o(.text); - asm/clock.o(.text); + src/clock.o(.text); asm/reset_rtc_screen.o(.text); src/start_menu.o(.text); asm/start_menu.o(.text); @@ -119,8 +119,9 @@ SECTIONS { asm/battle_anim_80A9C70.o(.text); asm/title_screen.o(.text); asm/field_screen.o(.text); - asm/battle_setup.o(.text); + src/battle_setup.o(.text); asm/cable_club.o(.text); + src/trainer_see.o(.text); asm/trainer_see.o(.text); src/wild_encounter.o(.text); asm/field_effect.o(.text); @@ -133,7 +134,7 @@ SECTIONS { asm/pokemon_icon.o(.text); asm/script_movement.o(.text); asm/fldeff_cut.o(.text); - asm/mail_data.o(.text); + src/mail_data.o(.text); asm/map_name_popup.o(.text); asm/item_menu_icons.o(.text); asm/battle_anim_80D51AC.o(.text); @@ -176,7 +177,7 @@ SECTIONS { src/battle_ai_script_commands.o(.text); asm/trader.o(.text); src/starter_choose.o(.text); - asm/wallclock.o(.text); + src/wallclock.o(.text); asm/rom6.o(.text); src/pokeblock.o(.text); asm/rom_81370FC.o(.text); @@ -379,7 +380,7 @@ SECTIONS { data/battle_anim_80A9C70.o(.rodata); data/title_screen.o(.rodata); data/field_screen.o(.rodata); - data/battle_setup.o(.rodata); + src/battle_setup.o(.rodata); data/cable_club.o(.rodata); data/trainer_see.o(.rodata); data/wild_encounter.o(.rodata); @@ -425,7 +426,7 @@ SECTIONS { src/battle_ai_script_commands.o(.rodata); data/data4.o(.rodata); data/starter_choose.o(.rodata); - data/data4c.o(.rodata); + src/wallclock.o(.rodata); src/pokeblock.o(.rodata); data/data4d.o(.rodata); src/battle_controller_link_partner.o(.rodata); diff --git a/src/battle_2.c b/src/battle_2.c index 52530f6b3..7bde3d174 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -17,6 +17,7 @@ #include "item.h" #include "constants/items.h" #include "constants/hold_effects.h" +#include "constants/trainers.h" #include "link.h" #include "bg.h" #include "dma3.h" @@ -38,7 +39,6 @@ #include "pokedex.h" #include "constants/abilities.h" #include "constants/moves.h" -#include "trainer_classes.h" #include "evolution_scene.h" #include "roamer.h" #include "tv.h" @@ -185,7 +185,7 @@ extern void sub_80356D0(void); extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower extern void sub_8166188(void); // battle tower, sets link battle mons level but why? extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language -extern void sub_81DB4DC(u8* dst, u8 arg2); // +extern void PadNameString(u8* dst, u8 arg2); // extern void sub_81B9150(void); extern void sub_800AC34(void); extern void sub_80B3AF8(u8 taskId); // cable club @@ -415,7 +415,7 @@ static void CB2_InitBattleInternal(void) gBattleTerrain = BattleSetup_GetTerrainId(); if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - gBattleTerrain = BATTLE_TERRAIN_INSIDE; + gBattleTerrain = BATTLE_TERRAIN_BUILDING; sub_80356D0(); LoadBattleTextboxAndBackground(); @@ -1140,7 +1140,7 @@ static void sub_80379F8(u8 arrayIdPlus) gUnknown_02022FF8[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]); StripExtCtrlCodes(gUnknown_02022FF8[i].nickname); if (GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) - sub_81DB4DC(gUnknown_02022FF8[i].nickname, 0); + PadNameString(gUnknown_02022FF8[i].nickname, CHAR_SPACE); } memcpy(gUnknown_02023058, gUnknown_02022FF8, sizeof(gUnknown_02022FF8)); } @@ -1718,7 +1718,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir { const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; personalityValue += nameHash << 8; @@ -1726,11 +1726,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); break; } - case PARTY_FLAG_CUSTOM_MOVES: + case F_TRAINER_PARTY_CUSTOM_MOVESET: { const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; personalityValue += nameHash << 8; @@ -1744,11 +1744,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir } break; } - case PARTY_FLAG_HAS_ITEM: + case F_TRAINER_PARTY_HELD_ITEM: { const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; personalityValue += nameHash << 8; @@ -1758,11 +1758,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); break; } - case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM: + case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: { const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; personalityValue += nameHash << 8; @@ -4749,19 +4749,19 @@ static void HandleEndTurn_BattleWon(void) switch (gTrainers[gTrainerBattleOpponent_A].trainerClass) { - case CLASS_ELITE_FOUR: - case CLASS_CHAMPION: + case TRAINER_CLASS_ELITE_FOUR: + case TRAINER_CLASS_CHAMPION: PlayBGM(BGM_KACHI5); break; - case CLASS_TEAM_AQUA: - case CLASS_TEAM_MAGMA: - case CLASS_AQUA_ADMIN: - case CLASS_AQUA_LEADER: - case CLASS_MAGMA_ADMIN: - case CLASS_MAGMA_LEADER: + case TRAINER_CLASS_TEAM_AQUA: + case TRAINER_CLASS_TEAM_MAGMA: + case TRAINER_CLASS_AQUA_ADMIN: + case TRAINER_CLASS_AQUA_LEADER: + case TRAINER_CLASS_MAGMA_ADMIN: + case TRAINER_CLASS_MAGMA_LEADER: PlayBGM(BGM_KACHI4); break; - case CLASS_LEADER: + case TRAINER_CLASS_LEADER: PlayBGM(BGM_KACHI3); break; default: diff --git a/src/battle_message.c b/src/battle_message.c index ec1cfd626..cab4bdf42 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -12,6 +12,7 @@ #include "window.h" #include "palette.h" #include "battle_controllers.h" +#include "battle_setup.h" extern u16 gLastUsedItem; extern u8 gLastUsedAbility; @@ -54,8 +55,6 @@ extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav extern void GetEreaderTrainerName(u8 *txtPtr); extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2 extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav -extern const u8* GetTrainer1LoseText(void); // battle_setup -extern const u8* GetTrainer2LoseText(void); // battle_setup extern void GetFrontierTrainerName(u8 *dst, u16 trainerId); extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing); extern u8 GetTextSpeedInRecordedBattle(void); @@ -2068,7 +2067,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst) } else { - toCpy = GetTrainer1LoseText(); + toCpy = GetTrainerALoseText(); } break; case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text @@ -2165,7 +2164,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst) } else { - toCpy = GetTrainer2LoseText(); + toCpy = GetTrainerBLoseText(); } break; case B_TXT_TRAINER2_WIN_TEXT: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 88d583c1f..656f9f43a 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -17,6 +17,7 @@ #include "battle_interface.h" #include "constants/species.h" #include "constants/songs.h" +#include "constants/trainers.h" #include "text.h" #include "sound.h" #include "pokedex.h" @@ -6236,19 +6237,19 @@ static u32 GetTrainerMoneyToGive(u16 trainerId) lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; } break; - case PARTY_FLAG_CUSTOM_MOVES: + case F_TRAINER_PARTY_CUSTOM_MOVESET: { const struct TrainerMonNoItemCustomMoves *party = gTrainers[trainerId].party.NoItemCustomMoves; lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; } break; - case PARTY_FLAG_HAS_ITEM: + case F_TRAINER_PARTY_HELD_ITEM: { const struct TrainerMonItemDefaultMoves *party = gTrainers[trainerId].party.ItemDefaultMoves; lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; } break; - case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM: + case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: { const struct TrainerMonItemCustomMoves *party = gTrainers[trainerId].party.ItemCustomMoves; lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; @@ -10334,7 +10335,7 @@ static void atkE4_getsecretpowereffect(void) case BATTLE_TERRAIN_POND: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SPD_MINUS_1; break; - case BATTLE_TERRAIN_ROCK: + case BATTLE_TERRAIN_MOUNTAIN: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION; break; case BATTLE_TERRAIN_CAVE: diff --git a/src/battle_setup.c b/src/battle_setup.c new file mode 100644 index 000000000..3d4f5afcc --- /dev/null +++ b/src/battle_setup.c @@ -0,0 +1,1884 @@ +#include "global.h" +#include "constants/trainers.h" +#include "battle.h" +#include "battle_setup.h" +#include "battle_transition.h" +#include "main.h" +#include "task.h" +#include "pokemon_3.h" +#include "safari_zone.h" +#include "script.h" +#include "constants/game_stat.h" +#include "event_data.h" +#include "constants/species.h" +#include "songs.h" +#include "metatile_behavior.h" +#include "constants/maps.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "random.h" +#include "starter_choose.h" +#include "script_pokemon_80F8.h" +#include "constants/items.h" +#include "palette.h" +#include "window.h" +#include "field_map_obj.h" +#include "event_scripts.h" +#include "trainer_see.h" +#include "field_message_box.h" +#include "sound.h" +#include "strings.h" +#include "secret_base.h" +#include "string_util.h" + +enum +{ + TRAINER_PARAM_LOAD_VAL_8BIT, + TRAINER_PARAM_LOAD_VAL_16BIT, + TRAINER_PARAM_LOAD_VAL_32BIT, + TRAINER_PARAM_CLEAR_VAL_8BIT, + TRAINER_PARAM_CLEAR_VAL_16BIT, + TRAINER_PARAM_CLEAR_VAL_32BIT, + TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR, +}; + +struct TrainerBattleParameter +{ + void *varPtr; + u8 ptrType; +}; + +extern bool8 InBattlePyramid(void); +extern bool8 InBattlePike(void); +extern bool32 InTrainerHill(void); +extern bool32 FieldPoisonEffectIsRunning(void); +extern void overworld_free_bg_tilemaps(void); +extern void prev_quest_postbuffer_cursor_backup_reset(void); +extern void ResetPoisonStepCounter(void); +extern void sub_81BE72C(void); +extern void FreezeMapObjects(void); +extern void sub_808BCF4(void); +extern void sub_80EECC8(void); +extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); +extern void c2_exit_to_overworld_2_switch(void); +extern void Overworld_ClearSavedMusic(void); +extern void CB2_WhiteOut(void); +extern void sub_80AF6F0(void); +extern void PlayBattleBGM(void); +extern void sub_81DA57C(void); +extern u8 GetSav1Weather(void); +extern u8 Overworld_GetFlashLevel(void); +extern u16 sub_81A9AA8(u8 localId); +extern u16 sub_81D6180(u8 localId); +extern bool8 GetBattlePyramidTrainerFlag(u8 mapObjId); +extern bool8 GetTrainerHillTrainerFlag(u8 mapObjId); +extern bool8 sub_81D5C18(void); +extern void sub_816306C(u8 a0); +extern void sub_8163048(u8 a0); +extern void sub_81A9B04(void); +extern void sub_81D639C(void); +extern void sub_81D6384(void); +extern void sub_81D61E8(void); +extern void sub_80982B8(void); +extern void sub_81A9EDC(u16 a0); +extern void sub_81D572C(u8 a0, u16 arg1); +extern void IncrementGameStat(u8 statId); +extern u32 GetGameStat(u8 statId); + +extern u32 gBattleTypeFlags; +extern u8 gBattleOutcome; +extern void (*gFieldCallback)(void); +extern u8 gApproachingTrainerId; +extern u8 gNoOfApproachingTrainers; +extern u16 gUnknown_03006080; + +// this file's functions +static void DoBattlePikeWildBattle(void); +static void DoSafariBattle(void); +static void DoStandardWildBattle(void); +static void CB2_EndWildBattle(void); +static void CB2_EndScriptedWildBattle(void); +static u8 GetWildBattleTransition(void); +static u8 GetTrainerBattleTransition(void); +static void sub_80B1218(void); +static void sub_80B1234(void); +static void CB2_GiveStarter(void); +static void CB2_StartFirstBattle(void); +static void CB2_EndFirstBattle(void); +static void CB2_EndTrainerBattle(void); +static bool32 IsPlayerDefeated(u32 battleOutcome); +static u16 GetRematchTrainerId(u16 trainerId); +static void RegisterTrainerInMatchCall(void); +static void HandleRematchVarsOnBattleEnd(void); +static const u8 *GetIntroSpeechOfApproachingTrainer(void); +static const u8 *GetTrainerCantBattleSpeech(void); + +// ewram data +EWRAM_DATA static u16 sTrainerBattleMode = 0; +EWRAM_DATA u16 gTrainerBattleOpponent_A = 0; +EWRAM_DATA u16 gTrainerBattleOpponent_B = 0; +EWRAM_DATA u16 gPartnerTrainerId = 0; +EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0; +EWRAM_DATA static u8 *sTrainerAIntroSpeech = NULL; +EWRAM_DATA static u8 *sTrainerBIntroSpeech = NULL; +EWRAM_DATA static u8 *sTrainerADefeatSpeech = NULL; +EWRAM_DATA static u8 *sTrainerBDefeatSpeech = NULL; +EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL; +EWRAM_DATA static u8 *sTrainerCannotBattleSpeech = NULL; +EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL; +EWRAM_DATA static u8 *sTrainerABattleScriptRetAddr = NULL; +EWRAM_DATA static u8 *sTrainerBBattleScriptRetAddr = NULL; +EWRAM_DATA static bool8 sShouldCheckTrainerBScript = FALSE; +EWRAM_DATA static u8 sNoOfPossibleTrainerRetScripts = 0; + +// const rom data + +// The first transition is used if the enemy pokemon are lower level than our pokemon. +// Otherwise, the second transition is used. +static const u8 sBattleTransitionTable_Wild[][2] = +{ + {B_TRANSITION_SLICE, B_TRANSITION_WHITEFADE}, // Normal + {B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES}, // Cave + {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used + {B_TRANSITION_WAVE, B_TRANSITION_RIPPLE}, // Water +}; + +static const u8 sBattleTransitionTable_Trainer[][2] = +{ + {B_TRANSITION_POKEBALLS_TRAIL, B_TRANSITION_SHARDS}, // Normal + {B_TRANSITION_SHUFFLE, B_TRANSITION_BIG_POKEBALL}, // Cave + {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used + {B_TRANSITION_SWIRL, B_TRANSITION_RIPPLE}, // Water +}; + +static const u8 sUnknown_0854FE98[] = +{ + B_TRANSITION_29, B_TRANSITION_30, B_TRANSITION_31, B_TRANSITION_32, + B_TRANSITION_34, B_TRANSITION_35, B_TRANSITION_36, B_TRANSITION_37, + B_TRANSITION_38, B_TRANSITION_39, B_TRANSITION_40, B_TRANSITION_41 +}; + +static const u8 sUnknown_0854FEA4[] = +{ + B_TRANSITION_31, B_TRANSITION_32, B_TRANSITION_33 +}; + +static const u8 sUnknown_0854FEA7[] = +{ + B_TRANSITION_29, B_TRANSITION_31, B_TRANSITION_32, B_TRANSITION_33 +}; + +static const struct TrainerBattleParameter sOrdinaryBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sContinueScriptBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sDoubleBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sTrainerBOrdinaryBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBBattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBBattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + +const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] = +{ + {{0x0025, 0x0028, 0x0029, 0x002a, 0x002b}, 0x0000, 0x0021}, + {{0x02e1, 0x032c, 0x032d, 0x032e, 0x032f}, 0x0000, 0x0014}, + {{0x002c, 0x002f, 0x0030, 0x0031, 0x0032}, 0x0000, 0x001a}, + {{0x0039, 0x003c, 0x003d, 0x003e, 0x003f}, 0x0000, 0x0018}, + {{0x0040, 0x0043, 0x0044, 0x0045, 0x0046}, 0x0000, 0x0018}, + {{0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3}, 0x0000, 0x0027}, + {{0x02ff, 0x033c, 0x033d, 0x033e, 0x033f}, 0x0000, 0x0024}, + {{0x005e, 0x0065, 0x0066, 0x0067, 0x0068}, 0x0000, 0x001a}, + {{0x004e, 0x0054, 0x0055, 0x0056, 0x0057}, 0x0000, 0x001a}, + {{0x006c, 0x006e, 0x006f, 0x0070, 0x0071}, 0x0018, 0x0014}, + {{0x0072, 0x0078, 0x0079, 0x007a, 0x007b}, 0x0000, 0x0013}, + {{0x0090, 0x034c, 0x034d, 0x034e, 0x034f}, 0x0018, 0x0038}, + {{0x007f, 0x0084, 0x0085, 0x0086, 0x0087}, 0x0000, 0x0024}, + {{0x0088, 0x008b, 0x008c, 0x008d, 0x008e}, 0x0000, 0x0013}, + {{0x008f, 0x0093, 0x0094, 0x0095, 0x0096}, 0x0000, 0x001d}, + {{0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2}, 0x0000, 0x0016}, + {{0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb}, 0x0000, 0x001e}, + {{0x02a0, 0x0338, 0x0339, 0x033a, 0x033b}, 0x0000, 0x002a}, + {{0x00c3, 0x0340, 0x0341, 0x0342, 0x0343}, 0x0000, 0x0026}, + {{0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8}, 0x0000, 0x0021}, + {{0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2}, 0x0000, 0x001d}, + {{0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de}, 0x0018, 0x000d}, + {{0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad}, 0x0018, 0x0001}, + {{0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7}, 0x0000, 0x0023}, + {{0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2}, 0x0000, 0x0026}, + {{0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd}, 0x0000, 0x0026}, + {{0x00fe, 0x0101, 0x0102, 0x0103, 0x0104}, 0x0000, 0x0024}, + {{0x0118, 0x011a, 0x011b, 0x011c, 0x011d}, 0x0000, 0x001f}, + {{0x0111, 0x0114, 0x0115, 0x0116, 0x0117}, 0x0000, 0x001f}, + {{0x011f, 0x0120, 0x0121, 0x0122, 0x0123}, 0x0000, 0x0020}, + {{0x012e, 0x012f, 0x0130, 0x0131, 0x0132}, 0x0000, 0x0019}, + {{0x0125, 0x0127, 0x0128, 0x0129, 0x012a}, 0x0000, 0x0012}, + {{0x0133, 0x0134, 0x0135, 0x0136, 0x0137}, 0x0000, 0x001e}, + {{0x0139, 0x013a, 0x013b, 0x013c, 0x013d}, 0x0018, 0x000c}, + {{0x013e, 0x0148, 0x0149, 0x014a, 0x014b}, 0x0000, 0x0011}, + {{0x0153, 0x015a, 0x015b, 0x015c, 0x015d}, 0x0000, 0x0015}, + {{0x0178, 0x017b, 0x017c, 0x017d, 0x017e}, 0x0000, 0x002b}, + {{0x0171, 0x0172, 0x0173, 0x0174, 0x0175}, 0x0000, 0x0020}, + {{0x0166, 0x0168, 0x0169, 0x016a, 0x016b}, 0x0000, 0x0019}, + {{0x016c, 0x016d, 0x016e, 0x016f, 0x0170}, 0x0000, 0x0020}, + {{0x0182, 0x0184, 0x0185, 0x0186, 0x0187}, 0x0000, 0x002b}, + {{0x0161, 0x0162, 0x0163, 0x0164, 0x0165}, 0x0000, 0x0019}, + {{0x0179, 0x0334, 0x0335, 0x0336, 0x0337}, 0x0000, 0x0029}, + {{0x0188, 0x0189, 0x018a, 0x018b, 0x018c}, 0x0018, 0x0001}, + {{0x0196, 0x0199, 0x019a, 0x019b, 0x019c}, 0x0000, 0x0023}, + {{0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8}, 0x0000, 0x001c}, + {{0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1}, 0x0000, 0x001e}, + {{0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8}, 0x0000, 0x001c}, + {{0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4}, 0x0000, 0x0027}, + {{0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0}, 0x0018, 0x000d}, + {{0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9}, 0x0000, 0x0012}, + {{0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4}, 0x0000, 0x0028}, + {{0x02e4, 0x0330, 0x0331, 0x0332, 0x0333}, 0x0000, 0x0017}, + {{0x0200, 0x0203, 0x0204, 0x0205, 0x0206}, 0x0000, 0x0019}, + {{0x0221, 0x0224, 0x0225, 0x0226, 0x0227}, 0x0000, 0x0020}, + {{0x021a, 0x021d, 0x021e, 0x021f, 0x0220}, 0x0000, 0x0020}, + {{0x0009, 0x0348, 0x0349, 0x034a, 0x034b}, 0x0018, 0x0011}, + {{0x022f, 0x0232, 0x0233, 0x0234, 0x0235}, 0x0000, 0x0022}, + {{0x0228, 0x022b, 0x022c, 0x022d, 0x022e}, 0x0000, 0x0022}, + {{0x025c, 0x025f, 0x0260, 0x0261, 0x0262}, 0x0000, 0x0013}, + {{0x026d, 0x026e, 0x026f, 0x0270, 0x0271}, 0x0018, 0x000b}, + {{0x0273, 0x027c, 0x027d, 0x027e, 0x027f}, 0x0000, 0x001b}, + {{0x0001, 0x0344, 0x0345, 0x0346, 0x0347}, 0x0018, 0x000c}, + {{0x0282, 0x0283, 0x0284, 0x0285, 0x0286}, 0x0018, 0x003e}, + {{0x0291, 0x0292, 0x0293, 0x0294, 0x0294}, 0x0018, 0x002b}, + {{0x0109, 0x0302, 0x0303, 0x0304, 0x0305}, 0x0000, 0x0003}, + {{0x010a, 0x0306, 0x0307, 0x0308, 0x0309}, 0x0000, 0x000b}, + {{0x010b, 0x030a, 0x030b, 0x030c, 0x030d}, 0x0000, 0x0002}, + {{0x010c, 0x030e, 0x030f, 0x0310, 0x0311}, 0x0000, 0x000c}, + {{0x010d, 0x0312, 0x0313, 0x0314, 0x0315}, 0x0000, 0x0000}, + {{0x010e, 0x0316, 0x0317, 0x0318, 0x0319}, 0x0000, 0x0004}, + {{0x010f, 0x031a, 0x031b, 0x031c, 0x031d}, 0x0000, 0x0006}, + {{0x0110, 0x031e, 0x031f, 0x0320, 0x0321}, 0x0000, 0x0007}, + {{0x0105, 0x0105, 0x0105, 0x0105, 0x0105}, 0x0000, 0x0008}, + {{0x0106, 0x0106, 0x0106, 0x0106, 0x0106}, 0x0000, 0x0008}, + {{0x0107, 0x0107, 0x0107, 0x0107, 0x0107}, 0x0000, 0x0008}, + {{0x0108, 0x0108, 0x0108, 0x0108, 0x0108}, 0x0000, 0x0008}, + {{0x014f, 0x014f, 0x014f, 0x014f, 0x014f}, 0x0000, 0x0008}, +}; + +static const u16 sBadgeFlags[8] = +{ + FLAG_BADGE01_GET, FLAG_BADGE02_GET, FLAG_BADGE03_GET, FLAG_BADGE04_GET, + FLAG_BADGE05_GET, FLAG_BADGE06_GET, FLAG_BADGE07_GET, FLAG_BADGE08_GET, +}; + +#define tState data[0] +#define tTransition data[1] + +static void Task_BattleStart(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (tState) + { + case 0: + if (!FieldPoisonEffectIsRunning()) // is poison not active? + { + BattleTransition_StartOnField(tTransition); + sub_81BE72C(); + tState++; // go to case 1. + } + break; + case 1: + if (IsBattleTransitionDone() == TRUE) + { + overworld_free_bg_tilemaps(); + SetMainCallback2(CB2_InitBattle); + prev_quest_postbuffer_cursor_backup_reset(); + ResetPoisonStepCounter(); + DestroyTask(taskId); + } + break; + } +} + +static void CreateBattleStartTask(u8 transition, u16 song) +{ + u8 taskId = CreateTask(Task_BattleStart, 1); + + gTasks[taskId].tTransition = transition; + PlayMapChosenOrBattleBGM(song); +} + +#undef tState +#undef tTransition + +void BattleSetup_StartWildBattle(void) +{ + if (GetSafariZoneFlag()) + DoSafariBattle(); + else + DoStandardWildBattle(); +} + +void BattleSetup_StartBattlePikeWildBattle(void) +{ + DoBattlePikeWildBattle(); +} + +static void DoStandardWildBattle(void) +{ + ScriptContext2_Enable(); + FreezeMapObjects(); + sub_808BCF4(); + gMain.savedCallback = CB2_EndWildBattle; + gBattleTypeFlags = 0; + if (InBattlePyramid()) + { + VarSet(VAR_0x400E, 0); + gBattleTypeFlags |= BATTLE_TYPE_PYRAMID; + } + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +void BattleSetup_StartRoamerBattle(void) +{ + ScriptContext2_Enable(); + FreezeMapObjects(); + sub_808BCF4(); + gMain.savedCallback = CB2_EndWildBattle; + gBattleTypeFlags = BATTLE_TYPE_ROAMER; + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +static void DoSafariBattle(void) +{ + ScriptContext2_Enable(); + FreezeMapObjects(); + sub_808BCF4(); + gMain.savedCallback = CB2_EndSafariBattle; + gBattleTypeFlags = BATTLE_TYPE_SAFARI; + CreateBattleStartTask(GetWildBattleTransition(), 0); +} + +static void DoBattlePikeWildBattle(void) +{ + ScriptContext2_Enable(); + FreezeMapObjects(); + sub_808BCF4(); + gMain.savedCallback = CB2_EndWildBattle; + gBattleTypeFlags = BATTLE_TYPE_PIKE; + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +static void DoTrainerBattle(void) +{ + CreateBattleStartTask(GetTrainerBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_TRAINER_BATTLES); + sub_80B1234(); +} + +static void sub_80B0828(void) +{ + if (InBattlePyramid()) + CreateBattleStartTask(sub_80B100C(10), 0); + else + CreateBattleStartTask(sub_80B100C(11), 0); + + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_TRAINER_BATTLES); + sub_80B1234(); +} + +// Initiates battle where Wally catches Ralts +void StartWallyTutorialBattle(void) +{ + CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5); + ScriptContext2_Enable(); + gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music; + gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL; + CreateBattleStartTask(B_TRANSITION_SLICE, 0); +} + +void BattleSetup_StartScriptedWildBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = 0; + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +void BattleSetup_StartLatiBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; + CreateBattleStartTask(GetWildBattleTransition(), 0); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +void BattleSetup_StartLegendaryBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; + + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + default: + case SPECIES_GROUDON: + gBattleTypeFlags |= BATTLE_TYPE_GROUDON; + CreateBattleStartTask(B_TRANSITION_GROUDON, BGM_BATTLE34); + break; + case SPECIES_KYOGRE: + gBattleTypeFlags |= BATTLE_TYPE_KYOGRE; + CreateBattleStartTask(B_TRANSITION_KYOGRE, BGM_BATTLE34); + break; + case SPECIES_RAYQUAZA: + gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA; + CreateBattleStartTask(B_TRANSITION_RAYQUAZA, BGM_BATTLE_LEGENDARY); + break; + case SPECIES_DEOXYS: + CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_DEOXYS); + break; + case SPECIES_LUGIA: + case SPECIES_HO_OH: + CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_LEGENDARY); + break; + case SPECIES_MEW: + CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE_MEW); + break; + } + + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +void StartGroudonKyogreBattle(void) +{ + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; + + if (gGameVersion == VERSION_RUBY) + CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON + else + CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE + + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +void StartRegiBattle(void) +{ + u8 transitionId; + u16 species; + + ScriptContext2_Enable(); + gMain.savedCallback = CB2_EndScriptedWildBattle; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; + + species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); + switch (species) + { + case SPECIES_REGIROCK: + transitionId = B_TRANSITION_REGIROCK; + break; + case SPECIES_REGICE: + transitionId = B_TRANSITION_REGICE; + break; + case SPECIES_REGISTEEL: + transitionId = B_TRANSITION_REGISTEEL; + break; + default: + transitionId = B_TRANSITION_GRID_SQUARES; + break; + } + CreateBattleStartTask(transitionId, BGM_BATTLE36); + + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); +} + +static void CB2_EndWildBattle(void) +{ + CpuFill16(0, (void*)(BG_PLTT), BG_PLTT_SIZE); + ResetOamRange(0, 128); + + if (IsPlayerDefeated(gBattleOutcome) == TRUE && !InBattlePyramid() && !InBattlePike()) + { + SetMainCallback2(CB2_WhiteOut); + } + else + { + SetMainCallback2(c2_exit_to_overworld_2_switch); + gFieldCallback = sub_80AF6F0; + } +} + +static void CB2_EndScriptedWildBattle(void) +{ + CpuFill16(0, (void*)(BG_PLTT), BG_PLTT_SIZE); + ResetOamRange(0, 128); + + if (IsPlayerDefeated(gBattleOutcome) == TRUE) + { + if (InBattlePyramid()) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + else + SetMainCallback2(CB2_WhiteOut); + } + else + { + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } +} + +u8 BattleSetup_GetTerrainId(void) +{ + u16 tileBehavior; + s16 x, y; + + PlayerGetDestCoords(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + + if (MetatileBehavior_IsTallGrass(tileBehavior)) + return BATTLE_TERRAIN_GRASS; + if (MetatileBehavior_IsLongGrass(tileBehavior)) + return BATTLE_TERRAIN_LONG_GRASS; + if (MetatileBehavior_IsSandOrDeepSand(tileBehavior)) + return BATTLE_TERRAIN_SAND; + + switch (gMapHeader.mapType) + { + case MAP_TYPE_TOWN: + case MAP_TYPE_CITY: + case MAP_TYPE_ROUTE: + break; + case MAP_TYPE_UNDERGROUND: + if (MetatileBehavior_IsMB_0B(tileBehavior)) + return BATTLE_TERRAIN_BUILDING; + if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) + return BATTLE_TERRAIN_POND; + return BATTLE_TERRAIN_CAVE; + case MAP_TYPE_INDOOR: + case MAP_TYPE_SECRET_BASE: + return BATTLE_TERRAIN_BUILDING; + case MAP_TYPE_UNDERWATER: + return BATTLE_TERRAIN_UNDERWATER; + case MAP_TYPE_6: + if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) + return BATTLE_TERRAIN_WATER; + return BATTLE_TERRAIN_PLAIN; + } + if (MetatileBehavior_IsDeepOrOceanWater(tileBehavior)) + return BATTLE_TERRAIN_WATER; + if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) + return BATTLE_TERRAIN_POND; + if (MetatileBehavior_IsMountain(tileBehavior)) + return BATTLE_TERRAIN_MOUNTAIN; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + { + if (MetatileBehavior_GetBridgeSth(tileBehavior)) + return BATTLE_TERRAIN_POND; + if (MetatileBehavior_IsBridge(tileBehavior) == TRUE) + return BATTLE_TERRAIN_WATER; + } + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE113) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE113)) + return BATTLE_TERRAIN_SAND; + if (GetSav1Weather() == 8) + return BATTLE_TERRAIN_SAND; + + return BATTLE_TERRAIN_PLAIN; +} + +static u8 GetBattleTransitionTypeByMap(void) +{ + u16 tileBehavior; + s16 x, y; + + PlayerGetDestCoords(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + if (Overworld_GetFlashLevel()) + return B_TRANSITION_SHUFFLE; + if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) + { + switch (gMapHeader.mapType) + { + case MAP_TYPE_UNDERGROUND: + return B_TRANSITION_SWIRL; + case MAP_TYPE_UNDERWATER: + return B_TRANSITION_BIG_POKEBALL; + default: + return B_TRANSITION_BLUR; + } + } + return B_TRANSITION_BIG_POKEBALL; +} + +static u16 GetSumOfPlayerPartyLevel(u8 numMons) +{ + u8 sum = 0; + int i; + + for (i = 0; i < PARTY_SIZE; i++) + { + u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + + if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) + { + sum += GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + if (--numMons == 0) + break; + } + } + return sum; +} + +static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) +{ + u8 i; + u8 sum; + u32 count = numMons; + + if (gTrainers[opponentId].partySize < count) + count = gTrainers[opponentId].partySize; + + sum = 0; + + switch (gTrainers[opponentId].partyFlags) + { + case 0: + { + const struct TrainerMonNoItemDefaultMoves *party; + party = gTrainers[opponentId].party.NoItemDefaultMoves; + for (i = 0; i < count; i++) + sum += party[i].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET: + { + const struct TrainerMonNoItemCustomMoves *party; + party = gTrainers[opponentId].party.NoItemCustomMoves; + for (i = 0; i < count; i++) + sum += party[i].lvl; + } + break; + case F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemDefaultMoves *party; + party = gTrainers[opponentId].party.ItemDefaultMoves; + for (i = 0; i < count; i++) + sum += party[i].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemCustomMoves *party; + party = gTrainers[opponentId].party.ItemCustomMoves; + for (i = 0; i < count; i++) + sum += party[i].lvl; + } + break; + } + + return sum; +} + +static u8 GetWildBattleTransition(void) +{ + u8 transitionType = GetBattleTransitionTypeByMap(); + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); + + if (enemyLevel < playerLevel) + { + if (InBattlePyramid()) + return B_TRANSITION_BLUR; + else + return sBattleTransitionTable_Wild[transitionType][0]; + } + else + { + if (InBattlePyramid()) + return B_TRANSITION_GRID_SQUARES; + else + return sBattleTransitionTable_Wild[transitionType][1]; + } +} + +static u8 GetTrainerBattleTransition(void) +{ + u8 minPartyCount; + u8 transitionType; + u8 enemyLevel; + u8 playerLevel; + + if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) + return B_TRANSITION_CHAMPION; + + if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR) + { + if (gTrainerBattleOpponent_A == TRAINER_SIDNEY) + return B_TRANSITION_SYDNEY; + if (gTrainerBattleOpponent_A == TRAINER_PHOEBE) + return B_TRANSITION_PHOEBE; + if (gTrainerBattleOpponent_A == TRAINER_GLACIA) + return B_TRANSITION_GLACIA; + if (gTrainerBattleOpponent_A == TRAINER_DRAKE) + return B_TRANSITION_DRAKE; + return B_TRANSITION_CHAMPION; + } + + if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION) + return B_TRANSITION_CHAMPION; + + if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_TEAM_MAGMA + || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_MAGMA_LEADER + || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_MAGMA_ADMIN) + return B_TRANSITION_MAGMA; + + if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_TEAM_AQUA + || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_AQUA_LEADER + || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_AQUA_ADMIN) + return B_TRANSITION_AQUA; + + if (gTrainers[gTrainerBattleOpponent_A].doubleBattle == TRUE) + minPartyCount = 2; // double battles always at least have 2 pokemon. + else + minPartyCount = 1; + + transitionType = GetBattleTransitionTypeByMap(); + enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent_A, minPartyCount); + playerLevel = GetSumOfPlayerPartyLevel(minPartyCount); + + if (enemyLevel < playerLevel) + return sBattleTransitionTable_Trainer[transitionType][0]; + else + return sBattleTransitionTable_Trainer[transitionType][1]; +} + +u8 sub_80B100C(s32 arg0) +{ + u16 var; + u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); + u8 playerLevel = GetSumOfPlayerPartyLevel(1); + + if (enemyLevel < playerLevel) + { + switch (arg0) + { + case 11: + case 12: + case 13: + return B_TRANSITION_POKEBALLS_TRAIL; + case 10: + return sUnknown_0854FEA4[Random() % ARRAY_COUNT(sUnknown_0854FEA4)]; + case 3: + return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)]; + } + + if (VarGet(VAR_0x40CE) != 3) + return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)]; + } + else + { + switch (arg0) + { + case 11: + case 12: + case 13: + return B_TRANSITION_BIG_POKEBALL; + case 10: + return sUnknown_0854FEA4[Random() % ARRAY_COUNT(sUnknown_0854FEA4)]; + case 3: + return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)]; + } + + if (VarGet(VAR_0x40CE) != 3) + return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)]; + } + + var = gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 0] + + gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 1]; + + return sUnknown_0854FE98[var % ARRAY_COUNT(sUnknown_0854FE98)]; +} + +void ChooseStarter(void) +{ + SetMainCallback2(CB2_ChooseStarter); + gMain.savedCallback = CB2_GiveStarter; +} + +static void CB2_GiveStarter(void) +{ + u16 starterMon; + + *GetVarPointer(VAR_FIRST_POKE) = gSpecialVar_Result; + starterMon = GetStarterPokemon(gSpecialVar_Result); + ScriptGiveMon(starterMon, 5, 0, 0, 0, 0); + ResetTasks(); + PlayBattleBGM(); + SetMainCallback2(CB2_StartFirstBattle); + BattleTransition_Start(B_TRANSITION_BLUR); +} + +static void CB2_StartFirstBattle(void) +{ + UpdatePaletteFade(); + RunTasks(); + + if (IsBattleTransitionDone() == TRUE) + { + gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE; + gMain.savedCallback = CB2_EndFirstBattle; + FreeAllWindowBuffers(); + SetMainCallback2(CB2_InitBattle); + prev_quest_postbuffer_cursor_backup_reset(); + ResetPoisonStepCounter(); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); + sub_80EECC8(); + sub_80B1218(); + } +} + +static void CB2_EndFirstBattle(void) +{ + Overworld_ClearSavedMusic(); + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); +} + +static void sub_80B1218(void) +{ + if (GetGameStat(GAME_STAT_WILD_BATTLES) % 60 == 0) + sub_81DA57C(); +} + +static void sub_80B1234(void) +{ + if (GetGameStat(GAME_STAT_TRAINER_BATTLES) % 20 == 0) + sub_81DA57C(); +} + +// why not just use the macros? maybe its because they didnt want to uncast const every time? +static u32 TrainerBattleLoadArg32(const u8 *ptr) +{ + return T1_READ_32(ptr); +} + +static u16 TrainerBattleLoadArg16(const u8 *ptr) +{ + return T1_READ_16(ptr); +} + +static u8 TrainerBattleLoadArg8(const u8 *ptr) +{ + return T1_READ_8(ptr); +} + +static u16 GetTrainerAFlag(void) +{ + return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A; +} + +static u16 GetTrainerBFlag(void) +{ + return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_B; +} + +static bool32 IsPlayerDefeated(u32 battleOutcome) +{ + switch (battleOutcome) + { + case BATTLE_LOST: + case BATTLE_DREW: + return TRUE; + case BATTLE_WON: + case BATTLE_RAN: + case BATTLE_PLAYER_TELEPORTED: + case BATTLE_POKE_FLED: + case BATTLE_CAUGHT: + return FALSE; + default: + return FALSE; + } +} + +void ResetTrainerOpponentIds(void) +{ + gTrainerBattleOpponent_A = 0; + gTrainerBattleOpponent_B = 0; +} + +static void InitTrainerBattleVariables(void) +{ + sTrainerBattleMode = 0; + if (gApproachingTrainerId == 0) + { + sTrainerAIntroSpeech = NULL; + sTrainerADefeatSpeech = NULL; + sTrainerABattleScriptRetAddr = NULL; + } + else + { + sTrainerBIntroSpeech = NULL; + sTrainerBDefeatSpeech = NULL; + sTrainerBBattleScriptRetAddr = NULL; + } + sTrainerMapObjectLocalId = 0; + sTrainerVictorySpeech = NULL; + sTrainerCannotBattleSpeech = NULL; + sTrainerBattleEndScript = NULL; +} + +static inline void SetU8(void *ptr, u8 value) +{ + *(u8*)(ptr) = value; +} + +static inline void SetU16(void *ptr, u16 value) +{ + *(u16*)(ptr) = value; +} + +static inline void SetU32(void *ptr, u32 value) +{ + *(u32*)(ptr) = value; +} + +static inline void SetPtr(const void *ptr, const void* value) +{ + *(const void**)(ptr) = value; +} + +static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data) +{ + while (1) + { + switch (specs->ptrType) + { + case TRAINER_PARAM_LOAD_VAL_8BIT: + SetU8(specs->varPtr, TrainerBattleLoadArg8(data)); + data += 1; + break; + case TRAINER_PARAM_LOAD_VAL_16BIT: + SetU16(specs->varPtr, TrainerBattleLoadArg16(data)); + data += 2; + break; + case TRAINER_PARAM_LOAD_VAL_32BIT: + SetU32(specs->varPtr, TrainerBattleLoadArg32(data)); + data += 4; + break; + case TRAINER_PARAM_CLEAR_VAL_8BIT: + SetU8(specs->varPtr, 0); + break; + case TRAINER_PARAM_CLEAR_VAL_16BIT: + SetU16(specs->varPtr, 0); + break; + case TRAINER_PARAM_CLEAR_VAL_32BIT: + SetU32(specs->varPtr, 0); + break; + case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR: + SetPtr(specs->varPtr, data); + return; + } + specs++; + } +} + +void SetMapVarsToTrainer(void) +{ + if (sTrainerMapObjectLocalId != 0) + { + gSpecialVar_LastTalked = sTrainerMapObjectLocalId; + gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + } +} + +const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data) +{ + InitTrainerBattleVariables(); + sTrainerBattleMode = TrainerBattleLoadArg8(data); + + switch (sTrainerBattleMode) + { + case 3: + TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data); + return EventScript_2713C2; + case 4: + TrainerBattleLoadArgs(sDoubleBattleParams, data); + SetMapVarsToTrainer(); + return EventScript_TryDoDoubleTrainerBattle; + case 2: + if (gApproachingTrainerId == 0) + { + TrainerBattleLoadArgs(sContinueScriptBattleParams, data); + SetMapVarsToTrainer(); + } + else + { + TrainerBattleLoadArgs(sTrainerBContinueScriptBattleParams, data); + } + return EventScript_271362; + case 1: + TrainerBattleLoadArgs(sContinueScriptBattleParams, data); + SetMapVarsToTrainer(); + return EventScript_271362; + case 6: + case 8: + TrainerBattleLoadArgs(sContinueScriptDoubleBattleParams, data); + SetMapVarsToTrainer(); + return EventScript_TryDoDoubleTrainerBattle; + case 7: + TrainerBattleLoadArgs(sDoubleBattleParams, data); + SetMapVarsToTrainer(); + gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A); + return EventScript_TryDoDoubleRematchBattle; + case 5: + TrainerBattleLoadArgs(sOrdinaryBattleParams, data); + SetMapVarsToTrainer(); + gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A); + return EventScript_2713D1; + case 9: + if (gApproachingTrainerId == 0) + { + TrainerBattleLoadArgs(sOrdinaryBattleParams, data); + SetMapVarsToTrainer(); + gTrainerBattleOpponent_A = sub_81A9AA8(gSpecialVar_LastTalked); + } + else + { + TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data); + gTrainerBattleOpponent_B = sub_81A9AA8(gSpecialVar_LastTalked); + } + return EventScript_271362; + case 10: + TrainerBattleLoadArgs(sOrdinaryBattleParams, data); + return NULL; + case 11: + TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data); + return NULL; + case 12: + if (gApproachingTrainerId == 0) + { + TrainerBattleLoadArgs(sOrdinaryBattleParams, data); + SetMapVarsToTrainer(); + gTrainerBattleOpponent_A = sub_81D6180(gSpecialVar_LastTalked); + } + else + { + TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data); + gTrainerBattleOpponent_B = sub_81D6180(gSpecialVar_LastTalked); + } + return EventScript_271362; + default: + if (gApproachingTrainerId == 0) + { + TrainerBattleLoadArgs(sOrdinaryBattleParams, data); + SetMapVarsToTrainer(); + } + else + { + TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data); + } + return EventScript_271362; + } +} + +void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript) +{ + gSelectedMapObject = trainerMapObjId; + gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId; + BattleSetup_ConfigureTrainerBattle(trainerScript + 1); + ScriptContext1_SetupScript(EventScript_271354); + ScriptContext2_Enable(); +} + +void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript) +{ + gSelectedMapObject = trainerMapObjId; + gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId; + BattleSetup_ConfigureTrainerBattle(trainerScript + 1); +} + +void SetUpTwoTrainersBattle(void) +{ + ScriptContext1_SetupScript(EventScript_271354); + ScriptContext2_Enable(); +} + +bool32 GetTrainerFlagFromScriptPointer(const u8 *data) +{ + u32 flag = TrainerBattleLoadArg16(data + 2); + return FlagGet(FLAG_TRAINER_FLAG_START + flag); +} + +void sub_80B16D8(void) +{ + struct MapObject *mapObject = &gMapObjects[gSelectedMapObject]; + + npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18)); +} + +u8 GetTrainerBattleMode(void) +{ + return sTrainerBattleMode; +} + +bool8 GetTrainerFlag(void) +{ + if (InBattlePyramid()) + return GetBattlePyramidTrainerFlag(gSelectedMapObject); + else if (InTrainerHill()) + return GetTrainerHillTrainerFlag(gSelectedMapObject); + else + return FlagGet(GetTrainerAFlag()); +} + +static void SetBattledTrainersFlags(void) +{ + if (gTrainerBattleOpponent_B != 0) + FlagSet(GetTrainerBFlag()); + FlagSet(GetTrainerAFlag()); +} + +static void SetBattledTrainerFlag(void) +{ + FlagSet(GetTrainerAFlag()); +} + +bool8 HasTrainerBeenFought(u16 trainerId) +{ + return FlagGet(FLAG_TRAINER_FLAG_START + trainerId); +} + +void SetTrainerFlag(u16 trainerId) +{ + FlagSet(FLAG_TRAINER_FLAG_START + trainerId); +} + +void ClearTrainerFlag(u16 trainerId) +{ + FlagClear(FLAG_TRAINER_FLAG_START + trainerId); +} + +void BattleSetup_StartTrainerBattle(void) +{ + if (gNoOfApproachingTrainers == 2) + gBattleTypeFlags = (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TRAINER); + else + gBattleTypeFlags = (BATTLE_TYPE_TRAINER); + + if (InBattlePyramid()) + { + VarSet(VAR_0x400E, 0); + gBattleTypeFlags |= BATTLE_TYPE_PYRAMID; + + if (gNoOfApproachingTrainers == 2) + { + sub_816306C(1); + ZeroMonData(&gEnemyParty[1]); + ZeroMonData(&gEnemyParty[2]); + ZeroMonData(&gEnemyParty[4]); + ZeroMonData(&gEnemyParty[5]); + } + else + { + sub_8163048(1); + ZeroMonData(&gEnemyParty[1]); + ZeroMonData(&gEnemyParty[2]); + } + + sub_81A9B04(); + } + else if (sub_81D5C18()) + { + gBattleTypeFlags |= BATTLE_TYPE_x4000000; + + if (gNoOfApproachingTrainers == 2) + sub_81D639C(); + else + sub_81D6384(); + + sub_81D61E8(); + } + + sNoOfPossibleTrainerRetScripts = gNoOfApproachingTrainers; + gNoOfApproachingTrainers = 0; + sShouldCheckTrainerBScript = FALSE; + gUnknown_03006080 = 0; + gMain.savedCallback = CB2_EndTrainerBattle; + + if (InBattlePyramid() || sub_81D5C18()) + sub_80B0828(); + else + DoTrainerBattle(); + + ScriptContext1_Stop(); +} + +static void CB2_EndTrainerBattle(void) +{ + if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) + { + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) + { + if (InBattlePyramid() || sub_81D5C18()) + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + else + SetMainCallback2(CB2_WhiteOut); + } + else + { + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + if (!InBattlePyramid() && !sub_81D5C18()) + { + RegisterTrainerInMatchCall(); + SetBattledTrainersFlags(); + } + } +} + +static void CB2_EndRematchBattle(void) +{ + if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) + { + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + else if (IsPlayerDefeated(gBattleOutcome) == TRUE) + { + SetMainCallback2(CB2_WhiteOut); + } + else + { + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + RegisterTrainerInMatchCall(); + SetBattledTrainersFlags(); + HandleRematchVarsOnBattleEnd(); + } +} + +void BattleSetup_StartRematchBattle(void) +{ + gBattleTypeFlags = BATTLE_TYPE_TRAINER; + gMain.savedCallback = CB2_EndRematchBattle; + DoTrainerBattle(); + ScriptContext1_Stop(); +} + +void ShowTrainerIntroSpeech(void) +{ + if (InBattlePyramid()) + { + if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1) + sub_81A9EDC(sub_81A9AA8(gSpecialVar_LastTalked)); + else + sub_81A9EDC(sub_81A9AA8(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId)); + + sub_80982B8(); + } + else if (sub_81D5C18()) + { + if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1) + sub_81D572C(2, sub_81D6180(gSpecialVar_LastTalked)); + else + sub_81D572C(2, sub_81D6180(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId)); + + sub_80982B8(); + } + else + { + ShowFieldMessage(GetIntroSpeechOfApproachingTrainer()); + } +} + +const u8 *BattleSetup_GetScriptAddrAfterBattle(void) +{ + if (sTrainerBattleEndScript != NULL) + return sTrainerBattleEndScript; + else + return EventScript_TestSignpostMsg; +} + +const u8 *BattleSetup_GetTrainerPostBattleScript(void) +{ + if (sShouldCheckTrainerBScript) + { + sShouldCheckTrainerBScript = FALSE; + if (sTrainerBBattleScriptRetAddr != NULL) + { + gUnknown_03006080 = 1; + return sTrainerBBattleScriptRetAddr; + } + } + else + { + if (sTrainerABattleScriptRetAddr != NULL) + { + gUnknown_03006080 = 0; + return sTrainerABattleScriptRetAddr; + } + } + + return EventScript_TryGetTrainerScript; +} + +void ShowTrainerCantBattleSpeech(void) +{ + ShowFieldMessage(GetTrainerCantBattleSpeech()); +} + +void SetUpTrainerEncounterMusic(void) +{ + u16 trainerId; + u16 music; + + if (gApproachingTrainerId == 0) + trainerId = gTrainerBattleOpponent_A; + else + trainerId = gTrainerBattleOpponent_B; + + if (sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC + && sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC) + { + switch (GetTrainerEncounterMusicId(trainerId)) + { + case TRAINER_ENCOUNTER_MUSIC_MALE: + music = BGM_BOYEYE; + break; + case TRAINER_ENCOUNTER_MUSIC_FEMALE: + music = BGM_GIRLEYE; + break; + case TRAINER_ENCOUNTER_MUSIC_GIRL: + music = BGM_SYOUJOEYE; + break; + case TRAINER_ENCOUNTER_MUSIC_INTENSE: + music = BGM_HAGESHII; + break; + case TRAINER_ENCOUNTER_MUSIC_COOL: + music = BGM_KAKKOII; + break; + case TRAINER_ENCOUNTER_MUSIC_AQUA: + music = BGM_AQA_0; + break; + case TRAINER_ENCOUNTER_MUSIC_MAGMA: + music = BGM_MGM0; + break; + case TRAINER_ENCOUNTER_MUSIC_SWIMMER: + music = BGM_SWIMEYE; + break; + case TRAINER_ENCOUNTER_MUSIC_TWINS: + music = BGM_HUTAGO; + break; + case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR: + music = BGM_SITENNOU; + break; + case TRAINER_ENCOUNTER_MUSIC_HIKER: + music = BGM_YAMA_EYE; + break; + case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER: + music = BGM_INTER_V; + break; + case TRAINER_ENCOUNTER_MUSIC_RICH: + music = BGM_TEST; + break; + default: + music = BGM_AYASII; + } + PlayNewMapMusic(music); + } +} + +static const u8 *ReturnEmptyStringIfNull(const u8 *string) +{ + if (string == NULL) + return gText_EmptyString2; + else + return string; +} + +static const u8 *GetIntroSpeechOfApproachingTrainer(void) +{ + if (gApproachingTrainerId == 0) + return ReturnEmptyStringIfNull(sTrainerAIntroSpeech); + else + return ReturnEmptyStringIfNull(sTrainerBIntroSpeech); +} + +const u8 *GetTrainerALoseText(void) +{ + const u8 *string; + + if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) + string = GetSecretBaseTrainerLoseText(); + else + string = sTrainerADefeatSpeech; + + StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(string)); + return gStringVar4; +} + +const u8 *GetTrainerBLoseText(void) +{ + StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(sTrainerBDefeatSpeech)); + return gStringVar4; +} + +const u8 *GetTrainerWonSpeech(void) +{ + return ReturnEmptyStringIfNull(sTrainerVictorySpeech); +} + +static const u8 *GetTrainerCantBattleSpeech(void) +{ + return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech); +} + +static s32 FirstBattleTrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId) +{ + s32 i; + + for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) + { + if (table[i].trainerIds[0] == trainerId) + return i; + } + + return -1; +} + +static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId) +{ + s32 i, j; + + for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) + { + for (j = 0; j < REMATCHES_COUNT; j++) + { + if (table[i].trainerIds[j] == 0) + break; + if (table[i].trainerIds[j] == trainerId) + return i; + } + } + + return -1; +} + +static bool32 sub_80B1D94(s32 rematchTableId) +{ + if (rematchTableId >= REMATCH_ELITE_FOUR_ENTRIES) + return TRUE; + else if (rematchTableId == REMATCH_WALLY_ENTRY) + return (FlagGet(FLAG_0x07E) == FALSE); + else + return FALSE; +} + +static void SetRematchIdForTrainer(const struct RematchTrainer *table, u32 tableId) +{ + s32 i; + + for (i = 1; i < REMATCHES_COUNT; i++) + { + u16 trainerId = table[tableId].trainerIds[i]; + + if (trainerId == 0) + break; + if (!HasTrainerBeenFought(trainerId)) + break; + } + + gSaveBlock1Ptr->trainerRematches[tableId] = i; +} + +static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum) +{ + s32 i; + bool32 ret = FALSE; + + for (i = 0; i <= REMATCH_WALLY_ENTRY; i++) + { + if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !sub_80B1D94(i)) + { + if (gSaveBlock1Ptr->trainerRematches[i] != 0) + { + // Trainer already wants a rematch. Don't bother updating it + ret = TRUE; + } + else if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i) + && (Random() % 100) <= 30) // 31% chance of getting a rematch + { + SetRematchIdForTrainer(table, i); + ret = TRUE; + } + } + } + + return ret; +} + +void UpdateRematchIfDefeated(s32 rematchTableId) +{ + if (HasTrainerBeenFought(gRematchTable[rematchTableId].trainerIds[0]) == TRUE) + SetRematchIdForTrainer(gRematchTable, rematchTableId); +} + +static bool32 DoesSomeoneWantRematchIn_(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum) +{ + s32 i; + + for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) + { + if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && gSaveBlock1Ptr->trainerRematches[i] != 0) + return TRUE; + } + + return FALSE; +} + +static bool32 IsRematchTrainerIn_(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum) +{ + s32 i; + + for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) + { + if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum) + return TRUE; + } + + return FALSE; +} + +static bool8 IsFirstTrainerIdReadyForRematch(const struct RematchTrainer *table, u16 firstBattleTrainerId) +{ + s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId); + + if (tableId == -1) + return FALSE; + if (tableId >= 100) + return FALSE; + if (gSaveBlock1Ptr->trainerRematches[tableId] == 0) + return FALSE; + + return TRUE; +} + +static bool8 IsTrainerReadyForRematch_(const struct RematchTrainer *table, u16 trainerId) +{ + s32 tableId = TrainerIdToRematchTableId(table, trainerId); + + if (tableId == -1) + return FALSE; + if (tableId >= 100) + return FALSE; + if (gSaveBlock1Ptr->trainerRematches[tableId] == 0) + return FALSE; + + return TRUE; +} + +static u16 GetRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId) +{ + const struct RematchTrainer *trainerEntry; + s32 i; + s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId); + + if (tableId == -1) + return FALSE; + + trainerEntry = &table[tableId]; + for (i = 1; i < REMATCHES_COUNT; i++) + { + if (trainerEntry->trainerIds[i] == 0) // previous entry was this trainer's last one + return trainerEntry->trainerIds[i - 1]; + if (!HasTrainerBeenFought(trainerEntry->trainerIds[i])) + return trainerEntry->trainerIds[i]; + } + + return trainerEntry->trainerIds[REMATCHES_COUNT - 1]; // already beaten at max stage +} + +static u16 GetLastBeatenRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId) +{ + const struct RematchTrainer *trainerEntry; + s32 i; + s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId); + + if (tableId == -1) + return FALSE; + + trainerEntry = &table[tableId]; + for (i = 1; i < REMATCHES_COUNT; i++) + { + if (trainerEntry->trainerIds[i] == 0) // previous entry was this trainer's last one + return trainerEntry->trainerIds[i - 1]; + if (!HasTrainerBeenFought(trainerEntry->trainerIds[i])) + return trainerEntry->trainerIds[i - 1]; + } + + return trainerEntry->trainerIds[REMATCHES_COUNT - 1]; // already beaten at max stage +} + +static void ClearTrainerWantRematchState(const struct RematchTrainer *table, u16 firstBattleTrainerId) +{ + s32 tableId = TrainerIdToRematchTableId(table, firstBattleTrainerId); + + if (tableId != -1) + gSaveBlock1Ptr->trainerRematches[tableId] = 0; +} + +static u32 GetTrainerMatchCallFlag(u32 trainerId) +{ + s32 i; + + for (i = 0; i < REMATCH_TABLE_ENTRIES; i++) + { + if (gRematchTable[i].trainerIds[0] == trainerId) + return FLAG_MATCH_CALL_REGISTERED + i; + } + + return 0xFFFF; +} + +static void RegisterTrainerInMatchCall(void) +{ + if (FlagGet(FLAG_HAS_MATCH_CALL)) + { + u32 matchCallFlagId = GetTrainerMatchCallFlag(gTrainerBattleOpponent_A); + if (matchCallFlagId != 0xFFFF) + FlagSet(matchCallFlagId); + } +} + +static bool8 WasSecondRematchWon(const struct RematchTrainer *table, u16 firstBattleTrainerId) +{ + s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId); + + if (tableId == -1) + return FALSE; + if (!HasTrainerBeenFought(table[tableId].trainerIds[1])) + return FALSE; + + return TRUE; +} + +static bool32 HasAtLeastFiveBadges(void) +{ + s32 i, count; + + for (count = 0, i = 0; i < ARRAY_COUNT(sBadgeFlags); i++) + { + if (FlagGet(sBadgeFlags[i]) == TRUE) + { + if (++count >= 5) + return TRUE; + } + } + + return FALSE; +} + +#define STEP_COUNTER_MAX 255 + +void IncrementRematchStepCounter(void) +{ + if (HasAtLeastFiveBadges()) + { + if (gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX) + gSaveBlock1Ptr->trainerRematchStepCounter = STEP_COUNTER_MAX; + else + gSaveBlock1Ptr->trainerRematchStepCounter++; + } +} + +static bool32 IsRematchStepCounterMaxed(void) +{ + if (HasAtLeastFiveBadges() && gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX) + return TRUE; + else + return FALSE; +} + +void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum) +{ + if (IsRematchStepCounterMaxed() && UpdateRandomTrainerRematches(gRematchTable, mapGroup, mapNum) == TRUE) + gSaveBlock1Ptr->trainerRematchStepCounter = 0; +} + +bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum) +{ + return DoesSomeoneWantRematchIn_(gRematchTable, mapGroup, mapNum); +} + +bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum) +{ + return IsRematchTrainerIn_(gRematchTable, mapGroup, mapNum); +} + +static u16 GetRematchTrainerId(u16 trainerId) +{ + return GetRematchTrainerIdFromTable(gRematchTable, trainerId); +} + +u16 GetLastBeatenRematchTrainerId(u16 trainerId) +{ + return GetLastBeatenRematchTrainerIdFromTable(gRematchTable, trainerId); +} + +bool8 ShouldTryRematchBattle(void) +{ + if (IsFirstTrainerIdReadyForRematch(gRematchTable, gTrainerBattleOpponent_A)) + return TRUE; + + return WasSecondRematchWon(gRematchTable, gTrainerBattleOpponent_A); +} + +bool8 IsTrainerReadyForRematch(void) +{ + return IsTrainerReadyForRematch_(gRematchTable, gTrainerBattleOpponent_A); +} + +static void HandleRematchVarsOnBattleEnd(void) +{ + ClearTrainerWantRematchState(gRematchTable, gTrainerBattleOpponent_A); + SetBattledTrainersFlags(); +} + +void ShouldTryGetTrainerScript(void) +{ + if (sNoOfPossibleTrainerRetScripts > 1) + { + sNoOfPossibleTrainerRetScripts = 0; + sShouldCheckTrainerBScript = TRUE; + gSpecialVar_Result = TRUE; + } + else + { + sShouldCheckTrainerBScript = FALSE; + gSpecialVar_Result = FALSE; + } +} + +u16 CountBattledRematchTeams(u16 trainerId) +{ + s32 i; + + if (HasTrainerBeenFought(gRematchTable[trainerId].trainerIds[0]) != TRUE) + return 0; + + for (i = 1; i < REMATCHES_COUNT; i++) + { + if (gRematchTable[trainerId].trainerIds[i] == 0) + break; + if (!HasTrainerBeenFought(gRematchTable[trainerId].trainerIds[i])) + break; + } + + return i; +} diff --git a/src/berry_blender.c b/src/berry_blender.c index fe646954d..810162746 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -2442,7 +2442,7 @@ static void CB2_HandleBlenderEndGame(void) sBerryBlenderData->gameEndState++; break; case 10: - switch (sub_8198C58()) + switch (ProcessMenuInputNoWrap_()) { case 1: case -1: diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index d00944ac1..6d6a1545b 100755 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -88,7 +88,7 @@ static void Task_DoClearSaveDataScreenYesNo(u8 taskId) static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId) { - switch(sub_8198C58()) + switch(ProcessMenuInputNoWrap_()) { case 0: FillWindowPixelBuffer(0, 17); diff --git a/src/clock.c b/src/clock.c new file mode 100644 index 000000000..7cea30166 --- /dev/null +++ b/src/clock.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "rom6.h" +#include "event_data.h" +#include "rtc.h" +#include "lottery_corner.h" +#include "dewford_trend.h" +#include "tv.h" +#include "field_screen.h" +#include "berry.h" +#include "main.h" +#include "overworld.h" +#include "wallclock.h" + +// static types + +// static declarations + +static void UpdatePerDay(struct Time *localTime); +static void UpdatePerMinute(struct Time *localTime); + +// rodata + +// text + +static void InitTimeBasedEvents(void) +{ + FlagSet(FLAG_SYS_CLOCK_SET); + RtcCalcLocalTime(); + gSaveBlock2Ptr->lastBerryTreeUpdate = gLocalTime; + VarSet(VAR_DAYS, gLocalTime.days); +} + +void DoTimeBasedEvents(void) +{ + if (FlagGet(FLAG_SYS_CLOCK_SET) && !sub_813B9C0()) + { + RtcCalcLocalTime(); + UpdatePerDay(&gLocalTime); + UpdatePerMinute(&gLocalTime); + } +} + +static void UpdatePerDay(struct Time *localTime) +{ + u16 *days = GetVarPointer(VAR_DAYS); + u16 daysSince; + + if (*days != localTime->days && *days <= localTime->days) + { + daysSince = localTime->days - *days; + ClearUpperFlags(); + UpdateDewfordTrendPerDay(daysSince); + UpdateTVShowsPerDay(daysSince); + UpdateWeatherPerDay(daysSince); + UpdatePartyPokerusTime(daysSince); + UpdateMirageRnd(daysSince); + UpdateBirchState(daysSince); + UpdateFrontierManiac(daysSince); + UpdateFrontierGambler(daysSince); + SetShoalItemFlag(daysSince); + SetRandomLotteryNumber(daysSince); + *days = localTime->days; + } +} + +static void UpdatePerMinute(struct Time *localTime) +{ + struct Time difference; + int minutes; + + CalcTimeDifference(&difference, &gSaveBlock2Ptr->lastBerryTreeUpdate, localTime); + minutes = 24 * 60 * difference.days + 60 * difference.hours + difference.minutes; + if (minutes != 0) + { + if (minutes >= 0) + { + BerryTreeTimeUpdate(minutes); + gSaveBlock2Ptr->lastBerryTreeUpdate = *localTime; + } + } +} + +static void ReturnFromStartWallClock(void) +{ + InitTimeBasedEvents(); + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); +} + +void StartWallClock(void) +{ + SetMainCallback2(Cb2_StartWallClock); + gMain.savedCallback = ReturnFromStartWallClock; +} diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 032607806..a31eb0520 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -58,7 +58,7 @@ extern const u8 gText_HatchedFromEgg[]; extern const u8 gText_NickHatchPrompt[]; extern u8 sav1_map_get_name(void); -extern s8 sub_8198C58(void); +extern s8 ProcessMenuInputNoWrap_(void); extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8); extern void sub_806A068(u16, u8); extern void fade_screen(u8, u8); @@ -669,7 +669,7 @@ static void CB2_EggHatch_1(void) } break; case 10: - switch (sub_8198C58()) + switch (ProcessMenuInputNoWrap_()) { case 0: GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); diff --git a/src/evolution_scene.c b/src/evolution_scene.c index c17921b74..2b88fec3a 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -1168,7 +1168,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } break; case 4: - switch (sub_8198C58()) + switch (ProcessMenuInputNoWrap_()) { case 0: sEvoCursorPos = 0; diff --git a/src/load_save.c b/src/load_save.c index 2b40f2e92..e0106c0a8 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "global.h" #include "gba/flash_internal.h" #include "load_save.h" #include "main.h" @@ -28,7 +28,7 @@ struct LoadedSaveData /*0x00F0*/ struct ItemSlot pokeBalls[16]; /*0x0130*/ struct ItemSlot TMsHMs[64]; /*0x0230*/ struct ItemSlot berries[46]; - /*0x02E8*/ struct MailStruct mail[16]; + /*0x02E8*/ struct MailStruct mail[MAIL_COUNT]; }; EWRAM_DATA struct SaveBlock2 gSaveblock2 = {0}; @@ -330,7 +330,7 @@ void LoadSerializedGame(void) void copy_bags_and_unk_data_from_save_blocks(void) { int i; - + // load player items. for (i = 0; i < 30; i++) gLoadedSaveData.items[i] = gSaveBlock1Ptr->bagPocket_Items[i]; diff --git a/src/mail.c b/src/mail.c index 877035fb6..ec7ff2ce2 100644 --- a/src/mail.c +++ b/src/mail.c @@ -1,4 +1,5 @@ #include "global.h" +#include "mail.h" #include "constants/items.h" #include "main.h" #include "overworld.h" @@ -18,8 +19,43 @@ #include "constants/species.h" #include "malloc.h" #include "easy_chat.h" -#include "mail_data.h" -#include "mail.h" + +extern const u16 gUnknown_08DBE818[]; +extern const u16 gUnknown_08DBE838[]; +extern const u16 gUnknown_08DBE858[]; +extern const u16 gUnknown_08DBE878[]; +extern const u16 gUnknown_08DBE898[]; +extern const u16 gUnknown_08DBE8B8[]; +extern const u16 gUnknown_08DBE8D8[]; +extern const u16 gUnknown_08DBE8F8[]; +extern const u16 gUnknown_08DBE918[]; +extern const u16 gUnknown_08DBE938[]; +extern const u16 gUnknown_08DBE958[]; +extern const u16 gUnknown_08DBE978[]; +extern const u8 gUnknown_08DBE998[]; +extern const u8 gUnknown_08DBFBA4[]; +extern const u8 gUnknown_08DBEB38[]; +extern const u8 gUnknown_08DBFC7C[]; +extern const u8 gUnknown_08DBEC74[]; +extern const u8 gUnknown_08DBFD5C[]; +extern const u8 gUnknown_08DBEE84[]; +extern const u8 gUnknown_08DBFE68[]; +extern const u8 gUnknown_08DBEF5C[]; +extern const u8 gUnknown_08DBFF44[]; +extern const u8 gUnknown_08DBF154[]; +extern const u8 gUnknown_08DC0034[]; +extern const u8 gUnknown_08DBF2D4[]; +extern const u8 gUnknown_08DC0114[]; +extern const u8 gUnknown_08DBF37C[]; +extern const u8 gUnknown_08DC01F4[]; +extern const u8 gUnknown_08DBF50C[]; +extern const u8 gUnknown_08DC0300[]; +extern const u8 gUnknown_08DBF64C[]; +extern const u8 gUnknown_08DC03F0[]; +extern const u8 gUnknown_08DBF7B4[]; +extern const u8 gUnknown_08DC04E8[]; +extern const u8 gUnknown_08DBF904[]; +extern const u8 gUnknown_08DC0600[]; // Static type declarations @@ -51,9 +87,7 @@ struct MailGraphics u16 color12; }; -// Static RAM declarations - -static EWRAM_DATA struct +struct MailRead { /*0x0000*/ u8 strbuf[8][64]; /*0x0200*/ u8 playerName[12]; @@ -72,22 +106,26 @@ static EWRAM_DATA struct /*0x0228*/ const struct MailLayout *layout; /*0x022c*/ u8 bg1TilemapBuffer[0x1000]; /*0x122c*/ u8 bg2TilemapBuffer[0x1000]; -} *gUnknown_0203A134 = NULL; +}; + +// Static RAM declarations + +static EWRAM_DATA struct MailRead *sMailRead = NULL; // Static ROM declarations -void sub_81219F0(void); -void sub_8121A1C(void); -void sub_8121B1C(void); -void sub_8121C50(void); -void sub_8121C64(void); -void sub_8121C98(void); -void sub_8121CC0(void); -void sub_8121D00(void); +static void CB2_InitMailRead(void); +static void sub_8121A1C(void); +static void sub_8121B1C(void); +static void VBlankCB_MailRead(void); +static void CB2_MailRead(void); +static void CB2_WaitForPaletteExitOnKeyPress(void); +static void CB2_ExitOnKeyPress(void); +static void CB2_ExitMailReadFreeVars(void); // .rodata -const struct BgTemplate gUnknown_0859F290[] = { +static const struct BgTemplate sUnknown_0859F290[] = { { .bg = 0, .charBaseIndex = 2, @@ -106,7 +144,7 @@ const struct BgTemplate gUnknown_0859F290[] = { } }; -const struct WindowTemplate gUnknown_0859F29C[] = { +static const struct WindowTemplate sUnknown_0859F29C[] = { { .priority = 0, .tilemapLeft = 2, @@ -119,55 +157,18 @@ const struct WindowTemplate gUnknown_0859F29C[] = { DUMMY_WIN_TEMPLATE }; -const u8 gUnknown_0859F2AC[] = { +static const u8 sUnknown_0859F2AC[] = { 0, 10, 11 }; -const u16 gUnknown_0859F2B0[][2] = { +static const u16 sUnknown_0859F2B0[][2] = { { 0x6ACD, 0x51A5 }, { 0x45FC, 0x38D4 } }; -extern const u16 gUnknown_08DBE818[]; -extern const u16 gUnknown_08DBE838[]; -extern const u16 gUnknown_08DBE858[]; -extern const u16 gUnknown_08DBE878[]; -extern const u16 gUnknown_08DBE898[]; -extern const u16 gUnknown_08DBE8B8[]; -extern const u16 gUnknown_08DBE8D8[]; -extern const u16 gUnknown_08DBE8F8[]; -extern const u16 gUnknown_08DBE918[]; -extern const u16 gUnknown_08DBE938[]; -extern const u16 gUnknown_08DBE958[]; -extern const u16 gUnknown_08DBE978[]; -extern const u8 gUnknown_08DBE998[]; -extern const u8 gUnknown_08DBFBA4[]; -extern const u8 gUnknown_08DBEB38[]; -extern const u8 gUnknown_08DBFC7C[]; -extern const u8 gUnknown_08DBEC74[]; -extern const u8 gUnknown_08DBFD5C[]; -extern const u8 gUnknown_08DBEE84[]; -extern const u8 gUnknown_08DBFE68[]; -extern const u8 gUnknown_08DBEF5C[]; -extern const u8 gUnknown_08DBFF44[]; -extern const u8 gUnknown_08DBF154[]; -extern const u8 gUnknown_08DC0034[]; -extern const u8 gUnknown_08DBF2D4[]; -extern const u8 gUnknown_08DC0114[]; -extern const u8 gUnknown_08DBF37C[]; -extern const u8 gUnknown_08DC01F4[]; -extern const u8 gUnknown_08DBF50C[]; -extern const u8 gUnknown_08DC0300[]; -extern const u8 gUnknown_08DBF64C[]; -extern const u8 gUnknown_08DC03F0[]; -extern const u8 gUnknown_08DBF7B4[]; -extern const u8 gUnknown_08DC04E8[]; -extern const u8 gUnknown_08DBF904[]; -extern const u8 gUnknown_08DC0600[]; - -const struct MailGraphics gUnknown_0859F2B8[] = { +static const struct MailGraphics sUnknown_0859F2B8[] = { { gUnknown_08DBE818, gUnknown_08DBE998, gUnknown_08DBFBA4, 0x02c0, 0x0000, 0x294a, 0x6739 }, { @@ -195,13 +196,13 @@ const struct MailGraphics gUnknown_0859F2B8[] = { } }; -const struct UnkMailStruct Unknown_0859F3A8[] = { +static const struct UnkMailStruct Unknown_0859F3A8[] = { { .numEasyChatWords = 3, .lineHeight = 16 }, { .numEasyChatWords = 3, .lineHeight = 16 }, { .numEasyChatWords = 3, .lineHeight = 16 } }; -const struct MailLayout gUnknown_0859F3B4[] = { +static const struct MailLayout sUnknown_0859F3B4[] = { { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 }, @@ -216,7 +217,7 @@ const struct MailLayout gUnknown_0859F3B4[] = { { 0x03, 0x00, 0x00, 0x02, 0x00, Unknown_0859F3A8 } }; -const struct UnkMailStruct Unknown_0859F444[] = { +static const struct UnkMailStruct Unknown_0859F444[] = { { .numEasyChatWords = 2, .lineHeight = 16 }, { .numEasyChatWords = 2, .lineHeight = 16 }, { .numEasyChatWords = 2, .lineHeight = 16 }, @@ -224,7 +225,7 @@ const struct UnkMailStruct Unknown_0859F444[] = { { .numEasyChatWords = 1, .lineHeight = 16 } }; -const struct MailLayout gUnknown_0859F458[] = { +static const struct MailLayout sUnknown_0859F458[] = { { 0x05, 0x07, 0x58, 0x0b, 0x1e, Unknown_0859F444 }, { 0x05, 0x0a, 0x60, 0x09, 0x1e, Unknown_0859F444 }, { 0x05, 0x0c, 0x68, 0x05, 0x1e, Unknown_0859F444 }, @@ -241,23 +242,23 @@ const struct MailLayout gUnknown_0859F458[] = { // What the heck are these meant to be? Call them u16 for now. -const u16 Unknown_0859F4E8[] = { +static const u16 Unknown_0859F4E8[] = { 0x00, 0x4000, 0x00, 0x00 }; -const u16 Unknown_0859F4F0[] = { +static const u16 Unknown_0859F4F0[] = { 0x00, 0x00, -1, 0x00 }; -const u16 Unknown_0859F4F8[] = { +static const u16 Unknown_0859F4F8[] = { 0x04, 0x00, -1, 0x00 }; -const u16 Unknown_0859F500[] = { +static const u16 Unknown_0859F500[] = { 0x00, 0x40, -1, 0x00 }; -const u16 *const gUnknown_0859F508[] = { +static const u16 *const sUnknown_0859F508[] = { Unknown_0859F4F0, Unknown_0859F4F8, Unknown_0859F500 @@ -265,60 +266,62 @@ const u16 *const gUnknown_0859F508[] = { // .text -void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) { +void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag) +{ u16 buffer[2]; u16 species; - gUnknown_0203A134 = calloc(1, sizeof(*gUnknown_0203A134)); - gUnknown_0203A134->language = LANGUAGE_ENGLISH; - gUnknown_0203A134->playerIsSender = TRUE; - gUnknown_0203A134->parserSingle = CopyEasyChatWord; - gUnknown_0203A134->parserMultiple = ConvertEasyChatWordsToString; - if (mail->itemId >= ITEM_ORANGE_MAIL && mail->itemId <= ITEM_RETRO_MAIL) { - gUnknown_0203A134->mailType = mail->itemId - ITEM_ORANGE_MAIL; + sMailRead = calloc(1, sizeof(*sMailRead)); + sMailRead->language = LANGUAGE_ENGLISH; + sMailRead->playerIsSender = TRUE; + sMailRead->parserSingle = CopyEasyChatWord; + sMailRead->parserMultiple = ConvertEasyChatWordsToString; + if (IS_ITEM_MAIL(mail->itemId)) + { + sMailRead->mailType = mail->itemId - ITEM_ORANGE_MAIL; } else { - gUnknown_0203A134->mailType = 0; + sMailRead->mailType = 0; flag = FALSE; } - switch (gUnknown_0203A134->playerIsSender) + switch (sMailRead->playerIsSender) { case FALSE: default: - gUnknown_0203A134->layout = &gUnknown_0859F3B4[gUnknown_0203A134->mailType]; + sMailRead->layout = &sUnknown_0859F3B4[sMailRead->mailType]; break; case TRUE: - gUnknown_0203A134->layout = &gUnknown_0859F458[gUnknown_0203A134->mailType]; + sMailRead->layout = &sUnknown_0859F458[sMailRead->mailType]; break; } - species = sub_80D45E8(mail->species, buffer); + species = MailSpeciesToSpecies(mail->species, buffer); if (species >= SPECIES_BULBASAUR && species < NUM_SPECIES) { - switch (gUnknown_0203A134->mailType) + switch (sMailRead->mailType) { default: - gUnknown_0203A134->animsActive = 0; + sMailRead->animsActive = 0; break; case ITEM_BEAD_MAIL - ITEM_ORANGE_MAIL: - gUnknown_0203A134->animsActive = 1; + sMailRead->animsActive = 1; break; case ITEM_DREAM_MAIL - ITEM_ORANGE_MAIL: - gUnknown_0203A134->animsActive = 2; + sMailRead->animsActive = 2; break; } } else { - gUnknown_0203A134->animsActive = 0; + sMailRead->animsActive = 0; } - gUnknown_0203A134->mail = mail; - gUnknown_0203A134->callback = callback; - gUnknown_0203A134->flag = flag; - SetMainCallback2(sub_81219F0); + sMailRead->mail = mail; + sMailRead->callback = callback; + sMailRead->flag = flag; + SetMainCallback2(CB2_InitMailRead); } -bool8 sub_81215EC(void) +static bool8 MailReadBuildGraphics(void) { u16 icon; @@ -352,21 +355,21 @@ bool8 sub_81215EC(void) SetGpuReg(REG_OFFSET_BG2HOFS, 0x0000); SetGpuReg(REG_OFFSET_BG3HOFS, 0x0000); SetGpuReg(REG_OFFSET_BG3VOFS, 0x0000); - SetGpuReg(REG_OFFSET_BLDCNT, 0x0000); + SetGpuReg(REG_OFFSET_BLDCNT, 0x0000); SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000); break; case 6: ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_0859F290, 3); - SetBgTilemapBuffer(1, gUnknown_0203A134->bg1TilemapBuffer); - SetBgTilemapBuffer(2, gUnknown_0203A134->bg2TilemapBuffer); + InitBgsFromTemplates(0, sUnknown_0859F290, 3); + SetBgTilemapBuffer(1, sMailRead->bg1TilemapBuffer); + SetBgTilemapBuffer(2, sMailRead->bg2TilemapBuffer); break; case 7: - InitWindows(gUnknown_0859F29C); + InitWindows(sUnknown_0859F29C); DeactivateAllTextPrinters(); break; case 8: - decompress_and_copy_tile_data_to_vram(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tiles, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(1, sUnknown_0859F2B8[sMailRead->mailType].tiles, 0, 0, 0); break; case 9: if (free_temp_tile_data_buffers_if_possible()) @@ -377,7 +380,7 @@ bool8 sub_81215EC(void) case 10: FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(2, 1, 0, 0, 30, 20); - CopyToBgTilemapBuffer(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tileMap, 0, 0); + CopyToBgTilemapBuffer(1, sUnknown_0859F2B8[sMailRead->mailType].tileMap, 0, 0); break; case 11: CopyBgTilemapBufferToVram(0); @@ -386,24 +389,24 @@ bool8 sub_81215EC(void) break; case 12: LoadPalette(GetOverworldTextboxPalettePtr(), 240, 32); - gPlttBufferUnfaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10; - gPlttBufferFaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10; - gPlttBufferUnfaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12; - gPlttBufferFaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12; - LoadPalette(gUnknown_0859F2B8[gUnknown_0203A134->mailType].palette, 0, 32); - gPlttBufferUnfaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0]; - gPlttBufferFaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0]; - gPlttBufferUnfaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1]; - gPlttBufferFaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1]; + gPlttBufferUnfaded[250] = sUnknown_0859F2B8[sMailRead->mailType].color10; + gPlttBufferFaded[250] = sUnknown_0859F2B8[sMailRead->mailType].color10; + gPlttBufferUnfaded[251] = sUnknown_0859F2B8[sMailRead->mailType].color12; + gPlttBufferFaded[251] = sUnknown_0859F2B8[sMailRead->mailType].color12; + LoadPalette(sUnknown_0859F2B8[sMailRead->mailType].palette, 0, 32); + gPlttBufferUnfaded[10] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0]; + gPlttBufferFaded[10] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0]; + gPlttBufferUnfaded[11] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1]; + gPlttBufferFaded[11] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1]; break; case 13: - if (gUnknown_0203A134->flag) + if (sMailRead->flag) { sub_8121A1C(); } break; case 14: - if (gUnknown_0203A134->flag) + if (sMailRead->flag) { sub_8121B1C(); RunTextPrinters(); @@ -416,20 +419,20 @@ bool8 sub_81215EC(void) } break; case 16: - SetVBlankCallback(sub_8121C50); + SetVBlankCallback(VBlankCB_MailRead); gPaletteFade.bufferTransferDisabled = TRUE; break; case 17: - icon = sub_80D2E84(gUnknown_0203A134->mail->species); - switch (gUnknown_0203A134->animsActive) + icon = sub_80D2E84(sMailRead->mail->species); + switch (sMailRead->animsActive) { case 1: sub_80D2F68(icon); - gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0); + sMailRead->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0); break; case 2: sub_80D2F68(icon); - gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0); + sMailRead->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0); break; } break; @@ -440,53 +443,53 @@ bool8 sub_81215EC(void) ShowBg(2); BeginNormalPaletteFade(-1, 0, 16, 0, 0); gPaletteFade.bufferTransferDisabled = FALSE; - gUnknown_0203A134->callback2 = sub_8121C98; + sMailRead->callback2 = CB2_WaitForPaletteExitOnKeyPress; return TRUE; default: return FALSE; } - gMain.state ++; + gMain.state++; return FALSE; } -void sub_81219F0(void) +static void CB2_InitMailRead(void) { do { - if (sub_81215EC() == TRUE) + if (MailReadBuildGraphics() == TRUE) { - SetMainCallback2(sub_8121C64); + SetMainCallback2(CB2_MailRead); break; } } while (sub_81221AC() != TRUE); } -void sub_8121A1C(void) +static void sub_8121A1C(void) { u16 i; u8 total; u8 *ptr; total = 0; - for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++) + for (i = 0; i < sMailRead->layout->numSubStructs; i ++) { - ConvertEasyChatWordsToString(gUnknown_0203A134->strbuf[i], &gUnknown_0203A134->mail->words[total], gUnknown_0203A134->layout->var8[i].numEasyChatWords, 1); - total += gUnknown_0203A134->layout->var8[i].numEasyChatWords; + ConvertEasyChatWordsToString(sMailRead->strbuf[i], &sMailRead->mail->words[total], sMailRead->layout->var8[i].numEasyChatWords, 1); + total += sMailRead->layout->var8[i].numEasyChatWords; } - ptr = StringCopy(gUnknown_0203A134->playerName, gUnknown_0203A134->mail->playerName); - if (!gUnknown_0203A134->playerIsSender) + ptr = StringCopy(sMailRead->playerName, sMailRead->mail->playerName); + if (!sMailRead->playerIsSender) { StringCopy(ptr, gText_FromSpace); - gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60); + sMailRead->signatureWidth = sMailRead->layout->signatureWidth - (StringLength(sMailRead->playerName) * 8 - 0x60); } else { - sub_81DB52C(gUnknown_0203A134->playerName); - gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth; + sub_81DB52C(sMailRead->playerName); + sMailRead->signatureWidth = sMailRead->layout->signatureWidth; } } -void sub_8121B1C(void) +static void sub_8121B1C(void) { u16 i; u8 strbuf[0x20]; @@ -500,77 +503,76 @@ void sub_8121B1C(void) PutWindowTilemap(1); FillWindowPixelBuffer(0, 0); FillWindowPixelBuffer(1, 0); - for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++) + for (i = 0; i < sMailRead->layout->numSubStructs; i ++) { - if (gUnknown_0203A134->strbuf[i][0] == EOS || gUnknown_0203A134->strbuf[i][0] == CHAR_SPACE) + if (sMailRead->strbuf[i][0] == EOS || sMailRead->strbuf[i][0] == CHAR_SPACE) { continue; } - box_print(0, 1, gUnknown_0203A134->layout->var8[i].xOffset + gUnknown_0203A134->layout->wordsYPos, y + gUnknown_0203A134->layout->wordsXPos, gUnknown_0859F2AC, 0, gUnknown_0203A134->strbuf[i]); - y += gUnknown_0203A134->layout->var8[i].lineHeight; + box_print(0, 1, sMailRead->layout->var8[i].xOffset + sMailRead->layout->wordsYPos, y + sMailRead->layout->wordsXPos, sUnknown_0859F2AC, 0, sMailRead->strbuf[i]); + y += sMailRead->layout->var8[i].lineHeight; } bufptr = StringCopy(strbuf, gText_FromSpace); - StringCopy(bufptr, gUnknown_0203A134->playerName); - box_x = GetStringCenterAlignXOffset(1, strbuf, gUnknown_0203A134->signatureWidth) + 0x68; - box_y = gUnknown_0203A134->layout->signatureYPos + 0x58; - box_print(0, 1, box_x, box_y, gUnknown_0859F2AC, 0, strbuf); + StringCopy(bufptr, sMailRead->playerName); + box_x = GetStringCenterAlignXOffset(1, strbuf, sMailRead->signatureWidth) + 0x68; + box_y = sMailRead->layout->signatureYPos + 0x58; + box_print(0, 1, box_x, box_y, sUnknown_0859F2AC, 0, strbuf); CopyWindowToVram(0, 3); CopyWindowToVram(1, 3); } -void sub_8121C50(void) +static void VBlankCB_MailRead(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_8121C64(void) +static void CB2_MailRead(void) { - if (gUnknown_0203A134->animsActive != 0) + if (sMailRead->animsActive != 0) { AnimateSprites(); BuildOamBuffer(); } - gUnknown_0203A134->callback2(); + sMailRead->callback2(); } -void sub_8121C98(void) +static void CB2_WaitForPaletteExitOnKeyPress(void) { if (!UpdatePaletteFade()) { - gUnknown_0203A134->callback2 = sub_8121CC0; + sMailRead->callback2 = CB2_ExitOnKeyPress; } } -void sub_8121CC0(void) +static void CB2_ExitOnKeyPress(void) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); - gUnknown_0203A134->callback2 = sub_8121D00; + sMailRead->callback2 = CB2_ExitMailReadFreeVars; } } -void sub_8121D00(void) +static void CB2_ExitMailReadFreeVars(void) { if (!UpdatePaletteFade()) { - SetMainCallback2(gUnknown_0203A134->callback); - switch (gUnknown_0203A134->animsActive) + SetMainCallback2(sMailRead->callback); + switch (sMailRead->animsActive) { case 1: case 2: - sub_80D2FF0(sub_80D2E84(gUnknown_0203A134->mail->species)); - sub_80D2EF8(&gSprites[gUnknown_0203A134->monIconSprite]); + sub_80D2FF0(sub_80D2E84(sMailRead->mail->species)); + sub_80D2EF8(&gSprites[sMailRead->monIconSprite]); } - memset(gUnknown_0203A134, 0, sizeof(*gUnknown_0203A134)); + memset(sMailRead, 0, sizeof(*sMailRead)); ResetPaletteFade(); UnsetBgTilemapBuffer(0); UnsetBgTilemapBuffer(1); ResetBgsAndClearDma3BusyFlags(0); FreeAllWindowBuffers(); - free(gUnknown_0203A134); - gUnknown_0203A134 = NULL; + FREE_AND_SET_NULL(sMailRead); } } diff --git a/src/mail_data.c b/src/mail_data.c new file mode 100644 index 000000000..ebb49febf --- /dev/null +++ b/src/mail_data.c @@ -0,0 +1,203 @@ +#include "global.h" +#include "mail.h" +#include "constants/items.h" +#include "pokemon.h" +#include "pokemon_icon.h" +#include "constants/species.h" +#include "text.h" +#include "international_string_util.h" + +void ClearMailData(void) +{ + u8 i; + + for (i = 0; i < MAIL_COUNT; i++) + ClearMailStruct(&gSaveBlock1Ptr->mail[i]); +} + +void ClearMailStruct(struct MailStruct *mail) +{ + s32 i; + + for (i = 0; i < MAIL_WORDS_COUNT; i++) + mail->words[i] = 0xFFFF; + + for (i = 0; i < PLAYER_NAME_LENGTH; i++) + mail->playerName[i] = EOS; + + for (i = 0; i < 4; i++) + mail->trainerId[i] = 0; + + mail->species = SPECIES_BULBASAUR; + mail->itemId = ITEM_NONE; +} + +bool8 MonHasMail(struct Pokemon *mon) +{ + u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM); + if (ItemIsMail(heldItem) && GetMonData(mon, MON_DATA_MAIL) != 0xFF) + return TRUE; + else + return FALSE; +} + +u8 GiveMailToMon(struct Pokemon *mon, u16 itemId) +{ + u8 heldItem[2]; + u8 id, i; + u16 species; + u32 personality; + + heldItem[0] = itemId; + heldItem[1] = itemId >> 8; + + for (id = 0; id < PARTY_SIZE; id++) + { + if (gSaveBlock1Ptr->mail[id].itemId == 0) + { + for (i = 0; i < MAIL_WORDS_COUNT; i++) + gSaveBlock1Ptr->mail[id].words[i] = 0xFFFF; + + for (i = 0; i < PLAYER_NAME_LENGTH - 1; i++) + gSaveBlock1Ptr->mail[id].playerName[i] = gSaveBlock2Ptr->playerName[i]; + gSaveBlock1Ptr->mail[id].playerName[i] = EOS; + PadNameString(gSaveBlock1Ptr->mail[id].playerName, CHAR_SPACE); + + for (i = 0; i < 4; i++) + gSaveBlock1Ptr->mail[id].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i]; + + species = GetBoxMonData(&mon->box, MON_DATA_SPECIES); + personality = GetBoxMonData(&mon->box, MON_DATA_PERSONALITY); + gSaveBlock1Ptr->mail[id].species = SpeciesToMailSpecies(species, personality); + gSaveBlock1Ptr->mail[id].itemId = itemId; + SetMonData(mon, MON_DATA_MAIL, &id); + SetMonData(mon, MON_DATA_HELD_ITEM, heldItem); + return id; + } + } + + return 0xFF; +} + +u16 SpeciesToMailSpecies(u16 species, u32 personality) +{ + if (species == SPECIES_UNOWN) + { + u32 species = GetUnownLetterByPersonality(personality) + 30000; + return species; + } + + return species; +} + +u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer) +{ + u16 result; + + if (mailSpecies >= 30000 && mailSpecies < (30000 + UNOWN_FORM_COUNT)) + { + result = SPECIES_UNOWN; + *buffer = mailSpecies - 30000; + } + else + { + result = mailSpecies; + } + + return result; +} + +u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail) +{ + u8 heldItem[2]; + u16 itemId = mail->itemId; + u8 mailId = GiveMailToMon(mon, itemId); + + if (mailId == 0xFF) + return 0xFF; + + gSaveBlock1Ptr->mail[mailId] = *mail; + + SetMonData(mon, MON_DATA_MAIL, &mailId); + + heldItem[0] = itemId; + heldItem[1] = itemId >> 8; + + SetMonData(mon, MON_DATA_HELD_ITEM, heldItem); + + return mailId; +} + +static bool32 DummyMailFunc(void) +{ + return FALSE; +} + +void TakeMailFromMon(struct Pokemon *mon) +{ + u8 heldItem[2]; + u8 mailId; + + if (MonHasMail(mon)) + { + mailId = GetMonData(mon, MON_DATA_MAIL); + gSaveBlock1Ptr->mail[mailId].itemId = ITEM_NONE; + mailId = 0xFF; + heldItem[0] = ITEM_NONE; + heldItem[1] = ITEM_NONE << 8; + SetMonData(mon, MON_DATA_MAIL, &mailId); + SetMonData(mon, MON_DATA_HELD_ITEM, heldItem); + } +} + +void ClearMailItemId(u8 mailId) +{ + gSaveBlock1Ptr->mail[mailId].itemId = ITEM_NONE; +} + +u8 TakeMailFromMon2(struct Pokemon *mon) +{ + u8 i; + u8 newHeldItem[2]; + u8 newMailId; + + newHeldItem[0] = ITEM_NONE; + newHeldItem[1] = ITEM_NONE << 8; + newMailId = 0xFF; + + for (i = PARTY_SIZE; i < MAIL_COUNT; i++) + { + if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE) + { + memcpy(&gSaveBlock1Ptr->mail[i], &gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct MailStruct)); + gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)].itemId = ITEM_NONE; + SetMonData(mon, MON_DATA_MAIL, &newMailId); + SetMonData(mon, MON_DATA_HELD_ITEM, newHeldItem); + return i; + } + } + + return 0xFF; +} + +bool8 ItemIsMail(u16 itemId) +{ + switch (itemId) + { + case ITEM_ORANGE_MAIL: + case ITEM_HARBOR_MAIL: + case ITEM_GLITTER_MAIL: + case ITEM_MECH_MAIL: + case ITEM_WOOD_MAIL: + case ITEM_WAVE_MAIL: + case ITEM_BEAD_MAIL: + case ITEM_SHADOW_MAIL: + case ITEM_TROPIC_MAIL: + case ITEM_DREAM_MAIL: + case ITEM_FAB_MAIL: + case ITEM_RETRO_MAIL: + return TRUE; + default: + return FALSE; + } +} diff --git a/src/pokemon_2.c b/src/pokemon_2.c index a4d00112b..db176e025 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1155,7 +1155,7 @@ u8 GetMonsStateToDoubles_2(void) s32 aliveCount = 0; s32 i; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL); if (species != SPECIES_EGG && species != SPECIES_NONE diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 8fb642f5f..e3b340698 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -11,8 +11,7 @@ #include "link.h" #include "constants/hold_effects.h" #include "random.h" -#include "trainer_classes.h" -#include "trainer_ids.h" +#include "constants/trainers.h" #include "constants/songs.h" #include "sound.h" #include "m4a.h" @@ -692,9 +691,9 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) if ((event != 5 || !(Random() & 1)) && (event != 3 || ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_ELITE_FOUR - || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER - || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION)))) + && (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR + || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_LEADER + || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION)))) { s8 mod = gUnknown_08329ECE[event][friendshipLevel]; if (mod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) @@ -1146,55 +1145,57 @@ void ClearBattleMonForms(void) u16 GetBattleBGM(void) { if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) - return 0x1E0; + return BGM_BATTLE34; if (gBattleTypeFlags & BATTLE_TYPE_REGI) - return 0x1DF; + return BGM_BATTLE36; if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) - return 0x1DC; + return BGM_BATTLE20; if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { u8 trainerClass; + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) trainerClass = GetFrontierOpponentClass(gTrainerBattleOpponent_A); else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) - trainerClass = CLASS_EXPERT; + trainerClass = TRAINER_CLASS_EXPERT; else trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; + switch (trainerClass) { - case CLASS_AQUA_LEADER: - case CLASS_MAGMA_LEADER: - return 0x1E3; - case CLASS_TEAM_AQUA: - case CLASS_TEAM_MAGMA: - case CLASS_AQUA_ADMIN: - case CLASS_MAGMA_ADMIN: - return 0x1DB; - case CLASS_LEADER: - return 0x1DD; - case CLASS_CHAMPION: - return 0x1DE; - case CLASS_PKMN_TRAINER_RIVAL: + case TRAINER_CLASS_AQUA_LEADER: + case TRAINER_CLASS_MAGMA_LEADER: + return BGM_BATTLE30; + case TRAINER_CLASS_TEAM_AQUA: + case TRAINER_CLASS_TEAM_MAGMA: + case TRAINER_CLASS_AQUA_ADMIN: + case TRAINER_CLASS_MAGMA_ADMIN: + return BGM_BATTLE31; + case TRAINER_CLASS_LEADER: + return BGM_BATTLE32; + case TRAINER_CLASS_CHAMPION: + return BGM_BATTLE33; + case TRAINER_CLASS_PKMN_TRAINER_3: if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) - return 0x1E1; + return BGM_BATTLE35; if (!StringCompare(gTrainers[gTrainerBattleOpponent_A].trainerName, gText_BattleWallyName)) - return 0x1DC; - return 0x1E1; - case CLASS_ELITE_FOUR: - return 0x1E2; - case CLASS_SALON_MAIDEN: - case CLASS_DOME_ACE: - case CLASS_PALACE_MAVEN: - case CLASS_ARENA_TYCOON: - case CLASS_FACTORY_HEAD: - case CLASS_PIKE_QUEEN: - case CLASS_PYRAMID_KING: - return 0x1D7; + return BGM_BATTLE20; + return BGM_BATTLE35; + case TRAINER_CLASS_ELITE_FOUR: + return BGM_BATTLE38; + case TRAINER_CLASS_SALON_MAIDEN: + case TRAINER_CLASS_DOME_ACE: + case TRAINER_CLASS_PALACE_MAVEN: + case TRAINER_CLASS_ARENA_TYCOON: + case TRAINER_CLASS_FACTORY_HEAD: + case TRAINER_CLASS_PIKE_QUEEN: + case TRAINER_CLASS_PYRAMID_KING: + return BGM_BATTLE_FRONTIER_BRAIN; default: - return 0x1DC; + return BGM_BATTLE20; } } - return 0x1DA; + return BGM_BATTLE27; } void PlayBattleBGM(void) @@ -1396,7 +1397,7 @@ static s32 GetWildMonTableIdInAlteringCave(u16 species) void SetWildMonHeldItem(void) { - if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_x100000))) + if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE))) { u16 rnd = Random() % 100; u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0); @@ -1462,12 +1463,14 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality) return retVal; } -const u8* GetTrainerPartnerName(void) +const u8 *GetTrainerPartnerName(void) { if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { if (gPartnerTrainerId == STEVEN_PARTNER_ID) - return gTrainers[TRAINER_ID_STEVEN].trainerName; + { + return gTrainers[TRAINER_STEVEN].trainerName; + } else { GetFrontierTrainerName(gStringVar1, gPartnerTrainerId); @@ -1682,14 +1685,14 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality) } } -const u8* GetTrainerClassNameFromId(u16 trainerId) +const u8 *GetTrainerClassNameFromId(u16 trainerId) { if (trainerId > NO_OF_TRAINERS) trainerId = 0; return gTrainerClassNames[gTrainers[trainerId].trainerClass]; } -const u8* GetTrainerNameFromId(u16 trainerId) +const u8 *GetTrainerNameFromId(u16 trainerId) { if (trainerId > NO_OF_TRAINERS) trainerId = 0; diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 4f3fe4ab9..c88229c61 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -19,7 +19,7 @@ | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \ | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \ | BATTLE_TYPE_RECORDED | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE \ - | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYORGE | BATTLE_TYPE_RAYQUAZA)) + | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA)) extern u32 gBattleTypeFlags; extern u16 gTrainerBattleOpponent_A; diff --git a/src/safari_zone.c b/src/safari_zone.c index 8bd1fffa7..ce1eb65bc 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -105,7 +105,7 @@ void SafariZoneRetirePrompt(void) ScriptContext1_SetupScript(EventScript_2A4B6F); } -void sub_80FC190(void) +void CB2_EndSafariBattle(void) { sSafariZoneFleedMons += gBattleResults.field_1F; if (gBattleOutcome == BATTLE_CAUGHT) diff --git a/src/scrcmd.c b/src/scrcmd.c index 504d001ea..1b10501fc 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -656,7 +656,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) { u8 mode = ScriptReadByte(ctx); - + switch (mode) { case 1: @@ -1445,7 +1445,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) u8 top = ScriptReadByte(ctx); u8 multichoiceId = ScriptReadByte(ctx); u8 ignoreBPress = ScriptReadByte(ctx); - + /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { ScriptContext1_Stop(); @@ -1501,31 +1501,31 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) u8 y; StringExpandPlaceholders(gStringVar4, ptr + 6); - + width = GetStringWidth(6, gStringVar4, -1) / 8; - + if (width > 0x1C) width = 0x1C; - + for (i = 0, height = 4; gStringVar4[i] != 0xFF;) { if (gStringVar4[i++] == 0xFE) height += 3; } - + if (height > 0x12) height = 0x12; - + x = width + 2; temp1 = (0x1E - x) / 2; x = temp1 + 1; temp1 = ((x - temp1 - 1) * 8 + 3); - + y = height + 2; temp2 = (0x14 - y) / 2; y = temp2 + 2; temp2 = ((y - temp2 - 1) * 8); - + sub_8198A50(&template1, 0, x, y, width, height, 0xF, 0x1); template2 = template1; gUnknown_03000F30 = AddWindow(&template2); @@ -1924,7 +1924,7 @@ bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) { /*u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx);*/ - + HideMoneyBox(); return FALSE; } @@ -1979,13 +1979,13 @@ bool8 ScrCmd_dotrainerbattle(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx) +bool8 ScrCmd_gotopostbattlescript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); return FALSE; } -bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx) +bool8 ScrCmd_gotobeatenscript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); return FALSE; @@ -1995,7 +1995,7 @@ bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); - ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); + ctx->comparisonResult = HasTrainerBeenFought(index); return FALSE; } @@ -2003,7 +2003,7 @@ bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); - trainer_flag_set(index); + SetTrainerFlag(index); return FALSE; } @@ -2011,7 +2011,7 @@ bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); - trainer_flag_clear(index); + ClearTrainerFlag(index); return FALSE; } @@ -2374,7 +2374,7 @@ bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx) bool8 ScrCmd_cmdCF(struct ScriptContext *ctx) { const u8* v1 = sub_8099244(); - + if (v1) { ((u8*)gUnknown_020375C0) = ctx->scriptPtr; diff --git a/src/secret_base.c b/src/secret_base.c index 6926bd804..bf6bec1f8 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1283,7 +1283,7 @@ u8 sub_80EA20C(u8 secretBaseRecordId) return (gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[secretBaseRecordId].gender * 5); } -const u8 *sub_80EA250(void) +const u8 *GetSecretBaseTrainerLoseText(void) { u8 param; diff --git a/src/starter_choose.c b/src/starter_choose.c index 82f8f75f6..2d78af8fb 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -265,7 +265,7 @@ static void Task_StarterChoose5(u8 taskId) { u8 spriteId; - switch (sub_8198C58()) + switch (ProcessMenuInputNoWrap_()) { case 0: // YES // Return the starter choice and exit. diff --git a/src/trainer_see.c b/src/trainer_see.c new file mode 100644 index 000000000..b30f27347 --- /dev/null +++ b/src/trainer_see.c @@ -0,0 +1,68 @@ +#include "global.h" +#include "trainer_see.h" +#include "battle_setup.h" + +extern u8 gApproachingTrainerId; +extern u8 gNoOfApproachingTrainers; +extern u8 gUnknown_030060AC; +extern u16 gUnknown_03006080; + +// this file's functions +u8 CheckIfTrainerWantsBattle(u8 mapObjectId); + +bool8 CheckForTrainersWantingBattle(void) +{ + u8 i; + + gNoOfApproachingTrainers = 0; + gApproachingTrainerId = 0; + + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + u8 retVal; + + if (!gMapObjects[i].active) + continue; + if (gMapObjects[i].trainerType != 1 && gMapObjects[i].trainerType != 3) + continue; + + retVal = CheckIfTrainerWantsBattle(i); + if (retVal == 2) + break; // two trainers have been found + + if (retVal == 0) // no trainers + continue; + + if (gNoOfApproachingTrainers > 1) + break; + if (GetMonsStateToDoubles_2() != 0) // one trainer found and cant have a double battle + break; + } + + if (gNoOfApproachingTrainers == 1) + { + ResetTrainerOpponentIds(); + ConfigureAndSetUpOneTrainerBattle(gApproachingTrainers[gNoOfApproachingTrainers - 1].mapObjectId, + gApproachingTrainers[gNoOfApproachingTrainers - 1].trainerScriptPtr); + gUnknown_030060AC = 1; + return TRUE; + } + else if (gNoOfApproachingTrainers == 2) + { + ResetTrainerOpponentIds(); + for (i = 0; i < gNoOfApproachingTrainers; i++, gApproachingTrainerId++) + { + ConfigureTwoTrainersBattle(gApproachingTrainers[i].mapObjectId, + gApproachingTrainers[i].trainerScriptPtr); + } + SetUpTwoTrainersBattle(); + gApproachingTrainerId = 0; + gUnknown_030060AC = 1; + return TRUE; + } + else + { + gUnknown_030060AC = 0; + return FALSE; + } +} @@ -1793,7 +1793,7 @@ void EndMassOutbreak(void) gSaveBlock1Ptr->outbreakDaysLeft = 0; } -void sub_80ED888(u16 days) +void UpdateTVShowsPerDay(u16 days) { sub_80ED8B4(days); diff --git a/src/wallclock.c b/src/wallclock.c new file mode 100644 index 000000000..892ef3f05 --- /dev/null +++ b/src/wallclock.c @@ -0,0 +1,1057 @@ +#include "global.h" +#include "main.h" +#include "palette.h" +#include "gpu_regs.h" +#include "bg.h" +#include "rtc.h" +#include "clock.h" +#include "wallclock.h" +#include "event_data.h" +#include "graphics.h" +#include "text.h" +#include "window.h" +#include "text_window.h" +#include "menu.h" +#include "unknown_task.h" +#include "task.h" +#include "strings.h" +#include "sound.h" +#include "songs.h" +#include "trig.h" +#include "decompress.h" + +// static types + +#define tMinuteHandAngle data[0] +#define tHourHandAngle data[1] +#define tHours data[2] +#define tMinutes data[3] +#define tMvmtDir data[4] +#define tPeriod data[5] +#define tMvmtSpeed data[6] + +#define TAG_GFX_WALL_CLOCK_HAND 0x1000 +#define TAG_PAL_WALL_CLOCK_HAND 0x1000 + +// static declarations + +static void WallClockMainCallback(void); +static void Task_SetClock1(u8 taskId); +static void Task_SetClock2(u8 taskId); +static void Task_SetClock3(u8 taskId); +static void Task_SetClock4(u8 taskId); +static void Task_SetClock5(u8 taskId); +static void Task_SetClock6(u8 taskId); +static void Task_ViewClock1(u8 taskId); +static void Task_ViewClock2(u8 taskId); +static void Task_ViewClock3(u8 taskId); +static void Task_ViewClock4(u8 taskId); +static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2); +static bool32 AdvanceClock(u8 taskId, u8 command); +static void UpdateClockPeriod(u8 taskId, u8 command); +static void InitClockWithRtc(u8 taskId); +static void SpriteCB_MinuteHand(struct Sprite *sprite); +static void SpriteCB_HourHand(struct Sprite *sprite); +static void SpriteCB_AMIndicator(struct Sprite *sprite); +static void SpriteCB_PMIndicator(struct Sprite *sprite); + +// rodata + +static const u8 gUnknown_085B1F58[] = INCBIN_U8("graphics/wallclock/graphics_85b1f58.4bpp.lz"); +static const u16 gUnknown_085B21D4[] = INCBIN_U16("graphics/wallclock/palette_85b21d4.gbapal"); +static const struct WindowTemplate gUnknown_085B21DC[] = { + { 0x00, 0x03, 0x11, 0x18, 0x02, 0x0e, 0x200 }, + { 0x02, 0x18, 0x10, 0x06, 0x02, 0x0c, 0x230 }, + DUMMY_WIN_TEMPLATE +}; +static const struct WindowTemplate gUnknown_085B21F4 = { + 0x00, 0x18, 0x09, 0x05, 0x04, 0x0e, 0x23c +}; +static const struct BgTemplate gUnknown_085B21FC[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .priority = 0 + }, + { + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 8, + .priority = 1 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 7, + .priority = 2 + } +}; +static const struct CompressedSpriteSheet gUnknown_085B2208 = { + gUnknown_085B1F58, 0x2000, TAG_GFX_WALL_CLOCK_HAND +}; +static const u32 filler_85B2210[2] = {}; +static const struct SpritePalette gUnknown_085B2218[] = { + { gUnknown_08DCC01C, TAG_PAL_WALL_CLOCK_HAND }, + { gUnknown_08DCC03C, 0x1001 }, + {} +}; +static const struct OamData Unknown_085B2230 = { + .y = 0xa0, + .size = 3, + .priority = 1 +}; +static const union AnimCmd Unknown_085B2238[] = { + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; +static const union AnimCmd Unknown_085B2240[] = { + ANIMCMD_FRAME(64, 30), + ANIMCMD_END +}; +static const union AnimCmd *const gUnknown_085B2248[] = { + Unknown_085B2238 +}; +static const union AnimCmd *const gUnknown_085B224C[] = { + Unknown_085B2240 +}; +static const struct SpriteTemplate gUnknown_085B2250 = { + TAG_GFX_WALL_CLOCK_HAND, + TAG_PAL_WALL_CLOCK_HAND, + &Unknown_085B2230, + gUnknown_085B2248, + NULL, + gDummySpriteAffineAnimTable, + SpriteCB_MinuteHand +}; +static const struct SpriteTemplate gUnknown_085B2268 = { + TAG_GFX_WALL_CLOCK_HAND, + TAG_PAL_WALL_CLOCK_HAND, + &Unknown_085B2230, + gUnknown_085B224C, + NULL, + gDummySpriteAffineAnimTable, + SpriteCB_HourHand +}; +static const struct OamData Unknown_085B2280 = { + .y = 0xa0, + .size = 1, + .priority = 3 +}; +static const union AnimCmd Unknown_085B2288[] = { + ANIMCMD_FRAME(0x84, 30), + ANIMCMD_END +}; +static const union AnimCmd Unknown_085B2290[] = { + ANIMCMD_FRAME(0x80, 30), + ANIMCMD_END +}; +static const union AnimCmd *const gUnknown_085B2298[] = { + Unknown_085B2288 +}; +static const union AnimCmd *const gUnknown_085B229C[] = { + Unknown_085B2290 +}; +static const struct SpriteTemplate gUnknown_085B22A0 = { + TAG_GFX_WALL_CLOCK_HAND, + TAG_PAL_WALL_CLOCK_HAND, + &Unknown_085B2280, + gUnknown_085B2298, + NULL, + gDummySpriteAffineAnimTable, + SpriteCB_AMIndicator +}; +static const struct SpriteTemplate gUnknown_085B22B8 = { + TAG_GFX_WALL_CLOCK_HAND, + TAG_PAL_WALL_CLOCK_HAND, + &Unknown_085B2280, + gUnknown_085B229C, + NULL, + gDummySpriteAffineAnimTable, + SpriteCB_PMIndicator +}; +static const s8 sClockHandCoords[][2] = { + { 0x00, -0x18}, + { 0x01, -0x19}, + { 0x01, -0x19}, + { 0x02, -0x19}, + { 0x02, -0x19}, + { 0x02, -0x19}, + { 0x03, -0x18}, + { 0x03, -0x19}, + { 0x04, -0x19}, + { 0x04, -0x19}, + { 0x04, -0x19}, + { 0x05, -0x19}, + { 0x05, -0x19}, + { 0x06, -0x18}, + { 0x06, -0x18}, + { 0x06, -0x18}, + { 0x07, -0x18}, + { 0x07, -0x18}, + { 0x07, -0x18}, + { 0x08, -0x18}, + { 0x08, -0x18}, + { 0x09, -0x18}, + { 0x09, -0x18}, + { 0x0a, -0x17}, + { 0x0a, -0x17}, + { 0x0b, -0x16}, + { 0x0b, -0x16}, + { 0x0b, -0x16}, + { 0x0c, -0x16}, + { 0x0c, -0x15}, + { 0x0d, -0x15}, + { 0x0d, -0x15}, + { 0x0d, -0x15}, + { 0x0e, -0x15}, + { 0x0e, -0x15}, + { 0x0e, -0x14}, + { 0x0e, -0x14}, + { 0x0f, -0x14}, + { 0x0f, -0x13}, + { 0x10, -0x13}, + { 0x10, -0x13}, + { 0x10, -0x13}, + { 0x10, -0x12}, + { 0x10, -0x12}, + { 0x11, -0x12}, + { 0x11, -0x11}, + { 0x11, -0x11}, + { 0x12, -0x11}, + { 0x12, -0x11}, + { 0x12, -0x10}, + { 0x12, -0x10}, + { 0x13, -0x10}, + { 0x13, -0x0f}, + { 0x13, -0x0f}, + { 0x14, -0x0f}, + { 0x14, -0x0e}, + { 0x14, -0x0e}, + { 0x14, -0x0d}, + { 0x14, -0x0d}, + { 0x15, -0x0d}, + { 0x15, -0x0d}, + { 0x15, -0x0c}, + { 0x16, -0x0c}, + { 0x16, -0x0c}, + { 0x16, -0x0b}, + { 0x16, -0x0b}, + { 0x16, -0x0a}, + { 0x17, -0x0a}, + { 0x17, -0x09}, + { 0x17, -0x09}, + { 0x17, -0x09}, + { 0x17, -0x09}, + { 0x17, -0x08}, + { 0x17, -0x08}, + { 0x17, -0x07}, + { 0x17, -0x07}, + { 0x17, -0x06}, + { 0x18, -0x06}, + { 0x18, -0x06}, + { 0x19, -0x05}, + { 0x19, -0x05}, + { 0x18, -0x04}, + { 0x19, -0x04}, + { 0x18, -0x03}, + { 0x19, -0x03}, + { 0x19, -0x03}, + { 0x19, -0x02}, + { 0x19, -0x02}, + { 0x18, -0x01}, + { 0x19, -0x01}, + { 0x18, 0x00}, + { 0x18, 0x00}, + { 0x18, 0x00}, + { 0x18, 0x01}, + { 0x18, 0x01}, + { 0x19, 0x02}, + { 0x18, 0x02}, + { 0x19, 0x02}, + { 0x18, 0x03}, + { 0x18, 0x03}, + { 0x19, 0x04}, + { 0x18, 0x04}, + { 0x18, 0x05}, + { 0x18, 0x05}, + { 0x18, 0x05}, + { 0x18, 0x06}, + { 0x17, 0x06}, + { 0x17, 0x06}, + { 0x17, 0x07}, + { 0x17, 0x08}, + { 0x17, 0x08}, + { 0x17, 0x08}, + { 0x17, 0x09}, + { 0x17, 0x09}, + { 0x17, 0x0a}, + { 0x16, 0x0a}, + { 0x16, 0x0a}, + { 0x16, 0x0b}, + { 0x16, 0x0b}, + { 0x16, 0x0b}, + { 0x16, 0x0c}, + { 0x15, 0x0c}, + { 0x15, 0x0c}, + { 0x15, 0x0d}, + { 0x14, 0x0d}, + { 0x14, 0x0d}, + { 0x13, 0x0d}, + { 0x13, 0x0d}, + { 0x13, 0x0e}, + { 0x13, 0x0e}, + { 0x13, 0x0f}, + { 0x13, 0x0f}, + { 0x12, 0x0f}, + { 0x12, 0x10}, + { 0x11, 0x10}, + { 0x11, 0x10}, + { 0x11, 0x11}, + { 0x11, 0x11}, + { 0x10, 0x11}, + { 0x10, 0x12}, + { 0x10, 0x12}, + { 0x0f, 0x12}, + { 0x0e, 0x12}, + { 0x0f, 0x13}, + { 0x0e, 0x13}, + { 0x0e, 0x13}, + { 0x0d, 0x13}, + { 0x0d, 0x14}, + { 0x0d, 0x14}, + { 0x0d, 0x14}, + { 0x0c, 0x14}, + { 0x0c, 0x14}, + { 0x0c, 0x15}, + { 0x0b, 0x15}, + { 0x0b, 0x15}, + { 0x0b, 0x15}, + { 0x0a, 0x15}, + { 0x0a, 0x16}, + { 0x0a, 0x16}, + { 0x09, 0x16}, + { 0x09, 0x16}, + { 0x08, 0x16}, + { 0x07, 0x16}, + { 0x07, 0x17}, + { 0x07, 0x17}, + { 0x06, 0x17}, + { 0x06, 0x17}, + { 0x05, 0x17}, + { 0x05, 0x17}, + { 0x05, 0x18}, + { 0x04, 0x18}, + { 0x04, 0x18}, + { 0x04, 0x18}, + { 0x03, 0x18}, + { 0x02, 0x18}, + { 0x02, 0x18}, + { 0x01, 0x18}, + { 0x01, 0x18}, + { 0x00, 0x18}, + { 0x00, 0x18}, + {-0x01, 0x17}, + { 0x00, 0x18}, + { 0x00, 0x18}, + {-0x01, 0x18}, + {-0x01, 0x18}, + {-0x02, 0x18}, + {-0x02, 0x18}, + {-0x03, 0x18}, + {-0x03, 0x18}, + {-0x04, 0x18}, + {-0x04, 0x18}, + {-0x05, 0x18}, + {-0x05, 0x17}, + {-0x05, 0x17}, + {-0x06, 0x17}, + {-0x06, 0x17}, + {-0x07, 0x17}, + {-0x07, 0x17}, + {-0x07, 0x17}, + {-0x08, 0x17}, + {-0x08, 0x16}, + {-0x09, 0x16}, + {-0x09, 0x16}, + {-0x0a, 0x16}, + {-0x0a, 0x16}, + {-0x0a, 0x15}, + {-0x0b, 0x15}, + {-0x0b, 0x15}, + {-0x0b, 0x15}, + {-0x0b, 0x14}, + {-0x0c, 0x14}, + {-0x0c, 0x14}, + {-0x0d, 0x14}, + {-0x0d, 0x14}, + {-0x0d, 0x13}, + {-0x0e, 0x13}, + {-0x0e, 0x13}, + {-0x0e, 0x13}, + {-0x0e, 0x12}, + {-0x0f, 0x12}, + {-0x0f, 0x12}, + {-0x0f, 0x11}, + {-0x10, 0x11}, + {-0x10, 0x11}, + {-0x11, 0x11}, + {-0x11, 0x10}, + {-0x11, 0x10}, + {-0x12, 0x10}, + {-0x11, 0x0f}, + {-0x12, 0x0f}, + {-0x12, 0x0f}, + {-0x13, 0x0f}, + {-0x13, 0x0e}, + {-0x13, 0x0e}, + {-0x13, 0x0d}, + {-0x13, 0x0d}, + {-0x14, 0x0d}, + {-0x14, 0x0c}, + {-0x14, 0x0c}, + {-0x15, 0x0c}, + {-0x15, 0x0c}, + {-0x15, 0x0b}, + {-0x15, 0x0b}, + {-0x15, 0x0a}, + {-0x15, 0x0a}, + {-0x15, 0x09}, + {-0x16, 0x09}, + {-0x16, 0x09}, + {-0x16, 0x08}, + {-0x16, 0x08}, + {-0x16, 0x07}, + {-0x17, 0x07}, + {-0x17, 0x07}, + {-0x17, 0x06}, + {-0x17, 0x06}, + {-0x17, 0x05}, + {-0x18, 0x05}, + {-0x17, 0x04}, + {-0x17, 0x04}, + {-0x18, 0x04}, + {-0x18, 0x04}, + {-0x18, 0x03}, + {-0x18, 0x03}, + {-0x18, 0x02}, + {-0x18, 0x02}, + {-0x18, 0x01}, + {-0x18, 0x01}, + {-0x18, 0x01}, + {-0x18, 0x00}, + {-0x19, 0x00}, + {-0x18, -0x01}, + {-0x19, -0x01}, + {-0x18, -0x01}, + {-0x18, -0x02}, + {-0x18, -0x02}, + {-0x18, -0x03}, + {-0x18, -0x03}, + {-0x18, -0x04}, + {-0x18, -0x04}, + {-0x18, -0x04}, + {-0x18, -0x05}, + {-0x18, -0x05}, + {-0x18, -0x06}, + {-0x18, -0x06}, + {-0x17, -0x06}, + {-0x17, -0x07}, + {-0x17, -0x07}, + {-0x17, -0x08}, + {-0x17, -0x08}, + {-0x17, -0x09}, + {-0x17, -0x09}, + {-0x16, -0x09}, + {-0x16, -0x09}, + {-0x16, -0x0a}, + {-0x16, -0x0a}, + {-0x15, -0x0a}, + {-0x15, -0x0b}, + {-0x16, -0x0b}, + {-0x16, -0x0c}, + {-0x15, -0x0c}, + {-0x15, -0x0d}, + {-0x15, -0x0d}, + {-0x14, -0x0d}, + {-0x15, -0x0e}, + {-0x14, -0x0e}, + {-0x14, -0x0e}, + {-0x13, -0x0e}, + {-0x13, -0x0f}, + {-0x13, -0x0f}, + {-0x12, -0x10}, + {-0x12, -0x10}, + {-0x12, -0x10}, + {-0x12, -0x11}, + {-0x12, -0x11}, + {-0x11, -0x11}, + {-0x11, -0x12}, + {-0x11, -0x12}, + {-0x10, -0x12}, + {-0x10, -0x12}, + {-0x10, -0x13}, + {-0x10, -0x13}, + {-0x0f, -0x13}, + {-0x0f, -0x13}, + {-0x0f, -0x14}, + {-0x0e, -0x14}, + {-0x0e, -0x14}, + {-0x0e, -0x15}, + {-0x0d, -0x15}, + {-0x0d, -0x15}, + {-0x0d, -0x15}, + {-0x0c, -0x15}, + {-0x0c, -0x16}, + {-0x0b, -0x16}, + {-0x0b, -0x16}, + {-0x0b, -0x16}, + {-0x0a, -0x16}, + {-0x0a, -0x16}, + {-0x09, -0x16}, + {-0x09, -0x17}, + {-0x09, -0x17}, + {-0x08, -0x17}, + {-0x08, -0x17}, + {-0x07, -0x17}, + {-0x07, -0x17}, + {-0x07, -0x18}, + {-0x06, -0x18}, + {-0x06, -0x18}, + {-0x05, -0x18}, + {-0x05, -0x18}, + {-0x04, -0x18}, + {-0x04, -0x18}, + {-0x04, -0x18}, + {-0x04, -0x19}, + {-0x03, -0x19}, + {-0x02, -0x19}, + {-0x02, -0x18}, + {-0x02, -0x18}, + {-0x01, -0x19}, + {-0x01, -0x19}, + { 0x00, -0x19} +}; + +// text + +static void WallClockVblankCallback(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void LoadWallClockGraphics(void) +{ + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, 0x0000); + SetGpuReg(REG_OFFSET_BG3CNT, 0x0000); + SetGpuReg(REG_OFFSET_BG2CNT, 0x0000); + SetGpuReg(REG_OFFSET_BG1CNT, 0x0000); + SetGpuReg(REG_OFFSET_BG0CNT, 0x0000); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); + DmaClear32(3, (void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + LZ77UnCompVram(gUnknown_08DCC05C, (void *)VRAM); + if (gSpecialVar_0x8004 == 0) + { + LoadPalette(gUnknown_08DCC01C, 0x00, 0x20); + } + else + { + LoadPalette(gUnknown_08DCC03C, 0x00, 0x20); + } + LoadPalette(GetOverworldTextboxPalettePtr(), 0xe0, 0x20); + LoadPalette(gUnknown_085B21D4, 0xc0, 0x08); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085B21FC, 3); + InitWindows(gUnknown_085B21DC); + DeactivateAllTextPrinters(); + sub_809882C(0, 0x250, 0xd0); + clear_scheduled_bg_copies_to_vram(); + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + LoadCompressedObjectPic(&gUnknown_085B2208); + LoadSpritePalettes(gUnknown_085B2218); +} + +static void WallClockInit(void) +{ + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + EnableInterrupts(INTR_FLAG_VBLANK); + SetVBlankCallback(WallClockVblankCallback); + SetMainCallback2(WallClockMainCallback); + SetGpuReg(REG_OFFSET_BLDCNT, 0x0000); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000); + SetGpuReg(REG_OFFSET_BLDY, 0x0000); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(2); + ShowBg(3); +} + +void Cb2_StartWallClock(void) +{ + u8 taskId; + u8 spriteId; + + LoadWallClockGraphics(); + LZ77UnCompVram(gUnknown_08DCC648, (u16 *)BG_SCREEN_ADDR(7)); + + taskId = CreateTask(Task_SetClock1, 0); + gTasks[taskId].tHours = 10; + gTasks[taskId].tMinutes = 0; + gTasks[taskId].tMvmtDir = 0; + gTasks[taskId].tPeriod = 0; + gTasks[taskId].tMvmtSpeed = 0; + gTasks[taskId].tMinuteHandAngle = 0; + gTasks[taskId].tHourHandAngle = 300; + + spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 0; + + spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 1; + + spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 45; + + spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 90; + + WallClockInit(); + + PrintTextOnWindow(1, 1, gText_Confirm3, 0, 1, 0, NULL); + PutWindowTilemap(1); + schedule_bg_copy_tilemap_to_vram(2); +} + +void Cb2_ViewWallClock(void) +{ + u8 taskId; + u8 spriteId; + u8 angle1; + u8 angle2; + + LoadWallClockGraphics(); + LZ77UnCompVram(gUnknown_08DCC908, (u16 *)BG_SCREEN_ADDR(7)); + + taskId = CreateTask(Task_ViewClock1, 0); + InitClockWithRtc(taskId); + if (gTasks[taskId].tPeriod == 0) + { + angle1 = 45; + angle2 = 90; + } + else + { + angle1 = 90; + angle2 = 135; + } + + spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 0; + + spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 1; + + spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = angle1; + + spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2); + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = angle2; + + WallClockInit(); + + PrintTextOnWindow(1, 1, gText_Cancel4, 0, 1, 0, NULL); + PutWindowTilemap(1); + schedule_bg_copy_tilemap_to_vram(2); +} + +static void WallClockMainCallback(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +static void Task_SetClock1(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].func = Task_SetClock2; + } +} + +static void Task_SetClock2(u8 taskId) +{ + if (gTasks[taskId].tMinuteHandAngle % 6) + { + gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed); + } + else + { + gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6; + gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5; + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].func = Task_SetClock3; + } + else + { + gTasks[taskId].tMvmtDir = 0; + if (gMain.heldKeys & DPAD_LEFT) + { + gTasks[taskId].tMvmtDir = 1; + } + if (gMain.heldKeys & DPAD_RIGHT) + { + gTasks[taskId].tMvmtDir = 2; + } + if (gTasks[taskId].tMvmtDir != 0) + { + if (gTasks[taskId].tMvmtSpeed < 0xFF) + { + gTasks[taskId].tMvmtSpeed++; + } + gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed); + AdvanceClock(taskId, gTasks[taskId].tMvmtDir); + } + else + { + gTasks[taskId].tMvmtSpeed = 0; + } + } + } +} + +static void Task_SetClock3(u8 taskId) +{ + SetWindowBorderStyle(0, FALSE, 0x250, 0x0d); + PrintTextOnWindow(0, 1, gText_IsThisTheCorrectTime, 0, 1, 0, NULL); + PutWindowTilemap(0); + schedule_bg_copy_tilemap_to_vram(0); + CreateYesNoMenu(&gUnknown_085B21F4, 0x250, 0x0d, 1); + gTasks[taskId].func = Task_SetClock4; +} + +static void Task_SetClock4(u8 taskId) +{ + switch (ProcessMenuInputNoWrap_()) + { + case 0: + PlaySE(SE_SELECT); + gTasks[taskId].func = Task_SetClock5; + break; + case 1: + case -1: + PlaySE(SE_SELECT); + sub_8198070(0, FALSE); + ClearWindowTilemap(0); + gTasks[taskId].func = Task_SetClock2; + break; + } +} + +static void Task_SetClock5(u8 taskId) +{ + RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = Task_SetClock6; +} + +static void Task_SetClock6(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + SetMainCallback2(gMain.savedCallback); + } +} + +static void Task_ViewClock1(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].func = Task_ViewClock2; + } +} + +static void Task_ViewClock2(u8 taskId) +{ + InitClockWithRtc(taskId); + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + gTasks[taskId].func = Task_ViewClock3; + } +} + +static void Task_ViewClock3(u8 taskId) +{ + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = Task_ViewClock4; +} + +static void Task_ViewClock4(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(gMain.savedCallback); + } +} + +static u8 CalcMinHandDelta(u16 a0) +{ + if (a0 > 60) + { + return 6; + } + if (a0 > 30) + { + return 3; + } + if (a0 > 10) + { + return 2; + } + return 1; +} + +static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2) +{ + u8 r1 = CalcMinHandDelta(a2); + switch (command) + { + case 1: + if (a0) a0 -= r1; + else a0 = 360 - r1; + break; + case 2: + if (a0 < 360 - r1) a0 += r1; + else a0 = 0; + break; + } + return a0; +} + +static bool32 AdvanceClock(u8 taskId, u8 command) +{ + switch (command) + { + case 1: + if (gTasks[taskId].tMinutes > 0) + { + gTasks[taskId].tMinutes--; + } + else + { + gTasks[taskId].tMinutes = 59; + if (gTasks[taskId].tHours > 0) + { + gTasks[taskId].tHours--; + } + else + { + gTasks[taskId].tHours = 23; + } + UpdateClockPeriod(taskId, command); + } + break; + case 2: + if (gTasks[taskId].tMinutes < 59) + { + gTasks[taskId].tMinutes++; + } + else + { + gTasks[taskId].tMinutes = 0; + if (gTasks[taskId].tHours < 23) + { + gTasks[taskId].tHours++; + } + else + { + gTasks[taskId].tHours = 0; + } + UpdateClockPeriod(taskId, command); + } + break; + } + return FALSE; +} + +static void UpdateClockPeriod(u8 taskId, u8 command) +{ + u8 hours = gTasks[taskId].tHours; + switch (command) + { + case 1: + switch (hours) + { + case 11: + gTasks[taskId].tPeriod = FALSE; + break; + case 23: + gTasks[taskId].tPeriod = TRUE; + break; + } + break; + case 2: + switch (hours) + { + case 0: + gTasks[taskId].tPeriod = FALSE; + break; + case 12: + gTasks[taskId].tPeriod = TRUE; + break; + } + break; + } +} + +static void InitClockWithRtc(u8 taskId) +{ + RtcCalcLocalTime(); + gTasks[taskId].tHours = gLocalTime.hours; + gTasks[taskId].tMinutes = gLocalTime.minutes; + gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6; + gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5; + if (gLocalTime.hours < 12) + { + gTasks[taskId].tPeriod = FALSE; + } + else + { + gTasks[taskId].tPeriod = TRUE; + } +} + +static void SpriteCB_MinuteHand(struct Sprite *sprite) +{ + u16 angle = gTasks[sprite->data[0]].tMinuteHandAngle; + s16 sin = Sin2(angle) / 16; + s16 cos = Cos2(angle) / 16; + u16 xhat; + u16 yhat; + + SetOamMatrix(0, cos, sin, -sin, cos); + xhat = sClockHandCoords[angle][0]; + yhat = sClockHandCoords[angle][1]; + + if (xhat > 0x80) + { + xhat |= 0xff00; + } + if (yhat > 0x80) + { + yhat |= 0xff00; + } + sprite->pos2.x = xhat; + sprite->pos2.y = yhat; +} + +static void SpriteCB_HourHand(struct Sprite *sprite) +{ + u16 angle = gTasks[sprite->data[0]].tHourHandAngle; + s16 sin = Sin2(angle) / 16; + s16 cos = Cos2(angle) / 16; + u16 xhat; + u16 yhat; + + SetOamMatrix(1, cos, sin, -sin, cos); + xhat = sClockHandCoords[angle][0]; + yhat = sClockHandCoords[angle][1]; + if (xhat > 0x80) + { + xhat |= 0xff00; + } + if (yhat > 0x80) + { + yhat |= 0xff00; + } + sprite->pos2.x = xhat; + sprite->pos2.y = yhat; +} + +static void SpriteCB_AMIndicator(struct Sprite *sprite) +{ + if (gTasks[sprite->data[0]].tPeriod) + { + if (sprite->data[1] >= 60 && sprite->data[1] < 90) + { + sprite->data[1] += 5; + } + if (sprite->data[1] < 60) + { + sprite->data[1]++; + } + } + else + { + if (sprite->data[1] >= 46 && sprite->data[1] < 76) + { + sprite->data[1] -= 5; + } + if (sprite->data[1] > 75) + { + sprite->data[1]--; + } + } + sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000; + sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000; +} + +static void SpriteCB_PMIndicator(struct Sprite *sprite) +{ + if (gTasks[sprite->data[0]].tPeriod) + { + if (sprite->data[1] >= 105 && sprite->data[1] < 135) + { + sprite->data[1] += 5; + } + if (sprite->data[1] < 105) + { + sprite->data[1]++; + } + } + else + { + if (sprite->data[1] >= 91 && sprite->data[1] < 121) + { + sprite->data[1] -= 5; + } + if (sprite->data[1] > 120) + { + sprite->data[1]--; + } + } + sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000; + sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000; +} diff --git a/sym_common.txt b/sym_common.txt index 1dcbbb68f..3faf9845a 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -302,10 +302,10 @@ gUnknown_03006080: @ 3006080 gUnknown_03006084: @ 3006084 .space 0xC -gUnknown_03006090: @ 3006090 +gApproachingTrainers: @ 3006090 .space 0x18 -gUnknown_030060A8: @ 30060A8 +gNoOfApproachingTrainers: @ 30060A8 .space 0x4 gUnknown_030060AC: @ 30060AC diff --git a/sym_ewram.txt b/sym_ewram.txt index fa195ffb2..fc27ac0de 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -706,55 +706,11 @@ gUnknown_02038BC4: @ 2038BC4 gUnknown_02038BC6: @ 2038BC6 .space 0x2 -gUnknown_02038BC8: @ 2038BC8 - .space 0x2 - -gTrainerBattleOpponent_A: @ 2038BCA - .space 0x2 - -gTrainerBattleOpponent_B: @ 2038BCC - .space 0x2 - -gPartnerTrainerId: @ 2038BCE - .space 0x2 - -gUnknown_02038BD0: @ 2038BD0 - .space 0x4 - -gUnknown_02038BD4: @ 2038BD4 - .space 0x4 - -gUnknown_02038BD8: @ 2038BD8 - .space 0x4 - -gUnknown_02038BDC: @ 2038BDC - .space 0x4 + .include "src/battle_setup.o" -gUnknown_02038BE0: @ 2038BE0 - .space 0x4 - -gUnknown_02038BE4: @ 2038BE4 - .space 0x4 - -gUnknown_02038BE8: @ 2038BE8 - .space 0x4 - -gUnknown_02038BEC: @ 2038BEC - .space 0x4 - -gUnknown_02038BF0: @ 2038BF0 - .space 0x4 - -gUnknown_02038BF4: @ 2038BF4 - .space 0x4 - -gUnknown_02038BF8: @ 2038BF8 - .space 0x1 - -gUnknown_02038BF9: @ 2038BF9 - .space 0x3 +.align 2 -gUnknown_02038BFC: @ 2038BFC +gApproachingTrainerId: @ 2038BFC .space 0x4 .include "src/wild_encounter.o" |