From 4b459cd4607a48a84bcc14122d2ad324424fdff2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Jan 2019 17:08:30 -0500 Subject: [PATCH 001/318] through sub_815E1F0 --- asm/trainer_tower.s | 226 ----------------------------- data/trainer_tower/trainers.inc | 248 ++++++++++++++++---------------- include/battle_2.h | 1 + include/battle_setup.h | 1 + include/battle_transition.h | 4 +- include/event_data.h | 3 + include/global.h | 9 +- include/overworld.h | 1 + include/pokemon.h | 2 + src/load_save.c | 2 +- src/trainer_tower.c | 83 ++++++++++- 11 files changed, 225 insertions(+), 355 deletions(-) diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s index c1da74a98..b12a636c7 100644 --- a/asm/trainer_tower.s +++ b/asm/trainer_tower.s @@ -5,232 +5,6 @@ .text - thumb_func_start sub_815E068 -sub_815E068: @ 815E068 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r1, 24 - lsrs r2, r1, 24 - movs r5, 0 - cmp r0, 0x1 - beq _0815E0B4 - cmp r0, 0x1 - bgt _0815E084 - cmp r0, 0 - beq _0815E088 - b _0815E0F8 -_0815E084: - cmp r3, 0x2 - bne _0815E0F8 -_0815E088: - movs r4, 0 - ldr r0, _0815E0B0 @ =gUnknown_8479ED8 - ldrb r1, [r0, 0x1] - adds r3, r0, 0 - cmp r1, r2 - beq _0815E0A4 - adds r1, r3, 0 -_0815E096: - adds r1, 0x4 - adds r4, 0x1 - cmp r4, 0x52 - bhi _0815E0A4 - ldrb r0, [r1, 0x1] - cmp r0, r2 - bne _0815E096 -_0815E0A4: - cmp r4, 0x53 - beq _0815E0F8 - lsls r0, r4, 2 - adds r0, r3 - ldrb r5, [r0, 0x2] - b _0815E0F8 - .align 2, 0 -_0815E0B0: .4byte gUnknown_8479ED8 -_0815E0B4: - movs r4, 0 - ldr r1, _0815E0BC @ =gUnknown_847A024 - b _0815E0C8 - .align 2, 0 -_0815E0BC: .4byte gUnknown_847A024 -_0815E0C0: - adds r1, 0x8 - adds r4, 0x1 - cmp r4, 0x9 - bhi _0815E0CE -_0815E0C8: - ldrb r0, [r1, 0x2] - cmp r0, r2 - bne _0815E0C0 -_0815E0CE: - cmp r4, 0xA - beq _0815E0F8 - ldr r0, _0815E0E8 @ =0x00004003 - bl VarGet - lsls r0, 16 - cmp r0, 0 - beq _0815E0F0 - ldr r1, _0815E0EC @ =gUnknown_847A024 - lsls r0, r4, 3 - adds r0, r1 - ldrb r5, [r0, 0x4] - b _0815E0F8 - .align 2, 0 -_0815E0E8: .4byte 0x00004003 -_0815E0EC: .4byte gUnknown_847A024 -_0815E0F0: - ldr r1, _0815E108 @ =gUnknown_847A024 - lsls r0, r4, 3 - adds r0, r1 - ldrb r5, [r0, 0x3] -_0815E0F8: - ldr r2, _0815E10C @ =gUnknown_20370DC - ldr r1, _0815E110 @ =gUnknown_20370DA - ldrh r0, [r1] - strh r0, [r2] - strh r5, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0815E108: .4byte gUnknown_847A024 -_0815E10C: .4byte gUnknown_20370DC -_0815E110: .4byte gUnknown_20370DA - thumb_func_end sub_815E068 - - thumb_func_start sub_815E114 -sub_815E114: @ 815E114 - push {lr} - ldr r0, _0815E120 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0815E120: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_815E114 - - thumb_func_start sub_815E124 -sub_815E124: @ 815E124 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80D08F8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0815E14C - ldr r0, _0815E154 @ =gMain - ldr r1, _0815E158 @ =sub_815E114 - str r1, [r0, 0x8] - bl sub_80563F0 - ldr r0, _0815E15C @ =sub_800FD9C - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0815E14C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815E154: .4byte gMain -_0815E158: .4byte sub_815E114 -_0815E15C: .4byte sub_800FD9C - thumb_func_end sub_815E124 - - thumb_func_start sub_815E160 -sub_815E160: @ 815E160 - push {r4,lr} - ldr r4, _0815E1AC @ =gBattleTypeFlags - ldr r3, _0815E1B0 @ =0x00080008 - str r3, [r4] - ldr r0, _0815E1B4 @ =gUnknown_203F458 - ldr r1, [r0] - ldrb r2, [r1] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r1, r0 - ldrb r0, [r1, 0xE] - cmp r0, 0x1 - bne _0815E180 - orrs r0, r3 - str r0, [r4] -_0815E180: - ldr r1, _0815E1B8 @ =gTrainerBattleOpponent_A - movs r0, 0 - strh r0, [r1] - bl sub_815E9FC - ldr r0, _0815E1BC @ =sub_815E124 - movs r1, 0x1 - bl CreateTask - movs r0, 0 - bl PlayMapChosenOrBattleBGM - bl sub_8080060 - lsls r0, 24 - lsrs r0, 24 - bl sub_80D08B8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815E1AC: .4byte gBattleTypeFlags -_0815E1B0: .4byte 0x00080008 -_0815E1B4: .4byte gUnknown_203F458 -_0815E1B8: .4byte gTrainerBattleOpponent_A -_0815E1BC: .4byte sub_815E124 - thumb_func_end sub_815E160 - - thumb_func_start sub_815E1C0 -sub_815E1C0: @ 815E1C0 - push {lr} - ldr r0, _0815E1E4 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0 - bne _0815E1DE - ldr r3, _0815E1E8 @ =gSpecialVar_Result - ldr r0, _0815E1EC @ =gUnknown_203F458 - ldr r1, [r0] - ldrb r2, [r1] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r1, r0 - ldrb r0, [r1, 0xE] - strh r0, [r3] -_0815E1DE: - pop {r0} - bx r0 - .align 2, 0 -_0815E1E4: .4byte gSpecialVar_0x8005 -_0815E1E8: .4byte gSpecialVar_Result -_0815E1EC: .4byte gUnknown_203F458 - thumb_func_end sub_815E1C0 - - thumb_func_start sub_815E1F0 -sub_815E1F0: @ 815E1F0 - ldr r0, _0815E210 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E214 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - movs r0, 0xF5 - lsls r0, 6 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_0815E210: .4byte gSaveBlock1Ptr -_0815E214: .4byte 0x00003d34 - thumb_func_end sub_815E1F0 - thumb_func_start sub_815E218 sub_815E218: @ 815E218 push {lr} diff --git a/data/trainer_tower/trainers.inc b/data/trainer_tower/trainers.inc index e2f7dd121..d304a799d 100644 --- a/data/trainer_tower/trainers.inc +++ b/data/trainer_tower/trainers.inc @@ -22,8 +22,8 @@ .macro dummy_tower_team .string "$", 11 - .byte FACILITY_CLASS_AQUA_LEADER, 0x01, 0x00 - + .byte FACILITY_CLASS_AQUA_LEADER, 0x01 + .align 1 .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF @@ -41,8 +41,8 @@ gUnknown_847ABAC:: .byte 0x01, 0x08, 0x00, 0x07 .string "COLE$", 11 - .byte FACILITY_CLASS_YOUNGSTER_2, 0x01, 0x00 - + .byte FACILITY_CLASS_YOUNGSTER_2, 0x01 + .align 1 .2byte EC_WORD_AHAHA, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_ANYWHERE, EC_WORD_EXCL .2byte EC_WORD_ALL_RIGHT, EC_WORD_EXCL, EC_WORD_BYE_BYE, EC_WORD_EXCL, 0xFFFF, 0xFFFF .2byte EC_WORD_HIYAH, EC_WORD_EXCL_EXCL, EC_WORD_DONE, EC_WORD_IN, EC_WORD_TOTALLY, EC_WORD_EXCL_EXCL @@ -128,8 +128,8 @@ gUnknown_847ABAC:: gUnknown_847AF8C:: .byte 0x02, 0x08, 0x00, 0x0d .string "JAC$", 11 - .byte FACILITY_CLASS_BURGLAR, 0x01, 0x00 - + .byte FACILITY_CLASS_BURGLAR, 0x01 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_A, EC_MOVE2(THIEF), EC_WORD_EXCL, EC_WORD_GIVE_ME, EC_WORD_SOMETHING .2byte EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_NOTHING, EC_WORD_THAT, EC_WORD_I, EC_WORD_WANT .2byte EC_WORD_EEK, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_I, EC_WORD_SURRENDER @@ -215,8 +215,8 @@ gUnknown_847AF8C:: gUnknown_847B36C:: .byte 0x03, 0x08, 0x00, 0x02 .string "MILY$", 11 - .byte FACILITY_CLASS_PSYCHIC_4, 0x01, 0x00 - + .byte FACILITY_CLASS_PSYCHIC_4, 0x01 + .align 1 .2byte EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(SUPERPOWER), EC_WORD_EXCL .2byte EC_WORD_ISN_T, EC_WORD_IT, EC_WORD_INCREDIBLE, EC_WORD_QUES, EC_WORD_POKEMON, EC_WORD_POWER .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_ELLIPSIS_EXCL @@ -302,8 +302,8 @@ gUnknown_847B36C:: gUnknown_847B74C:: .byte 0x04, 0x08, 0x01, 0x09 .string "JOS & ANNE$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x07 + .align 1 .2byte EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_TO, EC_WORD_YOU, EC_WORD_HERE .2byte EC_WORD_VERY, EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, EC_WORD_GOOD, EC_WORD_BATTLE .2byte EC_WORD_UNBELIEVABLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF @@ -382,8 +382,8 @@ gUnknown_847B74C:: .byte 255 @ friendship .string "JOS & ANNE$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x07 + .align 1 .2byte EC_WORD_HERE_GOES, EC_WORD_EXCL_EXCL, EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_LOSE .2byte EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_WE, EC_WORD_GET, EC_WORD_THE, EC_WORD_WIN .2byte EC_WORD_LOST, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_JOKING, EC_WORD_EXCL @@ -468,8 +468,8 @@ gUnknown_847B74C:: gUnknown_847BB2C:: .byte 0x05, 0x08, 0x01, 0x04 .string "EMY & ALEK$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01, 0x00 - + .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LOST, EC_WORD_IN, EC_WORD_LOVEY_DOVEY, EC_WORD_HAPPINESS .2byte EC_WORD_OH, EC_WORD_OH, EC_WORD_HE, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME .2byte EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_SERIOUS, EC_WORD_QUES @@ -548,8 +548,8 @@ gUnknown_847BB2C:: .byte 255 @ friendship .string "EMY & ALEK$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01, 0x00 - + .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_GIDDY, EC_WORD_WITH, EC_WORD_LOVEY_DOVEY, EC_WORD_JOY, EC_WORD_EXCL_EXCL .2byte EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_IS, EC_WORD_CUTE .2byte EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_SERIOUS @@ -634,8 +634,8 @@ gUnknown_847BB2C:: gUnknown_847BF0C:: .byte 0x06, 0x08, 0x01, 0x00 .string "JO & HALEY$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00 - + .byte FACILITY_CLASS_CRUSH_KIN, 0x05 + .align 1 .2byte EC_WORD_WE_RE, EC_WORD_USING, EC_WORD_THAT, EC_WORD_STRATEGY, EC_WORD_OKAY, EC_WORD_QUES .2byte EC_WORD_YAY, EC_WORD_WE, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_EXCL .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TERRIBLE, EC_WORD_EXCL @@ -714,8 +714,8 @@ gUnknown_847BF0C:: .byte 255 @ friendship .string "JO & HALEY$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00 - + .byte FACILITY_CLASS_CRUSH_KIN, 0x05 + .align 1 .2byte EC_WORD_YOU, EC_WORD_YOU, EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_WORD_WIN .2byte EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_JOKING, EC_WORD_QUES, EC_WORD_WE, EC_WORD_WON .2byte EC_WORD_WIMPY, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_WERE, EC_WORD_WEAK, EC_WORD_ELLIPSIS @@ -800,8 +800,8 @@ gUnknown_847BF0C:: gUnknown_847C2EC:: .byte 0x07, 0x08, 0x02, 0x0c .string "JORDY$", 11 - .byte FACILITY_CLASS_BIKER, 0x03, 0x00 - + .byte FACILITY_CLASS_BIKER, 0x03 + .align 1 .2byte EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GIGGLE, EC_WORD_YOU, EC_WORD_PUSHOVER .2byte EC_WORD_WHAT, EC_WORD_A_LITTLE, EC_WORD_PUSHOVER, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_EXCL .2byte EC_WORD_YOU, EC_WORD_WERE, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_EXCL @@ -880,8 +880,8 @@ gUnknown_847C2EC:: .byte 0 @ friendship .string "ERNEST$", 11 - .byte FACILITY_CLASS_BIKER, 0x01, 0x00 - + .byte FACILITY_CLASS_BIKER, 0x01 + .align 1 .2byte EC_WORD_IT_S, EC_WORD_SLEEP, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_CHILDREN, EC_WORD_EXCL .2byte EC_WORD_NOT, EC_WORD_GUTSY, EC_WORD_ENOUGH, 0xFFFF, 0xFFFF, 0xFFFF .2byte EC_WORD_WHY, EC_WORD_DID, EC_WORD_YOU, EC_WORD_CRUSH, EC_WORD_ME, EC_WORD_QUES @@ -960,8 +960,8 @@ gUnknown_847C2EC:: .byte 0 @ friendship .string "GABRIEL$", 11 - .byte FACILITY_CLASS_CUE_BALL, 0x01, 0x00 - + .byte FACILITY_CLASS_CUE_BALL, 0x01 + .align 1 .2byte EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_HERE_I_COME, EC_WORD_TO, EC_WORD_SWARM, EC_WORD_YOU .2byte EC_WORD_I_AM, EC_WORD_INVINCIBLE, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_THAT, EC_WORD_QUES .2byte EC_WORD_WHAT, EC_WORD_WAS, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF, 0xFFFF @@ -1045,8 +1045,8 @@ gUnknown_847C2EC:: gUnknown_847C6CC:: .byte 0x08, 0x08, 0x02, 0x0e .string "MIKE$", 11 - .byte FACILITY_CLASS_HIKER_2, 0x05, 0x00 - + .byte FACILITY_CLASS_HIKER_2, 0x05 + .align 1 .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_FULL, EC_WORD_OF, EC_WORD_POWER .2byte EC_WORD_WHAT_S_UP_QUES, EC_WORD_WHERE, EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_QUES .2byte EC_WORD_YOU, EC_WORD_GOT, EC_WORD_ME, EC_WORD_WITH, EC_WORD_YOUR, EC_MOVE2(FAKE_OUT) @@ -1125,8 +1125,8 @@ gUnknown_847C6CC:: .byte 255 @ friendship .string "REBECCA$", 11 - .byte FACILITY_CLASS_CRUSH_GIRL, 0x05, 0x00 - + .byte FACILITY_CLASS_CRUSH_GIRL, 0x05 + .align 1 .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF .2byte EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_OVERWHELMING .2byte EC_WORD_ARRGH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF @@ -1205,8 +1205,8 @@ gUnknown_847C6CC:: .byte 255 @ friendship .string "NICOLAS$", 11 - .byte FACILITY_CLASS_BLACK_BELT_2, 0x05, 0x00 - + .byte FACILITY_CLASS_BLACK_BELT_2, 0x05 + .align 1 .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_WHERE, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_EXCL .2byte EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_EVER, EC_WORD_BEAT, EC_WORD_ME .2byte EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES @@ -1290,8 +1290,8 @@ gUnknown_847C6CC:: gUnknown_847CAAC:: .byte 0x09, 0x08, 0x00, 0x00 .string "JOEY$", 11 - .byte FACILITY_CLASS_CAMPER_2, 0x01, 0x00 - + .byte FACILITY_CLASS_CAMPER_2, 0x01 + .align 1 .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SCARY, EC_WORD_STRONG, EC_WORD_EXCL .2byte EC_WORD_WERE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_QUES .2byte EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WAY, EC_WORD_TOO_STRONG, EC_WORD_EXCL @@ -1377,8 +1377,8 @@ gUnknown_847CAAC:: gUnknown_847CE8C:: .byte 0x0a, 0x08, 0x00, 0x0c .string "LILY$", 11 - .byte FACILITY_CLASS_PKMN_BREEDER_3, 0x01, 0x00 - + .byte FACILITY_CLASS_PKMN_BREEDER_3, 0x01 + .align 1 .2byte EC_WORD_I, EC_WORD_WANT, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_EXCL .2byte EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL .2byte EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_ELLIPSIS @@ -1464,8 +1464,8 @@ gUnknown_847CE8C:: gUnknown_847D26C:: .byte 0x0b, 0x08, 0x00, 0x0e .string "BRANDON$", 11 - .byte FACILITY_CLASS_BUG_CATCHER_2, 0x01, 0x00 - + .byte FACILITY_CLASS_BUG_CATCHER_2, 0x01 + .align 1 .2byte EC_WORD_POISON, EC_WORD_IS, EC_WORD_JUST, EC_WORD_SO, EC_WORD_AWFUL, EC_WORD_ISN_T_IT_QUES .2byte EC_WORD_SEE, EC_WORD_QUES, EC_WORD_ISN_T, EC_WORD_POISON, EC_WORD_TERRIBLE, EC_WORD_QUES .2byte EC_WORD_HUH_QUES, EC_WORD_OUR, EC_WORD_POISON, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_QUES @@ -1551,8 +1551,8 @@ gUnknown_847D26C:: gUnknown_847D64C:: .byte 0x0c, 0x08, 0x01, 0x02 .string "RIC & RENE$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00 - + .byte FACILITY_CLASS_CRUSH_KIN, 0x05 + .align 1 .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_TOO, EC_WORD_AWESOME .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_ISN_T, EC_WORD_AWESOME, EC_WORD_QUES @@ -1631,8 +1631,8 @@ gUnknown_847D64C:: .byte 255 @ friendship .string "RIC & RENE$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00 - + .byte FACILITY_CLASS_CRUSH_KIN, 0x05 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF .2byte EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF .2byte EC_WORD_HUH_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_AWESOME, EC_WORD_QUES @@ -1717,8 +1717,8 @@ gUnknown_847D64C:: gUnknown_847DA2C:: .byte 0x0d, 0x08, 0x01, 0x0d .string "JEN & KIRA$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x05, 0x00 - + .byte FACILITY_CLASS_TWINS_2, 0x05 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL .2byte EC_WORD_EHEHE, EC_WORD_YAY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF @@ -1797,8 +1797,8 @@ gUnknown_847DA2C:: .byte 255 @ friendship .string "JEN & KIRA$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x03, 0x00 - + .byte FACILITY_CLASS_TWINS_2, 0x03 + .align 1 .2byte EC_WORD_LET_S, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL, 0xFFFF, 0xFFFF .2byte EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF @@ -1883,8 +1883,8 @@ gUnknown_847DA2C:: gUnknown_847DE0C:: .byte 0x0e, 0x08, 0x01, 0x08 .string "ISAC & MAG$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x01, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x01 + .align 1 .2byte EC_WORD_OUR, EC_MOVE(EARTHQUAKE), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SHAKY .2byte EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, 0xFFFF .2byte EC_WORD_I_AM, EC_WORD_ALL, EC_WORD_SHAKY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF @@ -1963,8 +1963,8 @@ gUnknown_847DE0C:: .byte 255 @ friendship .string "ISAC & MAG$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x01, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x01 + .align 1 .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_DOESN_T, EC_WORD_GET, EC_WORD_ALL, EC_WORD_SHAKY .2byte EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_LIE, EC_WORD_EXCL .2byte EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY @@ -2049,8 +2049,8 @@ gUnknown_847DE0C:: gUnknown_847E1EC:: .byte 0x0f, 0x08, 0x02, 0x06 .string "CHELSEA$", 11 - .byte FACILITY_CLASS_PKMN_RANGER_4, 0x07, 0x00 - + .byte FACILITY_CLASS_PKMN_RANGER_4, 0x07 + .align 1 .2byte EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_IMPORTANT, EC_WORD_ISN_T_IT_QUES .2byte EC_WORD_YOU, EC_WORD_TAKE, EC_WORD_THE, EC_WORD_LOSS, 0xFFFF, 0xFFFF .2byte EC_WORD_BE, EC_WORD_KIND, EC_WORD_TO, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD @@ -2129,8 +2129,8 @@ gUnknown_847E1EC:: .byte 255 @ friendship .string "TRENTON$", 11 - .byte FACILITY_CLASS_PKMN_RANGER_3, 0x07, 0x00 - + .byte FACILITY_CLASS_PKMN_RANGER_3, 0x07 + .align 1 .2byte EC_WORD_I, EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREAT, EC_WORD_GREEN, EC_WORD_WORLD .2byte EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_YOURS .2byte EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, 0xFFFF, 0xFFFF @@ -2209,8 +2209,8 @@ gUnknown_847E1EC:: .byte 255 @ friendship .string "ALBERT$", 11 - .byte FACILITY_CLASS_COOLTRAINER_3, 0x07, 0x00 - + .byte FACILITY_CLASS_COOLTRAINER_3, 0x07 + .align 1 .2byte EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_HERE .2byte EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_THINGS, EC_WORD_EXCITING .2byte EC_WORD_YOU_RE, EC_WORD_STRONG, EC_WORD_THAT_WAS, EC_WORD_WILD, EC_WORD_AND, EC_WORD_EXCITING @@ -2294,8 +2294,8 @@ gUnknown_847E1EC:: gUnknown_847E5CC:: .byte 0x10, 0x08, 0x02, 0x04 .string "CAMRYN$", 11 - .byte FACILITY_CLASS_PICNICKER_2, 0x01, 0x00 - + .byte FACILITY_CLASS_PICNICKER_2, 0x01 + .align 1 .2byte EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_I, EC_WORD_WON_T, EC_WORD_LOSE, EC_WORD_EXCL .2byte EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_WIN .2byte EC_WORD_OH_QUES, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_DID, EC_WORD_I, EC_WORD_LOSE, EC_WORD_QUES @@ -2374,8 +2374,8 @@ gUnknown_847E5CC:: .byte 255 @ friendship .string "NATALIA$", 11 - .byte FACILITY_CLASS_AROMA_LADY_2, 0x01, 0x00 - + .byte FACILITY_CLASS_AROMA_LADY_2, 0x01 + .align 1 .2byte EC_WORD_THIS, EC_MOVE(SWEET_SCENT), EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_IT, EC_WORD_QUES .2byte EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_NICE, EC_WORD_QUES, 0xFFFF, 0xFFFF .2byte EC_WORD_THAT, EC_WORD_WASN_T, EC_WORD_GOOD, EC_WORD_QUES, 0xFFFF, 0xFFFF @@ -2454,8 +2454,8 @@ gUnknown_847E5CC:: .byte 255 @ friendship .string "KATHLEEN$", 11 - .byte FACILITY_CLASS_COOLTRAINER_4, 0x07, 0x00 - + .byte FACILITY_CLASS_COOLTRAINER_4, 0x07 + .align 1 .2byte EC_WORD_TOO, EC_WORD_BAD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU .2byte EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_ELLIPSIS @@ -2539,8 +2539,8 @@ gUnknown_847E5CC:: gUnknown_847E9AC:: .byte 0x11, 0x08, 0x00, 0x03 .string "BRADEN$", 11 - .byte FACILITY_CLASS_SWIMMER_MALE_2, 0x01, 0x00 - + .byte FACILITY_CLASS_SWIMMER_MALE_2, 0x01 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_PRETTY, EC_WORD_HAPPY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_TOUGHNESS .2byte EC_WORD_WROOOAAR_EXCL, 0xFFFF, EC_WORD_SERIOUSLY, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES .2byte EC_WORD_YOU, EC_WORD_SHOCKED, EC_WORD_ME, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HAPPINESS @@ -2626,8 +2626,8 @@ gUnknown_847E9AC:: gUnknown_847ED8C:: .byte 0x12, 0x08, 0x00, 0x0a .string "ALLYSON$", 11 - .byte FACILITY_CLASS_COOLTRAINER_4, 0x07, 0x00 - + .byte FACILITY_CLASS_COOLTRAINER_4, 0x07 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_ABOUT, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_TODAY .2byte EC_WORD_YES, EC_WORD_EXCL_EXCL, EC_WORD_I, EC_WORD_ADORE, EC_WORD_MYSELF, EC_WORD_TODAY .2byte EC_WORD_I_WAS, EC_WORD_CONFUSED, EC_WORD_ABOUT, EC_WORD_THINGS, EC_WORD_I, EC_WORD_THINK @@ -2713,8 +2713,8 @@ gUnknown_847ED8C:: gUnknown_847F16C:: .byte 0x13, 0x08, 0x00, 0x0e .string "ALBERTO$", 11 - .byte FACILITY_CLASS_SAILOR_2, 0x05, 0x00 - + .byte FACILITY_CLASS_SAILOR_2, 0x05 + .align 1 .2byte EC_WORD_LET_S, EC_WORD_GET, EC_WORD_WITH, EC_WORD_IT, EC_WORD_RIGHT, EC_WORD_AWAY .2byte EC_WORD_YO, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_NOW, EC_WORD_EH_QUES .2byte EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_OVER, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER @@ -2800,8 +2800,8 @@ gUnknown_847F16C:: gUnknown_847F54C:: .byte 0x14, 0x08, 0x01, 0x0c .string "KAT & KIPP$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04, 0x00 - + .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_MY, EC_WORD_BEST .2byte EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER .2byte EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_IT, EC_WORD_GOES @@ -2880,8 +2880,8 @@ gUnknown_847F54C:: .byte 255 @ friendship .string "KAT & KIPP$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04, 0x00 - + .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04 + .align 1 .2byte EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_NEVER, EC_WORD_LOSE, EC_WORD_EXCL .2byte EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOO_STRONG, EC_WORD_TO, EC_WORD_LOSE .2byte EC_WORD_WHAT, EC_WORD_HUH_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_JOKING, EC_WORD_QUES @@ -2966,8 +2966,8 @@ gUnknown_847F54C:: gUnknown_847F92C:: .byte 0x15, 0x08, 0x01, 0x08 .string "GEB&MEGAN$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x07 + .align 1 .2byte EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_OPPONENT, EC_WORD_QUES, EC_WORD_PUSHOVER, EC_WORD_HAHAHA .2byte EC_WORD_HAHAHA, EC_WORD_SORRY, EC_WORD_MY, EC_WORD_FRIEND, EC_WORD_TOUGH, EC_WORD_LOSS .2byte EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FRIEND, EC_WORD_QUES @@ -3046,8 +3046,8 @@ gUnknown_847F92C:: .byte 255 @ friendship .string "GEB&MEGAN$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x07 + .align 1 .2byte EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_FOE, EC_WORD_QUES, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS .2byte EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF .2byte EC_WORD_MY, EC_WORD_WORD, EC_WORD_THIS, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE @@ -3132,8 +3132,8 @@ gUnknown_847F92C:: gUnknown_847FD0C:: .byte 0x16, 0x08, 0x01, 0x05 .string "LISA&LEAH$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x01, 0x00 - + .byte FACILITY_CLASS_TWINS_2, 0x01 + .align 1 .2byte EC_WORD_ABSOLUTELY, EC_WORD_WE_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL .2byte EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF @@ -3212,8 +3212,8 @@ gUnknown_847FD0C:: .byte 255 @ friendship .string "LISA&LEAH$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x01, 0x00 - + .byte FACILITY_CLASS_TWINS_2, 0x01 + .align 1 .2byte EC_WORD_CAN, EC_WORD_WE, EC_WORD_WIN, EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_EXCITING .2byte EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF @@ -3292,8 +3292,8 @@ gUnknown_847FD0C:: .byte 255 @ friendship .string "$", 11 - .byte FACILITY_CLASS_AQUA_LEADER, 0x01, 0x00 - + .byte FACILITY_CLASS_AQUA_LEADER, 0x01 + .align 1 .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF @@ -3377,8 +3377,8 @@ gUnknown_847FD0C:: gUnknown_84800EC:: .byte 0x17, 0x08, 0x02, 0x01 .string "PRISCILLA$", 11 - .byte FACILITY_CLASS_TUBER_3, 0x01, 0x00 - + .byte FACILITY_CLASS_TUBER_3, 0x01 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_GIRL, EC_WORD_HERE_I_COME, EC_WORD_EXCL .2byte EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DID, EC_WORD_I, EC_WORD_WIN, EC_WORD_QUES .2byte EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_ELLIPSIS @@ -3457,8 +3457,8 @@ gUnknown_84800EC:: .byte 0 @ friendship .string "CHARLOTTE$", 11 - .byte FACILITY_CLASS_LADY_2, 0x01, 0x00 - + .byte FACILITY_CLASS_LADY_2, 0x01 + .align 1 .2byte EC_WORD_HELLO, EC_WORD_THERE, EC_WORD_I_AM, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY .2byte EC_WORD_OH, EC_WORD_MY, EC_WORD_MY, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SORRY .2byte EC_WORD_YOU_RE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY @@ -3537,8 +3537,8 @@ gUnknown_84800EC:: .byte 255 @ friendship .string "SHANIA$", 11 - .byte FACILITY_CLASS_SWIMMER_FEMALE_2, 0x01, 0x00 - + .byte FACILITY_CLASS_SWIMMER_FEMALE_2, 0x01 + .align 1 .2byte EC_WORD_A, EC_WORD_POKEMON, EC_WORD_HEROINE, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM .2byte EC_WORD_AHAHA, EC_WORD_NO, EC_WORD_WAY, EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_SERIOUSLY .2byte EC_WORD_WHY, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LIE @@ -3622,8 +3622,8 @@ gUnknown_84800EC:: gUnknown_84804CC:: .byte 0x18, 0x08, 0x02, 0x0d .string "BRENNAN$", 11 - .byte FACILITY_CLASS_SAILOR_2, 0x01, 0x00 - + .byte FACILITY_CLASS_SAILOR_2, 0x01 + .align 1 .2byte EC_WORD_TAKE, EC_WORD_THINGS, EC_WORD_EASY, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_IMPORTANT .2byte EC_WORD_YOU, EC_WORD_LOSE, EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_EXCL .2byte EC_WORD_OOPS, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_AN, EC_WORD_EASY, EC_WORD_WIN @@ -3702,8 +3702,8 @@ gUnknown_84804CC:: .byte 255 @ friendship .string "KADEN$", 11 - .byte FACILITY_CLASS_FISHERMAN_2, 0x01, 0x00 - + .byte FACILITY_CLASS_FISHERMAN_2, 0x01 + .align 1 .2byte EC_WORD_MY, EC_WORD_FISHING, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_IS, EC_WORD_FANTASTIC .2byte EC_WORD_MY, EC_WORD_FANTASTIC, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WINS, EC_WORD_OUT .2byte EC_WORD_UH_OH, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_LOST @@ -3782,8 +3782,8 @@ gUnknown_84804CC:: .byte 255 @ friendship .string "EMANUEL$", 11 - .byte FACILITY_CLASS_GENTLEMAN_2, 0x01, 0x00 - + .byte FACILITY_CLASS_GENTLEMAN_2, 0x01 + .align 1 .2byte EC_WORD_HMM, EC_WORD_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SKILLED, EC_WORD_QUES .2byte EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_RIGHT, EC_WORD_ELLIPSIS .2byte EC_WORD_YOU, EC_WORD_TRULY, EC_WORD_ARE, EC_WORD_A, EC_WORD_MASTER, EC_WORD_TRAINER @@ -3867,8 +3867,8 @@ gUnknown_84804CC:: gUnknown_84808AC:: .byte 0x19, 0x08, 0x00, 0x0c .string "JARRETT$", 11 - .byte FACILITY_CLASS_JUGGLER, 0x02, 0x00 - + .byte FACILITY_CLASS_JUGGLER, 0x02 + .align 1 .2byte EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_PARTY, EC_WORD_EXCL .2byte EC_WORD_CONGRATS, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS, EC_WORD_PARTY, EC_WORD_KID .2byte EC_WORD_NICE, EC_MOVE(SELF_DESTRUCT), EC_WORD_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_PERFECT @@ -3954,8 +3954,8 @@ gUnknown_84808AC:: gUnknown_8480C8C:: .byte 0x1a, 0x08, 0x00, 0x0d .string "OWEN$", 11 - .byte FACILITY_CLASS_SUPER_NERD, 0x02, 0x00 - + .byte FACILITY_CLASS_SUPER_NERD, 0x02 + .align 1 .2byte EC_WORD_HERE_IT_IS, EC_MOVE2(THUNDER_WAVE), EC_WORD_DON_T, EC_MOVE2(WRAP), EC_WORD_ME, EC_WORD_EXCL .2byte EC_WORD_ACCEPT, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_OF, EC_MOVE2(THUNDER_WAVE), EC_WORD_EXCL .2byte EC_MOVE2(WRAP), EC_MOVE(BIND), EC_WORD_ELECTRIC, EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, EC_WORD_AROUND @@ -4041,8 +4041,8 @@ gUnknown_8480C8C:: gUnknown_848106C:: .byte 0x1b, 0x08, 0x00, 0x01 .string "LORENZO$", 11 - .byte FACILITY_CLASS_PSYCHIC_3, 0x01, 0x00 - + .byte FACILITY_CLASS_PSYCHIC_3, 0x01 + .align 1 .2byte EC_WORD_THIS, EC_WORD_POWER, EC_WORD_IS, EC_WORD_NOW, EC_WORD_COMPLETE, EC_WORD_EXCL .2byte EC_WORD_NO, EC_WORD_KEEN_EYE, EC_WORD_CAN, EC_WORD_STOP, EC_WORD_MY, EC_WORD_POWER .2byte EC_WORD_HERE_IT_IS, EC_WORD_EXCL, EC_MOVE(KINESIS), EC_WORD_EXCL, EC_WORD_ELLIPSIS, EC_WORD_WHAT @@ -4128,8 +4128,8 @@ gUnknown_848106C:: gUnknown_848144C:: .byte 0x1c, 0x08, 0x01, 0x0b .string "NIA & CARL$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x04, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x04 + .align 1 .2byte EC_WORD_HERE_GOES, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_ROMANTIC, EC_WORD_HERO, EC_WORD_STRATEGY .2byte EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_DIGITAL, EC_WORD_HYPER, EC_WORD_MODE, EC_WORD_POWER .2byte EC_WORD_MY, EC_WORD_PERFECT, EC_WORD_STRATEGY, EC_WORD_WAS, EC_MOVE2(BEAT_UP), EC_WORD_QUES @@ -4208,8 +4208,8 @@ gUnknown_848144C:: .byte 255 @ friendship .string "NIA & CARL$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x04, 0x00 - + .byte FACILITY_CLASS_COOL_COUPLE, 0x04 + .align 1 .2byte EC_WORD_MASTER, EC_WORD_COMPLETE, EC_WORD_FASHION, EC_WORD_SYSTEM, EC_WORD_START, EC_WORD_EXCL .2byte EC_WORD_THAT_S_IT_EXCL, EC_WORD_THE, EC_WORD_POWER, EC_WORD_OF, EC_WORD_OUR, EC_WORD_SYSTEM .2byte EC_WORD_OKAY, EC_WORD_EXCL, EC_MOVE(THUNDERBOLT), EC_WORD_RUN_AWAY, EC_WORD_SYSTEM, EC_WORD_START @@ -4294,8 +4294,8 @@ gUnknown_848144C:: gUnknown_848182C:: .byte 0x1d, 0x08, 0x01, 0x03 .string "AXE & REN$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02, 0x00 - + .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02 + .align 1 .2byte EC_WORD_IT_S, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_WORD_AWFULLY, EC_WORD_COLD .2byte EC_WORD_THAT_S, EC_WORD_THAT, EC_WORD_MAN, EC_WORD_I_AM, EC_WORD_COLD, EC_WORD_EXCL .2byte EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_ELLIPSIS @@ -4374,8 +4374,8 @@ gUnknown_848182C:: .byte 255 @ friendship .string "AXE & REN$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02, 0x00 - + .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02 + .align 1 .2byte EC_WORD_OUR, EC_WORD_SWIFT_SWIM, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_COLD .2byte EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_HOT .2byte EC_WORD_I_AM, EC_WORD_HUNGRY, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_HOT, EC_WORD_EATS @@ -4460,8 +4460,8 @@ gUnknown_848182C:: gUnknown_8481C0C:: .byte 0x1e, 0x08, 0x01, 0x05 .string "KATI & GEB$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02, 0x00 - + .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02 + .align 1 .2byte EC_WORD_WELCOME, EC_WORD_TO, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_MOVE2(THUNDER_WAVE), EC_MOVE(SANDSTORM) .2byte EC_WORD_LALALA, EC_WORD_LALALA, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LALALA, EC_WORD_LIFE .2byte EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_MY, EC_MOVE2(FRUSTRATION) @@ -4540,8 +4540,8 @@ gUnknown_8481C0C:: .byte 255 @ friendship .string "KATI & GEB$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02, 0x00 - + .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_PLUS, EC_WORD_YOU_RE, EC_WORD_MINUS, EC_WORD_LOVEY_DOVEY, EC_WORD_MAGNET_PULL .2byte EC_WORD_DON_T, EC_WORD_STOP, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LOCOMOTIVE, EC_WORD_EXCL .2byte EC_WORD_HIS, EC_WORD_CRY, EC_WORD_HAS, EC_WORD_CUTE_CHARM, EC_WORD_TOO, EC_WORD_EXCL @@ -4626,8 +4626,8 @@ gUnknown_8481C0C:: gUnknown_8481FEC:: .byte 0x1f, 0x08, 0x02, 0x07 .string "BEN$", 11 - .byte FACILITY_CLASS_ROCKER, 0x01, 0x00 - + .byte FACILITY_CLASS_ROCKER, 0x01 + .align 1 .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER .2byte EC_WORD_STATIC, EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YES, EC_WORD_IT, EC_WORD_IS .2byte EC_WORD_ELECTRIC, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_TELEVISION, EC_WORD_I_AM @@ -4706,8 +4706,8 @@ gUnknown_8481FEC:: .byte 255 @ friendship .string "CAMDEN$", 11 - .byte FACILITY_CLASS_ENGINEER, 0x01, 0x00 - + .byte FACILITY_CLASS_ENGINEER, 0x01 + .align 1 .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER .2byte EC_WORD_A, EC_MOVE(THUNDERBOLT), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_TOO, EC_WORD_EXCL .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_WIRELESS, EC_WORD_LINK @@ -4786,8 +4786,8 @@ gUnknown_8481FEC:: .byte 255 @ friendship .string "ZACKERY$", 11 - .byte FACILITY_CLASS_SCIENTIST, 0x01, 0x00 - + .byte FACILITY_CLASS_SCIENTIST, 0x01 + .align 1 .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER .2byte EC_MOVE2(THUNDER_SHOCK), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_WORD_EXCL_EXCL @@ -4871,8 +4871,8 @@ gUnknown_8481FEC:: gUnknown_84823CC:: .byte 0x20, 0x08, 0x02, 0x0e .string "MAURA$", 11 - .byte FACILITY_CLASS_BEAUTY_2, 0x02, 0x00 - + .byte FACILITY_CLASS_BEAUTY_2, 0x02 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_THE, EC_WORD_GROUP, EC_WORD_LEADER, EC_WORD_EXCL, 0xFFFF .2byte EC_WORD_WHAT, EC_WORD_AM, EC_WORD_I, EC_WORD_LEADER, EC_WORD_OF, EC_WORD_QUES .2byte EC_WORD_I_AM, EC_WORD_NO, EC_WORD_LEADER, EC_WORD_IT_S, EC_WORD_A_LITTLE, EC_WORD_LIE @@ -4951,8 +4951,8 @@ gUnknown_84823CC:: .byte 255 @ friendship .string "MIKAELA$", 11 - .byte FACILITY_CLASS_LASS_2, 0x01, 0x00 - + .byte FACILITY_CLASS_LASS_2, 0x01 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_THE, EC_WORD_NO_1, EC_WORD_TRAINER, EC_WORD_HERE .2byte EC_WORD_NEVER, EC_WORD_SAID, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_AT .2byte EC_WORD_NEXT, EC_WORD_TIME, EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_OVERWHELMING @@ -5031,8 +5031,8 @@ gUnknown_84823CC:: .byte 255 @ friendship .string "FLINT$", 11 - .byte FACILITY_CLASS_ENGINEER, 0x04, 0x00 - + .byte FACILITY_CLASS_ENGINEER, 0x04 + .align 1 .2byte EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(MILK_DRINK), EC_WORD_WORLD, EC_WORD_LEADER, EC_WORD_EXCL .2byte EC_WORD_I_VE, EC_WORD_WON, EC_WORD_THIS, EC_MOVE2(MILK_DRINK), EC_WORD_MATCH, EC_WORD_EXCL .2byte EC_WORD_I, EC_WORD_CAN_T, EC_WORD_DRINK, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_DRINKS diff --git a/include/battle_2.h b/include/battle_2.h index ca8b78805..1f7a2304d 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -43,6 +43,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); bool8 TryRunFromBattle(u8 bank); +void sub_800FD9C(void); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_setup.h b/include/battle_setup.h index 2806295ca..86a84f471 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -17,5 +17,6 @@ void BattleSetup_StartTrainerBattle(void); u8 *BattleSetup_GetScriptAddrAfterBattle(void); u8 *BattleSetup_GetTrainerPostBattleScript(void); void sub_80803FC(void); +u8 sub_8080060(void); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/battle_transition.h b/include/battle_transition.h index eba76fd61..91e564790 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -3,6 +3,8 @@ #include "global.h" -void sub_8149DFC(u8 a1); +void sub_8149DFC(u8 a0); +bool8 sub_80D08F8(void); +void sub_80D08B8(u8 a0); #endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/event_data.h b/include/event_data.h index 13e388bf2..34d103967 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -59,4 +59,7 @@ extern u16 gSpecialVar_0x8014; extern u16 gSpecialVar_Result; extern u16 gSpecialVar_0x8004; +extern u16 gUnknown_20370DA; +extern u16 gUnknown_20370DC; + #endif // GUARD_EVENT_DATA_H diff --git a/include/global.h b/include/global.h index 858d95831..0ff9d67df 100644 --- a/include/global.h +++ b/include/global.h @@ -709,6 +709,13 @@ struct MEventBuffers /*0x344 0x3464*/ u32 unk_344[2][5]; }; // 0x36C 0x348C +struct TrainerTowerLog +{ + u32 unk0; + u32 unk4; + u8 unk8; +}; + struct SaveBlock1 { /*0x0000*/ struct Coords16 pos; @@ -766,7 +773,7 @@ struct SaveBlock1 /*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS]; /*0x3A94*/ u8 filler3A94[0x2A0]; /*0x3D34*/ u32 unkArrayIdx; - /*0x3D38*/ u32 unkArray[4][3]; + /*0x3D38*/ struct TrainerTowerLog unkArray[4]; }; extern struct SaveBlock1* gSaveBlock1Ptr; diff --git a/include/overworld.h b/include/overworld.h index 50ac09d9e..5e2e4c11c 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -82,6 +82,7 @@ void sub_8055DC4(void); u8 sav1_map_get_name(void); void sub_8055D40(u16 mapDataId); +void sub_80563F0(void); extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; diff --git a/include/pokemon.h b/include/pokemon.h index e8782af98..4c6240cd4 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -670,4 +670,6 @@ void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); +void PlayMapChosenOrBattleBGM(u16 songId); + #endif // GUARD_POKEMON_H diff --git a/src/load_save.c b/src/load_save.c index da55869aa..6f388e451 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -287,7 +287,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey) int i; for(i = 0; i < 4; i++) - ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->unkArray[i][1], encryptionKey); + ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->unkArray[i].unk4, encryptionKey); sub_8054F38(encryptionKey); ApplyNewEncryptionKeyToBagItems_(encryptionKey); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 91132c07b..eb9637b71 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1,5 +1,6 @@ #include "global.h" #include "main.h" +#include "task.h" #include "constants/flags.h" #include "constants/vars.h" #include "malloc.h" @@ -11,6 +12,10 @@ #include "cereader_tool.h" #include "easy_chat.h" #include "text.h" +#include "battle_setup.h" +#include "battle_transition.h" +#include "battle.h" +#include "battle_2.h" #include "overworld.h" struct UnkStruct_8479D34 @@ -28,7 +33,6 @@ struct UnkSubstruct_203F458_000C_004 /* 0x000 */ u8 unk_000[11]; /* 0x00B */ u8 unk_00B; /* 0x00C */ u8 unk_00C; - /* 0x00D */ u8 unk_00D; /* 0x00E */ u16 unk_00E[6]; /* 0x01A */ u16 unk_01A[6]; /* 0x026 */ u16 unk_026[6]; @@ -122,6 +126,7 @@ void sub_815E8CC(void); void sub_815E908(void); void sub_815E948(void); void sub_815E9C8(void); +void sub_815E9FC(void); void sub_815EC0C(void); extern const struct UnkStruct_8479D34 gUnknown_8479D34[15]; @@ -280,7 +285,7 @@ void sub_815DA54(void) gUnknown_203F45C->unk_3C = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002; gUnknown_203F45C->unk_3D = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_00B; gUnknown_203F45C->unk_3E = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_00C; - SetVBlankCounter1Ptr(gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx]); + SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); sub_815DD2C(); } @@ -692,3 +697,77 @@ void sub_815DF54(void) "_0815E064: .4byte gStringVar4"); } #endif // NONMATCHING + +void sub_815E068(u8 battleType, u8 facilityClass) +{ + u16 r5 = FALSE; + s32 r4; + switch (battleType) + { + case 0: + case 2: + for (r4 = 0; r4 < NELEMS(gUnknown_8479ED8); r4++) + { + if (gUnknown_8479ED8[r4].unk1 == facilityClass) + break; + } + if (r4 != NELEMS(gUnknown_8479ED8)) + r5 = gUnknown_8479ED8[r4].unk2; + break; + case 1: + for (r4 = 0; r4 < NELEMS(gUnknown_847A024); r4++) + { + if (gUnknown_847A024[r4].unk2 == facilityClass) + break; + } + if (r4 != NELEMS(gUnknown_847A024)) + { + if (VarGet(VAR_0x4003)) + r5 = gUnknown_847A024[r4].unk4; + else + r5 = gUnknown_847A024[r4].unk3; + } + break; + } + gUnknown_20370DC = gUnknown_20370DA; + gUnknown_20370DA = r5; +} + +void sub_815E114(void) +{ + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); +} + +void sub_815E124(u8 taskId) +{ + if (sub_80D08F8() == TRUE) + { + gMain.savedCallback = sub_815E114; + sub_80563F0(); + SetMainCallback2(sub_800FD9C); + DestroyTask(taskId); + } +} + +void sub_815E160(void) +{ + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY; + if (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002 == 1) + gBattleTypeFlags |= BATTLE_TYPE_DOUBLE; + gTrainerBattleOpponent_A = 0; + sub_815E9FC(); + CreateTask(sub_815E124, 1); + PlayMapChosenOrBattleBGM(0); + sub_80D08B8(sub_8080060()); +} + +void sub_815E1C0(void) +{ + if (!gSpecialVar_0x8005) + gSpecialVar_Result = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002; +} + +void sub_815E1F0(void) +{ + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8++; +} From 1e699465bdef048f0c2d9574db6ca9a0dd77b051 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Jan 2019 18:12:00 -0500 Subject: [PATCH 002/318] through sub_815E5C4 --- asm/trainer_tower.s | 543 +++++-------------------------------------- asm/unk_815EDDC.s | 55 ----- data/trainer_tower.s | 20 +- include/global.h | 8 + include/item.h | 1 + include/main.h | 1 + src/trainer_tower.c | 93 +++++++- 7 files changed, 173 insertions(+), 548 deletions(-) diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s index b12a636c7..a1ca0da57 100644 --- a/asm/trainer_tower.s +++ b/asm/trainer_tower.s @@ -5,494 +5,6 @@ .text - thumb_func_start sub_815E218 -sub_815E218: @ 815E218 - push {lr} - ldr r0, _0815E260 @ =gMapHeader - ldrh r0, [r0, 0x12] - mov r12, r0 - ldr r3, _0815E264 @ =0xfffffed6 - add r3, r12 - ldr r0, _0815E268 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E26C @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - movs r0, 0xF5 - lsls r0, 6 - adds r1, r0 - ldrb r1, [r1] - cmp r3, r1 - bne _0815E27C - ldr r3, _0815E270 @ =0xfffffed7 - add r3, r12 - ldr r0, _0815E274 @ =gUnknown_203F458 - ldr r1, [r0] - ldrb r2, [r1] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1, 0xD] - cmp r3, r1 - bgt _0815E27C - ldr r1, _0815E278 @ =gSpecialVar_Result - movs r0, 0 - b _0815E280 - .align 2, 0 -_0815E260: .4byte gMapHeader -_0815E264: .4byte 0xfffffed6 -_0815E268: .4byte gSaveBlock1Ptr -_0815E26C: .4byte 0x00003d34 -_0815E270: .4byte 0xfffffed7 -_0815E274: .4byte gUnknown_203F458 -_0815E278: .4byte gSpecialVar_Result -_0815E27C: - ldr r1, _0815E288 @ =gSpecialVar_Result - movs r0, 0x1 -_0815E280: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0815E288: .4byte gSpecialVar_Result - thumb_func_end sub_815E218 - - thumb_func_start sub_815E28C -sub_815E28C: @ 815E28C - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r4, _0815E2D0 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r5, _0815E2D4 @ =0x00003d34 - adds r1, r0, r5 - ldr r0, _0815E2D8 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - str r0, [r1] - cmp r0, 0x3 - bls _0815E2A8 - movs r0, 0 - str r0, [r1] -_0815E2A8: - bl sub_815EC0C - bl sub_815D834 - cmp r0, 0 - bne _0815E2E0 - ldr r1, [r4] - adds r0, r1, r5 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E2DC @ =0x00003d42 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x20 - orrs r0, r2 - b _0815E2FA - .align 2, 0 -_0815E2D0: .4byte gSaveBlock1Ptr -_0815E2D4: .4byte 0x00003d34 -_0815E2D8: .4byte gSpecialVar_0x8005 -_0815E2DC: .4byte 0x00003d42 -_0815E2E0: - ldr r1, [r4] - adds r0, r1, r5 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E384 @ =0x00003d42 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 -_0815E2FA: - strb r0, [r1] - ldr r6, _0815E388 @ =gSaveBlock1Ptr - ldr r2, [r6] - ldr r5, _0815E38C @ =0x00003d34 - adds r0, r2, r5 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - movs r0, 0xF5 - lsls r0, 6 - adds r2, r0 - movs r0, 0 - mov r8, r0 - mov r0, r8 - strb r0, [r2] - ldr r0, [r6] - adds r1, r0, r5 - ldr r2, [r1] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - ldr r4, _0815E390 @ =0x00003d38 - adds r1, r4 - adds r0, r1 - bl SetVBlankCounter1Ptr - ldr r2, [r6] - adds r3, r2, r5 - ldr r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r4, r2, r4 - adds r4, r0 - mov r0, r8 - str r0, [r4] - ldr r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r3, _0815E384 @ =0x00003d42 - adds r2, r3 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r1, [r6] - adds r5, r1, r5 - ldr r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - adds r1, r3 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815E384: .4byte 0x00003d42 -_0815E388: .4byte gSaveBlock1Ptr -_0815E38C: .4byte 0x00003d34 -_0815E390: .4byte 0x00003d38 - thumb_func_end sub_815E28C - - thumb_func_start sub_815E394 -sub_815E394: @ 815E394 - push {lr} - bl DisableVBlankCounter1 - ldr r3, _0815E3F8 @ =gSpecialVar_Result - movs r0, 0 - strh r0, [r3] - ldr r0, _0815E3FC @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _0815E400 @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r0, _0815E404 @ =0x00003d42 - adds r2, r0 - ldrb r0, [r2] - lsls r0, 29 - cmp r0, 0 - bge _0815E3C2 - movs r0, 0x1 - strh r0, [r3] -_0815E3C2: - ldrb r2, [r2] - lsls r0, r2, 31 - cmp r0, 0 - beq _0815E3D6 - lsls r0, r2, 30 - cmp r0, 0 - bge _0815E3D6 - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] -_0815E3D6: - ldr r0, _0815E3FC @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E400 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E404 @ =0x00003d42 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0815E3F8: .4byte gSpecialVar_Result -_0815E3FC: .4byte gSaveBlock1Ptr -_0815E400: .4byte 0x00003d34 -_0815E404: .4byte 0x00003d42 - thumb_func_end sub_815E394 - - thumb_func_start sub_815E408 -sub_815E408: @ 815E408 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _0815E444 @ =gUnknown_847A2B4 - ldr r0, _0815E448 @ =gUnknown_203F458 - ldr r0, [r0] - ldrb r0, [r0, 0xF] - lsls r0, 1 - adds r0, r1 - ldrh r4, [r0] - ldr r0, _0815E44C @ =gSaveBlock1Ptr - mov r8, r0 - ldr r2, [r0] - ldr r7, _0815E450 @ =0x00003d34 - adds r0, r2, r7 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r6, _0815E454 @ =0x00003d42 - adds r2, r6 - ldrb r0, [r2] - lsls r0, 31 - lsrs r5, r0, 31 - cmp r5, 0 - beq _0815E45C - ldr r1, _0815E458 @ =gSpecialVar_Result - movs r0, 0x2 - b _0815E4A0 - .align 2, 0 -_0815E444: .4byte gUnknown_847A2B4 -_0815E448: .4byte gUnknown_203F458 -_0815E44C: .4byte gSaveBlock1Ptr -_0815E450: .4byte 0x00003d34 -_0815E454: .4byte 0x00003d42 -_0815E458: .4byte gSpecialVar_Result -_0815E45C: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_809A084 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0815E49C - ldr r1, _0815E494 @ =gStringVar2 - adds r0, r4, 0 - bl sub_8099E90 - mov r0, r8 - ldr r1, [r0] - adds r0, r1, r7 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - adds r1, r6 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r0, _0815E498 @ =gSpecialVar_Result - strh r5, [r0] - b _0815E4A2 - .align 2, 0 -_0815E494: .4byte gStringVar2 -_0815E498: .4byte gSpecialVar_Result -_0815E49C: - ldr r1, _0815E4AC @ =gSpecialVar_Result - movs r0, 0x1 -_0815E4A0: - strh r0, [r1] -_0815E4A2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815E4AC: .4byte gSpecialVar_Result - thumb_func_end sub_815E408 - - thumb_func_start sub_815E4B0 -sub_815E4B0: @ 815E4B0 - push {r4-r6,lr} - ldr r6, _0815E4D8 @ =gSaveBlock1Ptr - ldr r2, [r6] - ldr r1, _0815E4DC @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, r1 - ldr r3, _0815E4E0 @ =0x00003d42 - adds r0, r3 - ldrb r0, [r0] - lsls r0, 30 - lsrs r5, r0, 31 - cmp r5, 0 - beq _0815E4E8 - ldr r1, _0815E4E4 @ =gSpecialVar_Result - movs r0, 0x2 - b _0815E534 - .align 2, 0 -_0815E4D8: .4byte gSaveBlock1Ptr -_0815E4DC: .4byte 0x00003d34 -_0815E4E0: .4byte 0x00003d42 -_0815E4E4: .4byte gSpecialVar_Result -_0815E4E8: - ldr r4, _0815E520 @ =0x00003d38 - adds r0, r1, r4 - adds r0, r2, r0 - adds r0, 0x4 - bl sub_815EDDC - ldr r3, [r6] - ldr r2, _0815E524 @ =0x00003d34 - adds r1, r3, r2 - ldr r2, [r1] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r4, r3, r4 - adds r4, r1 - ldr r4, [r4] - cmp r0, r4 - bls _0815E530 - adds r0, r1, r3 - ldr r3, _0815E528 @ =0x00003d3c - adds r0, r3 - adds r1, r4, 0 - bl sub_815EDF4 - ldr r0, _0815E52C @ =gSpecialVar_Result - strh r5, [r0] - b _0815E536 - .align 2, 0 -_0815E520: .4byte 0x00003d38 -_0815E524: .4byte 0x00003d34 -_0815E528: .4byte 0x00003d3c -_0815E52C: .4byte gSpecialVar_Result -_0815E530: - ldr r1, _0815E55C @ =gSpecialVar_Result - movs r0, 0x1 -_0815E534: - strh r0, [r1] -_0815E536: - ldr r0, _0815E560 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E564 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r3, _0815E568 @ =0x00003d42 - adds r1, r3 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815E55C: .4byte gSpecialVar_Result -_0815E560: .4byte gSaveBlock1Ptr -_0815E564: .4byte 0x00003d34 -_0815E568: .4byte 0x00003d42 - thumb_func_end sub_815E4B0 - - thumb_func_start sub_815E56C -sub_815E56C: @ 815E56C - push {r4,lr} - ldr r0, _0815E5A0 @ =gSaveBlock1Ptr - ldr r4, [r0] - ldr r1, _0815E5A4 @ =0x00003d34 - adds r0, r4, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, r3 - ldr r1, _0815E5A8 @ =0x00003d42 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _0815E5BA - subs r1, 0xA - adds r0, r4, r1 - adds r2, r0, r3 - ldr r1, [r2] - ldr r0, _0815E5AC @ =0x00034bbe - cmp r1, r0 - bls _0815E5B0 - adds r0, 0x1 - str r0, [r2] - b _0815E5BA - .align 2, 0 -_0815E5A0: .4byte gSaveBlock1Ptr -_0815E5A4: .4byte 0x00003d34 -_0815E5A8: .4byte 0x00003d42 -_0815E5AC: .4byte 0x00034bbe -_0815E5B0: - ldr r1, _0815E5C0 @ =0x00003d38 - adds r0, r3, r1 - adds r0, r4, r0 - bl SetVBlankCounter1Ptr -_0815E5BA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815E5C0: .4byte 0x00003d38 - thumb_func_end sub_815E56C - - thumb_func_start sub_815E5C4 -sub_815E5C4: @ 815E5C4 - ldr r0, _0815E5E4 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E5E8 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E5EC @ =0x00003d42 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_0815E5E4: .4byte gSaveBlock1Ptr -_0815E5E8: .4byte 0x00003d34 -_0815E5EC: .4byte 0x00003d42 - thumb_func_end sub_815E5C4 - thumb_func_start sub_815E5F0 sub_815E5F0: @ 815E5F0 push {lr} @@ -1450,4 +962,59 @@ _0815EDD4: .4byte gUnknown_83FE998 _0815EDD8: .4byte gUnknown_83FE9C4 thumb_func_end sub_815EC8C + thumb_func_start sub_815EDDC +sub_815EDDC: @ 815EDDC + ldr r1, _0815EDF0 @ =gSaveBlock2Ptr + ldr r1, [r1] + movs r2, 0xF2 + lsls r2, 4 + adds r1, r2 + ldr r0, [r0] + ldr r1, [r1] + eors r0, r1 + bx lr + .align 2, 0 +_0815EDF0: .4byte gSaveBlock2Ptr + thumb_func_end sub_815EDDC + + thumb_func_start sub_815EDF4 +sub_815EDF4: @ 815EDF4 + ldr r2, _0815EE08 @ =gSaveBlock2Ptr + ldr r2, [r2] + movs r3, 0xF2 + lsls r3, 4 + adds r2, r3 + ldr r2, [r2] + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_0815EE08: .4byte gSaveBlock2Ptr + thumb_func_end sub_815EDF4 + + thumb_func_start sub_815EE0C +sub_815EE0C: @ 815EE0C + push {r4-r6,lr} + ldr r6, _0815EE30 @ =gSaveBlock1Ptr + ldr r5, _0815EE34 @ =0x00003d38 + movs r4, 0x3 +_0815EE14: + ldr r0, [r6] + adds r0, r5 + adds r0, 0x4 + ldr r1, _0815EE38 @ =0x00034bbf + bl sub_815EDF4 + adds r5, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _0815EE14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815EE30: .4byte gSaveBlock1Ptr +_0815EE34: .4byte 0x00003d38 +_0815EE38: .4byte 0x00034bbf + thumb_func_end sub_815EE0C + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815EDDC.s b/asm/unk_815EDDC.s index 116458940..16db54083 100644 --- a/asm/unk_815EDDC.s +++ b/asm/unk_815EDDC.s @@ -5,61 +5,6 @@ .text - thumb_func_start sub_815EDDC -sub_815EDDC: @ 815EDDC - ldr r1, _0815EDF0 @ =gSaveBlock2Ptr - ldr r1, [r1] - movs r2, 0xF2 - lsls r2, 4 - adds r1, r2 - ldr r0, [r0] - ldr r1, [r1] - eors r0, r1 - bx lr - .align 2, 0 -_0815EDF0: .4byte gSaveBlock2Ptr - thumb_func_end sub_815EDDC - - thumb_func_start sub_815EDF4 -sub_815EDF4: @ 815EDF4 - ldr r2, _0815EE08 @ =gSaveBlock2Ptr - ldr r2, [r2] - movs r3, 0xF2 - lsls r3, 4 - adds r2, r3 - ldr r2, [r2] - eors r2, r1 - str r2, [r0] - bx lr - .align 2, 0 -_0815EE08: .4byte gSaveBlock2Ptr - thumb_func_end sub_815EDF4 - - thumb_func_start sub_815EE0C -sub_815EE0C: @ 815EE0C - push {r4-r6,lr} - ldr r6, _0815EE30 @ =gSaveBlock1Ptr - ldr r5, _0815EE34 @ =0x00003d38 - movs r4, 0x3 -_0815EE14: - ldr r0, [r6] - adds r0, r5 - adds r0, 0x4 - ldr r1, _0815EE38 @ =0x00034bbf - bl sub_815EDF4 - adds r5, 0xC - subs r4, 0x1 - cmp r4, 0 - bge _0815EE14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815EE30: .4byte gSaveBlock1Ptr -_0815EE34: .4byte 0x00003d38 -_0815EE38: .4byte 0x00034bbf - thumb_func_end sub_815EE0C - thumb_func_start sub_815EE3C sub_815EE3C: @ 815EE3C ldr r1, _0815EE50 @ =gSaveBlock2Ptr diff --git a/data/trainer_tower.s b/data/trainer_tower.s index f90d1dd2b..6065500b5 100644 --- a/data/trainer_tower.s +++ b/data/trainer_tower.s @@ -1,5 +1,7 @@ +#include "constants/items.h" .include "asm/macros.inc" - .include "constants/constants.inc" + .include "constants/gba_constants.inc" + .include "constants/misc_constants.inc" .section .rodata @@ -562,7 +564,21 @@ gUnknown_847A284:: @ 847A284 .2byte 0x0131, 0x0175, 0x017d gUnknown_847A2B4:: @ 847A2B4 - .2byte 0x3f, 0x40, 0x41, 0x42, 0x43, 0x46, 0xb3, 0xb4, 0xb9, 0xba, 0xbb, 0xc6, 0xc7, 0xc9, 0xda + .2byte ITEM_HP_UP + .2byte ITEM_PROTEIN + .2byte ITEM_IRON + .2byte ITEM_CARBOS + .2byte ITEM_CALCIUM + .2byte ITEM_ZINC + .2byte ITEM_BRIGHT_POWDER + .2byte ITEM_WHITE_HERB + .2byte ITEM_MENTAL_HERB + .2byte ITEM_CHOICE_BAND + .2byte ITEM_KINGS_ROCK + .2byte ITEM_SCOPE_LENS + .2byte ITEM_METAL_COAT + .2byte ITEM_DRAGON_SCALE + .2byte ITEM_UP_GRADE gUnknown_847A2D2:: @ 847A2D2 .2byte 0x011d diff --git a/include/global.h b/include/global.h index 0ff9d67df..f418ff757 100644 --- a/include/global.h +++ b/include/global.h @@ -714,6 +714,14 @@ struct TrainerTowerLog u32 unk0; u32 unk4; u8 unk8; + u8 unk9; + u8 unkA_0:1; + u8 unkA_1:1; + u8 unkA_2:1; + u8 unkA_3:1; + u8 unkA_4:1; + u8 unkA_5:1; + u8 unkA_6:2; }; struct SaveBlock1 diff --git a/include/item.h b/include/item.h index 75c56c94d..bc1a49766 100644 --- a/include/item.h +++ b/include/item.h @@ -63,5 +63,6 @@ u16 itemid_get_market_price(u16 itemId); void sub_809A2DC(void); void sub_809A2A4(void); void sub_8099E90(u16, u8 *); +bool8 sub_809A084(u16 itemId, u16 amount); #endif // ITEM_H diff --git a/include/main.h b/include/main.h index 3fb254c95..6e9d2a25d 100644 --- a/include/main.h +++ b/include/main.h @@ -66,6 +66,7 @@ void DoSoftReset(void); void ClearPokemonCrySongs(void); void RestoreSerialTimer3IntrHandlers(void); void SetVBlankCounter1Ptr(u32 *ptr); +void DisableVBlankCounter1(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; diff --git a/src/trainer_tower.c b/src/trainer_tower.c index eb9637b71..b196c49f7 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -17,6 +17,7 @@ #include "battle.h" #include "battle_2.h" #include "overworld.h" +#include "item.h" struct UnkStruct_8479D34 { @@ -42,7 +43,8 @@ struct UnkSubstruct_203F458_000C_004 struct UnkSubstruct_203F458_000C { - /* 0x000 */ u8 filler_000[2]; + /* 0x000 */ u8 unk_000; + /* 0x000 */ u8 unk_001; /* 0x002 */ u8 unk_002; /* 0x003 */ u8 unk_003; /* 0x004 */ struct UnkSubstruct_203F458_000C_004 unk_004[3]; @@ -128,14 +130,17 @@ void sub_815E948(void); void sub_815E9C8(void); void sub_815E9FC(void); void sub_815EC0C(void); +u32 sub_815EDDC(u32 *); +void sub_815EDF4(u32 *, u32); extern const struct UnkStruct_8479D34 gUnknown_8479D34[15]; +extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83]; +extern const struct UnkStruct_847A024 gUnknown_847A024[10]; extern void (*const gUnknown_847A230[])(void); extern const struct Unk_203F458_Header gUnknown_84827AC; extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8]; extern const u16 gUnknown_847A284[8][3]; -extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83]; -extern const struct UnkStruct_847A024 gUnknown_847A024[10]; +extern const u16 gUnknown_847A2B4[]; bool32 sub_815D7BC(void * dest, void * buffer) { @@ -771,3 +776,85 @@ void sub_815E1F0(void) { gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8++; } + +void sub_815E218(void) +{ + u16 mapDataId = gMapHeader.mapDataId; + if (mapDataId - 0x12A == gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 && mapDataId - 0x129 <= gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_001) + gSpecialVar_Result = FALSE; + else + gSpecialVar_Result = TRUE; +} + +void sub_815E28C(void) +{ + gSaveBlock1Ptr->unkArrayIdx = gSpecialVar_0x8005; + if (gSaveBlock1Ptr->unkArrayIdx >= NELEMS(gSaveBlock1Ptr->unkArray)) + gSaveBlock1Ptr->unkArrayIdx = 0; + sub_815EC0C(); + if (!sub_815D834()) + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_5 = TRUE; + else + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_5 = FALSE; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 = 0; + SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 0; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2 = FALSE; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1 = FALSE; +} + +void sub_815E394(void) +{ + DisableVBlankCounter1(); + gSpecialVar_Result = 0; + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2) + gSpecialVar_Result++; + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 && gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1) + gSpecialVar_Result++; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2 = TRUE; +} + +void sub_815E408(void) +{ + u16 itemId = gUnknown_847A2B4[gUnknown_203F458->unk_0004.unk_0008->unk_003]; + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0) + gSpecialVar_Result = 2; + else if (sub_809A084(itemId, 1) == 1) + { + sub_8099E90(itemId, gStringVar2); + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 = TRUE; + gSpecialVar_Result = 0; + } + else + gSpecialVar_Result = 1; +} + +void sub_815E4B0(void) +{ + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1) + gSpecialVar_Result = 2; + else if (sub_815EDDC(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4) > gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0) + { + sub_815EDF4(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4, gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); + gSpecialVar_Result = 0; + } + else + gSpecialVar_Result = 1; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1 = TRUE; +} + +void sub_815E56C(void) +{ + if (!gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2) + { + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 >= 215999) + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 215999; + else + SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); + } +} + +void sub_815E5C4(void) +{ + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3 = 1; +} From 3130e68f89634b226c70ff771ddfa27c488e95d5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Jan 2019 20:22:44 -0500 Subject: [PATCH 003/318] Dump map groups and pointers --- asm/overworld.s | 4 +- data/data.s | 8 +- data/maps/groups.inc | 1830 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1837 insertions(+), 5 deletions(-) create mode 100644 data/maps/groups.inc diff --git a/asm/overworld.s b/asm/overworld.s index 2b3ca139d..5f1e198ac 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -825,7 +825,7 @@ _08055232: get_mapheader_by_bank_and_number: @ 8055238 lsls r0, 16 lsls r1, 16 - ldr r2, _0805524C @ =gUnknown_83526A8 + ldr r2, _0805524C @ =gMapGroups lsrs r0, 14 adds r0, r2 ldr r0, [r0] @@ -834,7 +834,7 @@ get_mapheader_by_bank_and_number: @ 8055238 ldr r0, [r1] bx lr .align 2, 0 -_0805524C: .4byte gUnknown_83526A8 +_0805524C: .4byte gMapGroups thumb_func_end get_mapheader_by_bank_and_number thumb_func_start warp1_get_mapheader diff --git a/data/data.s b/data/data.s index 505dde2c1..b02f4b451 100644 --- a/data/data.s +++ b/data/data.s @@ -930,10 +930,12 @@ gUnknown_82E55CC:: @ 82E55CC .incbin "baserom.gba", 0x2E55CC, 0x695C0 gUnknown_834EB8C:: @ 834EB8C - .incbin "baserom.gba", 0x34EB8C, 0x3B1C + .incbin "baserom.gba", 0x34EB8C, 0x5FC -gUnknown_83526A8:: @ 83526A8 - .incbin "baserom.gba", 0x3526A8, 0x844 + .include "data/maps/groups.inc" + +gUnknown_8352754:: @ 8352754 + .incbin "baserom.gba", 0x352754, 0x798 gUnknown_8352EEC:: @ 8352EEC .incbin "baserom.gba", 0x352EEC, 0x4 diff --git a/data/maps/groups.inc b/data/maps/groups.inc new file mode 100644 index 000000000..27168da81 --- /dev/null +++ b/data/maps/groups.inc @@ -0,0 +1,1830 @@ +gMap_00_00:: @ 834F188 + .incbin "baserom.gba", 0x34F188, 0x1C + +gMap_00_01:: @ 834F1A4 + .incbin "baserom.gba", 0x34F1A4, 0x1C + +gMap_00_02:: @ 834F1C0 + .incbin "baserom.gba", 0x34F1C0, 0x1C + +gMap_00_03:: @ 834F1DC + .incbin "baserom.gba", 0x34F1DC, 0x1C + +gMap_00_04:: @ 834F1F8 + .incbin "baserom.gba", 0x34F1F8, 0x1C + +gMap_01_00:: @ 834F214 + .incbin "baserom.gba", 0x34F214, 0x1C + +gMap_01_01:: @ 834F230 + .incbin "baserom.gba", 0x34F230, 0x1C + +gMap_01_02:: @ 834F24C + .incbin "baserom.gba", 0x34F24C, 0x1C + +gMap_01_03:: @ 834F268 + .incbin "baserom.gba", 0x34F268, 0x1C + +gMap_01_04:: @ 834F284 + .incbin "baserom.gba", 0x34F284, 0x1C + +gMap_01_05:: @ 834F2A0 + .incbin "baserom.gba", 0x34F2A0, 0x1C + +gMap_01_06:: @ 834F2BC + .incbin "baserom.gba", 0x34F2BC, 0x1C + +gMap_01_07:: @ 834F2D8 + .incbin "baserom.gba", 0x34F2D8, 0x1C + +gMap_01_08:: @ 834F2F4 + .incbin "baserom.gba", 0x34F2F4, 0x1C + +gMap_01_09:: @ 834F310 + .incbin "baserom.gba", 0x34F310, 0x1C + +gMap_01_10:: @ 834F32C + .incbin "baserom.gba", 0x34F32C, 0x1C + +gMap_01_11:: @ 834F348 + .incbin "baserom.gba", 0x34F348, 0x1C + +gMap_01_12:: @ 834F364 + .incbin "baserom.gba", 0x34F364, 0x1C + +gMap_01_13:: @ 834F380 + .incbin "baserom.gba", 0x34F380, 0x1C + +gMap_01_14:: @ 834F39C + .incbin "baserom.gba", 0x34F39C, 0x1C + +gMap_01_15:: @ 834F3B8 + .incbin "baserom.gba", 0x34F3B8, 0x1C + +gMap_01_16:: @ 834F3D4 + .incbin "baserom.gba", 0x34F3D4, 0x1C + +gMap_01_17:: @ 834F3F0 + .incbin "baserom.gba", 0x34F3F0, 0x1C + +gMap_01_18:: @ 834F40C + .incbin "baserom.gba", 0x34F40C, 0x1C + +gMap_01_19:: @ 834F428 + .incbin "baserom.gba", 0x34F428, 0x1C + +gMap_01_20:: @ 834F444 + .incbin "baserom.gba", 0x34F444, 0x1C + +gMap_01_21:: @ 834F460 + .incbin "baserom.gba", 0x34F460, 0x1C + +gMap_01_22:: @ 834F47C + .incbin "baserom.gba", 0x34F47C, 0x1C + +gMap_01_23:: @ 834F498 + .incbin "baserom.gba", 0x34F498, 0x1C + +gMap_01_24:: @ 834F4B4 + .incbin "baserom.gba", 0x34F4B4, 0x1C + +gMap_01_25:: @ 834F4D0 + .incbin "baserom.gba", 0x34F4D0, 0x1C + +gMap_01_26:: @ 834F4EC + .incbin "baserom.gba", 0x34F4EC, 0x1C + +gMap_01_27:: @ 834F508 + .incbin "baserom.gba", 0x34F508, 0x1C + +gMap_01_28:: @ 834F524 + .incbin "baserom.gba", 0x34F524, 0x1C + +gMap_01_29:: @ 834F540 + .incbin "baserom.gba", 0x34F540, 0x1C + +gMap_01_30:: @ 834F55C + .incbin "baserom.gba", 0x34F55C, 0x1C + +gMap_01_31:: @ 834F578 + .incbin "baserom.gba", 0x34F578, 0x1C + +gMap_01_32:: @ 834F594 + .incbin "baserom.gba", 0x34F594, 0x1C + +gMap_01_33:: @ 834F5B0 + .incbin "baserom.gba", 0x34F5B0, 0x1C + +gMap_01_34:: @ 834F5CC + .incbin "baserom.gba", 0x34F5CC, 0x1C + +gMap_01_35:: @ 834F5E8 + .incbin "baserom.gba", 0x34F5E8, 0x1C + +gMap_01_36:: @ 834F604 + .incbin "baserom.gba", 0x34F604, 0x1C + +gMap_01_37:: @ 834F620 + .incbin "baserom.gba", 0x34F620, 0x1C + +gMap_01_38:: @ 834F63C + .incbin "baserom.gba", 0x34F63C, 0x1C + +gMap_01_39:: @ 834F658 + .incbin "baserom.gba", 0x34F658, 0x1C + +gMap_01_40:: @ 834F674 + .incbin "baserom.gba", 0x34F674, 0x1C + +gMap_01_41:: @ 834F690 + .incbin "baserom.gba", 0x34F690, 0x1C + +gMap_01_42:: @ 834F6AC + .incbin "baserom.gba", 0x34F6AC, 0x1C + +gMap_01_43:: @ 834F6C8 + .incbin "baserom.gba", 0x34F6C8, 0x1C + +gMap_01_44:: @ 834F6E4 + .incbin "baserom.gba", 0x34F6E4, 0x1C + +gMap_01_45:: @ 834F700 + .incbin "baserom.gba", 0x34F700, 0x1C + +gMap_01_46:: @ 834F71C + .incbin "baserom.gba", 0x34F71C, 0x1C + +gMap_01_47:: @ 834F738 + .incbin "baserom.gba", 0x34F738, 0x1C + +gMap_01_48:: @ 834F754 + .incbin "baserom.gba", 0x34F754, 0x1C + +gMap_01_49:: @ 834F770 + .incbin "baserom.gba", 0x34F770, 0x1C + +gMap_01_50:: @ 834F78C + .incbin "baserom.gba", 0x34F78C, 0x1C + +gMap_01_51:: @ 834F7A8 + .incbin "baserom.gba", 0x34F7A8, 0x1C + +gMap_01_52:: @ 834F7C4 + .incbin "baserom.gba", 0x34F7C4, 0x1C + +gMap_01_53:: @ 834F7E0 + .incbin "baserom.gba", 0x34F7E0, 0x1C + +gMap_01_54:: @ 834F7FC + .incbin "baserom.gba", 0x34F7FC, 0x1C + +gMap_01_55:: @ 834F818 + .incbin "baserom.gba", 0x34F818, 0x1C + +gMap_01_56:: @ 834F834 + .incbin "baserom.gba", 0x34F834, 0x1C + +gMap_01_57:: @ 834F850 + .incbin "baserom.gba", 0x34F850, 0x1C + +gMap_01_58:: @ 834F86C + .incbin "baserom.gba", 0x34F86C, 0x1C + +gMap_01_59:: @ 834F888 + .incbin "baserom.gba", 0x34F888, 0x1C + +gMap_01_60:: @ 834F8A4 + .incbin "baserom.gba", 0x34F8A4, 0x1C + +gMap_01_61:: @ 834F8C0 + .incbin "baserom.gba", 0x34F8C0, 0x1C + +gMap_01_62:: @ 834F8DC + .incbin "baserom.gba", 0x34F8DC, 0x1C + +gMap_01_63:: @ 834F8F8 + .incbin "baserom.gba", 0x34F8F8, 0x1C + +gMap_01_64:: @ 834F914 + .incbin "baserom.gba", 0x34F914, 0x1C + +gMap_01_65:: @ 834F930 + .incbin "baserom.gba", 0x34F930, 0x1C + +gMap_01_66:: @ 834F94C + .incbin "baserom.gba", 0x34F94C, 0x1C + +gMap_01_67:: @ 834F968 + .incbin "baserom.gba", 0x34F968, 0x1C + +gMap_01_68:: @ 834F984 + .incbin "baserom.gba", 0x34F984, 0x1C + +gMap_01_69:: @ 834F9A0 + .incbin "baserom.gba", 0x34F9A0, 0x1C + +gMap_01_70:: @ 834F9BC + .incbin "baserom.gba", 0x34F9BC, 0x1C + +gMap_01_71:: @ 834F9D8 + .incbin "baserom.gba", 0x34F9D8, 0x1C + +gMap_01_72:: @ 834F9F4 + .incbin "baserom.gba", 0x34F9F4, 0x1C + +gMap_01_73:: @ 834FA10 + .incbin "baserom.gba", 0x34FA10, 0x1C + +gMap_01_74:: @ 834FA2C + .incbin "baserom.gba", 0x34FA2C, 0x1C + +gMap_01_75:: @ 834FA48 + .incbin "baserom.gba", 0x34FA48, 0x1C + +gMap_01_76:: @ 834FA64 + .incbin "baserom.gba", 0x34FA64, 0x1C + +gMap_01_77:: @ 834FA80 + .incbin "baserom.gba", 0x34FA80, 0x1C + +gMap_01_78:: @ 834FA9C + .incbin "baserom.gba", 0x34FA9C, 0x1C + +gMap_01_79:: @ 834FAB8 + .incbin "baserom.gba", 0x34FAB8, 0x1C + +gMap_01_80:: @ 834FAD4 + .incbin "baserom.gba", 0x34FAD4, 0x1C + +gMap_01_81:: @ 834FAF0 + .incbin "baserom.gba", 0x34FAF0, 0x1C + +gMap_01_82:: @ 834FB0C + .incbin "baserom.gba", 0x34FB0C, 0x1C + +gMap_01_83:: @ 834FB28 + .incbin "baserom.gba", 0x34FB28, 0x1C + +gMap_01_84:: @ 834FB44 + .incbin "baserom.gba", 0x34FB44, 0x1C + +gMap_01_85:: @ 834FB60 + .incbin "baserom.gba", 0x34FB60, 0x1C + +gMap_01_86:: @ 834FB7C + .incbin "baserom.gba", 0x34FB7C, 0x1C + +gMap_01_87:: @ 834FB98 + .incbin "baserom.gba", 0x34FB98, 0x1C + +gMap_01_88:: @ 834FBB4 + .incbin "baserom.gba", 0x34FBB4, 0x1C + +gMap_01_89:: @ 834FBD0 + .incbin "baserom.gba", 0x34FBD0, 0x1C + +gMap_01_90:: @ 834FBEC + .incbin "baserom.gba", 0x34FBEC, 0x1C + +gMap_01_91:: @ 834FC08 + .incbin "baserom.gba", 0x34FC08, 0x1C + +gMap_01_92:: @ 834FC24 + .incbin "baserom.gba", 0x34FC24, 0x1C + +gMap_01_93:: @ 834FC40 + .incbin "baserom.gba", 0x34FC40, 0x1C + +gMap_01_94:: @ 834FC5C + .incbin "baserom.gba", 0x34FC5C, 0x1C + +gMap_01_95:: @ 834FC78 + .incbin "baserom.gba", 0x34FC78, 0x1C + +gMap_01_96:: @ 834FC94 + .incbin "baserom.gba", 0x34FC94, 0x1C + +gMap_01_97:: @ 834FCB0 + .incbin "baserom.gba", 0x34FCB0, 0x1C + +gMap_01_98:: @ 834FCCC + .incbin "baserom.gba", 0x34FCCC, 0x1C + +gMap_01_99:: @ 834FCE8 + .incbin "baserom.gba", 0x34FCE8, 0x1C + +gMap_01_100:: @ 834FD04 + .incbin "baserom.gba", 0x34FD04, 0x1C + +gMap_01_101:: @ 834FD20 + .incbin "baserom.gba", 0x34FD20, 0x1C + +gMap_01_102:: @ 834FD3C + .incbin "baserom.gba", 0x34FD3C, 0x1C + +gMap_01_103:: @ 834FD58 + .incbin "baserom.gba", 0x34FD58, 0x1C + +gMap_01_104:: @ 834FD74 + .incbin "baserom.gba", 0x34FD74, 0x1C + +gMap_01_105:: @ 834FD90 + .incbin "baserom.gba", 0x34FD90, 0x1C + +gMap_01_106:: @ 834FDAC + .incbin "baserom.gba", 0x34FDAC, 0x1C + +gMap_01_107:: @ 834FDC8 + .incbin "baserom.gba", 0x34FDC8, 0x1C + +gMap_01_108:: @ 834FDE4 + .incbin "baserom.gba", 0x34FDE4, 0x1C + +gMap_01_109:: @ 834FE00 + .incbin "baserom.gba", 0x34FE00, 0x1C + +gMap_01_110:: @ 834FE1C + .incbin "baserom.gba", 0x34FE1C, 0x1C + +gMap_01_111:: @ 834FE38 + .incbin "baserom.gba", 0x34FE38, 0x1C + +gMap_01_112:: @ 834FE54 + .incbin "baserom.gba", 0x34FE54, 0x1C + +gMap_01_113:: @ 834FE70 + .incbin "baserom.gba", 0x34FE70, 0x1C + +gMap_01_114:: @ 834FE8C + .incbin "baserom.gba", 0x34FE8C, 0x1C + +gMap_01_115:: @ 834FEA8 + .incbin "baserom.gba", 0x34FEA8, 0x1C + +gMap_01_116:: @ 834FEC4 + .incbin "baserom.gba", 0x34FEC4, 0x1C + +gMap_01_117:: @ 834FEE0 + .incbin "baserom.gba", 0x34FEE0, 0x1C + +gMap_01_118:: @ 834FEFC + .incbin "baserom.gba", 0x34FEFC, 0x1C + +gMap_01_119:: @ 834FF18 + .incbin "baserom.gba", 0x34FF18, 0x1C + +gMap_01_120:: @ 834FF34 + .incbin "baserom.gba", 0x34FF34, 0x1C + +gMap_01_121:: @ 834FF50 + .incbin "baserom.gba", 0x34FF50, 0x1C + +gMap_01_122:: @ 834FF6C + .incbin "baserom.gba", 0x34FF6C, 0x1C + +gMap_02_00:: @ 834FF88 + .incbin "baserom.gba", 0x34FF88, 0x1C + +gMap_02_01:: @ 834FFA4 + .incbin "baserom.gba", 0x34FFA4, 0x1C + +gMap_02_02:: @ 834FFC0 + .incbin "baserom.gba", 0x34FFC0, 0x1C + +gMap_02_03:: @ 834FFDC + .incbin "baserom.gba", 0x34FFDC, 0x1C + +gMap_02_04:: @ 834FFF8 + .incbin "baserom.gba", 0x34FFF8, 0x1C + +gMap_02_05:: @ 8350014 + .incbin "baserom.gba", 0x350014, 0x1C + +gMap_02_06:: @ 8350030 + .incbin "baserom.gba", 0x350030, 0x1C + +gMap_02_07:: @ 835004C + .incbin "baserom.gba", 0x35004C, 0x1C + +gMap_02_08:: @ 8350068 + .incbin "baserom.gba", 0x350068, 0x1C + +gMap_02_09:: @ 8350084 + .incbin "baserom.gba", 0x350084, 0x1C + +gMap_02_10:: @ 83500A0 + .incbin "baserom.gba", 0x3500A0, 0x1C + +gMap_02_11:: @ 83500BC + .incbin "baserom.gba", 0x3500BC, 0x1C + +gMap_02_12:: @ 83500D8 + .incbin "baserom.gba", 0x3500D8, 0x1C + +gMap_02_13:: @ 83500F4 + .incbin "baserom.gba", 0x3500F4, 0x1C + +gMap_02_14:: @ 8350110 + .incbin "baserom.gba", 0x350110, 0x1C + +gMap_02_15:: @ 835012C + .incbin "baserom.gba", 0x35012C, 0x1C + +gMap_02_16:: @ 8350148 + .incbin "baserom.gba", 0x350148, 0x1C + +gMap_02_17:: @ 8350164 + .incbin "baserom.gba", 0x350164, 0x1C + +gMap_02_18:: @ 8350180 + .incbin "baserom.gba", 0x350180, 0x1C + +gMap_02_19:: @ 835019C + .incbin "baserom.gba", 0x35019C, 0x1C + +gMap_02_20:: @ 83501B8 + .incbin "baserom.gba", 0x3501B8, 0x1C + +gMap_02_21:: @ 83501D4 + .incbin "baserom.gba", 0x3501D4, 0x1C + +gMap_02_22:: @ 83501F0 + .incbin "baserom.gba", 0x3501F0, 0x1C + +gMap_02_23:: @ 835020C + .incbin "baserom.gba", 0x35020C, 0x1C + +gMap_02_24:: @ 8350228 + .incbin "baserom.gba", 0x350228, 0x1C + +gMap_02_25:: @ 8350244 + .incbin "baserom.gba", 0x350244, 0x1C + +gMap_02_26:: @ 8350260 + .incbin "baserom.gba", 0x350260, 0x1C + +gMap_02_27:: @ 835027C + .incbin "baserom.gba", 0x35027C, 0x1C + +gMap_02_28:: @ 8350298 + .incbin "baserom.gba", 0x350298, 0x1C + +gMap_02_29:: @ 83502B4 + .incbin "baserom.gba", 0x3502B4, 0x1C + +gMap_02_30:: @ 83502D0 + .incbin "baserom.gba", 0x3502D0, 0x1C + +gMap_02_31:: @ 83502EC + .incbin "baserom.gba", 0x3502EC, 0x1C + +gMap_02_32:: @ 8350308 + .incbin "baserom.gba", 0x350308, 0x1C + +gMap_02_33:: @ 8350324 + .incbin "baserom.gba", 0x350324, 0x1C + +gMap_02_34:: @ 8350340 + .incbin "baserom.gba", 0x350340, 0x1C + +gMap_02_35:: @ 835035C + .incbin "baserom.gba", 0x35035C, 0x1C + +gMap_02_36:: @ 8350378 + .incbin "baserom.gba", 0x350378, 0x1C + +gMap_02_37:: @ 8350394 + .incbin "baserom.gba", 0x350394, 0x1C + +gMap_02_38:: @ 83503B0 + .incbin "baserom.gba", 0x3503B0, 0x1C + +gMap_02_39:: @ 83503CC + .incbin "baserom.gba", 0x3503CC, 0x1C + +gMap_02_40:: @ 83503E8 + .incbin "baserom.gba", 0x3503E8, 0x1C + +gMap_02_41:: @ 8350404 + .incbin "baserom.gba", 0x350404, 0x1C + +gMap_02_42:: @ 8350420 + .incbin "baserom.gba", 0x350420, 0x1C + +gMap_02_43:: @ 835043C + .incbin "baserom.gba", 0x35043C, 0x1C + +gMap_02_44:: @ 8350458 + .incbin "baserom.gba", 0x350458, 0x1C + +gMap_02_45:: @ 8350474 + .incbin "baserom.gba", 0x350474, 0x1C + +gMap_02_46:: @ 8350490 + .incbin "baserom.gba", 0x350490, 0x1C + +gMap_02_47:: @ 83504AC + .incbin "baserom.gba", 0x3504AC, 0x1C + +gMap_02_48:: @ 83504C8 + .incbin "baserom.gba", 0x3504C8, 0x1C + +gMap_02_49:: @ 83504E4 + .incbin "baserom.gba", 0x3504E4, 0x1C + +gMap_02_50:: @ 8350500 + .incbin "baserom.gba", 0x350500, 0x1C + +gMap_02_51:: @ 835051C + .incbin "baserom.gba", 0x35051C, 0x1C + +gMap_02_52:: @ 8350538 + .incbin "baserom.gba", 0x350538, 0x1C + +gMap_02_53:: @ 8350554 + .incbin "baserom.gba", 0x350554, 0x1C + +gMap_02_54:: @ 8350570 + .incbin "baserom.gba", 0x350570, 0x1C + +gMap_02_55:: @ 835058C + .incbin "baserom.gba", 0x35058C, 0x1C + +gMap_02_56:: @ 83505A8 + .incbin "baserom.gba", 0x3505A8, 0x1C + +gMap_02_57:: @ 83505C4 + .incbin "baserom.gba", 0x3505C4, 0x1C + +gMap_02_58:: @ 83505E0 + .incbin "baserom.gba", 0x3505E0, 0x1C + +gMap_02_59:: @ 83505FC + .incbin "baserom.gba", 0x3505FC, 0x1C + +gMap_03_00:: @ 8350618 + .incbin "baserom.gba", 0x350618, 0x1C + +gMap_03_01:: @ 8350634 + .incbin "baserom.gba", 0x350634, 0x1C + +gMap_03_02:: @ 8350650 + .incbin "baserom.gba", 0x350650, 0x1C + +gMap_03_03:: @ 835066C + .incbin "baserom.gba", 0x35066C, 0x1C + +gMap_03_04:: @ 8350688 + .incbin "baserom.gba", 0x350688, 0x1C + +gMap_03_05:: @ 83506A4 + .incbin "baserom.gba", 0x3506A4, 0x1C + +gMap_03_06:: @ 83506C0 + .incbin "baserom.gba", 0x3506C0, 0x1C + +gMap_03_07:: @ 83506DC + .incbin "baserom.gba", 0x3506DC, 0x1C + +gMap_03_08:: @ 83506F8 + .incbin "baserom.gba", 0x3506F8, 0x1C + +gMap_03_09:: @ 8350714 + .incbin "baserom.gba", 0x350714, 0x1C + +gMap_03_10:: @ 8350730 + .incbin "baserom.gba", 0x350730, 0x1C + +gMap_03_11:: @ 835074C + .incbin "baserom.gba", 0x35074C, 0x1C + +gMap_03_12:: @ 8350768 + .incbin "baserom.gba", 0x350768, 0x1C + +gMap_03_13:: @ 8350784 + .incbin "baserom.gba", 0x350784, 0x1C + +gMap_03_14:: @ 83507A0 + .incbin "baserom.gba", 0x3507A0, 0x1C + +gMap_03_15:: @ 83507BC + .incbin "baserom.gba", 0x3507BC, 0x1C + +gMap_03_16:: @ 83507D8 + .incbin "baserom.gba", 0x3507D8, 0x1C + +gMap_03_17:: @ 83507F4 + .incbin "baserom.gba", 0x3507F4, 0x1C + +gMap_03_18:: @ 8350810 + .incbin "baserom.gba", 0x350810, 0x1C + +gMap_03_19:: @ 835082C + .incbin "baserom.gba", 0x35082C, 0x1C + +gMap_03_20:: @ 8350848 + .incbin "baserom.gba", 0x350848, 0x1C + +gMap_03_21:: @ 8350864 + .incbin "baserom.gba", 0x350864, 0x1C + +gMap_03_22:: @ 8350880 + .incbin "baserom.gba", 0x350880, 0x1C + +gMap_03_23:: @ 835089C + .incbin "baserom.gba", 0x35089C, 0x1C + +gMap_03_24:: @ 83508B8 + .incbin "baserom.gba", 0x3508B8, 0x1C + +gMap_03_25:: @ 83508D4 + .incbin "baserom.gba", 0x3508D4, 0x1C + +gMap_03_26:: @ 83508F0 + .incbin "baserom.gba", 0x3508F0, 0x1C + +gMap_03_27:: @ 835090C + .incbin "baserom.gba", 0x35090C, 0x1C + +gMap_03_28:: @ 8350928 + .incbin "baserom.gba", 0x350928, 0x1C + +gMap_03_29:: @ 8350944 + .incbin "baserom.gba", 0x350944, 0x1C + +gMap_03_30:: @ 8350960 + .incbin "baserom.gba", 0x350960, 0x1C + +gMap_03_31:: @ 835097C + .incbin "baserom.gba", 0x35097C, 0x1C + +gMap_03_32:: @ 8350998 + .incbin "baserom.gba", 0x350998, 0x1C + +gMap_03_33:: @ 83509B4 + .incbin "baserom.gba", 0x3509B4, 0x1C + +gMap_03_34:: @ 83509D0 + .incbin "baserom.gba", 0x3509D0, 0x1C + +gMap_03_35:: @ 83509EC + .incbin "baserom.gba", 0x3509EC, 0x1C + +gMap_03_36:: @ 8350A08 + .incbin "baserom.gba", 0x350A08, 0x1C + +gMap_03_37:: @ 8350A24 + .incbin "baserom.gba", 0x350A24, 0x1C + +gMap_03_38:: @ 8350A40 + .incbin "baserom.gba", 0x350A40, 0x1C + +gMap_03_39:: @ 8350A5C + .incbin "baserom.gba", 0x350A5C, 0x1C + +gMap_03_40:: @ 8350A78 + .incbin "baserom.gba", 0x350A78, 0x1C + +gMap_03_41:: @ 8350A94 + .incbin "baserom.gba", 0x350A94, 0x1C + +gMap_03_42:: @ 8350AB0 + .incbin "baserom.gba", 0x350AB0, 0x1C + +gMap_03_43:: @ 8350ACC + .incbin "baserom.gba", 0x350ACC, 0x1C + +gMap_03_44:: @ 8350AE8 + .incbin "baserom.gba", 0x350AE8, 0x1C + +gMap_03_45:: @ 8350B04 + .incbin "baserom.gba", 0x350B04, 0x1C + +gMap_03_46:: @ 8350B20 + .incbin "baserom.gba", 0x350B20, 0x1C + +gMap_03_47:: @ 8350B3C + .incbin "baserom.gba", 0x350B3C, 0x1C + +gMap_03_48:: @ 8350B58 + .incbin "baserom.gba", 0x350B58, 0x1C + +gMap_03_49:: @ 8350B74 + .incbin "baserom.gba", 0x350B74, 0x1C + +gMap_03_50:: @ 8350B90 + .incbin "baserom.gba", 0x350B90, 0x1C + +gMap_03_51:: @ 8350BAC + .incbin "baserom.gba", 0x350BAC, 0x1C + +gMap_03_52:: @ 8350BC8 + .incbin "baserom.gba", 0x350BC8, 0x1C + +gMap_03_53:: @ 8350BE4 + .incbin "baserom.gba", 0x350BE4, 0x1C + +gMap_03_54:: @ 8350C00 + .incbin "baserom.gba", 0x350C00, 0x1C + +gMap_03_55:: @ 8350C1C + .incbin "baserom.gba", 0x350C1C, 0x1C + +gMap_03_56:: @ 8350C38 + .incbin "baserom.gba", 0x350C38, 0x1C + +gMap_03_57:: @ 8350C54 + .incbin "baserom.gba", 0x350C54, 0x1C + +gMap_03_58:: @ 8350C70 + .incbin "baserom.gba", 0x350C70, 0x1C + +gMap_03_59:: @ 8350C8C + .incbin "baserom.gba", 0x350C8C, 0x1C + +gMap_03_60:: @ 8350CA8 + .incbin "baserom.gba", 0x350CA8, 0x1C + +gMap_03_61:: @ 8350CC4 + .incbin "baserom.gba", 0x350CC4, 0x1C + +gMap_03_62:: @ 8350CE0 + .incbin "baserom.gba", 0x350CE0, 0x1C + +gMap_03_63:: @ 8350CFC + .incbin "baserom.gba", 0x350CFC, 0x1C + +gMap_03_64:: @ 8350D18 + .incbin "baserom.gba", 0x350D18, 0x1C + +gMap_03_65:: @ 8350D34 + .incbin "baserom.gba", 0x350D34, 0x1C + +gMap_04_00:: @ 8350D50 + .incbin "baserom.gba", 0x350D50, 0x1C + +gMap_04_01:: @ 8350D6C + .incbin "baserom.gba", 0x350D6C, 0x1C + +gMap_04_02:: @ 8350D88 + .incbin "baserom.gba", 0x350D88, 0x1C + +gMap_04_03:: @ 8350DA4 + .incbin "baserom.gba", 0x350DA4, 0x1C + +gMap_05_00:: @ 8350DC0 + .incbin "baserom.gba", 0x350DC0, 0x1C + +gMap_05_01:: @ 8350DDC + .incbin "baserom.gba", 0x350DDC, 0x1C + +gMap_05_02:: @ 8350DF8 + .incbin "baserom.gba", 0x350DF8, 0x1C + +gMap_05_03:: @ 8350E14 + .incbin "baserom.gba", 0x350E14, 0x1C + +gMap_05_04:: @ 8350E30 + .incbin "baserom.gba", 0x350E30, 0x1C + +gMap_05_05:: @ 8350E4C + .incbin "baserom.gba", 0x350E4C, 0x1C + +gMap_06_00:: @ 8350E68 + .incbin "baserom.gba", 0x350E68, 0x1C + +gMap_06_01:: @ 8350E84 + .incbin "baserom.gba", 0x350E84, 0x1C + +gMap_06_02:: @ 8350EA0 + .incbin "baserom.gba", 0x350EA0, 0x1C + +gMap_06_03:: @ 8350EBC + .incbin "baserom.gba", 0x350EBC, 0x1C + +gMap_06_04:: @ 8350ED8 + .incbin "baserom.gba", 0x350ED8, 0x1C + +gMap_06_05:: @ 8350EF4 + .incbin "baserom.gba", 0x350EF4, 0x1C + +gMap_06_06:: @ 8350F10 + .incbin "baserom.gba", 0x350F10, 0x1C + +gMap_06_07:: @ 8350F2C + .incbin "baserom.gba", 0x350F2C, 0x1C + +gMap_07_00:: @ 8350F48 + .incbin "baserom.gba", 0x350F48, 0x1C + +gMap_07_01:: @ 8350F64 + .incbin "baserom.gba", 0x350F64, 0x1C + +gMap_07_02:: @ 8350F80 + .incbin "baserom.gba", 0x350F80, 0x1C + +gMap_07_03:: @ 8350F9C + .incbin "baserom.gba", 0x350F9C, 0x1C + +gMap_07_04:: @ 8350FB8 + .incbin "baserom.gba", 0x350FB8, 0x1C + +gMap_07_05:: @ 8350FD4 + .incbin "baserom.gba", 0x350FD4, 0x1C + +gMap_07_06:: @ 8350FF0 + .incbin "baserom.gba", 0x350FF0, 0x1C + +gMap_07_07:: @ 835100C + .incbin "baserom.gba", 0x35100C, 0x1C + +gMap_07_08:: @ 8351028 + .incbin "baserom.gba", 0x351028, 0x1C + +gMap_07_09:: @ 8351044 + .incbin "baserom.gba", 0x351044, 0x1C + +gMap_08_00:: @ 8351060 + .incbin "baserom.gba", 0x351060, 0x1C + +gMap_08_01:: @ 835107C + .incbin "baserom.gba", 0x35107C, 0x1C + +gMap_08_02:: @ 8351098 + .incbin "baserom.gba", 0x351098, 0x1C + +gMap_08_03:: @ 83510B4 + .incbin "baserom.gba", 0x3510B4, 0x1C + +gMap_08_04:: @ 83510D0 + .incbin "baserom.gba", 0x3510D0, 0x1C + +gMap_08_05:: @ 83510EC + .incbin "baserom.gba", 0x3510EC, 0x1C + +gMap_09_00:: @ 8351108 + .incbin "baserom.gba", 0x351108, 0x1C + +gMap_09_01:: @ 8351124 + .incbin "baserom.gba", 0x351124, 0x1C + +gMap_09_02:: @ 8351140 + .incbin "baserom.gba", 0x351140, 0x1C + +gMap_09_03:: @ 835115C + .incbin "baserom.gba", 0x35115C, 0x1C + +gMap_09_04:: @ 8351178 + .incbin "baserom.gba", 0x351178, 0x1C + +gMap_09_05:: @ 8351194 + .incbin "baserom.gba", 0x351194, 0x1C + +gMap_09_06:: @ 83511B0 + .incbin "baserom.gba", 0x3511B0, 0x1C + +gMap_09_07:: @ 83511CC + .incbin "baserom.gba", 0x3511CC, 0x1C + +gMap_10_00:: @ 83511E8 + .incbin "baserom.gba", 0x3511E8, 0x1C + +gMap_10_01:: @ 8351204 + .incbin "baserom.gba", 0x351204, 0x1C + +gMap_10_02:: @ 8351220 + .incbin "baserom.gba", 0x351220, 0x1C + +gMap_10_03:: @ 835123C + .incbin "baserom.gba", 0x35123C, 0x1C + +gMap_10_04:: @ 8351258 + .incbin "baserom.gba", 0x351258, 0x1C + +gMap_10_05:: @ 8351274 + .incbin "baserom.gba", 0x351274, 0x1C + +gMap_10_06:: @ 8351290 + .incbin "baserom.gba", 0x351290, 0x1C + +gMap_10_07:: @ 83512AC + .incbin "baserom.gba", 0x3512AC, 0x1C + +gMap_10_08:: @ 83512C8 + .incbin "baserom.gba", 0x3512C8, 0x1C + +gMap_10_09:: @ 83512E4 + .incbin "baserom.gba", 0x3512E4, 0x1C + +gMap_10_10:: @ 8351300 + .incbin "baserom.gba", 0x351300, 0x1C + +gMap_10_11:: @ 835131C + .incbin "baserom.gba", 0x35131C, 0x1C + +gMap_10_12:: @ 8351338 + .incbin "baserom.gba", 0x351338, 0x1C + +gMap_10_13:: @ 8351354 + .incbin "baserom.gba", 0x351354, 0x1C + +gMap_10_14:: @ 8351370 + .incbin "baserom.gba", 0x351370, 0x1C + +gMap_10_15:: @ 835138C + .incbin "baserom.gba", 0x35138C, 0x1C + +gMap_10_16:: @ 83513A8 + .incbin "baserom.gba", 0x3513A8, 0x1C + +gMap_10_17:: @ 83513C4 + .incbin "baserom.gba", 0x3513C4, 0x1C + +gMap_10_18:: @ 83513E0 + .incbin "baserom.gba", 0x3513E0, 0x1C + +gMap_10_19:: @ 83513FC + .incbin "baserom.gba", 0x3513FC, 0x1C + +gMap_11_00:: @ 8351418 + .incbin "baserom.gba", 0x351418, 0x1C + +gMap_11_01:: @ 8351434 + .incbin "baserom.gba", 0x351434, 0x1C + +gMap_11_02:: @ 8351450 + .incbin "baserom.gba", 0x351450, 0x1C + +gMap_11_03:: @ 835146C + .incbin "baserom.gba", 0x35146C, 0x1C + +gMap_11_04:: @ 8351488 + .incbin "baserom.gba", 0x351488, 0x1C + +gMap_11_05:: @ 83514A4 + .incbin "baserom.gba", 0x3514A4, 0x1C + +gMap_11_06:: @ 83514C0 + .incbin "baserom.gba", 0x3514C0, 0x1C + +gMap_11_07:: @ 83514DC + .incbin "baserom.gba", 0x3514DC, 0x1C + +gMap_11_08:: @ 83514F8 + .incbin "baserom.gba", 0x3514F8, 0x1C + +gMap_11_09:: @ 8351514 + .incbin "baserom.gba", 0x351514, 0x1C + +gMap_12_00:: @ 8351530 + .incbin "baserom.gba", 0x351530, 0x1C + +gMap_12_01:: @ 835154C + .incbin "baserom.gba", 0x35154C, 0x1C + +gMap_12_02:: @ 8351568 + .incbin "baserom.gba", 0x351568, 0x1C + +gMap_12_03:: @ 8351584 + .incbin "baserom.gba", 0x351584, 0x1C + +gMap_12_04:: @ 83515A0 + .incbin "baserom.gba", 0x3515A0, 0x1C + +gMap_12_05:: @ 83515BC + .incbin "baserom.gba", 0x3515BC, 0x1C + +gMap_12_06:: @ 83515D8 + .incbin "baserom.gba", 0x3515D8, 0x1C + +gMap_12_07:: @ 83515F4 + .incbin "baserom.gba", 0x3515F4, 0x1C + +gMap_13_00:: @ 8351610 + .incbin "baserom.gba", 0x351610, 0x1C + +gMap_13_01:: @ 835162C + .incbin "baserom.gba", 0x35162C, 0x1C + +gMap_14_00:: @ 8351648 + .incbin "baserom.gba", 0x351648, 0x1C + +gMap_14_01:: @ 8351664 + .incbin "baserom.gba", 0x351664, 0x1C + +gMap_14_02:: @ 8351680 + .incbin "baserom.gba", 0x351680, 0x1C + +gMap_14_03:: @ 835169C + .incbin "baserom.gba", 0x35169C, 0x1C + +gMap_14_04:: @ 83516B8 + .incbin "baserom.gba", 0x3516B8, 0x1C + +gMap_14_05:: @ 83516D4 + .incbin "baserom.gba", 0x3516D4, 0x1C + +gMap_14_06:: @ 83516F0 + .incbin "baserom.gba", 0x3516F0, 0x1C + +gMap_14_07:: @ 835170C + .incbin "baserom.gba", 0x35170C, 0x1C + +gMap_14_08:: @ 8351728 + .incbin "baserom.gba", 0x351728, 0x1C + +gMap_14_09:: @ 8351744 + .incbin "baserom.gba", 0x351744, 0x1C + +gMap_15_00:: @ 8351760 + .incbin "baserom.gba", 0x351760, 0x1C + +gMap_15_01:: @ 835177C + .incbin "baserom.gba", 0x35177C, 0x1C + +gMap_15_02:: @ 8351798 + .incbin "baserom.gba", 0x351798, 0x1C + +gMap_15_03:: @ 83517B4 + .incbin "baserom.gba", 0x3517B4, 0x1C + +gMap_16_00:: @ 83517D0 + .incbin "baserom.gba", 0x3517D0, 0x1C + +gMap_16_01:: @ 83517EC + .incbin "baserom.gba", 0x3517EC, 0x1C + +gMap_17_00:: @ 8351808 + .incbin "baserom.gba", 0x351808, 0x1C + +gMap_17_01:: @ 8351824 + .incbin "baserom.gba", 0x351824, 0x1C + +gMap_18_00:: @ 8351840 + .incbin "baserom.gba", 0x351840, 0x1C + +gMap_18_01:: @ 835185C + .incbin "baserom.gba", 0x35185C, 0x1C + +gMap_19_00:: @ 8351878 + .incbin "baserom.gba", 0x351878, 0x1C + +gMap_20_00:: @ 8351894 + .incbin "baserom.gba", 0x351894, 0x1C + +gMap_21_00:: @ 83518B0 + .incbin "baserom.gba", 0x3518B0, 0x1C + +gMap_21_01:: @ 83518CC + .incbin "baserom.gba", 0x3518CC, 0x1C + +gMap_22_00:: @ 83518E8 + .incbin "baserom.gba", 0x3518E8, 0x1C + +gMap_22_01:: @ 8351904 + .incbin "baserom.gba", 0x351904, 0x1C + +gMap_23_00:: @ 8351920 + .incbin "baserom.gba", 0x351920, 0x1C + +gMap_23_01:: @ 835193C + .incbin "baserom.gba", 0x35193C, 0x1C + +gMap_23_02:: @ 8351958 + .incbin "baserom.gba", 0x351958, 0x1C + +gMap_24_00:: @ 8351974 + .incbin "baserom.gba", 0x351974, 0x1C + +gMap_24_01:: @ 8351990 + .incbin "baserom.gba", 0x351990, 0x1C + +gMap_25_00:: @ 83519AC + .incbin "baserom.gba", 0x3519AC, 0x1C + +gMap_25_01:: @ 83519C8 + .incbin "baserom.gba", 0x3519C8, 0x1C + +gMap_25_02:: @ 83519E4 + .incbin "baserom.gba", 0x3519E4, 0x1C + +gMap_26_00:: @ 8351A00 + .incbin "baserom.gba", 0x351A00, 0x1C + +gMap_26_01:: @ 8351A1C + .incbin "baserom.gba", 0x351A1C, 0x1C + +gMap_27_00:: @ 8351A38 + .incbin "baserom.gba", 0x351A38, 0x1C + +gMap_28_00:: @ 8351A54 + .incbin "baserom.gba", 0x351A54, 0x1C + +gMap_29_00:: @ 8351A70 + .incbin "baserom.gba", 0x351A70, 0x1C + +gMap_30_00:: @ 8351A8C + .incbin "baserom.gba", 0x351A8C, 0x1C + +gMap_31_00:: @ 8351AA8 + .incbin "baserom.gba", 0x351AA8, 0x1C + +gMap_31_01:: @ 8351AC4 + .incbin "baserom.gba", 0x351AC4, 0x1C + +gMap_31_02:: @ 8351AE0 + .incbin "baserom.gba", 0x351AE0, 0x1C + +gMap_31_03:: @ 8351AFC + .incbin "baserom.gba", 0x351AFC, 0x1C + +gMap_31_04:: @ 8351B18 + .incbin "baserom.gba", 0x351B18, 0x1C + +gMap_31_05:: @ 8351B34 + .incbin "baserom.gba", 0x351B34, 0x1C + +gMap_31_06:: @ 8351B50 + .incbin "baserom.gba", 0x351B50, 0x1C + +gMap_32_00:: @ 8351B6C + .incbin "baserom.gba", 0x351B6C, 0x1C + +gMap_32_01:: @ 8351B88 + .incbin "baserom.gba", 0x351B88, 0x1C + +gMap_32_02:: @ 8351BA4 + .incbin "baserom.gba", 0x351BA4, 0x1C + +gMap_32_03:: @ 8351BC0 + .incbin "baserom.gba", 0x351BC0, 0x1C + +gMap_32_04:: @ 8351BDC + .incbin "baserom.gba", 0x351BDC, 0x1C + +gMap_33_00:: @ 8351BF8 + .incbin "baserom.gba", 0x351BF8, 0x1C + +gMap_33_01:: @ 8351C14 + .incbin "baserom.gba", 0x351C14, 0x1C + +gMap_33_02:: @ 8351C30 + .incbin "baserom.gba", 0x351C30, 0x1C + +gMap_33_03:: @ 8351C4C + .incbin "baserom.gba", 0x351C4C, 0x1C + +gMap_33_04:: @ 8351C68 + .incbin "baserom.gba", 0x351C68, 0x1C + +gMap_34_00:: @ 8351C84 + .incbin "baserom.gba", 0x351C84, 0x1C + +gMap_34_01:: @ 8351CA0 + .incbin "baserom.gba", 0x351CA0, 0x1C + +gMap_34_02:: @ 8351CBC + .incbin "baserom.gba", 0x351CBC, 0x1C + +gMap_34_03:: @ 8351CD8 + .incbin "baserom.gba", 0x351CD8, 0x1C + +gMap_34_04:: @ 8351CF4 + .incbin "baserom.gba", 0x351CF4, 0x1C + +gMap_34_05:: @ 8351D10 + .incbin "baserom.gba", 0x351D10, 0x1C + +gMap_34_06:: @ 8351D2C + .incbin "baserom.gba", 0x351D2C, 0x1C + +gMap_34_07:: @ 8351D48 + .incbin "baserom.gba", 0x351D48, 0x1C + +gMap_35_00:: @ 8351D64 + .incbin "baserom.gba", 0x351D64, 0x1C + +gMap_35_01:: @ 8351D80 + .incbin "baserom.gba", 0x351D80, 0x1C + +gMap_35_02:: @ 8351D9C + .incbin "baserom.gba", 0x351D9C, 0x1C + +gMap_35_03:: @ 8351DB8 + .incbin "baserom.gba", 0x351DB8, 0x1C + +gMap_35_04:: @ 8351DD4 + .incbin "baserom.gba", 0x351DD4, 0x1C + +gMap_35_05:: @ 8351DF0 + .incbin "baserom.gba", 0x351DF0, 0x1C + +gMap_35_06:: @ 8351E0C + .incbin "baserom.gba", 0x351E0C, 0x1C + +gMap_35_07:: @ 8351E28 + .incbin "baserom.gba", 0x351E28, 0x1C + +gMap_36_00:: @ 8351E44 + .incbin "baserom.gba", 0x351E44, 0x1C + +gMap_36_01:: @ 8351E60 + .incbin "baserom.gba", 0x351E60, 0x1C + +gMap_36_02:: @ 8351E7C + .incbin "baserom.gba", 0x351E7C, 0x1C + +gMap_36_03:: @ 8351E98 + .incbin "baserom.gba", 0x351E98, 0x1C + +gMap_36_04:: @ 8351EB4 + .incbin "baserom.gba", 0x351EB4, 0x1C + +gMap_37_00:: @ 8351ED0 + .incbin "baserom.gba", 0x351ED0, 0x1C + +gMap_37_01:: @ 8351EEC + .incbin "baserom.gba", 0x351EEC, 0x1C + +gMap_37_02:: @ 8351F08 + .incbin "baserom.gba", 0x351F08, 0x1C + +gMap_37_03:: @ 8351F24 + .incbin "baserom.gba", 0x351F24, 0x1C + +gMap_37_04:: @ 8351F40 + .incbin "baserom.gba", 0x351F40, 0x1C + +gMap_38_00:: @ 8351F5C + .incbin "baserom.gba", 0x351F5C, 0x1C + +gMap_39_00:: @ 8351F78 + .incbin "baserom.gba", 0x351F78, 0x1C + +gMap_40_00:: @ 8351F94 + .incbin "baserom.gba", 0x351F94, 0x1C + +gMap_41_00:: @ 8351FB0 + .incbin "baserom.gba", 0x351FB0, 0x1C + +gMap_41_01:: @ 8351FCC + .incbin "baserom.gba", 0x351FCC, 0x1C + +gMap_42_00:: @ 8351FE8 + .incbin "baserom.gba", 0x351FE8, 0x1C + +gMapGroup_00:: @ 8352004 + .4byte gMap_00_00 + .4byte gMap_00_01 + .4byte gMap_00_02 + .4byte gMap_00_03 + .4byte gMap_00_04 + +gMapGroup_01:: @ 8352018 + .4byte gMap_01_00 + .4byte gMap_01_01 + .4byte gMap_01_02 + .4byte gMap_01_03 + .4byte gMap_01_04 + .4byte gMap_01_05 + .4byte gMap_01_06 + .4byte gMap_01_07 + .4byte gMap_01_08 + .4byte gMap_01_09 + .4byte gMap_01_10 + .4byte gMap_01_11 + .4byte gMap_01_12 + .4byte gMap_01_13 + .4byte gMap_01_14 + .4byte gMap_01_15 + .4byte gMap_01_16 + .4byte gMap_01_17 + .4byte gMap_01_18 + .4byte gMap_01_19 + .4byte gMap_01_20 + .4byte gMap_01_21 + .4byte gMap_01_22 + .4byte gMap_01_23 + .4byte gMap_01_24 + .4byte gMap_01_25 + .4byte gMap_01_26 + .4byte gMap_01_27 + .4byte gMap_01_28 + .4byte gMap_01_29 + .4byte gMap_01_30 + .4byte gMap_01_31 + .4byte gMap_01_32 + .4byte gMap_01_33 + .4byte gMap_01_34 + .4byte gMap_01_35 + .4byte gMap_01_36 + .4byte gMap_01_37 + .4byte gMap_01_38 + .4byte gMap_01_39 + .4byte gMap_01_40 + .4byte gMap_01_41 + .4byte gMap_01_42 + .4byte gMap_01_43 + .4byte gMap_01_44 + .4byte gMap_01_45 + .4byte gMap_01_46 + .4byte gMap_01_47 + .4byte gMap_01_48 + .4byte gMap_01_49 + .4byte gMap_01_50 + .4byte gMap_01_51 + .4byte gMap_01_52 + .4byte gMap_01_53 + .4byte gMap_01_54 + .4byte gMap_01_55 + .4byte gMap_01_56 + .4byte gMap_01_57 + .4byte gMap_01_58 + .4byte gMap_01_59 + .4byte gMap_01_60 + .4byte gMap_01_61 + .4byte gMap_01_62 + .4byte gMap_01_63 + .4byte gMap_01_64 + .4byte gMap_01_65 + .4byte gMap_01_66 + .4byte gMap_01_67 + .4byte gMap_01_68 + .4byte gMap_01_69 + .4byte gMap_01_70 + .4byte gMap_01_71 + .4byte gMap_01_72 + .4byte gMap_01_73 + .4byte gMap_01_74 + .4byte gMap_01_75 + .4byte gMap_01_76 + .4byte gMap_01_77 + .4byte gMap_01_78 + .4byte gMap_01_79 + .4byte gMap_01_80 + .4byte gMap_01_81 + .4byte gMap_01_82 + .4byte gMap_01_83 + .4byte gMap_01_84 + .4byte gMap_01_85 + .4byte gMap_01_86 + .4byte gMap_01_87 + .4byte gMap_01_88 + .4byte gMap_01_89 + .4byte gMap_01_90 + .4byte gMap_01_91 + .4byte gMap_01_92 + .4byte gMap_01_93 + .4byte gMap_01_94 + .4byte gMap_01_95 + .4byte gMap_01_96 + .4byte gMap_01_97 + .4byte gMap_01_98 + .4byte gMap_01_99 + .4byte gMap_01_100 + .4byte gMap_01_101 + .4byte gMap_01_102 + .4byte gMap_01_103 + .4byte gMap_01_104 + .4byte gMap_01_105 + .4byte gMap_01_106 + .4byte gMap_01_107 + .4byte gMap_01_108 + .4byte gMap_01_109 + .4byte gMap_01_110 + .4byte gMap_01_111 + .4byte gMap_01_112 + .4byte gMap_01_113 + .4byte gMap_01_114 + .4byte gMap_01_115 + .4byte gMap_01_116 + .4byte gMap_01_117 + .4byte gMap_01_118 + .4byte gMap_01_119 + .4byte gMap_01_120 + .4byte gMap_01_121 + .4byte gMap_01_122 + +gMapGroup_02:: @ 8352204 + .4byte gMap_02_00 + .4byte gMap_02_01 + .4byte gMap_02_02 + .4byte gMap_02_03 + .4byte gMap_02_04 + .4byte gMap_02_05 + .4byte gMap_02_06 + .4byte gMap_02_07 + .4byte gMap_02_08 + .4byte gMap_02_09 + .4byte gMap_02_10 + .4byte gMap_02_11 + .4byte gMap_02_12 + .4byte gMap_02_13 + .4byte gMap_02_14 + .4byte gMap_02_15 + .4byte gMap_02_16 + .4byte gMap_02_17 + .4byte gMap_02_18 + .4byte gMap_02_19 + .4byte gMap_02_20 + .4byte gMap_02_21 + .4byte gMap_02_22 + .4byte gMap_02_23 + .4byte gMap_02_24 + .4byte gMap_02_25 + .4byte gMap_02_26 + .4byte gMap_02_27 + .4byte gMap_02_28 + .4byte gMap_02_29 + .4byte gMap_02_30 + .4byte gMap_02_31 + .4byte gMap_02_32 + .4byte gMap_02_33 + .4byte gMap_02_34 + .4byte gMap_02_35 + .4byte gMap_02_36 + .4byte gMap_02_37 + .4byte gMap_02_38 + .4byte gMap_02_39 + .4byte gMap_02_40 + .4byte gMap_02_41 + .4byte gMap_02_42 + .4byte gMap_02_43 + .4byte gMap_02_44 + .4byte gMap_02_45 + .4byte gMap_02_46 + .4byte gMap_02_47 + .4byte gMap_02_48 + .4byte gMap_02_49 + .4byte gMap_02_50 + .4byte gMap_02_51 + .4byte gMap_02_52 + .4byte gMap_02_53 + .4byte gMap_02_54 + .4byte gMap_02_55 + .4byte gMap_02_56 + .4byte gMap_02_57 + .4byte gMap_02_58 + .4byte gMap_02_59 + +gMapGroup_03:: @ 83522F4 + .4byte gMap_03_00 + .4byte gMap_03_01 + .4byte gMap_03_02 + .4byte gMap_03_03 + .4byte gMap_03_04 + .4byte gMap_03_05 + .4byte gMap_03_06 + .4byte gMap_03_07 + .4byte gMap_03_08 + .4byte gMap_03_09 + .4byte gMap_03_10 + .4byte gMap_03_11 + .4byte gMap_03_12 + .4byte gMap_03_13 + .4byte gMap_03_14 + .4byte gMap_03_15 + .4byte gMap_03_16 + .4byte gMap_03_17 + .4byte gMap_03_18 + .4byte gMap_03_19 + .4byte gMap_03_20 + .4byte gMap_03_21 + .4byte gMap_03_22 + .4byte gMap_03_23 + .4byte gMap_03_24 + .4byte gMap_03_25 + .4byte gMap_03_26 + .4byte gMap_03_27 + .4byte gMap_03_28 + .4byte gMap_03_29 + .4byte gMap_03_30 + .4byte gMap_03_31 + .4byte gMap_03_32 + .4byte gMap_03_33 + .4byte gMap_03_34 + .4byte gMap_03_35 + .4byte gMap_03_36 + .4byte gMap_03_37 + .4byte gMap_03_38 + .4byte gMap_03_39 + .4byte gMap_03_40 + .4byte gMap_03_41 + .4byte gMap_03_42 + .4byte gMap_03_43 + .4byte gMap_03_44 + .4byte gMap_03_45 + .4byte gMap_03_46 + .4byte gMap_03_47 + .4byte gMap_03_48 + .4byte gMap_03_49 + .4byte gMap_03_50 + .4byte gMap_03_51 + .4byte gMap_03_52 + .4byte gMap_03_53 + .4byte gMap_03_54 + .4byte gMap_03_55 + .4byte gMap_03_56 + .4byte gMap_03_57 + .4byte gMap_03_58 + .4byte gMap_03_59 + .4byte gMap_03_60 + .4byte gMap_03_61 + .4byte gMap_03_62 + .4byte gMap_03_63 + .4byte gMap_03_64 + .4byte gMap_03_65 + +gMapGroup_04:: @ 83523FC + .4byte gMap_04_00 + .4byte gMap_04_01 + .4byte gMap_04_02 + .4byte gMap_04_03 + +gMapGroup_05:: @ 835240C + .4byte gMap_05_00 + .4byte gMap_05_01 + .4byte gMap_05_02 + .4byte gMap_05_03 + .4byte gMap_05_04 + .4byte gMap_05_05 + +gMapGroup_06:: @ 8352424 + .4byte gMap_06_00 + .4byte gMap_06_01 + .4byte gMap_06_02 + .4byte gMap_06_03 + .4byte gMap_06_04 + .4byte gMap_06_05 + .4byte gMap_06_06 + .4byte gMap_06_07 + +gMapGroup_07:: @ 8352444 + .4byte gMap_07_00 + .4byte gMap_07_01 + .4byte gMap_07_02 + .4byte gMap_07_03 + .4byte gMap_07_04 + .4byte gMap_07_05 + .4byte gMap_07_06 + .4byte gMap_07_07 + .4byte gMap_07_08 + .4byte gMap_07_09 + +gMapGroup_08:: @ 835246C + .4byte gMap_08_00 + .4byte gMap_08_01 + .4byte gMap_08_02 + .4byte gMap_08_03 + .4byte gMap_08_04 + .4byte gMap_08_05 + +gMapGroup_09:: @ 8352484 + .4byte gMap_09_00 + .4byte gMap_09_01 + .4byte gMap_09_02 + .4byte gMap_09_03 + .4byte gMap_09_04 + .4byte gMap_09_05 + .4byte gMap_09_06 + .4byte gMap_09_07 + +gMapGroup_10:: @ 83524A4 + .4byte gMap_10_00 + .4byte gMap_10_01 + .4byte gMap_10_02 + .4byte gMap_10_03 + .4byte gMap_10_04 + .4byte gMap_10_05 + .4byte gMap_10_06 + .4byte gMap_10_07 + .4byte gMap_10_08 + .4byte gMap_10_09 + .4byte gMap_10_10 + .4byte gMap_10_11 + .4byte gMap_10_12 + .4byte gMap_10_13 + .4byte gMap_10_14 + .4byte gMap_10_15 + .4byte gMap_10_16 + .4byte gMap_10_17 + .4byte gMap_10_18 + .4byte gMap_10_19 + +gMapGroup_11:: @ 83524F4 + .4byte gMap_11_00 + .4byte gMap_11_01 + .4byte gMap_11_02 + .4byte gMap_11_03 + .4byte gMap_11_04 + .4byte gMap_11_05 + .4byte gMap_11_06 + .4byte gMap_11_07 + .4byte gMap_11_08 + .4byte gMap_11_09 + +gMapGroup_12:: @ 835251C + .4byte gMap_12_00 + .4byte gMap_12_01 + .4byte gMap_12_02 + .4byte gMap_12_03 + .4byte gMap_12_04 + .4byte gMap_12_05 + .4byte gMap_12_06 + .4byte gMap_12_07 + +gMapGroup_13:: @ 835253C + .4byte gMap_13_00 + .4byte gMap_13_01 + +gMapGroup_14:: @ 8352544 + .4byte gMap_14_00 + .4byte gMap_14_01 + .4byte gMap_14_02 + .4byte gMap_14_03 + .4byte gMap_14_04 + .4byte gMap_14_05 + .4byte gMap_14_06 + .4byte gMap_14_07 + .4byte gMap_14_08 + .4byte gMap_14_09 + +gMapGroup_15:: @ 835256C + .4byte gMap_15_00 + .4byte gMap_15_01 + .4byte gMap_15_02 + .4byte gMap_15_03 + +gMapGroup_16:: @ 835257C + .4byte gMap_16_00 + .4byte gMap_16_01 + +gMapGroup_17:: @ 8352584 + .4byte gMap_17_00 + .4byte gMap_17_01 + +gMapGroup_18:: @ 835258C + .4byte gMap_18_00 + .4byte gMap_18_01 + +gMapGroup_19:: @ 8352594 + .4byte gMap_19_00 + +gMapGroup_20:: @ 8352598 + .4byte gMap_20_00 + +gMapGroup_21:: @ 835259C + .4byte gMap_21_00 + .4byte gMap_21_01 + +gMapGroup_22:: @ 83525A4 + .4byte gMap_22_00 + .4byte gMap_22_01 + +gMapGroup_23:: @ 83525AC + .4byte gMap_23_00 + .4byte gMap_23_01 + .4byte gMap_23_02 + +gMapGroup_24:: @ 83525B8 + .4byte gMap_24_00 + .4byte gMap_24_01 + +gMapGroup_25:: @ 83525C0 + .4byte gMap_25_00 + .4byte gMap_25_01 + .4byte gMap_25_02 + +gMapGroup_26:: @ 83525CC + .4byte gMap_26_00 + .4byte gMap_26_01 + +gMapGroup_27:: @ 83525D4 + .4byte gMap_27_00 + +gMapGroup_28:: @ 83525D8 + .4byte gMap_28_00 + +gMapGroup_29:: @ 83525DC + .4byte gMap_29_00 + +gMapGroup_30:: @ 83525E0 + .4byte gMap_30_00 + +gMapGroup_31:: @ 83525E4 + .4byte gMap_31_00 + .4byte gMap_31_01 + .4byte gMap_31_02 + .4byte gMap_31_03 + .4byte gMap_31_04 + .4byte gMap_31_05 + .4byte gMap_31_06 + +gMapGroup_32:: @ 8352600 + .4byte gMap_32_00 + .4byte gMap_32_01 + .4byte gMap_32_02 + .4byte gMap_32_03 + .4byte gMap_32_04 + +gMapGroup_33:: @ 8352614 + .4byte gMap_33_00 + .4byte gMap_33_01 + .4byte gMap_33_02 + .4byte gMap_33_03 + .4byte gMap_33_04 + +gMapGroup_34:: @ 8352628 + .4byte gMap_34_00 + .4byte gMap_34_01 + .4byte gMap_34_02 + .4byte gMap_34_03 + .4byte gMap_34_04 + .4byte gMap_34_05 + .4byte gMap_34_06 + .4byte gMap_34_07 + +gMapGroup_35:: @ 8352648 + .4byte gMap_35_00 + .4byte gMap_35_01 + .4byte gMap_35_02 + .4byte gMap_35_03 + .4byte gMap_35_04 + .4byte gMap_35_05 + .4byte gMap_35_06 + .4byte gMap_35_07 + +gMapGroup_36:: @ 8352668 + .4byte gMap_36_00 + .4byte gMap_36_01 + .4byte gMap_36_02 + .4byte gMap_36_03 + .4byte gMap_36_04 + +gMapGroup_37:: @ 835267C + .4byte gMap_37_00 + .4byte gMap_37_01 + .4byte gMap_37_02 + .4byte gMap_37_03 + .4byte gMap_37_04 + +gMapGroup_38:: @ 8352690 + .4byte gMap_38_00 + +gMapGroup_39:: @ 8352694 + .4byte gMap_39_00 + +gMapGroup_40:: @ 8352698 + .4byte gMap_40_00 + +gMapGroup_41:: @ 835269C + .4byte gMap_41_00 + .4byte gMap_41_01 + +gMapGroup_42:: @ 83526A4 + .4byte gMap_42_00 + +gMapGroups:: @ 0x83526A8 + .4byte gMapGroup_00 + .4byte gMapGroup_01 + .4byte gMapGroup_02 + .4byte gMapGroup_03 + .4byte gMapGroup_04 + .4byte gMapGroup_05 + .4byte gMapGroup_06 + .4byte gMapGroup_07 + .4byte gMapGroup_08 + .4byte gMapGroup_09 + .4byte gMapGroup_10 + .4byte gMapGroup_11 + .4byte gMapGroup_12 + .4byte gMapGroup_13 + .4byte gMapGroup_14 + .4byte gMapGroup_15 + .4byte gMapGroup_16 + .4byte gMapGroup_17 + .4byte gMapGroup_18 + .4byte gMapGroup_19 + .4byte gMapGroup_20 + .4byte gMapGroup_21 + .4byte gMapGroup_22 + .4byte gMapGroup_23 + .4byte gMapGroup_24 + .4byte gMapGroup_25 + .4byte gMapGroup_26 + .4byte gMapGroup_27 + .4byte gMapGroup_28 + .4byte gMapGroup_29 + .4byte gMapGroup_30 + .4byte gMapGroup_31 + .4byte gMapGroup_32 + .4byte gMapGroup_33 + .4byte gMapGroup_34 + .4byte gMapGroup_35 + .4byte gMapGroup_36 + .4byte gMapGroup_37 + .4byte gMapGroup_38 + .4byte gMapGroup_39 + .4byte gMapGroup_40 + .4byte gMapGroup_41 + .4byte gMapGroup_42 From 0eba7e0870f3f7e51b69a1f1a7e1e436a977f78b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Jan 2019 23:13:12 -0500 Subject: [PATCH 004/318] Start porting scrcmd from emerald --- asm/scrcmd.s | 546 +++----------------------------------- data/data_835B488.s | 18 +- data/event_scripts.s | 2 +- data/script_cmd_table.inc | 12 +- ld_script.txt | 3 + src/scrcmd.c | 223 ++++++++++++++++ sym_ewram.txt | 24 +- 7 files changed, 266 insertions(+), 562 deletions(-) create mode 100644 src/scrcmd.c diff --git a/asm/scrcmd.s b/asm/scrcmd.s index e8ffcf3ab..a4eaeb55b 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,492 +5,6 @@ .text - thumb_func_start sub_8069ED0 -sub_8069ED0: @ 8069ED0 - movs r0, 0 - bx lr - thumb_func_end sub_8069ED0 - - thumb_func_start sub_8069ED4 -sub_8069ED4: @ 8069ED4 - movs r0, 0 - bx lr - thumb_func_end sub_8069ED4 - - thumb_func_start ScrCmd_end -ScrCmd_end: @ 8069ED8 - push {lr} - bl StopScript - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_end - - thumb_func_start ScrCmd_gotonative -ScrCmd_gotonative: @ 8069EE4 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_gotonative - - thumb_func_start sub_8069EFC -sub_8069EFC: @ 8069EFC - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 14 - ldr r1, _08069F18 @ =gSpecials - adds r1, r0, r1 - ldr r0, _08069F1C @ =gStdScripts - cmp r1, r0 - bcs _08069F20 - ldr r0, [r1] - bl _call_via_r0 - b _08069F2C - .align 2, 0 -_08069F18: .4byte gSpecials -_08069F1C: .4byte gStdScripts -_08069F20: - ldr r0, _08069F34 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c" - ldr r2, _08069F38 @ =gUnknown_83A7290 "0" - movs r1, 0xF1 - movs r3, 0x1 - bl AGBAssert -_08069F2C: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_08069F34: .4byte gUnknown_83A725C -_08069F38: .4byte gUnknown_83A7290 - thumb_func_end sub_8069EFC - - thumb_func_start sub_8069F3C -sub_8069F3C: @ 8069F3C - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 14 - ldr r1, _08069F6C @ =gSpecials - adds r1, r0, r1 - ldr r0, _08069F70 @ =gStdScripts - cmp r1, r0 - bcs _08069F74 - ldr r0, [r1] - bl _call_via_r0 - strh r0, [r5] - b _08069F80 - .align 2, 0 -_08069F6C: .4byte gSpecials -_08069F70: .4byte gStdScripts -_08069F74: - ldr r0, _08069F88 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c" - ldr r1, _08069F8C @ =0x00000107 - ldr r2, _08069F90 @ =gUnknown_83A7290 "0" - movs r3, 0x1 - bl AGBAssert -_08069F80: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08069F88: .4byte gUnknown_83A725C -_08069F8C: .4byte 0x00000107 -_08069F90: .4byte gUnknown_83A7290 - thumb_func_end sub_8069F3C - - thumb_func_start ScrCmd_callnative -ScrCmd_callnative: @ 8069F94 - push {lr} - bl ScriptReadWord - bl _call_via_r0 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_callnative - - thumb_func_start sub_8069FA4 -sub_8069FA4: @ 8069FA4 - push {lr} - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8069FA4 - - thumb_func_start ScrCmd_goto -ScrCmd_goto: @ 8069FB0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - adds r0, r4, 0 - bl ScriptJump - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_goto - - thumb_func_start ScrCmd_return -ScrCmd_return: @ 8069FC8 - push {lr} - bl ScriptReturn - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_return - - thumb_func_start ScrCmd_call -ScrCmd_call: @ 8069FD4 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - adds r0, r4, 0 - bl ScriptCall - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_call - - thumb_func_start ScrCmd_goto_if -ScrCmd_goto_if: @ 8069FEC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r1, _0806A024 @ =gUnknown_83A7248 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806A01A - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptJump -_0806A01A: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A024: .4byte gUnknown_83A7248 - thumb_func_end ScrCmd_goto_if - - thumb_func_start ScrCmd_call_if -ScrCmd_call_if: @ 806A028 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r1, _0806A060 @ =gUnknown_83A7248 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806A056 - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptCall -_0806A056: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A060: .4byte gUnknown_83A7248 - thumb_func_end ScrCmd_call_if - - thumb_func_start ScrCmd_setvaddress -ScrCmd_setvaddress: @ 806A064 - push {r4,lr} - ldr r4, [r0, 0x8] - subs r4, 0x1 - bl ScriptReadWord - ldr r1, _0806A07C @ =gUnknown_20370A8 - subs r0, r4 - str r0, [r1] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A07C: .4byte gUnknown_20370A8 - thumb_func_end ScrCmd_setvaddress - - thumb_func_start ScrCmd_vgoto -ScrCmd_vgoto: @ 806A080 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, _0806A0A0 @ =gUnknown_20370A8 - ldr r0, [r0] - subs r1, r0 - adds r0, r4, 0 - bl ScriptJump - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A0A0: .4byte gUnknown_20370A8 - thumb_func_end ScrCmd_vgoto - - thumb_func_start ScrCmd_vcall -ScrCmd_vcall: @ 806A0A4 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, _0806A0C4 @ =gUnknown_20370A8 - ldr r0, [r0] - subs r1, r0 - adds r0, r4, 0 - bl ScriptCall - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A0C4: .4byte gUnknown_20370A8 - thumb_func_end ScrCmd_vcall - - thumb_func_start ScrCmd_vgoto_if -ScrCmd_vgoto_if: @ 806A0C8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - ldr r1, _0806A104 @ =gUnknown_20370A8 - ldr r1, [r1] - subs r2, r0, r1 - ldr r1, _0806A108 @ =gUnknown_83A7248 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806A0FA - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptJump -_0806A0FA: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A104: .4byte gUnknown_20370A8 -_0806A108: .4byte gUnknown_83A7248 - thumb_func_end ScrCmd_vgoto_if - - thumb_func_start ScrCmd_vcall_if -ScrCmd_vcall_if: @ 806A10C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - ldr r1, _0806A148 @ =gUnknown_20370A8 - ldr r1, [r1] - subs r2, r0, r1 - ldr r1, _0806A14C @ =gUnknown_83A7248 - lsls r0, r4, 1 - adds r0, r4 - ldrb r3, [r5, 0x2] - adds r0, r3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806A13E - adds r0, r5, 0 - adds r1, r2, 0 - bl ScriptCall -_0806A13E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A148: .4byte gUnknown_20370A8 -_0806A14C: .4byte gUnknown_83A7248 - thumb_func_end ScrCmd_vcall_if - - thumb_func_start ScrCmd_gotostd -ScrCmd_gotostd: @ 806A150 - push {lr} - adds r2, r0, 0 - ldr r0, [r2, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r2, 0x8] - lsls r1, 2 - ldr r0, _0806A178 @ =gStdScripts - adds r1, r0 - ldr r0, _0806A17C @ =gUnknown_8160478 - cmp r1, r0 - bcs _0806A170 - ldr r1, [r1] - adds r0, r2, 0 - bl ScriptJump -_0806A170: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806A178: .4byte gStdScripts -_0806A17C: .4byte gUnknown_8160478 - thumb_func_end ScrCmd_gotostd - - thumb_func_start ScrCmd_callstd -ScrCmd_callstd: @ 806A180 - push {lr} - adds r2, r0, 0 - ldr r0, [r2, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r2, 0x8] - lsls r1, 2 - ldr r0, _0806A1A8 @ =gStdScripts - adds r1, r0 - ldr r0, _0806A1AC @ =gUnknown_8160478 - cmp r1, r0 - bcs _0806A1A0 - ldr r1, [r1] - adds r0, r2, 0 - bl ScriptCall -_0806A1A0: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806A1A8: .4byte gStdScripts -_0806A1AC: .4byte gUnknown_8160478 - thumb_func_end ScrCmd_callstd - - thumb_func_start ScrCmd_gotostd_if -ScrCmd_gotostd_if: @ 806A1B0 - push {r4,lr} - adds r3, r0, 0 - ldr r0, [r3, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldr r1, _0806A1F0 @ =gUnknown_83A7248 - lsls r0, r2, 1 - adds r0, r2 - ldrb r2, [r3, 0x2] - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806A1E8 - lsls r0, r4, 2 - ldr r1, _0806A1F4 @ =gStdScripts - adds r1, r0, r1 - ldr r0, _0806A1F8 @ =gUnknown_8160478 - cmp r1, r0 - bcs _0806A1E8 - ldr r1, [r1] - adds r0, r3, 0 - bl ScriptJump -_0806A1E8: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A1F0: .4byte gUnknown_83A7248 -_0806A1F4: .4byte gStdScripts -_0806A1F8: .4byte gUnknown_8160478 - thumb_func_end ScrCmd_gotostd_if - - thumb_func_start ScrCmd_callstd_if -ScrCmd_callstd_if: @ 806A1FC - push {r4,lr} - adds r3, r0, 0 - ldr r0, [r3, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r3, 0x8] - ldr r1, _0806A23C @ =gUnknown_83A7248 - lsls r0, r2, 1 - adds r0, r2 - ldrb r2, [r3, 0x2] - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806A234 - lsls r0, r4, 2 - ldr r1, _0806A240 @ =gStdScripts - adds r1, r0, r1 - ldr r0, _0806A244 @ =gUnknown_8160478 - cmp r1, r0 - bcs _0806A234 - ldr r1, [r1] - adds r0, r3, 0 - bl ScriptCall -_0806A234: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A23C: .4byte gUnknown_83A7248 -_0806A240: .4byte gStdScripts -_0806A244: .4byte gUnknown_8160478 - thumb_func_end ScrCmd_callstd_if - thumb_func_start ScrCmd_gotoram ScrCmd_gotoram: @ 806A248 push {lr} @@ -3992,7 +3506,7 @@ _0806BC68: .4byte gSpecialVar_0x8004 ScrCmd_vmessage: @ 806BC6C push {lr} bl ScriptReadWord - ldr r1, _0806BC84 @ =gUnknown_20370A8 + ldr r1, _0806BC84 @ =gVScriptOffset ldr r1, [r1] subs r0, r1 bl ShowFieldMessage @@ -4000,7 +3514,7 @@ ScrCmd_vmessage: @ 806BC6C pop {r1} bx r1 .align 2, 0 -_0806BC84: .4byte gUnknown_20370A8 +_0806BC84: .4byte gVScriptOffset thumb_func_end ScrCmd_vmessage thumb_func_start ScrCmd_bufferspeciesname @@ -4016,7 +3530,7 @@ ScrCmd_bufferspeciesname: @ 806BC88 bl VarGet lsls r0, 16 lsrs r0, 16 - ldr r1, _0806BCC0 @ =gUnknown_83A7294 + ldr r1, _0806BCC0 @ =sScriptStringVars lsls r4, 2 adds r4, r1 ldr r2, [r4] @@ -4031,7 +3545,7 @@ ScrCmd_bufferspeciesname: @ 806BC88 pop {r1} bx r1 .align 2, 0 -_0806BCC0: .4byte gUnknown_83A7294 +_0806BCC0: .4byte sScriptStringVars _0806BCC4: .4byte gSpeciesNames thumb_func_end ScrCmd_bufferspeciesname @@ -4042,7 +3556,7 @@ ScrCmd_bufferleadmonspeciesname: @ 806BCC8 ldrb r2, [r1] adds r1, 0x1 str r1, [r0, 0x8] - ldr r0, _0806BD08 @ =gUnknown_83A7294 + ldr r0, _0806BD08 @ =sScriptStringVars lsls r2, 2 adds r2, r0 ldr r4, [r2] @@ -4067,7 +3581,7 @@ ScrCmd_bufferleadmonspeciesname: @ 806BCC8 pop {r1} bx r1 .align 2, 0 -_0806BD08: .4byte gUnknown_83A7294 +_0806BD08: .4byte sScriptStringVars _0806BD0C: .4byte gPlayerParty _0806BD10: .4byte gSpeciesNames thumb_func_end ScrCmd_bufferleadmonspeciesname @@ -4089,7 +3603,7 @@ ScrCmd_bufferpartymonnick: @ 806BD14 muls r0, r1 ldr r1, _0806BD54 @ =gPlayerParty adds r0, r1 - ldr r1, _0806BD58 @ =gUnknown_83A7294 + ldr r1, _0806BD58 @ =sScriptStringVars lsls r4, 2 adds r4, r1 ldr r4, [r4] @@ -4104,7 +3618,7 @@ ScrCmd_bufferpartymonnick: @ 806BD14 bx r1 .align 2, 0 _0806BD54: .4byte gPlayerParty -_0806BD58: .4byte gUnknown_83A7294 +_0806BD58: .4byte sScriptStringVars thumb_func_end ScrCmd_bufferpartymonnick thumb_func_start ScrCmd_bufferitemname @@ -4120,7 +3634,7 @@ ScrCmd_bufferitemname: @ 806BD5C bl VarGet lsls r0, 16 lsrs r0, 16 - ldr r1, _0806BD8C @ =gUnknown_83A7294 + ldr r1, _0806BD8C @ =sScriptStringVars lsls r4, 2 adds r4, r1 ldr r1, [r4] @@ -4130,7 +3644,7 @@ ScrCmd_bufferitemname: @ 806BD5C pop {r1} bx r1 .align 2, 0 -_0806BD8C: .4byte gUnknown_83A7294 +_0806BD8C: .4byte sScriptStringVars thumb_func_end ScrCmd_bufferitemname thumb_func_start sub_806BD90 @@ -4155,7 +3669,7 @@ sub_806BD90: @ 806BD90 bl VarGet lsls r0, 16 lsrs r6, r0, 16 - ldr r1, _0806BDE4 @ =gUnknown_83A7294 + ldr r1, _0806BDE4 @ =sScriptStringVars lsls r0, r7, 2 adds r0, r1 ldr r4, [r0] @@ -4171,7 +3685,7 @@ sub_806BD90: @ 806BD90 bl StringAppend b _0806BE22 .align 2, 0 -_0806BDE4: .4byte gUnknown_83A7294 +_0806BDE4: .4byte sScriptStringVars _0806BDE8: .4byte gUnknown_83A72A0 _0806BDEC: adds r0, r5, 0 @@ -4182,7 +3696,7 @@ _0806BDEC: bhi _0806BE22 cmp r6, 0x1 bls _0806BE22 - ldr r0, _0806BE2C @ =gUnknown_83A7294 + ldr r0, _0806BE2C @ =sScriptStringVars lsls r1, r7, 2 adds r1, r0 ldr r4, [r1] @@ -4205,7 +3719,7 @@ _0806BE22: pop {r1} bx r1 .align 2, 0 -_0806BE2C: .4byte gUnknown_83A7294 +_0806BE2C: .4byte sScriptStringVars _0806BE30: .4byte gUnknown_83A72A2 thumb_func_end sub_806BD90 @@ -4237,7 +3751,7 @@ ScrCmd_buffermovename: @ 806BE50 bl VarGet lsls r0, 16 lsrs r0, 16 - ldr r1, _0806BE88 @ =gUnknown_83A7294 + ldr r1, _0806BE88 @ =sScriptStringVars lsls r4, 2 adds r4, r1 ldr r2, [r4] @@ -4252,7 +3766,7 @@ ScrCmd_buffermovename: @ 806BE50 pop {r1} bx r1 .align 2, 0 -_0806BE88: .4byte gUnknown_83A7294 +_0806BE88: .4byte sScriptStringVars _0806BE8C: .4byte gMoveNames thumb_func_end ScrCmd_buffermovename @@ -4275,7 +3789,7 @@ ScrCmd_buffernumberstring: @ 806BE90 adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 - ldr r0, _0806BED0 @ =gUnknown_83A7294 + ldr r0, _0806BED0 @ =sScriptStringVars lsls r5, 2 adds r5, r0 ldr r0, [r5] @@ -4287,7 +3801,7 @@ ScrCmd_buffernumberstring: @ 806BE90 pop {r1} bx r1 .align 2, 0 -_0806BED0: .4byte gUnknown_83A7294 +_0806BED0: .4byte sScriptStringVars thumb_func_end ScrCmd_buffernumberstring thumb_func_start ScrCmd_bufferstdstring @@ -4302,7 +3816,7 @@ ScrCmd_bufferstdstring: @ 806BED4 lsrs r0, 16 bl VarGet lsls r0, 16 - ldr r1, _0806BF0C @ =gUnknown_83A7294 + ldr r1, _0806BF0C @ =sScriptStringVars lsls r4, 2 adds r4, r1 ldr r2, [r4] @@ -4317,7 +3831,7 @@ ScrCmd_bufferstdstring: @ 806BED4 pop {r1} bx r1 .align 2, 0 -_0806BF0C: .4byte gUnknown_83A7294 +_0806BF0C: .4byte sScriptStringVars _0806BF10: .4byte gUnknown_83E06B8 thumb_func_end ScrCmd_bufferstdstring @@ -4330,7 +3844,7 @@ ScrCmd_bufferstring: @ 806BF14 str r1, [r0, 0x8] bl ScriptReadWord adds r1, r0, 0 - ldr r0, _0806BF38 @ =gUnknown_83A7294 + ldr r0, _0806BF38 @ =sScriptStringVars lsls r4, 2 adds r4, r0 ldr r0, [r4] @@ -4340,7 +3854,7 @@ ScrCmd_bufferstring: @ 806BF14 pop {r1} bx r1 .align 2, 0 -_0806BF38: .4byte gUnknown_83A7294 +_0806BF38: .4byte sScriptStringVars thumb_func_end ScrCmd_bufferstring thumb_func_start ScrCmd_vloadword @@ -4348,7 +3862,7 @@ ScrCmd_vloadword: @ 806BF3C push {lr} bl ScriptReadWord adds r1, r0, 0 - ldr r0, _0806BF58 @ =gUnknown_20370A8 + ldr r0, _0806BF58 @ =gVScriptOffset ldr r0, [r0] subs r1, r0 ldr r0, _0806BF5C @ =gStringVar4 @@ -4357,7 +3871,7 @@ ScrCmd_vloadword: @ 806BF3C pop {r1} bx r1 .align 2, 0 -_0806BF58: .4byte gUnknown_20370A8 +_0806BF58: .4byte gVScriptOffset _0806BF5C: .4byte gStringVar4 thumb_func_end ScrCmd_vloadword @@ -4370,10 +3884,10 @@ ScrCmd_vbufferstring: @ 806BF60 str r1, [r0, 0x8] bl ScriptReadWord adds r1, r0, 0 - ldr r0, _0806BF8C @ =gUnknown_20370A8 + ldr r0, _0806BF8C @ =gVScriptOffset ldr r0, [r0] subs r1, r0 - ldr r0, _0806BF90 @ =gUnknown_83A7294 + ldr r0, _0806BF90 @ =sScriptStringVars lsls r4, 2 adds r4, r0 ldr r0, [r4] @@ -4383,8 +3897,8 @@ ScrCmd_vbufferstring: @ 806BF60 pop {r1} bx r1 .align 2, 0 -_0806BF8C: .4byte gUnknown_20370A8 -_0806BF90: .4byte gUnknown_83A7294 +_0806BF8C: .4byte gVScriptOffset +_0806BF90: .4byte sScriptStringVars thumb_func_end ScrCmd_vbufferstring thumb_func_start ScrCmd_bufferboxname @@ -4398,7 +3912,7 @@ ScrCmd_bufferboxname: @ 806BF94 lsls r0, 16 lsrs r0, 16 bl VarGet - ldr r1, _0806BFCC @ =gUnknown_83A7294 + ldr r1, _0806BFCC @ =sScriptStringVars lsls r4, 2 adds r4, r1 ldr r4, [r4] @@ -4413,7 +3927,7 @@ ScrCmd_bufferboxname: @ 806BF94 pop {r1} bx r1 .align 2, 0 -_0806BFCC: .4byte gUnknown_83A7294 +_0806BFCC: .4byte sScriptStringVars thumb_func_end ScrCmd_bufferboxname thumb_func_start ScrCmd_givemon diff --git a/data/data_835B488.s b/data/data_835B488.s index 8d2183672..6e387a536 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -657,23 +657,7 @@ gUnknown_83A720C:: @ 83A720C gUnknown_83A7240:: @ 83A7240 .asciz "0" - .align 2 -gNullScriptPtr:: @ 83A7244 - .incbin "baserom.gba", 0x3A7244, 0x4 - -gUnknown_83A7248:: @ 83A7248 - .incbin "baserom.gba", 0x3A7248, 0x14 - -gUnknown_83A725C:: @ 83A725C - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c" - - .align 2 -gUnknown_83A7290:: @ 83A7290 - .asciz "0" - - .align 2 -gUnknown_83A7294:: @ 83A7294 - .incbin "baserom.gba", 0x3A7294, 0xC + .section .rodata.83A72A0 gUnknown_83A72A0:: @ 83A72A0 .incbin "baserom.gba", 0x3A72A0, 0x2 diff --git a/data/event_scripts.s b/data/event_scripts.s index 9baa201e5..23f6ad5a9 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -40,7 +40,7 @@ gStdScripts:: @ 8160450 .4byte gStdScript_81A676C .4byte gStdScript_81A8E58 .4byte gStdScript_81A4E66 -gStdScripts_End:: +gStdScriptsEnd:: gUnknown_8160478:: @ 8160478 .incbin "baserom.gba", 0x160478, 0x886C diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 29850d685..aee959808 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -1,8 +1,8 @@ .align 2 gScriptCmdTable:: @ 815F9B4 - .4byte sub_8069ED0 - .4byte sub_8069ED4 + .4byte ScrCmd_nop + .4byte ScrCmd_nop1 .4byte ScrCmd_end .4byte ScrCmd_return .4byte ScrCmd_call @@ -38,9 +38,9 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_compare_var_to_var .4byte ScrCmd_callnative .4byte ScrCmd_gotonative - .4byte sub_8069EFC - .4byte sub_8069F3C - .4byte sub_8069FA4 + .4byte ScrCmd_special + .4byte ScrCmd_specialvar + .4byte ScrCmd_waitstate .4byte ScrCmd_delay .4byte ScrCmd_setflag .4byte ScrCmd_clearflag @@ -216,4 +216,4 @@ gScriptCmdTable:: @ 815F9B4 .4byte sub_806BD90 gScriptCmdTableEnd:: @ 815FD08 - .4byte sub_8069ED0 + .4byte ScrCmd_nop diff --git a/ld_script.txt b/ld_script.txt index 8d188156b..cdec8f7c6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -103,6 +103,7 @@ SECTIONS { asm/map_obj_lock.o(.text); asm/text_window_graphics.o(.text); src/script.o(.text); + src/scrcmd.o(.text); asm/scrcmd.o(.text); asm/field_control_avatar.o(.text); asm/event_data.o(.text); @@ -370,6 +371,8 @@ SECTIONS { src/metatile_behavior.o(.rodata); data/metatile_behavior.o(.rodata); data/data_835B488.o(.rodata); + src/scrcmd.o(.rodata); + data/data_835B488.o(.rodata.83A72A0); src/battle_ai_script_commands.o(.rodata); data/data_83F5738.o(.rodata); src/save.o(.rodata); diff --git a/src/scrcmd.c b/src/scrcmd.c new file mode 100644 index 000000000..bb8d969c1 --- /dev/null +++ b/src/scrcmd.c @@ -0,0 +1,223 @@ +#include "global.h" +#include "gba/isagbprint.h" +#include "script.h" +#include "event_data.h" + +extern u16 (*const gSpecials[])(void); +extern u16 (*const gSpecialsEnd[])(void); +extern const u8 *const gStdScripts[]; +extern const u8 *const gStdScriptsEnd[]; + +EWRAM_DATA ptrdiff_t gVScriptOffset = 0; +EWRAM_DATA u8 gUnknown_20370AC = 0; +EWRAM_DATA u16 gUnknown_20370AE = 0; +EWRAM_DATA u16 gUnknown_20370B0 = 0; +EWRAM_DATA u16 gUnknown_20370B2 = 0; +EWRAM_DATA u16 gUnknown_20370B4 = 0; +EWRAM_DATA u16 gUnknown_20370B6 = 0; + +// This is defined in here so the optimizer can't see its value when compiling +// script.c. +void * const gNullScriptPtr = NULL; + +const u8 sScriptConditionTable[6][3] = + { +// < = > + 1, 0, 0, // < + 0, 1, 0, // = + 0, 0, 1, // > + 1, 1, 0, // <= + 0, 1, 1, // >= + 1, 0, 1, // != + }; + + + +#define SCRCMD_DEF(name) bool8 name(struct ScriptContext *ctx) + +SCRCMD_DEF(ScrCmd_nop) +{ + return FALSE; +} + +SCRCMD_DEF(ScrCmd_nop1) +{ + return FALSE; +} + +SCRCMD_DEF(ScrCmd_end) +{ + StopScript(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_gotonative) +{ + bool8 (*func)(void) = (bool8 (*)(void))ScriptReadWord(ctx); + SetupNativeScript(ctx, func); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_special) +{ + u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx); + if (specialPtr < gSpecialsEnd) + (*specialPtr)(); + else + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 241); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_specialvar) +{ + u16 * varPtr = GetVarPointer(ScriptReadHalfword(ctx)); + u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx); + if (specialPtr < gSpecialsEnd) + *varPtr = (*specialPtr)(); + else + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 263); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_callnative) +{ + void (*func )(void) = ((void (*)(void))ScriptReadWord(ctx)); + func(); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_waitstate) +{ + ScriptContext1_Stop(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_goto) +{ + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); + ScriptJump(ctx, scrptr); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_return) +{ + ScriptReturn(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_call) +{ + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); + ScriptCall(ctx, scrptr); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_goto_if) +{ + u8 condition = ScriptReadByte(ctx); + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptJump(ctx, scrptr); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_call_if) +{ + u8 condition = ScriptReadByte(ctx); + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptCall(ctx, scrptr); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setvaddress) +{ + u32 addr1 = (u32)ctx->scriptPtr - 1; + u32 addr2 = ScriptReadWord(ctx); + + gVScriptOffset = addr2 - addr1; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_vgoto) +{ + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); + ScriptJump(ctx, scrptr - gVScriptOffset); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_vcall) +{ + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); + ScriptCall(ctx, scrptr - gVScriptOffset); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_vgoto_if) +{ + u8 condition = ScriptReadByte(ctx); + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset; + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptJump(ctx, scrptr); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_vcall_if) +{ + u8 condition = ScriptReadByte(ctx); + const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset; + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + ScriptCall(ctx, scrptr); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_gotostd) +{ + u8 stdIdx = ScriptReadByte(ctx); + const u8 *const * script = gStdScripts + stdIdx; + if (script < gStdScriptsEnd) + ScriptJump(ctx, *script); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_callstd) +{ + u8 stdIdx = ScriptReadByte(ctx); + const u8 *const * script = gStdScripts + stdIdx; + if (script < gStdScriptsEnd) + ScriptCall(ctx, *script); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_gotostd_if) +{ + u8 condition = ScriptReadByte(ctx); + u8 stdIdx = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + { + const u8 *const * script = gStdScripts + stdIdx; + if (script < gStdScriptsEnd) + ScriptJump(ctx, *script); + } + return FALSE; +} + +SCRCMD_DEF(ScrCmd_callstd_if) +{ + u8 condition = ScriptReadByte(ctx); + u8 stdIdx = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) + { + const u8 *const * script = gStdScripts + stdIdx; + if (script < gStdScriptsEnd) + ScriptCall(ctx, *script); + } + return FALSE; +} + +u8 * const sScriptStringVars[] = +{ + gStringVar1, + gStringVar2, + gStringVar3, +}; diff --git a/sym_ewram.txt b/sym_ewram.txt index f8e0df713..fbb152faa 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -633,29 +633,9 @@ gUnknown_203709C: @ 203709C .space 0x4 .include "src/script.o" + .include "src/scrcmd.o" - .align 2 -gUnknown_20370A8: @ 20370A8 - .space 0x4 - -gUnknown_20370AC: @ 20370AC - .space 0x2 - -gUnknown_20370AE: @ 20370AE - .space 0x2 - -gUnknown_20370B0: @ 20370B0 - .space 0x2 - -gUnknown_20370B2: @ 20370B2 - .space 0x2 - -gUnknown_20370B4: @ 20370B4 - .space 0x2 - -gUnknown_20370B6: @ 20370B6 - .space 0x2 - + .align 2 gSpecialVar_0x8000: @ 20370B8 .space 0x2 From d2538cffa03a21aca4e116971a7eb8b760f98ce0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Jan 2019 07:54:57 -0500 Subject: [PATCH 005/318] through ScrCmd_copyvar --- asm/scrcmd.s | 234 ----------------------------------------------- include/script.h | 2 + src/scrcmd.c | 96 +++++++++++++++++++ src/script.c | 6 +- 4 files changed, 101 insertions(+), 237 deletions(-) diff --git a/asm/scrcmd.s b/asm/scrcmd.s index a4eaeb55b..b1fe31de5 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,240 +5,6 @@ .text - thumb_func_start ScrCmd_gotoram -ScrCmd_gotoram: @ 806A248 - push {lr} - ldr r1, _0806A258 @ =gUnknown_20370A4 - ldr r1, [r1] - bl ScriptJump - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806A258: .4byte gUnknown_20370A4 - thumb_func_end ScrCmd_gotoram - - thumb_func_start ScrCmd_killscript -ScrCmd_killscript: @ 806A25C - push {r4,lr} - adds r4, r0, 0 - bl ClearRamScript - adds r0, r4, 0 - bl StopScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_killscript - - thumb_func_start ScrCmd_setmysteryeventstatus -ScrCmd_setmysteryeventstatus: @ 806A274 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl SetMysteryEventScriptStatus - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_setmysteryeventstatus - - thumb_func_start sub_806A28C -sub_806A28C: @ 806A28C - push {r4,lr} - adds r4, r0, 0 - bl sub_8069E48 - adds r2, r0, 0 - cmp r2, 0 - beq _0806A2A8 - ldr r1, _0806A2B0 @ =gUnknown_20370A4 - ldr r0, [r4, 0x8] - str r0, [r1] - adds r0, r4, 0 - adds r1, r2, 0 - bl ScriptJump -_0806A2A8: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A2B0: .4byte gUnknown_20370A4 - thumb_func_end sub_806A28C - - thumb_func_start ScrCmd_loadword -ScrCmd_loadword: @ 806A2B4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - lsls r5, 2 - adds r4, 0x64 - adds r4, r5 - str r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_loadword - - thumb_func_start ScrCmd_loadbytefromaddr -ScrCmd_loadbytefromaddr: @ 806A2D8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - lsls r5, 2 - adds r4, 0x64 - adds r4, r5 - ldrb r0, [r0] - str r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_loadbytefromaddr - - thumb_func_start ScrCmd_writebytetoaddr -ScrCmd_writebytetoaddr: @ 806A2FC - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadWord - strb r4, [r0] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_writebytetoaddr - - thumb_func_start ScrCmd_loadbyte -ScrCmd_loadbyte: @ 806A314 - ldr r1, [r0, 0x8] - ldrb r3, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - lsls r3, 2 - adds r2, r0, 0 - adds r2, 0x64 - adds r2, r3 - ldrb r3, [r1] - str r3, [r2] - adds r1, 0x1 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end ScrCmd_loadbyte - - thumb_func_start ScrCmd_setptrbyte -ScrCmd_setptrbyte: @ 806A330 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - lsls r5, 2 - adds r4, 0x64 - adds r4, r5 - ldr r1, [r4] - strb r1, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setptrbyte - - thumb_func_start ScrCmd_copylocal -ScrCmd_copylocal: @ 806A354 - ldr r1, [r0, 0x8] - ldrb r3, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - lsls r3, 2 - adds r0, 0x64 - adds r3, r0, r3 - lsls r2, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - movs r0, 0 - bx lr - thumb_func_end ScrCmd_copylocal - - thumb_func_start ScrCmd_copybyte -ScrCmd_copybyte: @ 806A374 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadWord - ldrb r0, [r0] - strb r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_copybyte - - thumb_func_start ScrCmd_setvar -ScrCmd_setvar: @ 806A390 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r4, r0, 0 - adds r0, r5, 0 - bl ScriptReadHalfword - strh r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setvar - - thumb_func_start ScrCmd_copyvar -ScrCmd_copyvar: @ 806A3B4 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldrh r0, [r0] - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_copyvar - thumb_func_start ScrCmd_setorcopyvar ScrCmd_setorcopyvar: @ 806A3E0 push {r4,r5,lr} diff --git a/include/script.h b/include/script.h index ebb4caa86..acd88adf3 100644 --- a/include/script.h +++ b/include/script.h @@ -66,4 +66,6 @@ bool32 sub_8069DFC(void); void sub_8069EA4(u8 * script, u16 scriptSize); u8 * sub_8069E48(void); +extern const u8 *gRAMScriptPtr; + #endif // GUARD_SCRIPT_H diff --git a/src/scrcmd.c b/src/scrcmd.c index bb8d969c1..20f1dbc3b 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1,6 +1,7 @@ #include "global.h" #include "gba/isagbprint.h" #include "script.h" +#include "mystery_event_script.h" #include "event_data.h" extern u16 (*const gSpecials[])(void); @@ -215,6 +216,101 @@ SCRCMD_DEF(ScrCmd_callstd_if) return FALSE; } +SCRCMD_DEF(ScrCmd_gotoram) +{ + ScriptJump(ctx, gRAMScriptPtr); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_killscript) +{ + ClearRamScript(); + StopScript(ctx); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_setmysteryeventstatus) +{ + SetMysteryEventScriptStatus(ScriptReadByte(ctx)); + return FALSE; +} + +SCRCMD_DEF(sub_806A28C) +{ + const u8 * script = sub_8069E48(); + if (script != NULL) + { + gRAMScriptPtr = ctx->scriptPtr; + ScriptJump(ctx, script); + } + return FALSE; +} + +SCRCMD_DEF(ScrCmd_loadword) +{ + u8 which = ScriptReadByte(ctx); + ctx->data[which] = ScriptReadWord(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_loadbytefromaddr) +{ + u8 which = ScriptReadByte(ctx); + ctx->data[which] = *(const u8 *)ScriptReadWord(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_writebytetoaddr) +{ + u8 value = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = value; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_loadbyte) +{ + u8 which = ScriptReadByte(ctx); + ctx->data[which] = ScriptReadByte(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setptrbyte) +{ + u8 which = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = ctx->data[which]; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_copylocal) +{ + u8 whichDst = ScriptReadByte(ctx); + u8 whichSrc = ScriptReadByte(ctx); + ctx->data[whichDst] = ctx->data[whichSrc]; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_copybyte) +{ + u8 * dest = (u8 *)ScriptReadWord(ctx); + *dest = *(const u8 *)ScriptReadWord(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setvar) +{ + u16 * varPtr = GetVarPointer(ScriptReadHalfword(ctx)); + *varPtr = ScriptReadHalfword(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_copyvar) +{ + u16 * destPtr = GetVarPointer(ScriptReadHalfword(ctx)); + u16 * srcPtr = GetVarPointer(ScriptReadHalfword(ctx)); + *destPtr = *srcPtr; + return FALSE; +} + u8 * const sScriptStringVars[] = { gStringVar1, diff --git a/src/script.c b/src/script.c index 59ef4e579..d7246752c 100644 --- a/src/script.c +++ b/src/script.c @@ -19,7 +19,7 @@ enum }; EWRAM_DATA u8 gUnknown_20370A0 = 0; -EWRAM_DATA u8 *gUnknown_20370A4 = NULL; +EWRAM_DATA const u8 *gRAMScriptPtr = NULL; // ewram bss /*IWRAM_DATA*/ static u8 sScriptContext1Status; @@ -485,7 +485,7 @@ bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objec u8 *GetRamScript(u8 objectId, u8 *script) { struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data; - gUnknown_20370A4 = NULL; + gRAMScriptPtr = NULL; if (scriptData->magic != RAM_SCRIPT_MAGIC) return script; if (scriptData->mapGroup != gSaveBlock1Ptr->location.mapGroup) @@ -501,7 +501,7 @@ u8 *GetRamScript(u8 objectId, u8 *script) } else { - gUnknown_20370A4 = script; + gRAMScriptPtr = script; return scriptData->script; } } From 1cb1fd2bf8416821a897fbc6b5a60c60595b4a7b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Jan 2019 10:09:03 -0500 Subject: [PATCH 006/318] through ScrCmd_checkdecor --- asm/battle_controller_oak.s | 2 +- asm/battle_controller_player.s | 2 +- asm/battle_setup.s | 4 +- asm/battle_tower.s | 2 +- asm/berry_pouch.s | 4 +- asm/help_system_812B1E0.s | 2 +- asm/item.s | 44 +-- asm/item_menu.s | 26 +- asm/item_pc.s | 2 +- asm/item_use.s | 6 +- asm/party_menu.s | 46 +-- asm/player_pc.s | 4 +- asm/pokemon_storage_system.s | 6 +- asm/scrcmd.s | 563 --------------------------------- asm/shop.s | 2 +- asm/teachy_tv.s | 4 +- asm/tm_case.s | 10 +- asm/trainer_tower.s | 2 +- asm/unk_810C3A4.s | 2 +- asm/unk_8147AA8.s | 6 +- asm/unk_814B6F0.s | 2 +- asm/unk_81507FC.s | 6 +- data/script_cmd_table.inc | 14 +- include/item.h | 1 + src/scrcmd.c | 211 ++++++++++++ 25 files changed, 311 insertions(+), 662 deletions(-) diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 29ae446f6..91931bb63 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -308,7 +308,7 @@ _080E77AC: bhi _080E7838 adds r0, r5, 0 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem _080E780A: movs r0, 0x5 bl PlaySE diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 4db1f94c3..d83245653 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -381,7 +381,7 @@ _0802E5A8: bhi _0802E634 adds r0, r5, 0 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem _0802E606: movs r0, 0x5 bl PlaySE diff --git a/asm/battle_setup.s b/asm/battle_setup.s index 499d565f0..ca757da07 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -104,7 +104,7 @@ sub_807F6CC: @ 807F6CC bhi _0807F6FC ldr r0, _0807F6F8 @ =0x00000167 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 cmp r0, 0 bne _0807F6FC @@ -356,7 +356,7 @@ sub_807F904: @ 807F904 str r0, [r1, 0x8] ldr r0, _0807F94C @ =0x00000167 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 cmp r0, 0 beq _0807F958 diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 82922b88f..c02c98723 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -3218,7 +3218,7 @@ sub_80E724C: @ 80E724C adds r1, r0 ldrh r0, [r1] movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x1 diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index b58832931..75611547e 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -2497,7 +2497,7 @@ _0813E18A: ldr r0, _0813E1F4 @ =gSpecialVar_ItemId ldrh r0, [r0] ldrh r1, [r5, 0x10] - bl sub_809A1D8 + bl RemoveBagItem movs r0, 0x9 bl sub_813EA98 ldrb r0, [r5] @@ -3250,7 +3250,7 @@ sub_813E7F0: @ 813E7F0 ldrh r0, [r5] mov r2, r8 ldrh r1, [r2, 0x10] - bl sub_809A1D8 + bl RemoveBagItem ldr r7, _0813E8C4 @ =gSaveBlock1Ptr ldr r4, [r7] movs r3, 0xA4 diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s index f9fb50cf7..bca296e67 100644 --- a/asm/help_system_812B1E0.s +++ b/asm/help_system_812B1E0.s @@ -967,7 +967,7 @@ _0812B98C: .4byte 0x00000829 _0812B990: ldr r0, _0812B99C @ =0x00000169 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem b _0812BAF6 .align 2, 0 _0812B99C: .4byte 0x00000169 diff --git a/asm/item.s b/asm/item.s index aa64e54fa..2bc45d5c4 100644 --- a/asm/item.s +++ b/asm/item.s @@ -252,8 +252,8 @@ _08099F3C: bx r1 thumb_func_end sub_8099F08 - thumb_func_start sub_8099F40 -sub_8099F40: @ 8099F40 + thumb_func_start CheckBagHasItem +CheckBagHasItem: @ 8099F40 push {r4,r5,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -310,14 +310,14 @@ _08099FA6: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_8099F40 + thumb_func_end CheckBagHasItem thumb_func_start sub_8099FAC sub_8099FAC: @ 8099FAC push {r4,lr} ldr r0, _08099FC0 @ =0x0000016d movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 @@ -338,7 +338,7 @@ _08099FD4: _08099FD6: adds r0, r4, 0 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 @@ -360,8 +360,8 @@ _08099FF6: _08099FFC: .4byte gSpecialVar_Result thumb_func_end sub_8099FAC - thumb_func_start sub_809A000 -sub_809A000: @ 809A000 + thumb_func_start CheckBagHasSpace +CheckBagHasSpace: @ 809A000 push {r4-r6,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -428,10 +428,10 @@ _0809A07C: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_809A000 + thumb_func_end CheckBagHasSpace - thumb_func_start sub_809A084 -sub_809A084: @ 809A084 + thumb_func_start AddBagItem +AddBagItem: @ 809A084 push {r4-r7,lr} mov r7, r8 push {r7} @@ -494,7 +494,7 @@ _0809A0F4: lsls r4, 1 adds r0, r4, 0 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 cmp r0, 0 bne _0809A132 @@ -522,7 +522,7 @@ _0809A132: ldr r4, _0809A1B0 @ =0x0000016d adds r0, r4, 0 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 cmp r0, 0 bne _0809A174 @@ -595,10 +595,10 @@ _0809A1CC: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_809A084 + thumb_func_end AddBagItem - thumb_func_start sub_809A1D8 -sub_809A1D8: @ 809A1D8 + thumb_func_start RemoveBagItem +RemoveBagItem: @ 809A1D8 push {r4-r7,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -667,7 +667,7 @@ _0809A25A: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_809A1D8 + thumb_func_end RemoveBagItem thumb_func_start GetPocketByItemId GetPocketByItemId: @ 809A260 @@ -832,8 +832,8 @@ _0809A35C: _0809A370: .4byte gSaveBlock1Ptr thumb_func_end sub_809A33C - thumb_func_start sub_809A374 -sub_809A374: @ 809A374 + thumb_func_start CheckPCHasItem +CheckPCHasItem: @ 809A374 push {r4-r6,lr} lsls r0, 16 lsrs r6, r0, 16 @@ -875,10 +875,10 @@ _0809A3C0: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_809A374 + thumb_func_end CheckPCHasItem - thumb_func_start sub_809A3C8 -sub_809A3C8: @ 809A3C8 + thumb_func_start AddPCItem +AddPCItem: @ 809A3C8 push {r4-r7,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -955,7 +955,7 @@ _0809A458: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_809A3C8 + thumb_func_end AddPCItem thumb_func_start sub_809A460 sub_809A460: @ 809A460 diff --git a/asm/item_menu.s b/asm/item_menu.s index 58b74acf3..f8872910f 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -4200,7 +4200,7 @@ _08109F6E: ldr r0, _08109FF4 @ =gSpecialVar_ItemId ldrh r0, [r0] ldrh r1, [r7, 0x10] - bl sub_809A1D8 + bl RemoveBagItem movs r0, 0x6 bl sub_810BA3C ldrb r0, [r7] @@ -5464,7 +5464,7 @@ sub_810A9D4: @ 810A9D4 ldrh r0, [r5] mov r2, r8 ldrh r1, [r2, 0x10] - bl sub_809A1D8 + bl RemoveBagItem ldr r3, _0810AAE0 @ =gSaveBlock1Ptr ldr r4, [r3] movs r7, 0xA4 @@ -5744,7 +5744,7 @@ sub_810AC40: @ 810AC40 ldr r5, _0810ACD0 @ =gSpecialVar_ItemId ldrh r0, [r5] ldrh r1, [r7, 0x10] - bl sub_809A3C8 + bl AddPCItem lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x1 @@ -5839,7 +5839,7 @@ _0810AD1E: cmp r0, 0 beq _0810AD98 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x1 @@ -6120,10 +6120,10 @@ sub_810AF74: @ 810AF74 bl sub_810ADD8 movs r0, 0xD movs r1, 0x1 - bl sub_809A084 + bl AddBagItem movs r0, 0x4 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem ldr r2, _0810AF98 @ =sub_8030AEC movs r0, 0x6 movs r1, 0 @@ -6317,27 +6317,27 @@ sub_810B108: @ 810B108 bl sub_810ADD8 movs r0, 0xD movs r1, 0x1 - bl sub_809A084 + bl AddBagItem movs r0, 0xE movs r1, 0x1 - bl sub_809A084 + bl AddBagItem movs r0, 0xB7 lsls r0, 1 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem movs r0, 0xB6 lsls r0, 1 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem movs r0, 0x4 movs r1, 0x5 - bl sub_809A084 + bl AddBagItem movs r0, 0x3 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem movs r0, 0x8 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem cmp r4, 0x7 beq _0810B160 cmp r4, 0x8 diff --git a/asm/item_pc.s b/asm/item_pc.s index b222b9ca2..0f3c5809b 100644 --- a/asm/item_pc.s +++ b/asm/item_pc.s @@ -2036,7 +2036,7 @@ sub_810E418: @ 810E418 lsrs r4, r0, 16 ldrh r1, [r5, 0x10] adds r0, r4, 0 - bl sub_809A084 + bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/item_use.s b/asm/item_use.s index 558e175f2..e34558a86 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -1361,7 +1361,7 @@ sub_80A1A44: @ 80A1A44 ldr r4, _080A1A84 @ =gSpecialVar_ItemId ldrh r0, [r4] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem ldrh r0, [r4] bl ItemId_GetPocket lsls r0, 24 @@ -1844,7 +1844,7 @@ sub_80A1E1C: @ 80A1E1C ldr r0, _080A1E44 @ =gSpecialVar_ItemId ldrh r0, [r0] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem bl sub_8108CB4 adds r0, r4, 0 bl sub_8108B50 @@ -1959,7 +1959,7 @@ sub_80A1EF4: @ 80A1EF4 bl PlaySE adds r0, r4, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem adds r0, r4, 0 bl sub_8042DA4 adds r2, r0, 0 diff --git a/asm/party_menu.s b/asm/party_menu.s index c4980f984..86e1c42dc 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -3582,7 +3582,7 @@ sub_8120610: @ 8120610 b _0812064E _0812062C: movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 cmp r0, 0 beq _0812064C @@ -9943,7 +9943,7 @@ _081237CC: beq _081237F8 ldrh r0, [r6] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem movs r0, 0x9 ldrsb r0, [r5, r0] mov r1, r8 @@ -10016,7 +10016,7 @@ sub_8123824: @ 8123824 bl sub_81205C8 adds r0, r4, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem ldr r1, _0812389C @ =gTasks lsls r0, r7, 2 adds r0, r7 @@ -10133,17 +10133,17 @@ _08123956: ldr r5, _08123998 @ =gSpecialVar_ItemId ldrh r0, [r5] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem ldr r6, _0812399C @ =gUnknown_203B0D8 ldrh r0, [r6] movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 cmp r0, 0 bne _081239AC ldrh r0, [r5] movs r1, 0x1 - bl sub_809A084 + bl AddBagItem ldrh r0, [r6] bl sub_8120658 ldr r0, _081239A0 @ =gStringVar4 @@ -10330,10 +10330,10 @@ sub_8123ACC: @ 8123ACC bl SetMonData ldrh r0, [r4] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem mov r0, r8 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem ldrb r0, [r6, 0x8] lsls r0, 28 lsrs r0, 28 @@ -10903,7 +10903,7 @@ _08123FAA: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -12735,7 +12735,7 @@ sub_8124E48: @ 8124E48 bhi _08124EB0 adds r0, r1, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem _08124EB0: mov r1, r8 ldr r0, [r1] @@ -12828,7 +12828,7 @@ sub_8124EFC: @ 8124EFC bhi _08124F7C adds r0, r1, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem _08124F7C: mov r1, r8 ldr r0, [r1] @@ -13418,7 +13418,7 @@ _0812544C: beq _0812547E adds r0, r6, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem b _0812547E .align 2, 0 _08125474: .4byte gUnknown_203B0C0 @@ -13963,7 +13963,7 @@ sub_8125898: @ 8125898 bl PlaySE ldrh r0, [r6] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem movs r2, 0xE ldrsh r1, [r5, r2] adds r1, 0xD @@ -14065,7 +14065,7 @@ _081259A0: bl PlaySE adds r0, r5, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem movs r0, 0 ldrsh r1, [r7, r0] adds r1, 0xD @@ -14406,7 +14406,7 @@ sub_8125C48: @ 8125C48 bhi _08125C84 adds r0, r4, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem _08125C84: ldr r1, _08125CD8 @ =gStringVar1 adds r0, r5, 0 @@ -15276,7 +15276,7 @@ sub_8126350: @ 8126350 bl sub_8126440 ldrh r0, [r5] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem ldr r1, _08126428 @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname @@ -16117,7 +16117,7 @@ _08126AB4: ldr r0, _08126ADC @ =gSpecialVar_ItemId ldrh r0, [r0] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem _08126ABE: ldr r1, _08126AE4 @ =gTasks lsls r0, r4, 2 @@ -16269,7 +16269,7 @@ sub_8126BD4: @ 8126BD4 bl sub_80A2294 ldrh r0, [r5] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem pop {r4,r5} pop {r0} bx r0 @@ -16971,7 +16971,7 @@ sub_812713C: @ 812713C bl SetMonData ldrh r0, [r4] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem adds r0, r7, 0 bl sub_81273AC ldr r0, [r6] @@ -17117,7 +17117,7 @@ _0812728E: ldr r6, _081272C4 @ =gUnknown_203B0D8 ldrh r0, [r6] movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 cmp r0, 0 bne _081272CC @@ -17240,7 +17240,7 @@ _0812739C: .4byte gUnknown_203B0A0 _081273A0: adds r0, r1, 0 movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem _081273A8: pop {r0} bx r0 @@ -17257,14 +17257,14 @@ sub_81273AC: @ 81273AC beq _081273C8 adds r0, r1, 0 movs r1, 0x1 - bl sub_809A3C8 + bl AddPCItem b _081273D0 .align 2, 0 _081273C4: .4byte gUnknown_203B0A0 _081273C8: adds r0, r1, 0 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem _081273D0: lsls r0, 24 lsrs r0, 24 diff --git a/asm/player_pc.s b/asm/player_pc.s index c4eab0f30..4fea7bea1 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -25,7 +25,7 @@ _080EB672: ldrh r0, [r0] adds r1, r6 ldrh r1, [r1] - bl sub_809A3C8 + bl AddPCItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1649,7 +1649,7 @@ sub_80EC364: @ 80EC364 adds r5, r1, r0 ldrh r0, [r5, 0x20] movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 cmp r0, 0 bne _080EC3B4 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 37f9e9762..c40afefde 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -5151,7 +5151,7 @@ _0808E2E8: adds r0, r1 ldrh r0, [r0] movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 cmp r0, 0 bne _0808E314 @@ -5504,7 +5504,7 @@ _0808E5E0: adds r0, r1 ldrh r0, [r0] movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -6643,7 +6643,7 @@ _0808EF56: mov r0, sp ldrh r0, [r0] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem _0808EF60: add sp, 0x4 pop {r0} diff --git a/asm/scrcmd.s b/asm/scrcmd.s index b1fe31de5..1d957dba0 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,569 +5,6 @@ .text - thumb_func_start ScrCmd_setorcopyvar -ScrCmd_setorcopyvar: @ 806A3E0 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setorcopyvar - - thumb_func_start compare_012 -compare_012: @ 806A40C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - cmp r0, r1 - bcs _0806A41E - movs r0, 0 - b _0806A428 -_0806A41E: - cmp r0, r1 - beq _0806A426 - movs r0, 0x2 - b _0806A428 -_0806A426: - movs r0, 0x1 -_0806A428: - pop {r1} - bx r1 - thumb_func_end compare_012 - - thumb_func_start ScrCmd_compare_local_to_local -ScrCmd_compare_local_to_local: @ 806A42C - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r0, [r2] - lsls r0, 2 - adds r3, r4, 0 - adds r3, 0x64 - adds r0, r3, r0 - ldrb r0, [r0] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - lsls r1, 2 - adds r3, r1 - ldrb r1, [r3] - adds r2, 0x1 - str r2, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_local_to_local - - thumb_func_start ScrCmd_compare_local_to_value -ScrCmd_compare_local_to_value: @ 806A45C - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r1, [r2] - lsls r1, 2 - adds r0, 0x64 - adds r0, r1 - ldrb r0, [r0] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_local_to_value - - thumb_func_start ScrCmd_compare_local_to_addr -ScrCmd_compare_local_to_addr: @ 806A484 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r1, [r2] - lsls r1, 2 - adds r0, 0x64 - adds r0, r1 - ldrb r5, [r0] - adds r2, 0x1 - str r2, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - ldrb r1, [r0] - adds r0, r5, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_local_to_addr - - thumb_func_start ScrCmd_compare_addr_to_local -ScrCmd_compare_addr_to_local: @ 806A4B0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldrb r0, [r0] - ldr r3, [r4, 0x8] - ldrb r2, [r3] - lsls r2, 2 - adds r1, r4, 0 - adds r1, 0x64 - adds r1, r2 - ldrb r1, [r1] - adds r3, 0x1 - str r3, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_addr_to_local - - thumb_func_start ScrCmd_compare_addr_to_value -ScrCmd_compare_addr_to_value: @ 806A4DC - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldrb r0, [r0] - ldr r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_addr_to_value - - thumb_func_start ScrCmd_compare_addr_to_addr -ScrCmd_compare_addr_to_addr: @ 806A4FC - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldrb r5, [r0] - adds r0, r4, 0 - bl ScriptReadWord - ldrb r1, [r0] - adds r0, r5, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_addr_to_addr - - thumb_func_start ScrCmd_compare_var_to_value -ScrCmd_compare_var_to_value: @ 806A520 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldrh r5, [r0] - adds r0, r4, 0 - bl ScriptReadHalfword - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_var_to_value - - thumb_func_start ScrCmd_compare_var_to_var -ScrCmd_compare_var_to_var: @ 806A550 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldrh r2, [r5] - ldrh r1, [r0] - adds r0, r2, 0 - bl compare_012 - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_compare_var_to_var - - thumb_func_start ScrCmd_addvar -ScrCmd_addvar: @ 806A584 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r4, r0, 0 - adds r0, r5, 0 - bl ScriptReadHalfword - ldrh r1, [r4] - adds r0, r1 - strh r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_addvar - - thumb_func_start ScrCmd_subvar -ScrCmd_subvar: @ 806A5AC - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldrh r1, [r5] - subs r1, r0 - strh r1, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_subvar - - thumb_func_start ScrCmd_random -ScrCmd_random: @ 806A5DC - push {r4,r5,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r5, _0806A60C @ =gSpecialVar_Result - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __umodsi3 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A60C: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_random - - thumb_func_start sub_806A610 -sub_806A610: @ 806A610 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, _0806A658 @ =gSpecialVar_Result - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_809A084 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - adds r0, r4, 0 - bl sub_809A824 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A658: .4byte gSpecialVar_Result - thumb_func_end sub_806A610 - - thumb_func_start ScrCmd_takeitem -ScrCmd_takeitem: @ 806A65C - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, _0806A69C @ =gSpecialVar_Result - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_809A1D8 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A69C: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_takeitem - - thumb_func_start sub_806A6A0 -sub_806A6A0: @ 806A6A0 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, _0806A6E0 @ =gSpecialVar_Result - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_809A000 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A6E0: .4byte gSpecialVar_Result - thumb_func_end sub_806A6A0 - - thumb_func_start sub_806A6E4 -sub_806A6E4: @ 806A6E4 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - ldr r5, _0806A724 @ =gSpecialVar_Result - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8099F40 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A724: .4byte gSpecialVar_Result - thumb_func_end sub_806A6E4 - - thumb_func_start ScrCmd_checkitemtype -ScrCmd_checkitemtype: @ 806A728 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0806A750 @ =gSpecialVar_Result - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A750: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_checkitemtype - - thumb_func_start ScrCmd_givepcitem -ScrCmd_givepcitem: @ 806A754 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r5, _0806A794 @ =gSpecialVar_Result - adds r0, r4, 0 - bl sub_809A3C8 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A794: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_givepcitem - - thumb_func_start ScrCmd_checkpcitem -ScrCmd_checkpcitem: @ 806A798 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r5, _0806A7D8 @ =gSpecialVar_Result - adds r0, r4, 0 - bl sub_809A374 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806A7D8: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_checkpcitem - - thumb_func_start sub_806A7DC -sub_806A7DC: @ 806A7DC - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_806A7DC - - thumb_func_start sub_806A7F0 -sub_806A7F0: @ 806A7F0 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_806A7F0 - - thumb_func_start sub_806A804 -sub_806A804: @ 806A804 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_806A804 - - thumb_func_start sub_806A818 -sub_806A818: @ 806A818 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_806A818 - thumb_func_start ScrCmd_setflag ScrCmd_setflag: @ 806A82C push {lr} diff --git a/asm/shop.s b/asm/shop.s index 60b92410d..f710c9a7c 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -2485,7 +2485,7 @@ sub_809BEA4: @ 809BEA4 bl PutWindowTilemap ldrh r0, [r4, 0xA] ldrh r1, [r4, 0x2] - bl sub_809A084 + bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index bdd06dfff..5e2b048e2 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -398,7 +398,7 @@ sub_815AEE8: @ 815AEE8 movs r0, 0xB6 lsls r0, 1 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 cmp r0, 0 bne _0815AF30 @@ -443,7 +443,7 @@ sub_815AF5C: @ 815AF5C movs r0, 0xB6 lsls r0, 1 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 cmp r0, 0 bne _0815AF84 diff --git a/asm/tm_case.s b/asm/tm_case.s index 1539343e8..e7812abf2 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -2568,7 +2568,7 @@ sub_8132D34: @ 8132D34 ldrh r0, [r5] mov r2, r8 ldrh r1, [r2, 0x10] - bl sub_809A1D8 + bl RemoveBagItem ldr r7, _08132DFC @ =gSaveBlock1Ptr ldr r4, [r7] movs r3, 0xA4 @@ -2729,16 +2729,16 @@ sub_8132E64: @ 8132E64 bl sub_81320AC ldr r0, _08132F0C @ =0x00000121 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem ldr r0, _08132F10 @ =0x00000123 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem ldr r0, _08132F14 @ =0x00000129 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem ldr r0, _08132F18 @ =0x00000143 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem ldr r1, _08132F1C @ =sub_815ABFC movs r0, 0x4 movs r2, 0 diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s index c1da74a98..8eef5eaf5 100644 --- a/asm/trainer_tower.s +++ b/asm/trainer_tower.s @@ -518,7 +518,7 @@ _0815E458: .4byte gSpecialVar_Result _0815E45C: adds r0, r4, 0 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/unk_810C3A4.s b/asm/unk_810C3A4.s index e7e825483..cabaac727 100644 --- a/asm/unk_810C3A4.s +++ b/asm/unk_810C3A4.s @@ -180,7 +180,7 @@ sub_810C4EC: @ 810C4EC movs r0, 0xB5 lsls r0, 1 movs r1, 0x1 - bl sub_8099F40 + bl CheckBagHasItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s index a7761148d..d27d74f84 100644 --- a/asm/unk_8147AA8.s +++ b/asm/unk_8147AA8.s @@ -2300,14 +2300,14 @@ _08148BFC: beq _08148C54 ldrh r0, [r1, 0x3E] ldrh r1, [r2] - bl sub_809A084 + bl AddBagItem lsls r0, 24 cmp r0, 0 beq _08148C54 ldr r0, [r4] ldrh r0, [r0, 0x3E] movs r1, 0x1 - bl sub_809A000 + bl CheckBagHasSpace lsls r0, 24 cmp r0, 0 bne _08148C4C @@ -4162,7 +4162,7 @@ _0814998A: beq _0814999C adds r0, r5, 0 adds r1, r4, 0 - bl sub_809A000 + bl CheckBagHasSpace lsls r0, 24 cmp r0, 0 beq _08149984 diff --git a/asm/unk_814B6F0.s b/asm/unk_814B6F0.s index 90882d61c..8cf90cd23 100644 --- a/asm/unk_814B6F0.s +++ b/asm/unk_814B6F0.s @@ -204,7 +204,7 @@ _0814B878: .4byte gSpecialVar_ItemId _0814B87C: ldrh r0, [r1] movs r1, 0x1 - bl sub_809A1D8 + bl RemoveBagItem _0814B884: ldr r4, _0814B8E0 @ =gUnknown_203F3DC ldr r2, [r4] diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s index 0118eff4b..bc9b8c83a 100644 --- a/asm/unk_81507FC.s +++ b/asm/unk_81507FC.s @@ -6240,7 +6240,7 @@ _08153754: .4byte gUnknown_203F3E0 _08153758: adds r0, r5, 0 movs r1, 0x1 - bl sub_809A000 + bl CheckBagHasSpace lsls r0, 24 cmp r0, 0 bne _0815376A @@ -6249,10 +6249,10 @@ _08153758: _0815376A: adds r0, r6, 0 movs r1, 0x1 - bl sub_809A084 + bl AddBagItem adds r0, r6, 0 movs r1, 0x1 - bl sub_809A000 + bl CheckBagHasSpace lsls r0, 24 cmp r0, 0 beq _08153784 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index aee959808..46414b0df 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -69,17 +69,17 @@ gScriptCmdTable:: @ 815F9B4 .4byte sub_806AF10 .4byte ScrCmd_getplayerxy .4byte ScrCmd_getpartysize - .4byte sub_806A610 + .4byte ScrCmd_giveitem .4byte ScrCmd_takeitem - .4byte sub_806A6A0 - .4byte sub_806A6E4 + .4byte ScrCmd_checkitemspace + .4byte ScrCmd_checkitem .4byte ScrCmd_checkitemtype .4byte ScrCmd_givepcitem .4byte ScrCmd_checkpcitem - .4byte sub_806A7DC - .4byte sub_806A7F0 - .4byte sub_806A818 - .4byte sub_806A804 + .4byte ScrCmd_givedecoration + .4byte ScrCmd_takedecoration + .4byte ScrCmd_checkdecor + .4byte ScrCmd_checkdecorspace .4byte ScrCmd_applymovement .4byte ScrCmd_applymovement_at .4byte ScrCmd_waitmovement diff --git a/include/item.h b/include/item.h index 75c56c94d..2d6bb9370 100644 --- a/include/item.h +++ b/include/item.h @@ -63,5 +63,6 @@ u16 itemid_get_market_price(u16 itemId); void sub_809A2DC(void); void sub_809A2A4(void); void sub_8099E90(u16, u8 *); +void sub_809A824(u16 itemId); #endif // ITEM_H diff --git a/src/scrcmd.c b/src/scrcmd.c index 20f1dbc3b..9802791bf 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -3,6 +3,8 @@ #include "script.h" #include "mystery_event_script.h" #include "event_data.h" +#include "random.h" +#include "item.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -311,9 +313,218 @@ SCRCMD_DEF(ScrCmd_copyvar) return FALSE; } +SCRCMD_DEF(ScrCmd_setorcopyvar) +{ + u16 * destPtr = GetVarPointer(ScriptReadHalfword(ctx)); + *destPtr = VarGet(ScriptReadHalfword(ctx)); + return FALSE; +} + u8 * const sScriptStringVars[] = { gStringVar1, gStringVar2, gStringVar3, }; + +u8 compare_012(u16 left, u16 right) +{ + if (left < right) + return 0; + else if (left == right) + return 1; + else + return 2; +} + +// comparelocaltolocal +SCRCMD_DEF(ScrCmd_compare_local_to_local) +{ + const u8 value1 = ctx->data[ScriptReadByte(ctx)]; + const u8 value2 = ctx->data[ScriptReadByte(ctx)]; + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +// comparelocaltoimm +SCRCMD_DEF(ScrCmd_compare_local_to_value) +{ + const u8 value1 = ctx->data[ScriptReadByte(ctx)]; + const u8 value2 = ScriptReadByte(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_compare_local_to_addr) +{ + const u8 value1 = ctx->data[ScriptReadByte(ctx)]; + const u8 value2 = *(const u8 *)ScriptReadWord(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_compare_addr_to_local) +{ + const u8 value1 = *(const u8 *)ScriptReadWord(ctx); + const u8 value2 = ctx->data[ScriptReadByte(ctx)]; + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_compare_addr_to_value) +{ + const u8 value1 = *(const u8 *)ScriptReadWord(ctx); + const u8 value2 = ScriptReadByte(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_compare_addr_to_addr) +{ + const u8 value1 = *(const u8 *)ScriptReadWord(ctx); + const u8 value2 = *(const u8 *)ScriptReadWord(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_compare_var_to_value) +{ + const u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); + const u16 value2 = ScriptReadHalfword(ctx); + + ctx->comparisonResult = compare_012(value1, value2); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_compare_var_to_var) +{ + const u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); + const u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); + + ctx->comparisonResult = compare_012(*ptr1, *ptr2); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_addvar) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr += ScriptReadHalfword(ctx); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_subvar) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr -= VarGet(ScriptReadHalfword(ctx)); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_random) +{ + u16 max = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = Random() % max; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_giveitem) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = AddBagItem(itemId, (u8)quantity); + sub_809A824(itemId); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_takeitem) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = RemoveBagItem(itemId, (u8)quantity); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_checkitemspace) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = CheckBagHasSpace(itemId, (u8)quantity); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_checkitem) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u32 quantity = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = CheckBagHasItem(itemId, (u8)quantity); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_checkitemtype) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = GetPocketByItemId(itemId); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_givepcitem) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = AddPCItem(itemId, quantity); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_checkpcitem) +{ + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = CheckPCHasItem(itemId, quantity); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_givedecoration) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + +// gSpecialVar_Result = DecorationAdd(decorId); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_takedecoration) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + +// gSpecialVar_Result = DecorationRemove(decorId); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_checkdecorspace) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + +// gSpecialVar_Result = DecorationCheckSpace(decorId); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_checkdecor) +{ + u32 decorId = VarGet(ScriptReadHalfword(ctx)); + +// gSpecialVar_Result = CheckHasDecoration(decorId); + return FALSE; +} + From 257bde9b08e907b59aed05d662a1d8daed8d79fa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Jan 2019 10:22:04 -0500 Subject: [PATCH 007/318] through ScrCmd_fadescreenspeed --- asm/scrcmd.s | 198 ---------------------------------- include/field_screen_effect.h | 2 +- include/map_preview_screen.h | 6 ++ include/quest_log.h | 1 + src/scrcmd.c | 92 ++++++++++++++++ 5 files changed, 100 insertions(+), 199 deletions(-) create mode 100644 include/map_preview_screen.h diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 1d957dba0..0f8f111ce 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,204 +5,6 @@ .text - thumb_func_start ScrCmd_setflag -ScrCmd_setflag: @ 806A82C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_setflag - - thumb_func_start ScrCmd_clearflag -ScrCmd_clearflag: @ 806A840 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl FlagClear - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_clearflag - - thumb_func_start ScrCmd_checkflag -ScrCmd_checkflag: @ 806A854 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_checkflag - - thumb_func_start ScrCmd_incrementgamestat -ScrCmd_incrementgamestat: @ 806A870 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl IncrementGameStat - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_incrementgamestat - - thumb_func_start sub_806A888 -sub_806A888: @ 806A888 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r4, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadWord - adds r6, r0, 0 - adds r0, r4, 0 - bl GetGameStat - cmp r0, r6 - bcs _0806A8AA - movs r0, 0 - b _0806A8B4 -_0806A8AA: - cmp r0, r6 - bne _0806A8B2 - movs r0, 0x1 - b _0806A8B4 -_0806A8B2: - movs r0, 0x2 -_0806A8B4: - strb r0, [r5, 0x2] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_806A888 - - thumb_func_start sub_806A8C0 -sub_806A8C0: @ 806A8C0 - push {r4,lr} - bl ScriptReadHalfword - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_8115748 - adds r0, r4, 0 - bl sub_80F85BC - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806A8C0 - - thumb_func_start ScrCmd_animateflash -ScrCmd_animateflash: @ 806A8E0 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl sub_807F028 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_animateflash - - thumb_func_start ScrCmd_setflashradius -ScrCmd_setflashradius: @ 806A8FC - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl Overworld_SetFlashLevel - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_setflashradius - - thumb_func_start sub_806A918 -sub_806A918: @ 806A918 - push {lr} - ldr r0, _0806A92C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806A930 - movs r0, 0 - b _0806A932 - .align 2, 0 -_0806A92C: .4byte gPaletteFade -_0806A930: - movs r0, 0x1 -_0806A932: - pop {r1} - bx r1 - thumb_func_end sub_806A918 - - thumb_func_start ScrCmd_fadescreen -ScrCmd_fadescreen: @ 806A938 - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x8] - ldrb r0, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - movs r1, 0 - bl fade_screen - ldr r1, _0806A95C @ =sub_806A918 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A95C: .4byte sub_806A918 - thumb_func_end ScrCmd_fadescreen - - thumb_func_start ScrCmd_fadescreenspeed -ScrCmd_fadescreenspeed: @ 806A960 - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r0, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - lsls r1, 24 - asrs r1, 24 - bl fade_screen - ldr r1, _0806A98C @ =sub_806A918 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A98C: .4byte sub_806A918 - thumb_func_end ScrCmd_fadescreenspeed - thumb_func_start RunPauseTimer RunPauseTimer: @ 806A990 push {lr} diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index add61d57c..14d7e5d81 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -4,7 +4,7 @@ #include "global.h" void sub_80AF79C(void); -void sub_80B009C(u8); +void sub_807F028(u8); void sub_80B0244(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h new file mode 100644 index 000000000..8d9114b82 --- /dev/null +++ b/include/map_preview_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MAP_PREVIEW_SCREEN_H +#define GUARD_MAP_PREVIEW_SCREEN_H + +void sub_80F85BC(u16 a0); + +#endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/quest_log.h b/include/quest_log.h index 9f8a0ea21..00a8b8df3 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -21,5 +21,6 @@ extern struct UnkStruct_203AE98 * gUnknown_3005E94; void sub_8112720(u8); void sub_8113550(u16, const u16 *); +void sub_8115748(u16); #endif //GUARD_QUEST_LOG_H diff --git a/src/scrcmd.c b/src/scrcmd.c index 9802791bf..c8e7babcc 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1,10 +1,16 @@ #include "global.h" #include "gba/isagbprint.h" +#include "palette.h" #include "script.h" #include "mystery_event_script.h" #include "event_data.h" #include "random.h" #include "item.h" +#include "overworld.h" +#include "field_screen_effect.h" +#include "quest_log.h" +#include "map_preview_screen.h" +#include "field_weather.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -528,3 +534,89 @@ SCRCMD_DEF(ScrCmd_checkdecor) return FALSE; } +SCRCMD_DEF(ScrCmd_setflag) +{ + FlagSet(ScriptReadHalfword(ctx)); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_clearflag) +{ + FlagClear(ScriptReadHalfword(ctx)); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_checkflag) +{ + ctx->comparisonResult = FlagGet(ScriptReadHalfword(ctx)); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_incrementgamestat) +{ + IncrementGameStat(ScriptReadByte(ctx)); + return FALSE; +} + +SCRCMD_DEF(sub_806A888) +{ + u8 statIdx = ScriptReadByte(ctx); + u32 value = ScriptReadWord(ctx); + u32 statValue = GetGameStat(statIdx); + + if (statValue < value) + ctx ->comparisonResult = 0; + else if (statValue == value) + ctx->comparisonResult = 1; + else + ctx->comparisonResult = 2; + return FALSE; +} + +SCRCMD_DEF(sub_806A8C0) +{ + u16 value = ScriptReadHalfword(ctx); + sub_8115748(value); + sub_80F85BC(value); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_animateflash) +{ + sub_807F028(ScriptReadByte(ctx)); + ScriptContext1_Stop(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_setflashradius) +{ + u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetFlashLevel(flashLevel); + return FALSE; +} + +static bool8 IsPaletteNotActive(void) +{ + if (!gPaletteFade.active) + return TRUE; + else + return FALSE; +} + +SCRCMD_DEF(ScrCmd_fadescreen) +{ + fade_screen(ScriptReadByte(ctx), 0); + SetupNativeScript(ctx, IsPaletteNotActive); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_fadescreenspeed) +{ + u8 mode = ScriptReadByte(ctx); + u8 speed = ScriptReadByte(ctx); + + fade_screen(mode, speed); + SetupNativeScript(ctx, IsPaletteNotActive); + return TRUE; +} From b16831e97bb8b94c29854a81e11647e8a5db68c6 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 11:57:00 -0500 Subject: [PATCH 008/318] through ScrCmd_fadeinbgm --- asm/bike.s | 4 +- asm/field_control_avatar.s | 10 +- asm/field_effect.s | 2 +- asm/field_fadetransition.s | 26 +- asm/field_specials.s | 4 +- asm/field_weather.s | 6 +- asm/hall_of_fame.s | 4 +- asm/item_use.s | 2 +- asm/link_rfu_3.s | 2 +- asm/overworld.s | 74 +-- asm/scrcmd.s | 1107 -------------------------------- asm/seagallop.s | 2 +- data/script_cmd_table.inc | 30 +- data/specials.inc | 4 +- include/field_fadetransition.h | 16 +- include/field_player_avatar.h | 1 + include/field_weather.h | 1 + include/overworld.h | 10 +- include/quest_log.h | 2 + src/scrcmd.c | 348 +++++++++- src/trainer_tower.c | 4 +- 21 files changed, 454 insertions(+), 1205 deletions(-) diff --git a/asm/bike.s b/asm/bike.s index 915c4bf8f..c85537d3d 100644 --- a/asm/bike.s +++ b/asm/bike.s @@ -745,9 +745,9 @@ _080BD5F8: cmp r0, 0 beq _080BD618 adds r0, r4, 0 - bl sub_8055E78 + bl Overworld_SetSavedMusic adds r0, r4, 0 - bl sub_8055F48 + bl Overworld_ChangeMusicTo _080BD618: pop {r4} pop {r0} diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 9748301f7..78f2a0777 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -2195,7 +2195,7 @@ mapheader_run_first_tag2_script_list_match_conditionally: @ 806D964 adds r1, r5, 0 adds r2, r7, 0 bl sub_806DC54 - bl sub_807E438 + bl DoWarp movs r0, 0x1 b _0806DA02 .align 2, 0 @@ -2331,7 +2331,7 @@ _0806DAC4: lsrs r0, 24 cmp r0, 0x1 bne _0806DAE4 - bl sub_80559E4 + bl ResetInitialPlayerAvatarState ldr r0, _0806DAE0 @ =gUnknown_81C1361 bl ScriptContext1_SetupScript movs r0, 0x1 @@ -2339,7 +2339,7 @@ _0806DAC4: .align 2, 0 _0806DAE0: .4byte gUnknown_81C1361 _0806DAE4: - bl sub_807E438 + bl DoWarp movs r0, 0x1 b _0806DAEE _0806DAEC: @@ -2638,7 +2638,7 @@ map_warp_consider_2_to_inside: @ 806DCD0 adds r1, r4, 0 adds r2, r6, 0 bl sub_806DC54 - bl sub_807E4DC + bl DoDoorWarp movs r0, 0x1 b _0806DD32 .align 2, 0 @@ -2990,7 +2990,7 @@ _0806DF98: cmp r0, 0 beq _0806DFB0 bl sub_8055A08 - bl sp13E_warp_to_last_warp + bl DoDiveWarp movs r0, 0xE2 bl PlaySE movs r0, 0x1 diff --git a/asm/field_effect.s b/asm/field_effect.s index 1cbdc8214..5aa0772dd 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -6955,7 +6955,7 @@ sub_8086944: @ 8086944 cmp r0, 0 beq _08086978 adds r0, r4, 0 - bl sub_8055F48 + bl Overworld_ChangeMusicTo _08086978: movs r0, 0 pop {r4} diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index 8ccc347e9..f701e579b 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -1153,8 +1153,8 @@ _0807E434: bx r1 thumb_func_end sub_807E418 - thumb_func_start sub_807E438 -sub_807E438: @ 807E438 + thumb_func_start DoWarp +DoWarp: @ 807E438 push {lr} bl ScriptContext2_Enable bl sub_8055F88 @@ -1174,10 +1174,10 @@ sub_807E438: @ 807E438 _0807E464: .4byte gUnknown_3005020 _0807E468: .4byte sub_807DF64 _0807E46C: .4byte sub_807E718 - thumb_func_end sub_807E438 + thumb_func_end DoWarp - thumb_func_start sp13E_warp_to_last_warp -sp13E_warp_to_last_warp: @ 807E470 + thumb_func_start DoDiveWarp +DoDiveWarp: @ 807E470 push {lr} bl ScriptContext2_Enable bl sub_8055F88 @@ -1195,7 +1195,7 @@ sp13E_warp_to_last_warp: @ 807E470 _0807E494: .4byte gUnknown_3005020 _0807E498: .4byte sub_807DF64 _0807E49C: .4byte sub_807E718 - thumb_func_end sp13E_warp_to_last_warp + thumb_func_end DoDiveWarp thumb_func_start sub_807E4A0 sub_807E4A0: @ 807E4A0 @@ -1228,8 +1228,8 @@ _0807E4D4: .4byte sub_807E980 _0807E4D8: .4byte gTasks thumb_func_end sub_807E4A0 - thumb_func_start sub_807E4DC -sub_807E4DC: @ 807E4DC + thumb_func_start DoDoorWarp +DoDoorWarp: @ 807E4DC push {lr} bl ScriptContext2_Enable ldr r0, _0807E4F4 @ =gUnknown_3005020 @@ -1244,7 +1244,7 @@ sub_807E4DC: @ 807E4DC _0807E4F4: .4byte gUnknown_3005020 _0807E4F8: .4byte sub_807DF64 _0807E4FC: .4byte sub_807E80C - thumb_func_end sub_807E4DC + thumb_func_end DoDoorWarp thumb_func_start sub_807E500 sub_807E500: @ 807E500 @@ -1282,10 +1282,10 @@ _0807E540: .4byte sub_807DF64 _0807E544: .4byte sub_807E784 thumb_func_end sub_807E524 - thumb_func_start sp13F_fall_to_last_warp -sp13F_fall_to_last_warp: @ 807E548 + thumb_func_start DoFallWarp +DoFallWarp: @ 807E548 push {lr} - bl sp13E_warp_to_last_warp + bl DoDiveWarp ldr r1, _0807E558 @ =gUnknown_3005020 ldr r0, _0807E55C @ =sub_8084454 str r0, [r1] @@ -1294,7 +1294,7 @@ sp13F_fall_to_last_warp: @ 807E548 .align 2, 0 _0807E558: .4byte gUnknown_3005020 _0807E55C: .4byte sub_8084454 - thumb_func_end sp13F_fall_to_last_warp + thumb_func_end DoFallWarp thumb_func_start sub_807E560 sub_807E560: @ 807E560 diff --git a/asm/field_specials.s b/asm/field_specials.s index a4f3e6dc7..0746df47a 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -33,9 +33,9 @@ _080CA644: movs r4, 0x8D lsls r4, 1 adds r0, r4, 0 - bl sub_8055E78 + bl Overworld_SetSavedMusic adds r0, r4, 0 - bl sub_8055F48 + bl Overworld_ChangeMusicTo pop {r4} pop {r0} bx r0 diff --git a/asm/field_weather.s b/asm/field_weather.s index 77a138ad2..49a1ed95b 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -2804,8 +2804,8 @@ sav1_get_weather_probably: @ 807B130 _0807B13C: .4byte gSaveBlock1Ptr thumb_func_end sav1_get_weather_probably - thumb_func_start sub_807B140 -sub_807B140: @ 807B140 + thumb_func_start SetSav1WeatherFromCurrMapHeader +SetSav1WeatherFromCurrMapHeader: @ 807B140 push {r4,r5,lr} ldr r4, _0807B16C @ =gSaveBlock1Ptr ldr r0, [r4] @@ -2828,7 +2828,7 @@ sub_807B140: @ 807B140 .align 2, 0 _0807B16C: .4byte gSaveBlock1Ptr _0807B170: .4byte gMapHeader - thumb_func_end sub_807B140 + thumb_func_end SetSav1WeatherFromCurrMapHeader thumb_func_start SetWeather SetWeather: @ 807B174 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 147bc65c0..43ec5eede 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -1459,8 +1459,8 @@ sub_80F2934: @ 80F2934 movs r1, 0x9 movs r3, 0xB bl Overworld_SetWarpDestination - bl sub_807E438 - bl sub_80559E4 + bl DoWarp + bl ResetInitialPlayerAvatarState add sp, 0x4 pop {r0} bx r0 diff --git a/asm/item_use.s b/asm/item_use.s index e34558a86..771adcdfc 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -1597,7 +1597,7 @@ sub_80A1C44: @ 80A1C44 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_80559E4 + bl ResetInitialPlayerAvatarState bl sub_8085620 adds r0, r4, 0 bl DestroyTask diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index c5947ebc0..035c51d3f 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3366,7 +3366,7 @@ sub_8117440: @ 8117440 str r5, [sp, 0x4] movs r0, 0 mov r3, r8 - bl saved_warp2_set_2 + bl SetDynamicWarpWithCoords bl warp_in add sp, 0x8 pop {r3} diff --git a/asm/overworld.s b/asm/overworld.s index 5f1e198ac..077c5f4ef 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -118,7 +118,7 @@ _08054C9C: .4byte gUnknown_826D29E thumb_func_start sub_8054CA0 sub_8054CA0: @ 8054CA0 push {lr} - bl sub_80559E4 + bl ResetInitialPlayerAvatarState movs r0, 0x83 lsls r0, 4 bl FlagClear @@ -157,7 +157,7 @@ _08054D04: .4byte 0x0000404d thumb_func_start sub_8054D08 sub_8054D08: @ 8054D08 push {lr} - bl sub_80559E4 + bl ResetInitialPlayerAvatarState movs r0, 0x83 lsls r0, 4 bl FlagClear @@ -196,7 +196,7 @@ _08054D6C: .4byte 0x0000404d thumb_func_start sub_8054D70 sub_8054D70: @ 8054D70 push {lr} - bl sub_80559E4 + bl ResetInitialPlayerAvatarState movs r0, 0x83 lsls r0, 4 bl FlagClear @@ -235,7 +235,7 @@ _08054DD4: .4byte 0x0000404d thumb_func_start sub_8054DD8 sub_8054DD8: @ 8054DD8 push {lr} - bl sub_80559E4 + bl ResetInitialPlayerAvatarState movs r0, 0x83 lsls r0, 4 bl FlagClear @@ -1084,8 +1084,8 @@ saved_warp2_set: @ 80553E8 _08055418: .4byte gSaveBlock1Ptr thumb_func_end saved_warp2_set - thumb_func_start saved_warp2_set_2 -saved_warp2_set_2: @ 805541C + thumb_func_start SetDynamicWarpWithCoords +SetDynamicWarpWithCoords: @ 805541C push {r4,r5,lr} sub sp, 0x8 ldr r4, [sp, 0x14] @@ -1112,7 +1112,7 @@ saved_warp2_set_2: @ 805541C bx r0 .align 2, 0 _08055450: .4byte gSaveBlock1Ptr - thumb_func_end saved_warp2_set_2 + thumb_func_end SetDynamicWarpWithCoords thumb_func_start copy_saved_warp2_bank_and_enter_x_to_warp1 copy_saved_warp2_bank_and_enter_x_to_warp1: @ 8055454 @@ -1281,7 +1281,7 @@ sub_805550C: @ 805550C lsls r4, 24 asrs r4, 24 str r4, [sp] - bl sub_80555A0 + bl SetEscapeWarp _08055590: add sp, 0x4 pop {r4-r7} @@ -1292,8 +1292,8 @@ _08055598: .4byte gUnknown_2031DBC _0805559C: .4byte gSaveBlock1Ptr thumb_func_end sub_805550C - thumb_func_start sub_80555A0 -sub_80555A0: @ 80555A0 + thumb_func_start SetEscapeWarp +SetEscapeWarp: @ 80555A0 push {r4-r6,lr} sub sp, 0x8 adds r4, r0, 0 @@ -1325,7 +1325,7 @@ sub_80555A0: @ 80555A0 bx r0 .align 2, 0 _080555DC: .4byte gSaveBlock1Ptr - thumb_func_end sub_80555A0 + thumb_func_end SetEscapeWarp thumb_func_start sub_80555E0 sub_80555E0: @ 80555E0 @@ -1342,8 +1342,8 @@ _080555F0: .4byte gUnknown_2031DBC _080555F4: .4byte gSaveBlock1Ptr thumb_func_end sub_80555E0 - thumb_func_start sub_80555F8 -sub_80555F8: @ 80555F8 + thumb_func_start SetFixedDiveWarp +SetFixedDiveWarp: @ 80555F8 push {r4-r6,lr} sub sp, 0x8 adds r4, r0, 0 @@ -1373,7 +1373,7 @@ sub_80555F8: @ 80555F8 bx r0 .align 2, 0 _08055630: .4byte gUnknown_2031DC4 - thumb_func_end sub_80555F8 + thumb_func_end SetFixedDiveWarp thumb_func_start warp1_set_to_warp2 warp1_set_to_warp2: @ 8055634 @@ -1389,8 +1389,8 @@ _08055644: .4byte gUnknown_2031DBC _08055648: .4byte gUnknown_2031DC4 thumb_func_end warp1_set_to_warp2 - thumb_func_start sub_805564C -sub_805564C: @ 805564C + thumb_func_start SetFixedHoleWarp +SetFixedHoleWarp: @ 805564C push {r4-r6,lr} sub sp, 0x8 adds r4, r0, 0 @@ -1420,10 +1420,10 @@ sub_805564C: @ 805564C bx r0 .align 2, 0 _08055684: .4byte gUnknown_2031DCC - thumb_func_end sub_805564C + thumb_func_end SetFixedHoleWarp - thumb_func_start sub_8055688 -sub_8055688: @ 8055688 + thumb_func_start SetWarpDestinationToFixedHoleWarp +SetWarpDestinationToFixedHoleWarp: @ 8055688 push {r4-r6,lr} sub sp, 0x4 lsls r0, 16 @@ -1464,7 +1464,7 @@ _080556D6: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8055688 + thumb_func_end SetWarpDestinationToFixedHoleWarp thumb_func_start warp1_set_to_sav1w warp1_set_to_sav1w: @ 80556E0 @@ -1712,7 +1712,7 @@ sub_8055864: @ 8055864 adds r0, r5, 0 adds r1, r4, 0 bl sub_810C578 - bl sub_807B140 + bl SetSav1WeatherFromCurrMapHeader bl sub_805610C bl sub_8055CB8 bl sav1_reset_battle_music_maybe @@ -1784,7 +1784,7 @@ sub_8055920: @ 8055920 lsls r1, 16 lsrs r1, 16 bl sub_810C578 - bl sub_807B140 + bl SetSav1WeatherFromCurrMapHeader bl sub_805610C cmp r4, 0 beq _08055974 @@ -1817,7 +1817,7 @@ sub_80559A8: @ 80559A8 ldrb r0, [r0, 0x17] bl is_light_level_1_2_3_5_or_6 bl TrySetMapSaveWarpStatus - bl sub_807B140 + bl SetSav1WeatherFromCurrMapHeader bl sub_805610C bl sub_8055CB8 bl sub_8110920 @@ -1830,8 +1830,8 @@ sub_80559A8: @ 80559A8 _080559E0: .4byte gMapHeader thumb_func_end sub_80559A8 - thumb_func_start sub_80559E4 -sub_80559E4: @ 80559E4 + thumb_func_start ResetInitialPlayerAvatarState +ResetInitialPlayerAvatarState: @ 80559E4 ldr r0, _080559F4 @ =gUnknown_2031DD4 movs r2, 0 movs r1, 0x1 @@ -1841,7 +1841,7 @@ sub_80559E4: @ 80559E4 bx lr .align 2, 0 _080559F4: .4byte gUnknown_2031DD4 - thumb_func_end sub_80559E4 + thumb_func_end ResetInitialPlayerAvatarState thumb_func_start sub_80559F8 sub_80559F8: @ 80559F8 @@ -2295,8 +2295,8 @@ sav1_get_flash_used_on_map: @ 8055D30 _08055D3C: .4byte gSaveBlock1Ptr thumb_func_end sav1_get_flash_used_on_map - thumb_func_start sub_8055D40 -sub_8055D40: @ 8055D40 + thumb_func_start SetCurrentMapLayout +SetCurrentMapLayout: @ 8055D40 push {lr} ldr r1, _08055D54 @ =gSaveBlock1Ptr ldr r1, [r1] @@ -2309,7 +2309,7 @@ sub_8055D40: @ 8055D40 .align 2, 0 _08055D54: .4byte gSaveBlock1Ptr _08055D58: .4byte gMapHeader - thumb_func_end sub_8055D40 + thumb_func_end SetCurrentMapLayout thumb_func_start sub_8055D5C sub_8055D5C: @ 8055D5C @@ -2464,15 +2464,15 @@ _08055E6C: _08055E74: .4byte 0x00000131 thumb_func_end sub_8055DC4 - thumb_func_start sub_8055E78 -sub_8055E78: @ 8055E78 + thumb_func_start Overworld_SetSavedMusic +Overworld_SetSavedMusic: @ 8055E78 ldr r1, _08055E80 @ =gSaveBlock1Ptr ldr r1, [r1] strh r0, [r1, 0x2C] bx lr .align 2, 0 _08055E80: .4byte gSaveBlock1Ptr - thumb_func_end sub_8055E78 + thumb_func_end Overworld_SetSavedMusic thumb_func_start sav1_reset_battle_music_maybe sav1_reset_battle_music_maybe: @ 8055E84 @@ -2573,8 +2573,8 @@ _08055F42: bx r0 thumb_func_end Overworld_ChangeMusicToDefault - thumb_func_start sub_8055F48 -sub_8055F48: @ 8055F48 + thumb_func_start Overworld_ChangeMusicTo +Overworld_ChangeMusicTo: @ 8055F48 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -2590,7 +2590,7 @@ _08055F62: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8055F48 + thumb_func_end Overworld_ChangeMusicTo thumb_func_start GetMapMusicFadeoutSpeed GetMapMusicFadeoutSpeed: @ 8055F68 @@ -3494,7 +3494,7 @@ CB2_NewGame: @ 8056644 bl StopMapMusic bl sub_8056420 bl sub_8054A60 - bl sub_80559E4 + bl ResetInitialPlayerAvatarState bl PlayTimeCounter_Start bl ScriptContext1_Init bl ScriptContext2_Disable @@ -4705,7 +4705,7 @@ mli4_mapscripts_and_other: @ 805709C bl InitPlayerAvatar ldrb r0, [r5] bl SetPlayerAvatarTransitionFlags - bl sub_80559E4 + bl ResetInitialPlayerAvatarState movs r0, 0 movs r1, 0 bl sub_805EC30 diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 0f8f111ce..13659b838 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,1113 +5,6 @@ .text - thumb_func_start RunPauseTimer -RunPauseTimer: @ 806A990 - push {lr} - ldr r1, _0806A9A4 @ =gUnknown_20370AE - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _0806A9A8 - movs r0, 0 - b _0806A9AA - .align 2, 0 -_0806A9A4: .4byte gUnknown_20370AE -_0806A9A8: - movs r0, 0x1 -_0806A9AA: - pop {r1} - bx r1 - thumb_func_end RunPauseTimer - - thumb_func_start ScrCmd_delay -ScrCmd_delay: @ 806A9B0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - ldr r1, _0806A9CC @ =gUnknown_20370AE - strh r0, [r1] - ldr r1, _0806A9D0 @ =RunPauseTimer - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806A9CC: .4byte gUnknown_20370AE -_0806A9D0: .4byte RunPauseTimer - thumb_func_end ScrCmd_delay - - thumb_func_start sub_806A9D4 -sub_806A9D4: @ 806A9D4 - movs r0, 0 - bx lr - thumb_func_end sub_806A9D4 - - thumb_func_start sub_806A9D8 -sub_806A9D8: @ 806A9D8 - movs r0, 0 - bx lr - thumb_func_end sub_806A9D8 - - thumb_func_start sub_806A9DC -sub_806A9DC: @ 806A9DC - ldr r0, _0806A9F0 @ =gSpecialVar_0x8000 - movs r1, 0 - strh r1, [r0] - ldr r0, _0806A9F4 @ =gSpecialVar_0x8001 - strh r1, [r0] - ldr r0, _0806A9F8 @ =gSpecialVar_0x8002 - strh r1, [r0] - movs r0, 0 - bx lr - .align 2, 0 -_0806A9F0: .4byte gSpecialVar_0x8000 -_0806A9F4: .4byte gSpecialVar_0x8001 -_0806A9F8: .4byte gSpecialVar_0x8002 - thumb_func_end sub_806A9DC - - thumb_func_start ScrCmd_setweather -ScrCmd_setweather: @ 806A9FC - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl SetSav1Weather - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_setweather - - thumb_func_start ScrCmd_resetweather -ScrCmd_resetweather: @ 806AA18 - push {lr} - bl sub_807B140 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_resetweather - - thumb_func_start ScrCmd_doweather -ScrCmd_doweather: @ 806AA24 - push {lr} - bl DoCurrentWeather - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_doweather - - thumb_func_start ScrCmd_setstepcallback -ScrCmd_setstepcallback: @ 806AA30 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - adds r0, r2, 0 - bl ActivatePerStepCallback - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_setstepcallback - - thumb_func_start ScrCmd_setmaplayoutindex -ScrCmd_setmaplayoutindex: @ 806AA48 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl sub_8055D40 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_setmaplayoutindex - - thumb_func_start ScrCmd_warp -ScrCmd_warp: @ 806AA64 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl Overworld_SetWarpDestination - bl sub_807E438 - bl sub_80559E4 - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_warp - - thumb_func_start ScrCmd_warpsilent -ScrCmd_warpsilent: @ 806AAEC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl Overworld_SetWarpDestination - bl sp13E_warp_to_last_warp - bl sub_80559E4 - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_warpsilent - - thumb_func_start ScrCmd_warpdoor -ScrCmd_warpdoor: @ 806AB74 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl Overworld_SetWarpDestination - bl sub_807E4DC - bl sub_80559E4 - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_warpdoor - - thumb_func_start ScrCmd_warphole -ScrCmd_warphole: @ 806ABFC - push {r4-r6,lr} - sub sp, 0x8 - ldr r1, [r0, 0x8] - ldrb r6, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - mov r4, sp - adds r4, 0x6 - add r0, sp, 0x4 - adds r1, r4, 0 - bl PlayerGetDestCoords - cmp r6, 0xFF - bne _0806AC3A - cmp r5, 0xFF - bne _0806AC3A - add r0, sp, 0x4 - ldrh r0, [r0] - subs r0, 0x7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4] - subs r1, 0x7 - lsls r1, 16 - asrs r1, 16 - bl sub_8055688 - b _0806AC5E -_0806AC3A: - lsls r0, r6, 24 - asrs r0, 24 - lsls r1, r5, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - add r3, sp, 0x4 - ldrb r3, [r3] - subs r3, 0x7 - lsls r3, 24 - asrs r3, 24 - ldrb r4, [r4] - subs r4, 0x7 - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - bl Overworld_SetWarpDestination -_0806AC5E: - bl sp13F_fall_to_last_warp - bl sub_80559E4 - movs r0, 0x1 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_warphole - - thumb_func_start sub_806AC70 -sub_806AC70: @ 806AC70 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl Overworld_SetWarpDestination - bl sub_807E59C - bl sub_80559E4 - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_806AC70 - - thumb_func_start sub_806ACF8 -sub_806ACF8: @ 806ACF8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl Overworld_SetWarpDestination - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - bl sub_805DAE4 - bl sub_807E500 - bl sub_80559E4 - movs r0, 0x1 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_806ACF8 - - thumb_func_start ScrCmd_setwarp -ScrCmd_setwarp: @ 806AD8C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl Overworld_SetWarpDestination - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setwarp - - thumb_func_start ScrCmd_setdynamicwarp -ScrCmd_setdynamicwarp: @ 806AE0C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - lsls r0, 24 - asrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0 - mov r1, r9 - mov r2, r8 - adds r3, r6, 0 - bl saved_warp2_set_2 - movs r0, 0 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setdynamicwarp - - thumb_func_start sub_806AE90 -sub_806AE90: @ 806AE90 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl sub_80555F8 - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_806AE90 - - thumb_func_start sub_806AF10 -sub_806AF10: @ 806AF10 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl sub_805564C - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_806AF10 - - thumb_func_start ScrCmd_setescapewarp -ScrCmd_setescapewarp: @ 806AF90 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r5, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - mov r1, r9 - lsls r1, 24 - asrs r1, 24 - mov r9, r1 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - lsls r6, 24 - asrs r6, 24 - lsls r4, 24 - asrs r4, 24 - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - mov r0, r9 - adds r2, r6, 0 - adds r3, r4, 0 - bl sub_80555A0 - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setescapewarp - - thumb_func_start ScrCmd_getplayerxy -ScrCmd_getplayerxy: @ 806B010 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r5, r0, 0 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - ldr r2, _0806B048 @ =gSaveBlock1Ptr - ldr r1, [r2] - ldrh r1, [r1] - strh r1, [r5] - ldr r1, [r2] - ldrh r1, [r1, 0x2] - strh r1, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806B048: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_getplayerxy - - thumb_func_start ScrCmd_getpartysize -ScrCmd_getpartysize: @ 806B04C - push {r4,lr} - ldr r4, _0806B064 @ =gSpecialVar_Result - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B064: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_getpartysize - - thumb_func_start ScrCmd_playse -ScrCmd_playse: @ 806B068 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl PlaySE - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_playse - - thumb_func_start WaitForSoundEffectFinish -WaitForSoundEffectFinish: @ 806B07C - push {lr} - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _0806B08C - movs r0, 0 - b _0806B08E -_0806B08C: - movs r0, 0x1 -_0806B08E: - pop {r1} - bx r1 - thumb_func_end WaitForSoundEffectFinish - - thumb_func_start sub_806B094 -sub_806B094: @ 806B094 - push {lr} - ldr r1, _0806B0A4 @ =WaitForSoundEffectFinish - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_0806B0A4: .4byte WaitForSoundEffectFinish - thumb_func_end sub_806B094 - - thumb_func_start ScrCmd_playfanfare -ScrCmd_playfanfare: @ 806B0A8 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl PlayFanfare - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_playfanfare - - thumb_func_start WaitForFanfareFinish -WaitForFanfareFinish: @ 806B0BC - push {lr} - bl IsFanfareTaskInactive - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end WaitForFanfareFinish - - thumb_func_start sub_806B0CC -sub_806B0CC: @ 806B0CC - push {lr} - ldr r1, _0806B0DC @ =WaitForFanfareFinish - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_0806B0DC: .4byte WaitForFanfareFinish - thumb_func_end sub_806B0CC - - thumb_func_start sub_806B0E0 -sub_806B0E0: @ 806B0E0 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r1, r0, 16 - adds r5, r1, 0 - ldr r0, [r4, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - ldr r0, _0806B11C @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0806B114 - cmp r2, 0x1 - bne _0806B10E - adds r0, r1, 0 - bl sub_8055E78 -_0806B10E: - adds r0, r5, 0 - bl PlayNewMapMusic -_0806B114: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806B11C: .4byte gUnknown_203ADFA - thumb_func_end sub_806B0E0 - - thumb_func_start sub_806B120 -sub_806B120: @ 806B120 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl sub_8055E78 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_806B120 - - thumb_func_start sub_806B134 -sub_806B134: @ 806B134 - push {lr} - ldr r0, _0806B150 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0806B148 - bl Overworld_ChangeMusicToDefault -_0806B148: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806B150: .4byte gUnknown_203ADFA - thumb_func_end sub_806B134 - - thumb_func_start sub_806B154 -sub_806B154: @ 806B154 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _0806B178 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0806B172 - adds r0, r1, 0 - bl sub_8055F48 -_0806B172: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806B178: .4byte gUnknown_203ADFA - thumb_func_end sub_806B154 - - thumb_func_start sub_806B17C -sub_806B17C: @ 806B17C - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - ldr r0, _0806B19C @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0806B1A0 - movs r0, 0 - b _0806B1BE - .align 2, 0 -_0806B19C: .4byte gUnknown_203ADFA -_0806B1A0: - cmp r1, 0 - beq _0806B1AE - lsls r0, r1, 26 - lsrs r0, 24 - bl FadeOutBGMTemporarily - b _0806B1B4 -_0806B1AE: - movs r0, 0x4 - bl FadeOutBGMTemporarily -_0806B1B4: - ldr r1, _0806B1C4 @ =IsBGMPausedOrStopped - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 -_0806B1BE: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B1C4: .4byte IsBGMPausedOrStopped - thumb_func_end sub_806B17C - - thumb_func_start sub_806B1C8 -sub_806B1C8: @ 806B1C8 - push {lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldr r0, _0806B1F0 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0806B1FA - cmp r2, 0 - beq _0806B1F4 - lsls r0, r2, 26 - lsrs r0, 24 - bl FadeInBGM - b _0806B1FA - .align 2, 0 -_0806B1F0: .4byte gUnknown_203ADFA -_0806B1F4: - movs r0, 0x4 - bl FadeInBGM -_0806B1FA: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_806B1C8 - thumb_func_start ScrCmd_applymovement ScrCmd_applymovement: @ 806B200 push {r4,r5,lr} diff --git a/asm/seagallop.s b/asm/seagallop.s index 89f8c2867..f54d0d986 100644 --- a/asm/seagallop.s +++ b/asm/seagallop.s @@ -371,7 +371,7 @@ _08147150: bl warp_in ldr r0, _081471BC @ =sub_805671C bl SetMainCallback2 - bl sub_80559E4 + bl ResetInitialPlayerAvatarState bl sub_81473A0 ldr r0, _081471C0 @ =gUnknown_203F3D0 ldr r0, [r0] diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 46414b0df..00bff489f 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -45,28 +45,28 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_setflag .4byte ScrCmd_clearflag .4byte ScrCmd_checkflag - .4byte sub_806A9D4 - .4byte sub_806A9D8 - .4byte sub_806A9DC + .4byte ScrCmd_initclock + .4byte ScrCmd_dodailyevents + .4byte ScrCmd_gettime .4byte ScrCmd_playse - .4byte sub_806B094 + .4byte ScrCmd_waitse .4byte ScrCmd_playfanfare - .4byte sub_806B0CC - .4byte sub_806B0E0 - .4byte sub_806B120 - .4byte sub_806B134 - .4byte sub_806B154 - .4byte sub_806B17C - .4byte sub_806B1C8 + .4byte ScrCmd_waitfanfare + .4byte ScrCmd_playbgm + .4byte ScrCmd_savebgm + .4byte ScrCmd_fadedefaultbgm + .4byte ScrCmd_fadenewbgm + .4byte ScrCmd_fadeoutbgm + .4byte ScrCmd_fadeinbgm .4byte ScrCmd_warp .4byte ScrCmd_warpsilent .4byte ScrCmd_warpdoor .4byte ScrCmd_warphole - .4byte sub_806AC70 + .4byte ScrCmd_warpteleport .4byte ScrCmd_setwarp .4byte ScrCmd_setdynamicwarp - .4byte sub_806AE90 - .4byte sub_806AF10 + .4byte ScrCmd_setdivewarp + .4byte ScrCmd_setholewarp .4byte ScrCmd_getplayerxy .4byte ScrCmd_getpartysize .4byte ScrCmd_giveitem @@ -210,7 +210,7 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_checkmonobedience .4byte sub_806A28C .4byte sub_806A8C0 - .4byte sub_806ACF8 + .4byte ScrCmd_warpD7 .4byte sub_806C844 .4byte sub_806BC40 .4byte sub_806BD90 diff --git a/data/specials.inc b/data/specials.inc index 171a6fd8e..56b666207 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -327,8 +327,8 @@ gSpecials:: @ 815FD60 def_special nullsub_75 def_special nullsub_75 def_special sub_807B6C0 - def_special sp13E_warp_to_last_warp - def_special sp13F_fall_to_last_warp + def_special DoDiveWarp + def_special DoFallWarp def_special nullsub_75 def_special nullsub_75 def_special sub_80E5E70 diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 051865210..a2a4d3eac 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -3,14 +3,14 @@ #include "global.h" -void sub_80AF734(void); -void sp13E_warp_to_last_warp(void); -void sub_80AF7D0(void); -void sp13F_fall_to_last_warp(void); - -void sub_80AF848(void); -void sub_80AF87C(void); -void sub_807DF64(void); void sub_807DF7C(void); +void DoWarp(void); +void DoDiveWarp(void); +void DoDoorWarp(void); + +void DoFallWarp(void); +void sub_807E59C(void); +void sub_807E500(void); +void sub_807DF64(void); #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 297d66441..bb78bd0f3 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -20,5 +20,6 @@ u8 sub_805C808(u8); void SetPlayerAvatarStateMask(u8 mask); void sub_805D9C4(struct Sprite *sprite); void sub_805D154(u8 direction); +void sub_805DAE4(u8 direction); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_weather.h b/include/field_weather.h index b896259e9..eb80c455a 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -10,6 +10,7 @@ u8 GetSav1Weather(void); void sub_80AEDBC(void); void DoCurrentWeather(void); +void SetSav1WeatherFromCurrMapHeader(void); void sub_807B0C4(u16 *, u16 *, u32); #endif // GUARD_WEATHER_H diff --git a/include/overworld.h b/include/overworld.h index 50ac09d9e..6aa58baa9 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -35,7 +35,10 @@ void Overworld_SetMapObjTemplateMovementType(u8, u8); void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); -void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetDynamicWarpWithCoords(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetEscapeWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void Overworld_SetHealLocationWarp(u8); void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void sub_8084E2C(s8, s8, s8, s8, s8); @@ -81,7 +84,10 @@ void sub_8055DC4(void); u8 sav1_map_get_name(void); -void sub_8055D40(u16 mapDataId); +void SetCurrentMapLayout(u16 mapDataId); +void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y); + +void ResetInitialPlayerAvatarState(void); extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; diff --git a/include/quest_log.h b/include/quest_log.h index 00a8b8df3..73c0b5dac 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -23,4 +23,6 @@ void sub_8112720(u8); void sub_8113550(u16, const u16 *); void sub_8115748(u16); +extern u8 gUnknown_203ADFA; + #endif //GUARD_QUEST_LOG_H diff --git a/src/scrcmd.c b/src/scrcmd.c index c8e7babcc..8b9551c64 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -11,6 +11,10 @@ #include "quest_log.h" #include "map_preview_screen.h" #include "field_weather.h" +#include "field_tasks.h" +#include "field_fadetransition.h" +#include "field_player_avatar.h" +#include "sound.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -19,7 +23,7 @@ extern const u8 *const gStdScriptsEnd[]; EWRAM_DATA ptrdiff_t gVScriptOffset = 0; EWRAM_DATA u8 gUnknown_20370AC = 0; -EWRAM_DATA u16 gUnknown_20370AE = 0; +EWRAM_DATA u16 sPauseCounter = 0; EWRAM_DATA u16 gUnknown_20370B0 = 0; EWRAM_DATA u16 gUnknown_20370B2 = 0; EWRAM_DATA u16 gUnknown_20370B4 = 0; @@ -620,3 +624,345 @@ SCRCMD_DEF(ScrCmd_fadescreenspeed) SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } + +static bool8 RunPauseTimer(void) +{ + sPauseCounter--; + + if (sPauseCounter == 0) + return TRUE; + else + return FALSE; +} + +SCRCMD_DEF(ScrCmd_delay) +{ + sPauseCounter = ScriptReadHalfword(ctx); + SetupNativeScript(ctx, RunPauseTimer); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_initclock) +{ +// u8 hour = VarGet(ScriptReadHalfword(ctx)); +// u8 minute = VarGet(ScriptReadHalfword(ctx)); +// +// RtcInitLocalTimeOffset(hour, minute); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_dodailyevents) +{ +// DoTimeBasedEvents(); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_gettime) +{ +// RtcCalcLocalTime(); +// gSpecialVar_0x8000 = gLocalTime.hours; +// gSpecialVar_0x8001 = gLocalTime.minutes; +// gSpecialVar_0x8002 = gLocalTime.seconds; + gSpecialVar_0x8000 = 0; + gSpecialVar_0x8001 = 0; + gSpecialVar_0x8002 = 0; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setweather) +{ + u16 weather = VarGet(ScriptReadHalfword(ctx)); + + SetSav1Weather(weather); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_resetweather) +{ + SetSav1WeatherFromCurrMapHeader(); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_doweather) +{ + DoCurrentWeather(); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setstepcallback) +{ + ActivatePerStepCallback(ScriptReadByte(ctx)); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setmaplayoutindex) +{ + u16 value = VarGet(ScriptReadHalfword(ctx)); + + SetCurrentMapLayout(value); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_warp) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + DoWarp(); + ResetInitialPlayerAvatarState(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_warpsilent) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + DoDiveWarp(); + ResetInitialPlayerAvatarState(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_warpdoor) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + DoDoorWarp(); + ResetInitialPlayerAvatarState(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_warphole) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u16 x; + u16 y; + + PlayerGetDestCoords(&x, &y); + if (mapGroup == 0xFF && mapNum == 0xFF) + SetWarpDestinationToFixedHoleWarp(x - 7, y - 7); + else + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); + DoFallWarp(); + ResetInitialPlayerAvatarState(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_warpteleport) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_807E59C(); + ResetInitialPlayerAvatarState(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_warpD7) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + sub_805DAE4(player_get_direction_lower_nybble()); + sub_807E500(); + ResetInitialPlayerAvatarState(); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_setwarp) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setdynamicwarp) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + SetDynamicWarpWithCoords(0, mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setdivewarp) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + SetFixedDiveWarp(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setholewarp) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + SetFixedHoleWarp(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setescapewarp) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + SetEscapeWarp(mapGroup, mapNum, warpId, x, y); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_getplayerxy) +{ + u16 *pX = GetVarPointer(ScriptReadHalfword(ctx)); + u16 *pY = GetVarPointer(ScriptReadHalfword(ctx)); + + *pX = gSaveBlock1Ptr->pos.x; + *pY = gSaveBlock1Ptr->pos.y; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_getpartysize) +{ + gSpecialVar_Result = CalculatePlayerPartyCount(); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_playse) +{ + PlaySE(ScriptReadHalfword(ctx)); + return FALSE; +} + +static bool8 WaitForSoundEffectFinish(void) +{ + if (!IsSEPlaying()) + return TRUE; + else + return FALSE; +} + +SCRCMD_DEF(ScrCmd_waitse) +{ + SetupNativeScript(ctx, WaitForSoundEffectFinish); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_playfanfare) +{ + PlayFanfare(ScriptReadHalfword(ctx)); + return FALSE; +} + +static bool8 WaitForFanfareFinish(void) +{ + return IsFanfareTaskInactive(); +} + +SCRCMD_DEF(ScrCmd_waitfanfare) +{ + SetupNativeScript(ctx, WaitForFanfareFinish); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_playbgm) +{ + u16 songId = ScriptReadHalfword(ctx); + bool8 val = ScriptReadByte(ctx); + + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return FALSE; + if (val == TRUE) + Overworld_SetSavedMusic(songId); + PlayNewMapMusic(songId); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_savebgm) +{ + Overworld_SetSavedMusic(ScriptReadHalfword(ctx)); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_fadedefaultbgm) +{ + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return FALSE; + Overworld_ChangeMusicToDefault(); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_fadenewbgm) +{ + u16 music = ScriptReadHalfword(ctx); + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return FALSE; + Overworld_ChangeMusicTo(music); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_fadeoutbgm) +{ + u8 speed = ScriptReadByte(ctx); + + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return FALSE; + if (speed != 0) + FadeOutBGMTemporarily(4 * speed); + else + FadeOutBGMTemporarily(4); + SetupNativeScript(ctx, IsBGMPausedOrStopped); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_fadeinbgm) +{ + u8 speed = ScriptReadByte(ctx); + + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return FALSE; + if (speed != 0) + FadeInBGM(4 * speed); + else + FadeInBGM(4); + return FALSE; +} diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 91132c07b..74065445a 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -430,12 +430,12 @@ void sub_815DD44(void) if (gMapHeader.mapDataId - 0x129 > gUnknown_203F458->unk_0004.unk_0000.unk0) { gSpecialVar_Result = 3; - sub_8055D40(0x132); + SetCurrentMapLayout(0x132); } else { gSpecialVar_Result = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002; - sub_8055D40(gUnknown_847A284[gUnknown_203F458->unk_0000][gSpecialVar_Result]); + SetCurrentMapLayout(gUnknown_847A284[gUnknown_203F458->unk_0000][gSpecialVar_Result]); sub_815DDB0(); } } From 96e1b19dc1ea9dbf686fd26743d79c68d12e0f24 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 13:06:56 -0500 Subject: [PATCH 009/318] through ScrCmd_release; propose names for remaining funcs --- asm/battle_setup.s | 12 +- asm/field_control_avatar.s | 8 +- asm/field_map_obj.s | 6 +- asm/field_specials.s | 8 +- asm/link_rfu.s | 2 +- asm/link_rfu_3.s | 2 +- asm/map_obj_lock.s | 20 +- asm/menu_helpers.s | 4 +- asm/overworld.s | 16 +- asm/pokemon_summary_screen.s | 4 +- asm/scrcmd.s | 994 ++++---------------------------- asm/start_menu.s | 4 +- data/data_835B488.s | 7 +- data/data_83FECCC.s | 2 +- data/script_cmd_table.inc | 88 +-- include/field_map_obj.h | 8 +- include/field_map_obj_helpers.h | 2 +- include/map_obj_lock.h | 4 +- include/script_movement.h | 2 +- src/scrcmd.c | 293 +++++++++- src/vs_seeker.c | 4 +- sym_common.txt | 2 +- 22 files changed, 510 insertions(+), 982 deletions(-) diff --git a/asm/battle_setup.s b/asm/battle_setup.s index ca757da07..bba968305 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -1512,7 +1512,7 @@ battle_80801F0: @ 80801F0 ldrb r1, [r2, 0x5] ldrb r2, [r2, 0x4] bl GetFieldObjectIdByLocalIdAndMap - ldr r1, _08080224 @ =gUnknown_3005074 + ldr r1, _08080224 @ =gSelectedEventObject strb r0, [r1] _08080212: pop {r0} @@ -1521,7 +1521,7 @@ _08080212: _08080218: .4byte gUnknown_20386B0 _0808021C: .4byte gSpecialVar_LastTalked _08080220: .4byte gSaveBlock1Ptr -_08080224: .4byte gUnknown_3005074 +_08080224: .4byte gSelectedEventObject thumb_func_end battle_80801F0 thumb_func_start sub_8080228 @@ -1647,7 +1647,7 @@ TrainerWantsBattle: @ 8080334 push {r4,lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _08080368 @ =gUnknown_3005074 + ldr r2, _08080368 @ =gSelectedEventObject strb r0, [r2] ldr r4, _0808036C @ =gSpecialVar_LastTalked ldr r3, _08080370 @ =gMapObjects @@ -1667,7 +1667,7 @@ TrainerWantsBattle: @ 8080334 pop {r0} bx r0 .align 2, 0 -_08080368: .4byte gUnknown_3005074 +_08080368: .4byte gSelectedEventObject _0808036C: .4byte gSpecialVar_LastTalked _08080370: .4byte gMapObjects _08080374: .4byte gUnknown_81A4EB4 @@ -1693,7 +1693,7 @@ GetTrainerFlagFromScriptPointer: @ 8080378 thumb_func_start sub_8080398 sub_8080398: @ 8080398 push {r4,lr} - ldr r0, _080803C4 @ =gUnknown_3005074 + ldr r0, _080803C4 @ =gSelectedEventObject ldrb r0, [r0] lsls r4, r0, 3 adds r4, r0 @@ -1713,7 +1713,7 @@ sub_8080398: @ 8080398 pop {r0} bx r0 .align 2, 0 -_080803C4: .4byte gUnknown_3005074 +_080803C4: .4byte gSelectedEventObject _080803C8: .4byte gMapObjects thumb_func_end sub_8080398 diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 78f2a0777..39055b8e9 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -936,7 +936,7 @@ _0806CFBC: adds r4, 0x1 cmp r4, 0x3 ble _0806CFB0 - ldr r0, _0806CFE8 @ =gUnknown_3005074 + ldr r0, _0806CFE8 @ =gSelectedEventObject strb r3, [r0] ldr r1, _0806CFEC @ =gSpecialVar_LastTalked adds r0, r2, r3 @@ -954,7 +954,7 @@ _0806CFDE: bx r1 .align 2, 0 _0806CFE4: .4byte gUnknown_2031DEC -_0806CFE8: .4byte gUnknown_3005074 +_0806CFE8: .4byte gSelectedEventObject _0806CFEC: .4byte gSpecialVar_LastTalked _0806CFF0: .4byte gSpecialVar_Facing thumb_func_end sub_806CF38 @@ -1044,7 +1044,7 @@ _0806D092: _0806D098: .4byte gMapObjects _0806D09C: .4byte gUnknown_826D2D8 _0806D0A0: - ldr r0, _0806D0D4 @ =gUnknown_3005074 + ldr r0, _0806D0D4 @ =gSelectedEventObject strb r5, [r0] ldr r4, _0806D0D8 @ =gSpecialVar_LastTalked ldr r1, _0806D0DC @ =gMapObjects @@ -1069,7 +1069,7 @@ _0806D0C8: pop {r1} bx r1 .align 2, 0 -_0806D0D4: .4byte gUnknown_3005074 +_0806D0D4: .4byte gSelectedEventObject _0806D0D8: .4byte gSpecialVar_LastTalked _0806D0DC: .4byte gMapObjects _0806D0E0: .4byte gSpecialVar_Facing diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 308421098..14951c20c 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1614,8 +1614,8 @@ _0805E9F0: .4byte 0x0000ffff _0805E9F4: .4byte gSprites thumb_func_end AddPseudoFieldObject - thumb_func_start sub_805E9F8 -sub_805E9F8: @ 805E9F8 + thumb_func_start sprite_new +sprite_new: @ 805E9F8 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1772,7 +1772,7 @@ _0805EB24: _0805EB38: .4byte sub_8068FA8 _0805EB3C: .4byte 0x0000ffff _0805EB40: .4byte gSprites - thumb_func_end sub_805E9F8 + thumb_func_end sprite_new thumb_func_start sub_805EB44 sub_805EB44: @ 805EB44 diff --git a/asm/field_specials.s b/asm/field_specials.s index 0746df47a..0d0b2ba06 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -3138,7 +3138,7 @@ _080CBDE4: .4byte gSpecialVar_0x8004 thumb_func_start sub_80CBDE8 sub_80CBDE8: @ 80CBDE8 - ldr r1, _080CBDF8 @ =gUnknown_3005074 + ldr r1, _080CBDF8 @ =gSelectedEventObject movs r0, 0 strb r0, [r1] ldr r1, _080CBDFC @ =gUnknown_20370DA @@ -3146,7 +3146,7 @@ sub_80CBDE8: @ 80CBDE8 strh r0, [r1] bx lr .align 2, 0 -_080CBDF8: .4byte gUnknown_3005074 +_080CBDF8: .4byte gSelectedEventObject _080CBDFC: .4byte gUnknown_20370DA thumb_func_end sub_80CBDE8 @@ -3157,7 +3157,7 @@ sub_80CBE00: @ 80CBE00 ldrh r0, [r0] cmp r0, 0xFF bne _080CBE44 - ldr r1, _080CBE1C @ =gUnknown_3005074 + ldr r1, _080CBE1C @ =gSelectedEventObject ldrb r0, [r1] cmp r0, 0 bne _080CBE20 @@ -3165,7 +3165,7 @@ sub_80CBE00: @ 80CBE00 b _080CBE48 .align 2, 0 _080CBE18: .4byte gUnknown_20370DA -_080CBE1C: .4byte gUnknown_3005074 +_080CBE1C: .4byte gSelectedEventObject _080CBE20: ldr r2, _080CBE4C @ =gMapObjects ldrb r1, [r1] diff --git a/asm/link_rfu.s b/asm/link_rfu.s index 08f81f729..1fa1aab8f 100644 --- a/asm/link_rfu.s +++ b/asm/link_rfu.s @@ -3259,7 +3259,7 @@ sub_80FEC54: @ 80FEC54 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0 bne _080FEC70 _080FEC62: diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 035c51d3f..01e93a41d 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -11969,7 +11969,7 @@ _0811BADA: str r0, [sp, 0x4] movs r0, 0x19 adds r1, r4, 0 - bl sub_805E9F8 + bl sprite_new ldr r1, [sp, 0x8] adds r5, r1, r5 strb r0, [r5] diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s index 1b406a74d..52c2b342c 100644 --- a/asm/map_obj_lock.s +++ b/asm/map_obj_lock.s @@ -101,7 +101,7 @@ _080695F6: cmp r0, 0 bne _0806961E ldr r2, _08069640 @ =gMapObjects - ldr r0, _08069644 @ =gUnknown_3005074 + ldr r0, _08069644 @ =gSelectedEventObject ldrb r1, [r0] lsls r0, r1, 3 adds r0, r1 @@ -133,7 +133,7 @@ _08069634: .align 2, 0 _0806963C: .4byte gTasks _08069640: .4byte gMapObjects -_08069644: .4byte gUnknown_3005074 +_08069644: .4byte gSelectedEventObject thumb_func_end sub_80695CC thumb_func_start sub_8069648 @@ -159,7 +159,7 @@ _08069666: thumb_func_start LockSelectedMapObject LockSelectedMapObject: @ 806966C push {r4,r5,lr} - ldr r4, _080696B0 @ =gUnknown_3005074 + ldr r4, _080696B0 @ =gSelectedEventObject ldrb r0, [r4] bl FreezeMapObjectsExceptOne ldr r0, _080696B4 @ =sub_80695CC @@ -191,7 +191,7 @@ _080696AA: pop {r0} bx r0 .align 2, 0 -_080696B0: .4byte gUnknown_3005074 +_080696B0: .4byte gSelectedEventObject _080696B4: .4byte sub_80695CC _080696B8: .4byte gMapObjects _080696BC: .4byte gTasks @@ -225,7 +225,7 @@ _080696EC: .4byte gMapObjects sub_80696F0: @ 80696F0 push {r4,lr} ldr r4, _08069738 @ =gMapObjects - ldr r0, _0806973C @ =gUnknown_3005074 + ldr r0, _0806973C @ =gSelectedEventObject ldrb r1, [r0] lsls r0, r1, 3 adds r0, r1 @@ -257,13 +257,13 @@ _0806970E: bx r0 .align 2, 0 _08069738: .4byte gMapObjects -_0806973C: .4byte gUnknown_3005074 +_0806973C: .4byte gSelectedEventObject thumb_func_end sub_80696F0 thumb_func_start sub_8069740 sub_8069740: @ 8069740 push {lr} - ldr r0, _0806975C @ =gUnknown_3005074 + ldr r0, _0806975C @ =gSelectedEventObject ldrb r1, [r0] lsls r0, r1, 3 adds r0, r1 @@ -276,7 +276,7 @@ sub_8069740: @ 8069740 pop {r0} bx r0 .align 2, 0 -_0806975C: .4byte gUnknown_3005074 +_0806975C: .4byte gSelectedEventObject _08069760: .4byte gMapObjects _08069764: .4byte gSpecialVar_Facing thumb_func_end sub_8069740 @@ -284,7 +284,7 @@ _08069764: .4byte gSpecialVar_Facing thumb_func_start sub_8069768 sub_8069768: @ 8069768 push {lr} - ldr r0, _08069780 @ =gUnknown_3005074 + ldr r0, _08069780 @ =gSelectedEventObject ldrb r1, [r0] lsls r0, r1, 3 adds r0, r1 @@ -295,7 +295,7 @@ sub_8069768: @ 8069768 pop {r0} bx r0 .align 2, 0 -_08069780: .4byte gUnknown_3005074 +_08069780: .4byte gSelectedEventObject _08069784: .4byte gMapObjects thumb_func_end sub_8069768 diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index 3a0f709da..612672b93 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -334,7 +334,7 @@ itemid_80BF6D8_mail_related: @ 80BF6D8 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0x1 beq _080BF6EE bl InUnionRoom @@ -360,7 +360,7 @@ _080BF702: thumb_func_start sub_80BF708 sub_80BF708: @ 80BF708 push {lr} - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0x1 beq _080BF71A ldr r0, _080BF720 @ =gReceivedRemoteLinkPlayers diff --git a/asm/overworld.s b/asm/overworld.s index 077c5f4ef..b7cb7a989 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3225,8 +3225,8 @@ sub_8056420: @ 8056420 bx r0 thumb_func_end sub_8056420 - thumb_func_start sub_805642C -sub_805642C: @ 805642C + thumb_func_start is_c1_link_related_active +is_c1_link_related_active: @ 805642C push {lr} ldr r0, _0805643C @ =gMain ldr r1, [r0] @@ -3243,7 +3243,7 @@ _08056444: _08056446: pop {r1} bx r1 - thumb_func_end sub_805642C + thumb_func_end is_c1_link_related_active thumb_func_start sub_805644C sub_805644C: @ 805644C @@ -3662,7 +3662,7 @@ _080567D8: .4byte sub_80565B4 thumb_func_start c2_exit_to_overworld_2_switch c2_exit_to_overworld_2_switch: @ 80567DC push {lr} - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0x1 bne _080567F4 ldr r0, _080567F0 @ =c2_exit_to_overworld_2_link @@ -6144,7 +6144,7 @@ _08057C72: bl sub_805833C cmp r0, 0x1 bls _08057CA8 - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0x1 bne _08057CA8 bl sub_800A00C @@ -6976,7 +6976,7 @@ _08058240: .4byte gUnknown_81BB9F0 thumb_func_start sub_8058244 sub_8058244: @ 8058244 push {lr} - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0 bne _08058252 movs r0, 0 @@ -7009,7 +7009,7 @@ sub_8058274: @ 8058274 bl sub_800B248 cmp r0, 0x1 bls _080582D8 - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0x1 bne _080582D8 bl sub_800A00C @@ -7062,7 +7062,7 @@ sub_80582E0: @ 80582E0 bl sub_805833C cmp r0, 0x1 bls _08058304 - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0x1 bne _08058304 bl sub_800A00C diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 8db247b2b..5ebf9bc96 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -8431,7 +8431,7 @@ _08138B48: .4byte 0x00003208 thumb_func_start sub_8138B4C sub_8138B4C: @ 8138B4C push {lr} - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0 bne _08138B84 bl sub_811FA20 @@ -13239,7 +13239,7 @@ _0813B16C: _0813B190: .4byte 0x000032f4 _0813B194: .4byte 0x00003210 _0813B198: - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0 bne _0813B1C4 ldr r0, _0813B1C0 @ =gReceivedRemoteLinkPlayers diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 13659b838..36ccf0887 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,762 +5,8 @@ .text - thumb_func_start ScrCmd_applymovement -ScrCmd_applymovement: @ 806B200 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadWord - adds r3, r0, 0 - lsls r0, r4, 24 - lsrs r0, 24 - ldr r1, _0806B23C @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl ScriptMovement_StartObjectMovementScript - ldr r0, _0806B240 @ =gUnknown_20370B0 - strh r4, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806B23C: .4byte gSaveBlock1Ptr -_0806B240: .4byte gUnknown_20370B0 - thumb_func_end ScrCmd_applymovement - - thumb_func_start ScrCmd_applymovement_at -ScrCmd_applymovement_at: @ 806B244 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadWord - adds r3, r0, 0 - ldr r0, [r5, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - lsls r0, r4, 24 - lsrs r0, 24 - bl ScriptMovement_StartObjectMovementScript - ldr r0, _0806B284 @ =gUnknown_20370B0 - strh r4, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806B284: .4byte gUnknown_20370B0 - thumb_func_end ScrCmd_applymovement_at - - thumb_func_start WaitForMovementFinish -WaitForMovementFinish: @ 806B288 - push {lr} - ldr r0, _0806B2A4 @ =gUnknown_20370B0 - ldrb r0, [r0] - ldr r1, _0806B2A8 @ =gUnknown_20370B4 - ldrb r1, [r1] - ldr r2, _0806B2AC @ =gUnknown_20370B2 - ldrb r2, [r2] - bl ScriptMovement_IsObjectMovementFinished - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0806B2A4: .4byte gUnknown_20370B0 -_0806B2A8: .4byte gUnknown_20370B4 -_0806B2AC: .4byte gUnknown_20370B2 - thumb_func_end WaitForMovementFinish - - thumb_func_start ScrCmd_waitmovement -ScrCmd_waitmovement: @ 806B2B0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0806B2CC - ldr r0, _0806B2F0 @ =gUnknown_20370B0 - strh r1, [r0] -_0806B2CC: - ldr r1, _0806B2F4 @ =gUnknown_20370B2 - ldr r0, _0806B2F8 @ =gSaveBlock1Ptr - ldr r2, [r0] - movs r0, 0x4 - ldrsb r0, [r2, r0] - strh r0, [r1] - ldr r1, _0806B2FC @ =gUnknown_20370B4 - movs r0, 0x5 - ldrsb r0, [r2, r0] - strh r0, [r1] - ldr r1, _0806B300 @ =WaitForMovementFinish - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B2F0: .4byte gUnknown_20370B0 -_0806B2F4: .4byte gUnknown_20370B2 -_0806B2F8: .4byte gSaveBlock1Ptr -_0806B2FC: .4byte gUnknown_20370B4 -_0806B300: .4byte WaitForMovementFinish - thumb_func_end ScrCmd_waitmovement - - thumb_func_start ScrCmd_waitmovement_at -ScrCmd_waitmovement_at: @ 806B304 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0806B320 - ldr r0, _0806B348 @ =gUnknown_20370B0 - strh r1, [r0] -_0806B320: - ldr r0, [r4, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - ldr r0, _0806B34C @ =gUnknown_20370B2 - strh r2, [r0] - ldr r0, _0806B350 @ =gUnknown_20370B4 - strh r1, [r0] - ldr r1, _0806B354 @ =WaitForMovementFinish - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B348: .4byte gUnknown_20370B0 -_0806B34C: .4byte gUnknown_20370B2 -_0806B350: .4byte gUnknown_20370B4 -_0806B354: .4byte WaitForMovementFinish - thumb_func_end ScrCmd_waitmovement_at - - thumb_func_start ScrCmd_removeobject -ScrCmd_removeobject: @ 806B358 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806B37C @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl RemoveFieldObjectByLocalIdAndMap - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806B37C: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_removeobject - - thumb_func_start ScrCmd_removeobject_at -ScrCmd_removeobject_at: @ 806B380 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl RemoveFieldObjectByLocalIdAndMap - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_removeobject_at - - thumb_func_start ScrCmd_addobject -ScrCmd_addobject: @ 806B3B0 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806B3D4 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl show_sprite - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806B3D4: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_addobject - - thumb_func_start ScrCmd_addobject_at -ScrCmd_addobject_at: @ 806B3D8 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl show_sprite - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_addobject_at - - thumb_func_start ScrCmd_setobjectxy -ScrCmd_setobjectxy: @ 806B408 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r5, 24 - lsrs r5, 24 - ldr r1, _0806B46C @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - lsls r4, 16 - asrs r4, 16 - lsls r0, 16 - asrs r0, 16 - str r0, [sp] - adds r0, r5, 0 - adds r3, r4, 0 - bl sub_805F7C4 - movs r0, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806B46C: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_setobjectxy - - thumb_func_start ScrCmd_setobjectxyperm -ScrCmd_setobjectxyperm: @ 806B470 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r2, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 16 - asrs r4, 16 - lsls r2, 16 - asrs r2, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl Overworld_SetMapObjTemplateCoords - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setobjectxyperm - - thumb_func_start ScrCmd_moveobjectoffscreen -ScrCmd_moveobjectoffscreen: @ 806B4C8 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806B4EC @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl sub_805FE94 - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806B4EC: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_moveobjectoffscreen - - thumb_func_start ScrCmd_showobject_at -ScrCmd_showobject_at: @ 806B4F0 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - movs r3, 0 - bl npc_by_local_id_and_map_set_field_1_bit_x20 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_showobject_at - - thumb_func_start ScrCmd_hideobject_at -ScrCmd_hideobject_at: @ 806B520 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1 - bl npc_by_local_id_and_map_set_field_1_bit_x20 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_hideobject_at - - thumb_func_start ScrCmd_setobjectpriority -ScrCmd_setobjectpriority: @ 806B550 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r5, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r5, 0x8] - ldrb r1, [r3] - adds r4, r3, 0x1 - str r4, [r5, 0x8] - ldrb r3, [r3, 0x1] - adds r4, 0x1 - str r4, [r5, 0x8] - lsls r0, 24 - lsrs r0, 24 - adds r3, 0x53 - lsls r3, 24 - lsrs r3, 24 - bl sub_805F3A8 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setobjectpriority - - thumb_func_start ScrCmd_resetobjectpriority -ScrCmd_resetobjectpriority: @ 806B58C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r3, [r4, 0x8] - ldrb r2, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - ldrb r1, [r3] - adds r3, 0x1 - str r3, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl sub_805F400 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_resetobjectpriority - - thumb_func_start ScrCmd_faceplayer -ScrCmd_faceplayer: @ 806B5BC - push {r4,lr} - ldr r2, _0806B5EC @ =gMapObjects - ldr r0, _0806B5F0 @ =gUnknown_3005074 - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - ldrb r0, [r4] - lsls r0, 31 - cmp r0, 0 - beq _0806B5E4 - bl player_get_direction_lower_nybble - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectFaceOppositeDirection -_0806B5E4: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B5EC: .4byte gMapObjects -_0806B5F0: .4byte gUnknown_3005074 - thumb_func_end ScrCmd_faceplayer - - thumb_func_start ScrCmd_turnobject -ScrCmd_turnobject: @ 806B5F4 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, [r4, 0x8] - ldrb r3, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806B624 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl FieldObjectTurnByLocalIdAndMap - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B624: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_turnobject - - thumb_func_start ScrCmd_setobjectmovementtype -ScrCmd_setobjectmovementtype: @ 806B628 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - lsls r0, 24 - lsrs r0, 24 - bl Overworld_SetMapObjTemplateMovementType - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setobjectmovementtype - - thumb_func_start ScrCmd_createvobject -ScrCmd_createvobject: @ 806B650 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r5, r0, 0 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r6, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r3, r0, 0 - ldr r0, [r5, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - lsls r4, 16 - asrs r4, 16 - lsls r3, 16 - asrs r3, 16 - str r2, [sp] - str r1, [sp, 0x4] - mov r0, r8 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_805E9F8 - movs r0, 0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_createvobject - - thumb_func_start ScrCmd_turnvobject -ScrCmd_turnvobject: @ 806B6C0 - push {lr} - ldr r2, [r0, 0x8] - ldrb r3, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - adds r0, r3, 0 - bl sub_8069058 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_turnvobject - - thumb_func_start ScrCmd_lockall -ScrCmd_lockall: @ 806B6DC - push {r4,lr} - adds r4, r0, 0 - bl sub_805642C - cmp r0, 0 - bne _0806B6FC - bl ScriptFreezeMapObjects - ldr r1, _0806B6F8 @ =sub_8069590 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - b _0806B6FE - .align 2, 0 -_0806B6F8: .4byte sub_8069590 -_0806B6FC: - movs r0, 0 -_0806B6FE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_lockall - - thumb_func_start ScrCmd_lock -ScrCmd_lock: @ 806B704 - push {r4,lr} - adds r4, r0, 0 - bl sub_805642C - cmp r0, 0 - beq _0806B714 - movs r0, 0 - b _0806B752 -_0806B714: - ldr r2, _0806B738 @ =gMapObjects - ldr r0, _0806B73C @ =gUnknown_3005074 - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0806B744 - bl LockSelectedMapObject - ldr r1, _0806B740 @ =sub_8069648 - adds r0, r4, 0 - bl SetupNativeScript - b _0806B750 - .align 2, 0 -_0806B738: .4byte gMapObjects -_0806B73C: .4byte gUnknown_3005074 -_0806B740: .4byte sub_8069648 -_0806B744: - bl ScriptFreezeMapObjects - ldr r1, _0806B758 @ =sub_8069590 - adds r0, r4, 0 - bl SetupNativeScript -_0806B750: - movs r0, 0x1 -_0806B752: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B758: .4byte sub_8069590 - thumb_func_end ScrCmd_lock - - thumb_func_start ScrCmd_releaseall -ScrCmd_releaseall: @ 806B75C - push {lr} - bl HideFieldMessageBox - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0806B790 @ =gMapObjects - adds r0, r1 - bl FieldObjectClearAnimIfSpecialAnimFinished - bl sub_80974D8 - bl UnfreezeMapObjects - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806B790: .4byte gMapObjects - thumb_func_end ScrCmd_releaseall - - thumb_func_start ScrCmd_release -ScrCmd_release: @ 806B794 - push {r4,lr} - bl HideFieldMessageBox - ldr r4, _0806B7E4 @ =gMapObjects - ldr r0, _0806B7E8 @ =gUnknown_3005074 - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r4 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _0806B7B6 - adds r0, r1, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished -_0806B7B6: - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FieldObjectClearAnimIfSpecialAnimFinished - bl sub_80974D8 - bl UnfreezeMapObjects - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806B7E4: .4byte gMapObjects -_0806B7E8: .4byte gUnknown_3005074 - thumb_func_end ScrCmd_release - - thumb_func_start sub_806B7EC -sub_806B7EC: @ 806B7EC + thumb_func_start ScrCmd_cmdC7 +ScrCmd_cmdC7: @ 806B7EC ldr r2, _0806B804 @ =gUnknown_20370DC ldr r3, _0806B808 @ =gUnknown_20370DA ldrh r1, [r3] @@ -775,10 +21,10 @@ sub_806B7EC: @ 806B7EC .align 2, 0 _0806B804: .4byte gUnknown_20370DC _0806B808: .4byte gUnknown_20370DA - thumb_func_end sub_806B7EC + thumb_func_end ScrCmd_cmdC7 - thumb_func_start sub_806B80C -sub_806B80C: @ 806B80C + thumb_func_start ScrCmd_message +ScrCmd_message: @ 806B80C push {r4,lr} adds r4, r0, 0 bl ScriptReadWord @@ -791,10 +37,10 @@ _0806B81A: pop {r4} pop {r1} bx r1 - thumb_func_end sub_806B80C + thumb_func_end ScrCmd_message - thumb_func_start sub_806B828 -sub_806B828: @ 806B828 + thumb_func_start ScrCmd_cmdC8 +ScrCmd_cmdC8: @ 806B828 push {r4,lr} adds r4, r0, 0 bl ScriptReadWord @@ -812,19 +58,19 @@ _0806B836: pop {r4} pop {r1} bx r1 - thumb_func_end sub_806B828 + thumb_func_end ScrCmd_cmdC8 - thumb_func_start sub_806B850 -sub_806B850: @ 806B850 + thumb_func_start ScrCmd_cmdC9 +ScrCmd_cmdC9: @ 806B850 push {lr} bl sub_80F7998 movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_806B850 + thumb_func_end ScrCmd_cmdC9 - thumb_func_start sub_806B85C -sub_806B85C: @ 806B85C + thumb_func_start ScrCmd_messageautoscroll +ScrCmd_messageautoscroll: @ 806B85C push {r4,lr} adds r4, r0, 0 bl ScriptReadWord @@ -837,10 +83,10 @@ _0806B86A: pop {r4} pop {r1} bx r1 - thumb_func_end sub_806B85C + thumb_func_end ScrCmd_messageautoscroll - thumb_func_start sub_806B878 -sub_806B878: @ 806B878 + thumb_func_start ScrCmd_waitmessage +ScrCmd_waitmessage: @ 806B878 push {lr} ldr r1, _0806B888 @ =IsFieldMessageBoxHidden bl SetupNativeScript @@ -849,16 +95,16 @@ sub_806B878: @ 806B878 bx r1 .align 2, 0 _0806B888: .4byte IsFieldMessageBoxHidden - thumb_func_end sub_806B878 + thumb_func_end ScrCmd_waitmessage - thumb_func_start sub_806B88C -sub_806B88C: @ 806B88C + thumb_func_start ScrCmd_closemessage +ScrCmd_closemessage: @ 806B88C push {lr} bl HideFieldMessageBox movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_806B88C + thumb_func_end ScrCmd_closemessage thumb_func_start sub_806B898 sub_806B898: @ 806B898 @@ -1085,8 +331,8 @@ _0806BA36: bx r1 thumb_func_end sub_806B96C - thumb_func_start sub_806BA3C -sub_806BA3C: @ 806BA3C + thumb_func_start ScrCmd_waitbuttonpress +ScrCmd_waitbuttonpress: @ 806BA3C push {r4,lr} adds r4, r0, 0 ldr r0, _0806BA70 @ =gUnknown_3005070 @@ -1117,7 +363,7 @@ _0806BA70: .4byte gUnknown_3005070 _0806BA74: .4byte gUnknown_203ADFA _0806BA78: .4byte gUnknown_20370AC _0806BA7C: .4byte sub_806B898 - thumb_func_end sub_806BA3C + thumb_func_end ScrCmd_waitbuttonpress thumb_func_start ScrCmd_yesnobox ScrCmd_yesnobox: @ 806BA80 @@ -1222,11 +468,11 @@ _0806BB2C: bx r1 thumb_func_end ScrCmd_multichoicedefault - thumb_func_start sub_806BB38 -sub_806BB38: @ 806BB38 + thumb_func_start ScrCmd_drawbox +ScrCmd_drawbox: @ 806BB38 movs r0, 0 bx lr - thumb_func_end sub_806BB38 + thumb_func_end ScrCmd_drawbox thumb_func_start ScrCmd_multichoicegrid ScrCmd_multichoicegrid: @ 806BB3C @@ -1272,23 +518,23 @@ _0806BB80: bx r1 thumb_func_end ScrCmd_multichoicegrid - thumb_func_start sub_806BB8C -sub_806BB8C: @ 806BB8C + thumb_func_start ScrCmd_erasebox +ScrCmd_erasebox: @ 806BB8C ldr r1, [r0, 0x8] adds r1, 0x4 str r1, [r0, 0x8] movs r0, 0 bx lr - thumb_func_end sub_806BB8C + thumb_func_end ScrCmd_erasebox - thumb_func_start sub_806BB98 -sub_806BB98: @ 806BB98 + thumb_func_start ScrCmd_drawboxtext +ScrCmd_drawboxtext: @ 806BB98 movs r0, 0 bx lr - thumb_func_end sub_806BB98 + thumb_func_end ScrCmd_drawboxtext - thumb_func_start sub_806BB9C -sub_806BB9C: @ 806BB9C + thumb_func_start ScrCmd_showmonpic +ScrCmd_showmonpic: @ 806BB9C push {r4,r5,lr} adds r5, r0, 0 bl ScriptReadHalfword @@ -1314,10 +560,10 @@ sub_806BB9C: @ 806BB9C pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_806BB9C + thumb_func_end ScrCmd_showmonpic - thumb_func_start sub_806BBD8 -sub_806BBD8: @ 806BBD8 + thumb_func_start ScrCmd_hidemonpic +ScrCmd_hidemonpic: @ 806BBD8 push {r4,lr} adds r4, r0, 0 bl sub_809D3CC @@ -1334,19 +580,19 @@ _0806BBF2: pop {r4} pop {r1} bx r1 - thumb_func_end sub_806BBD8 + thumb_func_end ScrCmd_hidemonpic - thumb_func_start sub_806BBF8 -sub_806BBF8: @ 806BBF8 + thumb_func_start ScrCmd_showcontestwinner +ScrCmd_showcontestwinner: @ 806BBF8 ldr r1, [r0, 0x8] adds r1, 0x1 str r1, [r0, 0x8] movs r0, 0 bx lr - thumb_func_end sub_806BBF8 + thumb_func_end ScrCmd_showcontestwinner - thumb_func_start sub_806BC04 -sub_806BC04: @ 806BC04 + thumb_func_start ScrCmd_braillemessage +ScrCmd_braillemessage: @ 806BC04 push {r4,r5,lr} sub sp, 0xC adds r5, r0, 0 @@ -1374,10 +620,10 @@ _0806BC16: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_806BC04 + thumb_func_end ScrCmd_braillemessage - thumb_func_start sub_806BC40 -sub_806BC40: @ 806BC40 + thumb_func_start ScrCmd_getstringwidth +ScrCmd_getstringwidth: @ 806BC40 push {r4,lr} adds r4, r0, 0 bl ScriptReadWord @@ -1398,7 +644,7 @@ _0806BC50: bx r1 .align 2, 0 _0806BC68: .4byte gSpecialVar_0x8004 - thumb_func_end sub_806BC40 + thumb_func_end ScrCmd_getstringwidth thumb_func_start ScrCmd_vmessage ScrCmd_vmessage: @ 806BC6C @@ -1545,8 +791,8 @@ ScrCmd_bufferitemname: @ 806BD5C _0806BD8C: .4byte sScriptStringVars thumb_func_end ScrCmd_bufferitemname - thumb_func_start sub_806BD90 -sub_806BD90: @ 806BD90 + thumb_func_start ScrCmd_cmdDA +ScrCmd_cmdDA: @ 806BD90 push {r4-r7,lr} adds r4, r0, 0 ldr r0, [r4, 0x8] @@ -1619,10 +865,10 @@ _0806BE22: .align 2, 0 _0806BE2C: .4byte sScriptStringVars _0806BE30: .4byte gUnknown_83A72A2 - thumb_func_end sub_806BD90 + thumb_func_end ScrCmd_cmdDA - thumb_func_start sub_806BE34 -sub_806BE34: @ 806BE34 + thumb_func_start ScrCmd_bufferdecorationname +ScrCmd_bufferdecorationname: @ 806BE34 push {lr} ldr r1, [r0, 0x8] adds r1, 0x1 @@ -1634,7 +880,7 @@ sub_806BE34: @ 806BE34 movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_806BE34 + thumb_func_end ScrCmd_bufferdecorationname thumb_func_start ScrCmd_buffermovename ScrCmd_buffermovename: @ 806BE50 @@ -2085,8 +1331,8 @@ _0806C1C4: .4byte gSpecialVar_Result _0806C1C8: .4byte gSaveBlock1Ptr thumb_func_end ScrCmd_checkmoney - thumb_func_start sub_806C1CC -sub_806C1CC: @ 806C1CC + thumb_func_start ScrCmd_showmoneybox +ScrCmd_showmoneybox: @ 806C1CC push {r4,r5,lr} ldr r1, [r0, 0x8] ldrb r5, [r1] @@ -2123,19 +1369,19 @@ _0806C20A: .align 2, 0 _0806C214: .4byte sub_809D6D4 _0806C218: .4byte gSaveBlock1Ptr - thumb_func_end sub_806C1CC + thumb_func_end ScrCmd_showmoneybox - thumb_func_start sub_806C21C -sub_806C21C: @ 806C21C + thumb_func_start ScrCmd_hidemoneybox +ScrCmd_hidemoneybox: @ 806C21C push {lr} bl HideMoneyBox movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_806C21C + thumb_func_end ScrCmd_hidemoneybox - thumb_func_start sub_806C228 -sub_806C228: @ 806C228 + thumb_func_start ScrCmd_updatemoneybox +ScrCmd_updatemoneybox: @ 806C228 push {lr} ldr r1, [r0, 0x8] adds r1, 0x1 @@ -2159,10 +1405,10 @@ _0806C24E: bx r1 .align 2, 0 _0806C254: .4byte gSaveBlock1Ptr - thumb_func_end sub_806C228 + thumb_func_end ScrCmd_updatemoneybox - thumb_func_start sub_806C258 -sub_806C258: @ 806C258 + thumb_func_start ScrCmd_showcoinsbox +ScrCmd_showcoinsbox: @ 806C258 push {r4,r5,lr} ldr r1, [r0, 0x8] ldrb r5, [r1] @@ -2190,7 +1436,7 @@ _0806C286: bx r1 .align 2, 0 _0806C290: .4byte sub_809D6D4 - thumb_func_end sub_806C258 + thumb_func_end ScrCmd_showcoinsbox thumb_func_start ScrCmd_hidecoinsbox ScrCmd_hidecoinsbox: @ 806C294 @@ -2232,14 +1478,14 @@ ScrCmd_trainerbattle: @ 806C2C4 bx r1 thumb_func_end ScrCmd_trainerbattle - thumb_func_start sub_806C2D8 -sub_806C2D8: @ 806C2D8 + thumb_func_start ScrCmd_dotrainerbattle +ScrCmd_dotrainerbattle: @ 806C2D8 push {lr} bl sub_8080464 movs r0, 0x1 pop {r1} bx r1 - thumb_func_end sub_806C2D8 + thumb_func_end ScrCmd_dotrainerbattle thumb_func_start ScrCmd_ontrainerbattleend ScrCmd_ontrainerbattleend: @ 806C2E4 @@ -2339,18 +1585,18 @@ ScrCmd_setwildbattle: @ 806C368 bx r1 thumb_func_end ScrCmd_setwildbattle - thumb_func_start sub_806C39C -sub_806C39C: @ 806C39C + thumb_func_start ScrCmd_dowildbattle +ScrCmd_dowildbattle: @ 806C39C push {lr} bl sub_807F8C4 bl ScriptContext1_Stop movs r0, 0x1 pop {r1} bx r1 - thumb_func_end sub_806C39C + thumb_func_end ScrCmd_dowildbattle - thumb_func_start sub_806C3AC -sub_806C3AC: @ 806C3AC + thumb_func_start ScrCmd_pokemart +ScrCmd_pokemart: @ 806C3AC push {lr} bl ScriptReadWord bl sub_809C164 @@ -2358,10 +1604,10 @@ sub_806C3AC: @ 806C3AC movs r0, 0x1 pop {r1} bx r1 - thumb_func_end sub_806C3AC + thumb_func_end ScrCmd_pokemart - thumb_func_start sub_806C3C0 -sub_806C3C0: @ 806C3C0 + thumb_func_start ScrCmd_pokemartdecoration +ScrCmd_pokemartdecoration: @ 806C3C0 push {lr} bl ScriptReadWord bl sub_809C1A0 @@ -2369,10 +1615,10 @@ sub_806C3C0: @ 806C3C0 movs r0, 0x1 pop {r1} bx r1 - thumb_func_end sub_806C3C0 + thumb_func_end ScrCmd_pokemartdecoration - thumb_func_start sub_806C3D4 -sub_806C3D4: @ 806C3D4 + thumb_func_start ScrCmd_pokemartdecoration2 +ScrCmd_pokemartdecoration2: @ 806C3D4 push {lr} bl ScriptReadWord bl sub_809C1BC @@ -2380,7 +1626,7 @@ sub_806C3D4: @ 806C3D4 movs r0, 0x1 pop {r1} bx r1 - thumb_func_end sub_806C3D4 + thumb_func_end ScrCmd_pokemartdecoration2 thumb_func_start ScrCmd_playslotmachine ScrCmd_playslotmachine: @ 806C3E8 @@ -2401,44 +1647,44 @@ ScrCmd_playslotmachine: @ 806C3E8 _0806C40C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_end ScrCmd_playslotmachine - thumb_func_start sub_806C410 -sub_806C410: @ 806C410 + thumb_func_start ScrCmd_setberrytree +ScrCmd_setberrytree: @ 806C410 movs r0, 0 bx lr - thumb_func_end sub_806C410 + thumb_func_end ScrCmd_setberrytree - thumb_func_start sub_806C414 -sub_806C414: @ 806C414 + thumb_func_start ScrCmd_getpricereduction +ScrCmd_getpricereduction: @ 806C414 movs r0, 0 bx lr - thumb_func_end sub_806C414 + thumb_func_end ScrCmd_getpricereduction - thumb_func_start sub_806C418 -sub_806C418: @ 806C418 + thumb_func_start ScrCmd_choosecontestmon +ScrCmd_choosecontestmon: @ 806C418 push {lr} bl ScriptContext1_Stop movs r0, 0x1 pop {r1} bx r1 - thumb_func_end sub_806C418 + thumb_func_end ScrCmd_choosecontestmon - thumb_func_start sub_806C424 -sub_806C424: @ 806C424 + thumb_func_start ScrCmd_startcontest +ScrCmd_startcontest: @ 806C424 movs r0, 0 bx lr - thumb_func_end sub_806C424 + thumb_func_end ScrCmd_startcontest - thumb_func_start sub_806C428 -sub_806C428: @ 806C428 + thumb_func_start ScrCmd_showcontestresults +ScrCmd_showcontestresults: @ 806C428 movs r0, 0 bx lr - thumb_func_end sub_806C428 + thumb_func_end ScrCmd_showcontestresults - thumb_func_start sub_806C42C -sub_806C42C: @ 806C42C + thumb_func_start ScrCmd_contestlinktransfer +ScrCmd_contestlinktransfer: @ 806C42C movs r0, 0 bx lr - thumb_func_end sub_806C42C + thumb_func_end ScrCmd_contestlinktransfer thumb_func_start ScrCmd_dofieldeffect ScrCmd_dofieldeffect: @ 806C430 @@ -2584,8 +1830,8 @@ ScrCmd_playmoncry: @ 806C508 bx r1 thumb_func_end ScrCmd_playmoncry - thumb_func_start sub_806C540 -sub_806C540: @ 806C540 + thumb_func_start ScrCmd_waitmoncry +ScrCmd_waitmoncry: @ 806C540 push {lr} ldr r1, _0806C550 @ =IsCryFinished bl SetupNativeScript @@ -2594,7 +1840,7 @@ sub_806C540: @ 806C540 bx r1 .align 2, 0 _0806C550: .4byte IsCryFinished - thumb_func_end sub_806C540 + thumb_func_end ScrCmd_waitmoncry thumb_func_start ScrCmd_setmetatile ScrCmd_setmetatile: @ 806C554 @@ -2744,8 +1990,8 @@ _0806C682: bx r1 thumb_func_end sub_806C670 - thumb_func_start sub_806C688 -sub_806C688: @ 806C688 + thumb_func_start ScrCmd_waitdoranim +ScrCmd_waitdoranim: @ 806C688 push {lr} ldr r1, _0806C698 @ =sub_806C670 bl SetupNativeScript @@ -2754,7 +2000,7 @@ sub_806C688: @ 806C688 bx r1 .align 2, 0 _0806C698: .4byte sub_806C670 - thumb_func_end sub_806C688 + thumb_func_end ScrCmd_waitdoranim thumb_func_start ScrCmd_setdooropen ScrCmd_setdooropen: @ 806C69C @@ -2822,17 +2068,17 @@ ScrCmd_setdoorclosed: @ 806C6E0 bx r1 thumb_func_end ScrCmd_setdoorclosed - thumb_func_start sub_806C724 -sub_806C724: @ 806C724 + thumb_func_start ScrCmd_addelevmenuitem +ScrCmd_addelevmenuitem: @ 806C724 movs r0, 0 bx lr - thumb_func_end sub_806C724 + thumb_func_end ScrCmd_addelevmenuitem - thumb_func_start sub_806C728 -sub_806C728: @ 806C728 + thumb_func_start ScrCmd_showelevmenu +ScrCmd_showelevmenu: @ 806C728 movs r0, 0 bx lr - thumb_func_end sub_806C728 + thumb_func_end ScrCmd_showelevmenu thumb_func_start ScrCmd_checkcoins ScrCmd_checkcoins: @ 806C72C @@ -2912,23 +2158,23 @@ _0806C7B0: _0806C7B8: .4byte gSpecialVar_Result thumb_func_end ScrCmd_takecoins - thumb_func_start sub_806C7BC -sub_806C7BC: @ 806C7BC + thumb_func_start ScrCmd_cmdCA +ScrCmd_cmdCA: @ 806C7BC push {lr} bl sub_8069A20 movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_806C7BC + thumb_func_end ScrCmd_cmdCA - thumb_func_start sub_806C7C8 -sub_806C7C8: @ 806C7C8 + thumb_func_start ScrCmd_cmdCB +ScrCmd_cmdCB: @ 806C7C8 push {lr} bl sub_8069A2C movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_806C7C8 + thumb_func_end ScrCmd_cmdCB thumb_func_start ScrCmd_setmonobedient ScrCmd_setmonobedient: @ 806C7D4 @@ -2985,8 +2231,8 @@ _0806C83C: .4byte gSpecialVar_Result _0806C840: .4byte gPlayerParty thumb_func_end ScrCmd_checkmonobedience - thumb_func_start sub_806C844 -sub_806C844: @ 806C844 + thumb_func_start ScrCmd_setmonmetlocation +ScrCmd_setmonmetlocation: @ 806C844 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -3019,6 +2265,6 @@ _0806C87A: bx r1 .align 2, 0 _0806C884: .4byte gPlayerParty - thumb_func_end sub_806C844 + thumb_func_end ScrCmd_setmonmetlocation .align 2, 0 @ Don't pad with nop. diff --git a/asm/start_menu.s b/asm/start_menu.s index 1d81d0392..4a58b11ad 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -11,7 +11,7 @@ sub_806ED54: @ 806ED54 ldr r0, _0806ED6C @ =gUnknown_20370F5 movs r1, 0 strb r1, [r0] - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0x1 bne _0806ED70 bl sub_806EE34 @@ -634,7 +634,7 @@ _0806F254: .4byte gUnknown_20370F0 thumb_func_start ShowStartMenu ShowStartMenu: @ 806F258 push {lr} - bl sub_805642C + bl is_c1_link_related_active cmp r0, 0 bne _0806F26E bl player_bitmagic diff --git a/data/data_835B488.s b/data/data_835B488.s index 6e387a536..523942112 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -660,10 +660,13 @@ gUnknown_83A7240:: @ 83A7240 .section .rodata.83A72A0 gUnknown_83A72A0:: @ 83A72A0 - .incbin "baserom.gba", 0x3A72A0, 0x2 + .string "S$" gUnknown_83A72A2:: @ 83A72A2 - .incbin "baserom.gba", 0x3A72A2, 0x6 + .string "IES$" + +gUnknown_83A72A6:: @ 83A72A6 + .string " " gUnknown_83A72A8:: @ 83A72A8 .incbin "baserom.gba", 0x3A72A8, 0x68 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 9c39a96d2..a96e9ff70 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -785,7 +785,7 @@ gUnknown_84162B9:: @ 84162B9 .incbin "baserom.gba", 0x4162B9, 0x4 gUnknown_84162BD:: @ 84162BD - .incbin "baserom.gba", 0x4162BD, 0x7 + .string " BERRY$" gText_Coins:: @ 84162C4 .incbin "baserom.gba", 0x4162C4, 0x24 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 00bff489f..8d92c94f5 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -94,7 +94,7 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_faceplayer .4byte ScrCmd_turnobject .4byte ScrCmd_trainerbattle - .4byte sub_806C2D8 + .4byte ScrCmd_dotrainerbattle .4byte ScrCmd_ontrainerbattleend .4byte ScrCmd_ontrainerbattleendgoto .4byte ScrCmd_checktrainerflag @@ -103,25 +103,25 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_setobjectxyperm .4byte ScrCmd_moveobjectoffscreen .4byte ScrCmd_setobjectmovementtype - .4byte sub_806B878 - .4byte sub_806B80C - .4byte sub_806B88C + .4byte ScrCmd_waitmessage + .4byte ScrCmd_message + .4byte ScrCmd_closemessage .4byte ScrCmd_lockall .4byte ScrCmd_lock .4byte ScrCmd_releaseall .4byte ScrCmd_release - .4byte sub_806BA3C + .4byte ScrCmd_waitbuttonpress .4byte ScrCmd_yesnobox .4byte ScrCmd_multichoice .4byte ScrCmd_multichoicedefault .4byte ScrCmd_multichoicegrid - .4byte sub_806BB38 - .4byte sub_806BB8C - .4byte sub_806BB98 - .4byte sub_806BB9C - .4byte sub_806BBD8 - .4byte sub_806BBF8 - .4byte sub_806BC04 + .4byte ScrCmd_drawbox + .4byte ScrCmd_erasebox + .4byte ScrCmd_drawboxtext + .4byte ScrCmd_showmonpic + .4byte ScrCmd_hidemonpic + .4byte ScrCmd_showcontestwinner + .4byte ScrCmd_braillemessage .4byte ScrCmd_givemon .4byte ScrCmd_giveegg .4byte ScrCmd_setmonmove @@ -130,33 +130,33 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_bufferleadmonspeciesname .4byte ScrCmd_bufferpartymonnick .4byte ScrCmd_bufferitemname - .4byte sub_806BE34 + .4byte ScrCmd_bufferdecorationname .4byte ScrCmd_buffermovename .4byte ScrCmd_buffernumberstring .4byte ScrCmd_bufferstdstring .4byte ScrCmd_bufferstring - .4byte sub_806C3AC - .4byte sub_806C3C0 - .4byte sub_806C3D4 + .4byte ScrCmd_pokemart + .4byte ScrCmd_pokemartdecoration + .4byte ScrCmd_pokemartdecoration2 .4byte ScrCmd_playslotmachine - .4byte sub_806C410 - .4byte sub_806C418 - .4byte sub_806C424 - .4byte sub_806C428 - .4byte sub_806C42C + .4byte ScrCmd_setberrytree + .4byte ScrCmd_choosecontestmon + .4byte ScrCmd_startcontest + .4byte ScrCmd_showcontestresults + .4byte ScrCmd_contestlinktransfer .4byte ScrCmd_random .4byte ScrCmd_givemoney .4byte ScrCmd_takemoney .4byte ScrCmd_checkmoney - .4byte sub_806C1CC - .4byte sub_806C21C - .4byte sub_806C228 - .4byte sub_806C414 + .4byte ScrCmd_showmoneybox + .4byte ScrCmd_hidemoneybox + .4byte ScrCmd_updatemoneybox + .4byte ScrCmd_getpricereduction .4byte ScrCmd_fadescreen .4byte ScrCmd_fadescreenspeed .4byte ScrCmd_setflashradius .4byte ScrCmd_animateflash - .4byte sub_806B85C + .4byte ScrCmd_messageautoscroll .4byte ScrCmd_dofieldeffect .4byte ScrCmd_setfieldeffectarg .4byte ScrCmd_waitfieldeffect @@ -175,16 +175,16 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_turnvobject .4byte ScrCmd_opendoor .4byte ScrCmd_closedoor - .4byte sub_806C688 + .4byte ScrCmd_waitdoranim .4byte ScrCmd_setdooropen .4byte ScrCmd_setdoorclosed - .4byte sub_806C724 - .4byte sub_806C728 + .4byte ScrCmd_addelevmenuitem + .4byte ScrCmd_showelevmenu .4byte ScrCmd_checkcoins .4byte ScrCmd_givecoins .4byte ScrCmd_takecoins .4byte ScrCmd_setwildbattle - .4byte sub_806C39C + .4byte ScrCmd_dowildbattle .4byte ScrCmd_setvaddress .4byte ScrCmd_vgoto .4byte ScrCmd_vcall @@ -193,27 +193,27 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_vmessage .4byte ScrCmd_vloadword .4byte ScrCmd_vbufferstring - .4byte sub_806C258 + .4byte ScrCmd_showcoinsbox .4byte ScrCmd_hidecoinsbox .4byte ScrCmd_updatecoinsbox .4byte ScrCmd_incrementgamestat .4byte ScrCmd_setescapewarp - .4byte sub_806C540 + .4byte ScrCmd_waitmoncry .4byte ScrCmd_bufferboxname - .4byte sub_806B7EC - .4byte sub_806B828 - .4byte sub_806B850 - .4byte sub_806C7BC - .4byte sub_806C7C8 - .4byte sub_806A888 + .4byte ScrCmd_cmdC7 + .4byte ScrCmd_cmdC8 + .4byte ScrCmd_cmdC9 + .4byte ScrCmd_cmdCA + .4byte ScrCmd_cmdCB + .4byte ScrCmd_comparestattoword .4byte ScrCmd_setmonobedient .4byte ScrCmd_checkmonobedience - .4byte sub_806A28C - .4byte sub_806A8C0 - .4byte ScrCmd_warpD7 - .4byte sub_806C844 - .4byte sub_806BC40 - .4byte sub_806BD90 + .4byte ScrCmd_cmdCF + .4byte ScrCmd_cmdD0 + .4byte ScrCmd_warpD1 + .4byte ScrCmd_setmonmetlocation + .4byte ScrCmd_getstringwidth + .4byte ScrCmd_cmdDA gScriptCmdTableEnd:: @ 815FD08 .4byte ScrCmd_nop diff --git a/include/field_map_obj.h b/include/field_map_obj.h index d2ec58979..69e3419de 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -35,7 +35,7 @@ u8 sub_808D4F4(void); void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8); void npc_load_two_palettes__no_record(u16, u8); void npc_load_two_palettes__and_record(u16, u8); -void sub_808EBA8(u8, u8, u8, s16, s16); +void sub_805F7C4(u8, u8, u8, s16, s16); void pal_patch_for_npc(u16, u8); void sub_808E16C(s16, s16); void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat); @@ -59,13 +59,13 @@ const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); void gpu_pal_allocator_reset__manage_upper_four(void); void sub_808E82C(u8, u8, u8, s16, s16); -void sub_808E7E4(u8, u8, u8); -void sub_808E78C(u8, u8, u8, u8); +void sub_805F400(u8, u8, u8); +void sub_805F3A8(u8, u8, u8, u8); void sub_808E75C(s16, s16); void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *); void npc_coords_shift(struct MapObject *, s16, s16); void sub_808EB08(struct MapObject *, s16, s16); -void sub_808F254(u8, u8, u8); +void sub_805FE94(u8, u8, u8); void FieldObjectStep(struct MapObject *, struct Sprite *, bool8(struct MapObject *, struct Sprite *)); u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 GetOppositeDirection(u8); diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index 2d3f69d95..cd1b19eaf 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -4,6 +4,6 @@ #include "global.h" void UnfreezeMapObjects(void); -void sub_8097B78(u8, u8); +void sub_8069058(u8, u8); #endif diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h index c8e075658..2927ca26d 100644 --- a/include/map_obj_lock.h +++ b/include/map_obj_lock.h @@ -3,9 +3,9 @@ #include "global.h" -bool8 sub_80983C4(void); +bool8 sub_8069590(void); void ScriptFreezeMapObjects(void); -bool8 sub_809847C(void); +bool8 sub_8069648(void); void LockSelectedMapObject(void); void sub_8098630(void); bool8 sub_8098734(void); diff --git a/include/script_movement.h b/include/script_movement.h index ae446812e..2a6dbd2a7 100644 --- a/include/script_movement.h +++ b/include/script_movement.h @@ -5,6 +5,6 @@ bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, const u8 *); bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); -void sub_80D338C(void); +void sub_80974D8(void); #endif // GUARD_SCRIPT_MOVEMENT_H diff --git a/src/scrcmd.c b/src/scrcmd.c index 8b9551c64..ce1519b94 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -15,6 +15,11 @@ #include "field_fadetransition.h" #include "field_player_avatar.h" #include "sound.h" +#include "script_movement.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "map_obj_lock.h" +#include "field_message_box.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -24,11 +29,13 @@ extern const u8 *const gStdScriptsEnd[]; EWRAM_DATA ptrdiff_t gVScriptOffset = 0; EWRAM_DATA u8 gUnknown_20370AC = 0; EWRAM_DATA u16 sPauseCounter = 0; -EWRAM_DATA u16 gUnknown_20370B0 = 0; -EWRAM_DATA u16 gUnknown_20370B2 = 0; -EWRAM_DATA u16 gUnknown_20370B4 = 0; +EWRAM_DATA u16 sMovingNpcId = 0; +EWRAM_DATA u16 sMovingNpcMapBank = 0; +EWRAM_DATA u16 sMovingNpcMapId = 0; EWRAM_DATA u16 gUnknown_20370B6 = 0; +extern u8 gSelectedEventObject; + // This is defined in here so the optimizer can't see its value when compiling // script.c. void * const gNullScriptPtr = NULL; @@ -247,7 +254,7 @@ SCRCMD_DEF(ScrCmd_setmysteryeventstatus) return FALSE; } -SCRCMD_DEF(sub_806A28C) +SCRCMD_DEF(ScrCmd_cmdCF) { const u8 * script = sub_8069E48(); if (script != NULL) @@ -562,7 +569,7 @@ SCRCMD_DEF(ScrCmd_incrementgamestat) return FALSE; } -SCRCMD_DEF(sub_806A888) +SCRCMD_DEF(ScrCmd_comparestattoword) { u8 statIdx = ScriptReadByte(ctx); u32 value = ScriptReadWord(ctx); @@ -577,7 +584,7 @@ SCRCMD_DEF(sub_806A888) return FALSE; } -SCRCMD_DEF(sub_806A8C0) +SCRCMD_DEF(ScrCmd_cmdD0) { u16 value = ScriptReadHalfword(ctx); sub_8115748(value); @@ -776,7 +783,7 @@ SCRCMD_DEF(ScrCmd_warpteleport) return TRUE; } -SCRCMD_DEF(ScrCmd_warpD7) +SCRCMD_DEF(ScrCmd_warpD1) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -966,3 +973,275 @@ SCRCMD_DEF(ScrCmd_fadeinbgm) FadeInBGM(4); return FALSE; } + +SCRCMD_DEF(ScrCmd_applymovement) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + const void *movementScript = (const void *)ScriptReadWord(ctx); + + ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); + sMovingNpcId = localId; + return FALSE; +} + +SCRCMD_DEF(ScrCmd_applymovement_at) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + const void *movementScript = (const void *)ScriptReadWord(ctx); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript); + sMovingNpcId = localId; + return FALSE; +} + +static bool8 WaitForMovementFinish(void) +{ + return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank); +} + +SCRCMD_DEF(ScrCmd_waitmovement) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + if (localId != 0) + sMovingNpcId = localId; + sMovingNpcMapBank = gSaveBlock1Ptr->location.mapGroup; + sMovingNpcMapId = gSaveBlock1Ptr->location.mapNum; + SetupNativeScript(ctx, WaitForMovementFinish); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_waitmovement_at) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapBank; + u8 mapId; + + if (localId != 0) + sMovingNpcId = localId; + mapBank = ScriptReadByte(ctx); + mapId = ScriptReadByte(ctx); + sMovingNpcMapBank = mapBank; + sMovingNpcMapId = mapId; + SetupNativeScript(ctx, WaitForMovementFinish); + return TRUE; +} + +SCRCMD_DEF(ScrCmd_removeobject) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_removeobject_at) +{ + u16 objectId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_addobject) +{ + u16 objectId = VarGet(ScriptReadHalfword(ctx)); + + show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_addobject_at) +{ + u16 objectId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + show_sprite(objectId, mapNum, mapGroup); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setobjectxy) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_805F7C4(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setobjectxyperm) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetMapObjTemplateCoords(localId, x, y); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_moveobjectoffscreen) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + sub_805FE94(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_showobject_at) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_hideobject_at) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setobjectpriority) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 priority = ScriptReadByte(ctx); + + sub_805F3A8(localId, mapNum, mapGroup, priority + 83); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_resetobjectpriority) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + sub_805F400(localId, mapNum, mapGroup); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_faceplayer) +{ + if (gMapObjects[gSelectedEventObject].active) + { + FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedEventObject], + player_get_direction_lower_nybble()); + } + return FALSE; +} + +SCRCMD_DEF(ScrCmd_turnobject) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 direction = ScriptReadByte(ctx); + + FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, direction); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_setobjectmovementtype) +{ + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 movementType = ScriptReadByte(ctx); + + Overworld_SetMapObjTemplateMovementType(localId, movementType); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_createvobject) +{ + u8 graphicsId = ScriptReadByte(ctx); + u8 v2 = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u32 y = VarGet(ScriptReadHalfword(ctx)); + u8 elevation = ScriptReadByte(ctx); + u8 direction = ScriptReadByte(ctx); + + sprite_new(graphicsId, v2, x, y, elevation, direction); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_turnvobject) +{ + u8 v1 = ScriptReadByte(ctx); + u8 direction = ScriptReadByte(ctx); + + sub_8069058(v1, direction); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_lockall) +{ + if (is_c1_link_related_active()) + { + return FALSE; + } + else + { + ScriptFreezeMapObjects(); + SetupNativeScript(ctx, sub_8069590); + return TRUE; + } +} + +SCRCMD_DEF(ScrCmd_lock) +{ + if (is_c1_link_related_active()) + { + return FALSE; + } + else + { + if (gMapObjects[gSelectedEventObject].active) + { + LockSelectedMapObject(); + SetupNativeScript(ctx, sub_8069648); + } + else + { + ScriptFreezeMapObjects(); + SetupNativeScript(ctx, sub_8069590); + } + return TRUE; + } +} + +SCRCMD_DEF(ScrCmd_releaseall) +{ + u8 playerObjectId; + + HideFieldMessageBox(); + playerObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[playerObjectId]); + sub_80974D8(); + UnfreezeMapObjects(); + return FALSE; +} + +SCRCMD_DEF(ScrCmd_release) +{ + u8 playerObjectId; + + HideFieldMessageBox(); + if (gMapObjects[gSelectedEventObject].active) + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedEventObject]); + playerObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[playerObjectId]); + sub_80974D8(); + UnfreezeMapObjects(); + return FALSE; +} diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 4d42f270d..579800576 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -65,7 +65,7 @@ struct VsSeekerStruct extern u16 gSpecialVar_LastTalked; extern struct MapObject gMapObjects[MAP_OBJECTS_COUNT]; -extern u8 gUnknown_3005074; +extern u8 gSelectedEventObject; // static declarations static EWRAM_DATA struct VsSeekerStruct *sVsSeeker = NULL; @@ -1012,7 +1012,7 @@ void sub_810CB90(void) sub_810CF54(&r4[r8]); // You are using this function incorrectly. Please consult the manual. sub_805FE7C(r4_2, gUnknown_8453F67[r4_2->mapobj_unk_18]); gSaveBlock1Ptr->trainerRematches[r4[r8].localId] = 0; - if (gUnknown_3005074 == sp0) + if (gSelectedEventObject == sp0) r4_2->animPattern = gUnknown_8453F67[r4_2->mapobj_unk_18]; else r4_2->animPattern = 0x08; diff --git a/sym_common.txt b/sym_common.txt index f63c4f277..333dae222 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -175,7 +175,7 @@ gUnknown_300506C: @ 300506C gUnknown_3005070: @ 3005070 .space 0x4 -gUnknown_3005074: @ 3005074 +gSelectedEventObject: @ 3005074 .space 0x4 gUnknown_3005078: @ 3005078 From 607d6e13d4378ea6530f03d2c290ddd30506aa14 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 14:52:00 -0500 Subject: [PATCH 010/318] ScrCmd_waitbuttonpress --- asm/scrcmd.s | 342 ------------------------------------- include/new_menu_helpers.h | 3 + include/quest_log.h | 1 + include/script.h | 5 + src/scrcmd.c | 155 +++++++++++++++++ 5 files changed, 164 insertions(+), 342 deletions(-) diff --git a/asm/scrcmd.s b/asm/scrcmd.s index cec72ef73..67c37dc76 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,348 +5,6 @@ .text - thumb_func_start ScrCmd_message -ScrCmd_message: @ 806B80C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - cmp r0, 0 - bne _0806B81A - ldr r0, [r4, 0x64] -_0806B81A: - bl ShowFieldMessage - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_message - - thumb_func_start ScrCmd_cmdC8 -ScrCmd_cmdC8: @ 806B828 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - cmp r0, 0 - bne _0806B836 - ldr r0, [r4, 0x64] -_0806B836: - bl sub_80F7974 - bl GetStartMenuWindowId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl CopyWindowToVram - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_cmdC8 - - thumb_func_start ScrCmd_cmdC9 -ScrCmd_cmdC9: @ 806B850 - push {lr} - bl sub_80F7998 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_cmdC9 - - thumb_func_start ScrCmd_messageautoscroll -ScrCmd_messageautoscroll: @ 806B85C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - cmp r0, 0 - bne _0806B86A - ldr r0, [r4, 0x64] -_0806B86A: - bl ShowFieldAutoScrollMessage - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_messageautoscroll - - thumb_func_start ScrCmd_waitmessage -ScrCmd_waitmessage: @ 806B878 - push {lr} - ldr r1, _0806B888 @ =IsFieldMessageBoxHidden - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_0806B888: .4byte IsFieldMessageBoxHidden - thumb_func_end ScrCmd_waitmessage - - thumb_func_start ScrCmd_closemessage -ScrCmd_closemessage: @ 806B88C - push {lr} - bl HideFieldMessageBox - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_closemessage - - thumb_func_start sub_806B898 -sub_806B898: @ 806B898 - push {r4,lr} - ldr r0, _0806B8F0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0806B922 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0806B922 - ldr r4, _0806B8F4 @ =gUnknown_3005070 - ldr r0, [r4] - bl sub_806B93C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806B906 - ldr r0, [r4] - bl sub_806B96C - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8069998 - cmp r4, 0 - beq _0806B906 - ldr r0, _0806B8F8 @ =gUnknown_203ADFA - ldrb r0, [r0] - cmp r0, 0x2 - beq _0806B906 - bl sub_80699F8 - adds r0, r4, 0 - subs r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0806B8FC - bl sub_8069964 - b _0806B922 - .align 2, 0 -_0806B8F0: .4byte gMain -_0806B8F4: .4byte gUnknown_3005070 -_0806B8F8: .4byte gUnknown_203ADFA -_0806B8FC: - bl sub_80699A4 - bl sub_8069970 - b _0806B922 -_0806B906: - bl sub_8112CAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806B91A - ldr r0, _0806B928 @ =gUnknown_203ADFA - ldrb r0, [r0] - cmp r0, 0x2 - bne _0806B934 -_0806B91A: - ldr r1, _0806B92C @ =gUnknown_20370AC - ldrb r0, [r1] - cmp r0, 0x78 - bne _0806B930 -_0806B922: - movs r0, 0x1 - b _0806B936 - .align 2, 0 -_0806B928: .4byte gUnknown_203ADFA -_0806B92C: .4byte gUnknown_20370AC -_0806B930: - adds r0, 0x1 - strb r0, [r1] -_0806B934: - movs r0, 0 -_0806B936: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806B898 - - thumb_func_start sub_806B93C -sub_806B93C: @ 806B93C - push {lr} - adds r2, r0, 0 - ldr r0, [r2, 0x8] - ldrb r0, [r0] - cmp r0, 0x3 - bne _0806B958 - ldrb r1, [r2] - subs r1, 0x1 - lsls r1, 2 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0] -_0806B958: - subs r0, 0x6B - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0806B966 - movs r0, 0x1 - b _0806B968 -_0806B966: - movs r0, 0 -_0806B968: - pop {r1} - bx r1 - thumb_func_end sub_806B93C - - thumb_func_start sub_806B96C -sub_806B96C: @ 806B96C - push {lr} - ldr r2, _0806B988 @ =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0806B990 - ldr r0, _0806B98C @ =gSpecialVar_Facing - ldrh r0, [r0] - cmp r0, 0x2 - beq _0806B990 - movs r0, 0x1 - b _0806BA36 - .align 2, 0 -_0806B988: .4byte gMain -_0806B98C: .4byte gSpecialVar_Facing -_0806B990: - ldrh r1, [r2, 0x2C] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0806B9AC - ldr r0, _0806B9A8 @ =gSpecialVar_Facing - ldrh r0, [r0] - cmp r0, 0x1 - beq _0806B9AC - movs r0, 0x2 - b _0806BA36 - .align 2, 0 -_0806B9A8: .4byte gSpecialVar_Facing -_0806B9AC: - ldrh r1, [r2, 0x2C] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0806B9C8 - ldr r0, _0806B9C4 @ =gSpecialVar_Facing - ldrh r0, [r0] - cmp r0, 0x3 - beq _0806B9C8 - movs r0, 0x3 - b _0806BA36 - .align 2, 0 -_0806B9C4: .4byte gSpecialVar_Facing -_0806B9C8: - ldrh r1, [r2, 0x2C] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0806B9E4 - ldr r0, _0806B9E0 @ =gSpecialVar_Facing - ldrh r0, [r0] - cmp r0, 0x4 - beq _0806B9E4 - movs r0, 0x4 - b _0806BA36 - .align 2, 0 -_0806B9E0: .4byte gSpecialVar_Facing -_0806B9E4: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _0806B9F4 - movs r0, 0x5 - b _0806BA36 -_0806B9F4: - ldrh r2, [r2, 0x2C] - movs r0, 0x80 - lsls r0, 1 - ands r0, r2 - cmp r0, 0 - beq _0806BA04 - movs r0, 0x6 - b _0806BA36 -_0806BA04: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0806BA10 - movs r0, 0x7 - b _0806BA36 -_0806BA10: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _0806BA1C - movs r0, 0x8 - b _0806BA36 -_0806BA1C: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806BA28 - movs r0, 0x9 - b _0806BA36 -_0806BA28: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0806BA34 - movs r0, 0 - b _0806BA36 -_0806BA34: - movs r0, 0xA -_0806BA36: - pop {r1} - bx r1 - thumb_func_end sub_806B96C - - thumb_func_start ScrCmd_waitbuttonpress -ScrCmd_waitbuttonpress: @ 806BA3C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0806BA70 @ =gUnknown_3005070 - str r4, [r0] - bl sub_8112CAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BA58 - ldr r0, _0806BA74 @ =gUnknown_203ADFA - ldrb r0, [r0] - cmp r0, 0x2 - bne _0806BA5E -_0806BA58: - ldr r1, _0806BA78 @ =gUnknown_20370AC - movs r0, 0 - strb r0, [r1] -_0806BA5E: - ldr r1, _0806BA7C @ =sub_806B898 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BA70: .4byte gUnknown_3005070 -_0806BA74: .4byte gUnknown_203ADFA -_0806BA78: .4byte gUnknown_20370AC -_0806BA7C: .4byte sub_806B898 - thumb_func_end ScrCmd_waitbuttonpress - thumb_func_start ScrCmd_yesnobox ScrCmd_yesnobox: @ 806BA80 push {lr} diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 2a68a35e6..ce8e8d697 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -19,5 +19,8 @@ void sub_80F6F54(u8, u8); u8 sub_80F78A8(void); void sub_80F6E9C(void); void sub_80F6EE4(u8 windowId, bool8 transfer); +void sub_80F7974(const u8 *); +u8 GetStartMenuWindowId(void); +void sub_80F7998(void); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/quest_log.h b/include/quest_log.h index 73c0b5dac..faa47a809 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -22,6 +22,7 @@ extern struct UnkStruct_203AE98 * gUnknown_3005E94; void sub_8112720(u8); void sub_8113550(u16, const u16 *); void sub_8115748(u16); +u8 sub_8112CAC(void); extern u8 gUnknown_203ADFA; diff --git a/include/script.h b/include/script.h index acd88adf3..88e729526 100644 --- a/include/script.h +++ b/include/script.h @@ -65,6 +65,11 @@ void sub_80992A0(u8 *script, u16 scriptSize); bool32 sub_8069DFC(void); void sub_8069EA4(u8 * script, u16 scriptSize); u8 * sub_8069E48(void); +void sub_8069998(u8 var); +void sub_80699F8(void); +void sub_8069964(void); +void sub_80699A4(void); +void sub_8069970(void); extern const u8 *gRAMScriptPtr; diff --git a/src/scrcmd.c b/src/scrcmd.c index 4cd0fdad2..976b80564 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -20,6 +20,9 @@ #include "field_map_obj_helpers.h" #include "map_obj_lock.h" #include "field_message_box.h" +#include "new_menu_helpers.h" +#include "window.h" +#include "start_menu.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -1252,3 +1255,155 @@ SCRCMD_DEF(cmdC7) gUnknown_20370DA = ScriptReadByte(ctx); return FALSE; } + +SCRCMD_DEF(message) +{ + const u8 *msg = (const u8 *)ScriptReadWord(ctx); + + if (msg == NULL) + msg = (const u8 *)ctx->data[0]; + ShowFieldMessage(msg); + return FALSE; +} + +SCRCMD_DEF(cmdC8) +{ + const u8 *msg = (const u8 *)ScriptReadWord(ctx); + + if (msg == NULL) + msg = (const u8 *)ctx->data[0]; + sub_80F7974(msg); + CopyWindowToVram(GetStartMenuWindowId(), 1); + return FALSE; +} + +SCRCMD_DEF(cmdC9) +{ + sub_80F7998(); + return FALSE; +} + +SCRCMD_DEF(messageautoscroll) +{ + const u8 *msg = (const u8 *)ScriptReadWord(ctx); + + if (msg == NULL) + msg = (const u8 *)ctx->data[0]; + ShowFieldAutoScrollMessage(msg); + return FALSE; +} + +SCRCMD_DEF(waitmessage) +{ + SetupNativeScript(ctx, IsFieldMessageBoxHidden); + return TRUE; +} + +SCRCMD_DEF(closemessage) +{ + HideFieldMessageBox(); + return FALSE; +} + +extern IWRAM_DATA struct ScriptContext * gUnknown_3005070; + +bool8 sub_806B93C(struct ScriptContext * ctx); +u8 sub_806B96C(struct ScriptContext * ctx); + +bool8 WaitForAorBPress(void) +{ + if (gMain.newKeys & A_BUTTON) + return TRUE; + if (gMain.newKeys & B_BUTTON) + return TRUE; + + if (sub_806B93C(gUnknown_3005070) == TRUE) + { + u8 r4 = sub_806B96C(gUnknown_3005070); + sub_8069998(r4); + if (r4) + { + if (gUnknown_203ADFA != 2) + { + sub_80699F8(); + if (r4 < 9 || r4 > 10) + sub_8069964(); + else + { + sub_80699A4(); + sub_8069970(); + } + return TRUE; + } + } + } + if (sub_8112CAC() == 1 || gUnknown_203ADFA == 2) + { + if (gUnknown_20370AC == 120) + return TRUE; + else + gUnknown_20370AC++; + } + + return FALSE; +} + +bool8 sub_806B93C(struct ScriptContext * ctx) +{ + const u8 * script = ctx->scriptPtr; + u8 nextCmd = *script; + if (nextCmd == 3) // return + { + script = ctx->stack[ctx->stackDepth - 1]; + nextCmd = *script; + } + if (nextCmd < 0x6B || nextCmd > 0x6C) // releaseall or release + return FALSE; + else + return TRUE; +} + +u8 sub_806B96C(struct ScriptContext * ctx) +{ + if (gMain.heldKeys & DPAD_UP && gSpecialVar_Facing != 2) + return 1; + + if (gMain.heldKeys & DPAD_DOWN && gSpecialVar_Facing != 1) + return 2; + + if (gMain.heldKeys & DPAD_LEFT && gSpecialVar_Facing != 3) + return 3; + + if (gMain.heldKeys & DPAD_RIGHT && gSpecialVar_Facing != 4) + return 4; + + if (gMain.newKeys & L_BUTTON) + return 5; + + if (gMain.heldKeys & R_BUTTON) + return 6; + + if (gMain.heldKeys & START_BUTTON) + return 7; + + if (gMain.heldKeys & SELECT_BUTTON) + return 8; + + if (gMain.newKeys & A_BUTTON) + return 9; + + if (gMain.newKeys & B_BUTTON) + return 10; + + return 0; +} + +SCRCMD_DEF(waitbuttonpress) +{ + gUnknown_3005070 = ctx; + + if (sub_8112CAC() == 1 || gUnknown_203ADFA == 2) + gUnknown_20370AC = 0; + SetupNativeScript(ctx, WaitForAorBPress); + return TRUE; +} From 6a064a4fa4bedaa1e46470645e175ba7d11a2e41 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 15:08:17 -0500 Subject: [PATCH 011/318] Through ScrCmd_getbraillestringwidth --- asm/scrcmd.s | 281 -------------------------------------- asm/script_menu.s | 24 ++-- data/script_cmd_table.inc | 2 +- include/sound.h | 1 + src/scrcmd.c | 168 +++++++++++++++++++++++ 5 files changed, 182 insertions(+), 294 deletions(-) diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 67c37dc76..be5123426 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,287 +5,6 @@ .text - thumb_func_start ScrCmd_yesnobox -ScrCmd_yesnobox: @ 806BA80 - push {lr} - ldr r2, [r0, 0x8] - ldrb r3, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - adds r0, r3, 0 - bl sub_809CDEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BAA2 - movs r0, 0 - b _0806BAA8 -_0806BAA2: - bl ScriptContext1_Stop - movs r0, 0x1 -_0806BAA8: - pop {r1} - bx r1 - thumb_func_end ScrCmd_yesnobox - - thumb_func_start ScrCmd_multichoice -ScrCmd_multichoice: @ 806BAAC - push {r4,r5,lr} - ldr r2, [r0, 0x8] - ldrb r5, [r2] - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r3, r2, 0x1 - str r3, [r0, 0x8] - ldrb r2, [r2, 0x1] - adds r4, r3, 0x1 - str r4, [r0, 0x8] - ldrb r3, [r3, 0x1] - adds r4, 0x1 - str r4, [r0, 0x8] - adds r0, r5, 0 - bl ScriptMenu_Multichoice - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BADA - movs r0, 0 - b _0806BAE0 -_0806BADA: - bl ScriptContext1_Stop - movs r0, 0x1 -_0806BAE0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_multichoice - - thumb_func_start ScrCmd_multichoicedefault -ScrCmd_multichoicedefault: @ 806BAE8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - ldr r2, [r0, 0x8] - ldrb r1, [r2] - mov r8, r1 - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r3, r2, 0x1 - str r3, [r0, 0x8] - ldrb r2, [r2, 0x1] - adds r5, r3, 0x1 - str r5, [r0, 0x8] - ldrb r6, [r3, 0x1] - adds r4, r5, 0x1 - str r4, [r0, 0x8] - ldrb r3, [r5, 0x1] - adds r4, 0x1 - str r4, [r0, 0x8] - str r6, [sp] - mov r0, r8 - bl ScriptMenu_MultichoiceWithDefault - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BB26 - movs r0, 0 - b _0806BB2C -_0806BB26: - bl ScriptContext1_Stop - movs r0, 0x1 -_0806BB2C: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_multichoicedefault - - thumb_func_start ScrCmd_drawbox -ScrCmd_drawbox: @ 806BB38 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_drawbox - - thumb_func_start ScrCmd_multichoicegrid -ScrCmd_multichoicegrid: @ 806BB3C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - ldr r2, [r0, 0x8] - ldrb r1, [r2] - mov r8, r1 - adds r2, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r2] - adds r3, r2, 0x1 - str r3, [r0, 0x8] - ldrb r2, [r2, 0x1] - adds r5, r3, 0x1 - str r5, [r0, 0x8] - ldrb r6, [r3, 0x1] - adds r4, r5, 0x1 - str r4, [r0, 0x8] - ldrb r3, [r5, 0x1] - adds r4, 0x1 - str r4, [r0, 0x8] - str r6, [sp] - mov r0, r8 - bl sub_809CEC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806BB7A - movs r0, 0 - b _0806BB80 -_0806BB7A: - bl ScriptContext1_Stop - movs r0, 0x1 -_0806BB80: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_multichoicegrid - - thumb_func_start ScrCmd_erasebox -ScrCmd_erasebox: @ 806BB8C - ldr r1, [r0, 0x8] - adds r1, 0x4 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end ScrCmd_erasebox - - thumb_func_start ScrCmd_drawboxtext -ScrCmd_drawboxtext: @ 806BB98 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_drawboxtext - - thumb_func_start ScrCmd_showmonpic -ScrCmd_showmonpic: @ 806BB9C - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, [r5, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - ldrb r2, [r0] - adds r0, 0x1 - str r0, [r5, 0x8] - adds r0, r4, 0 - bl sub_809D2F0 - adds r0, r4, 0 - movs r1, 0 - bl PlayCry7 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_showmonpic - - thumb_func_start ScrCmd_hidemonpic -ScrCmd_hidemonpic: @ 806BBD8 - push {r4,lr} - adds r4, r0, 0 - bl sub_809D3CC - adds r1, r0, 0 - cmp r1, 0 - beq _0806BBF0 - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - b _0806BBF2 -_0806BBF0: - movs r0, 0 -_0806BBF2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_hidemonpic - - thumb_func_start ScrCmd_showcontestwinner -ScrCmd_showcontestwinner: @ 806BBF8 - ldr r1, [r0, 0x8] - adds r1, 0x1 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end ScrCmd_showcontestwinner - - thumb_func_start ScrCmd_braillemessage -ScrCmd_braillemessage: @ 806BC04 - push {r4,r5,lr} - sub sp, 0xC - adds r5, r0, 0 - bl ScriptReadWord - adds r4, r0, 0 - cmp r4, 0 - bne _0806BC16 - ldr r4, [r5, 0x64] -_0806BC16: - bl sub_80F6E9C - movs r0, 0 - movs r1, 0x1 - bl sub_80F6EE4 - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r1, 0x6 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized - movs r0, 0 - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_braillemessage - - thumb_func_start ScrCmd_getstringwidth -ScrCmd_getstringwidth: @ 806BC40 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - cmp r1, 0 - bne _0806BC50 - ldr r1, [r4, 0x64] -_0806BC50: - ldr r4, _0806BC68 @ =gSpecialVar_0x8004 - movs r2, 0x1 - negs r2, r2 - movs r0, 0x6 - bl GetStringWidth - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BC68: .4byte gSpecialVar_0x8004 - thumb_func_end ScrCmd_getstringwidth - thumb_func_start ScrCmd_vmessage ScrCmd_vmessage: @ 806BC6C push {lr} diff --git a/asm/script_menu.s b/asm/script_menu.s index f1127591d..438f715fa 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -613,8 +613,8 @@ _0809CDE0: _0809CDE8: .4byte gUnknown_83E0748 thumb_func_end sub_809CD48 - thumb_func_start sub_809CDEC -sub_809CDEC: @ 809CDEC + thumb_func_start ScriptMenu_YesNo +ScriptMenu_YesNo: @ 809CDEC push {r4,lr} ldr r4, _0809CE04 @ =task_yes_no_maybe adds r0, r4, 0 @@ -649,7 +649,7 @@ _0809CE28: .align 2, 0 _0809CE30: .4byte gSpecialVar_Result _0809CE34: .4byte sub_809D6D4 - thumb_func_end sub_809CDEC + thumb_func_end ScriptMenu_YesNo thumb_func_start sub_809CE38 sub_809CE38: @ 809CE38 @@ -733,8 +733,8 @@ _0809CEBC: _0809CEC4: .4byte gSpecialVar_Result thumb_func_end task_yes_no_maybe - thumb_func_start sub_809CEC8 -sub_809CEC8: @ 809CEC8 + thumb_func_start ScriptMenu_MultichoiceGrid +ScriptMenu_MultichoiceGrid: @ 809CEC8 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -862,7 +862,7 @@ _0809CFCC: .4byte gSpecialVar_Result _0809CFD0: .4byte sub_809D6D4 _0809CFD4: .4byte gUnknown_83E04B0 _0809CFD8: .4byte gTasks - thumb_func_end sub_809CEC8 + thumb_func_end ScriptMenu_MultichoiceGrid thumb_func_start sub_809CFDC sub_809CFDC: @ 809CFDC @@ -1241,8 +1241,8 @@ _0809D2E8: bx r0 thumb_func_end sub_809D288 - thumb_func_start sub_809D2F0 -sub_809D2F0: @ 809D2F0 + thumb_func_start ScriptMenu_ShowPokemonPic +ScriptMenu_ShowPokemonPic: @ 809D2F0 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1344,10 +1344,10 @@ _0809D3C2: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_809D2F0 + thumb_func_end ScriptMenu_ShowPokemonPic - thumb_func_start sub_809D3CC -sub_809D3CC: @ 809D3CC + thumb_func_start ScriptMenu_GetPicboxWaitFunc +ScriptMenu_GetPicboxWaitFunc: @ 809D3CC push {lr} ldr r0, _0809D3F0 @ =sub_809D288 bl FindTaskIdByFunc @@ -1374,7 +1374,7 @@ _0809D3FC: _0809D3FE: pop {r1} bx r1 - thumb_func_end sub_809D3CC + thumb_func_end ScriptMenu_GetPicboxWaitFunc thumb_func_start sub_809D404 sub_809D404: @ 809D404 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 8d92c94f5..43f82490d 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -212,7 +212,7 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_cmdD0 .4byte ScrCmd_warpD1 .4byte ScrCmd_setmonmetlocation - .4byte ScrCmd_getstringwidth + .4byte ScrCmd_getbraillestringwidth .4byte ScrCmd_cmdDA gScriptCmdTableEnd:: @ 815FD08 diff --git a/include/sound.h b/include/sound.h index 34fdfc839..e720fc1a2 100644 --- a/include/sound.h +++ b/include/sound.h @@ -31,6 +31,7 @@ void PlayCry3(u16 species, s8 pan, u8 mode); void PlayCry4(u16 species, s8 pan, u8 mode); void PlayCry5(u16 species, u8 mode); void PlayCry6(u16 species, s8 pan, u8 mode); +void PlayCry7(u16 species, u8 mode); void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode); bool8 IsCryFinished(void); void StopCryAndClearCrySongs(void); diff --git a/src/scrcmd.c b/src/scrcmd.c index 976b80564..c77dda666 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -23,6 +23,7 @@ #include "new_menu_helpers.h" #include "window.h" #include "start_menu.h" +#include "script_menu.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -1407,3 +1408,170 @@ SCRCMD_DEF(waitbuttonpress) SetupNativeScript(ctx, WaitForAorBPress); return TRUE; } + +SCRCMD_DEF(yesnobox) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + + if (ScriptMenu_YesNo(left, top) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +SCRCMD_DEF(multichoice) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +SCRCMD_DEF(multichoicedefault) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 defaultChoice = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +SCRCMD_DEF(drawbox) +{ + /*u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + MenuDrawTextWindow(left, top, right, bottom);*/ + return FALSE; +} + +SCRCMD_DEF(multichoicegrid) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 multichoiceId = ScriptReadByte(ctx); + u8 numColumns = ScriptReadByte(ctx); + u8 ignoreBPress = ScriptReadByte(ctx); + + if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +SCRCMD_DEF(erasebox) +{ + u8 left = ScriptReadByte(ctx); + u8 top = ScriptReadByte(ctx); + u8 right = ScriptReadByte(ctx); + u8 bottom = ScriptReadByte(ctx); + + // MenuZeroFillWindowRect(left, top, right, bottom); + return FALSE; +} + +SCRCMD_DEF(drawboxtext) +{ +// u8 left = ScriptReadByte(ctx); +// u8 top = ScriptReadByte(ctx); +// u8 multichoiceId = ScriptReadByte(ctx); +// u8 ignoreBPress = ScriptReadByte(ctx); + + /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) + { + ScriptContext1_Stop(); + return TRUE; + }*/ + return FALSE; +} + +SCRCMD_DEF(showmonpic) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ScriptMenu_ShowPokemonPic(species, x, y); + PlayCry7(species, 0); + return FALSE; +} + +SCRCMD_DEF(hidemonpic) +{ + bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); + + if (func == NULL) + return FALSE; + SetupNativeScript(ctx, func); + return TRUE; +} + +SCRCMD_DEF(showcontestwinner) +{ + u8 v1 = ScriptReadByte(ctx); + + /* + if (v1) + sub_812FDA8(v1); + ShowContestWinner(); + ScriptContext1_Stop(); + return TRUE; + */ + + return FALSE; +} + +SCRCMD_DEF(braillemessage) +{ + u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (ptr == NULL) + ptr = (u8 *)ctx->data[0]; + + sub_80F6E9C(); + sub_80F6EE4(0, 1); + AddTextPrinterParameterized(0, 6, ptr, 0, 1, 0, NULL); + return FALSE; +} + +SCRCMD_DEF(getbraillestringwidth) +{ + u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (ptr == NULL) + ptr = (u8 *)ctx->data[0]; + + gSpecialVar_0x8004 = GetStringWidth(6, ptr, -1); + return FALSE; +} From 2822d29c0bd7e579388f9d0772a7b5d1af430b31 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 15:28:10 -0500 Subject: [PATCH 012/318] through ScrCmd_bufferstring --- asm/battle_message.s | 6 +- asm/battle_tower.s | 2 +- asm/berry_pouch.s | 10 +- asm/field_specials.s | 8 +- asm/item.s | 6 +- asm/item_menu.s | 16 +- asm/item_pc.s | 6 +- asm/item_use.s | 6 +- asm/overworld.s | 2 +- asm/party_menu.s | 10 +- asm/pokemon_summary_screen.s | 2 +- asm/scrcmd.s | 355 ----------------------------------- asm/shop.s | 6 +- asm/tm_case.s | 8 +- asm/unk_8147AA8.s | 6 +- asm/unk_81507FC.s | 4 +- data/data_835B488.s | 2 +- data/script_cmd_table.inc | 2 +- include/field_specials.h | 1 + include/item.h | 2 +- include/script_menu.h | 2 +- src/quest_log.c | 4 +- src/scrcmd.c | 148 ++++++++++++++- src/trainer_tower.c | 2 +- 24 files changed, 198 insertions(+), 418 deletions(-) diff --git a/asm/battle_message.s b/asm/battle_message.s index 029ff9ed0..183306f97 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -1604,7 +1604,7 @@ _080D7F9C: ldrh r0, [r0] _080D7FA0: mov r1, sp - bl sub_8099E90 + bl CopyItemName mov r4, sp b _080D8382 .align 2, 0 @@ -2495,12 +2495,12 @@ _080D8698: .4byte gUnknown_83FD8A2 _080D869C: adds r0, r2, 0 adds r1, r6, 0 - bl sub_8099E90 + bl CopyItemName b _080D86AE _080D86A6: adds r0, r2, 0 adds r1, r6, 0 - bl sub_8099E90 + bl CopyItemName _080D86AE: adds r5, 0x3 _080D86B0: diff --git a/asm/battle_tower.s b/asm/battle_tower.s index c02c98723..e4c7f17ba 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -3229,7 +3229,7 @@ sub_80E724C: @ 80E724C adds r0, r1 ldrh r0, [r0] ldr r1, _080E7290 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r0, _080E7294 @ =gSpecialVar_Result strh r4, [r0] b _080E72AA diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 75611547e..146a71788 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -733,7 +733,7 @@ sub_813D31C: @ 813D31C bl StringAppend adds r0, r5, 0 adds r1, r6, 0 - bl sub_8099E90 + bl CopyItemName ldr r1, _0813D394 @ =gUnknown_84643B4 adds r0, r4, 0 bl StringAppend @@ -2736,7 +2736,7 @@ sub_813E37C: @ 813E37C bne _0813E3D8 ldr r1, _0813E3C8 @ =gStringVar1 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r4, _0813E3CC @ =gStringVar4 ldr r1, _0813E3D0 @ =gUnknown_8416374 adds r0, r4, 0 @@ -2815,7 +2815,7 @@ sub_813E428: @ 813E428 bne _0813E488 ldrh r0, [r6] ldr r1, _0813E478 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r4, _0813E47C @ =gStringVar4 ldr r1, _0813E480 @ =gUnknown_84168F1 adds r0, r4, 0 @@ -2855,7 +2855,7 @@ _0813E4A0: _0813E4A8: ldrh r0, [r6] ldr r1, _0813E4D4 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r4, _0813E4D8 @ =gStringVar4 ldr r1, _0813E4DC @ =gUnknown_8416911 adds r0, r4, 0 @@ -3188,7 +3188,7 @@ sub_813E768: @ 813E768 ldr r0, _0813E7D8 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _0813E7DC @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r6, _0813E7E0 @ =gStringVar3 ldrh r1, [r4, 0x2] movs r0, 0x5 diff --git a/asm/field_specials.s b/asm/field_specials.s index 0d0b2ba06..4c0b97151 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -3267,7 +3267,7 @@ TV_PrintIntToStringVar: @ 80CBED4 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 - bl sub_80CBF04 + bl CountDigits adds r3, r0, 0 ldr r0, _080CBF00 @ =gUnknown_83F5AF8 lsls r4, 2 @@ -3285,8 +3285,8 @@ TV_PrintIntToStringVar: @ 80CBED4 _080CBF00: .4byte gUnknown_83F5AF8 thumb_func_end TV_PrintIntToStringVar - thumb_func_start sub_80CBF04 -sub_80CBF04: @ 80CBF04 + thumb_func_start CountDigits +CountDigits: @ 80CBF04 push {r4,lr} adds r4, r0, 0 movs r1, 0xA @@ -3366,7 +3366,7 @@ _080CBF9A: pop {r4} pop {r1} bx r1 - thumb_func_end sub_80CBF04 + thumb_func_end CountDigits thumb_func_start sub_80CBFA0 sub_80CBFA0: @ 80CBFA0 diff --git a/asm/item.s b/asm/item.s index 2bc45d5c4..800df5f82 100644 --- a/asm/item.s +++ b/asm/item.s @@ -149,8 +149,8 @@ _08099E88: .4byte gSaveBlock1Ptr _08099E8C: .4byte 0x0000054c thumb_func_end sub_8099E44 - thumb_func_start sub_8099E90 -sub_8099E90: @ 8099E90 + thumb_func_start CopyItemName +CopyItemName: @ 8099E90 push {r4,lr} adds r4, r1, 0 lsls r0, 16 @@ -177,7 +177,7 @@ _08099EC4: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8099E90 + thumb_func_end CopyItemName thumb_func_start sub_8099ECC sub_8099ECC: @ 8099ECC diff --git a/asm/item_menu.s b/asm/item_menu.s index f8872910f..d08021d15 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -3237,7 +3237,7 @@ sub_810971C: @ 810971C lsrs r0, 16 ldr r1, _081097D8 @ =gStringVar1 mov r10, r1 - bl sub_8099E90 + bl CopyItemName ldr r0, _081097DC @ =gStringVar4 mov r9, r0 adds r1, r6, 0 @@ -3725,7 +3725,7 @@ _08109AD4: ldr r0, _08109BA8 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _08109BAC @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r6, _08109BB0 @ =gStringVar4 ldr r1, _08109BB4 @ =gUnknown_84162FF adds r0, r6, 0 @@ -4125,7 +4125,7 @@ sub_8109EA8: @ 8109EA8 lsls r0, 16 lsrs r0, 16 ldr r1, _08109F30 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r0, _08109F34 @ =gStringVar2 movs r2, 0x10 ldrsh r1, [r6, r2] @@ -4447,7 +4447,7 @@ sub_810A18C: @ 810A18C ldr r0, _0810A1BC @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _0810A1C0 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r5, _0810A1C4 @ =gStringVar4 ldr r1, _0810A1C8 @ =gUnknown_841635E adds r0, r5, 0 @@ -4969,7 +4969,7 @@ _0810A5B4: bne _0810A5F8 ldrh r0, [r6] ldr r1, _0810A5E8 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r4, _0810A5EC @ =gStringVar4 ldr r1, _0810A5F0 @ =gUnknown_84168F1 adds r0, r4, 0 @@ -5007,7 +5007,7 @@ _0810A610: _0810A618: ldrh r0, [r6] ldr r1, _0810A644 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r4, _0810A648 @ =gStringVar4 ldr r1, _0810A64C @ =gUnknown_8416911 adds r0, r4, 0 @@ -5397,7 +5397,7 @@ sub_810A940: @ 810A940 ldr r0, _0810A9B8 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _0810A9BC @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r6, _0810A9C0 @ =gStringVar3 ldr r0, _0810A9C4 @ =gUnknown_203ACFC ldrb r0, [r0, 0x6] @@ -5756,7 +5756,7 @@ sub_810AC40: @ 810AC40 bl sub_80A2294 ldrh r0, [r5] ldr r1, _0810ACD8 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r0, _0810ACDC @ =gStringVar2 movs r2, 0x10 ldrsh r1, [r7, r2] diff --git a/asm/item_pc.s b/asm/item_pc.s index 0f3c5809b..8d36ccc81 100644 --- a/asm/item_pc.s +++ b/asm/item_pc.s @@ -1886,7 +1886,7 @@ sub_810E274: @ 810E274 lsls r0, 16 lsrs r0, 16 ldr r1, _0810E348 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r6, _0810E34C @ =gStringVar4 ldr r1, _0810E350 @ =gUnknown_84162FF adds r0, r6, 0 @@ -2048,7 +2048,7 @@ sub_810E418: @ 810E418 bl sub_80A2294 ldr r1, _0810E4A4 @ =gStringVar1 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r0, _0810E4A8 @ =gStringVar2 movs r2, 0x10 ldrsh r1, [r5, r2] @@ -2241,7 +2241,7 @@ sub_810E5E0: @ 810E5E0 lsrs r0, 16 ldr r6, _0810E660 @ =gStringVar1 adds r1, r6, 0 - bl sub_8099E90 + bl CopyItemName ldr r5, _0810E664 @ =gStringVar4 ldr r1, _0810E668 @ =gUnknown_84177AC adds r0, r5, 0 diff --git a/asm/item_use.s b/asm/item_use.s index 771adcdfc..0b6dacdd4 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -1374,7 +1374,7 @@ sub_80A1A44: @ 80A1A44 bl sub_81089F4 ldrh r0, [r4] ldr r1, _080A1A88 @ =gStringVar2 - bl sub_8099E90 + bl CopyItemName ldr r0, _080A1A8C @ =gStringVar4 ldr r1, _080A1A90 @ =gUnknown_841658C bl StringExpandPlaceholders @@ -1409,7 +1409,7 @@ sub_80A1A94: @ 80A1A94 bl FlagClear ldrh r0, [r5] ldr r1, _080A1AE4 @ =gStringVar2 - bl sub_8099E90 + bl CopyItemName ldr r0, _080A1AE8 @ =gStringVar4 ldr r1, _080A1AEC @ =gUnknown_84165D2 bl StringExpandPlaceholders @@ -1435,7 +1435,7 @@ _080A1AF4: bl FlagClear ldrh r0, [r5] ldr r1, _080A1B34 @ =gStringVar2 - bl sub_8099E90 + bl CopyItemName ldr r0, _080A1B38 @ =gStringVar4 ldr r1, _080A1B3C @ =gUnknown_8416600 bl StringExpandPlaceholders diff --git a/asm/overworld.s b/asm/overworld.s index b7cb7a989..eabb38228 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -72,7 +72,7 @@ sub_8054C48: @ 8054C48 bl sub_8054C04 adds r4, r0, 0 ldr r5, _08054C6C @ =gStringVar1 - bl sub_80CBF04 + bl CountDigits adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/party_menu.s b/asm/party_menu.s index 86e1c42dc..8d6da0894 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -3383,7 +3383,7 @@ _08120468: bl GetMonNickname ldr r1, _081204A0 @ =gStringVar2 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r4, _081204A4 @ =gStringVar4 ldr r1, _081204A8 @ =gUnknown_8416C2A adds r0, r4, 0 @@ -3424,7 +3424,7 @@ sub_81204AC: @ 81204AC bl GetMonNickname ldr r1, _08120500 @ =gStringVar2 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r4, _08120504 @ =gStringVar4 ldr r1, _08120508 @ =gUnknown_8416CAC adds r0, r4, 0 @@ -3458,7 +3458,7 @@ sub_812050C: @ 812050C bl GetMonNickname ldr r1, _0812054C @ =gStringVar2 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r4, _08120550 @ =gStringVar4 ldr r1, _08120554 @ =gUnknown_8416C49 adds r0, r4, 0 @@ -3502,10 +3502,10 @@ sub_8120558: @ 8120558 bl sub_8124B60 ldr r1, _081205B8 @ =gStringVar1 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r1, _081205BC @ =gStringVar2 adds r0, r5, 0 - bl sub_8099E90 + bl CopyItemName ldr r4, _081205C0 @ =gStringVar4 ldr r1, _081205C4 @ =gUnknown_8416CEA adds r0, r4, 0 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 5ebf9bc96..65fc2cb45 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -3587,7 +3587,7 @@ _08136338: ldr r1, [r6] ldr r2, _0813634C @ =0x00003074 adds r1, r2 - bl sub_8099E90 + bl CopyItemName _08136342: add sp, 0x14 pop {r4-r7} diff --git a/asm/scrcmd.s b/asm/scrcmd.s index be5123426..45e7bd376 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,361 +5,6 @@ .text - thumb_func_start ScrCmd_vmessage -ScrCmd_vmessage: @ 806BC6C - push {lr} - bl ScriptReadWord - ldr r1, _0806BC84 @ =gVScriptOffset - ldr r1, [r1] - subs r0, r1 - bl ShowFieldMessage - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806BC84: .4byte gVScriptOffset - thumb_func_end ScrCmd_vmessage - - thumb_func_start ScrCmd_bufferspeciesname -ScrCmd_bufferspeciesname: @ 806BC88 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0806BCC0 @ =sScriptStringVars - lsls r4, 2 - adds r4, r1 - ldr r2, [r4] - movs r1, 0xB - muls r1, r0 - ldr r0, _0806BCC4 @ =gSpeciesNames - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BCC0: .4byte sScriptStringVars -_0806BCC4: .4byte gSpeciesNames - thumb_func_end ScrCmd_bufferspeciesname - - thumb_func_start ScrCmd_bufferleadmonspeciesname -ScrCmd_bufferleadmonspeciesname: @ 806BCC8 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldr r0, _0806BD08 @ =sScriptStringVars - lsls r2, 2 - adds r2, r0 - ldr r4, [r2] - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806BD0C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, _0806BD10 @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BD08: .4byte sScriptStringVars -_0806BD0C: .4byte gPlayerParty -_0806BD10: .4byte gSpeciesNames - thumb_func_end ScrCmd_bufferleadmonspeciesname - - thumb_func_start ScrCmd_bufferpartymonnick -ScrCmd_bufferpartymonnick: @ 806BD14 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806BD54 @ =gPlayerParty - adds r0, r1 - ldr r1, _0806BD58 @ =sScriptStringVars - lsls r4, 2 - adds r4, r1 - ldr r4, [r4] - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BD54: .4byte gPlayerParty -_0806BD58: .4byte sScriptStringVars - thumb_func_end ScrCmd_bufferpartymonnick - - thumb_func_start ScrCmd_bufferitemname -ScrCmd_bufferitemname: @ 806BD5C - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0806BD8C @ =sScriptStringVars - lsls r4, 2 - adds r4, r1 - ldr r1, [r4] - bl sub_8099E90 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BD8C: .4byte sScriptStringVars - thumb_func_end ScrCmd_bufferitemname - - thumb_func_start ScrCmd_cmdDA -ScrCmd_cmdDA: @ 806BD90 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r7, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r6, r0, 16 - ldr r1, _0806BDE4 @ =sScriptStringVars - lsls r0, r7, 2 - adds r0, r1 - ldr r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8099E90 - cmp r5, 0x4 - bne _0806BDEC - cmp r6, 0x1 - bls _0806BDEC - ldr r1, _0806BDE8 @ =gUnknown_83A72A0 - adds r0, r4, 0 - bl StringAppend - b _0806BE22 - .align 2, 0 -_0806BDE4: .4byte sScriptStringVars -_0806BDE8: .4byte gUnknown_83A72A0 -_0806BDEC: - adds r0, r5, 0 - subs r0, 0x85 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x29 - bhi _0806BE22 - cmp r6, 0x1 - bls _0806BE22 - ldr r0, _0806BE2C @ =sScriptStringVars - lsls r1, r7, 2 - adds r1, r0 - ldr r4, [r1] - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _0806BE22 - adds r0, r4, r0 - subs r0, 0x1 - movs r1, 0xFF - strb r1, [r0] - ldr r1, _0806BE30 @ =gUnknown_83A72A2 - adds r0, r4, 0 - bl StringAppend -_0806BE22: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0806BE2C: .4byte sScriptStringVars -_0806BE30: .4byte gUnknown_83A72A2 - thumb_func_end ScrCmd_cmdDA - - thumb_func_start ScrCmd_bufferdecorationname -ScrCmd_bufferdecorationname: @ 806BE34 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_bufferdecorationname - - thumb_func_start ScrCmd_buffermovename -ScrCmd_buffermovename: @ 806BE50 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0806BE88 @ =sScriptStringVars - lsls r4, 2 - adds r4, r1 - ldr r2, [r4] - movs r1, 0xD - muls r1, r0 - ldr r0, _0806BE8C @ =gMoveNames - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BE88: .4byte sScriptStringVars -_0806BE8C: .4byte gMoveNames - thumb_func_end ScrCmd_buffermovename - - thumb_func_start ScrCmd_buffernumberstring -ScrCmd_buffernumberstring: @ 806BE90 - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_80CBF04 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _0806BED0 @ =sScriptStringVars - lsls r5, 2 - adds r5, r0 - ldr r0, [r5] - adds r1, r4, 0 - movs r2, 0 - bl ConvertIntToDecimalStringN - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806BED0: .4byte sScriptStringVars - thumb_func_end ScrCmd_buffernumberstring - - thumb_func_start ScrCmd_bufferstdstring -ScrCmd_bufferstdstring: @ 806BED4 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - ldr r1, _0806BF0C @ =sScriptStringVars - lsls r4, 2 - adds r4, r1 - ldr r2, [r4] - ldr r1, _0806BF10 @ =gUnknown_83E06B8 - lsrs r0, 14 - adds r0, r1 - ldr r1, [r0] - adds r0, r2, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BF0C: .4byte sScriptStringVars -_0806BF10: .4byte gUnknown_83E06B8 - thumb_func_end ScrCmd_bufferstdstring - - thumb_func_start ScrCmd_bufferstring -ScrCmd_bufferstring: @ 806BF14 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, _0806BF38 @ =sScriptStringVars - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BF38: .4byte sScriptStringVars - thumb_func_end ScrCmd_bufferstring - thumb_func_start ScrCmd_vloadword ScrCmd_vloadword: @ 806BF3C push {lr} diff --git a/asm/shop.s b/asm/shop.s index f710c9a7c..7d2f73d97 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -1023,7 +1023,7 @@ sub_809B300: @ 809B300 lsrs r5, 16 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8099E90 + bl CopyItemName str r6, [r4] str r5, [r4, 0x4] pop {r4-r6} @@ -2232,7 +2232,7 @@ _0809BC78: .4byte sub_809BF98 _0809BC7C: ldr r1, _0809BC94 @ =gStringVar1 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r1, _0809BC98 @ =gUnknown_8416766 ldr r2, _0809BC9C @ =sub_809BCA0 adds r0, r6, 0 @@ -2408,7 +2408,7 @@ _0809BDD4: bl PutWindowTilemap ldrh r0, [r4, 0xA] ldr r1, _0809BE40 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r0, _0809BE44 @ =gStringVar2 movs r2, 0x2 ldrsh r1, [r4, r2] diff --git a/asm/tm_case.s b/asm/tm_case.s index e7812abf2..e942bbc32 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -1855,7 +1855,7 @@ sub_8132714: @ 8132714 ldr r0, _08132744 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _08132748 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r5, _0813274C @ =gStringVar4 ldr r1, _08132750 @ =gUnknown_841635E adds r0, r5, 0 @@ -2093,7 +2093,7 @@ sub_8132908: @ 8132908 bne _08132968 ldrh r0, [r6] ldr r1, _08132958 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r4, _0813295C @ =gStringVar4 ldr r1, _08132960 @ =gUnknown_84168F1 adds r0, r4, 0 @@ -2133,7 +2133,7 @@ _08132980: _08132988: ldrh r0, [r6] ldr r1, _081329B4 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r4, _081329B8 @ =gStringVar4 ldr r1, _081329BC @ =gUnknown_8416911 adds r0, r4, 0 @@ -2506,7 +2506,7 @@ sub_8132CAC: @ 8132CAC ldr r0, _08132D1C @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _08132D20 @ =gStringVar1 - bl sub_8099E90 + bl CopyItemName ldr r6, _08132D24 @ =gStringVar3 ldrh r1, [r4, 0x2] movs r0, 0x4 diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s index d27d74f84..c495dc281 100644 --- a/asm/unk_8147AA8.s +++ b/asm/unk_8147AA8.s @@ -5613,7 +5613,7 @@ sub_814A468: @ 814A468 ldr r1, [r5] adds r1, 0x26 adds r0, r4, 0 - bl sub_8099E90 + bl CopyItemName ldr r0, [r5] adds r0, 0x66 adds r1, r6, 0 @@ -5705,7 +5705,7 @@ sub_814A53C: @ 814A53C ldr r4, _0814A5AC @ =gUnknown_203F3D8 ldr r1, [r4] adds r1, 0x26 - bl sub_8099E90 + bl CopyItemName bl UnkTextUtil_Reset ldr r1, [r4] adds r1, 0x26 @@ -5760,7 +5760,7 @@ sub_814A5B4: @ 814A5B4 ldr r4, _0814A624 @ =gUnknown_203F3D8 ldr r1, [r4] adds r1, 0x26 - bl sub_8099E90 + bl CopyItemName bl UnkTextUtil_Reset ldr r1, [r4] adds r1, 0x26 diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s index bc9b8c83a..e0448643e 100644 --- a/asm/unk_81507FC.s +++ b/asm/unk_81507FC.s @@ -9989,7 +9989,7 @@ _08155480: lsrs r0, 16 add r5, sp, 0x70 adds r1, r5, 0 - bl sub_8099E90 + bl CopyItemName movs r0, 0 adds r1, r5, 0 bl UnkTextUtil_SetPtrI @@ -10021,7 +10021,7 @@ _08155480: lsls r0, 16 lsrs r0, 16 adds r1, r5, 0 - bl sub_8099E90 + bl CopyItemName movs r0, 0 adds r1, r5, 0 bl UnkTextUtil_SetPtrI diff --git a/data/data_835B488.s b/data/data_835B488.s index 523942112..71e98b2ba 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -1547,7 +1547,7 @@ gUnknown_83DFC9C:: @ 83DFC9C gUnknown_83E04B0:: @ 83E04B0 .incbin "baserom.gba", 0x3E04B0, 0x208 -gUnknown_83E06B8:: @ 83E06B8 +gStdStringPtrs:: @ 83E06B8 .incbin "baserom.gba", 0x3E06B8, 0x74 gUnknown_83E072C:: @ 83E072C diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 43f82490d..626930fbd 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -213,7 +213,7 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_warpD1 .4byte ScrCmd_setmonmetlocation .4byte ScrCmd_getbraillestringwidth - .4byte ScrCmd_cmdDA + .4byte ScrCmd_bufferitemnameplural gScriptCmdTableEnd:: @ 815FD08 .4byte ScrCmd_nop diff --git a/include/field_specials.h b/include/field_specials.h index 2b7991b55..2d495fdd5 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -4,6 +4,7 @@ #include "global.h" u8 GetLeadMonIndex(void); +u8 CountDigits(u16 number); void TV_PrintIntToStringVar(u8, int); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/item.h b/include/item.h index 581693735..25177cb6e 100644 --- a/include/item.h +++ b/include/item.h @@ -62,7 +62,7 @@ u8 ItemId_GetSecondaryId(u16 itemId); u16 itemid_get_market_price(u16 itemId); void sub_809A2DC(void); void sub_809A2A4(void); -void sub_8099E90(u16, u8 *); +void CopyItemName(u16, u8 *); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); diff --git a/include/script_menu.h b/include/script_menu.h index 1e95570b3..01402d565 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -3,7 +3,7 @@ #include "global.h" -extern const u8 *const gUnknown_0858BAF0[9]; +extern const u8 *const gStdStringPtrs[9]; bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4); bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5); diff --git a/src/quest_log.c b/src/quest_log.c index 4f462505a..a01cbde2d 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4312,7 +4312,7 @@ u16 * sub_8114C68(u16 * a0, const u16 * a1) const u16 * sub_8114C8C(const u16 * a0) { const u16 *r4 = sub_8113E88(28, a0); - sub_8099E90(r4[0], gStringVar1); + CopyItemName(r4[0], gStringVar1); StringExpandPlaceholders(gStringVar4, gUnknown_841A391); return r4 + 1; } @@ -4329,7 +4329,7 @@ u16 * sub_8114CC0(u16 * a0, const u16 * a1) const u16 * sub_8114CE4(const u16 * a0) { const u16 *r4 = sub_8113E88(29, a0); - sub_8099E90(r4[0], gStringVar1); + CopyItemName(r4[0], gStringVar1); StringExpandPlaceholders(gStringVar4, gUnknown_841A3DA); return r4 + 1; } diff --git a/src/scrcmd.c b/src/scrcmd.c index c77dda666..98a3fa027 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -24,6 +24,10 @@ #include "window.h" #include "start_menu.h" #include "script_menu.h" +#include "string_util.h" +#include "data2.h" +#include "field_specials.h" +#include "constants/items.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -341,13 +345,6 @@ SCRCMD_DEF(setorcopyvar) return FALSE; } -u8 * const sScriptStringVars[] = -{ - gStringVar1, - gStringVar2, - gStringVar3, -}; - u8 compare_012(u16 left, u16 right) { if (left < right) @@ -1575,3 +1572,140 @@ SCRCMD_DEF(getbraillestringwidth) gSpecialVar_0x8004 = GetStringWidth(6, ptr, -1); return FALSE; } + +SCRCMD_DEF(vmessage) +{ + u32 v1 = ScriptReadWord(ctx); + + ShowFieldMessage((u8 *)(v1 - gVScriptOffset)); + return FALSE; +} + +u8 * const sScriptStringVars[] = +{ + gStringVar1, + gStringVar2, + gStringVar3, +}; + +bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 species = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]); + return FALSE; +} + +bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + + u8 *dest = sScriptStringVars[stringVarIndex]; + u8 partyIndex = GetLeadMonIndex(); + u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL); + StringCopy(dest, gSpeciesNames[species]); + return FALSE; +} + +bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); + StringGetEnd10(sScriptStringVars[stringVarIndex]); + return FALSE; +} + +bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + + CopyItemName(itemId, sScriptStringVars[stringVarIndex]); + return FALSE; +} + +extern const u8 gUnknown_83A72A0[]; +extern const u8 gUnknown_83A72A2[]; + +bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 itemId = VarGet(ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ScriptReadHalfword(ctx)); + + CopyItemName(itemId, sScriptStringVars[stringVarIndex]); + if (itemId == ITEM_POKE_BALL && quantity >= 2) + StringAppend(sScriptStringVars[stringVarIndex], gUnknown_83A72A0); + else if (itemId >= ITEM_CHERI_BERRY && itemId < ITEM_ENIGMA_BERRY && quantity >= 2) + { + u16 strlength = StringLength(sScriptStringVars[stringVarIndex]); + if (strlength != 0) + { + u8 * endptr = sScriptStringVars[stringVarIndex] + strlength; + endptr[-1] = EOS; + StringAppend(sScriptStringVars[stringVarIndex], gUnknown_83A72A2); + } + } + + return FALSE; +} + +bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 decorId = VarGet(ScriptReadHalfword(ctx)); + +// StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name); + return FALSE; +} + +bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 moveId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]); + return FALSE; +} + +bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 v1 = VarGet(ScriptReadHalfword(ctx)); + u8 v2 = CountDigits(v1); + + ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2); + return FALSE; +} + +bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 index = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], gStdStringPtrs[index]); + return FALSE; +} + +/* +bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 index = VarGet(ScriptReadHalfword(ctx)); + + sub_818E868(sScriptStringVars[stringVarIndex], index); + return FALSE; +} +*/ + +bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + const u8 *text = (u8 *)ScriptReadWord(ctx); + + StringCopy(sScriptStringVars[stringVarIndex], text); + return FALSE; +} diff --git a/src/trainer_tower.c b/src/trainer_tower.c index c968f24c3..f4e18eee6 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -821,7 +821,7 @@ void sub_815E408(void) gSpecialVar_Result = 2; else if (AddBagItem(itemId, 1) == 1) { - sub_8099E90(itemId, gStringVar2); + CopyItemName(itemId, gStringVar2); gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 = TRUE; gSpecialVar_Result = 0; } From fdd7b1033cb32f02eb861ca87fa92b9886bdfe37 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 16:00:27 -0500 Subject: [PATCH 013/318] Through ScrCmd_pokemart --- asm/battle_setup.s | 44 +- asm/field_player_avatar.s | 2 +- asm/party_menu.s | 8 +- asm/scrcmd.s | 605 -------------------------- asm/script_pokemon_util_80A0058.s | 6 +- asm/shop.s | 6 +- data/script_cmd_table.inc | 4 +- include/battle_setup.h | 4 +- include/party_menu.h | 2 +- include/pokemon_storage_system.h | 1 + include/quest_log.h | 1 + include/script_menu.h | 1 + include/script_pokemon_util_80A0058.h | 8 + src/scrcmd.c | 273 +++++++++++- 14 files changed, 311 insertions(+), 654 deletions(-) create mode 100644 include/script_pokemon_util_80A0058.h diff --git a/asm/battle_setup.s b/asm/battle_setup.s index bba968305..529787bf6 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -318,8 +318,8 @@ _0807F8BC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music _0807F8C0: .4byte gBattleTypeFlags thumb_func_end sub_807F888 - thumb_func_start sub_807F8C4 -sub_807F8C4: @ 807F8C4 + thumb_func_start BattleSetup_StartScriptedWildBattle +BattleSetup_StartScriptedWildBattle: @ 807F8C4 push {lr} bl ScriptContext2_Enable ldr r1, _0807F8F8 @ =gMain @@ -344,7 +344,7 @@ sub_807F8C4: @ 807F8C4 _0807F8F8: .4byte gMain _0807F8FC: .4byte sub_807FBA0 _0807F900: .4byte gBattleTypeFlags - thumb_func_end sub_807F8C4 + thumb_func_end BattleSetup_StartScriptedWildBattle thumb_func_start sub_807F904 sub_807F904: @ 807F904 @@ -1524,8 +1524,8 @@ _08080220: .4byte gSaveBlock1Ptr _08080224: .4byte gSelectedEventObject thumb_func_end battle_80801F0 - thumb_func_start sub_8080228 -sub_8080228: @ 8080228 + thumb_func_start BattleSetup_ConfigureTrainerBattle +BattleSetup_ConfigureTrainerBattle: @ 8080228 push {r4,r5,lr} adds r5, r0, 0 bl sub_8080110 @@ -1640,7 +1640,7 @@ _08080326: .align 2, 0 _0808032C: .4byte gUnknown_83C6900 _08080330: .4byte gUnknown_81A4EC1 - thumb_func_end sub_8080228 + thumb_func_end BattleSetup_ConfigureTrainerBattle thumb_func_start TrainerWantsBattle TrainerWantsBattle: @ 8080334 @@ -1659,7 +1659,7 @@ TrainerWantsBattle: @ 8080334 strh r0, [r4] adds r1, 0x1 adds r0, r1, 0 - bl sub_8080228 + bl BattleSetup_ConfigureTrainerBattle ldr r0, _08080374 @ =gUnknown_81A4EB4 bl ScriptContext1_SetupScript bl ScriptContext2_Enable @@ -1785,8 +1785,8 @@ HasTrainerAlreadyBeenFought: @ 8080424 bx r1 thumb_func_end HasTrainerAlreadyBeenFought - thumb_func_start trainer_flag_set -trainer_flag_set: @ 808043C + thumb_func_start SetTrainerFlag +SetTrainerFlag: @ 808043C push {lr} lsls r0, 16 movs r1, 0xA0 @@ -1796,10 +1796,10 @@ trainer_flag_set: @ 808043C bl FlagSet pop {r0} bx r0 - thumb_func_end trainer_flag_set + thumb_func_end SetTrainerFlag - thumb_func_start trainer_flag_clear -trainer_flag_clear: @ 8080450 + thumb_func_start ClearTrainerFlag +ClearTrainerFlag: @ 8080450 push {lr} lsls r0, 16 movs r1, 0xA0 @@ -1809,10 +1809,10 @@ trainer_flag_clear: @ 8080450 bl FlagClear pop {r0} bx r0 - thumb_func_end trainer_flag_clear + thumb_func_end ClearTrainerFlag - thumb_func_start sub_8080464 -sub_8080464: @ 8080464 + thumb_func_start BattleSetup_StartTrainerBattle +BattleSetup_StartTrainerBattle: @ 8080464 push {r4,lr} ldr r4, _080804A0 @ =gBattleTypeFlags movs r0, 0x8 @@ -1844,7 +1844,7 @@ _0808048C: _080804A0: .4byte gBattleTypeFlags _080804A4: .4byte gMain _080804A8: .4byte sub_80804AC - thumb_func_end sub_8080464 + thumb_func_end BattleSetup_StartTrainerBattle thumb_func_start sub_80804AC sub_80804AC: @ 80804AC @@ -1992,8 +1992,8 @@ sub_80805D8: @ 80805D8 bx r0 thumb_func_end sub_80805D8 - thumb_func_start sub_80805E8 -sub_80805E8: @ 80805E8 + thumb_func_start BattleSetup_GetScriptAddrAfterBattle +BattleSetup_GetScriptAddrAfterBattle: @ 80805E8 push {lr} ldr r0, _080805F8 @ =gUnknown_20386C4 ldr r0, [r0] @@ -2006,10 +2006,10 @@ _080805F4: .align 2, 0 _080805F8: .4byte gUnknown_20386C4 _080805FC: .4byte gUnknown_81C555B - thumb_func_end sub_80805E8 + thumb_func_end BattleSetup_GetScriptAddrAfterBattle - thumb_func_start sub_8080600 -sub_8080600: @ 8080600 + thumb_func_start BattleSetup_GetTrainerPostBattleScript +BattleSetup_GetTrainerPostBattleScript: @ 8080600 push {lr} ldr r0, _08080610 @ =gUnknown_20386C8 ldr r0, [r0] @@ -2022,7 +2022,7 @@ _0808060C: .align 2, 0 _08080610: .4byte gUnknown_20386C8 _08080614: .4byte gUnknown_81C555B - thumb_func_end sub_8080600 + thumb_func_end BattleSetup_GetTrainerPostBattleScript thumb_func_start sub_8080618 sub_8080618: @ 8080618 diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index aa68c6ef2..df2588587 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -2818,7 +2818,7 @@ PartyHasMonWithSurf: @ 805C83C _0805C84E: adds r0, r4, 0 movs r1, 0x39 - bl pokemon_has_move + bl MonKnowsMove lsls r0, 24 cmp r0, 0 beq _0805C860 diff --git a/asm/party_menu.s b/asm/party_menu.s index 8d6da0894..c0e4a79f4 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -4298,7 +4298,7 @@ _08120B86: lsls r0, 16 lsrs r1, r0, 16 adds r0, r5, 0 - bl pokemon_has_move + bl MonKnowsMove lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -14185,8 +14185,8 @@ _08125ABC: bx r1 thumb_func_end sub_8125A90 - thumb_func_start pokemon_has_move -pokemon_has_move: @ 8125AC0 + thumb_func_start MonKnowsMove +MonKnowsMove: @ 8125AC0 push {r4-r6,lr} adds r6, r0, 0 lsls r1, 16 @@ -14212,7 +14212,7 @@ _08125AE8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end pokemon_has_move + thumb_func_end MonKnowsMove thumb_func_start sub_8125AF0 sub_8125AF0: @ 8125AF0 diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 45e7bd376..8ffce84cd 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,611 +5,6 @@ .text - thumb_func_start ScrCmd_vloadword -ScrCmd_vloadword: @ 806BF3C - push {lr} - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, _0806BF58 @ =gVScriptOffset - ldr r0, [r0] - subs r1, r0 - ldr r0, _0806BF5C @ =gStringVar4 - bl StringExpandPlaceholders - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806BF58: .4byte gVScriptOffset -_0806BF5C: .4byte gStringVar4 - thumb_func_end ScrCmd_vloadword - - thumb_func_start ScrCmd_vbufferstring -ScrCmd_vbufferstring: @ 806BF60 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, _0806BF8C @ =gVScriptOffset - ldr r0, [r0] - subs r1, r0 - ldr r0, _0806BF90 @ =sScriptStringVars - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BF8C: .4byte gVScriptOffset -_0806BF90: .4byte sScriptStringVars - thumb_func_end ScrCmd_vbufferstring - - thumb_func_start ScrCmd_bufferboxname -ScrCmd_bufferboxname: @ 806BF94 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, _0806BFCC @ =sScriptStringVars - lsls r4, 2 - adds r4, r1 - ldr r4, [r4] - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BFCC: .4byte sScriptStringVars - thumb_func_end ScrCmd_bufferboxname - - thumb_func_start ScrCmd_givemon -ScrCmd_givemon: @ 806BFD0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - bl ScriptReadWord - mov r8, r0 - adds r0, r4, 0 - bl ScriptReadWord - ldr r1, [r4, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - ldr r4, _0806C04C @ =gSpecialVar_Result - str r0, [sp] - str r2, [sp, 0x4] - adds r0, r6, 0 - mov r1, r9 - adds r2, r5, 0 - mov r3, r8 - bl ScriptGiveMon - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806C04C: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_givemon - - thumb_func_start ScrCmd_giveegg -ScrCmd_giveegg: @ 806C050 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0806C078 @ =gSpecialVar_Result - bl sub_80A01AC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C078: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_giveegg - - thumb_func_start ScrCmd_setmonmove -ScrCmd_setmonmove: @ 806C07C - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - adds r2, r4, 0 - bl ScriptSetMonMoveSlot - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setmonmove - - thumb_func_start ScrCmd_checkpartymove -ScrCmd_checkpartymove: @ 806C0A8 - push {r4-r7,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r7, r0, 16 - ldr r1, _0806C0BC @ =gSpecialVar_Result - movs r0, 0x6 - strh r0, [r1] - movs r6, 0 - b _0806C0F6 - .align 2, 0 -_0806C0BC: .4byte gSpecialVar_Result -_0806C0C0: - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0806C0F0 - adds r0, r4, 0 - adds r1, r7, 0 - bl pokemon_has_move - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806C0F0 - ldr r0, _0806C0E8 @ =gSpecialVar_Result - strh r6, [r0] - ldr r0, _0806C0EC @ =gSpecialVar_0x8004 - strh r5, [r0] - b _0806C116 - .align 2, 0 -_0806C0E8: .4byte gSpecialVar_Result -_0806C0EC: .4byte gSpecialVar_0x8004 -_0806C0F0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0806C0F6: - cmp r6, 0x5 - bhi _0806C116 - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, _0806C120 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0806C0C0 -_0806C116: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0806C120: .4byte gPlayerParty - thumb_func_end ScrCmd_checkpartymove - - thumb_func_start ScrCmd_givemoney -ScrCmd_givemoney: @ 806C124 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0806C14A - ldr r0, _0806C154 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r2, 0 - bl AddMoney -_0806C14A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C154: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_givemoney - - thumb_func_start ScrCmd_takemoney -ScrCmd_takemoney: @ 806C158 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0806C17E - ldr r0, _0806C188 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r2, 0 - bl RemoveMoney -_0806C17E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C188: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_takemoney - - thumb_func_start ScrCmd_checkmoney -ScrCmd_checkmoney: @ 806C18C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0806C1BA - ldr r4, _0806C1C4 @ =gSpecialVar_Result - ldr r0, _0806C1C8 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r2, 0 - bl IsEnoughMoney - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] -_0806C1BA: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C1C4: .4byte gSpecialVar_Result -_0806C1C8: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_checkmoney - - thumb_func_start ScrCmd_showmoneybox -ScrCmd_showmoneybox: @ 806C1CC - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r2, r1, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r1, 0x1] - adds r2, 0x1 - str r2, [r0, 0x8] - cmp r1, 0 - bne _0806C20A - ldr r0, _0806C214 @ =sub_809D6D4 - bl sub_81119D4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806C20A - ldr r0, _0806C218 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - adds r1, r5, 0 - adds r2, r4, 0 - bl DrawMoneyBox -_0806C20A: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806C214: .4byte sub_809D6D4 -_0806C218: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_showmoneybox - - thumb_func_start ScrCmd_hidemoneybox -ScrCmd_hidemoneybox: @ 806C21C - push {lr} - bl HideMoneyBox - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_hidemoneybox - - thumb_func_start ScrCmd_updatemoneybox -ScrCmd_updatemoneybox: @ 806C228 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x1 - adds r2, r1, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r1, 0x1] - adds r2, 0x1 - str r2, [r0, 0x8] - cmp r1, 0 - bne _0806C24E - ldr r0, _0806C254 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - bl ChangeAmountInMoneyBox -_0806C24E: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806C254: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_updatemoneybox - - thumb_func_start ScrCmd_showcoinsbox -ScrCmd_showcoinsbox: @ 806C258 - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldr r0, _0806C290 @ =sub_809D6D4 - bl sub_81119D4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806C286 - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - adds r2, r4, 0 - bl ShowCoinsWindow -_0806C286: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806C290: .4byte sub_809D6D4 - thumb_func_end ScrCmd_showcoinsbox - - thumb_func_start ScrCmd_hidecoinsbox -ScrCmd_hidecoinsbox: @ 806C294 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x2 - str r1, [r0, 0x8] - bl HideCoinsWindow - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_hidecoinsbox - - thumb_func_start ScrCmd_updatecoinsbox -ScrCmd_updatecoinsbox: @ 806C2A8 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x2 - str r1, [r0, 0x8] - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - bl PrintCoinsString - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_updatecoinsbox - - thumb_func_start ScrCmd_trainerbattle -ScrCmd_trainerbattle: @ 806C2C4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - bl sub_8080228 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_trainerbattle - - thumb_func_start ScrCmd_dotrainerbattle -ScrCmd_dotrainerbattle: @ 806C2D8 - push {lr} - bl sub_8080464 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_dotrainerbattle - - thumb_func_start ScrCmd_ontrainerbattleend -ScrCmd_ontrainerbattleend: @ 806C2E4 - push {r4,lr} - adds r4, r0, 0 - bl sub_80805E8 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_ontrainerbattleend - - thumb_func_start ScrCmd_ontrainerbattleendgoto -ScrCmd_ontrainerbattleendgoto: @ 806C2F8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8080600 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_ontrainerbattleendgoto - - thumb_func_start ScrCmd_checktrainerflag -ScrCmd_checktrainerflag: @ 806C30C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl HasTrainerAlreadyBeenFought - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_checktrainerflag - - thumb_func_start ScrCmd_settrainerflag -ScrCmd_settrainerflag: @ 806C330 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl trainer_flag_set - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_settrainerflag - - thumb_func_start ScrCmd_cleartrainerflag -ScrCmd_cleartrainerflag: @ 806C34C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl trainer_flag_clear - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_cleartrainerflag - - thumb_func_start ScrCmd_setwildbattle -ScrCmd_setwildbattle: @ 806C368 - push {r4-r6,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r0, [r4, 0x8] - ldrb r6, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl CreateScriptedWildMon - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setwildbattle - - thumb_func_start ScrCmd_dowildbattle -ScrCmd_dowildbattle: @ 806C39C - push {lr} - bl sub_807F8C4 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_dowildbattle - - thumb_func_start ScrCmd_pokemart -ScrCmd_pokemart: @ 806C3AC - push {lr} - bl ScriptReadWord - bl sub_809C164 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_pokemart - thumb_func_start ScrCmd_pokemartdecoration ScrCmd_pokemartdecoration: @ 806C3C0 push {lr} diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s index 191457abe..60f416b48 100644 --- a/asm/script_pokemon_util_80A0058.s +++ b/asm/script_pokemon_util_80A0058.s @@ -170,8 +170,8 @@ _080A0196: bx r1 thumb_func_end ScriptGiveMon - thumb_func_start sub_80A01AC -sub_80A01AC: @ 80A01AC + thumb_func_start ScriptGiveEgg +ScriptGiveEgg: @ 80A01AC push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 @@ -202,7 +202,7 @@ sub_80A01AC: @ 80A01AC pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_80A01AC + thumb_func_end ScriptGiveEgg thumb_func_start CheckForAlivePartyMons CheckForAlivePartyMons: @ 80A01F4 diff --git a/asm/shop.s b/asm/shop.s index 7d2f73d97..5e44baa4a 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -2826,8 +2826,8 @@ _0809C15A: _0809C160: .4byte gUnknown_203996C thumb_func_end sub_809C138 - thumb_func_start sub_809C164 -sub_809C164: @ 809C164 + thumb_func_start CreatePokemartMenu +CreatePokemartMenu: @ 809C164 push {r4,lr} bl sub_809ABD8 movs r0, 0 @@ -2851,7 +2851,7 @@ sub_809C164: @ 809C164 _0809C194: .4byte EnableBothScriptContexts _0809C198: .4byte gUnknown_203996C _0809C19C: .4byte gMapHeader - thumb_func_end sub_809C164 + thumb_func_end CreatePokemartMenu thumb_func_start sub_809C1A0 sub_809C1A0: @ 809C1A0 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 626930fbd..98c74b501 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -95,8 +95,8 @@ gScriptCmdTable:: @ 815F9B4 .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/include/battle_setup.h b/include/battle_setup.h index 86a84f471..61395811b 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -11,8 +11,8 @@ void BattleSetup_StartWildBattle(void); void BattleSetup_StartRoamerBattle(void); u8 HasTrainerAlreadyBeenFought(u16); -void trainer_flag_set(u16); -void trainer_flag_clear(u16); +void SetTrainerFlag(u16); +void ClearTrainerFlag(u16); void BattleSetup_StartTrainerBattle(void); u8 *BattleSetup_GetScriptAddrAfterBattle(void); u8 *BattleSetup_GetTrainerPostBattleScript(void); diff --git a/include/party_menu.h b/include/party_menu.h index 19e1f7d4e..2e83c1496 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -12,7 +12,7 @@ enum { AILMENT_BRN }; -bool8 pokemon_has_move(struct Pokemon *, u16); +bool8 MonKnowsMove(struct Pokemon *, u16); void sub_81B58A8(void); void DoWallyTutorialBagMenu(void); u8 pokemon_ailments_get_primary(u32 status); diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 5b2d2052b..897c5a42e 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -12,5 +12,6 @@ void SetBoxMonNickFromAnyBox(u8 boxId, u8 monPosition, u8 * newNick); void CompactPartySlots(void); u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); +u8 * GetBoxNamePtr(u8 boxId); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/quest_log.h b/include/quest_log.h index faa47a809..31220b86c 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -23,6 +23,7 @@ void sub_8112720(u8); void sub_8113550(u16, const u16 *); void sub_8115748(u16); u8 sub_8112CAC(void); +bool8 sub_81119D4(void (*func)(void)); extern u8 gUnknown_203ADFA; diff --git a/include/script_menu.h b/include/script_menu.h index 01402d565..f82b061a5 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -11,5 +11,6 @@ bool8 ScriptMenu_YesNo(u8 var1, u8 var2); bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); +void sub_809D6D4(void); #endif //GUARD_SCRIPT_MENU_H diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util_80A0058.h new file mode 100644 index 000000000..e1d228589 --- /dev/null +++ b/include/script_pokemon_util_80A0058.h @@ -0,0 +1,8 @@ +#ifndef GUARD_SCRIPT_POKEMON_UTIL_80A0058_H +#define GUARD_SCRIPT_POKEMON_UTIL_80A0058_H + +bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3); +bool8 ScriptGiveEgg(u16 species); +void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot); + +#endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H diff --git a/src/scrcmd.c b/src/scrcmd.c index 98a3fa027..3d7200b5b 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -28,6 +28,14 @@ #include "data2.h" #include "field_specials.h" #include "constants/items.h" +#include "script_pokemon_util_80A0058.h" +#include "pokemon_storage_system.h" +#include "party_menu.h" +#include "money.h" +#include "coins.h" +#include "battle_setup.h" +#include "shop.h" +#include "script_pokemon_80F8.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -1588,7 +1596,7 @@ u8 * const sScriptStringVars[] = gStringVar3, }; -bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferspeciesname) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); @@ -1597,7 +1605,7 @@ bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferleadmonspeciesname) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -1608,7 +1616,7 @@ bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) +SCRCMD_DEF(bufferpartymonnick) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -1618,7 +1626,7 @@ bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferitemname) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1630,7 +1638,7 @@ bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) extern const u8 gUnknown_83A72A0[]; extern const u8 gUnknown_83A72A2[]; -bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) +SCRCMD_DEF(bufferitemnameplural) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1653,7 +1661,7 @@ bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferdecorationname) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -1662,7 +1670,7 @@ bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) +SCRCMD_DEF(buffermovename) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); @@ -1671,7 +1679,7 @@ bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) +SCRCMD_DEF(buffernumberstring) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -1681,7 +1689,7 @@ bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) +SCRCMD_DEF(bufferstdstring) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1691,7 +1699,7 @@ bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) } /* -bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx) +SCRCMD_DEF(buffercontesttype) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1701,7 +1709,7 @@ bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx) } */ -bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) +SCRCMD_DEF(bufferstring) { u8 stringVarIndex = ScriptReadByte(ctx); const u8 *text = (u8 *)ScriptReadWord(ctx); @@ -1709,3 +1717,246 @@ bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) StringCopy(sScriptStringVars[stringVarIndex], text); return FALSE; } + +SCRCMD_DEF(vloadword) +{ + const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gVScriptOffset); + + StringExpandPlaceholders(gStringVar4, ptr); + return FALSE; +} + +SCRCMD_DEF(vbufferstring) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u32 addr = ScriptReadWord(ctx); + + const u8 *src = (u8 *)(addr - gVScriptOffset); + u8 *dest = sScriptStringVars[stringVarIndex]; + StringCopy(dest, src); + return FALSE; +} + +SCRCMD_DEF(bufferboxname) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 boxId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], GetBoxNamePtr(boxId)); + return FALSE; +} + +SCRCMD_DEF(givemon) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 level = ScriptReadByte(ctx); + u16 item = VarGet(ScriptReadHalfword(ctx)); + u32 unkParam1 = ScriptReadWord(ctx); + u32 unkParam2 = ScriptReadWord(ctx); + u8 unkParam3 = ScriptReadByte(ctx); + + gSpecialVar_Result = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); + return FALSE; +} + +SCRCMD_DEF(giveegg) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = ScriptGiveEgg(species); + return FALSE; +} + +SCRCMD_DEF(setmonmove) +{ + u8 partyIndex = ScriptReadByte(ctx); + u8 slot = ScriptReadByte(ctx); + u16 move = ScriptReadHalfword(ctx); + + ScriptSetMonMoveSlot(partyIndex, move, slot); + return FALSE; +} + +SCRCMD_DEF(checkpartymove) +{ + u8 i; + u16 moveId = ScriptReadHalfword(ctx); + + gSpecialVar_Result = PARTY_SIZE; + for (i = 0; i < PARTY_SIZE; i++) + { + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); + if (!species) + break; + if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && MonKnowsMove(&gPlayerParty[i], moveId) == TRUE) + { + gSpecialVar_Result = i; + gSpecialVar_0x8004 = species; + break; + } + } + return FALSE; +} + +SCRCMD_DEF(givemoney) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + AddMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +SCRCMD_DEF(takemoney) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + RemoveMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +SCRCMD_DEF(checkmoney) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + gSpecialVar_Result = IsEnoughMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +SCRCMD_DEF(showmoneybox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore && sub_81119D4(sub_809D6D4) != TRUE) + DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y); + return FALSE; +} + +SCRCMD_DEF(hidemoneybox) +{ + /*u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx);*/ + + HideMoneyBox(); + return FALSE; +} + +SCRCMD_DEF(updatemoneybox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + ChangeAmountInMoneyBox(GetMoney(&gSaveBlock1Ptr->money)); + return FALSE; +} + +SCRCMD_DEF(showcoinsbox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + if (sub_81119D4(sub_809D6D4) != TRUE) + ShowCoinsWindow(GetCoins(), x, y); + return FALSE; +} + +SCRCMD_DEF(hidecoinsbox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + HideCoinsWindow(); + return FALSE; +} + +SCRCMD_DEF(updatecoinsbox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + PrintCoinsString(GetCoins()); + return FALSE; +} + +SCRCMD_DEF(trainerbattle) +{ + ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); + return FALSE; +} + +SCRCMD_DEF(dotrainerbattle) +{ + BattleSetup_StartTrainerBattle(); + return TRUE; +} + +SCRCMD_DEF(gotopostbattlescript) +{ + ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); + return FALSE; +} + +SCRCMD_DEF(gotobeatenscript) +{ + ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); + return FALSE; +} + +SCRCMD_DEF(checktrainerflag) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); + return FALSE; +} + +SCRCMD_DEF(settrainerflag) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + SetTrainerFlag(index); + return FALSE; +} + +SCRCMD_DEF(cleartrainerflag) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + ClearTrainerFlag(index); + return FALSE; +} + +SCRCMD_DEF(setwildbattle) +{ + u16 species = ScriptReadHalfword(ctx); + u8 level = ScriptReadByte(ctx); + u16 item = ScriptReadHalfword(ctx); + + CreateScriptedWildMon(species, level, item); + return FALSE; +} + +SCRCMD_DEF(dowildbattle) +{ + BattleSetup_StartScriptedWildBattle(); + ScriptContext1_Stop(); + return TRUE; +} + +SCRCMD_DEF(pokemart) +{ + const void *ptr = (void *)ScriptReadWord(ctx); + + CreatePokemartMenu(ptr); + ScriptContext1_Stop(); + return TRUE; +} From abac6f3ec853f451a7d456cfd336d8c51c0541c1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 16:14:59 -0500 Subject: [PATCH 014/318] Through ScrCmd_takecoins --- asm/field_door.s | 36 +-- asm/field_fadetransition.s | 20 +- asm/overworld.s | 6 +- asm/scrcmd.s | 552 ------------------------------------- asm/shop.s | 12 +- asm/slot_machine.s | 6 +- data/script_cmd_table.inc | 2 +- include/overworld.h | 1 + src/scrcmd.c | 270 +++++++++++++++++- 9 files changed, 311 insertions(+), 594 deletions(-) diff --git a/asm/field_door.s b/asm/field_door.s index 9c7e5eb10..4384531d0 100644 --- a/asm/field_door.s +++ b/asm/field_door.s @@ -478,8 +478,8 @@ _0805B25C: _0805B264: .4byte gUnknown_835B4B0 thumb_func_end sub_805B210 - thumb_func_start sub_805B268 -sub_805B268: @ 805B268 + thumb_func_start FieldSetDoorOpened +FieldSetDoorOpened: @ 805B268 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -504,10 +504,10 @@ _0805B292: bx r0 .align 2, 0 _0805B298: .4byte gUnknown_835B5D8 - thumb_func_end sub_805B268 + thumb_func_end FieldSetDoorOpened - thumb_func_start sub_805B29C -sub_805B29C: @ 805B29C + thumb_func_start FieldSetDoorClosed +FieldSetDoorClosed: @ 805B29C push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -532,10 +532,10 @@ _0805B2C6: bx r0 .align 2, 0 _0805B2CC: .4byte gUnknown_835B5D8 - thumb_func_end sub_805B29C + thumb_func_end FieldSetDoorClosed - thumb_func_start sub_805B2D0 -sub_805B2D0: @ 805B2D0 + thumb_func_start FieldAnimateDoorClose +FieldAnimateDoorClose: @ 805B2D0 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -566,10 +566,10 @@ _0805B308: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_805B2D0 + thumb_func_end FieldAnimateDoorClose - thumb_func_start sub_805B310 -sub_805B310: @ 805B310 + thumb_func_start FieldAnimateDoorOpen +FieldAnimateDoorOpen: @ 805B310 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -600,10 +600,10 @@ _0805B348: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_805B310 + thumb_func_end FieldAnimateDoorOpen - thumb_func_start sub_805B350 -sub_805B350: @ 805B350 + thumb_func_start FieldIsDoorAnimationRunning +FieldIsDoorAnimationRunning: @ 805B350 push {lr} ldr r0, _0805B360 @ =sub_805B028 bl FuncIsActiveTask @@ -613,10 +613,10 @@ sub_805B350: @ 805B350 bx r1 .align 2, 0 _0805B360: .4byte sub_805B028 - thumb_func_end sub_805B350 + thumb_func_end FieldIsDoorAnimationRunning - thumb_func_start sub_805B364 -sub_805B364: @ 805B364 + thumb_func_start GetDoorSoundEffect +GetDoorSoundEffect: @ 805B364 push {lr} adds r3, r0, 0 adds r2, r1, 0 @@ -635,7 +635,7 @@ _0805B380: _0805B382: pop {r1} bx r1 - thumb_func_end sub_805B364 + thumb_func_end GetDoorSoundEffect thumb_func_start sub_805B388 sub_805B388: @ 805B388 diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index f701e579b..494c3e61e 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -661,7 +661,7 @@ _0807E028: ldrsh r0, [r6, r2] movs r2, 0 ldrsh r1, [r7, r2] - bl sub_805B268 + bl FieldSetDoorOpened movs r0, 0x1 strh r0, [r4, 0x8] b _0807E206 @@ -691,7 +691,7 @@ _0807E074: ldrsh r0, [r6, r1] movs r2, 0 ldrsh r1, [r7, r2] - bl sub_805B364 + bl GetDoorSoundEffect lsls r0, 16 lsrs r0, 16 bl PlaySE @@ -699,12 +699,12 @@ _0807E074: ldrsh r0, [r6, r1] movs r2, 0 ldrsh r1, [r7, r2] - bl sub_805B310 + bl FieldAnimateDoorOpen movs r0, 0x7 strh r0, [r4, 0x8] b _0807E206 _0807E0A2: - bl sub_805B350 + bl FieldIsDoorAnimationRunning lsls r0, 24 cmp r0, 0 beq _0807E0AE @@ -750,7 +750,7 @@ _0807E0FC: ldrsh r0, [r4, r1] movs r2, 0x22 ldrsh r1, [r4, r2] - bl sub_805B2D0 + bl FieldAnimateDoorClose movs r0, 0x9 strh r0, [r4, 0x8] b _0807E206 @@ -762,7 +762,7 @@ _0807E10E: lsls r0, 24 cmp r0, 0 beq _0807E206 - bl sub_805B350 + bl FieldIsDoorAnimationRunning lsls r0, 24 cmp r0, 0 bne _0807E206 @@ -822,7 +822,7 @@ _0807E198: ldrsh r0, [r6, r1] movs r2, 0 ldrsh r1, [r7, r2] - bl sub_805B2D0 + bl FieldAnimateDoorClose lsls r0, 24 asrs r0, 24 strh r0, [r4, 0xA] @@ -1690,7 +1690,7 @@ _0807E85C: movs r2, 0 ldrsh r1, [r6, r2] subs r1, 0x1 - bl sub_805B364 + bl GetDoorSoundEffect lsls r0, 16 lsrs r0, 16 bl PlaySE @@ -1699,7 +1699,7 @@ _0807E85C: movs r2, 0 ldrsh r1, [r6, r2] subs r1, 0x1 - bl sub_805B310 + bl FieldAnimateDoorOpen lsls r0, 24 asrs r0, 24 strh r0, [r5, 0xA] @@ -1760,7 +1760,7 @@ _0807E8F4: movs r2, 0 ldrsh r1, [r6, r2] subs r1, 0x1 - bl sub_805B2D0 + bl FieldAnimateDoorClose lsls r0, 24 asrs r0, 24 strh r0, [r5, 0xA] diff --git a/asm/overworld.s b/asm/overworld.s index eabb38228..071cca7e6 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1185,8 +1185,8 @@ sub_80554BC: @ 80554BC _080554C8: .4byte gUnknown_2031DBC thumb_func_end sub_80554BC - thumb_func_start sub_80554CC -sub_80554CC: @ 80554CC + thumb_func_start SetLastHealLocationWarp +SetLastHealLocationWarp: @ 80554CC push {r4,r5,lr} sub sp, 0x8 lsls r0, 24 @@ -1218,7 +1218,7 @@ _08055500: bx r0 .align 2, 0 _08055508: .4byte gSaveBlock1Ptr - thumb_func_end sub_80554CC + thumb_func_end SetLastHealLocationWarp thumb_func_start sub_805550C sub_805550C: @ 805550C diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 8ffce84cd..0c45d5108 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,558 +5,6 @@ .text - thumb_func_start ScrCmd_pokemartdecoration -ScrCmd_pokemartdecoration: @ 806C3C0 - push {lr} - bl ScriptReadWord - bl sub_809C1A0 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_pokemartdecoration - - thumb_func_start ScrCmd_pokemartdecoration2 -ScrCmd_pokemartdecoration2: @ 806C3D4 - push {lr} - bl ScriptReadWord - bl sub_809C1BC - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_pokemartdecoration2 - - thumb_func_start ScrCmd_playslotmachine -ScrCmd_playslotmachine: @ 806C3E8 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0806C40C @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl sub_813F804 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_0806C40C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end ScrCmd_playslotmachine - - thumb_func_start ScrCmd_setberrytree -ScrCmd_setberrytree: @ 806C410 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_setberrytree - - thumb_func_start ScrCmd_getpricereduction -ScrCmd_getpricereduction: @ 806C414 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_getpricereduction - - thumb_func_start ScrCmd_choosecontestmon -ScrCmd_choosecontestmon: @ 806C418 - push {lr} - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_choosecontestmon - - thumb_func_start ScrCmd_startcontest -ScrCmd_startcontest: @ 806C424 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_startcontest - - thumb_func_start ScrCmd_showcontestresults -ScrCmd_showcontestresults: @ 806C428 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_showcontestresults - - thumb_func_start ScrCmd_contestlinktransfer -ScrCmd_contestlinktransfer: @ 806C42C - movs r0, 0 - bx lr - thumb_func_end ScrCmd_contestlinktransfer - - thumb_func_start ScrCmd_dofieldeffect -ScrCmd_dofieldeffect: @ 806C430 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0806C454 @ =gUnknown_20370B6 - strh r0, [r1] - lsls r0, 24 - lsrs r0, 24 - bl FieldEffectStart - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806C454: .4byte gUnknown_20370B6 - thumb_func_end ScrCmd_dofieldeffect - - thumb_func_start ScrCmd_setfieldeffectarg -ScrCmd_setfieldeffectarg: @ 806C458 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, _0806C484 @ =gFieldEffectArguments - lsls r4, 2 - adds r4, r1 - lsls r0, 16 - asrs r0, 16 - str r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C484: .4byte gFieldEffectArguments - thumb_func_end ScrCmd_setfieldeffectarg - - thumb_func_start WaitForFieldEffectFinish -WaitForFieldEffectFinish: @ 806C488 - push {lr} - ldr r0, _0806C49C @ =gUnknown_20370B6 - ldrb r0, [r0] - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - beq _0806C4A0 - movs r0, 0 - b _0806C4A2 - .align 2, 0 -_0806C49C: .4byte gUnknown_20370B6 -_0806C4A0: - movs r0, 0x1 -_0806C4A2: - pop {r1} - bx r1 - thumb_func_end WaitForFieldEffectFinish - - thumb_func_start ScrCmd_waitfieldeffect -ScrCmd_waitfieldeffect: @ 806C4A8 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, _0806C4CC @ =gUnknown_20370B6 - strh r0, [r1] - ldr r1, _0806C4D0 @ =WaitForFieldEffectFinish - adds r0, r4, 0 - bl SetupNativeScript - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C4CC: .4byte gUnknown_20370B6 -_0806C4D0: .4byte WaitForFieldEffectFinish - thumb_func_end ScrCmd_waitfieldeffect - - thumb_func_start ScrCmd_setrespawn -ScrCmd_setrespawn: @ 806C4D4 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl sub_80554CC - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_setrespawn - - thumb_func_start ScrCmd_checkplayergender -ScrCmd_checkplayergender: @ 806C4F0 - ldr r1, _0806C500 @ =gSpecialVar_Result - ldr r0, _0806C504 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - strh r0, [r1] - movs r0, 0 - bx lr - .align 2, 0 -_0806C500: .4byte gSpecialVar_Result -_0806C504: .4byte gSaveBlock2Ptr - thumb_func_end ScrCmd_checkplayergender - - thumb_func_start ScrCmd_playmoncry -ScrCmd_playmoncry: @ 806C508 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl PlayCry7 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_playmoncry - - thumb_func_start ScrCmd_waitmoncry -ScrCmd_waitmoncry: @ 806C540 - push {lr} - ldr r1, _0806C550 @ =IsCryFinished - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_0806C550: .4byte IsCryFinished - thumb_func_end ScrCmd_waitmoncry - - thumb_func_start ScrCmd_setmetatile -ScrCmd_setmetatile: @ 806C554 - push {r4-r7,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - adds r1, r6, 0x7 - lsls r1, 16 - lsrs r6, r1, 16 - adds r1, r5, 0x7 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r0, 0 - bne _0806C5B8 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r7, 0 - bl MapGridSetMetatileIdAt - b _0806C5CA -_0806C5B8: - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1, 0 - adds r2, r7, 0 - orrs r2, r0 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt -_0806C5CA: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setmetatile - - thumb_func_start ScrCmd_opendoor -ScrCmd_opendoor: @ 806C5D4 - push {r4,r5,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - adds r5, 0x7 - lsls r5, 16 - lsrs r5, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r4, r0 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805B364 - lsls r0, 16 - lsrs r0, 16 - bl PlaySE - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805B310 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_opendoor - - thumb_func_start ScrCmd_closedoor -ScrCmd_closedoor: @ 806C62C - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - adds r4, 0x7 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_805B2D0 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_closedoor - - thumb_func_start sub_806C670 -sub_806C670: @ 806C670 - push {lr} - bl sub_805B350 - lsls r0, 24 - cmp r0, 0 - beq _0806C680 - movs r0, 0 - b _0806C682 -_0806C680: - movs r0, 0x1 -_0806C682: - pop {r1} - bx r1 - thumb_func_end sub_806C670 - - thumb_func_start ScrCmd_waitdoranim -ScrCmd_waitdoranim: @ 806C688 - push {lr} - ldr r1, _0806C698 @ =sub_806C670 - bl SetupNativeScript - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_0806C698: .4byte sub_806C670 - thumb_func_end ScrCmd_waitdoranim - - thumb_func_start ScrCmd_setdooropen -ScrCmd_setdooropen: @ 806C69C - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - adds r4, 0x7 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_805B268 - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setdooropen - - thumb_func_start ScrCmd_setdoorclosed -ScrCmd_setdoorclosed: @ 806C6E0 - push {r4,r5,lr} - adds r5, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - adds r4, 0x7 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xE0 - lsls r0, 11 - adds r1, r0 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_805B29C - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setdoorclosed - - thumb_func_start ScrCmd_addelevmenuitem -ScrCmd_addelevmenuitem: @ 806C724 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_addelevmenuitem - - thumb_func_start ScrCmd_showelevmenu -ScrCmd_showelevmenu: @ 806C728 - movs r0, 0 - bx lr - thumb_func_end ScrCmd_showelevmenu - - thumb_func_start ScrCmd_checkcoins -ScrCmd_checkcoins: @ 806C72C - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl GetVarPointer - adds r4, r0, 0 - bl GetCoins - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_checkcoins - - thumb_func_start ScrCmd_givecoins -ScrCmd_givecoins: @ 806C74C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl GiveCoins - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806C774 - ldr r1, _0806C770 @ =gSpecialVar_Result - movs r0, 0 - b _0806C778 - .align 2, 0 -_0806C770: .4byte gSpecialVar_Result -_0806C774: - ldr r1, _0806C780 @ =gSpecialVar_Result - movs r0, 0x1 -_0806C778: - strh r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806C780: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_givecoins - - thumb_func_start ScrCmd_takecoins -ScrCmd_takecoins: @ 806C784 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl TakeCoins - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806C7AC - ldr r1, _0806C7A8 @ =gSpecialVar_Result - movs r0, 0 - b _0806C7B0 - .align 2, 0 -_0806C7A8: .4byte gSpecialVar_Result -_0806C7AC: - ldr r1, _0806C7B8 @ =gSpecialVar_Result - movs r0, 0x1 -_0806C7B0: - strh r0, [r1] - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806C7B8: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_takecoins - thumb_func_start ScrCmd_cmdCA ScrCmd_cmdCA: @ 806C7BC push {lr} diff --git a/asm/shop.s b/asm/shop.s index 5e44baa4a..25a2311ce 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -2853,8 +2853,8 @@ _0809C198: .4byte gUnknown_203996C _0809C19C: .4byte gMapHeader thumb_func_end CreatePokemartMenu - thumb_func_start sub_809C1A0 -sub_809C1A0: @ 809C1A0 + thumb_func_start CreateDecorationShop1Menu +CreateDecorationShop1Menu: @ 809C1A0 push {lr} bl sub_809ABD8 movs r0, 0x2 @@ -2865,10 +2865,10 @@ sub_809C1A0: @ 809C1A0 bx r0 .align 2, 0 _0809C1B8: .4byte EnableBothScriptContexts - thumb_func_end sub_809C1A0 + thumb_func_end CreateDecorationShop1Menu - thumb_func_start sub_809C1BC -sub_809C1BC: @ 809C1BC + thumb_func_start CreateDecorationShop2Menu +CreateDecorationShop2Menu: @ 809C1BC push {lr} bl sub_809ABD8 movs r0, 0x3 @@ -2879,7 +2879,7 @@ sub_809C1BC: @ 809C1BC bx r0 .align 2, 0 _0809C1D4: .4byte EnableBothScriptContexts - thumb_func_end sub_809C1BC + thumb_func_end CreateDecorationShop2Menu thumb_func_start sub_809C1D8 sub_809C1D8: @ 809C1D8 diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 2d1be0535..07483bb5e 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_813F804 -sub_813F804: @ 813F804 + thumb_func_start PlaySlotMachine +PlaySlotMachine: @ 813F804 push {r4-r6,lr} adds r6, r1, 0 lsls r0, 16 @@ -39,7 +39,7 @@ _0813F840: bx r0 .align 2, 0 _0813F848: .4byte sub_813F898 - thumb_func_end sub_813F804 + thumb_func_end PlaySlotMachine thumb_func_start sub_813F84C sub_813F84C: @ 813F84C diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 98c74b501..2faa40381 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -175,7 +175,7 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_turnvobject .4byte ScrCmd_opendoor .4byte ScrCmd_closedoor - .4byte ScrCmd_waitdoranim + .4byte ScrCmd_waitdooranim .4byte ScrCmd_setdooropen .4byte ScrCmd_setdoorclosed .4byte ScrCmd_addelevmenuitem diff --git a/include/overworld.h b/include/overworld.h index 53914b627..fbea3a4d9 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -95,5 +95,6 @@ extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; extern bool8 (* gUnknown_3005024)(void); +void SetLastHealLocationWarp(u8 healLocaionId); #endif //GUARD_ROM4_H diff --git a/src/scrcmd.c b/src/scrcmd.c index 3d7200b5b..c6f6ab5d3 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -36,6 +36,10 @@ #include "battle_setup.h" #include "shop.h" #include "script_pokemon_80F8.h" +#include "slot_machine.h" +#include "field_effect.h" +#include "fieldmap.h" +#include "field_door.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -48,7 +52,7 @@ EWRAM_DATA u16 sPauseCounter = 0; EWRAM_DATA u16 sMovingNpcId = 0; EWRAM_DATA u16 sMovingNpcMapBank = 0; EWRAM_DATA u16 sMovingNpcMapId = 0; -EWRAM_DATA u16 gUnknown_20370B6 = 0; +EWRAM_DATA u16 sFieldEffectScriptId = 0; extern u8 gSelectedEventObject; @@ -1960,3 +1964,267 @@ SCRCMD_DEF(pokemart) ScriptContext1_Stop(); return TRUE; } + +SCRCMD_DEF(pokemartdecoration) +{ + const void *ptr = (void *)ScriptReadWord(ctx); + + CreateDecorationShop1Menu(ptr); + ScriptContext1_Stop(); + return TRUE; +} + +SCRCMD_DEF(pokemartdecoration2) +{ + const void *ptr = (void *)ScriptReadWord(ctx); + + CreateDecorationShop2Menu(ptr); + ScriptContext1_Stop(); + return TRUE; +} + +SCRCMD_DEF(playslotmachine) +{ + u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx)); + + PlaySlotMachine(slotMachineIndex, c2_exit_to_overworld_1_continue_scripts_restart_music); + ScriptContext1_Stop(); + return TRUE; +} + +SCRCMD_DEF(setberrytree) +{ +// u8 treeId = ScriptReadByte(ctx); +// u8 berry = ScriptReadByte(ctx); +// u8 growthStage = ScriptReadByte(ctx); +// +// if (berry == 0) +// PlantBerryTree(treeId, 0, growthStage, FALSE); +// else +// PlantBerryTree(treeId, berry, growthStage, FALSE); + return FALSE; +} + +SCRCMD_DEF(getpricereduction) +{ +// u16 value = VarGet(ScriptReadHalfword(ctx)); +// +// gSpecialVar_Result = GetPriceReduction(value); + return FALSE; +} + +SCRCMD_DEF(choosecontestmon) +{ +// sub_81B9404(); + ScriptContext1_Stop(); + return TRUE; +} + + +SCRCMD_DEF(startcontest) +{ +// sub_80F840C(); +// ScriptContext1_Stop(); +// return TRUE; + return FALSE; +} + +SCRCMD_DEF(showcontestresults) +{ +// sub_80F8484(); +// ScriptContext1_Stop(); +// return TRUE; + return FALSE; +} + +SCRCMD_DEF(contestlinktransfer) +{ +// sub_80F84C4(gSpecialVar_ContestCategory); +// ScriptContext1_Stop(); +// return TRUE; + return FALSE; +} + +SCRCMD_DEF(dofieldeffect) +{ + u16 effectId = VarGet(ScriptReadHalfword(ctx)); + + sFieldEffectScriptId = effectId; + FieldEffectStart(sFieldEffectScriptId); + return FALSE; +} + +SCRCMD_DEF(setfieldeffectarg) +{ + u8 argNum = ScriptReadByte(ctx); + + gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx)); + return FALSE; +} + +static bool8 WaitForFieldEffectFinish(void) +{ + if (!FieldEffectActiveListContains(sFieldEffectScriptId)) + return TRUE; + else + return FALSE; +} + +SCRCMD_DEF(waitfieldeffect) +{ + sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx)); + SetupNativeScript(ctx, WaitForFieldEffectFinish); + return TRUE; +} + +SCRCMD_DEF(setrespawn) +{ + u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); + + SetLastHealLocationWarp(healLocationId); + return FALSE; +} + +SCRCMD_DEF(checkplayergender) +{ + gSpecialVar_Result = gSaveBlock2Ptr->playerGender; + return FALSE; +} + +SCRCMD_DEF(playmoncry) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + u16 mode = VarGet(ScriptReadHalfword(ctx)); + + PlayCry7(species, mode); + return FALSE; +} + +SCRCMD_DEF(waitmoncry) +{ + SetupNativeScript(ctx, IsCryFinished); + return TRUE; +} + +SCRCMD_DEF(setmetatile) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + u16 tileId = VarGet(ScriptReadHalfword(ctx)); + u16 v8 = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + if (!v8) + MapGridSetMetatileIdAt(x, y, tileId); + else + MapGridSetMetatileIdAt(x, y, tileId | 0xC00); + return FALSE; +} + +SCRCMD_DEF(opendoor) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + PlaySE(GetDoorSoundEffect(x, y)); + FieldAnimateDoorOpen(x, y); + return FALSE; +} + +SCRCMD_DEF(closedoor) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + FieldAnimateDoorClose(x, y); + return FALSE; +} + +static bool8 IsDoorAnimationStopped(void) +{ + if (!FieldIsDoorAnimationRunning()) + return TRUE; + else + return FALSE; +} + +SCRCMD_DEF(waitdooranim) +{ + SetupNativeScript(ctx, IsDoorAnimationStopped); + return TRUE; +} + +SCRCMD_DEF(setdooropen) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + FieldSetDoorOpened(x, y); + return FALSE; +} + +SCRCMD_DEF(setdoorclosed) +{ + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + x += 7; + y += 7; + FieldSetDoorClosed(x, y); + return FALSE; +} + +SCRCMD_DEF(addelevmenuitem) +{ +// u8 v3 = ScriptReadByte(ctx); +// u16 v5 = VarGet(ScriptReadHalfword(ctx)); +// u16 v7 = VarGet(ScriptReadHalfword(ctx)); +// u16 v9 = VarGet(ScriptReadHalfword(ctx)); + + //ScriptAddElevatorMenuItem(v3, v5, v7, v9); + return FALSE; +} + +SCRCMD_DEF(showelevmenu) +{ + /*ScriptShowElevatorMenu(); + ScriptContext1_Stop(); + return TRUE;*/ + return FALSE; +} + +SCRCMD_DEF(checkcoins) +{ + u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); + *ptr = GetCoins(); + return FALSE; +} + +SCRCMD_DEF(givecoins) +{ + u16 coins = VarGet(ScriptReadHalfword(ctx)); + + if (GiveCoins(coins) == TRUE) + gSpecialVar_Result = 0; + else + gSpecialVar_Result = 1; + return FALSE; +} + +SCRCMD_DEF(takecoins) +{ + u16 coins = VarGet(ScriptReadHalfword(ctx)); + + if (TakeCoins(coins) == TRUE) + gSpecialVar_Result = 0; + else + gSpecialVar_Result = 1; + return FALSE; +} From 1581631e6286e0ec8178630433e8c15cd7076ead Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 6 Jan 2019 16:17:40 -0500 Subject: [PATCH 015/318] Finish decompiling scrcmd --- asm/scrcmd.s | 117 ----------------------------------------------- include/script.h | 2 + ld_script.txt | 1 - src/scrcmd.c | 40 ++++++++++++++++ 4 files changed, 42 insertions(+), 118 deletions(-) delete mode 100644 asm/scrcmd.s diff --git a/asm/scrcmd.s b/asm/scrcmd.s deleted file mode 100644 index 0c45d5108..000000000 --- a/asm/scrcmd.s +++ /dev/null @@ -1,117 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ScrCmd_cmdCA -ScrCmd_cmdCA: @ 806C7BC - push {lr} - bl sub_8069A20 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_cmdCA - - thumb_func_start ScrCmd_cmdCB -ScrCmd_cmdCB: @ 806C7C8 - push {lr} - bl sub_8069A2C - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_cmdCB - - thumb_func_start ScrCmd_setmonobedient -ScrCmd_setmonobedient: @ 806C7D4 - push {lr} - sub sp, 0x4 - movs r2, 0x1 - mov r1, sp - strb r2, [r1] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806C808 @ =gPlayerParty - adds r0, r1 - movs r1, 0x50 - mov r2, sp - bl SetMonData - movs r0, 0 - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 -_0806C808: .4byte gPlayerParty - thumb_func_end ScrCmd_setmonobedient - - thumb_func_start ScrCmd_checkmonobedience -ScrCmd_checkmonobedience: @ 806C80C - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0806C83C @ =gSpecialVar_Result - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806C840 @ =gPlayerParty - adds r0, r1 - movs r1, 0x50 - movs r2, 0 - bl GetMonData - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C83C: .4byte gSpecialVar_Result -_0806C840: .4byte gPlayerParty - thumb_func_end ScrCmd_checkmonobedience - - thumb_func_start ScrCmd_setmonmetlocation -ScrCmd_setmonmetlocation: @ 806C844 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, [r4, 0x8] - ldrb r2, [r0] - mov r1, sp - strb r2, [r1] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r3, 0x5 - bhi _0806C87A - movs r0, 0x64 - muls r0, r3 - ldr r1, _0806C884 @ =gPlayerParty - adds r0, r1 - movs r1, 0x23 - mov r2, sp - bl SetMonData -_0806C87A: - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C884: .4byte gPlayerParty - thumb_func_end ScrCmd_setmonmetlocation - - .align 2, 0 @ Don't pad with nop. diff --git a/include/script.h b/include/script.h index 88e729526..8ffbe1563 100644 --- a/include/script.h +++ b/include/script.h @@ -70,6 +70,8 @@ void sub_80699F8(void); void sub_8069964(void); void sub_80699A4(void); void sub_8069970(void); +void sub_8069A20(void); +void sub_8069A2C(void); extern const u8 *gRAMScriptPtr; diff --git a/ld_script.txt b/ld_script.txt index cdec8f7c6..5bfe7f28c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -104,7 +104,6 @@ SECTIONS { asm/text_window_graphics.o(.text); src/script.o(.text); src/scrcmd.o(.text); - asm/scrcmd.o(.text); asm/field_control_avatar.o(.text); asm/event_data.o(.text); asm/coord_event_weather.o(.text); diff --git a/src/scrcmd.c b/src/scrcmd.c index c6f6ab5d3..911ad2a42 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -2228,3 +2228,43 @@ SCRCMD_DEF(takecoins) gSpecialVar_Result = 1; return FALSE; } + +SCRCMD_DEF(cmdCA) +{ + sub_8069A20(); + return FALSE; +} + +SCRCMD_DEF(cmdCB) +{ + sub_8069A2C(); + return FALSE; +} + +// This command will force the Pokémon to be obedient, you don't get to make it disobedient. +SCRCMD_DEF(setmonobedient) +{ + bool8 obedient = TRUE; + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + SetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, &obedient); + return FALSE; +} + +SCRCMD_DEF(checkmonobedience) +{ + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL); + return FALSE; +} + +SCRCMD_DEF(setmonmetlocation) +{ + u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + u8 location = ScriptReadByte(ctx); + + if (partyIndex < PARTY_SIZE) + SetMonData(&gPlayerParty[partyIndex], MON_DATA_MET_LOCATION, &location); + return FALSE; +} From 08ffdce1b642dfc00080f99578049b8c3ddfd7e9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Jan 2019 20:13:06 -0500 Subject: [PATCH 016/318] Nuke SCRCMD_DEF macro --- include/scrcmd.h | 6 + src/scrcmd.c | 471 +++++++++++++++++++++++------------------------ 2 files changed, 240 insertions(+), 237 deletions(-) create mode 100644 include/scrcmd.h diff --git a/include/scrcmd.h b/include/scrcmd.h new file mode 100644 index 000000000..0ef357ece --- /dev/null +++ b/include/scrcmd.h @@ -0,0 +1,6 @@ +#ifndef GUARD_SCRCMD_H +#define GUARD_SCRCMD_H + +extern struct ScriptContext * gUnknown_3005070; + +#endif //GUARD_SCRCMD_H diff --git a/src/scrcmd.c b/src/scrcmd.c index 911ad2a42..12b35daa4 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -40,12 +40,16 @@ #include "field_effect.h" #include "fieldmap.h" #include "field_door.h" +#include "scrcmd.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); extern const u8 *const gStdScripts[]; extern const u8 *const gStdScriptsEnd[]; +static bool8 sub_806B93C(struct ScriptContext * ctx); +static u8 sub_806B96C(struct ScriptContext * ctx); + EWRAM_DATA ptrdiff_t gVScriptOffset = 0; EWRAM_DATA u8 gUnknown_20370AC = 0; EWRAM_DATA u16 sPauseCounter = 0; @@ -54,105 +58,103 @@ EWRAM_DATA u16 sMovingNpcMapBank = 0; EWRAM_DATA u16 sMovingNpcMapId = 0; EWRAM_DATA u16 sFieldEffectScriptId = 0; +IWRAM_DATA struct ScriptContext * gUnknown_3005070; + extern u8 gSelectedEventObject; // This is defined in here so the optimizer can't see its value when compiling // script.c. void * const gNullScriptPtr = NULL; -const u8 sScriptConditionTable[6][3] = - { +static const u8 sScriptConditionTable[6][3] = +{ // < = > - 1, 0, 0, // < - 0, 1, 0, // = - 0, 0, 1, // > - 1, 1, 0, // <= - 0, 1, 1, // >= - 1, 0, 1, // != - }; + 1, 0, 0, // < + 0, 1, 0, // = + 0, 0, 1, // > + 1, 1, 0, // <= + 0, 1, 1, // >= + 1, 0, 1, // != +}; - - -#define SCRCMD_DEF(name) bool8 ScrCmd_##name(struct ScriptContext *ctx) - -SCRCMD_DEF(nop) +bool8 ScrCmd_nop(struct ScriptContext *ctx) { return FALSE; } -SCRCMD_DEF(nop1) +bool8 ScrCmd_nop1(struct ScriptContext *ctx) { return FALSE; } -SCRCMD_DEF(end) +bool8 ScrCmd_end(struct ScriptContext *ctx) { StopScript(ctx); return FALSE; } -SCRCMD_DEF(gotonative) +bool8 ScrCmd_gotonative(struct ScriptContext *ctx) { bool8 (*func)(void) = (bool8 (*)(void))ScriptReadWord(ctx); SetupNativeScript(ctx, func); return TRUE; } -SCRCMD_DEF(special) +bool8 ScrCmd_special(struct ScriptContext *ctx) { u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx); if (specialPtr < gSpecialsEnd) (*specialPtr)(); else - AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 241); + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 241); return FALSE; } -SCRCMD_DEF(specialvar) +bool8 ScrCmd_specialvar(struct ScriptContext *ctx) { u16 * varPtr = GetVarPointer(ScriptReadHalfword(ctx)); u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx); if (specialPtr < gSpecialsEnd) *varPtr = (*specialPtr)(); else - AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 263); + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 263); return FALSE; } -SCRCMD_DEF(callnative) +bool8 ScrCmd_callnative(struct ScriptContext *ctx) { void (*func )(void) = ((void (*)(void))ScriptReadWord(ctx)); func(); return FALSE; } -SCRCMD_DEF(waitstate) +bool8 ScrCmd_waitstate(struct ScriptContext *ctx) { ScriptContext1_Stop(); return TRUE; } -SCRCMD_DEF(goto) +bool8 ScrCmd_goto(struct ScriptContext *ctx) { const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); ScriptJump(ctx, scrptr); return FALSE; } -SCRCMD_DEF(return) +bool8 ScrCmd_return(struct ScriptContext *ctx) { ScriptReturn(ctx); return FALSE; } -SCRCMD_DEF(call) +bool8 ScrCmd_call(struct ScriptContext *ctx) { const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); ScriptCall(ctx, scrptr); return FALSE; } -SCRCMD_DEF(goto_if) +bool8 ScrCmd_goto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); @@ -161,7 +163,7 @@ SCRCMD_DEF(goto_if) return FALSE; } -SCRCMD_DEF(call_if) +bool8 ScrCmd_call_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); @@ -170,7 +172,7 @@ SCRCMD_DEF(call_if) return FALSE; } -SCRCMD_DEF(setvaddress) +bool8 ScrCmd_setvaddress(struct ScriptContext *ctx) { u32 addr1 = (u32)ctx->scriptPtr - 1; u32 addr2 = ScriptReadWord(ctx); @@ -179,21 +181,21 @@ SCRCMD_DEF(setvaddress) return FALSE; } -SCRCMD_DEF(vgoto) +bool8 ScrCmd_vgoto(struct ScriptContext *ctx) { const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); ScriptJump(ctx, scrptr - gVScriptOffset); return FALSE; } -SCRCMD_DEF(vcall) +bool8 ScrCmd_vcall(struct ScriptContext *ctx) { const u8 * scrptr = (const u8 *)ScriptReadWord(ctx); ScriptCall(ctx, scrptr - gVScriptOffset); return FALSE; } -SCRCMD_DEF(vgoto_if) +bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset; @@ -202,7 +204,7 @@ SCRCMD_DEF(vgoto_if) return FALSE; } -SCRCMD_DEF(vcall_if) +bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset; @@ -211,7 +213,7 @@ SCRCMD_DEF(vcall_if) return FALSE; } -SCRCMD_DEF(gotostd) +bool8 ScrCmd_gotostd(struct ScriptContext *ctx) { u8 stdIdx = ScriptReadByte(ctx); const u8 *const * script = gStdScripts + stdIdx; @@ -220,7 +222,7 @@ SCRCMD_DEF(gotostd) return FALSE; } -SCRCMD_DEF(callstd) +bool8 ScrCmd_callstd(struct ScriptContext *ctx) { u8 stdIdx = ScriptReadByte(ctx); const u8 *const * script = gStdScripts + stdIdx; @@ -229,7 +231,7 @@ SCRCMD_DEF(callstd) return FALSE; } -SCRCMD_DEF(gotostd_if) +bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 stdIdx = ScriptReadByte(ctx); @@ -242,7 +244,7 @@ SCRCMD_DEF(gotostd_if) return FALSE; } -SCRCMD_DEF(callstd_if) +bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 stdIdx = ScriptReadByte(ctx); @@ -255,26 +257,26 @@ SCRCMD_DEF(callstd_if) return FALSE; } -SCRCMD_DEF(gotoram) +bool8 ScrCmd_gotoram(struct ScriptContext *ctx) { ScriptJump(ctx, gRAMScriptPtr); return FALSE; } -SCRCMD_DEF(killscript) +bool8 ScrCmd_killscript(struct ScriptContext *ctx) { ClearRamScript(); StopScript(ctx); return TRUE; } -SCRCMD_DEF(setmysteryeventstatus) +bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx) { SetMysteryEventScriptStatus(ScriptReadByte(ctx)); return FALSE; } -SCRCMD_DEF(cmdCF) +bool8 ScrCmd_cmdCF(struct ScriptContext *ctx) { const u8 * script = sub_8069E48(); if (script != NULL) @@ -285,42 +287,42 @@ SCRCMD_DEF(cmdCF) return FALSE; } -SCRCMD_DEF(loadword) +bool8 ScrCmd_loadword(struct ScriptContext *ctx) { u8 which = ScriptReadByte(ctx); ctx->data[which] = ScriptReadWord(ctx); return FALSE; } -SCRCMD_DEF(loadbytefromaddr) +bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx) { u8 which = ScriptReadByte(ctx); ctx->data[which] = *(const u8 *)ScriptReadWord(ctx); return FALSE; } -SCRCMD_DEF(writebytetoaddr) +bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx) { u8 value = ScriptReadByte(ctx); *(u8 *)ScriptReadWord(ctx) = value; return FALSE; } -SCRCMD_DEF(loadbyte) +bool8 ScrCmd_loadbyte(struct ScriptContext *ctx) { u8 which = ScriptReadByte(ctx); ctx->data[which] = ScriptReadByte(ctx); return FALSE; } -SCRCMD_DEF(setptrbyte) +bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx) { u8 which = ScriptReadByte(ctx); *(u8 *)ScriptReadWord(ctx) = ctx->data[which]; return FALSE; } -SCRCMD_DEF(copylocal) +bool8 ScrCmd_copylocal(struct ScriptContext *ctx) { u8 whichDst = ScriptReadByte(ctx); u8 whichSrc = ScriptReadByte(ctx); @@ -328,21 +330,21 @@ SCRCMD_DEF(copylocal) return FALSE; } -SCRCMD_DEF(copybyte) +bool8 ScrCmd_copybyte(struct ScriptContext *ctx) { u8 * dest = (u8 *)ScriptReadWord(ctx); *dest = *(const u8 *)ScriptReadWord(ctx); return FALSE; } -SCRCMD_DEF(setvar) +bool8 ScrCmd_setvar(struct ScriptContext *ctx) { u16 * varPtr = GetVarPointer(ScriptReadHalfword(ctx)); *varPtr = ScriptReadHalfword(ctx); return FALSE; } -SCRCMD_DEF(copyvar) +bool8 ScrCmd_copyvar(struct ScriptContext *ctx) { u16 * destPtr = GetVarPointer(ScriptReadHalfword(ctx)); u16 * srcPtr = GetVarPointer(ScriptReadHalfword(ctx)); @@ -350,7 +352,7 @@ SCRCMD_DEF(copyvar) return FALSE; } -SCRCMD_DEF(setorcopyvar) +bool8 ScrCmd_setorcopyvar(struct ScriptContext *ctx) { u16 * destPtr = GetVarPointer(ScriptReadHalfword(ctx)); *destPtr = VarGet(ScriptReadHalfword(ctx)); @@ -368,7 +370,7 @@ u8 compare_012(u16 left, u16 right) } // comparelocaltolocal -SCRCMD_DEF(compare_local_to_local) +bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) { const u8 value1 = ctx->data[ScriptReadByte(ctx)]; const u8 value2 = ctx->data[ScriptReadByte(ctx)]; @@ -378,7 +380,7 @@ SCRCMD_DEF(compare_local_to_local) } // comparelocaltoimm -SCRCMD_DEF(compare_local_to_value) +bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) { const u8 value1 = ctx->data[ScriptReadByte(ctx)]; const u8 value2 = ScriptReadByte(ctx); @@ -387,7 +389,7 @@ SCRCMD_DEF(compare_local_to_value) return FALSE; } -SCRCMD_DEF(compare_local_to_addr) +bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) { const u8 value1 = ctx->data[ScriptReadByte(ctx)]; const u8 value2 = *(const u8 *)ScriptReadWord(ctx); @@ -396,7 +398,7 @@ SCRCMD_DEF(compare_local_to_addr) return FALSE; } -SCRCMD_DEF(compare_addr_to_local) +bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) { const u8 value1 = *(const u8 *)ScriptReadWord(ctx); const u8 value2 = ctx->data[ScriptReadByte(ctx)]; @@ -405,7 +407,7 @@ SCRCMD_DEF(compare_addr_to_local) return FALSE; } -SCRCMD_DEF(compare_addr_to_value) +bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) { const u8 value1 = *(const u8 *)ScriptReadWord(ctx); const u8 value2 = ScriptReadByte(ctx); @@ -414,7 +416,7 @@ SCRCMD_DEF(compare_addr_to_value) return FALSE; } -SCRCMD_DEF(compare_addr_to_addr) +bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) { const u8 value1 = *(const u8 *)ScriptReadWord(ctx); const u8 value2 = *(const u8 *)ScriptReadWord(ctx); @@ -423,7 +425,7 @@ SCRCMD_DEF(compare_addr_to_addr) return FALSE; } -SCRCMD_DEF(compare_var_to_value) +bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) { const u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); const u16 value2 = ScriptReadHalfword(ctx); @@ -432,7 +434,7 @@ SCRCMD_DEF(compare_var_to_value) return FALSE; } -SCRCMD_DEF(compare_var_to_var) +bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) { const u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); const u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); @@ -441,21 +443,21 @@ SCRCMD_DEF(compare_var_to_var) return FALSE; } -SCRCMD_DEF(addvar) +bool8 ScrCmd_addvar(struct ScriptContext *ctx) { u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); *ptr += ScriptReadHalfword(ctx); return FALSE; } -SCRCMD_DEF(subvar) +bool8 ScrCmd_subvar(struct ScriptContext *ctx) { u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); *ptr -= VarGet(ScriptReadHalfword(ctx)); return FALSE; } -SCRCMD_DEF(random) +bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); @@ -463,7 +465,7 @@ SCRCMD_DEF(random) return FALSE; } -SCRCMD_DEF(giveitem) +bool8 ScrCmd_giveitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -473,7 +475,7 @@ SCRCMD_DEF(giveitem) return FALSE; } -SCRCMD_DEF(takeitem) +bool8 ScrCmd_takeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -482,7 +484,7 @@ SCRCMD_DEF(takeitem) return FALSE; } -SCRCMD_DEF(checkitemspace) +bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -491,7 +493,7 @@ SCRCMD_DEF(checkitemspace) return FALSE; } -SCRCMD_DEF(checkitem) +bool8 ScrCmd_checkitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -500,7 +502,7 @@ SCRCMD_DEF(checkitem) return FALSE; } -SCRCMD_DEF(checkitemtype) +bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -508,7 +510,7 @@ SCRCMD_DEF(checkitemtype) return FALSE; } -SCRCMD_DEF(givepcitem) +bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -517,7 +519,7 @@ SCRCMD_DEF(givepcitem) return FALSE; } -SCRCMD_DEF(checkpcitem) +bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -526,7 +528,7 @@ SCRCMD_DEF(checkpcitem) return FALSE; } -SCRCMD_DEF(givedecoration) +bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -534,7 +536,7 @@ SCRCMD_DEF(givedecoration) return FALSE; } -SCRCMD_DEF(takedecoration) +bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -542,7 +544,7 @@ SCRCMD_DEF(takedecoration) return FALSE; } -SCRCMD_DEF(checkdecorspace) +bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -550,7 +552,7 @@ SCRCMD_DEF(checkdecorspace) return FALSE; } -SCRCMD_DEF(checkdecor) +bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -558,31 +560,31 @@ SCRCMD_DEF(checkdecor) return FALSE; } -SCRCMD_DEF(setflag) +bool8 ScrCmd_setflag(struct ScriptContext *ctx) { FlagSet(ScriptReadHalfword(ctx)); return FALSE; } -SCRCMD_DEF(clearflag) +bool8 ScrCmd_clearflag(struct ScriptContext *ctx) { FlagClear(ScriptReadHalfword(ctx)); return FALSE; } -SCRCMD_DEF(checkflag) +bool8 ScrCmd_checkflag(struct ScriptContext *ctx) { ctx->comparisonResult = FlagGet(ScriptReadHalfword(ctx)); return FALSE; } -SCRCMD_DEF(incrementgamestat) +bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) { IncrementGameStat(ScriptReadByte(ctx)); return FALSE; } -SCRCMD_DEF(comparestattoword) +bool8 ScrCmd_comparestattoword(struct ScriptContext *ctx) { u8 statIdx = ScriptReadByte(ctx); u32 value = ScriptReadWord(ctx); @@ -597,7 +599,7 @@ SCRCMD_DEF(comparestattoword) return FALSE; } -SCRCMD_DEF(cmdD0) +bool8 ScrCmd_cmdD0(struct ScriptContext *ctx) { u16 value = ScriptReadHalfword(ctx); sub_8115748(value); @@ -605,14 +607,14 @@ SCRCMD_DEF(cmdD0) return FALSE; } -SCRCMD_DEF(animateflash) +bool8 ScrCmd_animateflash(struct ScriptContext *ctx) { sub_807F028(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } -SCRCMD_DEF(setflashradius) +bool8 ScrCmd_setflashradius(struct ScriptContext *ctx) { u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); @@ -628,14 +630,14 @@ static bool8 IsPaletteNotActive(void) return FALSE; } -SCRCMD_DEF(fadescreen) +bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) { fade_screen(ScriptReadByte(ctx), 0); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } -SCRCMD_DEF(fadescreenspeed) +bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) { u8 mode = ScriptReadByte(ctx); u8 speed = ScriptReadByte(ctx); @@ -655,14 +657,14 @@ static bool8 RunPauseTimer(void) return FALSE; } -SCRCMD_DEF(delay) +bool8 ScrCmd_delay(struct ScriptContext *ctx) { sPauseCounter = ScriptReadHalfword(ctx); SetupNativeScript(ctx, RunPauseTimer); return TRUE; } -SCRCMD_DEF(initclock) +bool8 ScrCmd_initclock(struct ScriptContext *ctx) { // u8 hour = VarGet(ScriptReadHalfword(ctx)); // u8 minute = VarGet(ScriptReadHalfword(ctx)); @@ -671,13 +673,13 @@ SCRCMD_DEF(initclock) return FALSE; } -SCRCMD_DEF(dodailyevents) +bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx) { // DoTimeBasedEvents(); return FALSE; } -SCRCMD_DEF(gettime) +bool8 ScrCmd_gettime(struct ScriptContext *ctx) { // RtcCalcLocalTime(); // gSpecialVar_0x8000 = gLocalTime.hours; @@ -689,7 +691,7 @@ SCRCMD_DEF(gettime) return FALSE; } -SCRCMD_DEF(setweather) +bool8 ScrCmd_setweather(struct ScriptContext *ctx) { u16 weather = VarGet(ScriptReadHalfword(ctx)); @@ -697,25 +699,25 @@ SCRCMD_DEF(setweather) return FALSE; } -SCRCMD_DEF(resetweather) +bool8 ScrCmd_resetweather(struct ScriptContext *ctx) { SetSav1WeatherFromCurrMapHeader(); return FALSE; } -SCRCMD_DEF(doweather) +bool8 ScrCmd_doweather(struct ScriptContext *ctx) { DoCurrentWeather(); return FALSE; } -SCRCMD_DEF(setstepcallback) +bool8 ScrCmd_setstepcallback(struct ScriptContext *ctx) { ActivatePerStepCallback(ScriptReadByte(ctx)); return FALSE; } -SCRCMD_DEF(setmaplayoutindex) +bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); @@ -723,7 +725,7 @@ SCRCMD_DEF(setmaplayoutindex) return FALSE; } -SCRCMD_DEF(warp) +bool8 ScrCmd_warp(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -737,7 +739,7 @@ SCRCMD_DEF(warp) return TRUE; } -SCRCMD_DEF(warpsilent) +bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -751,7 +753,7 @@ SCRCMD_DEF(warpsilent) return TRUE; } -SCRCMD_DEF(warpdoor) +bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -765,7 +767,7 @@ SCRCMD_DEF(warpdoor) return TRUE; } -SCRCMD_DEF(warphole) +bool8 ScrCmd_warphole(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -782,7 +784,7 @@ SCRCMD_DEF(warphole) return TRUE; } -SCRCMD_DEF(warpteleport) +bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -796,7 +798,7 @@ SCRCMD_DEF(warpteleport) return TRUE; } -SCRCMD_DEF(warpD1) +bool8 ScrCmd_warpD1(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -811,7 +813,7 @@ SCRCMD_DEF(warpD1) return TRUE; } -SCRCMD_DEF(setwarp) +bool8 ScrCmd_setwarp(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -823,7 +825,7 @@ SCRCMD_DEF(setwarp) return FALSE; } -SCRCMD_DEF(setdynamicwarp) +bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -835,7 +837,7 @@ SCRCMD_DEF(setdynamicwarp) return FALSE; } -SCRCMD_DEF(setdivewarp) +bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -847,7 +849,7 @@ SCRCMD_DEF(setdivewarp) return FALSE; } -SCRCMD_DEF(setholewarp) +bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -859,7 +861,7 @@ SCRCMD_DEF(setholewarp) return FALSE; } -SCRCMD_DEF(setescapewarp) +bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); @@ -871,7 +873,7 @@ SCRCMD_DEF(setescapewarp) return FALSE; } -SCRCMD_DEF(getplayerxy) +bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) { u16 *pX = GetVarPointer(ScriptReadHalfword(ctx)); u16 *pY = GetVarPointer(ScriptReadHalfword(ctx)); @@ -881,13 +883,13 @@ SCRCMD_DEF(getplayerxy) return FALSE; } -SCRCMD_DEF(getpartysize) +bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { gSpecialVar_Result = CalculatePlayerPartyCount(); return FALSE; } -SCRCMD_DEF(playse) +bool8 ScrCmd_playse(struct ScriptContext *ctx) { PlaySE(ScriptReadHalfword(ctx)); return FALSE; @@ -901,13 +903,13 @@ static bool8 WaitForSoundEffectFinish(void) return FALSE; } -SCRCMD_DEF(waitse) +bool8 ScrCmd_waitse(struct ScriptContext *ctx) { SetupNativeScript(ctx, WaitForSoundEffectFinish); return TRUE; } -SCRCMD_DEF(playfanfare) +bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) { PlayFanfare(ScriptReadHalfword(ctx)); return FALSE; @@ -918,13 +920,13 @@ static bool8 WaitForFanfareFinish(void) return IsFanfareTaskInactive(); } -SCRCMD_DEF(waitfanfare) +bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx) { SetupNativeScript(ctx, WaitForFanfareFinish); return TRUE; } -SCRCMD_DEF(playbgm) +bool8 ScrCmd_playbgm(struct ScriptContext *ctx) { u16 songId = ScriptReadHalfword(ctx); bool8 val = ScriptReadByte(ctx); @@ -937,13 +939,13 @@ SCRCMD_DEF(playbgm) return FALSE; } -SCRCMD_DEF(savebgm) +bool8 ScrCmd_savebgm(struct ScriptContext *ctx) { Overworld_SetSavedMusic(ScriptReadHalfword(ctx)); return FALSE; } -SCRCMD_DEF(fadedefaultbgm) +bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx) { if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) return FALSE; @@ -951,7 +953,7 @@ SCRCMD_DEF(fadedefaultbgm) return FALSE; } -SCRCMD_DEF(fadenewbgm) +bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx) { u16 music = ScriptReadHalfword(ctx); if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) @@ -960,7 +962,7 @@ SCRCMD_DEF(fadenewbgm) return FALSE; } -SCRCMD_DEF(fadeoutbgm) +bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx) { u8 speed = ScriptReadByte(ctx); @@ -974,7 +976,7 @@ SCRCMD_DEF(fadeoutbgm) return TRUE; } -SCRCMD_DEF(fadeinbgm) +bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) { u8 speed = ScriptReadByte(ctx); @@ -987,7 +989,7 @@ SCRCMD_DEF(fadeinbgm) return FALSE; } -SCRCMD_DEF(applymovement) +bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); const void *movementScript = (const void *)ScriptReadWord(ctx); @@ -997,7 +999,7 @@ SCRCMD_DEF(applymovement) return FALSE; } -SCRCMD_DEF(applymovement_at) +bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); const void *movementScript = (const void *)ScriptReadWord(ctx); @@ -1014,7 +1016,7 @@ static bool8 WaitForMovementFinish(void) return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank); } -SCRCMD_DEF(waitmovement) +bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); @@ -1026,7 +1028,7 @@ SCRCMD_DEF(waitmovement) return TRUE; } -SCRCMD_DEF(waitmovement_at) +bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapBank; @@ -1042,7 +1044,7 @@ SCRCMD_DEF(waitmovement_at) return TRUE; } -SCRCMD_DEF(removeobject) +bool8 ScrCmd_removeobject(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); @@ -1050,7 +1052,7 @@ SCRCMD_DEF(removeobject) return FALSE; } -SCRCMD_DEF(removeobject_at) +bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1060,7 +1062,7 @@ SCRCMD_DEF(removeobject_at) return FALSE; } -SCRCMD_DEF(addobject) +bool8 ScrCmd_addobject(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); @@ -1068,7 +1070,7 @@ SCRCMD_DEF(addobject) return FALSE; } -SCRCMD_DEF(addobject_at) +bool8 ScrCmd_addobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1078,7 +1080,7 @@ SCRCMD_DEF(addobject_at) return FALSE; } -SCRCMD_DEF(setobjectxy) +bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u16 x = VarGet(ScriptReadHalfword(ctx)); @@ -1088,7 +1090,7 @@ SCRCMD_DEF(setobjectxy) return FALSE; } -SCRCMD_DEF(setobjectxyperm) +bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u16 x = VarGet(ScriptReadHalfword(ctx)); @@ -1098,7 +1100,7 @@ SCRCMD_DEF(setobjectxyperm) return FALSE; } -SCRCMD_DEF(moveobjectoffscreen) +bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); @@ -1106,7 +1108,7 @@ SCRCMD_DEF(moveobjectoffscreen) return FALSE; } -SCRCMD_DEF(showobject_at) +bool8 ScrCmd_showobject_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1116,7 +1118,7 @@ SCRCMD_DEF(showobject_at) return FALSE; } -SCRCMD_DEF(hideobject_at) +bool8 ScrCmd_hideobject_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1126,7 +1128,7 @@ SCRCMD_DEF(hideobject_at) return FALSE; } -SCRCMD_DEF(setobjectpriority) +bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1137,7 +1139,7 @@ SCRCMD_DEF(setobjectpriority) return FALSE; } -SCRCMD_DEF(resetobjectpriority) +bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1147,7 +1149,7 @@ SCRCMD_DEF(resetobjectpriority) return FALSE; } -SCRCMD_DEF(faceplayer) +bool8 ScrCmd_faceplayer(struct ScriptContext *ctx) { if (gMapObjects[gSelectedEventObject].active) { @@ -1157,7 +1159,7 @@ SCRCMD_DEF(faceplayer) return FALSE; } -SCRCMD_DEF(turnobject) +bool8 ScrCmd_turnobject(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 direction = ScriptReadByte(ctx); @@ -1166,7 +1168,7 @@ SCRCMD_DEF(turnobject) return FALSE; } -SCRCMD_DEF(setobjectmovementtype) +bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 movementType = ScriptReadByte(ctx); @@ -1175,7 +1177,7 @@ SCRCMD_DEF(setobjectmovementtype) return FALSE; } -SCRCMD_DEF(createvobject) +bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { u8 graphicsId = ScriptReadByte(ctx); u8 v2 = ScriptReadByte(ctx); @@ -1188,7 +1190,7 @@ SCRCMD_DEF(createvobject) return FALSE; } -SCRCMD_DEF(turnvobject) +bool8 ScrCmd_turnvobject(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); u8 direction = ScriptReadByte(ctx); @@ -1197,7 +1199,7 @@ SCRCMD_DEF(turnvobject) return FALSE; } -SCRCMD_DEF(lockall) +bool8 ScrCmd_lockall(struct ScriptContext *ctx) { if (is_c1_link_related_active()) { @@ -1211,7 +1213,7 @@ SCRCMD_DEF(lockall) } } -SCRCMD_DEF(lock) +bool8 ScrCmd_lock(struct ScriptContext *ctx) { if (is_c1_link_related_active()) { @@ -1233,7 +1235,7 @@ SCRCMD_DEF(lock) } } -SCRCMD_DEF(releaseall) +bool8 ScrCmd_releaseall(struct ScriptContext *ctx) { u8 playerObjectId; @@ -1245,7 +1247,7 @@ SCRCMD_DEF(releaseall) return FALSE; } -SCRCMD_DEF(release) +bool8 ScrCmd_release(struct ScriptContext *ctx) { u8 playerObjectId; @@ -1259,14 +1261,14 @@ SCRCMD_DEF(release) return FALSE; } -SCRCMD_DEF(cmdC7) +bool8 ScrCmd_cmdC7(struct ScriptContext *ctx) { gUnknown_20370DC = gUnknown_20370DA; gUnknown_20370DA = ScriptReadByte(ctx); return FALSE; } -SCRCMD_DEF(message) +bool8 ScrCmd_message(struct ScriptContext *ctx) { const u8 *msg = (const u8 *)ScriptReadWord(ctx); @@ -1276,7 +1278,7 @@ SCRCMD_DEF(message) return FALSE; } -SCRCMD_DEF(cmdC8) +bool8 ScrCmd_cmdC8(struct ScriptContext *ctx) { const u8 *msg = (const u8 *)ScriptReadWord(ctx); @@ -1287,13 +1289,13 @@ SCRCMD_DEF(cmdC8) return FALSE; } -SCRCMD_DEF(cmdC9) +bool8 ScrCmd_cmdC9(struct ScriptContext *ctx) { sub_80F7998(); return FALSE; } -SCRCMD_DEF(messageautoscroll) +bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) { const u8 *msg = (const u8 *)ScriptReadWord(ctx); @@ -1303,24 +1305,19 @@ SCRCMD_DEF(messageautoscroll) return FALSE; } -SCRCMD_DEF(waitmessage) +bool8 ScrCmd_waitmessage(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsFieldMessageBoxHidden); return TRUE; } -SCRCMD_DEF(closemessage) +bool8 ScrCmd_closemessage(struct ScriptContext *ctx) { HideFieldMessageBox(); return FALSE; } -extern IWRAM_DATA struct ScriptContext * gUnknown_3005070; - -bool8 sub_806B93C(struct ScriptContext * ctx); -u8 sub_806B96C(struct ScriptContext * ctx); - -bool8 WaitForAorBPress(void) +static bool8 WaitForAorBPress(void) { if (gMain.newKeys & A_BUTTON) return TRUE; @@ -1358,7 +1355,7 @@ bool8 WaitForAorBPress(void) return FALSE; } -bool8 sub_806B93C(struct ScriptContext * ctx) +static bool8 sub_806B93C(struct ScriptContext * ctx) { const u8 * script = ctx->scriptPtr; u8 nextCmd = *script; @@ -1373,7 +1370,7 @@ bool8 sub_806B93C(struct ScriptContext * ctx) return TRUE; } -u8 sub_806B96C(struct ScriptContext * ctx) +static u8 sub_806B96C(struct ScriptContext * ctx) { if (gMain.heldKeys & DPAD_UP && gSpecialVar_Facing != 2) return 1; @@ -1408,7 +1405,7 @@ u8 sub_806B96C(struct ScriptContext * ctx) return 0; } -SCRCMD_DEF(waitbuttonpress) +bool8 ScrCmd_waitbuttonpress(struct ScriptContext *ctx) { gUnknown_3005070 = ctx; @@ -1418,7 +1415,7 @@ SCRCMD_DEF(waitbuttonpress) return TRUE; } -SCRCMD_DEF(yesnobox) +bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1434,7 +1431,7 @@ SCRCMD_DEF(yesnobox) } } -SCRCMD_DEF(multichoice) +bool8 ScrCmd_multichoice(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1452,7 +1449,7 @@ SCRCMD_DEF(multichoice) } } -SCRCMD_DEF(multichoicedefault) +bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1471,7 +1468,7 @@ SCRCMD_DEF(multichoicedefault) } } -SCRCMD_DEF(drawbox) +bool8 ScrCmd_drawbox(struct ScriptContext *ctx) { /*u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1482,7 +1479,7 @@ SCRCMD_DEF(drawbox) return FALSE; } -SCRCMD_DEF(multichoicegrid) +bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1501,7 +1498,7 @@ SCRCMD_DEF(multichoicegrid) } } -SCRCMD_DEF(erasebox) +bool8 ScrCmd_erasebox(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); @@ -1512,7 +1509,7 @@ SCRCMD_DEF(erasebox) return FALSE; } -SCRCMD_DEF(drawboxtext) +bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) { // u8 left = ScriptReadByte(ctx); // u8 top = ScriptReadByte(ctx); @@ -1527,7 +1524,7 @@ SCRCMD_DEF(drawboxtext) return FALSE; } -SCRCMD_DEF(showmonpic) +bool8 ScrCmd_showmonpic(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 x = ScriptReadByte(ctx); @@ -1538,7 +1535,7 @@ SCRCMD_DEF(showmonpic) return FALSE; } -SCRCMD_DEF(hidemonpic) +bool8 ScrCmd_hidemonpic(struct ScriptContext *ctx) { bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); @@ -1548,7 +1545,7 @@ SCRCMD_DEF(hidemonpic) return TRUE; } -SCRCMD_DEF(showcontestwinner) +bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); @@ -1563,7 +1560,7 @@ SCRCMD_DEF(showcontestwinner) return FALSE; } -SCRCMD_DEF(braillemessage) +bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); if (ptr == NULL) @@ -1575,7 +1572,7 @@ SCRCMD_DEF(braillemessage) return FALSE; } -SCRCMD_DEF(getbraillestringwidth) +bool8 ScrCmd_getbraillestringwidth(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); if (ptr == NULL) @@ -1585,7 +1582,7 @@ SCRCMD_DEF(getbraillestringwidth) return FALSE; } -SCRCMD_DEF(vmessage) +bool8 ScrCmd_vmessage(struct ScriptContext *ctx) { u32 v1 = ScriptReadWord(ctx); @@ -1600,7 +1597,7 @@ u8 * const sScriptStringVars[] = gStringVar3, }; -SCRCMD_DEF(bufferspeciesname) +bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); @@ -1609,7 +1606,7 @@ SCRCMD_DEF(bufferspeciesname) return FALSE; } -SCRCMD_DEF(bufferleadmonspeciesname) +bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -1620,7 +1617,7 @@ SCRCMD_DEF(bufferleadmonspeciesname) return FALSE; } -SCRCMD_DEF(bufferpartymonnick) +bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -1630,7 +1627,7 @@ SCRCMD_DEF(bufferpartymonnick) return FALSE; } -SCRCMD_DEF(bufferitemname) +bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1642,7 +1639,7 @@ SCRCMD_DEF(bufferitemname) extern const u8 gUnknown_83A72A0[]; extern const u8 gUnknown_83A72A2[]; -SCRCMD_DEF(bufferitemnameplural) +bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1665,7 +1662,7 @@ SCRCMD_DEF(bufferitemnameplural) return FALSE; } -SCRCMD_DEF(bufferdecorationname) +bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -1674,7 +1671,7 @@ SCRCMD_DEF(bufferdecorationname) return FALSE; } -SCRCMD_DEF(buffermovename) +bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); @@ -1683,7 +1680,7 @@ SCRCMD_DEF(buffermovename) return FALSE; } -SCRCMD_DEF(buffernumberstring) +bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -1693,7 +1690,7 @@ SCRCMD_DEF(buffernumberstring) return FALSE; } -SCRCMD_DEF(bufferstdstring) +bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1703,7 +1700,7 @@ SCRCMD_DEF(bufferstdstring) } /* -SCRCMD_DEF(buffercontesttype) +bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1713,7 +1710,7 @@ SCRCMD_DEF(buffercontesttype) } */ -SCRCMD_DEF(bufferstring) +bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); const u8 *text = (u8 *)ScriptReadWord(ctx); @@ -1722,7 +1719,7 @@ SCRCMD_DEF(bufferstring) return FALSE; } -SCRCMD_DEF(vloadword) +bool8 ScrCmd_vloadword(struct ScriptContext *ctx) { const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gVScriptOffset); @@ -1730,7 +1727,7 @@ SCRCMD_DEF(vloadword) return FALSE; } -SCRCMD_DEF(vbufferstring) +bool8 ScrCmd_vbufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); @@ -1741,7 +1738,7 @@ SCRCMD_DEF(vbufferstring) return FALSE; } -SCRCMD_DEF(bufferboxname) +bool8 ScrCmd_bufferboxname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 boxId = VarGet(ScriptReadHalfword(ctx)); @@ -1750,7 +1747,7 @@ SCRCMD_DEF(bufferboxname) return FALSE; } -SCRCMD_DEF(givemon) +bool8 ScrCmd_givemon(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 level = ScriptReadByte(ctx); @@ -1763,7 +1760,7 @@ SCRCMD_DEF(givemon) return FALSE; } -SCRCMD_DEF(giveegg) +bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); @@ -1771,7 +1768,7 @@ SCRCMD_DEF(giveegg) return FALSE; } -SCRCMD_DEF(setmonmove) +bool8 ScrCmd_setmonmove(struct ScriptContext *ctx) { u8 partyIndex = ScriptReadByte(ctx); u8 slot = ScriptReadByte(ctx); @@ -1781,7 +1778,7 @@ SCRCMD_DEF(setmonmove) return FALSE; } -SCRCMD_DEF(checkpartymove) +bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) { u8 i; u16 moveId = ScriptReadHalfword(ctx); @@ -1802,7 +1799,7 @@ SCRCMD_DEF(checkpartymove) return FALSE; } -SCRCMD_DEF(givemoney) +bool8 ScrCmd_givemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); @@ -1812,7 +1809,7 @@ SCRCMD_DEF(givemoney) return FALSE; } -SCRCMD_DEF(takemoney) +bool8 ScrCmd_takemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); @@ -1822,7 +1819,7 @@ SCRCMD_DEF(takemoney) return FALSE; } -SCRCMD_DEF(checkmoney) +bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); @@ -1832,7 +1829,7 @@ SCRCMD_DEF(checkmoney) return FALSE; } -SCRCMD_DEF(showmoneybox) +bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx) { u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); @@ -1843,7 +1840,7 @@ SCRCMD_DEF(showmoneybox) return FALSE; } -SCRCMD_DEF(hidemoneybox) +bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) { /*u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx);*/ @@ -1852,7 +1849,7 @@ SCRCMD_DEF(hidemoneybox) return FALSE; } -SCRCMD_DEF(updatemoneybox) +bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx) { u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); @@ -1863,7 +1860,7 @@ SCRCMD_DEF(updatemoneybox) return FALSE; } -SCRCMD_DEF(showcoinsbox) +bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx) { u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); @@ -1873,7 +1870,7 @@ SCRCMD_DEF(showcoinsbox) return FALSE; } -SCRCMD_DEF(hidecoinsbox) +bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) { u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); @@ -1882,7 +1879,7 @@ SCRCMD_DEF(hidecoinsbox) return FALSE; } -SCRCMD_DEF(updatecoinsbox) +bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) { u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); @@ -1891,31 +1888,31 @@ SCRCMD_DEF(updatecoinsbox) return FALSE; } -SCRCMD_DEF(trainerbattle) +bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); return FALSE; } -SCRCMD_DEF(dotrainerbattle) +bool8 ScrCmd_dotrainerbattle(struct ScriptContext *ctx) { BattleSetup_StartTrainerBattle(); return TRUE; } -SCRCMD_DEF(gotopostbattlescript) +bool8 ScrCmd_gotopostbattlescript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); return FALSE; } -SCRCMD_DEF(gotobeatenscript) +bool8 ScrCmd_gotobeatenscript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); return FALSE; } -SCRCMD_DEF(checktrainerflag) +bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1923,7 +1920,7 @@ SCRCMD_DEF(checktrainerflag) return FALSE; } -SCRCMD_DEF(settrainerflag) +bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1931,7 +1928,7 @@ SCRCMD_DEF(settrainerflag) return FALSE; } -SCRCMD_DEF(cleartrainerflag) +bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1939,7 +1936,7 @@ SCRCMD_DEF(cleartrainerflag) return FALSE; } -SCRCMD_DEF(setwildbattle) +bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) { u16 species = ScriptReadHalfword(ctx); u8 level = ScriptReadByte(ctx); @@ -1949,14 +1946,14 @@ SCRCMD_DEF(setwildbattle) return FALSE; } -SCRCMD_DEF(dowildbattle) +bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) { BattleSetup_StartScriptedWildBattle(); ScriptContext1_Stop(); return TRUE; } -SCRCMD_DEF(pokemart) +bool8 ScrCmd_pokemart(struct ScriptContext *ctx) { const void *ptr = (void *)ScriptReadWord(ctx); @@ -1965,7 +1962,7 @@ SCRCMD_DEF(pokemart) return TRUE; } -SCRCMD_DEF(pokemartdecoration) +bool8 ScrCmd_pokemartdecoration(struct ScriptContext *ctx) { const void *ptr = (void *)ScriptReadWord(ctx); @@ -1974,7 +1971,7 @@ SCRCMD_DEF(pokemartdecoration) return TRUE; } -SCRCMD_DEF(pokemartdecoration2) +bool8 ScrCmd_pokemartdecoration2(struct ScriptContext *ctx) { const void *ptr = (void *)ScriptReadWord(ctx); @@ -1983,7 +1980,7 @@ SCRCMD_DEF(pokemartdecoration2) return TRUE; } -SCRCMD_DEF(playslotmachine) +bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) { u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx)); @@ -1992,7 +1989,7 @@ SCRCMD_DEF(playslotmachine) return TRUE; } -SCRCMD_DEF(setberrytree) +bool8 ScrCmd_setberrytree(struct ScriptContext *ctx) { // u8 treeId = ScriptReadByte(ctx); // u8 berry = ScriptReadByte(ctx); @@ -2005,7 +2002,7 @@ SCRCMD_DEF(setberrytree) return FALSE; } -SCRCMD_DEF(getpricereduction) +bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { // u16 value = VarGet(ScriptReadHalfword(ctx)); // @@ -2013,7 +2010,7 @@ SCRCMD_DEF(getpricereduction) return FALSE; } -SCRCMD_DEF(choosecontestmon) +bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx) { // sub_81B9404(); ScriptContext1_Stop(); @@ -2021,7 +2018,7 @@ SCRCMD_DEF(choosecontestmon) } -SCRCMD_DEF(startcontest) +bool8 ScrCmd_startcontest(struct ScriptContext *ctx) { // sub_80F840C(); // ScriptContext1_Stop(); @@ -2029,7 +2026,7 @@ SCRCMD_DEF(startcontest) return FALSE; } -SCRCMD_DEF(showcontestresults) +bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx) { // sub_80F8484(); // ScriptContext1_Stop(); @@ -2037,7 +2034,7 @@ SCRCMD_DEF(showcontestresults) return FALSE; } -SCRCMD_DEF(contestlinktransfer) +bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) { // sub_80F84C4(gSpecialVar_ContestCategory); // ScriptContext1_Stop(); @@ -2045,7 +2042,7 @@ SCRCMD_DEF(contestlinktransfer) return FALSE; } -SCRCMD_DEF(dofieldeffect) +bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) { u16 effectId = VarGet(ScriptReadHalfword(ctx)); @@ -2054,7 +2051,7 @@ SCRCMD_DEF(dofieldeffect) return FALSE; } -SCRCMD_DEF(setfieldeffectarg) +bool8 ScrCmd_setfieldeffectarg(struct ScriptContext *ctx) { u8 argNum = ScriptReadByte(ctx); @@ -2070,14 +2067,14 @@ static bool8 WaitForFieldEffectFinish(void) return FALSE; } -SCRCMD_DEF(waitfieldeffect) +bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) { sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx)); SetupNativeScript(ctx, WaitForFieldEffectFinish); return TRUE; } -SCRCMD_DEF(setrespawn) +bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) { u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); @@ -2085,13 +2082,13 @@ SCRCMD_DEF(setrespawn) return FALSE; } -SCRCMD_DEF(checkplayergender) +bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { gSpecialVar_Result = gSaveBlock2Ptr->playerGender; return FALSE; } -SCRCMD_DEF(playmoncry) +bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u16 mode = VarGet(ScriptReadHalfword(ctx)); @@ -2100,13 +2097,13 @@ SCRCMD_DEF(playmoncry) return FALSE; } -SCRCMD_DEF(waitmoncry) +bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsCryFinished); return TRUE; } -SCRCMD_DEF(setmetatile) +bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); @@ -2122,7 +2119,7 @@ SCRCMD_DEF(setmetatile) return FALSE; } -SCRCMD_DEF(opendoor) +bool8 ScrCmd_opendoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); @@ -2134,7 +2131,7 @@ SCRCMD_DEF(opendoor) return FALSE; } -SCRCMD_DEF(closedoor) +bool8 ScrCmd_closedoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); @@ -2153,13 +2150,13 @@ static bool8 IsDoorAnimationStopped(void) return FALSE; } -SCRCMD_DEF(waitdooranim) +bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsDoorAnimationStopped); return TRUE; } -SCRCMD_DEF(setdooropen) +bool8 ScrCmd_setdooropen(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); @@ -2170,7 +2167,7 @@ SCRCMD_DEF(setdooropen) return FALSE; } -SCRCMD_DEF(setdoorclosed) +bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); @@ -2181,7 +2178,7 @@ SCRCMD_DEF(setdoorclosed) return FALSE; } -SCRCMD_DEF(addelevmenuitem) +bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx) { // u8 v3 = ScriptReadByte(ctx); // u16 v5 = VarGet(ScriptReadHalfword(ctx)); @@ -2192,7 +2189,7 @@ SCRCMD_DEF(addelevmenuitem) return FALSE; } -SCRCMD_DEF(showelevmenu) +bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx) { /*ScriptShowElevatorMenu(); ScriptContext1_Stop(); @@ -2200,14 +2197,14 @@ SCRCMD_DEF(showelevmenu) return FALSE; } -SCRCMD_DEF(checkcoins) +bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) { u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); *ptr = GetCoins(); return FALSE; } -SCRCMD_DEF(givecoins) +bool8 ScrCmd_givecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); @@ -2218,7 +2215,7 @@ SCRCMD_DEF(givecoins) return FALSE; } -SCRCMD_DEF(takecoins) +bool8 ScrCmd_takecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); @@ -2229,20 +2226,20 @@ SCRCMD_DEF(takecoins) return FALSE; } -SCRCMD_DEF(cmdCA) +bool8 ScrCmd_cmdCA(struct ScriptContext *ctx) { sub_8069A20(); return FALSE; } -SCRCMD_DEF(cmdCB) +bool8 ScrCmd_cmdCB(struct ScriptContext *ctx) { sub_8069A2C(); return FALSE; } // This command will force the Pokémon to be obedient, you don't get to make it disobedient. -SCRCMD_DEF(setmonobedient) +bool8 ScrCmd_setmonobedient(struct ScriptContext *ctx) { bool8 obedient = TRUE; u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2251,7 +2248,7 @@ SCRCMD_DEF(setmonobedient) return FALSE; } -SCRCMD_DEF(checkmonobedience) +bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2259,7 +2256,7 @@ SCRCMD_DEF(checkmonobedience) return FALSE; } -SCRCMD_DEF(setmonmetlocation) +bool8 ScrCmd_setmonmetlocation(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); u8 location = ScriptReadByte(ctx); From bc79312d48781a35597705bf6663ac2a39598873 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Jan 2019 08:54:56 -0500 Subject: [PATCH 017/318] Start decomping fieldmap --- asm/field_map_obj.s | 4 +- asm/fieldmap.s | 185 ++++++++++---------------------------- data/data.s | 20 ----- data/fieldmap.s | 15 ++++ include/fieldmap.h | 2 + include/global.fieldmap.h | 10 +-- ld_script.txt | 3 + src/fieldmap.c | 42 +++++++++ sym_common.txt | 2 +- sym_ewram.txt | 2 +- 10 files changed, 120 insertions(+), 165 deletions(-) create mode 100644 data/fieldmap.s create mode 100644 src/fieldmap.c diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 14951c20c..2c57aa70c 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -673,7 +673,7 @@ sub_805E2E8: @ 805E2E8 lsls r0, 24 cmp r0, 0 beq _0805E37C - ldr r1, _0805E374 @ =gUnknown_3005040 + ldr r1, _0805E374 @ =VMap ldr r0, [r1] adds r3, r0, 0 subs r3, 0x10 @@ -736,7 +736,7 @@ _0805E36A: movs r0, 0 b _0805E37E .align 2, 0 -_0805E374: .4byte gUnknown_3005040 +_0805E374: .4byte VMap _0805E378: .4byte gSaveBlock1Ptr _0805E37C: movs r0, 0x1 diff --git a/asm/fieldmap.s b/asm/fieldmap.s index a8b2d36ee..9f1a17f08 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -5,93 +5,6 @@ .text - thumb_func_start mapconnection_get_mapheader -mapconnection_get_mapheader: @ 80589C4 - push {lr} - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0x9] - adds r0, r2, 0 - bl get_mapheader_by_bank_and_number - pop {r1} - bx r1 - thumb_func_end mapconnection_get_mapheader - - thumb_func_start not_trainer_hill_battle_pyramid -not_trainer_hill_battle_pyramid: @ 80589D4 - push {lr} - ldr r0, _080589E4 @ =gMapHeader - bl sub_8058A00 - bl mapheader_run_script_with_tag_x1 - pop {r0} - bx r0 - .align 2, 0 -_080589E4: .4byte gMapHeader - thumb_func_end not_trainer_hill_battle_pyramid - - thumb_func_start sub_80589E8 -sub_80589E8: @ 80589E8 - push {lr} - ldr r0, _080589FC @ =gMapHeader - bl sub_8058A00 - bl sub_80591C4 - bl mapheader_run_script_with_tag_x1 - pop {r0} - bx r0 - .align 2, 0 -_080589FC: .4byte gMapHeader - thumb_func_end sub_80589E8 - - thumb_func_start sub_8058A00 -sub_8058A00: @ 8058A00 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r5, [r6] - ldr r0, _08058A58 @ =0x03ff03ff - str r0, [sp] - ldr r4, _08058A5C @ =gUnknown_2031DFC - ldr r2, _08058A60 @ =0x01001400 - mov r0, sp - adds r1, r4, 0 - bl CpuFastSet - ldr r2, _08058A64 @ =gUnknown_3005040 - str r4, [r2, 0x8] - ldr r1, [r5] - adds r1, 0xF - str r1, [r2] - ldr r0, [r5, 0x4] - adds r0, 0xE - str r0, [r2, 0x4] - muls r1, r0 - movs r0, 0xA0 - lsls r0, 6 - cmp r1, r0 - ble _08058A3E - ldr r0, _08058A68 @ =gUnknown_8352F18 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c" - ldr r2, _08058A6C @ =gUnknown_8352F4C "VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE" - movs r1, 0x9E - movs r3, 0x1 - bl AGBAssert -_08058A3E: - ldr r0, [r5, 0xC] - ldrh r1, [r5] - ldrh r2, [r5, 0x4] - bl map_copy_with_padding - adds r0, r6, 0 - bl mapheader_copy_mapdata_of_adjacent_maps - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08058A58: .4byte 0x03ff03ff -_08058A5C: .4byte gUnknown_2031DFC -_08058A60: .4byte 0x01001400 -_08058A64: .4byte gUnknown_3005040 -_08058A68: .4byte gUnknown_8352F18 -_08058A6C: .4byte gUnknown_8352F4C - thumb_func_end sub_8058A00 - thumb_func_start map_copy_with_padding map_copy_with_padding: @ 8058A70 push {r4-r7,lr} @@ -104,7 +17,7 @@ map_copy_with_padding: @ 8058A70 mov r8, r1 lsls r2, 16 lsrs r2, 16 - ldr r0, _08058AC4 @ =gUnknown_3005040 + ldr r0, _08058AC4 @ =VMap ldr r4, [r0, 0x8] ldr r1, [r0] lsls r0, r1, 3 @@ -138,7 +51,7 @@ _08058AB8: pop {r0} bx r0 .align 2, 0 -_08058AC4: .4byte gUnknown_3005040 +_08058AC4: .4byte VMap thumb_func_end map_copy_with_padding thumb_func_start mapheader_copy_mapdata_of_adjacent_maps @@ -231,7 +144,7 @@ sub_8058B54: @ 8058B54 lsls r2, 1 ldr r3, [r4, 0xC] adds r6, r3, r2 - ldr r3, _08058BB0 @ =gUnknown_3005040 + ldr r3, _08058BB0 @ =VMap ldr r2, [r3] muls r1, r2 adds r1, r0 @@ -251,7 +164,7 @@ _08058B86: mov r3, r8 ands r2, r3 bl CpuSet - ldr r0, _08058BB0 @ =gUnknown_3005040 + ldr r0, _08058BB0 @ =VMap ldr r0, [r0] lsls r0, 1 adds r5, r0 @@ -267,7 +180,7 @@ _08058BA6: pop {r0} bx r0 .align 2, 0 -_08058BB0: .4byte gUnknown_3005040 +_08058BB0: .4byte VMap _08058BB4: .4byte 0x001fffff thumb_func_end sub_8058B54 @@ -289,7 +202,7 @@ fillSouthConnection: @ 8058BB8 bge _08058BEC negs r6, r2 adds r2, r4 - ldr r0, _08058BE8 @ =gUnknown_3005040 + ldr r0, _08058BE8 @ =VMap ldr r3, [r0] cmp r2, r3 bge _08058BE2 @@ -298,11 +211,11 @@ _08058BE2: movs r2, 0 b _08058BFC .align 2, 0 -_08058BE8: .4byte gUnknown_3005040 +_08058BE8: .4byte VMap _08058BEC: movs r6, 0 adds r0, r2, r4 - ldr r1, _08058C1C @ =gUnknown_3005040 + ldr r1, _08058C1C @ =VMap ldr r1, [r1] subs r3, r1, r2 cmp r0, r1 @@ -325,7 +238,7 @@ _08058C12: pop {r0} bx r0 .align 2, 0 -_08058C1C: .4byte gUnknown_3005040 +_08058C1C: .4byte VMap thumb_func_end fillSouthConnection thumb_func_start fillNorthConnection @@ -344,7 +257,7 @@ fillNorthConnection: @ 8058C20 bge _08058C50 negs r6, r2 adds r2, r4 - ldr r0, _08058C4C @ =gUnknown_3005040 + ldr r0, _08058C4C @ =VMap ldr r3, [r0] cmp r2, r3 bge _08058C46 @@ -353,11 +266,11 @@ _08058C46: movs r2, 0 b _08058C60 .align 2, 0 -_08058C4C: .4byte gUnknown_3005040 +_08058C4C: .4byte VMap _08058C50: movs r6, 0 adds r0, r2, r4 - ldr r1, _08058C7C @ =gUnknown_3005040 + ldr r1, _08058C7C @ =VMap ldr r1, [r1] subs r3, r1, r2 cmp r0, r1 @@ -379,7 +292,7 @@ _08058C74: pop {r0} bx r0 .align 2, 0 -_08058C7C: .4byte gUnknown_3005040 +_08058C7C: .4byte VMap thumb_func_end fillNorthConnection thumb_func_start fillWestConnection @@ -398,7 +311,7 @@ fillWestConnection: @ 8058C80 bge _08058CB0 negs r6, r2 adds r1, r2, r4 - ldr r0, _08058CAC @ =gUnknown_3005040 + ldr r0, _08058CAC @ =VMap ldr r3, [r0, 0x4] cmp r1, r3 bge _08058CA6 @@ -407,11 +320,11 @@ _08058CA6: movs r2, 0 b _08058CC0 .align 2, 0 -_08058CAC: .4byte gUnknown_3005040 +_08058CAC: .4byte VMap _08058CB0: movs r6, 0 adds r0, r2, r4 - ldr r1, _08058CDC @ =gUnknown_3005040 + ldr r1, _08058CDC @ =VMap ldr r1, [r1, 0x4] subs r3, r1, r2 cmp r0, r1 @@ -433,7 +346,7 @@ _08058CD4: pop {r0} bx r0 .align 2, 0 -_08058CDC: .4byte gUnknown_3005040 +_08058CDC: .4byte VMap thumb_func_end fillWestConnection thumb_func_start fillEastConnection @@ -454,7 +367,7 @@ fillEastConnection: @ 8058CE0 bge _08058D14 negs r6, r2 adds r1, r2, r4 - ldr r0, _08058D10 @ =gUnknown_3005040 + ldr r0, _08058D10 @ =VMap ldr r3, [r0, 0x4] cmp r1, r3 bge _08058D0A @@ -463,11 +376,11 @@ _08058D0A: movs r2, 0 b _08058D24 .align 2, 0 -_08058D10: .4byte gUnknown_3005040 +_08058D10: .4byte VMap _08058D14: movs r6, 0 adds r0, r2, r4 - ldr r1, _08058D40 @ =gUnknown_3005040 + ldr r1, _08058D40 @ =VMap ldr r1, [r1, 0x4] subs r3, r1, r2 cmp r0, r1 @@ -489,7 +402,7 @@ _08058D38: pop {r0} bx r0 .align 2, 0 -_08058D40: .4byte gUnknown_3005040 +_08058D40: .4byte VMap thumb_func_end fillEastConnection thumb_func_start MapGridGetZCoordAt @@ -499,7 +412,7 @@ MapGridGetZCoordAt: @ 8058D44 adds r7, r1, 0 cmp r2, 0 blt _08058D74 - ldr r1, _08058D70 @ =gUnknown_3005040 + ldr r1, _08058D70 @ =VMap ldr r3, [r1] cmp r2, r3 bge _08058D74 @@ -517,7 +430,7 @@ MapGridGetZCoordAt: @ 8058D44 ldrh r1, [r0] b _08058DA8 .align 2, 0 -_08058D70: .4byte gUnknown_3005040 +_08058D70: .4byte VMap _08058D74: ldr r0, _08058DB4 @ =gMapHeader ldr r6, [r0] @@ -567,7 +480,7 @@ sub_8058DC4: @ 8058DC4 adds r7, r1, 0 cmp r2, 0 blt _08058DF4 - ldr r1, _08058DF0 @ =gUnknown_3005040 + ldr r1, _08058DF0 @ =VMap ldr r3, [r1] cmp r2, r3 bge _08058DF4 @@ -585,7 +498,7 @@ sub_8058DC4: @ 8058DC4 ldrh r1, [r0] b _08058E28 .align 2, 0 -_08058DF0: .4byte gUnknown_3005040 +_08058DF0: .4byte VMap _08058DF4: ldr r0, _08058E38 @ =gMapHeader ldr r6, [r0] @@ -641,7 +554,7 @@ sub_8058E48: @ 8058E48 mov r9, r1 cmp r0, 0 blt _08058E80 - ldr r1, _08058E7C @ =gUnknown_3005040 + ldr r1, _08058E7C @ =VMap ldr r2, [r1] cmp r8, r2 bge _08058E80 @@ -660,7 +573,7 @@ sub_8058E48: @ 8058E48 ldrh r7, [r0] b _08058EBA .align 2, 0 -_08058E7C: .4byte gUnknown_3005040 +_08058E7C: .4byte VMap _08058E80: ldr r0, _08058EC8 @ =gMapHeader ldr r6, [r0] @@ -825,7 +738,7 @@ MapGridSetMetatileIdAt: @ 8058FA4 lsrs r5, r2, 16 cmp r3, 0 blt _08058FDC - ldr r2, _08058FE4 @ =gUnknown_3005040 + ldr r2, _08058FE4 @ =VMap ldr r4, [r2] cmp r3, r4 bge _08058FDC @@ -852,7 +765,7 @@ _08058FDC: pop {r0} bx r0 .align 2, 0 -_08058FE4: .4byte gUnknown_3005040 +_08058FE4: .4byte VMap _08058FE8: .4byte 0x00000fff thumb_func_end MapGridSetMetatileIdAt @@ -864,7 +777,7 @@ MapGridSetMetatileEntryAt: @ 8058FEC lsrs r5, r2, 16 cmp r3, 0 blt _08059018 - ldr r2, _08059020 @ =gUnknown_3005040 + ldr r2, _08059020 @ =VMap ldr r4, [r2] cmp r3, r4 bge _08059018 @@ -885,7 +798,7 @@ _08059018: pop {r0} bx r0 .align 2, 0 -_08059020: .4byte gUnknown_3005040 +_08059020: .4byte VMap thumb_func_end MapGridSetMetatileEntryAt thumb_func_start sub_8059024 @@ -896,7 +809,7 @@ sub_8059024: @ 8059024 adds r5, r2, 0 cmp r4, 0 blt _08059076 - ldr r2, _08059060 @ =gUnknown_3005040 + ldr r2, _08059060 @ =VMap ldr r1, [r2] cmp r4, r1 bge _08059076 @@ -921,7 +834,7 @@ sub_8059024: @ 8059024 strh r1, [r0] b _08059076 .align 2, 0 -_08059060: .4byte gUnknown_3005040 +_08059060: .4byte VMap _08059064: muls r1, r3 adds r1, r4, r1 @@ -999,7 +912,7 @@ sub_80590D8: @ 80590D8 ldr r0, [r0] ldr r1, _08059148 @ =0x00000898 adds r4, r0, r1 - ldr r0, _0805914C @ =gUnknown_3005040 + ldr r0, _0805914C @ =VMap ldr r0, [r0] mov r8, r0 ldr r0, _08059150 @ =gSaveBlock1Ptr @@ -1013,7 +926,7 @@ sub_80590D8: @ 80590D8 cmp r0, r1 bge _08059138 mov r12, r1 - ldr r2, _08059154 @ =gUnknown_2031DFC + ldr r2, _08059154 @ =gBackupMapData mov r9, r2 lsls r7, r6, 1 _0805910A: @@ -1052,9 +965,9 @@ _08059138: .align 2, 0 _08059144: .4byte gSaveBlock2Ptr _08059148: .4byte 0x00000898 -_0805914C: .4byte gUnknown_3005040 +_0805914C: .4byte VMap _08059150: .4byte gSaveBlock1Ptr -_08059154: .4byte gUnknown_2031DFC +_08059154: .4byte gBackupMapData thumb_func_end sub_80590D8 thumb_func_start sub_8059158 @@ -1129,7 +1042,7 @@ sub_80591C4: @ 80591C4 bl sub_8059158 cmp r0, 0 bne _08059230 - ldr r0, _08059244 @ =gUnknown_3005040 + ldr r0, _08059244 @ =VMap ldr r0, [r0] mov r8, r0 ldr r0, _08059248 @ =gSaveBlock1Ptr @@ -1143,7 +1056,7 @@ sub_80591C4: @ 80591C4 cmp r0, r1 bge _0805922C mov r12, r1 - ldr r2, _0805924C @ =gUnknown_2031DFC + ldr r2, _0805924C @ =gBackupMapData mov r9, r2 lsls r7, r6, 1 _080591FE: @@ -1184,9 +1097,9 @@ _08059230: .align 2, 0 _0805923C: .4byte gSaveBlock2Ptr _08059240: .4byte 0x00000898 -_08059244: .4byte gUnknown_3005040 +_08059244: .4byte VMap _08059248: .4byte gSaveBlock1Ptr -_0805924C: .4byte gUnknown_2031DFC +_0805924C: .4byte gBackupMapData thumb_func_end sub_80591C4 thumb_func_start sub_8059250 @@ -1205,7 +1118,7 @@ sub_8059250: @ 8059250 ldr r3, _080592A0 @ =0x00000898 adds r3, r0, r3 str r3, [sp, 0x4] - ldr r0, _080592A4 @ =gUnknown_3005040 + ldr r0, _080592A4 @ =VMap ldr r0, [r0] str r0, [sp] movs r4, 0 @@ -1231,7 +1144,7 @@ sub_8059250: @ 8059250 .align 2, 0 _0805929C: .4byte gSaveBlock2Ptr _080592A0: .4byte 0x00000898 -_080592A4: .4byte gUnknown_3005040 +_080592A4: .4byte VMap _080592A8: .4byte gSaveBlock1Ptr _080592AC: cmp r2, 0x3 @@ -1264,7 +1177,7 @@ _080592D6: movs r1, 0 cmp r1, r12 bge _0805931A - ldr r0, _08059330 @ =gUnknown_2031DFC + ldr r0, _08059330 @ =gBackupMapData mov r10, r0 _080592E0: adds r4, r1, 0x1 @@ -1309,7 +1222,7 @@ _0805931A: pop {r0} bx r0 .align 2, 0 -_08059330: .4byte gUnknown_2031DFC +_08059330: .4byte gBackupMapData thumb_func_end sub_8059250 thumb_func_start sub_8059334 @@ -1321,7 +1234,7 @@ sub_8059334: @ 8059334 mov r8, r1 cmp r7, 0 blt _08059374 - ldr r1, _0805936C @ =gUnknown_3005040 + ldr r1, _0805936C @ =VMap ldr r2, [r1] cmp r7, r2 bge _08059374 @@ -1343,7 +1256,7 @@ sub_8059334: @ 8059334 beq _08059422 b _080593B0 .align 2, 0 -_0805936C: .4byte gUnknown_3005040 +_0805936C: .4byte VMap _08059370: .4byte 0x000003ff _08059374: ldr r0, _080593CC @ =gMapHeader @@ -1375,7 +1288,7 @@ _08059374: cmp r0, r1 beq _08059422 _080593B0: - ldr r1, _080593D4 @ =gUnknown_3005040 + ldr r1, _080593D4 @ =VMap ldr r0, [r1] subs r0, 0x8 cmp r7, r0 @@ -1391,7 +1304,7 @@ _080593B0: .align 2, 0 _080593CC: .4byte gMapHeader _080593D0: .4byte 0x000003ff -_080593D4: .4byte gUnknown_3005040 +_080593D4: .4byte VMap _080593D8: .4byte gUnknown_2036E24 _080593DC: cmp r7, 0x6 diff --git a/data/data.s b/data/data.s index b02f4b451..ea8705f46 100644 --- a/data/data.s +++ b/data/data.s @@ -933,23 +933,3 @@ gUnknown_834EB8C:: @ 834EB8C .incbin "baserom.gba", 0x34EB8C, 0x5FC .include "data/maps/groups.inc" - -gUnknown_8352754:: @ 8352754 - .incbin "baserom.gba", 0x352754, 0x798 - -gUnknown_8352EEC:: @ 8352EEC - .incbin "baserom.gba", 0x352EEC, 0x4 - -gUnknown_8352EF0:: @ 8352EF0 - .incbin "baserom.gba", 0x352EF0, 0x20 - -gUnknown_8352F10:: @ 8352F10 - .incbin "baserom.gba", 0x352F10, 0x8 - - .align 2 -gUnknown_8352F18:: @ 8352F18 - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c" - - .align 2 -gUnknown_8352F4C:: @ 8352F4C - .asciz "VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE" diff --git a/data/fieldmap.s b/data/fieldmap.s new file mode 100644 index 000000000..4248e441a --- /dev/null +++ b/data/fieldmap.s @@ -0,0 +1,15 @@ + .include "asm/macros.inc" + + .section .rodata + +gUnknown_8352754:: @ 8352754 + .incbin "baserom.gba", 0x352754, 0x798 + +gUnknown_8352EEC:: @ 8352EEC + .incbin "baserom.gba", 0x352EEC, 0x4 + +gUnknown_8352EF0:: @ 8352EF0 + .incbin "baserom.gba", 0x352EF0, 0x20 + +gUnknown_8352F10:: @ 8352F10 + .incbin "baserom.gba", 0x352F10, 0x8 diff --git a/include/fieldmap.h b/include/fieldmap.h index c5abdb2e1..fe2b5a928 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -3,6 +3,8 @@ #include "global.h" +#define VIRTUAL_MAP_SIZE 0x2800 + extern struct MapCoords { int width; int height; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index ed5054b7d..3b3648121 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -67,8 +67,8 @@ struct MapData struct BackupMapData { - s32 width; - s32 height; + s32 Xsize; + s32 Ysize; u16 *map; }; @@ -149,9 +149,9 @@ struct MapEvents struct MapConnection { /*0x00*/ u8 direction; - /*0x01*/ u32 offset; - /*0x05*/ u8 mapGroup; - /*0x06*/ u8 mapNum; + /*0x04*/ u32 offset; + /*0x08*/ u8 mapGroup; + /*0x09*/ u8 mapNum; }; struct MapConnections diff --git a/ld_script.txt b/ld_script.txt index 5bfe7f28c..1e6f87e23 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -91,6 +91,7 @@ SECTIONS { asm/play_time.o(.text); asm/new_game.o(.text); asm/overworld.o(.text); + src/fieldmap.o(.text); asm/fieldmap.o(.text); src/metatile_behavior.o(.text); asm/field_camera.o(.text); @@ -367,6 +368,8 @@ SECTIONS { src/bg_regs.o(.rodata); src/string_util.o(.rodata); data/data.o(.rodata); + data/fieldmap.o(.rodata); + src/fieldmap.o(.rodata); src/metatile_behavior.o(.rodata); data/metatile_behavior.o(.rodata); data/data_835B488.o(.rodata); diff --git a/src/fieldmap.c b/src/fieldmap.c new file mode 100644 index 000000000..f9b3ad897 --- /dev/null +++ b/src/fieldmap.c @@ -0,0 +1,42 @@ +#include "global.h" +#include "overworld.h" +#include "script.h" +#include "fieldmap.h" + +void sub_8058A00(struct MapHeader *mapHeader); +void map_copy_with_padding(u16 *map, u16 width, u16 height); +void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader); +void sub_80591C4(void); + +struct BackupMapData VMap; +EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE]; + +const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection) +{ + return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum); +} + +void not_trainer_hill_battle_pyramid(void) +{ + sub_8058A00(&gMapHeader); + mapheader_run_script_with_tag_x1(); +} + +void sub_80589E8(void) +{ + sub_8058A00(&gMapHeader); + sub_80591C4(); + mapheader_run_script_with_tag_x1(); +} + +void sub_8058A00(struct MapHeader * mapHeader) +{ + const struct MapData * mapData = mapHeader->mapData; + CpuFastFill(0x03FF03FF, gBackupMapData, sizeof(gBackupMapData)); + VMap.map = gBackupMapData; + VMap.Xsize = mapData->width + 15; + VMap.Ysize = mapData->height + 14; + AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c", 158); + map_copy_with_padding(mapData->map, mapData->width, mapData->height); + mapheader_copy_mapdata_of_adjacent_maps(mapHeader); +} diff --git a/sym_common.txt b/sym_common.txt index 333dae222..7cb460c84 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -160,7 +160,7 @@ gUnknown_300502C: @ 300502C gUnknown_3005030: @ 3005030 .space 0x10 -gUnknown_3005040: @ 3005040 +VMap: @ 3005040 .space 0x10 gUnknown_3005050: @ 3005050 diff --git a/sym_ewram.txt b/sym_ewram.txt index fbb152faa..1f63459b9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -593,7 +593,7 @@ gUnknown_2031DEA: @ 2031DEA gUnknown_2031DEC: @ 2031DEC .space 0x10 -gUnknown_2031DFC: @ 2031DFC +gBackupMapData: @ 2031DFC .space 0x5000 gMapHeader: @ 2036DFC From ee25c7a9755b8ed1111a3677a5f519ac602f6391 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 10:17:44 -0500 Subject: [PATCH 018/318] through fillEastConnection --- asm/fieldmap.s | 416 +----------------------------------------------- data/fieldmap.s | 4 +- src/fieldmap.c | 284 ++++++++++++++++++++++++++++++++- sym_ewram.txt | 2 +- 4 files changed, 294 insertions(+), 412 deletions(-) diff --git a/asm/fieldmap.s b/asm/fieldmap.s index 9f1a17f08..15a18b775 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -5,406 +5,6 @@ .text - thumb_func_start map_copy_with_padding -map_copy_with_padding: @ 8058A70 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 16 - lsrs r2, 16 - ldr r0, _08058AC4 @ =VMap - ldr r4, [r0, 0x8] - ldr r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r0, 0xE - adds r4, r0 - cmp r2, 0 - beq _08058AB8 - mov r0, r8 - lsls r6, r0, 1 - adds r5, r2, 0 - movs r0, 0x1E - adds r0, r6 - mov r9, r0 -_08058AA4: - adds r0, r7, 0 - adds r1, r4, 0 - mov r2, r8 - bl CpuSet - add r4, r9 - adds r7, r6 - subs r5, 0x1 - cmp r5, 0 - bne _08058AA4 -_08058AB8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058AC4: .4byte VMap - thumb_func_end map_copy_with_padding - - thumb_func_start mapheader_copy_mapdata_of_adjacent_maps -mapheader_copy_mapdata_of_adjacent_maps: @ 8058AC8 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r2, _08058B00 @ =gUnknown_2036E24 - ldr r0, _08058B04 @ =gUnknown_8352EEC - ldr r0, [r0] - str r0, [r2] - ldr r0, [r6, 0xC] - cmp r0, 0 - beq _08058B4C - ldr r1, [r0] - ldr r5, [r0, 0x4] - cmp r1, 0 - ble _08058B4C - adds r4, r2, 0 - adds r7, r1, 0 -_08058AE6: - adds r0, r5, 0 - bl mapconnection_get_mapheader - adds r1, r0, 0 - ldr r2, [r5, 0x4] - ldrb r0, [r5] - cmp r0, 0x2 - beq _08058B1E - cmp r0, 0x2 - bgt _08058B08 - cmp r0, 0x1 - beq _08058B12 - b _08058B44 - .align 2, 0 -_08058B00: .4byte gUnknown_2036E24 -_08058B04: .4byte gUnknown_8352EEC -_08058B08: - cmp r0, 0x3 - beq _08058B2A - cmp r0, 0x4 - beq _08058B36 - b _08058B44 -_08058B12: - adds r0, r6, 0 - bl fillSouthConnection - ldrb r0, [r4] - movs r1, 0x1 - b _08058B40 -_08058B1E: - adds r0, r6, 0 - bl fillNorthConnection - ldrb r0, [r4] - movs r1, 0x2 - b _08058B40 -_08058B2A: - adds r0, r6, 0 - bl fillWestConnection - ldrb r0, [r4] - movs r1, 0x4 - b _08058B40 -_08058B36: - adds r0, r6, 0 - bl fillEastConnection - ldrb r0, [r4] - movs r1, 0x8 -_08058B40: - orrs r0, r1 - strb r0, [r4] -_08058B44: - subs r7, 0x1 - adds r5, 0xC - cmp r7, 0 - bne _08058AE6 -_08058B4C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end mapheader_copy_mapdata_of_adjacent_maps - - thumb_func_start sub_8058B54 -sub_8058B54: @ 8058B54 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, [sp, 0x18] - ldr r4, [r2] - ldr r7, [r4] - adds r2, r7, 0 - muls r2, r5 - adds r2, r3 - lsls r2, 1 - ldr r3, [r4, 0xC] - adds r6, r3, r2 - ldr r3, _08058BB0 @ =VMap - ldr r2, [r3] - muls r1, r2 - adds r1, r0 - lsls r1, 1 - ldr r0, [r3, 0x8] - adds r5, r0, r1 - ldr r0, [sp, 0x20] - cmp r0, 0 - ble _08058BA6 - adds r4, r0, 0 - ldr r3, _08058BB4 @ =0x001fffff - mov r8, r3 -_08058B86: - adds r0, r6, 0 - adds r1, r5, 0 - ldr r2, [sp, 0x1C] - mov r3, r8 - ands r2, r3 - bl CpuSet - ldr r0, _08058BB0 @ =VMap - ldr r0, [r0] - lsls r0, 1 - adds r5, r0 - lsls r0, r7, 1 - adds r6, r0 - subs r4, 0x1 - cmp r4, 0 - bne _08058B86 -_08058BA6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058BB0: .4byte VMap -_08058BB4: .4byte 0x001fffff - thumb_func_end sub_8058B54 - - thumb_func_start fillSouthConnection -fillSouthConnection: @ 8058BB8 - push {r4-r7,lr} - sub sp, 0xC - adds r3, r0, 0 - adds r5, r1, 0 - cmp r5, 0 - beq _08058C12 - ldr r0, [r5] - ldr r4, [r0] - adds r2, 0x7 - ldr r0, [r3] - ldr r0, [r0, 0x4] - adds r7, r0, 0x7 - cmp r2, 0 - bge _08058BEC - negs r6, r2 - adds r2, r4 - ldr r0, _08058BE8 @ =VMap - ldr r3, [r0] - cmp r2, r3 - bge _08058BE2 - adds r3, r2, 0 -_08058BE2: - movs r2, 0 - b _08058BFC - .align 2, 0 -_08058BE8: .4byte VMap -_08058BEC: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058C1C @ =VMap - ldr r1, [r1] - subs r3, r1, r2 - cmp r0, r1 - bge _08058BFC - adds r3, r4, 0 -_08058BFC: - movs r0, 0 - str r0, [sp] - str r3, [sp, 0x4] - movs r0, 0x7 - str r0, [sp, 0x8] - adds r0, r2, 0 - adds r1, r7, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8058B54 -_08058C12: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058C1C: .4byte VMap - thumb_func_end fillSouthConnection - - thumb_func_start fillNorthConnection -fillNorthConnection: @ 8058C20 - push {r4-r7,lr} - sub sp, 0xC - adds r5, r1, 0 - cmp r5, 0 - beq _08058C74 - ldr r0, [r5] - ldr r4, [r0] - ldr r0, [r0, 0x4] - adds r2, 0x7 - subs r7, r0, 0x7 - cmp r2, 0 - bge _08058C50 - negs r6, r2 - adds r2, r4 - ldr r0, _08058C4C @ =VMap - ldr r3, [r0] - cmp r2, r3 - bge _08058C46 - adds r3, r2, 0 -_08058C46: - movs r2, 0 - b _08058C60 - .align 2, 0 -_08058C4C: .4byte VMap -_08058C50: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058C7C @ =VMap - ldr r1, [r1] - subs r3, r1, r2 - cmp r0, r1 - bge _08058C60 - adds r3, r4, 0 -_08058C60: - str r7, [sp] - str r3, [sp, 0x4] - movs r0, 0x7 - str r0, [sp, 0x8] - adds r0, r2, 0 - movs r1, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8058B54 -_08058C74: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058C7C: .4byte VMap - thumb_func_end fillNorthConnection - - thumb_func_start fillWestConnection -fillWestConnection: @ 8058C80 - push {r4-r7,lr} - sub sp, 0xC - adds r5, r1, 0 - cmp r5, 0 - beq _08058CD4 - ldr r0, [r5] - ldr r1, [r0] - ldr r4, [r0, 0x4] - adds r2, 0x7 - subs r7, r1, 0x7 - cmp r2, 0 - bge _08058CB0 - negs r6, r2 - adds r1, r2, r4 - ldr r0, _08058CAC @ =VMap - ldr r3, [r0, 0x4] - cmp r1, r3 - bge _08058CA6 - adds r3, r1, 0 -_08058CA6: - movs r2, 0 - b _08058CC0 - .align 2, 0 -_08058CAC: .4byte VMap -_08058CB0: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058CDC @ =VMap - ldr r1, [r1, 0x4] - subs r3, r1, r2 - cmp r0, r1 - bge _08058CC0 - adds r3, r4, 0 -_08058CC0: - str r6, [sp] - movs r0, 0x7 - str r0, [sp, 0x4] - str r3, [sp, 0x8] - movs r0, 0 - adds r1, r2, 0 - adds r2, r5, 0 - adds r3, r7, 0 - bl sub_8058B54 -_08058CD4: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058CDC: .4byte VMap - thumb_func_end fillWestConnection - - thumb_func_start fillEastConnection -fillEastConnection: @ 8058CE0 - push {r4-r7,lr} - sub sp, 0xC - adds r3, r0, 0 - adds r5, r1, 0 - cmp r5, 0 - beq _08058D38 - ldr r0, [r5] - ldr r4, [r0, 0x4] - ldr r0, [r3] - ldr r0, [r0] - adds r7, r0, 0x7 - adds r2, 0x7 - cmp r2, 0 - bge _08058D14 - negs r6, r2 - adds r1, r2, r4 - ldr r0, _08058D10 @ =VMap - ldr r3, [r0, 0x4] - cmp r1, r3 - bge _08058D0A - adds r3, r1, 0 -_08058D0A: - movs r2, 0 - b _08058D24 - .align 2, 0 -_08058D10: .4byte VMap -_08058D14: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08058D40 @ =VMap - ldr r1, [r1, 0x4] - subs r3, r1, r2 - cmp r0, r1 - bge _08058D24 - adds r3, r4, 0 -_08058D24: - str r6, [sp] - movs r0, 0x8 - str r0, [sp, 0x4] - str r3, [sp, 0x8] - adds r0, r7, 0 - adds r1, r2, 0 - adds r2, r5, 0 - movs r3, 0 - bl sub_8058B54 -_08058D38: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08058D40: .4byte VMap - thumb_func_end fillEastConnection - thumb_func_start MapGridGetZCoordAt MapGridGetZCoordAt: @ 8058D44 push {r4-r7,lr} @@ -1293,7 +893,7 @@ _080593B0: subs r0, 0x8 cmp r7, r0 blt _080593DC - ldr r0, _080593D8 @ =gUnknown_2036E24 + ldr r0, _080593D8 @ =gMapConnectionFlags ldrb r1, [r0] movs r0, 0x8 ands r0, r1 @@ -1305,11 +905,11 @@ _080593B0: _080593CC: .4byte gMapHeader _080593D0: .4byte 0x000003ff _080593D4: .4byte VMap -_080593D8: .4byte gUnknown_2036E24 +_080593D8: .4byte gMapConnectionFlags _080593DC: cmp r7, 0x6 bgt _080593F4 - ldr r0, _080593F0 @ =gUnknown_2036E24 + ldr r0, _080593F0 @ =gMapConnectionFlags ldrb r1, [r0] movs r0, 0x4 ands r0, r1 @@ -1318,13 +918,13 @@ _080593DC: movs r0, 0x3 b _08059432 .align 2, 0 -_080593F0: .4byte gUnknown_2036E24 +_080593F0: .4byte gMapConnectionFlags _080593F4: ldr r0, [r1, 0x4] subs r0, 0x7 cmp r8, r0 blt _08059410 - ldr r0, _0805940C @ =gUnknown_2036E24 + ldr r0, _0805940C @ =gMapConnectionFlags ldrb r1, [r0] movs r0, 0x1 ands r0, r1 @@ -1333,12 +933,12 @@ _080593F4: movs r0, 0x1 b _08059432 .align 2, 0 -_0805940C: .4byte gUnknown_2036E24 +_0805940C: .4byte gMapConnectionFlags _08059410: mov r0, r8 cmp r0, 0x6 bgt _08059430 - ldr r0, _08059428 @ =gUnknown_2036E24 + ldr r0, _08059428 @ =gMapConnectionFlags ldrb r1, [r0] movs r0, 0x2 ands r0, r1 @@ -1349,7 +949,7 @@ _08059422: negs r0, r0 b _08059432 .align 2, 0 -_08059428: .4byte gUnknown_2036E24 +_08059428: .4byte gMapConnectionFlags _0805942C: movs r0, 0x2 b _08059432 diff --git a/data/fieldmap.s b/data/fieldmap.s index 4248e441a..8b58a6043 100644 --- a/data/fieldmap.s +++ b/data/fieldmap.s @@ -5,8 +5,8 @@ gUnknown_8352754:: @ 8352754 .incbin "baserom.gba", 0x352754, 0x798 -gUnknown_8352EEC:: @ 8352EEC - .incbin "baserom.gba", 0x352EEC, 0x4 +sDummyConnectionFlags:: @ 8352EEC + .4byte 0 gUnknown_8352EF0:: @ 8352EF0 .incbin "baserom.gba", 0x352EF0, 0x20 diff --git a/src/fieldmap.c b/src/fieldmap.c index f9b3ad897..a78b7189c 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -3,13 +3,29 @@ #include "script.h" #include "fieldmap.h" +struct ConnectionFlags +{ + u8 south:1; + u8 north:1; + u8 west:1; + u8 east:1; +}; + void sub_8058A00(struct MapHeader *mapHeader); void map_copy_with_padding(u16 *map, u16 width, u16 height); void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader); +void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); void sub_80591C4(void); struct BackupMapData VMap; -EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE]; +EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; +EWRAM_DATA struct MapHeader gMapHeader = {}; +EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {}; + +extern const struct ConnectionFlags sDummyConnectionFlags; const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection) { @@ -40,3 +56,269 @@ void sub_8058A00(struct MapHeader * mapHeader) map_copy_with_padding(mapData->map, mapData->width, mapData->height); mapheader_copy_mapdata_of_adjacent_maps(mapHeader); } + +void map_copy_with_padding(u16 *map, u16 width, u16 height) +{ + s32 y; + u16 *dest = VMap.map; + dest += VMap.Xsize * 7 + 7; + + for (y = 0; y < height; y++) + { + CpuCopy16(map, dest, width * sizeof(u16)); + dest += width + 15; + map += width; + } +} + +void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader) +{ + int count; + struct MapConnection *connection; + int i; + + gMapConnectionFlags = sDummyConnectionFlags; + + /* + * This null pointer check is new to FireRed. It was kept in + * Emerald, with the above struct assignment moved to after + * this check. + */ + if (mapHeader->connections) + { + count = mapHeader->connections->count; + connection = mapHeader->connections->connections; + // Emerald puts this line here instead: + // gMapConnectionFlags = sDummyConnectionFlags; + for (i = 0; i < count; i++, connection++) + { + struct MapHeader const *cMap = mapconnection_get_mapheader(connection); + u32 offset = connection->offset; + switch (connection->direction) + { + case CONNECTION_SOUTH: + fillSouthConnection(mapHeader, cMap, offset); + gMapConnectionFlags.south = 1; + break; + case CONNECTION_NORTH: + fillNorthConnection(mapHeader, cMap, offset); + gMapConnectionFlags.north = 1; + break; + case CONNECTION_WEST: + fillWestConnection(mapHeader, cMap, offset); + gMapConnectionFlags.west = 1; + break; + case CONNECTION_EAST: + fillEastConnection(mapHeader, cMap, offset); + gMapConnectionFlags.east = 1; + break; + } + } + } +} + +void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height) +{ + int i; + u16 *src; + u16 *dest; + int mapWidth; + + mapWidth = connectedMapHeader->mapData->width; + src = &connectedMapHeader->mapData->map[mapWidth * y2 + x2]; + dest = &VMap.map[VMap.Xsize * y + x]; + + for (i = 0; i < height; i++) + { + CpuCopy16(src, dest, width * 2); + dest += VMap.Xsize; + src += mapWidth; + } +} + +void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + int x, y; + int x2; + int width; + int cWidth; + + if (connectedMapHeader) + { + cWidth = connectedMapHeader->mapData->width; + x = offset + 7; + y = mapHeader->mapData->height + 7; + if (x < 0) + { + x2 = -x; + x += cWidth; + if (x < VMap.Xsize) + { + width = x; + } + else + { + width = VMap.Xsize; + } + x = 0; + } + else + { + x2 = 0; + if (x + cWidth < VMap.Xsize) + { + width = cWidth; + } + else + { + width = VMap.Xsize - x; + } + } + + sub_8058B54( + x, y, + connectedMapHeader, + x2, /*y2*/ 0, + width, /*height*/ 7); + } +} + +void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + int x; + int x2, y2; + int width; + int cWidth, cHeight; + + if (connectedMapHeader) + { + cWidth = connectedMapHeader->mapData->width; + cHeight = connectedMapHeader->mapData->height; + x = offset + 7; + y2 = cHeight - 7; + if (x < 0) + { + x2 = -x; + x += cWidth; + if (x < VMap.Xsize) + { + width = x; + } + else + { + width = VMap.Xsize; + } + x = 0; + } + else + { + x2 = 0; + if (x + cWidth < VMap.Xsize) + { + width = cWidth; + } + else + { + width = VMap.Xsize - x; + } + } + + sub_8058B54( + x, /*y*/ 0, + connectedMapHeader, + x2, y2, + width, /*height*/ 7); + + } +} + +void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + int y; + int x2, y2; + int height; + int cWidth, cHeight; + if (connectedMapHeader) + { + cWidth = connectedMapHeader->mapData->width; + cHeight = connectedMapHeader->mapData->height; + y = offset + 7; + x2 = cWidth - 7; + if (y < 0) + { + y2 = -y; + if (y + cHeight < VMap.Ysize) + { + height = y + cHeight; + } + else + { + height = VMap.Ysize; + } + y = 0; + } + else + { + y2 = 0; + if (y + cHeight < VMap.Ysize) + { + height = cHeight; + } + else + { + height = VMap.Ysize - y; + } + } + + sub_8058B54( + /*x*/ 0, y, + connectedMapHeader, + x2, y2, + /*width*/ 7, height); + } +} + +void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) +{ + int x, y; + int y2; + int height; + int cHeight; + if (connectedMapHeader) + { + cHeight = connectedMapHeader->mapData->height; + x = mapHeader->mapData->width + 7; + y = offset + 7; + if (y < 0) + { + y2 = -y; + if (y + cHeight < VMap.Ysize) + { + height = y + cHeight; + } + else + { + height = VMap.Ysize; + } + y = 0; + } + else + { + y2 = 0; + if (y + cHeight < VMap.Ysize) + { + height = cHeight; + } + else + { + height = VMap.Ysize - y; + } + } + + sub_8058B54( + x, y, + connectedMapHeader, + /*x2*/ 0, y2, + /*width*/ 8, height); + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 1f63459b9..d108b01f3 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -602,7 +602,7 @@ gMapHeader: @ 2036DFC gUnknown_2036E18: @ 2036E18 .space 0xC -gUnknown_2036E24: @ 2036E24 +gMapConnectionFlags: @ 2036E24 .space 0x4 gUnknown_2036E28: @ 2036E28 From 9aab26afa5315c32f83ae7f40e19c9053d602089 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 14:39:28 -0500 Subject: [PATCH 019/318] through MapGridGetMetatileIdAt --- asm/field_camera.s | 2 +- asm/field_door.s | 8 +- asm/field_map_obj.s | 4 +- asm/field_tasks.s | 4 +- asm/fieldmap.s | 248 +------------------------------------- asm/fldeff_cut.s | 2 +- asm/item_use.s | 2 +- asm/overworld.s | 2 +- asm/shop.s | 6 +- include/fieldmap.h | 2 +- include/global.fieldmap.h | 2 + src/fieldmap.c | 138 +++++++++++++++++---- 12 files changed, 136 insertions(+), 284 deletions(-) diff --git a/asm/field_camera.s b/asm/field_camera.s index 3d4ca0025..3d0ed4ba7 100644 --- a/asm/field_camera.s +++ b/asm/field_camera.s @@ -528,7 +528,7 @@ sub_805A948: @ 805A948 mov r8, r1 adds r0, r6, 0 adds r1, r7, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x80 diff --git a/asm/field_door.s b/asm/field_door.s index 4384531d0..bcb8a6082 100644 --- a/asm/field_door.s +++ b/asm/field_door.s @@ -337,7 +337,7 @@ sub_805B158: @ 805B158 adds r6, r2, 0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -392,7 +392,7 @@ sub_805B1B8: @ 805B1B8 adds r6, r2, 0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -439,7 +439,7 @@ sub_805B210: @ 805B210 adds r6, r2, 0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -643,7 +643,7 @@ sub_805B388: @ 805B388 adds r4, r0, 0 adds r0, r1, 0 adds r1, r2, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 2c57aa70c..04770435e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -12332,7 +12332,7 @@ npc_block_way: @ 80636AC _080636E2: adds r0, r5, 0 adds r1, r4, 0 - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 cmp r0, 0 bne _08063724 @@ -12432,7 +12432,7 @@ sub_8063770: @ 8063770 lsrs r4, r1, 31 adds r0, r6, 0 adds r1, r5, 0 - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 cmp r0, 0 bne _080637E8 diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 306b52940..b4106c021 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -490,7 +490,7 @@ _0806EB8E: ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] - bl sub_8058E48 + bl MapGridGetMetatileIdAt ldr r1, _0806EBDC @ =0x0000020a cmp r0, r1 bne _0806EBE4 @@ -534,7 +534,7 @@ sub_806EC04: @ 806EC04 asrs r4, r1, 16 adds r0, r5, 0 adds r1, r4, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt ldr r1, _0806EC38 @ =0x0000022f ldr r2, _0806EC3C @ =0x00000237 cmp r0, r1 diff --git a/asm/fieldmap.s b/asm/fieldmap.s index 15a18b775..035a601dd 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -5,252 +5,6 @@ .text - thumb_func_start MapGridGetZCoordAt -MapGridGetZCoordAt: @ 8058D44 - push {r4-r7,lr} - adds r2, r0, 0 - adds r7, r1, 0 - cmp r2, 0 - blt _08058D74 - ldr r1, _08058D70 @ =VMap - ldr r3, [r1] - cmp r2, r3 - bge _08058D74 - cmp r7, 0 - blt _08058D74 - ldr r0, [r1, 0x4] - cmp r7, r0 - bge _08058D74 - adds r0, r3, 0 - muls r0, r7 - adds r0, r2, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _08058DA8 - .align 2, 0 -_08058D70: .4byte VMap -_08058D74: - ldr r0, _08058DB4 @ =gMapHeader - ldr r6, [r0] - subs r0, r2, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - subs r0, r7, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r1, r0 -_08058DA8: - ldr r0, _08058DB8 @ =0x000003ff - cmp r1, r0 - beq _08058DBC - lsrs r0, r1, 12 - b _08058DBE - .align 2, 0 -_08058DB4: .4byte gMapHeader -_08058DB8: .4byte 0x000003ff -_08058DBC: - movs r0, 0 -_08058DBE: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MapGridGetZCoordAt - - thumb_func_start sub_8058DC4 -sub_8058DC4: @ 8058DC4 - push {r4-r7,lr} - adds r2, r0, 0 - adds r7, r1, 0 - cmp r2, 0 - blt _08058DF4 - ldr r1, _08058DF0 @ =VMap - ldr r3, [r1] - cmp r2, r3 - bge _08058DF4 - cmp r7, 0 - blt _08058DF4 - ldr r0, [r1, 0x4] - cmp r7, r0 - bge _08058DF4 - adds r0, r3, 0 - muls r0, r7 - adds r0, r2, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _08058E28 - .align 2, 0 -_08058DF0: .4byte VMap -_08058DF4: - ldr r0, _08058E38 @ =gMapHeader - ldr r6, [r0] - subs r0, r2, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - subs r0, r7, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r1, r0 -_08058E28: - ldr r0, _08058E3C @ =0x000003ff - cmp r1, r0 - beq _08058E40 - movs r0, 0xC0 - lsls r0, 4 - ands r1, r0 - lsrs r0, r1, 10 - b _08058E42 - .align 2, 0 -_08058E38: .4byte gMapHeader -_08058E3C: .4byte 0x000003ff -_08058E40: - movs r0, 0x1 -_08058E42: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8058DC4 - - thumb_func_start sub_8058E48 -sub_8058E48: @ 8058E48 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - cmp r0, 0 - blt _08058E80 - ldr r1, _08058E7C @ =VMap - ldr r2, [r1] - cmp r8, r2 - bge _08058E80 - mov r0, r9 - cmp r0, 0 - blt _08058E80 - ldr r0, [r1, 0x4] - cmp r9, r0 - bge _08058E80 - mov r0, r9 - muls r0, r2 - add r0, r8 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - b _08058EBA - .align 2, 0 -_08058E7C: .4byte VMap -_08058E80: - ldr r0, _08058EC8 @ =gMapHeader - ldr r6, [r0] - mov r0, r8 - subs r0, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - mov r0, r9 - subs r0, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - adds r7, r0, 0 - orrs r7, r1 -_08058EBA: - ldr r0, _08058ECC @ =0x000003ff - cmp r7, r0 - beq _08058ED0 - ands r7, r0 - adds r0, r7, 0 - b _08058F0A - .align 2, 0 -_08058EC8: .4byte gMapHeader -_08058ECC: .4byte 0x000003ff -_08058ED0: - ldr r0, _08058F18 @ =gMapHeader - ldr r6, [r0] - mov r0, r8 - subs r0, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - mov r0, r9 - subs r0, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r0, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r1, r2, 0 - orrs r0, r1 - ands r0, r7 -_08058F0A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08058F18: .4byte gMapHeader - thumb_func_end sub_8058E48 - thumb_func_start sub_8058F1C sub_8058F1C: @ 8058F1C push {lr} @@ -287,7 +41,7 @@ sub_8058F48: @ 8058F48 asrs r0, 16 lsls r1, 16 asrs r1, 16 - bl sub_8058E48 + bl MapGridGetMetatileIdAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index 2497c695d..ac5ab0a72 100644 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -380,7 +380,7 @@ sub_8097B50: @ 8097B50 asrs r0, 16 lsrs r7, r1, 16 asrs r1, 16 - bl sub_8058E48 + bl MapGridGetMetatileIdAt lsls r0, 16 lsrs r2, r0, 16 ldr r1, _08097B84 @ =gUnknown_83D4100 diff --git a/asm/item_use.s b/asm/item_use.s index 0b6dacdd4..fce57bc88 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -544,7 +544,7 @@ _080A13D4: ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 cmp r0, 0 beq _080A13D0 diff --git a/asm/overworld.s b/asm/overworld.s index 071cca7e6..a24fe7740 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -7829,7 +7829,7 @@ _08058854: bls _08058810 asrs r0, r3, 16 asrs r1, r5, 16 - bl sub_8058DC4 + bl MapGridIsImpassableAt lsls r0, 24 lsrs r0, 24 _0805886A: diff --git a/asm/shop.s b/asm/shop.s index 25a2311ce..91bbf195c 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -1632,7 +1632,7 @@ _0809B7B2: movs r3, 0 ldrsh r1, [r2, r3] adds r1, r7 - bl sub_8058E48 + bl MapGridGetMetatileIdAt lsls r0, 16 lsrs r5, r0, 16 mov r0, sp @@ -2940,7 +2940,7 @@ _0809C238: adds r5, r1, r0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt movs r2, 0 ldrsh r1, [r7, r2] lsls r0, 16 @@ -3006,7 +3006,7 @@ _0809C2B8: adds r5, r1, r0 adds r0, r5, 0 adds r1, r6, 0 - bl sub_8058E48 + bl MapGridGetMetatileIdAt movs r1, 0x2 subs r1, r7 lsls r1, 1 diff --git a/include/fieldmap.h b/include/fieldmap.h index fe2b5a928..e6a1e944a 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -15,7 +15,7 @@ u32 MapGridGetMetatileBehaviorAt(int, int); void MapGridSetMetatileIdAt(int, int, u16); void MapGridSetMetatileEntryAt(int, int, u16); void GetCameraCoords(u16*, u16*); -bool8 MapGridIsImpassableAt(s16, s16); +bool8 MapGridIsImpassableAt(s32, s32); s32 GetMapBorderIdAt(s16, s16); bool32 CanCameraMoveInDirection(u8); u16 GetBehaviorByMetatileId(u16 metatileId); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 3b3648121..c7a55fd02 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -63,6 +63,8 @@ struct MapData /*0x0c*/ u16 *map; /*0x10*/ struct Tileset *primaryTileset; /*0x14*/ struct Tileset *secondaryTileset; + /*0x18*/ u8 unk18; + /*0x19*/ u8 unk19; }; struct BackupMapData diff --git a/src/fieldmap.c b/src/fieldmap.c index a78b7189c..de29efe56 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -73,9 +73,9 @@ void map_copy_with_padding(u16 *map, u16 width, u16 height) void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader) { - int count; + s32 count; struct MapConnection *connection; - int i; + s32 i; gMapConnectionFlags = sDummyConnectionFlags; @@ -119,10 +119,10 @@ void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader) void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height) { - int i; + s32 i; u16 *src; u16 *dest; - int mapWidth; + s32 mapWidth; mapWidth = connectedMapHeader->mapData->width; src = &connectedMapHeader->mapData->map[mapWidth * y2 + x2]; @@ -135,13 +135,13 @@ void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x src += mapWidth; } } - + void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { - int x, y; - int x2; - int width; - int cWidth; + s32 x, y; + s32 x2; + s32 width; + s32 cWidth; if (connectedMapHeader) { @@ -185,10 +185,10 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { - int x; - int x2, y2; - int width; - int cWidth, cHeight; + s32 x; + s32 x2, y2; + s32 width; + s32 cWidth, cHeight; if (connectedMapHeader) { @@ -234,10 +234,10 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { - int y; - int x2, y2; - int height; - int cWidth, cHeight; + s32 y; + s32 x2, y2; + s32 height; + s32 cWidth, cHeight; if (connectedMapHeader) { cWidth = connectedMapHeader->mapData->width; @@ -280,10 +280,10 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset) { - int x, y; - int y2; - int height; - int cHeight; + s32 x, y; + s32 y2; + s32 height; + s32 cHeight; if (connectedMapHeader) { cHeight = connectedMapHeader->mapData->height; @@ -322,3 +322,99 @@ void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader cons /*width*/ 8, height); } } + +union Block +{ + struct + { + u16 block:10; + u16 collision:2; + u16 elevation:4; + } block; + u16 value; +}; + +#define MapGridGetBorderTileAt(x, y) ({ \ + u16 block; \ + s32 xprime; \ + s32 yprime; \ + \ + struct MapData *mapData = gMapHeader.mapData; \ + \ + xprime = x - 7; \ + xprime += 8 * mapData->unk18; \ + xprime %= mapData->unk18; \ + \ + yprime = y - 7; \ + yprime += 8 * mapData->unk19; \ + yprime %= mapData->unk19; \ + \ + block = mapData->border[xprime + yprime * mapData->unk18]; \ + block |= 0xC00; \ + block; \ +}) + +#define MapGridGetBorderTileAt2(x, y) ({ \ + u16 block; \ + s32 xprime; \ + s32 yprime; \ + \ + struct MapData *mapData = gMapHeader.mapData; \ + \ + xprime = x - 7; \ + xprime += 8 * mapData->unk18; \ + xprime %= mapData->unk18; \ + \ + yprime = y - 7; \ + yprime += 8 * mapData->unk19; \ + yprime %= mapData->unk19; \ + \ + block = mapData->border[xprime + yprime * mapData->unk18] | 0xC00; \ + block; \ +}) + +#define MapGridGetTileAt(x, y) ({ \ + u16 block; \ + if (x >= 0 && x < VMap.Xsize \ + && y >= 0 && y < VMap.Ysize) \ + block = VMap.map[x + VMap.Xsize * y]; \ + else \ + block = MapGridGetBorderTileAt2(x, y); \ + block; \ +}) + +u8 MapGridGetZCoordAt(s32 x, s32 y) +{ + u16 block = MapGridGetTileAt(x, y); + + if (block == 0x3ff) + { + return 0; + } + + return block >> 12; +} + +u8 MapGridIsImpassableAt(s32 x, s32 y) +{ + + u16 block = MapGridGetTileAt(x, y); + + if (block == 0x3ff) + { + return 1; + } + + return (block & 0xc00) >> 10; +} + +u32 MapGridGetMetatileIdAt(s32 x, s32 y) +{ + u16 block = MapGridGetTileAt(x, y); + + if (block == 0x3FF) + { + return MapGridGetBorderTileAt(x, y) & 0x3FF; + } + return block & 0x3FF; +} From b4f57a6c265af82f7ae222a5ae2d66450aea512c Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 15:02:57 -0500 Subject: [PATCH 020/318] through sub_8059024 --- asm/field_camera.s | 2 +- asm/fieldmap.s | 202 --------------------------------------------- asm/shop.s | 2 +- data/fieldmap.s | 9 -- src/fieldmap.c | 157 +++++++++++++++++++++++++++-------- 5 files changed, 123 insertions(+), 249 deletions(-) diff --git a/asm/field_camera.s b/asm/field_camera.s index 3d0ed4ba7..5541c6472 100644 --- a/asm/field_camera.s +++ b/asm/field_camera.s @@ -557,7 +557,7 @@ _0805A98C: asrs r0, 16 lsls r1, r7, 16 asrs r1, 16 - bl sub_8058F8C + bl MapGridGetMetatileLayerTypeAt lsls r0, 24 lsrs r0, 24 lsls r1, r4, 4 diff --git a/asm/fieldmap.s b/asm/fieldmap.s index 035a601dd..eb22650e5 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -5,208 +5,6 @@ .text - thumb_func_start sub_8058F1C -sub_8058F1C: @ 8058F1C - push {lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r3, r1, 24 - cmp r3, 0x7 - bhi _08058F3A - ldr r1, _08058F40 @ =gUnknown_8352EF0 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - ldr r0, _08058F44 @ =gUnknown_8352F10 - adds r0, r3, r0 - ldrb r0, [r0] - lsrs r2, r0 -_08058F3A: - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_08058F40: .4byte gUnknown_8352EF0 -_08058F44: .4byte gUnknown_8352F10 - thumb_func_end sub_8058F1C - - thumb_func_start sub_8058F48 -sub_8058F48: @ 8058F48 - push {r4,lr} - adds r4, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08058F74 @ =gMapHeader - ldr r0, [r0] - adds r2, r4, 0 - bl sub_8059080 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08058F74: .4byte gMapHeader - thumb_func_end sub_8058F48 - - thumb_func_start MapGridGetMetatileBehaviorAt -MapGridGetMetatileBehaviorAt: @ 8058F78 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - movs r2, 0 - bl sub_8058F48 - pop {r1} - bx r1 - thumb_func_end MapGridGetMetatileBehaviorAt - - thumb_func_start sub_8058F8C -sub_8058F8C: @ 8058F8C - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - movs r2, 0x6 - bl sub_8058F48 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8058F8C - - thumb_func_start MapGridSetMetatileIdAt -MapGridSetMetatileIdAt: @ 8058FA4 - push {r4,r5,lr} - adds r3, r0, 0 - lsls r2, 16 - lsrs r5, r2, 16 - cmp r3, 0 - blt _08058FDC - ldr r2, _08058FE4 @ =VMap - ldr r4, [r2] - cmp r3, r4 - bge _08058FDC - cmp r1, 0 - blt _08058FDC - ldr r0, [r2, 0x4] - cmp r1, r0 - bge _08058FDC - muls r1, r4 - adds r1, r3, r1 - ldr r0, [r2, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - movs r2, 0xF0 - lsls r2, 8 - ands r2, r0 - ldr r0, _08058FE8 @ =0x00000fff - ands r0, r5 - orrs r2, r0 - strh r2, [r1] -_08058FDC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08058FE4: .4byte VMap -_08058FE8: .4byte 0x00000fff - thumb_func_end MapGridSetMetatileIdAt - - thumb_func_start MapGridSetMetatileEntryAt -MapGridSetMetatileEntryAt: @ 8058FEC - push {r4,r5,lr} - adds r3, r0, 0 - lsls r2, 16 - lsrs r5, r2, 16 - cmp r3, 0 - blt _08059018 - ldr r2, _08059020 @ =VMap - ldr r4, [r2] - cmp r3, r4 - bge _08059018 - cmp r1, 0 - blt _08059018 - ldr r0, [r2, 0x4] - cmp r1, r0 - bge _08059018 - adds r0, r4, 0 - muls r0, r1 - adds r0, r3, r0 - ldr r1, [r2, 0x8] - lsls r0, 1 - adds r0, r1 - strh r5, [r0] -_08059018: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059020: .4byte VMap - thumb_func_end MapGridSetMetatileEntryAt - - thumb_func_start sub_8059024 -sub_8059024: @ 8059024 - push {r4,r5,lr} - adds r4, r0, 0 - adds r3, r1, 0 - adds r5, r2, 0 - cmp r4, 0 - blt _08059076 - ldr r2, _08059060 @ =VMap - ldr r1, [r2] - cmp r4, r1 - bge _08059076 - cmp r3, 0 - blt _08059076 - ldr r0, [r2, 0x4] - cmp r3, r0 - bge _08059076 - cmp r5, 0 - beq _08059064 - adds r0, r1, 0 - muls r0, r3 - adds r0, r4, r0 - ldr r1, [r2, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r3, 0xC0 - lsls r3, 4 - adds r2, r3, 0 - orrs r1, r2 - strh r1, [r0] - b _08059076 - .align 2, 0 -_08059060: .4byte VMap -_08059064: - muls r1, r3 - adds r1, r4, r1 - ldr r0, [r2, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r2, [r1] - ldr r0, _0805907C @ =0x0000f3ff - ands r0, r2 - strh r0, [r1] -_08059076: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805907C: .4byte 0x0000f3ff - thumb_func_end sub_8059024 - thumb_func_start sub_8059080 sub_8059080: @ 8059080 push {r4-r6,lr} diff --git a/asm/shop.s b/asm/shop.s index 91bbf195c..aed90ff85 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -1645,7 +1645,7 @@ _0809B7B2: adds r1, r7, r1 lsls r1, 16 asrs r1, 16 - bl sub_8058F8C + bl MapGridGetMetatileLayerTypeAt lsls r0, 24 lsrs r3, r0, 24 ldr r0, _0809B808 @ =0x0000027f diff --git a/data/fieldmap.s b/data/fieldmap.s index 8b58a6043..3b24a4f86 100644 --- a/data/fieldmap.s +++ b/data/fieldmap.s @@ -4,12 +4,3 @@ gUnknown_8352754:: @ 8352754 .incbin "baserom.gba", 0x352754, 0x798 - -sDummyConnectionFlags:: @ 8352EEC - .4byte 0 - -gUnknown_8352EF0:: @ 8352EF0 - .incbin "baserom.gba", 0x352EF0, 0x20 - -gUnknown_8352F10:: @ 8352F10 - .incbin "baserom.gba", 0x352F10, 0x8 diff --git a/src/fieldmap.c b/src/fieldmap.c index de29efe56..c0926ffad 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -18,6 +18,7 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); +u32 sub_8059080(struct MapData *mapData, u16 metatileId, u8 z); void sub_80591C4(void); struct BackupMapData VMap; @@ -25,7 +26,29 @@ EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; EWRAM_DATA struct MapHeader gMapHeader = {}; EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {}; -extern const struct ConnectionFlags sDummyConnectionFlags; +const struct ConnectionFlags sDummyConnectionFlags = {}; + +const u32 gUnknown_8352EF0[] = { + 0x1ff, + 0x3e00, + 0x3c000, + 0xfc0000, + 0x7000000, + 0x18000000, + 0x60000000, + 0x80000000 +}; + +const u8 gUnknown_8352F10[] = { + 0, + 9, + 14, + 18, + 24, + 27, + 29, + 31 +}; const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection) { @@ -334,43 +357,43 @@ union Block u16 value; }; -#define MapGridGetBorderTileAt(x, y) ({ \ - u16 block; \ - s32 xprime; \ - s32 yprime; \ - \ - struct MapData *mapData = gMapHeader.mapData; \ - \ - xprime = x - 7; \ - xprime += 8 * mapData->unk18; \ - xprime %= mapData->unk18; \ - \ - yprime = y - 7; \ - yprime += 8 * mapData->unk19; \ - yprime %= mapData->unk19; \ - \ - block = mapData->border[xprime + yprime * mapData->unk18]; \ - block |= 0xC00; \ - block; \ +#define MapGridGetBorderTileAt(x, y) ({ \ + u16 block; \ + s32 xprime; \ + s32 yprime; \ + \ + struct MapData *mapData = gMapHeader.mapData; \ + \ + xprime = x - 7; \ + xprime += 8 * mapData->unk18; \ + xprime %= mapData->unk18; \ + \ + yprime = y - 7; \ + yprime += 8 * mapData->unk19; \ + yprime %= mapData->unk19; \ + \ + block = mapData->border[xprime + yprime * mapData->unk18]; \ + block |= 0xC00; \ + block; \ }) -#define MapGridGetBorderTileAt2(x, y) ({ \ - u16 block; \ - s32 xprime; \ - s32 yprime; \ - \ - struct MapData *mapData = gMapHeader.mapData; \ - \ - xprime = x - 7; \ - xprime += 8 * mapData->unk18; \ - xprime %= mapData->unk18; \ - \ - yprime = y - 7; \ - yprime += 8 * mapData->unk19; \ - yprime %= mapData->unk19; \ - \ - block = mapData->border[xprime + yprime * mapData->unk18] | 0xC00; \ - block; \ +#define MapGridGetBorderTileAt2(x, y) ({ \ + u16 block; \ + s32 xprime; \ + s32 yprime; \ + \ + struct MapData *mapData = gMapHeader.mapData; \ + \ + xprime = x - 7; \ + xprime += 8 * mapData->unk18; \ + xprime %= mapData->unk18; \ + \ + yprime = y - 7; \ + yprime += 8 * mapData->unk19; \ + yprime %= mapData->unk19; \ + \ + block = mapData->border[xprime + yprime * mapData->unk18] | 0xC00; \ + block; \ }) #define MapGridGetTileAt(x, y) ({ \ @@ -418,3 +441,65 @@ u32 MapGridGetMetatileIdAt(s32 x, s32 y) } return block & 0x3FF; } + +u32 sub_8058F1C(u32 original, u8 bit) +{ + if (bit >= 8) + return original; + + return (original & gUnknown_8352EF0[bit]) >> gUnknown_8352F10[bit]; +} + +u32 sub_8058F48(s16 x, s16 y, u8 z) +{ + u16 metatileId = MapGridGetMetatileIdAt(x, y); + return sub_8059080(gMapHeader.mapData, metatileId, z); +} + +u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y) +{ + return sub_8058F48(x, y, 0); +} + +u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y) +{ + return sub_8058F48(x, y, 6); +} + +void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile) +{ + int i; + if (x >= 0 && x < VMap.Xsize + && y >= 0 && y < VMap.Ysize) + { + i = x + y * VMap.Xsize; + VMap.map[i] = (VMap.map[i] & 0xf000) | (metatile & 0xfff); + } +} + +void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile) +{ + int i; + if (x >= 0 && x < VMap.Xsize + && y >= 0 && y < VMap.Ysize) + { + i = x + VMap.Xsize * y; + VMap.map[i] = metatile; + } +} + +void sub_8059024(s32 x, s32 y, bool32 arg2) +{ + if (x >= 0 && x < VMap.Xsize + && y >= 0 && y < VMap.Ysize) + { + if (arg2) + { + VMap.map[x + VMap.Xsize * y] |= 0x0C00; + } + else + { + VMap.map[x + VMap.Xsize * y] &= ~0x0C00; + } + } +} From e1bd043bf3049b8a91b718ca1e4416711f0b8646 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 15:32:11 -0500 Subject: [PATCH 021/318] through sub_8059250 --- asm/fieldmap.s | 374 +------------------------------------- asm/start_menu.s | 2 +- asm/tileset_anims.s | 120 ++++++------ include/fieldmap.h | 8 +- include/global.fieldmap.h | 2 +- include/global.h | 3 +- src/fieldmap.c | 150 ++++++++++++++- src/save.c | 4 +- sym_bss.txt | 12 +- 9 files changed, 224 insertions(+), 451 deletions(-) diff --git a/asm/fieldmap.s b/asm/fieldmap.s index eb22650e5..5d8562d4a 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -5,378 +5,6 @@ .text - thumb_func_start sub_8059080 -sub_8059080: @ 8059080 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r3, r1, 16 - adds r5, r3, 0 - lsls r2, 24 - lsrs r2, 24 - adds r6, r2, 0 - ldr r0, _080590A4 @ =0x0000027f - cmp r3, r0 - bhi _080590A8 - ldr r0, [r4, 0x10] - ldr r1, [r0, 0x14] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - adds r1, r2, 0 - b _080590C8 - .align 2, 0 -_080590A4: .4byte 0x0000027f -_080590A8: - ldr r0, _080590B4 @ =0x000003ff - cmp r3, r0 - bls _080590B8 - movs r0, 0xFF - b _080590CC - .align 2, 0 -_080590B4: .4byte 0x000003ff -_080590B8: - ldr r0, [r4, 0x14] - ldr r1, [r0, 0x14] - lsls r0, r5, 2 - adds r0, r1 - ldr r1, _080590D4 @ =0xfffff600 - adds r0, r1 - ldr r0, [r0] - adds r1, r6, 0 -_080590C8: - bl sub_8058F1C -_080590CC: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080590D4: .4byte 0xfffff600 - thumb_func_end sub_8059080 - - thumb_func_start sub_80590D8 -sub_80590D8: @ 80590D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08059144 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, _08059148 @ =0x00000898 - adds r4, r0, r1 - ldr r0, _0805914C @ =VMap - ldr r0, [r0] - mov r8, r0 - ldr r0, _08059150 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r2, 0 - ldrsh r6, [r0, r2] - movs r1, 0x2 - ldrsh r0, [r0, r1] - adds r1, r0, 0 - adds r1, 0xE - cmp r0, r1 - bge _08059138 - mov r12, r1 - ldr r2, _08059154 @ =gBackupMapData - mov r9, r2 - lsls r7, r6, 1 -_0805910A: - adds r1, r6, 0 - adds r3, r1, 0 - adds r3, 0xF - adds r5, r0, 0x1 - cmp r1, r3 - bge _08059132 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - lsls r0, 1 - add r0, r9 - adds r2, r7, r0 - subs r1, r3, r1 -_08059124: - ldrh r0, [r2] - strh r0, [r4] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _08059124 -_08059132: - adds r0, r5, 0 - cmp r0, r12 - blt _0805910A -_08059138: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08059144: .4byte gSaveBlock2Ptr -_08059148: .4byte 0x00000898 -_0805914C: .4byte VMap -_08059150: .4byte gSaveBlock1Ptr -_08059154: .4byte gBackupMapData - thumb_func_end sub_80590D8 - - thumb_func_start sub_8059158 -sub_8059158: @ 8059158 - push {r4,lr} - movs r2, 0 - movs r1, 0 - ldr r0, _08059184 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r4, _08059188 @ =0x00000898 - adds r3, r0, r4 - ldr r4, _0805918C @ =0x000001ff -_08059168: - lsls r0, r1, 1 - adds r0, r3, r0 - ldrh r0, [r0] - orrs r2, r0 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r4 - bls _08059168 - cmp r2, 0 - beq _08059190 - movs r0, 0 - b _08059192 - .align 2, 0 -_08059184: .4byte gSaveBlock2Ptr -_08059188: .4byte 0x00000898 -_0805918C: .4byte 0x000001ff -_08059190: - movs r0, 0x1 -_08059192: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8059158 - - thumb_func_start sub_8059198 -sub_8059198: @ 8059198 - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r0, _080591B8 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, _080591BC @ =0x00000898 - adds r1, r0 - ldr r2, _080591C0 @ =0x01000100 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080591B8: .4byte gSaveBlock2Ptr -_080591BC: .4byte 0x00000898 -_080591C0: .4byte 0x01000100 - thumb_func_end sub_8059198 - - thumb_func_start sub_80591C4 -sub_80591C4: @ 80591C4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0805923C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, _08059240 @ =0x00000898 - adds r4, r0, r1 - bl sub_8059158 - cmp r0, 0 - bne _08059230 - ldr r0, _08059244 @ =VMap - ldr r0, [r0] - mov r8, r0 - ldr r0, _08059248 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r2, 0 - ldrsh r6, [r0, r2] - movs r1, 0x2 - ldrsh r0, [r0, r1] - adds r1, r0, 0 - adds r1, 0xE - cmp r0, r1 - bge _0805922C - mov r12, r1 - ldr r2, _0805924C @ =gBackupMapData - mov r9, r2 - lsls r7, r6, 1 -_080591FE: - adds r1, r6, 0 - adds r3, r1, 0 - adds r3, 0xF - adds r5, r0, 0x1 - cmp r1, r3 - bge _08059226 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - lsls r0, 1 - add r0, r9 - adds r2, r7, r0 - subs r1, r3, r1 -_08059218: - ldrh r0, [r4] - strh r0, [r2] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _08059218 -_08059226: - adds r0, r5, 0 - cmp r0, r12 - blt _080591FE -_0805922C: - bl sub_8059198 -_08059230: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805923C: .4byte gSaveBlock2Ptr -_08059240: .4byte 0x00000898 -_08059244: .4byte VMap -_08059248: .4byte gSaveBlock1Ptr -_0805924C: .4byte gBackupMapData - thumb_func_end sub_80591C4 - - thumb_func_start sub_8059250 -sub_8059250: @ 8059250 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0805929C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r3, _080592A0 @ =0x00000898 - adds r3, r0, r3 - str r3, [sp, 0x4] - ldr r0, _080592A4 @ =VMap - ldr r0, [r0] - str r0, [sp] - movs r4, 0 - mov r9, r4 - mov r8, r4 - ldr r0, _080592A8 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r3, 0 - ldrsh r6, [r0, r3] - str r6, [sp, 0x8] - movs r4, 0x2 - ldrsh r5, [r0, r4] - movs r7, 0xF - movs r6, 0xE - mov r12, r6 - cmp r1, 0x2 - beq _080592B6 - cmp r1, 0x2 - bgt _080592AC - cmp r1, 0x1 - beq _080592BE - b _080592D6 - .align 2, 0 -_0805929C: .4byte gSaveBlock2Ptr -_080592A0: .4byte 0x00000898 -_080592A4: .4byte VMap -_080592A8: .4byte gSaveBlock1Ptr -_080592AC: - cmp r2, 0x3 - beq _080592C8 - cmp r2, 0x4 - beq _080592D0 - b _080592D6 -_080592B6: - adds r5, 0x1 - movs r0, 0xD - mov r12, r0 - b _080592D6 -_080592BE: - movs r1, 0x1 - mov r8, r1 - movs r3, 0xD - mov r12, r3 - b _080592D6 -_080592C8: - ldr r4, [sp, 0x8] - adds r4, 0x1 - str r4, [sp, 0x8] - b _080592D4 -_080592D0: - movs r6, 0x1 - mov r9, r6 -_080592D4: - movs r7, 0xE -_080592D6: - movs r1, 0 - cmp r1, r12 - bge _0805931A - ldr r0, _08059330 @ =gBackupMapData - mov r10, r0 -_080592E0: - adds r4, r1, 0x1 - cmp r7, 0 - beq _08059314 - adds r0, r1, r5 - ldr r3, [sp] - adds r2, r3, 0 - muls r2, r0 - add r1, r8 - lsls r0, r1, 4 - subs r0, r1 - add r0, r9 - ldr r6, [sp, 0x8] - adds r2, r6, r2 - adds r3, r7, 0 - lsls r2, 1 - add r2, r10 - lsls r0, 1 - ldr r6, [sp, 0x4] - adds r1, r0, r6 -_08059306: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _08059306 -_08059314: - adds r1, r4, 0 - cmp r1, r12 - blt _080592E0 -_0805931A: - bl sub_8059198 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08059330: .4byte gBackupMapData - thumb_func_end sub_8059250 - thumb_func_start sub_8059334 sub_8059334: @ 8059334 push {r4-r7,lr} @@ -686,7 +314,7 @@ CameraMove: @ 8059530 _08059570: .4byte gUnknown_2036E18 _08059574: .4byte gSaveBlock1Ptr _08059578: - bl sub_80590D8 + bl save_serialize_map ldr r1, _080595F8 @ =gSaveBlock1Ptr ldr r0, [r1] movs r2, 0 diff --git a/asm/start_menu.s b/asm/start_menu.s index 4a58b11ad..cfd970001 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -1109,7 +1109,7 @@ _0806F61E: thumb_func_start sub_806F624 sub_806F624: @ 806F624 push {lr} - bl sub_80590D8 + bl save_serialize_map ldr r1, _0806F63C @ =gUnknown_3000FA4 ldr r0, _0806F640 @ =sub_806F7A8 str r0, [r1] diff --git a/asm/tileset_anims.s b/asm/tileset_anims.s index 37280ab70..693962d39 100644 --- a/asm/tileset_anims.s +++ b/asm/tileset_anims.s @@ -132,11 +132,11 @@ sub_806FFB0: @ 806FFB0 sub_806FFBC: @ 806FFBC push {r4,lr} bl ResetTilesetAnimBuffer - ldr r2, _08070014 @ =gUnknown_3000FAE + ldr r2, _08070014 @ =sPrimaryTilesetCBCounter ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] - ldr r1, _08070018 @ =gUnknown_3000FB0 + ldr r1, _08070018 @ =sPrimaryTilesetCBBufferSize lsls r0, 16 lsrs r0, 16 ldrh r1, [r1] @@ -145,11 +145,11 @@ sub_806FFBC: @ 806FFBC movs r0, 0 strh r0, [r2] _0806FFDA: - ldr r4, _0807001C @ =gUnknown_3000FB2 + ldr r4, _0807001C @ =sSecondaryTilesetCBCounter ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] - ldr r1, _08070020 @ =gUnknown_3000FB4 + ldr r1, _08070020 @ =sSecondaryTilesetCBBufferSize lsls r0, 16 lsrs r0, 16 ldrh r1, [r1] @@ -158,14 +158,14 @@ _0806FFDA: movs r0, 0 strh r0, [r4] _0806FFF2: - ldr r0, _08070024 @ =gUnknown_3000FB8 + ldr r0, _08070024 @ =sPrimaryTilesetCB ldr r1, [r0] cmp r1, 0 beq _08070000 ldrh r0, [r2] bl _call_via_r1 _08070000: - ldr r0, _08070028 @ =gUnknown_3000FBC + ldr r0, _08070028 @ =sSecondaryTilesetCB ldr r1, [r0] cmp r1, 0 beq _0807000E @@ -176,23 +176,23 @@ _0807000E: pop {r0} bx r0 .align 2, 0 -_08070014: .4byte gUnknown_3000FAE -_08070018: .4byte gUnknown_3000FB0 -_0807001C: .4byte gUnknown_3000FB2 -_08070020: .4byte gUnknown_3000FB4 -_08070024: .4byte gUnknown_3000FB8 -_08070028: .4byte gUnknown_3000FBC +_08070014: .4byte sPrimaryTilesetCBCounter +_08070018: .4byte sPrimaryTilesetCBBufferSize +_0807001C: .4byte sSecondaryTilesetCBCounter +_08070020: .4byte sSecondaryTilesetCBBufferSize +_08070024: .4byte sPrimaryTilesetCB +_08070028: .4byte sSecondaryTilesetCB thumb_func_end sub_806FFBC thumb_func_start cur_mapheader_run_tileset1_func cur_mapheader_run_tileset1_func: @ 807002C push {lr} - ldr r0, _08070058 @ =gUnknown_3000FAE + ldr r0, _08070058 @ =sPrimaryTilesetCBCounter movs r1, 0 strh r1, [r0] - ldr r0, _0807005C @ =gUnknown_3000FB0 + ldr r0, _0807005C @ =sPrimaryTilesetCBBufferSize strh r1, [r0] - ldr r1, _08070060 @ =gUnknown_3000FB8 + ldr r1, _08070060 @ =sPrimaryTilesetCB movs r0, 0 str r0, [r1] ldr r0, _08070064 @ =gMapHeader @@ -208,21 +208,21 @@ _08070052: pop {r0} bx r0 .align 2, 0 -_08070058: .4byte gUnknown_3000FAE -_0807005C: .4byte gUnknown_3000FB0 -_08070060: .4byte gUnknown_3000FB8 +_08070058: .4byte sPrimaryTilesetCBCounter +_0807005C: .4byte sPrimaryTilesetCBBufferSize +_08070060: .4byte sPrimaryTilesetCB _08070064: .4byte gMapHeader thumb_func_end cur_mapheader_run_tileset1_func thumb_func_start cur_mapheader_run_tileset2_func cur_mapheader_run_tileset2_func: @ 8070068 push {lr} - ldr r0, _08070094 @ =gUnknown_3000FB2 + ldr r0, _08070094 @ =sSecondaryTilesetCBCounter movs r1, 0 strh r1, [r0] - ldr r0, _08070098 @ =gUnknown_3000FB4 + ldr r0, _08070098 @ =sSecondaryTilesetCBBufferSize strh r1, [r0] - ldr r1, _0807009C @ =gUnknown_3000FBC + ldr r1, _0807009C @ =sSecondaryTilesetCB movs r0, 0 str r0, [r1] ldr r0, _080700A0 @ =gMapHeader @@ -238,9 +238,9 @@ _0807008E: pop {r0} bx r0 .align 2, 0 -_08070094: .4byte gUnknown_3000FB2 -_08070098: .4byte gUnknown_3000FB4 -_0807009C: .4byte gUnknown_3000FBC +_08070094: .4byte sSecondaryTilesetCBCounter +_08070098: .4byte sSecondaryTilesetCBBufferSize +_0807009C: .4byte sSecondaryTilesetCB _080700A0: .4byte gMapHeader thumb_func_end cur_mapheader_run_tileset2_func @@ -342,22 +342,22 @@ _0807014C: thumb_func_start sub_8070154 sub_8070154: @ 8070154 - ldr r1, _0807016C @ =gUnknown_3000FAE + ldr r1, _0807016C @ =sPrimaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _08070170 @ =gUnknown_3000FB0 + ldr r1, _08070170 @ =sPrimaryTilesetCBBufferSize movs r2, 0xA0 lsls r2, 2 adds r0, r2, 0 strh r0, [r1] - ldr r1, _08070174 @ =gUnknown_3000FB8 + ldr r1, _08070174 @ =sPrimaryTilesetCB ldr r0, _08070178 @ =sub_8070120 str r0, [r1] bx lr .align 2, 0 -_0807016C: .4byte gUnknown_3000FAE -_08070170: .4byte gUnknown_3000FB0 -_08070174: .4byte gUnknown_3000FB8 +_0807016C: .4byte sPrimaryTilesetCBCounter +_08070170: .4byte sPrimaryTilesetCBBufferSize +_08070174: .4byte sPrimaryTilesetCB _08070178: .4byte sub_8070120 thumb_func_end sub_8070154 @@ -410,20 +410,20 @@ _080701D0: thumb_func_start sub_80701D8 sub_80701D8: @ 80701D8 - ldr r1, _080701EC @ =gUnknown_3000FB2 + ldr r1, _080701EC @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _080701F0 @ =gUnknown_3000FB4 + ldr r1, _080701F0 @ =sSecondaryTilesetCBBufferSize movs r0, 0x78 strh r0, [r1] - ldr r1, _080701F4 @ =gUnknown_3000FBC + ldr r1, _080701F4 @ =sSecondaryTilesetCB ldr r0, _080701F8 @ =sub_80701AC str r0, [r1] bx lr .align 2, 0 -_080701EC: .4byte gUnknown_3000FB2 -_080701F0: .4byte gUnknown_3000FB4 -_080701F4: .4byte gUnknown_3000FBC +_080701EC: .4byte sSecondaryTilesetCBCounter +_080701F0: .4byte sSecondaryTilesetCBBufferSize +_080701F4: .4byte sSecondaryTilesetCB _080701F8: .4byte sub_80701AC thumb_func_end sub_80701D8 @@ -474,20 +474,20 @@ _08070248: thumb_func_start sub_8070250 sub_8070250: @ 8070250 - ldr r1, _08070264 @ =gUnknown_3000FB2 + ldr r1, _08070264 @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _08070268 @ =gUnknown_3000FB4 + ldr r1, _08070268 @ =sSecondaryTilesetCBBufferSize movs r0, 0xA0 strh r0, [r1] - ldr r1, _0807026C @ =gUnknown_3000FBC + ldr r1, _0807026C @ =sSecondaryTilesetCB ldr r0, _08070270 @ =sub_8070224 str r0, [r1] bx lr .align 2, 0 -_08070264: .4byte gUnknown_3000FB2 -_08070268: .4byte gUnknown_3000FB4 -_0807026C: .4byte gUnknown_3000FBC +_08070264: .4byte sSecondaryTilesetCBCounter +_08070268: .4byte sSecondaryTilesetCBBufferSize +_0807026C: .4byte sSecondaryTilesetCB _08070270: .4byte sub_8070224 thumb_func_end sub_8070250 @@ -531,22 +531,22 @@ _080702B0: thumb_func_start sub_80702B4 sub_80702B4: @ 80702B4 - ldr r1, _080702CC @ =gUnknown_3000FB2 + ldr r1, _080702CC @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _080702D0 @ =gUnknown_3000FB4 + ldr r1, _080702D0 @ =sSecondaryTilesetCBBufferSize movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r1, _080702D4 @ =gUnknown_3000FBC + ldr r1, _080702D4 @ =sSecondaryTilesetCB ldr r0, _080702D8 @ =sub_807029C str r0, [r1] bx lr .align 2, 0 -_080702CC: .4byte gUnknown_3000FB2 -_080702D0: .4byte gUnknown_3000FB4 -_080702D4: .4byte gUnknown_3000FBC +_080702CC: .4byte sSecondaryTilesetCBCounter +_080702D0: .4byte sSecondaryTilesetCBBufferSize +_080702D4: .4byte sSecondaryTilesetCB _080702D8: .4byte sub_807029C thumb_func_end sub_80702B4 @@ -589,20 +589,20 @@ _08070318: thumb_func_start sub_807031C sub_807031C: @ 807031C - ldr r1, _08070330 @ =gUnknown_3000FB2 + ldr r1, _08070330 @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _08070334 @ =gUnknown_3000FB4 + ldr r1, _08070334 @ =sSecondaryTilesetCBBufferSize movs r0, 0xF0 strh r0, [r1] - ldr r1, _08070338 @ =gUnknown_3000FBC + ldr r1, _08070338 @ =sSecondaryTilesetCB ldr r0, _0807033C @ =sub_8070304 str r0, [r1] bx lr .align 2, 0 -_08070330: .4byte gUnknown_3000FB2 -_08070334: .4byte gUnknown_3000FB4 -_08070338: .4byte gUnknown_3000FBC +_08070330: .4byte sSecondaryTilesetCBCounter +_08070334: .4byte sSecondaryTilesetCBBufferSize +_08070338: .4byte sSecondaryTilesetCB _0807033C: .4byte sub_8070304 thumb_func_end sub_807031C @@ -645,22 +645,22 @@ _0807037C: thumb_func_start sub_8070380 sub_8070380: @ 8070380 - ldr r1, _08070398 @ =gUnknown_3000FB2 + ldr r1, _08070398 @ =sSecondaryTilesetCBCounter movs r0, 0 strh r0, [r1] - ldr r1, _0807039C @ =gUnknown_3000FB4 + ldr r1, _0807039C @ =sSecondaryTilesetCBBufferSize movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r1, _080703A0 @ =gUnknown_3000FBC + ldr r1, _080703A0 @ =sSecondaryTilesetCB ldr r0, _080703A4 @ =sub_8070368 str r0, [r1] bx lr .align 2, 0 -_08070398: .4byte gUnknown_3000FB2 -_0807039C: .4byte gUnknown_3000FB4 -_080703A0: .4byte gUnknown_3000FBC +_08070398: .4byte sSecondaryTilesetCBCounter +_0807039C: .4byte sSecondaryTilesetCBBufferSize +_080703A0: .4byte sSecondaryTilesetCB _080703A4: .4byte sub_8070368 thumb_func_end sub_8070380 diff --git a/include/fieldmap.h b/include/fieldmap.h index e6a1e944a..38f1d30d0 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -3,6 +3,12 @@ #include "global.h" +#define NUM_TILES_IN_PRIMARY 512 +#define NUM_TILES_TOTAL 1024 +#define NUM_METATILES_IN_PRIMARY 512 +#define NUM_METATILES_TOTAL 1024 +#define NUM_PALS_IN_PRIMARY 6 +#define NUM_PALS_TOTAL 13 #define VIRTUAL_MAP_SIZE 0x2800 extern struct MapCoords { @@ -18,6 +24,6 @@ void GetCameraCoords(u16*, u16*); bool8 MapGridIsImpassableAt(s32, s32); s32 GetMapBorderIdAt(s16, s16); bool32 CanCameraMoveInDirection(u8); -u16 GetBehaviorByMetatileId(u16 metatileId); +u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr); #endif //GUARD_FIELDMAP_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index c7a55fd02..b602741a6 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -51,8 +51,8 @@ struct Tileset /*0x04*/ void *tiles; /*0x08*/ void *palettes; /*0x0c*/ void *metatiles; - /*0x10*/ void *metatileAttributes; /*0x14*/ TilesetCB callback; + /*0x10*/ void *metatileAttributes; }; struct MapData diff --git a/include/global.h b/include/global.h index f418ff757..26ce4a8cc 100644 --- a/include/global.h +++ b/include/global.h @@ -328,7 +328,8 @@ struct SaveBlock2 /*0x0AC*/ u8 filler_AC[0x3F4]; /*0x4A0*/ u32 unk_4A0[0x2F]; /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; - /*0x574*/ u8 filler_574[0x524]; + /*0x574*/ u8 filler_574[0x324]; + /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; /*0xB00*/ u8 filler_B00[0x420]; diff --git a/src/fieldmap.c b/src/fieldmap.c index c0926ffad..4193ece97 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -18,8 +18,7 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); -u32 sub_8059080(struct MapData *mapData, u16 metatileId, u8 z); -void sub_80591C4(void); +void LoadSavedMapView(void); struct BackupMapData VMap; EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; @@ -64,7 +63,7 @@ void not_trainer_hill_battle_pyramid(void) void sub_80589E8(void) { sub_8058A00(&gMapHeader); - sub_80591C4(); + LoadSavedMapView(); mapheader_run_script_with_tag_x1(); } @@ -453,7 +452,7 @@ u32 sub_8058F1C(u32 original, u8 bit) u32 sub_8058F48(s16 x, s16 y, u8 z) { u16 metatileId = MapGridGetMetatileIdAt(x, y); - return sub_8059080(gMapHeader.mapData, metatileId, z); + return GetBehaviorByMetatileIdAndMapData(gMapHeader.mapData, metatileId, z); } u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y) @@ -468,7 +467,7 @@ u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y) void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile) { - int i; + s32 i; if (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) { @@ -479,7 +478,7 @@ void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile) void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile) { - int i; + s32 i; if (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) { @@ -503,3 +502,142 @@ void sub_8059024(s32 x, s32 y, bool32 arg2) } } } + +u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr) +{ + u32 * attributes; + + if (metatile < 0x280) + { + attributes = mapData->primaryTileset->metatileAttributes; + return sub_8058F1C(attributes[metatile], attr); + } + else if (metatile < 0x400) + { + attributes = mapData->secondaryTileset->metatileAttributes; + return sub_8058F1C(attributes[metatile - 0x280], attr); + } + else + { + return 0xFF; + } +} + +void save_serialize_map(void) +{ + s32 i, j; + s32 x, y; + u16 *mapView; + s32 width; + mapView = gSaveBlock2Ptr->mapView; + width = VMap.Xsize; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y; + for (i = y; i < y + 14; i++) + { + for (j = x; j < x + 15; j++) + { + *mapView++ = gBackupMapData[width * i + j]; + } + } +} + +bool32 SavedMapViewIsEmpty(void) +{ + u16 i; + u32 marker = 0; + + // BUG: This loop extends past the bounds of the mapView array. Its size is only 0x100. + for (i = 0; i < 0x200; i++) + marker |= gSaveBlock2Ptr->mapView[i]; + + if (marker == 0) + return TRUE; + else + return FALSE; +} + +void ClearSavedMapView(void) +{ + CpuFill16(0, gSaveBlock2Ptr->mapView, sizeof(gSaveBlock2Ptr->mapView)); +} + +void LoadSavedMapView(void) +{ + s32 i, j; + s32 x, y; + u16 *mapView; + s32 width; + mapView = gSaveBlock2Ptr->mapView; + if (!SavedMapViewIsEmpty()) + { + width = VMap.Xsize; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y; + for (i = y; i < y + 14; i++) + { + for (j = x; j < x + 15; j++) + { + gBackupMapData[j + width * i] = *mapView; + mapView++; + } + } + ClearSavedMapView(); + } +} + +void sub_8059250(u8 a1) +{ + s32 width; + u16 *mapView; + s32 x0, y0; + s32 x2, y2; + u16 *src, *dest; + s32 srci, desti; + s32 r9, r8; + s32 x, y; + s32 i, j; + mapView = gSaveBlock2Ptr->mapView; + width = VMap.Xsize; + r9 = 0; + r8 = 0; + x0 = gSaveBlock1Ptr->pos.x; + y0 = gSaveBlock1Ptr->pos.y; + x2 = 15; + y2 = 14; + switch (a1) + { + case CONNECTION_NORTH: + y0 += 1; + y2 = 13; + break; + case CONNECTION_SOUTH: + r8 = 1; + y2 = 13; + break; + case CONNECTION_WEST: + x0 += 1; + x2 = 14; + break; + case CONNECTION_EAST: + r9 = 1; + x2 = 14; + break; + } + for (y = 0; y < y2; y++) + { + i = 0; + j = 0; + for (x = 0; x < x2; x++) + { + desti = width * (y + y0); + srci = (y + r8) * 15 + r9; + src = &mapView[srci + i]; + dest = &gBackupMapData[x0 + desti + j]; + *dest = *src; + i++; + j++; + } + } + ClearSavedMapView(); +} diff --git a/src/save.c b/src/save.c index ef38d8b17..761e3c92d 100644 --- a/src/save.c +++ b/src/save.c @@ -69,7 +69,7 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] = extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen extern void sub_800AB9C(void); // link extern bool8 sub_800A4BC(void); // link -extern void sub_80590D8(void); // fieldmap +extern void save_serialize_map(void); // fieldmap extern void sub_804C1C0(void); // load_save extern void sav2_gender2_inplace_and_xFE(void); // load_save @@ -867,7 +867,7 @@ void sub_80DA634(u8 taskId) case 2: if (sub_800A4BC()) { - sub_80590D8(); + save_serialize_map(); gTasks[taskId].data[0] = 3; } break; diff --git a/sym_bss.txt b/sym_bss.txt index 20d8d561d..529460f3e 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -111,22 +111,22 @@ gUnknown_3000FA9: @ 3000FA9 gUnknown_3000FAC: @ 3000FAC .space 0x2 -gUnknown_3000FAE: @ 3000FAE +sPrimaryTilesetCBCounter: @ 3000FAE .space 0x2 -gUnknown_3000FB0: @ 3000FB0 +sPrimaryTilesetCBBufferSize: @ 3000FB0 .space 0x2 -gUnknown_3000FB2: @ 3000FB2 +sSecondaryTilesetCBCounter: @ 3000FB2 .space 0x2 -gUnknown_3000FB4: @ 3000FB4 +sSecondaryTilesetCBBufferSize: @ 3000FB4 .space 0x4 -gUnknown_3000FB8: @ 3000FB8 +sPrimaryTilesetCB: @ 3000FB8 .space 0x4 -gUnknown_3000FBC: @ 3000FBC +sSecondaryTilesetCB: @ 3000FBC .space 0x4 .include "src/sound.o" From 34cf3662fc0343d77fe36b1a3083605110764c9a Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 15:48:36 -0500 Subject: [PATCH 022/318] GetMapBorderIdAt --- asm/field_map_obj.s | 4 +- asm/fieldmap.s | 142 +------------------------------------------- include/fieldmap.h | 2 +- src/fieldmap.c | 56 ++++++++++++++--- 4 files changed, 52 insertions(+), 152 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 04770435e..a3d15255e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -12338,7 +12338,7 @@ _080636E2: bne _08063724 adds r0, r5, 0 adds r1, r4, 0 - bl sub_8059334 + bl GetMapBorderIdAt movs r1, 0x1 negs r1, r1 cmp r0, r1 @@ -12438,7 +12438,7 @@ sub_8063770: @ 8063770 bne _080637E8 adds r0, r6, 0 adds r1, r5, 0 - bl sub_8059334 + bl GetMapBorderIdAt movs r1, 0x1 negs r1, r1 cmp r0, r1 diff --git a/asm/fieldmap.s b/asm/fieldmap.s index 5d8562d4a..f8d2eed4f 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -5,144 +5,6 @@ .text - thumb_func_start sub_8059334 -sub_8059334: @ 8059334 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - mov r8, r1 - cmp r7, 0 - blt _08059374 - ldr r1, _0805936C @ =VMap - ldr r2, [r1] - cmp r7, r2 - bge _08059374 - mov r0, r8 - cmp r0, 0 - blt _08059374 - ldr r0, [r1, 0x4] - cmp r8, r0 - bge _08059374 - mov r0, r8 - muls r0, r2 - adds r0, r7, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _08059370 @ =0x000003ff - cmp r1, r0 - beq _08059422 - b _080593B0 - .align 2, 0 -_0805936C: .4byte VMap -_08059370: .4byte 0x000003ff -_08059374: - ldr r0, _080593CC @ =gMapHeader - ldr r6, [r0] - subs r0, r7, 0x7 - ldrb r5, [r6, 0x18] - lsls r1, r5, 3 - adds r0, r1 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - mov r0, r8 - subs r0, 0x7 - ldrb r1, [r6, 0x19] - lsls r2, r1, 3 - adds r0, r2 - bl __modsi3 - muls r0, r5 - adds r4, r0 - ldr r0, [r6, 0x8] - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r0, r1 - ldr r1, _080593D0 @ =0x000003ff - cmp r0, r1 - beq _08059422 -_080593B0: - ldr r1, _080593D4 @ =VMap - ldr r0, [r1] - subs r0, 0x8 - cmp r7, r0 - blt _080593DC - ldr r0, _080593D8 @ =gMapConnectionFlags - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08059422 - movs r0, 0x4 - b _08059432 - .align 2, 0 -_080593CC: .4byte gMapHeader -_080593D0: .4byte 0x000003ff -_080593D4: .4byte VMap -_080593D8: .4byte gMapConnectionFlags -_080593DC: - cmp r7, 0x6 - bgt _080593F4 - ldr r0, _080593F0 @ =gMapConnectionFlags - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08059422 - movs r0, 0x3 - b _08059432 - .align 2, 0 -_080593F0: .4byte gMapConnectionFlags -_080593F4: - ldr r0, [r1, 0x4] - subs r0, 0x7 - cmp r8, r0 - blt _08059410 - ldr r0, _0805940C @ =gMapConnectionFlags - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08059422 - movs r0, 0x1 - b _08059432 - .align 2, 0 -_0805940C: .4byte gMapConnectionFlags -_08059410: - mov r0, r8 - cmp r0, 0x6 - bgt _08059430 - ldr r0, _08059428 @ =gMapConnectionFlags - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0805942C -_08059422: - movs r0, 0x1 - negs r0, r0 - b _08059432 - .align 2, 0 -_08059428: .4byte gMapConnectionFlags -_0805942C: - movs r0, 0x2 - b _08059432 -_08059430: - movs r0, 0 -_08059432: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8059334 - thumb_func_start GetPostCameraMoveMapBorderId GetPostCameraMoveMapBorderId: @ 805943C push {r4,lr} @@ -158,7 +20,7 @@ GetPostCameraMoveMapBorderId: @ 805943C adds r3, 0x7 adds r1, r3 adds r0, r2, 0 - bl sub_8059334 + bl GetMapBorderIdAt pop {r4} pop {r1} bx r1 @@ -187,7 +49,7 @@ CanCameraMoveInDirection: @ 8059464 adds r0, 0x7 adds r1, r0 adds r0, r3, 0 - bl sub_8059334 + bl GetMapBorderIdAt movs r1, 0x1 negs r1, r1 cmp r0, r1 diff --git a/include/fieldmap.h b/include/fieldmap.h index 38f1d30d0..016baf153 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -22,7 +22,7 @@ void MapGridSetMetatileIdAt(int, int, u16); void MapGridSetMetatileEntryAt(int, int, u16); void GetCameraCoords(u16*, u16*); bool8 MapGridIsImpassableAt(s32, s32); -s32 GetMapBorderIdAt(s16, s16); +s32 GetMapBorderIdAt(s32, s32); bool32 CanCameraMoveInDirection(u8); u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr); diff --git a/src/fieldmap.c b/src/fieldmap.c index 4193ece97..06385ff35 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -395,15 +395,7 @@ union Block block; \ }) -#define MapGridGetTileAt(x, y) ({ \ - u16 block; \ - if (x >= 0 && x < VMap.Xsize \ - && y >= 0 && y < VMap.Ysize) \ - block = VMap.map[x + VMap.Xsize * y]; \ - else \ - block = MapGridGetBorderTileAt2(x, y); \ - block; \ -}) +#define MapGridGetTileAt(x, y) ((x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y)) u8 MapGridGetZCoordAt(s32 x, s32 y) { @@ -641,3 +633,49 @@ void sub_8059250(u8 a1) } ClearSavedMapView(); } + +s32 GetMapBorderIdAt(s32 x, s32 y) +{ + if (MapGridGetTileAt(x, y) == 0x3FF) + { + return -1; + } + + if (x >= VMap.Xsize - 8) + { + if (!gMapConnectionFlags.east) + { + return -1; + } + return CONNECTION_EAST; + } + + if (x < 7) + { + if (!gMapConnectionFlags.west) + { + return -1; + } + return CONNECTION_WEST; + } + + if (y >= VMap.Ysize - 7) + { + if (!gMapConnectionFlags.south) + { + return -1; + } + return CONNECTION_SOUTH; + } + + if (y < 7) + { + if (!gMapConnectionFlags.north) + { + return -1; + } + return CONNECTION_NORTH; + } + + return 0; +} From 38abcf9774612094d8552904fbeed3d1b2c4bba1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 16:39:32 -0500 Subject: [PATCH 023/318] through sub_80598CC --- asm/field_control_avatar.s | 8 +- asm/field_effect_helpers.s | 8 +- asm/field_map_obj.s | 4 +- asm/fieldmap.s | 718 ------------------------------------- asm/overworld.s | 12 +- data/data.s | 2 +- include/fieldmap.h | 2 +- include/menu.h | 1 + include/new_menu_helpers.h | 1 + include/overworld.h | 3 + include/palette.h | 2 + include/quest_log.h | 1 + src/fieldmap.c | 255 ++++++++++++- sym_ewram.txt | 2 +- 14 files changed, 281 insertions(+), 738 deletions(-) diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 39055b8e9..d1d1a6812 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -884,7 +884,7 @@ sub_806CF38: @ 806CF38 ldrh r1, [r4, 0x2] b _0806CF7E _0806CF60: - ldr r1, _0806CFA4 @ =gUnknown_826D2D8 + ldr r1, _0806CFA4 @ =gDirectionToVectors lsls r2, r6, 3 adds r0, r2, r1 ldr r3, [r0] @@ -919,7 +919,7 @@ _0806CF9E: movs r0, 0 b _0806CFDE .align 2, 0 -_0806CFA4: .4byte gUnknown_826D2D8 +_0806CFA4: .4byte gDirectionToVectors _0806CFA8: .4byte gMapObjects _0806CFAC: movs r4, 0 @@ -994,7 +994,7 @@ _0806D02A: lsrs r0, 24 cmp r0, 0x1 bne _0806D092 - ldr r1, _0806D09C @ =gUnknown_826D2D8 + ldr r1, _0806D09C @ =gDirectionToVectors mov r0, r8 lsls r2, r0, 3 adds r0, r2, r1 @@ -1042,7 +1042,7 @@ _0806D092: b _0806D0C8 .align 2, 0 _0806D098: .4byte gMapObjects -_0806D09C: .4byte gUnknown_826D2D8 +_0806D09C: .4byte gDirectionToVectors _0806D0A0: ldr r0, _0806D0D4 @ =gSelectedEventObject strb r5, [r0] diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index ed746de25..be79c3b21 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -845,7 +845,7 @@ unc_grass_normal: @ 80DB3EC lsrs r4, r0, 8 lsls r0, 24 lsrs r7, r0, 24 - ldr r3, _080DB498 @ =gUnknown_2036E18 + ldr r3, _080DB498 @ =gCamera ldrb r1, [r3] movs r0, 0x1 ands r0, r1 @@ -921,7 +921,7 @@ _080DB48C: bl FieldEffectStop b _080DB4E4 .align 2, 0 -_080DB498: .4byte gUnknown_2036E18 +_080DB498: .4byte gCamera _080DB49C: .4byte gSaveBlock1Ptr _080DB4A0: mov r0, sp @@ -1196,7 +1196,7 @@ unc_grass_tall: @ 80DB69C lsrs r7, r0, 8 lsls r0, 24 lsrs r6, r0, 24 - ldr r3, _080DB748 @ =gUnknown_2036E18 + ldr r3, _080DB748 @ =gCamera ldrb r1, [r3] movs r0, 0x1 ands r0, r1 @@ -1272,7 +1272,7 @@ _080DB73C: bl FieldEffectStop b _080DB786 .align 2, 0 -_080DB748: .4byte gUnknown_2036E18 +_080DB748: .4byte gCamera _080DB74C: .4byte gSaveBlock1Ptr _080DB750: mov r0, sp diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index a3d15255e..ef1c75939 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -3516,7 +3516,7 @@ npc_coords_shift_still: @ 805F818 thumb_func_start UpdateFieldObjectCoordsForCameraUpdate UpdateFieldObjectCoordsForCameraUpdate: @ 805F82C push {r4,r5,lr} - ldr r2, _0805F88C @ =gUnknown_2036E18 + ldr r2, _0805F88C @ =gCamera ldrb r1, [r2] movs r0, 0x1 ands r0, r1 @@ -3566,7 +3566,7 @@ _0805F884: pop {r0} bx r0 .align 2, 0 -_0805F88C: .4byte gUnknown_2036E18 +_0805F88C: .4byte gCamera _0805F890: .4byte gMapObjects thumb_func_end UpdateFieldObjectCoordsForCameraUpdate diff --git a/asm/fieldmap.s b/asm/fieldmap.s index f8d2eed4f..f5793b7a4 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -3,724 +3,6 @@ .syntax unified - .text - - thumb_func_start GetPostCameraMoveMapBorderId -GetPostCameraMoveMapBorderId: @ 805943C - push {r4,lr} - adds r3, r1, 0 - ldr r1, _08059460 @ =gSaveBlock1Ptr - ldr r1, [r1] - movs r4, 0 - ldrsh r2, [r1, r4] - adds r0, 0x7 - adds r2, r0 - movs r0, 0x2 - ldrsh r1, [r1, r0] - adds r3, 0x7 - adds r1, r3 - adds r0, r2, 0 - bl GetMapBorderIdAt - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08059460: .4byte gSaveBlock1Ptr - thumb_func_end GetPostCameraMoveMapBorderId - - thumb_func_start CanCameraMoveInDirection -CanCameraMoveInDirection: @ 8059464 - push {r4,r5,lr} - ldr r1, _0805949C @ =gSaveBlock1Ptr - ldr r4, [r1] - movs r1, 0 - ldrsh r3, [r4, r1] - ldr r2, _080594A0 @ =gUnknown_826D2D8 - lsls r0, 3 - adds r1, r0, r2 - ldr r1, [r1] - adds r1, 0x7 - adds r3, r1 - movs r5, 0x2 - ldrsh r1, [r4, r5] - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - adds r0, 0x7 - adds r1, r0 - adds r0, r3, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080594A4 - movs r0, 0x1 - b _080594A6 - .align 2, 0 -_0805949C: .4byte gSaveBlock1Ptr -_080594A0: .4byte gUnknown_826D2D8 -_080594A4: - movs r0, 0 -_080594A6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CanCameraMoveInDirection - - thumb_func_start sub_80594AC -sub_80594AC: @ 80594AC - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - bl mapconnection_get_mapheader - adds r3, r0, 0 - cmp r4, 0x2 - beq _08059514 - cmp r4, 0x2 - bgt _080594CA - cmp r4, 0x1 - beq _08059500 - b _08059526 -_080594CA: - cmp r4, 0x3 - beq _080594E8 - cmp r4, 0x4 - bne _08059526 - ldr r0, _080594E4 @ =gSaveBlock1Ptr - ldr r1, [r0] - negs r0, r6 - strh r0, [r1] - ldr r2, [r5, 0x4] - ldrh r0, [r1, 0x2] - subs r0, r2 - b _08059524 - .align 2, 0 -_080594E4: .4byte gSaveBlock1Ptr -_080594E8: - ldr r0, _080594FC @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, [r3] - ldr r0, [r0] - strh r0, [r1] - ldr r2, [r5, 0x4] - ldrh r0, [r1, 0x2] - subs r0, r2 - b _08059524 - .align 2, 0 -_080594FC: .4byte gSaveBlock1Ptr -_08059500: - ldr r0, _08059510 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, [r5, 0x4] - ldrh r0, [r1] - subs r0, r2 - strh r0, [r1] - negs r0, r7 - b _08059524 - .align 2, 0 -_08059510: .4byte gSaveBlock1Ptr -_08059514: - ldr r0, _0805952C @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, [r5, 0x4] - ldrh r0, [r1] - subs r0, r2 - strh r0, [r1] - ldr r0, [r3] - ldr r0, [r0, 0x4] -_08059524: - strh r0, [r1, 0x2] -_08059526: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805952C: .4byte gSaveBlock1Ptr - thumb_func_end sub_80594AC - - thumb_func_start CameraMove -CameraMove: @ 8059530 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - mov r9, r1 - ldr r1, _08059570 @ =gUnknown_2036E18 - ldrb r0, [r1] - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - ldr r2, _08059570 @ =gUnknown_2036E18 - strb r1, [r2] - mov r0, r10 - mov r1, r9 - bl GetPostCameraMoveMapBorderId - adds r7, r0, 0 - adds r0, r7, 0x1 - cmp r0, 0x1 - bhi _08059578 - ldr r0, _08059574 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldrh r0, [r1] - add r0, r10 - strh r0, [r1] - ldrh r0, [r1, 0x2] - add r0, r9 - strh r0, [r1, 0x2] - b _080595E2 - .align 2, 0 -_08059570: .4byte gUnknown_2036E18 -_08059574: .4byte gSaveBlock1Ptr -_08059578: - bl save_serialize_map - ldr r1, _080595F8 @ =gSaveBlock1Ptr - ldr r0, [r1] - movs r2, 0 - ldrsh r5, [r0, r2] - movs r1, 0x2 - ldrsh r6, [r0, r1] - lsls r2, r7, 24 - lsrs r2, 24 - mov r8, r2 - mov r0, r8 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8059600 - adds r4, r0, 0 - adds r1, r7, 0 - mov r2, r10 - mov r3, r9 - bl sub_80594AC - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - bl sub_8055864 - ldr r1, _080595FC @ =gUnknown_2036E18 - ldrb r0, [r1] - movs r1, 0x1 - orrs r0, r1 - ldr r2, _080595FC @ =gUnknown_2036E18 - strb r0, [r2] - ldr r0, _080595F8 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r2, 0 - ldrsh r0, [r1, r2] - subs r5, r0 - ldr r0, _080595FC @ =gUnknown_2036E18 - str r5, [r0, 0x4] - movs r2, 0x2 - ldrsh r0, [r1, r2] - subs r6, r0 - ldr r0, _080595FC @ =gUnknown_2036E18 - str r6, [r0, 0x8] - ldrh r0, [r1] - add r0, r10 - strh r0, [r1] - ldrh r0, [r1, 0x2] - add r0, r9 - strh r0, [r1, 0x2] - mov r0, r8 - bl sub_8059250 -_080595E2: - ldr r0, _080595FC @ =gUnknown_2036E18 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080595F8: .4byte gSaveBlock1Ptr -_080595FC: .4byte gUnknown_2036E18 - thumb_func_end CameraMove - - thumb_func_start sub_8059600 -sub_8059600: @ 8059600 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r1 - mov r8, r2 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0805963C @ =gMapHeader - ldr r0, [r0, 0xC] - ldr r7, [r0] - ldr r4, [r0, 0x4] - movs r5, 0 - cmp r5, r7 - bge _08059648 -_0805961E: - ldrb r0, [r4] - cmp r0, r6 - bne _08059640 - adds r0, r6, 0 - mov r1, r9 - mov r2, r8 - adds r3, r4, 0 - bl sub_8059658 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08059640 - adds r0, r4, 0 - b _0805964A - .align 2, 0 -_0805963C: .4byte gMapHeader -_08059640: - adds r5, 0x1 - adds r4, 0xC - cmp r5, r7 - blt _0805961E -_08059648: - movs r0, 0 -_0805964A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8059600 - - thumb_func_start sub_8059658 -sub_8059658: @ 8059658 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r1, 0 - mov r8, r2 - adds r5, r3, 0 - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - adds r0, r5, 0 - bl mapconnection_get_mapheader - adds r2, r0, 0 - cmp r4, 0x1 - blt _080596B0 - cmp r4, 0x2 - bgt _08059690 - ldr r0, _0805968C @ =gMapHeader - ldr r0, [r0] - ldr r1, [r0] - ldr r0, [r2] - ldr r2, [r0] - ldr r3, [r5, 0x4] - adds r0, r7, 0 - b _080596A2 - .align 2, 0 -_0805968C: .4byte gMapHeader -_08059690: - cmp r6, 0x4 - bgt _080596B0 - ldr r0, _080596AC @ =gMapHeader - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldr r0, [r2] - ldr r2, [r0, 0x4] - ldr r3, [r5, 0x4] - mov r0, r8 -_080596A2: - bl sub_80596BC - lsls r0, 24 - lsrs r0, 24 - b _080596B2 - .align 2, 0 -_080596AC: .4byte gMapHeader -_080596B0: - movs r0, 0 -_080596B2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8059658 - - thumb_func_start sub_80596BC -sub_80596BC: @ 80596BC - push {r4,lr} - adds r4, r0, 0 - adds r0, r2, 0 - adds r2, r3, 0 - cmp r3, 0 - bge _080596CA - movs r3, 0 -_080596CA: - adds r2, r0, r2 - cmp r2, r1 - bge _080596D2 - adds r1, r2, 0 -_080596D2: - cmp r3, r4 - bgt _080596DE - cmp r4, r1 - bgt _080596DE - movs r0, 0x1 - b _080596E0 -_080596DE: - movs r0, 0 -_080596E0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80596BC - - thumb_func_start sub_80596E8 -sub_80596E8: @ 80596E8 - push {lr} - cmp r0, 0 - blt _080596F6 - cmp r0, r1 - bge _080596F6 - movs r0, 0x1 - b _080596F8 -_080596F6: - movs r0, 0 -_080596F8: - pop {r1} - bx r1 - thumb_func_end sub_80596E8 - - thumb_func_start sub_80596FC -sub_80596FC: @ 80596FC - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl mapconnection_get_mapheader - adds r1, r0, 0 - ldrb r0, [r4] - cmp r0, 0x1 - blt _08059734 - cmp r0, 0x2 - bgt _08059722 - ldr r0, [r4, 0x4] - subs r0, r5, r0 - ldr r1, [r1] - ldr r1, [r1] - bl sub_80596E8 - b _08059736 -_08059722: - cmp r0, 0x4 - bgt _08059734 - ldr r0, [r4, 0x4] - subs r0, r6, r0 - ldr r1, [r1] - ldr r1, [r1, 0x4] - bl sub_80596E8 - b _08059736 -_08059734: - movs r0, 0 -_08059736: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80596FC - - thumb_func_start sub_805973C -sub_805973C: @ 805973C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _0805975C @ =gMapHeader - ldr r0, [r2, 0xC] - cmp r0, 0 - bne _08059764 - b _080597DA - .align 2, 0 -_0805975C: .4byte gMapHeader -_08059760: - adds r0, r4, 0 - b _080597DC -_08059764: - ldr r7, [r0] - ldr r4, [r0, 0x4] - movs r6, 0 - cmp r6, r7 - bge _080597DA - lsls r0, r1, 16 - asrs r5, r0, 16 - mov r9, r2 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - mov r10, r0 -_0805977C: - ldrb r1, [r4] - adds r3, r1, 0 - subs r0, r1, 0x5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080597D2 - cmp r1, 0x2 - bne _08059792 - cmp r5, 0x6 - bgt _080597D2 -_08059792: - cmp r1, 0x1 - bne _080597A2 - mov r2, r9 - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r0, 0x7 - cmp r5, r0 - blt _080597D2 -_080597A2: - mov r0, r8 - lsls r2, r0, 16 - cmp r1, 0x3 - bne _080597B0 - mov r1, r10 - cmp r1, 0x6 - bgt _080597D2 -_080597B0: - cmp r3, 0x4 - bne _080597C2 - asrs r1, r2, 16 - mov r3, r9 - ldr r0, [r3] - ldr r0, [r0] - adds r0, 0x7 - cmp r1, r0 - blt _080597D2 -_080597C2: - asrs r1, r2, 16 - subs r1, 0x7 - adds r0, r4, 0 - subs r2, r5, 0x7 - bl sub_80596FC - cmp r0, 0x1 - beq _08059760 -_080597D2: - adds r6, 0x1 - adds r4, 0xC - cmp r6, r7 - blt _0805977C -_080597DA: - movs r0, 0 -_080597DC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805973C - - thumb_func_start sub_80597EC -sub_80597EC: @ 80597EC - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _08059804 @ =gSaveBlock1Ptr - ldr r2, [r2] - subs r0, 0x7 - strh r0, [r2] - subs r1, 0x7 - strh r1, [r2, 0x2] - bx lr - .align 2, 0 -_08059804: .4byte gSaveBlock1Ptr - thumb_func_end sub_80597EC - - thumb_func_start sav1_camera_get_focus_coords -sav1_camera_get_focus_coords: @ 8059808 - ldr r2, _0805981C @ =gSaveBlock1Ptr - ldr r3, [r2] - ldrh r2, [r3] - adds r2, 0x7 - strh r2, [r0] - ldrh r0, [r3, 0x2] - adds r0, 0x7 - strh r0, [r1] - bx lr - .align 2, 0 -_0805981C: .4byte gSaveBlock1Ptr - thumb_func_end sav1_camera_get_focus_coords - - thumb_func_start SetCameraCoords -SetCameraCoords: @ 8059820 - ldr r2, _0805982C @ =gSaveBlock1Ptr - ldr r2, [r2] - strh r0, [r2] - strh r1, [r2, 0x2] - bx lr - .align 2, 0 -_0805982C: .4byte gSaveBlock1Ptr - thumb_func_end SetCameraCoords - - thumb_func_start GetCameraCoords -GetCameraCoords: @ 8059830 - ldr r2, _08059840 @ =gSaveBlock1Ptr - ldr r3, [r2] - ldrh r2, [r3] - strh r2, [r0] - ldrh r0, [r3, 0x2] - strh r0, [r1] - bx lr - .align 2, 0 -_08059840: .4byte gSaveBlock1Ptr - thumb_func_end GetCameraCoords - - thumb_func_start copy_tileset_patterns_to_vram -copy_tileset_patterns_to_vram: @ 8059844 - push {r4-r7,lr} - sub sp, 0x4 - adds r3, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r6, r4, 0 - lsls r2, 16 - lsrs r5, r2, 16 - adds r7, r5, 0 - cmp r3, 0 - beq _08059880 - ldrb r0, [r3] - cmp r0, 0 - bne _08059870 - ldr r1, [r3, 0x4] - lsls r2, r4, 21 - lsrs r2, 16 - movs r0, 0x2 - adds r3, r5, 0 - bl LoadBgTiles - b _08059880 -_08059870: - ldr r1, [r3, 0x4] - lsls r2, r6, 5 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - adds r3, r7, 0 - bl sub_80F68F0 -_08059880: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end copy_tileset_patterns_to_vram - - thumb_func_start copy_tileset_patterns_to_vram2 -copy_tileset_patterns_to_vram2: @ 8059888 - push {r4-r7,lr} - sub sp, 0x4 - adds r3, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r6, r4, 0 - lsls r2, 16 - lsrs r5, r2, 16 - adds r7, r5, 0 - cmp r3, 0 - beq _080598C4 - ldrb r0, [r3] - cmp r0, 0 - bne _080598B4 - ldr r1, [r3, 0x4] - lsls r2, r4, 21 - lsrs r2, 16 - movs r0, 0x2 - adds r3, r5, 0 - bl LoadBgTiles - b _080598C4 -_080598B4: - ldr r1, [r3, 0x4] - lsls r2, r6, 5 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - adds r3, r7, 0 - bl sub_80F69E8 -_080598C4: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end copy_tileset_patterns_to_vram2 - - thumb_func_start sub_80598CC -sub_80598CC: @ 80598CC - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r0, _080598EC @ =gUnknown_2036E28 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080598F0 - cmp r0, 0x1 - ble _0805993A - cmp r0, 0x2 - beq _08059904 - cmp r0, 0x3 - beq _08059918 - b _0805993A - .align 2, 0 -_080598EC: .4byte gUnknown_2036E28 -_080598F0: - lsls r4, 1 - ldr r0, _08059900 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_GrayScale - b _0805992C - .align 2, 0 -_08059900: .4byte gPlttBufferUnfaded -_08059904: - lsls r4, 1 - ldr r0, _08059914 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_SepiaTone - b _0805992C - .align 2, 0 -_08059914: .4byte gPlttBufferUnfaded -_08059918: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8111F38 - lsls r4, 1 - ldr r0, _08059940 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_GrayScale -_0805992C: - ldr r0, _08059940 @ =gPlttBufferUnfaded - adds r0, r4, r0 - ldr r1, _08059944 @ =gPlttBufferFaded - adds r1, r4, r1 - adds r2, r5, 0 - bl CpuSet -_0805993A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059940: .4byte gPlttBufferUnfaded -_08059944: .4byte gPlttBufferFaded - thumb_func_end sub_80598CC - thumb_func_start sub_8059948 sub_8059948: @ 8059948 push {r4-r6,lr} diff --git a/asm/overworld.s b/asm/overworld.s index a24fe7740..ad3b8820d 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -4690,7 +4690,7 @@ mli4_mapscripts_and_other: @ 805709C adds r4, 0x2 mov r0, sp adds r1, r4, 0 - bl sav1_camera_get_focus_coords + bl GetCameraFocusCoords bl sub_8055A6C adds r5, r0, 0 mov r0, sp @@ -4792,7 +4792,7 @@ sub_8057178: @ 8057178 adds r4, 0x2 mov r0, sp adds r1, r4, 0 - bl sav1_camera_get_focus_coords + bl GetCameraFocusCoords mov r2, sp ldr r0, _080571A4 @ =gUnknown_300502C ldrb r1, [r0] @@ -4801,7 +4801,7 @@ sub_8057178: @ 8057178 lsls r0, 16 lsrs r0, 16 ldrh r1, [r4] - bl sub_80597EC + bl SetCameraFocusCoords add sp, 0x4 pop {r4} pop {r0} @@ -4820,7 +4820,7 @@ sub_80571A8: @ 80571A8 adds r4, 0x2 mov r0, sp adds r1, r4, 0 - bl sav1_camera_get_focus_coords + bl GetCameraFocusCoords mov r3, sp mov r2, sp ldr r0, _08057224 @ =gUnknown_300502C @@ -6748,7 +6748,7 @@ _08058074: ldr r1, [r4, 0x8] str r0, [sp] str r1, [sp, 0x4] - ldr r3, _080580E4 @ =gUnknown_826D2D8 + ldr r3, _080580E4 @ =gDirectionToVectors ldrb r0, [r4, 0x3] lsls r0, 3 adds r0, r3 @@ -6801,7 +6801,7 @@ _080580E0: ldr r0, _080580F8 @ =gUnknown_81BB9A3 b _08058122 .align 2, 0 -_080580E4: .4byte gUnknown_826D2D8 +_080580E4: .4byte gDirectionToVectors _080580E8: .4byte 0xffff0000 _080580EC: .4byte 0x0000ffff _080580F0: .4byte 0xffffff00 diff --git a/data/data.s b/data/data.s index ea8705f46..dd692cb33 100644 --- a/data/data.s +++ b/data/data.s @@ -908,7 +908,7 @@ gUnknown_826D29E:: @ 826D29E gUnknown_826D2B0:: @ 826D2B0 .incbin "baserom.gba", 0x26D2B0, 0x28 -gUnknown_826D2D8:: @ 826D2D8 +gDirectionToVectors:: @ 826D2D8 .incbin "baserom.gba", 0x26D2D8, 0x48 gUnknown_826D320:: @ 826D320 diff --git a/include/fieldmap.h b/include/fieldmap.h index 016baf153..1ce83ee38 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -23,7 +23,7 @@ void MapGridSetMetatileEntryAt(int, int, u16); void GetCameraCoords(u16*, u16*); bool8 MapGridIsImpassableAt(s32, s32); s32 GetMapBorderIdAt(s32, s32); -bool32 CanCameraMoveInDirection(u8); +bool32 CanCameraMoveInDirection(s32); u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr); #endif //GUARD_FIELDMAP_H diff --git a/include/menu.h b/include/menu.h index b932693f7..b5078df5e 100644 --- a/include/menu.h +++ b/include/menu.h @@ -37,5 +37,6 @@ 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); void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3); void sub_810F4D8(u8 windowId, bool32 someBool); +void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); #endif // GUARD_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index ce8e8d697..32b46b552 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -22,5 +22,6 @@ void sub_80F6EE4(u8 windowId, bool8 transfer); void sub_80F7974(const u8 *); u8 GetStartMenuWindowId(void); void sub_80F7998(void); +void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/overworld.h b/include/overworld.h index fbea3a4d9..b32d9cf48 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -24,6 +24,8 @@ struct UCoords32 u32 x, y; }; +extern struct UCoords32 gDirectionToVectors[]; + extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; extern MainCallback gFieldCallback; @@ -96,5 +98,6 @@ extern u8 gUnknown_2036E28; extern bool8 (* gUnknown_3005024)(void); void SetLastHealLocationWarp(u8 healLocaionId); +void sub_8055864(u8 mapGroup, u8 mapNum); #endif //GUARD_ROM4_H diff --git a/include/palette.h b/include/palette.h index 3af0d5d7b..31c8ffefe 100644 --- a/include/palette.h +++ b/include/palette.h @@ -70,6 +70,8 @@ void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); void BlendPalettes(u32, u8, u16); void BlendPalettesUnfaded(u32, u8, u16); void sub_80716F8(const u16 *, u16 *, u16, u8); +void TintPalette_GrayScale(u16 *, u16); +void TintPalette_SepiaTone(u16 *, u16); extern struct PaletteFadeControl gPaletteFade; diff --git a/include/quest_log.h b/include/quest_log.h index 31220b86c..7f4bafada 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -24,6 +24,7 @@ void sub_8113550(u16, const u16 *); void sub_8115748(u16); u8 sub_8112CAC(void); bool8 sub_81119D4(void (*func)(void)); +void sub_8111F38(u16, u16); extern u8 gUnknown_203ADFA; diff --git a/src/fieldmap.c b/src/fieldmap.c index 06385ff35..559506829 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -1,6 +1,11 @@ #include "global.h" +#include "bg.h" +#include "palette.h" #include "overworld.h" #include "script.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "quest_log.h" #include "fieldmap.h" struct ConnectionFlags @@ -19,6 +24,9 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); void LoadSavedMapView(void); +struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y); +bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection); +bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset); struct BackupMapData VMap; EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; @@ -395,7 +403,9 @@ union Block block; \ }) -#define MapGridGetTileAt(x, y) ((x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y)) +#define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize) + +#define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y)) u8 MapGridGetZCoordAt(s32 x, s32 y) { @@ -679,3 +689,246 @@ s32 GetMapBorderIdAt(s32 x, s32 y) return 0; } + +s32 GetPostCameraMoveMapBorderId(s32 x, s32 y) +{ + return GetMapBorderIdAt(7 + gSaveBlock1Ptr->pos.x + x, 7 + gSaveBlock1Ptr->pos.y + y); +} + +bool32 CanCameraMoveInDirection(s32 direction) +{ + s32 x, y; + + x = gSaveBlock1Ptr->pos.x + 7 + gDirectionToVectors[direction].x; + y = gSaveBlock1Ptr->pos.y + 7 + gDirectionToVectors[direction].y; + if (GetMapBorderIdAt(x, y) == -1) + { + return FALSE; + } + return TRUE; +} + +void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y) +{ + struct MapHeader const *mapHeader; + mapHeader = mapconnection_get_mapheader(connection); + switch (direction) + { + case CONNECTION_EAST: + gSaveBlock1Ptr->pos.x = -x; + gSaveBlock1Ptr->pos.y -= connection->offset; + break; + case CONNECTION_WEST: + gSaveBlock1Ptr->pos.x = mapHeader->mapData->width; + gSaveBlock1Ptr->pos.y -= connection->offset; + break; + case CONNECTION_SOUTH: + gSaveBlock1Ptr->pos.x -= connection->offset; + gSaveBlock1Ptr->pos.y = -y; + break; + case CONNECTION_NORTH: + gSaveBlock1Ptr->pos.x -= connection->offset; + gSaveBlock1Ptr->pos.y = mapHeader->mapData->height; + break; + } +} + +bool8 CameraMove(s32 x, s32 y) +{ + u32 direction; + struct MapConnection *connection; + s32 old_x, old_y; + gCamera.active = FALSE; + direction = GetPostCameraMoveMapBorderId(x, y); + if (direction + 1 <= 1) + { + gSaveBlock1Ptr->pos.x += x; + gSaveBlock1Ptr->pos.y += y; + } + else + { + save_serialize_map(); + old_x = gSaveBlock1Ptr->pos.x; + old_y = gSaveBlock1Ptr->pos.y; + connection = sub_8059600(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); + sub_80594AC(connection, direction, x, y); + sub_8055864(connection->mapGroup, connection->mapNum); + gCamera.active = TRUE; + gCamera.x = old_x - gSaveBlock1Ptr->pos.x; + gCamera.y = old_y - gSaveBlock1Ptr->pos.y; + gSaveBlock1Ptr->pos.x += x; + gSaveBlock1Ptr->pos.y += y; + sub_8059250(direction); + } + return gCamera.active; +} + +struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y) +{ + s32 count; + struct MapConnection *connection; + s32 i; + count = gMapHeader.connections->count; + connection = gMapHeader.connections->connections; + for (i = 0; i < count; i++, connection++) + { + if (connection->direction == direction && sub_8059658(direction, x, y, connection) == TRUE) + return connection; + } + return NULL; + +} + +bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection) +{ + struct MapHeader const *mapHeader; + mapHeader = mapconnection_get_mapheader(connection); + switch (direction) + { + case CONNECTION_SOUTH: + case CONNECTION_NORTH: + return sub_80596BC(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset); + case CONNECTION_WEST: + case CONNECTION_EAST: + return sub_80596BC(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset); + } + return FALSE; +} + +bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset) +{ + s32 offset2 = max(offset, 0); + + if (dest_width + offset < src_width) + src_width = dest_width + offset; + + if (offset2 <= x && x <= src_width) + return TRUE; + + return FALSE; +} + +bool32 sub_80596E8(s32 x, s32 width) +{ + if (x >= 0 && x < width) + return TRUE; + + return FALSE; +} + +s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y) +{ + struct MapHeader const *mapHeader; + mapHeader = mapconnection_get_mapheader(connection); + switch (connection->direction) + { + case CONNECTION_SOUTH: + case CONNECTION_NORTH: + return sub_80596E8(x - connection->offset, mapHeader->mapData->width); + case CONNECTION_WEST: + case CONNECTION_EAST: + return sub_80596E8(y - connection->offset, mapHeader->mapData->height); + } + return FALSE; +} + +struct MapConnection *sub_805973C(s16 x, s16 y) +{ + s32 count; + struct MapConnection *connection; + s32 i; + u8 direction; + if (!gMapHeader.connections) + { + return NULL; + } + else + { + count = gMapHeader.connections->count; + connection = gMapHeader.connections->connections; + for (i = 0; i < count; i++, connection++) + { + direction = connection->direction; + if ((direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE) + || (direction == CONNECTION_NORTH && y > 6) + || (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7) + || (direction == CONNECTION_WEST && x > 6) + || (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7)) + { + continue; + } + if (sub_80596FC(connection, x - 7, y - 7) == TRUE) + { + return connection; + } + } + } + return NULL; +} + +void SetCameraFocusCoords(u16 x, u16 y) +{ + gSaveBlock1Ptr->pos.x = x - 7; + gSaveBlock1Ptr->pos.y = y - 7; +} + +void GetCameraFocusCoords(u16 *x, u16 *y) +{ + *x = gSaveBlock1Ptr->pos.x + 7; + *y = gSaveBlock1Ptr->pos.y + 7; +} + +void SetCameraCoords(u16 x, u16 y) +{ + gSaveBlock1Ptr->pos.x = x; + gSaveBlock1Ptr->pos.y = y; +} + +void GetCameraCoords(u16 *x, u16 *y) +{ + *x = gSaveBlock1Ptr->pos.x; + *y = gSaveBlock1Ptr->pos.y; +} +void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset) +{ + if (tileset) + { + if (!tileset->isCompressed) + LoadBgTiles(2, tileset->tiles, numTiles * 32, offset); + else + sub_80F68F0(2, tileset->tiles, numTiles * 32, offset, 0); + } +} + +void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset) +{ + if (tileset) + { + if (!tileset->isCompressed) + LoadBgTiles(2, tileset->tiles, numTiles * 32, offset); + else + sub_80F69E8(2, tileset->tiles, numTiles * 32, offset, 0); + } +} + +void sub_80598CC(u16 a0, u16 a1) +{ + switch (gUnknown_2036E28) + { + case 0: + return; + case 1: + TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1); + break; + case 2: + TintPalette_SepiaTone(gPlttBufferUnfaded + a0, a1); + break; + case 3: + sub_8111F38(a0, a1); + TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1); + break; + default: + return; + } + CpuCopy16(gPlttBufferUnfaded + a0, gPlttBufferFaded + a0, a1 * sizeof(u16)); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index d108b01f3..82d492d61 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -599,7 +599,7 @@ gBackupMapData: @ 2031DFC gMapHeader: @ 2036DFC .space 0x1C -gUnknown_2036E18: @ 2036E18 +gCamera: @ 2036E18 .space 0xC gMapConnectionFlags: @ 2036E24 From 316975ebeae7ca15f9a55bcfc3c493a9f35c6242 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 16:47:21 -0500 Subject: [PATCH 024/318] Complete code decomp of fieldmap.s --- asm/fieldmap.s | 237 --------------------------------------------- asm/overworld.s | 22 ++--- include/fieldmap.h | 6 +- ld_script.txt | 1 - src/fieldmap.c | 94 +++++++++++++++++- 5 files changed, 106 insertions(+), 254 deletions(-) delete mode 100644 asm/fieldmap.s diff --git a/asm/fieldmap.s b/asm/fieldmap.s deleted file mode 100644 index f5793b7a4..000000000 --- a/asm/fieldmap.s +++ /dev/null @@ -1,237 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - thumb_func_start sub_8059948 -sub_8059948: @ 8059948 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r0, _08059968 @ =gUnknown_2036E28 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0805996C - cmp r0, 0x1 - ble _080599B8 - cmp r0, 0x2 - beq _08059980 - cmp r0, 0x3 - beq _08059994 - b _080599B8 - .align 2, 0 -_08059968: .4byte gUnknown_2036E28 -_0805996C: - lsls r4, 5 - ldr r0, _0805997C @ =gPlttBufferUnfaded - adds r0, r4, r0 - lsls r1, r6, 4 - bl TintPalette_GrayScale - b _080599AA - .align 2, 0 -_0805997C: .4byte gPlttBufferUnfaded -_08059980: - lsls r4, 5 - ldr r0, _08059990 @ =gPlttBufferUnfaded - adds r0, r4, r0 - lsls r1, r6, 4 - bl TintPalette_SepiaTone - b _080599AA - .align 2, 0 -_08059990: .4byte gPlttBufferUnfaded -_08059994: - lsls r0, r4, 4 - lsls r5, r6, 4 - adds r1, r5, 0 - bl sub_8111F38 - lsls r4, 5 - ldr r0, _080599C0 @ =gPlttBufferUnfaded - adds r0, r4, r0 - adds r1, r5, 0 - bl TintPalette_GrayScale -_080599AA: - ldr r0, _080599C0 @ =gPlttBufferUnfaded - adds r0, r4, r0 - ldr r1, _080599C4 @ =gPlttBufferFaded - adds r1, r4, r1 - lsls r2, r6, 3 - bl CpuFastSet -_080599B8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080599C0: .4byte gPlttBufferUnfaded -_080599C4: .4byte gPlttBufferFaded - thumb_func_end sub_8059948 - - thumb_func_start apply_map_tileset_palette -apply_map_tileset_palette: @ 80599C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - mov r8, r5 - lsls r6, r2, 16 - lsrs r7, r6, 16 - adds r2, r7, 0 - movs r1, 0 - mov r0, sp - strh r1, [r0] - cmp r4, 0 - beq _08059A46 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08059A1C - mov r0, sp - adds r1, r5, 0 - movs r2, 0x2 - bl LoadPalette - ldr r0, [r4, 0x8] - adds r0, 0x2 - adds r5, 0x1 - lsls r5, 16 - lsrs r5, 16 - subs r4, r7, 0x2 - lsls r2, r4, 16 - lsrs r2, 16 - adds r1, r5, 0 - bl LoadPalette - lsls r4, 15 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80598CC - b _08059A46 -_08059A1C: - cmp r0, 0x1 - bne _08059A36 - ldr r0, [r4, 0x8] - adds r0, 0xE0 - adds r1, r5, 0 - adds r2, r7, 0 - bl LoadPalette - lsrs r1, r6, 17 - adds r0, r5, 0 - bl sub_80598CC - b _08059A46 -_08059A36: - ldr r0, [r4, 0x8] - mov r1, r8 - bl LoadCompressedPalette - lsrs r1, r6, 17 - mov r0, r8 - bl sub_80598CC -_08059A46: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end apply_map_tileset_palette - - thumb_func_start sub_8059A54 -sub_8059A54: @ 8059A54 - push {lr} - ldr r0, [r0, 0x10] - movs r1, 0xA0 - lsls r1, 2 - movs r2, 0 - bl copy_tileset_patterns_to_vram - pop {r0} - bx r0 - thumb_func_end sub_8059A54 - - thumb_func_start sub_8059A68 -sub_8059A68: @ 8059A68 - push {lr} - ldr r0, [r0, 0x14] - movs r1, 0xC0 - lsls r1, 1 - movs r2, 0xA0 - lsls r2, 2 - bl copy_tileset_patterns_to_vram - pop {r0} - bx r0 - thumb_func_end sub_8059A68 - - thumb_func_start copy_map_tileset2_to_vram_2 -copy_map_tileset2_to_vram_2: @ 8059A7C - push {lr} - ldr r0, [r0, 0x14] - movs r1, 0xC0 - lsls r1, 1 - movs r2, 0xA0 - lsls r2, 2 - bl copy_tileset_patterns_to_vram2 - pop {r0} - bx r0 - thumb_func_end copy_map_tileset2_to_vram_2 - - thumb_func_start sub_8059A90 -sub_8059A90: @ 8059A90 - push {lr} - ldr r0, [r0, 0x10] - movs r1, 0 - movs r2, 0xE0 - bl apply_map_tileset_palette - pop {r0} - bx r0 - thumb_func_end sub_8059A90 - - thumb_func_start sub_8059AA0 -sub_8059AA0: @ 8059AA0 - push {lr} - ldr r0, [r0, 0x14] - movs r1, 0x70 - movs r2, 0xC0 - bl apply_map_tileset_palette - pop {r0} - bx r0 - thumb_func_end sub_8059AA0 - - thumb_func_start copy_map_tileset1_tileset2_to_vram -copy_map_tileset1_tileset2_to_vram: @ 8059AB0 - push {r4,r5,lr} - adds r5, r0, 0 - cmp r5, 0 - beq _08059AD2 - ldr r0, [r5, 0x10] - movs r4, 0xA0 - lsls r4, 2 - adds r1, r4, 0 - movs r2, 0 - bl copy_tileset_patterns_to_vram2 - ldr r0, [r5, 0x14] - movs r1, 0xC0 - lsls r1, 1 - adds r2, r4, 0 - bl copy_tileset_patterns_to_vram2 -_08059AD2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end copy_map_tileset1_tileset2_to_vram - - thumb_func_start apply_map_tileset1_tileset2_palette -apply_map_tileset1_tileset2_palette: @ 8059AD8 - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _08059AEA - bl sub_8059A90 - adds r0, r4, 0 - bl sub_8059AA0 -_08059AEA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end apply_map_tileset1_tileset2_palette - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index ad3b8820d..679203034 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1723,7 +1723,7 @@ sub_8055864: @ 8055864 ldr r0, [r4] bl copy_map_tileset2_to_vram_2 ldr r0, [r4] - bl sub_8059AA0 + bl apply_map_tileset2_palette movs r4, 0x7 _080558D4: lsls r0, r4, 24 @@ -4024,14 +4024,14 @@ _08056AEE: _08056AF4: ldr r0, _08056B00 @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08056B62 .align 2, 0 _08056B00: .4byte gMapHeader _08056B04: ldr r0, _08056B10 @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08056B62 .align 2, 0 _08056B10: .4byte gMapHeader @@ -4166,14 +4166,14 @@ _08056C2A: _08056C30: ldr r0, _08056C3C @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08056CCA .align 2, 0 _08056C3C: .4byte gMapHeader _08056C40: ldr r0, _08056C4C @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08056CCA .align 2, 0 _08056C4C: .4byte gMapHeader @@ -4355,14 +4355,14 @@ _08056DCA: _08056DD0: ldr r0, _08056DDC @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08056E3E .align 2, 0 _08056DDC: .4byte gMapHeader _08056DE0: ldr r0, _08056DEC @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08056E3E .align 2, 0 _08056DEC: .4byte gMapHeader @@ -5066,14 +5066,14 @@ _080573C2: _080573C8: ldr r0, _080573D4 @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _08057412 .align 2, 0 _080573D4: .4byte gMapHeader _080573D8: ldr r0, _080573E4 @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _08057412 .align 2, 0 _080573E4: .4byte gMapHeader @@ -5415,14 +5415,14 @@ _080576CC: _080576D2: ldr r0, _080576DC @ =gMapHeader ldr r0, [r0] - bl sub_8059A54 + bl copy_map_tileset1_to_vram b _0805772A .align 2, 0 _080576DC: .4byte gMapHeader _080576E0: ldr r0, _080576EC @ =gMapHeader ldr r0, [r0] - bl sub_8059A68 + bl copy_map_tileset2_to_vram b _0805772A .align 2, 0 _080576EC: .4byte gMapHeader diff --git a/include/fieldmap.h b/include/fieldmap.h index 1ce83ee38..24e85aace 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -3,11 +3,11 @@ #include "global.h" -#define NUM_TILES_IN_PRIMARY 512 +#define NUM_TILES_IN_PRIMARY 640 #define NUM_TILES_TOTAL 1024 -#define NUM_METATILES_IN_PRIMARY 512 +#define NUM_METATILES_IN_PRIMARY 640 #define NUM_METATILES_TOTAL 1024 -#define NUM_PALS_IN_PRIMARY 6 +#define NUM_PALS_IN_PRIMARY 7 #define NUM_PALS_TOTAL 13 #define VIRTUAL_MAP_SIZE 0x2800 diff --git a/ld_script.txt b/ld_script.txt index 1e6f87e23..7d2adefe7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,7 +92,6 @@ SECTIONS { asm/new_game.o(.text); asm/overworld.o(.text); src/fieldmap.o(.text); - asm/fieldmap.o(.text); src/metatile_behavior.o(.text); asm/field_camera.o(.text); asm/field_door.o(.text); diff --git a/src/fieldmap.c b/src/fieldmap.c index 559506829..2984465c7 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -509,7 +509,7 @@ u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 { u32 * attributes; - if (metatile < 0x280) + if (metatile < NUM_METATILES_IN_PRIMARY) { attributes = mapData->primaryTileset->metatileAttributes; return sub_8058F1C(attributes[metatile], attr); @@ -517,7 +517,7 @@ u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 else if (metatile < 0x400) { attributes = mapData->secondaryTileset->metatileAttributes; - return sub_8058F1C(attributes[metatile - 0x280], attr); + return sub_8058F1C(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr); } else { @@ -932,3 +932,93 @@ void sub_80598CC(u16 a0, u16 a1) } CpuCopy16(gPlttBufferUnfaded + a0, gPlttBufferFaded + a0, a1 * sizeof(u16)); } + +void sub_8059948(u8 a0, u8 a1) +{ + switch (gUnknown_2036E28) + { + case 0: + return; + case 1: + TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16); + break; + case 2: + TintPalette_SepiaTone(gPlttBufferUnfaded + a0 * 16, a1 * 16); + break; + case 3: + sub_8111F38(a0 * 16, a1 * 16); + TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16); + break; + default: + return; + } + CpuFastCopy(gPlttBufferUnfaded + a0 * 16, gPlttBufferFaded + a0 * 16, a1 * 16 * sizeof(u16)); +} + +void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size) +{ + u16 black = RGB_BLACK; + + if (tileset) + { + if (tileset->isSecondary == FALSE) + { + LoadPalette(&black, destOffset, 2); + LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2); + sub_80598CC(destOffset + 1, (size - 2) >> 1); + } + else if (tileset->isSecondary == TRUE) + { + LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); + sub_80598CC(destOffset, size >> 1); + } + else + { + LoadCompressedPalette((u32*)tileset->palettes, destOffset, size); + sub_80598CC(destOffset, size >> 1); + } + } +} + +void copy_map_tileset1_to_vram(const struct MapData *mapData) +{ + copy_tileset_patterns_to_vram(mapData->primaryTileset, NUM_TILES_IN_PRIMARY, 0); +} + +void copy_map_tileset2_to_vram(const struct MapData *mapData) +{ + copy_tileset_patterns_to_vram(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); +} + +void copy_map_tileset2_to_vram_2(const struct MapData *mapData) +{ + copy_tileset_patterns_to_vram2(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); +} + +void apply_map_tileset1_palette(const struct MapData *mapData) +{ + apply_map_tileset_palette(mapData->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2); +} + +void apply_map_tileset2_palette(const struct MapData *mapData) +{ + apply_map_tileset_palette(mapData->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2); +} + +void copy_map_tileset1_tileset2_to_vram(struct MapData const *mapData) +{ + if (mapData) + { + copy_tileset_patterns_to_vram2(mapData->primaryTileset, NUM_TILES_IN_PRIMARY, 0); + copy_tileset_patterns_to_vram2(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY); + } +} + +void apply_map_tileset1_tileset2_palette(struct MapData const *mapData) +{ + if (mapData) + { + apply_map_tileset1_palette(mapData); + apply_map_tileset2_palette(mapData); + } +} \ No newline at end of file From 6da60e9b36303ac9d67a59db9092adb1dae6b43f Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 7 Jan 2019 16:53:28 -0500 Subject: [PATCH 025/318] fieldmap: Common and EWRAM syms --- common_syms/fieldmap.txt | 1 + include/fieldmap.h | 5 +---- src/fieldmap.c | 1 + sym_common.txt | 4 ++-- sym_ewram.txt | 12 +----------- 5 files changed, 6 insertions(+), 17 deletions(-) create mode 100644 common_syms/fieldmap.txt diff --git a/common_syms/fieldmap.txt b/common_syms/fieldmap.txt new file mode 100644 index 000000000..b593fc3f2 --- /dev/null +++ b/common_syms/fieldmap.txt @@ -0,0 +1 @@ +VMap \ No newline at end of file diff --git a/include/fieldmap.h b/include/fieldmap.h index 24e85aace..537626edc 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -11,10 +11,7 @@ #define NUM_PALS_TOTAL 13 #define VIRTUAL_MAP_SIZE 0x2800 -extern struct MapCoords { - int width; - int height; -} gUnknown_03005DC0; +extern struct BackupMapData VMap; u32 MapGridGetMetatileIdAt(int, int); u32 MapGridGetMetatileBehaviorAt(int, int); diff --git a/src/fieldmap.c b/src/fieldmap.c index 2984465c7..be5e1d54a 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -31,6 +31,7 @@ bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset); struct BackupMapData VMap; EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {}; EWRAM_DATA struct MapHeader gMapHeader = {}; +EWRAM_DATA struct Camera gCamera = {}; EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {}; const struct ConnectionFlags sDummyConnectionFlags = {}; diff --git a/sym_common.txt b/sym_common.txt index 7cb460c84..16c275b01 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -160,9 +160,9 @@ gUnknown_300502C: @ 300502C gUnknown_3005030: @ 3005030 .space 0x10 -VMap: @ 3005040 - .space 0x10 + .include "fieldmap.o" + .align 4 gUnknown_3005050: @ 3005050 .space 0x18 diff --git a/sym_ewram.txt b/sym_ewram.txt index 82d492d61..b978e59c4 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -593,17 +593,7 @@ gUnknown_2031DEA: @ 2031DEA gUnknown_2031DEC: @ 2031DEC .space 0x10 -gBackupMapData: @ 2031DFC - .space 0x5000 - -gMapHeader: @ 2036DFC - .space 0x1C - -gCamera: @ 2036E18 - .space 0xC - -gMapConnectionFlags: @ 2036E24 - .space 0x4 + .include "src/fieldmap.o" gUnknown_2036E28: @ 2036E28 .space 0x4 From c0a00b1a0ca6fe88862491813d5ed07fcc0675f8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Jan 2019 21:27:00 -0500 Subject: [PATCH 026/318] Dump map connections (unlabeled) --- data/connections.s | 501 +++++++++++++++++++++++++++++++++++++++++++++ data/data.s | 10 +- data/fieldmap.s | 6 - ld_script.txt | 2 +- 4 files changed, 511 insertions(+), 8 deletions(-) create mode 100644 data/connections.s delete mode 100644 data/fieldmap.s diff --git a/data/connections.s b/data/connections.s new file mode 100644 index 000000000..15c02ebbe --- /dev/null +++ b/data/connections.s @@ -0,0 +1,501 @@ + .include "asm/macros.inc" + + .section .rodata + +gUnknown_8352754:: @ 8352754 + connection up, 0, 0x313 + connection down, 0, 0x327 + +gUnknown_835276C:: @ 835276C + .4byte 2 + .4byte gUnknown_8352754 + +gUnknown_8352774:: @ 8352774 + connection up, 12, 0x314 + connection down, 12, 0x313 + connection left, 10, 0x329 + +gUnknown_8352798:: @ 8352798 + .4byte 3 + .4byte gUnknown_8352774 + +gUnknown_83527A0:: @ 83527A0 + connection down, 12, 0x314 + connection right, 10, 0x315 + +gUnknown_83527B8:: @ 83527B8 + .4byte 2 + .4byte gUnknown_83527A0 + +gUnknown_83527C0:: @ 83527C0 + connection up, 12, 0x32B + connection down, 0, 0x317 + connection left, 10, 0x316 + connection right, 10, 0x31B + +gUnknown_83527F0:: @ 83527F0 + .4byte 4 + .4byte gUnknown_83527C0 + +gUnknown_83527F8:: @ 83527F8 + connection up, 0, 0x31C + connection down, 0, 0x31E + connection left, 0, 0x31A + +gUnknown_835281C:: @ 835281C + .4byte 3 + .4byte gUnknown_83527F8 + +gUnknown_8352824:: @ 8352824 + connection up, 12, 0x318 + connection right, 10, 0x31D + +gUnknown_835283C:: @ 835283C + .4byte 2 + .4byte gUnknown_8352824 + +gUnknown_8352844:: @ 8352844 + connection left, 10, 0x322 + connection right, 10, 0x319 + +gUnknown_835285C:: @ 835285C + .4byte 2 + .4byte gUnknown_8352844 + +gUnknown_8352864:: @ 8352864 + connection down, 12, 0x325 + connection left, 10, 0x324 + connection right, 10, 0x321 + +gUnknown_8352888:: @ 8352888 + .4byte 3 + .4byte gUnknown_8352864 + +gUnknown_8352890:: @ 8352890 + connection up, 0, 0x328 + connection right, 0, 0x326 + +gUnknown_83528A8:: @ 83528A8 + .4byte 2 + .4byte gUnknown_8352890 + +gUnknown_83528B0:: @ 83528B0 + connection down, 0, 0x32A + +gUnknown_83528BC:: @ 83528BC + .4byte 1 + .4byte gUnknown_83528B0 + +gUnknown_83528C4:: @ 83528C4 + connection up, 0, 0x317 + connection down, 12, 0x318 + connection left, 10, 0x319 + connection right, 10, 0x31A + +gUnknown_83528F4:: @ 83528F4 + .4byte 4 + .4byte gUnknown_83528C4 + +gUnknown_83528FC:: @ 83528FC + connection up, 0, 0x317 + connection down, 12, 0x318 + connection left, 10, 0x319 + connection right, 10, 0x31A + +gUnknown_835292C:: @ 835292C + .4byte 4 + .4byte gUnknown_83528FC + +gUnknown_8352934:: @ 8352934 + connection down, 0, 0x32E + connection right, -120, 0x32D + +gUnknown_835294C:: @ 835294C + .4byte 2 + .4byte gUnknown_8352934 + +gUnknown_8352954:: @ 8352954 + connection up, 24, 0x32F + +gUnknown_8352960:: @ 8352960 + .4byte 1 + .4byte gUnknown_8352954 + +gUnknown_8352968:: @ 8352968 + connection down, 0, 0x331 + connection left, 0, 0x330 + +gUnknown_8352980:: @ 8352980 + .4byte 2 + .4byte gUnknown_8352968 + +gUnknown_8352988:: @ 8352988 + connection up, -48, 0x337 + connection right, 0, 0x338 + +gUnknown_83529A0:: @ 83529A0 + .4byte 2 + .4byte gUnknown_8352988 + +gUnknown_83529A8:: @ 83529A8 + connection up, -48, 0x33E + connection down, 0, 0x33F + +gUnknown_83529C0:: @ 83529C0 + .4byte 2 + .4byte gUnknown_83529A8 + +gUnknown_83529C8:: @ 83529C8 + connection right, -40, 0x33C + +gUnknown_83529D4:: @ 83529D4 + .4byte 1 + .4byte gUnknown_83529C8 + +gUnknown_83529DC:: @ 83529DC + connection up, -12, 0x301 + connection down, 0, 0x300 + +gUnknown_83529F4:: @ 83529F4 + .4byte 2 + .4byte gUnknown_83529DC + +gUnknown_83529FC:: @ 83529FC + connection up, -12, 0x302 + connection down, -12, 0x301 + +gUnknown_8352A14:: @ 8352A14 + .4byte 2 + .4byte gUnknown_83529FC + +gUnknown_8352A1C:: @ 8352A1C + connection up, 60, 0x316 + connection left, -10, 0x302 + +gUnknown_8352A34:: @ 8352A34 + .4byte 2 + .4byte gUnknown_8352A1C + +gUnknown_8352A3C:: @ 8352A3C + connection down, -60, 0x315 + connection right, -10, 0x303 + +gUnknown_8352A54:: @ 8352A54 + .4byte 2 + .4byte gUnknown_8352A3C + +gUnknown_8352A5C:: @ 8352A5C + connection up, 0, 0x303 + connection down, 0, 0x30B + +gUnknown_8352A74:: @ 8352A74 + .4byte 2 + .4byte gUnknown_8352A5C + +gUnknown_8352A7C:: @ 8352A7C + connection up, 0, 0x30B + connection down, -12, 0x305 + +gUnknown_8352A94:: @ 8352A94 + .4byte 2 + .4byte gUnknown_8352A7C + +gUnknown_8352A9C:: @ 8352A9C + connection left, -10, 0x306 + connection right, -10, 0x30B + +gUnknown_8352AB4:: @ 8352AB4 + .4byte 2 + .4byte gUnknown_8352A9C + +gUnknown_8352ABC:: @ 8352ABC + connection left, -10, 0x30B + connection right, 0, 0x304 + +gUnknown_8352AD4:: @ 8352AD4 + .4byte 2 + .4byte gUnknown_8352ABC + +gUnknown_8352ADC:: @ 8352ADC + connection left, -10, 0x303 + connection right, 0, 0x31C + +gUnknown_8352AF4:: @ 8352AF4 + .4byte 2 + .4byte gUnknown_8352ADC + +gUnknown_8352AFC:: @ 8352AFC + connection down, 0, 0x304 + connection left, 0, 0x31B + +gUnknown_8352B14:: @ 8352B14 + .4byte 2 + .4byte gUnknown_8352AFC + +gUnknown_8352B1C:: @ 8352B1C + connection left, -10, 0x305 + connection right, -60, 0x31E + +gUnknown_8352B34:: @ 8352B34 + .4byte 2 + .4byte gUnknown_8352B1C + +gUnknown_8352B3C:: @ 8352B3C + connection up, 0, 0x304 + connection down, -48, 0x31F + connection left, 60, 0x31D + +gUnknown_8352B60:: @ 8352B60 + .4byte 3 + .4byte gUnknown_8352B3C + +gUnknown_8352B68:: @ 8352B68 + connection up, 48, 0x31E + connection left, 0, 0x320 + +gUnknown_8352B80:: @ 8352B80 + .4byte 2 + .4byte gUnknown_8352B68 + +gUnknown_8352B88:: @ 8352B88 + connection left, 40, 0x321 + connection right, 0, 0x31F + +gUnknown_8352BA0:: @ 8352BA0 + .4byte 2 + .4byte gUnknown_8352B88 + +gUnknown_8352BA8:: @ 8352BA8 + connection left, -10, 0x307 + connection right, -40, 0x320 + +gUnknown_8352BC0:: @ 8352BC0 + .4byte 2 + .4byte gUnknown_8352BA8 + +gUnknown_8352BC8:: @ 8352BC8 + connection down, 0, 0x323 + connection right, -10, 0x306 + +gUnknown_8352BE0:: @ 8352BE0 + .4byte 2 + .4byte gUnknown_8352BC8 + +gUnknown_8352BE8:: @ 8352BE8 + connection up, 0, 0x322 + connection down, 0, 0x324 + +gUnknown_8352C00:: @ 8352C00 + .4byte 2 + .4byte gUnknown_8352BE8 + +gUnknown_8352C08:: @ 8352C08 + connection up, 0, 0x323 + connection right, -10, 0x307 + +gUnknown_8352C20:: @ 8352C20 + .4byte 2 + .4byte gUnknown_8352C08 + +gUnknown_8352C28:: @ 8352C28 + connection up, -12, 0x307 + connection left, 40, 0x326 + +gUnknown_8352C40:: @ 8352C40 + .4byte 2 + .4byte gUnknown_8352C28 + +gUnknown_8352C48:: @ 8352C48 + connection left, 0, 0x308 + connection right, -40, 0x325 + +gUnknown_8352C60:: @ 8352C60 + .4byte 2 + .4byte gUnknown_8352C48 + +gUnknown_8352C68:: @ 8352C68 + connection up, 0, 0x300 + connection down, 0, 0x328 + +gUnknown_8352C80:: @ 8352C80 + .4byte 2 + .4byte gUnknown_8352C68 + +gUnknown_8352C88:: @ 8352C88 + connection up, 0, 0x327 + connection down, 0, 0x308 + +gUnknown_8352CA0:: @ 8352CA0 + .4byte 2 + .4byte gUnknown_8352C88 + +gUnknown_8352CA8:: @ 8352CA8 + connection up, 0, 0x32A + connection right, -10, 0x301 + +gUnknown_8352CC0:: @ 8352CC0 + .4byte 2 + .4byte gUnknown_8352CA8 + +gUnknown_8352CC8:: @ 8352CC8 + connection up, 0, 0x309 + connection down, 0, 0x329 + +gUnknown_8352CE0:: @ 8352CE0 + .4byte 2 + .4byte gUnknown_8352CC8 + +gUnknown_8352CE8:: @ 8352CE8 + connection down, -12, 0x303 + connection right, 0, 0x32C + +gUnknown_8352D00:: @ 8352D00 + .4byte 2 + .4byte gUnknown_8352CE8 + +gUnknown_8352D08:: @ 8352D08 + connection left, 0, 0x32B + +gUnknown_8352D14:: @ 8352D14 + .4byte 1 + .4byte gUnknown_8352D08 + +gUnknown_8352D1C:: @ 8352D1C + connection left, 120, 0x30C + +gUnknown_8352D28:: @ 8352D28 + .4byte 1 + .4byte gUnknown_8352D1C + +gUnknown_8352D30:: @ 8352D30 + connection up, 0, 0x30C + +gUnknown_8352D3C:: @ 8352D3C + .4byte 1 + .4byte gUnknown_8352D30 + +gUnknown_8352D44:: @ 8352D44 + connection down, -24, 0x30D + +gUnknown_8352D50:: @ 8352D50 + .4byte 1 + .4byte gUnknown_8352D44 + +gUnknown_8352D58:: @ 8352D58 + connection right, 0, 0x30E + +gUnknown_8352D64:: @ 8352D64 + .4byte 1 + .4byte gUnknown_8352D58 + +gUnknown_8352D6C:: @ 8352D6C + connection up, 0, 0x30E + +gUnknown_8352D78:: @ 8352D78 + .4byte 1 + .4byte gUnknown_8352D6C + +gUnknown_8352D80:: @ 8352D80 + connection up, 0, 0x30E + +gUnknown_8352D8C:: @ 8352D8C + .4byte 1 + .4byte gUnknown_8352D80 + +gUnknown_8352D94:: @ 8352D94 + connection up, 0, 0x30E + +gUnknown_8352DA0:: @ 8352DA0 + .4byte 1 + .4byte gUnknown_8352D94 + +gUnknown_8352DA8:: @ 8352DA8 + connection down, -48, 0x337 + +gUnknown_8352DB4:: @ 8352DB4 + .4byte 1 + .4byte gUnknown_8352DA8 + +gUnknown_8352DBC:: @ 8352DBC + connection up, 48, 0x336 + connection down, 48, 0x310 + +gUnknown_8352DD4:: @ 8352DD4 + .4byte 2 + .4byte gUnknown_8352DBC + +gUnknown_8352DDC:: @ 8352DDC + connection left, 0, 0x310 + connection right, 20, 0x339 + +gUnknown_8352DF4:: @ 8352DF4 + .4byte 2 + .4byte gUnknown_8352DDC + +gUnknown_8352DFC:: @ 8352DFC + connection left, -20, 0x338 + +gUnknown_8352E08:: @ 8352E08 + .4byte 1 + .4byte gUnknown_8352DFC + +gUnknown_8352E10:: @ 8352E10 + connection down, 0, 0x33B + +gUnknown_8352E1C:: @ 8352E1C + .4byte 1 + .4byte gUnknown_8352E10 + +gUnknown_8352E24:: @ 8352E24 + connection up, 0, 0x33A + connection right, 0, 0x33C + +gUnknown_8352E3C:: @ 8352E3C + .4byte 2 + .4byte gUnknown_8352E24 + +gUnknown_8352E44:: @ 8352E44 + connection left, 0, 0x33B + connection left, 40, 0x312 + connection left, 80, 0x33D + +gUnknown_8352E68:: @ 8352E68 + .4byte 3 + .4byte gUnknown_8352E44 + +gUnknown_8352E70:: @ 8352E70 + connection right, -80, 0x33C + +gUnknown_8352E7C:: @ 8352E7C + .4byte 1 + .4byte gUnknown_8352E70 + +gUnknown_8352E84:: @ 8352E84 + connection down, 48, 0x311 + +gUnknown_8352E90:: @ 8352E90 + .4byte 1 + .4byte gUnknown_8352E84 + +gUnknown_8352E98:: @ 8352E98 + connection up, 0, 0x311 + connection right, 20, 0x340 + +gUnknown_8352EB0:: @ 8352EB0 + .4byte 2 + .4byte gUnknown_8352E98 + +gUnknown_8352EB8:: @ 8352EB8 + connection down, -48, 0x341 + connection left, -20, 0x33F + +gUnknown_8352ED0:: @ 8352ED0 + .4byte 2 + .4byte gUnknown_8352EB8 + +gUnknown_8352ED8:: @ 8352ED8 + connection up, 48, 0x340 + +gUnknown_8352EE4:: @ 8352EE4 + .4byte 1 + .4byte gUnknown_8352ED8 diff --git a/data/data.s b/data/data.s index dd692cb33..6c3f3f954 100644 --- a/data/data.s +++ b/data/data.s @@ -909,7 +909,15 @@ gUnknown_826D2B0:: @ 826D2B0 .incbin "baserom.gba", 0x26D2B0, 0x28 gDirectionToVectors:: @ 826D2D8 - .incbin "baserom.gba", 0x26D2D8, 0x48 + .4byte 0, 0 + .4byte 0, 1 + .4byte 0, -1 + .4byte -1, 0 + .4byte 1, 0 + .4byte -1, 1 + .4byte 1, 1 + .4byte -1, -1 + .4byte 1, -1 gUnknown_826D320:: @ 826D320 .incbin "baserom.gba", 0x26D320, 0x10 diff --git a/data/fieldmap.s b/data/fieldmap.s deleted file mode 100644 index 3b24a4f86..000000000 --- a/data/fieldmap.s +++ /dev/null @@ -1,6 +0,0 @@ - .include "asm/macros.inc" - - .section .rodata - -gUnknown_8352754:: @ 8352754 - .incbin "baserom.gba", 0x352754, 0x798 diff --git a/ld_script.txt b/ld_script.txt index 7d2adefe7..6eb5e4e6d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -367,7 +367,7 @@ SECTIONS { src/bg_regs.o(.rodata); src/string_util.o(.rodata); data/data.o(.rodata); - data/fieldmap.o(.rodata); + data/connections.o(.rodata); src/fieldmap.o(.rodata); src/metatile_behavior.o(.rodata); data/metatile_behavior.o(.rodata); From 724a36220d274a24b666a36e38fb41f191b7c01f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Jan 2019 21:32:51 -0500 Subject: [PATCH 027/318] Disassemble some function pointer tables --- data/data.s | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/data/data.s b/data/data.s index 6c3f3f954..e17c041a2 100644 --- a/data/data.s +++ b/data/data.s @@ -926,13 +926,29 @@ gUnknown_826D330:: @ 826D330 .incbin "baserom.gba", 0x26D330, 0xC gUnknown_826D33C:: @ 826D33C - .incbin "baserom.gba", 0x26D33C, 0xC + .4byte sub_8058684 + .4byte sub_80586A4 + .4byte sub_80586A8 gUnknown_826D348:: @ 826D348 - .incbin "baserom.gba", 0x26D348, 0x2C + .4byte sub_80586C8 + .4byte sub_80586CC + .4byte sub_80586CC + .4byte sub_80586CC + .4byte sub_80586CC + .4byte sub_80586C8 + .4byte sub_80586C8 + .4byte sub_8058734 + .4byte sub_8058734 + .4byte sub_8058734 + .4byte sub_8058734 gUnknown_826D374:: @ 826D374 - .incbin "baserom.gba", 0x26D374, 0x78258 + .4byte sub_805874C + .4byte sub_8058754 + +gUnknown_826D37C:: @ 826D37C + .incbin "baserom.gba", 0x26D37C, 0x78250 gUnknown_82E55CC:: @ 82E55CC .incbin "baserom.gba", 0x2E55CC, 0x695C0 From 9c5f01fc8efb546fa6ef546cd1c627befcfd6740 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 8 Jan 2019 08:45:19 -0500 Subject: [PATCH 028/318] through sub_815E948 --- asm/trainer_tower.s | 465 ------------------------------------- include/new_menu_helpers.h | 1 + include/pokemon.h | 1 + src/trainer_tower.c | 147 ++++++++++++ 4 files changed, 149 insertions(+), 465 deletions(-) diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s index a1ca0da57..4b1bfdfe0 100644 --- a/asm/trainer_tower.s +++ b/asm/trainer_tower.s @@ -5,471 +5,6 @@ .text - thumb_func_start sub_815E5F0 -sub_815E5F0: @ 815E5F0 - push {lr} - ldr r0, _0815E620 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _0815E624 @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r0, _0815E628 @ =0x00003d42 - adds r2, r0 - ldrb r1, [r2] - lsls r0, r1, 28 - cmp r0, 0 - bge _0815E630 - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r1, _0815E62C @ =gSpecialVar_Result - movs r0, 0 - b _0815E64C - .align 2, 0 -_0815E620: .4byte gSaveBlock1Ptr -_0815E624: .4byte 0x00003d34 -_0815E628: .4byte 0x00003d42 -_0815E62C: .4byte gSpecialVar_Result -_0815E630: - lsls r0, r1, 27 - cmp r0, 0 - bge _0815E648 - movs r0, 0x11 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r1, _0815E644 @ =gSpecialVar_Result - movs r0, 0x1 - b _0815E64C - .align 2, 0 -_0815E644: .4byte gSpecialVar_Result -_0815E648: - ldr r1, _0815E654 @ =gSpecialVar_Result - movs r0, 0x2 -_0815E64C: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0815E654: .4byte gSpecialVar_Result - thumb_func_end sub_815E5F0 - - thumb_func_start sub_815E658 -sub_815E658: @ 815E658 - push {r4-r6,lr} - ldr r4, _0815E700 @ =gSaveBlock1Ptr - ldr r2, [r4] - ldr r6, _0815E704 @ =0x00003d34 - adds r0, r2, r6 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r5, _0815E708 @ =0x00003d38 - adds r2, r5 - adds r2, r0 - ldr r1, [r2] - ldr r0, _0815E70C @ =0x00034bbe - cmp r1, r0 - bls _0815E690 - bl DisableVBlankCounter1 - ldr r1, [r4] - adds r0, r1, r6 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r5 - adds r1, r0 - ldr r0, _0815E710 @ =0x00034bbf - str r0, [r1] -_0815E690: - ldr r1, [r4] - adds r0, r1, r6 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r5 - adds r1, r0 - ldr r4, [r1] - movs r5, 0xE1 - lsls r5, 4 - adds r0, r4, 0 - adds r1, r5, 0 - bl __divsi3 - adds r6, r0, 0 - adds r0, r4, 0 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - movs r1, 0x3C - bl __divsi3 - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0x3C - bl __modsi3 - movs r1, 0xA8 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - adds r4, r0, 0 - ldr r0, _0815E714 @ =gStringVar1 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815E718 @ =gStringVar2 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815E71C @ =gStringVar3 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815E700: .4byte gSaveBlock1Ptr -_0815E704: .4byte 0x00003d34 -_0815E708: .4byte 0x00003d38 -_0815E70C: .4byte 0x00034bbe -_0815E710: .4byte 0x00034bbf -_0815E714: .4byte gStringVar1 -_0815E718: .4byte gStringVar2 -_0815E71C: .4byte gStringVar3 - thumb_func_end sub_815E658 - - thumb_func_start sub_815E720 -sub_815E720: @ 815E720 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - bl sub_815EC0C - ldr r0, _0815E85C @ =gUnknown_847A218 - bl AddWindow - lsls r0, 24 - lsrs r7, r0, 24 - bl sub_80F6E9C - adds r0, r7, 0 - movs r1, 0 - bl sub_80F6F1C - ldr r2, _0815E860 @ =gUnknown_83FE982 - movs r1, 0 - str r1, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - str r1, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0x2 - movs r3, 0x4A - bl AddTextPrinterParameterized - movs r0, 0 - mov r8, r0 - movs r1, 0xB8 - lsls r1, 22 - mov r10, r1 - movs r0, 0x90 - lsls r0, 22 - mov r9, r0 -_0815E76C: - ldr r0, _0815E864 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _0815E868 @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _0815E86C @ =0x00003d3c - adds r0, r1 - bl sub_815EDDC - adds r4, r0, 0 - movs r5, 0xE1 - lsls r5, 4 - adds r1, r5, 0 - bl __divsi3 - adds r6, r0, 0 - adds r0, r4, 0 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - movs r1, 0x3C - bl __divsi3 - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0x3C - bl __modsi3 - movs r1, 0xA8 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - adds r4, r0, 0 - ldr r0, _0815E870 @ =gStringVar1 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815E874 @ =gStringVar2 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815E878 @ =gStringVar3 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815E87C @ =gStringVar4 - ldr r1, _0815E880 @ =gUnknown_83FE998 - bl StringExpandPlaceholders - ldr r1, _0815E884 @ =gUnknown_83FE9C4 - mov r0, r8 - subs r0, 0x1 - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - mov r1, r9 - lsrs r0, r1, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0x2 - movs r3, 0x18 - bl AddTextPrinterParameterized - mov r1, r10 - lsrs r0, r1, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - adds r0, r7, 0 - movs r1, 0x2 - ldr r2, _0815E87C @ =gStringVar4 - movs r3, 0x60 - bl AddTextPrinterParameterized - movs r0, 0xA0 - lsls r0, 21 - add r10, r0 - add r9, r0 - movs r1, 0x1 - add r8, r1 - mov r0, r8 - cmp r0, 0x3 - ble _0815E76C - adds r0, r7, 0 - bl PutWindowTilemap - adds r0, r7, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _0815E888 @ =0x00004001 - adds r1, r7, 0 - bl VarSet - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815E85C: .4byte gUnknown_847A218 -_0815E860: .4byte gUnknown_83FE982 -_0815E864: .4byte gSaveBlock1Ptr -_0815E868: .4byte 0x00003d34 -_0815E86C: .4byte 0x00003d3c -_0815E870: .4byte gStringVar1 -_0815E874: .4byte gStringVar2 -_0815E878: .4byte gStringVar3 -_0815E87C: .4byte gStringVar4 -_0815E880: .4byte gUnknown_83FE998 -_0815E884: .4byte gUnknown_83FE9C4 -_0815E888: .4byte 0x00004001 - thumb_func_end sub_815E720 - - thumb_func_start sub_815E88C -sub_815E88C: @ 815E88C - push {r4,lr} - ldr r0, _0815E8B0 @ =0x00004001 - bl VarGet - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_810F4D8 - adds r0, r4, 0 - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815E8B0: .4byte 0x00004001 - thumb_func_end sub_815E88C - - thumb_func_start sub_815E8B4 -sub_815E8B4: @ 815E8B4 - push {r4,lr} - ldr r4, _0815E8C8 @ =gSpecialVar_Result - bl GetMonsStateToDoubles - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815E8C8: .4byte gSpecialVar_Result - thumb_func_end sub_815E8B4 - - thumb_func_start sub_815E8CC -sub_815E8CC: @ 815E8CC - push {lr} - ldr r0, _0815E8EC @ =gUnknown_203F458 - ldr r1, [r0] - ldrb r0, [r1, 0x4] - ldrb r2, [r1, 0xD] - cmp r0, r2 - beq _0815E8F8 - ldr r0, _0815E8F0 @ =gStringVar1 - ldrb r1, [r1, 0x4] - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r1, _0815E8F4 @ =gSpecialVar_Result - movs r0, 0x1 - b _0815E8FC - .align 2, 0 -_0815E8EC: .4byte gUnknown_203F458 -_0815E8F0: .4byte gStringVar1 -_0815E8F4: .4byte gSpecialVar_Result -_0815E8F8: - ldr r1, _0815E904 @ =gSpecialVar_Result - movs r0, 0 -_0815E8FC: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0815E904: .4byte gSpecialVar_Result - thumb_func_end sub_815E8CC - - thumb_func_start sub_815E908 -sub_815E908: @ 815E908 - push {lr} - ldr r0, _0815E928 @ =gMapHeader - ldrh r1, [r0, 0x12] - ldr r0, _0815E92C @ =0x00000129 - cmp r1, r0 - bne _0815E938 - ldr r0, _0815E930 @ =0x00004082 - bl VarGet - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _0815E938 - ldr r0, _0815E934 @ =gSpecialVar_Result - strh r1, [r0] - b _0815E93E - .align 2, 0 -_0815E928: .4byte gMapHeader -_0815E92C: .4byte 0x00000129 -_0815E930: .4byte 0x00004082 -_0815E934: .4byte gSpecialVar_Result -_0815E938: - ldr r1, _0815E944 @ =gSpecialVar_Result - movs r0, 0 - strh r0, [r1] -_0815E93E: - pop {r0} - bx r0 - .align 2, 0 -_0815E944: .4byte gSpecialVar_Result - thumb_func_end sub_815E908 - - thumb_func_start sub_815E948 -sub_815E948: @ 815E948 - push {r4,lr} - ldr r0, _0815E97C @ =0x00004001 - bl VarGet - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _0815E980 @ =gUnknown_203F458 - ldr r3, [r0] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r2 - lsls r1, 3 - ldrb r2, [r3] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r1, r0 - adds r3, r1 - ldrb r1, [r3, 0x1B] - movs r3, 0 - ldr r2, _0815E984 @ =gUnknown_847A074 - ldr r0, _0815E988 @ =gFacilityClassToTrainerClass - adds r1, r0 - b _0815E994 - .align 2, 0 -_0815E97C: .4byte 0x00004001 -_0815E980: .4byte gUnknown_203F458 -_0815E984: .4byte gUnknown_847A074 -_0815E988: .4byte gFacilityClassToTrainerClass -_0815E98C: - adds r2, 0x4 - adds r3, 0x1 - cmp r3, 0x68 - bhi _0815E99C -_0815E994: - ldrb r0, [r2] - ldrb r4, [r1] - cmp r0, r4 - bne _0815E98C -_0815E99C: - cmp r3, 0x69 - beq _0815E9B0 - ldr r1, _0815E9AC @ =gUnknown_847A074 - lsls r0, r3, 2 - adds r0, r1 - ldrb r2, [r0, 0x1] - b _0815E9B2 - .align 2, 0 -_0815E9AC: .4byte gUnknown_847A074 -_0815E9B0: - movs r2, 0 -_0815E9B2: - ldr r0, _0815E9C4 @ =gUnknown_847A2D2 - lsls r1, r2, 1 - adds r1, r0 - ldrh r0, [r1] - bl PlayNewMapMusic - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815E9C4: .4byte gUnknown_847A2D2 - thumb_func_end sub_815E948 - thumb_func_start sub_815E9C8 sub_815E9C8: @ 815E9C8 ldr r3, _0815E9EC @ =gSpecialVar_Result diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 32b46b552..e22f89f44 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -23,5 +23,6 @@ void sub_80F7974(const u8 *); u8 GetStartMenuWindowId(void); void sub_80F7998(void); void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); +void sub_80F6F1C(u8 windowId, bool8 copyNow); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/pokemon.h b/include/pokemon.h index 4c6240cd4..6a9b85e71 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -671,5 +671,6 @@ void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); void PlayMapChosenOrBattleBGM(u16 songId); +u8 GetMonsStateToDoubles(void); #endif // GUARD_POKEMON_H diff --git a/src/trainer_tower.c b/src/trainer_tower.c index f4e18eee6..8ced159c5 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -18,6 +18,10 @@ #include "battle_2.h" #include "overworld.h" #include "item.h" +#include "window.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "sound.h" struct UnkStruct_8479D34 { @@ -98,6 +102,12 @@ struct UnkStruct_847A024 bool8 unk4; }; +struct UnkStruct_847A074 +{ + u8 unk0; + u8 unk1; +}; + EWRAM_DATA struct UnkStruct_203F458 * gUnknown_203F458 = NULL; EWRAM_DATA struct UnkStruct_203F45C * gUnknown_203F45C = NULL; @@ -133,14 +143,21 @@ void sub_815EC0C(void); u32 sub_815EDDC(u32 *); void sub_815EDF4(u32 *, u32); +extern const u8 gUnknown_83FE982[]; +extern const u8 gUnknown_83FE998[]; +extern const u8 *const gUnknown_83FE9C4[]; + extern const struct UnkStruct_8479D34 gUnknown_8479D34[15]; extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83]; extern const struct UnkStruct_847A024 gUnknown_847A024[10]; +extern const struct UnkStruct_847A074 gUnknown_847A074[105]; +extern const struct WindowTemplate gUnknown_847A218; extern void (*const gUnknown_847A230[])(void); extern const struct Unk_203F458_Header gUnknown_84827AC; extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8]; extern const u16 gUnknown_847A284[8][3]; extern const u16 gUnknown_847A2B4[]; +extern const u16 gUnknown_847A2D2[]; bool32 sub_815D7BC(void * dest, void * buffer) { @@ -858,3 +875,133 @@ void sub_815E5C4(void) { gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3 = 1; } + +void sub_815E5F0(void) +{ + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3) + { + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3 = FALSE; + gSpecialVar_Result = 0; + } + else if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_4) + { + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_4 = FALSE; + gSpecialVar_Result = 1; + } + else + { + gSpecialVar_Result = 2; + } +} + +#define PRINT_TOWER_TIME(src) ({ \ + s32 minutes, seconds, centiseconds, frames; \ + \ + frames = (src); \ + \ + minutes = frames / 3600; \ + frames %= 3600; \ + seconds = frames / 60; \ + frames %= 60; \ + centiseconds = frames * 168 / 100; \ + \ + ConvertIntToDecimalStringN(gStringVar1, minutes, STR_CONV_MODE_RIGHT_ALIGN, 2); \ + ConvertIntToDecimalStringN(gStringVar2, seconds, STR_CONV_MODE_RIGHT_ALIGN, 2); \ + ConvertIntToDecimalStringN(gStringVar3, centiseconds, STR_CONV_MODE_LEADING_ZEROS, 2); \ +}) + +void sub_815E658(void) +{ + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 >= 215999) + { + DisableVBlankCounter1(); + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 215999; + } + + PRINT_TOWER_TIME(gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); +} + +void sub_815E720(void) +{ + u8 windowId; + s32 i; + s32 minutes, seconds, centiseconds; + + sub_815EC0C(); + windowId = AddWindow(&gUnknown_847A218); + sub_80F6E9C(); + sub_80F6F1C(windowId, FALSE); + AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL); + + for (i = 0; i < 4; i++) + { + PRINT_TOWER_TIME(sub_815EDDC(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4)); + + StringExpandPlaceholders(gStringVar4, gUnknown_83FE998); + AddTextPrinterParameterized(windowId, 2, gUnknown_83FE9C4[i - 1], 0x18, 0x24 + 0x14 * i, 0xFF, NULL); + AddTextPrinterParameterized(windowId, 2, gStringVar4, 0x60, 0x2E + 0x14 * i, 0xFF, NULL); + } + + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); + VarSet(VAR_0x4001, windowId); +} + +void sub_815E88C(void) +{ + u8 windowId = VarGet(VAR_0x4001); + sub_810F4D8(windowId, TRUE); + RemoveWindow(windowId); +} + +void sub_815E8B4(void) +{ + gSpecialVar_Result = GetMonsStateToDoubles(); +} + +void sub_815E8CC(void) +{ + if (gUnknown_203F458->unk_0004.unk_0000.unk0 != gUnknown_203F458->unk_0004.unk_0008[0].unk_001) + { + ConvertIntToDecimalStringN(gStringVar1, gUnknown_203F458->unk_0004.unk_0000.unk0, STR_CONV_MODE_LEFT_ALIGN, 1); + gSpecialVar_Result = TRUE; + } + else + { + gSpecialVar_Result = FALSE; + } +} + +void sub_815E908(void) +{ + if (gMapHeader.mapDataId == 0x0129 && VarGet(VAR_0x4082) == 0) + { + gSpecialVar_Result = FALSE; + } + else + { + gSpecialVar_Result = FALSE; + } +} + +void sub_815E948(void) +{ + s32 i; + u16 var_4001 = VarGet(VAR_0x4001); + u8 r1 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[var_4001].unk_00B; + + for (i = 0; i < NELEMS(gUnknown_847A074); i++) + { + if (gUnknown_847A074[i].unk0 == gFacilityClassToTrainerClass[r1]) + break; + } + if (i != NELEMS(gUnknown_847A074)) + { + var_4001 = gUnknown_847A074[i].unk1; + } + else + { + var_4001 = 0; + } + PlayNewMapMusic(gUnknown_847A2D2[var_4001]); +} From 7738fcee638985656b7cf376ec6936f04f53c255 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 8 Jan 2019 10:20:51 -0500 Subject: [PATCH 029/318] through sub_815E9FC --- asm/trainer_tower.s | 241 --------------------------------------- common_syms/fieldmap.txt | 2 +- include/global.h | 27 ----- include/pokemon.h | 49 ++++---- src/pokemon.c | 4 +- src/trainer_tower.c | 52 +++++++++ 6 files changed, 80 insertions(+), 295 deletions(-) diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s index 4b1bfdfe0..2336ec48a 100644 --- a/asm/trainer_tower.s +++ b/asm/trainer_tower.s @@ -5,247 +5,6 @@ .text - thumb_func_start sub_815E9C8 -sub_815E9C8: @ 815E9C8 - ldr r3, _0815E9EC @ =gSpecialVar_Result - ldr r0, _0815E9F0 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E9F4 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E9F8 @ =0x00003d42 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - lsrs r0, 31 - strh r0, [r3] - bx lr - .align 2, 0 -_0815E9EC: .4byte gSpecialVar_Result -_0815E9F0: .4byte gSaveBlock1Ptr -_0815E9F4: .4byte 0x00003d34 -_0815E9F8: .4byte 0x00003d42 - thumb_func_end sub_815E9C8 - - thumb_func_start sub_815E9FC -sub_815E9FC: @ 815E9FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0815EABC @ =0x00004001 - bl VarGet - lsls r0, 16 - lsrs r4, r0, 16 - bl sub_815EBB8 - mov r9, r0 - ldr r0, _0815EAC0 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815EAC4 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - movs r0, 0xF5 - lsls r0, 6 - adds r1, r0 - ldrb r5, [r1] - bl ZeroEnemyPartyMons - ldr r1, _0815EAC8 @ =gUnknown_203F458 - mov r10, r1 - ldr r6, [r1] - ldrb r1, [r6] - lsls r0, r1, 5 - subs r0, r1 - lsls r7, r0, 5 - adds r0, r6, r7 - ldrb r0, [r0, 0xE] - cmp r0, 0x1 - beq _0815EAD4 - cmp r0, 0x1 - ble _0815EA56 - cmp r0, 0x2 - bne _0815EA56 - b _0815EB58 -_0815EA56: - movs r6, 0 - lsls r5, 1 - str r5, [sp] - lsls r0, r4, 2 - mov r5, r10 - adds r0, r4 - lsls r0, 3 - adds r0, r4 - lsls r7, r0, 3 - adds r2, r7, 0x4 - mov r8, r2 -_0815EA6C: - ldr r1, _0815EACC @ =gUnknown_847A2EE - ldr r2, [sp] - adds r0, r6, r2 - adds r0, r1 - ldrb r2, [r0] - ldr r3, [r5] - movs r0, 0x2C - adds r4, r2, 0 - muls r4, r0 - adds r2, r4, r7 - ldrb r1, [r3] - lsls r0, r1, 5 - subs r0, r1 - lsls r0, 5 - adds r2, r0 - adds r3, r2 - adds r3, 0x5C - mov r0, r9 - strb r0, [r3] - movs r0, 0x64 - muls r0, r6 - ldr r1, _0815EAD0 @ =gEnemyParty - adds r0, r1 - ldr r1, [r5] - ldrb r3, [r1] - lsls r2, r3, 5 - subs r2, r3 - lsls r2, 5 - adds r2, 0xC - adds r1, r2 - add r1, r8 - adds r4, 0x40 - adds r1, r4 - bl sub_803E0A4 - adds r6, 0x1 - cmp r6, 0x1 - ble _0815EA6C - b _0815EB9E - .align 2, 0 -_0815EABC: .4byte 0x00004001 -_0815EAC0: .4byte gSaveBlock1Ptr -_0815EAC4: .4byte 0x00003d34 -_0815EAC8: .4byte gUnknown_203F458 -_0815EACC: .4byte gUnknown_847A2EE -_0815EAD0: .4byte gEnemyParty -_0815EAD4: - ldr r4, _0815EB50 @ =gUnknown_847A2FE - lsls r5, 1 - adds r0, r5, r4 - ldrb r2, [r0] - movs r1, 0x2C - mov r8, r1 - mov r3, r8 - muls r3, r2 - adds r0, r3, r7 - adds r0, r6, r0 - adds r0, 0x5C - mov r2, r9 - strb r2, [r0] - ldr r6, _0815EB54 @ =gEnemyParty - mov r0, r10 - ldr r1, [r0] - ldrb r2, [r1] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r0, 0xC - adds r1, r0 - adds r3, 0x44 - adds r1, r3 - adds r0, r6, 0 - bl sub_803E0A4 - adds r4, 0x1 - adds r5, r4 - ldrb r2, [r5] - mov r0, r10 - ldr r1, [r0] - mov r3, r8 - muls r3, r2 - ldrb r2, [r1] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r0, r3, r0 - adds r1, r0 - movs r2, 0xD2 - lsls r2, 1 - adds r1, r2 - mov r0, r9 - strb r0, [r1] - adds r6, 0x64 - mov r2, r10 - ldr r1, [r2] - ldrb r2, [r1] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r0, 0xC - adds r1, r0 - movs r0, 0xC6 - lsls r0, 1 - adds r3, r0 - adds r1, r3 - adds r0, r6, 0 - bl sub_803E0A4 - b _0815EB9E - .align 2, 0 -_0815EB50: .4byte gUnknown_847A2FE -_0815EB54: .4byte gEnemyParty -_0815EB58: - ldr r1, _0815EBB0 @ =gUnknown_847A30E - lsls r0, r5, 1 - adds r0, r5 - adds r0, r4, r0 - adds r0, r1 - ldrb r2, [r0] - movs r0, 0x2C - adds r5, r2, 0 - muls r5, r0 - lsls r3, r4, 2 - adds r3, r4 - lsls r3, 3 - adds r3, r4 - lsls r3, 3 - adds r0, r5, r3 - adds r0, r7 - adds r0, r6, r0 - adds r0, 0x5C - mov r1, r9 - strb r1, [r0] - ldr r0, _0815EBB4 @ =gEnemyParty - mov r2, r10 - ldr r1, [r2] - ldrb r4, [r1] - lsls r2, r4, 5 - subs r2, r4 - lsls r2, 5 - adds r2, 0xC - adds r1, r2 - adds r3, 0x4 - adds r1, r3 - adds r5, 0x40 - adds r1, r5 - bl sub_803E0A4 -_0815EB9E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815EBB0: .4byte gUnknown_847A30E -_0815EBB4: .4byte gEnemyParty - thumb_func_end sub_815E9FC - thumb_func_start sub_815EBB8 sub_815EBB8: @ 815EBB8 push {r4-r6,lr} diff --git a/common_syms/fieldmap.txt b/common_syms/fieldmap.txt index b593fc3f2..dedf055bd 100644 --- a/common_syms/fieldmap.txt +++ b/common_syms/fieldmap.txt @@ -1 +1 @@ -VMap \ No newline at end of file +VMap diff --git a/include/global.h b/include/global.h index 26ce4a8cc..8e85b3123 100644 --- a/include/global.h +++ b/include/global.h @@ -241,33 +241,6 @@ struct LinkBattleRecords u8 languages[LINK_B_RECORDS_COUNT]; }; -struct BattleTowerPokemon -{ - u16 species; - u16 heldItem; - u16 moves[4]; - u8 level; - u8 ppBonuses; - u8 hpEV; - u8 attackEV; - u8 defenseEV; - u8 speedEV; - u8 spAttackEV; - u8 spDefenseEV; - u32 otId; - u32 hpIV:5; - u32 attackIV:5; - u32 defenseIV:5; - u32 speedIV:5; - u32 spAttackIV:5; - u32 spDefenseIV:5; - u32 gap:1; - u32 altAbility:1; - u32 personality; - u8 nickname[POKEMON_NAME_LENGTH + 1]; - u8 friendship; -}; - struct UnknownSaveBlock2Struct { u8 field_0; diff --git a/include/pokemon.h b/include/pokemon.h index 6a9b85e71..f1f04c9eb 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -310,31 +310,31 @@ struct PokemonStorage /*0x83C2*/ u8 boxWallpapers[14]; }; -struct UnknownPokemonStruct +struct BattleTowerPokemon { - u16 species; - u16 heldItem; - u16 moves[4]; - u8 level; - u8 ppBonuses; - u8 hpEV; - u8 attackEV; - u8 defenseEV; - u8 speedEV; - u8 spAttackEV; - u8 spDefenseEV; - u32 otId; - u32 hpIV:5; - u32 attackIV:5; - u32 defenseIV:5; - u32 speedIV:5; - u32 spAttackIV:5; - u32 spDefenseIV:5; - u32 gap:1; - u32 altAbility:1; - u32 personality; - u8 nickname[POKEMON_NAME_LENGTH + 1]; - u8 friendship; + /*0x00*/ u16 species; + /*0x02*/ u16 heldItem; + /*0x04*/ u16 moves[4]; + /*0x0C*/ u8 level; + /*0x0D*/ u8 ppBonuses; + /*0x0E*/ u8 hpEV; + /*0x0F*/ u8 attackEV; + /*0x10*/ u8 defenseEV; + /*0x11*/ u8 speedEV; + /*0x12*/ u8 spAttackEV; + /*0x13*/ u8 spDefenseEV; + /*0x14*/ u32 otId; + /*0x18*/ u32 hpIV:5; + u32 attackIV:5; + u32 defenseIV:5; + u32 speedIV:5; + u32 spAttackIV:5; + u32 spDefenseIV:5; + u32 gap:1; + u32 altAbility:1; + /*0x1C*/ u32 personality; + /*0x20*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x2B*/ u8 friendship; }; #define BATTLE_STATS_NO 8 @@ -672,5 +672,6 @@ void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); void PlayMapChosenOrBattleBGM(u16 songId); u8 GetMonsStateToDoubles(void); +void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src); #endif // GUARD_POKEMON_H diff --git a/src/pokemon.c b/src/pokemon.c index 5cd2cd2d7..9d902f901 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -351,7 +351,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI CalculateMonStats(mon); } -void sub_803E0A4(struct Pokemon *mon, struct UnknownPokemonStruct *src) +void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src) { s32 i; u8 value; @@ -410,7 +410,7 @@ void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u SetMonData(mon, MON_DATA_OBEDIENCE, &obedient); } -void sub_803E23C(struct Pokemon *mon, struct UnknownPokemonStruct *dest) +void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest) { s32 i; u16 heldItem; diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 8ced159c5..889d90696 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -139,6 +139,7 @@ void sub_815E908(void); void sub_815E948(void); void sub_815E9C8(void); void sub_815E9FC(void); +s32 sub_815EBB8(void); void sub_815EC0C(void); u32 sub_815EDDC(u32 *); void sub_815EDF4(u32 *, u32); @@ -158,6 +159,9 @@ extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8]; extern const u16 gUnknown_847A284[8][3]; extern const u16 gUnknown_847A2B4[]; extern const u16 gUnknown_847A2D2[]; +extern const u8 gUnknown_847A2EE[][2]; +extern const u8 gUnknown_847A2FE[][2]; +extern const u8 gUnknown_847A30E[][3]; bool32 sub_815D7BC(void * dest, void * buffer) { @@ -1005,3 +1009,51 @@ void sub_815E948(void) } PlayNewMapMusic(gUnknown_847A2D2[var_4001]); } + +void sub_815E9C8(void) +{ + gSpecialVar_Result = gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2; +} + +void sub_815E9FC(void) +{ + u16 r4 = VarGet(VAR_0x4001); + s32 r9 = sub_815EBB8(); + u8 r5 = gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8; + s32 r6; + u8 r2; + + ZeroEnemyPartyMons(); + + switch (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002) + { + case 0: + default: + for (r6 = 0; r6 < 2; r6++) + /* + * sp+0 := r5 * 2 + * r5 := gUnknown_203F458 + * r7 := r4 * 72 + * r8 := r7 + 4 + */ + { + r2 = gUnknown_847A2EE[r5][r6]; + gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9; + sub_803E0A4(&gEnemyParty[r6], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]); + } + break; + case 1: + r2 = gUnknown_847A2FE[r5][0]; + gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2].level = r9; + sub_803E0A4(&gEnemyParty[0], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2]); + r2 = gUnknown_847A2FE[r5][1]; + gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2].level = r9; + sub_803E0A4(&gEnemyParty[1], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2]); + break; + case 2: + r2 = gUnknown_847A30E[r5][r4]; + gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9; + sub_803E0A4(&gEnemyParty[0], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]); + break; + } +} From ca1c274c1611783c5db53669fb7a456adb73bb4b Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 8 Jan 2019 10:44:34 -0500 Subject: [PATCH 030/318] trainer tower: finish code decomp --- asm/trainer_tower.s | 314 -------------------------------------------- ld_script.txt | 1 - src/trainer_tower.c | 83 ++++++++++-- 3 files changed, 75 insertions(+), 323 deletions(-) delete mode 100644 asm/trainer_tower.s diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s deleted file mode 100644 index 2336ec48a..000000000 --- a/asm/trainer_tower.s +++ /dev/null @@ -1,314 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_815EBB8 -sub_815EBB8: @ 815EBB8 - push {r4-r6,lr} - movs r6, 0 - movs r5, 0 -_0815EBBE: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0815EC08 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - cmp r0, 0 - beq _0815EBF8 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0815EBF8 - adds r0, r4, 0 - movs r1, 0x38 - movs r2, 0 - bl GetMonData - cmp r0, r6 - ble _0815EBF8 - adds r6, r0, 0 -_0815EBF8: - adds r5, 0x1 - cmp r5, 0x5 - ble _0815EBBE - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0815EC08: .4byte gPlayerParty - thumb_func_end sub_815EBB8 - - thumb_func_start sub_815EC0C -sub_815EC0C: @ 815EC0C - push {r4,lr} - ldr r4, _0815EC70 @ =gSaveBlock1Ptr - ldr r2, [r4] - ldr r1, _0815EC74 @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r0, _0815EC78 @ =0x00003d41 - adds r2, r0 - ldr r0, _0815EC7C @ =gUnknown_203F458 - ldr r0, [r0] - ldrb r1, [r0, 0x5] - ldrb r0, [r2] - cmp r0, r1 - beq _0815EC6A - strb r1, [r2] - ldr r2, [r4] - ldr r1, _0815EC74 @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r2, _0815EC80 @ =0x00003d3c - adds r0, r2 - ldr r1, _0815EC84 @ =0x00034bbf - bl sub_815EDF4 - ldr r1, [r4] - ldr r2, _0815EC74 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815EC88 @ =0x00003d42 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_0815EC6A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815EC70: .4byte gSaveBlock1Ptr -_0815EC74: .4byte 0x00003d34 -_0815EC78: .4byte 0x00003d41 -_0815EC7C: .4byte gUnknown_203F458 -_0815EC80: .4byte 0x00003d3c -_0815EC84: .4byte 0x00034bbf -_0815EC88: .4byte 0x00003d42 - thumb_func_end sub_815EC0C - - thumb_func_start sub_815EC8C -sub_815EC8C: @ 815EC8C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r8, r0 - bl sub_815DC8C - movs r0, 0xD8 - str r0, [sp] - movs r0, 0x90 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillWindowPixelRect - bl sub_815EC0C - ldr r4, _0815EDB4 @ =gUnknown_847A22C - str r4, [sp] - mov r0, r8 - str r0, [sp, 0x4] - ldr r0, _0815EDB8 @ =gUnknown_83FE982 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x4A - movs r3, 0 - bl box_print - movs r7, 0 - movs r0, 0x90 - lsls r0, 22 - mov r10, r0 - ldr r0, _0815EDBC @ =0x00003d38 - mov r9, r0 -_0815ECDC: - ldr r0, _0815EDC0 @ =gSaveBlock1Ptr - ldr r0, [r0] - add r0, r9 - adds r0, 0x4 - bl sub_815EDDC - adds r4, r0, 0 - movs r5, 0xE1 - lsls r5, 4 - adds r1, r5, 0 - bl __divsi3 - adds r6, r0, 0 - adds r0, r4, 0 - adds r1, r5, 0 - bl __modsi3 - adds r4, r0, 0 - movs r1, 0x3C - bl __divsi3 - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0x3C - bl __modsi3 - movs r1, 0xA8 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - adds r4, r0, 0 - ldr r0, _0815EDC4 @ =gStringVar1 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815EDC8 @ =gStringVar2 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815EDCC @ =gStringVar3 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0815EDD0 @ =gStringVar4 - ldr r1, _0815EDD4 @ =gUnknown_83FE998 - bl StringExpandPlaceholders - lsls r1, r7, 2 - mov r0, r10 - lsrs r4, r0, 24 - ldr r0, _0815EDB4 @ =gUnknown_847A22C - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r0, _0815EDD8 @ =gUnknown_83FE9C4 - adds r1, r0 - ldr r0, [r1] - str r0, [sp, 0x8] - mov r0, r8 - movs r1, 0x2 - movs r2, 0x18 - adds r3, r4, 0 - bl box_print - ldr r0, _0815EDB4 @ =gUnknown_847A22C - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r0, _0815EDD0 @ =gStringVar4 - str r0, [sp, 0x8] - mov r0, r8 - movs r1, 0x2 - movs r2, 0x60 - adds r3, r4, 0 - bl box_print - movs r0, 0xA0 - lsls r0, 21 - add r10, r0 - movs r0, 0xC - add r9, r0 - adds r7, 0x1 - cmp r7, 0x3 - ble _0815ECDC - mov r0, r8 - bl PutWindowTilemap - mov r0, r8 - movs r1, 0x3 - bl CopyWindowToVram - bl sub_815DD2C - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815EDB4: .4byte gUnknown_847A22C -_0815EDB8: .4byte gUnknown_83FE982 -_0815EDBC: .4byte 0x00003d38 -_0815EDC0: .4byte gSaveBlock1Ptr -_0815EDC4: .4byte gStringVar1 -_0815EDC8: .4byte gStringVar2 -_0815EDCC: .4byte gStringVar3 -_0815EDD0: .4byte gStringVar4 -_0815EDD4: .4byte gUnknown_83FE998 -_0815EDD8: .4byte gUnknown_83FE9C4 - thumb_func_end sub_815EC8C - - thumb_func_start sub_815EDDC -sub_815EDDC: @ 815EDDC - ldr r1, _0815EDF0 @ =gSaveBlock2Ptr - ldr r1, [r1] - movs r2, 0xF2 - lsls r2, 4 - adds r1, r2 - ldr r0, [r0] - ldr r1, [r1] - eors r0, r1 - bx lr - .align 2, 0 -_0815EDF0: .4byte gSaveBlock2Ptr - thumb_func_end sub_815EDDC - - thumb_func_start sub_815EDF4 -sub_815EDF4: @ 815EDF4 - ldr r2, _0815EE08 @ =gSaveBlock2Ptr - ldr r2, [r2] - movs r3, 0xF2 - lsls r3, 4 - adds r2, r3 - ldr r2, [r2] - eors r2, r1 - str r2, [r0] - bx lr - .align 2, 0 -_0815EE08: .4byte gSaveBlock2Ptr - thumb_func_end sub_815EDF4 - - thumb_func_start sub_815EE0C -sub_815EE0C: @ 815EE0C - push {r4-r6,lr} - ldr r6, _0815EE30 @ =gSaveBlock1Ptr - ldr r5, _0815EE34 @ =0x00003d38 - movs r4, 0x3 -_0815EE14: - ldr r0, [r6] - adds r0, r5 - adds r0, 0x4 - ldr r1, _0815EE38 @ =0x00034bbf - bl sub_815EDF4 - adds r5, 0xC - subs r4, 0x1 - cmp r4, 0 - bge _0815EE14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815EE30: .4byte gSaveBlock1Ptr -_0815EE34: .4byte 0x00003d38 -_0815EE38: .4byte 0x00034bbf - thumb_func_end sub_815EE0C - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 6eb5e4e6d..6462ac2d7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -267,7 +267,6 @@ SECTIONS { asm/ss_anne.o(.text); asm/cereader_tool.o(.text); src/trainer_tower.o(.text); - asm/trainer_tower.o(.text); asm/unk_815EDDC.o(.text); asm/unk_815F138.o(.text); asm/berry_fix_program.o(.text); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 889d90696..067bdc4ae 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -3,6 +3,7 @@ #include "task.h" #include "constants/flags.h" #include "constants/vars.h" +#include "constants/species.h" #include "malloc.h" #include "save.h" #include "util.h" @@ -139,7 +140,7 @@ void sub_815E908(void); void sub_815E948(void); void sub_815E9C8(void); void sub_815E9FC(void); -s32 sub_815EBB8(void); +static s32 GetPartyMaxLevel(void); void sub_815EC0C(void); u32 sub_815EDDC(u32 *); void sub_815EDF4(u32 *, u32); @@ -153,6 +154,7 @@ extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83]; extern const struct UnkStruct_847A024 gUnknown_847A024[10]; extern const struct UnkStruct_847A074 gUnknown_847A074[105]; extern const struct WindowTemplate gUnknown_847A218; +extern const struct TextColor gUnknown_847A22C; extern void (*const gUnknown_847A230[])(void); extern const struct Unk_203F458_Header gUnknown_84827AC; extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8]; @@ -1018,7 +1020,7 @@ void sub_815E9C8(void) void sub_815E9FC(void) { u16 r4 = VarGet(VAR_0x4001); - s32 r9 = sub_815EBB8(); + s32 r9 = GetPartyMaxLevel(); u8 r5 = gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8; s32 r6; u8 r2; @@ -1030,12 +1032,6 @@ void sub_815E9FC(void) case 0: default: for (r6 = 0; r6 < 2; r6++) - /* - * sp+0 := r5 * 2 - * r5 := gUnknown_203F458 - * r7 := r4 * 72 - * r8 := r7 + 4 - */ { r2 = gUnknown_847A2EE[r5][r6]; gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9; @@ -1057,3 +1053,74 @@ void sub_815E9FC(void) break; } } + +static s32 GetPartyMaxLevel(void) +{ + s32 topLevel = 0; + s32 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG) + { + s32 currLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL, NULL); + if (currLevel > topLevel) + topLevel = currLevel; + } + } + + return topLevel; +} + +void sub_815EC0C(void) +{ + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 != gUnknown_203F458->unk_0004.unk_0000.unk1) + { + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 = gUnknown_203F458->unk_0004.unk_0000.unk1; + sub_815EDF4(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4, 215999); + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 = FALSE; + } +} + +void sub_815EC8C(void) +{ + s32 i; + u8 windowId = 0; + + sub_815DC8C(); + FillWindowPixelRect(0, 0, 0, 0, 0xd8, 0x90); + sub_815EC0C(); + box_print(0, 2, 0x4a, 0, &gUnknown_847A22C, 0, gUnknown_83FE982); + + for (i = 0; i < 4; i++) + { + PRINT_TOWER_TIME(sub_815EDDC(&gSaveBlock1Ptr->unkArray[i].unk4)); + StringExpandPlaceholders(gStringVar4, gUnknown_83FE998); + box_print(windowId, 2, 0x18, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gUnknown_83FE9C4[i]); + box_print(windowId, 2, 0x60, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gStringVar4); + } + + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); + sub_815DD2C(); +} + +u32 sub_815EDDC(u32 * counter) +{ + return *counter ^ gSaveBlock2Ptr->encryptionKey; +} + +void sub_815EDF4(u32 * counter, u32 value) +{ + *counter = value ^ gSaveBlock2Ptr->encryptionKey; +} + +void sub_815EE0C(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + sub_815EDF4(&gSaveBlock1Ptr->unkArray[i].unk4, 215999); + } +} From b9979f71e7d21f3ebab282dfd9351517c98a5bbe Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 8 Jan 2019 10:59:54 -0500 Subject: [PATCH 031/318] Trainer tower data decomp --- data/trainer_tower.s | 632 ------------------------------------------- ld_script.txt | 1 - src/trainer_tower.c | 428 ++++++++++++++++++++++++++++- 3 files changed, 414 insertions(+), 647 deletions(-) delete mode 100644 data/trainer_tower.s diff --git a/data/trainer_tower.s b/data/trainer_tower.s deleted file mode 100644 index 6065500b5..000000000 --- a/data/trainer_tower.s +++ /dev/null @@ -1,632 +0,0 @@ -#include "constants/items.h" - .include "asm/macros.inc" - .include "constants/gba_constants.inc" - .include "constants/misc_constants.inc" - - .section .rodata - - .align 2 -gUnknown_8479D34:: - .byte 0x03, 0x26 - .align 2 - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0x99, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x27 - .align 2 - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x01, 0x1f - .align 2 - .byte 0x4c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x01, 0x22 - .align 2 - .byte 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x41 - .align 2 - .byte 0x40, 0x41, 0x42, 0x43, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x01, 0x02 - .align 2 - .byte 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0xff, 0xff - .byte 0x54, 0x55, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x01, 0x6d - .align 2 - .byte 0x5b, 0x5d, 0x5e, 0x5f, 0x63, 0x64, 0x65, 0x66 - .byte 0x5b, 0x5d, 0x5e, 0x5f, 0x63, 0x64, 0x65, 0xff - .byte 0x5a, 0x5c, 0x60, 0x61, 0x62, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x2e - .align 2 - .byte 0x6b, 0x6c, 0x6d, 0x6e, 0xff, 0xff, 0xff, 0xff - .byte 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0xff, 0xff - .byte 0x6b, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x30 - .align 2 - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xa6, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x0f - .align 2 - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x39 - .align 2 - .byte 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x36 - .align 2 - .byte 0xae, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xaf, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x3a - .align 2 - .byte 0xb2, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x3b - .align 2 - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 - .byte 0x03, 0x3e - .align 2 - .byte 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - -gUnknown_8479ED8:: @ 8479ED8 - .align 2 - .byte 0x1c, 0x03, 0x01 - .align 2 - .byte 0x38, 0x04, 0x00 - .align 2 - .byte 0x25, 0x06, 0x01 - .align 2 - .byte 0x26, 0x07, 0x00 - .align 2 - .byte 0x29, 0x08, 0x00 - .align 2 - .byte 0x2a, 0x09, 0x01 - .align 2 - .byte 0x34, 0x0a, 0x00 - .align 2 - .byte 0x1c, 0x0b, 0x01 - .align 2 - .byte 0x1d, 0x0c, 0x01 - .align 2 - .byte 0x13, 0x0d, 0x00 - .align 2 - .byte 0x34, 0x0e, 0x00 - .align 2 - .byte 0x2d, 0x0f, 0x00 - .align 2 - .byte 0x36, 0x10, 0x00 - .align 2 - .byte 0x1a, 0x11, 0x00 - .align 2 - .byte 0x1a, 0x12, 0x00 - .align 2 - .byte 0x27, 0x13, 0x00 - .align 2 - .byte 0x34, 0x14, 0x00 - .align 2 - .byte 0x13, 0x15, 0x00 - .align 2 - .byte 0x17, 0x16, 0x01 - .align 2 - .byte 0x3d, 0x17, 0x00 - .align 2 - .byte 0x13, 0x1d, 0x00 - .align 2 - .byte 0x17, 0x1e, 0x01 - .align 2 - .byte 0x1e, 0x20, 0x00 - .align 2 - .byte 0x1f, 0x21, 0x01 - .align 2 - .byte 0x20, 0x22, 0x00 - .align 2 - .byte 0x23, 0x23, 0x01 - .align 2 - .byte 0x12, 0x24, 0x00 - .align 2 - .byte 0x39, 0x26, 0x00 - .align 2 - .byte 0x29, 0x2d, 0x00 - .align 2 - .byte 0x1a, 0x2e, 0x00 - .align 2 - .byte 0x10, 0x2f, 0x00 - .align 2 - .byte 0x18, 0x30, 0x01 - .align 2 - .byte 0x1d, 0x31, 0x01 - .align 2 - .byte 0x2e, 0x32, 0x01 - .align 2 - .byte 0x28, 0x33, 0x01 - .align 2 - .byte 0x3e, 0x35, 0x00 - .align 2 - .byte 0x1b, 0x38, 0x00 - .align 2 - .byte 0x19, 0x40, 0x00 - .align 2 - .byte 0x1c, 0x41, 0x01 - .align 2 - .byte 0x27, 0x42, 0x00 - .align 2 - .byte 0x28, 0x43, 0x01 - .align 2 - .byte 0x16, 0x47, 0x01 - .align 2 - .byte 0x14, 0x48, 0x00 - .align 2 - .byte 0x38, 0x49, 0x00 - .align 2 - .byte 0x12, 0x58, 0x00 - .align 2 - .byte 0x14, 0x59, 0x00 - .align 2 - .byte 0x16, 0x5a, 0x01 - .align 2 - .byte 0x3e, 0x5b, 0x00 - .align 2 - .byte 0x27, 0x5c, 0x00 - .align 2 - .byte 0x28, 0x5d, 0x01 - .align 2 - .byte 0x34, 0x5e, 0x00 - .align 2 - .byte 0x34, 0x5f, 0x00 - .align 2 - .byte 0x38, 0x60, 0x00 - .align 2 - .byte 0x35, 0x61, 0x00 - .align 2 - .byte 0x34, 0x62, 0x00 - .align 2 - .byte 0x1e, 0x63, 0x00 - .align 2 - .byte 0x39, 0x64, 0x00 - .align 2 - .byte 0x2d, 0x65, 0x00 - .align 2 - .byte 0x35, 0x66, 0x00 - .align 2 - .byte 0x20, 0x67, 0x00 - .align 2 - .byte 0x1d, 0x68, 0x01 - .align 2 - .byte 0x2e, 0x69, 0x01 - .align 2 - .byte 0x13, 0x6a, 0x00 - .align 2 - .byte 0x1a, 0x6b, 0x00 - .align 2 - .byte 0x1a, 0x6c, 0x00 - .align 2 - .byte 0x19, 0x6d, 0x00 - .align 2 - .byte 0x1a, 0x6e, 0x00 - .align 2 - .byte 0x36, 0x6f, 0x00 - .align 2 - .byte 0x37, 0x71, 0x00 - .align 2 - .byte 0x29, 0x74, 0x00 - .align 2 - .byte 0x2a, 0x75, 0x01 - .align 2 - .byte 0x3d, 0x7a, 0x00 - .align 2 - .byte 0x3a, 0x7d, 0x01 - .align 2 - .byte 0x17, 0x89, 0x01 - .align 2 - .byte 0x18, 0x8a, 0x01 - .align 2 - .byte 0x25, 0x8b, 0x01 - .align 2 - .byte 0x1c, 0x8c, 0x01 - .align 2 - .byte 0x27, 0x8d, 0x00 - .align 2 - .byte 0x28, 0x8e, 0x01 - .align 2 - .byte 0x1c, 0x8f, 0x01 - .align 2 - .byte 0x38, 0x90, 0x00 - .align 2 - .byte 0x1c, 0x91, 0x01 - .align 2 - .byte 0x16, 0x92, 0x01 - .align 2 - -gUnknown_847A024:: @ 847A024 - .byte 0x1d, 0x17, 0x1f, 0x01, 0x01 - .align 2 - .byte 0x11, 0x11, 0x34, 0x01, 0x01 - .align 2 - .byte 0x1d, 0x19, 0x4a, 0x01, 0x00 - .align 2 - .byte 0x20, 0x23, 0x4b, 0x00, 0x01 - .align 2 - .byte 0x26, 0x2e, 0x4c, 0x00, 0x01 - .align 2 - .byte 0x11, 0x11, 0x7e, 0x01, 0x01 - .align 2 - .byte 0x29, 0x2a, 0x7f, 0x00, 0x01 - .align 2 - .byte 0x1d, 0x19, 0x80, 0x01, 0x00 - .align 2 - .byte 0x18, 0x36, 0x81, 0x01, 0x00 - .align 2 - .byte 0x2e, 0x26, 0x82, 0x01, 0x00 - - .align 2 -gUnknown_847A074:: @ 847A074 - .byte 0x03, 0x06 - .align 2 - .byte 0x37, 0x06 - .align 2 - .byte 0x02, 0x06 - .align 2 - .byte 0x67, 0x01 - .align 2 - .byte 0x04, 0x01 - .align 2 - .byte 0x24, 0x04 - .align 2 - .byte 0x4a, 0x01 - .align 2 - .byte 0x26, 0x01 - .align 2 - .byte 0x2a, 0x00 - .align 2 - .byte 0x42, 0x03 - .align 2 - .byte 0x1b, 0x09 - .align 2 - .byte 0x4c, 0x03 - .align 2 - .byte 0x44, 0x03 - .align 2 - .byte 0x21, 0x04 - .align 2 - .byte 0x43, 0x03 - .align 2 - .byte 0x6a, 0x01 - .align 2 - .byte 0x5d, 0x05 - .align 2 - .byte 0x56, 0x05 - .align 2 - .byte 0x09, 0x05 - .align 2 - .byte 0x11, 0x04 - .align 2 - .byte 0x48, 0x03 - .align 2 - .byte 0x3c, 0x00 - .align 2 - .byte 0x29, 0x00 - .align 2 - .byte 0x5c, 0x09 - .align 2 - .byte 0x28, 0x09 - .align 2 - .byte 0x06, 0x0c - .align 2 - .byte 0x68, 0x0b - .align 2 - .byte 0x05, 0x0b - .align 2 - .byte 0x58, 0x0d - .align 2 - .byte 0x16, 0x0d - .align 2 - .byte 0x46, 0x08 - .align 2 - .byte 0x0f, 0x01 - .align 2 - .byte 0x3f, 0x03 - .align 2 - .byte 0x0e, 0x03 - .align 2 - .byte 0x5f, 0x04 - .align 2 - .byte 0x63, 0x04 - .align 2 - .byte 0x50, 0x04 - .align 2 - .byte 0x10, 0x04 - .align 2 - .byte 0x52, 0x03 - .align 2 - .byte 0x35, 0x04 - .align 2 - .byte 0x5b, 0x03 - .align 2 - .byte 0x14, 0x03 - .align 2 - .byte 0x3d, 0x00 - .align 2 - .byte 0x13, 0x00 - .align 2 - .byte 0x12, 0x0b - .align 2 - .byte 0x30, 0x07 - .align 2 - .byte 0x38, 0x07 - .align 2 - .byte 0x2f, 0x07 - .align 2 - .byte 0x3b, 0x01 - .align 2 - .byte 0x31, 0x01 - .align 2 - .byte 0x4e, 0x0b - .align 2 - .byte 0x3a, 0x00 - .align 2 - .byte 0x32, 0x00 - .align 2 - .byte 0x23, 0x03 - .align 2 - .byte 0x0d, 0x0d - .align 2 - .byte 0x0a, 0x03 - .align 2 - .byte 0x49, 0x01 - .align 2 - .byte 0x0c, 0x01 - .align 2 - .byte 0x69, 0x01 - .align 2 - .byte 0x0b, 0x01 - .align 2 - .byte 0x25, 0x01 - .align 2 - .byte 0x3e, 0x02 - .align 2 - .byte 0x27, 0x02 - .align 2 - .byte 0x65, 0x01 - .align 2 - .byte 0x2d, 0x01 - .align 2 - .byte 0x61, 0x01 - .align 2 - .byte 0x2b, 0x03 - .align 2 - .byte 0x66, 0x05 - .align 2 - .byte 0x2e, 0x05 - .align 2 - .byte 0x2c, 0x00 - .align 2 - .byte 0x5e, 0x02 - .align 2 - .byte 0x34, 0x02 - .align 2 - .byte 0x51, 0x00 - .align 2 - .byte 0x59, 0x00 - .align 2 - .byte 0x40, 0x03 - .align 2 - .byte 0x55, 0x06 - .align 2 - .byte 0x53, 0x06 - .align 2 - .byte 0x4b, 0x04 - .align 2 - .byte 0x15, 0x04 - .align 2 - .byte 0x1a, 0x09 - .align 2 - .byte 0x57, 0x0a - .align 2 - .byte 0x17, 0x01 - .align 2 - .byte 0x47, 0x03 - .align 2 - .byte 0x62, 0x01 - .align 2 - .byte 0x39, 0x00 - .align 2 - .byte 0x1d, 0x00 - .align 2 - .byte 0x1c, 0x04 - .align 2 - .byte 0x20, 0x00 - .align 2 - .byte 0x4f, 0x05 - .align 2 - .byte 0x22, 0x05 - .align 2 - .byte 0x45, 0x0b - .align 2 - .byte 0x1f, 0x0b - .align 2 - .byte 0x5a, 0x00 - .align 2 - .byte 0x1e, 0x00 - .align 2 - .byte 0x08, 0x00 - .align 2 - .byte 0x64, 0x02 - .align 2 - .byte 0x07, 0x02 - .align 2 - .byte 0x60, 0x08 - .align 2 - .byte 0x36, 0x08 - .align 2 - .byte 0x41, 0x0b - .align 2 - .byte 0x33, 0x0b - .align 2 - .byte 0x54, 0x00 - .align 2 - .byte 0x18, 0x01 - .align 2 - .byte 0x4d, 0x0b - .align 2 - .byte 0x19, 0x00 - - .align 2 -gUnknown_847A218:: @ 847A218 - @ window template - .byte 0x00, 0x03, 0x01, 0x1b, 0x12, 0x0f - .2byte 0x0001 - -gUnknown_847A220:: @ 847A220 - .byte 0xFF, 0, 0, 0, 0, 0 - .2byte 0 - -gUnknown_847A228:: - .4byte 0x70 - -gUnknown_847A22C:: @ 847A22C - .byte 0x00, 0x02, 0x03 - - .align 2 -gUnknown_847A230:: @ 847A230 - .4byte sub_815DD44 - .4byte sub_815DF54 - .4byte sub_815E160 - .4byte sub_815E1C0 - .4byte sub_815E1F0 - .4byte sub_815E218 - .4byte sub_815E28C - .4byte sub_815E394 - .4byte sub_815E408 - .4byte sub_815E4B0 - .4byte sub_815E56C - .4byte sub_815E5C4 - .4byte sub_815E5F0 - .4byte sub_815E658 - .4byte sub_815E720 - .4byte sub_815E88C - .4byte sub_815E8B4 - .4byte sub_815E8CC - .4byte sub_815E908 - .4byte sub_815E948 - .4byte sub_815E9C8 - -gUnknown_847A284:: @ 847A284 - .2byte 0x012a, 0x016e, 0x0176 - .2byte 0x012b, 0x016f, 0x0177 - .2byte 0x012c, 0x0170, 0x0178 - .2byte 0x012d, 0x0171, 0x0179 - .2byte 0x012e, 0x0172, 0x017a - .2byte 0x012f, 0x0173, 0x017b - .2byte 0x0130, 0x0174, 0x017c - .2byte 0x0131, 0x0175, 0x017d - -gUnknown_847A2B4:: @ 847A2B4 - .2byte ITEM_HP_UP - .2byte ITEM_PROTEIN - .2byte ITEM_IRON - .2byte ITEM_CARBOS - .2byte ITEM_CALCIUM - .2byte ITEM_ZINC - .2byte ITEM_BRIGHT_POWDER - .2byte ITEM_WHITE_HERB - .2byte ITEM_MENTAL_HERB - .2byte ITEM_CHOICE_BAND - .2byte ITEM_KINGS_ROCK - .2byte ITEM_SCOPE_LENS - .2byte ITEM_METAL_COAT - .2byte ITEM_DRAGON_SCALE - .2byte ITEM_UP_GRADE - -gUnknown_847A2D2:: @ 847A2D2 - .2byte 0x011d - .2byte 0x011c - .2byte 0x011c - .2byte 0x011b - .2byte 0x011d - .2byte 0x011d - .2byte 0x011b - .2byte 0x011b - .2byte 0x011d - .2byte 0x011c - .2byte 0x011d - .2byte 0x011d - .2byte 0x011d - .2byte 0x011d - -gUnknown_847A2EE:: @ 847A2EE - .byte 0x00, 0x02 - .byte 0x01, 0x03 - .byte 0x02, 0x04 - .byte 0x03, 0x05 - .byte 0x04, 0x01 - .byte 0x05, 0x02 - .byte 0x00, 0x03 - .byte 0x01, 0x04 - -gUnknown_847A2FE:: @ 847A2FE - .byte 0x00, 0x01 - .byte 0x01, 0x03 - .byte 0x02, 0x00 - .byte 0x03, 0x04 - .byte 0x04, 0x02 - .byte 0x05, 0x02 - .byte 0x00, 0x03 - .byte 0x01, 0x05 - -gUnknown_847A30E:: @ 847A30E - .byte 0x00, 0x02 - .byte 0x04, 0x01 - .byte 0x03, 0x05 - .byte 0x02, 0x03 - .byte 0x01, 0x03 - .byte 0x04, 0x00 - .byte 0x04, 0x01 - .byte 0x02, 0x05 - .byte 0x00, 0x03 - .byte 0x00, 0x05 - .byte 0x02, 0x01 - .byte 0x04, 0x05 - .byte 0x00, 0x00 diff --git a/ld_script.txt b/ld_script.txt index 6462ac2d7..b342f0b8a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -394,7 +394,6 @@ SECTIONS { src/quest_log_8150454.o(.rodata); data/data_8471F00.o(.rodata); src/trainer_tower.o(.rodata); - data/trainer_tower.o(.rodata); data/data_8471F00.o(.rodata.after_trainer_tower); src/mystery_event_msg.o(.rodata); data/mystery_event_msg.o(.rodata); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 067bdc4ae..ef34c1629 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -3,6 +3,7 @@ #include "task.h" #include "constants/flags.h" #include "constants/vars.h" +#include "constants/items.h" #include "constants/species.h" #include "malloc.h" #include "save.h" @@ -149,21 +150,420 @@ extern const u8 gUnknown_83FE982[]; extern const u8 gUnknown_83FE998[]; extern const u8 *const gUnknown_83FE9C4[]; -extern const struct UnkStruct_8479D34 gUnknown_8479D34[15]; -extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83]; -extern const struct UnkStruct_847A024 gUnknown_847A024[10]; -extern const struct UnkStruct_847A074 gUnknown_847A074[105]; -extern const struct WindowTemplate gUnknown_847A218; -extern const struct TextColor gUnknown_847A22C; -extern void (*const gUnknown_847A230[])(void); +const struct UnkStruct_8479D34 gUnknown_8479D34[] = { + { + 0x03, 0x26, + .flags1 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0x99, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x27, + .flags1 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x01, 0x1f, + .flags1 = {0x4c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x01, 0x22, + .flags1 = {0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x41, + .flags1 = {0x40, 0x41, 0x42, 0x43, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x01, 0x02, + .flags1 = {0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0xff, 0xff}, + .flags2 = {0x54, 0x55, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x01, 0x6d, + .flags1 = {0x5b, 0x5d, 0x5e, 0x5f, 0x63, 0x64, 0x65, 0x66}, + .flags2 = {0x5b, 0x5d, 0x5e, 0x5f, 0x63, 0x64, 0x65, 0xff}, + .flags3 = {0x5a, 0x5c, 0x60, 0x61, 0x62, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x2e, + .flags1 = {0x6b, 0x6c, 0x6d, 0x6e, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0xff, 0xff}, + .flags3 = {0x6b, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x30, + .flags1 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xa6, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x0f, + .flags1 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x39, + .flags1 = {0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x36, + .flags1 = {0xae, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xaf, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x3a, + .flags1 = {0xb2, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x3b, + .flags1 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, + { + 0x03, 0x3e, + .flags1 = {0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags2 = {0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + .flags3 = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + }, +}; + +const struct UnkStruct_8479ED8 gUnknown_8479ED8[] = { + {0x1c, 0x03, 0x01}, + {0x38, 0x04, 0x00}, + {0x25, 0x06, 0x01}, + {0x26, 0x07, 0x00}, + {0x29, 0x08, 0x00}, + {0x2a, 0x09, 0x01}, + {0x34, 0x0a, 0x00}, + {0x1c, 0x0b, 0x01}, + {0x1d, 0x0c, 0x01}, + {0x13, 0x0d, 0x00}, + {0x34, 0x0e, 0x00}, + {0x2d, 0x0f, 0x00}, + {0x36, 0x10, 0x00}, + {0x1a, 0x11, 0x00}, + {0x1a, 0x12, 0x00}, + {0x27, 0x13, 0x00}, + {0x34, 0x14, 0x00}, + {0x13, 0x15, 0x00}, + {0x17, 0x16, 0x01}, + {0x3d, 0x17, 0x00}, + {0x13, 0x1d, 0x00}, + {0x17, 0x1e, 0x01}, + {0x1e, 0x20, 0x00}, + {0x1f, 0x21, 0x01}, + {0x20, 0x22, 0x00}, + {0x23, 0x23, 0x01}, + {0x12, 0x24, 0x00}, + {0x39, 0x26, 0x00}, + {0x29, 0x2d, 0x00}, + {0x1a, 0x2e, 0x00}, + {0x10, 0x2f, 0x00}, + {0x18, 0x30, 0x01}, + {0x1d, 0x31, 0x01}, + {0x2e, 0x32, 0x01}, + {0x28, 0x33, 0x01}, + {0x3e, 0x35, 0x00}, + {0x1b, 0x38, 0x00}, + {0x19, 0x40, 0x00}, + {0x1c, 0x41, 0x01}, + {0x27, 0x42, 0x00}, + {0x28, 0x43, 0x01}, + {0x16, 0x47, 0x01}, + {0x14, 0x48, 0x00}, + {0x38, 0x49, 0x00}, + {0x12, 0x58, 0x00}, + {0x14, 0x59, 0x00}, + {0x16, 0x5a, 0x01}, + {0x3e, 0x5b, 0x00}, + {0x27, 0x5c, 0x00}, + {0x28, 0x5d, 0x01}, + {0x34, 0x5e, 0x00}, + {0x34, 0x5f, 0x00}, + {0x38, 0x60, 0x00}, + {0x35, 0x61, 0x00}, + {0x34, 0x62, 0x00}, + {0x1e, 0x63, 0x00}, + {0x39, 0x64, 0x00}, + {0x2d, 0x65, 0x00}, + {0x35, 0x66, 0x00}, + {0x20, 0x67, 0x00}, + {0x1d, 0x68, 0x01}, + {0x2e, 0x69, 0x01}, + {0x13, 0x6a, 0x00}, + {0x1a, 0x6b, 0x00}, + {0x1a, 0x6c, 0x00}, + {0x19, 0x6d, 0x00}, + {0x1a, 0x6e, 0x00}, + {0x36, 0x6f, 0x00}, + {0x37, 0x71, 0x00}, + {0x29, 0x74, 0x00}, + {0x2a, 0x75, 0x01}, + {0x3d, 0x7a, 0x00}, + {0x3a, 0x7d, 0x01}, + {0x17, 0x89, 0x01}, + {0x18, 0x8a, 0x01}, + {0x25, 0x8b, 0x01}, + {0x1c, 0x8c, 0x01}, + {0x27, 0x8d, 0x00}, + {0x28, 0x8e, 0x01}, + {0x1c, 0x8f, 0x01}, + {0x38, 0x90, 0x00}, + {0x1c, 0x91, 0x01}, + {0x16, 0x92, 0x01} +}; + +const struct UnkStruct_847A024 gUnknown_847A024[] = { + {0x1d, 0x17, 0x1f, 0x01, 0x01}, + {0x11, 0x11, 0x34, 0x01, 0x01}, + {0x1d, 0x19, 0x4a, 0x01, 0x00}, + {0x20, 0x23, 0x4b, 0x00, 0x01}, + {0x26, 0x2e, 0x4c, 0x00, 0x01}, + {0x11, 0x11, 0x7e, 0x01, 0x01}, + {0x29, 0x2a, 0x7f, 0x00, 0x01}, + {0x1d, 0x19, 0x80, 0x01, 0x00}, + {0x18, 0x36, 0x81, 0x01, 0x00}, + {0x2e, 0x26, 0x82, 0x01, 0x00} +}; + +const struct UnkStruct_847A074 gUnknown_847A074[105] = { + {0x03, 0x06}, + {0x37, 0x06}, + {0x02, 0x06}, + {0x67, 0x01}, + {0x04, 0x01}, + {0x24, 0x04}, + {0x4a, 0x01}, + {0x26, 0x01}, + {0x2a, 0x00}, + {0x42, 0x03}, + {0x1b, 0x09}, + {0x4c, 0x03}, + {0x44, 0x03}, + {0x21, 0x04}, + {0x43, 0x03}, + {0x6a, 0x01}, + {0x5d, 0x05}, + {0x56, 0x05}, + {0x09, 0x05}, + {0x11, 0x04}, + {0x48, 0x03}, + {0x3c, 0x00}, + {0x29, 0x00}, + {0x5c, 0x09}, + {0x28, 0x09}, + {0x06, 0x0c}, + {0x68, 0x0b}, + {0x05, 0x0b}, + {0x58, 0x0d}, + {0x16, 0x0d}, + {0x46, 0x08}, + {0x0f, 0x01}, + {0x3f, 0x03}, + {0x0e, 0x03}, + {0x5f, 0x04}, + {0x63, 0x04}, + {0x50, 0x04}, + {0x10, 0x04}, + {0x52, 0x03}, + {0x35, 0x04}, + {0x5b, 0x03}, + {0x14, 0x03}, + {0x3d, 0x00}, + {0x13, 0x00}, + {0x12, 0x0b}, + {0x30, 0x07}, + {0x38, 0x07}, + {0x2f, 0x07}, + {0x3b, 0x01}, + {0x31, 0x01}, + {0x4e, 0x0b}, + {0x3a, 0x00}, + {0x32, 0x00}, + {0x23, 0x03}, + {0x0d, 0x0d}, + {0x0a, 0x03}, + {0x49, 0x01}, + {0x0c, 0x01}, + {0x69, 0x01}, + {0x0b, 0x01}, + {0x25, 0x01}, + {0x3e, 0x02}, + {0x27, 0x02}, + {0x65, 0x01}, + {0x2d, 0x01}, + {0x61, 0x01}, + {0x2b, 0x03}, + {0x66, 0x05}, + {0x2e, 0x05}, + {0x2c, 0x00}, + {0x5e, 0x02}, + {0x34, 0x02}, + {0x51, 0x00}, + {0x59, 0x00}, + {0x40, 0x03}, + {0x55, 0x06}, + {0x53, 0x06}, + {0x4b, 0x04}, + {0x15, 0x04}, + {0x1a, 0x09}, + {0x57, 0x0a}, + {0x17, 0x01}, + {0x47, 0x03}, + {0x62, 0x01}, + {0x39, 0x00}, + {0x1d, 0x00}, + {0x1c, 0x04}, + {0x20, 0x00}, + {0x4f, 0x05}, + {0x22, 0x05}, + {0x45, 0x0b}, + {0x1f, 0x0b}, + {0x5a, 0x00}, + {0x1e, 0x00}, + {0x08, 0x00}, + {0x64, 0x02}, + {0x07, 0x02}, + {0x60, 0x08}, + {0x36, 0x08}, + {0x41, 0x0b}, + {0x33, 0x0b}, + {0x54, 0x00}, + {0x18, 0x01}, + {0x4d, 0x0b}, + {0x19, 0x00} +}; + +const struct WindowTemplate gUnknown_847A218[] = { + {0, 3, 1, 27, 18, 15, 0x001}, + DUMMY_WIN_TEMPLATE +}; + +const u32 gUnknown_847A228 = 0x70; // unused + +const struct TextColor gUnknown_847A22C = {0, 2, 3}; + +void (*const gUnknown_847A230[])(void) = { + sub_815DD44, + sub_815DF54, + sub_815E160, + sub_815E1C0, + sub_815E1F0, + sub_815E218, + sub_815E28C, + sub_815E394, + sub_815E408, + sub_815E4B0, + sub_815E56C, + sub_815E5C4, + sub_815E5F0, + sub_815E658, + sub_815E720, + sub_815E88C, + sub_815E8B4, + sub_815E8CC, + sub_815E908, + sub_815E948, + sub_815E9C8 +}; + +const u16 gUnknown_847A284[8][3] = { + {0x012a, 0x016e, 0x0176}, + {0x012b, 0x016f, 0x0177}, + {0x012c, 0x0170, 0x0178}, + {0x012d, 0x0171, 0x0179}, + {0x012e, 0x0172, 0x017a}, + {0x012f, 0x0173, 0x017b}, + {0x0130, 0x0174, 0x017c}, + {0x0131, 0x0175, 0x017d} +}; + +const u16 gUnknown_847A2B4[] = { + ITEM_HP_UP, + ITEM_PROTEIN, + ITEM_IRON, + ITEM_CARBOS, + ITEM_CALCIUM, + ITEM_ZINC, + ITEM_BRIGHT_POWDER, + ITEM_WHITE_HERB, + ITEM_MENTAL_HERB, + ITEM_CHOICE_BAND, + ITEM_KINGS_ROCK, + ITEM_SCOPE_LENS, + ITEM_METAL_COAT, + ITEM_DRAGON_SCALE, + ITEM_UP_GRADE +}; + +const u16 gUnknown_847A2D2[] = { + 0x011d, + 0x011c, + 0x011c, + 0x011b, + 0x011d, + 0x011d, + 0x011b, + 0x011b, + 0x011d, + 0x011c, + 0x011d, + 0x011d, + 0x011d, + 0x011d +}; + +const u8 gUnknown_847A2EE[][2] = { + {0x00, 0x02}, + {0x01, 0x03}, + {0x02, 0x04}, + {0x03, 0x05}, + {0x04, 0x01}, + {0x05, 0x02}, + {0x00, 0x03}, + {0x01, 0x04} +}; + +const u8 gUnknown_847A2FE[][2] = { + {0x00, 0x01}, + {0x01, 0x03}, + {0x02, 0x00}, + {0x03, 0x04}, + {0x04, 0x02}, + {0x05, 0x02}, + {0x00, 0x03}, + {0x01, 0x05} +}; + +const u8 gUnknown_847A30E[][3] = { + {0x00, 0x02, 0x04}, + {0x01, 0x03, 0x05}, + {0x02, 0x03, 0x01}, + {0x03, 0x04, 0x00}, + {0x04, 0x01, 0x02}, + {0x05, 0x00, 0x03}, + {0x00, 0x05, 0x02}, + {0x01, 0x04, 0x05} +}; + extern const struct Unk_203F458_Header gUnknown_84827AC; extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8]; -extern const u16 gUnknown_847A284[8][3]; -extern const u16 gUnknown_847A2B4[]; -extern const u16 gUnknown_847A2D2[]; -extern const u8 gUnknown_847A2EE[][2]; -extern const u8 gUnknown_847A2FE[][2]; -extern const u8 gUnknown_847A30E[][3]; bool32 sub_815D7BC(void * dest, void * buffer) { @@ -934,7 +1334,7 @@ void sub_815E720(void) s32 minutes, seconds, centiseconds; sub_815EC0C(); - windowId = AddWindow(&gUnknown_847A218); + windowId = AddWindow(gUnknown_847A218); sub_80F6E9C(); sub_80F6F1C(windowId, FALSE); AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL); From 8367b0015fbf99070cc5a5244d8213420419d2c8 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 8 Jan 2019 18:12:25 -0500 Subject: [PATCH 032/318] Edit event macros file --- asm/macros/event.inc | 482 ++++++++++++++++++------------------------- 1 file changed, 196 insertions(+), 286 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 960b300b7..d805aecb5 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -295,8 +295,6 @@ @ In FireRed, this command is a nop. .macro initclock hour minute .byte 0x2c - .byte \hour - .byte \minute .endm @ In FireRed, this command is a nop. @@ -304,7 +302,7 @@ .byte 0x2d .endm - @ Resets the values of variables 0x8000, 0x8001, and 0x8002. Related to RTC in RSE? + @ Resets the values of variables 0x8000, 0x8001, and 0x8002. .macro gettime .byte 0x2e .endm @@ -492,7 +490,7 @@ .endm @ Adds a quantity amount of item index to the player's PC. Both arguments can be variables. - .macro addpcitem index, quantity + .macro givepcitem index, quantity .byte 0x49 .2byte \index .2byte \quantity @@ -506,27 +504,27 @@ .endm @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro adddecor a + .macro adddecor decoration .byte 0x4b - .2byte \a + .2byte \decoration .endm @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro removedecor a + .macro removedecor decoration .byte 0x4c - .2byte \a + .2byte \decoration .endm @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro hasdecor a + .macro hasdecor decoration .byte 0x4d - .2byte \a + .2byte \decoration .endm @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro checkdecor a + .macro checkdecor decoration .byte 0x4e - .2byte \a + .2byte \decoration .endm @ Applies the movement data at movements to the specified (index) Person event. Also closes any standard message boxes that are still open. @@ -584,36 +582,35 @@ .endif .endm - .macro setobjectxy word1, word2, word3 - .byte 0x57 - .2byte \word1 - .2byte \word2 - .2byte \word3 + @ Sets the specified (index) Object's position on the current map. + .macro setobjectxy index, x, y + .byte 0x57 + .2byte \index + .2byte \x + .2byte \y .endm - .macro showobject word, byte1, byte2 - .byte 0x58 - .2byte \word - .byte \byte1 - .byte \byte2 + .macro showobject index, map + .byte 0x58 + .2byte \index + map \map .endm - .macro hideobject word, byte1, byte2 - .byte 0x59 - .2byte \word - .byte \byte1 - .byte \byte2 + .macro hideobject index, map + .byte 0x59 + .2byte \index + map \map .endm - @ If the script was called by a Person event, then that Person will turn to face toward the tile that the player is stepping off of. + @ If the script was called by an Object, then that Object will turn to face toward the metatile that the player is standing on. .macro faceplayer - .byte 0x5a + .byte 0x5a .endm - .macro turnobject word, byte - .byte 0x5b - .2byte \word - .byte \byte + .macro turnobject index, direction + .byte 0x5b + .2byte \index + .byte \direction .endm @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. @@ -691,16 +688,16 @@ .2byte \trainer .endm - .macro setobjectxyperm word1, word2, word3 + .macro setobjectxyperm index, x, y .byte 0x63 - .2byte \word1 - .2byte \word2 - .2byte \word3 + .2byte \index + .2byte \x + .2byte \y .endm - .macro moveobjectoffscreen word + .macro moveobjectoffscreen index .byte 0x64 - .2byte \word + .2byte \index .endm .macro setobjectmovementtype word, byte @@ -725,73 +722,69 @@ .byte 0x68 .endm - @ Ceases movement for all OWs on-screen. + @ Ceases movement for all Objects on-screen. .macro lockall .byte 0x69 .endm - @ If the script was called by a Person event, then that Person's movement will cease. + @ If the script was called by an Object, then that Object's movement will cease. .macro lock .byte 0x6a .endm - @ Resumes normal movement for all OWs on-screen, and closes any standard message boxes that are still open. + @ Resumes normal movement for all Objects on-screen, and closes any standard message boxes that are still open. .macro releaseall .byte 0x6b .endm - @ If the script was called by a Person event, then that Person's movement will resume. This command also closes any standard message boxes that are still open. + @ If the script was called by an Object, then that Object's movement will resume. This command also closes any standard message boxes that are still open. .macro release .byte 0x6c .endm @ Blocks script execution until the player presses any key. - .macro waitbutton + .macro waitbuttonpress .byte 0x6d .endm @ Displays a YES/NO multichoice box at the specified coordinates, and blocks script execution until the user makes a selection. Their selection is stored in variable 0x800D (LASTRESULT); 0x0000 for "NO" or if the user pressed B, and 0x0001 for "YES". - .macro yesnobox X, Y + .macro yesnobox x, y .byte 0x6e - .byte \X - .byte \Y + .byte \x + .byte \y .endm - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. If B is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoice X, Y, list, B + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. + .macro multichoice x, y, list, b .byte 0x6f - .byte \X - .byte \Y + .byte \x + .byte \y .byte \list - .byte \B + .byte \b .endm - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If B is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoicedefault X, Y, list, default, B + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. + .macro multichoicedefault x, y, list, default, b .byte 0x70 - .byte \X - .byte \Y + .byte \x + .byte \y .byte \list .byte \default - .byte \B + .byte \b .endm @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box. - .macro multichoicegrid X, Y, list, per_row, B + .macro multichoicegrid x, y, list, per_row, B .byte 0x71 - .byte \X - .byte \Y + .byte \x + .byte \y .byte \list .byte \per_row .byte \B .endm - .macro drawbox byte1, byte2, byte3, byte4 + .macro drawbox .byte 0x72 - .byte \byte1 - .byte \byte2 - .byte \byte3 - .byte \byte4 .endm .macro erasebox byte1, byte2, byte3, byte4 @@ -802,28 +795,24 @@ .byte \byte4 .endm - .macro drawboxtext byte1, byte2, byte3, byte4 + .macro drawboxtext .byte 0x74 - .byte \byte1 - .byte \byte2 - .byte \byte3 - .byte \byte4 .endm - @ Displays a box containing the front sprite for the specified (species) Pokmon species. - .macro drawpokepic species, X, Y + @ Displays a box containing the front sprite for the specified (species) Pokemon species. + .macro drawmonpic species, x, y .byte 0x75 .2byte \species - .byte \X - .byte \Y + .byte \x + .byte \y .endm - @ Hides all boxes displayed with showpokepic. - .macro erasepokepic + @ Hides all boxes displayed with drawmonpic. + .macro erasemonpic .byte 0x76 .endm - @ In FireRed, this command is a nop. (The argument is discarded.) + @ Draws an image of the winner of the contest. In FireRed, this command is a nop. (The argument is discarded.) .macro drawcontestwinner a .byte 0x77 .byte \a @@ -846,9 +835,9 @@ .byte \unknown3 .endm - .macro giveegg word + .macro giveegg species .byte 0x7a - .2byte \word + .2byte \species .endm .macro setpokemove byte1, byte2, word @@ -858,26 +847,26 @@ .2byte \word .endm - @ Checks if at least one Pokmon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the Pokmon that knows the move. If not, LASTRESULT is set to 0x0006. - .macro checkpokemove index + @ Checks if at least one Pokémon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the first Pokémon that knows the move. If not, LASTRESULT is set to 0x0006. Variable 0x8004 is also set to this Pokémon's species. + .macro checkpartymove index .byte 0x7c .2byte \index .endm - @ Writes the name of the Pokmon at index species to the specified buffer. + @ Writes the name of the Pokemon at index species to the specified buffer. .macro getspeciesname out, species .byte 0x7d .byte \out .2byte \species .endm - @ Writes the name of the first Pokmon in the player's party to the specified buffer. + @ Writes the name of the species of the first Pokémon in the player's party to the specified buffer. .macro getfirstpartypokename out .byte 0x7e .byte \out .endm - @ Writes the name of the Pokmon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. + @ Writes the nickname of the Pokemon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. .macro getpartypokename out, slot .byte 0x7f .byte \out @@ -891,18 +880,18 @@ .2byte \item .endm - @ In FireRed, this command is a nop. (The first argument is discarded immediately. The second argument is read, but not used for anything.) - .macro getdecorname a, b + @ Writes the name of the decoration at index decoration to the specified buffer. In FireRed, this command is a nop. + .macro getdecorname out, decoration .byte 0x81 - .byte \a - .2byte \b + .byte \out + .2byte \decoration .endm - @ Writes the name of the attack at index attack to the specified buffer. - .macro getmovename out, attack + @ Writes the name of the move at index move to the specified buffer. + .macro getmovename out, move .byte 0x82 .byte \out - .2byte \attack + .2byte \move .endm @ Converts the value of input to a decimal string, and writes that string to the specified buffer. @@ -912,7 +901,7 @@ .2byte \input .endm - @ Writes the standard string identified by index to the specified buffer. Specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption (I've observed destruction of the stored player name and crashes when entering/exiting certain menu screens). + @ Writes the standard string identified by index to the specified buffer. This command has no protections in place at all, so specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption. .macro getstdstring out, index .byte 0x84 .byte \out @@ -944,15 +933,15 @@ .4byte \products .endm + @ Starts up the slot machine minigame. .macro playslotmachine word .byte 0x89 .2byte \word .endm @ In FireRed, this command is a nop. - .macro plantberrytree byte1, byte2, byte3 + .macro plantberrytree .byte 0x8a - .byte \byte1, \byte2, \byte3 .endm @ In FireRed, this command sets the byte at 0x03000EA8 to 0x01. I do not know what that means. @@ -1003,30 +992,29 @@ .endm @ Spawns a secondary box showing how much money the player has. - .macro showmoneybox X, Y + .macro showmoneybox x, y, check .byte 0x93 - .byte \X - .byte \Y + .byte \x + .byte \y + .byte \check .endm @ Hides the secondary box spawned by showmoney. - .macro hidemoneybox X, Y + .macro hidemoneybox .byte 0x94 - .byte \X - .byte \Y .endm - @ Updates the secondary box spawned by showmoney. (What does it do with its arguments?) - .macro updatemoneybox X, Y + @ Updates the secondary box spawned by showmoney. Consumes but does not use arguments. + .macro updatemoneybox x, y, check .byte 0x95 - .byte \X - .byte \Y + .byte \x + .byte \y + .byte \check .endm @ In FireRed, this command is a nop. - .macro getpricereduction word + .macro getpricereduction .byte 0x96 - .2byte \word .endm @ Fades the screen to black or back, using the specified effect. Effect 0x00 fades in, and effect 0x01 fades out. I don't know if other effects exist. @@ -1035,18 +1023,19 @@ .byte \effect .endm - .macro fadescreendelay byte1, byte2 + @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. Other modes may exist. + .macro fadescreenspeed effect, speed .byte 0x98 - .byte \byte1 - .byte \byte2 + .byte \effect + .byte \speed .endm - .macro setdarklevel word + .macro setflashradius word .byte 0x99 .2byte \word .endm - .macro animdarklevel byte + .macro animateflash byte .byte 0x9a .byte \byte .endm @@ -1062,11 +1051,11 @@ .2byte \animation .endm - @ Tells the game which party Pokmon to use for the next field move animation. - .macro setfieldeffect animation, slot + @ Sets up the field effect argument argument with the value value. + .macro setfieldeffectarg argument, param .byte 0x9d - .byte \animation - .2byte \slot + .byte \argument + .2byte \param .endm @ Blocks script execution until all playing field move animations complete. @@ -1075,8 +1064,8 @@ .2byte \animation .endm - @ Sets which healing place the player will return to if all of the Pokmon in their party faint. A list of available healing places can be found on PokeCommunity. - .macro sethealplace flightspot + @ Sets which healing place the player will return to if all of the Pokemon in their party faint. + .macro setrespawn flightspot .byte 0x9f .2byte \flightspot .endm @@ -1086,19 +1075,19 @@ .byte 0xa0 .endm - @ Plays the specified (species) Pokmon's cry. You can use waitcry to block script execution until the sound finishes. - .macro playpokecry species, effect + @ Plays the specified (species) Pokemon's cry. You can use waitcry to block script execution until the sound finishes. + .macro playmoncry species, effect .byte 0xa1 .2byte \species .2byte \effect .endm - @ Changes the tile at (X, Y) on the current map. - .macro setmaptile X, Y, tile_number, tile_attrib + @ Changes the metatile at (x, y) on the current map. + .macro setmetatile x, y, metatile_number, tile_attrib .byte 0xa2 - .2byte \X - .2byte \Y - .2byte \tile_number + .2byte \x + .2byte \y + .2byte \metatile_number .2byte \tile_attrib .endm @@ -1119,98 +1108,100 @@ .endm @ This command manages cases in which maps have tiles that change state when stepped on (specifically, cracked/breakable floors). - .macro tileeffect subroutine + .macro setstepcallback subroutine .byte 0xa6 .byte \subroutine .endm - .macro setmaplayoutindex word + .macro setmaplayoutindex index .byte 0xa7 - .2byte \word + .2byte \index .endm - .macro setobjectpriority word, byte1, byte2, byte3 + .macro setobjectpriority index, map, priority .byte 0xa8 - .2byte \word - .byte \byte1 - .byte \byte2 - .byte \byte3 + .2byte \index + map \map + .byte \priority .endm - .macro resetobjectpriority word, byte1, byte2 + .macro resetobjectpriority index, map .byte 0xa9 - .2byte \word - .byte \byte1 - .byte \byte2 + .2byte \index + map \map .endm - .macro createvobject byte1, byte2, word1, word2, byte3, byte4 + .macro createvobject sprite, byte2, x, y, elevation, direction .byte 0xaa - .byte \byte1 + .byte \sprite .byte \byte2 - .2byte \word1 - .2byte \word2 - .byte \byte3 - .byte \byte4 + .2byte \x + .2byte \y + .byte \elevation + .byte \direction .endm - .macro turnvobject byte1, byte2 + .macro turnvobject index, direction .byte 0xab - .byte \byte1 - .byte \byte2 + .byte \index + .byte \direction .endm - @ Queues the opening of the door tile at (X, Y) with an animation. - .macro opendoor X, Y + @ Opens the door metatile at (X, Y) with an animation. + .macro opendoor x, y .byte 0xac - .2byte \X - .2byte \Y + .2byte \x + .2byte \y .endm - @ Queues the closing of the door tile at (X, Y) with an animation. - .macro closedoor X, Y + @ Closes the door metatile at (X, Y) with an animation. + .macro closedoor x, y .byte 0xad - .2byte \X - .2byte \Y + .2byte \x + .2byte \y .endm - @ Executes the state changes queued with setdooropened, setdoorclosed, setdooropened2, and setdoorclosed2. + @ Waits for the door animation started with opendoor or closedoor to finish. .macro waitdooranim .byte 0xae .endm - @ Queues the opening of the door tile at (X, Y) without an animation. - .macro setdooropen X, Y + @ Sets the door tile at (x, y) to be open without an animation. + .macro setdooropen x, y .byte 0xaf - .2byte \X - .2byte \Y + .2byte \x + .2byte \y .endm - @ Queues the closing of the door tile at (X, Y) without an animation. - .macro setdoorclosed X, Y + @ Sets the door tile at (x, y) to be closed without an animation. + .macro setdoorclosed2 x, y .byte 0xb0 - .2byte \X - .2byte \Y + .2byte \x + .2byte \y .endm - @ In FireRed, this command is a nop. - .macro addelevmenuitem + @ In Emerald, this command consumes its parameters and does nothing. In FireRed, this command is a nop. + .macro addelevmenuitem a, b, c, d .byte 0xb1 + .byte \a + .2byte \b + .2byte \c + .2byte \d .endm - @ In FireRed, this command is a nop. + @ In FireRed and Emerald, this command is a nop. .macro showelevmenu .byte 0xb2 .endm - .macro checkcoins word + .macro checkcoins out .byte 0xb3 - .2byte \word + .2byte \out .endm - .macro givecoins word + .macro givecoins count .byte 0xb4 - .2byte \word + .2byte \count .endm .macro takecoins word @@ -1226,7 +1217,7 @@ .2byte \item .endm - @ Starts a wild battle against the Pokmon generated by setwildbattle. Blocks script execution until the battle finishes. + @ Starts a wild battle against the Pokemon generated by setwildbattle. Blocks script execution until the battle finishes. .macro dowildbattle .byte 0xb7 .endm @@ -1264,55 +1255,55 @@ .4byte \pointer .endm - .macro vloadword pointer + .macro vloadptr pointer .byte 0xbe .4byte \pointer .endm - .macro vgetstring byte, pointer + .macro vbufferstring byte, pointer .byte 0xbf .byte \byte .4byte \pointer .endm @ Spawns a secondary box showing how many Coins the player has. - .macro showcoinsbox X, Y + .macro showcoinsbox x, y .byte 0xc0 - .byte \X - .byte \Y + .byte \x + .byte \y .endm - @ Hides the secondary box spawned by showcoins. It doesn't appear to use its arguments, but they are still required. - .macro hidecoinsbox X, Y + @ Hides the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. + .macro hidecoinsbox x, y .byte 0xc1 - .byte \X - .byte \Y + .byte \x + .byte \y .endm - @ Updates the secondary box spawned by showcoins. (What does it do with its arguments?) - .macro updatecoinsbox X, Y + @ Updates the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. + .macro updatecoinsbox x, y .byte 0xc2 - .byte \X - .byte \Y + .byte \x + .byte \y .endm - @ Increases the value of the specified hidden variable by 1. The hidden variable's value will not be allowed to exceed 0x00FFFFFF. - .macro incrementgamestat a + @ Increases the value of the specified game stat by 1. The stat's value will not be allowed to exceed 0x00FFFFFF. + .macro incrementgamestat stat .byte 0xc3 - .byte \a + .byte \stat .endm - @ Clone of warp... Except that it doesn't appear to have any effect when used in some of FireRed's default level scripts. (If it did, Berry Forest would be impossible to enter...) - .macro setescapewarp map, warp, X, Y + @ Sets the destination that using an Escape Rope or Dig will take the player to. + .macro setescapewarp map, warp, x, y .byte 0xc4 map \map .byte \warp - .2byte \X - .2byte \Y + .2byte \x + .2byte \y .endm @ Blocks script execution until cry finishes. - .macro waitpokecry + .macro waitmoncry .byte 0xc5 .endm @@ -1357,128 +1348,52 @@ .4byte \value .endm - @ Makes the Pokmon in the specified slot of the player's party obedient. It will not randomly disobey orders in battle. - .macro setobedience slot + @ Makes the Pokemon in the specified slot of the player's party obedient. It will not randomly disobey orders in battle. + .macro setmonobedient slot .byte 0xcd .2byte \slot .endm - @ Checks if the Pokmon in the specified slot of the player's party is obedient. If the Pokmon is disobedient, 0x0001 is written to script variable 0x800D (LASTRESULT). If the Pokmon is obedient (or if the specified slot is empty or invalid), 0x0000 is written. - .macro checkobedience slot + @ Checks if the Pokemon in the specified slot of the player's party is obedient. If the Pokemon is disobedient, 0x0001 is written to script variable 0x800D (LASTRESULT). If the Pokemon is obedient (or if the specified slot is empty or invalid), 0x0000 is written. + .macro checkmonobedience slot .byte 0xce .2byte \slot .endm - @ Depending on factors I haven't managed to understand yet, this command may cause script execution to jump to the offset specified by the pointer at 0x020370A4. + @ Depending on factors I haven't managed to understand yet, this command may cause script execution to jump to the offset specified by the pointer at 0x020375C0. .macro execram .byte 0xcf .endm @ Sets worldmapflag to 1. This allows the player to Fly to the corresponding map, if that map has a flightspot. - .macro setworldflag worldmapflag + .macro setworldmapflag worldmapflag .byte 0xd0 .2byte \worldmapflag .endm @ Clone of warpteleport? It is apparently only used in FR/LG, and only with specials.[source] - .macro warpteleport2 map, warp, X, Y + .macro warpteleport2 map, warp, x, y .byte 0xd1 map \map .byte \warp - .2byte \X - .2byte \Y + .2byte \x + .2byte \y .endm - @ Changes the location where the player caught the Pokmon in the specified slot of their party. A list of valid catch locations can be found on PokeCommunity. - .macro setcatchlocale slot, location + @ Changes the location where the player caught the Pokemon in the specified slot of their party. + .macro setmonmetlocation slot, location .byte 0xd2 .2byte \slot .byte \location .endm - .macro event_d3 unknown + .macro getbraillestringwidth pointer .byte 0xd3 - .2byte \unknown + .4byte \pointer .endm - .macro event_d4 + .macro bufferitemnameplural out, item, quantity .byte 0xd4 - .endm - - @ In FireRed, this command is a nop. - .macro event_d5 var - .byte 0xd5 - .2byte \var - .endm - - .macro event_d6 - .byte 0xd6 - .endm - - .macro warp7 map, byte, word1, word2 - .byte 0xd7 - map \map - .byte \byte - .2byte \word1 - .2byte \word2 - .endm - - .macro event_d8 - .byte 0xd8 - .endm - - .macro event_d9 - .byte 0xd9 - .endm - - .macro hidebox2 - .byte 0xda - .endm - - .macro message3 pointer - .byte 0xdb - .4byte \pointer - .endm - - .macro fadescreen3 byte - .byte 0xdc - .byte \byte - .endm - - .macro buffertrainerclass byte, word - .byte 0xdd - .byte \byte - .2byte \word - .endm - - .macro buffertrainername byte, word - .byte 0xde - .byte \byte - .2byte \word - .endm - - .macro pokenavcall pointer - .byte 0xdf - .4byte \pointer - .endm - - .macro warp8 map, byte, word1, word2 - .byte 0xe0 - map \map - .byte \byte - .2byte \word1 - .2byte \word2 - .endm - - .macro buffercontesttype byte, word - .byte 0xe1 - .byte \byte - .2byte \word - .endm - - @ Writes the name of the specified (item) item to the specified buffer. If the specified item is a Berry (0x85 - 0xAE) or Poke Ball (0x4) and if the quantity is 2 or more, the buffered string will be pluralized ("IES" or "S" appended). If the specified item is the Enigma Berry, I have no idea what this command does (but testing showed no pluralization). If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. - .macro storeitems out, item, quantity - .byte 0xe2 .byte \out .2byte \item .2byte \quantity @@ -1516,8 +1431,3 @@ setorcopyvar 0x8001, \amount callstd \function .endm - - .macro givedecoration decoration - setorcopyvar 0x8000, \decoration - callstd 7 - .endm From 987fb21b1f579fc6c9b10ca5a57a05131d2e5de9 Mon Sep 17 00:00:00 2001 From: SatoMew Date: Mon, 28 Jan 2019 20:46:50 +0000 Subject: [PATCH 033/318] Simplify and improve INSTALL.md --- INSTALL.md | 56 ++++++++++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 745f70007..030912d8e 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,7 +1,24 @@ -Run the following commands (first, see [this](#macos) if you are on **macOS** or [this](#old-windows) if you are on **old Windows**): +## Prerequisites + +Until further notice, this repository requires a **baserom.gba** file, which must be [a legitimate copy of English Pokémon FireRed v1.0](https://datomatic.no-intro.org/?page=show_record&s=23&n=1616). See [this article](https://www.howtogeek.com/67241/htg-explains-what-are-md5-sha-1-hashes-and-how-do-i-check-them/) for help on how to verify the checksum. + +---- + +**Linux:** Proceed to [Installation](#installation). + +**macOS:** Get the [Xcode command-line tools](https://developer.apple.com/library/archive/technotes/tn2339/_index.html#//apple_ref/doc/uid/DTS40014588-CH1-DOWNLOADING_COMMAND_LINE_TOOLS_IS_NOT_AVAILABLE_IN_XCODE_FOR_MACOS_10_9__HOW_CAN_I_INSTALL_THEM_ON_MY_MACHINE_). + +**Windows 10 (1709+):** Get the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/install-win10). For **Windows 10 (1607 & 1703)**, go [here](https://docs.microsoft.com/windows/wsl/install-legacy) instead. + +**Windows Vista, 7, 8, 8.1, and 10 (1507 & 1511):** Get [Cygwin](https://cygwin.com/install.html) and [include](https://cygwin.com/cygwin-ug-net/setup-net.html#setup-packages) the `make`, `git`, `gcc-core`, `gcc-g++`, `libpng-devel` packages. + + +## Installation + +To set up the repository: git clone https://github.com/pret/pokefirered - git clone https://github.com/pikalaxalt/agbcc -b new_layout_with_libs + git clone https://github.com/luckytyphlosion/agbcc -b new_layout_with_libs cd agbcc make @@ -13,39 +30,8 @@ To build **pokefirered.gba**: make -j$(nproc) -If you have only changed `.c` or `.s` files, you can turn off the dependency scanning temporarily. Changes to any other files will be ignored, and the build will either fail or not reflect those changes. +**Note:** If only `.c` or `.s` files were changed, turn off the dependency scanning temporarily. Changes to any other files will be ignored and the build will either fail or not reflect those changes. make -j$(nproc) NODEP=1 - -## macOS - -Run `xcode-select --install` in Terminal, then proceed by executing the commands. - - -## Old Windows - -*For Windows 8.1 and earlier* - -Download and run the [Cygwin](https://www.cygwin.com/install.html) setup, leaving the default settings intact. At "Select Packages", set the view to "Full" and choose to install the following: - -- `make` -- `git` -- `gcc-core` -- `gcc-g++` -- `libpng-devel` - -In the Cygwin command prompt, enter the commands. - -If the command for building pokefirered.gba does not work, run `nproc` and use that value instead of `$(nproc)` for `make`. - - -## Windows 10 - -Install the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/install-win10), and run the commands. - -## Important note for all users - -Until further notice, this repository is dependent on `baserom.gba`, which is a copy of Pokémon FireRed (U)(1.0) bearing the SHA1 sum `41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc`. If you attempt to build and get the following error or similar, it's because `baserom.gba` is missing. - - No rule to make target 'build/firered/data/librfu_rodata.o', needed by 'pokefirered.elf'. Stop. +**Note 2:** If the build command is not recognized on Linux, including the Linux environment used within Windows, run `nproc` and replace `$(nproc)` with the returned value (e.g.: `make -j4`). Because `nproc` is not available on macOS, the alternative is `sysctl -n hw.ncpu`. From f4ed80c496ca153ff01977ff0ba99e576fba9e34 Mon Sep 17 00:00:00 2001 From: SatoMew Date: Mon, 28 Jan 2019 22:53:49 +0000 Subject: [PATCH 034/318] Mention build_tools.sh --- INSTALL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/INSTALL.md b/INSTALL.md index 030912d8e..203e532bb 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -25,6 +25,7 @@ To set up the repository: make install prefix=../pokefirered cd ../pokefirered + ./build_tools.sh To build **pokefirered.gba**: From 078b567a23600d5bc5d1895b8a2ad46671882461 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 13 Feb 2019 22:09:42 -0600 Subject: [PATCH 035/318] scaninc: Fix C comment consumption logic --- tools/scaninc/c_file.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp index d470f959d..595f366cb 100644 --- a/tools/scaninc/c_file.cpp +++ b/tools/scaninc/c_file.cpp @@ -134,7 +134,7 @@ bool CFile::ConsumeComment() if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '*') { m_pos += 2; - while (m_buffer[m_pos] != '*' && m_buffer[m_pos + 1] != '/') + while (m_buffer[m_pos] != '*' || m_buffer[m_pos + 1] != '/') { if (m_buffer[m_pos] == 0) return false; From d22f886824b7a5711f9629ad64063c927d5963fd Mon Sep 17 00:00:00 2001 From: garak Date: Sat, 23 Feb 2019 10:09:41 -0500 Subject: [PATCH 036/318] dump species names --- asm/trade.s | 4 +- data/data.s | 5 +- data/text/species_names.inc | 412 ++++++++++++++++++++++++++++++++++++ 3 files changed, 415 insertions(+), 6 deletions(-) create mode 100644 data/text/species_names.inc diff --git a/asm/trade.s b/asm/trade.s index e9fcddf2d..a96350fd6 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -2487,7 +2487,7 @@ _0804DB1A: bne _0804DB5A adds r0, r4, 0 movs r1, 0x2 - ldr r2, _0804DB74 @ =gUnknown_8246BE5 + ldr r2, _0804DB74 @ = gSpeciesNames + 0xD05 bl SetMonData _0804DB5A: adds r4, 0x64 @@ -2500,7 +2500,7 @@ _0804DB5A: _0804DB68: .4byte gEnemyParty _0804DB6C: .4byte 0x0000012f _0804DB70: .4byte gUnknown_8262034 -_0804DB74: .4byte gUnknown_8246BE5 +_0804DB74: .4byte gSpeciesNames+0xD05 _0804DB78: ldr r2, _0804DBA8 @ =gUnknown_2031DA8 ldr r1, [r2] diff --git a/data/data.s b/data/data.s index e17c041a2..c819fd011 100644 --- a/data/data.s +++ b/data/data.s @@ -129,10 +129,7 @@ gTrainers:: @ 823EAD8 .incbin "baserom.gba", 0x23EAC8, 0x7418 gSpeciesNames:: @ 8245EE0 - .incbin "baserom.gba", 0x245EE0, 0xD05 - -gUnknown_8246BE5:: @ 8246BE5 - .incbin "baserom.gba", 0x246BE5, 0x4AF + .include "data/text/species_names.inc" gMoveNames:: @ 8247094 .incbin "baserom.gba", 0x247094, 0xF97 diff --git a/data/text/species_names.inc b/data/text/species_names.inc new file mode 100644 index 000000000..a593ab3a2 --- /dev/null +++ b/data/text/species_names.inc @@ -0,0 +1,412 @@ + .string "??????????$", 11 + .string "BULBASAUR$", 11 + .string "IVYSAUR$", 11 + .string "VENUSAUR$", 11 + .string "CHARMANDER$", 11 + .string "CHARMELEON$", 11 + .string "CHARIZARD$", 11 + .string "SQUIRTLE$", 11 + .string "WARTORTLE$", 11 + .string "BLASTOISE$", 11 + .string "CATERPIE$", 11 + .string "METAPOD$", 11 + .string "BUTTERFREE$", 11 + .string "WEEDLE$", 11 + .string "KAKUNA$", 11 + .string "BEEDRILL$", 11 + .string "PIDGEY$", 11 + .string "PIDGEOTTO$", 11 + .string "PIDGEOT$", 11 + .string "RATTATA$", 11 + .string "RATICATE$", 11 + .string "SPEAROW$", 11 + .string "FEAROW$", 11 + .string "EKANS$", 11 + .string "ARBOK$", 11 + .string "PIKACHU$", 11 + .string "RAICHU$", 11 + .string "SANDSHREW$", 11 + .string "SANDSLASH$", 11 + .string "NIDORAN♀$", 11 + .string "NIDORINA$", 11 + .string "NIDOQUEEN$", 11 + .string "NIDORAN♂$", 11 + .string "NIDORINO$", 11 + .string "NIDOKING$", 11 + .string "CLEFAIRY$", 11 + .string "CLEFABLE$", 11 + .string "VULPIX$", 11 + .string "NINETALES$", 11 + .string "JIGGLYPUFF$", 11 + .string "WIGGLYTUFF$", 11 + .string "ZUBAT$", 11 + .string "GOLBAT$", 11 + .string "ODDISH$", 11 + .string "GLOOM$", 11 + .string "VILEPLUME$", 11 + .string "PARAS$", 11 + .string "PARASECT$", 11 + .string "VENONAT$", 11 + .string "VENOMOTH$", 11 + .string "DIGLETT$", 11 + .string "DUGTRIO$", 11 + .string "MEOWTH$", 11 + .string "PERSIAN$", 11 + .string "PSYDUCK$", 11 + .string "GOLDUCK$", 11 + .string "MANKEY$", 11 + .string "PRIMEAPE$", 11 + .string "GROWLITHE$", 11 + .string "ARCANINE$", 11 + .string "POLIWAG$", 11 + .string "POLIWHIRL$", 11 + .string "POLIWRATH$", 11 + .string "ABRA$", 11 + .string "KADABRA$", 11 + .string "ALAKAZAM$", 11 + .string "MACHOP$", 11 + .string "MACHOKE$", 11 + .string "MACHAMP$", 11 + .string "BELLSPROUT$", 11 + .string "WEEPINBELL$", 11 + .string "VICTREEBEL$", 11 + .string "TENTACOOL$", 11 + .string "TENTACRUEL$", 11 + .string "GEODUDE$", 11 + .string "GRAVELER$", 11 + .string "GOLEM$", 11 + .string "PONYTA$", 11 + .string "RAPIDASH$", 11 + .string "SLOWPOKE$", 11 + .string "SLOWBRO$", 11 + .string "MAGNEMITE$", 11 + .string "MAGNETON$", 11 + .string "FARFETCH’D$", 11 + .string "DODUO$", 11 + .string "DODRIO$", 11 + .string "SEEL$", 11 + .string "DEWGONG$", 11 + .string "GRIMER$", 11 + .string "MUK$", 11 + .string "SHELLDER$", 11 + .string "CLOYSTER$", 11 + .string "GASTLY$", 11 + .string "HAUNTER$", 11 + .string "GENGAR$", 11 + .string "ONIX$", 11 + .string "DROWZEE$", 11 + .string "HYPNO$", 11 + .string "KRABBY$", 11 + .string "KINGLER$", 11 + .string "VOLTORB$", 11 + .string "ELECTRODE$", 11 + .string "EXEGGCUTE$", 11 + .string "EXEGGUTOR$", 11 + .string "CUBONE$", 11 + .string "MAROWAK$", 11 + .string "HITMONLEE$", 11 + .string "HITMONCHAN$", 11 + .string "LICKITUNG$", 11 + .string "KOFFING$", 11 + .string "WEEZING$", 11 + .string "RHYHORN$", 11 + .string "RHYDON$", 11 + .string "CHANSEY$", 11 + .string "TANGELA$", 11 + .string "KANGASKHAN$", 11 + .string "HORSEA$", 11 + .string "SEADRA$", 11 + .string "GOLDEEN$", 11 + .string "SEAKING$", 11 + .string "STARYU$", 11 + .string "STARMIE$", 11 + .string "MR. MIME$", 11 + .string "SCYTHER$", 11 + .string "JYNX$", 11 + .string "ELECTABUZZ$", 11 + .string "MAGMAR$", 11 + .string "PINSIR$", 11 + .string "TAUROS$", 11 + .string "MAGIKARP$", 11 + .string "GYARADOS$", 11 + .string "LAPRAS$", 11 + .string "DITTO$", 11 + .string "EEVEE$", 11 + .string "VAPOREON$", 11 + .string "JOLTEON$", 11 + .string "FLAREON$", 11 + .string "PORYGON$", 11 + .string "OMANYTE$", 11 + .string "OMASTAR$", 11 + .string "KABUTO$", 11 + .string "KABUTOPS$", 11 + .string "AERODACTYL$", 11 + .string "SNORLAX$", 11 + .string "ARTICUNO$", 11 + .string "ZAPDOS$", 11 + .string "MOLTRES$", 11 + .string "DRATINI$", 11 + .string "DRAGONAIR$", 11 + .string "DRAGONITE$", 11 + .string "MEWTWO$", 11 + .string "MEW$", 11 + .string "CHIKORITA$", 11 + .string "BAYLEEF$", 11 + .string "MEGANIUM$", 11 + .string "CYNDAQUIL$", 11 + .string "QUILAVA$", 11 + .string "TYPHLOSION$", 11 + .string "TOTODILE$", 11 + .string "CROCONAW$", 11 + .string "FERALIGATR$", 11 + .string "SENTRET$", 11 + .string "FURRET$", 11 + .string "HOOTHOOT$", 11 + .string "NOCTOWL$", 11 + .string "LEDYBA$", 11 + .string "LEDIAN$", 11 + .string "SPINARAK$", 11 + .string "ARIADOS$", 11 + .string "CROBAT$", 11 + .string "CHINCHOU$", 11 + .string "LANTURN$", 11 + .string "PICHU$", 11 + .string "CLEFFA$", 11 + .string "IGGLYBUFF$", 11 + .string "TOGEPI$", 11 + .string "TOGETIC$", 11 + .string "NATU$", 11 + .string "XATU$", 11 + .string "MAREEP$", 11 + .string "FLAAFFY$", 11 + .string "AMPHAROS$", 11 + .string "BELLOSSOM$", 11 + .string "MARILL$", 11 + .string "AZUMARILL$", 11 + .string "SUDOWOODO$", 11 + .string "POLITOED$", 11 + .string "HOPPIP$", 11 + .string "SKIPLOOM$", 11 + .string "JUMPLUFF$", 11 + .string "AIPOM$", 11 + .string "SUNKERN$", 11 + .string "SUNFLORA$", 11 + .string "YANMA$", 11 + .string "WOOPER$", 11 + .string "QUAGSIRE$", 11 + .string "ESPEON$", 11 + .string "UMBREON$", 11 + .string "MURKROW$", 11 + .string "SLOWKING$", 11 + .string "MISDREAVUS$", 11 + .string "UNOWN$", 11 + .string "WOBBUFFET$", 11 + .string "GIRAFARIG$", 11 + .string "PINECO$", 11 + .string "FORRETRESS$", 11 + .string "DUNSPARCE$", 11 + .string "GLIGAR$", 11 + .string "STEELIX$", 11 + .string "SNUBBULL$", 11 + .string "GRANBULL$", 11 + .string "QWILFISH$", 11 + .string "SCIZOR$", 11 + .string "SHUCKLE$", 11 + .string "HERACROSS$", 11 + .string "SNEASEL$", 11 + .string "TEDDIURSA$", 11 + .string "URSARING$", 11 + .string "SLUGMA$", 11 + .string "MAGCARGO$", 11 + .string "SWINUB$", 11 + .string "PILOSWINE$", 11 + .string "CORSOLA$", 11 + .string "REMORAID$", 11 + .string "OCTILLERY$", 11 + .string "DELIBIRD$", 11 + .string "MANTINE$", 11 + .string "SKARMORY$", 11 + .string "HOUNDOUR$", 11 + .string "HOUNDOOM$", 11 + .string "KINGDRA$", 11 + .string "PHANPY$", 11 + .string "DONPHAN$", 11 + .string "PORYGON2$", 11 + .string "STANTLER$", 11 + .string "SMEARGLE$", 11 + .string "TYROGUE$", 11 + .string "HITMONTOP$", 11 + .string "SMOOCHUM$", 11 + .string "ELEKID$", 11 + .string "MAGBY$", 11 + .string "MILTANK$", 11 + .string "BLISSEY$", 11 + .string "RAIKOU$", 11 + .string "ENTEI$", 11 + .string "SUICUNE$", 11 + .string "LARVITAR$", 11 + .string "PUPITAR$", 11 + .string "TYRANITAR$", 11 + .string "LUGIA$", 11 + .string "HO-OH$", 11 + .string "CELEBI$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "?$", 11 + .string "TREECKO$", 11 + .string "GROVYLE$", 11 + .string "SCEPTILE$", 11 + .string "TORCHIC$", 11 + .string "COMBUSKEN$", 11 + .string "BLAZIKEN$", 11 + .string "MUDKIP$", 11 + .string "MARSHTOMP$", 11 + .string "SWAMPERT$", 11 + .string "POOCHYENA$", 11 + .string "MIGHTYENA$", 11 + .string "ZIGZAGOON$", 11 + .string "LINOONE$", 11 + .string "WURMPLE$", 11 + .string "SILCOON$", 11 + .string "BEAUTIFLY$", 11 + .string "CASCOON$", 11 + .string "DUSTOX$", 11 + .string "LOTAD$", 11 + .string "LOMBRE$", 11 + .string "LUDICOLO$", 11 + .string "SEEDOT$", 11 + .string "NUZLEAF$", 11 + .string "SHIFTRY$", 11 + .string "NINCADA$", 11 + .string "NINJASK$", 11 + .string "SHEDINJA$", 11 + .string "TAILLOW$", 11 + .string "SWELLOW$", 11 + .string "SHROOMISH$", 11 + .string "BRELOOM$", 11 + .string "SPINDA$", 11 + .string "WINGULL$", 11 + .string "PELIPPER$", 11 + .string "SURSKIT$", 11 + .string "MASQUERAIN$", 11 + .string "WAILMER$", 11 + .string "WAILORD$", 11 + .string "SKITTY$", 11 + .string "DELCATTY$", 11 + .string "KECLEON$", 11 + .string "BALTOY$", 11 + .string "CLAYDOL$", 11 + .string "NOSEPASS$", 11 + .string "TORKOAL$", 11 + .string "SABLEYE$", 11 + .string "BARBOACH$", 11 + .string "WHISCASH$", 11 + .string "LUVDISC$", 11 + .string "CORPHISH$", 11 + .string "CRAWDAUNT$", 11 + .string "FEEBAS$", 11 + .string "MILOTIC$", 11 + .string "CARVANHA$", 11 + .string "SHARPEDO$", 11 + .string "TRAPINCH$", 11 + .string "VIBRAVA$", 11 + .string "FLYGON$", 11 + .string "MAKUHITA$", 11 + .string "HARIYAMA$", 11 + .string "ELECTRIKE$", 11 + .string "MANECTRIC$", 11 + .string "NUMEL$", 11 + .string "CAMERUPT$", 11 + .string "SPHEAL$", 11 + .string "SEALEO$", 11 + .string "WALREIN$", 11 + .string "CACNEA$", 11 + .string "CACTURNE$", 11 + .string "SNORUNT$", 11 + .string "GLALIE$", 11 + .string "LUNATONE$", 11 + .string "SOLROCK$", 11 + .string "AZURILL$", 11 + .string "SPOINK$", 11 + .string "GRUMPIG$", 11 + .string "PLUSLE$", 11 + .string "MINUN$", 11 + .string "MAWILE$", 11 + .string "MEDITITE$", 11 + .string "MEDICHAM$", 11 + .string "SWABLU$", 11 + .string "ALTARIA$", 11 + .string "WYNAUT$", 11 + .string "DUSKULL$", 11 + .string "DUSCLOPS$", 11 + .string "ROSELIA$", 11 + .string "SLAKOTH$", 11 + .string "VIGOROTH$", 11 + .string "SLAKING$", 11 + .string "GULPIN$", 11 + .string "SWALOT$", 11 + .string "TROPIUS$", 11 + .string "WHISMUR$", 11 + .string "LOUDRED$", 11 + .string "EXPLOUD$", 11 + .string "CLAMPERL$", 11 + .string "HUNTAIL$", 11 + .string "GOREBYSS$", 11 + .string "ABSOL$", 11 + .string "SHUPPET$", 11 + .string "BANETTE$", 11 + .string "SEVIPER$", 11 + .string "ZANGOOSE$", 11 + .string "RELICANTH$", 11 + .string "ARON$", 11 + .string "LAIRON$", 11 + .string "AGGRON$", 11 + .string "CASTFORM$", 11 + .string "VOLBEAT$", 11 + .string "ILLUMISE$", 11 + .string "LILEEP$", 11 + .string "CRADILY$", 11 + .string "ANORITH$", 11 + .string "ARMALDO$", 11 + .string "RALTS$", 11 + .string "KIRLIA$", 11 + .string "GARDEVOIR$", 11 + .string "BAGON$", 11 + .string "SHELGON$", 11 + .string "SALAMENCE$", 11 + .string "BELDUM$", 11 + .string "METANG$", 11 + .string "METAGROSS$", 11 + .string "REGIROCK$", 11 + .string "REGICE$", 11 + .string "REGISTEEL$", 11 + .string "KYOGRE$", 11 + .string "GROUDON$", 11 + .string "RAYQUAZA$", 11 + .string "LATIAS$", 11 + .string "LATIOS$", 11 + .string "JIRACHI$", 11 + .string "DEOXYS$", 11 + .string "CHIMECHO$", 11 From d6aac6654022805fd12c5d795d9f8e1860793334 Mon Sep 17 00:00:00 2001 From: garak Date: Tue, 26 Feb 2019 16:13:08 -0500 Subject: [PATCH 037/318] name maps --- data/maps/groups.inc | 1700 +++++++++++++++++++++--------------------- 1 file changed, 850 insertions(+), 850 deletions(-) diff --git a/data/maps/groups.inc b/data/maps/groups.inc index 27168da81..c21c970af 100644 --- a/data/maps/groups.inc +++ b/data/maps/groups.inc @@ -1,1788 +1,1788 @@ -gMap_00_00:: @ 834F188 +UnknownMap_00_00:: @ 834F188 .incbin "baserom.gba", 0x34F188, 0x1C -gMap_00_01:: @ 834F1A4 +UnknownMap_00_01:: @ 834F1A4 .incbin "baserom.gba", 0x34F1A4, 0x1C -gMap_00_02:: @ 834F1C0 +UnknownMap_00_02:: @ 834F1C0 .incbin "baserom.gba", 0x34F1C0, 0x1C -gMap_00_03:: @ 834F1DC +UnknownMap_00_03:: @ 834F1DC .incbin "baserom.gba", 0x34F1DC, 0x1C -gMap_00_04:: @ 834F1F8 +UnknownMap_00_04:: @ 834F1F8 .incbin "baserom.gba", 0x34F1F8, 0x1C -gMap_01_00:: @ 834F214 +ViridianForest:: @ 834F214 .incbin "baserom.gba", 0x34F214, 0x1C -gMap_01_01:: @ 834F230 +MtMoon_1F:: @ 834F230 .incbin "baserom.gba", 0x34F230, 0x1C -gMap_01_02:: @ 834F24C +MtMoon_B1F:: @ 834F24C .incbin "baserom.gba", 0x34F24C, 0x1C -gMap_01_03:: @ 834F268 +MtMoon_B2F:: @ 834F268 .incbin "baserom.gba", 0x34F268, 0x1C -gMap_01_04:: @ 834F284 +SSAnne_Exterior:: @ 834F284 .incbin "baserom.gba", 0x34F284, 0x1C -gMap_01_05:: @ 834F2A0 +SSAnne_1F_Corridor:: @ 834F2A0 .incbin "baserom.gba", 0x34F2A0, 0x1C -gMap_01_06:: @ 834F2BC +SSAnne_2F_Corridor:: @ 834F2BC .incbin "baserom.gba", 0x34F2BC, 0x1C -gMap_01_07:: @ 834F2D8 +SSAnne_3F_Corridor:: @ 834F2D8 .incbin "baserom.gba", 0x34F2D8, 0x1C -gMap_01_08:: @ 834F2F4 +SSAnne_B1F_Corridor:: @ 834F2F4 .incbin "baserom.gba", 0x34F2F4, 0x1C -gMap_01_09:: @ 834F310 +SSAnne_Deck:: @ 834F310 .incbin "baserom.gba", 0x34F310, 0x1C -gMap_01_10:: @ 834F32C +SSAnne_Kitchen:: @ 834F32C .incbin "baserom.gba", 0x34F32C, 0x1C -gMap_01_11:: @ 834F348 +SSAnne_CaptainsOffice:: @ 834F348 .incbin "baserom.gba", 0x34F348, 0x1C -gMap_01_12:: @ 834F364 +SSAnne_1F_Room1:: @ 834F364 .incbin "baserom.gba", 0x34F364, 0x1C -gMap_01_13:: @ 834F380 +SSAnne_1F_Room2:: @ 834F380 .incbin "baserom.gba", 0x34F380, 0x1C -gMap_01_14:: @ 834F39C +SSAnne_1F_Room3:: @ 834F39C .incbin "baserom.gba", 0x34F39C, 0x1C -gMap_01_15:: @ 834F3B8 +SSAnne_1F_Room4:: @ 834F3B8 .incbin "baserom.gba", 0x34F3B8, 0x1C -gMap_01_16:: @ 834F3D4 +SSAnne_1F_Room5:: @ 834F3D4 .incbin "baserom.gba", 0x34F3D4, 0x1C -gMap_01_17:: @ 834F3F0 +SSAnne_1F_Room7:: @ 834F3F0 .incbin "baserom.gba", 0x34F3F0, 0x1C -gMap_01_18:: @ 834F40C +SSAnne_2F_Room1:: @ 834F40C .incbin "baserom.gba", 0x34F40C, 0x1C -gMap_01_19:: @ 834F428 +SSAnne_2F_Room2:: @ 834F428 .incbin "baserom.gba", 0x34F428, 0x1C -gMap_01_20:: @ 834F444 +SSAnne_2F_Room3:: @ 834F444 .incbin "baserom.gba", 0x34F444, 0x1C -gMap_01_21:: @ 834F460 +SSAnne_2F_Room4:: @ 834F460 .incbin "baserom.gba", 0x34F460, 0x1C -gMap_01_22:: @ 834F47C +SSAnne_2F_Room5:: @ 834F47C .incbin "baserom.gba", 0x34F47C, 0x1C -gMap_01_23:: @ 834F498 +SSAnne_2F_Room6:: @ 834F498 .incbin "baserom.gba", 0x34F498, 0x1C -gMap_01_24:: @ 834F4B4 +SSAnne_B1F_Room1:: @ 834F4B4 .incbin "baserom.gba", 0x34F4B4, 0x1C -gMap_01_25:: @ 834F4D0 +SSAnne_B1F_Room2:: @ 834F4D0 .incbin "baserom.gba", 0x34F4D0, 0x1C -gMap_01_26:: @ 834F4EC +SSAnne_B1F_Room3:: @ 834F4EC .incbin "baserom.gba", 0x34F4EC, 0x1C -gMap_01_27:: @ 834F508 +SSAnne_B1F_Room4:: @ 834F508 .incbin "baserom.gba", 0x34F508, 0x1C -gMap_01_28:: @ 834F524 +SSAnne_B1F_Room5:: @ 834F524 .incbin "baserom.gba", 0x34F524, 0x1C -gMap_01_29:: @ 834F540 +SSAnne_1F_Room6:: @ 834F540 .incbin "baserom.gba", 0x34F540, 0x1C -gMap_01_30:: @ 834F55C +UndergroundPath_NorthEntrance:: @ 834F55C .incbin "baserom.gba", 0x34F55C, 0x1C -gMap_01_31:: @ 834F578 +UndergroundPath_NorthSouthTunnel:: @ 834F578 .incbin "baserom.gba", 0x34F578, 0x1C -gMap_01_32:: @ 834F594 +UndergroundPath_SouthEntrance:: @ 834F594 .incbin "baserom.gba", 0x34F594, 0x1C -gMap_01_33:: @ 834F5B0 +UndergroundPath_WestEntrance:: @ 834F5B0 .incbin "baserom.gba", 0x34F5B0, 0x1C -gMap_01_34:: @ 834F5CC +UndergroundPath_EastWestTunnel:: @ 834F5CC .incbin "baserom.gba", 0x34F5CC, 0x1C -gMap_01_35:: @ 834F5E8 +UndergroundPath_EastEntrance:: @ 834F5E8 .incbin "baserom.gba", 0x34F5E8, 0x1C -gMap_01_36:: @ 834F604 +DiglettsCave_NorthEntrance:: @ 834F604 .incbin "baserom.gba", 0x34F604, 0x1C -gMap_01_37:: @ 834F620 +DiglettsCave_B1F:: @ 834F620 .incbin "baserom.gba", 0x34F620, 0x1C -gMap_01_38:: @ 834F63C +DiglettsCave_SouthEntrance:: @ 834F63C .incbin "baserom.gba", 0x34F63C, 0x1C -gMap_01_39:: @ 834F658 +VictoryRoad_1F:: @ 834F658 .incbin "baserom.gba", 0x34F658, 0x1C -gMap_01_40:: @ 834F674 +VictoryRoad_2F:: @ 834F674 .incbin "baserom.gba", 0x34F674, 0x1C -gMap_01_41:: @ 834F690 +VictoryRoad_3F:: @ 834F690 .incbin "baserom.gba", 0x34F690, 0x1C -gMap_01_42:: @ 834F6AC +RocketHideout_B1F:: @ 834F6AC .incbin "baserom.gba", 0x34F6AC, 0x1C -gMap_01_43:: @ 834F6C8 +RocketHideout_B2F:: @ 834F6C8 .incbin "baserom.gba", 0x34F6C8, 0x1C -gMap_01_44:: @ 834F6E4 +RocketHideout_B3F:: @ 834F6E4 .incbin "baserom.gba", 0x34F6E4, 0x1C -gMap_01_45:: @ 834F700 +RocketHideout_B4F:: @ 834F700 .incbin "baserom.gba", 0x34F700, 0x1C -gMap_01_46:: @ 834F71C +RocketHideout_Elevator:: @ 834F71C .incbin "baserom.gba", 0x34F71C, 0x1C -gMap_01_47:: @ 834F738 +SilphCo_1F:: @ 834F738 .incbin "baserom.gba", 0x34F738, 0x1C -gMap_01_48:: @ 834F754 +SilphCo_2F:: @ 834F754 .incbin "baserom.gba", 0x34F754, 0x1C -gMap_01_49:: @ 834F770 +SilphCo_3F:: @ 834F770 .incbin "baserom.gba", 0x34F770, 0x1C -gMap_01_50:: @ 834F78C +SilphCo_4F:: @ 834F78C .incbin "baserom.gba", 0x34F78C, 0x1C -gMap_01_51:: @ 834F7A8 +SilphCo_5F:: @ 834F7A8 .incbin "baserom.gba", 0x34F7A8, 0x1C -gMap_01_52:: @ 834F7C4 +SilphCo_6F:: @ 834F7C4 .incbin "baserom.gba", 0x34F7C4, 0x1C -gMap_01_53:: @ 834F7E0 +SilphCo_7F:: @ 834F7E0 .incbin "baserom.gba", 0x34F7E0, 0x1C -gMap_01_54:: @ 834F7FC +SilphCo_8F:: @ 834F7FC .incbin "baserom.gba", 0x34F7FC, 0x1C -gMap_01_55:: @ 834F818 +SilphCo_9F:: @ 834F818 .incbin "baserom.gba", 0x34F818, 0x1C -gMap_01_56:: @ 834F834 +SilphCo_10F:: @ 834F834 .incbin "baserom.gba", 0x34F834, 0x1C -gMap_01_57:: @ 834F850 +SilphCo_11F:: @ 834F850 .incbin "baserom.gba", 0x34F850, 0x1C -gMap_01_58:: @ 834F86C +SilphCo_Elevator:: @ 834F86C .incbin "baserom.gba", 0x34F86C, 0x1C -gMap_01_59:: @ 834F888 +PokemonMansion_1F:: @ 834F888 .incbin "baserom.gba", 0x34F888, 0x1C -gMap_01_60:: @ 834F8A4 +PokemonMansion_2F:: @ 834F8A4 .incbin "baserom.gba", 0x34F8A4, 0x1C -gMap_01_61:: @ 834F8C0 +PokemonMansion_3F:: @ 834F8C0 .incbin "baserom.gba", 0x34F8C0, 0x1C -gMap_01_62:: @ 834F8DC +PokemonMansion_B1F:: @ 834F8DC .incbin "baserom.gba", 0x34F8DC, 0x1C -gMap_01_63:: @ 834F8F8 +SafariZone_Center:: @ 834F8F8 .incbin "baserom.gba", 0x34F8F8, 0x1C -gMap_01_64:: @ 834F914 +SafariZone_East:: @ 834F914 .incbin "baserom.gba", 0x34F914, 0x1C -gMap_01_65:: @ 834F930 +SafariZone_North:: @ 834F930 .incbin "baserom.gba", 0x34F930, 0x1C -gMap_01_66:: @ 834F94C +SafariZone_West:: @ 834F94C .incbin "baserom.gba", 0x34F94C, 0x1C -gMap_01_67:: @ 834F968 +SafariZone_Building1:: @ 834F968 .incbin "baserom.gba", 0x34F968, 0x1C -gMap_01_68:: @ 834F984 +SafariZone_Building2:: @ 834F984 .incbin "baserom.gba", 0x34F984, 0x1C -gMap_01_69:: @ 834F9A0 +SafariZone_Building3:: @ 834F9A0 .incbin "baserom.gba", 0x34F9A0, 0x1C -gMap_01_70:: @ 834F9BC +SafariZone_Building4:: @ 834F9BC .incbin "baserom.gba", 0x34F9BC, 0x1C -gMap_01_71:: @ 834F9D8 +SafariZone_SecretHouse:: @ 834F9D8 .incbin "baserom.gba", 0x34F9D8, 0x1C -gMap_01_72:: @ 834F9F4 +CeruleanCave_1F:: @ 834F9F4 .incbin "baserom.gba", 0x34F9F4, 0x1C -gMap_01_73:: @ 834FA10 +CeruleanCave_2F:: @ 834FA10 .incbin "baserom.gba", 0x34FA10, 0x1C -gMap_01_74:: @ 834FA2C +CeruleanCave_B1F:: @ 834FA2C .incbin "baserom.gba", 0x34FA2C, 0x1C -gMap_01_75:: @ 834FA48 +PokemonLeague_LoreleisRoom:: @ 834FA48 .incbin "baserom.gba", 0x34FA48, 0x1C -gMap_01_76:: @ 834FA64 +PokemonLeague_BrunosRoom:: @ 834FA64 .incbin "baserom.gba", 0x34FA64, 0x1C -gMap_01_77:: @ 834FA80 +PokemonLeague_AgathasRoom:: @ 834FA80 .incbin "baserom.gba", 0x34FA80, 0x1C -gMap_01_78:: @ 834FA9C +PokemonLeague_LancesRoom:: @ 834FA9C .incbin "baserom.gba", 0x34FA9C, 0x1C -gMap_01_79:: @ 834FAB8 +PokemonLeague_ChampionsRoom:: @ 834FAB8 .incbin "baserom.gba", 0x34FAB8, 0x1C -gMap_01_80:: @ 834FAD4 +PokemonLeague_HallOfFame:: @ 834FAD4 .incbin "baserom.gba", 0x34FAD4, 0x1C -gMap_01_81:: @ 834FAF0 +RockTunnel_1F:: @ 834FAF0 .incbin "baserom.gba", 0x34FAF0, 0x1C -gMap_01_82:: @ 834FB0C +RockTunnel_B1F:: @ 834FB0C .incbin "baserom.gba", 0x34FB0C, 0x1C -gMap_01_83:: @ 834FB28 +SeafoamIslands_1F:: @ 834FB28 .incbin "baserom.gba", 0x34FB28, 0x1C -gMap_01_84:: @ 834FB44 +SeafoamIslands_B1F:: @ 834FB44 .incbin "baserom.gba", 0x34FB44, 0x1C -gMap_01_85:: @ 834FB60 +SeafoamIslands_B2F:: @ 834FB60 .incbin "baserom.gba", 0x34FB60, 0x1C -gMap_01_86:: @ 834FB7C +SeafoamIslands_B3F:: @ 834FB7C .incbin "baserom.gba", 0x34FB7C, 0x1C -gMap_01_87:: @ 834FB98 +SeafoamIslands_B4F:: @ 834FB98 .incbin "baserom.gba", 0x34FB98, 0x1C -gMap_01_88:: @ 834FBB4 +PokemonTower_1F:: @ 834FBB4 .incbin "baserom.gba", 0x34FBB4, 0x1C -gMap_01_89:: @ 834FBD0 +PokemonTower_2F:: @ 834FBD0 .incbin "baserom.gba", 0x34FBD0, 0x1C -gMap_01_90:: @ 834FBEC +PokemonTower_3F:: @ 834FBEC .incbin "baserom.gba", 0x34FBEC, 0x1C -gMap_01_91:: @ 834FC08 +PokemonTower_4F:: @ 834FC08 .incbin "baserom.gba", 0x34FC08, 0x1C -gMap_01_92:: @ 834FC24 +PokemonTower_5F:: @ 834FC24 .incbin "baserom.gba", 0x34FC24, 0x1C -gMap_01_93:: @ 834FC40 +PokemonTower_6F:: @ 834FC40 .incbin "baserom.gba", 0x34FC40, 0x1C -gMap_01_94:: @ 834FC5C +PokemonTower_7F:: @ 834FC5C .incbin "baserom.gba", 0x34FC5C, 0x1C -gMap_01_95:: @ 834FC78 +PowerPlant:: @ 834FC78 .incbin "baserom.gba", 0x34FC78, 0x1C -gMap_01_96:: @ 834FC94 +MtEmber_RubyPath_B4F:: @ 834FC94 .incbin "baserom.gba", 0x34FC94, 0x1C -gMap_01_97:: @ 834FCB0 +MtEmber_Exterior:: @ 834FCB0 .incbin "baserom.gba", 0x34FCB0, 0x1C -gMap_01_98:: @ 834FCCC +MtEmber_SummitPath_1F:: @ 834FCCC .incbin "baserom.gba", 0x34FCCC, 0x1C -gMap_01_99:: @ 834FCE8 +MtEmber_SummitPath_2F:: @ 834FCE8 .incbin "baserom.gba", 0x34FCE8, 0x1C -gMap_01_100:: @ 834FD04 +MtEmber_SummitPath_3F:: @ 834FD04 .incbin "baserom.gba", 0x34FD04, 0x1C -gMap_01_101:: @ 834FD20 +MtEmber_Summit:: @ 834FD20 .incbin "baserom.gba", 0x34FD20, 0x1C -gMap_01_102:: @ 834FD3C +MtEmber_RubyPath_B5F:: @ 834FD3C .incbin "baserom.gba", 0x34FD3C, 0x1C -gMap_01_103:: @ 834FD58 +SSAnne_Kitchen3:: @ 834FD58 .incbin "baserom.gba", 0x34FD58, 0x1C -gMap_01_104:: @ 834FD74 +MtEmber_RubyPath_B1F:: @ 834FD74 .incbin "baserom.gba", 0x34FD74, 0x1C -gMap_01_105:: @ 834FD90 +MtEmber_RubyPath_B2F:: @ 834FD90 .incbin "baserom.gba", 0x34FD90, 0x1C -gMap_01_106:: @ 834FDAC +MtEmber_RubyPath_B3F:: @ 834FDAC .incbin "baserom.gba", 0x34FDAC, 0x1C -gMap_01_107:: @ 834FDC8 +MtEmber_RubyPath_B1F_Stairs:: @ 834FDC8 .incbin "baserom.gba", 0x34FDC8, 0x1C -gMap_01_108:: @ 834FDE4 +MtEmber_RubyPath_B2F_Stairs:: @ 834FDE4 .incbin "baserom.gba", 0x34FDE4, 0x1C -gMap_01_109:: @ 834FE00 +ThreeIsland_BerryForest:: @ 834FE00 .incbin "baserom.gba", 0x34FE00, 0x1C -gMap_01_110:: @ 834FE1C +FourIsland_IcefallCave_Entrance:: @ 834FE1C .incbin "baserom.gba", 0x34FE1C, 0x1C -gMap_01_111:: @ 834FE38 +FourIsland_IcefallCave_1F:: @ 834FE38 .incbin "baserom.gba", 0x34FE38, 0x1C -gMap_01_112:: @ 834FE54 +SSAnne_CaptainsOffice2:: @ 834FE54 .incbin "baserom.gba", 0x34FE54, 0x1C -gMap_01_113:: @ 834FE70 +SSAnne_CaptainsOffice3:: @ 834FE70 .incbin "baserom.gba", 0x34FE70, 0x1C -gMap_01_114:: @ 834FE8C +SSAnne_CaptainsOffice4:: @ 834FE8C .incbin "baserom.gba", 0x34FE8C, 0x1C -gMap_01_115:: @ 834FEA8 +SSAnne_CaptainsOffice5:: @ 834FEA8 .incbin "baserom.gba", 0x34FEA8, 0x1C -gMap_01_116:: @ 834FEC4 +SixIsland_DottedHole_B1F:: @ 834FEC4 .incbin "baserom.gba", 0x34FEC4, 0x1C -gMap_01_117:: @ 834FEE0 +SixIsland_DottedHole_B2F:: @ 834FEE0 .incbin "baserom.gba", 0x34FEE0, 0x1C -gMap_01_118:: @ 834FEFC +SixIsland_DottedHole_B3F:: @ 834FEFC .incbin "baserom.gba", 0x34FEFC, 0x1C -gMap_01_119:: @ 834FF18 +SSAnne_CaptainsOffice9:: @ 834FF18 .incbin "baserom.gba", 0x34FF18, 0x1C -gMap_01_120:: @ 834FF34 +SixIsland_DottedHole_SapphireRoom:: @ 834FF34 .incbin "baserom.gba", 0x34FF34, 0x1C -gMap_01_121:: @ 834FF50 +SSAnne_1F_Room11:: @ 834FF50 .incbin "baserom.gba", 0x34FF50, 0x1C -gMap_01_122:: @ 834FF6C +SSAnne_1F_Room12:: @ 834FF6C .incbin "baserom.gba", 0x34FF6C, 0x1C -gMap_02_00:: @ 834FF88 +NavelRock_Exterior:: @ 834FF88 .incbin "baserom.gba", 0x34FF88, 0x1C -gMap_02_01:: @ 834FFA4 +SevenIsland_TrainerTower_1F:: @ 834FFA4 .incbin "baserom.gba", 0x34FFA4, 0x1C -gMap_02_02:: @ 834FFC0 +SevenIsland_TrainerTower_2F:: @ 834FFC0 .incbin "baserom.gba", 0x34FFC0, 0x1C -gMap_02_03:: @ 834FFDC +SevenIsland_TrainerTower_3F:: @ 834FFDC .incbin "baserom.gba", 0x34FFDC, 0x1C -gMap_02_04:: @ 834FFF8 +SevenIsland_TrainerTower_4F:: @ 834FFF8 .incbin "baserom.gba", 0x34FFF8, 0x1C -gMap_02_05:: @ 8350014 +SevenIsland_TrainerTower_5F:: @ 8350014 .incbin "baserom.gba", 0x350014, 0x1C -gMap_02_06:: @ 8350030 +SevenIsland_TrainerTower_6F:: @ 8350030 .incbin "baserom.gba", 0x350030, 0x1C -gMap_02_07:: @ 835004C +SevenIsland_TrainerTower_7F:: @ 835004C .incbin "baserom.gba", 0x35004C, 0x1C -gMap_02_08:: @ 8350068 +SevenIsland_TrainerTower_8F:: @ 8350068 .incbin "baserom.gba", 0x350068, 0x1C -gMap_02_09:: @ 8350084 +SevenIsland_TrainerTower_Roof:: @ 8350084 .incbin "baserom.gba", 0x350084, 0x1C -gMap_02_10:: @ 83500A0 +SevenIsland_TrainerTower_Lobby:: @ 83500A0 .incbin "baserom.gba", 0x3500A0, 0x1C -gMap_02_11:: @ 83500BC +SevenIsland_TrainerTower_Elevator:: @ 83500BC .incbin "baserom.gba", 0x3500BC, 0x1C -gMap_02_12:: @ 83500D8 +FiveIsland_LostCave_Entrance:: @ 83500D8 .incbin "baserom.gba", 0x3500D8, 0x1C -gMap_02_13:: @ 83500F4 +FiveIsland_LostCave_Room1:: @ 83500F4 .incbin "baserom.gba", 0x3500F4, 0x1C -gMap_02_14:: @ 8350110 +FiveIsland_LostCave_Room2:: @ 8350110 .incbin "baserom.gba", 0x350110, 0x1C -gMap_02_15:: @ 835012C +FiveIsland_LostCave_Room3:: @ 835012C .incbin "baserom.gba", 0x35012C, 0x1C -gMap_02_16:: @ 8350148 +FiveIsland_LostCave_Room4:: @ 8350148 .incbin "baserom.gba", 0x350148, 0x1C -gMap_02_17:: @ 8350164 +FiveIsland_LostCave_Room5:: @ 8350164 .incbin "baserom.gba", 0x350164, 0x1C -gMap_02_18:: @ 8350180 +FiveIsland_LostCave_Room6:: @ 8350180 .incbin "baserom.gba", 0x350180, 0x1C -gMap_02_19:: @ 835019C +FiveIsland_LostCave_Room7:: @ 835019C .incbin "baserom.gba", 0x35019C, 0x1C -gMap_02_20:: @ 83501B8 +FiveIsland_LostCave_Room8:: @ 83501B8 .incbin "baserom.gba", 0x3501B8, 0x1C -gMap_02_21:: @ 83501D4 +FiveIsland_LostCave_Room9:: @ 83501D4 .incbin "baserom.gba", 0x3501D4, 0x1C -gMap_02_22:: @ 83501F0 +FiveIsland_LostCave_Room10:: @ 83501F0 .incbin "baserom.gba", 0x3501F0, 0x1C -gMap_02_23:: @ 835020C +FiveIsland_LostCave_Room11:: @ 835020C .incbin "baserom.gba", 0x35020C, 0x1C -gMap_02_24:: @ 8350228 +FiveIsland_LostCave_Room12:: @ 8350228 .incbin "baserom.gba", 0x350228, 0x1C -gMap_02_25:: @ 8350244 +FiveIsland_LostCave_Room13:: @ 8350244 .incbin "baserom.gba", 0x350244, 0x1C -gMap_02_26:: @ 8350260 +FiveIsland_LostCave_Room14:: @ 8350260 .incbin "baserom.gba", 0x350260, 0x1C -gMap_02_27:: @ 835027C +SevenIsland_TanobyRuins_MoneanChamber:: @ 835027C .incbin "baserom.gba", 0x35027C, 0x1C -gMap_02_28:: @ 8350298 +SevenIsland_TanobyRuins_LiptooChamber:: @ 8350298 .incbin "baserom.gba", 0x350298, 0x1C -gMap_02_29:: @ 83502B4 +SevenIsland_TanobyRuins_WeepthChamber:: @ 83502B4 .incbin "baserom.gba", 0x3502B4, 0x1C -gMap_02_30:: @ 83502D0 +SevenIsland_TanobyRuins_DilfordChamber:: @ 83502D0 .incbin "baserom.gba", 0x3502D0, 0x1C -gMap_02_31:: @ 83502EC +SevenIsland_TanobyRuins_ScufibChamber:: @ 83502EC .incbin "baserom.gba", 0x3502EC, 0x1C -gMap_02_32:: @ 8350308 +SevenIsland_TanobyRuins_RixyChamber:: @ 8350308 .incbin "baserom.gba", 0x350308, 0x1C -gMap_02_33:: @ 8350324 +SevenIsland_TanobyRuins_ViapoisChamber:: @ 8350324 .incbin "baserom.gba", 0x350324, 0x1C -gMap_02_34:: @ 8350340 +ThreeIsland_DunsparceTunnel:: @ 8350340 .incbin "baserom.gba", 0x350340, 0x1C -gMap_02_35:: @ 835035C +SevenIsland_SeavaultCanyon_TanobyKey:: @ 835035C .incbin "baserom.gba", 0x35035C, 0x1C -gMap_02_36:: @ 8350378 +NavelRock_1F:: @ 8350378 .incbin "baserom.gba", 0x350378, 0x1C -gMap_02_37:: @ 8350394 +NavelRock_Summit:: @ 8350394 .incbin "baserom.gba", 0x350394, 0x1C -gMap_02_38:: @ 83503B0 +NavelRock_Base:: @ 83503B0 .incbin "baserom.gba", 0x3503B0, 0x1C -gMap_02_39:: @ 83503CC +NavelRock_SummitPath_2F:: @ 83503CC .incbin "baserom.gba", 0x3503CC, 0x1C -gMap_02_40:: @ 83503E8 +NavelRock_SummitPath_3F:: @ 83503E8 .incbin "baserom.gba", 0x3503E8, 0x1C -gMap_02_41:: @ 8350404 +NavelRock_SummitPath_4F:: @ 8350404 .incbin "baserom.gba", 0x350404, 0x1C -gMap_02_42:: @ 8350420 +NavelRock_SummitPath_5F:: @ 8350420 .incbin "baserom.gba", 0x350420, 0x1C -gMap_02_43:: @ 835043C +NavelRock_BasePath_B1F:: @ 835043C .incbin "baserom.gba", 0x35043C, 0x1C -gMap_02_44:: @ 8350458 +NavelRock_BasePath_B2F:: @ 8350458 .incbin "baserom.gba", 0x350458, 0x1C -gMap_02_45:: @ 8350474 +NavelRock_BasePath_B3F:: @ 8350474 .incbin "baserom.gba", 0x350474, 0x1C -gMap_02_46:: @ 8350490 +NavelRock_BasePath_B4F:: @ 8350490 .incbin "baserom.gba", 0x350490, 0x1C -gMap_02_47:: @ 83504AC +NavelRock_BasePath_B5F:: @ 83504AC .incbin "baserom.gba", 0x3504AC, 0x1C -gMap_02_48:: @ 83504C8 +NavelRock_BasePath_B6F:: @ 83504C8 .incbin "baserom.gba", 0x3504C8, 0x1C -gMap_02_49:: @ 83504E4 +NavelRock_BasePath_B7F:: @ 83504E4 .incbin "baserom.gba", 0x3504E4, 0x1C -gMap_02_50:: @ 8350500 +NavelRock_BasePath_B8F:: @ 8350500 .incbin "baserom.gba", 0x350500, 0x1C -gMap_02_51:: @ 835051C +NavelRock_BasePath_B9F:: @ 835051C .incbin "baserom.gba", 0x35051C, 0x1C -gMap_02_52:: @ 8350538 +NavelRock_BasePath_B10F:: @ 8350538 .incbin "baserom.gba", 0x350538, 0x1C -gMap_02_53:: @ 8350554 +NavelRock_BasePath_B11F:: @ 8350554 .incbin "baserom.gba", 0x350554, 0x1C -gMap_02_54:: @ 8350570 +NavelRock_B1F:: @ 8350570 .incbin "baserom.gba", 0x350570, 0x1C -gMap_02_55:: @ 835058C +NavelRock_Fork:: @ 835058C .incbin "baserom.gba", 0x35058C, 0x1C -gMap_02_56:: @ 83505A8 +BirthIsland_Exterior:: @ 83505A8 .incbin "baserom.gba", 0x3505A8, 0x1C -gMap_02_57:: @ 83505C4 +OneIsland_KindleRoad_EmberSpa:: @ 83505C4 .incbin "baserom.gba", 0x3505C4, 0x1C -gMap_02_58:: @ 83505E0 +BirthIsland_Harbor:: @ 83505E0 .incbin "baserom.gba", 0x3505E0, 0x1C -gMap_02_59:: @ 83505FC +NavelRock_Harbor:: @ 83505FC .incbin "baserom.gba", 0x3505FC, 0x1C -gMap_03_00:: @ 8350618 +PalletTown:: @ 8350618 .incbin "baserom.gba", 0x350618, 0x1C -gMap_03_01:: @ 8350634 +ViridianCity:: @ 8350634 .incbin "baserom.gba", 0x350634, 0x1C -gMap_03_02:: @ 8350650 +PewterCity:: @ 8350650 .incbin "baserom.gba", 0x350650, 0x1C -gMap_03_03:: @ 835066C +CeruleanCity:: @ 835066C .incbin "baserom.gba", 0x35066C, 0x1C -gMap_03_04:: @ 8350688 +LavenderTown:: @ 8350688 .incbin "baserom.gba", 0x350688, 0x1C -gMap_03_05:: @ 83506A4 +VermilionCity:: @ 83506A4 .incbin "baserom.gba", 0x3506A4, 0x1C -gMap_03_06:: @ 83506C0 +CeladonCity:: @ 83506C0 .incbin "baserom.gba", 0x3506C0, 0x1C -gMap_03_07:: @ 83506DC +FuchsiaCity:: @ 83506DC .incbin "baserom.gba", 0x3506DC, 0x1C -gMap_03_08:: @ 83506F8 +CinnabarIsland:: @ 83506F8 .incbin "baserom.gba", 0x3506F8, 0x1C -gMap_03_09:: @ 8350714 +IndigoPlateau_Exterior:: @ 8350714 .incbin "baserom.gba", 0x350714, 0x1C -gMap_03_10:: @ 8350730 +SaffronCity:: @ 8350730 .incbin "baserom.gba", 0x350730, 0x1C -gMap_03_11:: @ 835074C +SaffronCity_Duplicate:: @ 835074C .incbin "baserom.gba", 0x35074C, 0x1C -gMap_03_12:: @ 8350768 +OneIsland:: @ 8350768 .incbin "baserom.gba", 0x350768, 0x1C -gMap_03_13:: @ 8350784 +TwoIsland:: @ 8350784 .incbin "baserom.gba", 0x350784, 0x1C -gMap_03_14:: @ 83507A0 +ThreeIsland:: @ 83507A0 .incbin "baserom.gba", 0x3507A0, 0x1C -gMap_03_15:: @ 83507BC +FourIsland:: @ 83507BC .incbin "baserom.gba", 0x3507BC, 0x1C -gMap_03_16:: @ 83507D8 +FiveIsland:: @ 83507D8 .incbin "baserom.gba", 0x3507D8, 0x1C -gMap_03_17:: @ 83507F4 +SevenIsland:: @ 83507F4 .incbin "baserom.gba", 0x3507F4, 0x1C -gMap_03_18:: @ 8350810 +SixIsland:: @ 8350810 .incbin "baserom.gba", 0x350810, 0x1C -gMap_03_19:: @ 835082C +Route1:: @ 835082C .incbin "baserom.gba", 0x35082C, 0x1C -gMap_03_20:: @ 8350848 +Route2:: @ 8350848 .incbin "baserom.gba", 0x350848, 0x1C -gMap_03_21:: @ 8350864 +Route3:: @ 8350864 .incbin "baserom.gba", 0x350864, 0x1C -gMap_03_22:: @ 8350880 +Route4:: @ 8350880 .incbin "baserom.gba", 0x350880, 0x1C -gMap_03_23:: @ 835089C +Route5:: @ 835089C .incbin "baserom.gba", 0x35089C, 0x1C -gMap_03_24:: @ 83508B8 +Route6:: @ 83508B8 .incbin "baserom.gba", 0x3508B8, 0x1C -gMap_03_25:: @ 83508D4 +Route7:: @ 83508D4 .incbin "baserom.gba", 0x3508D4, 0x1C -gMap_03_26:: @ 83508F0 +Route8:: @ 83508F0 .incbin "baserom.gba", 0x3508F0, 0x1C -gMap_03_27:: @ 835090C +Route9:: @ 835090C .incbin "baserom.gba", 0x35090C, 0x1C -gMap_03_28:: @ 8350928 +Route10:: @ 8350928 .incbin "baserom.gba", 0x350928, 0x1C -gMap_03_29:: @ 8350944 +Route11:: @ 8350944 .incbin "baserom.gba", 0x350944, 0x1C -gMap_03_30:: @ 8350960 +Route12:: @ 8350960 .incbin "baserom.gba", 0x350960, 0x1C -gMap_03_31:: @ 835097C +Route13:: @ 835097C .incbin "baserom.gba", 0x35097C, 0x1C -gMap_03_32:: @ 8350998 +Route14:: @ 8350998 .incbin "baserom.gba", 0x350998, 0x1C -gMap_03_33:: @ 83509B4 +Route15:: @ 83509B4 .incbin "baserom.gba", 0x3509B4, 0x1C -gMap_03_34:: @ 83509D0 +Route16:: @ 83509D0 .incbin "baserom.gba", 0x3509D0, 0x1C -gMap_03_35:: @ 83509EC +Route17:: @ 83509EC .incbin "baserom.gba", 0x3509EC, 0x1C -gMap_03_36:: @ 8350A08 +Route18:: @ 8350A08 .incbin "baserom.gba", 0x350A08, 0x1C -gMap_03_37:: @ 8350A24 +Route19:: @ 8350A24 .incbin "baserom.gba", 0x350A24, 0x1C -gMap_03_38:: @ 8350A40 +Route20:: @ 8350A40 .incbin "baserom.gba", 0x350A40, 0x1C -gMap_03_39:: @ 8350A5C +Route21_North:: @ 8350A5C .incbin "baserom.gba", 0x350A5C, 0x1C -gMap_03_40:: @ 8350A78 +Route21_South:: @ 8350A78 .incbin "baserom.gba", 0x350A78, 0x1C -gMap_03_41:: @ 8350A94 +Route22:: @ 8350A94 .incbin "baserom.gba", 0x350A94, 0x1C -gMap_03_42:: @ 8350AB0 +Route23:: @ 8350AB0 .incbin "baserom.gba", 0x350AB0, 0x1C -gMap_03_43:: @ 8350ACC +Route24:: @ 8350ACC .incbin "baserom.gba", 0x350ACC, 0x1C -gMap_03_44:: @ 8350AE8 +Route25:: @ 8350AE8 .incbin "baserom.gba", 0x350AE8, 0x1C -gMap_03_45:: @ 8350B04 +OneIsland_KindleRoad:: @ 8350B04 .incbin "baserom.gba", 0x350B04, 0x1C -gMap_03_46:: @ 8350B20 +OneIsland_TreasureBeach:: @ 8350B20 .incbin "baserom.gba", 0x350B20, 0x1C -gMap_03_47:: @ 8350B3C +TwoIsland_CapeBrink:: @ 8350B3C .incbin "baserom.gba", 0x350B3C, 0x1C -gMap_03_48:: @ 8350B58 +ThreeIsland_BondBridge:: @ 8350B58 .incbin "baserom.gba", 0x350B58, 0x1C -gMap_03_49:: @ 8350B74 +ThreeIsland_Port:: @ 8350B74 .incbin "baserom.gba", 0x350B74, 0x1C -gMap_03_50:: @ 8350B90 +UnknownMap_03_50:: @ 8350B90 .incbin "baserom.gba", 0x350B90, 0x1C -gMap_03_51:: @ 8350BAC +UnknownMap_03_51:: @ 8350BAC .incbin "baserom.gba", 0x350BAC, 0x1C -gMap_03_52:: @ 8350BC8 +UnknownMap_03_52:: @ 8350BC8 .incbin "baserom.gba", 0x350BC8, 0x1C -gMap_03_53:: @ 8350BE4 +UnknownMap_03_53:: @ 8350BE4 .incbin "baserom.gba", 0x350BE4, 0x1C -gMap_03_54:: @ 8350C00 +FiveIsland_ResortGorgeous:: @ 8350C00 .incbin "baserom.gba", 0x350C00, 0x1C -gMap_03_55:: @ 8350C1C +FiveIsland_WaterLabyrinth:: @ 8350C1C .incbin "baserom.gba", 0x350C1C, 0x1C -gMap_03_56:: @ 8350C38 +FiveIsland_Meadow:: @ 8350C38 .incbin "baserom.gba", 0x350C38, 0x1C -gMap_03_57:: @ 8350C54 +FiveIsland_MemorialPillar:: @ 8350C54 .incbin "baserom.gba", 0x350C54, 0x1C -gMap_03_58:: @ 8350C70 +SixIsland_OutcastIsland:: @ 8350C70 .incbin "baserom.gba", 0x350C70, 0x1C -gMap_03_59:: @ 8350C8C +SixIsland_GreenPath:: @ 8350C8C .incbin "baserom.gba", 0x350C8C, 0x1C -gMap_03_60:: @ 8350CA8 +SixIsland_WaterPath:: @ 8350CA8 .incbin "baserom.gba", 0x350CA8, 0x1C -gMap_03_61:: @ 8350CC4 +SixIsland_RuinValley:: @ 8350CC4 .incbin "baserom.gba", 0x350CC4, 0x1C -gMap_03_62:: @ 8350CE0 +SevenIsland_TrainerTower:: @ 8350CE0 .incbin "baserom.gba", 0x350CE0, 0x1C -gMap_03_63:: @ 8350CFC +SevenIsland_SevaultCanyon_Entrance:: @ 8350CFC .incbin "baserom.gba", 0x350CFC, 0x1C -gMap_03_64:: @ 8350D18 +SevenIsland_SevaultCanyon:: @ 8350D18 .incbin "baserom.gba", 0x350D18, 0x1C -gMap_03_65:: @ 8350D34 +SevenIsland_TanobyRuins:: @ 8350D34 .incbin "baserom.gba", 0x350D34, 0x1C -gMap_04_00:: @ 8350D50 +PalletTown_PlayersHouse_1F:: @ 8350D50 .incbin "baserom.gba", 0x350D50, 0x1C -gMap_04_01:: @ 8350D6C +PalletTown_PlayersHouse_2F:: @ 8350D6C .incbin "baserom.gba", 0x350D6C, 0x1C -gMap_04_02:: @ 8350D88 +PalletTown_GarysHouse:: @ 8350D88 .incbin "baserom.gba", 0x350D88, 0x1C -gMap_04_03:: @ 8350DA4 +PalletTown_ProfessorOaksLab:: @ 8350DA4 .incbin "baserom.gba", 0x350DA4, 0x1C -gMap_05_00:: @ 8350DC0 +ViridianCity_House1:: @ 8350DC0 .incbin "baserom.gba", 0x350DC0, 0x1C -gMap_05_01:: @ 8350DDC +ViridianCity_Gym:: @ 8350DDC .incbin "baserom.gba", 0x350DDC, 0x1C -gMap_05_02:: @ 8350DF8 +ViridianCity_House2:: @ 8350DF8 .incbin "baserom.gba", 0x350DF8, 0x1C -gMap_05_03:: @ 8350E14 +ViridianCity_Mart:: @ 8350E14 .incbin "baserom.gba", 0x350E14, 0x1C -gMap_05_04:: @ 8350E30 +ViridianCity_PokemonCenter_1F:: @ 8350E30 .incbin "baserom.gba", 0x350E30, 0x1C -gMap_05_05:: @ 8350E4C +ViridianCity_PokemonCenter_2F:: @ 8350E4C .incbin "baserom.gba", 0x350E4C, 0x1C -gMap_06_00:: @ 8350E68 +PewterCity_Museum_1F:: @ 8350E68 .incbin "baserom.gba", 0x350E68, 0x1C -gMap_06_01:: @ 8350E84 +PewterCity_Museum_2F:: @ 8350E84 .incbin "baserom.gba", 0x350E84, 0x1C -gMap_06_02:: @ 8350EA0 +PewterCity_Gym:: @ 8350EA0 .incbin "baserom.gba", 0x350EA0, 0x1C -gMap_06_03:: @ 8350EBC +PewterCity_Mart:: @ 8350EBC .incbin "baserom.gba", 0x350EBC, 0x1C -gMap_06_04:: @ 8350ED8 +PewterCity_House1:: @ 8350ED8 .incbin "baserom.gba", 0x350ED8, 0x1C -gMap_06_05:: @ 8350EF4 +PewterCity_PokemonCenter_1F:: @ 8350EF4 .incbin "baserom.gba", 0x350EF4, 0x1C -gMap_06_06:: @ 8350F10 +PewterCity_PokemonCenter_2F:: @ 8350F10 .incbin "baserom.gba", 0x350F10, 0x1C -gMap_06_07:: @ 8350F2C +PewterCity_House2:: @ 8350F2C .incbin "baserom.gba", 0x350F2C, 0x1C -gMap_07_00:: @ 8350F48 +CeruleanCity_House1:: @ 8350F48 .incbin "baserom.gba", 0x350F48, 0x1C -gMap_07_01:: @ 8350F64 +CeruleanCity_House2:: @ 8350F64 .incbin "baserom.gba", 0x350F64, 0x1C -gMap_07_02:: @ 8350F80 +CeruleanCity_House3:: @ 8350F80 .incbin "baserom.gba", 0x350F80, 0x1C -gMap_07_03:: @ 8350F9C +CeruleanCity_PokemonCenter_1F:: @ 8350F9C .incbin "baserom.gba", 0x350F9C, 0x1C -gMap_07_04:: @ 8350FB8 +CeruleanCity_PokemonCenter_2F:: @ 8350FB8 .incbin "baserom.gba", 0x350FB8, 0x1C -gMap_07_05:: @ 8350FD4 +CeruleanCity_Gym:: @ 8350FD4 .incbin "baserom.gba", 0x350FD4, 0x1C -gMap_07_06:: @ 8350FF0 +CeruleanCity_BikeShop:: @ 8350FF0 .incbin "baserom.gba", 0x350FF0, 0x1C -gMap_07_07:: @ 835100C +CeruleanCity_Mart:: @ 835100C .incbin "baserom.gba", 0x35100C, 0x1C -gMap_07_08:: @ 8351028 +CeruleanCity_House4:: @ 8351028 .incbin "baserom.gba", 0x351028, 0x1C -gMap_07_09:: @ 8351044 +CeruleanCity_House5:: @ 8351044 .incbin "baserom.gba", 0x351044, 0x1C -gMap_08_00:: @ 8351060 +LavenderTown_PokemonCenter_1F:: @ 8351060 .incbin "baserom.gba", 0x351060, 0x1C -gMap_08_01:: @ 835107C +LavenderTown_PokemonCenter_2F:: @ 835107C .incbin "baserom.gba", 0x35107C, 0x1C -gMap_08_02:: @ 8351098 +LavenderTown_VolunteerPokemonHouse:: @ 8351098 .incbin "baserom.gba", 0x351098, 0x1C -gMap_08_03:: @ 83510B4 +LavenderTown_House1:: @ 83510B4 .incbin "baserom.gba", 0x3510B4, 0x1C -gMap_08_04:: @ 83510D0 +LavenderTown_House2:: @ 83510D0 .incbin "baserom.gba", 0x3510D0, 0x1C -gMap_08_05:: @ 83510EC +LavenderTown_Mart:: @ 83510EC .incbin "baserom.gba", 0x3510EC, 0x1C -gMap_09_00:: @ 8351108 +VermilionCity_House1:: @ 8351108 .incbin "baserom.gba", 0x351108, 0x1C -gMap_09_01:: @ 8351124 +VermilionCity_PokemonCenter_1F:: @ 8351124 .incbin "baserom.gba", 0x351124, 0x1C -gMap_09_02:: @ 8351140 +VermilionCity_PokemonCenter_2F:: @ 8351140 .incbin "baserom.gba", 0x351140, 0x1C -gMap_09_03:: @ 835115C +VermilionCity_PokemonFanClub:: @ 835115C .incbin "baserom.gba", 0x35115C, 0x1C -gMap_09_04:: @ 8351178 +VermilionCity_House2:: @ 8351178 .incbin "baserom.gba", 0x351178, 0x1C -gMap_09_05:: @ 8351194 +VermilionCity_Mart:: @ 8351194 .incbin "baserom.gba", 0x351194, 0x1C -gMap_09_06:: @ 83511B0 +VermilionCity_Gym:: @ 83511B0 .incbin "baserom.gba", 0x3511B0, 0x1C -gMap_09_07:: @ 83511CC +VermilionCity_House3:: @ 83511CC .incbin "baserom.gba", 0x3511CC, 0x1C -gMap_10_00:: @ 83511E8 +CeladonCity_DepartmentStore_1F:: @ 83511E8 .incbin "baserom.gba", 0x3511E8, 0x1C -gMap_10_01:: @ 8351204 +CeladonCity_DepartmentStore_2F:: @ 8351204 .incbin "baserom.gba", 0x351204, 0x1C -gMap_10_02:: @ 8351220 +CeladonCity_DepartmentStore_3F:: @ 8351220 .incbin "baserom.gba", 0x351220, 0x1C -gMap_10_03:: @ 835123C +CeladonCity_DepartmentStore_4F:: @ 835123C .incbin "baserom.gba", 0x35123C, 0x1C -gMap_10_04:: @ 8351258 +CeladonCity_DepartmentStore_5F:: @ 8351258 .incbin "baserom.gba", 0x351258, 0x1C -gMap_10_05:: @ 8351274 +CeladonCity_DepartmentStore_Roof:: @ 8351274 .incbin "baserom.gba", 0x351274, 0x1C -gMap_10_06:: @ 8351290 +CeladonCity_DepartmentStore_Elevator:: @ 8351290 .incbin "baserom.gba", 0x351290, 0x1C -gMap_10_07:: @ 83512AC +CeladonCity_Condominiums_1F:: @ 83512AC .incbin "baserom.gba", 0x3512AC, 0x1C -gMap_10_08:: @ 83512C8 +CeladonCity_Condominiums_2F:: @ 83512C8 .incbin "baserom.gba", 0x3512C8, 0x1C -gMap_10_09:: @ 83512E4 +CeladonCity_Condominiums_3F:: @ 83512E4 .incbin "baserom.gba", 0x3512E4, 0x1C -gMap_10_10:: @ 8351300 +CeladonCity_Condominiums_Roof:: @ 8351300 .incbin "baserom.gba", 0x351300, 0x1C -gMap_10_11:: @ 835131C +CeladonCity_Condominiums_RoofRoom:: @ 835131C .incbin "baserom.gba", 0x35131C, 0x1C -gMap_10_12:: @ 8351338 +CeladonCity_PokemonCenter_1F:: @ 8351338 .incbin "baserom.gba", 0x351338, 0x1C -gMap_10_13:: @ 8351354 +CeladonCity_PokemonCenter_2F:: @ 8351354 .incbin "baserom.gba", 0x351354, 0x1C -gMap_10_14:: @ 8351370 +CeladonCity_GameCorner:: @ 8351370 .incbin "baserom.gba", 0x351370, 0x1C -gMap_10_15:: @ 835138C +CeladonCity_GameCorner_PrizeRoom:: @ 835138C .incbin "baserom.gba", 0x35138C, 0x1C -gMap_10_16:: @ 83513A8 +CeladonCity_Gym:: @ 83513A8 .incbin "baserom.gba", 0x3513A8, 0x1C -gMap_10_17:: @ 83513C4 +CeladonCity_Restaurant:: @ 83513C4 .incbin "baserom.gba", 0x3513C4, 0x1C -gMap_10_18:: @ 83513E0 +CeladonCity_House1:: @ 83513E0 .incbin "baserom.gba", 0x3513E0, 0x1C -gMap_10_19:: @ 83513FC +CeladonCity_Hotel:: @ 83513FC .incbin "baserom.gba", 0x3513FC, 0x1C -gMap_11_00:: @ 8351418 +FuchsiaCity_SafariZone_Entrance:: @ 8351418 .incbin "baserom.gba", 0x351418, 0x1C -gMap_11_01:: @ 8351434 +FuchsiaCity_Mart:: @ 8351434 .incbin "baserom.gba", 0x351434, 0x1C -gMap_11_02:: @ 8351450 +FuchsiaCity_ZooBuilding:: @ 8351450 .incbin "baserom.gba", 0x351450, 0x1C -gMap_11_03:: @ 835146C +FuchsiaCity_Gym:: @ 835146C .incbin "baserom.gba", 0x35146C, 0x1C -gMap_11_04:: @ 8351488 +FuchsiaCity_House1:: @ 8351488 .incbin "baserom.gba", 0x351488, 0x1C -gMap_11_05:: @ 83514A4 +FuchsiaCity_PokemonCenter_1F:: @ 83514A4 .incbin "baserom.gba", 0x3514A4, 0x1C -gMap_11_06:: @ 83514C0 +FuchsiaCity_PokemonCenter_2F:: @ 83514C0 .incbin "baserom.gba", 0x3514C0, 0x1C -gMap_11_07:: @ 83514DC +FuchsiaCity_Building1:: @ 83514DC .incbin "baserom.gba", 0x3514DC, 0x1C -gMap_11_08:: @ 83514F8 +FuchsiaCity_House2:: @ 83514F8 .incbin "baserom.gba", 0x3514F8, 0x1C -gMap_11_09:: @ 8351514 +FuchsiaCity_House3:: @ 8351514 .incbin "baserom.gba", 0x351514, 0x1C -gMap_12_00:: @ 8351530 +CinnabarIsland_Gym:: @ 8351530 .incbin "baserom.gba", 0x351530, 0x1C -gMap_12_01:: @ 835154C +CinnabarIsland_PokemonLab_Entrance:: @ 835154C .incbin "baserom.gba", 0x35154C, 0x1C -gMap_12_02:: @ 8351568 +CinnabarIsland_PokemonLab_Lounge:: @ 8351568 .incbin "baserom.gba", 0x351568, 0x1C -gMap_12_03:: @ 8351584 +CinnabarIsland_PokemonLab_ResearchRoom:: @ 8351584 .incbin "baserom.gba", 0x351584, 0x1C -gMap_12_04:: @ 83515A0 +CinnabarIsland_PokemonLab_ExperimentRoom:: @ 83515A0 .incbin "baserom.gba", 0x3515A0, 0x1C -gMap_12_05:: @ 83515BC +CinnabarIsland_PokemonCenter_1F:: @ 83515BC .incbin "baserom.gba", 0x3515BC, 0x1C -gMap_12_06:: @ 83515D8 +CinnabarIsland_PokemonCenter_2F:: @ 83515D8 .incbin "baserom.gba", 0x3515D8, 0x1C -gMap_12_07:: @ 83515F4 +CinnabarIsland_Mart:: @ 83515F4 .incbin "baserom.gba", 0x3515F4, 0x1C -gMap_13_00:: @ 8351610 +IndigoPlateau_PokemonCenter_1F:: @ 8351610 .incbin "baserom.gba", 0x351610, 0x1C -gMap_13_01:: @ 835162C +IndigoPlateau_PokemonCenter_2F:: @ 835162C .incbin "baserom.gba", 0x35162C, 0x1C -gMap_14_00:: @ 8351648 +SaffronCity_House1_1F:: @ 8351648 .incbin "baserom.gba", 0x351648, 0x1C -gMap_14_01:: @ 8351664 +SaffronCity_House1_2F:: @ 8351664 .incbin "baserom.gba", 0x351664, 0x1C -gMap_14_02:: @ 8351680 +SaffronCity_Dojo:: @ 8351680 .incbin "baserom.gba", 0x351680, 0x1C -gMap_14_03:: @ 835169C +SaffronCity_Gym:: @ 835169C .incbin "baserom.gba", 0x35169C, 0x1C -gMap_14_04:: @ 83516B8 +SaffronCity_House2:: @ 83516B8 .incbin "baserom.gba", 0x3516B8, 0x1C -gMap_14_05:: @ 83516D4 +SaffronCity_Mart:: @ 83516D4 .incbin "baserom.gba", 0x3516D4, 0x1C -gMap_14_06:: @ 83516F0 +SaffronCity_PokemonCenter_1F:: @ 83516F0 .incbin "baserom.gba", 0x3516F0, 0x1C -gMap_14_07:: @ 835170C +SaffronCity_PokemonCenter_2F:: @ 835170C .incbin "baserom.gba", 0x35170C, 0x1C -gMap_14_08:: @ 8351728 +SaffronCity_House3:: @ 8351728 .incbin "baserom.gba", 0x351728, 0x1C -gMap_14_09:: @ 8351744 +SaffronCity_PokemonTrainerFanClub:: @ 8351744 .incbin "baserom.gba", 0x351744, 0x1C -gMap_15_00:: @ 8351760 +Route2_ViridianForest_SouthEntrance:: @ 8351760 .incbin "baserom.gba", 0x351760, 0x1C -gMap_15_01:: @ 835177C +Route2_House:: @ 835177C .incbin "baserom.gba", 0x35177C, 0x1C -gMap_15_02:: @ 8351798 +Route2_EastBuilding:: @ 8351798 .incbin "baserom.gba", 0x351798, 0x1C -gMap_15_03:: @ 83517B4 +Route2_ViridianForest_NorthEntrance:: @ 83517B4 .incbin "baserom.gba", 0x3517B4, 0x1C -gMap_16_00:: @ 83517D0 +Route4_PokemonCenter_1F:: @ 83517D0 .incbin "baserom.gba", 0x3517D0, 0x1C -gMap_16_01:: @ 83517EC +Route4_PokemonCenter_2F:: @ 83517EC .incbin "baserom.gba", 0x3517EC, 0x1C -gMap_17_00:: @ 8351808 +Route5_PokemonDayCare:: @ 8351808 .incbin "baserom.gba", 0x351808, 0x1C -gMap_17_01:: @ 8351824 +Route5_SouthEntrance:: @ 8351824 .incbin "baserom.gba", 0x351824, 0x1C -gMap_18_00:: @ 8351840 +Route6_NorthEntrance:: @ 8351840 .incbin "baserom.gba", 0x351840, 0x1C -gMap_18_01:: @ 835185C +UnknownMap_18_01:: @ 835185C .incbin "baserom.gba", 0x35185C, 0x1C -gMap_19_00:: @ 8351878 +Route7_EastEntrance:: @ 8351878 .incbin "baserom.gba", 0x351878, 0x1C -gMap_20_00:: @ 8351894 +Route8_WestEntrance:: @ 8351894 .incbin "baserom.gba", 0x351894, 0x1C -gMap_21_00:: @ 83518B0 +Route10_PokemonCenter_1F:: @ 83518B0 .incbin "baserom.gba", 0x3518B0, 0x1C -gMap_21_01:: @ 83518CC +Route10_PokemonCenter_2F:: @ 83518CC .incbin "baserom.gba", 0x3518CC, 0x1C -gMap_22_00:: @ 83518E8 +Route11_EastEntrance_1F:: @ 83518E8 .incbin "baserom.gba", 0x3518E8, 0x1C -gMap_22_01:: @ 8351904 +Route11_EastEntrance_2F:: @ 8351904 .incbin "baserom.gba", 0x351904, 0x1C -gMap_23_00:: @ 8351920 +Route12_NorthEntrance_1F:: @ 8351920 .incbin "baserom.gba", 0x351920, 0x1C -gMap_23_01:: @ 835193C +Route12_NorthEntrance_2F:: @ 835193C .incbin "baserom.gba", 0x35193C, 0x1C -gMap_23_02:: @ 8351958 +Route12_FishingHouse:: @ 8351958 .incbin "baserom.gba", 0x351958, 0x1C -gMap_24_00:: @ 8351974 +Route15_WestEntrance_1F:: @ 8351974 .incbin "baserom.gba", 0x351974, 0x1C -gMap_24_01:: @ 8351990 +Route15_WestEntrance_2F:: @ 8351990 .incbin "baserom.gba", 0x351990, 0x1C -gMap_25_00:: @ 83519AC +Route16_House:: @ 83519AC .incbin "baserom.gba", 0x3519AC, 0x1C -gMap_25_01:: @ 83519C8 +Route16_NorthEntrance_1F:: @ 83519C8 .incbin "baserom.gba", 0x3519C8, 0x1C -gMap_25_02:: @ 83519E4 +Route16_NorthEntrance_2F:: @ 83519E4 .incbin "baserom.gba", 0x3519E4, 0x1C -gMap_26_00:: @ 8351A00 +Route18_EastEntrance_1F:: @ 8351A00 .incbin "baserom.gba", 0x351A00, 0x1C -gMap_26_01:: @ 8351A1C +Route18_EastEntrance_2F:: @ 8351A1C .incbin "baserom.gba", 0x351A1C, 0x1C -gMap_27_00:: @ 8351A38 +UnusedHouse_27_00:: @ 8351A38 .incbin "baserom.gba", 0x351A38, 0x1C -gMap_28_00:: @ 8351A54 +Route22_NorthEntrance:: @ 8351A54 .incbin "baserom.gba", 0x351A54, 0x1C -gMap_29_00:: @ 8351A70 +UnusedHouse_29_00:: @ 8351A70 .incbin "baserom.gba", 0x351A70, 0x1C -gMap_30_00:: @ 8351A8C +Route25_SeaCottage:: @ 8351A8C .incbin "baserom.gba", 0x351A8C, 0x1C -gMap_31_00:: @ 8351AA8 +SevenIsland_House_Room1:: @ 8351AA8 .incbin "baserom.gba", 0x351AA8, 0x1C -gMap_31_01:: @ 8351AC4 +SevenIsland_House_Room2:: @ 8351AC4 .incbin "baserom.gba", 0x351AC4, 0x1C -gMap_31_02:: @ 8351AE0 +SevenIsland_Mart:: @ 8351AE0 .incbin "baserom.gba", 0x351AE0, 0x1C -gMap_31_03:: @ 8351AFC +SevenIsland_PokemonCenter_1F:: @ 8351AFC .incbin "baserom.gba", 0x351AFC, 0x1C -gMap_31_04:: @ 8351B18 +SevenIsland_PokemonCenter_2F:: @ 8351B18 .incbin "baserom.gba", 0x351B18, 0x1C -gMap_31_05:: @ 8351B34 +UnusedHouse_31_05:: @ 8351B34 .incbin "baserom.gba", 0x351B34, 0x1C -gMap_31_06:: @ 8351B50 +SevenIsland_Harbor:: @ 8351B50 .incbin "baserom.gba", 0x351B50, 0x1C -gMap_32_00:: @ 8351B6C +OneIsland_PokemonCenter_1F:: @ 8351B6C .incbin "baserom.gba", 0x351B6C, 0x1C -gMap_32_01:: @ 8351B88 +OneIsland_PokemonCenter_2F:: @ 8351B88 .incbin "baserom.gba", 0x351B88, 0x1C -gMap_32_02:: @ 8351BA4 +OneIsland_House1:: @ 8351BA4 .incbin "baserom.gba", 0x351BA4, 0x1C -gMap_32_03:: @ 8351BC0 +OneIsland_House2:: @ 8351BC0 .incbin "baserom.gba", 0x351BC0, 0x1C -gMap_32_04:: @ 8351BDC +OneIsland_Harbor:: @ 8351BDC .incbin "baserom.gba", 0x351BDC, 0x1C -gMap_33_00:: @ 8351BF8 +TwoIsland_JoyfulGameCorner:: @ 8351BF8 .incbin "baserom.gba", 0x351BF8, 0x1C -gMap_33_01:: @ 8351C14 +TwoIsland_House:: @ 8351C14 .incbin "baserom.gba", 0x351C14, 0x1C -gMap_33_02:: @ 8351C30 +TwoIsland_PokemonCenter_1F:: @ 8351C30 .incbin "baserom.gba", 0x351C30, 0x1C -gMap_33_03:: @ 8351C4C +TwoIsland_PokemonCenter_2F:: @ 8351C4C .incbin "baserom.gba", 0x351C4C, 0x1C -gMap_33_04:: @ 8351C68 +TwoIsland_Harbor:: @ 8351C68 .incbin "baserom.gba", 0x351C68, 0x1C -gMap_34_00:: @ 8351C84 +ThreeIsland_House1:: @ 8351C84 .incbin "baserom.gba", 0x351C84, 0x1C -gMap_34_01:: @ 8351CA0 +ThreeIsland_PokemonCenter_1F:: @ 8351CA0 .incbin "baserom.gba", 0x351CA0, 0x1C -gMap_34_02:: @ 8351CBC +ThreeIsland_PokemonCenter_2F:: @ 8351CBC .incbin "baserom.gba", 0x351CBC, 0x1C -gMap_34_03:: @ 8351CD8 +ThreeIsland_Mart:: @ 8351CD8 .incbin "baserom.gba", 0x351CD8, 0x1C -gMap_34_04:: @ 8351CF4 +ThreeIsland_House2:: @ 8351CF4 .incbin "baserom.gba", 0x351CF4, 0x1C -gMap_34_05:: @ 8351D10 +ThreeIsland_House3:: @ 8351D10 .incbin "baserom.gba", 0x351D10, 0x1C -gMap_34_06:: @ 8351D2C +ThreeIsland_House4:: @ 8351D2C .incbin "baserom.gba", 0x351D2C, 0x1C -gMap_34_07:: @ 8351D48 +ThreeIsland_House5:: @ 8351D48 .incbin "baserom.gba", 0x351D48, 0x1C -gMap_35_00:: @ 8351D64 +FourIsland_PokemonDayCare:: @ 8351D64 .incbin "baserom.gba", 0x351D64, 0x1C -gMap_35_01:: @ 8351D80 +FourIsland_PokemonCenter_1F:: @ 8351D80 .incbin "baserom.gba", 0x351D80, 0x1C -gMap_35_02:: @ 8351D9C +FourIsland_PokemonCenter_2F:: @ 8351D9C .incbin "baserom.gba", 0x351D9C, 0x1C -gMap_35_03:: @ 8351DB8 +FourIsland_House1:: @ 8351DB8 .incbin "baserom.gba", 0x351DB8, 0x1C -gMap_35_04:: @ 8351DD4 +FourIsland_LoreleisHouse:: @ 8351DD4 .incbin "baserom.gba", 0x351DD4, 0x1C -gMap_35_05:: @ 8351DF0 +FourIsland_Harbor:: @ 8351DF0 .incbin "baserom.gba", 0x351DF0, 0x1C -gMap_35_06:: @ 8351E0C +FourIsland_House2:: @ 8351E0C .incbin "baserom.gba", 0x351E0C, 0x1C -gMap_35_07:: @ 8351E28 +FourIsland_Mart:: @ 8351E28 .incbin "baserom.gba", 0x351E28, 0x1C -gMap_36_00:: @ 8351E44 +FiveIsland_PokemonCenter_1F:: @ 8351E44 .incbin "baserom.gba", 0x351E44, 0x1C -gMap_36_01:: @ 8351E60 +FiveIsland_PokemonCenter_2F:: @ 8351E60 .incbin "baserom.gba", 0x351E60, 0x1C -gMap_36_02:: @ 8351E7C +FiveIsland_Harbor:: @ 8351E7C .incbin "baserom.gba", 0x351E7C, 0x1C -gMap_36_03:: @ 8351E98 +FiveIsland_House1:: @ 8351E98 .incbin "baserom.gba", 0x351E98, 0x1C -gMap_36_04:: @ 8351EB4 +FiveIsland_House2:: @ 8351EB4 .incbin "baserom.gba", 0x351EB4, 0x1C -gMap_37_00:: @ 8351ED0 +SixIsland_PokemonCenter_1F:: @ 8351ED0 .incbin "baserom.gba", 0x351ED0, 0x1C -gMap_37_01:: @ 8351EEC +SixIsland_PokemonCenter_2F:: @ 8351EEC .incbin "baserom.gba", 0x351EEC, 0x1C -gMap_37_02:: @ 8351F08 +SixIsland_Harbor:: @ 8351F08 .incbin "baserom.gba", 0x351F08, 0x1C -gMap_37_03:: @ 8351F24 +SixIsland_House:: @ 8351F24 .incbin "baserom.gba", 0x351F24, 0x1C -gMap_37_04:: @ 8351F40 +SixIsland_Mart:: @ 8351F40 .incbin "baserom.gba", 0x351F40, 0x1C -gMap_38_00:: @ 8351F5C +ThreeIsland_Harbor:: @ 8351F5C .incbin "baserom.gba", 0x351F5C, 0x1C -gMap_39_00:: @ 8351F78 +FiveIsland_ResortGorgeous_House:: @ 8351F78 .incbin "baserom.gba", 0x351F78, 0x1C -gMap_40_00:: @ 8351F94 +TwoIsland_CapeBrink_House:: @ 8351F94 .incbin "baserom.gba", 0x351F94, 0x1C -gMap_41_00:: @ 8351FB0 +SixIsland_WaterPath_House1:: @ 8351FB0 .incbin "baserom.gba", 0x351FB0, 0x1C -gMap_41_01:: @ 8351FCC +SixIsland_WaterPath_House2:: @ 8351FCC .incbin "baserom.gba", 0x351FCC, 0x1C -gMap_42_00:: @ 8351FE8 +SevenIsland_SevaultCanyon_House:: @ 8351FE8 .incbin "baserom.gba", 0x351FE8, 0x1C gMapGroup_00:: @ 8352004 - .4byte gMap_00_00 - .4byte gMap_00_01 - .4byte gMap_00_02 - .4byte gMap_00_03 - .4byte gMap_00_04 + .4byte UnknownMap_00_00 + .4byte UnknownMap_00_01 + .4byte UnknownMap_00_02 + .4byte UnknownMap_00_03 + .4byte UnknownMap_00_04 gMapGroup_01:: @ 8352018 - .4byte gMap_01_00 - .4byte gMap_01_01 - .4byte gMap_01_02 - .4byte gMap_01_03 - .4byte gMap_01_04 - .4byte gMap_01_05 - .4byte gMap_01_06 - .4byte gMap_01_07 - .4byte gMap_01_08 - .4byte gMap_01_09 - .4byte gMap_01_10 - .4byte gMap_01_11 - .4byte gMap_01_12 - .4byte gMap_01_13 - .4byte gMap_01_14 - .4byte gMap_01_15 - .4byte gMap_01_16 - .4byte gMap_01_17 - .4byte gMap_01_18 - .4byte gMap_01_19 - .4byte gMap_01_20 - .4byte gMap_01_21 - .4byte gMap_01_22 - .4byte gMap_01_23 - .4byte gMap_01_24 - .4byte gMap_01_25 - .4byte gMap_01_26 - .4byte gMap_01_27 - .4byte gMap_01_28 - .4byte gMap_01_29 - .4byte gMap_01_30 - .4byte gMap_01_31 - .4byte gMap_01_32 - .4byte gMap_01_33 - .4byte gMap_01_34 - .4byte gMap_01_35 - .4byte gMap_01_36 - .4byte gMap_01_37 - .4byte gMap_01_38 - .4byte gMap_01_39 - .4byte gMap_01_40 - .4byte gMap_01_41 - .4byte gMap_01_42 - .4byte gMap_01_43 - .4byte gMap_01_44 - .4byte gMap_01_45 - .4byte gMap_01_46 - .4byte gMap_01_47 - .4byte gMap_01_48 - .4byte gMap_01_49 - .4byte gMap_01_50 - .4byte gMap_01_51 - .4byte gMap_01_52 - .4byte gMap_01_53 - .4byte gMap_01_54 - .4byte gMap_01_55 - .4byte gMap_01_56 - .4byte gMap_01_57 - .4byte gMap_01_58 - .4byte gMap_01_59 - .4byte gMap_01_60 - .4byte gMap_01_61 - .4byte gMap_01_62 - .4byte gMap_01_63 - .4byte gMap_01_64 - .4byte gMap_01_65 - .4byte gMap_01_66 - .4byte gMap_01_67 - .4byte gMap_01_68 - .4byte gMap_01_69 - .4byte gMap_01_70 - .4byte gMap_01_71 - .4byte gMap_01_72 - .4byte gMap_01_73 - .4byte gMap_01_74 - .4byte gMap_01_75 - .4byte gMap_01_76 - .4byte gMap_01_77 - .4byte gMap_01_78 - .4byte gMap_01_79 - .4byte gMap_01_80 - .4byte gMap_01_81 - .4byte gMap_01_82 - .4byte gMap_01_83 - .4byte gMap_01_84 - .4byte gMap_01_85 - .4byte gMap_01_86 - .4byte gMap_01_87 - .4byte gMap_01_88 - .4byte gMap_01_89 - .4byte gMap_01_90 - .4byte gMap_01_91 - .4byte gMap_01_92 - .4byte gMap_01_93 - .4byte gMap_01_94 - .4byte gMap_01_95 - .4byte gMap_01_96 - .4byte gMap_01_97 - .4byte gMap_01_98 - .4byte gMap_01_99 - .4byte gMap_01_100 - .4byte gMap_01_101 - .4byte gMap_01_102 - .4byte gMap_01_103 - .4byte gMap_01_104 - .4byte gMap_01_105 - .4byte gMap_01_106 - .4byte gMap_01_107 - .4byte gMap_01_108 - .4byte gMap_01_109 - .4byte gMap_01_110 - .4byte gMap_01_111 - .4byte gMap_01_112 - .4byte gMap_01_113 - .4byte gMap_01_114 - .4byte gMap_01_115 - .4byte gMap_01_116 - .4byte gMap_01_117 - .4byte gMap_01_118 - .4byte gMap_01_119 - .4byte gMap_01_120 - .4byte gMap_01_121 - .4byte gMap_01_122 + .4byte ViridianForest + .4byte MtMoon_1F + .4byte MtMoon_B1F + .4byte MtMoon_B2F + .4byte SSAnne_Exterior + .4byte SSAnne_1F_Corridor + .4byte SSAnne_2F_Corridor + .4byte SSAnne_3F_Corridor + .4byte SSAnne_B1F_Corridor + .4byte SSAnne_Deck + .4byte SSAnne_Kitchen + .4byte SSAnne_CaptainsOffice + .4byte SSAnne_1F_Room1 + .4byte SSAnne_1F_Room2 + .4byte SSAnne_1F_Room3 + .4byte SSAnne_1F_Room4 + .4byte SSAnne_1F_Room5 + .4byte SSAnne_1F_Room7 + .4byte SSAnne_2F_Room1 + .4byte SSAnne_2F_Room2 + .4byte SSAnne_2F_Room3 + .4byte SSAnne_2F_Room4 + .4byte SSAnne_2F_Room5 + .4byte SSAnne_2F_Room6 + .4byte SSAnne_B1F_Room1 + .4byte SSAnne_B1F_Room2 + .4byte SSAnne_B1F_Room3 + .4byte SSAnne_B1F_Room4 + .4byte SSAnne_B1F_Room5 + .4byte SSAnne_1F_Room6 + .4byte UndergroundPath_NorthEntrance + .4byte UndergroundPath_NorthSouthTunnel + .4byte UndergroundPath_SouthEntrance + .4byte UndergroundPath_WestEntrance + .4byte UndergroundPath_EastWestTunnel + .4byte UndergroundPath_EastEntrance + .4byte DiglettsCave_NorthEntrance + .4byte DiglettsCave_B1F + .4byte DiglettsCave_SouthEntrance + .4byte VictoryRoad_1F + .4byte VictoryRoad_2F + .4byte VictoryRoad_3F + .4byte RocketHideout_B1F + .4byte RocketHideout_B2F + .4byte RocketHideout_B3F + .4byte RocketHideout_B4F + .4byte RocketHideout_Elevator + .4byte SilphCo_1F + .4byte SilphCo_2F + .4byte SilphCo_3F + .4byte SilphCo_4F + .4byte SilphCo_5F + .4byte SilphCo_6F + .4byte SilphCo_7F + .4byte SilphCo_8F + .4byte SilphCo_9F + .4byte SilphCo_10F + .4byte SilphCo_11F + .4byte SilphCo_Elevator + .4byte PokemonMansion_1F + .4byte PokemonMansion_2F + .4byte PokemonMansion_3F + .4byte PokemonMansion_B1F + .4byte SafariZone_Center + .4byte SafariZone_East + .4byte SafariZone_North + .4byte SafariZone_West + .4byte SafariZone_Building1 + .4byte SafariZone_Building2 + .4byte SafariZone_Building3 + .4byte SafariZone_Building4 + .4byte SafariZone_SecretHouse + .4byte CeruleanCave_1F + .4byte CeruleanCave_2F + .4byte CeruleanCave_B1F + .4byte PokemonLeague_LoreleisRoom + .4byte PokemonLeague_BrunosRoom + .4byte PokemonLeague_AgathasRoom + .4byte PokemonLeague_LancesRoom + .4byte PokemonLeague_ChampionsRoom + .4byte PokemonLeague_HallOfFame + .4byte RockTunnel_1F + .4byte RockTunnel_B1F + .4byte SeafoamIslands_1F + .4byte SeafoamIslands_B1F + .4byte SeafoamIslands_B2F + .4byte SeafoamIslands_B3F + .4byte SeafoamIslands_B4F + .4byte PokemonTower_1F + .4byte PokemonTower_2F + .4byte PokemonTower_3F + .4byte PokemonTower_4F + .4byte PokemonTower_5F + .4byte PokemonTower_6F + .4byte PokemonTower_7F + .4byte PowerPlant + .4byte MtEmber_RubyPath_B4F + .4byte MtEmber_Exterior + .4byte MtEmber_SummitPath_1F + .4byte MtEmber_SummitPath_2F + .4byte MtEmber_SummitPath_3F + .4byte MtEmber_Summit + .4byte MtEmber_RubyPath_B5F + .4byte SSAnne_Kitchen3 + .4byte MtEmber_RubyPath_B1F + .4byte MtEmber_RubyPath_B2F + .4byte MtEmber_RubyPath_B3F + .4byte MtEmber_RubyPath_B1F_Stairs + .4byte MtEmber_RubyPath_B2F_Stairs + .4byte ThreeIsland_BerryForest + .4byte FourIsland_IcefallCave_Entrance + .4byte FourIsland_IcefallCave_1F + .4byte SSAnne_CaptainsOffice2 + .4byte SSAnne_CaptainsOffice3 + .4byte SSAnne_CaptainsOffice4 + .4byte SSAnne_CaptainsOffice5 + .4byte SixIsland_DottedHole_B1F + .4byte SixIsland_DottedHole_B2F + .4byte SixIsland_DottedHole_B3F + .4byte SSAnne_CaptainsOffice9 + .4byte SixIsland_DottedHole_SapphireRoom + .4byte SSAnne_1F_Room11 + .4byte SSAnne_1F_Room12 gMapGroup_02:: @ 8352204 - .4byte gMap_02_00 - .4byte gMap_02_01 - .4byte gMap_02_02 - .4byte gMap_02_03 - .4byte gMap_02_04 - .4byte gMap_02_05 - .4byte gMap_02_06 - .4byte gMap_02_07 - .4byte gMap_02_08 - .4byte gMap_02_09 - .4byte gMap_02_10 - .4byte gMap_02_11 - .4byte gMap_02_12 - .4byte gMap_02_13 - .4byte gMap_02_14 - .4byte gMap_02_15 - .4byte gMap_02_16 - .4byte gMap_02_17 - .4byte gMap_02_18 - .4byte gMap_02_19 - .4byte gMap_02_20 - .4byte gMap_02_21 - .4byte gMap_02_22 - .4byte gMap_02_23 - .4byte gMap_02_24 - .4byte gMap_02_25 - .4byte gMap_02_26 - .4byte gMap_02_27 - .4byte gMap_02_28 - .4byte gMap_02_29 - .4byte gMap_02_30 - .4byte gMap_02_31 - .4byte gMap_02_32 - .4byte gMap_02_33 - .4byte gMap_02_34 - .4byte gMap_02_35 - .4byte gMap_02_36 - .4byte gMap_02_37 - .4byte gMap_02_38 - .4byte gMap_02_39 - .4byte gMap_02_40 - .4byte gMap_02_41 - .4byte gMap_02_42 - .4byte gMap_02_43 - .4byte gMap_02_44 - .4byte gMap_02_45 - .4byte gMap_02_46 - .4byte gMap_02_47 - .4byte gMap_02_48 - .4byte gMap_02_49 - .4byte gMap_02_50 - .4byte gMap_02_51 - .4byte gMap_02_52 - .4byte gMap_02_53 - .4byte gMap_02_54 - .4byte gMap_02_55 - .4byte gMap_02_56 - .4byte gMap_02_57 - .4byte gMap_02_58 - .4byte gMap_02_59 + .4byte NavelRock_Exterior + .4byte SevenIsland_TrainerTower_1F + .4byte SevenIsland_TrainerTower_2F + .4byte SevenIsland_TrainerTower_3F + .4byte SevenIsland_TrainerTower_4F + .4byte SevenIsland_TrainerTower_5F + .4byte SevenIsland_TrainerTower_6F + .4byte SevenIsland_TrainerTower_7F + .4byte SevenIsland_TrainerTower_8F + .4byte SevenIsland_TrainerTower_Roof + .4byte SevenIsland_TrainerTower_Lobby + .4byte SevenIsland_TrainerTower_Elevator + .4byte FiveIsland_LostCave_Entrance + .4byte FiveIsland_LostCave_Room1 + .4byte FiveIsland_LostCave_Room2 + .4byte FiveIsland_LostCave_Room3 + .4byte FiveIsland_LostCave_Room4 + .4byte FiveIsland_LostCave_Room5 + .4byte FiveIsland_LostCave_Room6 + .4byte FiveIsland_LostCave_Room7 + .4byte FiveIsland_LostCave_Room8 + .4byte FiveIsland_LostCave_Room9 + .4byte FiveIsland_LostCave_Room10 + .4byte FiveIsland_LostCave_Room11 + .4byte FiveIsland_LostCave_Room12 + .4byte FiveIsland_LostCave_Room13 + .4byte FiveIsland_LostCave_Room14 + .4byte SevenIsland_TanobyRuins_MoneanChamber + .4byte SevenIsland_TanobyRuins_LiptooChamber + .4byte SevenIsland_TanobyRuins_WeepthChamber + .4byte SevenIsland_TanobyRuins_DilfordChamber + .4byte SevenIsland_TanobyRuins_ScufibChamber + .4byte SevenIsland_TanobyRuins_RixyChamber + .4byte SevenIsland_TanobyRuins_ViapoisChamber + .4byte ThreeIsland_DunsparceTunnel + .4byte SevenIsland_SeavaultCanyon_TanobyKey + .4byte NavelRock_1F + .4byte NavelRock_Summit + .4byte NavelRock_Base + .4byte NavelRock_SummitPath_2F + .4byte NavelRock_SummitPath_3F + .4byte NavelRock_SummitPath_4F + .4byte NavelRock_SummitPath_5F + .4byte NavelRock_BasePath_B1F + .4byte NavelRock_BasePath_B2F + .4byte NavelRock_BasePath_B3F + .4byte NavelRock_BasePath_B4F + .4byte NavelRock_BasePath_B5F + .4byte NavelRock_BasePath_B6F + .4byte NavelRock_BasePath_B7F + .4byte NavelRock_BasePath_B8F + .4byte NavelRock_BasePath_B9F + .4byte NavelRock_BasePath_B10F + .4byte NavelRock_BasePath_B11F + .4byte NavelRock_B1F + .4byte NavelRock_Fork + .4byte BirthIsland_Exterior + .4byte OneIsland_KindleRoad_EmberSpa + .4byte BirthIsland_Harbor + .4byte NavelRock_Harbor gMapGroup_03:: @ 83522F4 - .4byte gMap_03_00 - .4byte gMap_03_01 - .4byte gMap_03_02 - .4byte gMap_03_03 - .4byte gMap_03_04 - .4byte gMap_03_05 - .4byte gMap_03_06 - .4byte gMap_03_07 - .4byte gMap_03_08 - .4byte gMap_03_09 - .4byte gMap_03_10 - .4byte gMap_03_11 - .4byte gMap_03_12 - .4byte gMap_03_13 - .4byte gMap_03_14 - .4byte gMap_03_15 - .4byte gMap_03_16 - .4byte gMap_03_17 - .4byte gMap_03_18 - .4byte gMap_03_19 - .4byte gMap_03_20 - .4byte gMap_03_21 - .4byte gMap_03_22 - .4byte gMap_03_23 - .4byte gMap_03_24 - .4byte gMap_03_25 - .4byte gMap_03_26 - .4byte gMap_03_27 - .4byte gMap_03_28 - .4byte gMap_03_29 - .4byte gMap_03_30 - .4byte gMap_03_31 - .4byte gMap_03_32 - .4byte gMap_03_33 - .4byte gMap_03_34 - .4byte gMap_03_35 - .4byte gMap_03_36 - .4byte gMap_03_37 - .4byte gMap_03_38 - .4byte gMap_03_39 - .4byte gMap_03_40 - .4byte gMap_03_41 - .4byte gMap_03_42 - .4byte gMap_03_43 - .4byte gMap_03_44 - .4byte gMap_03_45 - .4byte gMap_03_46 - .4byte gMap_03_47 - .4byte gMap_03_48 - .4byte gMap_03_49 - .4byte gMap_03_50 - .4byte gMap_03_51 - .4byte gMap_03_52 - .4byte gMap_03_53 - .4byte gMap_03_54 - .4byte gMap_03_55 - .4byte gMap_03_56 - .4byte gMap_03_57 - .4byte gMap_03_58 - .4byte gMap_03_59 - .4byte gMap_03_60 - .4byte gMap_03_61 - .4byte gMap_03_62 - .4byte gMap_03_63 - .4byte gMap_03_64 - .4byte gMap_03_65 + .4byte PalletTown + .4byte ViridianCity + .4byte PewterCity + .4byte CeruleanCity + .4byte LavenderTown + .4byte VermilionCity + .4byte CeladonCity + .4byte FuchsiaCity + .4byte CinnabarIsland + .4byte IndigoPlateau_Exterior + .4byte SaffronCity + .4byte SaffronCity_Duplicate + .4byte OneIsland + .4byte TwoIsland + .4byte ThreeIsland + .4byte FourIsland + .4byte FiveIsland + .4byte SevenIsland + .4byte SixIsland + .4byte Route1 + .4byte Route2 + .4byte Route3 + .4byte Route4 + .4byte Route5 + .4byte Route6 + .4byte Route7 + .4byte Route8 + .4byte Route9 + .4byte Route10 + .4byte Route11 + .4byte Route12 + .4byte Route13 + .4byte Route14 + .4byte Route15 + .4byte Route16 + .4byte Route17 + .4byte Route18 + .4byte Route19 + .4byte Route20 + .4byte Route21_North + .4byte Route21_South + .4byte Route22 + .4byte Route23 + .4byte Route24 + .4byte Route25 + .4byte OneIsland_KindleRoad + .4byte OneIsland_TreasureBeach + .4byte TwoIsland_CapeBrink + .4byte ThreeIsland_BondBridge + .4byte ThreeIsland_Port + .4byte UnknownMap_03_50 + .4byte UnknownMap_03_51 + .4byte UnknownMap_03_52 + .4byte UnknownMap_03_53 + .4byte FiveIsland_ResortGorgeous + .4byte FiveIsland_WaterLabyrinth + .4byte FiveIsland_Meadow + .4byte FiveIsland_MemorialPillar + .4byte SixIsland_OutcastIsland + .4byte SixIsland_GreenPath + .4byte SixIsland_WaterPath + .4byte SixIsland_RuinValley + .4byte SevenIsland_TrainerTower + .4byte SevenIsland_SevaultCanyon_Entrance + .4byte SevenIsland_SevaultCanyon + .4byte SevenIsland_TanobyRuins gMapGroup_04:: @ 83523FC - .4byte gMap_04_00 - .4byte gMap_04_01 - .4byte gMap_04_02 - .4byte gMap_04_03 + .4byte PalletTown_PlayersHouse_1F + .4byte PalletTown_PlayersHouse_2F + .4byte PalletTown_GarysHouse + .4byte PalletTown_ProfessorOaksLab gMapGroup_05:: @ 835240C - .4byte gMap_05_00 - .4byte gMap_05_01 - .4byte gMap_05_02 - .4byte gMap_05_03 - .4byte gMap_05_04 - .4byte gMap_05_05 + .4byte ViridianCity_House1 + .4byte ViridianCity_Gym + .4byte ViridianCity_House2 + .4byte ViridianCity_Mart + .4byte ViridianCity_PokemonCenter_1F + .4byte ViridianCity_PokemonCenter_2F gMapGroup_06:: @ 8352424 - .4byte gMap_06_00 - .4byte gMap_06_01 - .4byte gMap_06_02 - .4byte gMap_06_03 - .4byte gMap_06_04 - .4byte gMap_06_05 - .4byte gMap_06_06 - .4byte gMap_06_07 + .4byte PewterCity_Museum_1F + .4byte PewterCity_Museum_2F + .4byte PewterCity_Gym + .4byte PewterCity_Mart + .4byte PewterCity_House1 + .4byte PewterCity_PokemonCenter_1F + .4byte PewterCity_PokemonCenter_2F + .4byte PewterCity_House2 gMapGroup_07:: @ 8352444 - .4byte gMap_07_00 - .4byte gMap_07_01 - .4byte gMap_07_02 - .4byte gMap_07_03 - .4byte gMap_07_04 - .4byte gMap_07_05 - .4byte gMap_07_06 - .4byte gMap_07_07 - .4byte gMap_07_08 - .4byte gMap_07_09 + .4byte CeruleanCity_House1 + .4byte CeruleanCity_House2 + .4byte CeruleanCity_House3 + .4byte CeruleanCity_PokemonCenter_1F + .4byte CeruleanCity_PokemonCenter_2F + .4byte CeruleanCity_Gym + .4byte CeruleanCity_BikeShop + .4byte CeruleanCity_Mart + .4byte CeruleanCity_House4 + .4byte CeruleanCity_House5 gMapGroup_08:: @ 835246C - .4byte gMap_08_00 - .4byte gMap_08_01 - .4byte gMap_08_02 - .4byte gMap_08_03 - .4byte gMap_08_04 - .4byte gMap_08_05 + .4byte LavenderTown_PokemonCenter_1F + .4byte LavenderTown_PokemonCenter_2F + .4byte LavenderTown_VolunteerPokemonHouse + .4byte LavenderTown_House1 + .4byte LavenderTown_House2 + .4byte LavenderTown_Mart gMapGroup_09:: @ 8352484 - .4byte gMap_09_00 - .4byte gMap_09_01 - .4byte gMap_09_02 - .4byte gMap_09_03 - .4byte gMap_09_04 - .4byte gMap_09_05 - .4byte gMap_09_06 - .4byte gMap_09_07 + .4byte VermilionCity_House1 + .4byte VermilionCity_PokemonCenter_1F + .4byte VermilionCity_PokemonCenter_2F + .4byte VermilionCity_PokemonFanClub + .4byte VermilionCity_House2 + .4byte VermilionCity_Mart + .4byte VermilionCity_Gym + .4byte VermilionCity_House3 gMapGroup_10:: @ 83524A4 - .4byte gMap_10_00 - .4byte gMap_10_01 - .4byte gMap_10_02 - .4byte gMap_10_03 - .4byte gMap_10_04 - .4byte gMap_10_05 - .4byte gMap_10_06 - .4byte gMap_10_07 - .4byte gMap_10_08 - .4byte gMap_10_09 - .4byte gMap_10_10 - .4byte gMap_10_11 - .4byte gMap_10_12 - .4byte gMap_10_13 - .4byte gMap_10_14 - .4byte gMap_10_15 - .4byte gMap_10_16 - .4byte gMap_10_17 - .4byte gMap_10_18 - .4byte gMap_10_19 + .4byte CeladonCity_DepartmentStore_1F + .4byte CeladonCity_DepartmentStore_2F + .4byte CeladonCity_DepartmentStore_3F + .4byte CeladonCity_DepartmentStore_4F + .4byte CeladonCity_DepartmentStore_5F + .4byte CeladonCity_DepartmentStore_Roof + .4byte CeladonCity_DepartmentStore_Elevator + .4byte CeladonCity_Condominiums_1F + .4byte CeladonCity_Condominiums_2F + .4byte CeladonCity_Condominiums_3F + .4byte CeladonCity_Condominiums_Roof + .4byte CeladonCity_Condominiums_RoofRoom + .4byte CeladonCity_PokemonCenter_1F + .4byte CeladonCity_PokemonCenter_2F + .4byte CeladonCity_GameCorner + .4byte CeladonCity_GameCorner_PrizeRoom + .4byte CeladonCity_Gym + .4byte CeladonCity_Restaurant + .4byte CeladonCity_House1 + .4byte CeladonCity_Hotel gMapGroup_11:: @ 83524F4 - .4byte gMap_11_00 - .4byte gMap_11_01 - .4byte gMap_11_02 - .4byte gMap_11_03 - .4byte gMap_11_04 - .4byte gMap_11_05 - .4byte gMap_11_06 - .4byte gMap_11_07 - .4byte gMap_11_08 - .4byte gMap_11_09 + .4byte FuchsiaCity_SafariZone_Entrance + .4byte FuchsiaCity_Mart + .4byte FuchsiaCity_ZooBuilding + .4byte FuchsiaCity_Gym + .4byte FuchsiaCity_House1 + .4byte FuchsiaCity_PokemonCenter_1F + .4byte FuchsiaCity_PokemonCenter_2F + .4byte FuchsiaCity_Building1 + .4byte FuchsiaCity_House2 + .4byte FuchsiaCity_House3 gMapGroup_12:: @ 835251C - .4byte gMap_12_00 - .4byte gMap_12_01 - .4byte gMap_12_02 - .4byte gMap_12_03 - .4byte gMap_12_04 - .4byte gMap_12_05 - .4byte gMap_12_06 - .4byte gMap_12_07 + .4byte CinnabarIsland_Gym + .4byte CinnabarIsland_PokemonLab_Entrance + .4byte CinnabarIsland_PokemonLab_Lounge + .4byte CinnabarIsland_PokemonLab_ResearchRoom + .4byte CinnabarIsland_PokemonLab_ExperimentRoom + .4byte CinnabarIsland_PokemonCenter_1F + .4byte CinnabarIsland_PokemonCenter_2F + .4byte CinnabarIsland_Mart gMapGroup_13:: @ 835253C - .4byte gMap_13_00 - .4byte gMap_13_01 + .4byte IndigoPlateau_PokemonCenter_1F + .4byte IndigoPlateau_PokemonCenter_2F gMapGroup_14:: @ 8352544 - .4byte gMap_14_00 - .4byte gMap_14_01 - .4byte gMap_14_02 - .4byte gMap_14_03 - .4byte gMap_14_04 - .4byte gMap_14_05 - .4byte gMap_14_06 - .4byte gMap_14_07 - .4byte gMap_14_08 - .4byte gMap_14_09 + .4byte SaffronCity_House1_1F + .4byte SaffronCity_House1_2F + .4byte SaffronCity_Dojo + .4byte SaffronCity_Gym + .4byte SaffronCity_House2 + .4byte SaffronCity_Mart + .4byte SaffronCity_PokemonCenter_1F + .4byte SaffronCity_PokemonCenter_2F + .4byte SaffronCity_House3 + .4byte SaffronCity_PokemonTrainerFanClub gMapGroup_15:: @ 835256C - .4byte gMap_15_00 - .4byte gMap_15_01 - .4byte gMap_15_02 - .4byte gMap_15_03 + .4byte Route2_ViridianForest_SouthEntrance + .4byte Route2_House + .4byte Route2_EastBuilding + .4byte Route2_ViridianForest_NorthEntrance gMapGroup_16:: @ 835257C - .4byte gMap_16_00 - .4byte gMap_16_01 + .4byte Route4_PokemonCenter_1F + .4byte Route4_PokemonCenter_2F gMapGroup_17:: @ 8352584 - .4byte gMap_17_00 - .4byte gMap_17_01 + .4byte Route5_PokemonDayCare + .4byte Route5_SouthEntrance gMapGroup_18:: @ 835258C - .4byte gMap_18_00 - .4byte gMap_18_01 + .4byte Route6_NorthEntrance + .4byte UnknownMap_18_01 gMapGroup_19:: @ 8352594 - .4byte gMap_19_00 + .4byte Route7_EastEntrance gMapGroup_20:: @ 8352598 - .4byte gMap_20_00 + .4byte Route8_WestEntrance gMapGroup_21:: @ 835259C - .4byte gMap_21_00 - .4byte gMap_21_01 + .4byte Route10_PokemonCenter_1F + .4byte Route10_PokemonCenter_2F gMapGroup_22:: @ 83525A4 - .4byte gMap_22_00 - .4byte gMap_22_01 + .4byte Route11_EastEntrance_1F + .4byte Route11_EastEntrance_2F gMapGroup_23:: @ 83525AC - .4byte gMap_23_00 - .4byte gMap_23_01 - .4byte gMap_23_02 + .4byte Route12_NorthEntrance_1F + .4byte Route12_NorthEntrance_2F + .4byte Route12_FishingHouse gMapGroup_24:: @ 83525B8 - .4byte gMap_24_00 - .4byte gMap_24_01 + .4byte Route15_WestEntrance_1F + .4byte Route15_WestEntrance_2F gMapGroup_25:: @ 83525C0 - .4byte gMap_25_00 - .4byte gMap_25_01 - .4byte gMap_25_02 + .4byte Route16_House + .4byte Route16_NorthEntrance_1F + .4byte Route16_NorthEntrance_2F gMapGroup_26:: @ 83525CC - .4byte gMap_26_00 - .4byte gMap_26_01 + .4byte Route18_EastEntrance_1F + .4byte Route18_EastEntrance_2F gMapGroup_27:: @ 83525D4 - .4byte gMap_27_00 + .4byte UnusedHouse_27_00 gMapGroup_28:: @ 83525D8 - .4byte gMap_28_00 + .4byte Route22_NorthEntrance gMapGroup_29:: @ 83525DC - .4byte gMap_29_00 + .4byte UnusedHouse_29_00 gMapGroup_30:: @ 83525E0 - .4byte gMap_30_00 + .4byte Route25_SeaCottage gMapGroup_31:: @ 83525E4 - .4byte gMap_31_00 - .4byte gMap_31_01 - .4byte gMap_31_02 - .4byte gMap_31_03 - .4byte gMap_31_04 - .4byte gMap_31_05 - .4byte gMap_31_06 + .4byte SevenIsland_House_Room1 + .4byte SevenIsland_House_Room2 + .4byte SevenIsland_Mart + .4byte SevenIsland_PokemonCenter_1F + .4byte SevenIsland_PokemonCenter_2F + .4byte UnusedHouse_31_05 + .4byte SevenIsland_Harbor gMapGroup_32:: @ 8352600 - .4byte gMap_32_00 - .4byte gMap_32_01 - .4byte gMap_32_02 - .4byte gMap_32_03 - .4byte gMap_32_04 + .4byte OneIsland_PokemonCenter_1F + .4byte OneIsland_PokemonCenter_2F + .4byte OneIsland_House1 + .4byte OneIsland_House2 + .4byte OneIsland_Harbor gMapGroup_33:: @ 8352614 - .4byte gMap_33_00 - .4byte gMap_33_01 - .4byte gMap_33_02 - .4byte gMap_33_03 - .4byte gMap_33_04 + .4byte TwoIsland_JoyfulGameCorner + .4byte TwoIsland_House + .4byte TwoIsland_PokemonCenter_1F + .4byte TwoIsland_PokemonCenter_2F + .4byte TwoIsland_Harbor gMapGroup_34:: @ 8352628 - .4byte gMap_34_00 - .4byte gMap_34_01 - .4byte gMap_34_02 - .4byte gMap_34_03 - .4byte gMap_34_04 - .4byte gMap_34_05 - .4byte gMap_34_06 - .4byte gMap_34_07 + .4byte ThreeIsland_House1 + .4byte ThreeIsland_PokemonCenter_1F + .4byte ThreeIsland_PokemonCenter_2F + .4byte ThreeIsland_Mart + .4byte ThreeIsland_House2 + .4byte ThreeIsland_House3 + .4byte ThreeIsland_House4 + .4byte ThreeIsland_House5 gMapGroup_35:: @ 8352648 - .4byte gMap_35_00 - .4byte gMap_35_01 - .4byte gMap_35_02 - .4byte gMap_35_03 - .4byte gMap_35_04 - .4byte gMap_35_05 - .4byte gMap_35_06 - .4byte gMap_35_07 + .4byte FourIsland_PokemonDayCare + .4byte FourIsland_PokemonCenter_1F + .4byte FourIsland_PokemonCenter_2F + .4byte FourIsland_House1 + .4byte FourIsland_LoreleisHouse + .4byte FourIsland_Harbor + .4byte FourIsland_House2 + .4byte FourIsland_Mart gMapGroup_36:: @ 8352668 - .4byte gMap_36_00 - .4byte gMap_36_01 - .4byte gMap_36_02 - .4byte gMap_36_03 - .4byte gMap_36_04 + .4byte FiveIsland_PokemonCenter_1F + .4byte FiveIsland_PokemonCenter_2F + .4byte FiveIsland_Harbor + .4byte FiveIsland_House1 + .4byte FiveIsland_House2 gMapGroup_37:: @ 835267C - .4byte gMap_37_00 - .4byte gMap_37_01 - .4byte gMap_37_02 - .4byte gMap_37_03 - .4byte gMap_37_04 + .4byte SixIsland_PokemonCenter_1F + .4byte SixIsland_PokemonCenter_2F + .4byte SixIsland_Harbor + .4byte SixIsland_House + .4byte SixIsland_Mart gMapGroup_38:: @ 8352690 - .4byte gMap_38_00 + .4byte ThreeIsland_Harbor gMapGroup_39:: @ 8352694 - .4byte gMap_39_00 + .4byte FiveIsland_ResortGorgeous_House gMapGroup_40:: @ 8352698 - .4byte gMap_40_00 + .4byte TwoIsland_CapeBrink_House gMapGroup_41:: @ 835269C - .4byte gMap_41_00 - .4byte gMap_41_01 + .4byte SixIsland_WaterPath_House1 + .4byte SixIsland_WaterPath_House2 gMapGroup_42:: @ 83526A4 - .4byte gMap_42_00 + .4byte SevenIsland_SevaultCanyon_House gMapGroups:: @ 0x83526A8 .4byte gMapGroup_00 From 7135fa4b826fcaee1e48e7e3d18465aed696c61e Mon Sep 17 00:00:00 2001 From: garak Date: Tue, 26 Feb 2019 20:29:31 -0500 Subject: [PATCH 038/318] add map group constants --- include/constants/map_groups.h | 515 +++++++++++++++++++++++++++++ include/constants/maps.h | 585 --------------------------------- 2 files changed, 515 insertions(+), 585 deletions(-) create mode 100644 include/constants/map_groups.h diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h new file mode 100644 index 000000000..e571197f3 --- /dev/null +++ b/include/constants/map_groups.h @@ -0,0 +1,515 @@ +#ifndef GUARD_CONSTANTS_MAP_GROUPS_H +#define GUARD_CONSTANTS_MAP_GROUPS_H + +// Map Group 0 +#define MAP_UNKNOWNMAP_00_00 (0 | (0 << 8)) +#define MAP_UNKNOWNMAP_00_01 (1 | (0 << 8)) +#define MAP_UNKNOWNMAP_00_02 (2 | (0 << 8)) +#define MAP_UNKNOWNMAP_00_03 (3 | (0 << 8)) +#define MAP_UNKNOWNMAP_00_04 (4 | (0 << 8)) + +// Map Group 1 +#define MAP_VIRIDIANFOREST (0 | (1 << 8)) +#define MAP_MTMOON_1F (1 | (1 << 8)) +#define MAP_MTMOON_B1F (2 | (1 << 8)) +#define MAP_MTMOON_B2F (3 | (1 << 8)) +#define MAP_SSANNE_EXTERIOR (4 | (1 << 8)) +#define MAP_SSANNE_1F_CORRIDOR (5 | (1 << 8)) +#define MAP_SSANNE_2F_CORRIDOR (6 | (1 << 8)) +#define MAP_SSANNE_3F_CORRIDOR (7 | (1 << 8)) +#define MAP_SSANNE_B1F_CORRIDOR (8 | (1 << 8)) +#define MAP_SSANNE_DECK (9 | (1 << 8)) +#define MAP_SSANNE_KITCHEN (10 | (1 << 8)) +#define MAP_SSANNE_CAPTAINSOFFICE (11 | (1 << 8)) +#define MAP_SSANNE_1F_ROOM1 (12 | (1 << 8)) +#define MAP_SSANNE_1F_ROOM2 (13 | (1 << 8)) +#define MAP_SSANNE_1F_ROOM3 (14 | (1 << 8)) +#define MAP_SSANNE_1F_ROOM4 (15 | (1 << 8)) +#define MAP_SSANNE_1F_ROOM5 (16 | (1 << 8)) +#define MAP_SSANNE_1F_ROOM7 (17 | (1 << 8)) +#define MAP_SSANNE_2F_ROOM1 (18 | (1 << 8)) +#define MAP_SSANNE_2F_ROOM2 (19 | (1 << 8)) +#define MAP_SSANNE_2F_ROOM3 (20 | (1 << 8)) +#define MAP_SSANNE_2F_ROOM4 (21 | (1 << 8)) +#define MAP_SSANNE_2F_ROOM5 (22 | (1 << 8)) +#define MAP_SSANNE_2F_ROOM6 (23 | (1 << 8)) +#define MAP_SSANNE_B1F_ROOM1 (24 | (1 << 8)) +#define MAP_SSANNE_B1F_ROOM2 (25 | (1 << 8)) +#define MAP_SSANNE_B1F_ROOM3 (26 | (1 << 8)) +#define MAP_SSANNE_B1F_ROOM4 (27 | (1 << 8)) +#define MAP_SSANNE_B1F_ROOM5 (28 | (1 << 8)) +#define MAP_SSANNE_1F_ROOM6 (29 | (1 << 8)) +#define MAP_UNDERGROUNDPATH_NORTHENTRANCE (30 | (1 << 8)) +#define MAP_UNDERGROUNDPATH_NORTHSOUTHTUNNEL (31 | (1 << 8)) +#define MAP_UNDERGROUNDPATH_SOUTHENTRANCE (32 | (1 << 8)) +#define MAP_UNDERGROUNDPATH_WESTENTRANCE (33 | (1 << 8)) +#define MAP_UNDERGROUNDPATH_EASTWESTTUNNEL (34 | (1 << 8)) +#define MAP_UNDERGROUNDPATH_EASTENTRANCE (35 | (1 << 8)) +#define MAP_DIGLETTSCAVE_NORTHENTRANCE (36 | (1 << 8)) +#define MAP_DIGLETTSCAVE_B1F (37 | (1 << 8)) +#define MAP_DIGLETTSCAVE_SOUTHENTRANCE (38 | (1 << 8)) +#define MAP_VICTORYROAD_1F (39 | (1 << 8)) +#define MAP_VICTORYROAD_2F (40 | (1 << 8)) +#define MAP_VICTORYROAD_3F (41 | (1 << 8)) +#define MAP_ROCKETHIDEOUT_B1F (42 | (1 << 8)) +#define MAP_ROCKETHIDEOUT_B2F (43 | (1 << 8)) +#define MAP_ROCKETHIDEOUT_B3F (44 | (1 << 8)) +#define MAP_ROCKETHIDEOUT_B4F (45 | (1 << 8)) +#define MAP_ROCKETHIDEOUT_ELEVATOR (46 | (1 << 8)) +#define MAP_SILPHCO_1F (47 | (1 << 8)) +#define MAP_SILPHCO_2F (48 | (1 << 8)) +#define MAP_SILPHCO_3F (49 | (1 << 8)) +#define MAP_SILPHCO_4F (50 | (1 << 8)) +#define MAP_SILPHCO_5F (51 | (1 << 8)) +#define MAP_SILPHCO_6F (52 | (1 << 8)) +#define MAP_SILPHCO_7F (53 | (1 << 8)) +#define MAP_SILPHCO_8F (54 | (1 << 8)) +#define MAP_SILPHCO_9F (55 | (1 << 8)) +#define MAP_SILPHCO_10F (56 | (1 << 8)) +#define MAP_SILPHCO_11F (57 | (1 << 8)) +#define MAP_SILPHCO_ELEVATOR (58 | (1 << 8)) +#define MAP_POKEMONMANSION_1F (59 | (1 << 8)) +#define MAP_POKEMONMANSION_2F (60 | (1 << 8)) +#define MAP_POKEMONMANSION_3F (61 | (1 << 8)) +#define MAP_POKEMONMANSION_B1F (62 | (1 << 8)) +#define MAP_SAFARIZONE_CENTER (63 | (1 << 8)) +#define MAP_SAFARIZONE_EAST (64 | (1 << 8)) +#define MAP_SAFARIZONE_NORTH (65 | (1 << 8)) +#define MAP_SAFARIZONE_WEST (66 | (1 << 8)) +#define MAP_SAFARIZONE_BUILDING1 (67 | (1 << 8)) +#define MAP_SAFARIZONE_BUILDING2 (68 | (1 << 8)) +#define MAP_SAFARIZONE_BUILDING3 (69 | (1 << 8)) +#define MAP_SAFARIZONE_BUILDING4 (70 | (1 << 8)) +#define MAP_SAFARIZONE_SECRETHOUSE (71 | (1 << 8)) +#define MAP_CERULEANCAVE_1F (72 | (1 << 8)) +#define MAP_CERULEANCAVE_2F (73 | (1 << 8)) +#define MAP_CERULEANCAVE_B1F (74 | (1 << 8)) +#define MAP_POKEMONLEAGUE_LORELEISROOM (75 | (1 << 8)) +#define MAP_POKEMONLEAGUE_BRUNOSROOM (76 | (1 << 8)) +#define MAP_POKEMONLEAGUE_AGATHASROOM (77 | (1 << 8)) +#define MAP_POKEMONLEAGUE_LANCESROOM (78 | (1 << 8)) +#define MAP_POKEMONLEAGUE_CHAMPIONSROOM (79 | (1 << 8)) +#define MAP_POKEMONLEAGUE_HALLOFFAME (80 | (1 << 8)) +#define MAP_ROCKTUNNEL_1F (81 | (1 << 8)) +#define MAP_ROCKTUNNEL_B1F (82 | (1 << 8)) +#define MAP_SEAFOAMISLANDS_1F (83 | (1 << 8)) +#define MAP_SEAFOAMISLANDS_B1F (84 | (1 << 8)) +#define MAP_SEAFOAMISLANDS_B2F (85 | (1 << 8)) +#define MAP_SEAFOAMISLANDS_B3F (86 | (1 << 8)) +#define MAP_SEAFOAMISLANDS_B4F (87 | (1 << 8)) +#define MAP_POKEMONTOWER_1F (88 | (1 << 8)) +#define MAP_POKEMONTOWER_2F (89 | (1 << 8)) +#define MAP_POKEMONTOWER_3F (90 | (1 << 8)) +#define MAP_POKEMONTOWER_4F (91 | (1 << 8)) +#define MAP_POKEMONTOWER_5F (92 | (1 << 8)) +#define MAP_POKEMONTOWER_6F (93 | (1 << 8)) +#define MAP_POKEMONTOWER_7F (94 | (1 << 8)) +#define MAP_POWERPLANT (95 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_B4F (96 | (1 << 8)) +#define MAP_MTEMBER_EXTERIOR (97 | (1 << 8)) +#define MAP_MTEMBER_SUMMITPATH_1F (98 | (1 << 8)) +#define MAP_MTEMBER_SUMMITPATH_2F (99 | (1 << 8)) +#define MAP_MTEMBER_SUMMITPATH_3F (100 | (1 << 8)) +#define MAP_MTEMBER_SUMMIT (101 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_B5F (102 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_1F (103 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_B1F (104 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_B2F (105 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_B3F (106 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_B1F_STAIRS (107 | (1 << 8)) +#define MAP_MTEMBER_RUBYPATH_B2F_STAIRS (108 | (1 << 8)) +#define MAP_THREEISLAND_BERRYFOREST (109 | (1 << 8)) +#define MAP_FOURISLAND_ICEFALLCAVE_ENTRANCE (110 | (1 << 8)) +#define MAP_FOURISLAND_ICEFALLCAVE_1F (111 | (1 << 8)) +#define MAP_FOURISLAND_ICEFALLCAVE_B1F (112 | (1 << 8)) +#define MAP_FOURISLAND_ICEFALLCAVE_BACK (113 | (1 << 8)) +#define MAP_FIVEISLAND_ROCKETWAREHOUSE (114 | (1 << 8)) +#define MAP_SIXISLAND_DOTTEDHOLE_1F (115 | (1 << 8)) +#define MAP_SIXISLAND_DOTTEDHOLE_B1F (116 | (1 << 8)) +#define MAP_SIXISLAND_DOTTEDHOLE_B2F (117 | (1 << 8)) +#define MAP_SIXISLAND_DOTTEDHOLE_B3F (118 | (1 << 8)) +#define MAP_SIXISLAND_DOTTEDHOLE_B4F (119 | (1 << 8)) +#define MAP_SIXISLAND_DOTTEDHOLE_SAPPHIREROOM (120 | (1 << 8)) +#define MAP_SIXISLAND_PATTERNBUSH (121 | (1 << 8)) +#define MAP_SIXISLAND_ALTERINGCAVE (122 | (1 << 8)) + +// Map Group 2 +#define MAP_NAVELROCK_EXTERIOR (0 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_1F (1 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_2F (2 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_3F (3 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_4F (4 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_5F (5 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_6F (6 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_7F (7 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_8F (8 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_ROOF (9 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_LOBBY (10 | (2 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER_ELEVATOR (11 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ENTRANCE (12 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM1 (13 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM2 (14 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM3 (15 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM4 (16 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM5 (17 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM6 (18 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM7 (19 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM8 (20 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM9 (21 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM10 (22 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM11 (23 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM12 (24 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM13 (25 | (2 << 8)) +#define MAP_FIVEISLAND_LOSTCAVE_ROOM14 (26 | (2 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS_MONEANCHAMBER (27 | (2 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS_LIPTOOCHAMBER (28 | (2 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS_WEEPTHCHAMBER (29 | (2 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS_DILFORDCHAMBER (30 | (2 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS_SCUFIBCHAMBER (31 | (2 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS_RIXYCHAMBER (32 | (2 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS_VIAPOISCHAMBER (33 | (2 << 8)) +#define MAP_THREEISLAND_DUNSPARCETUNNEL (34 | (2 << 8)) +#define MAP_SEVENISLAND_SEAVAULTCANYON_TANOBYKEY (35 | (2 << 8)) +#define MAP_NAVELROCK_1F (36 | (2 << 8)) +#define MAP_NAVELROCK_SUMMIT (37 | (2 << 8)) +#define MAP_NAVELROCK_BASE (38 | (2 << 8)) +#define MAP_NAVELROCK_SUMMITPATH_2F (39 | (2 << 8)) +#define MAP_NAVELROCK_SUMMITPATH_3F (40 | (2 << 8)) +#define MAP_NAVELROCK_SUMMITPATH_4F (41 | (2 << 8)) +#define MAP_NAVELROCK_SUMMITPATH_5F (42 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B1F (43 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B2F (44 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B3F (45 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B4F (46 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B5F (47 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B6F (48 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B7F (49 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B8F (50 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B9F (51 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B10F (52 | (2 << 8)) +#define MAP_NAVELROCK_BASEPATH_B11F (53 | (2 << 8)) +#define MAP_NAVELROCK_B1F (54 | (2 << 8)) +#define MAP_NAVELROCK_FORK (55 | (2 << 8)) +#define MAP_BIRTHISLAND_EXTERIOR (56 | (2 << 8)) +#define MAP_ONEISLAND_KINDLEROAD_EMBERSPA (57 | (2 << 8)) +#define MAP_BIRTHISLAND_HARBOR (58 | (2 << 8)) +#define MAP_NAVELROCK_HARBOR (59 | (2 << 8)) + +// Map Group 3 +#define MAP_PALLETTOWN (0 | (3 << 8)) +#define MAP_VIRIDIANCITY (1 | (3 << 8)) +#define MAP_PEWTERCITY (2 | (3 << 8)) +#define MAP_CERULEANCITY (3 | (3 << 8)) +#define MAP_LAVENDERTOWN (4 | (3 << 8)) +#define MAP_VERMILIONCITY (5 | (3 << 8)) +#define MAP_CELADONCITY (6 | (3 << 8)) +#define MAP_FUCHSIACITY (7 | (3 << 8)) +#define MAP_CINNABARISLAND (8 | (3 << 8)) +#define MAP_INDIGOPLATEAU_EXTERIOR (9 | (3 << 8)) +#define MAP_SAFFRONCITY (10 | (3 << 8)) +#define MAP_SAFFRONCITY_DUPLICATE (11 | (3 << 8)) +#define MAP_ONEISLAND (12 | (3 << 8)) +#define MAP_TWOISLAND (13 | (3 << 8)) +#define MAP_THREEISLAND (14 | (3 << 8)) +#define MAP_FOURISLAND (15 | (3 << 8)) +#define MAP_FIVEISLAND (16 | (3 << 8)) +#define MAP_SEVENISLAND (17 | (3 << 8)) +#define MAP_SIXISLAND (18 | (3 << 8)) +#define MAP_ROUTE1 (19 | (3 << 8)) +#define MAP_ROUTE2 (20 | (3 << 8)) +#define MAP_ROUTE3 (21 | (3 << 8)) +#define MAP_ROUTE4 (22 | (3 << 8)) +#define MAP_ROUTE5 (23 | (3 << 8)) +#define MAP_ROUTE6 (24 | (3 << 8)) +#define MAP_ROUTE7 (25 | (3 << 8)) +#define MAP_ROUTE8 (26 | (3 << 8)) +#define MAP_ROUTE9 (27 | (3 << 8)) +#define MAP_ROUTE10 (28 | (3 << 8)) +#define MAP_ROUTE11 (29 | (3 << 8)) +#define MAP_ROUTE12 (30 | (3 << 8)) +#define MAP_ROUTE13 (31 | (3 << 8)) +#define MAP_ROUTE14 (32 | (3 << 8)) +#define MAP_ROUTE15 (33 | (3 << 8)) +#define MAP_ROUTE16 (34 | (3 << 8)) +#define MAP_ROUTE17 (35 | (3 << 8)) +#define MAP_ROUTE18 (36 | (3 << 8)) +#define MAP_ROUTE19 (37 | (3 << 8)) +#define MAP_ROUTE20 (38 | (3 << 8)) +#define MAP_ROUTE21_NORTH (39 | (3 << 8)) +#define MAP_ROUTE21_SOUTH (40 | (3 << 8)) +#define MAP_ROUTE22 (41 | (3 << 8)) +#define MAP_ROUTE23 (42 | (3 << 8)) +#define MAP_ROUTE24 (43 | (3 << 8)) +#define MAP_ROUTE25 (44 | (3 << 8)) +#define MAP_ONEISLAND_KINDLEROAD (45 | (3 << 8)) +#define MAP_ONEISLAND_TREASUREBEACH (46 | (3 << 8)) +#define MAP_TWOISLAND_CAPEBRINK (47 | (3 << 8)) +#define MAP_THREEISLAND_BONDBRIDGE (48 | (3 << 8)) +#define MAP_THREEISLAND_PORT (49 | (3 << 8)) +#define MAP_UNKNOWNMAP_03_50 (50 | (3 << 8)) +#define MAP_UNKNOWNMAP_03_51 (51 | (3 << 8)) +#define MAP_UNKNOWNMAP_03_52 (52 | (3 << 8)) +#define MAP_UNKNOWNMAP_03_53 (53 | (3 << 8)) +#define MAP_FIVEISLAND_RESORTGORGEOUS (54 | (3 << 8)) +#define MAP_FIVEISLAND_WATERLABYRINTH (55 | (3 << 8)) +#define MAP_FIVEISLAND_MEADOW (56 | (3 << 8)) +#define MAP_FIVEISLAND_MEMORIALPILLAR (57 | (3 << 8)) +#define MAP_SIXISLAND_OUTCASTISLAND (58 | (3 << 8)) +#define MAP_SIXISLAND_GREENPATH (59 | (3 << 8)) +#define MAP_SIXISLAND_WATERPATH (60 | (3 << 8)) +#define MAP_SIXISLAND_RUINVALLEY (61 | (3 << 8)) +#define MAP_SEVENISLAND_TRAINERTOWER (62 | (3 << 8)) +#define MAP_SEVENISLAND_SEVAULTCANYON_ENTRANCE (63 | (3 << 8)) +#define MAP_SEVENISLAND_SEVAULTCANYON (64 | (3 << 8)) +#define MAP_SEVENISLAND_TANOBYRUINS (65 | (3 << 8)) + +// Map Group 4 +#define MAP_PALLETTOWN_PLAYERSHOUSE_1F (0 | (4 << 8)) +#define MAP_PALLETTOWN_PLAYERSHOUSE_2F (1 | (4 << 8)) +#define MAP_PALLETTOWN_GARYSHOUSE (2 | (4 << 8)) +#define MAP_PALLETTOWN_PROFESSOROAKSLAB (3 | (4 << 8)) + +// Map Group 5 +#define MAP_VIRIDIANCITY_HOUSE1 (0 | (5 << 8)) +#define MAP_VIRIDIANCITY_GYM (1 | (5 << 8)) +#define MAP_VIRIDIANCITY_HOUSE2 (2 | (5 << 8)) +#define MAP_VIRIDIANCITY_MART (3 | (5 << 8)) +#define MAP_VIRIDIANCITY_POKEMONCENTER_1F (4 | (5 << 8)) +#define MAP_VIRIDIANCITY_POKEMONCENTER_2F (5 | (5 << 8)) + +// Map Group 6 +#define MAP_PEWTERCITY_MUSEUM_1F (0 | (6 << 8)) +#define MAP_PEWTERCITY_MUSEUM_2F (1 | (6 << 8)) +#define MAP_PEWTERCITY_GYM (2 | (6 << 8)) +#define MAP_PEWTERCITY_MART (3 | (6 << 8)) +#define MAP_PEWTERCITY_HOUSE1 (4 | (6 << 8)) +#define MAP_PEWTERCITY_POKEMONCENTER_1F (5 | (6 << 8)) +#define MAP_PEWTERCITY_POKEMONCENTER_2F (6 | (6 << 8)) +#define MAP_PEWTERCITY_HOUSE2 (7 | (6 << 8)) + +// Map Group 7 +#define MAP_CERULEANCITY_HOUSE1 (0 | (7 << 8)) +#define MAP_CERULEANCITY_HOUSE2 (1 | (7 << 8)) +#define MAP_CERULEANCITY_HOUSE3 (2 | (7 << 8)) +#define MAP_CERULEANCITY_POKEMONCENTER_1F (3 | (7 << 8)) +#define MAP_CERULEANCITY_POKEMONCENTER_2F (4 | (7 << 8)) +#define MAP_CERULEANCITY_GYM (5 | (7 << 8)) +#define MAP_CERULEANCITY_BIKESHOP (6 | (7 << 8)) +#define MAP_CERULEANCITY_MART (7 | (7 << 8)) +#define MAP_CERULEANCITY_HOUSE4 (8 | (7 << 8)) +#define MAP_CERULEANCITY_HOUSE5 (9 | (7 << 8)) + +// Map Group 8 +#define MAP_LAVENDERTOWN_POKEMONCENTER_1F (0 | (8 << 8)) +#define MAP_LAVENDERTOWN_POKEMONCENTER_2F (1 | (8 << 8)) +#define MAP_LAVENDERTOWN_VOLUNTEERPOKEMONHOUSE (2 | (8 << 8)) +#define MAP_LAVENDERTOWN_HOUSE1 (3 | (8 << 8)) +#define MAP_LAVENDERTOWN_HOUSE2 (4 | (8 << 8)) +#define MAP_LAVENDERTOWN_MART (5 | (8 << 8)) + +// Map Group 9 +#define MAP_VERMILIONCITY_HOUSE1 (0 | (9 << 8)) +#define MAP_VERMILIONCITY_POKEMONCENTER_1F (1 | (9 << 8)) +#define MAP_VERMILIONCITY_POKEMONCENTER_2F (2 | (9 << 8)) +#define MAP_VERMILIONCITY_POKEMONFANCLUB (3 | (9 << 8)) +#define MAP_VERMILIONCITY_HOUSE2 (4 | (9 << 8)) +#define MAP_VERMILIONCITY_MART (5 | (9 << 8)) +#define MAP_VERMILIONCITY_GYM (6 | (9 << 8)) +#define MAP_VERMILIONCITY_HOUSE3 (7 | (9 << 8)) + +// Map Group 10 +#define MAP_CELADONCITY_DEPARTMENTSTORE_1F (0 | (10 << 8)) +#define MAP_CELADONCITY_DEPARTMENTSTORE_2F (1 | (10 << 8)) +#define MAP_CELADONCITY_DEPARTMENTSTORE_3F (2 | (10 << 8)) +#define MAP_CELADONCITY_DEPARTMENTSTORE_4F (3 | (10 << 8)) +#define MAP_CELADONCITY_DEPARTMENTSTORE_5F (4 | (10 << 8)) +#define MAP_CELADONCITY_DEPARTMENTSTORE_ROOF (5 | (10 << 8)) +#define MAP_CELADONCITY_DEPARTMENTSTORE_ELEVATOR (6 | (10 << 8)) +#define MAP_CELADONCITY_CONDOMINIUMS_1F (7 | (10 << 8)) +#define MAP_CELADONCITY_CONDOMINIUMS_2F (8 | (10 << 8)) +#define MAP_CELADONCITY_CONDOMINIUMS_3F (9 | (10 << 8)) +#define MAP_CELADONCITY_CONDOMINIUMS_ROOF (10 | (10 << 8)) +#define MAP_CELADONCITY_CONDOMINIUMS_ROOFROOM (11 | (10 << 8)) +#define MAP_CELADONCITY_POKEMONCENTER_1F (12 | (10 << 8)) +#define MAP_CELADONCITY_POKEMONCENTER_2F (13 | (10 << 8)) +#define MAP_CELADONCITY_GAMECORNER (14 | (10 << 8)) +#define MAP_CELADONCITY_GAMECORNER_PRIZEROOM (15 | (10 << 8)) +#define MAP_CELADONCITY_GYM (16 | (10 << 8)) +#define MAP_CELADONCITY_RESTAURANT (17 | (10 << 8)) +#define MAP_CELADONCITY_HOUSE1 (18 | (10 << 8)) +#define MAP_CELADONCITY_HOTEL (19 | (10 << 8)) + +// Map Group 11 +#define MAP_FUCHSIACITY_SAFARIZONE_ENTRANCE (0 | (11 << 8)) +#define MAP_FUCHSIACITY_MART (1 | (11 << 8)) +#define MAP_FUCHSIACITY_ZOOBUILDING (2 | (11 << 8)) +#define MAP_FUCHSIACITY_GYM (3 | (11 << 8)) +#define MAP_FUCHSIACITY_HOUSE1 (4 | (11 << 8)) +#define MAP_FUCHSIACITY_POKEMONCENTER_1F (5 | (11 << 8)) +#define MAP_FUCHSIACITY_POKEMONCENTER_2F (6 | (11 << 8)) +#define MAP_FUCHSIACITY_BUILDING1 (7 | (11 << 8)) +#define MAP_FUCHSIACITY_HOUSE2 (8 | (11 << 8)) +#define MAP_FUCHSIACITY_HOUSE3 (9 | (11 << 8)) + +// Map Group 12 +#define MAP_CINNABARISLAND_GYM (0 | (12 << 8)) +#define MAP_CINNABARISLAND_POKEMONLAB_ENTRANCE (1 | (12 << 8)) +#define MAP_CINNABARISLAND_POKEMONLAB_LOUNGE (2 | (12 << 8)) +#define MAP_CINNABARISLAND_POKEMONLAB_RESEARCHROOM (3 | (12 << 8)) +#define MAP_CINNABARISLAND_POKEMONLAB_EXPERIMENTROOM (4 | (12 << 8)) +#define MAP_CINNABARISLAND_POKEMONCENTER_1F (5 | (12 << 8)) +#define MAP_CINNABARISLAND_POKEMONCENTER_2F (6 | (12 << 8)) +#define MAP_CINNABARISLAND_MART (7 | (12 << 8)) + +// Map Group 13 +#define MAP_INDIGOPLATEAU_POKEMONCENTER_1F (0 | (13 << 8)) +#define MAP_INDIGOPLATEAU_POKEMONCENTER_2F (1 | (13 << 8)) + +// Map Group 14 +#define MAP_SAFFRONCITY_HOUSE1_1F (0 | (14 << 8)) +#define MAP_SAFFRONCITY_HOUSE1_2F (1 | (14 << 8)) +#define MAP_SAFFRONCITY_DOJO (2 | (14 << 8)) +#define MAP_SAFFRONCITY_GYM (3 | (14 << 8)) +#define MAP_SAFFRONCITY_HOUSE2 (4 | (14 << 8)) +#define MAP_SAFFRONCITY_MART (5 | (14 << 8)) +#define MAP_SAFFRONCITY_POKEMONCENTER_1F (6 | (14 << 8)) +#define MAP_SAFFRONCITY_POKEMONCENTER_2F (7 | (14 << 8)) +#define MAP_SAFFRONCITY_HOUSE3 (8 | (14 << 8)) +#define MAP_SAFFRONCITY_POKEMONTRAINERFANCLUB (9 | (14 << 8)) + +// Map Group 15 +#define MAP_ROUTE2_VIRIDIANFOREST_SOUTHENTRANCE (0 | (15 << 8)) +#define MAP_ROUTE2_HOUSE (1 | (15 << 8)) +#define MAP_ROUTE2_EASTBUILDING (2 | (15 << 8)) +#define MAP_ROUTE2_VIRIDIANFOREST_NORTHENTRANCE (3 | (15 << 8)) + +// Map Group 16 +#define MAP_ROUTE4_POKEMONCENTER_1F (0 | (16 << 8)) +#define MAP_ROUTE4_POKEMONCENTER_2F (1 | (16 << 8)) + +// Map Group 17 +#define MAP_ROUTE5_POKEMONDAYCARE (0 | (17 << 8)) +#define MAP_ROUTE5_SOUTHENTRANCE (1 | (17 << 8)) + +// Map Group 18 +#define MAP_ROUTE6_NORTHENTRANCE (0 | (18 << 8)) +#define MAP_UNKNOWNMAP_18_01 (1 | (18 << 8)) + +// Map Group 19 +#define MAP_ROUTE7_EASTENTRANCE (0 | (19 << 8)) + +// Map Group 20 +#define MAP_ROUTE8_WESTENTRANCE (0 | (20 << 8)) + +// Map Group 21 +#define MAP_ROUTE10_POKEMONCENTER_1F (0 | (21 << 8)) +#define MAP_ROUTE10_POKEMONCENTER_2F (1 | (21 << 8)) + +// Map Group 22 +#define MAP_ROUTE11_EASTENTRANCE_1F (0 | (22 << 8)) +#define MAP_ROUTE11_EASTENTRANCE_2F (1 | (22 << 8)) + +// Map Group 23 +#define MAP_ROUTE12_NORTHENTRANCE_1F (0 | (23 << 8)) +#define MAP_ROUTE12_NORTHENTRANCE_2F (1 | (23 << 8)) +#define MAP_ROUTE12_FISHINGHOUSE (2 | (23 << 8)) + +// Map Group 24 +#define MAP_ROUTE15_WESTENTRANCE_1F (0 | (24 << 8)) +#define MAP_ROUTE15_WESTENTRANCE_2F (1 | (24 << 8)) + +// Map Group 25 +#define MAP_ROUTE16_HOUSE (0 | (25 << 8)) +#define MAP_ROUTE16_NORTHENTRANCE_1F (1 | (25 << 8)) +#define MAP_ROUTE16_NORTHENTRANCE_2F (2 | (25 << 8)) + +// Map Group 26 +#define MAP_ROUTE18_EASTENTRANCE_1F (0 | (26 << 8)) +#define MAP_ROUTE18_EASTENTRANCE_2F (1 | (26 << 8)) + +// Map Group 27 +#define MAP_UNUSEDHOUSE_27_00 (0 | (27 << 8)) + +// Map Group 28 +#define MAP_ROUTE22_NORTHENTRANCE (0 | (28 << 8)) + +// Map Group 29 +#define MAP_UNUSEDHOUSE_29_00 (0 | (29 << 8)) + +// Map Group 30 +#define MAP_ROUTE25_SEACOTTAGE (0 | (30 << 8)) + +// Map Group 31 +#define MAP_SEVENISLAND_HOUSE_ROOM1 (0 | (31 << 8)) +#define MAP_SEVENISLAND_HOUSE_ROOM2 (1 | (31 << 8)) +#define MAP_SEVENISLAND_MART (2 | (31 << 8)) +#define MAP_SEVENISLAND_POKEMONCENTER_1F (3 | (31 << 8)) +#define MAP_SEVENISLAND_POKEMONCENTER_2F (4 | (31 << 8)) +#define MAP_UNUSEDHOUSE_31_05 (5 | (31 << 8)) +#define MAP_SEVENISLAND_HARBOR (6 | (31 << 8)) + +// Map Group 32 +#define MAP_ONEISLAND_POKEMONCENTER_1F (0 | (32 << 8)) +#define MAP_ONEISLAND_POKEMONCENTER_2F (1 | (32 << 8)) +#define MAP_ONEISLAND_HOUSE1 (2 | (32 << 8)) +#define MAP_ONEISLAND_HOUSE2 (3 | (32 << 8)) +#define MAP_ONEISLAND_HARBOR (4 | (32 << 8)) + +// Map Group 33 +#define MAP_TWOISLAND_JOYFULGAMECORNER (0 | (33 << 8)) +#define MAP_TWOISLAND_HOUSE (1 | (33 << 8)) +#define MAP_TWOISLAND_POKEMONCENTER_1F (2 | (33 << 8)) +#define MAP_TWOISLAND_POKEMONCENTER_2F (3 | (33 << 8)) +#define MAP_TWOISLAND_HARBOR (4 | (33 << 8)) + +// Map Group 34 +#define MAP_THREEISLAND_HOUSE1 (0 | (34 << 8)) +#define MAP_THREEISLAND_POKEMONCENTER_1F (1 | (34 << 8)) +#define MAP_THREEISLAND_POKEMONCENTER_2F (2 | (34 << 8)) +#define MAP_THREEISLAND_MART (3 | (34 << 8)) +#define MAP_THREEISLAND_HOUSE2 (4 | (34 << 8)) +#define MAP_THREEISLAND_HOUSE3 (5 | (34 << 8)) +#define MAP_THREEISLAND_HOUSE4 (6 | (34 << 8)) +#define MAP_THREEISLAND_HOUSE5 (7 | (34 << 8)) + +// Map Group 35 +#define MAP_FOURISLAND_POKEMONDAYCARE (0 | (35 << 8)) +#define MAP_FOURISLAND_POKEMONCENTER_1F (1 | (35 << 8)) +#define MAP_FOURISLAND_POKEMONCENTER_2F (2 | (35 << 8)) +#define MAP_FOURISLAND_HOUSE1 (3 | (35 << 8)) +#define MAP_FOURISLAND_LORELEISHOUSE (4 | (35 << 8)) +#define MAP_FOURISLAND_HARBOR (5 | (35 << 8)) +#define MAP_FOURISLAND_HOUSE2 (6 | (35 << 8)) +#define MAP_FOURISLAND_MART (7 | (35 << 8)) + +// Map Group 36 +#define MAP_FIVEISLAND_POKEMONCENTER_1F (0 | (36 << 8)) +#define MAP_FIVEISLAND_POKEMONCENTER_2F (1 | (36 << 8)) +#define MAP_FIVEISLAND_HARBOR (2 | (36 << 8)) +#define MAP_FIVEISLAND_HOUSE1 (3 | (36 << 8)) +#define MAP_FIVEISLAND_HOUSE2 (4 | (36 << 8)) + +// Map Group 37 +#define MAP_SIXISLAND_POKEMONCENTER_1F (0 | (37 << 8)) +#define MAP_SIXISLAND_POKEMONCENTER_2F (1 | (37 << 8)) +#define MAP_SIXISLAND_HARBOR (2 | (37 << 8)) +#define MAP_SIXISLAND_HOUSE (3 | (37 << 8)) +#define MAP_SIXISLAND_MART (4 | (37 << 8)) + +// Map Group 38 +#define MAP_THREEISLAND_HARBOR (0 | (38 << 8)) + +// Map Group 39 +#define MAP_FIVEISLAND_RESORTGORGEOUS_HOUSE (0 | (39 << 8)) + +// Map Group 40 +#define MAP_TWOISLAND_CAPEBRINK_HOUSE (0 | (40 << 8)) + +// Map Group 41 +#define MAP_SIXISLAND_WATERPATH_HOUSE1 (0 | (41 << 8)) +#define MAP_SIXISLAND_WATERPATH_HOUSE2 (1 | (41 << 8)) + +// Map Group 42 +#define MAP_SEVENISLAND_SEVAULTCANYON_HOUSE (0 | (42 << 8)) + +#endif // GUARD_CONSTANTS_MAP_GROUPS_H diff --git a/include/constants/maps.h b/include/constants/maps.h index 737edd7de..3b1c1420d 100644 --- a/include/constants/maps.h +++ b/include/constants/maps.h @@ -1,594 +1,9 @@ #ifndef GUARD_CONSTANTS_MAPS_H #define GUARD_CONSTANTS_MAPS_H -// Map Group 0 -#define MAP_PETALBURG_CITY (0 | (0 << 8)) -#define MAP_SLATEPORT_CITY (1 | (0 << 8)) -#define MAP_MAUVILLE_CITY (2 | (0 << 8)) -#define MAP_RUSTBORO_CITY (3 | (0 << 8)) -#define MAP_FORTREE_CITY (4 | (0 << 8)) -#define MAP_LILYCOVE_CITY (5 | (0 << 8)) -#define MAP_MOSSDEEP_CITY (6 | (0 << 8)) -#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8)) -#define MAP_EVER_GRANDE_CITY (8 | (0 << 8)) -#define MAP_LITTLEROOT_TOWN (9 | (0 << 8)) -#define MAP_OLDALE_TOWN (10 | (0 << 8)) -#define MAP_DEWFORD_TOWN (11 | (0 << 8)) -#define MAP_LAVARIDGE_TOWN (12 | (0 << 8)) -#define MAP_FALLARBOR_TOWN (13 | (0 << 8)) -#define MAP_VERDANTURF_TOWN (14 | (0 << 8)) -#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8)) -#define MAP_ROUTE101 (16 | (0 << 8)) -#define MAP_ROUTE102 (17 | (0 << 8)) -#define MAP_ROUTE103 (18 | (0 << 8)) -#define MAP_ROUTE104 (19 | (0 << 8)) -#define MAP_ROUTE105 (20 | (0 << 8)) -#define MAP_ROUTE106 (21 | (0 << 8)) -#define MAP_ROUTE107 (22 | (0 << 8)) -#define MAP_ROUTE108 (23 | (0 << 8)) -#define MAP_ROUTE109 (24 | (0 << 8)) -#define MAP_ROUTE110 (25 | (0 << 8)) -#define MAP_ROUTE111 (26 | (0 << 8)) -#define MAP_ROUTE112 (27 | (0 << 8)) -#define MAP_ROUTE113 (28 | (0 << 8)) -#define MAP_ROUTE114 (29 | (0 << 8)) -#define MAP_ROUTE115 (30 | (0 << 8)) -#define MAP_ROUTE116 (31 | (0 << 8)) -#define MAP_ROUTE117 (32 | (0 << 8)) -#define MAP_ROUTE118 (33 | (0 << 8)) -#define MAP_ROUTE119 (34 | (0 << 8)) -#define MAP_ROUTE120 (35 | (0 << 8)) -#define MAP_ROUTE121 (36 | (0 << 8)) -#define MAP_ROUTE122 (37 | (0 << 8)) -#define MAP_ROUTE123 (38 | (0 << 8)) -#define MAP_ROUTE124 (39 | (0 << 8)) -#define MAP_ROUTE125 (40 | (0 << 8)) -#define MAP_ROUTE126 (41 | (0 << 8)) -#define MAP_ROUTE127 (42 | (0 << 8)) -#define MAP_ROUTE128 (43 | (0 << 8)) -#define MAP_ROUTE129 (44 | (0 << 8)) -#define MAP_ROUTE130 (45 | (0 << 8)) -#define MAP_ROUTE131 (46 | (0 << 8)) -#define MAP_ROUTE132 (47 | (0 << 8)) -#define MAP_ROUTE133 (48 | (0 << 8)) -#define MAP_ROUTE134 (49 | (0 << 8)) -#define MAP_UNDERWATER1 (50 | (0 << 8)) -#define MAP_UNDERWATER2 (51 | (0 << 8)) -#define MAP_UNDERWATER3 (52 | (0 << 8)) -#define MAP_UNDERWATER4 (53 | (0 << 8)) - -// Map Group 1 -#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8)) -#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8)) -#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8)) -#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8)) -#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8)) - -// Map Group 2 -#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8)) -#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8)) -#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8)) -#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8)) -#define MAP_OLDALE_TOWN_MART (4 | (2 << 8)) - -// Map Group 3 -#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8)) -#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8)) -#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8)) -#define MAP_DEWFORD_TOWN_GYM (3 | (3 << 8)) -#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8)) -#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8)) - -// Map Group 4 -#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8)) -#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8)) -#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8)) -#define MAP_LAVARIDGE_TOWN_HOUSE (3 | (4 << 8)) -#define MAP_LAVARIDGE_TOWN_MART (4 | (4 << 8)) -#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8)) -#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8)) - -// Map Group 5 -#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8)) -#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8)) - -// Map Group 6 -#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_MART (3 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F (4 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F (5 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_WANDAS_HOUSE (6 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8)) -#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8)) - -// Map Group 7 -#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8)) -#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8)) -#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8)) -#define MAP_PACIFIDLOG_TOWN_HOUSE2 (3 | (7 << 8)) -#define MAP_PACIFIDLOG_TOWN_HOUSE3 (4 | (7 << 8)) -#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8)) -#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8)) - -// Map Group 8 -#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8)) -#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8)) -#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8)) -#define MAP_PETALBURG_CITY_HOUSE2 (3 | (8 << 8)) -#define MAP_PETALBURG_CITY_POKEMON_CENTER_1F (4 | (8 << 8)) -#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8)) -#define MAP_PETALBURG_CITY_MART (6 | (8 << 8)) - -// Map Group 9 -#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8)) -#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8)) -#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8)) -#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8)) -#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8)) -#define MAP_SLATEPORT_CITY_HOUSE1 (5 | (9 << 8)) -#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8)) -#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8)) -#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8)) -#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8)) -#define MAP_SLATEPORT_CITY_HOUSE2 (10 | (9 << 8)) -#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8)) -#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8)) -#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8)) - -// Map Group 10 -#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8)) -#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8)) -#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8)) -#define MAP_MAUVILLE_CITY_GAME_CORNER (3 | (10 << 8)) -#define MAP_MAUVILLE_CITY_HOUSE2 (4 | (10 << 8)) -#define MAP_MAUVILLE_CITY_POKEMON_CENTER_1F (5 | (10 << 8)) -#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8)) -#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8)) - -// Map Group 11 -#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8)) -#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8)) -#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8)) -#define MAP_RUSTBORO_CITY_GYM (3 | (11 << 8)) -#define MAP_RUSTBORO_CITY_POKEMON_SCHOOL (4 | (11 << 8)) -#define MAP_RUSTBORO_CITY_POKEMON_CENTER_1F (5 | (11 << 8)) -#define MAP_RUSTBORO_CITY_POKEMON_CENTER_2F (6 | (11 << 8)) -#define MAP_RUSTBORO_CITY_MART (7 | (11 << 8)) -#define MAP_RUSTBORO_CITY_FLAT1_1F (8 | (11 << 8)) -#define MAP_RUSTBORO_CITY_FLAT1_2F (9 | (11 << 8)) -#define MAP_RUSTBORO_CITY_HOUSE1 (10 | (11 << 8)) -#define MAP_RUSTBORO_CITY_CUTTERS_HOUSE (11 | (11 << 8)) -#define MAP_RUSTBORO_CITY_HOUSE2 (12 | (11 << 8)) -#define MAP_RUSTBORO_CITY_FLAT2_1F (13 | (11 << 8)) -#define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8)) -#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8)) -#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8)) - -// Map Group 12 -#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8)) -#define MAP_FORTREE_CITY_GYM (1 | (12 << 8)) -#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8)) -#define MAP_FORTREE_CITY_POKEMON_CENTER_2F (3 | (12 << 8)) -#define MAP_FORTREE_CITY_MART (4 | (12 << 8)) -#define MAP_FORTREE_CITY_HOUSE2 (5 | (12 << 8)) -#define MAP_FORTREE_CITY_HOUSE3 (6 | (12 << 8)) -#define MAP_FORTREE_CITY_HOUSE4 (7 | (12 << 8)) -#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8)) -#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8)) - -// Map Group 13 -#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8)) -#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8)) -#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8)) -#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F (3 | (13 << 8)) -#define MAP_LILYCOVE_CITY_CONTEST_LOBBY (4 | (13 << 8)) -#define MAP_LILYCOVE_CITY_CONTEST_HALL (5 | (13 << 8)) -#define MAP_LILYCOVE_CITY_POKEMON_CENTER_1F (6 | (13 << 8)) -#define MAP_LILYCOVE_CITY_POKEMON_CENTER_2F (7 | (13 << 8)) -#define MAP_LILYCOVE_CITY_UNUSED_MART (8 | (13 << 8)) -#define MAP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (13 << 8)) -#define MAP_LILYCOVE_CITY_HARBOR (10 | (13 << 8)) -#define MAP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE (11 | (13 << 8)) -#define MAP_LILYCOVE_CITY_HOUSE1 (12 | (13 << 8)) -#define MAP_LILYCOVE_CITY_HOUSE2 (13 | (13 << 8)) -#define MAP_LILYCOVE_CITY_HOUSE3 (14 | (13 << 8)) -#define MAP_LILYCOVE_CITY_HOUSE4 (15 | (13 << 8)) -#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F (16 | (13 << 8)) -#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F (17 | (13 << 8)) -#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F (18 | (13 << 8)) -#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F (19 | (13 << 8)) -#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F (20 | (13 << 8)) -#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8)) -#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8)) - -// Map Group 14 -#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F (3 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F (4 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_MART (5 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_HOUSE3 (6 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_STEVENS_HOUSE (7 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_HOUSE4 (8 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_SPACE_CENTER_1F (9 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_SPACE_CENTER_2F (10 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8)) -#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8)) - -// Map Group 15 -#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F (3 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_MART (4 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE1 (5 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE2 (6 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE3 (7 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE4 (8 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE5 (9 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE6 (10 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE7 (11 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE8 (12 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE9_1F (13 | (15 << 8)) -#define MAP_SOOTOPOLIS_CITY_HOUSE9_B1F (14 | (15 << 8)) - -// Map Group 16 -#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_DRAKES_ROOM (3 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_CHAMPIONS_ROOM (4 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_CORRIDOR1 (5 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_CORRIDOR2 (6 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_CORRIDOR3 (7 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_CORRIDOR4 (8 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_CORRIDOR5 (9 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F (10 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_HALL_OF_FAME (11 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F (12 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8)) -#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8)) - -// Map Group 17 -#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8)) -#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8)) - -// Map Group 18 -#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8)) -#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8)) - -// Map Group 19 -#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8)) -#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8)) - -// Map Group 20 -#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8)) -#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8)) -#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8)) - -// Map Group 21 -#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8)) - -// Map Group 22 -#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8)) - -// Map Group 23 -#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8)) - -// Map Group 24 -#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8)) -#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8)) -#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8)) -#define MAP_METEOR_FALLS_B1F_2R (3 | (24 << 8)) -#define MAP_RUSTURF_TUNNEL (4 | (24 << 8)) -#define MAP_UNDERWATER_SOOTOPOLIS_CITY (5 | (24 << 8)) -#define MAP_DESERT_RUINS (6 | (24 << 8)) -#define MAP_GRANITE_CAVE_1F (7 | (24 << 8)) -#define MAP_GRANITE_CAVE_B1F (8 | (24 << 8)) -#define MAP_GRANITE_CAVE_B2F (9 | (24 << 8)) -#define MAP_GRANITE_CAVE_STEVENS_ROOM (10 | (24 << 8)) -#define MAP_PETALBURG_WOODS (11 | (24 << 8)) -#define MAP_MT_CHIMNEY (12 | (24 << 8)) -#define MAP_JAGGED_PASS (13 | (24 << 8)) -#define MAP_FIERY_PATH (14 | (24 << 8)) -#define MAP_MT_PYRE_1F (15 | (24 << 8)) -#define MAP_MT_PYRE_2F (16 | (24 << 8)) -#define MAP_MT_PYRE_3F (17 | (24 << 8)) -#define MAP_MT_PYRE_4F (18 | (24 << 8)) -#define MAP_MT_PYRE_5F (19 | (24 << 8)) -#define MAP_MT_PYRE_6F (20 | (24 << 8)) -#define MAP_MT_PYRE_EXTERIOR (21 | (24 << 8)) -#define MAP_MT_PYRE_SUMMIT (22 | (24 << 8)) -#define MAP_AQUA_HIDEOUT_1F (23 | (24 << 8)) -#define MAP_AQUA_HIDEOUT_B1F (24 | (24 << 8)) -#define MAP_AQUA_HIDEOUT_B2F (25 | (24 << 8)) -#define MAP_UNDERWATER_SEAFLOOR_CAVERN (26 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ENTRANCE (27 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM1 (28 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM2 (29 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM3 (30 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM4 (31 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM5 (32 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM6 (33 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM7 (34 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM8 (35 | (24 << 8)) -#define MAP_SEAFLOOR_CAVERN_ROOM9 (36 | (24 << 8)) -#define MAP_CAVE_OF_ORIGIN_ENTRANCE (37 | (24 << 8)) -#define MAP_CAVE_OF_ORIGIN_1F (38 | (24 << 8)) -#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B1F (39 | (24 << 8)) // -#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B2F (40 | (24 << 8)) // Ruby/Sapphire leftovers -#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B3F (41 | (24 << 8)) // -#define MAP_CAVE_OF_ORIGIN_B1F (42 | (24 << 8)) -#define MAP_VICTORY_ROAD_1F (43 | (24 << 8)) -#define MAP_VICTORY_ROAD_B1F (44 | (24 << 8)) -#define MAP_VICTORY_ROAD_B2F (45 | (24 << 8)) -#define MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM (46 | (24 << 8)) -#define MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM (47 | (24 << 8)) -#define MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM (48 | (24 << 8)) -#define MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM (49 | (24 << 8)) -#define MAP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM (50 | (24 << 8)) -#define MAP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM (51 | (24 << 8)) -#define MAP_NEW_MAUVILLE_ENTRANCE (52 | (24 << 8)) -#define MAP_NEW_MAUVILLE_INSIDE (53 | (24 << 8)) -#define MAP_ABANDONED_SHIP_DECK (54 | (24 << 8)) -#define MAP_ABANDONED_SHIP_CORRIDORS_1F (55 | (24 << 8)) -#define MAP_ABANDONED_SHIP_ROOMS_1F (56 | (24 << 8)) -#define MAP_ABANDONED_SHIP_CORRIDORS_B1F (57 | (24 << 8)) -#define MAP_ABANDONED_SHIP_ROOMS_B1F (58 | (24 << 8)) -#define MAP_ABANDONED_SHIP_ROOMS2_B1F (59 | (24 << 8)) -#define MAP_ABANDONED_SHIP_UNDERWATER1 (60 | (24 << 8)) -#define MAP_ABANDONED_SHIP_ROOM_B1F (61 | (24 << 8)) -#define MAP_ABANDONED_SHIP_ROOMS2_1F (62 | (24 << 8)) -#define MAP_ABANDONED_SHIP_CAPTAINS_OFFICE (63 | (24 << 8)) -#define MAP_ABANDONED_SHIP_UNDERWATER2 (64 | (24 << 8)) -#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS (65 | (24 << 8)) -#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS (66 | (24 << 8)) -#define MAP_ISLAND_CAVE (67 | (24 << 8)) -#define MAP_ANCIENT_TOMB (68 | (24 << 8)) -#define MAP_UNDERWATER_ROUTE134 (69 | (24 << 8)) -#define MAP_UNDERWATER_SEALED_CHAMBER (70 | (24 << 8)) -#define MAP_SEALED_CHAMBER_OUTER_ROOM (71 | (24 << 8)) -#define MAP_SEALED_CHAMBER_INNER_ROOM (72 | (24 << 8)) -#define MAP_SCORCHED_SLAB (73 | (24 << 8)) -#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_1F (74 | (24 << 8)) // -#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B1F (75 | (24 << 8)) // Ruby/Sapphire leftovers -#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B2F (76 | (24 << 8)) // -#define MAP_SKY_PILLAR_ENTRANCE (77 | (24 << 8)) -#define MAP_SKY_PILLAR_OUTSIDE (78 | (24 << 8)) -#define MAP_SKY_PILLAR_1F (79 | (24 << 8)) -#define MAP_SKY_PILLAR_2F (80 | (24 << 8)) -#define MAP_SKY_PILLAR_3F (81 | (24 << 8)) -#define MAP_SKY_PILLAR_4F (82 | (24 << 8)) -#define MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM (83 | (24 << 8)) -#define MAP_SKY_PILLAR_5F (84 | (24 << 8)) -#define MAP_SKY_PILLAR_TOP (85 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_1F (86 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_2F_1R (87 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_2F_2R (88 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_3F_1R (89 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_3F_2R (90 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_4F (91 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_3F_3R (92 | (24 << 8)) -#define MAP_MAGMA_HIDEOUT_2F_3R (93 | (24 << 8)) -#define MAP_MIRAGE_TOWER_1F (94 | (24 << 8)) -#define MAP_MIRAGE_TOWER_2F (95 | (24 << 8)) -#define MAP_MIRAGE_TOWER_3F (96 | (24 << 8)) -#define MAP_MIRAGE_TOWER_4F (97 | (24 << 8)) -#define MAP_DESERT_UNDERPASS (98 | (24 << 8)) -#define MAP_ARTISAN_CAVE_B1F (99 | (24 << 8)) -#define MAP_ARTISAN_CAVE_1F (100 | (24 << 8)) -#define MAP_UNDERWATER_MARINE_CAVE (101 | (24 << 8)) -#define MAP_MARINE_CAVE_ENTRANCE (102 | (24 << 8)) -#define MAP_MARINE_CAVE_END (103 | (24 << 8)) -#define MAP_TERRA_CAVE_ENTRANCE (104 | (24 << 8)) -#define MAP_TERRA_CAVE_END (105 | (24 << 8)) -#define MAP_ALTERING_CAVE (106 | (24 << 8)) -#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8)) - -// Map Group 25 -#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8)) -#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8)) -#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8)) -#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8)) -#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8)) -#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8)) -#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8)) -#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8)) -#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8)) -#define MAP_TRADE_CENTER (25 | (25 << 8)) -#define MAP_RECORD_CORNER (26 | (25 << 8)) -#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_29 (29 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_30 (30 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_31 (31 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_32 (32 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_33 (33 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_34 (34 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8)) -#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8)) -#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8)) -#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8)) -#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_01 (44 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_02 (45 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_03 (46 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_04 (47 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_05 (48 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_06 (49 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_07 (50 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_08 (51 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_09 (52 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_10 (53 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_11 (54 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_12 (55 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_13 (56 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_14 (57 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_15 (58 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE_16 (59 | (25 << 8)) -#define MAP_UNION_ROOM (60 | (25 << 8)) - -// Map Group 26 -#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8)) -#define MAP_SAFARI_ZONE_NORTHEAST (1 | (26 << 8)) -#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8)) -#define MAP_SAFARI_ZONE_SOUTHEAST (3 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8)) -#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8)) -#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8)) -#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8)) -#define MAP_SAFARI_ZONE_EM_1 (12 | (26 << 8)) -#define MAP_SAFARI_ZONE_EM_2 (13 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR_2 (16 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM_2 (17 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_1 (37 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_2 (38 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_3 (39 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_1 (41 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER (42 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_2 (43 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_3 (44 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_4 (45 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_5 (47 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_6 (48 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_7 (49 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_8 (51 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE_9 (52 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8)) -#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8)) -#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8)) -#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8)) -#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8)) -#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8)) -#define MAP_TRAINER_HILL_1F (61 | (26 << 8)) -#define MAP_TRAINER_HILL_2F (62 | (26 << 8)) -#define MAP_TRAINER_HILL_3F (63 | (26 << 8)) -#define MAP_TRAINER_HILL_4F (64 | (26 << 8)) -#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8)) -#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8)) -#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8)) -#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8)) -#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8)) -#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP_1 (71 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP_2 (72 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP_3 (73 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP_4 (74 | (26 << 8)) -#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_01 (76 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_02 (77 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_03 (78 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_04 (79 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_05 (80 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_06 (81 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_07 (82 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_08 (83 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_09 (84 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_10 (85 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN_11 (86 | (26 << 8)) -#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8)) -#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8)) - -// Map Group 27 -#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8)) -#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8)) - -// Map Group 28 -#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8)) - -// Map Group 29 -#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE1 (3 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE2 (4 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE3 (5 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE4 (6 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE5 (7 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE6 (8 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE7 (9 | (29 << 8)) -#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE8 (10 | (29 << 8)) -#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (11 | (29 << 8)) -#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (12 | (29 << 8)) - -// Map Group 30 -#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8)) - -// Map Group 31 -#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8)) - -// Map Group 32 -#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8)) -#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8)) -#define MAP_ROUTE119_HOUSE (2 | (32 << 8)) - -// Map Group 33 -#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8)) - - #define MAP_NONE (0x7F | (0x7F << 8)) #define MAP_UNDEFINED (0xFF | (0xFF << 8)) - #define MAP_GROUP(map) (MAP_##map >> 8) #define MAP_NUM(map) (MAP_##map & 0xFF) From a0dcf770bc2d98d4fed7562e5bd03017fbff0cde Mon Sep 17 00:00:00 2001 From: garak Date: Tue, 26 Feb 2019 20:49:26 -0500 Subject: [PATCH 039/318] name map connections --- data/connections.s | 242 ++++++++++++++++++++------------------- include/constants/maps.h | 2 + 2 files changed, 124 insertions(+), 120 deletions(-) diff --git a/data/connections.s b/data/connections.s index 15c02ebbe..ff011533d 100644 --- a/data/connections.s +++ b/data/connections.s @@ -1,501 +1,503 @@ +#include "constants/maps.h" .include "asm/macros.inc" .section .rodata gUnknown_8352754:: @ 8352754 - connection up, 0, 0x313 - connection down, 0, 0x327 + connection up, 0, MAP_ROUTE1 + connection down, 0, MAP_ROUTE21_NORTH gUnknown_835276C:: @ 835276C .4byte 2 .4byte gUnknown_8352754 gUnknown_8352774:: @ 8352774 - connection up, 12, 0x314 - connection down, 12, 0x313 - connection left, 10, 0x329 + connection up, 12, MAP_ROUTE2 + connection down, 12, MAP_ROUTE1 + connection left, 10, MAP_ROUTE22 gUnknown_8352798:: @ 8352798 .4byte 3 .4byte gUnknown_8352774 gUnknown_83527A0:: @ 83527A0 - connection down, 12, 0x314 - connection right, 10, 0x315 + connection down, 12, MAP_ROUTE2 + connection right, 10, MAP_ROUTE3 gUnknown_83527B8:: @ 83527B8 .4byte 2 .4byte gUnknown_83527A0 gUnknown_83527C0:: @ 83527C0 - connection up, 12, 0x32B - connection down, 0, 0x317 - connection left, 10, 0x316 - connection right, 10, 0x31B + connection up, 12, MAP_ROUTE24 + connection down, 0, MAP_ROUTE5 + connection left, 10, MAP_ROUTE4 + connection right, 10, MAP_ROUTE9 gUnknown_83527F0:: @ 83527F0 .4byte 4 .4byte gUnknown_83527C0 gUnknown_83527F8:: @ 83527F8 - connection up, 0, 0x31C - connection down, 0, 0x31E - connection left, 0, 0x31A + connection up, 0, MAP_ROUTE10 + connection down, 0, MAP_ROUTE12 + connection left, 0, MAP_ROUTE8 gUnknown_835281C:: @ 835281C .4byte 3 .4byte gUnknown_83527F8 gUnknown_8352824:: @ 8352824 - connection up, 12, 0x318 - connection right, 10, 0x31D + connection up, 12, MAP_ROUTE6 + connection right, 10, MAP_ROUTE11 gUnknown_835283C:: @ 835283C .4byte 2 .4byte gUnknown_8352824 gUnknown_8352844:: @ 8352844 - connection left, 10, 0x322 - connection right, 10, 0x319 + connection left, 10, MAP_ROUTE16 + connection right, 10, MAP_ROUTE7 gUnknown_835285C:: @ 835285C .4byte 2 .4byte gUnknown_8352844 gUnknown_8352864:: @ 8352864 - connection down, 12, 0x325 - connection left, 10, 0x324 - connection right, 10, 0x321 + connection down, 12, MAP_ROUTE19 + connection left, 10, MAP_ROUTE18 + connection right, 10, MAP_ROUTE15 gUnknown_8352888:: @ 8352888 .4byte 3 .4byte gUnknown_8352864 gUnknown_8352890:: @ 8352890 - connection up, 0, 0x328 - connection right, 0, 0x326 + connection up, 0, MAP_ROUTE21_SOUTH + connection right, 0, MAP_ROUTE20 gUnknown_83528A8:: @ 83528A8 .4byte 2 .4byte gUnknown_8352890 gUnknown_83528B0:: @ 83528B0 - connection down, 0, 0x32A + connection down, 0, MAP_ROUTE23 gUnknown_83528BC:: @ 83528BC .4byte 1 .4byte gUnknown_83528B0 gUnknown_83528C4:: @ 83528C4 - connection up, 0, 0x317 - connection down, 12, 0x318 - connection left, 10, 0x319 - connection right, 10, 0x31A + connection up, 0, MAP_ROUTE5 + connection down, 12, MAP_ROUTE6 + connection left, 10, MAP_ROUTE7 + connection right, 10, MAP_ROUTE8 gUnknown_83528F4:: @ 83528F4 .4byte 4 .4byte gUnknown_83528C4 gUnknown_83528FC:: @ 83528FC - connection up, 0, 0x317 - connection down, 12, 0x318 - connection left, 10, 0x319 - connection right, 10, 0x31A + connection up, 0, MAP_ROUTE5 + connection down, 12, MAP_ROUTE6 + connection left, 10, MAP_ROUTE7 + connection right, 10, MAP_ROUTE8 gUnknown_835292C:: @ 835292C .4byte 4 .4byte gUnknown_83528FC gUnknown_8352934:: @ 8352934 - connection down, 0, 0x32E - connection right, -120, 0x32D + connection down, 0, MAP_ONEISLAND_TREASUREBEACH + connection right, -120, MAP_ONEISLAND_KINDLEROAD gUnknown_835294C:: @ 835294C .4byte 2 .4byte gUnknown_8352934 gUnknown_8352954:: @ 8352954 - connection up, 24, 0x32F + connection up, 24, MAP_TWOISLAND_CAPEBRINK gUnknown_8352960:: @ 8352960 .4byte 1 .4byte gUnknown_8352954 gUnknown_8352968:: @ 8352968 - connection down, 0, 0x331 - connection left, 0, 0x330 + connection down, 0, MAP_THREEISLAND_PORT + connection left, 0, MAP_THREEISLAND_BONDBRIDGE gUnknown_8352980:: @ 8352980 .4byte 2 .4byte gUnknown_8352968 gUnknown_8352988:: @ 8352988 - connection up, -48, 0x337 - connection right, 0, 0x338 + connection up, -48, MAP_FIVEISLAND_WATERLABYRINTH + connection right, 0, MAP_FIVEISLAND_MEADOW gUnknown_83529A0:: @ 83529A0 .4byte 2 .4byte gUnknown_8352988 gUnknown_83529A8:: @ 83529A8 - connection up, -48, 0x33E - connection down, 0, 0x33F + connection up, -48, MAP_SEVENISLAND_TRAINERTOWER + connection down, 0, MAP_SEVENISLAND_SEVAULTCANYON_ENTRANCE gUnknown_83529C0:: @ 83529C0 .4byte 2 .4byte gUnknown_83529A8 gUnknown_83529C8:: @ 83529C8 - connection right, -40, 0x33C + connection right, -40, MAP_SIXISLAND_WATERPATH gUnknown_83529D4:: @ 83529D4 .4byte 1 .4byte gUnknown_83529C8 gUnknown_83529DC:: @ 83529DC - connection up, -12, 0x301 - connection down, 0, 0x300 + connection up, -12, MAP_VIRIDIANCITY + connection down, 0, MAP_PALLETTOWN gUnknown_83529F4:: @ 83529F4 .4byte 2 .4byte gUnknown_83529DC gUnknown_83529FC:: @ 83529FC - connection up, -12, 0x302 - connection down, -12, 0x301 + connection up, -12, MAP_PEWTERCITY + connection down, -12, MAP_VIRIDIANCITY gUnknown_8352A14:: @ 8352A14 .4byte 2 .4byte gUnknown_83529FC gUnknown_8352A1C:: @ 8352A1C - connection up, 60, 0x316 - connection left, -10, 0x302 + connection up, 60, MAP_ROUTE4 + connection left, -10, MAP_PEWTERCITY gUnknown_8352A34:: @ 8352A34 .4byte 2 .4byte gUnknown_8352A1C gUnknown_8352A3C:: @ 8352A3C - connection down, -60, 0x315 - connection right, -10, 0x303 + connection down, -60, MAP_ROUTE3 + connection right, -10, MAP_CERULEANCITY gUnknown_8352A54:: @ 8352A54 .4byte 2 .4byte gUnknown_8352A3C gUnknown_8352A5C:: @ 8352A5C - connection up, 0, 0x303 - connection down, 0, 0x30B + connection up, 0, MAP_CERULEANCITY + connection down, 0, MAP_SAFFRONCITY_DUPLICATE gUnknown_8352A74:: @ 8352A74 .4byte 2 .4byte gUnknown_8352A5C gUnknown_8352A7C:: @ 8352A7C - connection up, 0, 0x30B - connection down, -12, 0x305 + connection up, 0, MAP_SAFFRONCITY_DUPLICATE + connection down, -12, MAP_VERMILIONCITY gUnknown_8352A94:: @ 8352A94 .4byte 2 .4byte gUnknown_8352A7C gUnknown_8352A9C:: @ 8352A9C - connection left, -10, 0x306 - connection right, -10, 0x30B + connection left, -10, MAP_CELADONCITY + connection right, -10, MAP_SAFFRONCITY_DUPLICATE gUnknown_8352AB4:: @ 8352AB4 .4byte 2 .4byte gUnknown_8352A9C gUnknown_8352ABC:: @ 8352ABC - connection left, -10, 0x30B - connection right, 0, 0x304 + connection left, -10, MAP_SAFFRONCITY_DUPLICATE + connection right, 0, MAP_LAVENDERTOWN gUnknown_8352AD4:: @ 8352AD4 .4byte 2 .4byte gUnknown_8352ABC gUnknown_8352ADC:: @ 8352ADC - connection left, -10, 0x303 - connection right, 0, 0x31C + connection left, -10, MAP_CERULEANCITY + connection right, 0, MAP_ROUTE10 gUnknown_8352AF4:: @ 8352AF4 .4byte 2 .4byte gUnknown_8352ADC gUnknown_8352AFC:: @ 8352AFC - connection down, 0, 0x304 - connection left, 0, 0x31B + connection down, 0, MAP_LAVENDERTOWN + connection left, 0, MAP_ROUTE9 gUnknown_8352B14:: @ 8352B14 .4byte 2 .4byte gUnknown_8352AFC gUnknown_8352B1C:: @ 8352B1C - connection left, -10, 0x305 - connection right, -60, 0x31E + connection left, -10, MAP_VERMILIONCITY + connection right, -60, MAP_ROUTE12 gUnknown_8352B34:: @ 8352B34 .4byte 2 .4byte gUnknown_8352B1C gUnknown_8352B3C:: @ 8352B3C - connection up, 0, 0x304 - connection down, -48, 0x31F - connection left, 60, 0x31D + connection up, 0, MAP_LAVENDERTOWN + connection down, -48, MAP_ROUTE13 + connection left, 60, MAP_ROUTE11 gUnknown_8352B60:: @ 8352B60 .4byte 3 .4byte gUnknown_8352B3C gUnknown_8352B68:: @ 8352B68 - connection up, 48, 0x31E - connection left, 0, 0x320 + connection up, 48, MAP_ROUTE12 + connection left, 0, MAP_ROUTE14 gUnknown_8352B80:: @ 8352B80 .4byte 2 .4byte gUnknown_8352B68 gUnknown_8352B88:: @ 8352B88 - connection left, 40, 0x321 - connection right, 0, 0x31F + connection left, 40, MAP_ROUTE15 + connection right, 0, MAP_ROUTE13 gUnknown_8352BA0:: @ 8352BA0 .4byte 2 .4byte gUnknown_8352B88 gUnknown_8352BA8:: @ 8352BA8 - connection left, -10, 0x307 - connection right, -40, 0x320 + connection left, -10, MAP_FUCHSIACITY + connection right, -40, MAP_ROUTE14 gUnknown_8352BC0:: @ 8352BC0 .4byte 2 .4byte gUnknown_8352BA8 gUnknown_8352BC8:: @ 8352BC8 - connection down, 0, 0x323 - connection right, -10, 0x306 + connection down, 0, MAP_ROUTE17 + connection right, -10, MAP_CELADONCITY gUnknown_8352BE0:: @ 8352BE0 .4byte 2 .4byte gUnknown_8352BC8 gUnknown_8352BE8:: @ 8352BE8 - connection up, 0, 0x322 - connection down, 0, 0x324 + connection up, 0, MAP_ROUTE16 + connection down, 0, MAP_ROUTE18 gUnknown_8352C00:: @ 8352C00 .4byte 2 .4byte gUnknown_8352BE8 gUnknown_8352C08:: @ 8352C08 - connection up, 0, 0x323 - connection right, -10, 0x307 + connection up, 0, MAP_ROUTE17 + connection right, -10, MAP_FUCHSIACITY gUnknown_8352C20:: @ 8352C20 .4byte 2 .4byte gUnknown_8352C08 gUnknown_8352C28:: @ 8352C28 - connection up, -12, 0x307 - connection left, 40, 0x326 + connection up, -12, MAP_FUCHSIACITY + connection left, 40, MAP_ROUTE20 gUnknown_8352C40:: @ 8352C40 .4byte 2 .4byte gUnknown_8352C28 gUnknown_8352C48:: @ 8352C48 - connection left, 0, 0x308 - connection right, -40, 0x325 + connection left, 0, MAP_CINNABARISLAND + connection right, -40, MAP_ROUTE19 gUnknown_8352C60:: @ 8352C60 .4byte 2 .4byte gUnknown_8352C48 gUnknown_8352C68:: @ 8352C68 - connection up, 0, 0x300 - connection down, 0, 0x328 + connection up, 0, MAP_PALLETTOWN + connection down, 0, MAP_ROUTE21_SOUTH gUnknown_8352C80:: @ 8352C80 .4byte 2 .4byte gUnknown_8352C68 gUnknown_8352C88:: @ 8352C88 - connection up, 0, 0x327 - connection down, 0, 0x308 + connection up, 0, MAP_ROUTE21_NORTH + connection down, 0, MAP_CINNABARISLAND gUnknown_8352CA0:: @ 8352CA0 .4byte 2 .4byte gUnknown_8352C88 gUnknown_8352CA8:: @ 8352CA8 - connection up, 0, 0x32A - connection right, -10, 0x301 + connection up, 0, MAP_ROUTE23 + connection right, -10, MAP_VIRIDIANCITY gUnknown_8352CC0:: @ 8352CC0 .4byte 2 .4byte gUnknown_8352CA8 gUnknown_8352CC8:: @ 8352CC8 - connection up, 0, 0x309 - connection down, 0, 0x329 + connection up, 0, MAP_INDIGOPLATEAU_EXTERIOR + connection down, 0, MAP_ROUTE22 gUnknown_8352CE0:: @ 8352CE0 .4byte 2 .4byte gUnknown_8352CC8 gUnknown_8352CE8:: @ 8352CE8 - connection down, -12, 0x303 - connection right, 0, 0x32C + connection down, -12, MAP_CERULEANCITY + connection right, 0, MAP_ROUTE25 gUnknown_8352D00:: @ 8352D00 .4byte 2 .4byte gUnknown_8352CE8 gUnknown_8352D08:: @ 8352D08 - connection left, 0, 0x32B + connection left, 0, MAP_ROUTE24 gUnknown_8352D14:: @ 8352D14 .4byte 1 .4byte gUnknown_8352D08 gUnknown_8352D1C:: @ 8352D1C - connection left, 120, 0x30C + connection left, 120, MAP_ONEISLAND gUnknown_8352D28:: @ 8352D28 .4byte 1 .4byte gUnknown_8352D1C gUnknown_8352D30:: @ 8352D30 - connection up, 0, 0x30C + connection up, 0, MAP_ONEISLAND gUnknown_8352D3C:: @ 8352D3C .4byte 1 .4byte gUnknown_8352D30 gUnknown_8352D44:: @ 8352D44 - connection down, -24, 0x30D + connection down, -24, MAP_TWOISLAND gUnknown_8352D50:: @ 8352D50 .4byte 1 .4byte gUnknown_8352D44 gUnknown_8352D58:: @ 8352D58 - connection right, 0, 0x30E + connection right, 0, MAP_THREEISLAND gUnknown_8352D64:: @ 8352D64 .4byte 1 .4byte gUnknown_8352D58 gUnknown_8352D6C:: @ 8352D6C - connection up, 0, 0x30E + connection up, 0, MAP_THREEISLAND gUnknown_8352D78:: @ 8352D78 .4byte 1 .4byte gUnknown_8352D6C gUnknown_8352D80:: @ 8352D80 - connection up, 0, 0x30E + connection up, 0, MAP_THREEISLAND gUnknown_8352D8C:: @ 8352D8C .4byte 1 .4byte gUnknown_8352D80 gUnknown_8352D94:: @ 8352D94 - connection up, 0, 0x30E + connection up, 0, MAP_THREEISLAND gUnknown_8352DA0:: @ 8352DA0 .4byte 1 .4byte gUnknown_8352D94 gUnknown_8352DA8:: @ 8352DA8 - connection down, -48, 0x337 + connection down, -48, MAP_FIVEISLAND_WATERLABYRINTH gUnknown_8352DB4:: @ 8352DB4 .4byte 1 .4byte gUnknown_8352DA8 gUnknown_8352DBC:: @ 8352DBC - connection up, 48, 0x336 - connection down, 48, 0x310 + connection up, 48, MAP_FIVEISLAND_RESORTGORGEOUS + connection down, 48, MAP_FIVEISLAND gUnknown_8352DD4:: @ 8352DD4 .4byte 2 .4byte gUnknown_8352DBC gUnknown_8352DDC:: @ 8352DDC - connection left, 0, 0x310 - connection right, 20, 0x339 + connection left, 0, MAP_FIVEISLAND + connection right, 20, MAP_FIVEISLAND_MEMORIALPILLAR gUnknown_8352DF4:: @ 8352DF4 .4byte 2 .4byte gUnknown_8352DDC gUnknown_8352DFC:: @ 8352DFC - connection left, -20, 0x338 + connection left, -20, MAP_FIVEISLAND_MEADOW gUnknown_8352E08:: @ 8352E08 .4byte 1 .4byte gUnknown_8352DFC gUnknown_8352E10:: @ 8352E10 - connection down, 0, 0x33B + connection down, 0, MAP_SIXISLAND_GREENPATH gUnknown_8352E1C:: @ 8352E1C .4byte 1 .4byte gUnknown_8352E10 gUnknown_8352E24:: @ 8352E24 - connection up, 0, 0x33A - connection right, 0, 0x33C + connection up, 0, MAP_SIXISLAND_OUTCASTISLAND + connection right, 0, MAP_SIXISLAND_WATERPATH gUnknown_8352E3C:: @ 8352E3C .4byte 2 .4byte gUnknown_8352E24 gUnknown_8352E44:: @ 8352E44 - connection left, 0, 0x33B - connection left, 40, 0x312 - connection left, 80, 0x33D + connection left, 0, MAP_SIXISLAND_GREENPATH + connection left, 40, MAP_SIXISLAND + connection left, 80, MAP_SIXISLAND_RUINVALLEY gUnknown_8352E68:: @ 8352E68 .4byte 3 .4byte gUnknown_8352E44 gUnknown_8352E70:: @ 8352E70 - connection right, -80, 0x33C + connection right, -80, MAP_SIXISLAND_WATERPATH gUnknown_8352E7C:: @ 8352E7C .4byte 1 .4byte gUnknown_8352E70 gUnknown_8352E84:: @ 8352E84 - connection down, 48, 0x311 + connection down, 48, MAP_SEVENISLAND gUnknown_8352E90:: @ 8352E90 .4byte 1 .4byte gUnknown_8352E84 gUnknown_8352E98:: @ 8352E98 - connection up, 0, 0x311 - connection right, 20, 0x340 + connection up, 0, MAP_SEVENISLAND + connection right, 20, MAP_SEVENISLAND_SEVAULTCANYON gUnknown_8352EB0:: @ 8352EB0 .4byte 2 .4byte gUnknown_8352E98 gUnknown_8352EB8:: @ 8352EB8 - connection down, -48, 0x341 - connection left, -20, 0x33F + connection down, -48, MAP_SEVENISLAND_TANOBYRUINS + connection left, -20, MAP_SEVENISLAND_SEVAULTCANYON_ENTRANCE gUnknown_8352ED0:: @ 8352ED0 .4byte 2 .4byte gUnknown_8352EB8 gUnknown_8352ED8:: @ 8352ED8 - connection up, 48, 0x340 + connection up, 48, MAP_SEVENISLAND_SEVAULTCANYON gUnknown_8352EE4:: @ 8352EE4 .4byte 1 .4byte gUnknown_8352ED8 + diff --git a/include/constants/maps.h b/include/constants/maps.h index 3b1c1420d..8a8a023a8 100644 --- a/include/constants/maps.h +++ b/include/constants/maps.h @@ -1,6 +1,8 @@ #ifndef GUARD_CONSTANTS_MAPS_H #define GUARD_CONSTANTS_MAPS_H +#include "constants/map_groups.h" + #define MAP_NONE (0x7F | (0x7F << 8)) #define MAP_UNDEFINED (0xFF | (0xFF << 8)) From fbd00ab00dfc77396f0201f5fbdd2a1c8d3dd8b8 Mon Sep 17 00:00:00 2001 From: garak Date: Sat, 2 Mar 2019 17:29:35 -0500 Subject: [PATCH 040/318] swap SaffronCity map names --- data/connections.s | 8 ++++---- data/maps/groups.inc | 6 +++--- include/constants/map_groups.h | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/data/connections.s b/data/connections.s index ff011533d..3e1b03999 100644 --- a/data/connections.s +++ b/data/connections.s @@ -187,14 +187,14 @@ gUnknown_8352A54:: @ 8352A54 gUnknown_8352A5C:: @ 8352A5C connection up, 0, MAP_CERULEANCITY - connection down, 0, MAP_SAFFRONCITY_DUPLICATE + connection down, 0, MAP_SAFFRONCITY gUnknown_8352A74:: @ 8352A74 .4byte 2 .4byte gUnknown_8352A5C gUnknown_8352A7C:: @ 8352A7C - connection up, 0, MAP_SAFFRONCITY_DUPLICATE + connection up, 0, MAP_SAFFRONCITY connection down, -12, MAP_VERMILIONCITY gUnknown_8352A94:: @ 8352A94 @@ -203,14 +203,14 @@ gUnknown_8352A94:: @ 8352A94 gUnknown_8352A9C:: @ 8352A9C connection left, -10, MAP_CELADONCITY - connection right, -10, MAP_SAFFRONCITY_DUPLICATE + connection right, -10, MAP_SAFFRONCITY gUnknown_8352AB4:: @ 8352AB4 .4byte 2 .4byte gUnknown_8352A9C gUnknown_8352ABC:: @ 8352ABC - connection left, -10, MAP_SAFFRONCITY_DUPLICATE + connection left, -10, MAP_SAFFRONCITY connection right, 0, MAP_LAVENDERTOWN gUnknown_8352AD4:: @ 8352AD4 diff --git a/data/maps/groups.inc b/data/maps/groups.inc index c21c970af..4785ec2b7 100644 --- a/data/maps/groups.inc +++ b/data/maps/groups.inc @@ -592,10 +592,10 @@ CinnabarIsland:: @ 83506F8 IndigoPlateau_Exterior:: @ 8350714 .incbin "baserom.gba", 0x350714, 0x1C -SaffronCity:: @ 8350730 +SaffronCity_Duplicate:: @ 8350730 .incbin "baserom.gba", 0x350730, 0x1C -SaffronCity_Duplicate:: @ 835074C +SaffronCity:: @ 835074C .incbin "baserom.gba", 0x35074C, 0x1C OneIsland:: @ 8350768 @@ -1478,8 +1478,8 @@ gMapGroup_03:: @ 83522F4 .4byte FuchsiaCity .4byte CinnabarIsland .4byte IndigoPlateau_Exterior - .4byte SaffronCity .4byte SaffronCity_Duplicate + .4byte SaffronCity .4byte OneIsland .4byte TwoIsland .4byte ThreeIsland diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index e571197f3..dd2ebf155 100644 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -206,8 +206,8 @@ #define MAP_FUCHSIACITY (7 | (3 << 8)) #define MAP_CINNABARISLAND (8 | (3 << 8)) #define MAP_INDIGOPLATEAU_EXTERIOR (9 | (3 << 8)) -#define MAP_SAFFRONCITY (10 | (3 << 8)) -#define MAP_SAFFRONCITY_DUPLICATE (11 | (3 << 8)) +#define MAP_SAFFRONCITY_DUPLICATE (10 | (3 << 8)) +#define MAP_SAFFRONCITY (11 | (3 << 8)) #define MAP_ONEISLAND (12 | (3 << 8)) #define MAP_TWOISLAND (13 | (3 << 8)) #define MAP_THREEISLAND (14 | (3 << 8)) From d61ffb2b99d2ac3c4c287c0066621307af40d600 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 Mar 2019 15:13:19 -0400 Subject: [PATCH 041/318] Match sub_8146C30 --- src/menews_jisan.c | 136 ++++++++++++++------------------------------- 1 file changed, 42 insertions(+), 94 deletions(-) diff --git a/src/menews_jisan.c b/src/menews_jisan.c index b4fe080bf..530762990 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -10,76 +10,24 @@ static u32 sub_8146E0C(struct MysteryEventStruct *); static void sub_8146DA0(struct MysteryEventStruct *); static void sub_8146D94(struct MysteryEventStruct *); -#ifdef NONMATCHING void sub_8146C30(u32 a0) { struct MysteryEventStruct *r5 = sub_8143D94(); r5->unk_0_0 = a0; - asm_comment("The switch logic does not match. Specifically, the \"bhi\" is replaced with a \"bls\" and the comparisons with 1 and 3 are swapped chronologically."); switch (a0) { - case 0: - r5->unk_1 = (Random() % 15) + 16; - break; - case 1: - break; - case 2: - break; - case 3: - r5->unk_1 = (Random() % 15) + 1; - break; + case 0: + break; + case 1: + case 2: + r5->unk_1 = (Random() % 15) + 16; + break; + case 3: + r5->unk_1 = (Random() % 15) + 1; + break; } } -#else -NAKED -void sub_8146C30(u32 a0) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tadds r4, r0, 0\n" - "\tbl sub_8143D94\n" - "\tadds r5, r0, 0\n" - "\tmovs r0, 0x3\n" - "\tadds r1, r4, 0\n" - "\tands r1, r0\n" - "\tldrb r2, [r5]\n" - "\tmovs r0, 0x4\n" - "\tnegs r0, r0\n" - "\tands r0, r2\n" - "\torrs r0, r1\n" - "\tstrb r0, [r5]\n" - "\tcmp r4, 0x2\n" - "\tbhi _08146C56\n" - "\tcmp r4, 0x1\n" - "\tbcs _08146C5C\n" - "\tb _08146C80\n" - "_08146C56:\n" - "\tcmp r4, 0x3\n" - "\tbeq _08146C6E\n" - "\tb _08146C80\n" - "_08146C5C:\n" - "\tbl Random\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmovs r1, 0xF\n" - "\tbl __umodsi3\n" - "\tadds r0, 0x10\n" - "\tb _08146C7E\n" - "_08146C6E:\n" - "\tbl Random\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmovs r1, 0xF\n" - "\tbl __umodsi3\n" - "\tadds r0, 0x1\n" - "_08146C7E:\n" - "\tstrb r0, [r5, 0x1]\n" - "_08146C80:\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif void sub_8146C88(void) { @@ -118,26 +66,26 @@ u16 sub_8146CE8(void) switch (r5) { - case 0: - break; - case 1: - *r6 = sub_8146D74(r4); - break; - case 2: - *r6 = sub_8146D74(r4); - break; - case 3: - break; - case 4: - *r6 = sub_8146D74(r4); - sub_8146DA0(r4); - break; - case 5: - *r6 = sub_8146D74(r4); - sub_8146D94(r4); - break; - case 6: - break; + case 0: + break; + case 1: + *r6 = sub_8146D74(r4); + break; + case 2: + *r6 = sub_8146D74(r4); + break; + case 3: + break; + case 4: + *r6 = sub_8146D74(r4); + sub_8146DA0(r4); + break; + case 5: + *r6 = sub_8146D74(r4); + sub_8146D94(r4); + break; + case 6: + break; } return r5; @@ -182,18 +130,18 @@ static u32 sub_8146E0C(struct MysteryEventStruct *a0) r0 = *a0; switch (r0.unk_0_0) { - case 0: - return 3; - case 1: - return 1; - case 2: - return 2; - case 3: - if ((u8)r0.unk_0_2 < 3) - return 4; - return 5; - default: - AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/menews_jisan.c", 383); - return 0; + case 0: + return 3; + case 1: + return 1; + case 2: + return 2; + case 3: + if ((u8)r0.unk_0_2 < 3) + return 4; + return 5; + default: + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/menews_jisan.c", 383); + return 0; } } From d4ca41c0e2ce6c6d5dd13314cc84c6b01728dde6 Mon Sep 17 00:00:00 2001 From: SatoMew Date: Sat, 6 Apr 2019 22:26:57 +0100 Subject: [PATCH 042/318] Update README.md --- README.md | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index e1ba89794..435151d1f 100644 --- a/README.md +++ b/README.md @@ -4,31 +4,28 @@ This is a disassembly of Pokémon FireRed and LeafGreen. It builds the following ROM: -* pokefirered.gba `sha1: 41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc` +* **pokefirered.gba** `sha1: 41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc` -To set up the repository, see [**INSTALL.md**](INSTALL.md). +To set up the repository, see [INSTALL.md](INSTALL.md). ## See also -* Disassembly of [**Pokémon Red and Blue**][pokered] -* Disassembly of [**Pokémon Yellow**][pokeyellow] -* Disassembly of [**Pokémon Gold and Silver**][pokegold] -* Disassembly of [**Pokémon Crystal**][pokecrystal] -* Disassembly of [**Pokémon Pinball**][pokepinball] -* Disassembly of [**Pokémon TCG**][poketcg] -* Disassembly of [**Pokémon Ruby and Sapphire**][pokeruby] -* Disassembly of [**Pokémon Emerald**][pokeemerald] -* Discord: [**pret**][Discord] -* irc: **irc.freenode.net** [**#pret**][irc] +Other disassembly and/or decompilation projects: +* [**Pokémon Red and Blue**](https://github.com/pret/pokered) +* [**Pokémon Gold and Silver (Space World '97 demo)**](https://github.com/pret/pokegold-spaceworld) +* [**Pokémon Yellow**](https://github.com/pret/pokeyellow) +* [**Pokémon TCG**](https://github.com/pret/poketcg) +* [**Pokémon Pinball**](https://github.com/pret/pokepinball) +* [**Pokémon Stadium**](https://github.com/pret/pokestadium) +* [**Pokémon Gold and Silver**](https://github.com/pret/pokegold) +* [**Pokémon Crystal**](https://github.com/pret/pokecrystal) +* [**Pokémon Ruby and Sapphire**](https://github.com/pret/pokeruby) +* [**Pokémon Pinball: Ruby & Sapphire**](https://github.com/pret/pokepinballrs) +* [**Pokémon Mystery Dungeon: Red Rescue Team**](https://github.com/pret/pmd-red) +* [**Pokémon Emerald**](https://github.com/pret/pokeemerald) -[pokered]: https://github.com/pret/pokered -[pokeyellow]: https://github.com/pret/pokeyellow -[pokegold]: https://github.com/pret/pokegold -[pokecrystal]: https://github.com/pret/pokecrystal -[pokepinball]: https://github.com/pret/pokepinball -[poketcg]: https://github.com/pret/poketcg -[pokeruby]: https://github.com/pret/pokeruby -[pokeemerald]: https://github.com/pret/pokeemerald -[Discord]: https://discord.gg/6EuWgX9 -[irc]: https://kiwiirc.com/client/irc.freenode.net/?#pret + +## Contacts + +You can find us on [Discord](https://discord.gg/6EuWgX9) and [IRC](https://kiwiirc.com/client/irc.freenode.net/?#pret). From 1110daf2aedbec9737bfb1ae8cc572bba800d088 Mon Sep 17 00:00:00 2001 From: SatoMew Date: Sat, 6 Apr 2019 22:34:16 +0100 Subject: [PATCH 043/318] Forgot this --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 435151d1f..b8b9aa233 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Other disassembly and/or decompilation projects: * [**Pokémon Red and Blue**](https://github.com/pret/pokered) * [**Pokémon Gold and Silver (Space World '97 demo)**](https://github.com/pret/pokegold-spaceworld) * [**Pokémon Yellow**](https://github.com/pret/pokeyellow) -* [**Pokémon TCG**](https://github.com/pret/poketcg) +* [**Pokémon Trading Card Game**](https://github.com/pret/poketcg) * [**Pokémon Pinball**](https://github.com/pret/pokepinball) * [**Pokémon Stadium**](https://github.com/pret/pokestadium) * [**Pokémon Gold and Silver**](https://github.com/pret/pokegold) From be687a62757f39c8c9586193100c40b32791d164 Mon Sep 17 00:00:00 2001 From: SatoMew Date: Sun, 7 Apr 2019 10:25:34 +0100 Subject: [PATCH 044/318] Update INSTALL.md Added a missing installation step. --- INSTALL.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 203e532bb..1fa4146e4 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -20,9 +20,10 @@ To set up the repository: git clone https://github.com/pret/pokefirered git clone https://github.com/luckytyphlosion/agbcc -b new_layout_with_libs - cd agbcc + cd ./agbcc make make install prefix=../pokefirered + make install-sdk prefix=../pokefirered cd ../pokefirered ./build_tools.sh @@ -31,6 +32,10 @@ To build **pokefirered.gba**: make -j$(nproc) +To confirm it matches the official ROM image while building, do this instead: + + make compare -j$(nproc) + **Note:** If only `.c` or `.s` files were changed, turn off the dependency scanning temporarily. Changes to any other files will be ignored and the build will either fail or not reflect those changes. make -j$(nproc) NODEP=1 From 95ad810c0bd912ca38ee8e28c9f5932eccd07217 Mon Sep 17 00:00:00 2001 From: SatoMew Date: Sun, 7 Apr 2019 18:41:51 +0100 Subject: [PATCH 045/318] Stop recommending legacy WSL --- INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 1fa4146e4..fc08af81b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -8,9 +8,9 @@ Until further notice, this repository requires a **baserom.gba** file, which mus **macOS:** Get the [Xcode command-line tools](https://developer.apple.com/library/archive/technotes/tn2339/_index.html#//apple_ref/doc/uid/DTS40014588-CH1-DOWNLOADING_COMMAND_LINE_TOOLS_IS_NOT_AVAILABLE_IN_XCODE_FOR_MACOS_10_9__HOW_CAN_I_INSTALL_THEM_ON_MY_MACHINE_). -**Windows 10 (1709+):** Get the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/install-win10). For **Windows 10 (1607 & 1703)**, go [here](https://docs.microsoft.com/windows/wsl/install-legacy) instead. +**Windows 10 (1709+):** Get the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/install-win10). -**Windows Vista, 7, 8, 8.1, and 10 (1507 & 1511):** Get [Cygwin](https://cygwin.com/install.html) and [include](https://cygwin.com/cygwin-ug-net/setup-net.html#setup-packages) the `make`, `git`, `gcc-core`, `gcc-g++`, `libpng-devel` packages. +**Windows Vista, 7, 8, 8.1, and 10 (1507, 1511, 1607, 1703):** Get [Cygwin](https://cygwin.com/install.html) and [include](https://cygwin.com/cygwin-ug-net/setup-net.html#setup-packages) the `make`, `git`, `gcc-core`, `gcc-g++`, and `libpng-devel` packages. If you're on Windows 10 1607 or 1703 and use [the prerelease version of the Linux subsystem](https://docs.microsoft.com/windows/wsl/install-legacy), consider uninstalling it. ## Installation From 542d15bf7036c328dc54c3775c68ce64f64d8f80 Mon Sep 17 00:00:00 2001 From: SatoMew Date: Tue, 9 Apr 2019 14:52:56 +0100 Subject: [PATCH 046/318] decompile roulette_util.c --- asm/roulette_util.s | 1447 ------------------------------------------- ld_script.txt | 2 +- src/roulette_util.c | 526 ++++++++++++++++ 3 files changed, 527 insertions(+), 1448 deletions(-) delete mode 100644 asm/roulette_util.s create mode 100644 src/roulette_util.c diff --git a/asm/roulette_util.s b/asm/roulette_util.s deleted file mode 100644 index 532bf4684..000000000 --- a/asm/roulette_util.s +++ /dev/null @@ -1,1447 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D8BE4 -sub_80D8BE4: @ 80D8BE4 - push {lr} - movs r1, 0 - strb r1, [r0] - strh r1, [r0, 0x2] - adds r0, 0x4 - movs r2, 0xC0 - bl memset - pop {r0} - bx r0 - thumb_func_end sub_80D8BE4 - - thumb_func_start sub_80D8BF8 -sub_80D8BF8: @ 80D8BF8 - push {r4-r7,lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - cmp r6, 0xF - bhi _080D8C14 - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r5, r3, r0 - ldrb r7, [r5, 0x4] - lsrs r0, r7, 7 - cmp r0, 0 - beq _080D8C18 -_080D8C14: - movs r0, 0xFF - b _080D8C76 -_080D8C18: - ldrh r0, [r2] - movs r4, 0 - strh r0, [r5, 0x8] - ldrh r0, [r2, 0x2] - strh r0, [r5, 0xA] - ldrb r0, [r2, 0x4] - strb r0, [r5, 0xC] - ldrb r0, [r2, 0x5] - strb r0, [r5, 0xD] - ldrb r0, [r2, 0x6] - strb r0, [r5, 0xE] - ldrb r3, [r2, 0x7] - lsls r0, r3, 27 - lsrs r0, 27 - ldrb r2, [r5, 0xF] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - movs r0, 0x60 - ands r0, r3 - movs r2, 0x61 - negs r2, r2 - ands r1, r2 - orrs r1, r0 - lsls r3, 24 - asrs r3, 31 - lsls r3, 7 - movs r0, 0x7F - ands r1, r0 - orrs r1, r3 - strb r1, [r5, 0xF] - subs r0, 0xFF - ands r0, r7 - movs r2, 0x80 - orrs r0, r2 - strb r0, [r5, 0x4] - strb r4, [r5, 0x6] - strb r4, [r5, 0x5] - lsls r1, 24 - cmp r1, 0 - bge _080D8C70 - movs r0, 0xFF - b _080D8C72 -_080D8C70: - movs r0, 0x1 -_080D8C72: - strb r0, [r5, 0x7] - adds r0, r6, 0 -_080D8C76: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80D8BF8 - - thumb_func_start sub_80D8C7C -sub_80D8C7C: @ 80D8C7C - push {r4,lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r4, r1, 0 - cmp r4, 0xF - bhi _080D8CA8 - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r1, r2, r0 - ldrb r0, [r1, 0x4] - lsrs r0, 7 - cmp r0, 0 - beq _080D8CA8 - adds r0, r1, 0x4 - movs r1, 0 - movs r2, 0xC - bl memset - adds r0, r4, 0 - b _080D8CAA -_080D8CA8: - movs r0, 0xFF -_080D8CAA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80D8C7C - - thumb_func_start sub_80D8CB0 -sub_80D8CB0: @ 80D8CB0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r0, 0 - movs r0, 0 - mov r12, r0 - ldrb r1, [r5, 0x8] - cmp r12, r1 - bcc _080D8CC8 - b _080D8E60 -_080D8CC8: - movs r7, 0x1F - ldr r0, _080D8CF8 @ =0xfffffc1f - mov r10, r0 - movs r1, 0x7D - negs r1, r1 - mov r9, r1 - movs r0, 0x1F - mov r8, r0 -_080D8CD8: - ldrh r0, [r5, 0x6] - add r0, r12 - lsls r0, 1 - ldr r1, _080D8CFC @ =gPlttBufferFaded - adds r3, r0, r1 - ldr r1, _080D8D00 @ =gPlttBufferUnfaded - adds r6, r0, r1 - ldrb r0, [r5] - lsls r0, 25 - lsrs r0, 25 - cmp r0, 0x1 - beq _080D8D04 - cmp r0, 0x2 - beq _080D8D62 - b _080D8E4E - .align 2, 0 -_080D8CF8: .4byte 0xfffffc1f -_080D8CFC: .4byte gPlttBufferFaded -_080D8D00: .4byte gPlttBufferUnfaded -_080D8D04: - ldr r0, [r3] - lsls r2, r0, 27 - lsrs r0, r2, 27 - movs r1, 0x3 - ldrsb r1, [r5, r1] - adds r0, r1 - cmp r0, 0x1F - bhi _080D8D26 - lsrs r0, r2, 27 - adds r0, r1 - ands r0, r7 - ldrb r2, [r3] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3] -_080D8D26: - ldr r0, [r3] - lsls r2, r0, 22 - lsrs r0, r2, 27 - movs r1, 0x3 - ldrsb r1, [r5, r1] - adds r0, r1 - cmp r0, 0x1F - bhi _080D8D4A - lsrs r0, r2, 27 - adds r0, r1 - mov r1, r8 - ands r0, r1 - lsls r0, 5 - ldrh r2, [r3] - mov r1, r10 - ands r1, r2 - orrs r1, r0 - strh r1, [r3] -_080D8D4A: - ldr r0, [r3] - lsls r2, r0, 17 - lsrs r0, r2, 27 - movs r1, 0x3 - ldrsb r1, [r5, r1] - adds r0, r1 - cmp r0, 0x1F - bls _080D8D5C - b _080D8E4E -_080D8D5C: - lsrs r0, r2, 27 - adds r0, r1 - b _080D8E40 -_080D8D62: - movs r0, 0x3 - ldrsb r0, [r5, r0] - cmp r0, 0 - bge _080D8DD4 - ldr r0, [r3] - lsls r4, r0, 27 - lsrs r1, r4, 27 - movs r2, 0x3 - ldrsb r2, [r5, r2] - adds r1, r2 - ldr r0, [r6] - lsls r0, 27 - lsrs r0, 27 - cmp r1, r0 - blt _080D8D92 - lsrs r0, r4, 27 - adds r0, r2 - ands r0, r7 - ldrb r2, [r3] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3] -_080D8D92: - ldr r0, [r3] - lsls r4, r0, 22 - lsrs r1, r4, 27 - movs r2, 0x3 - ldrsb r2, [r5, r2] - adds r1, r2 - ldr r0, [r6] - lsls r0, 22 - lsrs r0, 27 - cmp r1, r0 - blt _080D8DBC - lsrs r0, r4, 27 - adds r0, r2 - mov r1, r8 - ands r0, r1 - lsls r0, 5 - ldrh r2, [r3] - mov r1, r10 - ands r1, r2 - orrs r1, r0 - strh r1, [r3] -_080D8DBC: - ldr r0, [r3] - lsls r4, r0, 17 - lsrs r1, r4, 27 - movs r2, 0x3 - ldrsb r2, [r5, r2] - adds r1, r2 - ldr r0, [r6] - lsls r0, 17 - lsrs r0, 27 - cmp r1, r0 - blt _080D8E4E - b _080D8E3C -_080D8DD4: - ldr r0, [r3] - lsls r4, r0, 27 - lsrs r1, r4, 27 - movs r2, 0x3 - ldrsb r2, [r5, r2] - adds r1, r2 - ldr r0, [r6] - lsls r0, 27 - lsrs r0, 27 - cmp r1, r0 - bgt _080D8DFC - lsrs r0, r4, 27 - adds r0, r2 - ands r0, r7 - ldrb r2, [r3] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3] -_080D8DFC: - ldr r0, [r3] - lsls r4, r0, 22 - lsrs r1, r4, 27 - movs r2, 0x3 - ldrsb r2, [r5, r2] - adds r1, r2 - ldr r0, [r6] - lsls r0, 22 - lsrs r0, 27 - cmp r1, r0 - bgt _080D8E26 - lsrs r0, r4, 27 - adds r0, r2 - mov r1, r8 - ands r0, r1 - lsls r0, 5 - ldrh r2, [r3] - mov r1, r10 - ands r1, r2 - orrs r1, r0 - strh r1, [r3] -_080D8E26: - ldr r0, [r3] - lsls r4, r0, 17 - lsrs r1, r4, 27 - movs r2, 0x3 - ldrsb r2, [r5, r2] - adds r1, r2 - ldr r0, [r6] - lsls r0, 17 - lsrs r0, 27 - cmp r1, r0 - bgt _080D8E4E -_080D8E3C: - lsrs r0, r4, 27 - adds r0, r2 -_080D8E40: - ands r0, r7 - lsls r0, 2 - ldrb r2, [r3, 0x1] - mov r1, r9 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x1] -_080D8E4E: - mov r0, r12 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - ldrb r0, [r5, 0x8] - cmp r12, r0 - bcs _080D8E60 - b _080D8CD8 -_080D8E60: - ldrb r1, [r5, 0x2] - adds r0, r1, 0x1 - strb r0, [r5, 0x2] - ldrb r0, [r5, 0xB] - lsls r0, 27 - lsls r1, 24 - asrs r0, 3 - cmp r1, r0 - beq _080D8E76 - movs r0, 0 - b _080D8EAA -_080D8E76: - movs r0, 0 - strb r0, [r5, 0x2] - movs r0, 0x3 - ldrsb r0, [r5, r0] - negs r0, r0 - strb r0, [r5, 0x3] - ldrb r2, [r5] - movs r1, 0x7F - movs r0, 0x7F - ands r0, r2 - cmp r0, 0x1 - bne _080D8E96 - lsls r0, r2, 25 - lsrs r0, 25 - adds r0, 0x1 - b _080D8E9C -_080D8E96: - lsls r0, r2, 25 - lsrs r0, 25 - subs r0, 0x1 -_080D8E9C: - ands r0, r1 - movs r1, 0x80 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - movs r0, 0x1 -_080D8EAA: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80D8CB0 - - thumb_func_start sub_80D8EB8 -sub_80D8EB8: @ 80D8EB8 - push {r4,r5,lr} - adds r3, r0, 0 - movs r2, 0 - ldrb r0, [r3] - lsls r0, 25 - lsrs r0, 25 - cmp r0, 0x1 - beq _080D8ECE - cmp r0, 0x2 - beq _080D8EFC - b _080D8F36 -_080D8ECE: - ldrb r0, [r3, 0x8] - cmp r2, r0 - bcs _080D8EEE - ldr r4, _080D8EF8 @ =gPlttBufferFaded -_080D8ED6: - ldrh r0, [r3, 0x6] - adds r0, r2 - lsls r0, 1 - adds r0, r4 - ldrh r1, [r3, 0x4] - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r3, 0x8] - cmp r2, r0 - bcc _080D8ED6 -_080D8EEE: - ldrb r2, [r3] - lsls r1, r2, 25 - lsrs r1, 25 - adds r1, 0x1 - b _080D8F28 - .align 2, 0 -_080D8EF8: .4byte gPlttBufferFaded -_080D8EFC: - ldrb r0, [r3, 0x8] - cmp r2, r0 - bcs _080D8F20 - ldr r5, _080D8F40 @ =gPlttBufferFaded - ldr r4, _080D8F44 @ =gPlttBufferUnfaded -_080D8F06: - ldrh r0, [r3, 0x6] - adds r0, r2 - lsls r0, 1 - adds r1, r0, r5 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r3, 0x8] - cmp r2, r0 - bcc _080D8F06 -_080D8F20: - ldrb r2, [r3] - lsls r1, r2, 25 - lsrs r1, 25 - subs r1, 0x1 -_080D8F28: - movs r0, 0x7F - ands r1, r0 - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D8F36: - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D8F40: .4byte gPlttBufferFaded -_080D8F44: .4byte gPlttBufferUnfaded - thumb_func_end sub_80D8EB8 - - thumb_func_start task_tutorial_controls_fadein -task_tutorial_controls_fadein: @ 80D8F48 - push {r4-r6,lr} - adds r4, r0, 0 - movs r5, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _080D8FAC -_080D8F54: - ldrh r0, [r4, 0x2] - asrs r0, r5 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D8FA2 - lsls r1, r5, 1 - adds r0, r1, r5 - lsls r3, r0, 2 - adds r2, r4, r3 - ldrb r0, [r2, 0x5] - subs r0, 0x1 - strb r0, [r2, 0x5] - lsls r0, 24 - lsrs r0, 24 - adds r6, r1, 0 - cmp r0, 0xFF - bne _080D8FA2 - ldrh r0, [r2, 0x8] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080D8F90 - adds r0, r3, 0x4 - adds r0, r4, r0 - bl sub_80D8CB0 - b _080D8F98 -_080D8F90: - adds r0, r3, 0x4 - adds r0, r4, r0 - bl sub_80D8EB8 -_080D8F98: - adds r0, r6, r5 - lsls r0, 2 - adds r0, r4, r0 - ldrb r1, [r0, 0xD] - strb r1, [r0, 0x5] -_080D8FA2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080D8F54 -_080D8FAC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end task_tutorial_controls_fadein - - thumb_func_start sub_80D8FB4 -sub_80D8FB4: @ 80D8FB4 - push {r4-r7,lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - movs r4, 0 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - movs r5, 0x1 - movs r7, 0x80 - negs r7, r7 -_080D8FCA: - adds r0, r6, 0 - asrs r0, r4 - ands r0, r5 - cmp r0, 0 - beq _080D8FF8 - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r2, r3, r0 - ldrb r0, [r2, 0x4] - lsrs r0, 7 - cmp r0, 0 - beq _080D8FF8 - adds r0, r5, 0 - lsls r0, r4 - ldrh r1, [r3, 0x2] - orrs r0, r1 - strh r0, [r3, 0x2] - ldrb r1, [r2, 0x4] - adds r0, r7, 0 - ands r0, r1 - orrs r0, r5 - strb r0, [r2, 0x4] -_080D8FF8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080D8FCA - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D8FB4 - - thumb_func_start sub_80D9008 -sub_80D9008: @ 80D9008 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - lsls r1, 16 - lsrs r7, r1, 16 - movs r5, 0 - movs r3, 0x1 -_080D9016: - ldrh r0, [r6, 0x2] - asrs r0, r5 - ands r0, r3 - cmp r0, 0 - beq _080D907E - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r4, r6, r0 - ldrb r0, [r4, 0x4] - lsrs r0, 7 - cmp r0, 0 - beq _080D907E - adds r0, r7, 0 - asrs r0, r5 - ands r0, r3 - cmp r0, 0 - beq _080D907E - ldrh r1, [r4, 0xA] - lsls r1, 1 - ldr r0, _080D9074 @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _080D9078 @ =gPlttBufferUnfaded - adds r1, r2 - ldrb r2, [r4, 0xC] - lsls r2, 1 - str r3, [sp] - bl memcpy - ldrb r0, [r4, 0x4] - movs r2, 0x80 - negs r2, r2 - adds r1, r2, 0 - ands r0, r1 - strb r0, [r4, 0x4] - movs r0, 0 - strb r0, [r4, 0x6] - strb r0, [r4, 0x5] - ldrb r0, [r4, 0xF] - lsls r0, 24 - ldr r3, [sp] - cmp r0, 0 - bge _080D907C - movs r0, 0xFF - strb r0, [r4, 0x7] - b _080D907E - .align 2, 0 -_080D9074: .4byte gPlttBufferFaded -_080D9078: .4byte gPlttBufferUnfaded -_080D907C: - strb r3, [r4, 0x7] -_080D907E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080D9016 - ldr r0, _080D9094 @ =0x0000ffff - cmp r7, r0 - bne _080D9098 - movs r0, 0 - strb r0, [r6] - b _080D909C - .align 2, 0 -_080D9094: .4byte 0x0000ffff -_080D9098: - ldrh r0, [r6, 0x2] - bics r0, r7 -_080D909C: - strh r0, [r6, 0x2] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D9008 - - thumb_func_start sub_80D90A8 -sub_80D90A8: @ 80D90A8 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 - strh r4, [r5] - adds r0, r5, 0x4 - movs r1, 0 - movs r2, 0xC0 - bl memset -_080D90BA: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r5, r0 - strb r4, [r0, 0x4] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080D90BA - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D90A8 - - thumb_func_start sub_80D90D4 -sub_80D90D4: @ 80D90D4 - push {r4,r5,lr} - adds r2, r0, 0 - adds r5, r1, 0 - movs r3, 0 - movs r4, 0 - ldrb r0, [r2, 0x5] - lsrs r0, 7 - cmp r0, 0 - bne _080D90EA - adds r4, r2, 0x4 - b _080D9108 -_080D90EA: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bhi _080D9108 - lsls r0, r3, 1 - adds r0, r3 - lsls r1, r0, 2 - adds r0, r2, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 7 - cmp r0, 0 - bne _080D90EA - adds r0, r1, 0x4 - adds r4, r2, r0 -_080D9108: - cmp r4, 0 - beq _080D9136 - ldrb r1, [r4, 0x1] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0 - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - adds r1, r4, 0x4 - adds r0, r5, 0 - ldm r0!, {r2,r4} - stm r1!, {r2,r4} - adds r0, r3, 0 - b _080D9138 -_080D9136: - movs r0, 0xFF -_080D9138: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80D90D4 - - thumb_func_start sub_80D9140 -sub_80D9140: @ 80D9140 - push {r4,r5,lr} - adds r4, r0, 0 - ldrb r1, [r4, 0x1] - movs r2, 0x40 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080D9182 - ldrb r1, [r4, 0xB] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080D9182 - ldrh r2, [r4, 0x6] - ldrb r0, [r4, 0x8] - adds r0, r2, r0 - cmp r2, r0 - bge _080D9182 - ldr r5, _080D91B4 @ =gPlttBufferFaded - ldr r3, _080D91B8 @ =gPlttBufferUnfaded -_080D9168: - lsls r0, r2, 1 - adds r1, r0, r5 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r4, 0x6] - ldrb r1, [r4, 0x8] - adds r0, r1 - cmp r2, r0 - blt _080D9168 -_080D9182: - adds r0, r4, 0x4 - movs r1, 0 - movs r2, 0x8 - bl memset - ldrb r1, [r4, 0x1] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - subs r1, 0x10 - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - movs r1, 0x7F - ands r0, r1 - strb r0, [r4, 0x1] - movs r0, 0 - strb r0, [r4, 0x3] - strb r0, [r4, 0x2] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D91B4: .4byte gPlttBufferFaded -_080D91B8: .4byte gPlttBufferUnfaded - thumb_func_end sub_80D9140 - - thumb_func_start sub_80D91BC -sub_80D91BC: @ 80D91BC - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - movs r5, 0 - cmp r2, 0 - bne _080D91E0 - movs r1, 0xF - ands r1, r4 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, 0x4 - adds r0, r6, r0 - bl sub_80D9140 - b _080D920C -_080D91E0: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080D9200 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 2 - adds r0, r6, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 7 - cmp r0, 0 - beq _080D9200 - adds r0, r1, 0x4 - adds r0, r6, r0 - bl sub_80D9140 -_080D9200: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _080D91E0 -_080D920C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D91BC - - thumb_func_start sub_80D9214 -sub_80D9214: @ 80D9214 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - movs r3, 0 - cmp r2, 0 - bne _080D9248 - movs r0, 0xF - adds r3, r0, 0 - ands r3, r4 - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r5, r1 - ldrb r2, [r1, 0x5] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] - movs r0, 0x1 - lsls r0, r3 - ldrh r1, [r5] - orrs r0, r1 - strh r0, [r5] - b _080D928C -_080D9248: - movs r6, 0x1 - movs r7, 0x41 - negs r7, r7 -_080D924E: - adds r0, r4, 0 - ands r0, r6 - cmp r0, 0 - beq _080D926C - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r5, r0 - ldrb r1, [r2, 0x5] - lsrs r0, r1, 7 - cmp r0, 0 - beq _080D926C - lsls r0, r1, 25 - cmp r0, 0 - blt _080D9272 -_080D926C: - lsls r0, r4, 17 - lsrs r4, r0, 16 - b _080D9282 -_080D9272: - adds r0, r7, 0 - ands r0, r1 - strb r0, [r2, 0x5] - adds r0, r6, 0 - lsls r0, r3 - ldrh r1, [r5] - orrs r0, r1 - strh r0, [r5] -_080D9282: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _080D924E -_080D928C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D9214 - - thumb_func_start sub_80D9294 -sub_80D9294: @ 80D9294 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 24 - movs r0, 0 - mov r12, r0 - cmp r2, 0 - bne _080D931C - movs r1, 0xF - ands r1, r7 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, 0x4 - mov r1, r8 - adds r3, r1, r0 - ldrb r1, [r3, 0x1] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0x80 - bne _080D93A6 - ldrb r1, [r3, 0xB] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080D92FA - ldrh r2, [r3, 0x6] - ldrb r0, [r3, 0x8] - adds r0, r2, r0 - cmp r2, r0 - bge _080D92FA - ldr r5, _080D9314 @ =gPlttBufferFaded - ldr r4, _080D9318 @ =gPlttBufferUnfaded -_080D92E0: - lsls r0, r2, 1 - adds r1, r0, r5 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r3, 0x6] - ldrb r1, [r3, 0x8] - adds r0, r1 - cmp r2, r0 - blt _080D92E0 -_080D92FA: - ldrb r0, [r3, 0x1] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r3, 0x1] - movs r1, 0x1 - mov r2, r12 - lsls r1, r2 - mov r2, r8 - ldrh r0, [r2] - bics r0, r1 - strh r0, [r2] - b _080D93A6 - .align 2, 0 -_080D9314: .4byte gPlttBufferFaded -_080D9318: .4byte gPlttBufferUnfaded -_080D931C: - movs r0, 0x1 - mov r9, r0 - movs r1, 0x40 - mov r10, r1 -_080D9324: - mov r2, r12 - lsls r0, r2, 1 - add r0, r12 - lsls r0, 2 - adds r0, 0x4 - mov r1, r8 - adds r3, r1, r0 - adds r0, r7, 0 - mov r2, r9 - ands r0, r2 - cmp r0, 0 - beq _080D9346 - ldrb r1, [r3, 0x1] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0x80 - beq _080D9350 -_080D9346: - lsls r0, r7, 17 - lsrs r7, r0, 16 - mov r5, r12 - adds r5, 0x1 - b _080D939C -_080D9350: - ldrb r1, [r3, 0xB] - mov r0, r10 - ands r0, r1 - mov r5, r12 - adds r5, 0x1 - cmp r0, 0 - beq _080D9386 - ldrh r2, [r3, 0x6] - ldrb r0, [r3, 0x8] - adds r0, r2, r0 - cmp r2, r0 - bge _080D9386 - ldr r6, _080D93B4 @ =gPlttBufferFaded - ldr r4, _080D93B8 @ =gPlttBufferUnfaded -_080D936C: - lsls r0, r2, 1 - adds r1, r0, r6 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r3, 0x6] - ldrb r1, [r3, 0x8] - adds r0, r1 - cmp r2, r0 - blt _080D936C -_080D9386: - ldrb r1, [r3, 0x1] - mov r0, r10 - orrs r0, r1 - strb r0, [r3, 0x1] - mov r1, r9 - mov r0, r12 - lsls r1, r0 - mov r2, r8 - ldrh r0, [r2] - bics r0, r1 - strh r0, [r2] -_080D939C: - lsls r0, r5, 24 - lsrs r0, 24 - mov r12, r0 - cmp r0, 0xF - bls _080D9324 -_080D93A6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D93B4: .4byte gPlttBufferFaded -_080D93B8: .4byte gPlttBufferUnfaded - thumb_func_end sub_80D9294 - - thumb_func_start sub_80D93BC -sub_80D93BC: @ 80D93BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - movs r0, 0 - mov r10, r0 - ldr r1, [sp] - ldrh r0, [r1] - cmp r0, 0 - bne _080D93D8 - b _080D9562 -_080D93D8: - movs r2, 0xF - mov r9, r2 - movs r3, 0x10 - negs r3, r3 - mov r8, r3 - movs r7, 0x1 -_080D93E4: - mov r5, r10 - lsls r0, r5, 1 - add r0, r10 - lsls r0, 2 - adds r0, 0x4 - ldr r1, [sp] - adds r4, r1, r0 - ldrb r2, [r4, 0x1] - movs r3, 0xC0 - ands r3, r2 - cmp r3, 0x80 - beq _080D93FE - b _080D9552 -_080D93FE: - ldr r0, _080D944C @ =gPaletteFade - ldrb r1, [r0, 0x7] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080D9414 - ldrb r0, [r4, 0xB] - ands r3, r0 - cmp r3, 0 - beq _080D9414 - b _080D9552 -_080D9414: - ldrb r0, [r4, 0x2] - subs r0, 0x1 - strb r0, [r4, 0x2] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080D9424 - b _080D9552 -_080D9424: - ldrb r0, [r4, 0x9] - strb r0, [r4, 0x2] - ldrh r0, [r4, 0x6] - ldrb r1, [r4, 0x8] - lsls r2, 28 - lsrs r2, 28 - ldrh r3, [r4, 0x4] - bl BlendPalette - ldrb r5, [r4, 0xB] - lsls r0, r5, 26 - asrs r0, 30 - cmp r0, 0x1 - beq _080D9482 - cmp r0, 0x1 - bgt _080D9450 - cmp r0, 0 - beq _080D9456 - b _080D953C - .align 2, 0 -_080D944C: .4byte gPaletteFade -_080D9450: - cmp r0, 0x2 - beq _080D94FE - b _080D953C -_080D9456: - ldrb r2, [r4, 0x1] - lsls r1, r2, 28 - lsrs r0, r1, 28 - adds r0, 0x1 - mov r3, r9 - ands r0, r3 - mov r6, r8 - adds r3, r6, 0 - ands r3, r2 - orrs r3, r0 - strb r3, [r4, 0x1] - lsrs r1, 28 - lsls r0, r5, 28 - asrs r0, 28 - cmp r1, r0 - bne _080D953C - ldrb r0, [r4, 0x3] - adds r0, 0x1 - strb r0, [r4, 0x3] - ands r3, r6 - strb r3, [r4, 0x1] - b _080D953C -_080D9482: - ldrb r3, [r4, 0x1] - movs r0, 0x10 - ands r0, r3 - cmp r0, 0 - beq _080D94C0 - lsls r0, r3, 28 - lsrs r0, 28 - subs r0, 0x1 - mov r5, r9 - ands r0, r5 - mov r2, r8 - ands r2, r3 - orrs r2, r0 - strb r2, [r4, 0x1] - cmp r0, 0 - bne _080D953C - ldrb r0, [r4, 0x3] - adds r0, 0x1 - strb r0, [r4, 0x3] - lsls r0, r2, 27 - lsrs r0, 31 - eors r0, r7 - ands r0, r7 - lsls r0, 4 - movs r3, 0x11 - negs r3, r3 - adds r1, r3, 0 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0x1] - b _080D953C -_080D94C0: - lsls r0, r5, 28 - asrs r0, 28 - subs r0, 0x1 - mov r5, r9 - ands r0, r5 - lsls r2, r3, 28 - lsrs r1, r2, 28 - adds r1, 0x1 - ands r1, r5 - mov r5, r8 - ands r3, r5 - orrs r3, r1 - strb r3, [r4, 0x1] - lsrs r2, 28 - cmp r2, r0 - bne _080D953C - ldrb r0, [r4, 0x3] - adds r0, 0x1 - strb r0, [r4, 0x3] - lsls r0, r3, 27 - lsrs r0, 31 - eors r0, r7 - ands r0, r7 - lsls r0, 4 - movs r2, 0x11 - negs r2, r2 - adds r1, r2, 0 - ands r3, r1 - orrs r3, r0 - strb r3, [r4, 0x1] - b _080D953C -_080D94FE: - ldrb r2, [r4, 0x1] - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - beq _080D950E - mov r0, r8 - ands r0, r2 - b _080D951C -_080D950E: - lsls r1, r5, 28 - asrs r1, 28 - mov r3, r9 - ands r1, r3 - mov r0, r8 - ands r0, r2 - orrs r0, r1 -_080D951C: - strb r0, [r4, 0x1] - ldrb r2, [r4, 0x1] - lsls r0, r2, 27 - lsrs r0, 31 - eors r0, r7 - ands r0, r7 - lsls r0, 4 - movs r5, 0x11 - negs r5, r5 - adds r1, r5, 0 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0x1] - ldrb r0, [r4, 0x3] - adds r0, 0x1 - strb r0, [r4, 0x3] -_080D953C: - ldrb r1, [r4, 0xA] - cmp r1, 0xFF - beq _080D9552 - ldrb r0, [r4, 0x3] - cmp r0, r1 - bne _080D9552 - ldrb r1, [r4] - ldr r0, [sp] - movs r2, 0 - bl sub_80D9294 -_080D9552: - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0xF - bhi _080D9562 - b _080D93E4 -_080D9562: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D93BC - - thumb_func_start sub_80D9574 -sub_80D9574: @ 80D9574 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, [sp, 0x14] - ldr r4, [sp, 0x18] - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - lsrs r3, 19 - adds r3, r2 - lsls r3, 1 - adds r6, r3 - cmp r1, r4 - bcs _080D95BE -_080D959C: - lsls r0, r1, 6 - adds r2, r6, r0 - movs r0, 0 - adds r3, r1, 0x1 - cmp r0, r5 - bcs _080D95B6 -_080D95A8: - strh r7, [r2] - adds r2, 0x2 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - bcc _080D95A8 -_080D95B6: - lsls r0, r3, 24 - lsrs r1, r0, 24 - cmp r1, r4 - bcc _080D959C -_080D95BE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D9574 - - thumb_func_start sub_80D95C4 -sub_80D95C4: @ 80D95C4 - push {r4-r7,lr} - adds r7, r0, 0 - ldr r0, [sp, 0x14] - ldr r4, [sp, 0x18] - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r4, 24 - lsrs r6, r4, 24 - movs r4, 0 - lsrs r3, 19 - adds r3, r2 - lsls r3, 1 - adds r7, r3 - cmp r4, r6 - bcs _080D960E -_080D95E8: - lsls r0, r4, 6 - adds r2, r7, r0 - movs r3, 0 - adds r4, 0x1 - cmp r3, r5 - bcs _080D9606 -_080D95F4: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r5 - bcc _080D95F4 -_080D9606: - lsls r0, r4, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _080D95E8 -_080D960E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D95C4 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index b342f0b8a..39a12e328 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -179,7 +179,7 @@ SECTIONS { asm/battle_controller_link_partner.o(.text); asm/battle_message.o(.text); src/math_util.o(.text); - asm/roulette_util.o(.text); + src/roulette_util.o(.text); asm/cable_car_util.o(.text); src/save.o(.text); src/mystery_event_script.o(.text); diff --git a/src/roulette_util.c b/src/roulette_util.c new file mode 100644 index 000000000..906dd33a5 --- /dev/null +++ b/src/roulette_util.c @@ -0,0 +1,526 @@ +#include "global.h" +#include "palette.h" +#include "util.h" + +struct UnkStruct1 +{ + u16 var00; + u16 var02; + u8 var04; + u8 var05; + u8 var06; + s8 var07_0:5; + s8 var07_5:2; + s8 var07_7:1; +}; + +struct UnkStruct3 +{ + u8 var00_0:7; + u8 var00_7:1; + u8 var01; + s8 var02; + s8 var03; + struct UnkStruct1 var04; +}; + +struct UnkStruct0 +{ + u8 var00; + u8 var01; + u16 var02; //flag for each UnkStruct3 + struct UnkStruct3 var04[0x10]; +}; + +struct PulseBlendSettings +{ + u16 blendColor; + u16 paletteOffset; + u8 numColors; + u8 delay; + u8 numFadeCycles; + s8 maxBlendCoeff:4; + s8 fadeType:2; + s8 restorePaletteOnUnload:1; + s8 unk7_7:1; +}; + +struct PulseBlendPalette +{ + u8 paletteSelector; + u8 blendCoeff:4; + u8 fadeDirection:1; + s8 unk1_5:1; + s8 available:1; + u32 inUse:1; + u8 delayCounter; + u8 fadeCycleCounter; + struct PulseBlendSettings pulseBlendSettings; +}; + +struct PulseBlend +{ + u16 usedPulseBlendPalettes; + struct PulseBlendPalette pulseBlendPalettes[16]; +}; + +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); + +void sub_80D8BE4(struct UnkStruct0 *r0) +{ + r0->var00 = 0; + r0->var02 = 0; + memset(&r0->var04, 0, sizeof(r0->var04)); +} + +u8 sub_80D8BF8(struct UnkStruct0 *r0, u8 r1, const struct UnkStruct1 *r2) +{ + if (!(r1 < 16) || (r0->var04[r1].var00_7)) + return 0xFF; + + r0->var04[r1].var04.var00 = r2->var00; + r0->var04[r1].var04.var02 = r2->var02; + r0->var04[r1].var04.var04 = r2->var04; + r0->var04[r1].var04.var05 = r2->var05; + r0->var04[r1].var04.var06 = r2->var06; + r0->var04[r1].var04.var07_0 = r2->var07_0; + r0->var04[r1].var04.var07_5 = r2->var07_5; + r0->var04[r1].var04.var07_7 = r2->var07_7; + r0->var04[r1].var00_0 = 0; + r0->var04[r1].var00_7 = 1; + r0->var04[r1].var02 = 0; + r0->var04[r1].var01 = 0; + if (r0->var04[r1].var04.var07_7 < 0) + r0->var04[r1].var03 = 0xFF; + else + r0->var04[r1].var03 = 1; + + return r1; +} + +u8 sub_80D8C7C(struct UnkStruct0 *r0, u8 r1) +{ + if (r1 >= 16) + return 0xFF; + if (!r0->var04[r1].var00_7) + return 0xFF; + + memset(&r0->var04[r1], 0, sizeof(r0->var04[r1])); + return r1; +} + +u8 sub_80D8CB0(struct UnkStruct3 *r0) +{ + u8 i; + u8 returnval; + + for (i = 0; i < r0->var04.var04; i++) + { + struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[r0->var04.var02 + i]; + struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[r0->var04.var02 + i]; + + switch (r0->var00_0) + { + case 1: + if (faded->r + r0->var03 >= 0 && faded->r + r0->var03 < 32) + faded->r += r0->var03; + if (faded->g + r0->var03 >= 0 && faded->g + r0->var03 < 32) + faded->g += r0->var03; + if (faded->b + r0->var03 >= 0 && faded->b + r0->var03 < 32) + faded->b += r0->var03; + break; + case 2: + if (r0->var03 < 0) + { + if (faded->r + r0->var03 >= unfaded->r) + faded->r += r0->var03; + if (faded->g + r0->var03 >= unfaded->g) + faded->g += r0->var03; + if (faded->b + r0->var03 >= unfaded->b) + faded->b += r0->var03; + } + else + { + if (faded->r + r0->var03 <= unfaded->r) + faded->r += r0->var03; + if (faded->g + r0->var03 <= unfaded->g) + faded->g += r0->var03; + if (faded->b + r0->var03 <= unfaded->b) + faded->b += r0->var03; + } + break; + } + } + if ((u32)r0->var02++ != r0->var04.var07_0) + { + returnval = 0; + } + else + { + r0->var02 = 0; + r0->var03 *= -1; + if (r0->var00_0 == 1) + r0->var00_0++; + else + r0->var00_0--; + returnval = 1; + } + return returnval; +} + +u8 sub_80D8EB8(struct UnkStruct3 *r0) +{ + u8 rg2 = 0; + + switch (r0->var00_0) + { + case 1: + for (rg2 = 0; rg2 < r0->var04.var04; rg2++) + gPlttBufferFaded[r0->var04.var02 + rg2] = r0->var04.var00; + r0->var00_0++; + break; + case 2: + for (rg2 = 0; rg2 < r0->var04.var04; rg2++) + gPlttBufferFaded[r0->var04.var02 + rg2] = gPlttBufferUnfaded[r0->var04.var02 + rg2]; + r0->var00_0--; + break; + } + return 1; +} + +void task_tutorial_controls_fadein(struct UnkStruct0 *r0) +{ + u8 i = 0; + + if (r0->var00) + { + for (i = 0; i < 16; i++) + { + if ((r0->var02 >> i) & 1) + { + if (--r0->var04[i].var01 == 0xFF) // if underflow ? + { + if (r0->var04[i].var04.var00 & 0x8000) // PlttData->unused_15 ? + sub_80D8CB0(&r0->var04[i]); + else + sub_80D8EB8(&r0->var04[i]); + + r0->var04[i].var01 = r0->var04[i].var04.var05; + } + } + } + } +} + +void sub_80D8FB4(struct UnkStruct0 *r0, u16 r1) +{ + u8 i = 0; + + r0->var00++; + for (i = 0; i < 16; i++) + { + if ((r1 >> i) & 1) + { + if (r0->var04[i].var00_7) + { + r0->var02 |= 1 << i; + r0->var04[i].var00_0 = 1; + } + } + } +} + +void sub_80D9008(struct UnkStruct0 *r0, u16 r1) +{ + u8 i; + + for (i = 0; i < 16; i++) + { + if ((r0->var02 >> i) & 1) + { + if (r0->var04[i].var00_7) + { + if ((r1 >> i) & 1) + { + u32 offset = r0->var04[i].var04.var02; + u16 *faded = &gPlttBufferFaded[offset]; + u16 *unfaded = &gPlttBufferUnfaded[offset]; + memcpy(faded, unfaded, r0->var04[i].var04.var04 * 2); + r0->var04[i].var00_0 = 0; + r0->var04[i].var02 = 0; + r0->var04[i].var01 = 0; + if (r0->var04[i].var04.var07_7 < 0) + r0->var04[i].var03 = 0xFF; + else + r0->var04[i].var03 = 0x1; + } + } + } + } + if (r1 == 0xFFFF) + { + r0->var00 = 0; + r0->var02 = 0; + } + else + { + r0->var02 = r0->var02 & ~r1; + } +} + +void InitPulseBlend(struct PulseBlend *pulseBlend) +{ + u8 i = 0; + pulseBlend->usedPulseBlendPalettes = 0; + memset(&pulseBlend->pulseBlendPalettes, 0, sizeof(pulseBlend->pulseBlendPalettes)); + for (; i < 16; i++) + pulseBlend->pulseBlendPalettes[i].paletteSelector = i; +} + +int InitPulseBlendPaletteSettings(struct PulseBlend *pulseBlend, const struct PulseBlendSettings *settings) +{ + u8 i = 0; + struct PulseBlendPalette *pulseBlendPalette = NULL; + + if (!pulseBlend->pulseBlendPalettes[0].inUse) + { + pulseBlendPalette = &pulseBlend->pulseBlendPalettes[0]; + } + else + { + while (++i < 16) + { + if (!pulseBlend->pulseBlendPalettes[i].inUse) + { + pulseBlendPalette = &pulseBlend->pulseBlendPalettes[i]; + break; + } + } + } + + if (pulseBlendPalette == NULL) + return 0xFF; + + pulseBlendPalette->blendCoeff = 0; + pulseBlendPalette->fadeDirection = 0; + pulseBlendPalette->available = 1; + pulseBlendPalette->inUse = 1; + pulseBlendPalette->delayCounter = 0; + pulseBlendPalette->fadeCycleCounter = 0; + memcpy(&pulseBlendPalette->pulseBlendSettings, settings, sizeof(*settings)); + return i; +} + +static void ClearPulseBlendPalettesSettings(struct PulseBlendPalette *pulseBlendPalette) +{ + u16 i; + + if (!pulseBlendPalette->available && pulseBlendPalette->pulseBlendSettings.restorePaletteOnUnload) + { + for (i = pulseBlendPalette->pulseBlendSettings.paletteOffset; i < pulseBlendPalette->pulseBlendSettings.paletteOffset + pulseBlendPalette->pulseBlendSettings.numColors; i++) + gPlttBufferFaded[i] = gPlttBufferUnfaded[i]; + } + + memset(&pulseBlendPalette->pulseBlendSettings, 0, sizeof(pulseBlendPalette->pulseBlendSettings)); + pulseBlendPalette->blendCoeff = 0; + pulseBlendPalette->fadeDirection = 0; + pulseBlendPalette->unk1_5 = 0; + pulseBlendPalette->available = 1; + pulseBlendPalette->inUse = 0; + pulseBlendPalette->fadeCycleCounter = 0; + pulseBlendPalette->delayCounter = 0; +} + +void UnloadUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPaletteSelector, u8 multiSelection) +{ + u16 i = 0; + + if (!multiSelection) + { + ClearPulseBlendPalettesSettings(&pulseBlend->pulseBlendPalettes[pulseBlendPaletteSelector & 0xF]); + } + else + { + for (i = 0; i < 16; i++) + { + if ((pulseBlendPaletteSelector & 1) && pulseBlend->pulseBlendPalettes[i].inUse) + ClearPulseBlendPalettesSettings(&pulseBlend->pulseBlendPalettes[i]); + + pulseBlendPaletteSelector >>= 1; + } + } +} + +void MarkUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPaletteSelector, u8 multiSelection) +{ + u8 i = 0; + + if (!multiSelection) + { + i = pulseBlendPaletteSelector & 0xF; + pulseBlend->pulseBlendPalettes[i].available = 0; + pulseBlend->usedPulseBlendPalettes |= 1 << i; + } + else + { + for (i = 0; i < 16; i++) + { + if (!(pulseBlendPaletteSelector & 1) || !pulseBlend->pulseBlendPalettes[i].inUse || !pulseBlend->pulseBlendPalettes[i].available) + { + pulseBlendPaletteSelector <<= 1; + } + else + { + pulseBlend->pulseBlendPalettes[i].available = 0; + pulseBlend->usedPulseBlendPalettes |= 1 << i; + } + } + } +} + +void UnmarkUsedPulseBlendPalettes(struct PulseBlend *pulseBlend, u16 pulseBlendPaletteSelector, u8 multiSelection) +{ + u16 i; + struct PulseBlendPalette *pulseBlendPalette; + u8 j = 0; + + if (!multiSelection) + { + pulseBlendPalette = &pulseBlend->pulseBlendPalettes[pulseBlendPaletteSelector & 0xF]; + if (!pulseBlendPalette->available && pulseBlendPalette->inUse) + { + if (pulseBlendPalette->pulseBlendSettings.restorePaletteOnUnload) + { + for (i = pulseBlendPalette->pulseBlendSettings.paletteOffset; i < pulseBlendPalette->pulseBlendSettings.paletteOffset + pulseBlendPalette->pulseBlendSettings.numColors; i++) + gPlttBufferFaded[i] = gPlttBufferUnfaded[i]; + } + + pulseBlendPalette->available = 1; + pulseBlend->usedPulseBlendPalettes &= ~(1 << j); + } + } + else + { + for (j = 0; j < 16; j++) + { + pulseBlendPalette = &pulseBlend->pulseBlendPalettes[j]; + if (!(pulseBlendPaletteSelector & 1) || pulseBlendPalette->available || !pulseBlendPalette->inUse) + { + pulseBlendPaletteSelector <<= 1; + } + else + { + if (pulseBlendPalette->pulseBlendSettings.restorePaletteOnUnload) + { + for (i = pulseBlendPalette->pulseBlendSettings.paletteOffset; i < pulseBlendPalette->pulseBlendSettings.paletteOffset + pulseBlendPalette->pulseBlendSettings.numColors; i++) + gPlttBufferFaded[i] = gPlttBufferUnfaded[i]; + } + + pulseBlendPalette->available = 1; + pulseBlend->usedPulseBlendPalettes &= ~(1 << j); + } + } + } +} + +void UpdatePulseBlend(struct PulseBlend *pulseBlend) +{ + struct PulseBlendPalette *pulseBlendPalette; + u8 i = 0; + + if (pulseBlend->usedPulseBlendPalettes) + { + for (i = 0; i < 16; i++) + { + pulseBlendPalette = &pulseBlend->pulseBlendPalettes[i]; + if ((!pulseBlendPalette->available && pulseBlendPalette->inUse) && (!gPaletteFade.active || !pulseBlendPalette->pulseBlendSettings.unk7_7)) + { + if (--pulseBlendPalette->delayCounter == 0xFF) + { + pulseBlendPalette->delayCounter = pulseBlendPalette->pulseBlendSettings.delay; + BlendPalette(pulseBlendPalette->pulseBlendSettings.paletteOffset, pulseBlendPalette->pulseBlendSettings.numColors, pulseBlendPalette->blendCoeff, pulseBlendPalette->pulseBlendSettings.blendColor); + switch (pulseBlendPalette->pulseBlendSettings.fadeType) + { + case 0: // Fade all the way to the max blend amount, then wrap around + // BUG: This comparison will never be true for maxBlendCoeff values that are >= 8. This is because + // maxBlendCoeff is a signed 4-bit field, but blendCoeff is an unsigned 4-bit field. This code is never + // reached, anyway, so the bug is not observable in vanilla gameplay. + if (pulseBlendPalette->blendCoeff++ == pulseBlendPalette->pulseBlendSettings.maxBlendCoeff) + { + pulseBlendPalette->fadeCycleCounter++; + pulseBlendPalette->blendCoeff = 0; + } + break; + case 1: // Fade in and out + if (pulseBlendPalette->fadeDirection) + { + if (--pulseBlendPalette->blendCoeff == 0) + { + pulseBlendPalette->fadeCycleCounter++; + pulseBlendPalette->fadeDirection ^= 1; + } + } + else + { + u8 max = (pulseBlendPalette->pulseBlendSettings.maxBlendCoeff - 1) & 0xF; + if (pulseBlendPalette->blendCoeff++ == max) + { + pulseBlendPalette->fadeCycleCounter++; + pulseBlendPalette->fadeDirection ^= 1; + } + } + break; + case 2: // Flip back and forth + if (pulseBlendPalette->fadeDirection) + pulseBlendPalette->blendCoeff = 0; + else + pulseBlendPalette->blendCoeff = pulseBlendPalette->pulseBlendSettings.maxBlendCoeff & 0xF; + + pulseBlendPalette->fadeDirection ^= 1; + pulseBlendPalette->fadeCycleCounter++; + break; + } + + if (pulseBlendPalette->pulseBlendSettings.numFadeCycles != 0xFF + && pulseBlendPalette->fadeCycleCounter == pulseBlendPalette->pulseBlendSettings.numFadeCycles) + UnmarkUsedPulseBlendPalettes(pulseBlend, pulseBlendPalette->paletteSelector, FALSE); + } + } + } + } +} + +void sub_80D9574(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height) +{ + u16 *_dest; + u8 i; + u8 j; + i = 0; + dest = &dest[top * 32 + left]; + for (; i < height; i++) + { + _dest = dest + i * 32; + for (j = 0; j < width; j++) + { + *_dest++ = src; + } + } +} + +void sub_80D95C4(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height) +{ + u16 *_dest; + u16 *_src = src; + u8 i; + u8 j; + i = 0; + dest = &dest[top * 32 + left]; + for (; i < height; i++) + { + _dest = dest + i * 32; + for (j = 0; j < width; j++) + { + *_dest++ = *_src++; + } + } +} From 7f920b887f9a060524347b4cc3a5e3f3abdd3b03 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 9 Apr 2019 10:04:41 -0400 Subject: [PATCH 047/318] Add mapjson; update gbagfx, scaninc --- tools/gbafix/gbafix.c | 2 +- tools/gbagfx/Makefile | 7 +- tools/gbagfx/gfx.c | 197 +-------- tools/gbagfx/gfx.h | 17 - tools/gbagfx/huff.c | 397 +++++++++++++++++ tools/gbagfx/huff.h | 38 ++ tools/gbagfx/main.c | 118 +++-- tools/gbagfx/options.h | 2 - tools/mapjson/.gitignore | 1 + tools/mapjson/Makefile | 15 + tools/mapjson/json11.cpp | 786 ++++++++++++++++++++++++++++++++++ tools/mapjson/json11.h | 230 ++++++++++ tools/mapjson/mapjson.cpp | 538 +++++++++++++++++++++++ tools/mapjson/mapjson.h | 31 ++ tools/scaninc/Makefile | 4 +- tools/scaninc/asm_file.cpp | 3 +- tools/scaninc/scaninc.cpp | 88 +--- tools/scaninc/source_file.cpp | 125 ++++++ tools/scaninc/source_file.h | 71 +++ 19 files changed, 2325 insertions(+), 345 deletions(-) create mode 100644 tools/gbagfx/huff.c create mode 100644 tools/gbagfx/huff.h create mode 100755 tools/mapjson/.gitignore create mode 100644 tools/mapjson/Makefile create mode 100644 tools/mapjson/json11.cpp create mode 100644 tools/mapjson/json11.h create mode 100644 tools/mapjson/mapjson.cpp create mode 100644 tools/mapjson/mapjson.h create mode 100644 tools/scaninc/source_file.cpp create mode 100644 tools/scaninc/source_file.h diff --git a/tools/gbafix/gbafix.c b/tools/gbafix/gbafix.c index d5e2f62ab..81c8c04c0 100644 --- a/tools/gbafix/gbafix.c +++ b/tools/gbafix/gbafix.c @@ -160,7 +160,7 @@ int main(int argc, char *argv[]) // get filename for (arg=1; arg #include #include -#include #include "global.h" #include "gfx.h" #include "util.h" @@ -19,140 +18,6 @@ #define DOWNCONVERT_BIT_DEPTH(x) ((x) / 8) -static inline void swap_bytes(unsigned char * orig, unsigned char * dest) { - unsigned char tmp = *orig; - *orig = *dest; - *dest = tmp; -} - -static inline unsigned char swap_nybbles(unsigned char orig) -{ - return (orig >> 4) | (orig << 4); -} - -static inline void swap_bytes_nybswap(unsigned char * orig, unsigned char * dest) { - unsigned char tmp = swap_nybbles(*orig); - *orig = swap_nybbles(*dest); - *dest = tmp; -} - -static inline unsigned char reverse_bits(unsigned char orig) { - unsigned char dest = 0; - for (int i = 0; i < 8; i++) - { - dest <<= 1; - dest |= orig & 1; - orig >>= 1; - } - return dest; -} - -static void vflip(unsigned char * tile, int bitDepth) { - for (int x = 0; x < bitDepth; x++) - { - unsigned char * col = tile + x; - swap_bytes(col + 0 * bitDepth, col + 7 * bitDepth); - swap_bytes(col + 1 * bitDepth, col + 6 * bitDepth); - swap_bytes(col + 2 * bitDepth, col + 5 * bitDepth); - swap_bytes(col + 3 * bitDepth, col + 4 * bitDepth); - } -} - -static void hflip(unsigned char * tile, int bitDepth) { - for (int y = 0; y < 8; y++) - { - unsigned char * row = tile + y * bitDepth; - switch (bitDepth) - { - case 1: - *row = reverse_bits(*row); - break; - case 4: - swap_bytes_nybswap(row + 0, row + 3); - swap_bytes_nybswap(row + 1, row + 2); - break; - case 8: - swap_bytes(row + 0, row + 56); - swap_bytes(row + 8, row + 48); - swap_bytes(row + 16, row + 40); - swap_bytes(row + 24, row + 32); - break; - } - } -} - -static unsigned char * ApplyTilemap(struct Image *image, unsigned char * buffer, int bitDepth) -{ - int tileSize = bitDepth * 8; - unsigned char * tiles = calloc(image->tileMap.numTiles, tileSize); - int i; - struct Tile tileInfo; - - for (i = 0; i < image->tileMap.numTiles; i++) { - tileInfo = image->tileMap.data[i]; - unsigned char * tile = tiles + i * tileSize; - memcpy(tile, buffer + tileInfo.index * tileSize, tileSize); - if (tileInfo.xflip) - hflip(tile, bitDepth); - if (tileInfo.yflip) - vflip(tile, bitDepth); - } - free(buffer); - return tiles; -} - -static unsigned char * BuildTilemap(struct Image *image, unsigned char * buffer, int * bufferSize) -{ - int tileSize = image->bitDepth * 8; - unsigned char * outputPixels = calloc(1024, tileSize); - int nTilesIn = image->height * image->width / 64; - image->tileMap.data = calloc(nTilesIn, sizeof(struct Tilemap)); - image->tileMap.numTiles = nTilesIn; - int nTilesOut = 0; - unsigned char curTile1[tileSize]; - unsigned char curTile2[tileSize]; - - for (int i = 0; i < nTilesIn; i++) { - bool xflip = false; - bool yflip = false; - int j; - memcpy(curTile1, buffer + i * tileSize, tileSize); - - for (j = 0; j < nTilesOut; j++) { - memcpy(curTile2, outputPixels + j * tileSize, tileSize); - if (memcmp(curTile1, curTile2, tileSize) == 0) - break; - xflip = true; - hflip(curTile2, image->bitDepth); - if (memcmp(curTile1, curTile2, tileSize) == 0) - break; - yflip = true; - vflip(curTile2, image->bitDepth); - if (memcmp(curTile1, curTile2, tileSize) == 0) - break; - xflip = false; - hflip(curTile2, image->bitDepth); - if (memcmp(curTile1, curTile2, tileSize) == 0) - break; - yflip = false; - } - image->tileMap.data[i].index = j; - image->tileMap.data[i].xflip = xflip; - image->tileMap.data[i].yflip = yflip; - image->tileMap.data[i].palno = 0; - if (j >= nTilesOut) { - if (nTilesOut >= 1024) - FATAL_ERROR("Cannot reduce image to 1024 or fewer tiles.\n"); - memcpy(outputPixels + nTilesOut * tileSize, curTile1, tileSize); - nTilesOut++; - } - } - - free(buffer); - *bufferSize = nTilesOut * tileSize; - return outputPixels; -} - static void AdvanceMetatilePosition(int *subTileX, int *subTileY, int *metatileX, int *metatileY, int metatilesWide, int metatileWidth, int metatileHeight) { (*subTileX)++; @@ -345,21 +210,15 @@ void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int int fileSize; unsigned char *buffer = ReadWholeFile(path, &fileSize); - int numTiles; - if (image->hasTilemap) { - buffer = ApplyTilemap(image, buffer, bitDepth); - numTiles = image->tileMap.numTiles; - } - else - numTiles = fileSize / tileSize; + int numTiles = fileSize / tileSize; int tilesHeight = (numTiles + tilesWidth - 1) / tilesWidth; if (tilesWidth % metatileWidth != 0) - FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)\n", tilesWidth, metatileWidth); + FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth); if (tilesHeight % metatileHeight != 0) - FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)\n", tilesHeight, metatileHeight); + FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight); image->width = tilesWidth * 8; image->height = tilesHeight * 8; @@ -432,9 +291,6 @@ void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int m break; } - if (image->hasTilemap) - buffer = BuildTilemap(image, buffer, &bufferSize); - WriteWholeFile(path, buffer, bufferSize); free(buffer); @@ -444,11 +300,6 @@ void FreeImage(struct Image *image) { free(image->pixels); image->pixels = NULL; - if (image->hasTilemap && image->tileMap.data != NULL) { - free(image->tileMap.data); - image->tileMap.data = NULL; - image->tileMap.numTiles = 0; - } } void ReadGbaPalette(char *path, struct Palette *palette) @@ -491,45 +342,3 @@ void WriteGbaPalette(char *path, struct Palette *palette) fclose(fp); } - -void ReadGbaTilemap(char *path, struct Tilemap *tileMap) -{ - int fileSize; - unsigned char *data = ReadWholeFile(path, &fileSize); - - if (fileSize % 2 != 0) - FATAL_ERROR("The file size (%d) is not a multiple of 2.\n", fileSize); - - tileMap->numTiles = fileSize / 2; - tileMap->data = malloc(tileMap->numTiles * sizeof(struct Tile)); - - for (int i = 0; i < tileMap->numTiles; i++) - { - uint16_t raw = data[2 * i + 0] | (data[2 * i + 1] << 8); - tileMap->data[i].index = raw & 0x3FF; - tileMap->data[i].xflip = raw & 0x400 ? 1 : 0; - tileMap->data[i].yflip = raw & 0x800 ? 1 : 0; - tileMap->data[i].palno = raw >> 12; - } - - free(data); -} - -void WriteGbaTilemap(char *path, struct Tilemap *tileMap) -{ - FILE *fp = fopen(path, "wb"); - - if (fp == NULL) - FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); - - for (int i = 0; i < tileMap->numTiles; i++) { - uint16_t raw = tileMap->data[i].index - | (tileMap->data[i].xflip << 10) - | (tileMap->data[i].yflip << 11) - | (tileMap->data[i].palno << 12); - fputc(raw & 0xFF, fp); - fputc(raw >> 8, fp); - } - - fclose(fp); -} diff --git a/tools/gbagfx/gfx.h b/tools/gbagfx/gfx.h index 15a3c6a6c..5355ced85 100644 --- a/tools/gbagfx/gfx.h +++ b/tools/gbagfx/gfx.h @@ -17,18 +17,6 @@ struct Palette { int numColors; }; -struct __attribute__((packed)) Tile { - unsigned short index:10; - unsigned short xflip:1; - unsigned short yflip:1; - unsigned short palno:4; -}; - -struct Tilemap { - struct Tile *data; - int numTiles; -}; - struct Image { int width; int height; @@ -37,9 +25,6 @@ struct Image { bool hasPalette; struct Palette palette; bool hasTransparency; - struct Tilemap tileMap; - bool hasTilemap; - }; void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors); @@ -47,7 +32,5 @@ void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int m void FreeImage(struct Image *image); void ReadGbaPalette(char *path, struct Palette *palette); void WriteGbaPalette(char *path, struct Palette *palette); -void ReadGbaTilemap(char *path, struct Tilemap *tileMap); -void WriteGbaTilemap(char *path, struct Tilemap *tileMap); #endif // GFX_H diff --git a/tools/gbagfx/huff.c b/tools/gbagfx/huff.c new file mode 100644 index 000000000..5d55be970 --- /dev/null +++ b/tools/gbagfx/huff.c @@ -0,0 +1,397 @@ +#include +#include +#include +#include +#include "global.h" +#include "huff.h" + +static int cmp_tree(const void * a0, const void * b0) { + return ((struct HuffData *)a0)->value - ((struct HuffData *)b0)->value; +} + +typedef int (*cmpfun)(const void *, const void *); + +int msort_r(void * data, size_t count, size_t size, cmpfun cmp, void * buffer) { + /* + * Out-of-place mergesort (stable sort) + * Returns 1 on success, 0 on failure + */ + void * leftPtr; + void * rightPtr; + void * leftEnd; + void * rightEnd; + int i; + + switch (count) { + case 0: + // Should never be here + return 0; + + case 1: + // Nothing to do here + break; + + case 2: + // Swap the two entries if the right one compares higher. + if (cmp(data, data + size) > 0) { + memcpy(buffer, data, size); + memcpy(data, data + size, size); + memcpy(data + size, buffer, size); + } + break; + default: + // Merge sort out-of-place. + leftPtr = data; + leftEnd = rightPtr = data + count / 2 * size; + rightEnd = data + count * size; + + // Sort the left half + if (!msort_r(leftPtr, count / 2, size, cmp, buffer)) + return 0; + + // Sort the right half + if (!msort_r(rightPtr, count / 2 + (count & 1), size, cmp, buffer)) + return 0; + + // Merge the sorted halves out of place + i = 0; + do { + if (cmp(leftPtr, rightPtr) <= 0) { + memcpy(buffer + i * size, leftPtr, size); + leftPtr += size; + } else { + memcpy(buffer + i * size, rightPtr, size); + rightPtr += size; + } + + } while (++i < count && leftPtr < leftEnd && rightPtr < rightEnd); + + // Copy the remainder + if (i < count) { + if (leftPtr < leftEnd) { + memcpy(buffer + i * size, leftPtr, leftEnd - leftPtr); + } + else { + memcpy(buffer + i * size, rightPtr, rightEnd - rightPtr); + } + } + + // Copy the merged data back + memcpy(data, buffer, count * size); + break; + } + + return 1; +} + +int msort(void * data, size_t count, size_t size, cmpfun cmp) { + void * buffer = malloc(count * size); + if (buffer == NULL) return 0; + int result = msort_r(data, count, size, cmp, buffer); + free(buffer); + return result; +} + +static void write_tree(unsigned char * dest, HuffNode_t * tree, int nitems, struct BitEncoding * encoding) { + /* + * The example used to guide this function encodes the tree in a + * breadth-first manner. We attempt to emulate that here. + */ + + int i, j, k; + + // There are (2 * nitems - 1) nodes in the binary tree. Allocate that. + HuffNode_t * traversal = calloc(2 * nitems - 1, sizeof(HuffNode_t)); + if (traversal == NULL) + FATAL_ERROR("Fatal error while compressing Huff file.\n"); + + // The first node is the root of the tree. + traversal[0] = *tree; + i = 1; + + // Copy the tree into a breadth-first ordering using brute force. + for (int depth = 1; i < 2 * nitems - 1; depth++) { + // Consider every possible path up to the current depth. + for (j = 0; i < 2 * nitems - 1 && j < 1 << depth; j++) { + // The index of the path is used to encode the path itself. + // Start from the most significant relevant bit and work our way down. + // Keep track of the current and previous nodes. + HuffNode_t * currNode = traversal; + HuffNode_t * parent = NULL; + for (k = 0; k < depth; k++) { + if (currNode->header.isLeaf) + break; + parent = currNode; + if ((j >> (depth - k - 1)) & 1) + currNode = currNode->branch.right; + else + currNode = currNode->branch.left; + } + // Check that the length of the current path equals the current depth. + if (k == depth) { + // Make sure we can encode the current branch. + // Bail here if we cannot. + // This is only applicable for 8-bit encodings. + if (traversal + i - parent > 128) + FATAL_ERROR("Fatal error while compressing Huff file: unable to encode binary tree.\n"); + // Copy the current node, and update its parent. + traversal[i] = *currNode; + if (parent != NULL) { + if ((j & 1) == 1) + parent->branch.right = traversal + i; + else + parent->branch.left = traversal + i; + } + // Encode the path through the tree in the lookup table + if (traversal[i].header.isLeaf) { + encoding[traversal[i].leaf.key].nbits = depth; + encoding[traversal[i].leaf.key].bitstring = j; + } + i++; + } + } + } + + // Encode the size of the tree. + // This is used by the decompressor to skip the tree. + dest[4] = nitems - 1; + + // Encode each node in the tree. + for (i = 0; i < 2 * nitems - 1; i++) { + HuffNode_t * currNode = traversal + i; + if (currNode->header.isLeaf) { + dest[5 + i] = traversal[i].leaf.key; + } else { + dest[5 + i] = (((currNode->branch.right - traversal - i) / 2) - 1); + if (currNode->branch.left->header.isLeaf) + dest[5 + i] |= 0x80; + if (currNode->branch.right->header.isLeaf) + dest[5 + i] |= 0x40; + } + } + + free(traversal); +} + +static inline void write_32_le(unsigned char * dest, int * destPos, uint32_t * buff, int * buffPos) { + dest[*destPos] = *buff; + dest[*destPos + 1] = *buff >> 8; + dest[*destPos + 2] = *buff >> 16; + dest[*destPos + 3] = *buff >> 24; + *destPos += 4; + *buff = 0; + *buffPos = 0; +} + +static inline void read_32_le(unsigned char * src, int * srcPos, uint32_t * buff) { + uint32_t tmp = src[*srcPos]; + tmp |= src[*srcPos + 1] << 8; + tmp |= src[*srcPos + 2] << 16; + tmp |= src[*srcPos + 3] << 24; + *srcPos += 4; + *buff = tmp; +} + +static void write_bits(unsigned char * dest, int * destPos, struct BitEncoding * encoding, int value, uint32_t * buff, int * buffBits) { + int nbits = encoding[value].nbits; + uint32_t bitstring = encoding[value].bitstring; + + if (*buffBits + nbits >= 32) { + int diff = *buffBits + nbits - 32; + *buff <<= nbits - diff; + *buff |= bitstring >> diff; + bitstring &= ~(1 << diff); + nbits = diff; + write_32_le(dest, destPos, buff, buffBits); + } + if (nbits != 0) { + *buff <<= nbits; + *buff |= bitstring; + *buffBits += nbits; + } +} + +/* +======================================= +MAIN COMPRESSION/DECOMPRESSION ROUTINES +======================================= + */ + +unsigned char * HuffCompress(unsigned char * src, int srcSize, int * compressedSize_p, int bitDepth) { + if (srcSize <= 0) + goto fail; + + int worstCaseDestSize = 4 + (2 << bitDepth) + srcSize * 3; + + unsigned char *dest = malloc(worstCaseDestSize); + if (dest == NULL) + goto fail; + + int nitems = 1 << bitDepth; + + HuffNode_t * freqs = calloc(nitems, sizeof(HuffNode_t)); + if (freqs == NULL) + goto fail; + + struct BitEncoding * encoding = calloc(nitems, sizeof(struct BitEncoding)); + if (encoding == NULL) + goto fail; + + // Set up the frequencies table. This will inform the tree. + for (int i = 0; i < nitems; i++) { + freqs[i].header.isLeaf = 1; + freqs[i].header.value = 0; + freqs[i].leaf.key = i; + } + + // Count each nybble or byte. + for (int i = 0; i < srcSize; i++) { + if (bitDepth == 8) { + freqs[src[i]].header.value++; + } else { + freqs[src[i] >> 4].header.value++; + freqs[src[i] & 0xF].header.value++; + } + } + +#ifdef DEBUG + for (int i = 0; i < nitems; i++) { + fprintf(stderr, "%d: %d\n", i, freqs[i].header.value); + } +#endif // DEBUG + + // Sort the frequency table. + if (!msort(freqs, nitems, sizeof(HuffNode_t), cmp_tree)) + goto fail; + + // Prune zero-frequency values. + for (int i = 0; i < nitems; i++) { + if (freqs[i].header.value != 0) { + if (i > 0) { + for (int j = i; j < nitems; j++) { + freqs[j - i] = freqs[j]; + } + nitems -= i; + } + break; + } + // This should never happen: + if (i == nitems - 1) + goto fail; + } + + HuffNode_t * tree = calloc(nitems * 2 - 1, sizeof(HuffNode_t)); + if (tree == NULL) + goto fail; + + // Iteratively collapse the two least frequent nodes. + HuffNode_t * endptr = freqs + nitems - 2; + + for (int i = 0; i < nitems - 1; i++) { + HuffNode_t * left = freqs; + HuffNode_t * right = freqs + 1; + tree[i * 2] = *right; + tree[i * 2 + 1] = *left; + for (int j = 0; j < nitems - i - 2; j++) + freqs[j] = freqs[j + 2]; + endptr->header.isLeaf = 0; + endptr->header.value = tree[i * 2].header.value + tree[i * 2 + 1].header.value; + endptr->branch.left = tree + i * 2; + endptr->branch.right = tree + i * 2 + 1; + endptr--; + if (i < nitems - 2 && !msort(freqs, nitems - i - 1, sizeof(HuffNode_t), cmp_tree)) + goto fail; + } + + // Write the tree breadth-first, and create the path lookup table. + write_tree(dest, freqs, nitems, encoding); + + free(tree); + free(freqs); + + // Encode the data itself. + int destPos = 4 + nitems * 2; + uint32_t destBuf = 0; + uint32_t srcBuf = 0; + int destBitPos = 0; + + for (int srcPos = 0; srcPos < srcSize;) { + read_32_le(src, &srcPos, &srcBuf); + for (int i = 0; i < 32 / bitDepth; i++) { + write_bits(dest, &destPos, encoding, srcBuf & (0xFF >> (8 - bitDepth)), &destBuf, &destBitPos); + srcBuf >>= bitDepth; + } + } + + if (destBitPos != 0) { + write_32_le(dest, &destPos, &destBuf, &destBitPos); + } + + free(encoding); + + // Write the header. + dest[0] = bitDepth | 0x20; + dest[1] = srcSize; + dest[2] = srcSize >> 8; + dest[3] = srcSize >> 16; + *compressedSize_p = (destPos + 3) & ~3; + return dest; + +fail: + FATAL_ERROR("Fatal error while compressing Huff file.\n"); +} + +unsigned char * HuffDecompress(unsigned char * src, int srcSize, int * uncompressedSize_p) { + if (srcSize < 4) + goto fail; + + int bitDepth = *src & 15; + if (bitDepth != 4 && bitDepth != 8) + goto fail; + + int destSize = (src[3] << 16) | (src[2] << 8) | src[1]; + + unsigned char *dest = malloc(destSize); + + if (dest == NULL) + goto fail; + + int treePos = 5; + int treeSize = (src[4] + 1) * 2; + int srcPos = 4 + treeSize; + int destPos = 0; + int curValPos = 0; + uint32_t destTmp = 0; + uint32_t window; + + for (;;) + { + if (srcPos >= srcSize) + goto fail; + read_32_le(src, &srcPos, &window); + for (int i = 0; i < 32; i++) { + int curBit = (window >> 31) & 1; + unsigned char treeView = src[treePos]; + bool isLeaf = ((treeView << curBit) & 0x80) != 0; + treePos &= ~1; // align + treePos += ((treeView & 0x3F) + 1) * 2 + curBit; + if (isLeaf) { + destTmp >>= bitDepth; + destTmp |= (src[treePos] << (32 - bitDepth)); + curValPos++; + if (curValPos == 32 / bitDepth) { + write_32_le(dest, &destPos, &destTmp, &curValPos); + if (destPos == destSize) { + *uncompressedSize_p = destSize; + return dest; + } + } + treePos = 5; + } + window <<= 1; + } + } + +fail: + FATAL_ERROR("Fatal error while decompressing Huff file.\n"); +} diff --git a/tools/gbagfx/huff.h b/tools/gbagfx/huff.h new file mode 100644 index 000000000..6002fe954 --- /dev/null +++ b/tools/gbagfx/huff.h @@ -0,0 +1,38 @@ +#ifndef HUFF_H +#define HUFF_H + +union HuffNode; + +struct HuffData { + unsigned value:31; + unsigned isLeaf:1; +}; + +struct HuffLeaf { + struct HuffData header; + unsigned char key; +}; + +struct HuffBranch { + struct HuffData header; + union HuffNode * left; + union HuffNode * right; +}; + +union HuffNode { + struct HuffData header; + struct HuffLeaf leaf; + struct HuffBranch branch; +}; + +typedef union HuffNode HuffNode_t; + +struct BitEncoding { + unsigned long long nbits:6; + unsigned long long bitstring:58; +}; + +unsigned char * HuffCompress(unsigned char * buffer, int srcSize, int * compressedSize_p, int bitDepth); +unsigned char * HuffDecompress(unsigned char * buffer, int srcSize, int * uncompressedSize_p); + +#endif //HUFF_H diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c index 2174e37a5..aa0681fb6 100644 --- a/tools/gbagfx/main.c +++ b/tools/gbagfx/main.c @@ -12,6 +12,7 @@ #include "lz.h" #include "rl.h" #include "font.h" +#include "huff.h" struct CommandHandler { @@ -34,17 +35,6 @@ void ConvertGbaToPng(char *inputPath, char *outputPath, struct GbaToPngOptions * image.hasPalette = false; } - if (options->tilemapFilePath != NULL) - { - ReadGbaTilemap(options->tilemapFilePath, &image.tileMap); - image.hasTilemap = true; - } - else - { - image.tileMap.data = NULL; - image.hasTilemap = false; - } - ReadImage(inputPath, options->width, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); image.hasTransparency = options->hasTransparency; @@ -59,17 +49,11 @@ void ConvertPngToGba(char *inputPath, char *outputPath, struct PngToGbaOptions * struct Image image; image.bitDepth = options->bitDepth; - image.hasTilemap = options->tilemapFilePath == NULL ? false : true; - image.tileMap.data = NULL; - image.tileMap.numTiles = 0; ReadPng(inputPath, &image); WriteImage(outputPath, options->numTiles, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); - if (image.hasTilemap) - WriteGbaTilemap(options->tilemapFilePath, &image.tileMap); - FreeImage(&image); } @@ -78,7 +62,6 @@ void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **a char *inputFileExtension = GetFileExtension(inputPath); struct GbaToPngOptions options; options.paletteFilePath = NULL; - options.tilemapFilePath = NULL; options.bitDepth = inputFileExtension[0] - '0'; options.hasTransparency = false; options.width = 1; @@ -98,15 +81,6 @@ void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **a options.paletteFilePath = argv[i]; } - else if (strcmp(option, "-tilemap") == 0) - { - if (i + 1 >= argc) - FATAL_ERROR("No tilemap file path following \"-tilemap\".\n"); - - i++; - - options.tilemapFilePath = argv[i]; - } else if (strcmp(option, "-object") == 0) { options.hasTransparency = true; @@ -171,7 +145,6 @@ void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **a options.bitDepth = bitDepth; options.metatileWidth = 1; options.metatileHeight = 1; - options.tilemapFilePath = NULL; for (int i = 3; i < argc; i++) { @@ -190,14 +163,6 @@ void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **a if (options.numTiles < 1) FATAL_ERROR("Number of tiles must be positive.\n"); } - else if (strcmp(option, "-tilemap") == 0) - { - if (i + 1 >= argc) - FATAL_ERROR("No tilemap path following \"-tilemap\".\n"); - - i++; - options.tilemapFilePath = argv[i]; - } else if (strcmp(option, "-mwidth") == 0) { if (i + 1 >= argc) @@ -290,10 +255,6 @@ void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNU { struct Image image; - image.hasTilemap = false; - image.tileMap.data = NULL; - image.tileMap.numTiles = 0; - ReadLatinFont(inputPath, &image); WritePng(outputPath, &image); @@ -304,10 +265,6 @@ void HandlePngToLatinFontCommand(char *inputPath, char *outputPath, int argc UNU { struct Image image; - image.hasTilemap = false; - image.tileMap.data = NULL; - image.tileMap.numTiles = 0; - image.bitDepth = 2; ReadPng(inputPath, &image); @@ -320,10 +277,6 @@ void HandleHalfwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, { struct Image image; - image.hasTilemap = false; - image.tileMap.data = NULL; - image.tileMap.numTiles = 0; - ReadHalfwidthJapaneseFont(inputPath, &image); WritePng(outputPath, &image); @@ -334,10 +287,6 @@ void HandlePngToHalfwidthJapaneseFontCommand(char *inputPath, char *outputPath, { struct Image image; - image.hasTilemap = false; - image.tileMap.data = NULL; - image.tileMap.numTiles = 0; - image.bitDepth = 2; ReadPng(inputPath, &image); @@ -350,10 +299,6 @@ void HandleFullwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, { struct Image image; - image.hasTilemap = false; - image.tileMap.data = NULL; - image.tileMap.numTiles = 0; - ReadFullwidthJapaneseFont(inputPath, &image); WritePng(outputPath, &image); @@ -364,10 +309,6 @@ void HandlePngToFullwidthJapaneseFontCommand(char *inputPath, char *outputPath, { struct Image image; - image.hasTilemap = false; - image.tileMap.data = NULL; - image.tileMap.numTiles = 0; - image.bitDepth = 2; ReadPng(inputPath, &image); @@ -485,6 +426,61 @@ void HandleRLDecompressCommand(char *inputPath, char *outputPath, int argc UNUSE free(uncompressedData); } +void HandleHuffCompressCommand(char *inputPath, char *outputPath, int argc, char **argv) +{ + int fileSize; + int bitDepth = 4; + + for (int i = 3; i < argc; i++) + { + char *option = argv[i]; + + if (strcmp(option, "-depth") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No size following \"-depth\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &bitDepth)) + FATAL_ERROR("Failed to parse bit depth.\n"); + + if (bitDepth != 4 && bitDepth != 8) + FATAL_ERROR("GBA only supports bit depth of 4 or 8.\n"); + } + else + { + FATAL_ERROR("Unrecognized option \"%s\".\n", option); + } + } + + unsigned char *buffer = ReadWholeFile(inputPath, &fileSize); + + int compressedSize; + unsigned char *compressedData = HuffCompress(buffer, fileSize, &compressedSize, bitDepth); + + free(buffer); + + WriteWholeFile(outputPath, compressedData, compressedSize); + + free(compressedData); +} + +void HandleHuffDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(inputPath, &fileSize); + + int uncompressedSize; + unsigned char *uncompressedData = HuffDecompress(buffer, fileSize, &uncompressedSize); + + free(buffer); + + WriteWholeFile(outputPath, uncompressedData, uncompressedSize); + + free(uncompressedData); +} + int main(int argc, char **argv) { if (argc < 3) @@ -507,7 +503,9 @@ int main(int argc, char **argv) { "png", "hwjpnfont", HandlePngToHalfwidthJapaneseFontCommand }, { "fwjpnfont", "png", HandleFullwidthJapaneseFontToPngCommand }, { "png", "fwjpnfont", HandlePngToFullwidthJapaneseFontCommand }, + { NULL, "huff", HandleHuffCompressCommand }, { NULL, "lz", HandleLZCompressCommand }, + { "huff", NULL, HandleHuffDecompressCommand }, { "lz", NULL, HandleLZDecompressCommand }, { NULL, "rl", HandleRLCompressCommand }, { "rl", NULL, HandleRLDecompressCommand }, diff --git a/tools/gbagfx/options.h b/tools/gbagfx/options.h index 463ee2455..2ff3967a4 100644 --- a/tools/gbagfx/options.h +++ b/tools/gbagfx/options.h @@ -7,7 +7,6 @@ struct GbaToPngOptions { char *paletteFilePath; - char *tilemapFilePath; int bitDepth; bool hasTransparency; int width; @@ -16,7 +15,6 @@ struct GbaToPngOptions { }; struct PngToGbaOptions { - char *tilemapFilePath; int numTiles; int bitDepth; int metatileWidth; diff --git a/tools/mapjson/.gitignore b/tools/mapjson/.gitignore new file mode 100755 index 000000000..a5d568479 --- /dev/null +++ b/tools/mapjson/.gitignore @@ -0,0 +1 @@ +mapjson diff --git a/tools/mapjson/Makefile b/tools/mapjson/Makefile new file mode 100644 index 000000000..d09acad50 --- /dev/null +++ b/tools/mapjson/Makefile @@ -0,0 +1,15 @@ +CXX := g++ + +CXXFLAGS := -Wall -std=c++11 -O2 + +SRCS := json11.cpp mapjson.cpp + +HEADERS := mapjson.h + +.PHONY: clean + +mapjson: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) mapjson mapjson.exe diff --git a/tools/mapjson/json11.cpp b/tools/mapjson/json11.cpp new file mode 100644 index 000000000..1da530206 --- /dev/null +++ b/tools/mapjson/json11.cpp @@ -0,0 +1,786 @@ +/* Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "json11.h" +#include +#include +#include +#include +#include + +namespace json11 { + +static const int max_depth = 200; + +using std::string; +using std::vector; +using std::map; +using std::make_shared; +using std::initializer_list; +using std::move; + +/* Helper for representing null - just a do-nothing struct, plus comparison + * operators so the helpers in JsonValue work. We can't use nullptr_t because + * it may not be orderable. + */ +struct NullStruct { + bool operator==(NullStruct) const { return true; } + bool operator<(NullStruct) const { return false; } +}; + +/* * * * * * * * * * * * * * * * * * * * + * Serialization + */ + +static void dump(NullStruct, string &out) { + out += "null"; +} + +static void dump(double value, string &out) { + if (std::isfinite(value)) { + char buf[32]; + snprintf(buf, sizeof buf, "%.17g", value); + out += buf; + } else { + out += "null"; + } +} + +static void dump(int value, string &out) { + char buf[32]; + snprintf(buf, sizeof buf, "%d", value); + out += buf; +} + +static void dump(bool value, string &out) { + out += value ? "true" : "false"; +} + +static void dump(const string &value, string &out) { + out += '"'; + for (size_t i = 0; i < value.length(); i++) { + const char ch = value[i]; + if (ch == '\\') { + out += "\\\\"; + } else if (ch == '"') { + out += "\\\""; + } else if (ch == '\b') { + out += "\\b"; + } else if (ch == '\f') { + out += "\\f"; + } else if (ch == '\n') { + out += "\\n"; + } else if (ch == '\r') { + out += "\\r"; + } else if (ch == '\t') { + out += "\\t"; + } else if (static_cast(ch) <= 0x1f) { + char buf[8]; + snprintf(buf, sizeof buf, "\\u%04x", ch); + out += buf; + } else if (static_cast(ch) == 0xe2 && static_cast(value[i+1]) == 0x80 + && static_cast(value[i+2]) == 0xa8) { + out += "\\u2028"; + i += 2; + } else if (static_cast(ch) == 0xe2 && static_cast(value[i+1]) == 0x80 + && static_cast(value[i+2]) == 0xa9) { + out += "\\u2029"; + i += 2; + } else { + out += ch; + } + } + out += '"'; +} + +static void dump(const Json::array &values, string &out) { + bool first = true; + out += "["; + for (const auto &value : values) { + if (!first) + out += ", "; + value.dump(out); + first = false; + } + out += "]"; +} + +static void dump(const Json::object &values, string &out) { + bool first = true; + out += "{"; + for (const auto &kv : values) { + if (!first) + out += ", "; + dump(kv.first, out); + out += ": "; + kv.second.dump(out); + first = false; + } + out += "}"; +} + +void Json::dump(string &out) const { + m_ptr->dump(out); +} + +/* * * * * * * * * * * * * * * * * * * * + * Value wrappers + */ + +template +class Value : public JsonValue { +protected: + + // Constructors + explicit Value(const T &value) : m_value(value) {} + explicit Value(T &&value) : m_value(move(value)) {} + + // Get type tag + Json::Type type() const override { + return tag; + } + + // Comparisons + bool equals(const JsonValue * other) const override { + return m_value == static_cast *>(other)->m_value; + } + bool less(const JsonValue * other) const override { + return m_value < static_cast *>(other)->m_value; + } + + const T m_value; + void dump(string &out) const override { json11::dump(m_value, out); } +}; + +class JsonDouble final : public Value { + double number_value() const override { return m_value; } + int int_value() const override { return static_cast(m_value); } + bool equals(const JsonValue * other) const override { return m_value == other->number_value(); } + bool less(const JsonValue * other) const override { return m_value < other->number_value(); } +public: + explicit JsonDouble(double value) : Value(value) {} +}; + +class JsonInt final : public Value { + double number_value() const override { return m_value; } + int int_value() const override { return m_value; } + bool equals(const JsonValue * other) const override { return m_value == other->number_value(); } + bool less(const JsonValue * other) const override { return m_value < other->number_value(); } +public: + explicit JsonInt(int value) : Value(value) {} +}; + +class JsonBoolean final : public Value { + bool bool_value() const override { return m_value; } +public: + explicit JsonBoolean(bool value) : Value(value) {} +}; + +class JsonString final : public Value { + const string &string_value() const override { return m_value; } +public: + explicit JsonString(const string &value) : Value(value) {} + explicit JsonString(string &&value) : Value(move(value)) {} +}; + +class JsonArray final : public Value { + const Json::array &array_items() const override { return m_value; } + const Json & operator[](size_t i) const override; +public: + explicit JsonArray(const Json::array &value) : Value(value) {} + explicit JsonArray(Json::array &&value) : Value(move(value)) {} +}; + +class JsonObject final : public Value { + const Json::object &object_items() const override { return m_value; } + const Json & operator[](const string &key) const override; +public: + explicit JsonObject(const Json::object &value) : Value(value) {} + explicit JsonObject(Json::object &&value) : Value(move(value)) {} +}; + +class JsonNull final : public Value { +public: + JsonNull() : Value({}) {} +}; + +/* * * * * * * * * * * * * * * * * * * * + * Static globals - static-init-safe + */ +struct Statics { + const std::shared_ptr null = make_shared(); + const std::shared_ptr t = make_shared(true); + const std::shared_ptr f = make_shared(false); + const string empty_string; + const vector empty_vector; + const map empty_map; + Statics() {} +}; + +static const Statics & statics() { + static const Statics s {}; + return s; +} + +static const Json & static_null() { + // This has to be separate, not in Statics, because Json() accesses statics().null. + static const Json json_null; + return json_null; +} + +/* * * * * * * * * * * * * * * * * * * * + * Constructors + */ + +Json::Json() noexcept : m_ptr(statics().null) {} +Json::Json(std::nullptr_t) noexcept : m_ptr(statics().null) {} +Json::Json(double value) : m_ptr(make_shared(value)) {} +Json::Json(int value) : m_ptr(make_shared(value)) {} +Json::Json(bool value) : m_ptr(value ? statics().t : statics().f) {} +Json::Json(const string &value) : m_ptr(make_shared(value)) {} +Json::Json(string &&value) : m_ptr(make_shared(move(value))) {} +Json::Json(const char * value) : m_ptr(make_shared(value)) {} +Json::Json(const Json::array &values) : m_ptr(make_shared(values)) {} +Json::Json(Json::array &&values) : m_ptr(make_shared(move(values))) {} +Json::Json(const Json::object &values) : m_ptr(make_shared(values)) {} +Json::Json(Json::object &&values) : m_ptr(make_shared(move(values))) {} + +/* * * * * * * * * * * * * * * * * * * * + * Accessors + */ + +Json::Type Json::type() const { return m_ptr->type(); } +double Json::number_value() const { return m_ptr->number_value(); } +int Json::int_value() const { return m_ptr->int_value(); } +bool Json::bool_value() const { return m_ptr->bool_value(); } +const string & Json::string_value() const { return m_ptr->string_value(); } +const vector & Json::array_items() const { return m_ptr->array_items(); } +const map & Json::object_items() const { return m_ptr->object_items(); } +const Json & Json::operator[] (size_t i) const { return (*m_ptr)[i]; } +const Json & Json::operator[] (const string &key) const { return (*m_ptr)[key]; } + +double JsonValue::number_value() const { return 0; } +int JsonValue::int_value() const { return 0; } +bool JsonValue::bool_value() const { return false; } +const string & JsonValue::string_value() const { return statics().empty_string; } +const vector & JsonValue::array_items() const { return statics().empty_vector; } +const map & JsonValue::object_items() const { return statics().empty_map; } +const Json & JsonValue::operator[] (size_t) const { return static_null(); } +const Json & JsonValue::operator[] (const string &) const { return static_null(); } + +const Json & JsonObject::operator[] (const string &key) const { + auto iter = m_value.find(key); + return (iter == m_value.end()) ? static_null() : iter->second; +} +const Json & JsonArray::operator[] (size_t i) const { + if (i >= m_value.size()) return static_null(); + else return m_value[i]; +} + +/* * * * * * * * * * * * * * * * * * * * + * Comparison + */ + +bool Json::operator== (const Json &other) const { + if (m_ptr == other.m_ptr) + return true; + if (m_ptr->type() != other.m_ptr->type()) + return false; + + return m_ptr->equals(other.m_ptr.get()); +} + +bool Json::operator< (const Json &other) const { + if (m_ptr == other.m_ptr) + return false; + if (m_ptr->type() != other.m_ptr->type()) + return m_ptr->type() < other.m_ptr->type(); + + return m_ptr->less(other.m_ptr.get()); +} + +/* * * * * * * * * * * * * * * * * * * * + * Parsing + */ + +/* esc(c) + * + * Format char c suitable for printing in an error message. + */ +static inline string esc(char c) { + char buf[12]; + if (static_cast(c) >= 0x20 && static_cast(c) <= 0x7f) { + snprintf(buf, sizeof buf, "'%c' (%d)", c, c); + } else { + snprintf(buf, sizeof buf, "(%d)", c); + } + return string(buf); +} + +static inline bool in_range(long x, long lower, long upper) { + return (x >= lower && x <= upper); +} + +namespace { +/* JsonParser + * + * Object that tracks all state of an in-progress parse. + */ +struct JsonParser final { + + /* State + */ + const string &str; + size_t i; + string &err; + bool failed; + const JsonParse strategy; + + /* fail(msg, err_ret = Json()) + * + * Mark this parse as failed. + */ + Json fail(string &&msg) { + return fail(move(msg), Json()); + } + + template + T fail(string &&msg, const T err_ret) { + if (!failed) + err = std::move(msg); + failed = true; + return err_ret; + } + + /* consume_whitespace() + * + * Advance until the current character is non-whitespace. + */ + void consume_whitespace() { + while (str[i] == ' ' || str[i] == '\r' || str[i] == '\n' || str[i] == '\t') + i++; + } + + /* consume_comment() + * + * Advance comments (c-style inline and multiline). + */ + bool consume_comment() { + bool comment_found = false; + if (str[i] == '/') { + i++; + if (i == str.size()) + return fail("unexpected end of input after start of comment", false); + if (str[i] == '/') { // inline comment + i++; + // advance until next line, or end of input + while (i < str.size() && str[i] != '\n') { + i++; + } + comment_found = true; + } + else if (str[i] == '*') { // multiline comment + i++; + if (i > str.size()-2) + return fail("unexpected end of input inside multi-line comment", false); + // advance until closing tokens + while (!(str[i] == '*' && str[i+1] == '/')) { + i++; + if (i > str.size()-2) + return fail( + "unexpected end of input inside multi-line comment", false); + } + i += 2; + comment_found = true; + } + else + return fail("malformed comment", false); + } + return comment_found; + } + + /* consume_garbage() + * + * Advance until the current character is non-whitespace and non-comment. + */ + void consume_garbage() { + consume_whitespace(); + if(strategy == JsonParse::COMMENTS) { + bool comment_found = false; + do { + comment_found = consume_comment(); + if (failed) return; + consume_whitespace(); + } + while(comment_found); + } + } + + /* get_next_token() + * + * Return the next non-whitespace character. If the end of the input is reached, + * flag an error and return 0. + */ + char get_next_token() { + consume_garbage(); + if (failed) return static_cast(0); + if (i == str.size()) + return fail("unexpected end of input", static_cast(0)); + + return str[i++]; + } + + /* encode_utf8(pt, out) + * + * Encode pt as UTF-8 and add it to out. + */ + void encode_utf8(long pt, string & out) { + if (pt < 0) + return; + + if (pt < 0x80) { + out += static_cast(pt); + } else if (pt < 0x800) { + out += static_cast((pt >> 6) | 0xC0); + out += static_cast((pt & 0x3F) | 0x80); + } else if (pt < 0x10000) { + out += static_cast((pt >> 12) | 0xE0); + out += static_cast(((pt >> 6) & 0x3F) | 0x80); + out += static_cast((pt & 0x3F) | 0x80); + } else { + out += static_cast((pt >> 18) | 0xF0); + out += static_cast(((pt >> 12) & 0x3F) | 0x80); + out += static_cast(((pt >> 6) & 0x3F) | 0x80); + out += static_cast((pt & 0x3F) | 0x80); + } + } + + /* parse_string() + * + * Parse a string, starting at the current position. + */ + string parse_string() { + string out; + long last_escaped_codepoint = -1; + while (true) { + if (i == str.size()) + return fail("unexpected end of input in string", ""); + + char ch = str[i++]; + + if (ch == '"') { + encode_utf8(last_escaped_codepoint, out); + return out; + } + + if (in_range(ch, 0, 0x1f)) + return fail("unescaped " + esc(ch) + " in string", ""); + + // The usual case: non-escaped characters + if (ch != '\\') { + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = -1; + out += ch; + continue; + } + + // Handle escapes + if (i == str.size()) + return fail("unexpected end of input in string", ""); + + ch = str[i++]; + + if (ch == 'u') { + // Extract 4-byte escape sequence + string esc = str.substr(i, 4); + // Explicitly check length of the substring. The following loop + // relies on std::string returning the terminating NUL when + // accessing str[length]. Checking here reduces brittleness. + if (esc.length() < 4) { + return fail("bad \\u escape: " + esc, ""); + } + for (size_t j = 0; j < 4; j++) { + if (!in_range(esc[j], 'a', 'f') && !in_range(esc[j], 'A', 'F') + && !in_range(esc[j], '0', '9')) + return fail("bad \\u escape: " + esc, ""); + } + + long codepoint = strtol(esc.data(), nullptr, 16); + + // JSON specifies that characters outside the BMP shall be encoded as a pair + // of 4-hex-digit \u escapes encoding their surrogate pair components. Check + // whether we're in the middle of such a beast: the previous codepoint was an + // escaped lead (high) surrogate, and this is a trail (low) surrogate. + if (in_range(last_escaped_codepoint, 0xD800, 0xDBFF) + && in_range(codepoint, 0xDC00, 0xDFFF)) { + // Reassemble the two surrogate pairs into one astral-plane character, per + // the UTF-16 algorithm. + encode_utf8((((last_escaped_codepoint - 0xD800) << 10) + | (codepoint - 0xDC00)) + 0x10000, out); + last_escaped_codepoint = -1; + } else { + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = codepoint; + } + + i += 4; + continue; + } + + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = -1; + + if (ch == 'b') { + out += '\b'; + } else if (ch == 'f') { + out += '\f'; + } else if (ch == 'n') { + out += '\n'; + } else if (ch == 'r') { + out += '\r'; + } else if (ch == 't') { + out += '\t'; + } else if (ch == '"' || ch == '\\' || ch == '/') { + out += ch; + } else { + return fail("invalid escape character " + esc(ch), ""); + } + } + } + + /* parse_number() + * + * Parse a double. + */ + Json parse_number() { + size_t start_pos = i; + + if (str[i] == '-') + i++; + + // Integer part + if (str[i] == '0') { + i++; + if (in_range(str[i], '0', '9')) + return fail("leading 0s not permitted in numbers"); + } else if (in_range(str[i], '1', '9')) { + i++; + while (in_range(str[i], '0', '9')) + i++; + } else { + return fail("invalid " + esc(str[i]) + " in number"); + } + + if (str[i] != '.' && str[i] != 'e' && str[i] != 'E' + && (i - start_pos) <= static_cast(std::numeric_limits::digits10)) { + return std::atoi(str.c_str() + start_pos); + } + + // Decimal part + if (str[i] == '.') { + i++; + if (!in_range(str[i], '0', '9')) + return fail("at least one digit required in fractional part"); + + while (in_range(str[i], '0', '9')) + i++; + } + + // Exponent part + if (str[i] == 'e' || str[i] == 'E') { + i++; + + if (str[i] == '+' || str[i] == '-') + i++; + + if (!in_range(str[i], '0', '9')) + return fail("at least one digit required in exponent"); + + while (in_range(str[i], '0', '9')) + i++; + } + + return std::strtod(str.c_str() + start_pos, nullptr); + } + + /* expect(str, res) + * + * Expect that 'str' starts at the character that was just read. If it does, advance + * the input and return res. If not, flag an error. + */ + Json expect(const string &expected, Json res) { + assert(i != 0); + i--; + if (str.compare(i, expected.length(), expected) == 0) { + i += expected.length(); + return res; + } else { + return fail("parse error: expected " + expected + ", got " + str.substr(i, expected.length())); + } + } + + /* parse_json() + * + * Parse a JSON object. + */ + Json parse_json(int depth) { + if (depth > max_depth) { + return fail("exceeded maximum nesting depth"); + } + + char ch = get_next_token(); + if (failed) + return Json(); + + if (ch == '-' || (ch >= '0' && ch <= '9')) { + i--; + return parse_number(); + } + + if (ch == 't') + return expect("true", true); + + if (ch == 'f') + return expect("false", false); + + if (ch == 'n') + return expect("null", Json()); + + if (ch == '"') + return parse_string(); + + if (ch == '{') { + map data; + ch = get_next_token(); + if (ch == '}') + return data; + + while (1) { + if (ch != '"') + return fail("expected '\"' in object, got " + esc(ch)); + + string key = parse_string(); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch != ':') + return fail("expected ':' in object, got " + esc(ch)); + + data[std::move(key)] = parse_json(depth + 1); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch == '}') + break; + if (ch != ',') + return fail("expected ',' in object, got " + esc(ch)); + + ch = get_next_token(); + } + return data; + } + + if (ch == '[') { + vector data; + ch = get_next_token(); + if (ch == ']') + return data; + + while (1) { + i--; + data.push_back(parse_json(depth + 1)); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch == ']') + break; + if (ch != ',') + return fail("expected ',' in list, got " + esc(ch)); + + ch = get_next_token(); + (void)ch; + } + return data; + } + + return fail("expected value, got " + esc(ch)); + } +}; +}//namespace { + +Json Json::parse(const string &in, string &err, JsonParse strategy) { + JsonParser parser { in, 0, err, false, strategy }; + Json result = parser.parse_json(0); + + // Check for any trailing garbage + parser.consume_garbage(); + if (parser.failed) + return Json(); + if (parser.i != in.size()) + return parser.fail("unexpected trailing " + esc(in[parser.i])); + + return result; +} + +// Documented in json11.hpp +vector Json::parse_multi(const string &in, + std::string::size_type &parser_stop_pos, + string &err, + JsonParse strategy) { + JsonParser parser { in, 0, err, false, strategy }; + parser_stop_pos = 0; + vector json_vec; + while (parser.i != in.size() && !parser.failed) { + json_vec.push_back(parser.parse_json(0)); + if (parser.failed) + break; + + // Check for another object + parser.consume_garbage(); + if (parser.failed) + break; + parser_stop_pos = parser.i; + } + return json_vec; +} + +/* * * * * * * * * * * * * * * * * * * * + * Shape-checking + */ + +bool Json::has_shape(const shape & types, string & err) const { + if (!is_object()) { + err = "expected JSON object, got " + dump(); + return false; + } + + for (auto & item : types) { + if ((*this)[item.first].type() != item.second) { + err = "bad type for " + item.first + " in " + dump(); + return false; + } + } + + return true; +} + +} // namespace json11 diff --git a/tools/mapjson/json11.h b/tools/mapjson/json11.h new file mode 100644 index 000000000..c04c4362f --- /dev/null +++ b/tools/mapjson/json11.h @@ -0,0 +1,230 @@ +/* json11 + * + * json11 is a tiny JSON library for C++11, providing JSON parsing and serialization. + * + * The core object provided by the library is json11::Json. A Json object represents any JSON + * value: null, bool, number (int or double), string (std::string), array (std::vector), or + * object (std::map). + * + * Json objects act like values: they can be assigned, copied, moved, compared for equality or + * order, etc. There are also helper methods Json::dump, to serialize a Json to a string, and + * Json::parse (static) to parse a std::string as a Json object. + * + * Internally, the various types of Json object are represented by the JsonValue class + * hierarchy. + * + * A note on numbers - JSON specifies the syntax of number formatting but not its semantics, + * so some JSON implementations distinguish between integers and floating-point numbers, while + * some don't. In json11, we choose the latter. Because some JSON implementations (namely + * Javascript itself) treat all numbers as the same type, distinguishing the two leads + * to JSON that will be *silently* changed by a round-trip through those implementations. + * Dangerous! To avoid that risk, json11 stores all numbers as double internally, but also + * provides integer helpers. + * + * Fortunately, double-precision IEEE754 ('double') can precisely store any integer in the + * range +/-2^53, which includes every 'int' on most systems. (Timestamps often use int64 + * or long long to avoid the Y2038K problem; a double storing microseconds since some epoch + * will be exact for +/- 275 years.) + */ + +/* Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#ifdef _MSC_VER + #if _MSC_VER <= 1800 // VS 2013 + #ifndef noexcept + #define noexcept throw() + #endif + + #ifndef snprintf + #define snprintf _snprintf_s + #endif + #endif +#endif + +namespace json11 { + +enum JsonParse { + STANDARD, COMMENTS +}; + +class JsonValue; + +class Json final { +public: + // Types + enum Type { + NUL, NUMBER, BOOL, STRING, ARRAY, OBJECT + }; + + // Array and object typedefs + typedef std::vector array; + typedef std::map object; + + // Constructors for the various types of JSON value. + Json() noexcept; // NUL + Json(std::nullptr_t) noexcept; // NUL + Json(double value); // NUMBER + Json(int value); // NUMBER + Json(bool value); // BOOL + Json(const std::string &value); // STRING + Json(std::string &&value); // STRING + Json(const char * value); // STRING + Json(const array &values); // ARRAY + Json(array &&values); // ARRAY + Json(const object &values); // OBJECT + Json(object &&values); // OBJECT + + // Implicit constructor: anything with a to_json() function. + template + Json(const T & t) : Json(t.to_json()) {} + + // Implicit constructor: map-like objects (std::map, std::unordered_map, etc) + template ().begin()->first)>::value + && std::is_constructible().begin()->second)>::value, + int>::type = 0> + Json(const M & m) : Json(object(m.begin(), m.end())) {} + + // Implicit constructor: vector-like objects (std::list, std::vector, std::set, etc) + template ().begin())>::value, + int>::type = 0> + Json(const V & v) : Json(array(v.begin(), v.end())) {} + + // This prevents Json(some_pointer) from accidentally producing a bool. Use + // Json(bool(some_pointer)) if that behavior is desired. + Json(void *) = delete; + + // Accessors + Type type() const; + + bool is_null() const { return type() == NUL; } + bool is_number() const { return type() == NUMBER; } + bool is_bool() const { return type() == BOOL; } + bool is_string() const { return type() == STRING; } + bool is_array() const { return type() == ARRAY; } + bool is_object() const { return type() == OBJECT; } + + // Return the enclosed value if this is a number, 0 otherwise. Note that json11 does not + // distinguish between integer and non-integer numbers - number_value() and int_value() + // can both be applied to a NUMBER-typed object. + double number_value() const; + int int_value() const; + + // Return the enclosed value if this is a boolean, false otherwise. + bool bool_value() const; + // Return the enclosed string if this is a string, "" otherwise. + const std::string &string_value() const; + // Return the enclosed std::vector if this is an array, or an empty vector otherwise. + const array &array_items() const; + // Return the enclosed std::map if this is an object, or an empty map otherwise. + const object &object_items() const; + + // Return a reference to arr[i] if this is an array, Json() otherwise. + const Json & operator[](size_t i) const; + // Return a reference to obj[key] if this is an object, Json() otherwise. + const Json & operator[](const std::string &key) const; + + // Serialize. + void dump(std::string &out) const; + std::string dump() const { + std::string out; + dump(out); + return out; + } + + // Parse. If parse fails, return Json() and assign an error message to err. + static Json parse(const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + static Json parse(const char * in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + if (in) { + return parse(std::string(in), err, strategy); + } else { + err = "null input"; + return nullptr; + } + } + // Parse multiple objects, concatenated or separated by whitespace + static std::vector parse_multi( + const std::string & in, + std::string::size_type & parser_stop_pos, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + + static inline std::vector parse_multi( + const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + std::string::size_type parser_stop_pos; + return parse_multi(in, parser_stop_pos, err, strategy); + } + + bool operator== (const Json &rhs) const; + bool operator< (const Json &rhs) const; + bool operator!= (const Json &rhs) const { return !(*this == rhs); } + bool operator<= (const Json &rhs) const { return !(rhs < *this); } + bool operator> (const Json &rhs) const { return (rhs < *this); } + bool operator>= (const Json &rhs) const { return !(*this < rhs); } + + /* has_shape(types, err) + * + * Return true if this is a JSON object and, for each item in types, has a field of + * the given type. If not, return false and set err to a descriptive message. + */ + typedef std::initializer_list> shape; + bool has_shape(const shape & types, std::string & err) const; + +private: + std::shared_ptr m_ptr; +}; + +// Internal class hierarchy - JsonValue objects are not exposed to users of this API. +class JsonValue { +protected: + friend class Json; + friend class JsonInt; + friend class JsonDouble; + virtual Json::Type type() const = 0; + virtual bool equals(const JsonValue * other) const = 0; + virtual bool less(const JsonValue * other) const = 0; + virtual void dump(std::string &out) const = 0; + virtual double number_value() const; + virtual int int_value() const; + virtual bool bool_value() const; + virtual const std::string &string_value() const; + virtual const Json::array &array_items() const; + virtual const Json &operator[](size_t i) const; + virtual const Json::object &object_items() const; + virtual const Json &operator[](const std::string &key) const; + virtual ~JsonValue() {} +}; + +} // namespace json11 diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp new file mode 100644 index 000000000..1cf196fda --- /dev/null +++ b/tools/mapjson/mapjson.cpp @@ -0,0 +1,538 @@ +// mapjson.cpp + +#include +using std::cout; using std::endl; + +#include +using std::string; + +#include +using std::vector; + +#include +using std::sort; using std::find; + +#include +using std::map; + +#include +using std::ofstream; using std::ifstream; + +#include +using std::ostringstream; + +#include +using std::numeric_limits; + +#include "json11.h" +using json11::Json; + +#include "mapjson.h" + + +string read_text_file(string filepath) { + ifstream in_file(filepath); + + if (!in_file.is_open()) + FATAL_ERROR("Cannot open file %s for reading.\n", filepath.c_str()); + + string text; + + in_file.seekg(0, std::ios::end); + text.resize(in_file.tellg()); + + in_file.seekg(0, std::ios::beg); + in_file.read(&text[0], text.size()); + + in_file.close(); + + return text; +} + +void write_text_file(string filepath, string text) { + ofstream out_file(filepath, std::ofstream::binary); + + if (!out_file.is_open()) + FATAL_ERROR("Cannot open file %s for writing.\n", filepath.c_str()); + + out_file << text; + + out_file.close(); +} + +string generate_map_header_text(Json map_data, Json layouts_data, string version) { + string map_layout_id = map_data["layout"].string_value(); + + vector matched; + + for (auto &field : layouts_data["layouts"].array_items()) { + if (map_layout_id == field["id"].string_value()) + matched.push_back(field); + } + + if (matched.size() != 1) + FATAL_ERROR("Failed to find matching layout for %s.\n", map_layout_id.c_str()); + + Json layout = matched[0]; + + ostringstream text; + + text << map_data["name"].string_value() << ":\n" + << "\t.4byte " << layout["name"].string_value() << "\n"; + + if (map_data.object_items().find("shared_events_map") != map_data.object_items().end()) + text << "\t.4byte " << map_data["shared_events_map"].string_value() << "_MapEvents\n"; + else + text << "\t.4byte " << map_data["name"].string_value() << "_MapEvents\n"; + + if (map_data.object_items().find("shared_scripts_map") != map_data.object_items().end()) + text << "\t.4byte " << map_data["shared_scripts_map"].string_value() << "_MapScripts\n"; + else + text << "\t.4byte " << map_data["name"].string_value() << "_MapScripts\n"; + + if (map_data.object_items().find("connections") != map_data.object_items().end() + && map_data["connections"].array_items().size() > 0) + text << "\t.4byte " << map_data["name"].string_value() << "_MapConnections\n"; + else + text << "\t.4byte 0x0\n"; + + text << "\t.2byte " << map_data["music"].string_value() << "\n" + << "\t.2byte " << layout["id"].string_value() << "\n" + << "\t.byte " << map_data["region_map_section"].string_value() << "\n" + << "\t.byte " << map_data["requires_flash"].bool_value() << "\n" + << "\t.byte " << map_data["weather"].string_value() << "\n" + << "\t.byte " << map_data["map_type"].string_value() << "\n" + << "\t.2byte 0\n"; + + if (version == "ruby") + text << "\t.byte " << map_data["show_map_name"].bool_value() << "\n"; + else if (version == "emerald") + text << "\tmap_header_flags " + << "allow_bike=" << map_data["allow_bike"].bool_value() << ", " + << "allow_escape_rope=" << map_data["allow_escape_rope"].bool_value() << ", " + << "allow_run=" << map_data["allow_running"].bool_value() << ", " + << "show_map_name=" << map_data["show_map_name"].bool_value() << "\n"; + + text << "\t.byte " << map_data["battle_scene"].string_value() << "\n\n"; + + return text.str(); +} + +string generate_map_connections_text(Json map_data) { + if (map_data["connections"] == Json()) + return string("\n"); + + ostringstream text; + + text << map_data["name"].string_value() << "_MapConnectionsList:\n"; + + for (auto &connection : map_data["connections"].array_items()) { + text << "\tconnection " + << connection["direction"].string_value() << ", " + << connection["offset"].int_value() << ", " + << connection["map"].string_value() << "\n"; + } + + text << "\n" << map_data["name"].string_value() << "_MapConnections:\n" + << "\t.4byte " << map_data["connections"].array_items().size() << "\n" + << "\t.4byte " << map_data["name"].string_value() << "_MapConnectionsList\n\n"; + + return text.str(); +} + +string generate_map_events_text(Json map_data) { + if (map_data.object_items().find("shared_events_map") != map_data.object_items().end()) + return string("\n"); + + ostringstream text; + + string objects_label, warps_label, coords_label, bgs_label; + + if (map_data["object_events"].array_items().size() > 0) { + objects_label = map_data["name"].string_value() + "_EventObjects"; + text << objects_label << ":\n"; + for (unsigned int i = 0; i < map_data["object_events"].array_items().size(); i++) { + auto obj_event = map_data["object_events"].array_items()[i]; + text << "\tobject_event " << i + 1 << ", " + << obj_event["graphics_id"].string_value() << ", 0, " + << obj_event["x"].int_value() << ", " + << obj_event["y"].int_value() << ", " + << obj_event["elevation"].int_value() << ", " + << obj_event["movement_type"].string_value() << ", " + << obj_event["movement_range_x"].int_value() << ", " + << obj_event["movement_range_y"].int_value() << ", " + << obj_event["trainer_type"].string_value() << ", " + << obj_event["trainer_sight_or_berry_tree_id"].string_value() << ", " + << obj_event["script"].string_value() << ", " + << obj_event["flag"].string_value() << "\n"; + } + text << "\n"; + } else { + objects_label = "0x0"; + } + + if (map_data["warp_events"].array_items().size() > 0) { + warps_label = map_data["name"].string_value() + "_MapWarps"; + text << warps_label << ":\n"; + for (auto &warp_event : map_data["warp_events"].array_items()) { + text << "\twarp_def " + << warp_event["x"].int_value() << ", " + << warp_event["y"].int_value() << ", " + << warp_event["elevation"].int_value() << ", " + << warp_event["dest_warp_id"].int_value() << ", " + << warp_event["dest_map"].string_value() << "\n"; + } + text << "\n"; + } else { + warps_label = "0x0"; + } + + if (map_data["coord_events"].array_items().size() > 0) { + coords_label = map_data["name"].string_value() + "_MapCoordEvents"; + text << coords_label << ":\n"; + for (auto &coord_event : map_data["coord_events"].array_items()) { + if (coord_event["type"].string_value() == "trigger") { + text << "\tcoord_event " + << coord_event["x"].int_value() << ", " + << coord_event["y"].int_value() << ", " + << coord_event["elevation"].int_value() << ", " + << coord_event["var"].string_value() << ", " + << coord_event["var_value"].string_value() << ", " + << coord_event["script"].string_value() << "\n"; + } + else if (coord_event["type"] == "weather") { + text << "\tcoord_weather_event " + << coord_event["x"].int_value() << ", " + << coord_event["y"].int_value() << ", " + << coord_event["elevation"].int_value() << ", " + << coord_event["weather"].string_value() << "\n"; + } + } + text << "\n"; + } else { + coords_label = "0x0"; + } + + if (map_data["bg_events"].array_items().size() > 0) { + bgs_label = map_data["name"].string_value() + "_MapBGEvents"; + text << bgs_label << ":\n"; + for (auto &bg_event : map_data["bg_events"].array_items()) { + if (bg_event["type"] == "sign") { + text << "\tbg_event " + << bg_event["x"].int_value() << ", " + << bg_event["y"].int_value() << ", " + << bg_event["elevation"].int_value() << ", " + << bg_event["player_facing_dir"].string_value() << ", " + << bg_event["script"].string_value() << "\n"; + } + else if (bg_event["type"] == "hidden_item") { + text << "\tbg_hidden_item_event " + << bg_event["x"].int_value() << ", " + << bg_event["y"].int_value() << ", " + << bg_event["elevation"].int_value() << ", " + << bg_event["item"].string_value() << ", " + << bg_event["flag"].string_value() << "\n"; + } + else if (bg_event["type"] == "secret_base") { + text << "\tbg_secret_base_event " + << bg_event["x"].int_value() << ", " + << bg_event["y"].int_value() << ", " + << bg_event["elevation"].int_value() << ", " + << bg_event["secret_base_id"].string_value() << "\n"; + } + } + text << "\n"; + } else { + bgs_label = "0x0"; + } + + text << map_data["name"].string_value() << "_MapEvents::\n" + << "\tmap_events " << objects_label << ", " << warps_label << ", " + << coords_label << ", " << bgs_label << "\n\n"; + + return text.str(); +} + +string get_directory_name(string filename) { + size_t dir_pos = filename.find_last_of("/\\"); + + return filename.substr(0, dir_pos + 1); +} + +void process_map(string map_filepath, string layouts_filepath, string version) { + string mapdata_err, layouts_err; + + string mapdata_json_text = read_text_file(map_filepath); + string layouts_json_text = read_text_file(layouts_filepath); + + Json map_data = Json::parse(mapdata_json_text, mapdata_err); + if (map_data == Json()) + FATAL_ERROR("%s\n", mapdata_err.c_str()); + + Json layouts_data = Json::parse(layouts_json_text, layouts_err); + if (layouts_data == Json()) + FATAL_ERROR("%s\n", layouts_err.c_str()); + + string header_text = generate_map_header_text(map_data, layouts_data, version); + string events_text = generate_map_events_text(map_data); + string connections_text = generate_map_connections_text(map_data); + + string files_dir = get_directory_name(map_filepath); + write_text_file(files_dir + "header.inc", header_text); + write_text_file(files_dir + "events.inc", events_text); + write_text_file(files_dir + "connections.inc", connections_text); +} + +string generate_groups_text(Json groups_data) { + ostringstream text; + + for (auto &key : groups_data["group_order"].array_items()) { + string group = key.string_value(); + text << group << "::\n"; + auto maps = groups_data[group].array_items(); + for (Json &map_name : maps) + text << "\t.4byte " << map_name.string_value() << "\n"; + text << "\n"; + } + + text << "\t.align 2\n" << "gMapGroups::\n"; + for (auto &group : groups_data["group_order"].array_items()) + text << "\t.4byte " << group.string_value() << "\n"; + text << "\n"; + + return text.str(); +} + +string generate_connections_text(Json groups_data) { + vector map_names; + + for (auto &group : groups_data["group_order"].array_items()) + for (auto map_name : groups_data[group.string_value()].array_items()) + map_names.push_back(map_name); + + vector connections_include_order = groups_data["connections_include_order"].array_items(); + + if (connections_include_order.size() > 0) + sort(map_names.begin(), map_names.end(), [connections_include_order](const Json &a, const Json &b) { + auto iter_a = find(connections_include_order.begin(), connections_include_order.end(), a); + if (iter_a == connections_include_order.end()) + iter_a = connections_include_order.begin() + numeric_limits::max(); + auto iter_b = find(connections_include_order.begin(), connections_include_order.end(), b); + if (iter_b == connections_include_order.end()) + iter_b = connections_include_order.begin() + numeric_limits::max(); + return iter_a < iter_b; + }); + + ostringstream text; + + for (Json map_name : map_names) + text << "\t.include \"data/maps/" << map_name.string_value() << "/connections.inc\"\n"; + + return text.str(); +} + +string generate_headers_text(Json groups_data) { + vector map_names; + + for (auto &group : groups_data["group_order"].array_items()) + for (auto map_name : groups_data[group.string_value()].array_items()) + map_names.push_back(map_name.string_value()); + + ostringstream text; + + for (string map_name : map_names) + text << "\t.include \"data/maps/" << map_name << "/header.inc\"\n"; + + return text.str(); +} + +string generate_events_text(Json groups_data) { + vector map_names; + + for (auto &group : groups_data["group_order"].array_items()) + for (auto map_name : groups_data[group.string_value()].array_items()) + map_names.push_back(map_name.string_value()); + + ostringstream text; + + for (string map_name : map_names) + text << "\t.include \"data/maps/" << map_name << "/events.inc\"\n"; + + return text.str(); +} + +string generate_map_constants_text(string groups_filepath, Json groups_data) { + string file_dir = get_directory_name(groups_filepath); + char dir_separator = file_dir.back(); + + ostringstream text; + + text << "#ifndef GUARD_CONSTANTS_MAP_GROUPS_H\n" + << "#define GUARD_CONSTANTS_MAP_GROUPS_H\n\n"; + + int group_num = 0; + + for (auto &group : groups_data["group_order"].array_items()) { + text << "// Map Group " << group_num << "\n"; + vector map_ids; + size_t max_length = 0; + + for (auto &map_name : groups_data[group.string_value()].array_items()) { + string header_filepath = file_dir + map_name.string_value() + dir_separator + "map.json"; + string err_str; + Json map_data = Json::parse(read_text_file(header_filepath), err_str); + map_ids.push_back(map_data["id"]); + if (map_data["id"].string_value().length() > max_length) + max_length = map_data["id"].string_value().length(); + } + + int map_id_num = 0; + for (Json map_id : map_ids) { + text << "#define " << map_id.string_value() << string((max_length - map_id.string_value().length() + 1), ' ') + << "(" << map_id_num++ << " | (" << group_num << " << 8))\n"; + } + text << "\n"; + + group_num++; + } + + text << "#define MAP_GROUPS_COUNT " << group_num << "\n\n"; + text << "#endif // GUARD_CONSTANTS_MAP_GROUPS_H\n"; + + return text.str(); +} + +void process_groups(string groups_filepath) { + string err; + Json groups_data = Json::parse(read_text_file(groups_filepath), err); + + if (groups_data == Json()) + FATAL_ERROR("%s\n", err.c_str()); + + string groups_text = generate_groups_text(groups_data); + string connections_text = generate_connections_text(groups_data); + string headers_text = generate_headers_text(groups_data); + string events_text = generate_events_text(groups_data); + string map_header_text = generate_map_constants_text(groups_filepath, groups_data); + + string file_dir = get_directory_name(groups_filepath); + char s = file_dir.back(); + + write_text_file(file_dir + "groups.inc", groups_text); + write_text_file(file_dir + "connections.inc", connections_text); + write_text_file(file_dir + "headers.inc", headers_text); + write_text_file(file_dir + "events.inc", events_text); + write_text_file(file_dir + ".." + s + ".." + s + "include" + s + "constants" + s + "map_groups.h", map_header_text); +} + +string generate_layout_headers_text(Json layouts_data) { + ostringstream text; + + for (auto &layout : layouts_data["layouts"].array_items()) { + string border_label = layout["name"].string_value() + "_Border"; + string blockdata_label = layout["name"].string_value() + "_Blockdata"; + text << border_label << "::\n" + << "\t.incbin \"" << layout["border_filepath"].string_value() << "\"\n\n" + << blockdata_label << "::\n" + << "\t.incbin \"" << layout["blockdata_filepath"].string_value() << "\"\n\n" + << "\t.align 2\n" + << layout["name"].string_value() << "::\n" + << "\t.4byte " << layout["width"].int_value() << "\n" + << "\t.4byte " << layout["height"].int_value() << "\n" + << "\t.4byte " << border_label << "\n" + << "\t.4byte " << blockdata_label << "\n" + << "\t.4byte " << layout["primary_tileset"].string_value() << "\n" + << "\t.4byte " << layout["secondary_tileset"].string_value() << "\n\n"; + } + + return text.str(); +} + +string generate_layouts_table_text(Json layouts_data) { + ostringstream text; + + text << "\t.align 2\n" + << layouts_data["layouts_table_label"].string_value() << "::\n"; + + for (auto &layout : layouts_data["layouts"].array_items()) + text << "\t.4byte " << layout["name"].string_value() << "\n"; + + return text.str(); +} + +string generate_layouts_constants_text(Json layouts_data) { + ostringstream text; + + text << "#ifndef GUARD_CONSTANTS_LAYOUTS_H\n" + << "#define GUARD_CONSTANTS_LAYOUTS_H\n\n"; + + int i = 0; + for (auto &layout : layouts_data["layouts"].array_items()) + text << "#define " << layout["id"].string_value() << " " << ++i << "\n"; + + text << "\n#endif // GUARD_CONSTANTS_LAYOUTS_H\n"; + + return text.str(); +} + +void process_layouts(string layouts_filepath) { + string err; + Json layouts_data = Json::parse(read_text_file(layouts_filepath), err); + + if (layouts_data == Json()) + FATAL_ERROR("%s\n", err.c_str()); + + string layout_headers_text = generate_layout_headers_text(layouts_data); + string layouts_table_text = generate_layouts_table_text(layouts_data); + string layouts_constants_text = generate_layouts_constants_text(layouts_data); + + string file_dir = get_directory_name(layouts_filepath); + char s = file_dir.back(); + + write_text_file(file_dir + "layouts.inc", layout_headers_text); + write_text_file(file_dir + "layouts_table.inc", layouts_table_text); + write_text_file(file_dir + ".." + s + ".." + s + "include" + s + "constants" + s + "layouts.h", layouts_constants_text); +} + +int main(int argc, char *argv[]) { + if (argc < 3) + FATAL_ERROR("USAGE: mapjson [options]\n"); + + char *version_arg = argv[2]; + string version(version_arg); + if (version != "emerald" && version != "ruby") + FATAL_ERROR("ERROR: must be 'emerald' or 'ruby'.\n"); + + char *mode_arg = argv[1]; + string mode(mode_arg); + if (mode != "layouts" && mode != "map" && mode != "groups") + FATAL_ERROR("ERROR: must be 'layouts', 'map', or 'groups'.\n"); + + if (mode == "map") { + if (argc != 5) + FATAL_ERROR("USAGE: mapjson map \n"); + + string filepath(argv[3]); + string layouts_filepath(argv[4]); + + process_map(filepath, layouts_filepath, version); + } + else if (mode == "groups") { + if (argc != 4) + FATAL_ERROR("USAGE: mapjson groups \n"); + + string filepath(argv[3]); + + process_groups(filepath); + } + else if (mode == "layouts") { + if (argc != 4) + FATAL_ERROR("USAGE: mapjson layouts \n"); + + string filepath(argv[3]); + + process_layouts(filepath); + } + + return 0; +} diff --git a/tools/mapjson/mapjson.h b/tools/mapjson/mapjson.h new file mode 100644 index 000000000..6e961a28e --- /dev/null +++ b/tools/mapjson/mapjson.h @@ -0,0 +1,31 @@ +// mapjson.h + +#ifndef MAPJSON_H +#define MAPJSON_H + +#include +using std::fprintf; using std::exit; + +#include + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#else + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#endif // _MSC_VER + +#endif // MAPJSON_H diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile index 367a3350b..53c9d0060 100644 --- a/tools/scaninc/Makefile +++ b/tools/scaninc/Makefile @@ -2,9 +2,9 @@ CXX = g++ CXXFLAGS = -Wall -Werror -std=c++11 -O2 -SRCS = scaninc.cpp c_file.cpp asm_file.cpp +SRCS = scaninc.cpp c_file.cpp asm_file.cpp source_file.cpp -HEADERS := scaninc.h asm_file.h c_file.h +HEADERS := scaninc.h asm_file.h c_file.h source_file.h .PHONY: clean diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp index 6322749e2..109e604a2 100644 --- a/tools/scaninc/asm_file.cpp +++ b/tools/scaninc/asm_file.cpp @@ -64,7 +64,8 @@ IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path) IncDirectiveType incDirectiveType = IncDirectiveType::None; - if (PeekChar() == '.') + char c = PeekChar(); + if (c == '.' || c == '#') { m_pos++; diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp index 3dc221479..b95cbd033 100644 --- a/tools/scaninc/scaninc.cpp +++ b/tools/scaninc/scaninc.cpp @@ -25,8 +25,7 @@ #include #include #include "scaninc.h" -#include "asm_file.h" -#include "c_file.h" +#include "source_file.h" bool CanOpenFile(std::string path) { @@ -46,7 +45,7 @@ int main(int argc, char **argv) std::queue filesToProcess; std::set dependencies; - std::list includeDirs; + std::vector includeDirs; argc--; argv++; @@ -63,7 +62,7 @@ int main(int argc, char **argv) argv++; includeDir = std::string(argv[0]); } - if (includeDir.back() != '/') + if (!includeDir.empty() && includeDir.back() != '/') { includeDir += '/'; } @@ -83,79 +82,36 @@ int main(int argc, char **argv) std::string initialPath(argv[0]); - std::size_t pos = initialPath.find_last_of('.'); + filesToProcess.push(initialPath); - if (pos == std::string::npos) - FATAL_ERROR("no file extension in path \"%s\"\n", initialPath.c_str()); - - std::string extension = initialPath.substr(pos + 1); - - std::string srcDir(""); - std::size_t slash = initialPath.rfind('/'); - if (slash != std::string::npos) + while (!filesToProcess.empty()) { - srcDir = initialPath.substr(0, slash + 1); - } - includeDirs.push_back(srcDir); + std::string filePath = filesToProcess.front(); + SourceFile file(filePath); + filesToProcess.pop(); - if (extension == "c" || extension == "h") - { - filesToProcess.push(initialPath); - - while (!filesToProcess.empty()) + includeDirs.push_back(file.GetSrcDir()); + for (auto incbin : file.GetIncbins()) { - CFile file(filesToProcess.front()); - filesToProcess.pop(); - - file.FindIncbins(); - for (auto incbin : file.GetIncbins()) + dependencies.insert(incbin); + } + for (auto include : file.GetIncludes()) + { + for (auto includeDir : includeDirs) { - dependencies.insert(incbin); - } - for (auto include : file.GetIncludes()) - { - for (auto includeDir : includeDirs) + std::string path(includeDir + include); + if (CanOpenFile(path)) { - std::string path(includeDir + include); - if (CanOpenFile(path)) + bool inserted = dependencies.insert(path).second; + if (inserted) { - bool inserted = dependencies.insert(path).second; - if (inserted) - { - filesToProcess.push(path); - } - break; + filesToProcess.push(path); } + break; } } } - } - else if (extension == "s" || extension == "inc") - { - filesToProcess.push(initialPath); - - while (!filesToProcess.empty()) - { - AsmFile file(filesToProcess.front()); - - filesToProcess.pop(); - - IncDirectiveType incDirectiveType; - std::string path; - - while ((incDirectiveType = file.ReadUntilIncDirective(path)) != IncDirectiveType::None) - { - bool inserted = dependencies.insert(path).second; - if (inserted - && incDirectiveType == IncDirectiveType::Include - && CanOpenFile(path)) - filesToProcess.push(path); - } - } - } - else - { - FATAL_ERROR("unknown extension \"%s\"\n", extension.c_str()); + includeDirs.pop_back(); } for (const std::string &path : dependencies) diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp new file mode 100644 index 000000000..f23ff6db6 --- /dev/null +++ b/tools/scaninc/source_file.cpp @@ -0,0 +1,125 @@ +// Copyright(c) 2019 Phlosioneer +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include +#include "source_file.h" + + +SourceFileType GetFileType(std::string& path) +{ + std::size_t pos = path.find_last_of('.'); + + if (pos == std::string::npos) + FATAL_ERROR("no file extension in path \"%s\"\n", path.c_str()); + + std::string extension = path.substr(pos + 1); + + if (extension == "c") + return SourceFileType::Cpp; + else if (extension == "s") + return SourceFileType::Asm; + else if (extension == "h") + return SourceFileType::Header; + else if (extension == "inc") + return SourceFileType::Inc; + else + FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str()); + + // Unreachable + return SourceFileType::Cpp; +} + +std::string GetDir(std::string& path) +{ + std::size_t slash = path.rfind('/'); + + if (slash != std::string::npos) + return path.substr(0, slash + 1); + else + return std::string(""); +} + +SourceFile::SourceFile(std::string path) +{ + m_file_type = GetFileType(path); + + m_src_dir = GetDir(path); + + if (m_file_type == SourceFileType::Cpp + || m_file_type == SourceFileType::Header) + { + new (&m_source_file.c_file) CFile(path); + m_source_file.c_file.FindIncbins(); + } + else + { + AsmFile file(path); + std::set incbins; + std::set includes; + + IncDirectiveType incDirectiveType; + std::string outputPath; + + while ((incDirectiveType = file.ReadUntilIncDirective(outputPath)) != IncDirectiveType::None) + { + if (incDirectiveType == IncDirectiveType::Include) + includes.insert(outputPath); + else + incbins.insert(outputPath); + } + + new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes}; + } +} + +SourceFile::~SourceFile() +{ + if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header) + { + m_source_file.c_file.~CFile(); + } + else + { + m_source_file.asm_wrapper.asm_incbins.~set(); + m_source_file.asm_wrapper.asm_includes.~set(); + } +} + +const std::set& SourceFile::GetIncbins() +{ + if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header) + return m_source_file.c_file.GetIncbins(); + else + return m_source_file.asm_wrapper.asm_incbins; +} + +const std::set& SourceFile::GetIncludes() +{ + if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header) + return m_source_file.c_file.GetIncludes(); + else + return m_source_file.asm_wrapper.asm_includes; +} + +std::string& SourceFile::GetSrcDir() +{ + return m_src_dir; +} + diff --git a/tools/scaninc/source_file.h b/tools/scaninc/source_file.h new file mode 100644 index 000000000..f7b6412bd --- /dev/null +++ b/tools/scaninc/source_file.h @@ -0,0 +1,71 @@ +// Copyright(c) 2019 Phlosioneer +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef SOURCE_FILE_H +#define SOURCE_FILE_H + +#include +#include "scaninc.h" +#include "asm_file.h" +#include "c_file.h" + +enum class SourceFileType +{ + Cpp, + Header, + Asm, + Inc +}; + +SourceFileType GetFileType(std::string& path); + +class SourceFile +{ +public: + + SourceFile(std::string path); + ~SourceFile(); + SourceFile(SourceFile const&) = delete; + SourceFile(SourceFile&&) = delete; + SourceFile& operator =(SourceFile const&) = delete; + SourceFile& operator =(SourceFile&&) = delete; + bool HasIncbins(); + const std::set& GetIncbins(); + const std::set& GetIncludes(); + std::string& GetSrcDir(); + +private: + union InnerUnion { + CFile c_file; + struct AsmWrapper { + std::set asm_incbins; + std::set asm_includes; + } asm_wrapper; + + // Construction and destruction handled by SourceFile. + InnerUnion() {}; + ~InnerUnion() {}; + } m_source_file; + SourceFileType m_file_type; + std::string m_src_dir; +}; + +#endif // SOURCE_FILE_H + From d54a9b56da080285db359610fb76aa402e1de249 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 9 Apr 2019 11:23:33 -0400 Subject: [PATCH 048/318] through sub_812EB2C --- asm/oak_speech.s | 283 ------------------- asm/wild_encounter.s | 8 +- data/data_845FD54.s | 3 - include/constants/species.h | 3 + include/wild_encounter.h | 1 + ld_script.txt | 2 + src/oak_speech.c | 533 ++++++++++++++++++++++++++++++++++++ 7 files changed, 543 insertions(+), 290 deletions(-) create mode 100644 src/oak_speech.c diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 5f2326487..a29079410 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,289 +5,6 @@ .text - thumb_func_start sub_812E944 -sub_812E944: @ 812E944 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - adds r0, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r1, [sp, 0x20] - mov r8, r1 - ldr r1, [sp, 0x24] - mov r2, r10 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _0812E9DC @ =sub_812E9F8 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0812E9E0 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - mov r1, r10 - lsls r0, r1, 8 - strh r0, [r4, 0x8] - lsls r2, r7, 8 - mov r9, r2 - strh r2, [r4, 0xA] - strh r5, [r4, 0xC] - strh r6, [r4, 0xE] - subs r5, r1 - lsls r5, 8 - adds r0, r5, 0 - mov r1, r8 - bl __divsi3 - strh r0, [r4, 0x10] - subs r6, r7 - lsls r6, 8 - adds r0, r6, 0 - mov r1, r8 - bl __divsi3 - strh r0, [r4, 0x12] - mov r0, r8 - strh r0, [r4, 0x18] - mov r1, r9 - mov r2, r10 - orrs r1, r2 - mov r9, r1 - movs r0, 0x52 - bl SetGpuReg - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812E9DC: .4byte sub_812E9F8 -_0812E9E0: .4byte gTasks - thumb_func_end sub_812E944 - - thumb_func_start sub_812E9E4 -sub_812E9E4: @ 812E9E4 - push {lr} - ldr r0, _0812E9F4 @ =sub_812E9F8 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0812E9F4: .4byte sub_812E9F8 - thumb_func_end sub_812E9E4 - - thumb_func_start sub_812E9F8 -sub_812E9F8: @ 812E9F8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0812EA28 @ =gTasks+0x8 - adds r4, r0, r1 - ldrh r1, [r4, 0x10] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0812EA6E - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0812EA2C - ldrh r0, [r4, 0x8] - ldrh r1, [r4] - adds r0, r1 - strh r0, [r4] - movs r0, 0x1 - b _0812EA4C - .align 2, 0 -_0812EA28: .4byte gTasks+0x8 -_0812EA2C: - subs r0, r1, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _0812EA3E - ldrh r0, [r4, 0xA] - ldrh r2, [r4, 0x2] - adds r0, r2 - b _0812EA48 -_0812EA3E: - ldrh r0, [r4, 0x4] - lsls r0, 8 - strh r0, [r4] - ldrh r0, [r4, 0x6] - lsls r0, 8 -_0812EA48: - strh r0, [r4, 0x2] - movs r0, 0 -_0812EA4C: - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x2] - ldr r1, _0812EA74 @ =0xffffff00 - ands r1, r0 - ldrh r0, [r4] - lsrs r0, 8 - orrs r1, r0 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812EA6E - adds r0, r5, 0 - bl DestroyTask -_0812EA6E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812EA74: .4byte 0xffffff00 - thumb_func_end sub_812E9F8 - - thumb_func_start sub_812EA78 -sub_812EA78: @ 812EA78 - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r2, 24 - lsrs r5, r2, 24 - cmp r4, 0xC9 - bne _0812EAB8 - adds r0, r1, 0 - bl sub_8082AB8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1A - beq _0812EAA4 - cmp r0, 0x1A - bgt _0812EA9E - cmp r0, 0 - beq _0812EAB8 - b _0812EAB4 -_0812EA9E: - cmp r0, 0x1B - beq _0812EAAA - b _0812EAB4 -_0812EAA4: - movs r4, 0xCE - lsls r4, 1 - b _0812EABC -_0812EAAA: - ldr r4, _0812EAB0 @ =0x0000019d - b _0812EABC - .align 2, 0 -_0812EAB0: .4byte 0x0000019d -_0812EAB4: - adds r4, r0, 0 - adds r4, 0xFB -_0812EAB8: - cmp r4, 0 - beq _0812EAD6 -_0812EABC: - cmp r5, 0x4 - bhi _0812EAD6 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r1, _0812EAE0 @ =gUnknown_845FD54 - lsls r0, r4, 2 - adds r0, r4 - adds r0, r5, r0 - adds r2, r0, r1 - ldrb r0, [r2] - cmp r0, 0xFF - bne _0812EAD8 -_0812EAD6: - movs r0, 0x20 -_0812EAD8: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0812EAE0: .4byte gUnknown_845FD54 - thumb_func_end sub_812EA78 - - thumb_func_start sub_812EAE4 -sub_812EAE4: @ 812EAE4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r2, 24 - lsrs r2, 24 - bl sub_812EA78 - subs r0, 0x20 - lsls r0, 24 - asrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_812EAE4 - - thumb_func_start sub_812EAFC -sub_812EAFC: @ 812EAFC - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_812EAFC - - thumb_func_start sub_812EB10 -sub_812EB10: @ 812EB10 - push {lr} - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_812EB10 - - thumb_func_start sub_812EB2C -sub_812EB2C: @ 812EB2C - push {lr} - ldr r0, _0812EB48 @ =gPlttBufferUnfaded - movs r1, 0 - strh r1, [r0] - ldr r0, _0812EB4C @ =gPlttBufferFaded - strh r1, [r0] - ldr r0, _0812EB50 @ =sub_812EB58 - bl CreateTask - ldr r0, _0812EB54 @ =sub_812EB10 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0812EB48: .4byte gPlttBufferUnfaded -_0812EB4C: .4byte gPlttBufferFaded -_0812EB50: .4byte sub_812EB58 -_0812EB54: .4byte sub_812EB10 - thumb_func_end sub_812EB2C - thumb_func_start sub_812EB58 sub_812EB58: @ 812EB58 push {r4-r6,lr} diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index 67c159abc..21b97c942 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -482,7 +482,7 @@ _08082A8E: lsrs r0, 16 orrs r4, r0 adds r0, r4, 0 - bl sub_8082AB8 + bl GetUnownLetterByPersonality lsls r0, 24 lsrs r0, 24 cmp r0, r5 @@ -493,8 +493,8 @@ _08082A8E: bx r1 thumb_func_end sub_8082A88 - thumb_func_start sub_8082AB8 -sub_8082AB8: @ 8082AB8 + thumb_func_start GetUnownLetterByPersonality +GetUnownLetterByPersonality: @ 8082AB8 push {lr} adds r2, r0, 0 movs r0, 0xC0 @@ -520,7 +520,7 @@ sub_8082AB8: @ 8082AB8 lsrs r0, 24 pop {r1} bx r1 - thumb_func_end sub_8082AB8 + thumb_func_end GetUnownLetterByPersonality thumb_func_start sub_8082AEC sub_8082AEC: @ 8082AEC diff --git a/data/data_845FD54.s b/data/data_845FD54.s index d05e14570..4fee0ac5b 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -2,9 +2,6 @@ .align 2 // oak_speech -gUnknown_845FD54:: @ 845FD54 - .incbin "baserom.gba", 0x45FD54, 0x814 - gUnknown_8460568:: @ 8460568 .incbin "baserom.gba", 0x460568, 0x80 diff --git a/include/constants/species.h b/include/constants/species.h index f698ada14..9cb239799 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -445,6 +445,9 @@ #define SPECIES_UNOWN_EMARK 438 #define SPECIES_UNOWN_QMARK 439 +#define SPECIES_OLD_UNOWN_EMARK 412 +#define SPECIES_OLD_UNOWN_QMARK 413 + #define NUM_SPECIES SPECIES_EGG #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 2186e0b4f..b4c42116a 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -43,5 +43,6 @@ u16 GetLocalWildMon(bool8 *isWaterMon); u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); void sub_8082740(u8); +u8 GetUnownLetterByPersonality(u32 personality); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index b342f0b8a..73fa6312d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -228,6 +228,7 @@ SECTIONS { src/quest_log_battle.o(.text); src/fame_checker.o(.text); asm/menu2.o(.text); + src/oak_speech.o(.text); asm/oak_speech.o(.text); asm/tm_case.o(.text); asm/menu_indicators.o(.text); @@ -382,6 +383,7 @@ SECTIONS { src/quest_log.o(.rodata); data/data_83FECCC.o(.rodata.8456C74); src/fame_checker.o(.rodata); + src/oak_speech.o(.rodata); data/data_845FD54.o(.rodata); src/mevent.o(.rodata); src/mevent_server_helpers.o(.rodata); diff --git a/src/oak_speech.c b/src/oak_speech.c new file mode 100644 index 000000000..bad71f671 --- /dev/null +++ b/src/oak_speech.c @@ -0,0 +1,533 @@ +#include "global.h" +#include "main.h" +#include "task.h" +#include "gpu_regs.h" +#include "wild_encounter.h" +#include "palette.h" +#include "text.h" +#include "constants/species.h" + +void sub_812E9F8(u8 taskId); +void sub_812EB58(u8 taskId); + +const u8 gUnknown_845FD54[][5] = { + [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, + [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, + [SPECIES_VENUSAUR - 1] = {0x1b, 0x20, 0x20, 0x1b, 0x33}, + [SPECIES_CHARMANDER - 1] = {0x14, 0x0f, 0x38, 0x13, 0x1e}, + [SPECIES_CHARMELEON - 1] = {0x0d, 0x11, 0x30, 0x0f, 0x22}, + [SPECIES_CHARIZARD - 1] = {0x1b, 0x07, 0x28, 0x1a, 0x19}, + [SPECIES_SQUIRTLE - 1] = {0x19, 0x13, 0x30, 0x1a, 0x22}, + [SPECIES_WARTORTLE - 1] = {0x16, 0x13, 0x30, 0x17, 0x21}, + [SPECIES_BLASTOISE - 1] = {0x12, 0x08, 0x28, 0x15, 0x19}, + [SPECIES_CATERPIE - 1] = {0x15, 0x14, 0x30, 0x13, 0x24}, + [SPECIES_METAPOD - 1] = {0x13, 0x1d, 0x30, 0x18, 0x2a}, + [SPECIES_BUTTERFREE - 1] = {0x12, 0x1b, 0x08, 0x12, 0x2a}, + [SPECIES_WEEDLE - 1] = {0x16, 0x1c, 0x30, 0x15, 0x2b}, + [SPECIES_KAKUNA - 1] = {0x19, 0x13, 0x30, 0x1a, 0x24}, + [SPECIES_BEEDRILL - 1] = {0x19, 0x16, 0x08, 0x19, 0x25}, + [SPECIES_PIDGEY - 1] = {0x15, 0x12, 0x30, 0x12, 0x1e}, + [SPECIES_PIDGEOTTO - 1] = {0x24, 0x0e, 0x30, 0x1f, 0x1e}, + [SPECIES_PIDGEOT - 1] = {0x0c, 0x13, 0x08, 0x0a, 0x23}, + [SPECIES_RATTATA - 1] = {0x17, 0x1e, 0x30, 0x18, 0x2d}, + [SPECIES_RATICATE - 1] = {0x12, 0x14, 0x30, 0x10, 0x26}, + [SPECIES_SPEAROW - 1] = {0x15, 0x14, 0x30, 0x15, 0x1f}, + [SPECIES_FEAROW - 1] = {0x0c, 0x27, 0x00, 0x0b, 0x3f}, + [SPECIES_EKANS - 1] = {0x11, 0x0f, 0x30, 0x14, 0x1d}, + [SPECIES_ARBOK - 1] = {0x1b, 0x01, 0x28, 0x1d, 0x10}, + [SPECIES_PIKACHU - 1] = {0x19, 0x13, 0x30, 0x1a, 0x1f}, + [SPECIES_RAICHU - 1] = {0x19, 0x14, 0x28, 0x1c, 0x22}, + [SPECIES_SANDSHREW - 1] = {0x17, 0x16, 0x30, 0x18, 0x25}, + [SPECIES_SANDSLASH - 1] = {0x11, 0x13, 0x28, 0x13, 0x22}, + [SPECIES_NIDORAN_F - 1] = {0x16, 0x15, 0x30, 0x18, 0x21}, + [SPECIES_NIDORINA - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x28}, + [SPECIES_NIDOQUEEN - 1] = {0x10, 0x0b, 0x28, 0x13, 0x1c}, + [SPECIES_NIDORAN_M - 1] = {0x15, 0x22, 0x28, 0x15, 0x31}, + [SPECIES_NIDORINO - 1] = {0x13, 0x1e, 0x28, 0x1b, 0x2d}, + [SPECIES_NIDOKING - 1] = {0x12, 0x15, 0x28, 0x13, 0x27}, + [SPECIES_CLEFAIRY - 1] = {0x19, 0x14, 0x30, 0x1b, 0x24}, + [SPECIES_CLEFABLE - 1] = {0x1c, 0x12, 0x30, 0x1d, 0x21}, + [SPECIES_VULPIX - 1] = {0x10, 0x16, 0x30, 0x0e, 0x25}, + [SPECIES_NINETALES - 1] = {0x28, 0x10, 0x28, 0x27, 0x1e}, + [SPECIES_JIGGLYPUFF - 1] = {0x1d, 0x15, 0x30, 0x1e, 0x25}, + [SPECIES_WIGGLYTUFF - 1] = {0x1a, 0x12, 0x30, 0x1c, 0x22}, + [SPECIES_ZUBAT - 1] = {0x14, 0x1d, 0x08, 0x14, 0x29}, + [SPECIES_GOLBAT - 1] = {0x23, 0x1a, 0x00, 0x21, 0x2e}, + [SPECIES_ODDISH - 1] = {0x1d, 0x20, 0x28, 0x1d, 0x2b}, + [SPECIES_GLOOM - 1] = {0x1c, 0x18, 0x28, 0x1c, 0x27}, + [SPECIES_VILEPLUME - 1] = {0x1c, 0x1e, 0x28, 0x1d, 0x2a}, + [SPECIES_PARAS - 1] = {0x1d, 0x1a, 0x30, 0x1c, 0x27}, + [SPECIES_PARASECT - 1] = {0x1e, 0x1c, 0x28, 0x20, 0x2e}, + [SPECIES_VENONAT - 1] = {0x1b, 0x16, 0x10, 0x1a, 0x29}, + [SPECIES_VENOMOTH - 1] = {0x12, 0x19, 0x08, 0x16, 0x27}, + [SPECIES_DIGLETT - 1] = {0x1e, 0x16, 0x30, 0x1c, 0x23}, + [SPECIES_DUGTRIO - 1] = {0x1a, 0x11, 0x30, 0x1a, 0x1f}, + [SPECIES_MEOWTH - 1] = {0x1c, 0x16, 0x30, 0x1c, 0x23}, + [SPECIES_PERSIAN - 1] = {0x13, 0x13, 0x30, 0x13, 0x21}, + [SPECIES_PSYDUCK - 1] = {0x1c, 0x13, 0x30, 0x17, 0x29}, + [SPECIES_GOLDUCK - 1] = {0x17, 0x12, 0x28, 0x17, 0x22}, + [SPECIES_MANKEY - 1] = {0x1c, 0x15, 0x30, 0x1b, 0x23}, + [SPECIES_PRIMEAPE - 1] = {0x1e, 0x16, 0x30, 0x1a, 0x27}, + [SPECIES_GROWLITHE - 1] = {0x14, 0x17, 0x30, 0x14, 0x24}, + [SPECIES_ARCANINE - 1] = {0x0f, 0x09, 0x28, 0x0c, 0x19}, + [SPECIES_POLIWAG - 1] = {0x15, 0x14, 0x30, 0x13, 0x1f}, + [SPECIES_POLIWHIRL - 1] = {0x1f, 0x10, 0x30, 0x1e, 0x17}, + [SPECIES_POLIWRATH - 1] = {0x22, 0x0c, 0x30, 0x21, 0x18}, + [SPECIES_ABRA - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x21}, + [SPECIES_KADABRA - 1] = {0x1b, 0x12, 0x30, 0x1c, 0x25}, + [SPECIES_ALAKAZAM - 1] = {0x1c, 0x11, 0x28, 0x1d, 0x26}, + [SPECIES_MACHOP - 1] = {0x1b, 0x11, 0x30, 0x1b, 0x1e}, + [SPECIES_MACHOKE - 1] = {0x1d, 0x11, 0x30, 0x1d, 0x1f}, + [SPECIES_MACHAMP - 1] = {0x1a, 0x0d, 0x28, 0x1c, 0x1b}, + [SPECIES_BELLSPROUT - 1] = {0x15, 0x0e, 0x30, 0x0e, 0x1c}, + [SPECIES_WEEPINBELL - 1] = {0x1a, 0x1c, 0x10, 0x15, 0x32}, + [SPECIES_VICTREEBEL - 1] = {0x1e, 0x0f, 0x30, 0x1c, 0x1b}, + [SPECIES_TENTACOOL - 1] = {0x1a, 0x15, 0x30, 0x1e, 0x26}, + [SPECIES_TENTACRUEL - 1] = {0x1b, 0x10, 0x28, 0x1c, 0x26}, + [SPECIES_GEODUDE - 1] = {0x1c, 0x20, 0x28, 0x1d, 0x2d}, + [SPECIES_GRAVELER - 1] = {0x1d, 0x19, 0x28, 0x1e, 0x26}, + [SPECIES_GOLEM - 1] = {0x19, 0x1b, 0x28, 0x1c, 0x27}, + [SPECIES_PONYTA - 1] = {0x0f, 0x11, 0x30, 0x0e, 0x23}, + [SPECIES_RAPIDASH - 1] = {0x2f, 0x0f, 0x28, 0x2b, 0x1e}, + [SPECIES_SLOWPOKE - 1] = {0x14, 0x1f, 0x28, 0x15, 0x2f}, + [SPECIES_SLOWBRO - 1] = {0x0e, 0x0d, 0x28, 0x0c, 0x1f}, + [SPECIES_MAGNEMITE - 1] = {0x20, 0x1b, 0x10, 0x1f, 0x29}, + [SPECIES_MAGNETON - 1] = {0x1f, 0x14, 0x08, 0x1f, 0x22}, + [SPECIES_FARFETCHD - 1] = {0x16, 0x14, 0x30, 0x16, 0x29}, + [SPECIES_DODUO - 1] = {0x11, 0x16, 0x30, 0x0d, 0x2c}, + [SPECIES_DODRIO - 1] = {0x1d, 0x04, 0x28, 0x0e, 0x07}, + [SPECIES_SEEL - 1] = {0x1b, 0x24, 0x20, 0x17, 0x35}, + [SPECIES_DEWGONG - 1] = {0x12, 0x0a, 0x30, 0x0e, 0x1a}, + [SPECIES_GRIMER - 1] = {0x1f, 0x10, 0x30, 0x1d, 0x25}, + [SPECIES_MUK - 1] = {0x17, 0x0f, 0x30, 0x19, 0x22}, + [SPECIES_SHELLDER - 1] = {0x1a, 0x18, 0x30, 0x17, 0x29}, + [SPECIES_CLOYSTER - 1] = {0x19, 0x1e, 0x28, 0x1d, 0x2c}, + [SPECIES_GASTLY - 1] = {0x1a, 0x1f, 0x08, 0x19, 0x30}, + [SPECIES_HAUNTER - 1] = {0x20, 0x14, 0x08, 0x1d, 0x26}, + [SPECIES_GENGAR - 1] = {0x1a, 0x16, 0x30, 0x19, 0x28}, + [SPECIES_ONIX - 1] = {0x1f, 0x24, 0x20, 0x28, 0x36}, + [SPECIES_DROWZEE - 1] = {0x1a, 0x0e, 0x30, 0x1a, 0x1e}, + [SPECIES_HYPNO - 1] = {0x1c, 0x12, 0x30, 0x19, 0x24}, + [SPECIES_KRABBY - 1] = {0x1d, 0x1d, 0x30, 0x1a, 0x2b}, + [SPECIES_KINGLER - 1] = {0x1e, 0x1f, 0x28, 0x1c, 0x30}, + [SPECIES_VOLTORB - 1] = {0x1c, 0x1b, 0x30, 0x1b, 0x2b}, + [SPECIES_ELECTRODE - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x2e}, + [SPECIES_EXEGGCUTE - 1] = {0x21, 0x17, 0x30, 0x20, 0x24}, + [SPECIES_EXEGGUTOR - 1] = {0x1c, 0x17, 0x28, 0x1b, 0x25}, + [SPECIES_CUBONE - 1] = {0x1b, 0x12, 0x30, 0x1b, 0x22}, + [SPECIES_MAROWAK - 1] = {0x14, 0x0f, 0x30, 0x11, 0x23}, + [SPECIES_HITMONLEE - 1] = {0x2e, 0x11, 0x30, 0x28, 0x22}, + [SPECIES_HITMONCHAN - 1] = {0x22, 0x0e, 0x30, 0x1e, 0x1d}, + [SPECIES_LICKITUNG - 1] = {0x14, 0x11, 0x30, 0x14, 0x24}, + [SPECIES_KOFFING - 1] = {0x1e, 0x14, 0x10, 0x1d, 0x20}, + [SPECIES_WEEZING - 1] = {0x11, 0x0d, 0x10, 0x0f, 0x1c}, + [SPECIES_RHYHORN - 1] = {0x0e, 0x23, 0x20, 0x14, 0x33}, + [SPECIES_RHYDON - 1] = {0x0d, 0x12, 0x28, 0x17, 0x22}, + [SPECIES_CHANSEY - 1] = {0x1a, 0x0d, 0x30, 0x1a, 0x1a}, + [SPECIES_TANGELA - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x29}, + [SPECIES_KANGASKHAN - 1] = {0x1b, 0x06, 0x28, 0x1c, 0x14}, + [SPECIES_HORSEA - 1] = {0x1c, 0x14, 0x30, 0x16, 0x23}, + [SPECIES_SEADRA - 1] = {0x10, 0x17, 0x30, 0x09, 0x2a}, + [SPECIES_GOLDEEN - 1] = {0x16, 0x23, 0x20, 0x15, 0x34}, + [SPECIES_SEAKING - 1] = {0x16, 0x0f, 0x30, 0x10, 0x18}, + [SPECIES_STARYU - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x26}, + [SPECIES_STARMIE - 1] = {0x1d, 0x13, 0x30, 0x1b, 0x20}, + [SPECIES_MR_MIME - 1] = {0x24, 0x11, 0x30, 0x25, 0x1e}, + [SPECIES_SCYTHER - 1] = {0x10, 0x19, 0x28, 0x12, 0x27}, + [SPECIES_JYNX - 1] = {0x1b, 0x0f, 0x30, 0x19, 0x1c}, + [SPECIES_ELECTABUZZ - 1] = {0x14, 0x11, 0x30, 0x17, 0x20}, + [SPECIES_MAGMAR - 1] = {0x10, 0x0e, 0x30, 0x0b, 0x19}, + [SPECIES_PINSIR - 1] = {0x1d, 0x1c, 0x28, 0x20, 0x2b}, + [SPECIES_TAUROS - 1] = {0x11, 0x1d, 0x28, 0x13, 0x2e}, + [SPECIES_MAGIKARP - 1] = {0x16, 0x15, 0x30, 0x13, 0x23}, + [SPECIES_GYARADOS - 1] = {0x0b, 0x18, 0x28, 0x16, 0x29}, + [SPECIES_LAPRAS - 1] = {0x16, 0x08, 0x28, 0x15, 0x16}, + [SPECIES_DITTO - 1] = {0x24, 0x12, 0x30, 0x1f, 0x20}, + [SPECIES_EEVEE - 1] = {0x16, 0x16, 0x30, 0x16, 0x23}, + [SPECIES_VAPOREON - 1] = {0x18, 0x23, 0x28, 0x18, 0x30}, + [SPECIES_JOLTEON - 1] = {0x14, 0x1b, 0x30, 0x16, 0x28}, + [SPECIES_FLAREON - 1] = {0x16, 0x17, 0x30, 0x14, 0x25}, + [SPECIES_PORYGON - 1] = {0x18, 0x12, 0x30, 0x10, 0x23}, + [SPECIES_OMANYTE - 1] = {0x1d, 0x1d, 0x30, 0x1c, 0x2b}, + [SPECIES_OMASTAR - 1] = {0x16, 0x1a, 0x30, 0x19, 0x2d}, + [SPECIES_KABUTO - 1] = {0x1b, 0x16, 0x30, 0x1a, 0x27}, + [SPECIES_KABUTOPS - 1] = {0x15, 0x11, 0x30, 0x15, 0x1f}, + [SPECIES_AERODACTYL - 1] = {0x13, 0x1d, 0x00, 0x14, 0x30}, + [SPECIES_SNORLAX - 1] = {0x35, 0x09, 0x30, 0x2e, 0x14}, + [SPECIES_ARTICUNO - 1] = {0x18, 0x0b, 0x18, 0x17, 0x17}, + [SPECIES_ZAPDOS - 1] = {0x0e, 0x0e, 0x10, 0x04, 0x28}, + [SPECIES_MOLTRES - 1] = {0x0b, 0x2a, 0x08, 0x0b, 0x38}, + [SPECIES_DRATINI - 1] = {0x0d, 0x12, 0x30, 0x0b, 0x21}, + [SPECIES_DRAGONAIR - 1] = {0x18, 0x0e, 0x30, 0x13, 0x1c}, + [SPECIES_DRAGONITE - 1] = {0x1b, 0x07, 0x18, 0x19, 0x17}, + [SPECIES_MEWTWO - 1] = {0x2b, 0x09, 0x28, 0x2c, 0x18}, + [SPECIES_MEW - 1] = {0x19, 0x14, 0x10, 0x1f, 0x21}, + [SPECIES_CHIKORITA - 1] = {0x1b, 0x17, 0x30, 0x1b, 0x24}, + [SPECIES_BAYLEEF - 1] = {0x1d, 0x10, 0x30, 0x20, 0x1d}, + [SPECIES_MEGANIUM - 1] = {0x05, 0x0d, 0x28, 0x0d, 0x1b}, + [SPECIES_CYNDAQUIL - 1] = {0x11, 0x1b, 0x30, 0x14, 0x27}, + [SPECIES_QUILAVA - 1] = {0x25, 0x18, 0x30, 0x27, 0x26}, + [SPECIES_TYPHLOSION - 1] = {0x09, 0x10, 0x28, 0x10, 0x1c}, + [SPECIES_TOTODILE - 1] = {0x16, 0x10, 0x30, 0x19, 0x20}, + [SPECIES_CROCONAW - 1] = {0x16, 0x10, 0x30, 0x18, 0x21}, + [SPECIES_FERALIGATR - 1] = {0x0e, 0x0a, 0x28, 0x08, 0x1a}, + [SPECIES_SENTRET - 1] = {0x1e, 0x0a, 0x30, 0x1d, 0x15}, + [SPECIES_FURRET - 1] = {0x21, 0x0e, 0x30, 0x21, 0x19}, + [SPECIES_HOOTHOOT - 1] = {0x1d, 0x15, 0x30, 0x1c, 0x24}, + [SPECIES_NOCTOWL - 1] = {0x19, 0x0e, 0x30, 0x18, 0x1c}, + [SPECIES_LEDYBA - 1] = {0x1b, 0x15, 0x30, 0x1c, 0x24}, + [SPECIES_LEDIAN - 1] = {0x18, 0x12, 0x10, 0x1c, 0x21}, + [SPECIES_SPINARAK - 1] = {0x20, 0x20, 0x28, 0x20, 0x2d}, + [SPECIES_ARIADOS - 1] = {0x17, 0x23, 0x28, 0x15, 0x30}, + [SPECIES_CROBAT - 1] = {0x22, 0x1e, 0x08, 0x23, 0x2b}, + [SPECIES_CHINCHOU - 1] = {0x1f, 0x1d, 0x30, 0x1f, 0x29}, + [SPECIES_LANTURN - 1] = {0x10, 0x23, 0x28, 0x19, 0x33}, + [SPECIES_PICHU - 1] = {0x1e, 0x17, 0x30, 0x1e, 0x24}, + [SPECIES_CLEFFA - 1] = {0x1c, 0x18, 0x30, 0x1e, 0x26}, + [SPECIES_IGGLYBUFF - 1] = {0x1f, 0x19, 0x30, 0x1f, 0x24}, + [SPECIES_TOGEPI - 1] = {0x21, 0x15, 0x30, 0x1f, 0x20}, + [SPECIES_TOGETIC - 1] = {0x1b, 0x10, 0x30, 0x1c, 0x1c}, + [SPECIES_NATU - 1] = {0x1c, 0x17, 0x30, 0x15, 0x21}, + [SPECIES_XATU - 1] = {0x1b, 0x08, 0x30, 0x19, 0x14}, + [SPECIES_MAREEP - 1] = {0x16, 0x15, 0x30, 0x15, 0x24}, + [SPECIES_FLAAFFY - 1] = {0x19, 0x12, 0x30, 0x18, 0x21}, + [SPECIES_AMPHAROS - 1] = {0x0f, 0x0a, 0x30, 0x10, 0x1b}, + [SPECIES_BELLOSSOM - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x20}, + [SPECIES_MARILL - 1] = {0x1d, 0x15, 0x30, 0x1d, 0x22}, + [SPECIES_AZUMARILL - 1] = {0x1a, 0x12, 0x30, 0x17, 0x1f}, + [SPECIES_SUDOWOODO - 1] = {0x20, 0x10, 0x30, 0x20, 0x1f}, + [SPECIES_POLITOED - 1] = {0x1d, 0x0f, 0x30, 0x1e, 0x20}, + [SPECIES_HOPPIP - 1] = {0x23, 0x25, 0x08, 0x25, 0x33}, + [SPECIES_SKIPLOOM - 1] = {0x1e, 0x18, 0x08, 0x1c, 0x27}, + [SPECIES_JUMPLUFF - 1] = {0x1d, 0x21, 0x08, 0x20, 0x2f}, + [SPECIES_AIPOM - 1] = {0x1e, 0x29, 0x18, 0x1e, 0x35}, + [SPECIES_SUNKERN - 1] = {0x1f, 0x20, 0x08, 0x24, 0x2e}, + [SPECIES_SUNFLORA - 1] = {0x1c, 0x0c, 0x30, 0x1b, 0x19}, + [SPECIES_YANMA - 1] = {0x1b, 0x28, 0x08, 0x16, 0x35}, + [SPECIES_WOOPER - 1] = {0x1d, 0x13, 0x30, 0x1f, 0x21}, + [SPECIES_QUAGSIRE - 1] = {0x15, 0x09, 0x30, 0x12, 0x18}, + [SPECIES_ESPEON - 1] = {0x11, 0x1b, 0x30, 0x11, 0x29}, + [SPECIES_UMBREON - 1] = {0x23, 0x15, 0x30, 0x23, 0x22}, + [SPECIES_MURKROW - 1] = {0x24, 0x13, 0x30, 0x20, 0x22}, + [SPECIES_SLOWKING - 1] = {0x1e, 0x13, 0x28, 0x1d, 0x25}, + [SPECIES_MISDREAVUS - 1] = {0x28, 0x21, 0x08, 0x26, 0x2e}, + [SPECIES_UNOWN - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_WOBBUFFET - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x1a}, + [SPECIES_GIRAFARIG - 1] = {0x0b, 0x0d, 0x28, 0x11, 0x1d}, + [SPECIES_PINECO - 1] = {0x1d, 0x12, 0x10, 0x19, 0x25}, + [SPECIES_FORRETRESS - 1] = {0x19, 0x17, 0x08, 0x1e, 0x26}, + [SPECIES_DUNSPARCE - 1] = {0x10, 0x1b, 0x30, 0x0c, 0x2d}, + [SPECIES_GLIGAR - 1] = {0x1e, 0x13, 0x08, 0x1d, 0x23}, + [SPECIES_STEELIX - 1] = {0x0c, 0x0d, 0x28, 0x0d, 0x1c}, + [SPECIES_SNUBBULL - 1] = {0x1b, 0x15, 0x30, 0x1a, 0x23}, + [SPECIES_GRANBULL - 1] = {0x1c, 0x09, 0x30, 0x19, 0x18}, + [SPECIES_QWILFISH - 1] = {0x1f, 0x26, 0x20, 0x1d, 0x33}, + [SPECIES_SCIZOR - 1] = {0x15, 0x0f, 0x10, 0x1a, 0x1a}, + [SPECIES_SHUCKLE - 1] = {0x25, 0x0a, 0x30, 0x24, 0x18}, + [SPECIES_HERACROSS - 1] = {0x18, 0x19, 0x28, 0x1a, 0x26}, + [SPECIES_SNEASEL - 1] = {0x1c, 0x13, 0x30, 0x1d, 0x24}, + [SPECIES_TEDDIURSA - 1] = {0x1e, 0x12, 0x30, 0x1b, 0x23}, + [SPECIES_URSARING - 1] = {0x1e, 0x04, 0x28, 0x1d, 0x14}, + [SPECIES_SLUGMA - 1] = {0x20, 0x18, 0x30, 0x20, 0x28}, + [SPECIES_MAGCARGO - 1] = {0x16, 0x11, 0x30, 0x17, 0x23}, + [SPECIES_SWINUB - 1] = {0x1c, 0x18, 0x30, 0x1b, 0x25}, + [SPECIES_PILOSWINE - 1] = {0x18, 0x23, 0x20, 0x18, 0x36}, + [SPECIES_CORSOLA - 1] = {0x19, 0x1d, 0x28, 0x19, 0x2b}, + [SPECIES_REMORAID - 1] = {0x15, 0x1f, 0x28, 0x13, 0x2b}, + [SPECIES_OCTILLERY - 1] = {0x1c, 0x11, 0x30, 0x1a, 0x20}, + [SPECIES_DELIBIRD - 1] = {0x1d, 0x11, 0x30, 0x1b, 0x1f}, + [SPECIES_MANTINE - 1] = {0x16, 0x1e, 0x28, 0x1f, 0x27}, + [SPECIES_SKARMORY - 1] = {0x1e, 0x00, 0x28, 0x13, 0x07}, + [SPECIES_HOUNDOUR - 1] = {0x25, 0x11, 0x30, 0x25, 0x1f}, + [SPECIES_HOUNDOOM - 1] = {0x0d, 0x13, 0x30, 0x0d, 0x24}, + [SPECIES_KINGDRA - 1] = {0x0e, 0x13, 0x28, 0x0a, 0x2c}, + [SPECIES_PHANPY - 1] = {0x1b, 0x11, 0x30, 0x19, 0x24}, + [SPECIES_DONPHAN - 1] = {0x11, 0x15, 0x30, 0x19, 0x2c}, + [SPECIES_PORYGON2 - 1] = {0x18, 0x11, 0x30, 0x11, 0x20}, + [SPECIES_STANTLER - 1] = {0x15, 0x15, 0x28, 0x17, 0x28}, + [SPECIES_SMEARGLE - 1] = {0x18, 0x10, 0x30, 0x1b, 0x25}, + [SPECIES_TYROGUE - 1] = {0x1e, 0x12, 0x30, 0x1f, 0x1f}, + [SPECIES_HITMONTOP - 1] = {0x1a, 0x39, 0x10, 0x1a, 0x2b}, + [SPECIES_SMOOCHUM - 1] = {0x20, 0x18, 0x30, 0x21, 0x26}, + [SPECIES_ELEKID - 1] = {0x1d, 0x14, 0x30, 0x1d, 0x23}, + [SPECIES_MAGBY - 1] = {0x1c, 0x15, 0x30, 0x1a, 0x24}, + [SPECIES_MILTANK - 1] = {0x18, 0x0e, 0x30, 0x18, 0x1e}, + [SPECIES_BLISSEY - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x19}, + [SPECIES_RAIKOU - 1] = {0x29, 0x0c, 0x28, 0x27, 0x1e}, + [SPECIES_ENTEI - 1] = {0x08, 0x09, 0x28, 0x0b, 0x18}, + [SPECIES_SUICUNE - 1] = {0x23, 0x1d, 0x28, 0x26, 0x2c}, + [SPECIES_LARVITAR - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x24}, + [SPECIES_PUPITAR - 1] = {0x1b, 0x19, 0x30, 0x1b, 0x28}, + [SPECIES_TYRANITAR - 1] = {0x06, 0x0b, 0x28, 0x0d, 0x19}, + [SPECIES_LUGIA - 1] = {0x08, 0x2a, 0x08, 0x14, 0x34}, + [SPECIES_HO_OH - 1] = {0x0d, 0x25, 0x08, 0x0e, 0x34}, + [SPECIES_CELEBI - 1] = {0x15, 0x21, 0x08, 0x1a, 0x2b}, + [SPECIES_OLD_UNOWN_B - 1] = {0x1f, 0x12, 0x08, 0x1e, 0x1c}, + [SPECIES_OLD_UNOWN_C - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_D - 1] = {0x1c, 0x19, 0x08, 0x1b, 0x23}, + [SPECIES_OLD_UNOWN_E - 1] = {0x21, 0x19, 0x08, 0x20, 0x23}, + [SPECIES_OLD_UNOWN_F - 1] = {0x1b, 0x13, 0x08, 0x1a, 0x1d}, + [SPECIES_OLD_UNOWN_G - 1] = {0x20, 0x16, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_H - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_I - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_J - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, + [SPECIES_OLD_UNOWN_K - 1] = {0x1d, 0x1a, 0x08, 0x1c, 0x24}, + [SPECIES_OLD_UNOWN_L - 1] = {0x20, 0x16, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_M - 1] = {0x20, 0x1c, 0x08, 0x1f, 0x26}, + [SPECIES_OLD_UNOWN_N - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_O - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_P - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, + [SPECIES_OLD_UNOWN_Q - 1] = {0x1d, 0x16, 0x08, 0x1c, 0x20}, + [SPECIES_OLD_UNOWN_R - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_S - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_T - 1] = {0x20, 0x1e, 0x08, 0x1f, 0x28}, + [SPECIES_OLD_UNOWN_U - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_V - 1] = {0x1e, 0x1e, 0x08, 0x1d, 0x28}, + [SPECIES_OLD_UNOWN_W - 1] = {0x20, 0x1d, 0x08, 0x1f, 0x27}, + [SPECIES_OLD_UNOWN_X - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_Y - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_Z - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_TREECKO - 1] = {0x1a, 0x0f, 0x30, 0x19, 0x20}, + [SPECIES_GROVYLE - 1] = {0x0d, 0x05, 0x10, 0x05, 0x13}, + [SPECIES_SCEPTILE - 1] = {0x10, 0x04, 0x28, 0x0c, 0x12}, + [SPECIES_TORCHIC - 1] = {0x17, 0x18, 0x30, 0x15, 0x25}, + [SPECIES_COMBUSKEN - 1] = {0x20, 0x12, 0x28, 0x1e, 0x20}, + [SPECIES_BLAZIKEN - 1] = {0x1a, 0x07, 0x28, 0x1d, 0x13}, + [SPECIES_MUDKIP - 1] = {0x1b, 0x1d, 0x28, 0x19, 0x2c}, + [SPECIES_MARSHTOMP - 1] = {0x1d, 0x11, 0x30, 0x1c, 0x20}, + [SPECIES_SWAMPERT - 1] = {0x1b, 0x11, 0x28, 0x1b, 0x23}, + [SPECIES_POOCHYENA - 1] = {0x14, 0x12, 0x30, 0x0f, 0x20}, + [SPECIES_MIGHTYENA - 1] = {0x09, 0x0d, 0x28, 0x09, 0x1c}, + [SPECIES_ZIGZAGOON - 1] = {0x0b, 0x1a, 0x30, 0x09, 0x2b}, + [SPECIES_LINOONE - 1] = {0x0d, 0x28, 0x18, 0x0b, 0x37}, + [SPECIES_WURMPLE - 1] = {0x21, 0x17, 0x30, 0x1f, 0x26}, + [SPECIES_SILCOON - 1] = {0x13, 0x1c, 0x30, 0x11, 0x2a}, + [SPECIES_BEAUTIFLY - 1] = {0x0f, 0x1b, 0x08, 0x0e, 0x28}, + [SPECIES_CASCOON - 1] = {0x14, 0x1d, 0x30, 0x11, 0x2c}, + [SPECIES_DUSTOX - 1] = {0x14, 0x19, 0x08, 0x16, 0x26}, + [SPECIES_LOTAD - 1] = {0x19, 0x25, 0x28, 0x17, 0x32}, + [SPECIES_LOMBRE - 1] = {0x22, 0x10, 0x30, 0x29, 0x1d}, + [SPECIES_LUDICOLO - 1] = {0x1c, 0x0f, 0x28, 0x1b, 0x24}, + [SPECIES_SEEDOT - 1] = {0x1b, 0x17, 0x30, 0x18, 0x28}, + [SPECIES_NUZLEAF - 1] = {0x20, 0x0d, 0x30, 0x1a, 0x1d}, + [SPECIES_SHIFTRY - 1] = {0x32, 0x11, 0x28, 0x2e, 0x23}, + [SPECIES_NINCADA - 1] = {0x18, 0x1a, 0x30, 0x17, 0x28}, + [SPECIES_NINJASK - 1] = {0x17, 0x21, 0x00, 0x17, 0x2f}, + [SPECIES_SHEDINJA - 1] = {0x16, 0x19, 0x08, 0x18, 0x2a}, + [SPECIES_TAILLOW - 1] = {0x17, 0x10, 0x30, 0x14, 0x1e}, + [SPECIES_SWELLOW - 1] = {0x0c, 0x0a, 0x28, 0x05, 0x16}, + [SPECIES_SHROOMISH - 1] = {0x1f, 0x16, 0x30, 0x1d, 0x23}, + [SPECIES_BRELOOM - 1] = {0x25, 0x0c, 0x30, 0x23, 0x19}, + [SPECIES_SPINDA - 1] = {0x21, 0x16, 0x30, 0x1f, 0x27}, + [SPECIES_WINGULL - 1] = {0x1a, 0x16, 0x10, 0x15, 0x26}, + [SPECIES_PELIPPER - 1] = {0x1d, 0x0a, 0x10, 0x09, 0x1b}, + [SPECIES_SURSKIT - 1] = {0x1d, 0x16, 0x30, 0x1c, 0x25}, + [SPECIES_MASQUERAIN - 1] = {0x1a, 0x21, 0x08, 0x14, 0x30}, + [SPECIES_WAILMER - 1] = {0x17, 0x17, 0x30, 0x16, 0x28}, + [SPECIES_WAILORD - 1] = {0x17, 0x03, 0x30, 0x09, 0x13}, + [SPECIES_SKITTY - 1] = {0x24, 0x1a, 0x30, 0x22, 0x2a}, + [SPECIES_DELCATTY - 1] = {0x1e, 0x12, 0x30, 0x1c, 0x21}, + [SPECIES_KECLEON - 1] = {0x19, 0x10, 0x30, 0x13, 0x1e}, + [SPECIES_BALTOY - 1] = {0x1d, 0x15, 0x30, 0x1b, 0x22}, + [SPECIES_CLAYDOL - 1] = {0x1e, 0x0d, 0x28, 0x1d, 0x24}, + [SPECIES_NOSEPASS - 1] = {0x1f, 0x10, 0x30, 0x15, 0x23}, + [SPECIES_TORKOAL - 1] = {0x0e, 0x19, 0x28, 0x0a, 0x27}, + [SPECIES_SABLEYE - 1] = {0x1e, 0x16, 0x30, 0x1d, 0x27}, + [SPECIES_BARBOACH - 1] = {0x17, 0x12, 0x30, 0x15, 0x1e}, + [SPECIES_WHISCASH - 1] = {0x18, 0x20, 0x28, 0x17, 0x31}, + [SPECIES_LUVDISC - 1] = {0x19, 0x0f, 0x30, 0x13, 0x1c}, + [SPECIES_CORPHISH - 1] = {0x1f, 0x14, 0x30, 0x1d, 0x23}, + [SPECIES_CRAWDAUNT - 1] = {0x14, 0x0c, 0x28, 0x18, 0x23}, + [SPECIES_FEEBAS - 1] = {0x18, 0x1e, 0x28, 0x16, 0x2f}, + [SPECIES_MILOTIC - 1] = {0x20, 0x0c, 0x28, 0x1f, 0x1d}, + [SPECIES_CARVANHA - 1] = {0x16, 0x19, 0x30, 0x13, 0x22}, + [SPECIES_SHARPEDO - 1] = {0x19, 0x0c, 0x28, 0x17, 0x27}, + [SPECIES_TRAPINCH - 1] = {0x29, 0x13, 0x30, 0x17, 0x18}, + [SPECIES_VIBRAVA - 1] = {0x10, 0x27, 0x20, 0x0e, 0x34}, + [SPECIES_FLYGON - 1] = {0x22, 0x07, 0x10, 0x21, 0x13}, + [SPECIES_MAKUHITA - 1] = {0x22, 0x13, 0x30, 0x1c, 0x23}, + [SPECIES_HARIYAMA - 1] = {0x24, 0x0f, 0x28, 0x26, 0x1c}, + [SPECIES_ELECTRIKE - 1] = {0x11, 0x18, 0x30, 0x14, 0x27}, + [SPECIES_MANECTRIC - 1] = {0x2f, 0x18, 0x28, 0x2e, 0x29}, + [SPECIES_NUMEL - 1] = {0x10, 0x1a, 0x30, 0x0d, 0x2a}, + [SPECIES_CAMERUPT - 1] = {0x0d, 0x22, 0x28, 0x0e, 0x36}, + [SPECIES_SPHEAL - 1] = {0x1e, 0x0f, 0x30, 0x18, 0x1f}, + [SPECIES_SEALEO - 1] = {0x1c, 0x09, 0x30, 0x1a, 0x18}, + [SPECIES_WALREIN - 1] = {0x19, 0x01, 0x28, 0x10, 0x16}, + [SPECIES_CACNEA - 1] = {0x1f, 0x17, 0x30, 0x1d, 0x29}, + [SPECIES_CACTURNE - 1] = {0x1d, 0x0e, 0x28, 0x1d, 0x1b}, + [SPECIES_SNORUNT - 1] = {0x1e, 0x16, 0x30, 0x1e, 0x26}, + [SPECIES_GLALIE - 1] = {0x1a, 0x1c, 0x08, 0x1a, 0x31}, + [SPECIES_LUNATONE - 1] = {0x1c, 0x16, 0x08, 0x19, 0x2c}, + [SPECIES_SOLROCK - 1] = {0x18, 0x18, 0x10, 0x17, 0x31}, + [SPECIES_AZURILL - 1] = {0x1b, 0x10, 0x30, 0x18, 0x1f}, + [SPECIES_SPOINK - 1] = {0x21, 0x14, 0x30, 0x1b, 0x28}, + [SPECIES_GRUMPIG - 1] = {0x14, 0x10, 0x30, 0x15, 0x20}, + [SPECIES_PLUSLE - 1] = {0x1c, 0x16, 0x08, 0x1d, 0x25}, + [SPECIES_MINUN - 1] = {0x21, 0x16, 0x08, 0x1f, 0x26}, + [SPECIES_MAWILE - 1] = {0x2d, 0x14, 0x30, 0x2f, 0x24}, + [SPECIES_MEDITITE - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x25}, + [SPECIES_MEDICHAM - 1] = {0x21, 0x0f, 0x28, 0x1e, 0x1d}, + [SPECIES_SWABLU - 1] = {0x1b, 0x16, 0x10, 0x17, 0x23}, + [SPECIES_ALTARIA - 1] = {0x1d, 0x0b, 0x10, 0x1a, 0x1a}, + [SPECIES_WYNAUT - 1] = {0x1a, 0x15, 0x30, 0x1b, 0x26}, + [SPECIES_DUSKULL - 1] = {0x10, 0x18, 0x08, 0x14, 0x2e}, + [SPECIES_DUSCLOPS - 1] = {0x1c, 0x0f, 0x30, 0x1a, 0x28}, + [SPECIES_ROSELIA - 1] = {0x1e, 0x11, 0x30, 0x1d, 0x20}, + [SPECIES_SLAKOTH - 1] = {0x19, 0x1e, 0x30, 0x18, 0x2f}, + [SPECIES_VIGOROTH - 1] = {0x10, 0x12, 0x28, 0x14, 0x24}, + [SPECIES_SLAKING - 1] = {0x37, 0x0f, 0x30, 0x29, 0x21}, + [SPECIES_GULPIN - 1] = {0x1b, 0x18, 0x30, 0x17, 0x26}, + [SPECIES_SWALOT - 1] = {0x1f, 0x06, 0x30, 0x15, 0x13}, + [SPECIES_TROPIUS - 1] = {0x18, 0x0a, 0x28, 0x20, 0x18}, + [SPECIES_WHISMUR - 1] = {0x1f, 0x19, 0x30, 0x1d, 0x29}, + [SPECIES_LOUDRED - 1] = {0x1c, 0x12, 0x28, 0x22, 0x27}, + [SPECIES_EXPLOUD - 1] = {0x10, 0x10, 0x28, 0x1a, 0x2a}, + [SPECIES_CLAMPERL - 1] = {0x20, 0x1a, 0x30, 0x1e, 0x26}, + [SPECIES_HUNTAIL - 1] = {0x13, 0x1e, 0x28, 0x15, 0x33}, + [SPECIES_GOREBYSS - 1] = {0x0d, 0x1f, 0x28, 0x03, 0x32}, + [SPECIES_ABSOL - 1] = {0x2a, 0x11, 0x28, 0x2a, 0x22}, + [SPECIES_SHUPPET - 1] = {0x16, 0x19, 0x08, 0x17, 0x27}, + [SPECIES_BANETTE - 1] = {0x1c, 0x14, 0x08, 0x1b, 0x23}, + [SPECIES_SEVIPER - 1] = {0x0e, 0x0d, 0x30, 0x0b, 0x1e}, + [SPECIES_ZANGOOSE - 1] = {0x18, 0x0c, 0x28, 0x15, 0x1a}, + [SPECIES_RELICANTH - 1] = {0x0c, 0x1f, 0x30, 0x09, 0x2d}, + [SPECIES_ARON - 1] = {0x18, 0x1c, 0x30, 0x1a, 0x2c}, + [SPECIES_LAIRON - 1] = {0x0b, 0x21, 0x30, 0x12, 0x2f}, + [SPECIES_AGGRON - 1] = {0x10, 0x0b, 0x28, 0x16, 0x1b}, + [SPECIES_CASTFORM - 1] = {0x1d, 0x18, 0x08, 0x1b, 0x26}, + [SPECIES_VOLBEAT - 1] = {0x25, 0x15, 0x08, 0x21, 0x25}, + [SPECIES_ILLUMISE - 1] = {0x20, 0x12, 0x08, 0x1f, 0x20}, + [SPECIES_LILEEP - 1] = {0x1e, 0x11, 0x30, 0x1f, 0x1e}, + [SPECIES_CRADILY - 1] = {0x12, 0x16, 0x28, 0x15, 0x28}, + [SPECIES_ANORITH - 1] = {0x1c, 0x1e, 0x30, 0x1b, 0x2b}, + [SPECIES_ARMALDO - 1] = {0x15, 0x05, 0x28, 0x14, 0x13}, + [SPECIES_RALTS - 1] = {0x1f, 0x17, 0x30, 0x20, 0x23}, + [SPECIES_KIRLIA - 1] = {0x1c, 0x12, 0x30, 0x1f, 0x1e}, + [SPECIES_GARDEVOIR - 1] = {0x35, 0x07, 0x28, 0x32, 0x14}, + [SPECIES_BAGON - 1] = {0x17, 0x13, 0x30, 0x16, 0x26}, + [SPECIES_SHELGON - 1] = {0x19, 0x1b, 0x30, 0x19, 0x2c}, + [SPECIES_SALAMENCE - 1] = {0x09, 0x11, 0x30, 0x0a, 0x21}, + [SPECIES_BELDUM - 1] = {0x16, 0x19, 0x08, 0x18, 0x23}, + [SPECIES_METANG - 1] = {0x22, 0x0f, 0x10, 0x1f, 0x21}, + [SPECIES_METAGROSS - 1] = {0x24, 0x1b, 0x28, 0x22, 0x2b}, + [SPECIES_REGIROCK - 1] = {0x16, 0x07, 0x28, 0x14, 0x12}, + [SPECIES_REGICE - 1] = {0x19, 0x0c, 0x28, 0x17, 0x19}, + [SPECIES_REGISTEEL - 1] = {0x19, 0x0d, 0x28, 0x19, 0x19}, + [SPECIES_KYOGRE - 1] = {0x0e, 0x19, 0x28, 0x0b, 0x26}, + [SPECIES_GROUDON - 1] = {0x04, 0x0b, 0x28, 0x0a, 0x19}, + [SPECIES_RAYQUAZA - 1] = {0x0c, 0x0e, 0x10, 0x0e, 0x1f}, + [SPECIES_LATIAS - 1] = {0x1e, 0x0c, 0x10, 0x23, 0x19}, + [SPECIES_LATIOS - 1] = {0x05, 0x0e, 0x10, 0x05, 0x1d}, + [SPECIES_JIRACHI - 1] = {0x1c, 0x15, 0x08, 0x1e, 0x22}, + [SPECIES_DEOXYS - 1] = {0x1b, 0x08, 0x28, 0x1c, 0x16}, + [SPECIES_CHIMECHO - 1] = {0x1d, 0x0c, 0x08, 0x1c, 0x1a}, + [SPECIES_OLD_UNOWN_EMARK - 1] = {0x20, 0x21, 0x08, 0x20, 0x2b}, + [SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d} +}; + +void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) +{ + u8 taskId = CreateTask(sub_812E9F8, a5); + gTasks[taskId].data[0] = a0 << 8; + gTasks[taskId].data[1] = a1 << 8; + gTasks[taskId].data[2] = a2; + gTasks[taskId].data[3] = a3; + gTasks[taskId].data[4] = (a2 - a0) * 256 / a4; + gTasks[taskId].data[5] = (a3 - a1) * 256 / a4; + gTasks[taskId].data[8] = a4; + SetGpuReg(REG_OFFSET_BLDALPHA, (a1 << 8) | a0); +} + +bool8 sub_812E9E4(void) +{ + return FuncIsActiveTask(sub_812E9F8); +} + +void sub_812E9F8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[8] != 0) + { + if (data[6] == 0) + { + data[0] += data[4]; + data[6] = 1; + } + else + { + if (--data[8] != 0) + { + data[1] += data[5]; + } + else + { + data[0] = data[2] << 8; + data[1] = data[3] << 8; + } + data[6] = 0; + } + SetGpuReg(REG_OFFSET_BLDALPHA, (data[1] & ~0xFF) | ((u16)data[0] >> 8)); + if (data[8] == 0) + DestroyTask(taskId); + } +} + +u8 sub_812EA78(u16 species, u32 personality, u8 a2) +{ + if (species == SPECIES_UNOWN) + { + u8 unownLetter = GetUnownLetterByPersonality(personality); + switch (unownLetter) + { + case 0: + break; + case 26: + species = SPECIES_OLD_UNOWN_EMARK; + break; + case 27: + species = SPECIES_OLD_UNOWN_QMARK; + break; + default: + species = SPECIES_OLD_UNOWN_B + unownLetter - 1; + break; + } + } + if (species != SPECIES_NONE && a2 < 5) + { + species--; + if (gUnknown_845FD54[species][a2] != 0xFF) + return gUnknown_845FD54[species][a2]; + } + return 32; +} + +s8 sub_812EAE4(u16 species, u32 personality, u8 a2) +{ + return sub_812EA78(species, personality, a2) - 32; +} + +void sub_812EAFC(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_812EB10(void) +{ + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_812EB2C(void) +{ + gPlttBufferUnfaded[0] = RGB_BLACK; + gPlttBufferFaded[0] = RGB_BLACK; + CreateTask(sub_812EB58, 0); + SetMainCallback2(sub_812EB10); +} From fb423f957dc8944edf0b822a7aaa1949434ac65e Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 9 Apr 2019 14:30:54 -0400 Subject: [PATCH 049/318] sub_812EB58; port scanline_effect --- asm/battle_1.s | 40 +- asm/battle_2.s | 176 ++--- asm/battle_anim.s | 80 +-- asm/battle_anim_80A22E8.s | 736 ++++++++++----------- asm/battle_anim_80DE2C0.s | 186 +++--- asm/battle_anim_80EEC0C.s | 12 +- asm/battle_controller_link_opponent.s | 8 +- asm/battle_controller_link_partner.s | 8 +- asm/battle_controller_oak.s | 24 +- asm/battle_controller_opponent.s | 8 +- asm/battle_controller_player.s | 72 +- asm/battle_controller_pokedude.s | 36 +- asm/battle_controller_safari.s | 16 +- asm/battle_records.s | 2 +- asm/battle_script_commands.s | 44 +- asm/battle_transition.s | 312 ++++----- asm/berry_fix_program.s | 2 +- asm/berry_pouch.s | 2 +- asm/diploma.s | 2 +- asm/egg_hatch.s | 2 +- asm/evolution_scene.s | 234 +++---- asm/field_map_obj.s | 8 +- asm/field_screen_effect.s | 24 +- asm/field_weather.s | 4 +- asm/field_weather_effects.s | 12 +- asm/hall_of_fame.s | 6 +- asm/intro.s | 22 +- asm/item_menu.s | 2 +- asm/item_pc.s | 2 +- asm/link.s | 2 +- asm/mail.s | 2 +- asm/main_menu.s | 2 +- asm/menu_indicators.s | 12 +- asm/mystery_gift_menu.s | 2 +- asm/oak_speech.s | 555 +++------------- asm/option_menu.s | 2 +- asm/overworld.s | 10 +- asm/party_menu.s | 2 +- asm/pokeball.s | 4 +- asm/pokedex_screen.s | 2 +- asm/pokemon_special_anim.s | 8 +- asm/pokemon_storage_system.s | 12 +- asm/pokemon_summary_screen.s | 2 +- asm/region_map.s | 2 +- asm/reshow_battle_screen.s | 34 +- asm/seagallop.s | 2 +- asm/shop.s | 2 +- asm/slot_machine.s | 8 +- asm/start_menu.s | 4 +- asm/teachy_tv.s | 2 +- asm/title_screen.s | 36 +- asm/tm_case.s | 2 +- asm/trainer_card.s | 34 +- asm/trig.s | 8 +- asm/union_room_chat.s | 24 +- asm/unk_8147AA8.s | 4 +- asm/unk_814D5C8.s | 2 +- asm/unk_815F138.s | 8 +- asm/unknown_task.s | 644 ------------------ asm/wireless_communication_status_screen.s | 2 +- data/data.s | 2 +- data/data_845FD54.s | 6 - data/oak_speech/unk_8460568.pal | 67 ++ data/oak_speech/unk_84605E8.png | Bin 0 -> 1118 bytes include/help_system.h | 1 + include/menu.h | 1 + include/new_menu_helpers.h | 3 + include/pokemon_3.h | 1 + include/scanline_effect.h | 46 +- include/text.h | 1 + include/unknown_task.h | 24 - ld_script.txt | 2 +- src/fame_checker.c | 2 +- src/main.c | 4 +- src/oak_speech.c | 117 ++++ src/scanline_effect.c | 262 ++++++++ sym_ewram.txt | 45 +- 77 files changed, 1769 insertions(+), 2332 deletions(-) delete mode 100644 asm/unknown_task.s create mode 100644 data/oak_speech/unk_8460568.pal create mode 100644 data/oak_speech/unk_84605E8.png delete mode 100644 include/unknown_task.h create mode 100644 src/scanline_effect.c diff --git a/asm/battle_1.s b/asm/battle_1.s index 72f5fe901..abaad7e85 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -908,7 +908,7 @@ _0800F8F0: ldrsh r0, [r5, r1] cmp r0, 0 beq _0800F958 - ldr r4, _0800F944 @ =gUnknown_2022978 + ldr r4, _0800F944 @ =gBattle_BG1_X ldrh r0, [r5, 0xA] bl Sin2 lsls r0, 16 @@ -923,7 +923,7 @@ _0800F90A: adds r0, r2, 0 subs r0, r1 strh r0, [r4] - ldr r4, _0800F948 @ =gUnknown_202297C + ldr r4, _0800F948 @ =gBattle_BG2_X ldrh r0, [r5, 0xC] bl Sin2 lsls r0, 16 @@ -938,21 +938,21 @@ _0800F928: adds r0, r3, 0 subs r0, r1 strh r0, [r4] - ldr r0, _0800F94C @ =gUnknown_202297A + ldr r0, _0800F94C @ =gBattle_BG1_Y ldr r2, _0800F950 @ =0x0000ffdc adds r1, r2, 0 strh r1, [r0] - ldr r0, _0800F954 @ =gUnknown_202297E + ldr r0, _0800F954 @ =gBattle_BG2_Y strh r1, [r0] b _0800F9C4 .align 2, 0 -_0800F944: .4byte gUnknown_2022978 -_0800F948: .4byte gUnknown_202297C -_0800F94C: .4byte gUnknown_202297A +_0800F944: .4byte gBattle_BG1_X +_0800F948: .4byte gBattle_BG2_X +_0800F94C: .4byte gBattle_BG1_Y _0800F950: .4byte 0x0000ffdc -_0800F954: .4byte gUnknown_202297E +_0800F954: .4byte gBattle_BG2_Y _0800F958: - ldr r4, _0800F9E8 @ =gUnknown_2022978 + ldr r4, _0800F9E8 @ =gBattle_BG1_X ldrh r0, [r5, 0xA] bl Sin2 lsls r0, 16 @@ -967,7 +967,7 @@ _0800F96A: adds r0, r3, 0 subs r0, r1 strh r0, [r4] - ldr r4, _0800F9EC @ =gUnknown_202297A + ldr r4, _0800F9EC @ =gBattle_BG1_Y ldrh r0, [r5, 0xA] bl Cos2 lsls r0, 16 @@ -979,7 +979,7 @@ _0800F988: asrs r0, 5 subs r0, 0xA4 strh r0, [r4] - ldr r4, _0800F9F0 @ =gUnknown_202297C + ldr r4, _0800F9F0 @ =gBattle_BG2_X ldrh r0, [r5, 0xC] bl Sin2 lsls r0, 16 @@ -994,7 +994,7 @@ _0800F9A0: adds r0, r2, 0 subs r0, r1 strh r0, [r4] - ldr r4, _0800F9F4 @ =gUnknown_202297E + ldr r4, _0800F9F4 @ =gBattle_BG2_Y ldrh r0, [r5, 0xC] bl Cos2 lsls r0, 16 @@ -1025,10 +1025,10 @@ _0800F9C4: strh r0, [r1, 0xA] b _0800FAC4 .align 2, 0 -_0800F9E8: .4byte gUnknown_2022978 -_0800F9EC: .4byte gUnknown_202297A -_0800F9F0: .4byte gUnknown_202297C -_0800F9F4: .4byte gUnknown_202297E +_0800F9E8: .4byte gBattle_BG1_X +_0800F9EC: .4byte gBattle_BG1_Y +_0800F9F0: .4byte gBattle_BG2_X +_0800F9F4: .4byte gBattle_BG2_Y _0800F9F8: .4byte gTasks _0800F9FC: movs r3, 0x12 @@ -1190,11 +1190,11 @@ sub_800FAE0: @ 800FAE0 movs r0, 0x4A movs r1, 0x36 bl SetGpuReg - ldr r0, _0800FB84 @ =gUnknown_202297A + ldr r0, _0800FB84 @ =gBattle_BG1_Y ldr r2, _0800FB88 @ =0x0000ff5c adds r1, r2, 0 strh r1, [r0] - ldr r0, _0800FB8C @ =gUnknown_202297E + ldr r0, _0800FB8C @ =gBattle_BG2_Y strh r1, [r0] ldr r0, _0800FB90 @ =gUnknown_8248318 bl sub_800F034 @@ -1208,9 +1208,9 @@ _0800FB74: .4byte 0x06010000 _0800FB78: .4byte gFile_graphics_battle_transitions_vs_frame_palette _0800FB7C: .4byte 0x00005c04 _0800FB80: .4byte gFile_graphics_battle_transitions_vs_frame_tilemap -_0800FB84: .4byte gUnknown_202297A +_0800FB84: .4byte gBattle_BG1_Y _0800FB88: .4byte 0x0000ff5c -_0800FB8C: .4byte gUnknown_202297E +_0800FB8C: .4byte gBattle_BG2_Y _0800FB90: .4byte gUnknown_8248318 _0800FB94: movs r0, 0x80 diff --git a/asm/battle_2.s b/asm/battle_2.s index 1ecfe6ad3..e5827747b 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -104,8 +104,8 @@ sub_800FE24: @ 800FE24 strh r0, [r1] ldr r0, _0800FF34 @ =gUnknown_2022986 strh r4, [r0] - bl dp12_8087EA4 - ldr r0, _0800FF38 @ =gUnknown_2038700 + bl ScanlineEffect_Clear + ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers movs r3, 0xF0 movs r1, 0xF0 lsls r1, 3 @@ -121,7 +121,7 @@ _0800FE88: bge _0800FE88 movs r1, 0x50 ldr r4, _0800FF3C @ =gUnknown_824EFE4 - ldr r0, _0800FF38 @ =gUnknown_2038700 + ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers ldr r3, _0800FF40 @ =0x0000ff10 movs r5, 0x82 lsls r5, 4 @@ -138,24 +138,24 @@ _0800FEA6: ldr r0, [r4] ldr r1, [r4, 0x4] ldr r2, [r4, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams bl ResetPaletteFade - ldr r0, _0800FF44 @ =gUnknown_2022974 + ldr r0, _0800FF44 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _0800FF48 @ =gUnknown_2022976 + ldr r0, _0800FF48 @ =gBattle_BG0_Y strh r1, [r0] - ldr r0, _0800FF4C @ =gUnknown_2022978 + ldr r0, _0800FF4C @ =gBattle_BG1_X strh r1, [r0] - ldr r0, _0800FF50 @ =gUnknown_202297A + ldr r0, _0800FF50 @ =gBattle_BG1_Y strh r1, [r0] - ldr r0, _0800FF54 @ =gUnknown_202297C + ldr r0, _0800FF54 @ =gBattle_BG2_X strh r1, [r0] - ldr r0, _0800FF58 @ =gUnknown_202297E + ldr r0, _0800FF58 @ =gBattle_BG2_Y strh r1, [r0] - ldr r0, _0800FF5C @ =gUnknown_2022980 + ldr r0, _0800FF5C @ =gBattle_BG3_X strh r1, [r0] - ldr r0, _0800FF60 @ =gUnknown_2022982 + ldr r0, _0800FF60 @ =gBattle_BG3_Y strh r1, [r0] bl sub_807FC5C ldr r1, _0800FF64 @ =gUnknown_2022B50 @@ -186,17 +186,17 @@ _0800FF28: .4byte 0x05006000 _0800FF2C: .4byte 0x00005051 _0800FF30: .4byte gUnknown_2022984 _0800FF34: .4byte gUnknown_2022986 -_0800FF38: .4byte gUnknown_2038700 +_0800FF38: .4byte gScanlineEffectRegBuffers _0800FF3C: .4byte gUnknown_824EFE4 _0800FF40: .4byte 0x0000ff10 -_0800FF44: .4byte gUnknown_2022974 -_0800FF48: .4byte gUnknown_2022976 -_0800FF4C: .4byte gUnknown_2022978 -_0800FF50: .4byte gUnknown_202297A -_0800FF54: .4byte gUnknown_202297C -_0800FF58: .4byte gUnknown_202297E -_0800FF5C: .4byte gUnknown_2022980 -_0800FF60: .4byte gUnknown_2022982 +_0800FF44: .4byte gBattle_BG0_X +_0800FF48: .4byte gBattle_BG0_Y +_0800FF4C: .4byte gBattle_BG1_X +_0800FF50: .4byte gBattle_BG1_Y +_0800FF54: .4byte gBattle_BG2_X +_0800FF58: .4byte gBattle_BG2_Y +_0800FF5C: .4byte gBattle_BG3_X +_0800FF60: .4byte gBattle_BG3_Y _0800FF64: .4byte gUnknown_2022B50 _0800FF68: .4byte gReservedSpritePaletteCount _0800FF6C: .4byte sub_80116F4 @@ -2410,7 +2410,7 @@ FreeRestoreBattleData: @ 8011174 ldr r0, _080111B0 @ =gUnknown_3004F80 ldr r0, [r0] str r0, [r1] - ldr r2, _080111B4 @ =gUnknown_2039600 + ldr r2, _080111B4 @ =gScanlineEffect movs r0, 0x3 strb r0, [r2, 0x15] ldr r0, _080111B8 @ =0x00000439 @@ -2431,7 +2431,7 @@ FreeRestoreBattleData: @ 8011174 .align 2, 0 _080111AC: .4byte gMain _080111B0: .4byte gUnknown_3004F80 -_080111B4: .4byte gUnknown_2039600 +_080111B4: .4byte gScanlineEffect _080111B8: .4byte 0x00000439 thumb_func_end FreeRestoreBattleData @@ -3125,35 +3125,35 @@ _080116F0: .4byte 0x04000008 sub_80116F4: @ 80116F4 push {lr} bl Random - ldr r0, _08011788 @ =gUnknown_2022974 + ldr r0, _08011788 @ =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, _0801178C @ =gUnknown_2022976 + ldr r0, _0801178C @ =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, _08011790 @ =gUnknown_2022978 + ldr r0, _08011790 @ =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, _08011794 @ =gUnknown_202297A + ldr r0, _08011794 @ =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, _08011798 @ =gUnknown_202297C + ldr r0, _08011798 @ =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, _0801179C @ =gUnknown_202297E + ldr r0, _0801179C @ =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, _080117A0 @ =gUnknown_2022980 + ldr r0, _080117A0 @ =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, _080117A4 @ =gUnknown_2022982 + ldr r0, _080117A4 @ =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg @@ -3176,18 +3176,18 @@ sub_80116F4: @ 80116F4 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_8087F54 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .align 2, 0 -_08011788: .4byte gUnknown_2022974 -_0801178C: .4byte gUnknown_2022976 -_08011790: .4byte gUnknown_2022978 -_08011794: .4byte gUnknown_202297A -_08011798: .4byte gUnknown_202297C -_0801179C: .4byte gUnknown_202297E -_080117A0: .4byte gUnknown_2022980 -_080117A4: .4byte gUnknown_2022982 +_08011788: .4byte gBattle_BG0_X +_0801178C: .4byte gBattle_BG0_Y +_08011790: .4byte gBattle_BG1_X +_08011794: .4byte gBattle_BG1_Y +_08011798: .4byte gBattle_BG2_X +_0801179C: .4byte gBattle_BG2_Y +_080117A0: .4byte gBattle_BG3_X +_080117A4: .4byte gBattle_BG3_Y _080117A8: .4byte gUnknown_2022984 _080117AC: .4byte gUnknown_2022986 _080117B0: .4byte gUnknown_2022988 @@ -3548,8 +3548,8 @@ sub_8011A1C: @ 8011A1C strh r0, [r1] ldr r0, _08011B4C @ =gUnknown_2022986 strh r4, [r0] - bl dp12_8087EA4 - ldr r0, _08011B50 @ =gUnknown_2038700 + bl ScanlineEffect_Clear + ldr r0, _08011B50 @ =gScanlineEffectRegBuffers movs r3, 0xF0 movs r1, 0xF0 lsls r1, 3 @@ -3564,7 +3564,7 @@ _08011A80: cmp r1, 0 bge _08011A80 movs r1, 0x50 - ldr r0, _08011B50 @ =gUnknown_2038700 + ldr r0, _08011B50 @ =gScanlineEffectRegBuffers ldr r3, _08011B54 @ =0x0000ff10 movs r4, 0x82 lsls r4, 4 @@ -3579,22 +3579,22 @@ _08011A9C: cmp r1, 0x9F ble _08011A9C bl ResetPaletteFade - ldr r0, _08011B58 @ =gUnknown_2022974 + ldr r0, _08011B58 @ =gBattle_BG0_X movs r4, 0 strh r4, [r0] - ldr r0, _08011B5C @ =gUnknown_2022976 + ldr r0, _08011B5C @ =gBattle_BG0_Y strh r4, [r0] - ldr r0, _08011B60 @ =gUnknown_2022978 + ldr r0, _08011B60 @ =gBattle_BG1_X strh r4, [r0] - ldr r0, _08011B64 @ =gUnknown_202297A + ldr r0, _08011B64 @ =gBattle_BG1_Y strh r4, [r0] - ldr r0, _08011B68 @ =gUnknown_202297C + ldr r0, _08011B68 @ =gBattle_BG2_X strh r4, [r0] - ldr r0, _08011B6C @ =gUnknown_202297E + ldr r0, _08011B6C @ =gBattle_BG2_Y strh r4, [r0] - ldr r0, _08011B70 @ =gUnknown_2022980 + ldr r0, _08011B70 @ =gBattle_BG3_X strh r4, [r0] - ldr r0, _08011B74 @ =gUnknown_2022982 + ldr r0, _08011B74 @ =gBattle_BG3_Y strh r4, [r0] bl sub_800F34C ldr r0, _08011B78 @ =gUnknown_8D004D8 @@ -3645,16 +3645,16 @@ _08011B40: .4byte 0x05006000 _08011B44: .4byte 0x00005051 _08011B48: .4byte gUnknown_2022984 _08011B4C: .4byte gUnknown_2022986 -_08011B50: .4byte gUnknown_2038700 +_08011B50: .4byte gScanlineEffectRegBuffers _08011B54: .4byte 0x0000ff10 -_08011B58: .4byte gUnknown_2022974 -_08011B5C: .4byte gUnknown_2022976 -_08011B60: .4byte gUnknown_2022978 -_08011B64: .4byte gUnknown_202297A -_08011B68: .4byte gUnknown_202297C -_08011B6C: .4byte gUnknown_202297E -_08011B70: .4byte gUnknown_2022980 -_08011B74: .4byte gUnknown_2022982 +_08011B58: .4byte gBattle_BG0_X +_08011B5C: .4byte gBattle_BG0_Y +_08011B60: .4byte gBattle_BG1_X +_08011B64: .4byte gBattle_BG1_Y +_08011B68: .4byte gBattle_BG2_X +_08011B6C: .4byte gBattle_BG2_Y +_08011B70: .4byte gBattle_BG3_X +_08011B74: .4byte gBattle_BG3_Y _08011B78: .4byte gUnknown_8D004D8 _08011B7C: .4byte gReservedSpritePaletteCount _08011B80: .4byte sub_80116F4 @@ -12610,10 +12610,10 @@ sub_8016374: @ 8016374 adds r0, r1 ldrb r0, [r0] strb r0, [r3] - ldr r0, _080163EC @ =gUnknown_2022974 + ldr r0, _080163EC @ =gBattle_BG0_X movs r2, 0 strh r2, [r0] - ldr r0, _080163F0 @ =gUnknown_2022976 + ldr r0, _080163F0 @ =gBattle_BG0_Y strh r2, [r0] ldr r1, _080163F4 @ =gUnknown_2023FF8 ldrb r0, [r3] @@ -12661,8 +12661,8 @@ _080163DA: _080163E0: .4byte sBattler_AI _080163E4: .4byte gUnknown_2023BDE _080163E8: .4byte gUnknown_2023BE2 -_080163EC: .4byte gUnknown_2022974 -_080163F0: .4byte gUnknown_2022976 +_080163EC: .4byte gBattle_BG0_X +_080163F0: .4byte gBattle_BG0_Y _080163F4: .4byte gUnknown_2023FF8 _080163F8: .4byte gUnknown_2023FFC _080163FC: .4byte gBattleTextBuff1 @@ -12690,10 +12690,10 @@ sub_8016418: @ 8016418 ldrb r0, [r0] strb r0, [r2] strb r0, [r4] - ldr r0, _08016484 @ =gUnknown_2022974 + ldr r0, _08016484 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _08016488 @ =gUnknown_2022976 + ldr r0, _08016488 @ =gBattle_BG0_Y strh r1, [r0] ldrb r0, [r4] bl ClearFuryCutterDestinyBondGrudge @@ -12726,8 +12726,8 @@ _08016474: .4byte sBattler_AI _08016478: .4byte gBattlerTarget _0801647C: .4byte gUnknown_2023BDE _08016480: .4byte gUnknown_2023BE2 -_08016484: .4byte gUnknown_2022974 -_08016488: .4byte gUnknown_2022976 +_08016484: .4byte gBattle_BG0_X +_08016488: .4byte gBattle_BG0_Y _0801648C: .4byte gUnknown_2023D68 _08016490: .4byte gUnknown_20233C4 _08016494: .4byte gUnknown_2023D74 @@ -13391,10 +13391,10 @@ sub_80169E8: @ 80169E8 adds r0, r1 ldrb r0, [r0] strb r0, [r2] - ldr r0, _08016A50 @ =gUnknown_2022974 + ldr r0, _08016A50 @ =gBattle_BG0_X movs r5, 0 strh r5, [r0] - ldr r0, _08016A54 @ =gUnknown_2022976 + ldr r0, _08016A54 @ =gBattle_BG0_Y strh r5, [r0] ldr r4, _08016A58 @ =gBattleStruct ldr r1, [r4] @@ -13431,8 +13431,8 @@ sub_80169E8: @ 80169E8 _08016A44: .4byte sBattler_AI _08016A48: .4byte gUnknown_2023BDE _08016A4C: .4byte gUnknown_2023BE2 -_08016A50: .4byte gUnknown_2022974 -_08016A54: .4byte gUnknown_2022976 +_08016A50: .4byte gBattle_BG0_X +_08016A54: .4byte gBattle_BG0_Y _08016A58: .4byte gBattleStruct _08016A5C: .4byte gEnemyParty _08016A60: .4byte gBaseStats @@ -13492,10 +13492,10 @@ sub_8016AC0: @ 8016AC0 adds r0, r1 ldrb r0, [r0] strb r0, [r2] - ldr r0, _08016B04 @ =gUnknown_2022974 + ldr r0, _08016B04 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _08016B08 @ =gUnknown_2022976 + ldr r0, _08016B08 @ =gBattle_BG0_Y strh r1, [r0] ldr r1, _08016B0C @ =gUnknown_2039994 ldrb r0, [r1] @@ -13516,8 +13516,8 @@ sub_8016AC0: @ 8016AC0 _08016AF8: .4byte sBattler_AI _08016AFC: .4byte gUnknown_2023BDE _08016B00: .4byte gUnknown_2023BE2 -_08016B04: .4byte gUnknown_2022974 -_08016B08: .4byte gUnknown_2022976 +_08016B04: .4byte gBattle_BG0_X +_08016B08: .4byte gBattle_BG0_Y _08016B0C: .4byte gUnknown_2039994 _08016B10: .4byte gUnknown_2023D68 _08016B14: .4byte gUnknown_2023D74 @@ -13535,10 +13535,10 @@ sub_8016B20: @ 8016B20 adds r0, r1 ldrb r0, [r0] strb r0, [r2] - ldr r0, _08016BA8 @ =gUnknown_2022974 + ldr r0, _08016BA8 @ =gBattle_BG0_X movs r7, 0 strh r7, [r0] - ldr r0, _08016BAC @ =gUnknown_2022976 + ldr r0, _08016BAC @ =gBattle_BG0_Y strh r7, [r0] bl Random ldr r6, _08016BB0 @ =gBattleStruct @@ -13592,8 +13592,8 @@ _08016B86: _08016B9C: .4byte sBattler_AI _08016BA0: .4byte gUnknown_2023BDE _08016BA4: .4byte gUnknown_2023BE2 -_08016BA8: .4byte gUnknown_2022974 -_08016BAC: .4byte gUnknown_2022976 +_08016BA8: .4byte gBattle_BG0_X +_08016BAC: .4byte gBattle_BG0_Y _08016BB0: .4byte gBattleStruct _08016BB4: .4byte gUnknown_2023D74 _08016BB8: .4byte gUnknown_81D9A04 @@ -13610,10 +13610,10 @@ sub_8016BC0: @ 8016BC0 adds r0, r1 ldrb r0, [r0] strb r0, [r2] - ldr r0, _08016C48 @ =gUnknown_2022974 + ldr r0, _08016C48 @ =gBattle_BG0_X movs r7, 0 strh r7, [r0] - ldr r0, _08016C4C @ =gUnknown_2022976 + ldr r0, _08016C4C @ =gBattle_BG0_Y strh r7, [r0] bl Random ldr r6, _08016C50 @ =gBattleStruct @@ -13667,8 +13667,8 @@ _08016C26: _08016C3C: .4byte sBattler_AI _08016C40: .4byte gUnknown_2023BDE _08016C44: .4byte gUnknown_2023BE2 -_08016C48: .4byte gUnknown_2022974 -_08016C4C: .4byte gUnknown_2022976 +_08016C48: .4byte gBattle_BG0_X +_08016C4C: .4byte gBattle_BG0_Y _08016C50: .4byte gBattleStruct _08016C54: .4byte gUnknown_2023D74 _08016C58: .4byte gUnknown_81D9A04 @@ -13713,10 +13713,10 @@ HandleAction_Action9: @ 8016C9C adds r0, r1 ldrb r2, [r0] strb r2, [r3] - ldr r0, _08016CF4 @ =gUnknown_2022974 + ldr r0, _08016CF4 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _08016CF8 @ =gUnknown_2022976 + ldr r0, _08016CF8 @ =gBattle_BG0_Y strh r1, [r0] ldr r1, _08016CFC @ =gBattleTextBuff1 movs r0, 0xFD @@ -13747,8 +13747,8 @@ HandleAction_Action9: @ 8016C9C _08016CE8: .4byte sBattler_AI _08016CEC: .4byte gUnknown_2023BDE _08016CF0: .4byte gUnknown_2023BE2 -_08016CF4: .4byte gUnknown_2022974 -_08016CF8: .4byte gUnknown_2022976 +_08016CF4: .4byte gBattle_BG0_X +_08016CF8: .4byte gBattle_BG0_Y _08016CFC: .4byte gBattleTextBuff1 _08016D00: .4byte gBattlerPartyIndexes _08016D04: .4byte gUnknown_2023D74 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 085b11f09..f65b9b705 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -1037,10 +1037,10 @@ _08072C88: strh r1, [r2, 0xC] cmp r7, 0 bne _08072CF4 - ldr r0, _08072CEC @ =gUnknown_2022978 + ldr r0, _08072CEC @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r2, 0xE] - ldr r0, _08072CF0 @ =gUnknown_202297A + ldr r0, _08072CF0 @ =gBattle_BG1_Y b _08072CFC .align 2, 0 _08072CD8: .4byte gUnknown_2037F1B @@ -1048,13 +1048,13 @@ _08072CDC: .4byte gUnknown_2023D44 _08072CE0: .4byte task_pA_ma0A_obj_to_bg_pal _08072CE4: .4byte gTasks _08072CE8: .4byte gSprites -_08072CEC: .4byte gUnknown_2022978 -_08072CF0: .4byte gUnknown_202297A +_08072CEC: .4byte gBattle_BG1_X +_08072CF0: .4byte gBattle_BG1_Y _08072CF4: - ldr r0, _08072D8C @ =gUnknown_202297C + ldr r0, _08072D8C @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r2, 0xE] - ldr r0, _08072D90 @ =gUnknown_202297E + ldr r0, _08072D90 @ =gBattle_BG2_Y _08072CFC: ldrh r0, [r0] strh r0, [r2, 0x10] @@ -1121,26 +1121,26 @@ _08072D3E: strh r1, [r2, 0xC] cmp r7, 0 bne _08072DB0 - ldr r0, _08072DA8 @ =gUnknown_2022978 + ldr r0, _08072DA8 @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r2, 0xE] - ldr r0, _08072DAC @ =gUnknown_202297A + ldr r0, _08072DAC @ =gBattle_BG1_Y b _08072DB8 .align 2, 0 -_08072D8C: .4byte gUnknown_202297C -_08072D90: .4byte gUnknown_202297E +_08072D8C: .4byte gBattle_BG2_X +_08072D90: .4byte gBattle_BG2_Y _08072D94: .4byte gTasks _08072D98: .4byte gUnknown_2037F14 _08072D9C: .4byte gUnknown_2023D44 _08072DA0: .4byte task_pA_ma0A_obj_to_bg_pal _08072DA4: .4byte gSprites -_08072DA8: .4byte gUnknown_2022978 -_08072DAC: .4byte gUnknown_202297A +_08072DA8: .4byte gBattle_BG1_X +_08072DAC: .4byte gBattle_BG1_Y _08072DB0: - ldr r0, _08072DDC @ =gUnknown_202297C + ldr r0, _08072DDC @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r2, 0xE] - ldr r0, _08072DE0 @ =gUnknown_202297E + ldr r0, _08072DE0 @ =gBattle_BG2_Y _08072DB8: ldrh r0, [r0] strh r0, [r2, 0x10] @@ -1162,8 +1162,8 @@ _08072DCE: pop {r0} bx r0 .align 2, 0 -_08072DDC: .4byte gUnknown_202297C -_08072DE0: .4byte gUnknown_202297E +_08072DDC: .4byte gBattle_BG2_X +_08072DE0: .4byte gBattle_BG2_Y _08072DE4: .4byte gTasks _08072DE8: .4byte gUnknown_2037F14 _08072DEC: .4byte gUnknown_2037ED4 @@ -1271,7 +1271,7 @@ _08072E5E: ldr r2, _08072F6C @ =gUnknown_2023D44 adds r2, r7, r2 ldrb r0, [r2] - ldr r5, _08072F70 @ =gUnknown_2022978 + ldr r5, _08072F70 @ =gBattle_BG1_X ldr r3, _08072F74 @ =gSprites lsls r1, r0, 4 adds r1, r0 @@ -1283,7 +1283,7 @@ _08072E5E: negs r0, r0 adds r0, 0x20 strh r0, [r5] - ldr r4, _08072F78 @ =gUnknown_202297A + ldr r4, _08072F78 @ =gBattle_BG1_Y ldrh r0, [r1, 0x26] ldrh r1, [r1, 0x22] adds r0, r1 @@ -1350,9 +1350,9 @@ _08072F60: .4byte 0x0600e000 _08072F64: .4byte 0x01000800 _08072F68: .4byte 0x01000400 _08072F6C: .4byte gUnknown_2023D44 -_08072F70: .4byte gUnknown_2022978 +_08072F70: .4byte gBattle_BG1_X _08072F74: .4byte gSprites -_08072F78: .4byte gUnknown_202297A +_08072F78: .4byte gBattle_BG1_Y _08072F7C: .4byte gPlttBufferUnfaded + 0x200 _08072F80: .4byte 0x04000008 _08072F84: @@ -1404,7 +1404,7 @@ _08072F84: ldr r2, _080730A4 @ =gUnknown_2023D44 adds r2, r7, r2 ldrb r0, [r2] - ldr r5, _080730A8 @ =gUnknown_202297C + ldr r5, _080730A8 @ =gBattle_BG2_X ldr r3, _080730AC @ =gSprites lsls r1, r0, 4 adds r1, r0 @@ -1416,7 +1416,7 @@ _08072F84: negs r0, r0 adds r0, 0x20 strh r0, [r5] - ldr r4, _080730B0 @ =gUnknown_202297E + ldr r4, _080730B0 @ =gBattle_BG2_Y ldrh r0, [r1, 0x26] ldrh r1, [r1, 0x22] adds r0, r1 @@ -1484,9 +1484,9 @@ _08073098: .4byte 0x0600f000 _0807309C: .4byte 0x01000800 _080730A0: .4byte 0x01000400 _080730A4: .4byte gUnknown_2023D44 -_080730A8: .4byte gUnknown_202297C +_080730A8: .4byte gBattle_BG2_X _080730AC: .4byte gSprites -_080730B0: .4byte gUnknown_202297E +_080730B0: .4byte gBattle_BG2_Y _080730B4: .4byte gPlttBufferUnfaded + 0x200 _080730B8: .4byte 0x05000120 _080730BC: .4byte 0x04000008 @@ -1563,21 +1563,21 @@ sub_8073128: @ 8073128 bne _08073154 movs r0, 0x1 bl sub_8075358 - ldr r0, _0807314C @ =gUnknown_2022978 + ldr r0, _0807314C @ =gBattle_BG1_X strh r4, [r0] - ldr r0, _08073150 @ =gUnknown_202297A + ldr r0, _08073150 @ =gBattle_BG1_Y strh r4, [r0] b _08073164 .align 2, 0 -_0807314C: .4byte gUnknown_2022978 -_08073150: .4byte gUnknown_202297A +_0807314C: .4byte gBattle_BG1_X +_08073150: .4byte gBattle_BG1_Y _08073154: movs r0, 0x2 bl sub_8075358 - ldr r0, _0807316C @ =gUnknown_202297C + ldr r0, _0807316C @ =gBattle_BG2_X movs r1, 0 strh r1, [r0] - ldr r0, _08073170 @ =gUnknown_202297E + ldr r0, _08073170 @ =gBattle_BG2_Y strh r1, [r0] _08073164: add sp, 0x10 @@ -1585,8 +1585,8 @@ _08073164: pop {r0} bx r0 .align 2, 0 -_0807316C: .4byte gUnknown_202297C -_08073170: .4byte gUnknown_202297E +_0807316C: .4byte gBattle_BG2_X +_08073170: .4byte gBattle_BG2_Y thumb_func_end sub_8073128 thumb_func_start task_pA_ma0A_obj_to_bg_pal @@ -1627,13 +1627,13 @@ task_pA_ma0A_obj_to_bg_pal: @ 8073174 ldrsh r0, [r5, r1] cmp r0, 0 bne _0807320C - ldr r1, _080731F8 @ =gUnknown_2022978 + ldr r1, _080731F8 @ =gBattle_BG1_X lsls r0, r3, 16 asrs r0, 16 ldrh r3, [r5, 0xE] adds r0, r3 strh r0, [r1] - ldr r1, _080731FC @ =gUnknown_202297A + ldr r1, _080731FC @ =gBattle_BG1_Y lsls r0, r2, 16 asrs r0, 16 ldrh r5, [r5, 0x10] @@ -1654,19 +1654,19 @@ task_pA_ma0A_obj_to_bg_pal: @ 8073174 .align 2, 0 _080731F0: .4byte gTasks _080731F4: .4byte gSprites -_080731F8: .4byte gUnknown_2022978 -_080731FC: .4byte gUnknown_202297A +_080731F8: .4byte gBattle_BG1_X +_080731FC: .4byte gBattle_BG1_Y _08073200: .4byte gPlttBufferFaded + 0x200 _08073204: .4byte 0xfffffe00 _08073208: .4byte 0x04000008 _0807320C: - ldr r1, _0807323C @ =gUnknown_202297C + ldr r1, _0807323C @ =gBattle_BG2_X lsls r0, r3, 16 asrs r0, 16 ldrh r3, [r5, 0xE] adds r0, r3 strh r0, [r1] - ldr r1, _08073240 @ =gUnknown_202297E + ldr r1, _08073240 @ =gBattle_BG2_Y lsls r0, r2, 16 asrs r0, 16 ldrh r5, [r5, 0x10] @@ -1684,8 +1684,8 @@ _08073232: pop {r0} bx r0 .align 2, 0 -_0807323C: .4byte gUnknown_202297C -_08073240: .4byte gUnknown_202297E +_0807323C: .4byte gBattle_BG2_X +_08073240: .4byte gBattle_BG2_Y _08073244: .4byte gPlttBufferFaded + 0x200 _08073248: .4byte 0x04000008 thumb_func_end task_pA_ma0A_obj_to_bg_pal diff --git a/asm/battle_anim_80A22E8.s b/asm/battle_anim_80A22E8.s index e64654d57..bf7f547f6 100644 --- a/asm/battle_anim_80A22E8.s +++ b/asm/battle_anim_80A22E8.s @@ -3962,7 +3962,7 @@ sub_80A414C: @ 80A414C strh r0, [r4, 0x3C] movs r1, 0x30 ldrsh r2, [r4, r1] - ldr r1, _080A41A0 @ =gUnknown_825E074 + ldr r1, _080A41A0 @ =gSineTable movs r5, 0x2E ldrsh r0, [r4, r5] lsls r0, 1 @@ -3995,7 +3995,7 @@ sub_80A414C: @ 80A414C ble _080A41BC b _080A41B6 .align 2, 0 -_080A41A0: .4byte gUnknown_825E074 +_080A41A0: .4byte gSineTable _080A41A4: movs r1, 0x24 ldrsh r0, [r4, r1] @@ -8720,7 +8720,7 @@ _080A6558: .align 2, 0 _080A657C: .4byte gTasks _080A6580: - ldr r4, _080A65C8 @ =gUnknown_825E074 + ldr r4, _080A65C8 @ =gSineTable movs r1, 0x2E ldrsh r0, [r5, r1] lsls r0, 1 @@ -8755,7 +8755,7 @@ _080A65C2: pop {r0} bx r0 .align 2, 0 -_080A65C8: .4byte gUnknown_825E074 +_080A65C8: .4byte gSineTable thumb_func_end sub_80A653C thumb_func_start sub_80A65CC @@ -9762,7 +9762,7 @@ _080A6D62: adds r1, 0x43 strb r0, [r1] _080A6D72: - ldr r1, _080A6D8C @ =gUnknown_825E074 + ldr r1, _080A6D8C @ =gSineTable movs r3, 0x30 ldrsh r0, [r2, r3] lsls r0, 1 @@ -9777,7 +9777,7 @@ _080A6D88: pop {r0} bx r0 .align 2, 0 -_080A6D8C: .4byte gUnknown_825E074 +_080A6D8C: .4byte gSineTable thumb_func_end sub_80A6D20 thumb_func_start sub_80A6D90 @@ -13284,7 +13284,7 @@ sub_80A8874: @ 80A8874 lsrs r0, 24 cmp r0, 0x1 bne _080A88D4 - ldr r0, _080A88CC @ =gUnknown_2022978 + ldr r0, _080A88CC @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r5, 0x14] ldr r0, _080A88D0 @ =0x04000014 @@ -13292,10 +13292,10 @@ sub_80A8874: @ 80A8874 .align 2, 0 _080A88C4: .4byte gTasks _080A88C8: .4byte gUnknown_2037F1B -_080A88CC: .4byte gUnknown_2022978 +_080A88CC: .4byte gBattle_BG1_X _080A88D0: .4byte 0x04000014 _080A88D4: - ldr r0, _080A8940 @ =gUnknown_202297C + ldr r0, _080A8940 @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r5, 0x14] ldr r0, _080A8944 @ =0x04000018 @@ -13308,7 +13308,7 @@ _080A88DC: lsls r0, 16 cmp r2, r0 bgt _080A891A - ldr r4, _080A8948 @ =gUnknown_2038700 + ldr r4, _080A8948 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r4, r0 @@ -13345,7 +13345,7 @@ _080A891A: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams ldr r0, _080A8950 @ =sub_80A8954 str r0, [r5] add sp, 0xC @@ -13353,9 +13353,9 @@ _080A891A: pop {r0} bx r0 .align 2, 0 -_080A8940: .4byte gUnknown_202297C +_080A8940: .4byte gBattle_BG2_X _080A8944: .4byte 0x04000018 -_080A8948: .4byte gUnknown_2038700 +_080A8948: .4byte gScanlineEffectRegBuffers _080A894C: .4byte 0xa2600001 _080A8950: .4byte sub_80A8954 thumb_func_end sub_80A8874 @@ -13431,7 +13431,7 @@ _080A89CC: ldrsh r0, [r3, r1] cmp r0, 0 blt _080A89F0 - ldr r2, _080A8A14 @ =gUnknown_2038700 + ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers lsls r0, 1 adds r0, r2 ldrh r1, [r3, 0x14] @@ -13455,7 +13455,7 @@ _080A89F0: ldrsh r1, [r3, r2] cmp r0, r1 blt _080A8A0E - ldr r1, _080A8A18 @ =gUnknown_2039600 + ldr r1, _080A8A18 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] adds r0, r4, 0 @@ -13465,8 +13465,8 @@ _080A8A0E: pop {r0} bx r0 .align 2, 0 -_080A8A14: .4byte gUnknown_2038700 -_080A8A18: .4byte gUnknown_2039600 +_080A8A14: .4byte gScanlineEffectRegBuffers +_080A8A18: .4byte gScanlineEffect thumb_func_end sub_80A8954 thumb_func_start sub_80A8A1C @@ -15940,10 +15940,10 @@ sub_80A9CE8: @ 80A9CE8 movs r2, 0x1 bl SetAnimBgAttribute _080A9D2A: - ldr r0, _080A9DA4 @ =gUnknown_2022978 + ldr r0, _080A9DA4 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, _080A9DA8 @ =gUnknown_202297A + ldr r4, _080A9DA8 @ =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -15993,8 +15993,8 @@ _080A9D88: bx r0 .align 2, 0 _080A9DA0: .4byte 0x00003f42 -_080A9DA4: .4byte gUnknown_2022978 -_080A9DA8: .4byte gUnknown_202297A +_080A9DA4: .4byte gBattle_BG1_X +_080A9DA8: .4byte gBattle_BG1_Y _080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap _080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet _080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette @@ -16197,10 +16197,10 @@ sub_80A9F10: @ 80A9F10 movs r2, 0x1 bl SetAnimBgAttribute _080A9F52: - ldr r0, _080A9F8C @ =gUnknown_2022978 + ldr r0, _080A9F8C @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, _080A9F90 @ =gUnknown_202297A + ldr r4, _080A9F90 @ =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -16220,8 +16220,8 @@ _080A9F52: b _080A9FC6 .align 2, 0 _080A9F88: .4byte 0x00003f42 -_080A9F8C: .4byte gUnknown_2022978 -_080A9F90: .4byte gUnknown_202297A +_080A9F8C: .4byte gBattle_BG1_X +_080A9F90: .4byte gBattle_BG1_Y _080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap _080A9F98: ldr r0, _080A9FB4 @ =gUnknown_2037F1B @@ -18959,11 +18959,11 @@ _080AB476: beq _080AB4F8 ldr r1, _080AB4EC @ =0x0000ffb0 adds r0, r1, 0 - ldr r2, _080AB4F0 @ =gUnknown_2022978 + ldr r2, _080AB4F0 @ =gBattle_BG1_X strh r0, [r2] adds r1, 0x20 adds r0, r1, 0 - ldr r2, _080AB4F4 @ =gUnknown_202297A + ldr r2, _080AB4F4 @ =gBattle_BG1_Y strh r0, [r2] movs r0, 0x2 strh r0, [r6, 0x8] @@ -18977,8 +18977,8 @@ _080AB4E0: .4byte gFile_graphics_battle_anims_backgrounds_water_muddy_palette _080AB4E4: .4byte sub_80AB79C _080AB4E8: .4byte gTasks _080AB4EC: .4byte 0x0000ffb0 -_080AB4F0: .4byte gUnknown_2022978 -_080AB4F4: .4byte gUnknown_202297A +_080AB4F0: .4byte gBattle_BG1_X +_080AB4F4: .4byte gBattle_BG1_Y _080AB4F8: ldr r0, _080AB528 @ =gUnknown_2037F1A ldrb r0, [r0] @@ -18989,12 +18989,12 @@ _080AB4F8: bne _080AB53C ldr r2, _080AB52C @ =0x0000ff20 adds r0, r2, 0 - ldr r2, _080AB530 @ =gUnknown_2022978 + ldr r2, _080AB530 @ =gBattle_BG1_X strh r0, [r2] movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 - ldr r2, _080AB534 @ =gUnknown_202297A + ldr r2, _080AB534 @ =gBattle_BG1_Y strh r0, [r2] movs r0, 0x2 strh r0, [r6, 0x8] @@ -19005,15 +19005,15 @@ _080AB4F8: .align 2, 0 _080AB528: .4byte gUnknown_2037F1A _080AB52C: .4byte 0x0000ff20 -_080AB530: .4byte gUnknown_2022978 -_080AB534: .4byte gUnknown_202297A +_080AB530: .4byte gBattle_BG1_X +_080AB534: .4byte gBattle_BG1_Y _080AB538: .4byte 0x0000ffff _080AB53C: - ldr r0, _080AB584 @ =gUnknown_2022978 + ldr r0, _080AB584 @ =gBattle_BG1_X strh r4, [r0] ldr r1, _080AB588 @ =0x0000ffd0 adds r0, r1, 0 - ldr r2, _080AB58C @ =gUnknown_202297A + ldr r2, _080AB58C @ =gBattle_BG1_Y strh r0, [r2] ldr r0, _080AB590 @ =0x0000fffe strh r0, [r6, 0x8] @@ -19021,11 +19021,11 @@ _080AB53C: strh r0, [r6, 0xA] strh r4, [r7, 0xE] _080AB552: - ldr r0, _080AB584 @ =gUnknown_2022978 + ldr r0, _080AB584 @ =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r2, _080AB58C @ =gUnknown_202297A + ldr r2, _080AB58C @ =gBattle_BG1_Y ldrh r1, [r2] movs r0, 0x16 bl SetGpuReg @@ -19044,9 +19044,9 @@ _080AB552: movs r0, 0x70 b _080AB59C .align 2, 0 -_080AB584: .4byte gUnknown_2022978 +_080AB584: .4byte gBattle_BG1_X _080AB588: .4byte 0x0000ffd0 -_080AB58C: .4byte gUnknown_202297A +_080AB58C: .4byte gBattle_BG1_Y _080AB590: .4byte 0x0000fffe _080AB594: .4byte gTasks _080AB598: @@ -19082,8 +19082,8 @@ sub_80AB5C8: @ 80AB5C8 sub sp, 0x10 lsls r0, 24 lsrs r5, r0, 24 - ldr r1, _080AB6F4 @ =gUnknown_2022978 - ldr r2, _080AB6F8 @ =gUnknown_202297A + ldr r1, _080AB6F4 @ =gBattle_BG1_X + ldr r2, _080AB6F8 @ =gBattle_BG1_Y ldr r0, _080AB6FC @ =gTasks lsls r4, r5, 2 adds r4, r5 @@ -19233,8 +19233,8 @@ _080AB6EC: pop {r0} bx r0 .align 2, 0 -_080AB6F4: .4byte gUnknown_2022978 -_080AB6F8: .4byte gUnknown_202297A +_080AB6F4: .4byte gBattle_BG1_X +_080AB6F8: .4byte gBattle_BG1_Y _080AB6FC: .4byte gTasks _080AB700: .4byte gPlttBufferFaded _080AB704: .4byte sub_80AB708 @@ -19248,8 +19248,8 @@ sub_80AB708: @ 80AB708 lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 - ldr r7, _080AB740 @ =gUnknown_2022978 - ldr r0, _080AB744 @ =gUnknown_202297A + ldr r7, _080AB740 @ =gBattle_BG1_X + ldr r0, _080AB744 @ =gBattle_BG1_Y mov r8, r0 ldr r6, _080AB748 @ =gTasks lsls r0, r5, 2 @@ -19269,8 +19269,8 @@ sub_80AB708: @ 80AB708 strh r0, [r4, 0x8] b _080AB78E .align 2, 0 -_080AB740: .4byte gUnknown_2022978 -_080AB744: .4byte gUnknown_202297A +_080AB740: .4byte gBattle_BG1_X +_080AB744: .4byte gBattle_BG1_Y _080AB748: .4byte gTasks _080AB74C: bl sub_8073788 @@ -19346,7 +19346,7 @@ _080AB7D0: movs r3, 0 movs r2, 0x10 ldrsh r0, [r4, r2] - ldr r1, _080AB8A0 @ =gUnknown_2038700 + ldr r1, _080AB8A0 @ =gScanlineEffectRegBuffers mov r12, r1 cmp r3, r0 bge _080AB80E @@ -19383,7 +19383,7 @@ _080AB80E: ldrsh r0, [r4, r3] cmp r1, r0 bge _080AB848 - ldr r5, _080AB8A0 @ =gUnknown_2038700 + ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -19412,7 +19412,7 @@ _080AB848: asrs r0, r2, 16 cmp r0, 0x9F bgt _080AB87E - ldr r5, _080AB8A0 @ =gUnknown_2038700 + ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -19453,7 +19453,7 @@ _080AB87E: ldrh r0, [r4, 0xA] b _080AB8BE .align 2, 0 -_080AB8A0: .4byte gUnknown_2038700 +_080AB8A0: .4byte gScanlineEffectRegBuffers _080AB8A4: .4byte 0x0000ffff _080AB8A8: lsls r0, r3, 16 @@ -19482,7 +19482,7 @@ _080AB8BE: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -19521,8 +19521,8 @@ _080AB91C: ldrsh r0, [r4, r1] cmp r3, r0 bge _080AB950 - ldr r6, _080AB9B4 @ =gUnknown_2038700 - ldr r5, _080AB9B8 @ =gUnknown_2039600 + ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers + ldr r5, _080AB9B8 @ =gScanlineEffect _080AB92A: lsls r1, r3, 16 asrs r1, 16 @@ -19551,8 +19551,8 @@ _080AB950: ldrsh r0, [r4, r3] cmp r1, r0 bge _080AB984 - ldr r6, _080AB9B4 @ =gUnknown_2038700 - ldr r5, _080AB9B8 @ =gUnknown_2039600 + ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers + ldr r5, _080AB9B8 @ =gScanlineEffect _080AB962: asrs r3, r2, 16 lsls r2, r3, 1 @@ -19577,8 +19577,8 @@ _080AB984: asrs r0, r1, 16 cmp r0, 0x9F bgt _080ABA66 - ldr r6, _080AB9B4 @ =gUnknown_2038700 - ldr r5, _080AB9B8 @ =gUnknown_2039600 + ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers + ldr r5, _080AB9B8 @ =gScanlineEffect _080AB992: asrs r3, r1, 16 lsls r2, r3, 1 @@ -19597,16 +19597,16 @@ _080AB992: ble _080AB992 b _080ABA66 .align 2, 0 -_080AB9B4: .4byte gUnknown_2038700 -_080AB9B8: .4byte gUnknown_2039600 +_080AB9B4: .4byte gScanlineEffectRegBuffers +_080AB9B8: .4byte gScanlineEffect _080AB9BC: movs r3, 0 movs r1, 0x10 ldrsh r0, [r4, r1] cmp r3, r0 bge _080AB9F0 - ldr r6, _080ABA70 @ =gUnknown_2038700 - ldr r5, _080ABA74 @ =gUnknown_2039600 + ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers + ldr r5, _080ABA74 @ =gScanlineEffect _080AB9CA: lsls r1, r3, 16 asrs r1, 16 @@ -19635,8 +19635,8 @@ _080AB9F0: ldrsh r0, [r4, r3] cmp r1, r0 bge _080ABA24 - ldr r6, _080ABA70 @ =gUnknown_2038700 - ldr r5, _080ABA74 @ =gUnknown_2039600 + ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers + ldr r5, _080ABA74 @ =gScanlineEffect _080ABA02: asrs r3, r2, 16 lsls r2, r3, 1 @@ -19661,8 +19661,8 @@ _080ABA24: asrs r0, r1, 16 cmp r0, 0x9F bgt _080ABA50 - ldr r6, _080ABA70 @ =gUnknown_2038700 - ldr r5, _080ABA74 @ =gUnknown_2039600 + ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers + ldr r5, _080ABA74 @ =gScanlineEffect _080ABA32: asrs r3, r1, 16 lsls r2, r3, 1 @@ -19686,7 +19686,7 @@ _080ABA50: negs r0, r0 cmp r1, r0 bne _080ABA66 - bl remove_some_task + bl ScanlineEffect_Stop adds r0, r7, 0 bl DestroyTask _080ABA66: @@ -19695,8 +19695,8 @@ _080ABA66: pop {r0} bx r0 .align 2, 0 -_080ABA70: .4byte gUnknown_2038700 -_080ABA74: .4byte gUnknown_2039600 +_080ABA70: .4byte gScanlineEffectRegBuffers +_080ABA74: .4byte gScanlineEffect thumb_func_end sub_80AB79C thumb_func_start sub_80ABA78 @@ -20603,7 +20603,7 @@ sub_80AC160: @ 80AC160 adds r4, r0, 0 lsls r1, 24 lsrs r6, r1, 24 - ldr r1, _080AC1EC @ =gUnknown_825E074 + ldr r1, _080AC1EC @ =gSineTable movs r2, 0x18 ldrsh r0, [r4, r2] lsls r0, 1 @@ -20668,7 +20668,7 @@ _080AC1BA: pop {r0} bx r0 .align 2, 0 -_080AC1EC: .4byte gUnknown_825E074 +_080AC1EC: .4byte gSineTable _080AC1F0: .4byte gUnknown_83E5AE0 _080AC1F4: .4byte gSprites _080AC1F8: .4byte sub_80AC204 @@ -24355,7 +24355,7 @@ _080ADE02: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r7, _080ADEA0 @ =gUnknown_825E074 + ldr r7, _080ADEA0 @ =gSineTable ldr r6, _080ADEA4 @ =gUnknown_2037F02 movs r1, 0 ldrsh r0, [r6, r1] @@ -24430,7 +24430,7 @@ _080ADE66: pop {r0} bx r0 .align 2, 0 -_080ADEA0: .4byte gUnknown_825E074 +_080ADEA0: .4byte gSineTable _080ADEA4: .4byte gUnknown_2037F02 _080ADEA8: .4byte gOamMatrices _080ADEAC: .4byte sub_80B1D3C @@ -28140,10 +28140,10 @@ sub_80AFAE4: @ 80AFAE4 movs r2, 0x1 bl SetAnimBgAttribute _080AFB26: - ldr r0, _080AFBA4 @ =gUnknown_2022978 + ldr r0, _080AFBA4 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, _080AFBA8 @ =gUnknown_202297A + ldr r4, _080AFBA8 @ =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -28195,8 +28195,8 @@ _080AFB88: bx r0 .align 2, 0 _080AFBA0: .4byte 0x00003f42 -_080AFBA4: .4byte gUnknown_2022978 -_080AFBA8: .4byte gUnknown_202297A +_080AFBA4: .4byte gBattle_BG1_X +_080AFBA8: .4byte gBattle_BG1_Y _080AFBAC: .4byte gUnknown_83C3540 _080AFBB0: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap _080AFBB4: .4byte gUnknown_83C2CE0 @@ -28210,7 +28210,7 @@ sub_80AFBC0: @ 80AFBC0 sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 - ldr r1, _080AFBF4 @ =gUnknown_2022978 + ldr r1, _080AFBF4 @ =gBattle_BG1_X ldr r2, _080AFBF8 @ =0x0000ffff adds r0, r2, 0 ldrh r2, [r1] @@ -28234,7 +28234,7 @@ _080AFBEA: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080AFBF4: .4byte gUnknown_2022978 +_080AFBF4: .4byte gBattle_BG1_X _080AFBF8: .4byte 0x0000ffff _080AFBFC: .4byte gTasks _080AFC00: .4byte _080AFC04 @@ -28366,10 +28366,10 @@ _080AFCF8: movs r2, 0 bl SetAnimBgAttribute _080AFD0C: - ldr r0, _080AFD44 @ =gUnknown_2022978 + ldr r0, _080AFD44 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080AFD48 @ =gUnknown_202297A + ldr r0, _080AFD48 @ =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -28390,8 +28390,8 @@ _080AFD36: bx r0 .align 2, 0 _080AFD40: .4byte gTasks -_080AFD44: .4byte gUnknown_2022978 -_080AFD48: .4byte gUnknown_202297A +_080AFD44: .4byte gBattle_BG1_X +_080AFD48: .4byte gBattle_BG1_Y thumb_func_end sub_80AFBC0 thumb_func_start sub_80AFD4C @@ -28451,10 +28451,10 @@ sub_80AFD80: @ 80AFD80 movs r2, 0x1 bl SetAnimBgAttribute _080AFDC2: - ldr r0, _080AFE44 @ =gUnknown_2022978 + ldr r0, _080AFE44 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r4, _080AFE48 @ =gUnknown_202297A + ldr r4, _080AFE48 @ =gBattle_BG1_Y strh r1, [r4] movs r0, 0x14 movs r1, 0 @@ -28508,8 +28508,8 @@ _080AFE24: bx r0 .align 2, 0 _080AFE40: .4byte 0x00003f42 -_080AFE44: .4byte gUnknown_2022978 -_080AFE48: .4byte gUnknown_202297A +_080AFE44: .4byte gBattle_BG1_X +_080AFE48: .4byte gBattle_BG1_Y _080AFE4C: .4byte gUnknown_83C3540 _080AFE50: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap _080AFE54: .4byte gUnknown_83C2CE0 @@ -28524,7 +28524,7 @@ sub_80AFE64: @ 80AFE64 sub sp, 0x10 lsls r0, 24 lsrs r4, r0, 24 - ldr r2, _080AFE94 @ =gUnknown_2022978 + ldr r2, _080AFE94 @ =gBattle_BG1_X ldr r3, _080AFE98 @ =gTasks lsls r1, r4, 2 adds r1, r4 @@ -28546,7 +28546,7 @@ _080AFE8A: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080AFE94: .4byte gUnknown_2022978 +_080AFE94: .4byte gBattle_BG1_X _080AFE98: .4byte gTasks _080AFE9C: .4byte _080AFEA0 .align 2, 0 @@ -28667,10 +28667,10 @@ _080AFF80: movs r2, 0 bl SetAnimBgAttribute _080AFF94: - ldr r0, _080AFFCC @ =gUnknown_2022978 + ldr r0, _080AFFCC @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080AFFD0 @ =gUnknown_202297A + ldr r0, _080AFFD0 @ =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -28691,8 +28691,8 @@ _080AFFBE: bx r0 .align 2, 0 _080AFFC8: .4byte gTasks -_080AFFCC: .4byte gUnknown_2022978 -_080AFFD0: .4byte gUnknown_202297A +_080AFFCC: .4byte gBattle_BG1_X +_080AFFD0: .4byte gBattle_BG1_Y thumb_func_end sub_80AFE64 thumb_func_start sub_80AFFD4 @@ -28898,7 +28898,7 @@ _080B0168: _080B016A: adds r0, r4, 0 bl sub_80755E0 - ldr r1, _080B0194 @ =gUnknown_825E074 + ldr r1, _080B0194 @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 1 @@ -28917,7 +28917,7 @@ _080B016A: subs r0, 0x8 b _080B019C .align 2, 0 -_080B0194: .4byte gUnknown_825E074 +_080B0194: .4byte gSineTable _080B0198: ldrh r0, [r4, 0x38] adds r0, 0x8 @@ -28974,7 +28974,7 @@ _080B0200: _080B0202: movs r0, 0 strh r0, [r4, 0x26] - ldr r1, _080B022C @ =gUnknown_825E074 + ldr r1, _080B022C @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 1 @@ -28992,11 +28992,11 @@ _080B0202: bl obj_translate_based_on_private_1_2_3_4 b _080B0380 .align 2, 0 -_080B022C: .4byte gUnknown_825E074 +_080B022C: .4byte gSineTable _080B0230: adds r0, r4, 0 bl sub_80755E0 - ldr r1, _080B028C @ =gUnknown_825E074 + ldr r1, _080B028C @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 1 @@ -29038,7 +29038,7 @@ _080B0230: asrs r1, 24 b _080B0298 .align 2, 0 -_080B028C: .4byte gUnknown_825E074 +_080B028C: .4byte gSineTable _080B0290: ldrh r1, [r4, 0x3C] lsls r1, 16 @@ -31514,7 +31514,7 @@ _080B158E: lsls r0, 24 cmp r0, 0 bne _080B15C4 - ldr r1, _080B15C0 @ =gUnknown_2022980 + ldr r1, _080B15C0 @ =gBattle_BG3_X ldrh r0, [r4, 0x1A] lsls r0, 16 asrs r0, 24 @@ -31525,9 +31525,9 @@ _080B158E: b _080B15D4 .align 2, 0 _080B15BC: .4byte gUnknown_2037F1B -_080B15C0: .4byte gUnknown_2022980 +_080B15C0: .4byte gBattle_BG3_X _080B15C4: - ldr r2, _080B1614 @ =gUnknown_2022980 + ldr r2, _080B1614 @ =gBattle_BG3_X ldrh r1, [r4, 0x1A] lsls r1, 16 asrs r1, 24 @@ -31536,7 +31536,7 @@ _080B15C4: strh r0, [r2] adds r7, r2, 0 _080B15D4: - ldr r3, _080B1618 @ =gUnknown_2022982 + ldr r3, _080B1618 @ =gBattle_BG3_Y ldrh r2, [r4, 0x1C] lsls r0, r2, 16 asrs r0, 24 @@ -31567,8 +31567,8 @@ _080B160C: pop {r0} bx r0 .align 2, 0 -_080B1614: .4byte gUnknown_2022980 -_080B1618: .4byte gUnknown_2022982 +_080B1614: .4byte gBattle_BG3_X +_080B1618: .4byte gBattle_BG3_Y _080B161C: .4byte gUnknown_2037F02 thumb_func_end sub_80B1530 @@ -32731,7 +32731,7 @@ _080B1F1E: ands r0, r2 orrs r0, r1 strb r0, [r5] - ldr r3, _080B1F88 @ =gUnknown_825E074 + ldr r3, _080B1F88 @ =gSineTable ldrh r0, [r5, 0x2] lsls r0, 1 adds r0, r3 @@ -32777,7 +32777,7 @@ _080B1F1E: pop {r0} bx r0 .align 2, 0 -_080B1F88: .4byte gUnknown_825E074 +_080B1F88: .4byte gSineTable _080B1F8C: .4byte gOamMatrices _080B1F90: .4byte sub_80B1F94 thumb_func_end sub_80B1D88 @@ -33395,7 +33395,7 @@ _080B23F0: adds r0, 0xC adds r0, r1 ldrb r1, [r0] - ldr r3, _080B2478 @ =gUnknown_825E074 + ldr r3, _080B2478 @ =gSineTable mov r2, r12 lsls r0, r2, 1 adds r0, r3 @@ -33456,7 +33456,7 @@ _080B23F0: strh r0, [r4, 0x2] b _080B2490 .align 2, 0 -_080B2478: .4byte gUnknown_825E074 +_080B2478: .4byte gSineTable _080B247C: .4byte gOamMatrices _080B2480: ldrh r0, [r4, 0x4] @@ -33629,7 +33629,7 @@ _080B25C4: adds r0, r5 strh r0, [r4, 0x3C] _080B25D8: - ldr r5, _080B2680 @ =gUnknown_825E074 + ldr r5, _080B2680 @ =gSineTable ldrh r3, [r4, 0x30] movs r1, 0xFF ands r1, r3 @@ -33714,7 +33714,7 @@ _080B2672: bx r0 .align 2, 0 _080B267C: .4byte gUnknown_2037F1B -_080B2680: .4byte gUnknown_825E074 +_080B2680: .4byte gSineTable _080B2684: .4byte gOamMatrices _080B2688: .4byte sub_80B268C thumb_func_end sub_80B2514 @@ -36385,17 +36385,17 @@ _080B3AD6: lsrs r0, 24 cmp r0, 0x1 bne _080B3AFC - ldr r0, _080B3AF4 @ =gUnknown_2022978 + ldr r0, _080B3AF4 @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r4, 0x1C] ldr r0, _080B3AF8 @ =0x04000014 b _080B3B04 .align 2, 0 _080B3AF0: .4byte gUnknown_2037F1B -_080B3AF4: .4byte gUnknown_2022978 +_080B3AF4: .4byte gBattle_BG1_X _080B3AF8: .4byte 0x04000014 _080B3AFC: - ldr r0, _080B3B64 @ =gUnknown_202297C + ldr r0, _080B3B64 @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r4, 0x1C] ldr r0, _080B3B68 @ =0x04000018 @@ -36409,7 +36409,7 @@ _080B3B04: adds r0, 0x40 cmp r1, r0 bgt _080B3B3E - ldr r5, _080B3B6C @ =gUnknown_2038700 + ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -36442,7 +36442,7 @@ _080B3B3E: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams ldr r0, _080B3B74 @ =sub_80B3B78 str r0, [r4] add sp, 0xC @@ -36450,9 +36450,9 @@ _080B3B3E: pop {r0} bx r0 .align 2, 0 -_080B3B64: .4byte gUnknown_202297C +_080B3B64: .4byte gBattle_BG2_X _080B3B68: .4byte 0x04000018 -_080B3B6C: .4byte gUnknown_2038700 +_080B3B6C: .4byte gScanlineEffectRegBuffers _080B3B70: .4byte 0xa2600001 _080B3B74: .4byte sub_80B3B78 thumb_func_end sub_80B3A58 @@ -36494,10 +36494,10 @@ _080B3BAA: ldrsh r0, [r5, r2] cmp r1, r0 bgt _080B3C42 - ldr r0, _080B3BF4 @ =gUnknown_825E074 + ldr r0, _080B3BF4 @ =gSineTable mov r9, r0 movs r7, 0x3 - ldr r1, _080B3BF8 @ =gUnknown_2038700 + ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers mov r12, r1 movs r2, 0xF0 lsls r2, 3 @@ -36524,8 +36524,8 @@ _080B3BCC: adds r0, r3, r0 b _080B3C08 .align 2, 0 -_080B3BF4: .4byte gUnknown_825E074 -_080B3BF8: .4byte gUnknown_2038700 +_080B3BF4: .4byte gSineTable +_080B3BF8: .4byte gScanlineEffectRegBuffers _080B3BFC: cmp r3, 0 bge _080B3C0C @@ -36574,7 +36574,7 @@ _080B3C42: ble _080B3C6A b _080B3C58 _080B3C52: - ldr r1, _080B3C60 @ =gUnknown_2039600 + ldr r1, _080B3C60 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080B3C58: @@ -36583,7 +36583,7 @@ _080B3C58: strh r0, [r5, 0x8] b _080B3C6A .align 2, 0 -_080B3C60: .4byte gUnknown_2039600 +_080B3C60: .4byte gScanlineEffect _080B3C64: adds r0, r2, 0 bl DestroyAnimVisualTask @@ -36749,7 +36749,7 @@ _080B3DAA: ldrh r0, [r4, 0xA] adds r0, 0x4 strh r0, [r4, 0xA] - ldr r1, _080B3DF8 @ =gUnknown_825E074 + ldr r1, _080B3DF8 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 @@ -36783,12 +36783,12 @@ _080B3DAA: bne _080B3E7C b _080B3E5E .align 2, 0 -_080B3DF8: .4byte gUnknown_825E074 +_080B3DF8: .4byte gSineTable _080B3DFC: ldrh r0, [r4, 0xA] subs r0, 0x4 strh r0, [r4, 0xA] - ldr r1, _080B3E48 @ =gUnknown_825E074 + ldr r1, _080B3E48 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 @@ -36822,7 +36822,7 @@ _080B3DFC: bne _080B3E7C b _080B3E5E .align 2, 0 -_080B3E48: .4byte gUnknown_825E074 +_080B3E48: .4byte gSineTable _080B3E4C: movs r0, 0x26 ldrsh r1, [r4, r0] @@ -38086,9 +38086,9 @@ do_boulder_dust: @ 80B4810 movs r2, 0x1 bl SetAnimBgAttribute _080B4854: - ldr r0, _080B48E8 @ =gUnknown_2022978 + ldr r0, _080B48E8 @ =gBattle_BG1_X strh r5, [r0] - ldr r4, _080B48EC @ =gUnknown_202297A + ldr r4, _080B48EC @ =gBattle_BG1_Y strh r5, [r4] movs r0, 0x14 movs r1, 0 @@ -38152,8 +38152,8 @@ _080B48CA: bx r0 .align 2, 0 _080B48E4: .4byte 0x00003f42 -_080B48E8: .4byte gUnknown_2022978 -_080B48EC: .4byte gUnknown_202297A +_080B48E8: .4byte gBattle_BG1_X +_080B48EC: .4byte gBattle_BG1_Y _080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap _080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet _080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette @@ -38179,7 +38179,7 @@ sub_80B490C: @ 80B490C adds r2, r1, 0 cmp r0, 0 bne _080B4940 - ldr r1, _080B4938 @ =gUnknown_2022978 + ldr r1, _080B4938 @ =gBattle_BG1_X ldr r3, _080B493C @ =0x0000fffa adds r0, r3, 0 ldrh r3, [r1] @@ -38187,15 +38187,15 @@ sub_80B490C: @ 80B490C b _080B4946 .align 2, 0 _080B4934: .4byte gTasks -_080B4938: .4byte gUnknown_2022978 +_080B4938: .4byte gBattle_BG1_X _080B493C: .4byte 0x0000fffa _080B4940: - ldr r1, _080B4974 @ =gUnknown_2022978 + ldr r1, _080B4974 @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 _080B4946: strh r0, [r1] - ldr r1, _080B4978 @ =gUnknown_202297A + ldr r1, _080B4978 @ =gBattle_BG1_Y ldr r3, _080B497C @ =0x0000ffff adds r0, r3, 0 ldrh r3, [r1] @@ -38218,8 +38218,8 @@ _080B4968: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080B4974: .4byte gUnknown_2022978 -_080B4978: .4byte gUnknown_202297A +_080B4974: .4byte gBattle_BG1_X +_080B4978: .4byte gBattle_BG1_Y _080B497C: .4byte 0x0000ffff _080B4980: .4byte _080B4984 .align 2, 0 @@ -38336,10 +38336,10 @@ _080B4A58: movs r2, 0 bl SetAnimBgAttribute _080B4A6C: - ldr r0, _080B4AA0 @ =gUnknown_2022978 + ldr r0, _080B4AA0 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080B4AA4 @ =gUnknown_202297A + ldr r0, _080B4AA4 @ =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -38359,8 +38359,8 @@ _080B4A96: pop {r0} bx r0 .align 2, 0 -_080B4AA0: .4byte gUnknown_2022978 -_080B4AA4: .4byte gUnknown_202297A +_080B4AA0: .4byte gBattle_BG1_X +_080B4AA4: .4byte gBattle_BG1_Y thumb_func_end sub_80B490C thumb_func_start sub_80B4AA8 @@ -39279,7 +39279,7 @@ sub_80B5188: @ 80B5188 movs r0, 0xC8 strh r0, [r5, 0xA] _080B51AA: - ldr r4, _080B51E8 @ =gUnknown_2022982 + ldr r4, _080B51E8 @ =gBattle_BG3_Y movs r1, 0xA ldrsh r0, [r5, r1] movs r1, 0xA @@ -39307,7 +39307,7 @@ _080B51D6: bx r0 .align 2, 0 _080B51E4: .4byte gTasks -_080B51E8: .4byte gUnknown_2022982 +_080B51E8: .4byte gBattle_BG3_Y thumb_func_end sub_80B5188 thumb_func_start sub_80B51EC @@ -39330,7 +39330,7 @@ sub_80B51EC: @ 80B51EC ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] - ldr r0, _080B525C @ =gUnknown_2022982 + ldr r0, _080B525C @ =gBattle_BG3_Y ldrh r0, [r0] strh r0, [r4, 0xC] _080B5218: @@ -39339,7 +39339,7 @@ _080B5218: movs r1, 0xFF ands r0, r1 strh r0, [r4, 0xA] - ldr r6, _080B525C @ =gUnknown_2022982 + ldr r6, _080B525C @ =gBattle_BG3_Y movs r2, 0xA ldrsh r1, [r4, r2] movs r0, 0x4 @@ -39365,7 +39365,7 @@ _080B5250: bx r0 .align 2, 0 _080B5258: .4byte gTasks -_080B525C: .4byte gUnknown_2022982 +_080B525C: .4byte gBattle_BG3_Y _080B5260: .4byte gUnknown_2037F02 _080B5264: .4byte 0x00000fff thumb_func_end sub_80B51EC @@ -40713,7 +40713,7 @@ _080B5CB0: _080B5CC8: movs r2, 0x2 movs r3, 0x6 - bl sub_8088230 + bl ScanlineEffect_InitWave lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x1C] @@ -40789,7 +40789,7 @@ sub_80B5D38: @ 80B5D38 strh r0, [r4, 0x12] cmp r0, 0 bne _080B5D70 - ldr r1, _080B5DC4 @ =gUnknown_825E074 + ldr r1, _080B5DC4 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 @@ -40804,7 +40804,7 @@ _080B5D70: ldrsh r0, [r4, r2] cmp r0, 0x1 bne _080B5D92 - ldr r1, _080B5DC4 @ =gUnknown_825E074 + ldr r1, _080B5DC4 @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 @@ -40841,7 +40841,7 @@ _080B5DBA: bx r0 .align 2, 0 _080B5DC0: .4byte gTasks -_080B5DC4: .4byte gUnknown_825E074 +_080B5DC4: .4byte gSineTable _080B5DC8: .4byte sub_80B5DCC thumb_func_end sub_80B5D38 @@ -40877,7 +40877,7 @@ _080B5E04: beq _080B5E4C b _080B5EB4 _080B5E0A: - ldr r1, _080B5E28 @ =gUnknown_2039600 + ldr r1, _080B5E28 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0x1 @@ -40891,7 +40891,7 @@ _080B5E0A: lsls r1, 2 b _080B5E30 .align 2, 0 -_080B5E28: .4byte gUnknown_2039600 +_080B5E28: .4byte gScanlineEffect _080B5E2C: movs r1, 0x80 lsls r1, 3 @@ -42784,10 +42784,10 @@ _080B6D28: movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - ldr r0, _080B6D7C @ =gUnknown_202297C + ldr r0, _080B6D7C @ =gBattle_BG2_X movs r1, 0 strh r1, [r0] - ldr r4, _080B6D80 @ =gUnknown_202297E + ldr r4, _080B6D80 @ =gBattle_BG2_Y strh r1, [r4] movs r0, 0x18 movs r1, 0 @@ -42812,8 +42812,8 @@ _080B6D28: bl LoadCompressedPalette b _080B6F1E .align 2, 0 -_080B6D7C: .4byte gUnknown_202297C -_080B6D80: .4byte gUnknown_202297E +_080B6D7C: .4byte gBattle_BG2_X +_080B6D80: .4byte gBattle_BG2_Y _080B6D84: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet _080B6D88: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette _080B6D8C: @@ -42979,7 +42979,7 @@ _080B6EC4: movs r2, 0x4 _080B6EDE: movs r3, 0x8 - bl sub_8088230 + bl ScanlineEffect_InitWave lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x1C] @@ -43041,7 +43041,7 @@ sub_80B6F30: @ 80B6F30 strh r0, [r4, 0x18] cmp r0, 0 bne _080B6F68 - ldr r1, _080B6FBC @ =gUnknown_825E074 + ldr r1, _080B6FBC @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 @@ -43056,7 +43056,7 @@ _080B6F68: ldrsh r0, [r4, r2] cmp r0, 0x1 bne _080B6F8A - ldr r1, _080B6FBC @ =gUnknown_825E074 + ldr r1, _080B6FBC @ =gSineTable movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 1 @@ -43093,7 +43093,7 @@ _080B6FB2: bx r0 .align 2, 0 _080B6FB8: .4byte gTasks -_080B6FBC: .4byte gUnknown_825E074 +_080B6FBC: .4byte gSineTable _080B6FC0: .4byte sub_80B6FC4 thumb_func_end sub_80B6F30 @@ -43130,7 +43130,7 @@ _080B6FF0: .4byte _080B709C .4byte _080B70E8 _080B7008: - ldr r1, _080B701C @ =gUnknown_2039600 + ldr r1, _080B701C @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] ldrh r0, [r6, 0x16] @@ -43140,7 +43140,7 @@ _080B7008: bl BlendPalette b _080B7148 .align 2, 0 -_080B701C: .4byte gUnknown_2039600 +_080B701C: .4byte gScanlineEffect _080B7020: .4byte 0x000066e0 _080B7024: ldr r1, _080B7040 @ =0x00003f44 @@ -43879,17 +43879,17 @@ sub_80B75E0: @ 80B75E0 bne _080B761C ldr r0, _080B7614 @ =0x04000014 str r0, [sp] - ldr r0, _080B7618 @ =gUnknown_2022978 + ldr r0, _080B7618 @ =gBattle_BG1_X b _080B7622 .align 2, 0 _080B760C: .4byte gTasks _080B7610: .4byte gUnknown_2037F1A _080B7614: .4byte 0x04000014 -_080B7618: .4byte gUnknown_2022978 +_080B7618: .4byte gBattle_BG1_X _080B761C: ldr r0, _080B7698 @ =0x04000018 str r0, [sp] - ldr r0, _080B769C @ =gUnknown_202297C + ldr r0, _080B769C @ =gBattle_BG2_X _080B7622: ldrh r0, [r0] strh r0, [r4, 0xC] @@ -43920,7 +43920,7 @@ _080B7652: ldrsh r0, [r4, r1] cmp r3, r0 bgt _080B7680 - ldr r5, _080B76A8 @ =gUnknown_2038700 + ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -43943,7 +43943,7 @@ _080B7680: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams ldr r0, _080B76AC @ =sub_80B76B0 str r0, [r4] add sp, 0xC @@ -43952,10 +43952,10 @@ _080B7680: bx r0 .align 2, 0 _080B7698: .4byte 0x04000018 -_080B769C: .4byte gUnknown_202297C +_080B769C: .4byte gBattle_BG2_X _080B76A0: .4byte 0xa2600001 _080B76A4: .4byte gUnknown_2037F1A -_080B76A8: .4byte gUnknown_2038700 +_080B76A8: .4byte gScanlineEffectRegBuffers _080B76AC: .4byte sub_80B76B0 thumb_func_end sub_80B75E0 @@ -44040,7 +44040,7 @@ _080B7746: bl sub_80B776C b _080B7766 _080B774E: - ldr r1, _080B775C @ =gUnknown_2039600 + ldr r1, _080B775C @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] ldrh r0, [r2, 0x8] @@ -44048,7 +44048,7 @@ _080B774E: strh r0, [r2, 0x8] b _080B7766 .align 2, 0 -_080B775C: .4byte gUnknown_2039600 +_080B775C: .4byte gScanlineEffect _080B7760: adds r0, r3, 0 bl DestroyAnimVisualTask @@ -44069,11 +44069,11 @@ sub_80B776C: @ 80B776C ldrsh r0, [r5, r1] cmp r4, r0 bgt _080B77C2 - ldr r7, _080B77D8 @ =gUnknown_2038700 + ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers mov r12, r7 - ldr r0, _080B77DC @ =gUnknown_825E074 + ldr r0, _080B77DC @ =gSineTable mov r8, r0 - ldr r6, _080B77E0 @ =gUnknown_2039600 + ldr r6, _080B77E0 @ =gScanlineEffect _080B778A: lsls r2, r4, 1 ldrb r1, [r6, 0x14] @@ -44115,9 +44115,9 @@ _080B77C2: pop {r0} bx r0 .align 2, 0 -_080B77D8: .4byte gUnknown_2038700 -_080B77DC: .4byte gUnknown_825E074 -_080B77E0: .4byte gUnknown_2039600 +_080B77D8: .4byte gScanlineEffectRegBuffers +_080B77DC: .4byte gSineTable +_080B77E0: .4byte gScanlineEffect thumb_func_end sub_80B776C thumb_func_start sub_80B77E4 @@ -44926,7 +44926,7 @@ _080B7E16: add r4, sp, 0xC adds r0, r4, 0 bl sub_80752A0 - ldr r0, _080B7E68 @ =gUnknown_202297A + ldr r0, _080B7E68 @ =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r5, 0x1C] ldr r1, _080B7E6C @ =0x00003f42 @@ -44944,17 +44944,17 @@ _080B7E16: lsls r0, 24 cmp r0, 0 bne _080B7EA8 - ldr r1, _080B7E74 @ =gUnknown_202297C + ldr r1, _080B7E74 @ =gBattle_BG2_X b _080B7EA2 .align 2, 0 _080B7E60: .4byte 0x0000ffc0 _080B7E64: .4byte gUnknown_2037F1A -_080B7E68: .4byte gUnknown_202297A +_080B7E68: .4byte gBattle_BG1_Y _080B7E6C: .4byte 0x00003f42 _080B7E70: .4byte 0x04000016 -_080B7E74: .4byte gUnknown_202297C +_080B7E74: .4byte gBattle_BG2_X _080B7E78: - ldr r0, _080B7F30 @ =gUnknown_202297E + ldr r0, _080B7F30 @ =gBattle_BG2_Y ldrh r0, [r0] strh r0, [r5, 0x1C] ldr r1, _080B7F34 @ =0x00003f44 @@ -44971,7 +44971,7 @@ _080B7E78: lsls r0, 24 cmp r0, 0 bne _080B7EA8 - ldr r1, _080B7F3C @ =gUnknown_2022978 + ldr r1, _080B7F3C @ =gBattle_BG1_X _080B7EA2: ldrh r0, [r1] adds r0, 0xF0 @@ -44994,7 +44994,7 @@ _080B7EA8: movs r0, 0x3 bl sub_80B856C movs r3, 0 - ldr r4, _080B7F44 @ =gUnknown_2038700 + ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r4, r0 @@ -45014,7 +45014,7 @@ _080B7ED4: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams movs r0, 0x3F eors r7, r0 movs r1, 0xFC @@ -45043,12 +45043,12 @@ _080B7ED4: pop {r0} bx r0 .align 2, 0 -_080B7F30: .4byte gUnknown_202297E +_080B7F30: .4byte gBattle_BG2_Y _080B7F34: .4byte 0x00003f44 _080B7F38: .4byte 0x0400001a -_080B7F3C: .4byte gUnknown_2022978 +_080B7F3C: .4byte gBattle_BG1_X _080B7F40: .4byte 0xa2600001 -_080B7F44: .4byte gUnknown_2038700 +_080B7F44: .4byte gScanlineEffectRegBuffers _080B7F48: .4byte 0x00003f3f _080B7F4C: .4byte gUnknown_2022984 _080B7F50: .4byte gUnknown_2022986 @@ -45182,7 +45182,7 @@ _080B8036: .align 2, 0 _080B804C: .4byte gUnknown_2022984 _080B8050: - ldr r1, _080B8060 @ =gUnknown_2039600 + ldr r1, _080B8060 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080B8056: @@ -45191,7 +45191,7 @@ _080B8056: strh r0, [r4, 0x8] b _080B806A .align 2, 0 -_080B8060: .4byte gUnknown_2039600 +_080B8060: .4byte gScanlineEffect _080B8064: adds r0, r2, 0 bl DestroyAnimVisualTask @@ -45270,17 +45270,17 @@ _080B80F0: ldr r1, _080B8114 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg - ldr r1, _080B8118 @ =gUnknown_202297C + ldr r1, _080B8118 @ =gBattle_BG2_X b _080B8126 .align 2, 0 _080B8110: .4byte gUnknown_2037F1B _080B8114: .4byte 0x00003f42 -_080B8118: .4byte gUnknown_202297C +_080B8118: .4byte gBattle_BG2_X _080B811C: ldr r1, _080B8130 @ =0x00003f44 movs r0, 0x50 bl SetGpuReg - ldr r1, _080B8134 @ =gUnknown_2022978 + ldr r1, _080B8134 @ =gBattle_BG1_X _080B8126: ldrh r0, [r1] adds r0, 0xF0 @@ -45288,7 +45288,7 @@ _080B8126: b _080B823C .align 2, 0 _080B8130: .4byte 0x00003f44 -_080B8134: .4byte gUnknown_2022978 +_080B8134: .4byte gBattle_BG1_X _080B8138: movs r1, 0xE ldrsh r0, [r5, r1] @@ -45296,7 +45296,7 @@ _080B8138: bne _080B8160 mov r0, sp bl sub_80752A0 - ldr r0, _080B815C @ =gUnknown_202297A + ldr r0, _080B815C @ =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r5, 0x1C] mov r0, sp @@ -45307,9 +45307,9 @@ _080B8138: bl FillPalette b _080B8170 .align 2, 0 -_080B815C: .4byte gUnknown_202297A +_080B815C: .4byte gBattle_BG1_Y _080B8160: - ldr r0, _080B8178 @ =gUnknown_202297E + ldr r0, _080B8178 @ =gBattle_BG2_Y ldrh r0, [r0] strh r0, [r5, 0x1C] movs r0, 0 @@ -45321,7 +45321,7 @@ _080B8170: bl sub_80B856C b _080B823C .align 2, 0 -_080B8178: .4byte gUnknown_202297E +_080B8178: .4byte gBattle_BG2_Y _080B817C: ldr r4, _080B81C8 @ =gUnknown_2037F1B ldrb r0, [r4] @@ -45389,7 +45389,7 @@ _080B81FA: str r0, [sp, 0x10] movs r3, 0 add r4, sp, 0x10 - ldr r6, _080B8248 @ =gUnknown_2038700 + ldr r6, _080B8248 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r7, r6, r0 @@ -45418,7 +45418,7 @@ _080B8208: strb r2, [r4, 0x9] ldr r0, [sp, 0x10] ldr r2, [r4, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams _080B823C: ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -45426,7 +45426,7 @@ _080B823C: b _080B829E .align 2, 0 _080B8244: .4byte 0x0400001a -_080B8248: .4byte gUnknown_2038700 +_080B8248: .4byte gScanlineEffectRegBuffers _080B824C: .4byte 0xa2600001 _080B8250: movs r1, 0xE @@ -45640,7 +45640,7 @@ _080B83D2: bne _080B842A b _080B83FC _080B83F6: - ldr r1, _080B8404 @ =gUnknown_2039600 + ldr r1, _080B8404 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080B83FC: @@ -45649,7 +45649,7 @@ _080B83FC: strh r0, [r4, 0x8] b _080B842A .align 2, 0 -_080B8404: .4byte gUnknown_2039600 +_080B8404: .4byte gScanlineEffect _080B8408: ldr r0, _080B8430 @ =gUnknown_2022984 movs r1, 0 @@ -45699,9 +45699,9 @@ sub_80B843C: @ 80B843C movs r4, 0 cmp r0, 0 ble _080B849C - ldr r0, _080B8528 @ =gUnknown_2038700 + ldr r0, _080B8528 @ =gScanlineEffectRegBuffers mov r12, r0 - ldr r7, _080B852C @ =gUnknown_2039600 + ldr r7, _080B852C @ =gScanlineEffect _080B8470: lsls r2, r4, 16 asrs r2, 16 @@ -45733,9 +45733,9 @@ _080B849C: ldrsh r0, [r6, r2] cmp r1, r0 bgt _080B84E6 - ldr r0, _080B8528 @ =gUnknown_2038700 + ldr r0, _080B8528 @ =gScanlineEffectRegBuffers mov r12, r0 - ldr r7, _080B852C @ =gUnknown_2039600 + ldr r7, _080B852C @ =gScanlineEffect _080B84B0: asrs r4, r3, 16 cmp r4, 0 @@ -45776,8 +45776,8 @@ _080B84E6: ldrsh r0, [r6, r3] cmp r1, r0 bge _080B855E - ldr r7, _080B8528 @ =gUnknown_2038700 - ldr r4, _080B852C @ =gUnknown_2039600 + ldr r7, _080B8528 @ =gScanlineEffectRegBuffers + ldr r4, _080B852C @ =gScanlineEffect _080B84FE: asrs r3, r2, 16 cmp r3, 0 @@ -45801,15 +45801,15 @@ _080B8516: blt _080B84FE b _080B855E .align 2, 0 -_080B8528: .4byte gUnknown_2038700 -_080B852C: .4byte gUnknown_2039600 +_080B8528: .4byte gScanlineEffectRegBuffers +_080B852C: .4byte gScanlineEffect _080B8530: movs r1, 0x1C ldrsh r0, [r6, r1] adds r5, r0, 0 adds r5, 0x9F movs r4, 0 - ldr r3, _080B8568 @ =gUnknown_2038700 + ldr r3, _080B8568 @ =gScanlineEffectRegBuffers movs r2, 0xF0 lsls r2, 3 adds r6, r3, r2 @@ -45835,7 +45835,7 @@ _080B855E: pop {r0} bx r0 .align 2, 0 -_080B8568: .4byte gUnknown_2038700 +_080B8568: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80B843C thumb_func_start sub_80B856C @@ -46204,7 +46204,7 @@ _080B8828: lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - ldr r2, _080B88D0 @ =gUnknown_2022978 + ldr r2, _080B88D0 @ =gBattle_BG1_X ldr r0, _080B88D4 @ =gSprites lsls r1, r4, 4 adds r1, r4 @@ -46214,7 +46214,7 @@ _080B8828: negs r0, r0 adds r0, 0x60 strh r0, [r2] - ldr r2, _080B88D8 @ =gUnknown_202297A + ldr r2, _080B88D8 @ =gBattle_BG1_Y ldrh r0, [r1, 0x22] negs r0, r0 adds r0, 0x20 @@ -46239,9 +46239,9 @@ _080B88C0: .4byte gUnknown_2037F1A _080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap _080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet _080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette -_080B88D0: .4byte gUnknown_2022978 +_080B88D0: .4byte gBattle_BG1_X _080B88D4: .4byte gSprites -_080B88D8: .4byte gUnknown_202297A +_080B88D8: .4byte gBattle_BG1_Y _080B88DC: .4byte gUnknown_2037F02 _080B88E0: lsls r0, r1, 4 @@ -46292,7 +46292,7 @@ sub_80B8920: @ 80B8920 adds r0, 0x4 movs r5, 0 strh r0, [r4, 0x1C] - ldr r2, _080B89EC @ =gUnknown_2022978 + ldr r2, _080B89EC @ =gBattle_BG1_X ldrh r3, [r2] subs r1, r3, 0x4 strh r1, [r2] @@ -46376,7 +46376,7 @@ _080B8990: b _080B8A5E .align 2, 0 _080B89E8: .4byte gTasks -_080B89EC: .4byte gUnknown_2022978 +_080B89EC: .4byte gBattle_BG1_X _080B89F0: .4byte gSprites _080B89F4: .4byte gUnknown_2023D44 _080B89F8: .4byte gUnknown_2037F1A @@ -47039,20 +47039,20 @@ _080B8F14: strh r0, [r4, 0x1E] cmp r0, 0x1 bne _080B8F48 - ldr r0, _080B8F40 @ =gUnknown_2022978 + ldr r0, _080B8F40 @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r4, 0x20] - ldr r0, _080B8F44 @ =gUnknown_202297A + ldr r0, _080B8F44 @ =gBattle_BG1_Y b _080B8F50 .align 2, 0 _080B8F3C: .4byte gUnknown_2037F1A -_080B8F40: .4byte gUnknown_2022978 -_080B8F44: .4byte gUnknown_202297A +_080B8F40: .4byte gBattle_BG1_X +_080B8F44: .4byte gBattle_BG1_Y _080B8F48: - ldr r0, _080B8F8C @ =gUnknown_202297C + ldr r0, _080B8F8C @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r4, 0x20] - ldr r0, _080B8F90 @ =gUnknown_202297E + ldr r0, _080B8F90 @ =gBattle_BG2_Y _080B8F50: ldrh r0, [r0] strh r0, [r4, 0x22] @@ -47085,8 +47085,8 @@ _080B8F72: strb r1, [r0] b _080B9056 .align 2, 0 -_080B8F8C: .4byte gUnknown_202297C -_080B8F90: .4byte gUnknown_202297E +_080B8F8C: .4byte gBattle_BG2_X +_080B8F90: .4byte gBattle_BG2_Y _080B8F94: .4byte gUnknown_2037F1A _080B8F98: .4byte gSprites _080B8F9C: @@ -47116,7 +47116,7 @@ _080B8FAC: adds r0, 0x1 strh r0, [r4, 0xE] _080B8FCE: - ldr r1, _080B8FF0 @ =gUnknown_825E074 + ldr r1, _080B8FF0 @ =gSineTable movs r2, 0xC ldrsh r0, [r4, r2] lsls r0, 1 @@ -47131,13 +47131,13 @@ _080B8FCE: ldrsh r0, [r4, r1] cmp r0, 0x1 bne _080B8FF8 - ldr r1, _080B8FF4 @ =gUnknown_202297A + ldr r1, _080B8FF4 @ =gBattle_BG1_Y b _080B8FFA .align 2, 0 -_080B8FF0: .4byte gUnknown_825E074 -_080B8FF4: .4byte gUnknown_202297A +_080B8FF0: .4byte gSineTable +_080B8FF4: .4byte gBattle_BG1_Y _080B8FF8: - ldr r1, _080B901C @ =gUnknown_202297E + ldr r1, _080B901C @ =gBattle_BG2_Y _080B8FFA: ldrh r0, [r4, 0x22] subs r0, r2 @@ -47154,13 +47154,13 @@ _080B8FFA: ldrsh r0, [r4, r3] cmp r0, 0x1 bne _080B9024 - ldr r1, _080B9020 @ =gUnknown_202297A + ldr r1, _080B9020 @ =gBattle_BG1_Y b _080B9026 .align 2, 0 -_080B901C: .4byte gUnknown_202297E -_080B9020: .4byte gUnknown_202297A +_080B901C: .4byte gBattle_BG2_Y +_080B9020: .4byte gBattle_BG1_Y _080B9024: - ldr r1, _080B9048 @ =gUnknown_202297E + ldr r1, _080B9048 @ =gBattle_BG2_Y _080B9026: ldrh r0, [r4, 0x22] subs r0, r2 @@ -47180,10 +47180,10 @@ _080B9026: strh r0, [r1, 0x24] b _080B9056 .align 2, 0 -_080B9048: .4byte gUnknown_202297E +_080B9048: .4byte gBattle_BG2_Y _080B904C: .4byte gSprites _080B9050: - ldr r1, _080B9060 @ =gUnknown_2039600 + ldr r1, _080B9060 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080B9056: @@ -47192,7 +47192,7 @@ _080B9056: strh r0, [r4, 0x8] b _080B9082 .align 2, 0 -_080B9060: .4byte gUnknown_2039600 +_080B9060: .4byte gScanlineEffect _080B9064: adds r0, r2, 0 bl DestroyAnimVisualTask @@ -47246,14 +47246,14 @@ sub_80B908C: @ 80B908C lsrs r0, 24 cmp r0, 0x1 bne _080B90D8 - ldr r0, _080B90D4 @ =gUnknown_202297A + ldr r0, _080B90D4 @ =gBattle_BG1_Y b _080B90DA .align 2, 0 _080B90CC: .4byte gSprites _080B90D0: .4byte gUnknown_2037F1A -_080B90D4: .4byte gUnknown_202297A +_080B90D4: .4byte gBattle_BG1_Y _080B90D8: - ldr r0, _080B90E8 @ =gUnknown_202297E + ldr r0, _080B90E8 @ =gBattle_BG2_Y _080B90DA: strh r4, [r0] adds r0, r5, 0 @@ -47262,7 +47262,7 @@ _080B90DA: pop {r0} bx r0 .align 2, 0 -_080B90E8: .4byte gUnknown_202297E +_080B90E8: .4byte gBattle_BG2_Y thumb_func_end sub_80B908C thumb_func_start sub_80B90EC @@ -47412,13 +47412,13 @@ _080B91F0: strh r0, [r4, 0x1E] cmp r0, 0x1 bne _080B921C - ldr r0, _080B9218 @ =gUnknown_2022978 + ldr r0, _080B9218 @ =gBattle_BG1_X b _080B921E .align 2, 0 _080B9214: .4byte gUnknown_2037F1A -_080B9218: .4byte gUnknown_2022978 +_080B9218: .4byte gBattle_BG1_X _080B921C: - ldr r0, _080B923C @ =gUnknown_202297C + ldr r0, _080B923C @ =gBattle_BG2_X _080B921E: ldrh r0, [r0] strh r0, [r4, 0x20] @@ -47434,7 +47434,7 @@ _080B921E: strh r0, [r4, 0x26] b _080B929A .align 2, 0 -_080B923C: .4byte gUnknown_202297C +_080B923C: .4byte gBattle_BG2_X _080B9240: .4byte gUnknown_2037F1A _080B9244: ldrb r0, [r4, 0x1E] @@ -47477,7 +47477,7 @@ _080B926C: ldrsh r0, [r0, r1] cmp r0, 0 bne _080B92B2 - ldr r1, _080B92A8 @ =gUnknown_2039600 + ldr r1, _080B92A8 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080B929A: @@ -47487,7 +47487,7 @@ _080B929A: b _080B92B2 .align 2, 0 _080B92A4: .4byte gSprites -_080B92A8: .4byte gUnknown_2039600 +_080B92A8: .4byte gScanlineEffect _080B92AC: adds r0, r2, 0 bl DestroyAnimVisualTask @@ -47509,15 +47509,15 @@ sub_80B92B8: @ 80B92B8 lsrs r4, r2, 16 cmp r0, 0x1 bne _080B92DC - ldr r0, _080B92D4 @ =gUnknown_2022978 + ldr r0, _080B92D4 @ =gBattle_BG1_X ldrh r3, [r0] ldr r0, _080B92D8 @ =0x04000014 b _080B92E2 .align 2, 0 -_080B92D4: .4byte gUnknown_2022978 +_080B92D4: .4byte gBattle_BG1_X _080B92D8: .4byte 0x04000014 _080B92DC: - ldr r0, _080B9368 @ =gUnknown_202297C + ldr r0, _080B9368 @ =gBattle_BG2_X ldrh r3, [r0] ldr r0, _080B936C @ =0x04000018 _080B92E2: @@ -47532,7 +47532,7 @@ _080B92EC: asrs r4, r0, 16 cmp r2, r0 bge _080B9318 - ldr r5, _080B9370 @ =gUnknown_2038700 + ldr r5, _080B9370 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -47555,7 +47555,7 @@ _080B9318: asrs r0, r1, 16 cmp r0, 0x9F bgt _080B9346 - ldr r4, _080B9370 @ =gUnknown_2038700 + ldr r4, _080B9370 @ =gScanlineEffectRegBuffers lsls r0, r3, 16 asrs r0, 16 adds r3, r0, 0 @@ -47587,15 +47587,15 @@ _080B9346: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080B9368: .4byte gUnknown_202297C +_080B9368: .4byte gBattle_BG2_X _080B936C: .4byte 0x04000018 -_080B9370: .4byte gUnknown_2038700 +_080B9370: .4byte gScanlineEffectRegBuffers _080B9374: .4byte 0xa2600001 thumb_func_end sub_80B92B8 @@ -47795,14 +47795,14 @@ _080B94EC: beq _080B9518 cmp r0, 0x5 bne _080B9558 - ldr r0, _080B9510 @ =gUnknown_2022980 + ldr r0, _080B9510 @ =gBattle_BG3_X ldrh r0, [r0] strh r0, [r4, 0x22] ldr r0, _080B9514 @ =sub_80B9584 b _080B9576 .align 2, 0 _080B950C: .4byte gUnknown_2037EEC -_080B9510: .4byte gUnknown_2022980 +_080B9510: .4byte gBattle_BG3_X _080B9514: .4byte sub_80B9584 _080B9518: movs r0, 0 @@ -47903,16 +47903,16 @@ _080B95B2: ands r0, r1 cmp r0, 0 bne _080B95DC - ldr r1, _080B95D8 @ =gUnknown_2022980 + ldr r1, _080B95D8 @ =gBattle_BG3_X ldrh r0, [r3, 0x26] ldrh r2, [r3, 0x22] adds r0, r2 strh r0, [r1] b _080B95E6 .align 2, 0 -_080B95D8: .4byte gUnknown_2022980 +_080B95D8: .4byte gBattle_BG3_X _080B95DC: - ldr r0, _080B9604 @ =gUnknown_2022980 + ldr r0, _080B9604 @ =gBattle_BG3_X ldrh r1, [r3, 0x22] ldrh r2, [r3, 0x26] subs r1, r2 @@ -47934,7 +47934,7 @@ _080B95E6: strh r0, [r3, 0x24] b _080B965C .align 2, 0 -_080B9604: .4byte gUnknown_2022980 +_080B9604: .4byte gBattle_BG3_X _080B9608: ldrh r0, [r3, 0xA] adds r0, 0x1 @@ -47949,16 +47949,16 @@ _080B9608: ands r1, r0 cmp r1, 0 bne _080B9634 - ldr r1, _080B9630 @ =gUnknown_2022980 + ldr r1, _080B9630 @ =gBattle_BG3_X ldrh r0, [r3, 0x24] ldrh r2, [r3, 0x22] adds r0, r2 strh r0, [r1] b _080B963E .align 2, 0 -_080B9630: .4byte gUnknown_2022980 +_080B9630: .4byte gBattle_BG3_X _080B9634: - ldr r0, _080B9664 @ =gUnknown_2022980 + ldr r0, _080B9664 @ =gBattle_BG3_X ldrh r1, [r3, 0x22] ldrh r2, [r3, 0x24] subs r1, r2 @@ -47985,9 +47985,9 @@ _080B965C: strh r0, [r3, 0x8] b _080B9674 .align 2, 0 -_080B9664: .4byte gUnknown_2022980 +_080B9664: .4byte gBattle_BG3_X _080B9668: - ldr r1, _080B9678 @ =gUnknown_2022980 + ldr r1, _080B9678 @ =gBattle_BG3_X ldrh r0, [r3, 0x22] strh r0, [r1] adds r0, r2, 0 @@ -47996,7 +47996,7 @@ _080B9674: pop {r0} bx r0 .align 2, 0 -_080B9678: .4byte gUnknown_2022980 +_080B9678: .4byte gBattle_BG3_X thumb_func_end sub_80B9584 thumb_func_start sub_80B967C @@ -48271,10 +48271,10 @@ _080B9832: movs r0, 0xFF ands r1, r0 strh r1, [r4, 0xC] - ldr r2, _080B98A0 @ =gUnknown_2022980 + ldr r2, _080B98A0 @ =gBattle_BG3_X ldrh r0, [r4, 0xA] strh r0, [r2] - ldr r0, _080B98A4 @ =gUnknown_2022982 + ldr r0, _080B98A4 @ =gBattle_BG3_Y strh r1, [r0] ldrh r0, [r6, 0x4] strh r0, [r4, 0xE] @@ -48288,8 +48288,8 @@ _080B9890: .4byte gUnknown_2037F1A _080B9894: .4byte sub_80B98A8 _080B9898: .4byte gTasks _080B989C: .4byte 0x000001ff -_080B98A0: .4byte gUnknown_2022980 -_080B98A4: .4byte gUnknown_2022982 +_080B98A0: .4byte gBattle_BG3_X +_080B98A4: .4byte gBattle_BG3_Y thumb_func_end sub_80B9800 thumb_func_start sub_80B98A8 @@ -48309,10 +48309,10 @@ sub_80B98A8: @ 80B98A8 ldrsh r0, [r2, r4] cmp r1, r0 bne _080B98E8 - ldr r0, _080B98E0 @ =gUnknown_2022980 + ldr r0, _080B98E0 @ =gBattle_BG3_X movs r1, 0 strh r1, [r0] - ldr r0, _080B98E4 @ =gUnknown_2022982 + ldr r0, _080B98E4 @ =gBattle_BG3_Y strh r1, [r0] adds r0, r3, 0 bl DestroyTask @@ -48320,13 +48320,13 @@ sub_80B98A8: @ 80B98A8 .align 2, 0 _080B98D8: .4byte gTasks _080B98DC: .4byte gUnknown_2037F02 -_080B98E0: .4byte gUnknown_2022980 -_080B98E4: .4byte gUnknown_2022982 +_080B98E0: .4byte gBattle_BG3_X +_080B98E4: .4byte gBattle_BG3_Y _080B98E8: - ldr r1, _080B98FC @ =gUnknown_2022980 + ldr r1, _080B98FC @ =gBattle_BG3_X ldrh r0, [r2, 0xA] strh r0, [r1] - ldr r1, _080B9900 @ =gUnknown_2022982 + ldr r1, _080B9900 @ =gBattle_BG3_Y ldrh r0, [r2, 0xC] strh r0, [r1] _080B98F4: @@ -48334,8 +48334,8 @@ _080B98F4: pop {r0} bx r0 .align 2, 0 -_080B98FC: .4byte gUnknown_2022980 -_080B9900: .4byte gUnknown_2022982 +_080B98FC: .4byte gBattle_BG3_X +_080B9900: .4byte gBattle_BG3_Y thumb_func_end sub_80B98A8 thumb_func_start sub_80B9904 @@ -49629,15 +49629,15 @@ _080BA2B4: beq _080BA2CC b _080BA2DC _080BA2BA: - ldr r1, _080BA2C0 @ =gUnknown_2022980 + ldr r1, _080BA2C0 @ =gBattle_BG3_X b _080BA2CE .align 2, 0 -_080BA2C0: .4byte gUnknown_2022980 +_080BA2C0: .4byte gBattle_BG3_X _080BA2C4: - ldr r1, _080BA2C8 @ =gUnknown_2022982 + ldr r1, _080BA2C8 @ =gBattle_BG3_Y b _080BA2CE .align 2, 0 -_080BA2C8: .4byte gUnknown_2022982 +_080BA2C8: .4byte gBattle_BG3_Y _080BA2CC: ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX _080BA2CE: @@ -49883,10 +49883,10 @@ sub_80BA47C: @ 80BA47C strh r1, [r2, 0xE] ldrh r1, [r3, 0x6] strh r1, [r2, 0x18] - ldr r4, _080BA4C4 @ =gUnknown_2022980 + ldr r4, _080BA4C4 @ =gBattle_BG3_X ldrh r1, [r3] strh r1, [r4] - ldr r4, _080BA4C8 @ =gUnknown_2022982 + ldr r4, _080BA4C8 @ =gBattle_BG3_Y ldrh r1, [r3, 0x2] strh r1, [r4] ldr r1, _080BA4CC @ =sub_80BA4D0 @@ -49898,8 +49898,8 @@ sub_80BA47C: @ 80BA47C .align 2, 0 _080BA4BC: .4byte gTasks _080BA4C0: .4byte gUnknown_2037F02 -_080BA4C4: .4byte gUnknown_2022980 -_080BA4C8: .4byte gUnknown_2022982 +_080BA4C4: .4byte gBattle_BG3_X +_080BA4C8: .4byte gBattle_BG3_Y _080BA4CC: .4byte sub_80BA4D0 thumb_func_end sub_80BA47C @@ -49919,7 +49919,7 @@ sub_80BA4D0: @ 80BA4D0 mov r12, r1 cmp r0, 0 bne _080BA556 - ldr r0, _080BA504 @ =gUnknown_2022980 + ldr r0, _080BA504 @ =gBattle_BG3_X ldrh r2, [r0] movs r7, 0x8 ldrsh r1, [r3, r7] @@ -49931,12 +49931,12 @@ sub_80BA4D0: @ 80BA4D0 b _080BA50A .align 2, 0 _080BA500: .4byte gTasks -_080BA504: .4byte gUnknown_2022980 +_080BA504: .4byte gBattle_BG3_X _080BA508: ldrh r0, [r3, 0x8] _080BA50A: strh r0, [r6] - ldr r2, _080BA528 @ =gUnknown_2022982 + ldr r2, _080BA528 @ =gBattle_BG3_Y ldrh r3, [r2] lsls r1, r5, 2 adds r0, r1, r5 @@ -49950,7 +49950,7 @@ _080BA50A: movs r0, 0 b _080BA530 .align 2, 0 -_080BA528: .4byte gUnknown_2022982 +_080BA528: .4byte gBattle_BG3_Y _080BA52C: ldrh r0, [r4, 0xA] negs r0, r0 @@ -51171,7 +51171,7 @@ _080BAEAC: adds r1, 0x1 movs r2, 0x2 bl LoadPalette - ldr r2, _080BAF24 @ =gUnknown_2022978 + ldr r2, _080BAF24 @ =gBattle_BG1_X ldr r0, _080BAF28 @ =gSprites lsls r1, r5, 4 adds r1, r5 @@ -51181,7 +51181,7 @@ _080BAEAC: negs r0, r0 adds r0, 0x20 strh r0, [r2] - ldr r2, _080BAF2C @ =gUnknown_202297A + ldr r2, _080BAF2C @ =gBattle_BG1_Y ldrh r0, [r1, 0x22] negs r0, r0 adds r0, 0x20 @@ -51210,9 +51210,9 @@ _080BAF14: .4byte gUnknown_2037F1A _080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap _080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet _080BAF20: .4byte gUnknown_83E7CC8 -_080BAF24: .4byte gUnknown_2022978 +_080BAF24: .4byte gBattle_BG1_X _080BAF28: .4byte gSprites -_080BAF2C: .4byte gUnknown_202297A +_080BAF2C: .4byte gBattle_BG1_Y _080BAF30: .4byte gTasks _080BAF34: .4byte sub_80BAF38 thumb_func_end sub_80BACEC @@ -51236,7 +51236,7 @@ sub_80BAF38: @ 80BAF38 movs r1, 0 mov r8, r1 strh r0, [r5, 0x1C] - ldr r7, _080BB06C @ =gUnknown_202297A + ldr r7, _080BB06C @ =gBattle_BG1_Y ldrh r2, [r7] subs r1, r2, 0x4 strh r1, [r7] @@ -51360,7 +51360,7 @@ _080BB05A: bx r0 .align 2, 0 _080BB068: .4byte gTasks -_080BB06C: .4byte gUnknown_202297A +_080BB06C: .4byte gBattle_BG1_Y _080BB070: .4byte gUnknown_2022984 _080BB074: .4byte gUnknown_2022986 _080BB078: .4byte 0x00003f3f @@ -51763,10 +51763,10 @@ _080BB3C4: movs r2, 0x20 bl LoadCompressedPalette _080BB3D2: - ldr r3, _080BB400 @ =gUnknown_2022978 + ldr r3, _080BB400 @ =gBattle_BG1_X movs r2, 0 strh r2, [r3] - ldr r0, _080BB404 @ =gUnknown_202297A + ldr r0, _080BB404 @ =gBattle_BG1_Y strh r2, [r0] ldr r1, _080BB408 @ =gUnknown_20399B4 ldr r0, [r1] @@ -51786,8 +51786,8 @@ _080BB3D2: b _080BB420 .align 2, 0 _080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette -_080BB400: .4byte gUnknown_2022978 -_080BB404: .4byte gUnknown_202297A +_080BB400: .4byte gBattle_BG1_X +_080BB404: .4byte gBattle_BG1_Y _080BB408: .4byte gUnknown_20399B4 _080BB40C: .4byte gTasks _080BB410: .4byte 0x0000fffd @@ -51880,7 +51880,7 @@ sub_80BB4B8: @ 80BB4B8 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r2, _080BB4E4 @ =gUnknown_202297A + ldr r2, _080BB4E4 @ =gBattle_BG1_Y ldr r1, _080BB4E8 @ =gTasks lsls r0, r6, 2 adds r0, r6 @@ -51900,7 +51900,7 @@ sub_80BB4B8: @ 80BB4B8 beq _080BB4F6 b _080BB644 .align 2, 0 -_080BB4E4: .4byte gUnknown_202297A +_080BB4E4: .4byte gBattle_BG1_Y _080BB4E8: .4byte gTasks _080BB4EC: cmp r2, 0x2 @@ -52406,13 +52406,13 @@ sub_80BB8A4: @ 80BB8A4 ldrh r7, [r1, 0x1E] adds r2, r7 strh r2, [r1, 0x1E] - ldr r6, _080BB914 @ =gUnknown_2022980 + ldr r6, _080BB914 @ =gBattle_BG3_X lsls r0, r3, 16 asrs r0, 24 ldrh r4, [r6] adds r0, r4 strh r0, [r6] - ldr r4, _080BB918 @ =gUnknown_2022982 + ldr r4, _080BB918 @ =gBattle_BG3_Y lsls r0, r2, 16 asrs r0, 24 ldrh r7, [r4] @@ -52443,8 +52443,8 @@ _080BB90A: bx r0 .align 2, 0 _080BB910: .4byte gTasks -_080BB914: .4byte gUnknown_2022980 -_080BB918: .4byte gUnknown_2022982 +_080BB914: .4byte gBattle_BG3_X +_080BB918: .4byte gBattle_BG3_Y _080BB91C: .4byte gUnknown_2037F02 thumb_func_end sub_80BB8A4 @@ -52772,10 +52772,10 @@ _080BBBA8: ldr r0, [sp, 0x5C] movs r2, 0x20 bl LoadCompressedPalette - ldr r0, _080BBC1C @ =gUnknown_2022978 + ldr r0, _080BBC1C @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080BBC20 @ =gUnknown_202297A + ldr r0, _080BBC20 @ =gBattle_BG1_Y strh r1, [r0] ldr r1, _080BBC24 @ =gTasks mov r2, r9 @@ -52814,8 +52814,8 @@ _080BBBA8: _080BBC10: .4byte gBattlerPartyIndexes _080BBC14: .4byte gPlayerParty _080BBC18: .4byte gUnknown_2023D44 -_080BBC1C: .4byte gUnknown_2022978 -_080BBC20: .4byte gUnknown_202297A +_080BBC1C: .4byte gBattle_BG1_X +_080BBC20: .4byte gBattle_BG1_Y _080BBC24: .4byte gTasks _080BBC28: .4byte sub_80BBC2C thumb_func_end sub_80BBA20 @@ -52845,7 +52845,7 @@ _080BBC4A: ldrsh r0, [r3, r1] cmp r0, 0 bge _080BBC70 - ldr r2, _080BBC6C @ =gUnknown_202297A + ldr r2, _080BBC6C @ =gBattle_BG1_Y lsls r1, r4, 16 asrs r1, 24 ldrh r0, [r2] @@ -52854,9 +52854,9 @@ _080BBC4A: b _080BBC7C .align 2, 0 _080BBC68: .4byte gTasks -_080BBC6C: .4byte gUnknown_202297A +_080BBC6C: .4byte gBattle_BG1_Y _080BBC70: - ldr r1, _080BBCA0 @ =gUnknown_202297A + ldr r1, _080BBCA0 @ =gBattle_BG1_Y lsls r0, r4, 16 asrs r0, 24 ldrh r2, [r1] @@ -52882,7 +52882,7 @@ _080BBC7C: beq _080BBCAA b _080BBDD8 .align 2, 0 -_080BBCA0: .4byte gUnknown_202297A +_080BBCA0: .4byte gBattle_BG1_Y _080BBCA4: cmp r0, 0x2 beq _080BBD00 @@ -53860,14 +53860,14 @@ sub_80BC41C: @ 80BC41C lsls r0, 24 lsrs r0, 24 bl DestroyTask - ldr r0, _080BC468 @ =gUnknown_2022978 + ldr r0, _080BC468 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080BC46C @ =gUnknown_202297A + ldr r0, _080BC46C @ =gBattle_BG1_Y strh r1, [r0] - ldr r0, _080BC470 @ =gUnknown_202297C + ldr r0, _080BC470 @ =gBattle_BG2_X strh r1, [r0] - ldr r0, _080BC474 @ =gUnknown_202297E + ldr r0, _080BC474 @ =gBattle_BG2_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -53889,10 +53889,10 @@ sub_80BC41C: @ 80BC41C pop {r0} bx r0 .align 2, 0 -_080BC468: .4byte gUnknown_2022978 -_080BC46C: .4byte gUnknown_202297A -_080BC470: .4byte gUnknown_202297C -_080BC474: .4byte gUnknown_202297E +_080BC468: .4byte gBattle_BG1_X +_080BC46C: .4byte gBattle_BG1_Y +_080BC470: .4byte gBattle_BG2_X +_080BC474: .4byte gBattle_BG2_Y _080BC478: .4byte 0x00003f3f thumb_func_end sub_80BC41C @@ -53905,7 +53905,7 @@ task_battle_intro_80BC47C: @ 80BC47C sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 - ldr r1, _080BC4B4 @ =gUnknown_2022978 + ldr r1, _080BC4B4 @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 strh r0, [r1] @@ -53927,7 +53927,7 @@ _080BC4A8: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080BC4B4: .4byte gUnknown_2022978 +_080BC4B4: .4byte gBattle_BG1_X _080BC4B8: .4byte gTasks _080BC4BC: .4byte _080BC4C0 .align 2, 0 @@ -54040,7 +54040,7 @@ _080BC590: ldrsh r0, [r2, r1] cmp r0, 0x1 bne _080BC5B0 - ldr r2, _080BC5A8 @ =gUnknown_202297A + ldr r2, _080BC5A8 @ =gBattle_BG1_Y ldrh r1, [r2] ldr r0, _080BC5AC @ =0x0000ffb0 cmp r1, r0 @@ -54048,10 +54048,10 @@ _080BC590: subs r0, r1, 0x2 b _080BC5BC .align 2, 0 -_080BC5A8: .4byte gUnknown_202297A +_080BC5A8: .4byte gBattle_BG1_Y _080BC5AC: .4byte 0x0000ffb0 _080BC5B0: - ldr r2, _080BC690 @ =gUnknown_202297A + ldr r2, _080BC690 @ =gBattle_BG1_Y ldrh r1, [r2] ldr r0, _080BC694 @ =0x0000ffc8 cmp r1, r0 @@ -54085,9 +54085,9 @@ _080BC5D2: strh r0, [r1, 0xC] _080BC5EA: movs r3, 0 - ldr r5, _080BC6A0 @ =gUnknown_2039600 + ldr r5, _080BC6A0 @ =gScanlineEffect mov r9, r5 - ldr r7, _080BC6A4 @ =gUnknown_2038700 + ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers mov r6, r9 adds r5, r1, 0 _080BC5F6: @@ -54105,8 +54105,8 @@ _080BC5F6: ble _080BC5F6 cmp r3, 0x9F bgt _080BC63A - ldr r7, _080BC6A4 @ =gUnknown_2038700 - ldr r6, _080BC6A0 @ =gUnknown_2039600 + ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers + ldr r6, _080BC6A0 @ =gScanlineEffect ldr r1, _080BC6A8 @ =gTasks mov r2, r12 adds r0, r2, r4 @@ -54165,12 +54165,12 @@ _080BC63A: bl SetGpuReg b _080BC6BA .align 2, 0 -_080BC690: .4byte gUnknown_202297A +_080BC690: .4byte gBattle_BG1_Y _080BC694: .4byte 0x0000ffc8 _080BC698: .4byte gUnknown_2022986 _080BC69C: .4byte 0xfffffc04 -_080BC6A0: .4byte gUnknown_2039600 -_080BC6A4: .4byte gUnknown_2038700 +_080BC6A0: .4byte gScanlineEffect +_080BC6A4: .4byte gScanlineEffectRegBuffers _080BC6A8: .4byte gTasks _080BC6AC: .4byte 0x0600e000 _080BC6B0: .4byte 0x05000200 @@ -54216,14 +54216,14 @@ _080BC6F8: cmp r0, 0x4 bne _080BC710 _080BC6FC: - ldr r1, _080BC704 @ =gUnknown_2022978 + ldr r1, _080BC704 @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x8 b _080BC70E .align 2, 0 -_080BC704: .4byte gUnknown_2022978 +_080BC704: .4byte gBattle_BG1_X _080BC708: - ldr r1, _080BC74C @ =gUnknown_2022978 + ldr r1, _080BC74C @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x6 _080BC70E: @@ -54238,7 +54238,7 @@ _080BC710: adds r6, r0, 0 cmp r1, 0x4 bne _080BC774 - ldr r7, _080BC750 @ =gUnknown_202297A + ldr r7, _080BC750 @ =gBattle_BG1_Y ldrh r0, [r4, 0x14] bl Cos2 lsls r0, 16 @@ -54259,8 +54259,8 @@ _080BC736: adds r0, r1, 0x4 b _080BC75A .align 2, 0 -_080BC74C: .4byte gUnknown_2022978 -_080BC750: .4byte gUnknown_202297A +_080BC74C: .4byte gBattle_BG1_X +_080BC750: .4byte gBattle_BG1_Y _080BC754: .4byte 0x000001ff _080BC758: adds r0, r1, 0x6 @@ -54459,9 +54459,9 @@ _080BC8CC: strh r0, [r1, 0xC] _080BC8E2: movs r3, 0 - ldr r0, _080BC994 @ =gUnknown_2039600 + ldr r0, _080BC994 @ =gScanlineEffect mov r8, r0 - ldr r2, _080BC998 @ =gUnknown_2038700 + ldr r2, _080BC998 @ =gScanlineEffectRegBuffers mov r12, r2 mov r7, r8 adds r4, r1, 0 @@ -54480,9 +54480,9 @@ _080BC8F0: ble _080BC8F0 cmp r3, 0x9F bgt _080BC934 - ldr r0, _080BC998 @ =gUnknown_2038700 + ldr r0, _080BC998 @ =gScanlineEffectRegBuffers mov r12, r0 - ldr r7, _080BC994 @ =gUnknown_2039600 + ldr r7, _080BC994 @ =gScanlineEffect ldr r1, _080BC990 @ =gTasks adds r0, r6, r5 lsls r0, 3 @@ -54542,8 +54542,8 @@ _080BC934: _080BC988: .4byte gUnknown_2022986 _080BC98C: .4byte 0xfffffc04 _080BC990: .4byte gTasks -_080BC994: .4byte gUnknown_2039600 -_080BC998: .4byte gUnknown_2038700 +_080BC994: .4byte gScanlineEffect +_080BC998: .4byte gScanlineEffectRegBuffers _080BC99C: .4byte 0x0600e000 _080BC9A0: .4byte 0x05000200 _080BC9A4: @@ -54580,7 +54580,7 @@ task_battle_intro_anim: @ 80BC9D4 sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 - ldr r1, _080BCA08 @ =gUnknown_2022978 + ldr r1, _080BCA08 @ =gBattle_BG1_X ldrh r0, [r1] adds r0, 0x8 strh r0, [r1] @@ -54602,7 +54602,7 @@ _080BC9FE: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080BCA08: .4byte gUnknown_2022978 +_080BCA08: .4byte gBattle_BG1_X _080BCA0C: .4byte gTasks _080BCA10: .4byte _080BCA14 .align 2, 0 @@ -54768,9 +54768,9 @@ _080BCB46: strh r0, [r1, 0xC] _080BCB5C: movs r3, 0 - ldr r6, _080BCC08 @ =gUnknown_2039600 + ldr r6, _080BCC08 @ =gScanlineEffect mov r8, r6 - ldr r7, _080BCC0C @ =gUnknown_2038700 + ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers adds r4, r1, 0 _080BCB66: lsls r2, r3, 1 @@ -54787,8 +54787,8 @@ _080BCB66: ble _080BCB66 cmp r3, 0x9F bgt _080BCBAA - ldr r7, _080BCC0C @ =gUnknown_2038700 - ldr r6, _080BCC08 @ =gUnknown_2039600 + ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers + ldr r6, _080BCC08 @ =gScanlineEffect ldr r1, _080BCC10 @ =gTasks mov r2, r12 adds r0, r2, r5 @@ -54849,8 +54849,8 @@ _080BCBAA: .align 2, 0 _080BCC00: .4byte gUnknown_2022986 _080BCC04: .4byte 0xfffffc04 -_080BCC08: .4byte gUnknown_2039600 -_080BCC0C: .4byte gUnknown_2038700 +_080BCC08: .4byte gScanlineEffect +_080BCC0C: .4byte gScanlineEffectRegBuffers _080BCC10: .4byte gTasks _080BCC14: .4byte 0x0600e000 _080BCC18: .4byte 0x05000200 @@ -54903,7 +54903,7 @@ sub_80BCC4C: @ 80BCC4C ldrsh r0, [r7, r2] cmp r0, 0 bne _080BCCC2 - ldr r2, _080BCC9C @ =gUnknown_2022978 + ldr r2, _080BCC9C @ =gBattle_BG1_X ldrh r1, [r2] movs r0, 0x80 lsls r0, 8 @@ -54917,15 +54917,15 @@ sub_80BCC4C: @ 80BCC4C _080BCC8A: adds r0, r1, 0x3 strh r0, [r2] - ldr r1, _080BCCA0 @ =gUnknown_202297C + ldr r1, _080BCCA0 @ =gBattle_BG2_X ldrh r0, [r1] subs r0, 0x3 strh r0, [r1] b _080BCCC2 .align 2, 0 _080BCC98: .4byte gTasks -_080BCC9C: .4byte gUnknown_2022978 -_080BCCA0: .4byte gUnknown_202297C +_080BCC9C: .4byte gBattle_BG1_X +_080BCCA0: .4byte gBattle_BG2_X _080BCCA4: str r5, [sp] ldr r1, _080BCCE4 @ =0x0600e000 @@ -55120,9 +55120,9 @@ _080BCE1C: strh r0, [r1, 0xC] _080BCE32: movs r3, 0 - ldr r0, _080BCED4 @ =gUnknown_2039600 + ldr r0, _080BCED4 @ =gScanlineEffect mov r12, r0 - ldr r2, _080BCED8 @ =gUnknown_2038700 + ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers mov r8, r2 mov r7, r12 adds r4, r1, 0 @@ -55141,9 +55141,9 @@ _080BCE40: ble _080BCE40 cmp r3, 0x9F bgt _080BCE84 - ldr r0, _080BCED8 @ =gUnknown_2038700 + ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers mov r8, r0 - ldr r7, _080BCED4 @ =gUnknown_2039600 + ldr r7, _080BCED4 @ =gScanlineEffect ldr r1, _080BCEDC @ =gTasks adds r0, r5, r6 lsls r0, 3 @@ -55197,8 +55197,8 @@ _080BCE84: .align 2, 0 _080BCECC: .4byte gUnknown_2022986 _080BCED0: .4byte 0xfffffc04 -_080BCED4: .4byte gUnknown_2039600 -_080BCED8: .4byte gUnknown_2038700 +_080BCED4: .4byte gScanlineEffect +_080BCED8: .4byte gScanlineEffectRegBuffers _080BCEDC: .4byte gTasks _080BCEE0: adds r0, r6, 0 diff --git a/asm/battle_anim_80DE2C0.s b/asm/battle_anim_80DE2C0.s index f3ddeb0b1..603005d78 100644 --- a/asm/battle_anim_80DE2C0.s +++ b/asm/battle_anim_80DE2C0.s @@ -1644,7 +1644,7 @@ sub_80DEF38: @ 80DEF38 movs r1, 0xFF ands r0, r1 strh r0, [r2, 0x30] - ldr r1, _080DEF80 @ =gUnknown_825E074 + ldr r1, _080DEF80 @ =gSineTable movs r3, 0x30 ldrsh r0, [r2, r3] lsls r0, 1 @@ -1671,7 +1671,7 @@ sub_80DEF38: @ 80DEF38 bl DestroyAnimSprite b _080DEF96 .align 2, 0 -_080DEF80: .4byte gUnknown_825E074 +_080DEF80: .4byte gSineTable _080DEF84: lsls r0, r1, 16 asrs r0, 16 @@ -1742,14 +1742,14 @@ _080DEFF4: strh r2, [r5, 0x16] cmp r7, 0x1 bne _080DF01C - ldr r0, _080DF018 @ =gUnknown_2022978 + ldr r0, _080DF018 @ =gBattle_BG1_X b _080DF01E .align 2, 0 _080DF010: .4byte gUnknown_2037F1B _080DF014: .4byte gUnknown_2037F02 -_080DF018: .4byte gUnknown_2022978 +_080DF018: .4byte gBattle_BG1_X _080DF01C: - ldr r0, _080DF03C @ =gUnknown_202297C + ldr r0, _080DF03C @ =gBattle_BG2_X _080DF01E: ldrh r2, [r0] strh r2, [r5, 0x18] @@ -1766,7 +1766,7 @@ _080DF01E: ldrh r3, [r5, 0x18] b _080DF044 .align 2, 0 -_080DF03C: .4byte gUnknown_202297C +_080DF03C: .4byte gBattle_BG2_X _080DF040: strh r2, [r5, 0x1E] ldrh r3, [r5, 0x1A] @@ -1780,7 +1780,7 @@ _080DF044: ldrsh r0, [r5, r6] cmp r1, r0 bgt _080DF07A - ldr r4, _080DF084 @ =gUnknown_2038700 + ldr r4, _080DF084 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r4 @@ -1805,7 +1805,7 @@ _080DF07A: ldr r0, _080DF088 @ =0x04000014 b _080DF08E .align 2, 0 -_080DF084: .4byte gUnknown_2038700 +_080DF084: .4byte gScanlineEffectRegBuffers _080DF088: .4byte 0x04000014 _080DF08C: ldr r0, _080DF0B8 @ =0x04000018 @@ -1822,7 +1822,7 @@ _080DF08E: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams ldr r0, _080DF0C0 @ =sub_80DF0C4 str r0, [r5] add sp, 0xC @@ -1917,7 +1917,7 @@ _080DF148: ldrsh r0, [r4, r2] cmp r1, r0 bge _080DF17C - ldr r5, _080DF1D4 @ =gUnknown_2038700 + ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1945,7 +1945,7 @@ _080DF17C: ldrsh r0, [r4, r2] cmp r1, r0 bgt _080DF1B0 - ldr r5, _080DF1D4 @ =gUnknown_2038700 + ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1974,7 +1974,7 @@ _080DF1B0: ldrsh r0, [r4, r1] cmp r0, 0 beq _080DF1C6 - ldr r1, _080DF1D8 @ =gUnknown_2039600 + ldr r1, _080DF1D8 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080DF1C6: @@ -1985,8 +1985,8 @@ _080DF1CC: pop {r0} bx r0 .align 2, 0 -_080DF1D4: .4byte gUnknown_2038700 -_080DF1D8: .4byte gUnknown_2039600 +_080DF1D4: .4byte gScanlineEffectRegBuffers +_080DF1D8: .4byte gScanlineEffect thumb_func_end sub_80DF0C4 thumb_func_start sub_80DF1DC @@ -3434,7 +3434,7 @@ _080DFCCE: movs r2, 0 movs r3, 0 bl sub_80730C0 - ldr r1, _080DFD28 @ =gUnknown_2022978 + ldr r1, _080DFD28 @ =gBattle_BG1_X ldr r3, _080DFD2C @ =0x0000ffc8 b _080DFD58 .align 2, 0 @@ -3442,7 +3442,7 @@ _080DFD18: .4byte 0x00003f42 _080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap _080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet _080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette -_080DFD28: .4byte gUnknown_2022978 +_080DFD28: .4byte gBattle_BG1_X _080DFD2C: .4byte 0x0000ffc8 _080DFD30: ldr r0, _080DFD48 @ =gUnknown_2037F1A @@ -3451,22 +3451,22 @@ _080DFD30: lsls r0, 24 cmp r0, 0 beq _080DFD54 - ldr r1, _080DFD4C @ =gUnknown_2022978 + ldr r1, _080DFD4C @ =gBattle_BG1_X ldr r2, _080DFD50 @ =0x0000ff79 adds r0, r2, 0 b _080DFD5A .align 2, 0 _080DFD48: .4byte gUnknown_2037F1A -_080DFD4C: .4byte gUnknown_2022978 +_080DFD4C: .4byte gBattle_BG1_X _080DFD50: .4byte 0x0000ff79 _080DFD54: - ldr r1, _080DFD80 @ =gUnknown_2022978 + ldr r1, _080DFD80 @ =gBattle_BG1_X ldr r3, _080DFD84 @ =0x0000fff6 _080DFD58: adds r0, r3, 0 _080DFD5A: strh r0, [r1] - ldr r1, _080DFD88 @ =gUnknown_202297A + ldr r1, _080DFD88 @ =gBattle_BG1_Y movs r0, 0 strh r0, [r1] ldr r0, _080DFD8C @ =gTasks @@ -3474,19 +3474,19 @@ _080DFD5A: adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _080DFD80 @ =gUnknown_2022978 + ldr r0, _080DFD80 @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r1, 0x1C] - ldr r0, _080DFD88 @ =gUnknown_202297A + ldr r0, _080DFD88 @ =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r1, 0x1E] ldrh r0, [r1, 0x8] adds r0, 0x1 b _080DFE66 .align 2, 0 -_080DFD80: .4byte gUnknown_2022978 +_080DFD80: .4byte gBattle_BG1_X _080DFD84: .4byte 0x0000fff6 -_080DFD88: .4byte gUnknown_202297A +_080DFD88: .4byte gBattle_BG1_Y _080DFD8C: .4byte gTasks _080DFD90: lsls r0, r4, 2 @@ -3557,7 +3557,7 @@ _080DFDF8: ldrsh r0, [r4, r2] cmp r0, 0 bne _080DFECA - ldr r2, _080DFE3C @ =gUnknown_2022978 + ldr r2, _080DFE3C @ =gBattle_BG1_X ldr r1, _080DFE40 @ =gUnknown_83FF240 movs r3, 0xC ldrsh r0, [r4, r3] @@ -3578,7 +3578,7 @@ _080DFDF8: strh r0, [r4, 0x8] b _080DFECA .align 2, 0 -_080DFE3C: .4byte gUnknown_2022978 +_080DFE3C: .4byte gBattle_BG1_X _080DFE40: .4byte gUnknown_83FF240 _080DFE44: movs r0, 0x3 @@ -3629,10 +3629,10 @@ _080DFEA0: movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute - ldr r0, _080DFED4 @ =gUnknown_2022978 + ldr r0, _080DFED4 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080DFED8 @ =gUnknown_202297A + ldr r0, _080DFED8 @ =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -3648,8 +3648,8 @@ _080DFECA: pop {r0} bx r0 .align 2, 0 -_080DFED4: .4byte gUnknown_2022978 -_080DFED8: .4byte gUnknown_202297A +_080DFED4: .4byte gBattle_BG1_X +_080DFED8: .4byte gBattle_BG1_Y thumb_func_end sub_80DFC50 thumb_func_start sub_80DFEDC @@ -4076,7 +4076,7 @@ _080E01FC: movs r2, 0 movs r3, 0 bl sub_80730C0 - ldr r1, _080E025C @ =gUnknown_2022978 + ldr r1, _080E025C @ =gBattle_BG1_X ldr r3, _080E0260 @ =0x0000ffc8 adds r0, r3, 0 b _080E02CE @@ -4086,7 +4086,7 @@ _080E024C: .4byte 0x00000d03 _080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap _080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet _080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette -_080E025C: .4byte gUnknown_2022978 +_080E025C: .4byte gBattle_BG1_X _080E0260: .4byte 0x0000ffc8 _080E0264: ldr r0, _080E02A4 @ =gUnknown_2037F1B @@ -4099,7 +4099,7 @@ _080E0264: lsrs r0, 24 cmp r0, 0x1 bne _080E02B8 - ldr r1, _080E02A8 @ =gUnknown_2022978 + ldr r1, _080E02A8 @ =gBattle_BG1_X cmp r4, 0x1 bne _080E0288 ldr r2, _080E02AC @ =0x0000ff65 @@ -4119,33 +4119,33 @@ _080E0292: _080E029A: cmp r4, 0x2 bne _080E02D0 - ldr r1, _080E02A8 @ =gUnknown_2022978 + ldr r1, _080E02A8 @ =gBattle_BG1_X ldr r2, _080E02B4 @ =0x0000ffec b _080E02CC .align 2, 0 _080E02A4: .4byte gUnknown_2037F1B -_080E02A8: .4byte gUnknown_2022978 +_080E02A8: .4byte gBattle_BG1_X _080E02AC: .4byte 0x0000ff65 _080E02B0: .4byte 0x0000ff8d _080E02B4: .4byte 0x0000ffec _080E02B8: cmp r4, 0x1 bne _080E02C4 - ldr r1, _080E02F0 @ =gUnknown_2022978 + ldr r1, _080E02F0 @ =gBattle_BG1_X ldr r3, _080E02F4 @ =0x0000ff79 adds r0, r3, 0 strh r0, [r1] _080E02C4: cmp r4, 0 bne _080E02D0 - ldr r1, _080E02F0 @ =gUnknown_2022978 + ldr r1, _080E02F0 @ =gBattle_BG1_X ldr r2, _080E02F8 @ =0x0000fff6 _080E02CC: adds r0, r2, 0 _080E02CE: strh r0, [r1] _080E02D0: - ldr r1, _080E02FC @ =gUnknown_202297A + ldr r1, _080E02FC @ =gBattle_BG1_Y movs r0, 0 strh r0, [r1] ldr r0, _080E0300 @ =gTasks @@ -4153,18 +4153,18 @@ _080E02D0: adds r1, r6 lsls r1, 3 adds r1, r0 - ldr r0, _080E02F0 @ =gUnknown_2022978 + ldr r0, _080E02F0 @ =gBattle_BG1_X ldrh r0, [r0] strh r0, [r1, 0x1C] - ldr r0, _080E02FC @ =gUnknown_202297A + ldr r0, _080E02FC @ =gBattle_BG1_Y ldrh r0, [r0] strh r0, [r1, 0x1E] b _080E0384 .align 2, 0 -_080E02F0: .4byte gUnknown_2022978 +_080E02F0: .4byte gBattle_BG1_X _080E02F4: .4byte 0x0000ff79 _080E02F8: .4byte 0x0000fff6 -_080E02FC: .4byte gUnknown_202297A +_080E02FC: .4byte gBattle_BG1_Y _080E0300: .4byte gTasks _080E0304: ldr r1, _080E0338 @ =gTasks @@ -4181,7 +4181,7 @@ _080E0304: lsrs r0, 24 cmp r0, 0x1 bne _080E0348 - ldr r2, _080E0340 @ =gUnknown_2022978 + ldr r2, _080E0340 @ =gBattle_BG1_X ldr r1, _080E0344 @ =gUnknown_83FF284 movs r3, 0xC ldrsh r0, [r5, r3] @@ -4195,10 +4195,10 @@ _080E0304: .align 2, 0 _080E0338: .4byte gTasks _080E033C: .4byte gUnknown_2037F1B -_080E0340: .4byte gUnknown_2022978 +_080E0340: .4byte gBattle_BG1_X _080E0344: .4byte gUnknown_83FF284 _080E0348: - ldr r2, _080E0378 @ =gUnknown_2022978 + ldr r2, _080E0378 @ =gBattle_BG1_X ldr r1, _080E037C @ =gUnknown_83FF284 movs r3, 0xC ldrsh r0, [r5, r3] @@ -4223,7 +4223,7 @@ _080E035A: strh r0, [r1, 0x8] b _080E0476 .align 2, 0 -_080E0378: .4byte gUnknown_2022978 +_080E0378: .4byte gBattle_BG1_X _080E037C: .4byte gUnknown_83FF284 _080E0380: .4byte gTasks _080E0384: @@ -4332,10 +4332,10 @@ _080E044C: movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute - ldr r0, _080E0480 @ =gUnknown_2022978 + ldr r0, _080E0480 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080E0484 @ =gUnknown_202297A + ldr r0, _080E0484 @ =gBattle_BG1_Y strh r1, [r0] movs r0, 0x50 movs r1, 0 @@ -4351,8 +4351,8 @@ _080E0476: pop {r0} bx r0 .align 2, 0 -_080E0480: .4byte gUnknown_2022978 -_080E0484: .4byte gUnknown_202297A +_080E0480: .4byte gBattle_BG1_X +_080E0484: .4byte gBattle_BG1_Y thumb_func_end sub_80E017C thumb_func_start sub_80E0488 @@ -6291,31 +6291,31 @@ _080E136C: ldr r1, _080E13B0 @ =0x00003f42 movs r0, 0x50 bl SetGpuReg - ldr r0, _080E13B4 @ =gUnknown_2022978 + ldr r0, _080E13B4 @ =gBattle_BG1_X ldrh r5, [r0] - ldr r0, _080E13B8 @ =gUnknown_202297A + ldr r0, _080E13B8 @ =gBattle_BG1_Y b _080E13CE .align 2, 0 _080E13A4: .4byte gUnknown_2037F1B _080E13A8: .4byte gUnknown_2037F02 _080E13AC: .4byte 0x04000014 _080E13B0: .4byte 0x00003f42 -_080E13B4: .4byte gUnknown_2022978 -_080E13B8: .4byte gUnknown_202297A +_080E13B4: .4byte gBattle_BG1_X +_080E13B8: .4byte gBattle_BG1_Y _080E13BC: ldr r0, _080E1434 @ =0x04000018 str r0, [sp] ldr r1, _080E1438 @ =0x00003f44 movs r0, 0x50 bl SetGpuReg - ldr r0, _080E143C @ =gUnknown_202297C + ldr r0, _080E143C @ =gBattle_BG2_X ldrh r5, [r0] - ldr r0, _080E1440 @ =gUnknown_202297E + ldr r0, _080E1440 @ =gBattle_BG2_Y _080E13CE: ldrh r3, [r0] movs r7, 0 movs r2, 0 - ldr r6, _080E1444 @ =gUnknown_2038700 + ldr r6, _080E1444 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r6 @@ -6356,7 +6356,7 @@ _080E13DE: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams ldr r0, _080E144C @ =sub_80E1450 str r0, [r4] add sp, 0xC @@ -6366,9 +6366,9 @@ _080E13DE: .align 2, 0 _080E1434: .4byte 0x04000018 _080E1438: .4byte 0x00003f44 -_080E143C: .4byte gUnknown_202297C -_080E1440: .4byte gUnknown_202297E -_080E1444: .4byte gUnknown_2038700 +_080E143C: .4byte gBattle_BG2_X +_080E1440: .4byte gBattle_BG2_Y +_080E1444: .4byte gScanlineEffectRegBuffers _080E1448: .4byte 0xa6600001 _080E144C: .4byte sub_80E1450 thumb_func_end sub_80E12F8 @@ -6394,20 +6394,20 @@ sub_80E1450: @ 80E1450 lsrs r0, 24 cmp r0, 0x1 bne _080E1490 - ldr r0, _080E1488 @ =gUnknown_2022978 + ldr r0, _080E1488 @ =gBattle_BG1_X ldrh r0, [r0] str r0, [sp, 0x4] - ldr r0, _080E148C @ =gUnknown_202297A + ldr r0, _080E148C @ =gBattle_BG1_Y b _080E1498 .align 2, 0 _080E1484: .4byte gTasks -_080E1488: .4byte gUnknown_2022978 -_080E148C: .4byte gUnknown_202297A +_080E1488: .4byte gBattle_BG1_X +_080E148C: .4byte gBattle_BG1_Y _080E1490: - ldr r0, _080E14B0 @ =gUnknown_202297C + ldr r0, _080E14B0 @ =gBattle_BG2_X ldrh r0, [r0] str r0, [sp, 0x4] - ldr r0, _080E14B4 @ =gUnknown_202297E + ldr r0, _080E14B4 @ =gBattle_BG2_Y _080E1498: ldrh r0, [r0] str r0, [sp, 0x8] @@ -6423,8 +6423,8 @@ _080E14A6: beq _080E14C6 b _080E16F4 .align 2, 0 -_080E14B0: .4byte gUnknown_202297C -_080E14B4: .4byte gUnknown_202297E +_080E14B0: .4byte gBattle_BG2_X +_080E14B4: .4byte gBattle_BG2_Y _080E14B8: cmp r0, 0x2 bne _080E14BE @@ -6480,7 +6480,7 @@ _080E14C6: ldrsh r0, [r6, r3] cmp r1, r0 ble _080E15E6 - ldr r0, _080E163C @ =gUnknown_2039600 + ldr r0, _080E163C @ =gScanlineEffect mov r10, r0 ldr r1, [sp, 0x4] lsls r0, r1, 16 @@ -6501,7 +6501,7 @@ _080E1536: subs r0, r1 lsls r0, 7 adds r2, r0 - ldr r0, _080E1640 @ =gUnknown_2038700 + ldr r0, _080E1640 @ =gScanlineEffectRegBuffers adds r2, r0 lsls r4, 16 asrs r4, 16 @@ -6519,7 +6519,7 @@ _080E1536: subs r0, r1 lsls r0, 7 adds r3, r0 - ldr r1, _080E1640 @ =gUnknown_2038700 + ldr r1, _080E1640 @ =gScanlineEffectRegBuffers adds r3, r1 lsls r1, r7, 16 asrs r1, 16 @@ -6529,7 +6529,7 @@ _080E1536: lsls r2, r7, 16 asrs r2, 16 lsls r0, r2, 1 - ldr r7, _080E1644 @ =gUnknown_825E074 + ldr r7, _080E1644 @ =gSineTable adds r0, r7 ldrh r0, [r0] lsls r0, 16 @@ -6583,7 +6583,7 @@ _080E15E6: lsls r1, r2, 17 cmp r1, 0 blt _080E1612 - ldr r4, _080E1640 @ =gUnknown_2038700 + ldr r4, _080E1640 @ =gScanlineEffectRegBuffers ldr r7, [sp, 0x4] lsls r0, r7, 16 asrs r0, 16 @@ -6625,9 +6625,9 @@ _080E1612: strh r0, [r6, 0xE] b _080E1652 .align 2, 0 -_080E163C: .4byte gUnknown_2039600 -_080E1640: .4byte gUnknown_2038700 -_080E1644: .4byte gUnknown_825E074 +_080E163C: .4byte gScanlineEffect +_080E1640: .4byte gScanlineEffectRegBuffers +_080E1644: .4byte gSineTable _080E1648: .4byte 0xffff0000 _080E164C: ldrh r0, [r6, 0x10] @@ -6667,14 +6667,14 @@ _080E1684: asrs r0, 16 cmp r0, 0xC ble _080E16F4 - ldr r1, _080E16A0 @ =gUnknown_2039600 + ldr r1, _080E16A0 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0 strh r0, [r6, 0xC] b _080E16E6 .align 2, 0 -_080E16A0: .4byte gUnknown_2039600 +_080E16A0: .4byte gScanlineEffect _080E16A4: ldrh r0, [r6, 0xC] adds r0, 0x1 @@ -9427,7 +9427,7 @@ _080E2B80: ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r3, _080E2BBC @ =gUnknown_825E074 + ldr r3, _080E2BBC @ =gSineTable movs r0, 0x30 ldrsh r1, [r4, r0] lsls r0, r1, 2 @@ -9448,7 +9448,7 @@ _080E2B80: _080E2BB8: b _080E2CAE .align 2, 0 -_080E2BBC: .4byte gUnknown_825E074 +_080E2BBC: .4byte gSineTable _080E2BC0: ldrh r0, [r4, 0x30] adds r0, 0x1 @@ -9471,7 +9471,7 @@ _080E2BD2: ldrh r0, [r4, 0x22] subs r0, r1 strh r0, [r4, 0x22] - ldr r3, _080E2C0C @ =gUnknown_825E074 + ldr r3, _080E2C0C @ =gSineTable movs r0, 0x30 ldrsh r1, [r4, r0] lsls r0, r1, 2 @@ -9490,7 +9490,7 @@ _080E2BD2: bne _080E2CDC b _080E2CB2 .align 2, 0 -_080E2C0C: .4byte gUnknown_825E074 +_080E2C0C: .4byte gSineTable _080E2C10: ldrh r2, [r4, 0x30] adds r2, 0x1 @@ -9502,7 +9502,7 @@ _080E2C10: ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r3, _080E2C68 @ =gUnknown_825E074 + ldr r3, _080E2C68 @ =gSineTable movs r0, 0x30 ldrsh r1, [r4, r0] lsls r0, r1, 2 @@ -9537,7 +9537,7 @@ _080E2C5C: bne _080E2CDC b _080E2CAE .align 2, 0 -_080E2C68: .4byte gUnknown_825E074 +_080E2C68: .4byte gSineTable _080E2C6C: .4byte 0x000003ff _080E2C70: .4byte 0xfffffc00 _080E2C74: @@ -10738,7 +10738,7 @@ _080E3588: adds r1, 0x4 movs r5, 0 strh r1, [r4, 0x30] - ldr r2, _080E35C4 @ =gUnknown_825E074 + ldr r2, _080E35C4 @ =gSineTable movs r3, 0x30 ldrsh r0, [r4, r3] lsls r0, 1 @@ -10763,13 +10763,13 @@ _080E3588: strh r5, [r4, 0x26] b _080E361C .align 2, 0 -_080E35C4: .4byte gUnknown_825E074 +_080E35C4: .4byte gSineTable _080E35C8: ldrh r1, [r4, 0x30] adds r1, 0x6 movs r3, 0 strh r1, [r4, 0x30] - ldr r2, _080E35F4 @ =gUnknown_825E074 + ldr r2, _080E35F4 @ =gSineTable movs r5, 0x30 ldrsh r0, [r4, r5] lsls r0, 1 @@ -10787,7 +10787,7 @@ _080E35C8: strh r3, [r4, 0x26] b _080E361C .align 2, 0 -_080E35F4: .4byte gUnknown_825E074 +_080E35F4: .4byte gSineTable _080E35F8: ldrh r0, [r4, 0x30] adds r0, 0x1 @@ -12322,7 +12322,7 @@ _080E4206: adds r1, r0 lsls r1, 2 adds r1, r5 - ldr r3, _080E427C @ =gUnknown_825E074 + ldr r3, _080E427C @ =gSineTable movs r6, 0x1E ldrsh r0, [r4, r6] lsls r0, 1 @@ -12368,7 +12368,7 @@ _080E4206: b _080E42C0 .align 2, 0 _080E4278: .4byte gSprites -_080E427C: .4byte gUnknown_825E074 +_080E427C: .4byte gSineTable _080E4280: ldrh r0, [r4, 0x1E] adds r0, 0x8 @@ -12382,7 +12382,7 @@ _080E4280: adds r1, r0 lsls r1, 2 adds r1, r3 - ldr r2, _080E42CC @ =gUnknown_825E074 + ldr r2, _080E42CC @ =gSineTable movs r5, 0x1E ldrsh r0, [r4, r5] lsls r0, 1 @@ -12409,7 +12409,7 @@ _080E42C0: b _080E42D6 .align 2, 0 _080E42C8: .4byte gSprites -_080E42CC: .4byte gUnknown_825E074 +_080E42CC: .4byte gSineTable _080E42D0: adds r0, r2, 0 bl DestroyAnimVisualTask diff --git a/asm/battle_anim_80EEC0C.s b/asm/battle_anim_80EEC0C.s index 82179f2e0..dbcc63093 100644 --- a/asm/battle_anim_80EEC0C.s +++ b/asm/battle_anim_80EEC0C.s @@ -168,12 +168,12 @@ sub_80EEC0C: @ 80EEC0C lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - ldr r1, _080EEDE4 @ =gUnknown_2022978 + ldr r1, _080EEDE4 @ =gBattle_BG1_X ldrh r0, [r7, 0x20] negs r0, r0 adds r0, 0x20 strh r0, [r1] - ldr r1, _080EEDE8 @ =gUnknown_202297A + ldr r1, _080EEDE8 @ =gBattle_BG1_Y ldrh r0, [r7, 0x22] negs r0, r0 subs r0, 0x20 @@ -215,8 +215,8 @@ _080EEDD4: .4byte SpriteCallbackDummy _080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap _080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet _080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette -_080EEDE4: .4byte gUnknown_2022978 -_080EEDE8: .4byte gUnknown_202297A +_080EEDE4: .4byte gBattle_BG1_X +_080EEDE8: .4byte gBattle_BG1_Y _080EEDEC: .4byte gTasks _080EEDF0: .4byte sub_80EEDF4 thumb_func_end sub_80EEC0C @@ -241,7 +241,7 @@ sub_80EEDF4: @ 80EEDF4 adds r1, r0 movs r3, 0 strh r1, [r5, 0x22] - ldr r2, _080EEE44 @ =gUnknown_202297A + ldr r2, _080EEE44 @ =gBattle_BG1_Y lsls r0, r1, 16 lsrs r0, 24 ldrh r4, [r2] @@ -262,7 +262,7 @@ sub_80EEDF4: @ 80EEDF4 .align 2, 0 _080EEE3C: .4byte gUnknown_2037F1A _080EEE40: .4byte gTasks -_080EEE44: .4byte gUnknown_202297A +_080EEE44: .4byte gBattle_BG1_Y _080EEE48: cmp r0, 0x2 beq _080EEE9C diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index d5a9b8ae6..e2c52a592 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -4952,10 +4952,10 @@ _0803CF40: thumb_func_start sub_803CF50 sub_803CF50: @ 803CF50 push {r4,lr} - ldr r0, _0803CF84 @ =gUnknown_2022974 + ldr r0, _0803CF84 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _0803CF88 @ =gUnknown_2022976 + ldr r0, _0803CF88 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _0803CF8C @ =gActiveBattler ldrb r4, [r0] @@ -4974,8 +4974,8 @@ sub_803CF50: @ 803CF50 bl sub_80D87BC b _0803CFA0 .align 2, 0 -_0803CF84: .4byte gUnknown_2022974 -_0803CF88: .4byte gUnknown_2022976 +_0803CF84: .4byte gBattle_BG0_X +_0803CF88: .4byte gBattle_BG0_Y _0803CF8C: .4byte gActiveBattler _0803CF90: .4byte gUnknown_2022BC6 _0803CF94: .4byte gDisplayedStringBattle diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index 7480e8b12..0087859c4 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -4573,10 +4573,10 @@ _080D67BC: thumb_func_start sub_80D67CC sub_80D67CC: @ 80D67CC push {r4,lr} - ldr r0, _080D6800 @ =gUnknown_2022974 + ldr r0, _080D6800 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _080D6804 @ =gUnknown_2022976 + ldr r0, _080D6804 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _080D6808 @ =gActiveBattler ldrb r4, [r0] @@ -4595,8 +4595,8 @@ sub_80D67CC: @ 80D67CC bl sub_80D87BC b _080D681C .align 2, 0 -_080D6800: .4byte gUnknown_2022974 -_080D6804: .4byte gUnknown_2022976 +_080D6800: .4byte gBattle_BG0_X +_080D6804: .4byte gBattle_BG0_Y _080D6808: .4byte gActiveBattler _080D680C: .4byte gUnknown_2022BC6 _080D6810: .4byte gDisplayedStringBattle diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 91931bb63..7ccd33f5d 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -5776,10 +5776,10 @@ _080EA520: thumb_func_start sub_80EA52C sub_80EA52C: @ 80EA52C push {r4,lr} - ldr r0, _080EA55C @ =gUnknown_2022974 + ldr r0, _080EA55C @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _080EA560 @ =gUnknown_2022976 + ldr r0, _080EA560 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _080EA564 @ =gActiveBattler ldrb r0, [r0] @@ -5799,8 +5799,8 @@ sub_80EA52C: @ 80EA52C bl WallyBufferExecCompleted b _080EA65A .align 2, 0 -_080EA55C: .4byte gUnknown_2022974 -_080EA560: .4byte gUnknown_2022976 +_080EA55C: .4byte gBattle_BG0_X +_080EA560: .4byte gBattle_BG0_Y _080EA564: .4byte gActiveBattler _080EA568: .4byte gUnknown_2022BC6 _080EA56C: .4byte gBattleTypeFlags @@ -5951,9 +5951,9 @@ sub_80EA690: @ 80EA690 lsrs r1, r0, 24 cmp r1, 0 bne _080EA6EA - ldr r0, _080EA6C4 @ =gUnknown_2022974 + ldr r0, _080EA6C4 @ =gBattle_BG0_X strh r1, [r0] - ldr r1, _080EA6C8 @ =gUnknown_2022976 + ldr r1, _080EA6C8 @ =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r0, _080EA6CC @ =gBattleTypeFlags @@ -5970,8 +5970,8 @@ sub_80EA690: @ 80EA690 ldr r1, _080EA6D8 @ =sub_80E763C b _080EA6E8 .align 2, 0 -_080EA6C4: .4byte gUnknown_2022974 -_080EA6C8: .4byte gUnknown_2022976 +_080EA6C4: .4byte gBattle_BG0_X +_080EA6C8: .4byte gBattle_BG0_Y _080EA6CC: .4byte gBattleTypeFlags _080EA6D0: .4byte gUnknown_3004FE0 _080EA6D4: .4byte gActiveBattler @@ -6074,9 +6074,9 @@ sub_80EA798: @ 80EA798 lsrs r1, r0, 24 cmp r1, 0 bne _080EA7C2 - ldr r0, _080EA7C8 @ =gUnknown_2022974 + ldr r0, _080EA7C8 @ =gBattle_BG0_X strh r1, [r0] - ldr r1, _080EA7CC @ =gUnknown_2022976 + ldr r1, _080EA7CC @ =gBattle_BG0_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 @@ -6092,8 +6092,8 @@ _080EA7C2: pop {r0} bx r0 .align 2, 0 -_080EA7C8: .4byte gUnknown_2022974 -_080EA7CC: .4byte gUnknown_2022976 +_080EA7C8: .4byte gBattle_BG0_X +_080EA7CC: .4byte gBattle_BG0_Y _080EA7D0: .4byte gUnknown_3004FE0 _080EA7D4: .4byte gActiveBattler _080EA7D8: .4byte sub_80E7988 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 0405efdf1..12185d562 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -5113,10 +5113,10 @@ _080384AC: thumb_func_start sub_80384BC sub_80384BC: @ 80384BC push {r4,lr} - ldr r0, _080384F0 @ =gUnknown_2022974 + ldr r0, _080384F0 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _080384F4 @ =gUnknown_2022976 + ldr r0, _080384F4 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _080384F8 @ =gActiveBattler ldrb r0, [r0] @@ -5135,8 +5135,8 @@ sub_80384BC: @ 80384BC bl sub_80D87BC b _0803850C .align 2, 0 -_080384F0: .4byte gUnknown_2022974 -_080384F4: .4byte gUnknown_2022976 +_080384F0: .4byte gBattle_BG0_X +_080384F4: .4byte gBattle_BG0_Y _080384F8: .4byte gActiveBattler _080384FC: .4byte gUnknown_2022BC6 _08038500: .4byte gDisplayedStringBattle diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index d83245653..9a2ef0f7d 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -1354,10 +1354,10 @@ _0802EDF6: beq _0802EE18 movs r0, 0x5 bl PlaySE - ldr r1, _0802EF44 @ =gUnknown_2022974 + ldr r1, _0802EF44 @ =gBattle_BG0_X movs r0, 0 strh r0, [r1] - ldr r1, _0802EF48 @ =gUnknown_2022976 + ldr r1, _0802EF48 @ =gBattle_BG0_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 @@ -1505,8 +1505,8 @@ _0802EF36: bx r1 .align 2, 0 _0802EF40: .4byte gMain -_0802EF44: .4byte gUnknown_2022974 -_0802EF48: .4byte gUnknown_2022976 +_0802EF44: .4byte gBattle_BG0_X +_0802EF48: .4byte gBattle_BG0_Y _0802EF4C: .4byte gUnknown_2023FFC _0802EF50: .4byte gActiveBattler _0802EF54: .4byte gUnknown_3004FF8 @@ -4051,19 +4051,19 @@ _08030428: bne _0803051C cmp r6, 0 bne _0803044C - ldr r1, _08030444 @ =gUnknown_2022978 + ldr r1, _08030444 @ =gBattle_BG1_X ldrh r0, [r1] strh r0, [r5, 0x1C] - ldr r2, _08030448 @ =gUnknown_202297A + ldr r2, _08030448 @ =gBattle_BG1_Y b _08030454 .align 2, 0 -_08030444: .4byte gUnknown_2022978 -_08030448: .4byte gUnknown_202297A +_08030444: .4byte gBattle_BG1_X +_08030448: .4byte gBattle_BG1_Y _0803044C: - ldr r1, _08030474 @ =gUnknown_202297C + ldr r1, _08030474 @ =gBattle_BG2_X ldrh r0, [r1] strh r0, [r5, 0x1C] - ldr r2, _08030478 @ =gUnknown_202297E + ldr r2, _08030478 @ =gBattle_BG2_Y _08030454: ldrh r0, [r2] strh r0, [r5, 0x1A] @@ -4081,8 +4081,8 @@ _08030454: strh r0, [r2] b _080304E0 .align 2, 0 -_08030474: .4byte gUnknown_202297C -_08030478: .4byte gUnknown_202297E +_08030474: .4byte gBattle_BG2_X +_08030478: .4byte gBattle_BG2_Y _0803047C: adds r0, r7, 0 adds r1, r6, 0 @@ -4138,19 +4138,19 @@ _080304E0: _080304E8: cmp r6, 0 bne _08030500 - ldr r1, _080304F8 @ =gUnknown_2022978 + ldr r1, _080304F8 @ =gBattle_BG1_X ldrh r0, [r5, 0x1C] strh r0, [r1] - ldr r1, _080304FC @ =gUnknown_202297A + ldr r1, _080304FC @ =gBattle_BG1_Y b _08030508 .align 2, 0 -_080304F8: .4byte gUnknown_2022978 -_080304FC: .4byte gUnknown_202297A +_080304F8: .4byte gBattle_BG1_X +_080304FC: .4byte gBattle_BG1_Y _08030500: - ldr r1, _08030528 @ =gUnknown_202297C + ldr r1, _08030528 @ =gBattle_BG2_X ldrh r0, [r5, 0x1C] strh r0, [r1] - ldr r1, _0803052C @ =gUnknown_202297E + ldr r1, _0803052C @ =gBattle_BG2_Y _08030508: ldrh r0, [r5, 0x1A] strh r0, [r1] @@ -4169,8 +4169,8 @@ _0803051C: pop {r0} bx r0 .align 2, 0 -_08030528: .4byte gUnknown_202297C -_0803052C: .4byte gUnknown_202297E +_08030528: .4byte gBattle_BG2_X +_0803052C: .4byte gBattle_BG2_Y _08030530: .4byte gUnknown_3004FE0 _08030534: .4byte sub_802FE94 thumb_func_end sub_80303A8 @@ -4964,10 +4964,10 @@ PrintLinkStandbyMsg: @ 8030B5C ands r0, r1 cmp r0, 0 beq _08030B7C - ldr r0, _08030B84 @ =gUnknown_2022974 + ldr r0, _08030B84 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _08030B88 @ =gUnknown_2022976 + ldr r0, _08030B88 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _08030B8C @ =gUnknown_83FE714 movs r1, 0 @@ -4977,8 +4977,8 @@ _08030B7C: bx r0 .align 2, 0 _08030B80: .4byte gBattleTypeFlags -_08030B84: .4byte gUnknown_2022974 -_08030B88: .4byte gUnknown_2022976 +_08030B84: .4byte gBattle_BG0_X +_08030B88: .4byte gBattle_BG0_Y _08030B8C: .4byte gUnknown_83FE714 thumb_func_end PrintLinkStandbyMsg @@ -8747,10 +8747,10 @@ _08032AEC: thumb_func_start sub_8032AFC sub_8032AFC: @ 8032AFC push {r4,lr} - ldr r0, _08032B30 @ =gUnknown_2022974 + ldr r0, _08032B30 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _08032B34 @ =gUnknown_2022976 + ldr r0, _08032B34 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _08032B38 @ =gActiveBattler ldrb r4, [r0] @@ -8769,8 +8769,8 @@ sub_8032AFC: @ 8032AFC bl sub_80D87BC b _08032B4C .align 2, 0 -_08032B30: .4byte gUnknown_2022974 -_08032B34: .4byte gUnknown_2022976 +_08032B30: .4byte gBattle_BG0_X +_08032B34: .4byte gBattle_BG0_Y _08032B38: .4byte gActiveBattler _08032B3C: .4byte gUnknown_2022BC6 _08032B40: .4byte gDisplayedStringBattle @@ -8824,9 +8824,9 @@ sub_8032B94: @ 8032B94 lsrs r1, r0, 24 cmp r1, 0 bne _08032BBA - ldr r0, _08032BC0 @ =gUnknown_2022974 + ldr r0, _08032BC0 @ =gBattle_BG0_X strh r1, [r0] - ldr r1, _08032BC4 @ =gUnknown_2022976 + ldr r1, _08032BC4 @ =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r1, _08032BC8 @ =gUnknown_3004FE0 @@ -8840,8 +8840,8 @@ _08032BBA: pop {r0} bx r0 .align 2, 0 -_08032BC0: .4byte gUnknown_2022974 -_08032BC4: .4byte gUnknown_2022976 +_08032BC0: .4byte gBattle_BG0_X +_08032BC4: .4byte gBattle_BG0_Y _08032BC8: .4byte gUnknown_3004FE0 _08032BCC: .4byte gActiveBattler _08032BD0: .4byte sub_802E438 @@ -8910,9 +8910,9 @@ sub_8032C4C: @ 8032C4C lsrs r1, r0, 24 cmp r1, 0 bne _08032C76 - ldr r0, _08032C7C @ =gUnknown_2022974 + ldr r0, _08032C7C @ =gBattle_BG0_X strh r1, [r0] - ldr r1, _08032C80 @ =gUnknown_2022976 + ldr r1, _08032C80 @ =gBattle_BG0_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 @@ -8928,8 +8928,8 @@ _08032C76: pop {r0} bx r0 .align 2, 0 -_08032C7C: .4byte gUnknown_2022974 -_08032C80: .4byte gUnknown_2022976 +_08032C7C: .4byte gBattle_BG0_X +_08032C80: .4byte gBattle_BG0_Y _08032C84: .4byte gUnknown_3004FE0 _08032C88: .4byte gActiveBattler _08032C8C: .4byte sub_802EA10 diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 58fad294a..957a6f658 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -5055,10 +5055,10 @@ _08158A7C: thumb_func_start sub_8158A88 sub_8158A88: @ 8158A88 push {r4,lr} - ldr r0, _08158ABC @ =gUnknown_2022974 + ldr r0, _08158ABC @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _08158AC0 @ =gUnknown_2022976 + ldr r0, _08158AC0 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _08158AC4 @ =gActiveBattler ldrb r4, [r0] @@ -5077,8 +5077,8 @@ sub_8158A88: @ 8158A88 bl sub_80D87BC b _08158AD8 .align 2, 0 -_08158ABC: .4byte gUnknown_2022974 -_08158AC0: .4byte gUnknown_2022976 +_08158ABC: .4byte gBattle_BG0_X +_08158AC0: .4byte gBattle_BG0_Y _08158AC4: .4byte gActiveBattler _08158AC8: .4byte gUnknown_2022BC6 _08158ACC: .4byte gDisplayedStringBattle @@ -5132,9 +5132,9 @@ sub_8158B20: @ 8158B20 lsrs r1, r0, 24 cmp r1, 0 bne _08158B46 - ldr r0, _08158B4C @ =gUnknown_2022974 + ldr r0, _08158B4C @ =gBattle_BG0_X strh r1, [r0] - ldr r1, _08158B50 @ =gUnknown_2022976 + ldr r1, _08158B50 @ =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r1, _08158B54 @ =gUnknown_3004FE0 @@ -5148,8 +5148,8 @@ _08158B46: pop {r0} bx r0 .align 2, 0 -_08158B4C: .4byte gUnknown_2022974 -_08158B50: .4byte gUnknown_2022976 +_08158B4C: .4byte gBattle_BG0_X +_08158B50: .4byte gBattle_BG0_Y _08158B54: .4byte gUnknown_3004FE0 _08158B58: .4byte gActiveBattler _08158B5C: .4byte sub_8156140 @@ -5238,9 +5238,9 @@ sub_8158C04: @ 8158C04 lsrs r1, r0, 24 cmp r1, 0 bne _08158C2E - ldr r0, _08158C34 @ =gUnknown_2022974 + ldr r0, _08158C34 @ =gBattle_BG0_X strh r1, [r0] - ldr r1, _08158C38 @ =gUnknown_2022976 + ldr r1, _08158C38 @ =gBattle_BG0_Y movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 @@ -5256,8 +5256,8 @@ _08158C2E: pop {r0} bx r0 .align 2, 0 -_08158C34: .4byte gUnknown_2022974 -_08158C38: .4byte gUnknown_2022976 +_08158C34: .4byte gBattle_BG0_X +_08158C38: .4byte gBattle_BG0_Y _08158C3C: .4byte gUnknown_3004FE0 _08158C40: .4byte gActiveBattler _08158C44: .4byte sub_81564E4 @@ -7250,7 +7250,7 @@ _08159C14: lsls r0, 2 adds r0, r5 ldr r1, [r0] - ldr r0, _08159C40 @ =gUnknown_2022976 + ldr r0, _08159C40 @ =gBattle_BG0_Y ldrh r0, [r0] strb r0, [r1, 0x4] bl sub_80EB30C @@ -7260,9 +7260,9 @@ _08159C14: b _08159C9E .align 2, 0 _08159C3C: .4byte gPaletteFade -_08159C40: .4byte gUnknown_2022976 +_08159C40: .4byte gBattle_BG0_Y _08159C44: - ldr r1, _08159C5C @ =gUnknown_2022976 + ldr r1, _08159C5C @ =gBattle_BG0_Y movs r0, 0 strh r0, [r1] bl sub_8159EF0 @@ -7272,7 +7272,7 @@ _08159C44: bl sub_80D87BC b _08159C94 .align 2, 0 -_08159C5C: .4byte gUnknown_2022976 +_08159C5C: .4byte gBattle_BG0_Y _08159C60: .4byte gDisplayedStringBattle _08159C64: movs r0, 0x18 @@ -7331,7 +7331,7 @@ _08159CB4: ldr r0, _08159CFC @ =0x00000137 bl PlayBGM _08159CD8: - ldr r1, _08159D00 @ =gUnknown_2022976 + ldr r1, _08159D00 @ =gBattle_BG0_Y ldrb r0, [r4] lsls r0, 2 adds r0, r5 @@ -7348,7 +7348,7 @@ _08159CEE: .align 2, 0 _08159CF8: .4byte gPaletteFade _08159CFC: .4byte 0x00000137 -_08159D00: .4byte gUnknown_2022976 +_08159D00: .4byte gBattle_BG0_Y thumb_func_end sub_8159BA8 thumb_func_start sub_8159D04 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index 405d4c45b..e8edcb7fd 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -849,10 +849,10 @@ sub_80DDB94: @ 80DDB94 thumb_func_start sub_80DDBA0 sub_80DDBA0: @ 80DDBA0 push {r4,lr} - ldr r0, _080DDBD4 @ =gUnknown_2022974 + ldr r0, _080DDBD4 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _080DDBD8 @ =gUnknown_2022976 + ldr r0, _080DDBD8 @ =gBattle_BG0_Y strh r1, [r0] ldr r0, _080DDBDC @ =gActiveBattler ldrb r4, [r0] @@ -871,8 +871,8 @@ sub_80DDBA0: @ 80DDBA0 bl sub_80D87BC b _080DDBF0 .align 2, 0 -_080DDBD4: .4byte gUnknown_2022974 -_080DDBD8: .4byte gUnknown_2022976 +_080DDBD4: .4byte gBattle_BG0_X +_080DDBD8: .4byte gBattle_BG0_Y _080DDBDC: .4byte gActiveBattler _080DDBE0: .4byte gUnknown_2022BC6 _080DDBE4: .4byte gDisplayedStringBattle @@ -926,9 +926,9 @@ sub_80DDC38: @ 80DDC38 lsrs r1, r0, 24 cmp r1, 0 bne _080DDC5E - ldr r0, _080DDC64 @ =gUnknown_2022974 + ldr r0, _080DDC64 @ =gBattle_BG0_X strh r1, [r0] - ldr r1, _080DDC68 @ =gUnknown_2022976 + ldr r1, _080DDC68 @ =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] ldr r1, _080DDC6C @ =gUnknown_3004FE0 @@ -942,8 +942,8 @@ _080DDC5E: pop {r0} bx r0 .align 2, 0 -_080DDC64: .4byte gUnknown_2022974 -_080DDC68: .4byte gUnknown_2022976 +_080DDC64: .4byte gBattle_BG0_X +_080DDC68: .4byte gBattle_BG0_Y _080DDC6C: .4byte gUnknown_3004FE0 _080DDC70: .4byte gActiveBattler _080DDC74: .4byte HandleInputChooseAction_0 diff --git a/asm/battle_records.s b/asm/battle_records.s index 392161676..c407a988a 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -471,7 +471,7 @@ _080CD604: .4byte 0x81000800 thumb_func_start sub_80CD608 sub_80CD608: @ 80CD608 push {lr} - bl remove_some_task + bl ScanlineEffect_Stop bl ResetTasks bl ResetSpriteData bl dp13_810BB8C diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index ed0e6cb50..b01533468 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -17358,7 +17358,7 @@ _08026244: .4byte _08026380 .4byte _080263C4 _0802626C: - ldr r1, _08026290 @ =gUnknown_202297E + ldr r1, _08026290 @ =gBattle_BG2_Y movs r0, 0x60 strh r0, [r1] movs r0, 0x2 @@ -17373,7 +17373,7 @@ _0802626C: strb r0, [r1, 0x1E] b _080263F6 .align 2, 0 -_08026290: .4byte gUnknown_202297E +_08026290: .4byte gBattle_BG2_Y _08026294: .4byte gBattleScripting _08026298: bl sub_80264D0 @@ -17389,10 +17389,10 @@ _080262A4: .align 2, 0 _080262AC: .4byte gBattleScripting _080262B0: - ldr r1, _080262F8 @ =gUnknown_2022978 + ldr r1, _080262F8 @ =gBattle_BG1_X movs r0, 0 strh r0, [r1] - ldr r1, _080262FC @ =gUnknown_202297A + ldr r1, _080262FC @ =gBattle_BG1_Y movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 @@ -17421,8 +17421,8 @@ _080262B0: strb r0, [r1, 0x1E] b _080263F6 .align 2, 0 -_080262F8: .4byte gUnknown_2022978 -_080262FC: .4byte gUnknown_202297A +_080262F8: .4byte gBattle_BG1_X +_080262FC: .4byte gBattle_BG1_Y _08026300: .4byte gBattleScripting _08026304: bl sub_8026404 @@ -17438,11 +17438,11 @@ _08026318: lsrs r1, r0, 24 cmp r1, 0 bne _080263F6 - ldr r0, _0802632C @ =gUnknown_202297A + ldr r0, _0802632C @ =gBattle_BG1_Y strh r1, [r0] b _0802636E .align 2, 0 -_0802632C: .4byte gUnknown_202297A +_0802632C: .4byte gBattle_BG1_Y _08026330: ldr r0, _0802634C @ =gMain ldrh r0, [r0, 0x2E] @@ -17601,10 +17601,10 @@ _0802647C: .4byte gPlayerParty thumb_func_start sub_8026480 sub_8026480: @ 8026480 push {lr} - ldr r1, _080264C0 @ =gUnknown_202297E + ldr r1, _080264C0 @ =gBattle_BG2_Y movs r0, 0 strh r0, [r1] - ldr r1, _080264C4 @ =gUnknown_202297C + ldr r1, _080264C4 @ =gBattle_BG2_X movs r2, 0xD0 lsls r2, 1 adds r0, r2, 0 @@ -17627,8 +17627,8 @@ sub_8026480: @ 8026480 pop {r0} bx r0 .align 2, 0 -_080264C0: .4byte gUnknown_202297E -_080264C4: .4byte gUnknown_202297C +_080264C0: .4byte gBattle_BG2_Y +_080264C4: .4byte gBattle_BG2_X _080264C8: .4byte gUnknown_82506D0 _080264CC: .4byte gUnknown_82506F0 thumb_func_end sub_8026480 @@ -17643,7 +17643,7 @@ sub_80264D0: @ 80264D0 movs r0, 0x1 b _0802651A _080264E0: - ldr r4, _080264F0 @ =gUnknown_202297C + ldr r4, _080264F0 @ =gBattle_BG2_X ldrh r1, [r4] movs r5, 0x80 lsls r5, 2 @@ -17652,7 +17652,7 @@ _080264E0: movs r0, 0 b _0802651A .align 2, 0 -_080264F0: .4byte gUnknown_202297C +_080264F0: .4byte gBattle_BG2_X _080264F4: movs r0, 0xD0 lsls r0, 1 @@ -17823,7 +17823,7 @@ _08026624: thumb_func_start sub_8026648 sub_8026648: @ 8026648 push {lr} - ldr r0, _0802665C @ =gUnknown_202297C + ldr r0, _0802665C @ =gBattle_BG2_X ldrh r1, [r0] movs r3, 0xD0 lsls r3, 1 @@ -17833,7 +17833,7 @@ sub_8026648: @ 8026648 movs r0, 0 b _08026684 .align 2, 0 -_0802665C: .4byte gUnknown_202297C +_0802665C: .4byte gBattle_BG2_X _08026660: ldrh r0, [r2] adds r1, r0, 0 @@ -17930,7 +17930,7 @@ PutMonIconOnLvlUpBox: @ 8026688 adds r1, r2 movs r0, 0 strh r0, [r1, 0x2E] - ldr r0, _08026750 @ =gUnknown_202297C + ldr r0, _08026750 @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r1, 0x30] add sp, 0x10 @@ -17948,14 +17948,14 @@ _08026740: .4byte 0xd75a0000 _08026744: .4byte 0x0000d75a _08026748: .4byte gUnknown_82507C8 _0802674C: .4byte gSprites -_08026750: .4byte gUnknown_202297C +_08026750: .4byte gBattle_BG2_X thumb_func_end PutMonIconOnLvlUpBox thumb_func_start SpriteCB_MonIconOnLvlUpBox SpriteCB_MonIconOnLvlUpBox: @ 8026754 push {r4,lr} adds r2, r0, 0 - ldr r0, _08026770 @ =gUnknown_202297C + ldr r0, _08026770 @ =gBattle_BG2_X ldrh r1, [r2, 0x30] ldrh r0, [r0] subs r1, r0 @@ -17967,7 +17967,7 @@ SpriteCB_MonIconOnLvlUpBox: @ 8026754 strh r0, [r2, 0x2E] b _08026790 .align 2, 0 -_08026770: .4byte gUnknown_202297C +_08026770: .4byte gBattle_BG2_X _08026774: movs r1, 0x2E ldrsh r0, [r2, r1] @@ -32507,14 +32507,14 @@ _0802DAC4: .4byte sub_80116F4 _0802DAC8: bl sub_800F34C bl LoadBattleTextboxAndBackground - ldr r1, _0802DADC @ =gUnknown_2022980 + ldr r1, _0802DADC @ =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] b _0802DB34 .align 2, 0 -_0802DADC: .4byte gUnknown_2022980 +_0802DADC: .4byte gBattle_BG3_X _0802DAE0: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 diff --git a/asm/battle_transition.s b/asm/battle_transition.s index ae1c7fa08..195d67c8c 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -463,7 +463,7 @@ sub_80D0C0C: @ 80D0C0C sub sp, 0x8 adds r5, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear movs r0, 0x1 negs r0, r0 movs r4, 0 @@ -472,7 +472,7 @@ sub_80D0C0C: @ 80D0C0C movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _080D0C68 @ =gUnknown_2038E80 + ldr r0, _080D0C68 @ =gScanlineEffectRegBuffers + 0x780 ldr r1, _080D0C6C @ =gUnknown_2039A2C ldr r1, [r1] movs r2, 0x14 @@ -498,7 +498,7 @@ sub_80D0C0C: @ 80D0C0C pop {r1} bx r1 .align 2, 0 -_080D0C68: .4byte gUnknown_2038E80 +_080D0C68: .4byte gScanlineEffectRegBuffers + 0x780 _080D0C6C: .4byte gUnknown_2039A2C _080D0C70: .4byte sub_80D0CF0 _080D0C74: .4byte sub_80D0D28 @@ -519,7 +519,7 @@ sub_80D0C78: @ 80D0C78 ldrh r1, [r0, 0xC] adds r1, 0x8 strh r1, [r0, 0xC] - ldr r3, _080D0CE4 @ =gUnknown_2038700 + ldr r3, _080D0CE4 @ =gScanlineEffectRegBuffers ldr r1, [r4] movs r2, 0x14 ldrsh r1, [r1, r2] @@ -557,7 +557,7 @@ _080D0CCA: bx r1 .align 2, 0 _080D0CE0: .4byte gUnknown_2039A2C -_080D0CE4: .4byte gUnknown_2038700 +_080D0CE4: .4byte gScanlineEffectRegBuffers _080D0CE8: .4byte gPaletteFade _080D0CEC: .4byte sub_80D0BD4 thumb_func_end sub_80D0C78 @@ -572,7 +572,7 @@ sub_80D0CF0: @ 80D0CF0 cmp r0, 0 beq _080D0D14 ldr r1, _080D0D1C @ =0x040000d4 - ldr r0, _080D0D20 @ =gUnknown_2038700 + ldr r0, _080D0D20 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -587,13 +587,13 @@ _080D0D14: .align 2, 0 _080D0D18: .4byte gUnknown_2039A2C _080D0D1C: .4byte 0x040000d4 -_080D0D20: .4byte gUnknown_2038700 +_080D0D20: .4byte gScanlineEffectRegBuffers _080D0D24: .4byte 0x800000a0 thumb_func_end sub_80D0CF0 thumb_func_start sub_80D0D28 sub_80D0D28: @ 80D0D28 - ldr r1, _080D0D48 @ =gUnknown_2038700 + ldr r1, _080D0D48 @ =gScanlineEffectRegBuffers ldr r0, _080D0D4C @ =0x04000006 ldrh r0, [r0] lsls r0, 1 @@ -610,7 +610,7 @@ sub_80D0D28: @ 80D0D28 strh r1, [r0] bx lr .align 2, 0 -_080D0D48: .4byte gUnknown_2038700 +_080D0D48: .4byte gScanlineEffectRegBuffers _080D0D4C: .4byte 0x04000006 _080D0D50: .4byte 0x04000014 thumb_func_end sub_80D0D28 @@ -651,7 +651,7 @@ sub_80D0D8C: @ 80D0D8C sub sp, 0x4 adds r4, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear movs r0, 0x1 negs r0, r0 movs r1, 0 @@ -662,7 +662,7 @@ sub_80D0D8C: @ 80D0D8C bl BeginNormalPaletteFade ldr r0, _080D0DE0 @ =gUnknown_2039A2C ldr r1, [r0] - ldr r0, _080D0DE4 @ =gUnknown_2038E80 + ldr r0, _080D0DE4 @ =gScanlineEffectRegBuffers + 0x780 movs r2, 0x16 ldrsh r1, [r1, r2] movs r2, 0xA0 @@ -684,7 +684,7 @@ sub_80D0D8C: @ 80D0D8C bx r1 .align 2, 0 _080D0DE0: .4byte gUnknown_2039A2C -_080D0DE4: .4byte gUnknown_2038E80 +_080D0DE4: .4byte gScanlineEffectRegBuffers + 0x780 _080D0DE8: .4byte sub_80D0E80 _080D0DEC: .4byte sub_80D0EB8 thumb_func_end sub_80D0D8C @@ -715,7 +715,7 @@ _080D0E18: lsrs r0, r4, 8 asrs r1, r7, 16 bl Sin - ldr r1, _080D0E74 @ =gUnknown_2038700 + ldr r1, _080D0E74 @ =gScanlineEffectRegBuffers lsls r2, r5, 1 adds r2, r1 ldr r6, _080D0E70 @ =gUnknown_2039A2C @@ -756,7 +756,7 @@ _080D0E5E: bx r1 .align 2, 0 _080D0E70: .4byte gUnknown_2039A2C -_080D0E74: .4byte gUnknown_2038700 +_080D0E74: .4byte gScanlineEffectRegBuffers _080D0E78: .4byte gPaletteFade _080D0E7C: .4byte sub_80D0D54 thumb_func_end sub_80D0DF0 @@ -771,7 +771,7 @@ sub_80D0E80: @ 80D0E80 cmp r0, 0 beq _080D0EA4 ldr r1, _080D0EAC @ =0x040000d4 - ldr r0, _080D0EB0 @ =gUnknown_2038700 + ldr r0, _080D0EB0 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -786,13 +786,13 @@ _080D0EA4: .align 2, 0 _080D0EA8: .4byte gUnknown_2039A2C _080D0EAC: .4byte 0x040000d4 -_080D0EB0: .4byte gUnknown_2038700 +_080D0EB0: .4byte gScanlineEffectRegBuffers _080D0EB4: .4byte 0x800000a0 thumb_func_end sub_80D0E80 thumb_func_start sub_80D0EB8 sub_80D0EB8: @ 80D0EB8 - ldr r1, _080D0ED8 @ =gUnknown_2038700 + ldr r1, _080D0ED8 @ =gScanlineEffectRegBuffers ldr r0, _080D0EDC @ =0x04000006 ldrh r0, [r0] lsls r0, 1 @@ -809,7 +809,7 @@ sub_80D0EB8: @ 80D0EB8 strh r1, [r0] bx lr .align 2, 0 -_080D0ED8: .4byte gUnknown_2038700 +_080D0ED8: .4byte gScanlineEffectRegBuffers _080D0EDC: .4byte 0x04000006 _080D0EE0: .4byte 0x04000016 thumb_func_end sub_80D0EB8 @@ -850,7 +850,7 @@ sub_80D0F1C: @ 80D0F1C sub sp, 0xC adds r4, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear movs r1, 0 movs r0, 0x10 strh r0, [r4, 0xA] @@ -878,7 +878,7 @@ sub_80D0F1C: @ 80D0F1C movs r1, 0 add r5, sp, 0x4 add r6, sp, 0x8 - ldr r3, _080D0FC0 @ =gUnknown_2038E80 + ldr r3, _080D0FC0 @ =gScanlineEffectRegBuffers + 0x780 movs r2, 0xF0 _080D0F64: lsls r0, r1, 1 @@ -921,7 +921,7 @@ _080D0F64: .align 2, 0 _080D0FB8: .4byte gUnknown_2039A2C _080D0FBC: .4byte 0x00003f41 -_080D0FC0: .4byte gUnknown_2038E80 +_080D0FC0: .4byte gScanlineEffectRegBuffers + 0x780 _080D0FC4: .4byte sub_80D1370 _080D0FC8: .4byte 0x01000400 _080D0FCC: .4byte gUnknown_83F87A0 @@ -943,7 +943,7 @@ sub_80D0FD4: @ 80D0FD4 movs r1, 0 ldr r0, [sp, 0x8] mov r9, r0 - ldr r6, _080D1060 @ =gUnknown_2038700 + ldr r6, _080D1060 @ =gScanlineEffectRegBuffers mov r8, r6 movs r0, 0xF0 lsls r0, 8 @@ -1000,7 +1000,7 @@ _080D1000: bx r1 .align 2, 0 _080D105C: .4byte gUnknown_83FA784 -_080D1060: .4byte gUnknown_2038700 +_080D1060: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D0FD4 thumb_func_start sub_80D1064 @@ -1053,7 +1053,7 @@ _080D10AE: ldrh r5, [r3, 0x12] adds r1, r5 strh r1, [r3, 0x12] - ldr r0, _080D10F4 @ =gUnknown_2038700 + ldr r0, _080D10F4 @ =gScanlineEffectRegBuffers movs r5, 0x10 ldrsh r2, [r3, r5] lsls r1, 16 @@ -1077,7 +1077,7 @@ _080D10AE: .align 2, 0 _080D10EC: .4byte gUnknown_2039A2C _080D10F0: .4byte 0xfffffe80 -_080D10F4: .4byte gUnknown_2038700 +_080D10F4: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D1064 thumb_func_start sub_80D10F8 @@ -1139,7 +1139,7 @@ _080D1160: movs r0, 0 _080D1162: strh r0, [r3, 0x12] - ldr r0, _080D1194 @ =gUnknown_2038700 + ldr r0, _080D1194 @ =gScanlineEffectRegBuffers movs r1, 0x10 ldrsh r2, [r3, r1] ldrh r1, [r3, 0x12] @@ -1163,7 +1163,7 @@ _080D1162: pop {r1} bx r1 .align 2, 0 -_080D1194: .4byte gUnknown_2038700 +_080D1194: .4byte gScanlineEffectRegBuffers _080D1198: .4byte gUnknown_2039A2C thumb_func_end sub_80D10F8 @@ -1195,7 +1195,7 @@ _080D11C8: .4byte 0xfffffe80 _080D11CC: strh r2, [r4, 0x12] _080D11CE: - ldr r0, _080D1218 @ =gUnknown_2038700 + ldr r0, _080D1218 @ =gScanlineEffectRegBuffers movs r3, 0x10 ldrsh r2, [r4, r3] ldrh r1, [r4, 0x12] @@ -1233,7 +1233,7 @@ _080D1202: pop {r1} bx r1 .align 2, 0 -_080D1218: .4byte gUnknown_2038700 +_080D1218: .4byte gScanlineEffectRegBuffers _080D121C: .4byte gUnknown_2039A2C thumb_func_end sub_80D119C @@ -1272,7 +1272,7 @@ _080D1242: bge _080D125E strh r3, [r4, 0xA] _080D125E: - ldr r0, _080D12CC @ =gUnknown_2038700 + ldr r0, _080D12CC @ =gScanlineEffectRegBuffers movs r1, 0xA ldrsh r3, [r4, r1] movs r1, 0x78 @@ -1322,7 +1322,7 @@ _080D12AE: .align 2, 0 _080D12C4: .4byte gUnknown_2039A2C _080D12C8: .4byte 0x000007ff -_080D12CC: .4byte gUnknown_2038700 +_080D12CC: .4byte gScanlineEffectRegBuffers _080D12D0: .4byte 0x040000b0 _080D12D4: .4byte 0x0000c5ff _080D12D8: .4byte 0x00007fff @@ -1350,7 +1350,7 @@ sub_80D12E4: @ 80D12E4 cmp r0, 0 beq _080D131C ldr r1, _080D1364 @ =0x040000d4 - ldr r0, _080D1368 @ =gUnknown_2038700 + ldr r0, _080D1368 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -1389,7 +1389,7 @@ _080D1358: .4byte 0x0000c5ff _080D135C: .4byte 0x00007fff _080D1360: .4byte gUnknown_2039A2C _080D1364: .4byte 0x040000d4 -_080D1368: .4byte gUnknown_2038700 +_080D1368: .4byte gScanlineEffectRegBuffers _080D136C: .4byte 0x800000a0 thumb_func_end sub_80D12E4 @@ -1398,7 +1398,7 @@ sub_80D1370: @ 80D1370 push {lr} bl sub_80D12E4 ldr r1, _080D138C @ =0x040000b0 - ldr r0, _080D1390 @ =gUnknown_2038E80 + ldr r0, _080D1390 @ =gScanlineEffectRegBuffers + 0x780 str r0, [r1] ldr r0, _080D1394 @ =0x04000010 str r0, [r1, 0x4] @@ -1409,7 +1409,7 @@ sub_80D1370: @ 80D1370 bx r0 .align 2, 0 _080D138C: .4byte 0x040000b0 -_080D1390: .4byte gUnknown_2038E80 +_080D1390: .4byte gScanlineEffectRegBuffers + 0x780 _080D1394: .4byte 0x04000010 _080D1398: .4byte 0xa2400001 thumb_func_end sub_80D1370 @@ -1419,7 +1419,7 @@ sub_80D139C: @ 80D139C push {lr} bl sub_80D12E4 ldr r1, _080D13B8 @ =0x040000b0 - ldr r0, _080D13BC @ =gUnknown_2038E80 + ldr r0, _080D13BC @ =gScanlineEffectRegBuffers + 0x780 str r0, [r1] ldr r0, _080D13C0 @ =0x04000040 str r0, [r1, 0x4] @@ -1430,7 +1430,7 @@ sub_80D139C: @ 80D139C bx r0 .align 2, 0 _080D13B8: .4byte 0x040000b0 -_080D13BC: .4byte gUnknown_2038E80 +_080D13BC: .4byte gScanlineEffectRegBuffers + 0x780 _080D13C0: .4byte 0x04000040 _080D13C4: .4byte 0xa2400001 thumb_func_end sub_80D139C @@ -1782,7 +1782,7 @@ sub_80D1670: @ 80D1670 push {r4,lr} adds r4, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear ldr r0, _080D16C4 @ =gUnknown_2039A2C ldr r1, [r0] movs r0, 0 @@ -1794,7 +1794,7 @@ sub_80D1670: @ 80D1670 movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 - ldr r3, _080D16CC @ =gUnknown_2038E80 + ldr r3, _080D16CC @ =gScanlineEffectRegBuffers + 0x780 ldr r2, _080D16D0 @ =0x0000f3f4 _080D1696: lsls r0, r1, 1 @@ -1821,7 +1821,7 @@ _080D1696: .align 2, 0 _080D16C4: .4byte gUnknown_2039A2C _080D16C8: .4byte 0x0000f0f1 -_080D16CC: .4byte gUnknown_2038E80 +_080D16CC: .4byte gScanlineEffectRegBuffers + 0x780 _080D16D0: .4byte 0x0000f3f4 _080D16D4: .4byte sub_80D1ABC thumb_func_end sub_80D1670 @@ -1850,7 +1850,7 @@ sub_80D16D8: @ 80D16D8 movs r1, 0x78 movs r2, 0x50 bl sub_80D4088 - ldr r5, _080D1764 @ =gUnknown_2038700 + ldr r5, _080D1764 @ =gScanlineEffectRegBuffers _080D1708: ldr r4, _080D1760 @ =gUnknown_2039A2C ldr r0, [r4] @@ -1898,7 +1898,7 @@ _080D174C: bx r1 .align 2, 0 _080D1760: .4byte gUnknown_2039A2C -_080D1764: .4byte gUnknown_2038700 +_080D1764: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D16D8 thumb_func_start sub_80D1768 @@ -1947,7 +1947,7 @@ _080D17A6: ldrh r1, [r3, 0x28] movs r4, 0xF0 _080D17BE: - ldr r6, _080D17F0 @ =gUnknown_2038700 + ldr r6, _080D17F0 @ =gScanlineEffectRegBuffers movs r0, 0x2A ldrsh r2, [r3, r0] lsls r2, 1 @@ -1970,7 +1970,7 @@ _080D17BE: b _080D17A6 .align 2, 0 _080D17EC: .4byte gUnknown_2039A2C -_080D17F0: .4byte gUnknown_2038700 +_080D17F0: .4byte gScanlineEffectRegBuffers _080D17F4: ldr r1, [r7] ldrh r0, [r1, 0x2E] @@ -2051,7 +2051,7 @@ sub_80D185C: @ 80D185C movs r1, 0x78 movs r2, 0x50 bl sub_80D4088 - ldr r5, _080D18E0 @ =gUnknown_2038700 + ldr r5, _080D18E0 @ =gScanlineEffectRegBuffers _080D188A: ldr r4, _080D18DC @ =gUnknown_2039A2C ldr r0, [r4] @@ -2096,7 +2096,7 @@ _080D18C8: bx r1 .align 2, 0 _080D18DC: .4byte gUnknown_2039A2C -_080D18E0: .4byte gUnknown_2038700 +_080D18E0: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D185C thumb_func_start sub_80D18E4 @@ -2129,7 +2129,7 @@ sub_80D18E4: @ 80D18E4 movs r2, 0x50 movs r3, 0 bl sub_80D4088 - ldr r7, _080D1970 @ =gUnknown_2038700 + ldr r7, _080D1970 @ =gScanlineEffectRegBuffers mov r10, r7 ldr r0, _080D196C @ =gUnknown_2039A2C mov r8, r0 @@ -2171,7 +2171,7 @@ _080D1948: b _080D1928 .align 2, 0 _080D196C: .4byte gUnknown_2039A2C -_080D1970: .4byte gUnknown_2038700 +_080D1970: .4byte gScanlineEffectRegBuffers _080D1974: mov r0, r8 ldr r2, [r0] @@ -2193,7 +2193,7 @@ _080D1992: ldrsh r0, [r2, r4] cmp r0, r3 ble _080D19BC - ldr r6, _080D19DC @ =gUnknown_2038700 + ldr r6, _080D19DC @ =gScanlineEffectRegBuffers adds r3, r1, 0 ldr r5, _080D19E0 @ =gUnknown_2039A2C _080D19A0: @@ -2228,7 +2228,7 @@ _080D19BC: pop {r1} bx r1 .align 2, 0 -_080D19DC: .4byte gUnknown_2038700 +_080D19DC: .4byte gScanlineEffectRegBuffers _080D19E0: .4byte gUnknown_2039A2C thumb_func_end sub_80D18E4 @@ -2254,7 +2254,7 @@ sub_80D19E4: @ 80D19E4 movs r1, 0x78 movs r2, 0x50 bl sub_80D4088 - ldr r6, _080D1A78 @ =gUnknown_2038700 + ldr r6, _080D1A78 @ =gScanlineEffectRegBuffers _080D1A10: movs r2, 0x78 ldr r5, _080D1A74 @ =gUnknown_2039A2C @@ -2308,7 +2308,7 @@ _080D1A5E: bx r1 .align 2, 0 _080D1A74: .4byte gUnknown_2039A2C -_080D1A78: .4byte gUnknown_2038700 +_080D1A78: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D19E4 thumb_func_start sub_80D1A7C @@ -2360,7 +2360,7 @@ sub_80D1ABC: @ 80D1ABC cmp r0, 0 beq _080D1AF4 ldr r1, _080D1B44 @ =0x040000d4 - ldr r0, _080D1B48 @ =gUnknown_2038700 + ldr r0, _080D1B48 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -2382,7 +2382,7 @@ _080D1AF4: ldrh r1, [r0, 0x8] movs r0, 0x44 bl SetGpuReg - ldr r4, _080D1B48 @ =gUnknown_2038700 + ldr r4, _080D1B48 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r4, r0 @@ -2404,7 +2404,7 @@ _080D1B38: .4byte 0x0000c5ff _080D1B3C: .4byte 0x00007fff _080D1B40: .4byte gUnknown_2039A2C _080D1B44: .4byte 0x040000d4 -_080D1B48: .4byte gUnknown_2038700 +_080D1B48: .4byte gScanlineEffectRegBuffers _080D1B4C: .4byte 0x800000a0 _080D1B50: .4byte 0x04000040 _080D1B54: .4byte 0xa2400001 @@ -2445,9 +2445,9 @@ sub_80D1B90: @ 80D1B90 push {r4,r5,lr} adds r5, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear movs r2, 0 - ldr r4, _080D1BD8 @ =gUnknown_2038E80 + ldr r4, _080D1BD8 @ =gScanlineEffectRegBuffers + 0x780 ldr r3, _080D1BDC @ =gUnknown_2039A2C _080D1BA2: lsls r1, r2, 1 @@ -2474,7 +2474,7 @@ _080D1BA2: pop {r1} bx r1 .align 2, 0 -_080D1BD8: .4byte gUnknown_2038E80 +_080D1BD8: .4byte gScanlineEffectRegBuffers + 0x780 _080D1BDC: .4byte gUnknown_2039A2C _080D1BE0: .4byte sub_80D1CC8 _080D1BE4: .4byte sub_80D1D00 @@ -2519,7 +2519,7 @@ _080D1C28: lsrs r0, r4, 8 asrs r1, r7, 16 bl Sin - ldr r1, _080D1CBC @ =gUnknown_2038700 + ldr r1, _080D1CBC @ =gScanlineEffectRegBuffers lsls r2, r5, 1 adds r2, r1 ldr r1, _080D1CB4 @ =gUnknown_2039A2C @@ -2587,7 +2587,7 @@ _080D1C9A: .align 2, 0 _080D1CB4: .4byte gUnknown_2039A2C _080D1CB8: .4byte 0x1fff0000 -_080D1CBC: .4byte gUnknown_2038700 +_080D1CBC: .4byte gScanlineEffectRegBuffers _080D1CC0: .4byte gPaletteFade _080D1CC4: .4byte sub_80D1B58 thumb_func_end sub_80D1BE8 @@ -2602,7 +2602,7 @@ sub_80D1CC8: @ 80D1CC8 cmp r0, 0 beq _080D1CEC ldr r1, _080D1CF4 @ =0x040000d4 - ldr r0, _080D1CF8 @ =gUnknown_2038700 + ldr r0, _080D1CF8 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -2617,13 +2617,13 @@ _080D1CEC: .align 2, 0 _080D1CF0: .4byte gUnknown_2039A2C _080D1CF4: .4byte 0x040000d4 -_080D1CF8: .4byte gUnknown_2038700 +_080D1CF8: .4byte gScanlineEffectRegBuffers _080D1CFC: .4byte 0x800000a0 thumb_func_end sub_80D1CC8 thumb_func_start sub_80D1D00 sub_80D1D00: @ 80D1D00 - ldr r1, _080D1D20 @ =gUnknown_2038700 + ldr r1, _080D1D20 @ =gScanlineEffectRegBuffers ldr r0, _080D1D24 @ =0x04000006 ldrh r0, [r0] lsls r0, 1 @@ -2640,7 +2640,7 @@ sub_80D1D00: @ 80D1D00 strh r1, [r0] bx lr .align 2, 0 -_080D1D20: .4byte gUnknown_2038700 +_080D1D20: .4byte gScanlineEffectRegBuffers _080D1D24: .4byte 0x04000006 _080D1D28: .4byte 0x04000016 thumb_func_end sub_80D1D00 @@ -2680,7 +2680,7 @@ sub_80D1D64: @ 80D1D64 push {r4,lr} adds r4, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear ldr r0, _080D1DB0 @ =gUnknown_2039A2C ldr r1, [r0] movs r2, 0 @@ -2692,7 +2692,7 @@ sub_80D1D64: @ 80D1D64 movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 - ldr r3, _080D1DB4 @ =gUnknown_2038E80 + ldr r3, _080D1DB4 @ =gScanlineEffectRegBuffers + 0x780 movs r2, 0xF2 _080D1D8A: lsls r0, r1, 1 @@ -2714,7 +2714,7 @@ _080D1D8A: bx r1 .align 2, 0 _080D1DB0: .4byte gUnknown_2039A2C -_080D1DB4: .4byte gUnknown_2038E80 +_080D1DB4: .4byte gScanlineEffectRegBuffers + 0x780 _080D1DB8: .4byte sub_80D1E98 thumb_func_end sub_80D1D64 @@ -2729,7 +2729,7 @@ sub_80D1DBC: @ 80D1DBC ldrb r0, [r1] movs r0, 0 strb r0, [r1] - ldr r7, _080D1E54 @ =gUnknown_2038700 + ldr r7, _080D1E54 @ =gScanlineEffectRegBuffers ldrh r0, [r4, 0xC] ldrb r5, [r4, 0xC] adds r0, 0x10 @@ -2799,7 +2799,7 @@ _080D1E36: bx r1 .align 2, 0 _080D1E50: .4byte gUnknown_2039A2C -_080D1E54: .4byte gUnknown_2038700 +_080D1E54: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D1DBC thumb_func_start sub_80D1E58 @@ -2851,7 +2851,7 @@ sub_80D1E98: @ 80D1E98 cmp r0, 0 beq _080D1ED0 ldr r1, _080D1F14 @ =0x040000d4 - ldr r0, _080D1F18 @ =gUnknown_2038700 + ldr r0, _080D1F18 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -2873,7 +2873,7 @@ _080D1ED0: ldrh r1, [r0, 0x8] movs r0, 0x44 bl SetGpuReg - ldr r0, _080D1F20 @ =gUnknown_2038E80 + ldr r0, _080D1F20 @ =gScanlineEffectRegBuffers + 0x780 str r0, [r4] ldr r0, _080D1F24 @ =0x04000040 str r0, [r4, 0x4] @@ -2889,9 +2889,9 @@ _080D1F08: .4byte 0x0000c5ff _080D1F0C: .4byte 0x00007fff _080D1F10: .4byte gUnknown_2039A2C _080D1F14: .4byte 0x040000d4 -_080D1F18: .4byte gUnknown_2038700 +_080D1F18: .4byte gScanlineEffectRegBuffers _080D1F1C: .4byte 0x800000a0 -_080D1F20: .4byte gUnknown_2038E80 +_080D1F20: .4byte gScanlineEffectRegBuffers + 0x780 _080D1F24: .4byte 0x04000040 _080D1F28: .4byte 0xa2400001 thumb_func_end sub_80D1E98 @@ -2946,7 +2946,7 @@ sub_80D1F64: @ 80D1F64 mov r10, r0 movs r1, 0xA0 lsls r1, 17 - ldr r4, _080D1FD8 @ =gUnknown_2038E80 + ldr r4, _080D1FD8 @ =gScanlineEffectRegBuffers + 0x780 ldr r3, _080D1FDC @ =0x000003bf movs r2, 0x78 _080D1F8E: @@ -2988,7 +2988,7 @@ _080D1FAE: adds r0, r1, 0 b _080D1FE6 .align 2, 0 -_080D1FD8: .4byte gUnknown_2038E80 +_080D1FD8: .4byte gScanlineEffectRegBuffers + 0x780 _080D1FDC: .4byte 0x000003bf _080D1FE0: lsls r0, r3, 16 @@ -3104,7 +3104,7 @@ _080D2092: lsls r4, 1 adds r0, r2, r4 lsls r0, 1 - ldr r1, _080D20E8 @ =gUnknown_2038E80 + ldr r1, _080D20E8 @ =gScanlineEffectRegBuffers + 0x780 adds r0, r1 strh r7, [r0] lsls r0, r5, 16 @@ -3131,7 +3131,7 @@ _080D20C4: subs r0, r2, 0x1 b _080D20FC .align 2, 0 -_080D20E8: .4byte gUnknown_2038E80 +_080D20E8: .4byte gScanlineEffectRegBuffers + 0x780 _080D20EC: lsls r0, r3, 16 asrs r0, 16 @@ -3150,7 +3150,7 @@ _080D2100: cmp r1, 0 bge _080D212C asrs r2, r6, 16 - ldr r3, _080D2128 @ =gUnknown_2038E80 + ldr r3, _080D2128 @ =gScanlineEffectRegBuffers + 0x780 _080D210C: asrs r1, r0, 16 adds r0, r2, r1 @@ -3166,12 +3166,12 @@ _080D210C: blt _080D210C b _080D21F8 .align 2, 0 -_080D2128: .4byte gUnknown_2038E80 +_080D2128: .4byte gScanlineEffectRegBuffers + 0x780 _080D212C: cmp r1, 0 ble _080D21F8 asrs r2, r6, 16 - ldr r3, _080D2154 @ =gUnknown_2038E80 + ldr r3, _080D2154 @ =gScanlineEffectRegBuffers + 0x780 _080D2134: lsls r1, r5, 16 asrs r1, 16 @@ -3189,13 +3189,13 @@ _080D2134: bgt _080D2134 b _080D21F8 .align 2, 0 -_080D2154: .4byte gUnknown_2038E80 +_080D2154: .4byte gScanlineEffectRegBuffers + 0x780 _080D2158: movs r1, 0xF0 lsls r1, 1 adds r0, r2, r1 lsls r0, 1 - ldr r2, _080D2190 @ =gUnknown_2038E80 + ldr r2, _080D2190 @ =gScanlineEffectRegBuffers + 0x780 adds r0, r2 strh r7, [r0] lsls r0, r5, 16 @@ -3220,7 +3220,7 @@ _080D2158: subs r0, r2, 0x1 b _080D21A4 .align 2, 0 -_080D2190: .4byte gUnknown_2038E80 +_080D2190: .4byte gScanlineEffectRegBuffers + 0x780 _080D2194: lsls r0, r3, 16 asrs r0, 16 @@ -3239,7 +3239,7 @@ _080D21A8: cmp r1, 0 bge _080D21D4 asrs r2, r6, 16 - ldr r3, _080D21D0 @ =gUnknown_2038E80 + ldr r3, _080D21D0 @ =gScanlineEffectRegBuffers + 0x780 _080D21B4: asrs r1, r0, 16 adds r0, r2, r1 @@ -3255,12 +3255,12 @@ _080D21B4: blt _080D21B4 b _080D21F8 .align 2, 0 -_080D21D0: .4byte gUnknown_2038E80 +_080D21D0: .4byte gScanlineEffectRegBuffers + 0x780 _080D21D4: cmp r1, 0 ble _080D21F8 asrs r2, r6, 16 - ldr r3, _080D2270 @ =gUnknown_2038E80 + ldr r3, _080D2270 @ =gScanlineEffectRegBuffers + 0x780 _080D21DC: lsls r1, r5, 16 asrs r1, 16 @@ -3307,7 +3307,7 @@ _080D221A: _080D222C: movs r2, 0 mov r9, r2 - ldr r4, _080D2270 @ =gUnknown_2038E80 + ldr r4, _080D2270 @ =gScanlineEffectRegBuffers + 0x780 movs r5, 0xA0 lsls r5, 1 _080D2236: @@ -3341,7 +3341,7 @@ _080D2236: ble _080D2236 b _080D251C .align 2, 0 -_080D2270: .4byte gUnknown_2038E80 +_080D2270: .4byte gScanlineEffectRegBuffers + 0x780 _080D2274: ldr r1, [sp, 0xC] asrs r4, r1, 16 @@ -3396,7 +3396,7 @@ _080D22CA: adds r0, r5, r0 movs r3, 0 ldrsh r4, [r0, r3] - ldr r6, _080D2324 @ =gUnknown_2038E80 + ldr r6, _080D2324 @ =gScanlineEffectRegBuffers + 0x780 _080D22D4: ldr r0, _080D2328 @ =gUnknown_2039A2C ldr r5, [r0] @@ -3437,7 +3437,7 @@ _080D22D4: b _080D2334 .align 2, 0 _080D2320: .4byte gUnknown_83FA444 -_080D2324: .4byte gUnknown_2038E80 +_080D2324: .4byte gScanlineEffectRegBuffers + 0x780 _080D2328: .4byte gUnknown_2039A2C _080D232C: ldrh r0, [r3] @@ -3474,7 +3474,7 @@ _080D2360: adds r0, r5, r0 movs r3, 0 ldrsh r4, [r0, r3] - ldr r6, _080D23C0 @ =gUnknown_2038E80 + ldr r6, _080D23C0 @ =gScanlineEffectRegBuffers + 0x780 _080D236A: ldr r0, _080D23C4 @ =gUnknown_2039A2C ldr r3, [r0] @@ -3519,7 +3519,7 @@ _080D23A6: b _080D24DA .align 2, 0 _080D23BC: .4byte gUnknown_83FA444 -_080D23C0: .4byte gUnknown_2038E80 +_080D23C0: .4byte gScanlineEffectRegBuffers + 0x780 _080D23C4: .4byte gUnknown_2039A2C _080D23C8: .4byte 0xffff0000 _080D23CC: @@ -3539,7 +3539,7 @@ _080D23DA: adds r0, r5, r0 movs r6, 0 ldrsh r4, [r0, r6] - ldr r6, _080D2440 @ =gUnknown_2038E80 + ldr r6, _080D2440 @ =gScanlineEffectRegBuffers + 0x780 _080D23EC: ldr r0, _080D2444 @ =gUnknown_2039A2C ldr r5, [r0] @@ -3581,7 +3581,7 @@ _080D23EC: .align 2, 0 _080D2438: .4byte 0x0000ffb1 _080D243C: .4byte gUnknown_83FA444 -_080D2440: .4byte gUnknown_2038E80 +_080D2440: .4byte gScanlineEffectRegBuffers + 0x780 _080D2444: .4byte gUnknown_2039A2C _080D2448: ldrh r0, [r3] @@ -3619,7 +3619,7 @@ _080D2474: ldrsh r4, [r0, r3] ldr r6, _080D2534 @ =gUnknown_2039A2C mov r8, r6 - ldr r6, _080D2538 @ =gUnknown_2038E80 + ldr r6, _080D2538 @ =gScanlineEffectRegBuffers + 0x780 _080D248A: mov r0, r8 ldr r3, [r0] @@ -3665,7 +3665,7 @@ _080D24C6: _080D24DA: movs r4, 0 mov r9, r4 - ldr r4, _080D2538 @ =gUnknown_2038E80 + ldr r4, _080D2538 @ =gScanlineEffectRegBuffers + 0x780 movs r5, 0xA0 lsls r5, 1 _080D24E4: @@ -3710,7 +3710,7 @@ _080D251C: _080D252C: .4byte 0x0000ffb1 _080D2530: .4byte gUnknown_83FA444 _080D2534: .4byte gUnknown_2039A2C -_080D2538: .4byte gUnknown_2038E80 +_080D2538: .4byte gScanlineEffectRegBuffers + 0x780 thumb_func_end sub_80D1F64 thumb_func_start sub_80D253C @@ -3718,7 +3718,7 @@ sub_80D253C: @ 80D253C push {r4,r5,lr} adds r5, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear ldr r0, _080D25A0 @ =gUnknown_2039A2C ldr r1, [r0] movs r4, 0 @@ -3741,7 +3741,7 @@ sub_80D253C: @ 80D253C movs r2, 0x1 bl sub_80D1F64 ldr r1, _080D25B0 @ =0x040000d4 - ldr r0, _080D25B4 @ =gUnknown_2038E80 + ldr r0, _080D25B4 @ =gScanlineEffectRegBuffers + 0x780 str r0, [r1] ldr r2, _080D25B8 @ =0xfffff880 adds r0, r2 @@ -3766,7 +3766,7 @@ _080D25A4: .4byte 0x00007878 _080D25A8: .4byte 0x00003070 _080D25AC: .4byte 0x00001090 _080D25B0: .4byte 0x040000d4 -_080D25B4: .4byte gUnknown_2038E80 +_080D25B4: .4byte gScanlineEffectRegBuffers + 0x780 _080D25B8: .4byte 0xfffff880 _080D25BC: .4byte 0x80000140 _080D25C0: .4byte sub_80D2698 @@ -3919,7 +3919,7 @@ _080D26E4: cmp r0, 0 beq _080D2700 ldr r1, _080D274C @ =0x040000d4 - ldr r0, _080D2750 @ =gUnknown_2038E80 + ldr r0, _080D2750 @ =gScanlineEffectRegBuffers + 0x780 str r0, [r1] ldr r6, _080D2754 @ =0xfffff880 adds r0, r6 @@ -3946,7 +3946,7 @@ _080D2700: ldrh r1, [r0, 0xC] movs r0, 0x46 bl SetGpuReg - ldr r4, _080D275C @ =gUnknown_2038700 + ldr r4, _080D275C @ =gScanlineEffectRegBuffers ldrh r1, [r4] movs r0, 0x40 bl SetGpuReg @@ -3965,10 +3965,10 @@ _080D2746: bx r0 .align 2, 0 _080D274C: .4byte 0x040000d4 -_080D2750: .4byte gUnknown_2038E80 +_080D2750: .4byte gScanlineEffectRegBuffers + 0x780 _080D2754: .4byte 0xfffff880 _080D2758: .4byte 0x80000140 -_080D275C: .4byte gUnknown_2038700 +_080D275C: .4byte gScanlineEffectRegBuffers _080D2760: .4byte 0x04000040 _080D2764: .4byte 0xa6400001 thumb_func_end sub_80D2698 @@ -4103,7 +4103,7 @@ Phase2_Mugshot_Func1: @ 80D2840 push {r4,lr} adds r4, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear adds r0, r4, 0 bl sub_80D2EA4 movs r0, 0 @@ -4121,7 +4121,7 @@ Phase2_Mugshot_Func1: @ 80D2840 movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 - ldr r3, _080D289C @ =gUnknown_2038E80 + ldr r3, _080D289C @ =gScanlineEffectRegBuffers + 0x780 ldr r2, _080D28A0 @ =0x0000f0f1 _080D2874: lsls r0, r1, 1 @@ -4143,7 +4143,7 @@ _080D2874: bx r1 .align 2, 0 _080D2898: .4byte gUnknown_2039A2C -_080D289C: .4byte gUnknown_2038E80 +_080D289C: .4byte gScanlineEffectRegBuffers + 0x780 _080D28A0: .4byte 0x0000f0f1 _080D28A4: .4byte sub_80D2D50 thumb_func_end Phase2_Mugshot_Func1 @@ -4248,7 +4248,7 @@ sub_80D2968: @ 80D2968 ldrb r0, [r1] movs r0, 0 strb r0, [r1] - ldr r7, _080D2A50 @ =gUnknown_2038700 + ldr r7, _080D2A50 @ =gScanlineEffectRegBuffers ldrh r0, [r4, 0xA] ldrb r5, [r4, 0xA] adds r0, 0x10 @@ -4364,7 +4364,7 @@ _080D2A2A: bx r1 .align 2, 0 _080D2A4C: .4byte gUnknown_2039A2C -_080D2A50: .4byte gUnknown_2038700 +_080D2A50: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D2968 thumb_func_start sub_80D2A54 @@ -4376,7 +4376,7 @@ sub_80D2A54: @ 80D2A54 ldrb r0, [r1] movs r0, 0 strb r0, [r1] - ldr r1, _080D2ACC @ =gUnknown_2038700 + ldr r1, _080D2ACC @ =gScanlineEffectRegBuffers adds r5, r2, 0 movs r2, 0xF0 _080D2A68: @@ -4425,7 +4425,7 @@ _080D2A68: bx r1 .align 2, 0 _080D2AC8: .4byte gUnknown_2039A2C -_080D2ACC: .4byte gUnknown_2038700 +_080D2ACC: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D2A54 thumb_func_start sub_80D2AD0 @@ -4499,7 +4499,7 @@ sub_80D2B0C: @ 80D2B0C ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - ldr r4, _080D2BBC @ =gUnknown_2038700 + ldr r4, _080D2BBC @ =gScanlineEffectRegBuffers movs r5, 0xA0 lsls r5, 1 adds r0, r4, 0 @@ -4542,7 +4542,7 @@ _080D2BAC: .4byte gUnknown_2039A2C _080D2BB0: .4byte 0x040000b0 _080D2BB4: .4byte 0x0000c5ff _080D2BB8: .4byte 0x00007fff -_080D2BBC: .4byte gUnknown_2038700 +_080D2BBC: .4byte gScanlineEffectRegBuffers _080D2BC0: .4byte sub_80D2DEC thumb_func_end sub_80D2B0C @@ -4593,7 +4593,7 @@ _080D2BFE: cmp r0, 0 blt _080D2C60 movs r7, 0x50 - ldr r5, _080D2C88 @ =gUnknown_2038700 + ldr r5, _080D2C88 @ =gScanlineEffectRegBuffers _080D2C1C: lsls r0, r2, 16 asrs r3, r0, 16 @@ -4652,7 +4652,7 @@ _080D2C6E: bx r1 .align 2, 0 _080D2C84: .4byte gUnknown_2039A2C -_080D2C88: .4byte gUnknown_2038700 +_080D2C88: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D2BC4 thumb_func_start sub_80D2C8C @@ -4697,7 +4697,7 @@ sub_80D2CC4: @ 80D2CC4 ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] - ldr r0, _080D2D0C @ =gUnknown_2038700 + ldr r0, _080D2D0C @ =gScanlineEffectRegBuffers movs r2, 0xE ldrsh r1, [r4, r2] movs r2, 0xA0 @@ -4722,7 +4722,7 @@ _080D2CF4: bx r1 .align 2, 0 _080D2D08: .4byte gUnknown_2039A2C -_080D2D0C: .4byte gUnknown_2038700 +_080D2D0C: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D2CC4 thumb_func_start sub_80D2D10 @@ -4775,7 +4775,7 @@ sub_80D2D50: @ 80D2D50 cmp r0, 0 beq _080D2D88 ldr r1, _080D2DD4 @ =0x040000d4 - ldr r0, _080D2DD8 @ =gUnknown_2038700 + ldr r0, _080D2DD8 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -4801,7 +4801,7 @@ _080D2D88: ldrh r1, [r0, 0x8] movs r0, 0x44 bl SetGpuReg - ldr r0, _080D2DE0 @ =gUnknown_2038E80 + ldr r0, _080D2DE0 @ =gScanlineEffectRegBuffers + 0x780 str r0, [r4] ldr r0, _080D2DE4 @ =0x04000040 str r0, [r4, 0x4] @@ -4817,9 +4817,9 @@ _080D2DC8: .4byte 0x0000c5ff _080D2DCC: .4byte 0x00007fff _080D2DD0: .4byte gUnknown_2039A2C _080D2DD4: .4byte 0x040000d4 -_080D2DD8: .4byte gUnknown_2038700 +_080D2DD8: .4byte gScanlineEffectRegBuffers _080D2DDC: .4byte 0x800000a0 -_080D2DE0: .4byte gUnknown_2038E80 +_080D2DE0: .4byte gScanlineEffectRegBuffers + 0x780 _080D2DE4: .4byte 0x04000040 _080D2DE8: .4byte 0xa2400001 thumb_func_end sub_80D2D50 @@ -4844,7 +4844,7 @@ sub_80D2DEC: @ 80D2DEC cmp r0, 0 beq _080D2E24 ldr r1, _080D2E54 @ =0x040000d4 - ldr r0, _080D2E58 @ =gUnknown_2038700 + ldr r0, _080D2E58 @ =gScanlineEffectRegBuffers str r0, [r1] movs r3, 0xF0 lsls r3, 3 @@ -4858,7 +4858,7 @@ _080D2E24: ldrh r1, [r0, 0xE] movs r0, 0x50 bl SetGpuReg - ldr r0, _080D2E60 @ =gUnknown_2038E80 + ldr r0, _080D2E60 @ =gScanlineEffectRegBuffers + 0x780 str r0, [r4] ldr r0, _080D2E64 @ =0x04000054 str r0, [r4, 0x4] @@ -4874,9 +4874,9 @@ _080D2E48: .4byte 0x0000c5ff _080D2E4C: .4byte 0x00007fff _080D2E50: .4byte gUnknown_2039A2C _080D2E54: .4byte 0x040000d4 -_080D2E58: .4byte gUnknown_2038700 +_080D2E58: .4byte gScanlineEffectRegBuffers _080D2E5C: .4byte 0x800000a0 -_080D2E60: .4byte gUnknown_2038E80 +_080D2E60: .4byte gScanlineEffectRegBuffers + 0x780 _080D2E64: .4byte 0x04000054 _080D2E68: .4byte 0xa2400001 thumb_func_end sub_80D2DEC @@ -5321,7 +5321,7 @@ sub_80D31A4: @ 80D31A4 push {r4-r6,lr} adds r5, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear movs r3, 0 movs r0, 0x80 lsls r0, 1 @@ -5335,7 +5335,7 @@ sub_80D31A4: @ 80D31A4 strh r3, [r1, 0x4] movs r0, 0xA0 strh r0, [r1, 0x8] - ldr r4, _080D3214 @ =gUnknown_2038E80 + ldr r4, _080D3214 @ =gScanlineEffectRegBuffers + 0x780 adds r6, r2, 0 movs r2, 0xF0 _080D31D0: @@ -5369,7 +5369,7 @@ _080D31D0: bx r1 .align 2, 0 _080D3210: .4byte gUnknown_2039A2C -_080D3214: .4byte gUnknown_2038E80 +_080D3214: .4byte gScanlineEffectRegBuffers + 0x780 _080D3218: .4byte sub_80D332C _080D321C: .4byte sub_80D33C0 thumb_func_end sub_80D31A4 @@ -5417,7 +5417,7 @@ _080D325E: strh r0, [r3, 0xE] _080D326A: movs r5, 0 - ldr r7, _080D32A4 @ =gUnknown_2038700 + ldr r7, _080D32A4 @ =gScanlineEffectRegBuffers movs r1, 0xA0 lsls r1, 1 adds r1, r7 @@ -5444,7 +5444,7 @@ _080D3278: .align 2, 0 _080D329C: .4byte gUnknown_2039A2C _080D32A0: .4byte 0x00000fff -_080D32A4: .4byte gUnknown_2038700 +_080D32A4: .4byte gScanlineEffectRegBuffers _080D32A8: ldr r0, [r6] ldrh r0, [r0, 0x14] @@ -5545,7 +5545,7 @@ sub_80D332C: @ 80D332C cmp r0, 0 beq _080D3382 ldr r1, _080D33A8 @ =0x040000d4 - ldr r0, _080D33AC @ =gUnknown_2038700 + ldr r0, _080D33AC @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -5555,7 +5555,7 @@ sub_80D332C: @ 80D332C str r0, [r1, 0x8] ldr r0, [r1, 0x8] _080D3382: - ldr r0, _080D33B4 @ =gUnknown_2038FC0 + ldr r0, _080D33B4 @ =gScanlineEffectRegBuffers + 0x8C0 str r0, [r5] ldr r0, _080D33B8 @ =0x04000040 str r0, [r5, 0x4] @@ -5571,16 +5571,16 @@ _080D339C: .4byte 0x0000c5ff _080D33A0: .4byte 0x00007fff _080D33A4: .4byte gUnknown_2039A2C _080D33A8: .4byte 0x040000d4 -_080D33AC: .4byte gUnknown_2038700 +_080D33AC: .4byte gScanlineEffectRegBuffers _080D33B0: .4byte 0x80000140 -_080D33B4: .4byte gUnknown_2038FC0 +_080D33B4: .4byte gScanlineEffectRegBuffers + 0x8C0 _080D33B8: .4byte 0x04000040 _080D33BC: .4byte 0xa2400001 thumb_func_end sub_80D332C thumb_func_start sub_80D33C0 sub_80D33C0: @ 80D33C0 - ldr r1, _080D33E0 @ =gUnknown_2038700 + ldr r1, _080D33E0 @ =gScanlineEffectRegBuffers ldr r0, _080D33E4 @ =0x04000006 ldrh r0, [r0] lsls r0, 1 @@ -5597,7 +5597,7 @@ sub_80D33C0: @ 80D33C0 strh r1, [r0] bx lr .align 2, 0 -_080D33E0: .4byte gUnknown_2038700 +_080D33E0: .4byte gScanlineEffectRegBuffers _080D33E4: .4byte 0x04000006 _080D33E8: .4byte 0x04000014 thumb_func_end sub_80D33C0 @@ -5637,7 +5637,7 @@ sub_80D3424: @ 80D3424 push {r4,r5,lr} adds r5, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear ldr r0, _080D348C @ =gUnknown_2039A2C ldr r1, [r0] movs r2, 0 @@ -5651,7 +5651,7 @@ sub_80D3424: @ 80D3424 movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 - ldr r2, _080D3490 @ =gUnknown_2038E80 + ldr r2, _080D3490 @ =gScanlineEffectRegBuffers + 0x780 movs r4, 0 movs r3, 0xF0 _080D3450: @@ -5683,7 +5683,7 @@ _080D3450: bx r1 .align 2, 0 _080D348C: .4byte gUnknown_2039A2C -_080D3490: .4byte gUnknown_2038E80 +_080D3490: .4byte gScanlineEffectRegBuffers + 0x780 _080D3494: .4byte sub_80D36E0 _080D3498: .4byte sub_80D35F4 thumb_func_end sub_80D3424 @@ -5896,7 +5896,7 @@ sub_80D35F4: @ 80D35F4 cmp r0, 0 beq _080D3654 ldr r1, _080D3678 @ =0x040000d4 - ldr r0, _080D367C @ =gUnknown_2038700 + ldr r0, _080D367C @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -5906,7 +5906,7 @@ sub_80D35F4: @ 80D35F4 str r0, [r1, 0x8] ldr r0, [r1, 0x8] _080D3654: - ldr r0, _080D3684 @ =gUnknown_2038FC0 + ldr r0, _080D3684 @ =gScanlineEffectRegBuffers + 0x8C0 str r0, [r5] ldr r0, _080D3688 @ =0x04000040 str r0, [r5, 0x4] @@ -5922,9 +5922,9 @@ _080D366C: .4byte 0x0000c5ff _080D3670: .4byte 0x00007fff _080D3674: .4byte gUnknown_2039A2C _080D3678: .4byte 0x040000d4 -_080D367C: .4byte gUnknown_2038700 +_080D367C: .4byte gScanlineEffectRegBuffers _080D3680: .4byte 0x80000140 -_080D3684: .4byte gUnknown_2038FC0 +_080D3684: .4byte gScanlineEffectRegBuffers + 0x8C0 _080D3688: .4byte 0x04000040 _080D368C: .4byte 0xa2400001 thumb_func_end sub_80D35F4 @@ -5981,7 +5981,7 @@ sub_80D36E0: @ 80D36E0 strh r0, [r1] _080D36F8: ldr r2, _080D3718 @ =0x04000054 - ldr r1, _080D371C @ =gUnknown_2038700 + ldr r1, _080D371C @ =gScanlineEffectRegBuffers mov r0, sp ldrh r0, [r0] lsls r0, 1 @@ -5997,7 +5997,7 @@ _080D36F8: .align 2, 0 _080D3714: .4byte 0x04000006 _080D3718: .4byte 0x04000054 -_080D371C: .4byte gUnknown_2038700 +_080D371C: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80D36E0 thumb_func_start sub_80D3720 @@ -6027,7 +6027,7 @@ _080D374C: movs r2, 0x22 ldrsh r0, [r3, r2] lsls r0, 1 - ldr r1, _080D3810 @ =gUnknown_2038700 + ldr r1, _080D3810 @ =gScanlineEffectRegBuffers adds r7, r0, r1 movs r2, 0xA0 lsls r2, 1 @@ -6131,7 +6131,7 @@ _080D380A: pop {r0} bx r0 .align 2, 0 -_080D3810: .4byte gUnknown_2038700 +_080D3810: .4byte gScanlineEffectRegBuffers _080D3814: .4byte gUnknown_2039A2C thumb_func_end sub_80D3720 @@ -6308,7 +6308,7 @@ sub_80D3960: @ 80D3960 push {r4,r5,lr} adds r5, r0, 0 bl sub_80D3DD0 - bl dp12_8087EA4 + bl ScanlineEffect_Clear ldr r0, _080D39B8 @ =gUnknown_2039A2C ldr r1, [r0] movs r2, 0 @@ -6318,7 +6318,7 @@ sub_80D3960: @ 80D3960 movs r0, 0xA0 strh r0, [r1, 0x8] movs r1, 0 - ldr r2, _080D39BC @ =gUnknown_2038700 + ldr r2, _080D39BC @ =gScanlineEffectRegBuffers movs r3, 0xF0 adds r4, r2, 0 _080D3984: @@ -6347,7 +6347,7 @@ _080D3984: bx r1 .align 2, 0 _080D39B8: .4byte gUnknown_2039A2C -_080D39BC: .4byte gUnknown_2038700 +_080D39BC: .4byte gScanlineEffectRegBuffers _080D39C0: .4byte sub_80D3BA4 thumb_func_end sub_80D3960 @@ -6428,10 +6428,10 @@ sub_80D3A40: @ 80D3A40 strb r0, [r1] mov r8, r0 movs r7, 0 - ldr r0, _080D3A94 @ =gUnknown_2038700 + ldr r0, _080D3A94 @ =gScanlineEffectRegBuffers mov r9, r0 _080D3A5C: - ldr r1, _080D3A94 @ =gUnknown_2038700 + ldr r1, _080D3A94 @ =gScanlineEffectRegBuffers ldr r0, _080D3A90 @ =gUnknown_2039A2C ldr r2, [r0] movs r3, 0x2A @@ -6460,7 +6460,7 @@ _080D3A84: b _080D3AB0 .align 2, 0 _080D3A90: .4byte gUnknown_2039A2C -_080D3A94: .4byte gUnknown_2038700 +_080D3A94: .4byte gScanlineEffectRegBuffers _080D3A98: lsls r0, r5, 16 asrs r0, 16 @@ -6626,7 +6626,7 @@ sub_80D3BA4: @ 80D3BA4 cmp r0, 0 beq _080D3BDC ldr r1, _080D3C2C @ =0x040000d4 - ldr r0, _080D3C30 @ =gUnknown_2038700 + ldr r0, _080D3C30 @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -6648,7 +6648,7 @@ _080D3BDC: ldrh r1, [r0, 0x8] movs r0, 0x44 bl SetGpuReg - ldr r4, _080D3C30 @ =gUnknown_2038700 + ldr r4, _080D3C30 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r4, r0 @@ -6670,7 +6670,7 @@ _080D3C20: .4byte 0x0000c5ff _080D3C24: .4byte 0x00007fff _080D3C28: .4byte gUnknown_2039A2C _080D3C2C: .4byte 0x040000d4 -_080D3C30: .4byte gUnknown_2038700 +_080D3C30: .4byte gScanlineEffectRegBuffers _080D3C34: .4byte 0x800000a0 _080D3C38: .4byte 0x04000040 _080D3C3C: .4byte 0xa2400001 diff --git a/asm/berry_fix_program.s b/asm/berry_fix_program.s index ec40e1d98..e24fa6c3c 100644 --- a/asm/berry_fix_program.s +++ b/asm/berry_fix_program.s @@ -90,7 +90,7 @@ sub_815F74C: @ 815F74C ldr r0, [r0, 0x8] bl ResetSpriteData bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop ldr r0, _0815F7D4 @ =gUnknown_3005ECC strb r4, [r0] ldr r0, _0815F7D8 @ =sub_815F7F0 diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 146a71788..050c42606 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -187,7 +187,7 @@ _0813CED0: bl clear_scheduled_bg_copies_to_vram b _0813CFD2 _0813CEDA: - bl remove_some_task + bl ScanlineEffect_Stop b _0813CFD2 _0813CEE0: bl FreeAllSpritePalettes diff --git a/asm/diploma.s b/asm/diploma.s index d0b652619..31f0d368d 100644 --- a/asm/diploma.s +++ b/asm/diploma.s @@ -279,7 +279,7 @@ sub_80F4E24: @ 80F4E24 bl ResetPaletteFade bl FreeAllSpritePalettes bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop pop {r0} bx r0 thumb_func_end sub_80F4E24 diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index eef234a71..aa5b2d8f6 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -621,7 +621,7 @@ _08047090: bl FreeAllSpritePalettes bl ResetSpriteData bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop bl m4aSoundVSyncOn b _0804724A .align 2, 0 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index d343c68d4..c02eef927 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -171,25 +171,25 @@ EvolutionScene: @ 80CDDF4 movs r1, 0 bl SetGpuReg bl ResetPaletteFade - ldr r0, _080CE080 @ =gUnknown_2022974 + ldr r0, _080CE080 @ =gBattle_BG0_X movs r2, 0 strh r2, [r0] - ldr r0, _080CE084 @ =gUnknown_2022976 + ldr r0, _080CE084 @ =gBattle_BG0_Y strh r2, [r0] - ldr r0, _080CE088 @ =gUnknown_2022978 + ldr r0, _080CE088 @ =gBattle_BG1_X strh r2, [r0] - ldr r0, _080CE08C @ =gUnknown_202297A + ldr r0, _080CE08C @ =gBattle_BG1_Y strh r2, [r0] - ldr r0, _080CE090 @ =gUnknown_202297C + ldr r0, _080CE090 @ =gBattle_BG2_X strh r2, [r0] - ldr r0, _080CE094 @ =gUnknown_202297E + ldr r0, _080CE094 @ =gBattle_BG2_Y strh r2, [r0] - ldr r1, _080CE098 @ =gUnknown_2022980 + ldr r1, _080CE098 @ =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r0, _080CE09C @ =gUnknown_2022982 + ldr r0, _080CE09C @ =gBattle_BG3_Y movs r1, 0 strh r1, [r0] ldr r1, _080CE0A0 @ =gUnknown_2022B50 @@ -198,7 +198,7 @@ EvolutionScene: @ 80CDDF4 bl sub_800F34C bl LoadBattleTextboxAndBackground bl ResetSpriteData - bl remove_some_task + bl ScanlineEffect_Stop bl ResetTasks bl FreeAllSpritePalettes ldr r0, _080CE0A4 @ =gReservedSpritePaletteCount @@ -401,14 +401,14 @@ EvolutionScene: @ 80CDDF4 bx r0 .align 2, 0 _080CE07C: .4byte 0x05006000 -_080CE080: .4byte gUnknown_2022974 -_080CE084: .4byte gUnknown_2022976 -_080CE088: .4byte gUnknown_2022978 -_080CE08C: .4byte gUnknown_202297A -_080CE090: .4byte gUnknown_202297C -_080CE094: .4byte gUnknown_202297E -_080CE098: .4byte gUnknown_2022980 -_080CE09C: .4byte gUnknown_2022982 +_080CE080: .4byte gBattle_BG0_X +_080CE084: .4byte gBattle_BG0_Y +_080CE088: .4byte gBattle_BG1_X +_080CE08C: .4byte gBattle_BG1_Y +_080CE090: .4byte gBattle_BG2_X +_080CE094: .4byte gBattle_BG2_Y +_080CE098: .4byte gBattle_BG3_X +_080CE09C: .4byte gBattle_BG3_Y _080CE0A0: .4byte gUnknown_2022B50 _080CE0A4: .4byte gReservedSpritePaletteCount _080CE0A8: .4byte gUnknown_2039A20 @@ -494,24 +494,24 @@ CB2_EvolutionSceneLoadGraphics: @ 80CE0E8 movs r1, 0 bl SetGpuReg bl ResetPaletteFade - ldr r0, _080CE290 @ =gUnknown_2022974 + ldr r0, _080CE290 @ =gBattle_BG0_X strh r4, [r0] - ldr r0, _080CE294 @ =gUnknown_2022976 + ldr r0, _080CE294 @ =gBattle_BG0_Y strh r4, [r0] - ldr r0, _080CE298 @ =gUnknown_2022978 + ldr r0, _080CE298 @ =gBattle_BG1_X strh r4, [r0] - ldr r0, _080CE29C @ =gUnknown_202297A + ldr r0, _080CE29C @ =gBattle_BG1_Y strh r4, [r0] - ldr r0, _080CE2A0 @ =gUnknown_202297C + ldr r0, _080CE2A0 @ =gBattle_BG2_X strh r4, [r0] - ldr r0, _080CE2A4 @ =gUnknown_202297E + ldr r0, _080CE2A4 @ =gBattle_BG2_Y strh r4, [r0] - ldr r1, _080CE2A8 @ =gUnknown_2022980 + ldr r1, _080CE2A8 @ =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r0, _080CE2AC @ =gUnknown_2022982 + ldr r0, _080CE2AC @ =gBattle_BG3_Y strh r4, [r0] ldr r1, _080CE2B0 @ =gUnknown_2022B50 movs r0, 0x9 @@ -608,14 +608,14 @@ _080CE280: .4byte gTasks _080CE284: .4byte gUnknown_2039A20 _080CE288: .4byte gPlayerParty _080CE28C: .4byte 0x05006000 -_080CE290: .4byte gUnknown_2022974 -_080CE294: .4byte gUnknown_2022976 -_080CE298: .4byte gUnknown_2022978 -_080CE29C: .4byte gUnknown_202297A -_080CE2A0: .4byte gUnknown_202297C -_080CE2A4: .4byte gUnknown_202297E -_080CE2A8: .4byte gUnknown_2022980 -_080CE2AC: .4byte gUnknown_2022982 +_080CE290: .4byte gBattle_BG0_X +_080CE294: .4byte gBattle_BG0_Y +_080CE298: .4byte gBattle_BG1_X +_080CE29C: .4byte gBattle_BG1_Y +_080CE2A0: .4byte gBattle_BG2_X +_080CE2A4: .4byte gBattle_BG2_Y +_080CE2A8: .4byte gBattle_BG3_X +_080CE2AC: .4byte gBattle_BG3_Y _080CE2B0: .4byte gUnknown_2022B50 _080CE2B4: .4byte gReservedSpritePaletteCount _080CE2B8: .4byte gUnknown_82350AC @@ -691,37 +691,37 @@ _080CE34C: ldr r1, _080CE398 @ =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] - ldr r0, _080CE39C @ =gUnknown_2022974 + ldr r0, _080CE39C @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _080CE3A0 @ =gUnknown_2022976 + ldr r0, _080CE3A0 @ =gBattle_BG0_Y strh r1, [r0] - ldr r0, _080CE3A4 @ =gUnknown_2022978 + ldr r0, _080CE3A4 @ =gBattle_BG1_X strh r1, [r0] - ldr r0, _080CE3A8 @ =gUnknown_202297A + ldr r0, _080CE3A8 @ =gBattle_BG1_Y strh r1, [r0] - ldr r0, _080CE3AC @ =gUnknown_202297C + ldr r0, _080CE3AC @ =gBattle_BG2_X strh r1, [r0] - ldr r0, _080CE3B0 @ =gUnknown_202297E + ldr r0, _080CE3B0 @ =gBattle_BG2_Y strh r1, [r0] - ldr r2, _080CE3B4 @ =gUnknown_2022980 + ldr r2, _080CE3B4 @ =gBattle_BG3_X movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 strh r0, [r2] - ldr r0, _080CE3B8 @ =gUnknown_2022982 + ldr r0, _080CE3B8 @ =gBattle_BG3_Y strh r1, [r0] b _080CE4EC .align 2, 0 _080CE398: .4byte gReservedSpritePaletteCount -_080CE39C: .4byte gUnknown_2022974 -_080CE3A0: .4byte gUnknown_2022976 -_080CE3A4: .4byte gUnknown_2022978 -_080CE3A8: .4byte gUnknown_202297A -_080CE3AC: .4byte gUnknown_202297C -_080CE3B0: .4byte gUnknown_202297E -_080CE3B4: .4byte gUnknown_2022980 -_080CE3B8: .4byte gUnknown_2022982 +_080CE39C: .4byte gBattle_BG0_X +_080CE3A0: .4byte gBattle_BG0_Y +_080CE3A4: .4byte gBattle_BG1_X +_080CE3A8: .4byte gBattle_BG1_Y +_080CE3AC: .4byte gBattle_BG2_X +_080CE3B0: .4byte gBattle_BG2_Y +_080CE3B4: .4byte gBattle_BG3_X +_080CE3B8: .4byte gBattle_BG3_Y _080CE3BC: bl ResetPaletteFade ldr r0, _080CE3D8 @ =nullsub_76 @@ -1027,24 +1027,24 @@ TradeEvolutionScene: @ 80CE540 mov r1, sp ldrh r1, [r1, 0x14] strh r1, [r0, 0x1C] - ldr r0, _080CE6E4 @ =gUnknown_2022974 + ldr r0, _080CE6E4 @ =gBattle_BG0_X strh r4, [r0] - ldr r0, _080CE6E8 @ =gUnknown_2022976 + ldr r0, _080CE6E8 @ =gBattle_BG0_Y strh r4, [r0] - ldr r0, _080CE6EC @ =gUnknown_2022978 + ldr r0, _080CE6EC @ =gBattle_BG1_X strh r4, [r0] - ldr r0, _080CE6F0 @ =gUnknown_202297A + ldr r0, _080CE6F0 @ =gBattle_BG1_Y strh r4, [r0] - ldr r0, _080CE6F4 @ =gUnknown_202297C + ldr r0, _080CE6F4 @ =gBattle_BG2_X strh r4, [r0] - ldr r0, _080CE6F8 @ =gUnknown_202297E + ldr r0, _080CE6F8 @ =gBattle_BG2_Y strh r4, [r0] - ldr r1, _080CE6FC @ =gUnknown_2022980 + ldr r1, _080CE6FC @ =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r0, _080CE700 @ =gUnknown_2022982 + ldr r0, _080CE700 @ =gBattle_BG3_Y strh r4, [r0] ldr r2, _080CE704 @ =gTextFlags ldrb r0, [r2] @@ -1077,14 +1077,14 @@ _080CE6D4: .4byte gSprites _080CE6D8: .4byte nullsub_10 _080CE6DC: .4byte sub_80CF53C _080CE6E0: .4byte gTasks -_080CE6E4: .4byte gUnknown_2022974 -_080CE6E8: .4byte gUnknown_2022976 -_080CE6EC: .4byte gUnknown_2022978 -_080CE6F0: .4byte gUnknown_202297A -_080CE6F4: .4byte gUnknown_202297C -_080CE6F8: .4byte gUnknown_202297E -_080CE6FC: .4byte gUnknown_2022980 -_080CE700: .4byte gUnknown_2022982 +_080CE6E4: .4byte gBattle_BG0_X +_080CE6E8: .4byte gBattle_BG0_Y +_080CE6EC: .4byte gBattle_BG1_X +_080CE6F0: .4byte gBattle_BG1_Y +_080CE6F4: .4byte gBattle_BG2_X +_080CE6F8: .4byte gBattle_BG2_Y +_080CE6FC: .4byte gBattle_BG3_X +_080CE700: .4byte gBattle_BG3_Y _080CE704: .4byte gTextFlags _080CE708: .4byte sub_80D00D8 _080CE70C: .4byte sub_80CE72C @@ -3981,105 +3981,105 @@ nullsub_76: @ 80D004C thumb_func_start sub_80D0050 sub_80D0050: @ 80D0050 push {lr} - ldr r0, _080D00B8 @ =gUnknown_2022974 + ldr r0, _080D00B8 @ =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, _080D00BC @ =gUnknown_2022976 + ldr r0, _080D00BC @ =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, _080D00C0 @ =gUnknown_2022978 + ldr r0, _080D00C0 @ =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, _080D00C4 @ =gUnknown_202297A + ldr r0, _080D00C4 @ =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, _080D00C8 @ =gUnknown_202297C + ldr r0, _080D00C8 @ =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, _080D00CC @ =gUnknown_202297E + ldr r0, _080D00CC @ =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, _080D00D0 @ =gUnknown_2022980 + ldr r0, _080D00D0 @ =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, _080D00D4 @ =gUnknown_2022982 + ldr r0, _080D00D4 @ =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_8087F54 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .align 2, 0 -_080D00B8: .4byte gUnknown_2022974 -_080D00BC: .4byte gUnknown_2022976 -_080D00C0: .4byte gUnknown_2022978 -_080D00C4: .4byte gUnknown_202297A -_080D00C8: .4byte gUnknown_202297C -_080D00CC: .4byte gUnknown_202297E -_080D00D0: .4byte gUnknown_2022980 -_080D00D4: .4byte gUnknown_2022982 +_080D00B8: .4byte gBattle_BG0_X +_080D00BC: .4byte gBattle_BG0_Y +_080D00C0: .4byte gBattle_BG1_X +_080D00C4: .4byte gBattle_BG1_Y +_080D00C8: .4byte gBattle_BG2_X +_080D00CC: .4byte gBattle_BG2_Y +_080D00D0: .4byte gBattle_BG3_X +_080D00D4: .4byte gBattle_BG3_Y thumb_func_end sub_80D0050 thumb_func_start sub_80D00D8 sub_80D00D8: @ 80D00D8 push {lr} - ldr r0, _080D0140 @ =gUnknown_2022974 + ldr r0, _080D0140 @ =gBattle_BG0_X ldrh r1, [r0] movs r0, 0x10 bl SetGpuReg - ldr r0, _080D0144 @ =gUnknown_2022976 + ldr r0, _080D0144 @ =gBattle_BG0_Y ldrh r1, [r0] movs r0, 0x12 bl SetGpuReg - ldr r0, _080D0148 @ =gUnknown_2022978 + ldr r0, _080D0148 @ =gBattle_BG1_X ldrh r1, [r0] movs r0, 0x14 bl SetGpuReg - ldr r0, _080D014C @ =gUnknown_202297A + ldr r0, _080D014C @ =gBattle_BG1_Y ldrh r1, [r0] movs r0, 0x16 bl SetGpuReg - ldr r0, _080D0150 @ =gUnknown_202297C + ldr r0, _080D0150 @ =gBattle_BG2_X ldrh r1, [r0] movs r0, 0x18 bl SetGpuReg - ldr r0, _080D0154 @ =gUnknown_202297E + ldr r0, _080D0154 @ =gBattle_BG2_Y ldrh r1, [r0] movs r0, 0x1A bl SetGpuReg - ldr r0, _080D0158 @ =gUnknown_2022980 + ldr r0, _080D0158 @ =gBattle_BG3_X ldrh r1, [r0] movs r0, 0x1C bl SetGpuReg - ldr r0, _080D015C @ =gUnknown_2022982 + ldr r0, _080D015C @ =gBattle_BG3_Y ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_8087F54 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .align 2, 0 -_080D0140: .4byte gUnknown_2022974 -_080D0144: .4byte gUnknown_2022976 -_080D0148: .4byte gUnknown_2022978 -_080D014C: .4byte gUnknown_202297A -_080D0150: .4byte gUnknown_202297C -_080D0154: .4byte gUnknown_202297E -_080D0158: .4byte gUnknown_2022980 -_080D015C: .4byte gUnknown_2022982 +_080D0140: .4byte gBattle_BG0_X +_080D0144: .4byte gBattle_BG0_Y +_080D0148: .4byte gBattle_BG1_X +_080D014C: .4byte gBattle_BG1_Y +_080D0150: .4byte gBattle_BG2_X +_080D0154: .4byte gBattle_BG2_Y +_080D0158: .4byte gBattle_BG3_X +_080D015C: .4byte gBattle_BG3_Y thumb_func_end sub_80D00D8 thumb_func_start sub_80D0160 @@ -4225,9 +4225,9 @@ sub_80D025C: @ 80D025C push {r6,r7} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _080D0288 @ =gUnknown_2022978 + ldr r0, _080D0288 @ =gBattle_BG1_X mov r8, r0 - ldr r1, _080D028C @ =gUnknown_202297A + ldr r1, _080D028C @ =gBattle_BG1_Y mov r9, r1 ldr r1, _080D0290 @ =gTasks lsls r0, r5, 2 @@ -4238,18 +4238,18 @@ sub_80D025C: @ 80D025C ldrsh r0, [r0, r2] cmp r0, 0 bne _080D029C - ldr r7, _080D0294 @ =gUnknown_202297C - ldr r6, _080D0298 @ =gUnknown_202297E + ldr r7, _080D0294 @ =gBattle_BG2_X + ldr r6, _080D0298 @ =gBattle_BG2_Y b _080D02A0 .align 2, 0 -_080D0288: .4byte gUnknown_2022978 -_080D028C: .4byte gUnknown_202297A +_080D0288: .4byte gBattle_BG1_X +_080D028C: .4byte gBattle_BG1_Y _080D0290: .4byte gTasks -_080D0294: .4byte gUnknown_202297C -_080D0298: .4byte gUnknown_202297E +_080D0294: .4byte gBattle_BG2_X +_080D0298: .4byte gBattle_BG2_Y _080D029C: - ldr r7, _080D0328 @ =gUnknown_2022980 - ldr r6, _080D032C @ =gUnknown_2022982 + ldr r7, _080D0328 @ =gBattle_BG3_X + ldr r6, _080D032C @ =gBattle_BG3_Y _080D02A0: lsls r4, r5, 2 adds r4, r5 @@ -4314,8 +4314,8 @@ _080D031A: pop {r0} bx r0 .align 2, 0 -_080D0328: .4byte gUnknown_2022980 -_080D032C: .4byte gUnknown_2022982 +_080D0328: .4byte gBattle_BG3_X +_080D032C: .4byte gBattle_BG3_Y _080D0330: .4byte sub_80D0160 thumb_func_end sub_80D025C @@ -4527,12 +4527,12 @@ sub_80D04E8: @ 80D04E8 movs r0, 0x50 movs r1, 0 bl SetGpuReg - ldr r0, _080D0544 @ =gUnknown_2022978 + ldr r0, _080D0544 @ =gBattle_BG1_X movs r1, 0 strh r1, [r0] - ldr r0, _080D0548 @ =gUnknown_202297A + ldr r0, _080D0548 @ =gBattle_BG1_Y strh r1, [r0] - ldr r0, _080D054C @ =gUnknown_202297C + ldr r0, _080D054C @ =gBattle_BG2_X strh r1, [r0] movs r0, 0x1 movs r1, 0x5 @@ -4562,9 +4562,9 @@ sub_80D04E8: @ 80D04E8 pop {r0} bx r0 .align 2, 0 -_080D0544: .4byte gUnknown_2022978 -_080D0548: .4byte gUnknown_202297A -_080D054C: .4byte gUnknown_202297C +_080D0544: .4byte gBattle_BG1_X +_080D0548: .4byte gBattle_BG1_Y +_080D054C: .4byte gBattle_BG2_X _080D0550: .4byte gUnknown_2039A24 thumb_func_end sub_80D04E8 diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ef1c75939..145521094 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -21605,7 +21605,7 @@ _080677EA: ands r0, r1 strb r0, [r5, 0x1] _08067822: - ldr r1, _08067850 @ =gUnknown_825E074 + ldr r1, _08067850 @ =gSineTable movs r2, 0x3A ldrsh r0, [r4, r2] lsls r0, 1 @@ -21629,7 +21629,7 @@ _08067822: strb r0, [r5] b _080678B6 .align 2, 0 -_08067850: .4byte gUnknown_825E074 +_08067850: .4byte gSineTable _08067854: ldrh r0, [r4, 0x36] adds r0, 0x1 @@ -21697,7 +21697,7 @@ sub_80678C0: @ 80678C0 movs r0, 0xFF ands r2, r0 strh r2, [r1, 0x3C] - ldr r3, _080678EC @ =gUnknown_825E074 + ldr r3, _080678EC @ =gSineTable movs r4, 0x3C ldrsh r0, [r1, r4] lsls r0, 1 @@ -21715,7 +21715,7 @@ _080678E6: pop {r1} bx r1 .align 2, 0 -_080678EC: .4byte gUnknown_825E074 +_080678EC: .4byte gSineTable thumb_func_end sub_80678C0 thumb_func_start sub_80678F0 diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s index a8477a33f..734c7495d 100644 --- a/asm/field_screen_effect.s +++ b/asm/field_screen_effect.s @@ -135,12 +135,12 @@ _0807EEE0: beq _0807EF6C b _0807EF76 _0807EEE6: - ldr r0, _0807EF0C @ =gUnknown_2039600 + ldr r0, _0807EF0C @ =gScanlineEffect ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 - ldr r1, _0807EF10 @ =gUnknown_2038700 + ldr r1, _0807EF10 @ =gScanlineEffectRegBuffers adds r0, r1 movs r2, 0x2 ldrsh r1, [r4, r2] @@ -153,15 +153,15 @@ _0807EEE6: strh r0, [r4] b _0807EF76 .align 2, 0 -_0807EF0C: .4byte gUnknown_2039600 -_0807EF10: .4byte gUnknown_2038700 +_0807EF0C: .4byte gScanlineEffect +_0807EF10: .4byte gScanlineEffectRegBuffers _0807EF14: - ldr r0, _0807EF5C @ =gUnknown_2039600 + ldr r0, _0807EF5C @ =gScanlineEffect ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 7 - ldr r1, _0807EF60 @ =gUnknown_2038700 + ldr r1, _0807EF60 @ =gScanlineEffectRegBuffers adds r0, r1 movs r6, 0x2 ldrsh r1, [r4, r6] @@ -186,19 +186,19 @@ _0807EF14: ldrsh r0, [r4, r3] cmp r0, 0x1 bne _0807EF64 - bl remove_some_task + bl ScanlineEffect_Stop movs r0, 0x2 strh r0, [r4] b _0807EF76 .align 2, 0 -_0807EF5C: .4byte gUnknown_2039600 -_0807EF60: .4byte gUnknown_2038700 +_0807EF5C: .4byte gScanlineEffect +_0807EF60: .4byte gScanlineEffectRegBuffers _0807EF64: adds r0, r5, 0 bl DestroyTask b _0807EF76 _0807EF6C: - bl dp12_8087EA4 + bl ScanlineEffect_Clear adds r0, r5, 0 bl DestroyTask _0807EF76: @@ -344,7 +344,7 @@ sub_807F074: @ 807F074 lsrs r0, 24 cmp r0, 0 beq _0807F0A2 - ldr r4, _0807F0A8 @ =gUnknown_2038700 + ldr r4, _0807F0A8 @ =gScanlineEffectRegBuffers ldr r1, _0807F0AC @ =gUnknown_83C68D4 lsls r0, 1 adds r0, r1 @@ -365,7 +365,7 @@ _0807F0A2: pop {r0} bx r0 .align 2, 0 -_0807F0A8: .4byte gUnknown_2038700 +_0807F0A8: .4byte gScanlineEffectRegBuffers _0807F0AC: .4byte gUnknown_83C68D4 thumb_func_end sub_807F074 diff --git a/asm/field_weather.s b/asm/field_weather.s index 49a1ed95b..416fd90d4 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -2250,7 +2250,7 @@ _0807AD14: movs r1, 0x7F ands r0, r1 strh r0, [r2] - ldr r1, _0807AD5C @ =gUnknown_825E074 + ldr r1, _0807AD5C @ =gSineTable movs r3, 0 ldrsh r0, [r2, r3] lsls r0, 1 @@ -2278,7 +2278,7 @@ _0807AD54: strh r0, [r4] b _0807ADA0 .align 2, 0 -_0807AD5C: .4byte gUnknown_825E074 +_0807AD5C: .4byte gSineTable _0807AD60: .4byte 0x0000073c _0807AD64: .4byte 0x0000073e _0807AD68: diff --git a/asm/field_weather_effects.s b/asm/field_weather_effects.s index fd9b2361a..0330bcbaf 100644 --- a/asm/field_weather_effects.s +++ b/asm/field_weather_effects.s @@ -1972,7 +1972,7 @@ sub_807C1AC: @ 807C1AC movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x34] - ldr r1, _0807C224 @ =gUnknown_825E074 + ldr r1, _0807C224 @ =gSineTable movs r3, 0x34 ldrsh r0, [r4, r3] lsls r0, 1 @@ -2020,7 +2020,7 @@ _0807C210: subs r0, r1 b _0807C23C .align 2, 0 -_0807C224: .4byte gUnknown_825E074 +_0807C224: .4byte gSineTable _0807C228: .4byte gSpriteCoordOffsetX _0807C22C: .4byte 0x000001ff _0807C230: .4byte 0xffffff00 @@ -4417,7 +4417,7 @@ sub_807D4C4: @ 807D4C4 ldr r2, [r0] ldr r0, _0807D52C @ =0x00000704 adds r4, r2, r0 - ldr r6, _0807D530 @ =gUnknown_825E074 + ldr r6, _0807D530 @ =gSineTable ldr r1, _0807D534 @ =0x00000712 adds r5, r2, r1 ldrh r0, [r5] @@ -4465,7 +4465,7 @@ sub_807D4C4: @ 807D4C4 .align 2, 0 _0807D528: .4byte gUnknown_83C2BBC _0807D52C: .4byte 0x00000704 -_0807D530: .4byte gUnknown_825E074 +_0807D530: .4byte gSineTable _0807D534: .4byte 0x00000712 _0807D538: .4byte gSpriteCoordOffsetX _0807D53C: .4byte 0x0000070e @@ -4856,7 +4856,7 @@ SandstormSpriteCallback3: @ 807D81C _0807D83A: movs r0, 0x2E ldrsh r4, [r5, r0] - ldr r3, _0807D88C @ =gUnknown_825E074 + ldr r3, _0807D88C @ =gSineTable movs r2, 0x30 ldrsh r1, [r5, r2] lsls r0, r1, 1 @@ -4897,7 +4897,7 @@ _0807D886: pop {r0} bx r0 .align 2, 0 -_0807D88C: .4byte gUnknown_825E074 +_0807D88C: .4byte gSineTable thumb_func_end SandstormSpriteCallback3 thumb_func_start Weather11_InitVars diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 43ec5eede..5aa8a055c 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -3070,7 +3070,7 @@ _080F36B8: .4byte gUnknown_840C39C thumb_func_start sub_80F36BC sub_80F36BC: @ 80F36BC push {lr} - bl remove_some_task + bl ScanlineEffect_Stop bl ResetTasks bl ResetSpriteData bl reset_temp_tile_data_buffers @@ -3353,7 +3353,7 @@ _080F38EE: movs r1, 0x3 ands r0, r1 adds r0, 0x8 - ldr r1, _080F392C @ =gUnknown_825E074 + ldr r1, _080F392C @ =gSineTable lsls r4, 1 adds r4, r1 movs r2, 0 @@ -3373,7 +3373,7 @@ _080F3926: pop {r0} bx r0 .align 2, 0 -_080F392C: .4byte gUnknown_825E074 +_080F392C: .4byte gSineTable thumb_func_end sub_80F38D8 thumb_func_start sub_80F3930 diff --git a/asm/intro.s b/asm/intro.s index af5104da3..5ec5cf131 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -166,7 +166,7 @@ _080EC65E: movs r0, 0 movs r2, 0 bl load_copyright_graphics - bl remove_some_task + bl ScanlineEffect_Stop bl ResetTasks bl ResetSpriteData bl FreeAllSpritePalettes @@ -3369,7 +3369,7 @@ _080EE114: _080EE11C: movs r4, 0x6 ldrsh r3, [r5, r4] - ldr r4, _080EE15C @ =gUnknown_825E074 + ldr r4, _080EE15C @ =gSineTable adds r0, r3, 0 adds r0, 0x40 lsls r0, 1 @@ -3400,7 +3400,7 @@ _080EE156: pop {r0} bx r0 .align 2, 0 -_080EE15C: .4byte gUnknown_825E074 +_080EE15C: .4byte gSineTable thumb_func_end sub_80EE024 thumb_func_start sub_80EE160 @@ -3587,7 +3587,7 @@ sub_80EE29C: @ 80EE29C lsls r1, 16 asrs r1, 20 strh r1, [r5, 0x22] - ldr r1, _080EE340 @ =gUnknown_825E074 + ldr r1, _080EE340 @ =gSineTable lsls r0, 16 asrs r0, 20 adds r0, 0x40 @@ -3646,7 +3646,7 @@ _080EE336: pop {r0} bx r0 .align 2, 0 -_080EE340: .4byte gUnknown_825E074 +_080EE340: .4byte gSineTable _080EE344: .4byte gUnknown_203AB16 _080EE348: .4byte 0x41c64e6d _080EE34C: .4byte 0x00006073 @@ -4208,7 +4208,7 @@ _080EE740: lsls r1, 16 asrs r1, 20 strh r1, [r4, 0x24] - ldr r1, _080EE7B0 @ =gUnknown_825E074 + ldr r1, _080EE7B0 @ =gSineTable movs r3, 0x34 ldrsh r0, [r4, r3] lsls r0, 1 @@ -4253,7 +4253,7 @@ _080EE78C: strh r0, [r4, 0x3C] b _080EE818 .align 2, 0 -_080EE7B0: .4byte gUnknown_825E074 +_080EE7B0: .4byte gSineTable _080EE7B4: .4byte gUnknown_203AB04 _080EE7B8: .4byte gUnknown_203AB08 _080EE7BC: .4byte gUnknown_203AB06 @@ -4585,7 +4585,7 @@ _080EEA08: lsls r1, 16 asrs r1, 20 strh r1, [r4, 0x24] - ldr r1, _080EEA48 @ =gUnknown_825E074 + ldr r1, _080EEA48 @ =gSineTable lsls r0, 16 asrs r0, 20 lsls r0, 1 @@ -4599,7 +4599,7 @@ _080EEA08: strh r0, [r4, 0x26] b _080EEA88 .align 2, 0 -_080EEA48: .4byte gUnknown_825E074 +_080EEA48: .4byte gSineTable _080EEA4C: ldrh r0, [r4, 0x32] lsrs r0, 4 @@ -4775,7 +4775,7 @@ _080EEB84: asrs r0, 20 negs r1, r0 strh r1, [r4, 0x24] - ldr r1, _080EEBD4 @ =gUnknown_825E074 + ldr r1, _080EEBD4 @ =gSineTable lsls r0, 1 adds r0, r1 movs r3, 0 @@ -4810,7 +4810,7 @@ _080EEBCE: pop {r0} bx r0 .align 2, 0 -_080EEBD4: .4byte gUnknown_825E074 +_080EEBD4: .4byte gSineTable _080EEBD8: .4byte gUnknown_203AB04 _080EEBDC: .4byte gUnknown_203AB08 _080EEBE0: .4byte SpriteCallbackDummy diff --git a/asm/item_menu.s b/asm/item_menu.s index d08021d15..4f753d49e 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -257,7 +257,7 @@ _08107FB0: bl clear_scheduled_bg_copies_to_vram b _08108104 _08107FBA: - bl remove_some_task + bl ScanlineEffect_Stop b _08108104 _08107FC0: bl FreeAllSpritePalettes diff --git a/asm/item_pc.s b/asm/item_pc.s index 8d36ccc81..9d7c3af52 100644 --- a/asm/item_pc.s +++ b/asm/item_pc.s @@ -162,7 +162,7 @@ _0810D53C: bl clear_scheduled_bg_copies_to_vram b _0810D674 _0810D546: - bl remove_some_task + bl ScanlineEffect_Stop b _0810D674 _0810D54C: bl FreeAllSpritePalettes diff --git a/asm/link.s b/asm/link.s index a0ba7f9cb..13305edde 100644 --- a/asm/link.s +++ b/asm/link.s @@ -3252,7 +3252,7 @@ c2_800ACD4: @ 800ACD4 movs r2, 0x2 bl FillPalette bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop ldr r1, _0800ADF0 @ =gWirelessCommType ldrb r0, [r1] cmp r0, 0 diff --git a/asm/mail.s b/asm/mail.s index 1ecaf17cc..2631754c3 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -200,7 +200,7 @@ _080BED40: _080BED8C: movs r0, 0 bl SetVBlankCallback - bl remove_some_task + bl ScanlineEffect_Stop movs r0, 0 movs r1, 0 bl SetGpuReg diff --git a/asm/main_menu.s b/asm/main_menu.s index ae0a4c69b..fa9e7ef20 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -113,7 +113,7 @@ sub_800C318: @ 800C318 ldr r0, _0800C4B0 @ =0x810001ff str r0, [r1, 0x8] ldr r0, [r1, 0x8] - bl remove_some_task + bl ScanlineEffect_Stop bl ResetTasks bl ResetSpriteData bl FreeAllSpritePalettes diff --git a/asm/menu_indicators.s b/asm/menu_indicators.s index 0dad7d3c1..5ae7a46c4 100644 --- a/asm/menu_indicators.s +++ b/asm/menu_indicators.s @@ -38,7 +38,7 @@ _0813392A: _0813393A: movs r0, 0x34 ldrsh r3, [r4, r0] - ldr r1, _0813395C @ =gUnknown_825E074 + ldr r1, _0813395C @ =gSineTable ldrh r2, [r4, 0x38] lsls r0, r2, 24 lsrs r0, 23 @@ -54,11 +54,11 @@ _08133954: strh r0, [r4, 0x24] b _0813397E .align 2, 0 -_0813395C: .4byte gUnknown_825E074 +_0813395C: .4byte gSineTable _08133960: movs r0, 0x34 ldrsh r3, [r4, r0] - ldr r1, _0813398C @ =gUnknown_825E074 + ldr r1, _0813398C @ =gSineTable ldrh r2, [r4, 0x38] lsls r0, r2, 24 lsrs r0, 23 @@ -81,7 +81,7 @@ _08133984: pop {r0} bx r0 .align 2, 0 -_0813398C: .4byte gUnknown_825E074 +_0813398C: .4byte gSineTable thumb_func_end sub_8133904 thumb_func_start AddScrollIndicatorArrowObject @@ -959,7 +959,7 @@ _0813403C: .4byte gSprites ObjectCB_RedArrowCursor: @ 8134040 push {lr} adds r2, r0, 0 - ldr r1, _08134068 @ =gUnknown_825E074 + ldr r1, _08134068 @ =gSineTable ldrh r3, [r2, 0x2E] lsls r0, r3, 24 lsrs r0, 23 @@ -978,7 +978,7 @@ _08134058: pop {r0} bx r0 .align 2, 0 -_08134068: .4byte gUnknown_825E074 +_08134068: .4byte gSineTable thumb_func_end ObjectCB_RedArrowCursor thumb_func_start nullsub_95 diff --git a/asm/mystery_gift_menu.s b/asm/mystery_gift_menu.s index 790c3c0b2..d6be6db09 100644 --- a/asm/mystery_gift_menu.s +++ b/asm/mystery_gift_menu.s @@ -64,7 +64,7 @@ _081420D6: bl ResetSpriteData bl FreeAllSpritePalettes bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop movs r0, 0x1 bl ResetBgsAndClearDma3BusyFlags ldr r1, _081421E0 @ =gUnknown_8466D60 diff --git a/asm/oak_speech.s b/asm/oak_speech.s index a29079410..35e16ce71 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,367 +5,6 @@ .text - thumb_func_start sub_812EB58 -sub_812EB58: @ 812EB58 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0812EB7C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xA - bls _0812EB70 - b _0812EE94 -_0812EB70: - lsls r0, 2 - ldr r1, _0812EB80 @ =_0812EB84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0812EB7C: .4byte gMain -_0812EB80: .4byte _0812EB84 - .align 2, 0 -_0812EB84: - .4byte _0812EBB0 - .4byte _0812EC28 - .4byte _0812EC44 - .4byte _0812EC8E - .4byte _0812ED00 - .4byte _0812ED3C - .4byte _0812ED6C - .4byte _0812ED9A - .4byte _0812EE94 - .4byte _0812EE94 - .4byte _0812EE30 -_0812EBB0: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - add r1, sp, 0x8 - movs r0, 0 - strh r0, [r1] - ldr r1, _0812EC14 @ =0x040000d4 - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0812EC18 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - str r2, [sp, 0xC] - add r0, sp, 0xC - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0812EC1C @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x8 - strh r2, [r0] - str r0, [r1] - ldr r0, _0812EC20 @ =0x05000002 - str r0, [r1, 0x4] - ldr r0, _0812EC24 @ =0x810001ff - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - bl remove_some_task - bl ResetSpriteData - bl FreeAllSpritePalettes - bl reset_temp_tile_data_buffers - movs r0, 0x2 - bl sub_812B1F0 - b _0812EE94 - .align 2, 0 -_0812EC14: .4byte 0x040000d4 -_0812EC18: .4byte 0x8100c000 -_0812EC1C: .4byte 0x85000100 -_0812EC20: .4byte 0x05000002 -_0812EC24: .4byte 0x810001ff -_0812EC28: - ldr r4, _0812EC3C @ =gUnknown_203B108 - ldr r0, _0812EC40 @ =0x00002420 - bl AllocZeroed - str r0, [r4] - movs r0, 0x1 - movs r1, 0x1 - bl sub_8044AF0 - b _0812EE94 - .align 2, 0 -_0812EC3C: .4byte gUnknown_203B108 -_0812EC40: .4byte 0x00002420 -_0812EC44: - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x42 - movs r1, 0 - bl SetGpuReg - movs r0, 0x46 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - b _0812EE94 -_0812EC8E: - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0812ECF0 @ =gUnknown_8462E58 - movs r0, 0x1 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r4, _0812ECF4 @ =gUnknown_203B108 - ldr r1, [r4] - movs r0, 0xE1 - lsls r0, 5 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r0, 0xC1 - lsls r0, 5 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - 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 - ldr r0, _0812ECF8 @ =gSpriteCoordOffsetX - movs r1, 0 - strh r1, [r0] - ldr r0, _0812ECFC @ =gSpriteCoordOffsetY - strh r1, [r0] - b _0812EE94 - .align 2, 0 -_0812ECF0: .4byte gUnknown_8462E58 -_0812ECF4: .4byte gUnknown_203B108 -_0812ECF8: .4byte gSpriteCoordOffsetX -_0812ECFC: .4byte gSpriteCoordOffsetY -_0812ED00: - ldr r2, _0812ED34 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - bl sub_80F6C6C - bl sub_80F6C98 - movs r0, 0xD0 - bl sub_80F77CC - ldr r0, _0812ED38 @ =gUnknown_8460568 - movs r1, 0 - movs r2, 0x80 - bl LoadPalette - movs r0, 0x2 - bl stdpal_get - adds r0, 0x1E - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - b _0812EE94 - .align 2, 0 -_0812ED34: .4byte gPaletteFade -_0812ED38: .4byte gUnknown_8460568 -_0812ED3C: - bl sub_80F78A8 - ldr r1, _0812ED60 @ =gUnknown_203B108 - ldr r1, [r1] - movs r3, 0 - strb r0, [r1, 0x1F] - ldr r2, _0812ED64 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0812ED68 @ =gUnknown_84605E8 - str r3, [sp] - movs r0, 0x1 - movs r2, 0 - bl decompress_and_copy_tile_data_to_vram - b _0812EE94 - .align 2, 0 -_0812ED60: .4byte gUnknown_203B108 -_0812ED64: .4byte gTextFlags -_0812ED68: .4byte gUnknown_84605E8 -_0812ED6C: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - cmp r0, 0 - beq _0812ED78 - b _0812EEA2 -_0812ED78: - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - b _0812EE94 -_0812ED9A: - movs r0, 0xE2 - lsls r0, 1 - str r0, [sp] - movs r0, 0 - movs r1, 0x1E - movs r2, 0 - movs r3, 0xD - bl sub_810F558 - ldr r1, _0812EE1C @ =0x0000d00f - movs r4, 0x1E - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _0812EE20 @ =0x0000d002 - str r4, [sp] - movs r5, 0x1 - str r5, [sp, 0x4] - movs r0, 0x1 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _0812EE24 @ =0x0000d00e - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x1 - movs r2, 0 - movs r3, 0x13 - bl FillBgTilemapBufferRect_Palette0 - bl sub_812EEB0 - ldr r2, _0812EE28 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r0, 0 - str r0, [sp] - movs r1, 0xE6 - movs r2, 0x95 - movs r3, 0 - bl sub_8006300 - ldr r2, _0812EE2C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x12] - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _0812EE94 - .align 2, 0 -_0812EE1C: .4byte 0x0000d00f -_0812EE20: .4byte 0x0000d002 -_0812EE24: .4byte 0x0000d00e -_0812EE28: .4byte gPaletteFade -_0812EE2C: .4byte gTasks -_0812EE30: - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r0, _0812EE80 @ =sub_812EAFC - bl SetVBlankCallback - ldr r0, _0812EE84 @ =0x00000143 - bl PlayBGM - ldr r1, _0812EE88 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812EE8C @ =sub_812F0B0 - str r1, [r0] - ldr r0, _0812EE90 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - strb r4, [r0] - b _0812EEA2 - .align 2, 0 -_0812EE80: .4byte sub_812EAFC -_0812EE84: .4byte 0x00000143 -_0812EE88: .4byte gTasks -_0812EE8C: .4byte sub_812F0B0 -_0812EE90: .4byte gMain -_0812EE94: - ldr r1, _0812EEAC @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0812EEA2: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812EEAC: .4byte gMain - thumb_func_end sub_812EB58 - thumb_func_start sub_812EEB0 sub_812EEB0: @ 812EEB0 push {r4-r6,lr} @@ -378,7 +17,7 @@ sub_812EEB0: @ 812EEB0 movs r3, 0 bl sub_810F650 ldr r1, _0812EF40 @ =gUnknown_8462EB4 - ldr r4, _0812EF44 @ =gUnknown_203B108 + ldr r4, _0812EF44 @ =sOakSpeechResources ldr r0, [r4] ldrh r0, [r0, 0x12] lsls r0, 2 @@ -432,7 +71,7 @@ sub_812EEB0: @ 812EEB0 _0812EF38: .4byte gUnknown_8415D2C _0812EF3C: .4byte gUnknown_8415D48 _0812EF40: .4byte gUnknown_8462EB4 -_0812EF44: .4byte gUnknown_203B108 +_0812EF44: .4byte sOakSpeechResources _0812EF48: .4byte gUnknown_8462EE8 _0812EF4C: .4byte gUnknown_81C582D thumb_func_end sub_812EEB0 @@ -449,7 +88,7 @@ sub_812EF50: @ 812EF50 lsrs r0, 24 mov r8, r0 movs r6, 0 - ldr r4, _0812EF80 @ =gUnknown_203B108 + ldr r4, _0812EF80 @ =sOakSpeechResources ldr r0, [r4] ldrh r1, [r0, 0x12] subs r0, r1, 0x1 @@ -463,7 +102,7 @@ sub_812EF50: @ 812EF50 mov r10, r0 b _0812F06A .align 2, 0 -_0812EF80: .4byte gUnknown_203B108 +_0812EF80: .4byte sOakSpeechResources _0812EF84: ldr r0, _0812F038 @ =gUnknown_8415D50 movs r1, 0 @@ -533,7 +172,7 @@ _0812EF9A: lsrs r6, r0, 24 cmp r6, 0x2 bls _0812EF9A - ldr r0, _0812F048 @ =gUnknown_203B108 + ldr r0, _0812F048 @ =sOakSpeechResources ldr r0, [r0] ldrh r0, [r0, 0x12] cmp r0, 0x1 @@ -553,7 +192,7 @@ _0812F038: .4byte gUnknown_8415D50 _0812F03C: .4byte gUnknown_8462EB4 _0812F040: .4byte gUnknown_8462EE8 _0812F044: .4byte gUnknown_8463074 -_0812F048: .4byte gUnknown_203B108 +_0812F048: .4byte sOakSpeechResources _0812F04C: .4byte gUnknown_8460D94 _0812F050: ldr r1, _0812F0A0 @ =gUnknown_8460E34 @@ -630,7 +269,7 @@ sub_812F0B0: @ 812F0B0 lsls r0, 3 adds r0, r1 strh r3, [r0, 0x26] - ldr r0, _0812F118 @ =gUnknown_203B108 + ldr r0, _0812F118 @ =sOakSpeechResources ldr r0, [r0] ldrh r0, [r0, 0x12] adds r4, r2, 0 @@ -651,10 +290,10 @@ sub_812F0B0: @ 812F0B0 _0812F10C: .4byte gPaletteFade _0812F110: .4byte gMain _0812F114: .4byte gTasks -_0812F118: .4byte gUnknown_203B108 +_0812F118: .4byte sOakSpeechResources _0812F11C: .4byte 0xffffdfff _0812F120: - ldr r0, _0812F16C @ =gUnknown_203B108 + ldr r0, _0812F16C @ =sOakSpeechResources ldr r0, [r0] ldrh r0, [r0, 0x12] cmp r0, 0 @@ -691,7 +330,7 @@ _0812F162: pop {r0} bx r0 .align 2, 0 -_0812F16C: .4byte gUnknown_203B108 +_0812F16C: .4byte sOakSpeechResources _0812F170: .4byte gTasks _0812F174: .4byte 0x0000ffff _0812F178: .4byte 0xffffdfff @@ -715,7 +354,7 @@ sub_812F180: @ 812F180 ands r0, r1 cmp r0, 0 bne _0812F260 - ldr r1, _0812F1B4 @ =gUnknown_203B108 + ldr r1, _0812F1B4 @ =sOakSpeechResources ldr r0, [r1] ldrh r0, [r0, 0x12] adds r5, r1, 0 @@ -726,7 +365,7 @@ sub_812F180: @ 812F180 b _0812F1C4 .align 2, 0 _0812F1B0: .4byte gPaletteFade -_0812F1B4: .4byte gUnknown_203B108 +_0812F1B4: .4byte sOakSpeechResources _0812F1B8: cmp r0, 0 blt _0812F1C4 @@ -838,7 +477,7 @@ sub_812F274: @ 812F274 ands r0, r1 cmp r0, 0 bne _0812F320 - ldr r5, _0812F330 @ =gUnknown_203B108 + ldr r5, _0812F330 @ =sOakSpeechResources _0812F292: ldr r0, [r5] lsls r4, r6, 1 @@ -892,7 +531,7 @@ _0812F292: adds r4, r0 ldrb r0, [r4, 0x12] bl sub_8006398 - ldr r0, _0812F330 @ =gUnknown_203B108 + ldr r0, _0812F330 @ =sOakSpeechResources ldr r0, [r0] strh r7, [r0, 0x14] adds r0, 0x14 @@ -912,7 +551,7 @@ _0812F320: bx r0 .align 2, 0 _0812F32C: .4byte gPaletteFade -_0812F330: .4byte gUnknown_203B108 +_0812F330: .4byte sOakSpeechResources _0812F334: .4byte gTasks _0812F338: .4byte sub_812F33C thumb_func_end sub_812F274 @@ -959,7 +598,7 @@ _0812F374: add r1, sp, 0x14 bl malloc_and_decompress adds r1, r0, 0 - ldr r4, _0812F48C @ =gUnknown_203B108 + ldr r4, _0812F48C @ =sOakSpeechResources ldr r0, [r4] str r1, [r0, 0x8] movs r0, 0x1E @@ -1072,7 +711,7 @@ _0812F476: .align 2, 0 _0812F484: .4byte gUnknown_8415D48 _0812F488: .4byte gUnknown_8460BA8 -_0812F48C: .4byte gUnknown_203B108 +_0812F48C: .4byte sOakSpeechResources _0812F490: .4byte gUnknown_8462EC0 _0812F494: .4byte gMain _0812F498: .4byte gUnknown_8462EEC @@ -1159,15 +798,15 @@ _0812F544: ands r0, r1 cmp r0, 0 beq _0812F55C - ldr r0, _0812F558 @ =gUnknown_203B108 + ldr r0, _0812F558 @ =sOakSpeechResources ldr r1, [r0] ldrh r0, [r1, 0x12] adds r0, 0x1 b _0812F56A .align 2, 0 -_0812F558: .4byte gUnknown_203B108 +_0812F558: .4byte sOakSpeechResources _0812F55C: - ldr r0, _0812F58C @ =gUnknown_203B108 + ldr r0, _0812F58C @ =sOakSpeechResources ldr r1, [r0] ldrh r0, [r1, 0x12] cmp r0, 0 @@ -1179,7 +818,7 @@ _0812F56A: strh r0, [r1, 0x12] movs r0, 0x5 bl PlaySE - ldr r0, _0812F58C @ =gUnknown_203B108 + ldr r0, _0812F58C @ =sOakSpeechResources ldr r0, [r0] ldrh r0, [r0, 0x12] cmp r0, 0x3 @@ -1192,7 +831,7 @@ _0812F56A: strb r1, [r0] b _0812F71C .align 2, 0 -_0812F58C: .4byte gUnknown_203B108 +_0812F58C: .4byte sOakSpeechResources _0812F590: .4byte gMain _0812F594: ldr r1, _0812F5B0 @ =0x00000241 @@ -1239,7 +878,7 @@ _0812F5D6: str r1, [sp, 0x8] str r2, [sp, 0xC] ldr r2, _0812F624 @ =gUnknown_8462EF0 - ldr r4, _0812F628 @ =gUnknown_203B108 + ldr r4, _0812F628 @ =sOakSpeechResources ldr r1, [r4] ldrh r1, [r1, 0x12] lsls r1, 2 @@ -1263,7 +902,7 @@ _0812F5D6: .align 2, 0 _0812F620: .4byte gUnknown_8462EEC _0812F624: .4byte gUnknown_8462EF0 -_0812F628: .4byte gUnknown_203B108 +_0812F628: .4byte sOakSpeechResources _0812F62C: .4byte gUnknown_8415D48 _0812F630: bl sub_810F71C @@ -1343,7 +982,7 @@ _0812F6C0: b _0812F71C _0812F6D0: strb r4, [r3] - ldr r0, _0812F724 @ =gUnknown_203B108 + ldr r0, _0812F724 @ =sOakSpeechResources ldr r0, [r0] strh r4, [r0, 0x12] movs r0, 0x40 @@ -1380,7 +1019,7 @@ _0812F71C: pop {r0} bx r0 .align 2, 0 -_0812F724: .4byte gUnknown_203B108 +_0812F724: .4byte sOakSpeechResources _0812F728: .4byte sub_812F72C thumb_func_end sub_812F4A8 @@ -1483,7 +1122,7 @@ _0812F7F0: add r1, sp, 0x4 bl malloc_and_decompress adds r1, r0, 0 - ldr r0, _0812F874 @ =gUnknown_203B108 + ldr r0, _0812F874 @ =sOakSpeechResources ldr r0, [r0] str r1, [r0] ldr r2, [sp, 0x4] @@ -1535,7 +1174,7 @@ _0812F862: bx r0 .align 2, 0 _0812F870: .4byte gUnknown_8460CA4 -_0812F874: .4byte gUnknown_203B108 +_0812F874: .4byte sOakSpeechResources _0812F878: .4byte gUnknown_8460CE8 _0812F87C: .4byte sub_812F880 thumb_func_end sub_812F7C0 @@ -1579,7 +1218,7 @@ _0812F8B8: adds r0, r5, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _0812F8F8 @ =gUnknown_203B108 + ldr r0, _0812F8F8 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -1597,9 +1236,9 @@ _0812F8B8: .align 2, 0 _0812F8F0: .4byte gUnknown_81C5C78 _0812F8F4: .4byte gStringVar4 -_0812F8F8: .4byte gUnknown_203B108 +_0812F8F8: .4byte sOakSpeechResources _0812F8FC: - ldr r0, _0812F938 @ =gUnknown_203B108 + ldr r0, _0812F938 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -1629,7 +1268,7 @@ _0812F92E: pop {r0} bx r0 .align 2, 0 -_0812F938: .4byte gUnknown_203B108 +_0812F938: .4byte sOakSpeechResources _0812F93C: .4byte gTasks _0812F940: .4byte sub_812F944 thumb_func_end sub_812F880 @@ -1656,7 +1295,7 @@ sub_812F944: @ 812F944 adds r0, r5, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _0812F99C @ =gUnknown_203B108 + ldr r0, _0812F99C @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -1674,9 +1313,9 @@ sub_812F944: @ 812F944 .align 2, 0 _0812F994: .4byte gUnknown_81C5D06 _0812F998: .4byte gStringVar4 -_0812F99C: .4byte gUnknown_203B108 +_0812F99C: .4byte sOakSpeechResources _0812F9A0: - ldr r0, _0812F9E0 @ =gUnknown_203B108 + ldr r0, _0812F9E0 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -1708,7 +1347,7 @@ _0812F9D6: pop {r0} bx r0 .align 2, 0 -_0812F9E0: .4byte gUnknown_203B108 +_0812F9E0: .4byte sOakSpeechResources _0812F9E4: .4byte gTasks _0812F9E8: .4byte sub_812F9EC thumb_func_end sub_812F944 @@ -1833,7 +1472,7 @@ _0812FAA0: adds r0, r4, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _0812FB10 @ =gUnknown_203B108 + ldr r0, _0812FB10 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r5, [sp] @@ -1854,9 +1493,9 @@ _0812FB00: .4byte sub_812FB4C _0812FB04: .4byte 0x00003fff _0812FB08: .4byte gUnknown_81C5D12 _0812FB0C: .4byte gStringVar4 -_0812FB10: .4byte gUnknown_203B108 +_0812FB10: .4byte sOakSpeechResources _0812FB14: - ldr r0, _0812FB48 @ =gUnknown_203B108 + ldr r0, _0812FB48 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r5, [sp] @@ -1882,7 +1521,7 @@ _0812FB40: pop {r0} bx r0 .align 2, 0 -_0812FB48: .4byte gUnknown_203B108 +_0812FB48: .4byte sOakSpeechResources thumb_func_end sub_812FA78 thumb_func_start sub_812FB4C @@ -1907,7 +1546,7 @@ sub_812FB4C: @ 812FB4C adds r0, r5, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _0812FBA4 @ =gUnknown_203B108 + ldr r0, _0812FBA4 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -1925,9 +1564,9 @@ sub_812FB4C: @ 812FB4C .align 2, 0 _0812FB9C: .4byte gUnknown_81C5D4B _0812FBA0: .4byte gStringVar4 -_0812FBA4: .4byte gUnknown_203B108 +_0812FBA4: .4byte sOakSpeechResources _0812FBA8: - ldr r0, _0812FBE4 @ =gUnknown_203B108 + ldr r0, _0812FBE4 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -1957,7 +1596,7 @@ _0812FBDA: pop {r0} bx r0 .align 2, 0 -_0812FBE4: .4byte gUnknown_203B108 +_0812FBE4: .4byte sOakSpeechResources _0812FBE8: .4byte gTasks _0812FBEC: .4byte sub_812FBF0 thumb_func_end sub_812FB4C @@ -2097,7 +1736,7 @@ _0812FCEC: adds r0, r5, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _0812FD2C @ =gUnknown_203B108 + ldr r0, _0812FD2C @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -2115,9 +1754,9 @@ _0812FCEC: .align 2, 0 _0812FD24: .4byte gUnknown_81C5DBD _0812FD28: .4byte gStringVar4 -_0812FD2C: .4byte gUnknown_203B108 +_0812FD2C: .4byte sOakSpeechResources _0812FD30: - ldr r0, _0812FD6C @ =gUnknown_203B108 + ldr r0, _0812FD6C @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -2147,7 +1786,7 @@ _0812FD62: pop {r0} bx r0 .align 2, 0 -_0812FD6C: .4byte gUnknown_203B108 +_0812FD6C: .4byte sOakSpeechResources _0812FD70: .4byte gTasks _0812FD74: .4byte sub_812FD78 thumb_func_end sub_812FC68 @@ -2230,7 +1869,7 @@ _0812FDF0: adds r0, r5, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _0812FE3C @ =gUnknown_203B108 + ldr r0, _0812FE3C @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -2248,9 +1887,9 @@ _0812FDF0: .align 2, 0 _0812FE34: .4byte gUnknown_81C59D5 _0812FE38: .4byte gStringVar4 -_0812FE3C: .4byte gUnknown_203B108 +_0812FE3C: .4byte sOakSpeechResources _0812FE40: - ldr r0, _0812FE7C @ =gUnknown_203B108 + ldr r0, _0812FE7C @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -2280,7 +1919,7 @@ _0812FE72: pop {r0} bx r0 .align 2, 0 -_0812FE7C: .4byte gUnknown_203B108 +_0812FE7C: .4byte sOakSpeechResources _0812FE80: .4byte gTasks _0812FE84: .4byte sub_812FE88 thumb_func_end sub_812FDC0 @@ -2327,7 +1966,7 @@ sub_812FE88: @ 812FE88 lsrs r0, 24 movs r1, 0x11 bl FillWindowPixelBuffer - ldr r4, _0812FF94 @ =gUnknown_203B108 + ldr r4, _0812FF94 @ =sOakSpeechResources ldr r0, [r4] movs r1, 0x1 mov r9, r1 @@ -2410,7 +2049,7 @@ _0812FF7E: .align 2, 0 _0812FF8C: .4byte gUnknown_8462EC8 _0812FF90: .4byte gTasks -_0812FF94: .4byte gUnknown_203B108 +_0812FF94: .4byte sOakSpeechResources _0812FF98: .4byte gUnknown_8415D93 _0812FF9C: .4byte gUnknown_8415D97 _0812FFA0: .4byte sub_812FFA4 @@ -2581,7 +2220,7 @@ _081300D0: adds r0, r5, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _08130114 @ =gUnknown_203B108 + ldr r0, _08130114 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -2599,9 +2238,9 @@ _081300D0: .align 2, 0 _0813010C: .4byte gUnknown_81C5DEA _08130110: .4byte gStringVar4 -_08130114: .4byte gUnknown_203B108 +_08130114: .4byte sOakSpeechResources _08130118: - ldr r0, _08130154 @ =gUnknown_203B108 + ldr r0, _08130154 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] str r4, [sp] @@ -2631,7 +2270,7 @@ _0813014A: pop {r0} bx r0 .align 2, 0 -_08130154: .4byte gUnknown_203B108 +_08130154: .4byte sOakSpeechResources _08130158: .4byte gTasks _0813015C: .4byte sub_8130160 thumb_func_end sub_81300A0 @@ -2655,7 +2294,7 @@ sub_8130160: @ 8130160 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _081301A4 @ =gUnknown_203B108 + ldr r0, _081301A4 @ =sOakSpeechResources ldr r0, [r0] strh r4, [r0, 0x10] ldr r1, _081301A8 @ =gTasks @@ -2671,7 +2310,7 @@ _0813019A: pop {r0} bx r0 .align 2, 0 -_081301A4: .4byte gUnknown_203B108 +_081301A4: .4byte sOakSpeechResources _081301A8: .4byte gTasks _081301AC: .4byte sub_81303B4 thumb_func_end sub_8130160 @@ -2716,7 +2355,7 @@ _081301F8: .4byte gTasks+0x8 _081301FC: .4byte gSpriteCoordOffsetX _08130200: strh r1, [r4, 0x2] - ldr r0, _08130220 @ =gUnknown_203B108 + ldr r0, _08130220 @ =sOakSpeechResources ldr r0, [r0] ldrb r1, [r0, 0x10] adds r0, r5, 0 @@ -2731,7 +2370,7 @@ _08130218: pop {r0} bx r0 .align 2, 0 -_08130220: .4byte gUnknown_203B108 +_08130220: .4byte sOakSpeechResources _08130224: .4byte sub_8130324 thumb_func_end sub_81301B0 @@ -2741,7 +2380,7 @@ sub_8130228: @ 8130228 sub sp, 0x10 lsls r0, 24 lsrs r6, r0, 24 - ldr r4, _08130278 @ =gUnknown_203B108 + ldr r4, _08130278 @ =sOakSpeechResources ldr r0, [r4] ldrb r1, [r0, 0x10] adds r0, r6, 0 @@ -2774,7 +2413,7 @@ sub_8130228: @ 8130228 bl AddTextPrinterParametrized b _0813029C .align 2, 0 -_08130278: .4byte gUnknown_203B108 +_08130278: .4byte sOakSpeechResources _0813027C: .4byte gUnknown_81C5DEA _08130280: .4byte gStringVar4 _08130284: @@ -2883,7 +2522,7 @@ sub_8130324: @ 8130324 bl sub_810F4D8 ldrb r0, [r5, 0x1A] bl RemoveWindow - ldr r0, _08130380 @ =gUnknown_203B108 + ldr r0, _08130380 @ =sOakSpeechResources ldr r0, [r0] ldrb r0, [r0, 0x10] subs r1, r4, 0x1 @@ -2899,7 +2538,7 @@ sub_8130324: @ 8130324 b _081303A6 .align 2, 0 _0813037C: .4byte gTasks+0x8 -_08130380: .4byte gUnknown_203B108 +_08130380: .4byte sOakSpeechResources _08130384: .4byte sub_8130464 _08130388: movs r0, 0x5 @@ -2940,7 +2579,7 @@ sub_81303B4: @ 81303B4 lsrs r5, r0, 24 cmp r5, 0 bne _0813044C - ldr r4, _081303FC @ =gUnknown_203B108 + ldr r4, _081303FC @ =sOakSpeechResources ldr r0, [r4] ldrb r0, [r0, 0x10] movs r1, 0 @@ -2961,7 +2600,7 @@ sub_81303B4: @ 81303B4 b _08130440 .align 2, 0 _081303F8: .4byte gPaletteFade -_081303FC: .4byte gUnknown_203B108 +_081303FC: .4byte sOakSpeechResources _08130400: .4byte gSaveBlock2Ptr _08130404: .4byte sub_8130C64 _08130408: @@ -3028,7 +2667,7 @@ sub_8130464: @ 8130464 ldrsh r0, [r5, r1] cmp r0, 0x1 bne _08130500 - ldr r0, _081304A8 @ =gUnknown_203B108 + ldr r0, _081304A8 @ =sOakSpeechResources ldr r0, [r0] ldrh r0, [r0, 0x10] cmp r0, 0 @@ -3040,7 +2679,7 @@ sub_8130464: @ 8130464 .align 2, 0 _081304A0: .4byte gTasks+0x8 _081304A4: .4byte gPaletteFade -_081304A8: .4byte gUnknown_203B108 +_081304A8: .4byte sOakSpeechResources _081304AC: .4byte gStringVar4 _081304B0: .4byte gUnknown_81C5E13 _081304B4: @@ -3052,7 +2691,7 @@ _081304BC: movs r1, 0 bl sub_80F6EE4 ldr r2, _081304F4 @ =gStringVar4 - ldr r0, _081304FC @ =gUnknown_203B108 + ldr r0, _081304FC @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] movs r4, 0 @@ -3076,7 +2715,7 @@ _081304BC: .align 2, 0 _081304F4: .4byte gStringVar4 _081304F8: .4byte gUnknown_81C5EB5 -_081304FC: .4byte gUnknown_203B108 +_081304FC: .4byte sOakSpeechResources _08130500: movs r0, 0 bl IsTextPrinterActive @@ -3152,7 +2791,7 @@ _0813057C: adds r6, r0, r1 movs r0, 0x28 strh r0, [r6, 0xE] - ldr r7, _081305B4 @ =gUnknown_203B108 + ldr r7, _081305B4 @ =sOakSpeechResources ldr r0, [r7] ldrh r0, [r0, 0x10] cmp r0, 0 @@ -3168,7 +2807,7 @@ _0813057C: b _0813063E .align 2, 0 _081305B0: .4byte gTasks -_081305B4: .4byte gUnknown_203B108 +_081305B4: .4byte sOakSpeechResources _081305B8: .4byte sub_8130650 _081305BC: ldr r4, _081305F8 @ =gStringVar4 @@ -3204,7 +2843,7 @@ _08130600: .4byte sub_8130694 _08130604: movs r0, 0x5 bl PlaySE - ldr r0, _08130624 @ =gUnknown_203B108 + ldr r0, _08130624 @ =sOakSpeechResources ldr r0, [r0] ldrh r0, [r0, 0x10] cmp r0, 0 @@ -3217,7 +2856,7 @@ _08130604: ldr r0, _0813062C @ =sub_8130160 b _0813063C .align 2, 0 -_08130624: .4byte gUnknown_203B108 +_08130624: .4byte sOakSpeechResources _08130628: .4byte gTasks _0813062C: .4byte sub_8130160 _08130630: @@ -3370,7 +3009,7 @@ sub_813071C: @ 813071C adds r0, r4, 0 adds r1, r2, 0 bl StringExpandPlaceholders - ldr r0, _0813077C @ =gUnknown_203B108 + ldr r0, _0813077C @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] movs r0, 0 @@ -3390,9 +3029,9 @@ sub_813071C: @ 813071C _08130770: .4byte gTasks+0x8 _08130774: .4byte gUnknown_81C5E2E _08130778: .4byte gStringVar4 -_0813077C: .4byte gUnknown_203B108 +_0813077C: .4byte sOakSpeechResources _08130780: - ldr r0, _081307C4 @ =gUnknown_203B108 + ldr r0, _081307C4 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] movs r0, 0 @@ -3410,7 +3049,7 @@ _0813079E: movs r0, 0 movs r1, 0x3 bl CopyWindowToVram - ldr r0, _081307C4 @ =gUnknown_203B108 + ldr r0, _081307C4 @ =sOakSpeechResources ldr r1, [r0] movs r0, 0x1 strh r0, [r1, 0x10] @@ -3427,7 +3066,7 @@ _081307BC: pop {r0} bx r0 .align 2, 0 -_081307C4: .4byte gUnknown_203B108 +_081307C4: .4byte sOakSpeechResources _081307C8: .4byte gTasks _081307CC: .4byte sub_81301B0 thumb_func_end sub_813071C @@ -3523,7 +3162,7 @@ sub_8130858: @ 8130858 movs r0, 0 movs r1, 0 bl sub_80F6EE4 - ldr r0, _081308C8 @ =gUnknown_203B108 + ldr r0, _081308C8 @ =sOakSpeechResources ldr r0, [r0] ldrb r3, [r0, 0x1F] movs r0, 0 @@ -3554,7 +3193,7 @@ _081308B4: _081308BC: .4byte gTasks _081308C0: .4byte gStringVar4 _081308C4: .4byte gUnknown_81C5EF4 -_081308C8: .4byte gUnknown_203B108 +_081308C8: .4byte sOakSpeechResources _081308CC: .4byte sub_81308D0 thumb_func_end sub_8130858 @@ -3602,7 +3241,7 @@ sub_8130914: @ 8130914 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0813093C @ =gUnknown_203B108 + ldr r0, _0813093C @ =sOakSpeechResources ldr r1, [r0] movs r0, 0 strh r0, [r1, 0x12] @@ -3616,7 +3255,7 @@ sub_8130914: @ 8130914 pop {r0} bx r0 .align 2, 0 -_0813093C: .4byte gUnknown_203B108 +_0813093C: .4byte sOakSpeechResources thumb_func_end sub_8130914 thumb_func_start sub_8130940 @@ -3667,7 +3306,7 @@ sub_8130980: @ 8130980 ldr r0, _08130A2C @ =gTasks+0x8 mov r8, r0 adds r5, r7, r0 - ldr r0, _08130A30 @ =gUnknown_203B108 + ldr r0, _08130A30 @ =sOakSpeechResources ldr r1, [r0] ldrh r0, [r1, 0x12] adds r0, 0x1 @@ -3739,7 +3378,7 @@ _08130A1E: bx r0 .align 2, 0 _08130A2C: .4byte gTasks+0x8 -_08130A30: .4byte gUnknown_203B108 +_08130A30: .4byte sOakSpeechResources _08130A34: .4byte sub_8130BA8 thumb_func_end sub_8130980 @@ -4007,7 +3646,7 @@ sub_8130C20: @ 8130C20 lsrs r4, 24 bl FreeAllWindowBuffers bl sub_8044D80 - ldr r5, _08130C58 @ =gUnknown_203B108 + ldr r5, _08130C58 @ =sOakSpeechResources ldr r0, [r5] bl Free movs r0, 0 @@ -4025,7 +3664,7 @@ sub_8130C20: @ 8130C20 pop {r0} bx r0 .align 2, 0 -_08130C58: .4byte gUnknown_203B108 +_08130C58: .4byte sOakSpeechResources _08130C5C: .4byte gTextFlags _08130C60: .4byte CB2_NewGame thumb_func_end sub_8130C20 @@ -4095,7 +3734,7 @@ _08130CAC: str r0, [r1, 0x8] ldr r0, [r1, 0x8] bl ResetPaletteFade - bl remove_some_task + bl ScanlineEffect_Stop bl ResetSpriteData bl FreeAllSpritePalettes bl reset_temp_tile_data_buffers @@ -4113,7 +3752,7 @@ _08130D18: movs r0, 0x1 movs r2, 0x3 bl InitBgsFromTemplates - ldr r4, _08130D74 @ =gUnknown_203B108 + ldr r4, _08130D74 @ =sOakSpeechResources ldr r1, [r4] movs r0, 0xE1 lsls r0, 5 @@ -4145,7 +3784,7 @@ _08130D18: b _08130F10 .align 2, 0 _08130D70: .4byte gUnknown_8462E58 -_08130D74: .4byte gUnknown_203B108 +_08130D74: .4byte sOakSpeechResources _08130D78: movs r0, 0x40 movs r1, 0 @@ -4232,7 +3871,7 @@ _08130E38: bl CreateTask lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _08130E60 @ =gUnknown_203B108 + ldr r0, _08130E60 @ =sOakSpeechResources ldr r0, [r0] ldrh r0, [r0, 0x10] cmp r0, 0 @@ -4246,7 +3885,7 @@ _08130E38: b _08130E6A .align 2, 0 _08130E5C: .4byte sub_8130464 -_08130E60: .4byte gUnknown_203B108 +_08130E60: .4byte sOakSpeechResources _08130E64: .4byte gSaveBlock2Ptr _08130E68: movs r0, 0x1 @@ -4742,7 +4381,7 @@ _0813126C: _08131280: movs r0, 0x60 bl AllocZeroed - ldr r2, _0813130C @ =gUnknown_203B108 + ldr r2, _0813130C @ =sOakSpeechResources ldr r1, [r2] str r0, [r1, 0x4] movs r1, 0 @@ -4765,7 +4404,7 @@ _08131290: movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect - ldr r4, _0813130C @ =gUnknown_203B108 + ldr r4, _0813130C @ =sOakSpeechResources ldr r0, [r4] ldr r1, [r0, 0x4] movs r3, 0x8 @@ -4804,7 +4443,7 @@ _081312F6: _08131300: .4byte gUnknown_8461CD4 _08131304: .4byte gUnknown_8461D14 _08131308: .4byte 0x06000600 -_0813130C: .4byte gUnknown_203B108 +_0813130C: .4byte sOakSpeechResources thumb_func_end sub_81311F4 thumb_func_start sub_8131310 diff --git a/asm/option_menu.s b/asm/option_menu.s index 7ee737053..dc175eefd 100644 --- a/asm/option_menu.s +++ b/asm/option_menu.s @@ -431,7 +431,7 @@ sub_80886D4: @ 80886D4 bl ResetPaletteFade bl FreeAllSpritePalettes bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop pop {r0} bx r0 thumb_func_end sub_80886D4 diff --git a/asm/overworld.s b/asm/overworld.s index 679203034..526b9f298 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3933,7 +3933,7 @@ VBlankCB_Field: @ 8056A14 push {lr} bl LoadOam bl ProcessSpriteCopyRequests - bl sub_8087F54 + bl ScanlineEffect_InitHBlankDmaTransfer bl FieldUpdateBgTilemapScroll bl TransferPlttBuffer bl TransferTilesetAnimsBuffer @@ -3954,7 +3954,7 @@ sub_8056A34: @ 8056A34 ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams _08056A52: pop {r0} bx r0 @@ -4451,7 +4451,7 @@ sub_8056E80: @ 8056E80 movs r0, 0 movs r1, 0 bl SetGpuReg - bl remove_some_task + bl ScanlineEffect_Stop ldr r2, _08056EF8 @ =0x05000002 mov r1, sp movs r0, 0 @@ -4630,7 +4630,7 @@ sub_8057024: @ 8057024 bl ResetTasks bl ResetSpriteData bl ResetPaletteFade - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl dp13_810BB8C bl ResetCameraUpdateInfo bl InstallCameraPanAheadCallback @@ -5395,7 +5395,7 @@ _08057690: bl sub_8055920 b _0805772A _0805769C: - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl dp13_810BB8C bl ResetCameraUpdateInfo bl InstallCameraPanAheadCallback diff --git a/asm/party_menu.s b/asm/party_menu.s index c0e4a79f4..be2f0246c 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -281,7 +281,7 @@ _0811EC80: bl clear_scheduled_bg_copies_to_vram b _0811EDFC _0811EC8E: - bl remove_some_task + bl ScanlineEffect_Stop b _0811EDFC _0811EC94: bl ResetPaletteFade diff --git a/asm/pokeball.s b/asm/pokeball.s index 11572c80f..58c9ac77c 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -2276,7 +2276,7 @@ _0804BB22: ldrsh r0, [r4, r7] cmp r0, 0x7F bgt _0804BB64 - ldr r1, _0804BB60 @ =gUnknown_825E074 + ldr r1, _0804BB60 @ =gSineTable lsls r0, r2, 24 lsrs r0, 23 adds r0, r1 @@ -2297,7 +2297,7 @@ _0804BB48: b _0804BB72 .align 2, 0 _0804BB5C: .4byte gSprites -_0804BB60: .4byte gUnknown_825E074 +_0804BB60: .4byte gSineTable _0804BB64: ldrh r0, [r4, 0x38] strh r0, [r5, 0x20] diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 3d3ca02ea..ce2d3fa75 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -58,7 +58,7 @@ sub_810250C: @ 810250C bl ResetPaletteFade bl ResetSpriteData bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop movs r0, 0x1 bl ResetBgsAndClearDma3BusyFlags ldr r1, _08102598 @ =gUnknown_8451EBC diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s index fa72d3c8e..a5e8ba21b 100644 --- a/asm/pokemon_special_anim.s +++ b/asm/pokemon_special_anim.s @@ -3400,7 +3400,7 @@ sub_811DFC0: @ 811DFC0 strh r0, [r3, 0x4] movs r5, 0x4 ldrsh r1, [r3, r5] - ldr r2, _0811E018 @ =gUnknown_825E074 + ldr r2, _0811E018 @ =gSineTable movs r5, 0x2 ldrsh r0, [r3, r5] adds r0, 0x40 @@ -3424,7 +3424,7 @@ sub_811DFC0: @ 811DFC0 strh r0, [r4, 0x26] b _0811E036 .align 2, 0 -_0811E018: .4byte gUnknown_825E074 +_0811E018: .4byte gSineTable _0811E01C: ldr r2, _0811E03C @ =gTasks movs r5, 0xE @@ -3958,7 +3958,7 @@ _0811E3E0: lsls r0, 16 lsrs r0, 16 adds r0, 0x46 - ldr r3, _0811E4BC @ =gUnknown_825E074 + ldr r3, _0811E4BC @ =gSineTable movs r4, 0xA ldrsh r2, [r5, r4] adds r1, r2, 0 @@ -4035,7 +4035,7 @@ _0811E4A4: strh r0, [r5] b _0811E4DC .align 2, 0 -_0811E4BC: .4byte gUnknown_825E074 +_0811E4BC: .4byte gSineTable _0811E4C0: .4byte gUnknown_8459B30 _0811E4C4: .4byte gSprites _0811E4C8: diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index c40afefde..d656ad188 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -10686,7 +10686,7 @@ _08090EC6: ldr r0, [r4] ldr r0, [r0] mov r8, r0 - ldr r5, _08090FB8 @ =gUnknown_825E074 + ldr r5, _08090FB8 @ =gSineTable mov r0, r9 adds r1, r3, r0 ldrb r0, [r1] @@ -10803,7 +10803,7 @@ _08090FA0: _08090FAC: .4byte 0x00000c59 _08090FB0: .4byte 0x00000afc _08090FB4: .4byte 0x00000a68 -_08090FB8: .4byte gUnknown_825E074 +_08090FB8: .4byte gSineTable _08090FBC: .4byte sub_80911B0 _08090FC0: .4byte SpriteCallbackDummy thumb_func_end sub_8090E74 @@ -22569,7 +22569,7 @@ _08096AA2: lsls r0, 16 asrs r0, 20 strh r0, [r4, 0x22] - ldr r1, _08096B08 @ =gUnknown_825E074 + ldr r1, _08096B08 @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 4 @@ -22605,7 +22605,7 @@ _08096B00: pop {r0} bx r0 .align 2, 0 -_08096B08: .4byte gUnknown_825E074 +_08096B08: .4byte gSineTable _08096B0C: .4byte sub_80969BC thumb_func_end sub_8096A74 @@ -22650,7 +22650,7 @@ _08096B3E: lsls r1, 16 asrs r1, 20 strh r1, [r4, 0x22] - ldr r1, _08096BA4 @ =gUnknown_825E074 + ldr r1, _08096BA4 @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] lsls r0, 4 @@ -22687,7 +22687,7 @@ _08096B9E: pop {r0} bx r0 .align 2, 0 -_08096BA4: .4byte gUnknown_825E074 +_08096BA4: .4byte gSineTable _08096BA8: .4byte SpriteCallbackDummy thumb_func_end sub_8096B10 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 65fc2cb45..3d0c545ef 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -4567,7 +4567,7 @@ sub_8136BAC: @ 8136BAC bl ResetSpriteData bl ResetPaletteFade bl FreeAllSpritePalettes - bl remove_some_task + bl ScanlineEffect_Stop pop {r0} bx r0 thumb_func_end sub_8136BAC diff --git a/asm/region_map.s b/asm/region_map.s index 168ca47c3..1072e3068 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -1487,7 +1487,7 @@ sub_80C0A6C: @ 80C0A6C bl ResetPaletteFade bl FreeAllSpritePalettes bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop pop {r0} bx r0 thumb_func_end sub_80C0A6C diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 6fb09f439..0abdc979c 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -123,7 +123,7 @@ _08077860: _08077866: movs r0, 0 bl SetVBlankCallback - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl sub_800F324 movs r0, 0x1 movs r1, 0x1 @@ -142,33 +142,33 @@ _08077866: movs r0, 0x3 bl ShowBg bl ResetPaletteFade - ldr r0, _080778C8 @ =gUnknown_2022974 + ldr r0, _080778C8 @ =gBattle_BG0_X movs r1, 0 strh r1, [r0] - ldr r0, _080778CC @ =gUnknown_2022976 + ldr r0, _080778CC @ =gBattle_BG0_Y strh r1, [r0] - ldr r0, _080778D0 @ =gUnknown_2022978 + ldr r0, _080778D0 @ =gBattle_BG1_X strh r1, [r0] - ldr r0, _080778D4 @ =gUnknown_202297A + ldr r0, _080778D4 @ =gBattle_BG1_Y strh r1, [r0] - ldr r0, _080778D8 @ =gUnknown_202297C + ldr r0, _080778D8 @ =gBattle_BG2_X strh r1, [r0] - ldr r0, _080778DC @ =gUnknown_202297E + ldr r0, _080778DC @ =gBattle_BG2_Y strh r1, [r0] - ldr r0, _080778E0 @ =gUnknown_2022980 + ldr r0, _080778E0 @ =gBattle_BG3_X strh r1, [r0] - ldr r0, _080778E4 @ =gUnknown_2022982 + ldr r0, _080778E4 @ =gBattle_BG3_Y strh r1, [r0] b _08077A8A .align 2, 0 -_080778C8: .4byte gUnknown_2022974 -_080778CC: .4byte gUnknown_2022976 -_080778D0: .4byte gUnknown_2022978 -_080778D4: .4byte gUnknown_202297A -_080778D8: .4byte gUnknown_202297C -_080778DC: .4byte gUnknown_202297E -_080778E0: .4byte gUnknown_2022980 -_080778E4: .4byte gUnknown_2022982 +_080778C8: .4byte gBattle_BG0_X +_080778CC: .4byte gBattle_BG0_Y +_080778D0: .4byte gBattle_BG1_X +_080778D4: .4byte gBattle_BG1_Y +_080778D8: .4byte gBattle_BG2_X +_080778DC: .4byte gBattle_BG2_Y +_080778E0: .4byte gBattle_BG3_X +_080778E4: .4byte gBattle_BG3_Y _080778E8: movs r0, 0 str r0, [sp, 0x4] diff --git a/asm/seagallop.s b/asm/seagallop.s index f54d0d986..c4bf6cccf 100644 --- a/asm/seagallop.s +++ b/asm/seagallop.s @@ -533,7 +533,7 @@ _081472F8: .4byte 0x81000800 thumb_func_start sub_81472FC sub_81472FC: @ 81472FC push {lr} - bl remove_some_task + bl ScanlineEffect_Stop bl ResetTasks bl ResetSpriteData bl dp13_810BB8C diff --git a/asm/shop.s b/asm/shop.s index aed90ff85..999874b6b 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -522,7 +522,7 @@ _0809AEAC: ldr r2, _0809AF4C @ =0x01000100 add r0, sp, 0x8 bl CpuFastSet - bl remove_some_task + bl ScanlineEffect_Stop bl reset_temp_tile_data_buffers bl FreeAllSpritePalettes bl ResetPaletteFade diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 07483bb5e..48cb65638 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -4424,7 +4424,7 @@ _08141984: ldrsh r0, [r5, r2] cmp r0, 0 bne _081419C4 - ldr r1, _081419BC @ =gUnknown_825E074 + ldr r1, _081419BC @ =gSineTable movs r2, 0x4 ldrsh r0, [r5, r2] lsls r0, 1 @@ -4447,7 +4447,7 @@ _08141984: movs r0, 0x8 b _081419C6 .align 2, 0 -_081419BC: .4byte gUnknown_825E074 +_081419BC: .4byte gSineTable _081419C0: .4byte gUnknown_84664DC _081419C4: subs r0, r1, 0x1 @@ -4462,7 +4462,7 @@ _081419C6: movs r1, 0x7F ands r0, r1 strh r0, [r5, 0x8] - ldr r1, _081419FC @ =gUnknown_825E074 + ldr r1, _081419FC @ =gSineTable movs r2, 0x8 ldrsh r0, [r5, r2] lsls r0, 1 @@ -4478,7 +4478,7 @@ _081419C6: bl BlendPalettes b _08141A2C .align 2, 0 -_081419FC: .4byte gUnknown_825E074 +_081419FC: .4byte gSineTable _08141A00: ldrh r0, [r5, 0x8] adds r0, 0x1 diff --git a/asm/start_menu.s b/asm/start_menu.s index cfd970001..1cc3a7919 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -1713,7 +1713,7 @@ _0806FA88: bl SetGpuReg movs r0, 0 bl SetVBlankCallback - bl remove_some_task + bl ScanlineEffect_Stop movs r2, 0xA0 lsls r2, 19 mov r1, sp @@ -1767,7 +1767,7 @@ _0806FB00: bl ResetSpriteData bl ResetTasks bl ResetPaletteFade - bl dp12_8087EA4 + bl ScanlineEffect_Clear b _0806FB64 _0806FB12: movs r0, 0 diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index 5e2b048e2..feba05e6d 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -122,7 +122,7 @@ _0815AC48: strb r1, [r0] bl sub_80BF768 bl clear_scheduled_bg_copies_to_vram - bl remove_some_task + bl ScanlineEffect_Stop bl FreeAllSpritePalettes bl ResetPaletteFade bl ResetSpriteData diff --git a/asm/title_screen.s b/asm/title_screen.s index c07978623..e6f203e3b 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -292,7 +292,7 @@ sub_8078BB4: @ 8078BB4 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_8087F54 + bl ScanlineEffect_InitHBlankDmaTransfer ldr r1, _08078BE4 @ =gUnknown_2037F30 ldrb r0, [r1] cmp r0, 0xFF @@ -433,7 +433,7 @@ sub_8078C9C: @ 8078C9C strb r5, [r0, 0x9] add r0, sp, 0xC strh r5, [r0] - ldr r4, _08078D1C @ =gUnknown_2038700 + ldr r4, _08078D1C @ =gScanlineEffectRegBuffers ldr r6, _08078D20 @ =0x010000a0 adds r1, r4, 0 adds r2, r6, 0 @@ -450,7 +450,7 @@ sub_8078C9C: @ 8078C9C ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams mov r0, r8 movs r1, 0x1 bl sub_8078C90 @@ -463,7 +463,7 @@ sub_8078C9C: @ 8078C9C .align 2, 0 _08078D14: .4byte 0x04000054 _08078D18: .4byte 0xa2600001 -_08078D1C: .4byte gUnknown_2038700 +_08078D1C: .4byte gScanlineEffectRegBuffers _08078D20: .4byte 0x010000a0 thumb_func_end sub_8078C9C @@ -507,7 +507,7 @@ _08078D5C: ldrsh r0, [r4, r1] cmp r0, 0 bge _08078D9C - ldr r1, _08078D80 @ =gUnknown_2039600 + ldr r1, _08078D80 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _08078D78: @@ -516,7 +516,7 @@ _08078D78: strh r0, [r4, 0x2] b _08078D9C .align 2, 0 -_08078D80: .4byte gUnknown_2039600 +_08078D80: .4byte gScanlineEffect _08078D84: movs r0, 0x50 movs r1, 0 @@ -1481,9 +1481,9 @@ sub_8079550: @ 8079550 asrs r4, r5, 16 cmp r4, 0 blt _08079574 - ldr r3, _08079618 @ =gUnknown_2038700 + ldr r3, _08079618 @ =gScanlineEffectRegBuffers lsls r2, r4, 1 - ldr r0, _0807961C @ =gUnknown_2039600 + ldr r0, _0807961C @ =gScanlineEffect ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 @@ -1496,9 +1496,9 @@ _08079574: movs r3, 0 mov r8, r5 adds r6, r4, 0 - ldr r0, _08079618 @ =gUnknown_2038700 + ldr r0, _08079618 @ =gScanlineEffectRegBuffers mov r12, r0 - ldr r7, _0807961C @ =gUnknown_2039600 + ldr r7, _0807961C @ =gScanlineEffect movs r5, 0xF lsls r2, r6, 1 adds r4, r2, 0 @@ -1537,8 +1537,8 @@ _080795AE: adds r3, 0x10 cmp r3, 0x9F bgt _080795E6 - ldr r6, _08079618 @ =gUnknown_2038700 - ldr r5, _0807961C @ =gUnknown_2039600 + ldr r6, _08079618 @ =gScanlineEffectRegBuffers + ldr r5, _0807961C @ =gScanlineEffect movs r4, 0 _080795CC: cmp r3, 0 @@ -1562,8 +1562,8 @@ _080795E6: subs r3, 0x10 cmp r3, 0 blt _0807960E - ldr r6, _08079618 @ =gUnknown_2038700 - ldr r5, _0807961C @ =gUnknown_2039600 + ldr r6, _08079618 @ =gScanlineEffectRegBuffers + ldr r5, _0807961C @ =gScanlineEffect movs r4, 0 _080795F8: lsls r2, r3, 1 @@ -1584,14 +1584,14 @@ _0807960E: pop {r0} bx r0 .align 2, 0 -_08079618: .4byte gUnknown_2038700 -_0807961C: .4byte gUnknown_2039600 +_08079618: .4byte gScanlineEffectRegBuffers +_0807961C: .4byte gScanlineEffect thumb_func_end sub_8079550 thumb_func_start sub_8079620 sub_8079620: @ 8079620 push {lr} - ldr r1, _08079644 @ =gUnknown_2039600 + ldr r1, _08079644 @ =gScanlineEffect ldrb r0, [r1, 0x15] cmp r0, 0 beq _0807962E @@ -1607,7 +1607,7 @@ _0807962E: pop {r0} bx r0 .align 2, 0 -_08079644: .4byte gUnknown_2039600 +_08079644: .4byte gScanlineEffect thumb_func_end sub_8079620 thumb_func_start sub_8079648 diff --git a/asm/tm_case.s b/asm/tm_case.s index e942bbc32..d3b8d6320 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -152,7 +152,7 @@ _08131934: bl clear_scheduled_bg_copies_to_vram b _08131A52 _0813193E: - bl remove_some_task + bl ScanlineEffect_Stop b _08131A52 _08131944: bl FreeAllSpritePalettes diff --git a/asm/trainer_card.s b/asm/trainer_card.s index e44503915..2229c0b7d 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -18,7 +18,7 @@ sub_8088FF0: @ 8088FF0 cmp r0, 0 beq _08089020 ldr r1, _08089028 @ =0x040000d4 - ldr r0, _0808902C @ =gUnknown_2038700 + ldr r0, _0808902C @ =gScanlineEffectRegBuffers str r0, [r1] movs r2, 0xF0 lsls r2, 3 @@ -33,7 +33,7 @@ _08089020: .align 2, 0 _08089024: .4byte gUnknown_20397A4 _08089028: .4byte 0x040000d4 -_0808902C: .4byte gUnknown_2038700 +_0808902C: .4byte gScanlineEffectRegBuffers _08089030: .4byte 0x800000a0 thumb_func_end sub_8088FF0 @@ -44,7 +44,7 @@ sub_8089034: @ 8089034 ldrh r3, [r4] movs r0, 0 strh r0, [r4] - ldr r1, _08089064 @ =gUnknown_2038700 + ldr r1, _08089064 @ =gScanlineEffectRegBuffers ldr r0, _08089068 @ =0x04000006 ldrh r2, [r0] movs r0, 0xFF @@ -63,7 +63,7 @@ sub_8089034: @ 8089034 bx r0 .align 2, 0 _08089060: .4byte 0x04000208 -_08089064: .4byte gUnknown_2038700 +_08089064: .4byte gScanlineEffectRegBuffers _08089068: .4byte 0x04000006 _0808906C: .4byte 0x04000012 thumb_func_end sub_8089034 @@ -1658,7 +1658,7 @@ _08089DA0: .4byte sub_8089070 sub_8089DA4: @ 8089DA4 push {lr} bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop ldr r0, _08089DC4 @ =sub_80890C0 movs r1, 0 bl CreateTask @@ -4179,10 +4179,10 @@ sub_808B254: @ 808B254 bl HideBg movs r0, 0x3 bl HideBg - bl remove_some_task - bl dp12_8087EA4 + bl ScanlineEffect_Stop + bl ScanlineEffect_Clear movs r1, 0 - ldr r0, _0808B290 @ =gUnknown_2038700 + ldr r0, _0808B290 @ =gScanlineEffectRegBuffers movs r2, 0 movs r3, 0xF0 lsls r3, 3 @@ -4201,7 +4201,7 @@ _0808B278: pop {r1} bx r1 .align 2, 0 -_0808B290: .4byte gUnknown_2038700 +_0808B290: .4byte gScanlineEffectRegBuffers thumb_func_end sub_808B254 thumb_func_start sub_808B294 @@ -4271,7 +4271,7 @@ _0808B2CA: movs r2, 0 cmp r2, r7 bcs _0808B334 - ldr r3, _0808B3C0 @ =gUnknown_2038700 + ldr r3, _0808B3C0 @ =gScanlineEffectRegBuffers _0808B31C: lsls r0, r2, 16 asrs r0, 16 @@ -4296,7 +4296,7 @@ _0808B334: lsrs r7, r4, 16 cmp r1, r0 bge _0808B36C - ldr r0, _0808B3C0 @ =gUnknown_2038700 + ldr r0, _0808B3C0 @ =gScanlineEffectRegBuffers mov r12, r0 adds r4, r3, 0 _0808B34E: @@ -4321,7 +4321,7 @@ _0808B36C: asrs r0, r1, 16 cmp r0, 0x9F bgt _0808B38A - ldr r2, _0808B3C0 @ =gUnknown_2038700 + ldr r2, _0808B3C0 @ =gScanlineEffectRegBuffers _0808B378: asrs r0, r1, 16 lsls r1, r0, 1 @@ -4359,7 +4359,7 @@ _0808B3A2: _0808B3B4: .4byte gUnknown_20397A4 _0808B3B8: .4byte 0x00007bcc _0808B3BC: .4byte 0xffff0000 -_0808B3C0: .4byte gUnknown_2038700 +_0808B3C0: .4byte gScanlineEffectRegBuffers thumb_func_end sub_808B294 thumb_func_start sub_808B3C4 @@ -4612,7 +4612,7 @@ _0808B572: movs r2, 0 cmp r2, r7 bcs _0808B5DC - ldr r3, _0808B668 @ =gUnknown_2038700 + ldr r3, _0808B668 @ =gScanlineEffectRegBuffers _0808B5C4: lsls r0, r2, 16 asrs r0, 16 @@ -4637,7 +4637,7 @@ _0808B5DC: lsrs r7, r4, 16 cmp r1, r0 bge _0808B612 - ldr r0, _0808B668 @ =gUnknown_2038700 + ldr r0, _0808B668 @ =gScanlineEffectRegBuffers mov r12, r0 adds r4, r3, 0 _0808B5F6: @@ -4661,7 +4661,7 @@ _0808B612: asrs r0, r1, 16 cmp r0, 0x9F bgt _0808B630 - ldr r2, _0808B668 @ =gUnknown_2038700 + ldr r2, _0808B668 @ =gScanlineEffectRegBuffers _0808B61E: asrs r0, r1, 16 lsls r1, r0, 1 @@ -4699,7 +4699,7 @@ _0808B648: _0808B65C: .4byte gUnknown_20397A4 _0808B660: .4byte 0x00007bcc _0808B664: .4byte 0xffff0000 -_0808B668: .4byte gUnknown_2038700 +_0808B668: .4byte gScanlineEffectRegBuffers thumb_func_end sub_808B540 thumb_func_start sub_808B66C diff --git a/asm/trig.s b/asm/trig.s index ca1993b60..1a82afd65 100644 --- a/asm/trig.s +++ b/asm/trig.s @@ -9,7 +9,7 @@ Sin: @ 8044E30 lsls r1, 16 asrs r1, 16 - ldr r2, _08044E48 @ =gUnknown_825E074 + ldr r2, _08044E48 @ =gSineTable lsls r0, 16 asrs r0, 15 adds r0, r2 @@ -20,14 +20,14 @@ Sin: @ 8044E30 asrs r0, 16 bx lr .align 2, 0 -_08044E48: .4byte gUnknown_825E074 +_08044E48: .4byte gSineTable thumb_func_end Sin thumb_func_start Cos Cos: @ 8044E4C lsls r1, 16 asrs r1, 16 - ldr r2, _08044E68 @ =gUnknown_825E074 + ldr r2, _08044E68 @ =gSineTable lsls r0, 16 asrs r0, 15 adds r0, 0x80 @@ -39,7 +39,7 @@ Cos: @ 8044E4C asrs r0, 16 bx lr .align 2, 0 -_08044E68: .4byte gUnknown_825E074 +_08044E68: .4byte gSineTable thumb_func_end Cos thumb_func_start Sin2 diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index c61c9a3d8..c7be31ac9 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -200,7 +200,7 @@ sub_81285B4: @ 81285B4 bl TransferPlttBuffer bl LoadOam bl ProcessSpriteCopyRequests - bl sub_8087F54 + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 thumb_func_end sub_81285B4 @@ -3046,7 +3046,7 @@ sub_8129B88: @ 8129B88 str r0, [r4] _08129B9E: bl FreeAllWindowBuffers - ldr r1, _08129BB4 @ =gUnknown_2039600 + ldr r1, _08129BB4 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] pop {r4} @@ -3054,7 +3054,7 @@ _08129B9E: bx r0 .align 2, 0 _08129BB0: .4byte gUnknown_203B0E4 -_08129BB4: .4byte gUnknown_2039600 +_08129BB4: .4byte gScanlineEffect thumb_func_end sub_8129B88 thumb_func_start sub_8129BB8 @@ -5384,13 +5384,13 @@ sub_812AD50: @ 812AD50 strh r1, [r0, 0x20] str r1, [sp, 0xC] add r0, sp, 0xC - ldr r1, _0812AD98 @ =gUnknown_2038700 + ldr r1, _0812AD98 @ =gScanlineEffectRegBuffers ldr r2, _0812AD9C @ =0x010003c0 bl CpuFastSet ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_8087EE4 + bl ScanlineEffect_SetParams add sp, 0x10 pop {r0} bx r0 @@ -5398,7 +5398,7 @@ sub_812AD50: @ 812AD50 _0812AD8C: .4byte 0xa2600001 _0812AD90: .4byte 0x04000014 _0812AD94: .4byte gUnknown_203B0E4 -_0812AD98: .4byte gUnknown_2038700 +_0812AD98: .4byte gScanlineEffectRegBuffers _0812AD9C: .4byte 0x010003c0 thumb_func_end sub_812AD50 @@ -5410,12 +5410,12 @@ sub_812ADA0: @ 812ADA0 lsrs r0, 16 mov r1, sp strh r0, [r1] - ldr r5, _0812ADE8 @ =gUnknown_2039600 + ldr r5, _0812ADE8 @ =gScanlineEffect ldrb r0, [r5, 0x14] lsls r1, r0, 4 subs r1, r0 lsls r1, 7 - ldr r4, _0812ADEC @ =gUnknown_2038700 + ldr r4, _0812ADEC @ =gScanlineEffectRegBuffers adds r1, r4 ldr r2, _0812ADF0 @ =0x01000090 mov r0, sp @@ -5439,8 +5439,8 @@ sub_812ADA0: @ 812ADA0 pop {r0} bx r0 .align 2, 0 -_0812ADE8: .4byte gUnknown_2039600 -_0812ADEC: .4byte gUnknown_2038700 +_0812ADE8: .4byte gScanlineEffect +_0812ADEC: .4byte gScanlineEffectRegBuffers _0812ADF0: .4byte 0x01000090 _0812ADF4: .4byte 0x01000010 thumb_func_end sub_812ADA0 @@ -5457,7 +5457,7 @@ sub_812ADF8: @ 812ADF8 lsrs r4, 16 mov r0, sp strh r4, [r0] - ldr r5, _0812AE64 @ =gUnknown_2038700 + ldr r5, _0812AE64 @ =gScanlineEffectRegBuffers ldr r0, _0812AE68 @ =0x01000090 mov r9, r0 mov r0, sp @@ -5498,7 +5498,7 @@ sub_812ADF8: @ 812ADF8 pop {r0} bx r0 .align 2, 0 -_0812AE64: .4byte gUnknown_2038700 +_0812AE64: .4byte gScanlineEffectRegBuffers _0812AE68: .4byte 0x01000090 _0812AE6C: .4byte 0x01000010 thumb_func_end sub_812ADF8 diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s index c495dc281..36b8940ab 100644 --- a/asm/unk_8147AA8.s +++ b/asm/unk_8147AA8.s @@ -7393,7 +7393,7 @@ _0814B1EC: movs r0, 0 strh r0, [r5, 0x30] _0814B1FE: - ldr r1, _0814B22C @ =gUnknown_825E074 + ldr r1, _0814B22C @ =gSineTable movs r2, 0x30 ldrsh r0, [r5, r2] lsls r0, 1 @@ -7417,7 +7417,7 @@ _0814B1FE: strh r1, [r5, 0x2E] b _0814B234 .align 2, 0 -_0814B22C: .4byte gUnknown_825E074 +_0814B22C: .4byte gSineTable _0814B230: ldr r0, _0814B23C @ =SpriteCallbackDummy str r0, [r5, 0x1C] diff --git a/asm/unk_814D5C8.s b/asm/unk_814D5C8.s index 4c78d4459..4e8bbd051 100644 --- a/asm/unk_814D5C8.s +++ b/asm/unk_814D5C8.s @@ -49,7 +49,7 @@ _0814D61C: movs r0, 0 movs r1, 0 bl SetGpuReg - bl remove_some_task + bl ScanlineEffect_Stop bl reset_temp_tile_data_buffers b _0814D878 _0814D63A: diff --git a/asm/unk_815F138.s b/asm/unk_815F138.s index eaca7d2a4..3a1d49e81 100644 --- a/asm/unk_815F138.s +++ b/asm/unk_815F138.s @@ -500,7 +500,7 @@ _0815F4DC: adds r0, 0x1 strh r0, [r4] _0815F4FA: - ldr r0, _0815F50C @ =gUnknown_825E074 + ldr r0, _0815F50C @ =gSineTable movs r2, 0x2 ldrsh r1, [r4, r2] lsls r1, 1 @@ -510,7 +510,7 @@ _0815F4FA: asrs r0, 4 b _0815F53E .align 2, 0 -_0815F50C: .4byte gUnknown_825E074 +_0815F50C: .4byte gSineTable _0815F510: ldrh r0, [r4, 0x2] adds r0, 0x10 @@ -527,7 +527,7 @@ _0815F510: adds r0, 0x1 strh r0, [r4] _0815F52E: - ldr r1, _0815F544 @ =gUnknown_825E074 + ldr r1, _0815F544 @ =gSineTable movs r2, 0x2 ldrsh r0, [r4, r2] lsls r0, 1 @@ -540,7 +540,7 @@ _0815F53E: strh r0, [r5, 0x26] b _0815F55A .align 2, 0 -_0815F544: .4byte gUnknown_825E074 +_0815F544: .4byte gSineTable _0815F548: ldrh r0, [r4, 0x2] adds r0, 0x1 diff --git a/asm/unknown_task.s b/asm/unknown_task.s deleted file mode 100644 index 6f417a4a1..000000000 --- a/asm/unknown_task.s +++ /dev/null @@ -1,644 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start remove_some_task -remove_some_task: @ 8087E64 - push {r4,lr} - ldr r4, _08087E94 @ =gUnknown_2039600 - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, _08087E98 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _08087E9C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _08087EA0 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x18] - cmp r0, 0xFF - beq _08087E8E - bl DestroyTask - movs r0, 0xFF - strb r0, [r4, 0x18] -_08087E8E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08087E94: .4byte gUnknown_2039600 -_08087E98: .4byte 0x040000b0 -_08087E9C: .4byte 0x0000c5ff -_08087EA0: .4byte 0x00007fff - thumb_func_end remove_some_task - - thumb_func_start dp12_8087EA4 -dp12_8087EA4: @ 8087EA4 - push {r4,lr} - sub sp, 0x4 - mov r0, sp - movs r4, 0 - strh r4, [r0] - ldr r1, _08087ED8 @ =gUnknown_2038700 - ldr r2, _08087EDC @ =0x01000780 - bl CpuSet - ldr r0, _08087EE0 @ =gUnknown_2039600 - movs r1, 0 - str r1, [r0] - str r1, [r0, 0x4] - str r1, [r0, 0x8] - str r1, [r0, 0xC] - strb r4, [r0, 0x14] - strb r4, [r0, 0x15] - strb r4, [r0, 0x16] - strb r4, [r0, 0x17] - movs r1, 0xFF - strb r1, [r0, 0x18] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08087ED8: .4byte gUnknown_2038700 -_08087EDC: .4byte 0x01000780 -_08087EE0: .4byte gUnknown_2039600 - thumb_func_end dp12_8087EA4 - - thumb_func_start sub_8087EE4 -sub_8087EE4: @ 8087EE4 - push {lr} - sub sp, 0xC - str r0, [sp] - str r1, [sp, 0x4] - str r2, [sp, 0x8] - ldr r0, _08087F08 @ =0xa2600001 - cmp r1, r0 - bne _08087F18 - ldr r0, _08087F0C @ =gUnknown_2039600 - ldr r1, _08087F10 @ =gUnknown_2038702 - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, _08087F14 @ =sub_8087FE0 - b _08087F28 - .align 2, 0 -_08087F08: .4byte 0xa2600001 -_08087F0C: .4byte gUnknown_2039600 -_08087F10: .4byte gUnknown_2038702 -_08087F14: .4byte sub_8087FE0 -_08087F18: - ldr r0, _08087F48 @ =gUnknown_2039600 - ldr r1, _08087F4C @ =gUnknown_2038704 - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, _08087F50 @ =sub_8088000 -_08087F28: - str r1, [r0, 0x10] - adds r1, r0, 0 - ldr r0, [sp, 0x4] - str r0, [r1, 0xC] - ldr r0, [sp] - str r0, [r1, 0x8] - mov r0, sp - ldrb r0, [r0, 0x8] - strb r0, [r1, 0x15] - mov r0, sp - ldrb r0, [r0, 0x9] - strb r0, [r1, 0x16] - strb r0, [r1, 0x17] - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08087F48: .4byte gUnknown_2039600 -_08087F4C: .4byte gUnknown_2038704 -_08087F50: .4byte sub_8088000 - thumb_func_end sub_8087EE4 - - thumb_func_start sub_8087F54 -sub_8087F54: @ 8087F54 - push {r4,lr} - ldr r4, _08087F84 @ =gUnknown_2039600 - ldrb r0, [r4, 0x15] - cmp r0, 0 - beq _08087FCE - cmp r0, 0x3 - bne _08087F98 - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, _08087F88 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _08087F8C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _08087F90 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r1, _08087F94 @ =gUnknown_203961C - movs r0, 0x1 - strb r0, [r1] - b _08087FCE - .align 2, 0 -_08087F84: .4byte gUnknown_2039600 -_08087F88: .4byte 0x040000b0 -_08087F8C: .4byte 0x0000c5ff -_08087F90: .4byte 0x00007fff -_08087F94: .4byte gUnknown_203961C -_08087F98: - ldr r1, _08087FD4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _08087FD8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _08087FDC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x14] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - ldr r0, [r4, 0x8] - str r0, [r1, 0x4] - ldr r0, [r4, 0xC] - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, [r4, 0x10] - bl _call_via_r0 - ldrb r0, [r4, 0x14] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4, 0x14] -_08087FCE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08087FD4: .4byte 0x040000b0 -_08087FD8: .4byte 0x0000c5ff -_08087FDC: .4byte 0x00007fff - thumb_func_end sub_8087F54 - - thumb_func_start sub_8087FE0 -sub_8087FE0: @ 8087FE0 - ldr r0, _08087FF8 @ =gUnknown_2039600 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _08087FFC @ =gUnknown_2038700 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_08087FF8: .4byte gUnknown_2039600 -_08087FFC: .4byte gUnknown_2038700 - thumb_func_end sub_8087FE0 - - thumb_func_start sub_8088000 -sub_8088000: @ 8088000 - ldr r0, _08088018 @ =gUnknown_2039600 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _0808801C @ =gUnknown_2038700 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - bx lr - .align 2, 0 -_08088018: .4byte gUnknown_2039600 -_0808801C: .4byte gUnknown_2038700 - thumb_func_end sub_8088000 - - thumb_func_start task00_for_dp12 -task00_for_dp12: @ 8088020 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r6, 0 - ldr r0, _08088048 @ =gUnknown_203961C - ldrb r0, [r0] - cmp r0, 0 - beq _08088050 - mov r0, r12 - bl DestroyTask - ldr r1, _0808804C @ =gUnknown_2039600 - movs r0, 0xFF - strb r0, [r1, 0x18] - b _080881D0 - .align 2, 0 -_08088048: .4byte gUnknown_203961C -_0808804C: .4byte gUnknown_2039600 -_08088050: - ldr r1, _0808807C @ =gTasks - mov r0, r12 - lsls r2, r0, 2 - adds r0, r2, r0 - lsls r0, 3 - adds r3, r0, r1 - movs r4, 0x16 - ldrsh r0, [r3, r4] - mov r10, r1 - mov r9, r2 - cmp r0, 0 - beq _080880FC - movs r1, 0x14 - ldrsh r0, [r3, r1] - cmp r0, 0xE - bhi _080880FC - lsls r0, 2 - ldr r1, _08088080 @ =_08088084 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808807C: .4byte gTasks -_08088080: .4byte _08088084 - .align 2, 0 -_08088084: - .4byte _080880C0 - .4byte _080880FC - .4byte _080880C8 - .4byte _080880FC - .4byte _080880D0 - .4byte _080880FC - .4byte _080880D8 - .4byte _080880FC - .4byte _080880E0 - .4byte _080880FC - .4byte _080880E8 - .4byte _080880FC - .4byte _080880F0 - .4byte _080880FC - .4byte _080880F8 -_080880C0: - ldr r0, _080880C4 @ =gUnknown_2022974 - b _080880FA - .align 2, 0 -_080880C4: .4byte gUnknown_2022974 -_080880C8: - ldr r0, _080880CC @ =gUnknown_2022976 - b _080880FA - .align 2, 0 -_080880CC: .4byte gUnknown_2022976 -_080880D0: - ldr r0, _080880D4 @ =gUnknown_2022978 - b _080880FA - .align 2, 0 -_080880D4: .4byte gUnknown_2022978 -_080880D8: - ldr r0, _080880DC @ =gUnknown_202297A - b _080880FA - .align 2, 0 -_080880DC: .4byte gUnknown_202297A -_080880E0: - ldr r0, _080880E4 @ =gUnknown_202297C - b _080880FA - .align 2, 0 -_080880E4: .4byte gUnknown_202297C -_080880E8: - ldr r0, _080880EC @ =gUnknown_202297E - b _080880FA - .align 2, 0 -_080880EC: .4byte gUnknown_202297E -_080880F0: - ldr r0, _080880F4 @ =gUnknown_2022980 - b _080880FA - .align 2, 0 -_080880F4: .4byte gUnknown_2022980 -_080880F8: - ldr r0, _0808815C @ =gUnknown_2022982 -_080880FA: - ldrh r6, [r0] -_080880FC: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r2, r10 - adds r1, r0, r2 - ldrh r2, [r1, 0x10] - movs r3, 0x10 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08088168 - subs r0, r2, 0x1 - strh r0, [r1, 0x10] - movs r4, 0xE - ldrsh r0, [r1, r4] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080881D0 - ldr r5, _08088160 @ =gUnknown_2038700 - ldr r0, _08088164 @ =gUnknown_2039600 - mov r8, r0 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 -_08088136: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _08088136 - b _080881D0 - .align 2, 0 -_0808815C: .4byte gUnknown_2022982 -_08088160: .4byte gUnknown_2038700 -_08088164: .4byte gUnknown_2039600 -_08088168: - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x10] - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080881B0 - ldr r5, _080881E0 @ =gUnknown_2038700 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 - ldr r0, _080881E4 @ =gUnknown_2039600 - mov r8, r0 -_0808818E: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _0808818E -_080881B0: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r3, r10 - adds r2, r0, r3 - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xC - ldrsh r1, [r2, r4] - cmp r0, r1 - bne _080881D0 - movs r0, 0 - strh r0, [r2, 0xE] -_080881D0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080881E0: .4byte gUnknown_2038700 -_080881E4: .4byte gUnknown_2039600 - thumb_func_end task00_for_dp12 - - thumb_func_start sub_80881E8 -sub_80881E8: @ 80881E8 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - movs r1, 0 - movs r2, 0 - ldr r0, _0808822C @ =gUnknown_825E074 - mov r12, r0 -_080881FC: - lsls r0, r1, 1 - adds r3, r0, r6 - lsls r0, r2, 1 - add r0, r12 - movs r7, 0 - ldrsh r0, [r0, r7] - muls r0, r4 - cmp r0, 0 - bge _08088210 - adds r0, 0xFF -_08088210: - asrs r0, 8 - strh r0, [r3] - adds r0, r2, r5 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xFF - bls _080881FC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808822C: .4byte gUnknown_825E074 - thumb_func_end sub_80881E8 - - thumb_func_start sub_8088230 -sub_8088230: @ 8088230 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - adds r5, r0, 0 - str r1, [sp, 0x10] - ldr r0, [sp, 0x40] - mov r8, r0 - ldr r1, [sp, 0x44] - mov r9, r1 - ldr r0, [sp, 0x48] - mov r10, r0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, [sp, 0x10] - lsls r1, 24 - str r1, [sp, 0x14] - lsrs r0, r1, 24 - str r0, [sp, 0xC] - lsls r1, r2, 24 - lsrs r1, 24 - str r1, [sp, 0x18] - lsls r2, r3, 24 - lsrs r2, 24 - str r2, [sp, 0x1C] - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - mov r3, r9 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - bl dp12_8087EA4 - ldr r0, _0808833C @ =0x04000010 - add r0, r9 - str r0, [sp] - ldr r0, _08088340 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - movs r1, 0 - strb r1, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_8087EE4 - ldr r0, _08088344 @ =task00_for_dp12 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08088348 @ =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - strh r5, [r4, 0x8] - mov r3, sp - ldrh r3, [r3, 0xC] - strh r3, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - ldr r1, [sp, 0x18] - bl __divsi3 - strh r0, [r4, 0xC] - movs r0, 0 - strh r0, [r4, 0xE] - mov r1, r8 - strh r1, [r4, 0x10] - strh r1, [r4, 0x12] - mov r3, r9 - strh r3, [r4, 0x14] - mov r0, r10 - strh r0, [r4, 0x16] - ldr r0, _0808834C @ =gUnknown_2039600 - strb r7, [r0, 0x18] - ldr r0, _08088350 @ =gUnknown_203961C - movs r1, 0 - strb r1, [r0] - ldr r4, _08088354 @ =gUnknown_2038980 - ldr r3, [sp, 0xC] - subs r6, r3, r5 - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r4, 0 - ldr r1, [sp, 0x18] - ldr r2, [sp, 0x1C] - bl sub_80881E8 - ldr r0, [sp, 0xC] - cmp r5, r0 - bge _0808832A - ldr r1, _08088358 @ =0xfffffd80 - adds r2, r4, r1 - lsls r1, r5, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r0, r1, r3 - adds r3, r0, r2 - adds r1, r2 - adds r2, r4, 0 - adds r5, r6, 0 -_08088316: - ldrh r0, [r2] - strh r0, [r1] - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - adds r1, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08088316 -_0808832A: - adds r0, r7, 0 - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0808833C: .4byte 0x04000010 -_08088340: .4byte 0xa2600001 -_08088344: .4byte task00_for_dp12 -_08088348: .4byte gTasks -_0808834C: .4byte gUnknown_2039600 -_08088350: .4byte gUnknown_203961C -_08088354: .4byte gUnknown_2038980 -_08088358: .4byte 0xfffffd80 - thumb_func_end sub_8088230 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/wireless_communication_status_screen.s b/asm/wireless_communication_status_screen.s index b4aecb9a5..b5f357a83 100644 --- a/asm/wireless_communication_status_screen.s +++ b/asm/wireless_communication_status_screen.s @@ -92,7 +92,7 @@ sub_814F1E4: @ 814F1E4 bl ResetPaletteFade bl ResetSpriteData bl ResetTasks - bl remove_some_task + bl ScanlineEffect_Stop bl m4aSoundVSyncOn ldr r0, _0814F31C @ =sub_814F1C0 bl SetVBlankCallback diff --git a/data/data.s b/data/data.s index e17c041a2..6fed9c618 100644 --- a/data/data.s +++ b/data/data.s @@ -547,7 +547,7 @@ gUnknown_825E032:: @ 825E032 gUnknown_825E05C:: @ 825E05C .incbin "baserom.gba", 0x25E05C, 0x18 -gUnknown_825E074:: @ 825E074 +gSineTable:: @ 825E074 .incbin "baserom.gba", 0x25E074, 0x280 gUnknown_825E2F4:: @ 825E2F4 diff --git a/data/data_845FD54.s b/data/data_845FD54.s index 4fee0ac5b..fd9a62e1a 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -2,12 +2,6 @@ .align 2 // oak_speech -gUnknown_8460568:: @ 8460568 - .incbin "baserom.gba", 0x460568, 0x80 - -gUnknown_84605E8:: @ 84605E8 - .incbin "baserom.gba", 0x4605E8, 0x5C0 - gUnknown_8460BA8:: @ 8460BA8 .incbin "baserom.gba", 0x460BA8, 0xFC diff --git a/data/oak_speech/unk_8460568.pal b/data/oak_speech/unk_8460568.pal new file mode 100644 index 000000000..b6905b913 --- /dev/null +++ b/data/oak_speech/unk_8460568.pal @@ -0,0 +1,67 @@ +JASC-PAL +0100 +64 +16 115 230 +65 139 131 +82 148 139 +106 164 156 +131 180 172 +156 197 189 +180 213 205 +205 230 222 +230 246 238 +255 0 255 +255 0 255 +0 90 16 +255 0 0 +49 82 205 +255 255 255 +32 32 32 +16 115 230 +255 255 164 +255 255 106 +222 222 90 +189 189 74 +156 156 57 +156 156 57 +123 123 49 +90 90 32 +57 57 16 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +255 0 0 +0 0 0 +238 230 172 +115 180 197 +156 213 238 +205 238 246 +246 255 255 +230 246 246 +106 106 106 +74 82 106 +82 98 180 +230 246 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 74 139 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 0 255 +123 123 123 +172 172 156 +197 197 197 +222 222 222 +238 238 238 +255 255 255 diff --git a/data/oak_speech/unk_84605E8.png b/data/oak_speech/unk_84605E8.png new file mode 100644 index 0000000000000000000000000000000000000000..419858b1bfb2b42711610528ac1631c565963f9a GIT binary patch literal 1118 zcmV-k1flzhP)8nu5XYH1nH|~b97yg1$fi9jfz!Dyg3Q{q_yK~vLEj(c-f0 ze*g#D20&+ov;t6H-G0?}|LxiVzC8WZ_74Dsu?>JaTno6oadt@o0oaQGnDpHM#5Mwm ziM=2gCH{SY4nf^shDN_0U=&4R7oa+XsigWrh0{U+7M5ufYIJo)kp;}6Xkq~ZeBPJ` zLM@T*JTYw*!a^TfS~X=T-ZF97C8St6_&_XHfB z)_|k4GYgn9HnyFJK4(x?9|9<@1EF>u0Hy@M`KboPIGKTV^7Ocj`3EKik3p;hrsJss ze8Sp4WC!R&wFHhxDwc}mBZy7_Bs3U>;FYSagwGH4);d5y$r6!>R=|9za_|g3m>V{f zN~^$%zLT^R(hq%z=s^hM?cgU|5J4G~_l^TFQ?D1jwNXjvQcqb{e3R zrJDi{y5#WlMxs_+)VLxNr+*;k`woCleL(2|qZBnX&rqwBf?v!AWC}V18ej_P8Moq6 zofipe1HevGD1ih*bbux2?o6q)o-^FPN3+Qkoy4A591RFCi31rsK%24JX{-VBWr%uv zVOu~z0J=ao11?f0)yoB)-p!XY2QaWM|I!w^1^iNrz+o9C$*;gBanc2-V4>ckfH&No z0#pbHM*x8OasYdJubDbCJ%9{h6~QA6V84Ybi7*A;HG|j|LJc@KfYAa@0Fy-2vWkaT zL~tA=zgetb!0O(oR;`S7S$0pdol5m&8Li?jwvTZ(Esqx=kpA00Tea~?(7$J1hv+8opX$db-5 z1%Q|Jr@CS;2Q{FA9lTfrbXa-3J_Q^A6C~|-(uz4B14{(fVHKc4n5ExQ~nKETepC%~T-hF}`{ z0K5>gzJRNb3P;KUDhwT95T!fVLM)KS0Z? kttVjp<=Pw2v|Rvy0Z0T5{2x|19RL6T07*qoM6N<$f?i+h>i_@% literal 0 HcmV?d00001 diff --git a/include/help_system.h b/include/help_system.h index 632788148..0192809fc 100644 --- a/include/help_system.h +++ b/include/help_system.h @@ -6,5 +6,6 @@ extern bool8 gUnknown_3005ECC; void sub_812B484(void); +void sub_812B1F0(u8); #endif //GUARD_HELP_SYSTEM_H diff --git a/include/menu.h b/include/menu.h index b5078df5e..2c68b29b4 100644 --- a/include/menu.h +++ b/include/menu.h @@ -38,5 +38,6 @@ void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSp void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3); void sub_810F4D8(u8 windowId, bool32 someBool); void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); +void sub_810F558(u8, u8, u8, u8, u16); #endif // GUARD_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index e22f89f44..0d51eb5fb 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -24,5 +24,8 @@ u8 GetStartMenuWindowId(void); void sub_80F7998(void); void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void sub_80F6F1C(u8 windowId, bool8 copyNow); +void sub_80F6C6C(void); +void sub_80F6C98(void); +void sub_80F77CC(u16); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h index cffc9780b..a7f83a7de 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -5,5 +5,6 @@ const u8* GetTrainerClassNameFromId(u16 trainerId); const u8* GetTrainerNameFromId(u16 trainerId); +void sub_8044AF0(u8, u8); #endif // GUARD_POKEMON_3_H diff --git a/include/scanline_effect.h b/include/scanline_effect.h index d49f5b4d6..711ed7da8 100644 --- a/include/scanline_effect.h +++ b/include/scanline_effect.h @@ -1,6 +1,48 @@ #ifndef GUARD_SCANLINE_EFFECT_H #define GUARD_SCANLINE_EFFECT_H -void remove_some_task(void); +// DMA control value to transfer a single 16-bit value at HBlank +#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1) +#define SCANLINE_EFFECT_DMACNT_32BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_32BIT | DMA_DEST_RELOAD) << 16) | 1) -#endif //GUARD_SCANLINE_EFFECT_H +#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS) + +struct ScanlineEffectParams +{ + volatile void *dmaDest; + u32 dmaControl; + u8 initState; + u8 unused9; +}; + +struct ScanlineEffect +{ + void *dmaSrcBuffers[2]; + volatile void *dmaDest; + u32 dmaControl; + void (*setFirstScanlineReg)(void); + u8 srcBuffer; + u8 state; + u8 unused16; + u8 unused17; + u8 waveTaskId; +}; + +extern struct ScanlineEffect gScanlineEffect; + +extern u16 gScanlineEffectRegBuffers[2][0x3C0]; + +void ScanlineEffect_Stop(void); +void ScanlineEffect_Clear(void); +void ScanlineEffect_SetParams(struct ScanlineEffectParams); +void ScanlineEffect_InitHBlankDmaTransfer(void); +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7); + +#endif // GUARD_SCANLINE_EFFECT_H \ No newline at end of file diff --git a/include/text.h b/include/text.h index e127f103a..1956de52b 100644 --- a/include/text.h +++ b/include/text.h @@ -250,5 +250,6 @@ s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese); s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese); s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese); void sub_80062B0(struct Sprite *sprite); +u8 sub_8006300(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority); #endif // GUARD_TEXT_H diff --git a/include/unknown_task.h b/include/unknown_task.h deleted file mode 100644 index 429e58aad..000000000 --- a/include/unknown_task.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef GUARD_unknown_task_H -#define GUARD_unknown_task_H - -#include "global.h" - -// Exported type declarations -struct UnknownTaskStruct -{ - volatile void *dest; - u32 control; - u8 unk8; - u8 unk9; -}; - -extern struct UnknownTaskStruct gUnknown_0831AC70; - -// Exported RAM declarations - -// Exported ROM declarations -void remove_some_task(void); -void sub_80BA038(struct UnknownTaskStruct arg0); -void sub_80BA0A8(void); - -#endif // GUARD_unknown_task_H diff --git a/ld_script.txt b/ld_script.txt index 73fa6312d..50368d5eb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { asm/trainer_see.o(.text); asm/wild_encounter.o(.text); asm/field_effect.o(.text); - asm/unknown_task.o(.text); + src/scanline_effect.o(.text); asm/option_menu.o(.text); asm/pokedex.o(.text); asm/trainer_card.o(.text); diff --git a/src/fame_checker.c b/src/fame_checker.c index bbbe02c58..855e9d157 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1009,7 +1009,7 @@ static void FCSetup_ClearVideoRegisters(void) static void FCSetup_ResetTasksAndSpriteResources(void) { - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); dp13_810BB8C(); diff --git a/src/main.c b/src/main.c index 068cc8578..bfab49c49 100644 --- a/src/main.c +++ b/src/main.c @@ -29,7 +29,7 @@ extern void MapMusicMain(void); extern void EnableInterrupts(u16); extern void sub_800DD28(void); extern u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)); -extern void remove_some_task(void); +extern void ScanlineEffect_Stop(void); extern void sub_80F50F4(void); extern bool32 sub_80F5118(void); extern bool8 sub_813B870(void); @@ -441,7 +441,7 @@ void DoSoftReset(void) { REG_IME = 0; m4aSoundVSyncOff(); - remove_some_task(); + ScanlineEffect_Stop(); DmaStop(1); DmaStop(2); DmaStop(3); diff --git a/src/oak_speech.c b/src/oak_speech.c index bad71f671..9a13c77bb 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -1,14 +1,37 @@ #include "global.h" #include "main.h" #include "task.h" +#include "malloc.h" #include "gpu_regs.h" #include "wild_encounter.h" #include "palette.h" #include "text.h" +#include "window.h" +#include "text_window.h" +#include "bg.h" +#include "menu.h" +#include "help_system.h" +#include "new_menu_helpers.h" +#include "pokemon_3.h" +#include "sound.h" +#include "scanline_effect.h" #include "constants/species.h" +struct OakSpeechResources +{ + u8 filler_0000[0x1F]; + u8 unk_001F; + u8 filler_0020[0x1800]; + u8 bg2TilemapBuffer[0x400]; + u8 bg1TilemapBuffer[0x800]; +}; //size=0x2420 + +EWRAM_DATA struct OakSpeechResources * sOakSpeechResources = NULL; + void sub_812E9F8(u8 taskId); void sub_812EB58(u8 taskId); +void sub_812EEB0(void); +void sub_812F0B0(u8 taskId); const u8 gUnknown_845FD54[][5] = { [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, @@ -426,6 +449,11 @@ const u8 gUnknown_845FD54[][5] = { [SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d} }; +ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); +const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); + +extern const struct BgTemplate gUnknown_8462E58[3]; + void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) { u8 taskId = CreateTask(sub_812E9F8, a5); @@ -531,3 +559,92 @@ void sub_812EB2C(void) CreateTask(sub_812EB58, 0); SetMainCallback2(sub_812EB10); } + +void sub_812EB58(u8 taskId) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT + sizeof(u16), PLTT_SIZE - 2); + ResetPaletteFade(); + ScanlineEffect_Stop(); + ResetSpriteData(); + FreeAllSpritePalettes(); + reset_temp_tile_data_buffers(); + sub_812B1F0(2); + break; + case 1: + sOakSpeechResources = AllocZeroed(sizeof(*sOakSpeechResources)); + sub_8044AF0(1, 1); + break; + case 2: + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WIN1H, 0); + SetGpuReg(REG_OFFSET_WIN1V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + break; + case 3: + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(1, gUnknown_8462E58, NELEMS(gUnknown_8462E58)); + SetBgTilemapBuffer(1, sOakSpeechResources->bg1TilemapBuffer); + SetBgTilemapBuffer(2, sOakSpeechResources->bg2TilemapBuffer); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + gSpriteCoordOffsetX = 0; + gSpriteCoordOffsetY = 0; + break; + case 4: + gPaletteFade.bufferTransferDisabled = TRUE; + sub_80F6C6C(); + sub_80F6C98(); + sub_80F77CC(0xD0); + LoadPalette(gUnknown_8460568, 0x000, 0x080); + LoadPalette(stdpal_get(2) + 15, 0x000, 0x002); + break; + case 5: + sOakSpeechResources->unk_001F = sub_80F78A8(); + gTextFlags.flag_0 = TRUE; + decompress_and_copy_tile_data_to_vram(1, gUnknown_84605E8, 0, 0, 0); + break; + case 6: + if (free_temp_tile_data_buffers_if_possible()) + return; + sub_80F6F54(0, 1); + FillBgTilemapBufferRect_Palette0(1, 0x0000, 0, 0, 32, 32); + CopyBgTilemapBufferToVram(1); + break; + case 7: + sub_810F558(0, 30, 0, 13, 0x1C4); + FillBgTilemapBufferRect_Palette0(1, 0xD00F, 0, 0, 30, 2); + FillBgTilemapBufferRect_Palette0(1, 0xD002, 0, 2, 30, 1); + FillBgTilemapBufferRect_Palette0(1, 0xD00E, 0, 19, 30, 1); + sub_812EEB0(); + gPaletteFade.bufferTransferDisabled = FALSE; + gTasks[taskId].data[5] = sub_8006300(0, 0xE6, 0x95, 0, 0); + BlendPalettes(0xFFFFFFFF, 0x10, 0x00); + break; + case 10: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + SetVBlankCallback(sub_812EAFC); + PlayBGM(323); + gTasks[taskId].func = sub_812F0B0; + gMain.state = 0; + return; + } + + gMain.state++; +} diff --git a/src/scanline_effect.c b/src/scanline_effect.c new file mode 100644 index 000000000..22699b96d --- /dev/null +++ b/src/scanline_effect.c @@ -0,0 +1,262 @@ +#include "global.h" +#include "battle.h" +#include "task.h" +#include "trig.h" +#include "scanline_effect.h" + +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; + +static void CopyValue16Bit(void); +static void CopyValue32Bit(void); + +// EWRAM vars + +// Per-scanline register values. +// This is double buffered so that it can be safely written to at any time +// without overwriting the buffer that the DMA is currently reading +EWRAM_DATA u16 gScanlineEffectRegBuffers[2][0x3C0] = {0}; + +EWRAM_DATA struct ScanlineEffect gScanlineEffect = {0}; +EWRAM_DATA static bool8 sShouldStopWaveTask = FALSE; + +void ScanlineEffect_Stop(void) +{ + gScanlineEffect.state = 0; + DmaStop(0); + if (gScanlineEffect.waveTaskId != 0xFF) + { + DestroyTask(gScanlineEffect.waveTaskId); + gScanlineEffect.waveTaskId = 0xFF; + } +} + +void ScanlineEffect_Clear(void) +{ + CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); + gScanlineEffect.dmaSrcBuffers[0] = NULL; + gScanlineEffect.dmaSrcBuffers[1] = NULL; + gScanlineEffect.dmaDest = NULL; + gScanlineEffect.dmaControl = 0; + gScanlineEffect.srcBuffer = 0; + gScanlineEffect.state = 0; + gScanlineEffect.unused16 = 0; + gScanlineEffect.unused17 = 0; + gScanlineEffect.waveTaskId = 0xFF; +} + +void ScanlineEffect_SetParams(struct ScanlineEffectParams params) +{ + if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-bit + { + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.dmaSrcBuffers[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; + } + else // assume 32-bit + { + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.dmaSrcBuffers[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; + } + + gScanlineEffect.dmaControl = params.dmaControl; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.state = params.initState; + gScanlineEffect.unused16 = params.unused9; + gScanlineEffect.unused17 = params.unused9; +} + +void ScanlineEffect_InitHBlankDmaTransfer(void) +{ + if (gScanlineEffect.state == 0) + { + return; + } + else if (gScanlineEffect.state == 3) + { + gScanlineEffect.state = 0; + DmaStop(0); + sShouldStopWaveTask = TRUE; + } + else + { + DmaStop(0); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.dmaSrcBuffers[gScanlineEffect.srcBuffer], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer + gScanlineEffect.srcBuffer ^= 1; + } +} + +// These two functions are used to copy the register for the first scanline, +// depending whether it is a 16-bit register or a 32-bit register. + +static void CopyValue16Bit(void) +{ + u16 *dest = (u16 *)gScanlineEffect.dmaDest; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; + + *dest = *src; +} + +static void CopyValue32Bit(void) +{ + u32 *dest = (u32 *)gScanlineEffect.dmaDest; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; + + *dest = *src; +} + +#define tStartLine data[0] +#define tEndLine data[1] +#define tWaveLength data[2] +#define tSrcBufferOffset data[3] +#define tFramesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] +#define tApplyBattleBgOffsets data[7] + +static void TaskFunc_UpdateWavePerFrame(u8 taskId) +{ + int value = 0; + int i; + int offset; + + if (sShouldStopWaveTask) + { + DestroyTask(taskId); + gScanlineEffect.waveTaskId = 0xFF; + } + else + { + if (gTasks[taskId].tApplyBattleBgOffsets) + { + switch (gTasks[taskId].tRegOffset) + { + case SCANLINE_EFFECT_REG_BG0HOFS: + value = gBattle_BG0_X; + break; + case SCANLINE_EFFECT_REG_BG0VOFS: + value = gBattle_BG0_Y; + break; + case SCANLINE_EFFECT_REG_BG1HOFS: + value = gBattle_BG1_X; + break; + case SCANLINE_EFFECT_REG_BG1VOFS: + value = gBattle_BG1_Y; + break; + case SCANLINE_EFFECT_REG_BG2HOFS: + value = gBattle_BG2_X; + break; + case SCANLINE_EFFECT_REG_BG2VOFS: + value = gBattle_BG2_Y; + break; + case SCANLINE_EFFECT_REG_BG3HOFS: + value = gBattle_BG3_X; + break; + case SCANLINE_EFFECT_REG_BG3VOFS: + value = gBattle_BG3_Y; + break; + } + } + if (gTasks[taskId].tFramesUntilMove != 0) + { + gTasks[taskId].tFramesUntilMove--; + offset = gTasks[taskId].tSrcBufferOffset + 320; + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; + offset++; + } + } + else + { + gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval; + offset = gTasks[taskId].tSrcBufferOffset + 320; + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; + offset++; + } + + // increment src buffer offset + gTasks[taskId].tSrcBufferOffset++; + if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength) + gTasks[taskId].tSrcBufferOffset = 0; + } + } +} + +static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) +{ + u16 i = 0; + u8 theta = 0; + + while (i < 256) + { + buffer[i] = (gSineTable[theta] * amplitude) / 256; + theta += frequency; + i++; + } +} + +// Initializes a background "wave" effect that affects scanlines startLine (inclusive) to endLine (exclusive). +// 'frequency' and 'amplitude' control the frequency and amplitude of the wave. +// 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. +// 'regOffset' is the offset of the video register to modify. +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets) +{ + int i; + int offset; + struct ScanlineEffectParams params; + u8 taskId; + + ScanlineEffect_Clear(); + + params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.initState = 1; + params.unused9 = 0; + ScanlineEffect_SetParams(params); + + taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); + + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].tWaveLength = 256 / frequency; + gTasks[taskId].tSrcBufferOffset = 0; + gTasks[taskId].tFramesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].tApplyBattleBgOffsets = applyBattleBgOffsets; + + gScanlineEffect.waveTaskId = taskId; + sShouldStopWaveTask = FALSE; + + GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); + + offset = 320; + for (i = startLine; i < endLine; i++) + { + gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; + gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset]; + offset++; + } + + return taskId; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index b978e59c4..b18406af2 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -116,28 +116,28 @@ gUnknown_2022870: @ 2022870 gUnknown_2022874: @ 2022874 .space 0x100 -gUnknown_2022974: @ 2022974 +gBattle_BG0_X: @ 2022974 .space 0x2 -gUnknown_2022976: @ 2022976 +gBattle_BG0_Y: @ 2022976 .space 0x2 -gUnknown_2022978: @ 2022978 +gBattle_BG1_X: @ 2022978 .space 0x2 -gUnknown_202297A: @ 202297A +gBattle_BG1_Y: @ 202297A .space 0x2 -gUnknown_202297C: @ 202297C +gBattle_BG2_X: @ 202297C .space 0x2 -gUnknown_202297E: @ 202297E +gBattle_BG2_Y: @ 202297E .space 0x2 -gUnknown_2022980: @ 2022980 +gBattle_BG3_X: @ 2022980 .space 0x2 -gUnknown_2022982: @ 2022982 +gBattle_BG3_Y: @ 2022982 .space 0x2 gUnknown_2022984: @ 2022984 @@ -869,30 +869,9 @@ gUnknown_20386DC: @ 20386DC gFieldEffectArguments: @ 20386E0 .space 0x20 -gUnknown_2038700: @ 2038700 - .space 0x2 - -gUnknown_2038702: @ 2038702 - .space 0x2 - -gUnknown_2038704: @ 2038704 - .space 0x27C - -gUnknown_2038980: @ 2038980 - .space 0x500 - -gUnknown_2038E80: @ 2038E80 - .space 0x140 - -gUnknown_2038FC0: @ 2038FC0 - .space 0x640 - -gUnknown_2039600: @ 2039600 - .space 0x1C - -gUnknown_203961C: @ 203961C - .space 0x4 + .include "src/scanline_effect.o" + .align 2 gUnknown_2039620: @ 2039620 .space 0x4 @@ -1531,9 +1510,7 @@ gUnknown_203B0EE: @ 203B0EE .space 0x2 .include "src/fame_checker.o" - -gUnknown_203B108: @ 203B108 - .space 0x4 + .include "src/oak_speech.o" gUnknown_203B10C: @ 203B10C .space 0xA From 789e598c920a4061828c9be27498228b0be568dc Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 9 Apr 2019 18:23:34 -0400 Subject: [PATCH 050/318] sub_812EEB0 --- asm/macros.inc | 5 +++ asm/oak_speech.s | 71 ----------------------------------------- data/data_83FECCC.s | 10 ++++-- data/data_845FD54.s | 39 ++++++++++++++++++++-- include/event_scripts.h | 2 ++ include/menu.h | 1 + src/oak_speech.c | 23 ++++++++++++- 7 files changed, 75 insertions(+), 76 deletions(-) diff --git a/asm/macros.inc b/asm/macros.inc index 6d8657892..324a8de02 100644 --- a/asm/macros.inc +++ b/asm/macros.inc @@ -147,3 +147,8 @@ .2byte MAP_\map_name .space 2 .endm + + .macro window_template bg, top, left, height, width, palno, baseBlock + .byte \bg, \top, \left, \height, \width, \palno + .2byte \baseBlock + .endm diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 35e16ce71..e153f3b2d 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,77 +5,6 @@ .text - thumb_func_start sub_812EEB0 -sub_812EEB0: @ 812EEB0 - push {r4-r6,lr} - sub sp, 0x14 - ldr r0, _0812EF38 @ =gUnknown_8415D2C - ldr r1, _0812EF3C @ =gUnknown_8415D48 - movs r5, 0x1 - str r5, [sp] - movs r2, 0 - movs r3, 0 - bl sub_810F650 - ldr r1, _0812EF40 @ =gUnknown_8462EB4 - ldr r4, _0812EF44 @ =sOakSpeechResources - ldr r0, [r4] - ldrh r0, [r0, 0x12] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl AddWindow - ldr r1, [r4] - movs r6, 0 - strh r0, [r1, 0x14] - lsls r0, 24 - lsrs r0, 24 - bl PutWindowTilemap - ldr r0, [r4] - ldrb r0, [r0, 0x14] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r4] - ldrb r0, [r0, 0x14] - str r5, [sp] - str r5, [sp, 0x4] - ldr r1, _0812EF48 @ =gUnknown_8462EE8 - str r1, [sp, 0x8] - str r6, [sp, 0xC] - ldr r1, _0812EF4C @ =gUnknown_81C582D - str r1, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0 - bl AddTextPrinterParametrized2 - ldr r0, [r4] - ldrb r0, [r0, 0x14] - movs r1, 0x3 - bl CopyWindowToVram - movs r1, 0xC0 - lsls r1, 6 - movs r0, 0x5 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812EF38: .4byte gUnknown_8415D2C -_0812EF3C: .4byte gUnknown_8415D48 -_0812EF40: .4byte gUnknown_8462EB4 -_0812EF44: .4byte sOakSpeechResources -_0812EF48: .4byte gUnknown_8462EE8 -_0812EF4C: .4byte gUnknown_81C582D - thumb_func_end sub_812EEB0 - thumb_func_start sub_812EF50 sub_812EF50: @ 812EF50 push {r4-r7,lr} diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index a96e9ff70..2075ac812 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -587,11 +587,17 @@ gUnknown_8415CE8:: @ 8415CE8 .incbin "baserom.gba", 0x415CE8, 0x44 gUnknown_8415D2C:: @ 8415D2C - .incbin "baserom.gba", 0x415D2C, 0x1C + .string "CONTROLS$" + .align 2 +gUnknown_8415D38:: @ 8415D2C + .string "{KEYGFX_DPAD_UP_DOWN}ãˆã‚‰ã¶ {KEYGFX_A_BUTTON}ã‘ã£ã¦ã„$" + + .align 2 gUnknown_8415D48:: @ 8415D48 - .incbin "baserom.gba", 0x415D48, 0x8 + .string "{KEYGFX_A_BUTTON}NEXT$" + .align 2 gUnknown_8415D50:: @ 8415D50 .incbin "baserom.gba", 0x415D50, 0x10 diff --git a/data/data_845FD54.s b/data/data_845FD54.s index fd9a62e1a..e395c79d9 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -1,3 +1,6 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .section .rodata .align 2 @@ -42,10 +45,42 @@ gUnknown_84623EC:: @ 84623EC .incbin "baserom.gba", 0x4623EC, 0xA6C gUnknown_8462E58:: @ 8462E58 - .incbin "baserom.gba", 0x462E58, 0x5C + .incbin "baserom.gba", 0x462E58, 0xC + +gUnknown_8462E64:: @ 8462E64 + window_template 0x00, 0x00, 0x07, 0x1e, 0x04, 0x0f, 0x0001 + +gUnknown_8462E6C:: @ 8462E6C + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 + +gUnknown_8462E74:: @ 8462E74 + window_template 0x00, 0x06, 0x03, 0x18, 0x06, 0x0f, 0x0001 + +gUnknown_8462E7C:: @ 8462E7C + window_template 0x00, 0x06, 0x0a, 0x18, 0x04, 0x0f, 0x0092 + +gUnknown_8462E84:: @ 8462E84 + window_template 0x00, 0x06, 0x0f, 0x18, 0x04, 0x0f, 0x00f3 + +gUnknown_8462E8C:: @ 8462E8C + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 + +gUnknown_8462E94:: @ 8462E94 + window_template 0x00, 0x06, 0x03, 0x18, 0x04, 0x0f, 0x0001 + +gUnknown_8462E9C:: @ 8462E9C + window_template 0x00, 0x06, 0x08, 0x18, 0x04, 0x0f, 0x0062 + +gUnknown_8462EA4:: @ 8462EA4 + window_template 0x00, 0x06, 0x0d, 0x18, 0x06, 0x0f, 0x00c3 + +gUnknown_8462EAC:: @ 8462EAC + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 gUnknown_8462EB4:: @ 8462EB4 - .incbin "baserom.gba", 0x462EB4, 0xC + .4byte gUnknown_8462E64 + .4byte gUnknown_8462E74 + .4byte gUnknown_8462E94 gUnknown_8462EC0:: @ 8462EC0 .incbin "baserom.gba", 0x462EC0, 0x8 diff --git a/include/event_scripts.h b/include/event_scripts.h index b909566d0..6c26ef892 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -705,4 +705,6 @@ extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni3[]; extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni4[]; extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni5[]; +extern const u8 gUnknown_81C582D[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/menu.h b/include/menu.h index 2c68b29b4..937e2e59c 100644 --- a/include/menu.h +++ b/include/menu.h @@ -39,5 +39,6 @@ void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3); void sub_810F4D8(u8 windowId, bool32 someBool); void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void sub_810F558(u8, u8, u8, u8, u16); +void sub_810F650(const u8 *, const u8 *, u8, u32, u8); #endif // GUARD_MENU_H diff --git a/src/oak_speech.c b/src/oak_speech.c index 9a13c77bb..3a5e0dc9d 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -14,12 +14,16 @@ #include "new_menu_helpers.h" #include "pokemon_3.h" #include "sound.h" +#include "event_scripts.h" #include "scanline_effect.h" #include "constants/species.h" struct OakSpeechResources { - u8 filler_0000[0x1F]; + u8 filler_0000[0x12]; + u16 unk_0012; + u16 unk_0014; + u8 filler_0016[9]; u8 unk_001F; u8 filler_0020[0x1800]; u8 bg2TilemapBuffer[0x400]; @@ -33,6 +37,9 @@ void sub_812EB58(u8 taskId); void sub_812EEB0(void); void sub_812F0B0(u8 taskId); +extern const u8 gUnknown_8415D2C[]; +extern const u8 gUnknown_8415D48[]; + const u8 gUnknown_845FD54[][5] = { [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, @@ -453,6 +460,8 @@ ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_846056 const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); extern const struct BgTemplate gUnknown_8462E58[3]; +extern const struct WindowTemplate *const gUnknown_8462EB4[3]; +extern const struct TextColor gUnknown_8462EE8; void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) { @@ -648,3 +657,15 @@ void sub_812EB58(u8 taskId) gMain.state++; } + +void sub_812EEB0(void) +{ + sub_810F650(gUnknown_8415D2C, gUnknown_8415D48, 0, 0, 1); + sOakSpeechResources->unk_0014 = AddWindow(gUnknown_8462EB4[sOakSpeechResources->unk_0012]); + PutWindowTilemap(sOakSpeechResources->unk_0014); + FillWindowPixelBuffer(sOakSpeechResources->unk_0014, 0x00); + AddTextPrinterParametrized2(sOakSpeechResources->unk_0014, 2, 2, 0, 1, 1, &gUnknown_8462EE8, 0, gUnknown_81C582D); + CopyWindowToVram(sOakSpeechResources->unk_0014, 3); + FillBgTilemapBufferRect_Palette0(1, 0x3000, 1, 3, 5, 16); + CopyBgTilemapBufferToVram(1); +} From dbd48510879a39de0ed7af143d4284ede7ae5829 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Apr 2019 08:47:54 -0400 Subject: [PATCH 051/318] sub_812EF50 --- asm/oak_speech.s | 164 -------------------------------------------- data/data_83FECCC.s | 3 +- include/menu.h | 1 + src/oak_speech.c | 53 ++++++++++++-- 4 files changed, 49 insertions(+), 172 deletions(-) diff --git a/asm/oak_speech.s b/asm/oak_speech.s index e153f3b2d..aa2c7a8ec 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,170 +5,6 @@ .text - thumb_func_start sub_812EF50 -sub_812EF50: @ 812EF50 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r6, 0 - ldr r4, _0812EF80 @ =sOakSpeechResources - ldr r0, [r4] - ldrh r1, [r0, 0x12] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r1, 0 - bne _0812EF84 - bl sub_812EEB0 - mov r0, r8 - lsls r0, 2 - mov r10, r0 - b _0812F06A - .align 2, 0 -_0812EF80: .4byte sOakSpeechResources -_0812EF84: - ldr r0, _0812F038 @ =gUnknown_8415D50 - movs r1, 0 - movs r2, 0x1 - bl sub_810F5E8 - lsls r1, r7, 1 - mov r9, r1 - mov r3, r8 - lsls r3, 2 - mov r10, r3 - adds r5, r4, 0 -_0812EF9A: - ldr r1, _0812F03C @ =gUnknown_8462EB4 - ldr r0, [r5] - ldrh r0, [r0, 0x12] - lsls r0, 2 - adds r0, r1 - lsls r1, r6, 3 - ldr r0, [r0] - adds r0, r1 - bl AddWindow - ldr r1, [r5] - lsls r4, r6, 1 - adds r1, 0x14 - adds r1, r4 - strh r0, [r1] - lsls r0, 24 - lsrs r0, 24 - bl PutWindowTilemap - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x1 - str r1, [sp] - str r1, [sp, 0x4] - ldr r1, _0812F040 @ =gUnknown_8462EE8 - str r1, [sp, 0x8] - movs r1, 0 - str r1, [sp, 0xC] - ldr r2, _0812F044 @ =gUnknown_8463074 - mov r3, r9 - adds r1, r3, r7 - adds r1, r6, r1 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - str r1, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x6 - movs r3, 0 - bl AddTextPrinterParametrized2 - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x2 - bls _0812EF9A - ldr r0, _0812F048 @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x12] - cmp r0, 0x1 - bne _0812F050 - ldr r1, _0812F04C @ =gUnknown_8460D94 - movs r0, 0x5 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl CopyToBgTilemapBufferRect - b _0812F064 - .align 2, 0 -_0812F038: .4byte gUnknown_8415D50 -_0812F03C: .4byte gUnknown_8462EB4 -_0812F040: .4byte gUnknown_8462EE8 -_0812F044: .4byte gUnknown_8463074 -_0812F048: .4byte sOakSpeechResources -_0812F04C: .4byte gUnknown_8460D94 -_0812F050: - ldr r1, _0812F0A0 @ =gUnknown_8460E34 - movs r0, 0x5 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl CopyToBgTilemapBufferRect -_0812F064: - movs r0, 0x1 - bl CopyBgTilemapBufferToVram -_0812F06A: - movs r0, 0x2 - bl stdpal_get - ldrh r2, [r0, 0x1E] - ldr r0, _0812F0A4 @ =0xffffdfff - movs r1, 0x1 - negs r1, r1 - str r2, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _0812F0A8 @ =gTasks - mov r0, r10 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812F0AC @ =sub_812F0B0 - str r1, [r0] - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812F0A0: .4byte gUnknown_8460E34 -_0812F0A4: .4byte 0xffffdfff -_0812F0A8: .4byte gTasks -_0812F0AC: .4byte sub_812F0B0 - thumb_func_end sub_812EF50 - thumb_func_start sub_812F0B0 sub_812F0B0: @ 812F0B0 push {r4,r5,lr} diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 2075ac812..96485c89e 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -599,8 +599,9 @@ gUnknown_8415D48:: @ 8415D48 .align 2 gUnknown_8415D50:: @ 8415D50 - .incbin "baserom.gba", 0x415D50, 0x10 + .string "{KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}BACK$" + .align 2 gUnknown_8415D60:: @ 8415D60 .incbin "baserom.gba", 0x415D60, 0x18 diff --git a/include/menu.h b/include/menu.h index 937e2e59c..f9fa63f98 100644 --- a/include/menu.h +++ b/include/menu.h @@ -40,5 +40,6 @@ void sub_810F4D8(u8 windowId, bool32 someBool); void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void sub_810F558(u8, u8, u8, u8, u16); void sub_810F650(const u8 *, const u8 *, u8, u32, u8); +void sub_810F5E8(const u8 *, u32, u8); #endif // GUARD_MENU_H diff --git a/src/oak_speech.c b/src/oak_speech.c index 3a5e0dc9d..022012cf9 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -22,8 +22,8 @@ struct OakSpeechResources { u8 filler_0000[0x12]; u16 unk_0012; - u16 unk_0014; - u8 filler_0016[9]; + u16 unk_0014[3]; + u8 filler_001A[5]; u8 unk_001F; u8 filler_0020[0x1800]; u8 bg2TilemapBuffer[0x400]; @@ -39,6 +39,7 @@ void sub_812F0B0(u8 taskId); extern const u8 gUnknown_8415D2C[]; extern const u8 gUnknown_8415D48[]; +extern const u8 gUnknown_8415D50[]; const u8 gUnknown_845FD54[][5] = { [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, @@ -459,9 +460,13 @@ const u8 gUnknown_845FD54[][5] = { ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); +extern const u16 gUnknown_8460D94[]; +extern const u16 gUnknown_8460E34[]; + extern const struct BgTemplate gUnknown_8462E58[3]; extern const struct WindowTemplate *const gUnknown_8462EB4[3]; extern const struct TextColor gUnknown_8462EE8; +extern const u8 *const gUnknown_8463074[]; void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) { @@ -661,11 +666,45 @@ void sub_812EB58(u8 taskId) void sub_812EEB0(void) { sub_810F650(gUnknown_8415D2C, gUnknown_8415D48, 0, 0, 1); - sOakSpeechResources->unk_0014 = AddWindow(gUnknown_8462EB4[sOakSpeechResources->unk_0012]); - PutWindowTilemap(sOakSpeechResources->unk_0014); - FillWindowPixelBuffer(sOakSpeechResources->unk_0014, 0x00); - AddTextPrinterParametrized2(sOakSpeechResources->unk_0014, 2, 2, 0, 1, 1, &gUnknown_8462EE8, 0, gUnknown_81C582D); - CopyWindowToVram(sOakSpeechResources->unk_0014, 3); + sOakSpeechResources->unk_0014[0] = AddWindow(gUnknown_8462EB4[sOakSpeechResources->unk_0012]); + PutWindowTilemap(sOakSpeechResources->unk_0014[0]); + FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00); + AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, &gUnknown_8462EE8, 0, gUnknown_81C582D); + CopyWindowToVram(sOakSpeechResources->unk_0014[0], 3); FillBgTilemapBufferRect_Palette0(1, 0x3000, 1, 3, 5, 16); CopyBgTilemapBufferToVram(1); } + +void sub_812EF50(u8 taskId) +{ + u8 i = 0; + u8 r7 = sOakSpeechResources->unk_0012 - 1; + if (sOakSpeechResources->unk_0012 == 0) + { + sub_812EEB0(); + } + else + { + sub_810F5E8(gUnknown_8415D50, 0, 1); + for (i = 0; i < 3; i++) + { + sOakSpeechResources->unk_0014[i] = AddWindow(&gUnknown_8462EB4[sOakSpeechResources->unk_0012][i]); + PutWindowTilemap(sOakSpeechResources->unk_0014[i]); + FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); + AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, &gUnknown_8462EE8, 0, gUnknown_8463074[i + r7 * 3]); + CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); + } + + if (sOakSpeechResources->unk_0012 == 1) + { + CopyToBgTilemapBufferRect(1, gUnknown_8460D94, 1, 3, 5, 16); + } + else + { + CopyToBgTilemapBufferRect(1, gUnknown_8460E34, 1, 3, 5, 16); + } + CopyBgTilemapBufferToVram(1); + } + BeginNormalPaletteFade(0xFFFFDFFF, -1, 16, 0, stdpal_get(2)[15]); + gTasks[taskId].func = sub_812F0B0; +} From bf7084cb60f0375973d8caf1005fb8b02653ade2 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 10 Apr 2019 10:16:20 -0400 Subject: [PATCH 052/318] through sub_812F33C --- asm/oak_speech.s | 480 -------------------------------- data/data_845FD54.s | 16 +- data/event_scripts.s | 220 ++++++++++++++- data/oak_speech/unk_8460BA8.bin | 2 + include/menu.h | 1 + include/new_menu_helpers.h | 1 + include/text.h | 1 + src/oak_speech.c | 138 ++++++++- 8 files changed, 356 insertions(+), 503 deletions(-) create mode 100644 data/oak_speech/unk_8460BA8.bin diff --git a/asm/oak_speech.s b/asm/oak_speech.s index aa2c7a8ec..4823a9717 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,486 +5,6 @@ .text - thumb_func_start sub_812F0B0 -sub_812F0B0: @ 812F0B0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0812F10C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812F162 - ldr r0, _0812F110 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _0812F162 - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0812F120 - ldr r1, _0812F114 @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x26] - ldr r0, _0812F118 @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x12] - adds r4, r2, 0 - cmp r0, 0x1 - bhi _0812F150 - movs r0, 0x2 - bl stdpal_get - ldrh r2, [r0, 0x1E] - ldr r0, _0812F11C @ =0xffffdfff - movs r1, 0x1 - negs r1, r1 - str r2, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0812F150 - .align 2, 0 -_0812F10C: .4byte gPaletteFade -_0812F110: .4byte gMain -_0812F114: .4byte gTasks -_0812F118: .4byte sOakSpeechResources -_0812F11C: .4byte 0xffffdfff -_0812F120: - ldr r0, _0812F16C @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x12] - cmp r0, 0 - beq _0812F162 - ldr r1, _0812F170 @ =gTasks - lsls r4, r5, 2 - adds r0, r4, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812F174 @ =0x0000ffff - strh r1, [r0, 0x26] - movs r0, 0x2 - bl stdpal_get - ldrh r2, [r0, 0x1E] - ldr r0, _0812F178 @ =0xffffdfff - movs r1, 0x1 - negs r1, r1 - str r2, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0812F150: - movs r0, 0x5 - bl PlaySE - ldr r0, _0812F170 @ =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812F17C @ =sub_812F180 - str r0, [r1] -_0812F162: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812F16C: .4byte sOakSpeechResources -_0812F170: .4byte gTasks -_0812F174: .4byte 0x0000ffff -_0812F178: .4byte 0xffffdfff -_0812F17C: .4byte sub_812F180 - thumb_func_end sub_812F0B0 - - thumb_func_start sub_812F180 -sub_812F180: @ 812F180 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r8, r0 - ldr r0, _0812F1B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812F260 - ldr r1, _0812F1B4 @ =sOakSpeechResources - ldr r0, [r1] - ldrh r0, [r0, 0x12] - adds r5, r1, 0 - cmp r0, 0 - bne _0812F1B8 - movs r1, 0x1 - mov r8, r1 - b _0812F1C4 - .align 2, 0 -_0812F1B0: .4byte gPaletteFade -_0812F1B4: .4byte sOakSpeechResources -_0812F1B8: - cmp r0, 0 - blt _0812F1C4 - cmp r0, 0x2 - bgt _0812F1C4 - movs r2, 0x3 - mov r8, r2 -_0812F1C4: - ldr r2, [r5] - ldr r1, _0812F244 @ =gTasks - lsls r3, r7, 2 - adds r0, r3, r7 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x26] - ldrh r1, [r2, 0x12] - adds r0, r1 - movs r1, 0 - strh r0, [r2, 0x12] - lsls r0, 16 - lsrs r0, 16 - mov r9, r3 - cmp r0, 0x2 - bhi _0812F24C - movs r6, 0 - cmp r1, r8 - bcs _0812F234 -_0812F1EA: - ldr r0, [r5] - lsls r4, r6, 1 - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - movs r1, 0 - strh r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, r8 - bcc _0812F1EA -_0812F234: - ldr r0, _0812F244 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812F248 @ =sub_812EF50 - str r0, [r1] - b _0812F260 - .align 2, 0 -_0812F244: .4byte gTasks -_0812F248: .4byte sub_812EF50 -_0812F24C: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0812F270 @ =sub_812F274 - str r0, [r4] -_0812F260: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812F270: .4byte sub_812F274 - thumb_func_end sub_812F180 - - thumb_func_start sub_812F274 -sub_812F274: @ 812F274 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r6, 0 - ldr r0, _0812F32C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812F320 - ldr r5, _0812F330 @ =sOakSpeechResources -_0812F292: - ldr r0, [r5] - lsls r4, r6, 1 - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - bl ClearWindowTilemap - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - ldr r0, [r5] - adds r0, 0x14 - adds r0, r4 - movs r7, 0 - strh r7, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x2 - bls _0812F292 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x12 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - ldr r0, _0812F334 @ =gTasks - mov r1, r8 - lsls r4, r1, 2 - add r4, r8 - lsls r4, 3 - adds r4, r0 - ldrb r0, [r4, 0x12] - bl sub_8006398 - ldr r0, _0812F330 @ =sOakSpeechResources - ldr r0, [r0] - strh r7, [r0, 0x14] - adds r0, 0x14 - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - movs r0, 0x20 - strh r0, [r4, 0xE] - ldr r0, _0812F338 @ =sub_812F33C - str r0, [r4] -_0812F320: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812F32C: .4byte gPaletteFade -_0812F330: .4byte sOakSpeechResources -_0812F334: .4byte gTasks -_0812F338: .4byte sub_812F33C - thumb_func_end sub_812F274 - - thumb_func_start sub_812F33C -sub_812F33C: @ 812F33C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - mov r8, r0 - ldr r0, _0812F370 @ =gTasks+0x8 - mov r9, r0 - mov r5, r8 - add r5, r9 - movs r0, 0 - str r0, [sp, 0x14] - ldrh r0, [r5, 0x6] - movs r1, 0x6 - ldrsh r6, [r5, r1] - cmp r6, 0 - beq _0812F374 - subs r0, 0x1 - strh r0, [r5, 0x6] - b _0812F476 - .align 2, 0 -_0812F370: .4byte gTasks+0x8 -_0812F374: - movs r0, 0xA2 - lsls r0, 1 - bl PlayBGM - bl sub_810F71C - ldr r0, _0812F484 @ =gUnknown_8415D48 - movs r1, 0 - movs r2, 0x1 - bl sub_810F5E8 - ldr r0, _0812F488 @ =gUnknown_8460BA8 - add r1, sp, 0x14 - bl malloc_and_decompress - adds r1, r0, 0 - ldr r4, _0812F48C @ =sOakSpeechResources - ldr r0, [r4] - str r1, [r0, 0x8] - movs r0, 0x1E - str r0, [sp] - movs r0, 0x13 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0 - movs r3, 0x2 - bl CopyToBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - ldr r0, [r4] - ldr r0, [r0, 0x8] - bl Free - ldr r0, [r4] - str r6, [r0, 0x8] - ldr r0, _0812F490 @ =gUnknown_8462EC0 - bl AddWindow - strh r0, [r5, 0x1C] - lsls r0, 24 - lsrs r0, 24 - bl PutWindowTilemap - ldrb r0, [r5, 0x1C] - movs r1, 0 - bl FillWindowPixelBuffer - ldrb r0, [r5, 0x1C] - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, [r4] - movs r1, 0 - strh r6, [r0, 0x12] - ldr r0, _0812F494 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - strb r1, [r0] - movs r0, 0x10 - strh r0, [r5, 0x1E] - ldrb r0, [r5, 0x1C] - movs r1, 0x1 - str r1, [sp] - str r6, [sp, 0x4] - ldr r1, _0812F498 @ =gUnknown_8462EEC - str r1, [sp, 0x8] - str r6, [sp, 0xC] - ldr r1, _0812F49C @ =gUnknown_8462EF0 - ldr r1, [r1] - str r1, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x3 - movs r3, 0x5 - bl AddTextPrinterParametrized2 - str r6, [sp] - movs r0, 0 - movs r1, 0xE2 - movs r2, 0x91 - movs r3, 0 - bl sub_8006300 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xA] - ldr r4, _0812F4A0 @ =gSprites - movs r1, 0xA - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x1] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x1] - movs r2, 0xA - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - ands r3, r1 - strb r3, [r0, 0x5] - adds r0, r7, 0 - movs r1, 0 - bl sub_8130FD4 - movs r0, 0x1 - negs r0, r0 - str r6, [sp] - movs r1, 0x2 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - mov r0, r9 - subs r0, 0x8 - add r0, r8 - ldr r1, _0812F4A4 @ =sub_812F4A8 - str r1, [r0] -_0812F476: - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812F484: .4byte gUnknown_8415D48 -_0812F488: .4byte gUnknown_8460BA8 -_0812F48C: .4byte sOakSpeechResources -_0812F490: .4byte gUnknown_8462EC0 -_0812F494: .4byte gMain -_0812F498: .4byte gUnknown_8462EEC -_0812F49C: .4byte gUnknown_8462EF0 -_0812F4A0: .4byte gSprites -_0812F4A4: .4byte sub_812F4A8 - thumb_func_end sub_812F33C - thumb_func_start sub_812F4A8 sub_812F4A8: @ 812F4A8 push {r4-r7,lr} diff --git a/data/data_845FD54.s b/data/data_845FD54.s index e395c79d9..c14671533 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -5,9 +5,6 @@ .align 2 // oak_speech -gUnknown_8460BA8:: @ 8460BA8 - .incbin "baserom.gba", 0x460BA8, 0xFC - gUnknown_8460CA4:: @ 8460CA4 .incbin "baserom.gba", 0x460CA4, 0x44 @@ -83,7 +80,7 @@ gUnknown_8462EB4:: @ 8462EB4 .4byte gUnknown_8462E94 gUnknown_8462EC0:: @ 8462EC0 - .incbin "baserom.gba", 0x462EC0, 0x8 + window_template 0x00, 0x01, 0x04, 0x1c, 0x0f, 0x0f, 0x0001 gUnknown_8462EC8:: @ 8462EC8 .incbin "baserom.gba", 0x462EC8, 0x8 @@ -94,14 +91,19 @@ gUnknown_8462ED0:: @ 8462ED0 gUnknown_8462ED8:: @ 8462ED8 .incbin "baserom.gba", 0x462ED8, 0x10 + .align 2 gUnknown_8462EE8:: @ 8462EE8 - .incbin "baserom.gba", 0x462EE8, 0x4 + .byte 0x00, 0x01, 0x02 + .align 2 gUnknown_8462EEC:: @ 8462EEC - .incbin "baserom.gba", 0x462EEC, 0x4 + .byte 0x00, 0x02, 0x03 + .align 2 gUnknown_8462EF0:: @ 8462EF0 - .incbin "baserom.gba", 0x462EF0, 0xC + .4byte gUnknown_81C5A04 + .4byte gUnknown_81C5AEB + .4byte gUnknown_81C5BB9 gUnknown_8462EFC:: @ 8462EFC .incbin "baserom.gba", 0x462EFC, 0x18 diff --git a/data/event_scripts.s b/data/event_scripts.s index 23f6ad5a9..7d4a7b996 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -429,49 +429,239 @@ gUnknown_81C566A:: @ 81C566A .incbin "baserom.gba", 0x1C566A, 0xE5 gUnknown_81C574F:: @ 81C574F - .incbin "baserom.gba", 0x1C574F, 0xDE + .string "NEW NAME$" + +gUnknown_81C5758:: @ 81C5758 + .string "GREEN$" + +gUnknown_81C575E:: @ 81C575E + .string "RED$" + +gUnknown_81C5762:: @ 81C5762 + .string "LEAF$" + +gUnknown_81C5767:: @ 81C5767 + .string "FIRE$" + +gUnknown_81C576C:: @ 81C576C + .string "GARY$" + +gUnknown_81C5771:: @ 81C5771 + .string "KAZ$" + +gUnknown_81C5775:: @ 81C5775 + .string "TORU$" + +gUnknown_81C577A:: @ 81C577A + .string "ASH$" + +gUnknown_81C577E:: @ 81C577E + .string "KENE$" + +gUnknown_81C5783:: @ 81C5783 + .string "GEKI$" + +gUnknown_81C5788:: @ 81C5788 + .string "JAK$" + +gUnknown_81C578C:: @ 81C578C + .string "JANNE$" + +gUnknown_81C5792:: @ 81C5792 + .string "JONN$" + +gUnknown_81C5797:: @ 81C5797 + .string "KAMON$" + +gUnknown_81C579D:: @ 81C579D + .string "KARL$" + +gUnknown_81C57A2:: @ 81C57A2 + .string "TAYLOR$" + +gUnknown_81C57A9:: @ 81C57A9 + .string "OSCAR$" + +gUnknown_81C57AF:: @ 81C57AF + .string "HIRO$" + +gUnknown_81C57B4:: @ 81C57B4 + .string "MAX$" + +gUnknown_81C57B8:: @ 81C57B8 + .string "JON$" + +gUnknown_81C57BC:: @ 81C57BC + .string "RALPH$" + +gUnknown_81C57C2:: @ 81C57C2 + .string "KAY$" + +gUnknown_81C57C6:: @ 81C57C6 + .string "TOSH$" + +gUnknown_81C57CB:: @ 81C57CB + .string "ROAK$" + +gUnknown_81C57D0:: @ 81C57D0 + .string "OMI$" + +gUnknown_81C57D4:: @ 81C57D4 + .string "JODI$" + +gUnknown_81C57D9:: @ 81C57D9 + .string "AMANDA$" + +gUnknown_81C57E0:: @ 81C57E0 + .string "HILLARY$" + +gUnknown_81C57E8:: @ 81C57E8 + .string "MAKEY$" + +gUnknown_81C57EE:: @ 81C57EE + .string "MICHI$" + +gUnknown_81C57F4:: @ 81C57F4 + .string "PAULA$" + +gUnknown_81C57FA:: @ 81C57FA + .string "JUNE$" + +gUnknown_81C57FF:: @ 81C57FF + .string "CASSIE$" + +gUnknown_81C5806:: @ 81C5806 + .string "REY$" + +gUnknown_81C580A:: @ 81C580A + .string "SEDA$" + +gUnknown_81C580F:: @ 81C580F + .string "KIKO$" + +gUnknown_81C5814:: @ 81C5814 + .string "MINA$" + +gUnknown_81C5819:: @ 81C5819 + .string "NORIE$" + +gUnknown_81C581F:: @ 81C581F + .string "SAI$" + +gUnknown_81C5823:: @ 81C5823 + .string "MOMO$" + +gUnknown_81C5828:: @ 81C5828 + .string "SUZI$" gUnknown_81C582D:: @ 81C582D - .incbin "baserom.gba", 0x1C582D, 0x1A8 + .string "The various buttons will be explained in\n" + .string "the order of their importance.$" + +gUnknown_81C5875:: @ 81C5875 + .string "Moves the main character.\n" + .string "Also used to choose various data\n" + .string "headings.$" + +gUnknown_81C58BA:: @ 81C58BA + .string "Used to confirm a choice, check\n" + .string "things, chat, and scroll text.$" + +gUnknown_81C58F9:: @ 81C58F9 + .string "Used to exit, cancel a choice,\n" + .string "and cancel a mode.$" + +gUnknown_81C592B:: @ 81C592B + .string "Press this button to open the\n" + .string "MENU.$" + +gUnknown_81C594F:: @ 81C594F + .string "Used to shift items and to use\n" + .string "a registered item.$" + +gUnknown_81C5981:: @ 81C5981 + .string "If you need help playing the\n" + .string "game, or on how to do things,\n" + .string "press the L or R Button.$" gUnknown_81C59D5:: @ 81C59D5 - .incbin "baserom.gba", 0x1C59D5, 0x2A3 + .string "Now tell me. Are you a boy?\n" + .string "Or are you a girl?$" + +gUnknown_81C5A04:: + .string "In the world which you are about to\n" + .string "enter, you will embark on a grand\n" + .string "adventure with you as the hero.\n" + .string "\n" + .string "Speak to people and check things\n" + .string "wherever you go, be it towns, roads,\n" + .string "or caves. Gather information and\n" + .string "hints from every source.$" + +gUnknown_81C5AEB:: + .string "New paths will open to you by helping\n" + .string "people in need, overcoming challenges,\n" + .string "and solving mysteries.\n" + .string "\n" + .string "At times, you will be challenged by\n" + .string "others and attacked by wild creatures.\n" + .string "Be brave and keep pushing on.$" + +gUnknown_81C5BB9:: + .string "Through your adventure, we hope\n" + .string "that you will interact with all sorts\n" + .string "of people and achieve personal growth.\n" + .string "That is our biggest objective.\n" + .string "\n" + .string "Press the A Button, and let your\n" + .string "adventure begin!$" gUnknown_81C5C78:: @ 81C5C78 - .incbin "baserom.gba", 0x1C5C78, 0x8E + .string "Hello, there!\n" + .string "Glad to meet you!\pWelcome to the world of POKéMON!\pMy name is OAK.\pPeople affectionately refer to me\n" + .string "as the POKéMON PROFESSOR.\p$" gUnknown_81C5D06:: @ 81C5D06 - .incbin "baserom.gba", 0x1C5D06, 0xC + .string "This world…$" gUnknown_81C5D12:: @ 81C5D12 - .incbin "baserom.gba", 0x1C5D12, 0x39 + .string "…is inhabited far and wide by\n" + .string "creatures called POKéMON.\p$" gUnknown_81C5D4B:: @ 81C5D4B - .incbin "baserom.gba", 0x1C5D4B, 0x72 + .string "For some people, POKéMON are pets.\n" + .string "Others use them for battling.\pAs for myself…\pI study POKéMON as a profession.\p$" gUnknown_81C5DBD:: @ 81C5DBD - .incbin "baserom.gba", 0x1C5DBD, 0x2D + .string "But first, tell me a little about\n" + .string "yourself.\p$" gUnknown_81C5DEA:: @ 81C5DEA - .incbin "baserom.gba", 0x1C5DEA, 0x29 + .string "Let’s begin with your name.\n" + .string "What is it?\p$" gUnknown_81C5E13:: @ 81C5E13 - .incbin "baserom.gba", 0x1C5E13, 0x1B + .string "Right…\n" + .string "So your name is {PLAYER}.$" gUnknown_81C5E2E:: @ 81C5E2E - .incbin "baserom.gba", 0x1C5E2E, 0x63 + .string "This is my grandson.\pHe’s been your rival since you both\n" + .string "were babies.\p…Erm, what was his name now?$" gUnknown_81C5E91:: @ 81C5E91 - .incbin "baserom.gba", 0x1C5E91, 0x24 + .string "Your rival’s name, what was it now?$" gUnknown_81C5EB5:: @ 81C5EB5 - .incbin "baserom.gba", 0x1C5EB5, 0x10 + .string "…Er, was it {RIVAL}?$" gUnknown_81C5EC5:: @ 81C5EC5 - .incbin "baserom.gba", 0x1C5EC5, 0x2F + .string "That’s right! I remember now!\n" + .string "His name is {RIVAL}!\p$" gUnknown_81C5EF4:: @ 81C5EF4 - .incbin "baserom.gba", 0x1C5EF4, 0x75 + .string "{PLAYER}!\pYour very own POKéMON legend is\n" + .string "about to unfold!\pA world of dreams and adventures\n" + .string "with POKéMON awaits! Let’s go!$" @ pokedude data .incbin "baserom.gba", 0x1C5F69, 0x983 diff --git a/data/oak_speech/unk_8460BA8.bin b/data/oak_speech/unk_8460BA8.bin new file mode 100644 index 000000000..ad1c8216c --- /dev/null +++ b/data/oak_speech/unk_8460BA8.bin @@ -0,0 +1,2 @@ +^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^                                ` `   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` `   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (`   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (`   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` `   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` ` a b c d e f   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (p q r s t u v   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` g h i j k l m   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (w x y z { | }   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` n o ‚ ƒ „ … †   ` ~  ’ “ ” • –   + \ No newline at end of file diff --git a/include/menu.h b/include/menu.h index f9fa63f98..b134ef7f5 100644 --- a/include/menu.h +++ b/include/menu.h @@ -41,5 +41,6 @@ void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void sub_810F558(u8, u8, u8, u8, u16); void sub_810F650(const u8 *, const u8 *, u8, u32, u8); void sub_810F5E8(const u8 *, u32, u8); +void sub_810F71C(void); #endif // GUARD_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 0d51eb5fb..8903f5d56 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -27,5 +27,6 @@ void sub_80F6F1C(u8 windowId, bool8 copyNow); void sub_80F6C6C(void); void sub_80F6C98(void); void sub_80F77CC(u16); +void * malloc_and_decompress(const void * src, u32 * size); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/text.h b/include/text.h index 1956de52b..c8835fbde 100644 --- a/include/text.h +++ b/include/text.h @@ -251,5 +251,6 @@ s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese); s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese); void sub_80062B0(struct Sprite *sprite); u8 sub_8006300(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority); +void sub_8006398(u8 spriteId); #endif // GUARD_TEXT_H diff --git a/src/oak_speech.c b/src/oak_speech.c index 022012cf9..ec30dfe6e 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -17,10 +17,13 @@ #include "event_scripts.h" #include "scanline_effect.h" #include "constants/species.h" +#include "constants/songs.h" struct OakSpeechResources { - u8 filler_0000[0x12]; + u8 filler_0000[0x8]; + void * unk_0008; + u8 filler_000C[6]; u16 unk_0012; u16 unk_0014[3]; u8 filler_001A[5]; @@ -36,6 +39,11 @@ void sub_812E9F8(u8 taskId); void sub_812EB58(u8 taskId); void sub_812EEB0(void); void sub_812F0B0(u8 taskId); +void sub_812F180(u8 taskId); +void sub_812F274(u8 taskId); +void sub_812F33C(u8 taskId); +void sub_812F4A8(u8 taskId); +void sub_8130FD4(u8 taskId, u8 state); extern const u8 gUnknown_8415D2C[]; extern const u8 gUnknown_8415D48[]; @@ -459,13 +467,17 @@ const u8 gUnknown_845FD54[][5] = { ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); +const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); extern const u16 gUnknown_8460D94[]; extern const u16 gUnknown_8460E34[]; extern const struct BgTemplate gUnknown_8462E58[3]; extern const struct WindowTemplate *const gUnknown_8462EB4[3]; +extern const struct WindowTemplate gUnknown_8462EC0; extern const struct TextColor gUnknown_8462EE8; +extern const struct TextColor gUnknown_8462EEC; +extern const u8 *const gUnknown_8462EF0[]; extern const u8 *const gUnknown_8463074[]; void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) @@ -708,3 +720,127 @@ void sub_812EF50(u8 taskId) BeginNormalPaletteFade(0xFFFFDFFF, -1, 16, 0, stdpal_get(2)[15]); gTasks[taskId].func = sub_812F0B0; } + +void sub_812F0B0(u8 taskId) +{ + if (!gPaletteFade.active && JOY_NEW((A_BUTTON | B_BUTTON))) + { + if (JOY_NEW(A_BUTTON)) + { + gTasks[taskId].data[15] = 1; + if (sOakSpeechResources->unk_0012 < 2) + { + BeginNormalPaletteFade(0xFFFFDFFF, -1, 0, 16, stdpal_get(2)[15]); + } + } + else + { + if (sOakSpeechResources->unk_0012 != 0) + { + gTasks[taskId].data[15] = -1; + BeginNormalPaletteFade(0xFFFFDFFF, -1, 0, 16, stdpal_get(2)[15]); + } + else + return; + } + } + else + return; + PlaySE(SE_SELECT); + gTasks[taskId].func = sub_812F180; +} + +void sub_812F180(u8 taskId) +{ + u8 r8 = 0; + u8 i; + + if (!gPaletteFade.active) + { + switch (sOakSpeechResources->unk_0012) { + case 0: + r8 = 1; + break; + case 1: + case 2: + r8 = 3; + break; + } + sOakSpeechResources->unk_0012 += gTasks[taskId].data[15]; + if (sOakSpeechResources->unk_0012 < 3) + { + for (i = 0; i < r8; i++) + { + FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); + ClearWindowTilemap(sOakSpeechResources->unk_0014[i]); + CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); + RemoveWindow(sOakSpeechResources->unk_0014[i]); + sOakSpeechResources->unk_0014[i] = 0; + } + gTasks[taskId].func = sub_812EF50; + } + else + { + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + gTasks[taskId].func = sub_812F274; + } + } +} + +void sub_812F274(u8 taskId) +{ + u8 i = 0; + + if (!gPaletteFade.active) + { + for (i = 0; i < 3; i++) + { + FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); + ClearWindowTilemap(sOakSpeechResources->unk_0014[i]); + CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); + RemoveWindow(sOakSpeechResources->unk_0014[i]); + sOakSpeechResources->unk_0014[i] = 0; + } + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 18); + CopyBgTilemapBufferToVram(1); + sub_8006398(gTasks[taskId].data[5]); + sOakSpeechResources->unk_0014[0] = RGB_BLACK; + LoadPalette(sOakSpeechResources->unk_0014, 0, 2); + gTasks[taskId].data[3] = 32; + gTasks[taskId].func = sub_812F33C; + } +} + +void sub_812F33C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u32 sp14 = 0; + + if (data[3] != 0) + data[3]--; + else + { + PlayBGM(324); + sub_810F71C(); + sub_810F5E8(gUnknown_8415D48, 0, 1); + sOakSpeechResources->unk_0008 = malloc_and_decompress(gUnknown_8460BA8, &sp14); + CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19); + CopyBgTilemapBufferToVram(1); + Free(sOakSpeechResources->unk_0008); + sOakSpeechResources->unk_0008 = NULL; + data[14] = AddWindow(&gUnknown_8462EC0); + PutWindowTilemap(data[14]); + FillWindowPixelBuffer(data[14], 0x00); + CopyWindowToVram(data[14], 3); + sOakSpeechResources->unk_0012 = 0; + gMain.state = 0; + data[15] = 16; + AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &gUnknown_8462EEC, 0, gUnknown_8462EF0[0]); + data[5] = sub_8006300(0, 0xe2, 0x91, 0, 0); + gSprites[data[5]].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[data[5]].oam.priority = 0; + sub_8130FD4(taskId, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 2, 16, 0, 0); + gTasks[taskId].func = sub_812F4A8; + } +} From dfc2fa2b393437a471bf815f2c9a7be0bc061021 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 10 Apr 2019 11:00:39 -0400 Subject: [PATCH 053/318] sub_812F4A8 --- asm/oak_speech.s | 303 ----------------------------------------------- src/oak_speech.c | 101 ++++++++++++++++ 2 files changed, 101 insertions(+), 303 deletions(-) diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 4823a9717..224e5cbc2 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,309 +5,6 @@ .text - thumb_func_start sub_812F4A8 -sub_812F4A8: @ 812F4A8 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r6, r0, 3 - ldr r7, _0812F4D8 @ =gTasks+0x8 - adds r5, r6, r7 - ldr r0, _0812F4DC @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r3, r0, r1 - ldrb r1, [r3] - adds r4, r0, 0 - cmp r1, 0x4 - bls _0812F4CC - b _0812F6C0 -_0812F4CC: - lsls r0, r1, 2 - ldr r1, _0812F4E0 @ =_0812F4E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0812F4D8: .4byte gTasks+0x8 -_0812F4DC: .4byte gMain -_0812F4E0: .4byte _0812F4E4 - .align 2, 0 -_0812F4E4: - .4byte _0812F4F8 - .4byte _0812F538 - .4byte _0812F5B4 - .4byte _0812F644 - .4byte _0812F688 -_0812F4F8: - ldr r0, _0812F534 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0812F506 - b _0812F71C -_0812F506: - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - movs r1, 0x85 - lsls r1, 5 - movs r0, 0x44 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x1F - bl SetGpuReg - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - b _0812F676 - .align 2, 0 -_0812F534: .4byte gPaletteFade -_0812F538: - ldrh r1, [r4, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0812F544 - b _0812F71C -_0812F544: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812F55C - ldr r0, _0812F558 @ =sOakSpeechResources - ldr r1, [r0] - ldrh r0, [r1, 0x12] - adds r0, 0x1 - b _0812F56A - .align 2, 0 -_0812F558: .4byte sOakSpeechResources -_0812F55C: - ldr r0, _0812F58C @ =sOakSpeechResources - ldr r1, [r0] - ldrh r0, [r1, 0x12] - cmp r0, 0 - bne _0812F568 - b _0812F71C -_0812F568: - subs r0, 0x1 -_0812F56A: - strh r0, [r1, 0x12] - movs r0, 0x5 - bl PlaySE - ldr r0, _0812F58C @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x12] - cmp r0, 0x3 - bne _0812F594 - ldr r0, _0812F590 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _0812F71C - .align 2, 0 -_0812F58C: .4byte sOakSpeechResources -_0812F590: .4byte gMain -_0812F594: - ldr r1, _0812F5B0 @ =0x00000241 - movs r0, 0x50 - bl SetGpuReg - ldrh r0, [r5, 0x1E] - movs r1, 0x10 - subs r1, r0 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - b _0812F6A2 - .align 2, 0 -_0812F5B0: .4byte 0x00000241 -_0812F5B4: - ldrh r1, [r5, 0x1E] - subs r1, 0x2 - strh r1, [r5, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0 - ble _0812F5D6 - b _0812F71C -_0812F5D6: - ldrb r0, [r5, 0x1C] - movs r1, 0 - bl FillWindowPixelBuffer - ldrb r0, [r5, 0x1C] - movs r1, 0x1 - str r1, [sp] - movs r2, 0 - str r2, [sp, 0x4] - ldr r1, _0812F620 @ =gUnknown_8462EEC - str r1, [sp, 0x8] - str r2, [sp, 0xC] - ldr r2, _0812F624 @ =gUnknown_8462EF0 - ldr r4, _0812F628 @ =sOakSpeechResources - ldr r1, [r4] - ldrh r1, [r1, 0x12] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - str r1, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x3 - movs r3, 0x5 - bl AddTextPrinterParametrized2 - ldr r0, [r4] - ldrh r0, [r0, 0x12] - cmp r0, 0 - bne _0812F630 - bl sub_810F71C - ldr r0, _0812F62C @ =gUnknown_8415D48 - movs r1, 0 - movs r2, 0x1 - bl sub_810F5E8 - b _0812F6A2 - .align 2, 0 -_0812F620: .4byte gUnknown_8462EEC -_0812F624: .4byte gUnknown_8462EF0 -_0812F628: .4byte sOakSpeechResources -_0812F62C: .4byte gUnknown_8415D48 -_0812F630: - bl sub_810F71C - ldr r0, _0812F640 @ =gUnknown_8415D50 - movs r1, 0 - movs r2, 0x1 - bl sub_810F5E8 - b _0812F6A2 - .align 2, 0 -_0812F640: .4byte gUnknown_8415D50 -_0812F644: - ldrh r1, [r5, 0x1E] - adds r1, 0x2 - strh r1, [r5, 0x1E] - movs r4, 0x10 - subs r0, r4, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0xF - ble _0812F71C - strh r4, [r5, 0x1E] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg -_0812F676: - ldr r0, _0812F684 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _0812F71C - .align 2, 0 -_0812F684: .4byte gMain -_0812F688: - ldr r1, _0812F6B4 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x12] - bl sub_8006398 - ldr r0, _0812F6B8 @ =0x00000145 - bl PlayBGM - movs r0, 0x18 - strh r0, [r5, 0x1E] -_0812F6A2: - ldr r1, _0812F6BC @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0812F71C - .align 2, 0 -_0812F6B4: .4byte gTasks -_0812F6B8: .4byte 0x00000145 -_0812F6BC: .4byte gMain -_0812F6C0: - ldrh r0, [r5, 0x1E] - movs r1, 0x1E - ldrsh r4, [r5, r1] - cmp r4, 0 - beq _0812F6D0 - subs r0, 0x1 - strh r0, [r5, 0x1E] - b _0812F71C -_0812F6D0: - strb r4, [r3] - ldr r0, _0812F724 @ =sOakSpeechResources - ldr r0, [r0] - strh r4, [r0, 0x12] - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl ClearGpuRegBits - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0812F728 @ =sub_812F72C - str r1, [r0] -_0812F71C: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812F724: .4byte sOakSpeechResources -_0812F728: .4byte sub_812F72C - thumb_func_end sub_812F4A8 - thumb_func_start sub_812F72C sub_812F72C: @ 812F72C push {r4-r7,lr} diff --git a/src/oak_speech.c b/src/oak_speech.c index ec30dfe6e..83e82b495 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -43,6 +43,7 @@ void sub_812F180(u8 taskId); void sub_812F274(u8 taskId); void sub_812F33C(u8 taskId); void sub_812F4A8(u8 taskId); +void sub_812F72C(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); extern const u8 gUnknown_8415D2C[]; @@ -844,3 +845,103 @@ void sub_812F33C(u8 taskId) gTasks[taskId].func = sub_812F4A8; } } + +void sub_812F4A8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + switch (gMain.state) + { + case 0: + if (!gPaletteFade.active) + { + SetGpuReg(REG_OFFSET_WIN0H, 0x00F0); + SetGpuReg(REG_OFFSET_WIN0V, 0x10A0); + SetGpuReg(REG_OFFSET_WININ, 0x003F); + SetGpuReg(REG_OFFSET_WINOUT, 0x001F); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + gMain.state = 1; + } + break; + case 1: + if (JOY_NEW((A_BUTTON | B_BUTTON))) + { + if (JOY_NEW(A_BUTTON)) + { + sOakSpeechResources->unk_0012++; + } + else if (sOakSpeechResources->unk_0012 != 0) + { + sOakSpeechResources->unk_0012--; + } + else + { + break; + } + PlaySE(SE_SELECT); + if (sOakSpeechResources->unk_0012 == 3) + { + gMain.state = 4; + } + else + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1); + SetGpuReg(REG_OFFSET_BLDALPHA, (16 - data[15]) | data[15]); + gMain.state++; + } + } + break; + case 2: + data[15] -= 2; + SetGpuReg(REG_OFFSET_BLDALPHA, ((16 - data[15]) << 8) | data[15]); + if (data[15] <= 0) + { + FillWindowPixelBuffer(data[14], 0x00); + AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &gUnknown_8462EEC, 0, gUnknown_8462EF0[sOakSpeechResources->unk_0012]); + if (sOakSpeechResources->unk_0012 == 0) + { + sub_810F71C(); + sub_810F5E8(gUnknown_8415D48, 0, 1); + } + else + { + sub_810F71C(); + sub_810F5E8(gUnknown_8415D50, 0, 1); + } + gMain.state++; + } + break; + case 3: + data[15] += 2; + SetGpuReg(REG_OFFSET_BLDALPHA, ((16 - data[15]) << 8) | data[15]); + if (data[15] >= 16) + { + data[15] = 16; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + gMain.state = 1; + } + break; + case 4: + sub_8006398(gTasks[taskId].data[5]); + PlayBGM(325); + data[15] = 24; + gMain.state++; + break; + default: + if (data[15] != 0) + data[15]--; + else + { + gMain.state = 0; + sOakSpeechResources->unk_0012 = 0; + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_812F72C; + } + break; + } +} From 2f337edf36ded496efd8ec6cc0c35dda10e1bc98 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 10 Apr 2019 12:11:36 -0400 Subject: [PATCH 054/318] through sub_812FD78 --- asm/oak_speech.s | 805 -------------------------------- data/data_845FD54.s | 6 - data/oak_speech/unk_8460CA4.png | Bin 0 -> 110 bytes data/oak_speech/unk_8460CE8.bin | Bin 0 -> 1280 bytes include/menu.h | 1 + include/pokeball.h | 3 +- src/oak_speech.c | 217 ++++++++- 7 files changed, 219 insertions(+), 813 deletions(-) create mode 100644 data/oak_speech/unk_8460CA4.png create mode 100644 data/oak_speech/unk_8460CE8.bin diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 224e5cbc2..29cfd154d 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,811 +5,6 @@ .text - thumb_func_start sub_812F72C -sub_812F72C: @ 812F72C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r7, r0, 3 - ldr r0, _0812F7B4 @ =gTasks+0x8 - mov r8, r0 - adds r4, r7, r0 - ldr r0, _0812F7B8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0812F7A6 - bl sub_810F740 - ldrb r0, [r4, 0x1C] - movs r1, 0 - bl FillWindowPixelBuffer - ldrb r0, [r4, 0x1C] - bl ClearWindowTilemap - ldrb r0, [r4, 0x1C] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4, 0x1C] - bl RemoveWindow - strh r6, [r4, 0x1C] - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - adds r0, r5, 0 - movs r1, 0 - bl sub_8131168 - movs r0, 0x50 - strh r0, [r4, 0x6] - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _0812F7BC @ =sub_812F7C0 - str r1, [r0] -_0812F7A6: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812F7B4: .4byte gTasks+0x8 -_0812F7B8: .4byte gPaletteFade -_0812F7BC: .4byte sub_812F7C0 - thumb_func_end sub_812F72C - - thumb_func_start sub_812F7C0 -sub_812F7C0: @ 812F7C0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r7, r0, 3 - ldr r0, _0812F7EC @ =gTasks+0x8 - mov r8, r0 - adds r5, r7, r0 - movs r0, 0 - str r0, [sp, 0x4] - ldrh r0, [r5, 0x6] - movs r1, 0x6 - ldrsh r6, [r5, r1] - cmp r6, 0 - beq _0812F7F0 - subs r0, 0x1 - strh r0, [r5, 0x6] - b _0812F862 - .align 2, 0 -_0812F7EC: .4byte gTasks+0x8 -_0812F7F0: - ldr r0, _0812F870 @ =gUnknown_8460CA4 - add r1, sp, 0x4 - bl malloc_and_decompress - adds r1, r0, 0 - ldr r0, _0812F874 @ =sOakSpeechResources - ldr r0, [r0] - str r1, [r0] - ldr r2, [sp, 0x4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r3, 0 - bl LoadBgTiles - ldr r1, _0812F878 @ =gUnknown_8460CE8 - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - adds r0, r4, 0 - bl sub_8130F2C - movs r0, 0x3 - movs r1, 0 - bl sub_81311F4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8130FD4 - movs r0, 0x92 - lsls r0, 1 - bl PlayBGM - movs r0, 0x1 - negs r0, r0 - str r6, [sp] - movs r1, 0x5 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x50 - strh r0, [r5, 0x6] - movs r0, 0x2 - bl ShowBg - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _0812F87C @ =sub_812F880 - str r1, [r0] -_0812F862: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812F870: .4byte gUnknown_8460CA4 -_0812F874: .4byte sOakSpeechResources -_0812F878: .4byte gUnknown_8460CE8 -_0812F87C: .4byte sub_812F880 - thumb_func_end sub_812F7C0 - - thumb_func_start sub_812F880 -sub_812F880: @ 812F880 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0812F8B0 @ =gTasks+0x8 - adds r2, r0, r1 - ldr r0, _0812F8B4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812F92E - ldrh r0, [r2, 0x6] - movs r1, 0x6 - ldrsh r4, [r2, r1] - cmp r4, 0 - beq _0812F8B8 - subs r0, 0x1 - strh r0, [r2, 0x6] - b _0812F92E - .align 2, 0 -_0812F8B0: .4byte gTasks+0x8 -_0812F8B4: .4byte gPaletteFade -_0812F8B8: - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0812F8F0 @ =gUnknown_81C5C78 - ldr r5, _0812F8F4 @ =gStringVar4 - cmp r2, r5 - beq _0812F8FC - adds r0, r5, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0812F8F8 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParametrized - b _0812F918 - .align 2, 0 -_0812F8F0: .4byte gUnknown_81C5C78 -_0812F8F4: .4byte gStringVar4 -_0812F8F8: .4byte sOakSpeechResources -_0812F8FC: - ldr r0, _0812F938 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0812F918: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _0812F93C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812F940 @ =sub_812F944 - str r0, [r1] -_0812F92E: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812F938: .4byte sOakSpeechResources -_0812F93C: .4byte gTasks -_0812F940: .4byte sub_812F944 - thumb_func_end sub_812F880 - - thumb_func_start sub_812F944 -sub_812F944: @ 812F944 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _0812F9D6 - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0812F994 @ =gUnknown_81C5D06 - ldr r5, _0812F998 @ =gStringVar4 - cmp r2, r5 - beq _0812F9A0 - adds r0, r5, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0812F99C @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParametrized - b _0812F9BC - .align 2, 0 -_0812F994: .4byte gUnknown_81C5D06 -_0812F998: .4byte gStringVar4 -_0812F99C: .4byte sOakSpeechResources -_0812F9A0: - ldr r0, _0812F9E0 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0812F9BC: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r1, _0812F9E4 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1E - strh r1, [r0, 0xE] - ldr r1, _0812F9E8 @ =sub_812F9EC - str r1, [r0] -_0812F9D6: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812F9E0: .4byte sOakSpeechResources -_0812F9E4: .4byte gTasks -_0812F9E8: .4byte sub_812F9EC - thumb_func_end sub_812F944 - - thumb_func_start sub_812F9EC -sub_812F9EC: @ 812F9EC - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r6, r1, 3 - ldr r7, _0812FA68 @ =gTasks+0x8 - adds r4, r6, r7 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0812FA5E - ldrh r1, [r4, 0x6] - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0812FA1A - subs r0, r1, 0x1 - strh r0, [r4, 0x6] -_0812FA1A: - adds r4, r7, 0 - subs r4, 0x8 - adds r4, r6, r4 - ldrb r0, [r4, 0x10] - ldr r1, _0812FA6C @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - movs r3, 0x3E - adds r3, r2 - mov r12, r3 - ldrb r3, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - mov r3, r12 - strb r1, [r3] - strh r5, [r2, 0x2E] - ldrb r1, [r2, 0x5] - lsrs r1, 4 - str r5, [sp] - str r5, [sp, 0x4] - movs r2, 0x20 - str r2, [sp, 0x8] - ldr r2, _0812FA70 @ =0xffff1fff - str r2, [sp, 0xC] - movs r2, 0x64 - movs r3, 0x42 - bl CreatePokeballSpriteToReleaseMon - ldr r0, _0812FA74 @ =sub_812FA78 - str r0, [r4] - strh r5, [r4, 0xE] -_0812FA5E: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812FA68: .4byte gTasks+0x8 -_0812FA6C: .4byte gSprites -_0812FA70: .4byte 0xffff1fff -_0812FA74: .4byte sub_812FA78 - thumb_func_end sub_812F9EC - - thumb_func_start sub_812FA78 -sub_812FA78: @ 812FA78 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - beq _0812FAA0 - ldr r0, _0812FAFC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0x5F - ble _0812FAA0 - ldr r0, _0812FB00 @ =sub_812FB4C - str r0, [r1] -_0812FAA0: - ldr r1, _0812FAFC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r3, [r2, 0xE] - movs r0, 0xE - ldrsh r1, [r2, r0] - ldr r0, _0812FB04 @ =0x00003fff - cmp r1, r0 - bgt _0812FB40 - adds r0, r3, 0x1 - movs r5, 0 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - bne _0812FB40 - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0812FB08 @ =gUnknown_81C5D12 - ldr r4, _0812FB0C @ =gStringVar4 - cmp r2, r4 - beq _0812FB14 - adds r0, r4, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0812FB10 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r5, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParametrized - b _0812FB30 - .align 2, 0 -_0812FAFC: .4byte gTasks -_0812FB00: .4byte sub_812FB4C -_0812FB04: .4byte 0x00003fff -_0812FB08: .4byte gUnknown_81C5D12 -_0812FB0C: .4byte gStringVar4 -_0812FB10: .4byte sOakSpeechResources -_0812FB14: - ldr r0, _0812FB48 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r5, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0812FB30: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1D - movs r1, 0 - bl PlayCry1 -_0812FB40: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812FB48: .4byte sOakSpeechResources - thumb_func_end sub_812FA78 - - thumb_func_start sub_812FB4C -sub_812FB4C: @ 812FB4C - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _0812FBDA - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0812FB9C @ =gUnknown_81C5D4B - ldr r5, _0812FBA0 @ =gStringVar4 - cmp r2, r5 - beq _0812FBA8 - adds r0, r5, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0812FBA4 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParametrized - b _0812FBC4 - .align 2, 0 -_0812FB9C: .4byte gUnknown_81C5D4B -_0812FBA0: .4byte gStringVar4 -_0812FBA4: .4byte sOakSpeechResources -_0812FBA8: - ldr r0, _0812FBE4 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0812FBC4: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _0812FBE8 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812FBEC @ =sub_812FBF0 - str r0, [r1] -_0812FBDA: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812FBE4: .4byte sOakSpeechResources -_0812FBE8: .4byte gTasks -_0812FBEC: .4byte sub_812FBF0 - thumb_func_end sub_812FB4C - - thumb_func_start sub_812FBF0 -sub_812FBF0: @ 812FBF0 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0812FC4E - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - ldr r0, _0812FC58 @ =gTasks - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r0 - ldrb r0, [r4, 0x10] - ldr r2, _0812FC5C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - str r5, [sp] - str r5, [sp, 0x4] - movs r2, 0x20 - str r2, [sp, 0x8] - ldr r2, _0812FC60 @ =0xffff1f3f - str r2, [sp, 0xC] - movs r2, 0x64 - movs r3, 0x42 - bl sub_804BB98 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x14] - movs r0, 0x30 - strh r0, [r4, 0xE] - movs r0, 0x40 - strh r0, [r4, 0x8] - ldr r0, _0812FC64 @ =sub_812FC68 - str r0, [r4] -_0812FC4E: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812FC58: .4byte gTasks -_0812FC5C: .4byte gSprites -_0812FC60: .4byte 0xffff1f3f -_0812FC64: .4byte sub_812FC68 - thumb_func_end sub_812FBF0 - - thumb_func_start sub_812FC68 -sub_812FC68: @ 812FC68 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0812FCA4 @ =gTasks+0x8 - adds r5, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0812FCAC - cmp r0, 0x17 - bgt _0812FC9A - ldr r2, _0812FCA8 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x1 - strh r1, [r0, 0x22] -_0812FC9A: - ldrh r0, [r5] - subs r0, 0x1 - strh r0, [r5] - b _0812FD62 - .align 2, 0 -_0812FCA4: .4byte gTasks+0x8 -_0812FCA8: .4byte gSprites -_0812FCAC: - movs r1, 0x6 - ldrsh r0, [r5, r1] - cmp r0, 0x30 - bne _0812FCD6 - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0812FCE8 @ =gSprites - adds r0, r4 - bl DestroySprite - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite -_0812FCD6: - ldrh r0, [r5, 0x6] - movs r1, 0x6 - ldrsh r4, [r5, r1] - cmp r4, 0 - beq _0812FCEC - subs r0, 0x1 - strh r0, [r5, 0x6] - b _0812FD62 - .align 2, 0 -_0812FCE8: .4byte gSprites -_0812FCEC: - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0812FD24 @ =gUnknown_81C5DBD - ldr r5, _0812FD28 @ =gStringVar4 - cmp r2, r5 - beq _0812FD30 - adds r0, r5, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0812FD2C @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParametrized - b _0812FD4C - .align 2, 0 -_0812FD24: .4byte gUnknown_81C5DBD -_0812FD28: .4byte gStringVar4 -_0812FD2C: .4byte sOakSpeechResources -_0812FD30: - ldr r0, _0812FD6C @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0812FD4C: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _0812FD70 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812FD74 @ =sub_812FD78 - str r0, [r1] -_0812FD62: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812FD6C: .4byte sOakSpeechResources -_0812FD70: .4byte gTasks -_0812FD74: .4byte sub_812FD78 - thumb_func_end sub_812FC68 - - thumb_func_start sub_812FD78 -sub_812FD78: @ 812FD78 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r5, r0, 3 - ldr r7, _0812FDB8 @ =gTasks+0x8 - adds r6, r5, r7 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0812FDB2 - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_813144C - movs r0, 0x30 - strh r0, [r6, 0x6] - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, _0812FDBC @ =sub_812FDC0 - str r1, [r0] -_0812FDB2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812FDB8: .4byte gTasks+0x8 -_0812FDBC: .4byte sub_812FDC0 - thumb_func_end sub_812FD78 - thumb_func_start sub_812FDC0 sub_812FDC0: @ 812FDC0 push {r4-r6,lr} diff --git a/data/data_845FD54.s b/data/data_845FD54.s index c14671533..a5755b8db 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -5,12 +5,6 @@ .align 2 // oak_speech -gUnknown_8460CA4:: @ 8460CA4 - .incbin "baserom.gba", 0x460CA4, 0x44 - -gUnknown_8460CE8:: @ 8460CE8 - .incbin "baserom.gba", 0x460CE8, 0xAC - gUnknown_8460D94:: @ 8460D94 .incbin "baserom.gba", 0x460D94, 0xA0 diff --git a/data/oak_speech/unk_8460CA4.png b/data/oak_speech/unk_8460CA4.png new file mode 100644 index 0000000000000000000000000000000000000000..30066cdd88f1971ed646134b88c014843af5778d GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<60wfs39Z%E%DN|1u#}J9B$v^m6c|?rvF&>On zP&mTCSkrUY!9bYfgW)-bgIWp)j%&0t)%5TIr4)|IC`m9(+QT006A^4S@gv literal 0 HcmV?d00001 diff --git a/include/menu.h b/include/menu.h index b134ef7f5..cdc872a6d 100644 --- a/include/menu.h +++ b/include/menu.h @@ -42,5 +42,6 @@ void sub_810F558(u8, u8, u8, u8, u16); void sub_810F650(const u8 *, const u8 *, u8, u32, u8); void sub_810F5E8(const u8 *, u32, u8); void sub_810F71C(void); +void sub_810F740(void); #endif // GUARD_MENU_H diff --git a/include/pokeball.h b/include/pokeball.h index 10a9529b9..5545f8870 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -24,7 +24,8 @@ enum #define POKEBALL_OPPONENT_SENDOUT 0xFE u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); -void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species); +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); +u8 sub_804BB98(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); void sub_8076918(u8 bank); void DoHitAnimHealthboxEffect(u8 bank); diff --git a/src/oak_speech.c b/src/oak_speech.c index 83e82b495..93275bc08 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -16,12 +16,15 @@ #include "sound.h" #include "event_scripts.h" #include "scanline_effect.h" +#include "string_util.h" +#include "pokeball.h" #include "constants/species.h" #include "constants/songs.h" struct OakSpeechResources { - u8 filler_0000[0x8]; + void * unk_0000; + u8 filler_0004[0x4]; void * unk_0008; u8 filler_000C[6]; u16 unk_0012; @@ -44,11 +47,31 @@ void sub_812F274(u8 taskId); void sub_812F33C(u8 taskId); void sub_812F4A8(u8 taskId); void sub_812F72C(u8 taskId); +void sub_812F7C0(u8 taskId); +void sub_812F880(u8 taskId); +void sub_812F880(u8 taskId); +void sub_812F944(u8 taskId); +void sub_812F9EC(u8 taskId); +void sub_812FA78(u8 taskId); +void sub_812FB4C(u8 taskId); +void sub_812FBF0(u8 taskId); +void sub_812FC68(u8 taskId); +void sub_812FD78(u8 taskId); +void sub_812FDC0(u8 taskId); +void sub_8130F2C(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); +void sub_8131168(u8 taskId, u8 state); +void sub_81311F4(u8 taskId, u8 state); +void sub_813144C(u8 taskId, u8 state); extern const u8 gUnknown_8415D2C[]; extern const u8 gUnknown_8415D48[]; extern const u8 gUnknown_8415D50[]; +extern const u8 gUnknown_81C5C78[]; +extern const u8 gUnknown_81C5D06[]; +extern const u8 gUnknown_81C5D12[]; +extern const u8 gUnknown_81C5D4B[]; +extern const u8 gUnknown_81C5DBD[]; const u8 gUnknown_845FD54[][5] = { [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, @@ -469,6 +492,8 @@ const u8 gUnknown_845FD54[][5] = { ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); +const u32 gUnknown_8460CA4[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz"); +const u32 gUnknown_8460CE8[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz"); extern const u16 gUnknown_8460D94[]; extern const u16 gUnknown_8460E34[]; @@ -945,3 +970,193 @@ void sub_812F4A8(u8 taskId) break; } } + +void sub_812F72C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + sub_810F740(); + FillWindowPixelBuffer(data[14], 0x00); + ClearWindowTilemap(data[14]); + CopyWindowToVram(data[14], 3); + RemoveWindow(data[14]); + data[14] = 0; + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + sub_8131168(taskId, 0); + data[3] = 80; + gTasks[taskId].func = sub_812F7C0; + } +} + +void sub_812F7C0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u32 size = 0; + + if (data[3] != 0) + data[3]--; + else + { + sOakSpeechResources->unk_0000 = malloc_and_decompress(gUnknown_8460CA4, &size); + LoadBgTiles(1, sOakSpeechResources->unk_0000, size, 0); + CopyToBgTilemapBuffer(1, gUnknown_8460CE8, 0, 0); + CopyBgTilemapBufferToVram(1); + sub_8130F2C(taskId); + sub_81311F4(3, 0); + sub_8130FD4(taskId, 1); + PlayBGM(292); + BeginNormalPaletteFade(0xFFFFFFFF, 5, 16, 0, RGB_BLACK); + data[3] = 80; + ShowBg(2); + gTasks[taskId].func = sub_812F880; + } +} + +#define OaksSpeechPrintMessage(str) ({ \ + sub_80F6EE4(0, FALSE);\ + if (str != gStringVar4) \ + { \ + StringExpandPlaceholders(gStringVar4, str); \ + AddTextPrinterParametrized(0, 4, gStringVar4, sOakSpeechResources->unk_001F, NULL, 2, 1, 3); \ + } \ + else \ + { \ + AddTextPrinterParametrized(0, 4, str, sOakSpeechResources->unk_001F, NULL, 2, 1, 3); \ + } \ + CopyWindowToVram(0, 3); \ +}) + +void sub_812F880(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + if (data[3] != 0) + data[3]--; + else + { + OaksSpeechPrintMessage(gUnknown_81C5C78); + gTasks[taskId].func = sub_812F944; + } + } +} + +void sub_812F944(u8 taskId) +{ + if (!IsTextPrinterActive(0)) + { + OaksSpeechPrintMessage(gUnknown_81C5D06); + gTasks[taskId].data[3] = 30; + gTasks[taskId].func = sub_812F9EC; + } +} + +void sub_812F9EC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 spriteId; + + if (!IsTextPrinterActive(0)) + { + if (data[3] != 0) + data[3]--; + // else { + spriteId = gTasks[taskId].data[4]; + gSprites[spriteId].invisible = FALSE; + gSprites[spriteId].data[0] = 0; + CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1FFF); + gTasks[taskId].func = sub_812FA78; + gTasks[taskId].data[3] = 0; + // } + } +} + +void sub_812FA78(u8 taskId) +{ + if (IsCryFinished()) + { + if (gTasks[taskId].data[3] >= 96) + gTasks[taskId].func = sub_812FB4C; + } + if (gTasks[taskId].data[3] < 0x4000) + { + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 32) + { + OaksSpeechPrintMessage(gUnknown_81C5D12); + PlayCry1(SPECIES_NIDORAN_F, 0); + } + } +} + +void sub_812FB4C(u8 taskId) +{ + if (!IsTextPrinterActive(0)) + { + OaksSpeechPrintMessage(gUnknown_81C5D4B); + gTasks[taskId].func = sub_812FBF0; + } +} + +void sub_812FBF0(u8 taskId) +{ + u8 spriteId; + + if (!IsTextPrinterActive(0)) + { + sub_80F6F54(0, 1); + spriteId = gTasks[taskId].data[4]; + gTasks[taskId].data[6] = sub_804BB98(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1F3F); + gTasks[taskId].data[3] = 48; + gTasks[taskId].data[0] = 64; + gTasks[taskId].func = sub_812FC68; + } +} + +void sub_812FC68(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[0] != 0) + { + if (data[0] < 24) + { + gSprites[data[4]].pos1.y--; + } + data[0]--; + } + else + { + if (data[3] == 48) + { + DestroySprite(&gSprites[data[4]]); + DestroySprite(&gSprites[data[6]]); + } + if (data[3] != 0) + { + data[3]--; + } + else + { + OaksSpeechPrintMessage(gUnknown_81C5DBD); + gTasks[taskId].func = sub_812FD78; + } + } +} + +void sub_812FD78(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!IsTextPrinterActive(0)) + { + sub_80F6F54(0, 1); + sub_813144C(taskId, 2); + data[3] = 48; + gTasks[taskId].func = sub_812FDC0; + } +} From 6982393439b300deef09bef2e29f8f6c1180eee9 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 10 Apr 2019 16:43:44 -0400 Subject: [PATCH 055/318] through sub_8130324 nonmatching --- asm/oak_speech.s | 737 ------------------------------------- data/data_845FD54.s | 4 +- include/event_scripts.h | 8 + include/menu.h | 1 + include/new_menu_helpers.h | 1 + src/oak_speech.c | 289 ++++++++++++++- 6 files changed, 284 insertions(+), 756 deletions(-) diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 29cfd154d..928ac6c6c 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,743 +5,6 @@ .text - thumb_func_start sub_812FDC0 -sub_812FDC0: @ 812FDC0 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0812FDEC @ =gTasks+0x8 - adds r1, r0, r1 - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0812FE72 - ldrh r0, [r1, 0x6] - movs r2, 0x6 - ldrsh r4, [r1, r2] - cmp r4, 0 - beq _0812FDF0 - subs r0, 0x1 - strh r0, [r1, 0x6] - b _0812FE72 - .align 2, 0 -_0812FDEC: .4byte gTasks+0x8 -_0812FDF0: - movs r2, 0x3C - negs r2, r2 - adds r0, r2, 0 - strh r0, [r1, 0x2] - bl sub_8131310 - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0812FE34 @ =gUnknown_81C59D5 - ldr r5, _0812FE38 @ =gStringVar4 - cmp r2, r5 - beq _0812FE40 - adds r0, r5, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0812FE3C @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParametrized - b _0812FE5C - .align 2, 0 -_0812FE34: .4byte gUnknown_81C59D5 -_0812FE38: .4byte gStringVar4 -_0812FE3C: .4byte sOakSpeechResources -_0812FE40: - ldr r0, _0812FE7C @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0812FE5C: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _0812FE80 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812FE84 @ =sub_812FE88 - str r0, [r1] -_0812FE72: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812FE7C: .4byte sOakSpeechResources -_0812FE80: .4byte gTasks -_0812FE84: .4byte sub_812FE88 - thumb_func_end sub_812FDC0 - - thumb_func_start sub_812FE88 -sub_812FE88: @ 812FE88 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0 - bne _0812FF7E - ldr r0, _0812FF8C @ =gUnknown_8462EC8 - bl AddWindow - ldr r1, _0812FF90 @ =gTasks - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r5, r1 - strh r0, [r5, 0x22] - lsls r0, 24 - lsrs r0, 24 - bl PutWindowTilemap - ldrh r4, [r5, 0x22] - lsls r4, 24 - lsrs r4, 24 - bl sub_80F796C - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r4, 0 - movs r1, 0x1 - movs r3, 0xE - bl SetWindowBorderStyle - ldrh r0, [r5, 0x22] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r4, _0812FF94 @ =sOakSpeechResources - ldr r0, [r4] - movs r1, 0x1 - mov r9, r1 - mov r1, r9 - strb r1, [r0, 0x1C] - ldr r0, [r4] - movs r6, 0x2 - strb r6, [r0, 0x1D] - ldr r0, [r4] - movs r1, 0x3 - mov r8, r1 - mov r1, r8 - strb r1, [r0, 0x1E] - ldrh r0, [r5, 0x22] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x1C - str r1, [sp] - str r7, [sp, 0x4] - ldr r1, _0812FF98 @ =gUnknown_8415D93 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0x8 - movs r3, 0x1 - bl box_print - ldr r0, [r4] - mov r1, r9 - strb r1, [r0, 0x1C] - ldr r0, [r4] - strb r6, [r0, 0x1D] - ldr r0, [r4] - mov r1, r8 - strb r1, [r0, 0x1E] - ldrh r0, [r5, 0x22] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x1C - str r1, [sp] - str r7, [sp, 0x4] - ldr r1, _0812FF9C @ =gUnknown_8415D97 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0x8 - movs r3, 0x11 - bl box_print - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x22] - lsls r1, 24 - lsrs r1, 24 - str r0, [sp] - str r6, [sp, 0x4] - str r7, [sp, 0x8] - adds r0, r1, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x1 - bl sub_810F7D8 - ldrh r0, [r5, 0x22] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _0812FFA0 @ =sub_812FFA4 - str r0, [r5] -_0812FF7E: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812FF8C: .4byte gUnknown_8462EC8 -_0812FF90: .4byte gTasks -_0812FF94: .4byte sOakSpeechResources -_0812FF98: .4byte gUnknown_8415D93 -_0812FF9C: .4byte gUnknown_8415D97 -_0812FFA0: .4byte sub_812FFA4 - thumb_func_end sub_812FE88 - - thumb_func_start sub_812FFA4 -sub_812FFA4: @ 812FFA4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrapAround - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0812FFC8 - cmp r1, 0 - bgt _0812FFC4 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - blt _0812FFCE - b _0812FFDC -_0812FFC4: - cmp r1, 0x1 - bne _0812FFCE -_0812FFC8: - ldr r0, _0812FFE4 @ =gSaveBlock2Ptr - ldr r0, [r0] - strb r1, [r0, 0x8] -_0812FFCE: - ldr r0, _0812FFE8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812FFEC @ =sub_812FFF0 - str r0, [r1] -_0812FFDC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812FFE4: .4byte gSaveBlock2Ptr -_0812FFE8: .4byte gTasks -_0812FFEC: .4byte sub_812FFF0 - thumb_func_end sub_812FFA4 - - thumb_func_start sub_812FFF0 -sub_812FFF0: @ 812FFF0 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - lsls r5, r0, 2 - adds r5, r0 - lsls r5, 3 - ldr r6, _08130048 @ =gTasks+0x8 - adds r4, r5, r6 - ldrb r0, [r4, 0x1A] - movs r1, 0x1 - bl sub_810F4D8 - ldrb r0, [r4, 0x1A] - bl RemoveWindow - movs r0, 0 - strh r0, [r4, 0x1A] - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - subs r6, 0x8 - adds r5, r6 - ldr r0, _0813004C @ =sub_8130050 - str r0, [r5] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130048: .4byte gTasks+0x8 -_0813004C: .4byte sub_8130050 - thumb_func_end sub_812FFF0 - - thumb_func_start sub_8130050 -sub_8130050: @ 8130050 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813006C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08130070 - movs r0, 0 - movs r1, 0 - bl sub_81311F4 - b _08130078 - .align 2, 0 -_0813006C: .4byte gSaveBlock2Ptr -_08130070: - movs r0, 0x1 - movs r1, 0 - bl sub_81311F4 -_08130078: - adds r0, r4, 0 - movs r1, 0x2 - bl sub_81315CC - ldr r1, _08130098 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x20 - strh r1, [r0, 0xE] - ldr r1, _0813009C @ =sub_81300A0 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130098: .4byte gTasks -_0813009C: .4byte sub_81300A0 - thumb_func_end sub_8130050 - - thumb_func_start sub_81300A0 -sub_81300A0: @ 81300A0 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _081300CC @ =gTasks+0x8 - adds r1, r0, r1 - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0813014A - ldrh r0, [r1, 0x6] - movs r2, 0x6 - ldrsh r4, [r1, r2] - cmp r4, 0 - beq _081300D0 - subs r0, 0x1 - strh r0, [r1, 0x6] - b _0813014A - .align 2, 0 -_081300CC: .4byte gTasks+0x8 -_081300D0: - strh r4, [r1, 0x2] - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0813010C @ =gUnknown_81C5DEA - ldr r5, _08130110 @ =gStringVar4 - cmp r2, r5 - beq _08130118 - adds r0, r5, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _08130114 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParametrized - b _08130134 - .align 2, 0 -_0813010C: .4byte gUnknown_81C5DEA -_08130110: .4byte gStringVar4 -_08130114: .4byte sOakSpeechResources -_08130118: - ldr r0, _08130154 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_08130134: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _08130158 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813015C @ =sub_8130160 - str r0, [r1] -_0813014A: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130154: .4byte sOakSpeechResources -_08130158: .4byte gTasks -_0813015C: .4byte sub_8130160 - thumb_func_end sub_81300A0 - - thumb_func_start sub_8130160 -sub_8130160: @ 8130160 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _0813019A - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _081301A4 @ =sOakSpeechResources - ldr r0, [r0] - strh r4, [r0, 0x10] - ldr r1, _081301A8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _081301AC @ =sub_81303B4 - str r1, [r0] -_0813019A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081301A4: .4byte sOakSpeechResources -_081301A8: .4byte gTasks -_081301AC: .4byte sub_81303B4 - thumb_func_end sub_8130160 - - thumb_func_start sub_81301B0 -sub_81301B0: @ 81301B0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r7, _081301F8 @ =gTasks+0x8 - adds r4, r6, r7 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _08130218 - ldrh r2, [r4, 0x2] - movs r1, 0x2 - ldrsh r0, [r4, r1] - movs r1, 0x3C - negs r1, r1 - cmp r0, r1 - ble _08130200 - subs r0, r2, 0x2 - strh r0, [r4, 0x2] - ldr r1, _081301FC @ =gSpriteCoordOffsetX - ldrh r0, [r1] - adds r0, 0x2 - strh r0, [r1] - movs r1, 0x80 - lsls r1, 2 - movs r0, 0x2 - movs r2, 0x2 - bl ChangeBgX - b _08130218 - .align 2, 0 -_081301F8: .4byte gTasks+0x8 -_081301FC: .4byte gSpriteCoordOffsetX -_08130200: - strh r1, [r4, 0x2] - ldr r0, _08130220 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r1, [r0, 0x10] - adds r0, r5, 0 - bl sub_8131660 - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _08130224 @ =sub_8130324 - str r1, [r0] -_08130218: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130220: .4byte sOakSpeechResources -_08130224: .4byte sub_8130324 - thumb_func_end sub_81301B0 - - thumb_func_start sub_8130228 -sub_8130228: @ 8130228 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _08130278 @ =sOakSpeechResources - ldr r0, [r4] - ldrb r1, [r0, 0x10] - adds r0, r6, 0 - bl sub_8131660 - ldr r0, [r4] - ldrh r4, [r0, 0x10] - cmp r4, 0 - bne _081302A6 - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _0813027C @ =gUnknown_81C5DEA - ldr r5, _08130280 @ =gStringVar4 - cmp r2, r5 - beq _08130284 - adds r0, r5, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r5, 0 - movs r3, 0 - bl AddTextPrinterParametrized - b _0813029C - .align 2, 0 -_08130278: .4byte sOakSpeechResources -_0813027C: .4byte gUnknown_81C5DEA -_08130280: .4byte gStringVar4 -_08130284: - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - movs r3, 0 - bl AddTextPrinterParametrized -_0813029C: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - b _08130306 -_081302A6: - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _081302DC @ =gUnknown_81C5E91 - ldr r4, _081302E0 @ =gStringVar4 - cmp r2, r4 - beq _081302E4 - adds r0, r4, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParametrized - b _081302FE - .align 2, 0 -_081302DC: .4byte gUnknown_81C5E91 -_081302E0: .4byte gStringVar4 -_081302E4: - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - movs r3, 0 - bl AddTextPrinterParametrized -_081302FE: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram -_08130306: - ldr r0, _0813031C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _08130320 @ =sub_8130324 - str r0, [r1] - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813031C: .4byte gTasks -_08130320: .4byte sub_8130324 - thumb_func_end sub_8130228 - - thumb_func_start sub_8130324 -sub_8130324: @ 8130324 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r6, r1, 3 - ldr r7, _0813037C @ =gTasks+0x8 - adds r5, r6, r7 - bl ProcessMenuInput - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - beq _08130388 - cmp r4, 0 - ble _081303A8 - cmp r4, 0x4 - bgt _081303A8 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r5, 0x1A] - movs r1, 0x1 - bl sub_810F4D8 - ldrb r0, [r5, 0x1A] - bl RemoveWindow - ldr r0, _08130380 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r0, [r0, 0x10] - subs r1, r4, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl sub_8131754 - movs r0, 0x1 - strh r0, [r5, 0x1E] - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _08130384 @ =sub_8130464 - b _081303A6 - .align 2, 0 -_0813037C: .4byte gTasks+0x8 -_08130380: .4byte sOakSpeechResources -_08130384: .4byte sub_8130464 -_08130388: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _081303B0 @ =sub_81303B4 -_081303A6: - str r1, [r0] -_081303A8: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081303B0: .4byte sub_81303B4 - thumb_func_end sub_8130324 - thumb_func_start sub_81303B4 sub_81303B4: @ 81303B4 push {r4-r6,lr} diff --git a/data/data_845FD54.s b/data/data_845FD54.s index a5755b8db..67c69c261 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -77,10 +77,10 @@ gUnknown_8462EC0:: @ 8462EC0 window_template 0x00, 0x01, 0x04, 0x1c, 0x0f, 0x0f, 0x0001 gUnknown_8462EC8:: @ 8462EC8 - .incbin "baserom.gba", 0x462EC8, 0x8 + window_template 0x00, 0x12, 0x09, 0x09, 0x04, 0x0f, 0x0174 gUnknown_8462ED0:: @ 8462ED0 - .incbin "baserom.gba", 0x462ED0, 0x8 + window_template 0x00, 0x02, 0x02, 0x06, 0x04, 0x0f, 0x0180 gUnknown_8462ED8:: @ 8462ED8 .incbin "baserom.gba", 0x462ED8, 0x10 diff --git a/include/event_scripts.h b/include/event_scripts.h index 6c26ef892..9b31a084f 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -706,5 +706,13 @@ extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni4[]; extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni5[]; extern const u8 gUnknown_81C582D[]; +extern const u8 gUnknown_81C59D5[]; +extern const u8 gUnknown_81C5C78[]; +extern const u8 gUnknown_81C5D06[]; +extern const u8 gUnknown_81C5D12[]; +extern const u8 gUnknown_81C5D4B[]; +extern const u8 gUnknown_81C5DBD[]; +extern const u8 gUnknown_81C5DEA[]; +extern const u8 gUnknown_81C5E91[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/menu.h b/include/menu.h index cdc872a6d..41119db4f 100644 --- a/include/menu.h +++ b/include/menu.h @@ -43,5 +43,6 @@ void sub_810F650(const u8 *, const u8 *, u8, u32, u8); void sub_810F5E8(const u8 *, u32, u8); void sub_810F71C(void); void sub_810F740(void); +void sub_810F7D8(u8, u8, u8, u8, u8, u8, u8); #endif // GUARD_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 8903f5d56..0157896cb 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -28,5 +28,6 @@ void sub_80F6C6C(void); void sub_80F6C98(void); void sub_80F77CC(u16); void * malloc_and_decompress(const void * src, u32 * size); +u16 sub_80F796C(void); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/src/oak_speech.c b/src/oak_speech.c index 93275bc08..19c603c99 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -26,10 +26,11 @@ struct OakSpeechResources void * unk_0000; u8 filler_0004[0x4]; void * unk_0008; - u8 filler_000C[6]; + u8 filler_000C[4]; + u16 unk_0010; u16 unk_0012; - u16 unk_0014[3]; - u8 filler_001A[5]; + u16 unk_0014[4]; + u8 unk_001C[3]; u8 unk_001F; u8 filler_0020[0x1800]; u8 bg2TilemapBuffer[0x400]; @@ -58,20 +59,30 @@ void sub_812FBF0(u8 taskId); void sub_812FC68(u8 taskId); void sub_812FD78(u8 taskId); void sub_812FDC0(u8 taskId); +void sub_812FE88(u8 taskId); +void sub_812FFA4(u8 taskId); +void sub_812FFF0(u8 taskId); +void sub_8130050(u8 taskId); +void sub_81300A0(u8 taskId); +void sub_8130160(u8 taskId); +void sub_8130324(u8 taskId); +void sub_81303B4(u8 taskId); +void sub_8130464(u8 taskId); void sub_8130F2C(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); void sub_8131168(u8 taskId, u8 state); -void sub_81311F4(u8 taskId, u8 state); +void sub_81311F4(u8 arg0, u8 state); +void sub_8131310(void); void sub_813144C(u8 taskId, u8 state); +void sub_81315CC(u8 taskId, u8 state); +void sub_8131660(u8 taskId, u8 state); +void sub_8131754(u8 arg0, u8 namePick); extern const u8 gUnknown_8415D2C[]; extern const u8 gUnknown_8415D48[]; extern const u8 gUnknown_8415D50[]; -extern const u8 gUnknown_81C5C78[]; -extern const u8 gUnknown_81C5D06[]; -extern const u8 gUnknown_81C5D12[]; -extern const u8 gUnknown_81C5D4B[]; -extern const u8 gUnknown_81C5DBD[]; +extern const u8 gUnknown_8415D93[]; +extern const u8 gUnknown_8415D97[]; const u8 gUnknown_845FD54[][5] = { [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, @@ -501,6 +512,7 @@ extern const u16 gUnknown_8460E34[]; extern const struct BgTemplate gUnknown_8462E58[3]; extern const struct WindowTemplate *const gUnknown_8462EB4[3]; extern const struct WindowTemplate gUnknown_8462EC0; +extern const struct WindowTemplate gUnknown_8462EC8; extern const struct TextColor gUnknown_8462EE8; extern const struct TextColor gUnknown_8462EEC; extern const u8 *const gUnknown_8462EF0[]; @@ -1015,16 +1027,16 @@ void sub_812F7C0(u8 taskId) } } -#define OaksSpeechPrintMessage(str) ({ \ +#define OaksSpeechPrintMessage(str, speed) ({ \ sub_80F6EE4(0, FALSE);\ if (str != gStringVar4) \ { \ StringExpandPlaceholders(gStringVar4, str); \ - AddTextPrinterParametrized(0, 4, gStringVar4, sOakSpeechResources->unk_001F, NULL, 2, 1, 3); \ + AddTextPrinterParametrized(0, 4, gStringVar4, speed, NULL, 2, 1, 3); \ } \ else \ { \ - AddTextPrinterParametrized(0, 4, str, sOakSpeechResources->unk_001F, NULL, 2, 1, 3); \ + AddTextPrinterParametrized(0, 4, str, speed, NULL, 2, 1, 3); \ } \ CopyWindowToVram(0, 3); \ }) @@ -1039,7 +1051,7 @@ void sub_812F880(u8 taskId) data[3]--; else { - OaksSpeechPrintMessage(gUnknown_81C5C78); + OaksSpeechPrintMessage(gUnknown_81C5C78, sOakSpeechResources->unk_001F); gTasks[taskId].func = sub_812F944; } } @@ -1049,7 +1061,7 @@ void sub_812F944(u8 taskId) { if (!IsTextPrinterActive(0)) { - OaksSpeechPrintMessage(gUnknown_81C5D06); + OaksSpeechPrintMessage(gUnknown_81C5D06, sOakSpeechResources->unk_001F); gTasks[taskId].data[3] = 30; gTasks[taskId].func = sub_812F9EC; } @@ -1087,7 +1099,7 @@ void sub_812FA78(u8 taskId) gTasks[taskId].data[3]++; if (gTasks[taskId].data[3] == 32) { - OaksSpeechPrintMessage(gUnknown_81C5D12); + OaksSpeechPrintMessage(gUnknown_81C5D12, sOakSpeechResources->unk_001F); PlayCry1(SPECIES_NIDORAN_F, 0); } } @@ -1097,7 +1109,7 @@ void sub_812FB4C(u8 taskId) { if (!IsTextPrinterActive(0)) { - OaksSpeechPrintMessage(gUnknown_81C5D4B); + OaksSpeechPrintMessage(gUnknown_81C5D4B, sOakSpeechResources->unk_001F); gTasks[taskId].func = sub_812FBF0; } } @@ -1142,7 +1154,7 @@ void sub_812FC68(u8 taskId) } else { - OaksSpeechPrintMessage(gUnknown_81C5DBD); + OaksSpeechPrintMessage(gUnknown_81C5DBD, sOakSpeechResources->unk_001F); gTasks[taskId].func = sub_812FD78; } } @@ -1160,3 +1172,246 @@ void sub_812FD78(u8 taskId) gTasks[taskId].func = sub_812FDC0; } } + +void sub_812FDC0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + if (data[3] != 0) + data[3]--; + else + { + data[1] = -60; + sub_8131310(); + OaksSpeechPrintMessage(gUnknown_81C59D5, sOakSpeechResources->unk_001F); + gTasks[taskId].func = sub_812FE88; + } + } +} + +void sub_812FE88(u8 taskId) +{ + if (!IsTextPrinterActive(0)) + { + gTasks[taskId].data[13] = AddWindow(&gUnknown_8462EC8); + PutWindowTilemap(gTasks[taskId].data[13]); + SetWindowBorderStyle(gTasks[taskId].data[13], 1, sub_80F796C(), 14); + FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11); + sOakSpeechResources->unk_001C[0] = 1; + sOakSpeechResources->unk_001C[1] = 2; + sOakSpeechResources->unk_001C[2] = 3; + box_print(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->unk_001C, 0, gUnknown_8415D93); + sOakSpeechResources->unk_001C[0] = 1; + sOakSpeechResources->unk_001C[1] = 2; + sOakSpeechResources->unk_001C[2] = 3; + box_print(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->unk_001C, 0, gUnknown_8415D97); + sub_810F7D8(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0); + CopyWindowToVram(gTasks[taskId].data[13], 3); + gTasks[taskId].func = sub_812FFA4; + } +} + +void sub_812FFA4(u8 taskId) +{ + s8 input = ProcessMenuInputNoWrapAround(); + switch (input) + { + case 0: + gSaveBlock2Ptr->playerGender = MALE; + break; + case 1: + gSaveBlock2Ptr->playerGender = FEMALE; + break; + case -1: + case -2: + return; + } + gTasks[taskId].func = sub_812FFF0; + +} + +void sub_812FFF0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_810F4D8(data[13], 1); + RemoveWindow(data[13]); + data[13] = 0; + sub_80F6F54(0, 1); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + gTasks[taskId].func = sub_8130050; +} + +void sub_8130050(u8 taskId) +{ + if (gSaveBlock2Ptr->playerGender == MALE) + sub_81311F4(MALE, 0); + else + sub_81311F4(FEMALE, 0); + sub_81315CC(taskId, 2); + gTasks[taskId].data[3] = 32; + gTasks[taskId].func = sub_81300A0; +} + +void sub_81300A0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + if (data[3] != 0) + data[3]--; + else + { + data[1] = 0; + OaksSpeechPrintMessage(gUnknown_81C5DEA, sOakSpeechResources->unk_001F); + gTasks[taskId].func = sub_8130160; + } + } +} + +void sub_8130160(u8 taskId) +{ + if (!IsTextPrinterActive(0)) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sOakSpeechResources->unk_0010 = 0; + gTasks[taskId].func = sub_81303B4; + } +} +void sub_81301B0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!IsTextPrinterActive(0)) + { + if (data[1] > -60) + { + data[1] -= 2; + gSpriteCoordOffsetX += 2; + ChangeBgX(2, 0x200, 2); + } + else + { + data[1] = -60; + sub_8131660(taskId, sOakSpeechResources->unk_0010); + gTasks[taskId].func = sub_8130324; + } + } +} + +void sub_8130228(u8 taskId) +{ + sub_8131660(taskId, sOakSpeechResources->unk_0010); + if (sOakSpeechResources->unk_0010 == 0) + { + OaksSpeechPrintMessage(gUnknown_81C5DEA, 0); + } + else + { + OaksSpeechPrintMessage(gUnknown_81C5E91, 0); + } + gTasks[taskId].func = sub_8130324; +} + +#ifdef NONMATCHING +// switch case uses blt, should use ble +void sub_8130324(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s8 input = ProcessMenuInput(); + + switch (input) + { + case 1: + case 2: + case 3: + case 4: + PlaySE(SE_SELECT); + sub_810F4D8(data[13], TRUE); + RemoveWindow(data[13]); + sub_8131754(sOakSpeechResources->unk_0010, input - 1); + data[15] = 1; + gTasks[taskId].func = sub_8130464; + break; + case 0: + PlaySE(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_81303B4; + break; + } +} +#else +NAKED +void sub_8130324(u8 taskId) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x4\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r1, r0, 2\n" + "\tadds r1, r0\n" + "\tlsls r6, r1, 3\n" + "\tldr r7, _0813037C @ =gTasks+0x8\n" + "\tadds r5, r6, r7\n" + "\tbl ProcessMenuInput\n" + "\tlsls r0, 24\n" + "\tasrs r4, r0, 24\n" + "\tcmp r4, 0\n" + "\tbeq _08130388\n" + "\tcmp r4, 0\n" + "\tble _081303A8\n" + "\tcmp r4, 0x4\n" + "\tbgt _081303A8\n" + "\tmovs r0, 0x5\n" + "\tbl PlaySE\n" + "\tldrb r0, [r5, 0x1A]\n" + "\tmovs r1, 0x1\n" + "\tbl sub_810F4D8\n" + "\tldrb r0, [r5, 0x1A]\n" + "\tbl RemoveWindow\n" + "\tldr r0, _08130380 @ =sOakSpeechResources\n" + "\tldr r0, [r0]\n" + "\tldrb r0, [r0, 0x10]\n" + "\tsubs r1, r4, 0x1\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tbl sub_8131754\n" + "\tmovs r0, 0x1\n" + "\tstrh r0, [r5, 0x1E]\n" + "\tadds r0, r7, 0\n" + "\tsubs r0, 0x8\n" + "\tadds r0, r6, r0\n" + "\tldr r1, _08130384 @ =sub_8130464\n" + "\tb _081303A6\n" + "\t.align 2, 0\n" + "_0813037C: .4byte gTasks+0x8\n" + "_08130380: .4byte sOakSpeechResources\n" + "_08130384: .4byte sub_8130464\n" + "_08130388:\n" + "\tmovs r0, 0x5\n" + "\tbl PlaySE\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r4, [sp]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tadds r0, r7, 0\n" + "\tsubs r0, 0x8\n" + "\tadds r0, r6, r0\n" + "\tldr r1, _081303B0 @ =sub_81303B4\n" + "_081303A6:\n" + "\tstr r1, [r0]\n" + "_081303A8:\n" + "\tadd sp, 0x4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_081303B0: .4byte sub_81303B4"); +} +#endif //NONMATCHING From 716639a6287ac32b389085930dca612eba5818f2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Apr 2019 19:43:47 -0400 Subject: [PATCH 056/318] through sub_81306D4 --- asm/oak_speech.s | 419 ---------------------------------------- include/event_scripts.h | 3 + include/menu.h | 1 + src/oak_speech.c | 201 ++++++++++++------- 4 files changed, 132 insertions(+), 492 deletions(-) diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 928ac6c6c..5645b6521 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,425 +5,6 @@ .text - thumb_func_start sub_81303B4 -sub_81303B4: @ 81303B4 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _081303F8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0813044C - ldr r4, _081303FC @ =sOakSpeechResources - ldr r0, [r4] - ldrb r0, [r0, 0x10] - movs r1, 0 - bl sub_8131754 - ldr r0, [r4] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _08130408 - ldr r0, _08130400 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r2, [r1, 0x8] - str r5, [sp] - ldr r0, _08130404 @ =sub_8130C64 - str r0, [sp, 0x4] - movs r0, 0 - movs r3, 0 - bl DoNamingScreen - b _08130440 - .align 2, 0 -_081303F8: .4byte gPaletteFade -_081303FC: .4byte sOakSpeechResources -_08130400: .4byte gSaveBlock2Ptr -_08130404: .4byte sub_8130C64 -_08130408: - ldr r0, _08130454 @ =gTasks - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_810F4D8 - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - bl RemoveWindow - ldr r0, _08130458 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, _0813045C @ =0x00003a4c - adds r1, r0 - str r5, [sp] - ldr r0, _08130460 @ =sub_8130C64 - str r0, [sp, 0x4] - movs r0, 0x4 - movs r2, 0 - movs r3, 0 - bl DoNamingScreen -_08130440: - adds r0, r6, 0 - movs r1, 0x1 - bl sub_8131168 - bl FreeAllWindowBuffers -_0813044C: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130454: .4byte gTasks -_08130458: .4byte gSaveBlock1Ptr -_0813045C: .4byte 0x00003a4c -_08130460: .4byte sub_8130C64 - thumb_func_end sub_81303B4 - - thumb_func_start sub_8130464 -sub_8130464: @ 8130464 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r6, r1, 3 - ldr r7, _081304A0 @ =gTasks+0x8 - adds r5, r6, r7 - ldr r0, _081304A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08130544 - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _08130500 - ldr r0, _081304A8 @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _081304B4 - ldr r0, _081304AC @ =gStringVar4 - ldr r1, _081304B0 @ =gUnknown_81C5E13 - bl StringExpandPlaceholders - b _081304BC - .align 2, 0 -_081304A0: .4byte gTasks+0x8 -_081304A4: .4byte gPaletteFade -_081304A8: .4byte sOakSpeechResources -_081304AC: .4byte gStringVar4 -_081304B0: .4byte gUnknown_81C5E13 -_081304B4: - ldr r0, _081304F4 @ =gStringVar4 - ldr r1, _081304F8 @ =gUnknown_81C5EB5 - bl StringExpandPlaceholders -_081304BC: - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _081304F4 @ =gStringVar4 - ldr r0, _081304FC @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r4, 0 - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - strh r4, [r5, 0x1E] - movs r0, 0x19 - strh r0, [r5, 0x6] - b _08130544 - .align 2, 0 -_081304F4: .4byte gStringVar4 -_081304F8: .4byte gUnknown_81C5EB5 -_081304FC: .4byte sOakSpeechResources -_08130500: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _08130544 - ldrh r0, [r5, 0x6] - movs r1, 0x6 - ldrsh r4, [r5, r1] - cmp r4, 0 - beq _0813051C - subs r0, 0x1 - strh r0, [r5, 0x6] - b _08130544 -_0813051C: - bl sub_80F796C - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0813054C @ =gUnknown_8462ED0 - str r0, [sp] - movs r0, 0xE - str r0, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r1, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl sub_810FF60 - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _08130550 @ =sub_8130554 - str r1, [r0] -_08130544: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813054C: .4byte gUnknown_8462ED0 -_08130550: .4byte sub_8130554 - thumb_func_end sub_8130464 - - thumb_func_start sub_8130554 -sub_8130554: @ 8130554 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r5, r0, 24 - cmp r5, 0 - beq _0813057C - cmp r5, 0 - bgt _08130576 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - beq _08130604 - b _0813063E -_08130576: - cmp r5, 0x1 - beq _08130604 - b _0813063E -_0813057C: - movs r0, 0x5 - bl PlaySE - ldr r1, _081305B0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r6, r0, r1 - movs r0, 0x28 - strh r0, [r6, 0xE] - ldr r7, _081305B4 @ =sOakSpeechResources - ldr r0, [r7] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _081305BC - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_813144C - ldr r0, _081305B8 @ =sub_8130650 - str r0, [r6] - b _0813063E - .align 2, 0 -_081305B0: .4byte gTasks -_081305B4: .4byte sOakSpeechResources -_081305B8: .4byte sub_8130650 -_081305BC: - ldr r4, _081305F8 @ =gStringVar4 - ldr r1, _081305FC @ =gUnknown_81C5EC5 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r0, [r7] - ldrb r3, [r0, 0x1F] - str r5, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParametrized - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _08130600 @ =sub_8130694 - str r0, [r6] - b _0813063E - .align 2, 0 -_081305F8: .4byte gStringVar4 -_081305FC: .4byte gUnknown_81C5EC5 -_08130600: .4byte sub_8130694 -_08130604: - movs r0, 0x5 - bl PlaySE - ldr r0, _08130624 @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _08130630 - ldr r0, _08130628 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813062C @ =sub_8130160 - b _0813063C - .align 2, 0 -_08130624: .4byte sOakSpeechResources -_08130628: .4byte gTasks -_0813062C: .4byte sub_8130160 -_08130630: - ldr r0, _08130648 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813064C @ =sub_8130228 -_0813063C: - str r0, [r1] -_0813063E: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130648: .4byte gTasks -_0813064C: .4byte sub_8130228 - thumb_func_end sub_8130554 - - thumb_func_start sub_8130650 -sub_8130650: @ 8130650 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r6, _0813067C @ =gTasks+0x8 - adds r4, r5, r6 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813068A - bl sub_8131310 - ldrh r1, [r4, 0x6] - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130680 - subs r0, r1, 0x1 - strh r0, [r4, 0x6] - b _0813068A - .align 2, 0 -_0813067C: .4byte gTasks+0x8 -_08130680: - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, _08130690 @ =sub_81306D4 - str r1, [r0] -_0813068A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130690: .4byte sub_81306D4 - thumb_func_end sub_8130650 - - thumb_func_start sub_8130694 -sub_8130694: @ 8130694 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _081306C4 - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_813144C - ldr r0, _081306CC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _081306D0 @ =sub_81307D0 - str r0, [r1] -_081306C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081306CC: .4byte gTasks -_081306D0: .4byte sub_81307D0 - thumb_func_end sub_8130694 - - thumb_func_start sub_81306D4 -sub_81306D4: @ 81306D4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - ldr r0, _08130710 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r1, 0 - strh r1, [r4, 0xA] - ldr r0, _08130714 @ =gSpriteCoordOffsetX - strh r1, [r0] - movs r0, 0x2 - bl sub_81311F4 - adds r0, r5, 0 - movs r1, 0x2 - bl sub_81315CC - ldr r0, _08130718 @ =sub_813071C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08130710: .4byte gTasks -_08130714: .4byte gSpriteCoordOffsetX -_08130718: .4byte sub_813071C - thumb_func_end sub_81306D4 - thumb_func_start sub_813071C sub_813071C: @ 813071C push {r4,r5,lr} diff --git a/include/event_scripts.h b/include/event_scripts.h index 9b31a084f..c55076322 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -713,6 +713,9 @@ extern const u8 gUnknown_81C5D12[]; extern const u8 gUnknown_81C5D4B[]; extern const u8 gUnknown_81C5DBD[]; extern const u8 gUnknown_81C5DEA[]; +extern const u8 gUnknown_81C5E13[]; extern const u8 gUnknown_81C5E91[]; +extern const u8 gUnknown_81C5EB5[]; +extern const u8 gUnknown_81C5EC5[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/menu.h b/include/menu.h index 41119db4f..3394603c8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -44,5 +44,6 @@ void sub_810F5E8(const u8 *, u32, u8); void sub_810F71C(void); void sub_810F740(void); void sub_810F7D8(u8, u8, u8, u8, u8, u8, u8); +void sub_810FF60(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8); #endif // GUARD_MENU_H diff --git a/src/oak_speech.c b/src/oak_speech.c index 19c603c99..b880dc71e 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -18,6 +18,7 @@ #include "scanline_effect.h" #include "string_util.h" #include "pokeball.h" +#include "naming_screen.h" #include "constants/species.h" #include "constants/songs.h" @@ -68,6 +69,13 @@ void sub_8130160(u8 taskId); void sub_8130324(u8 taskId); void sub_81303B4(u8 taskId); void sub_8130464(u8 taskId); +void sub_8130554(u8 taskId); +void sub_8130650(u8 taskId); +void sub_8130694(u8 taskId); +void sub_81306D4(u8 taskId); +void sub_813071C(u8 taskId); +void sub_81307D0(u8 taskId); +void sub_8130C64(void); void sub_8130F2C(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); void sub_8131168(u8 taskId, u8 state); @@ -513,6 +521,7 @@ extern const struct BgTemplate gUnknown_8462E58[3]; extern const struct WindowTemplate *const gUnknown_8462EB4[3]; extern const struct WindowTemplate gUnknown_8462EC0; extern const struct WindowTemplate gUnknown_8462EC8; +extern const struct WindowTemplate gUnknown_8462ED0; extern const struct TextColor gUnknown_8462EE8; extern const struct TextColor gUnknown_8462EEC; extern const u8 *const gUnknown_8462EF0[]; @@ -1316,13 +1325,10 @@ void sub_8130228(u8 taskId) gTasks[taskId].func = sub_8130324; } -#ifdef NONMATCHING -// switch case uses blt, should use ble void sub_8130324(u8 taskId) { s16 * data = gTasks[taskId].data; s8 input = ProcessMenuInput(); - switch (input) { case 1: @@ -1341,77 +1347,126 @@ void sub_8130324(u8 taskId) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gTasks[taskId].func = sub_81303B4; break; + case -1: + break; } } -#else -NAKED -void sub_8130324(u8 taskId) + +void sub_81303B4(u8 taskId) { - asm_unified("\tpush {r4-r7,lr}\n" - "\tsub sp, 0x4\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tlsls r1, r0, 2\n" - "\tadds r1, r0\n" - "\tlsls r6, r1, 3\n" - "\tldr r7, _0813037C @ =gTasks+0x8\n" - "\tadds r5, r6, r7\n" - "\tbl ProcessMenuInput\n" - "\tlsls r0, 24\n" - "\tasrs r4, r0, 24\n" - "\tcmp r4, 0\n" - "\tbeq _08130388\n" - "\tcmp r4, 0\n" - "\tble _081303A8\n" - "\tcmp r4, 0x4\n" - "\tbgt _081303A8\n" - "\tmovs r0, 0x5\n" - "\tbl PlaySE\n" - "\tldrb r0, [r5, 0x1A]\n" - "\tmovs r1, 0x1\n" - "\tbl sub_810F4D8\n" - "\tldrb r0, [r5, 0x1A]\n" - "\tbl RemoveWindow\n" - "\tldr r0, _08130380 @ =sOakSpeechResources\n" - "\tldr r0, [r0]\n" - "\tldrb r0, [r0, 0x10]\n" - "\tsubs r1, r4, 0x1\n" - "\tlsls r1, 24\n" - "\tlsrs r1, 24\n" - "\tbl sub_8131754\n" - "\tmovs r0, 0x1\n" - "\tstrh r0, [r5, 0x1E]\n" - "\tadds r0, r7, 0\n" - "\tsubs r0, 0x8\n" - "\tadds r0, r6, r0\n" - "\tldr r1, _08130384 @ =sub_8130464\n" - "\tb _081303A6\n" - "\t.align 2, 0\n" - "_0813037C: .4byte gTasks+0x8\n" - "_08130380: .4byte sOakSpeechResources\n" - "_08130384: .4byte sub_8130464\n" - "_08130388:\n" - "\tmovs r0, 0x5\n" - "\tbl PlaySE\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r4, [sp]\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x10\n" - "\tbl BeginNormalPaletteFade\n" - "\tadds r0, r7, 0\n" - "\tsubs r0, 0x8\n" - "\tadds r0, r6, r0\n" - "\tldr r1, _081303B0 @ =sub_81303B4\n" - "_081303A6:\n" - "\tstr r1, [r0]\n" - "_081303A8:\n" - "\tadd sp, 0x4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_081303B0: .4byte sub_81303B4"); + if (!gPaletteFade.active) + { + sub_8131754(sOakSpeechResources->unk_0010, 0); + if (sOakSpeechResources->unk_0010 == 0) + { + DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8130C64); + } + else + { + sub_810F4D8(gTasks[taskId].data[13], 1); + RemoveWindow(gTasks[taskId].data[13]); + DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, sub_8130C64); + } + sub_8131168(taskId, 1); + FreeAllWindowBuffers(); + } +} + +void sub_8130464(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + if (data[15] == 1) + { + if (sOakSpeechResources->unk_0010 == 0) + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5E13); + } + else + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5EB5); + } + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + data[15] = 0; + data[3] = 25; + } + else if (!IsTextPrinterActive(0)) + { + if (data[3] != 0) + data[3]--; + else + { + sub_810FF60(&gUnknown_8462ED0, 2, 0, 2, sub_80F796C(), 14, 0); + gTasks[taskId].func = sub_8130554; + } + } + } +} + +void sub_8130554(u8 taskId) +{ + s8 input = ProcessMenuInputNoWrap_(); + switch (input) + { + case 0: + PlaySE(SE_SELECT); + gTasks[taskId].data[3] = 40; + if (sOakSpeechResources->unk_0010 == 0) + { + sub_80F6F54(0, 1); + sub_813144C(taskId, 2); + gTasks[taskId].func = sub_8130650; + } + else + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5EC5); + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + gTasks[taskId].func = sub_8130694; + } + break; + case 1: + case -1: + PlaySE(SE_SELECT); + if (sOakSpeechResources->unk_0010 == 0) + gTasks[taskId].func = sub_8130160; + else + gTasks[taskId].func = sub_8130228; + break; + } +} + +void sub_8130650(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + sub_8131310(); + if (data[3] != 0) + data[3]--; + else + gTasks[taskId].func = sub_81306D4; + } +} + +void sub_8130694(u8 taskId) +{ + if (!IsTextPrinterActive(0)) + { + sub_80F6F54(0, 1); + sub_813144C(taskId, 2); + gTasks[taskId].func = sub_81307D0; + } +} + +void sub_81306D4(u8 taskId) +{ + ChangeBgX(2, 0, 0); + gTasks[taskId].data[1] = 0; + gSpriteCoordOffsetX = 0; + sub_81311F4(2, 0); + sub_81315CC(taskId, 2); + gTasks[taskId].func = sub_813071C; } -#endif //NONMATCHING From 35892e6b5381190269a61f3a87743086a6a44c12 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Apr 2019 20:26:51 -0400 Subject: [PATCH 057/318] through sub_8130C20 --- asm/oak_speech.s | 685 ---------------------------------------- include/event_scripts.h | 2 + include/math_util.h | 6 + include/overworld.h | 1 + include/pokemon_3.h | 1 + src/oak_speech.c | 217 +++++++++++++ 6 files changed, 227 insertions(+), 685 deletions(-) create mode 100644 include/math_util.h diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 5645b6521..66eafc9d1 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,691 +5,6 @@ .text - thumb_func_start sub_813071C -sub_813071C: @ 813071C - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08130770 @ =gTasks+0x8 - adds r0, r1 - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _081307BC - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _08130774 @ =gUnknown_81C5E2E - ldr r4, _08130778 @ =gStringVar4 - cmp r2, r4 - beq _08130780 - adds r0, r4, 0 - adds r1, r2, 0 - bl StringExpandPlaceholders - ldr r0, _0813077C @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParametrized - b _0813079E - .align 2, 0 -_08130770: .4byte gTasks+0x8 -_08130774: .4byte gUnknown_81C5E2E -_08130778: .4byte gStringVar4 -_0813077C: .4byte sOakSpeechResources -_08130780: - ldr r0, _081307C4 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized -_0813079E: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _081307C4 @ =sOakSpeechResources - ldr r1, [r0] - movs r0, 0x1 - strh r0, [r1, 0x10] - ldr r1, _081307C8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _081307CC @ =sub_81301B0 - str r1, [r0] -_081307BC: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081307C4: .4byte sOakSpeechResources -_081307C8: .4byte gTasks -_081307CC: .4byte sub_81301B0 - thumb_func_end sub_813071C - - thumb_func_start sub_81307D0 -sub_81307D0: @ 81307D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _081307FC @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08130846 - bl sub_8131310 - ldrh r1, [r4, 0x6] - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130800 - subs r0, r1, 0x1 - strh r0, [r4, 0x6] - b _08130846 - .align 2, 0 -_081307FC: .4byte gTasks+0x8 -_08130800: - ldr r0, _08130814 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08130818 - movs r0, 0 - movs r1, 0 - bl sub_81311F4 - b _08130820 - .align 2, 0 -_08130814: .4byte gSaveBlock2Ptr -_08130818: - movs r0, 0x1 - movs r1, 0 - bl sub_81311F4 -_08130820: - ldr r0, _0813084C @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r1, 0 - strh r1, [r4, 0xA] - ldr r0, _08130850 @ =gSpriteCoordOffsetX - strh r1, [r0] - movs r0, 0x2 - movs r2, 0 - bl ChangeBgX - adds r0, r5, 0 - movs r1, 0x2 - bl sub_81315CC - ldr r0, _08130854 @ =sub_8130858 - str r0, [r4] -_08130846: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813084C: .4byte gTasks -_08130850: .4byte gSpriteCoordOffsetX -_08130854: .4byte sub_8130858 - thumb_func_end sub_81307D0 - - thumb_func_start sub_8130858 -sub_8130858: @ 8130858 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081308BC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081308B4 - ldr r4, _081308C0 @ =gStringVar4 - ldr r1, _081308C4 @ =gUnknown_81C5EF4 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r0, _081308C8 @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParametrized - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1E - strh r0, [r5, 0xE] - ldr r0, _081308CC @ =sub_81308D0 - str r0, [r5] -_081308B4: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081308BC: .4byte gTasks -_081308C0: .4byte gStringVar4 -_081308C4: .4byte gUnknown_81C5EF4 -_081308C8: .4byte sOakSpeechResources -_081308CC: .4byte sub_81308D0 - thumb_func_end sub_8130858 - - thumb_func_start sub_81308D0 -sub_81308D0: @ 81308D0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0813090A - ldr r0, _081308FC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r4, r1, r0 - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130900 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _0813090A - .align 2, 0 -_081308FC: .4byte gTasks -_08130900: - movs r0, 0x4 - bl FadeOutBGM - ldr r0, _08130910 @ =sub_8130914 - str r0, [r4] -_0813090A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130910: .4byte sub_8130914 - thumb_func_end sub_81308D0 - - thumb_func_start sub_8130914 -sub_8130914: @ 8130914 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0813093C @ =sOakSpeechResources - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x12] - adds r0, r4, 0 - bl sub_8130A38 - adds r0, r4, 0 - bl sub_8130ADC - adds r0, r4, 0 - bl sub_8130940 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813093C: .4byte sOakSpeechResources - thumb_func_end sub_8130914 - - thumb_func_start sub_8130940 -sub_8130940: @ 8130940 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r6, _08130978 @ =gTasks+0x8 - adds r5, r4, r6 - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x1 - bl SetBgAttribute - movs r1, 0 - strh r1, [r5] - strh r1, [r5, 0x2] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r5, 0x4] - strh r1, [r5, 0x1E] - subs r6, 0x8 - adds r4, r6 - ldr r0, _0813097C @ =sub_8130980 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130978: .4byte gTasks+0x8 -_0813097C: .4byte sub_8130980 - thumb_func_end sub_8130940 - - thumb_func_start sub_8130980 -sub_8130980: @ 8130980 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r7, r1, 3 - ldr r0, _08130A2C @ =gTasks+0x8 - mov r8, r0 - adds r5, r7, r0 - ldr r0, _08130A30 @ =sOakSpeechResources - ldr r1, [r0] - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - ldrh r4, [r1, 0x12] - adds r0, r4, 0 - movs r1, 0x14 - bl __umodsi3 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - bne _08130A1E - cmp r4, 0x28 - bne _081309BE - movs r0, 0x27 - bl PlaySE -_081309BE: - ldrh r0, [r5, 0x4] - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r5, 0x4] - subs r0, 0x8 - lsls r0, 16 - asrs r0, 16 - bl sub_80D8B90 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrh r0, [r5, 0x4] - subs r0, 0x10 - lsls r0, 16 - asrs r0, 16 - bl sub_80D8B90 - movs r1, 0xF0 - lsls r1, 7 - movs r2, 0xA8 - lsls r2, 7 - movs r3, 0x54 - str r3, [sp] - lsls r4, 16 - asrs r4, 16 - str r4, [sp, 0x4] - lsls r0, 16 - asrs r0, 16 - str r0, [sp, 0x8] - str r6, [sp, 0xC] - movs r0, 0x2 - movs r3, 0x78 - bl SetBgAffine - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0x60 - bgt _08130A1E - movs r0, 0x1 - strh r0, [r5, 0x1E] - movs r0, 0x24 - strh r0, [r5] - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _08130A34 @ =sub_8130BA8 - str r1, [r0] -_08130A1E: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130A2C: .4byte gTasks+0x8 -_08130A30: .4byte sOakSpeechResources -_08130A34: .4byte sub_8130BA8 - thumb_func_end sub_8130980 - - thumb_func_start sub_8130A38 -sub_8130A38: @ 8130A38 - push {lr} - sub sp, 0x4 - ldr r0, _08130A74 @ =sub_8130A80 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08130A78 @ =gTasks+0x8 - adds r1, r0 - movs r0, 0 - strh r0, [r1] - strh r0, [r1, 0x2] - strh r0, [r1, 0x4] - strh r0, [r1, 0x1E] - ldr r0, _08130A7C @ =0xffff0fcf - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08130A74: .4byte sub_8130A80 -_08130A78: .4byte gTasks+0x8 -_08130A7C: .4byte 0xffff0fcf - thumb_func_end sub_8130A38 - - thumb_func_start sub_8130A80 -sub_8130A80: @ 8130A80 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08130AB8 @ =gTasks+0x8 - adds r2, r0, r1 - ldr r0, _08130ABC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08130AD4 - ldrh r0, [r2, 0x2] - movs r3, 0x2 - ldrsh r1, [r2, r3] - cmp r1, 0 - beq _08130AC0 - adds r0, r4, 0 - bl DestroyTask - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8131168 - b _08130AD4 - .align 2, 0 -_08130AB8: .4byte gTasks+0x8 -_08130ABC: .4byte gPaletteFade -_08130AC0: - adds r0, 0x1 - strh r0, [r2, 0x2] - movs r0, 0xF0 - lsls r0, 8 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08130AD4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8130A80 - - thumb_func_start sub_8130ADC -sub_8130ADC: @ 8130ADC - push {lr} - ldr r0, _08130B08 @ =sub_8130B10 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08130B0C @ =gTasks+0x8 - adds r1, r0 - movs r2, 0x8 - strh r2, [r1] - movs r0, 0 - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - strh r0, [r1, 0x1C] - strh r0, [r1, 0x1E] - pop {r0} - bx r0 - .align 2, 0 -_08130B08: .4byte sub_8130B10 -_08130B0C: .4byte gTasks+0x8 - thumb_func_end sub_8130ADC - - thumb_func_start sub_8130B10 -sub_8130B10: @ 8130B10 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08130B30 @ =gTasks+0x8 - adds r4, r0, r1 - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130B34 - subs r0, r1, 0x1 - strh r0, [r4] - b _08130B96 - .align 2, 0 -_08130B30: .4byte gTasks+0x8 -_08130B34: - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _08130B4A - ldrh r1, [r4, 0x4] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130B4A - subs r0, r1, 0x1 - strh r0, [r4, 0x4] -_08130B4A: - ldrb r2, [r4, 0x1C] - ldr r7, _08130B9C @ =0x00007fff - movs r0, 0x40 - movs r1, 0x20 - adds r3, r7, 0 - bl BlendPalette - ldrh r1, [r4, 0x1C] - adds r1, 0x1 - strh r1, [r4, 0x1C] - ldrh r0, [r4, 0x2] - subs r0, 0x1 - strh r0, [r4, 0x2] - ldrh r0, [r4, 0x4] - strh r0, [r4] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xE - ble _08130B96 - movs r2, 0 - ldr r6, _08130BA0 @ =gPlttBufferFaded - adds r3, r7, 0 - ldr r4, _08130BA4 @ =gPlttBufferUnfaded -_08130B78: - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 1 - adds r1, r0, r6 - strh r3, [r1] - adds r0, r4 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1F - bls _08130B78 - adds r0, r5, 0 - bl DestroyTask -_08130B96: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130B9C: .4byte 0x00007fff -_08130BA0: .4byte gPlttBufferFaded -_08130BA4: .4byte gPlttBufferUnfaded - thumb_func_end sub_8130B10 - - thumb_func_start sub_8130BA8 -sub_8130BA8: @ 8130BA8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08130BCC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - movs r2, 0x8 - ldrsh r1, [r4, r2] - cmp r1, 0 - beq _08130BD0 - subs r0, 0x1 - strh r0, [r4, 0x8] - b _08130BE2 - .align 2, 0 -_08130BCC: .4byte gTasks -_08130BD0: - str r1, [sp] - movs r0, 0x30 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08130BEC @ =sub_8130BF0 - str r0, [r4] -_08130BE2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130BEC: .4byte sub_8130BF0 - thumb_func_end sub_8130BA8 - - thumb_func_start sub_8130BF0 -sub_8130BF0: @ 8130BF0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08130C14 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08130C10 - ldr r0, _08130C18 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _08130C1C @ =sub_8130C20 - str r0, [r1] -_08130C10: - pop {r0} - bx r0 - .align 2, 0 -_08130C14: .4byte gPaletteFade -_08130C18: .4byte gTasks -_08130C1C: .4byte sub_8130C20 - thumb_func_end sub_8130BF0 - - thumb_func_start sub_8130C20 -sub_8130C20: @ 8130C20 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl FreeAllWindowBuffers - bl sub_8044D80 - ldr r5, _08130C58 @ =sOakSpeechResources - ldr r0, [r5] - bl Free - movs r0, 0 - str r0, [r5] - ldr r2, _08130C5C @ =gTextFlags - ldrb r1, [r2] - subs r0, 0x2 - ands r0, r1 - strb r0, [r2] - ldr r0, _08130C60 @ =CB2_NewGame - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08130C58: .4byte sOakSpeechResources -_08130C5C: .4byte gTextFlags -_08130C60: .4byte CB2_NewGame - thumb_func_end sub_8130C20 - thumb_func_start sub_8130C64 sub_8130C64: @ 8130C64 push {r4,r5,lr} diff --git a/include/event_scripts.h b/include/event_scripts.h index c55076322..4b0930e9f 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -714,8 +714,10 @@ extern const u8 gUnknown_81C5D4B[]; extern const u8 gUnknown_81C5DBD[]; extern const u8 gUnknown_81C5DEA[]; extern const u8 gUnknown_81C5E13[]; +extern const u8 gUnknown_81C5E2E[]; extern const u8 gUnknown_81C5E91[]; extern const u8 gUnknown_81C5EB5[]; extern const u8 gUnknown_81C5EC5[]; +extern const u8 gUnknown_81C5EF4[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/math_util.h b/include/math_util.h new file mode 100644 index 000000000..74dbbe98e --- /dev/null +++ b/include/math_util.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MATH_UTIL_H +#define GUARD_MATH_UTIL_H + +s16 sub_80D8B90(s16 y); + +#endif //GUARD_MATH_UTIL_H diff --git a/include/overworld.h b/include/overworld.h index b32d9cf48..8c32d3e06 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -99,5 +99,6 @@ extern u8 gUnknown_2036E28; extern bool8 (* gUnknown_3005024)(void); void SetLastHealLocationWarp(u8 healLocaionId); void sub_8055864(u8 mapGroup, u8 mapNum); +void CB2_NewGame(void); #endif //GUARD_ROM4_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h index a7f83a7de..d18be1403 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -6,5 +6,6 @@ const u8* GetTrainerClassNameFromId(u16 trainerId); const u8* GetTrainerNameFromId(u16 trainerId); void sub_8044AF0(u8, u8); +void sub_8044D80(void); #endif // GUARD_POKEMON_3_H diff --git a/src/oak_speech.c b/src/oak_speech.c index b880dc71e..93bc74eec 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -5,6 +5,7 @@ #include "gpu_regs.h" #include "wild_encounter.h" #include "palette.h" +#include "blend_palette.h" #include "text.h" #include "window.h" #include "text_window.h" @@ -19,6 +20,8 @@ #include "string_util.h" #include "pokeball.h" #include "naming_screen.h" +#include "math_util.h" +#include "overworld.h" #include "constants/species.h" #include "constants/songs.h" @@ -75,6 +78,18 @@ void sub_8130694(u8 taskId); void sub_81306D4(u8 taskId); void sub_813071C(u8 taskId); void sub_81307D0(u8 taskId); +void sub_8130858(u8 taskId); +void sub_81308D0(u8 taskId); +void sub_8130914(u8 taskId); +void sub_8130940(u8 taskId); +void sub_8130980(u8 taskId); +void sub_8130A38(u8 taskId); +void sub_8130A80(u8 taskId); +void sub_8130ADC(u8 taskId); +void sub_8130B10(u8 taskId); +void sub_8130BA8(u8 taskId); +void sub_8130BF0(u8 taskId); +void sub_8130C20(u8 taskId); void sub_8130C64(void); void sub_8130F2C(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); @@ -1470,3 +1485,205 @@ void sub_81306D4(u8 taskId) sub_81315CC(taskId, 2); gTasks[taskId].func = sub_813071C; } + +void sub_813071C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + OaksSpeechPrintMessage(gUnknown_81C5E2E, sOakSpeechResources->unk_001F); + sOakSpeechResources->unk_0010 = 1; + gTasks[taskId].func = sub_81301B0; + } +} + +void sub_81307D0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + sub_8131310(); + if (data[3] != 0) + data[3]--; + else + { + if (gSaveBlock2Ptr->playerGender == MALE) + sub_81311F4(MALE, 0); + else + sub_81311F4(FEMALE, 0); + gTasks[taskId].data[1] = 0; + gSpriteCoordOffsetX = 0; + ChangeBgX(2, 0, 0); + sub_81315CC(taskId, 2); + gTasks[taskId].func = sub_8130858; + } + } +} + +void sub_8130858(u8 taskId) +{ + if (gTasks[taskId].data[2] != 0) + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5EF4); + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + gTasks[taskId].data[3] = 30; + gTasks[taskId].func = sub_81308D0; + } +} + +void sub_81308D0(u8 taskId) +{ + if (!IsTextPrinterActive(0)) + { + if (gTasks[taskId].data[3] != 0) + gTasks[taskId].data[3]--; + else + { + FadeOutBGM(4); + gTasks[taskId].func = sub_8130914; + } + } +} + +void sub_8130914(u8 taskId) +{ + sOakSpeechResources->unk_0012 = 0; + sub_8130A38(taskId); + sub_8130ADC(taskId); + sub_8130940(taskId); +} + +void sub_8130940(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + SetBgAttribute(2, 6, 1); + data[0] = 0; + data[1] = 0; + data[2] = 256; + data[15] = 0; + gTasks[taskId].func = sub_8130980; +} + +void sub_8130980(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s16 x, y; + u16 r0; + + sOakSpeechResources->unk_0012++; + if (sOakSpeechResources->unk_0012 % 20 == 0) + { + if (sOakSpeechResources->unk_0012 == 40) + PlaySE(SE_FU_ZUZUZU); + r0 = data[2]; + data[2] -= 32; + x = sub_80D8B90(r0 - 8); + y = sub_80D8B90(data[2] - 16); + SetBgAffine(2, 0x7800, 0x5400, 0x78, 0x54, x, y, 0); + if (data[2] <= 96) + { + data[15] = 1; + data[0] = 36; + gTasks[taskId].func = sub_8130BA8; + } + } +} + +void sub_8130A38(u8 taskId) +{ + u8 taskId2 = CreateTask(sub_8130A80, 1); + s16 * data = gTasks[taskId2].data; + data[0] = 0; + data[1] = 0; + data[2] = 0; + data[15] = 0; + BeginNormalPaletteFade(0xFFFF0FCF, 4, 0, 16, RGB_BLACK); +} + +void sub_8130A80(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + if (data[1] != 0) + { + DestroyTask(taskId); + sub_8131168(taskId, 1); + } + else + { + data[1]++; + BeginNormalPaletteFade(0x0000F000, 0, 0, 16, RGB_BLACK); + } + } +} + +void sub_8130ADC(u8 taskId) +{ + u8 taskId2 = CreateTask(sub_8130B10, 2); + s16 * data = gTasks[taskId2].data; + data[0] = 8; + data[1] = 0; + data[2] = 8; + data[14] = 0; + data[15] = 0; +} + +void sub_8130B10(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 i; + + if (data[0] != 0) + data[0]--; + else + { + if (data[1] <= 0 && data[2] != 0) + data[2]--; + BlendPalette(0x40, 0x20, data[14], RGB_WHITE); + data[14]++; + data[1]--; + data[0] = data[2]; + if (data[14] > 14) + { + for (i = 0; i < 32; i++) + { + gPlttBufferFaded[i + 0x40] = RGB_WHITE; + gPlttBufferUnfaded[i + 0x40] = RGB_WHITE; + } + DestroyTask(taskId); + } + } +} + +void sub_8130BA8(u8 taskId) +{ + if (gTasks[taskId].data[0] != 0) + gTasks[taskId].data[0]--; + else + { + BeginNormalPaletteFade(0x00000030, 2, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_8130BF0; + } +} + +void sub_8130BF0(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].func = sub_8130C20; + } +} + +void sub_8130C20(u8 taskId) +{ + FreeAllWindowBuffers(); + sub_8044D80(); + Free(sOakSpeechResources); + sOakSpeechResources = NULL; + gTextFlags.flag_0 = FALSE; + SetMainCallback2(CB2_NewGame); + DestroyTask(taskId); +} From 6eb7cc6cfae14b93feee880b23e903c336c58dcd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 08:46:30 -0400 Subject: [PATCH 058/318] through CreateNidoranFSprite --- asm/oak_speech.s | 370 ------------------------------------------- include/decompress.h | 2 + include/pokemon.h | 1 + include/pokemon_3.h | 1 + src/oak_speech.c | 116 +++++++++++++- 5 files changed, 115 insertions(+), 375 deletions(-) diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 66eafc9d1..d3d7ffc4a 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,376 +5,6 @@ .text - thumb_func_start sub_8130C64 -sub_8130C64: @ 8130C64 - push {r4,r5,lr} - sub sp, 0x10 - ldr r0, _08130C84 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bls _08130C78 - b _08130F10 -_08130C78: - lsls r0, 2 - ldr r1, _08130C88 @ =_08130C8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08130C84: .4byte gMain -_08130C88: .4byte _08130C8C - .align 2, 0 -_08130C8C: - .4byte _08130CAC - .4byte _08130D18 - .4byte _08130D78 - .4byte _08130DB2 - .4byte _08130DD0 - .4byte _08130DE8 - .4byte _08130E38 - .4byte _08130EB8 -_08130CAC: - movs r0, 0 - bl SetVBlankCallback - add r1, sp, 0x8 - movs r0, 0 - strh r0, [r1] - ldr r1, _08130D04 @ =0x040000d4 - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _08130D08 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - str r2, [sp, 0xC] - add r0, sp, 0xC - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _08130D0C @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x8 - strh r2, [r0] - str r0, [r1] - ldr r0, _08130D10 @ =0x05000002 - str r0, [r1, 0x4] - ldr r0, _08130D14 @ =0x810001ff - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - bl ScanlineEffect_Stop - bl ResetSpriteData - bl FreeAllSpritePalettes - bl reset_temp_tile_data_buffers - b _08130F10 - .align 2, 0 -_08130D04: .4byte 0x040000d4 -_08130D08: .4byte 0x8100c000 -_08130D0C: .4byte 0x85000100 -_08130D10: .4byte 0x05000002 -_08130D14: .4byte 0x810001ff -_08130D18: - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08130D70 @ =gUnknown_8462E58 - movs r0, 0x1 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r4, _08130D74 @ =sOakSpeechResources - ldr r1, [r4] - movs r0, 0xE1 - lsls r0, 5 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r0, 0xC1 - lsls r0, 5 - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - 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 - b _08130F10 - .align 2, 0 -_08130D70: .4byte gUnknown_8462E58 -_08130D74: .4byte sOakSpeechResources -_08130D78: - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - b _08130F10 -_08130DB2: - bl FreeAllWindowBuffers - bl sub_80F6C6C - bl sub_80F6C98 - ldr r0, _08130DCC @ =gUnknown_8460568 - movs r1, 0 - movs r2, 0xE0 - bl LoadPalette - b _08130F10 - .align 2, 0 -_08130DCC: .4byte gUnknown_8460568 -_08130DD0: - ldr r1, _08130DE4 @ =gUnknown_8460CA4 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - b _08130F10 - .align 2, 0 -_08130DE4: .4byte gUnknown_8460CA4 -_08130DE8: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - cmp r0, 0 - beq _08130DF4 - b _08130F1E -_08130DF4: - movs r5, 0x1E - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08130E34 @ =gUnknown_8460CE8 - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _08130F10 - .align 2, 0 -_08130E34: .4byte gUnknown_8460CE8 -_08130E38: - ldr r0, _08130E5C @ =sub_8130464 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08130E60 @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _08130E72 - ldr r0, _08130E64 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08130E68 - movs r0, 0 - b _08130E6A - .align 2, 0 -_08130E5C: .4byte sub_8130464 -_08130E60: .4byte sOakSpeechResources -_08130E64: .4byte gSaveBlock2Ptr -_08130E68: - movs r0, 0x1 -_08130E6A: - movs r1, 0 - bl sub_81311F4 - b _08130E7A -_08130E72: - movs r0, 0x2 - movs r1, 0 - bl sub_81311F4 -_08130E7A: - ldr r0, _08130EA8 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldr r0, _08130EAC @ =0x0000ffc4 - strh r0, [r4, 0xA] - ldr r1, _08130EB0 @ =gSpriteCoordOffsetX - ldrh r0, [r1] - adds r0, 0x3C - strh r0, [r1] - ldr r1, _08130EB4 @ =0xffffc400 - movs r0, 0x2 - movs r2, 0 - bl ChangeBgX - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8130FD4 - movs r0, 0x1 - strh r0, [r4, 0x26] - b _08130F10 - .align 2, 0 -_08130EA8: .4byte gTasks -_08130EAC: .4byte 0x0000ffc4 -_08130EB0: .4byte gSpriteCoordOffsetX -_08130EB4: .4byte 0xffffc400 -_08130EB8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x1 - bl EnableInterrupts - ldr r0, _08130F04 @ =sub_812EAFC - bl SetVBlankCallback - ldr r2, _08130F08 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08130F0C @ =sub_812EB10 - bl SetMainCallback2 - b _08130F1E - .align 2, 0 -_08130F04: .4byte sub_812EAFC -_08130F08: .4byte gTextFlags -_08130F0C: .4byte sub_812EB10 -_08130F10: - ldr r1, _08130F28 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08130F1E: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08130F28: .4byte gMain - thumb_func_end sub_8130C64 - - thumb_func_start sub_8130F2C -sub_8130F2C: @ 8130F2C - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _08130FA0 @ =gUnknown_8235194 - movs r0, 0 - bl sub_8044E00 - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x1D - bl DecompressPicFromTable - ldr r0, _08130FA4 @ =gUnknown_82373F4 - bl sub_800F078 - movs r0, 0x1D - movs r1, 0 - bl sub_803F7D4 - ldr r0, _08130FA8 @ =gMultiuseSpriteTemplate - movs r1, 0x60 - movs r2, 0x60 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08130FAC @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r1, r2, r1 - ldr r3, _08130FB0 @ =SpriteCallbackDummy - str r3, [r1] - adds r2, r4 - ldrb r3, [r2, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - movs r3, 0x4 - orrs r1, r3 - strb r1, [r2, 0x5] - adds r2, 0x3E - ldrb r1, [r2] - orrs r1, r3 - strb r1, [r2] - ldr r2, _08130FB4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r2 - strh r0, [r1, 0x10] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08130FA0: .4byte gUnknown_8235194 -_08130FA4: .4byte gUnknown_82373F4 -_08130FA8: .4byte gMultiuseSpriteTemplate -_08130FAC: .4byte gSprites -_08130FB0: .4byte SpriteCallbackDummy -_08130FB4: .4byte gTasks - thumb_func_end sub_8130F2C - thumb_func_start sub_8130FB8 sub_8130FB8: @ 8130FB8 ldr r3, _08130FD0 @ =gSprites diff --git a/include/decompress.h b/include/decompress.h index 36672dcfd..c2c4f0e1c 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -18,6 +18,8 @@ void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src); void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); bool8 LoadCompressedObjectPaletteUsingHeap(const struct CompressedSpritePalette *src); +bool8 sub_800F078(const struct CompressedSpritePalette *src); + void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species); void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species); void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species); diff --git a/include/pokemon.h b/include/pokemon.h index f1f04c9eb..c08f37b5f 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -673,5 +673,6 @@ void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); void PlayMapChosenOrBattleBGM(u16 songId); u8 GetMonsStateToDoubles(void); void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src); +void sub_803F7D4(u16 trainerSpriteId, u8 battlerPosition); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h index d18be1403..f6226f40d 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -7,5 +7,6 @@ const u8* GetTrainerClassNameFromId(u16 trainerId); const u8* GetTrainerNameFromId(u16 trainerId); void sub_8044AF0(u8, u8); void sub_8044D80(void); +void * sub_8044E00(u8 buffId); #endif // GUARD_POKEMON_3_H diff --git a/src/oak_speech.c b/src/oak_speech.c index 93bc74eec..8cdfd2bb5 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -1,5 +1,6 @@ #include "global.h" #include "main.h" +#include "decompress.h" #include "task.h" #include "malloc.h" #include "gpu_regs.h" @@ -90,8 +91,9 @@ void sub_8130B10(u8 taskId); void sub_8130BA8(u8 taskId); void sub_8130BF0(u8 taskId); void sub_8130C20(u8 taskId); -void sub_8130C64(void); -void sub_8130F2C(u8 taskId); + +static void CB2_ReturnFromNamingScreen(void); +static void CreateNidoranFSprite(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); void sub_8131168(u8 taskId, u8 state); void sub_81311F4(u8 arg0, u8 state); @@ -107,6 +109,9 @@ extern const u8 gUnknown_8415D50[]; extern const u8 gUnknown_8415D93[]; extern const u8 gUnknown_8415D97[]; +extern const struct CompressedSpriteSheet gUnknown_8235194[]; +extern const struct CompressedSpritePalette gUnknown_82373F4; + const u8 gUnknown_845FD54[][5] = { [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, @@ -1040,7 +1045,7 @@ void sub_812F7C0(u8 taskId) LoadBgTiles(1, sOakSpeechResources->unk_0000, size, 0); CopyToBgTilemapBuffer(1, gUnknown_8460CE8, 0, 0); CopyBgTilemapBufferToVram(1); - sub_8130F2C(taskId); + CreateNidoranFSprite(taskId); sub_81311F4(3, 0); sub_8130FD4(taskId, 1); PlayBGM(292); @@ -1374,13 +1379,13 @@ void sub_81303B4(u8 taskId) sub_8131754(sOakSpeechResources->unk_0010, 0); if (sOakSpeechResources->unk_0010 == 0) { - DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8130C64); + DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnFromNamingScreen); } else { sub_810F4D8(gTasks[taskId].data[13], 1); RemoveWindow(gTasks[taskId].data[13]); - DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, sub_8130C64); + DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen); } sub_8131168(taskId, 1); FreeAllWindowBuffers(); @@ -1687,3 +1692,104 @@ void sub_8130C20(u8 taskId) SetMainCallback2(CB2_NewGame); DestroyTask(taskId); } + +static void CB2_ReturnFromNamingScreen(void) +{ + u8 taskId; + + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, RGB_BLACK, PLTT + sizeof(u16), PLTT_SIZE - sizeof(u16)); + ResetPaletteFade(); + ScanlineEffect_Stop(); + ResetSpriteData(); + FreeAllSpritePalettes(); + reset_temp_tile_data_buffers(); + break; + case 1: + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(1, gUnknown_8462E58, NELEMS(gUnknown_8462E58)); + SetBgTilemapBuffer(1, sOakSpeechResources->bg1TilemapBuffer); + SetBgTilemapBuffer(2, sOakSpeechResources->bg2TilemapBuffer); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + break; + case 2: + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + break; + case 3: + FreeAllWindowBuffers(); + sub_80F6C6C(); + sub_80F6C98(); + LoadPalette(gUnknown_8460568, 0, 0xe0); + break; + case 4: + decompress_and_copy_tile_data_to_vram(1, gUnknown_8460CA4, 0, 0, 0); + break; + case 5: + if (free_temp_tile_data_buffers_if_possible()) + return; + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + CopyToBgTilemapBuffer(1, gUnknown_8460CE8, 0, 0); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + break; + case 6: + taskId = CreateTask(sub_8130464, 0); + if (sOakSpeechResources->unk_0010 == 0) + { + if (gSaveBlock2Ptr->playerGender == MALE) + sub_81311F4(MALE, 0); + else + sub_81311F4(FEMALE, 0); + } + else + sub_81311F4(2, 0); + gTasks[taskId].data[1] = -60; + gSpriteCoordOffsetX += 60; + ChangeBgX(2, -0x3C00, 0); + sub_8130FD4(taskId, 1); + gTasks[taskId].data[15] = 1; + break; + case 7: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + EnableInterrupts(INTR_FLAG_VBLANK); + SetVBlankCallback(sub_812EAFC); + gTextFlags.flag_0 = TRUE; + SetMainCallback2(sub_812EB10); + return; + } + + gMain.state++; +} + +static void CreateNidoranFSprite(u8 taskId) +{ + u8 spriteId; + + DecompressPicFromTable(gUnknown_8235194, sub_8044E00(0), SPECIES_NIDORAN_F); + sub_800F078(&gUnknown_82373F4); + sub_803F7D4(SPECIES_NIDORAN_F, 0); + spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x60, 0x60, 1); + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].invisible = TRUE; + gTasks[taskId].data[4] = spriteId; +} From b2b26e0e3b3d1824ae01c0bf05c0041dd055e536 Mon Sep 17 00:00:00 2001 From: scnorton Date: Thu, 11 Apr 2019 11:04:48 -0400 Subject: [PATCH 059/318] through sub_8130FD4 and associated rodata --- asm/oak_speech.s | 207 -------------------------------- data/data_835B488.s | 13 +- data/data_845FD54.s | 76 ++++++++++-- data/oak_speech/unk_84629D0.pal | 19 +++ data/oak_speech/unk_84629F0.pal | 19 +++ data/oak_speech/unk_8462A10.png | Bin 0 -> 271 bytes data/oak_speech/unk_8462B74.png | Bin 0 -> 350 bytes data/oak_speech/unk_8462D34.png | Bin 0 -> 228 bytes data/oak_speech/unk_8462E18.png | Bin 0 -> 119 bytes src/oak_speech.c | 52 ++++++++ 10 files changed, 169 insertions(+), 217 deletions(-) create mode 100644 data/oak_speech/unk_84629D0.pal create mode 100644 data/oak_speech/unk_84629F0.pal create mode 100644 data/oak_speech/unk_8462A10.png create mode 100644 data/oak_speech/unk_8462B74.png create mode 100644 data/oak_speech/unk_8462D34.png create mode 100644 data/oak_speech/unk_8462E18.png diff --git a/asm/oak_speech.s b/asm/oak_speech.s index d3d7ffc4a..f9d4e9b5a 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,213 +5,6 @@ .text - thumb_func_start sub_8130FB8 -sub_8130FB8: @ 8130FB8 - ldr r3, _08130FD0 @ =gSprites - movs r1, 0x2E - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - adds r1, 0x2B - ldrb r1, [r1] - strh r1, [r0, 0x26] - bx lr - .align 2, 0 -_08130FD0: .4byte gSprites - thumb_func_end sub_8130FB8 - - thumb_func_start sub_8130FD4 -sub_8130FD4: @ 8130FD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r1, 0 - beq _08130FF4 - cmp r1, 0x1 - beq _081310C8 - b _08131146 -_08130FF4: - ldr r4, _081310B0 @ =gUnknown_8462EFC - adds r0, r4, 0 - bl LoadCompressedObjectPic - adds r0, r4, 0 - adds r0, 0x8 - bl LoadCompressedObjectPic - adds r4, 0x10 - adds r0, r4, 0 - bl LoadCompressedObjectPic - ldr r0, _081310B4 @ =gUnknown_8462F1C - bl LoadSpritePalette - ldr r0, _081310B8 @ =gUnknown_846302C - mov r8, r0 - movs r1, 0x10 - movs r2, 0x11 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r6, _081310BC @ =gSprites - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x5] - movs r5, 0xD - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1, 0x5] - ldr r0, _081310C0 @ =gTasks - mov r1, r9 - lsls r4, r1, 2 - add r4, r9 - lsls r4, 3 - adds r4, r0 - strh r7, [r4, 0x16] - mov r0, r8 - adds r0, 0x18 - movs r1, 0x10 - movs r2, 0x9 - movs r3, 0x3 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - adds r2, r1, r6 - ldrb r3, [r2, 0x5] - adds r0, r5, 0 - ands r0, r3 - strb r0, [r2, 0x5] - ldrh r0, [r4, 0x16] - strh r0, [r2, 0x2E] - movs r2, 0x1C - adds r2, r6 - mov r10, r2 - add r1, r10 - ldr r3, _081310C4 @ =sub_8130FB8 - mov r9, r3 - str r3, [r1] - strh r7, [r4, 0x18] - movs r0, 0x30 - add r8, r0 - mov r0, r8 - movs r1, 0x18 - movs r2, 0xD - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r6, r0, r6 - ldrb r1, [r6, 0x5] - ands r5, r1 - strb r5, [r6, 0x5] - ldrh r1, [r4, 0x16] - strh r1, [r6, 0x2E] - add r0, r10 - mov r1, r9 - str r1, [r0] - strh r7, [r4, 0x1A] - b _08131146 - .align 2, 0 -_081310B0: .4byte gUnknown_8462EFC -_081310B4: .4byte gUnknown_8462F1C -_081310B8: .4byte gUnknown_846302C -_081310BC: .4byte gSprites -_081310C0: .4byte gTasks -_081310C4: .4byte sub_8130FB8 -_081310C8: - ldr r0, _08131154 @ =gUnknown_8462F14 - bl LoadCompressedObjectPic - ldr r0, _08131158 @ =gUnknown_8462F24 - bl LoadSpritePalette - mov r2, r9 - lsls r5, r2, 2 - ldr r3, _0813115C @ =gTasks+0x8 - mov r8, r3 - ldr r6, _08131160 @ =gSprites -_081310DE: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - ldr r1, _08131164 @ =gUnknown_8462F50 - adds r0, r1 - lsls r1, r4, 21 - movs r2, 0xB0 - lsls r2, 15 - adds r1, r2 - asrs r1, 16 - movs r2, 0x70 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r2, r7, 4 - adds r2, r7 - lsls r2, 2 - adds r2, r6 - ldrb r1, [r2, 0x5] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r1, r0 - movs r0, 0x8 - orrs r1, r0 - strb r1, [r2, 0x5] - adds r3, r2, 0 - adds r3, 0x2C - ldrb r0, [r3] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r3] - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - adds r1, r4, 0x7 - lsls r1, 1 - mov r2, r9 - adds r0, r5, r2 - lsls r0, 3 - adds r1, r0 - add r1, r8 - strh r7, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _081310DE -_08131146: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08131154: .4byte gUnknown_8462F14 -_08131158: .4byte gUnknown_8462F24 -_0813115C: .4byte gTasks+0x8 -_08131160: .4byte gSprites -_08131164: .4byte gUnknown_8462F50 - thumb_func_end sub_8130FD4 - thumb_func_start sub_8131168 sub_8131168: @ 8131168 push {r4-r7,lr} diff --git a/data/data_835B488.s b/data/data_835B488.s index 71e98b2ba..c5b533348 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -738,13 +738,22 @@ sFanfares:: @ 83AC990 .incbin "baserom.gba", 0x3AC990, 0x40 gUnknown_83AC9D0:: @ 83AC9D0 - .incbin "baserom.gba", 0x3AC9D0, 0x28 + .incbin "baserom.gba", 0x3AC9D0, 0x8 + +gUnknown_83AC9D8:: + .incbin "baserom.gba", 0x3AC9D8, 0x10 + +gUnknown_83AC9E8:: + .incbin "baserom.gba", 0x3AC9E8, 0x10 gUnknown_83AC9F8:: .incbin "baserom.gba", 0x3AC9F8, 0x8 gUnknown_83ACA00:: - .incbin "baserom.gba", 0x3ACA00, 0x208 + .incbin "baserom.gba", 0x3ACA00, 0xF8 + +gUnknown_83ACAF8:: + .incbin "baserom.gba", 0x3ACAF8, 0x110 gUnknown_83ACC08:: @ 83ACC08 .incbin "baserom.gba", 0x3ACC08, 0x440 diff --git a/data/data_845FD54.s b/data/data_845FD54.s index 67c69c261..41c9ac2d3 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -33,7 +33,25 @@ gUnknown_84623AC:: @ 84623AC .incbin "baserom.gba", 0x4623AC, 0x40 gUnknown_84623EC:: @ 84623EC - .incbin "baserom.gba", 0x4623EC, 0xA6C + .incbin "baserom.gba", 0x4623EC, 0x5E4 + +gUnknown_84629D0:: + .incbin "data/oak_speech/unk_84629D0.gbapal" + +gUnknown_84629F0:: + .incbin "data/oak_speech/unk_84629F0.gbapal" + +gUnknown_8462A10:: + .incbin "data/oak_speech/unk_8462A10.4bpp.lz" + +gUnknown_8462B74:: + .incbin "data/oak_speech/unk_8462B74.4bpp.lz" + +gUnknown_8462D34:: + .incbin "data/oak_speech/unk_8462D34.4bpp.lz" + +gUnknown_8462E18:: + .incbin "data/oak_speech/unk_8462E18.4bpp.lz" gUnknown_8462E58:: @ 8462E58 .incbin "baserom.gba", 0x462E58, 0xC @@ -100,22 +118,64 @@ gUnknown_8462EF0:: @ 8462EF0 .4byte gUnknown_81C5BB9 gUnknown_8462EFC:: @ 8462EFC - .incbin "baserom.gba", 0x462EFC, 0x18 + obj_tiles gUnknown_8462B74, 0x0400, 0x1001 + obj_tiles gUnknown_8462D34, 0x0200, 0x1002 + obj_tiles gUnknown_8462E18, 0x0080, 0x1003 gUnknown_8462F14:: @ 8462F14 - .incbin "baserom.gba", 0x462F14, 0x8 + obj_tiles gUnknown_8462A10, 0x0600, 0x1000 gUnknown_8462F1C:: @ 8462F1C - .incbin "baserom.gba", 0x462F1C, 0x8 + obj_pal gUnknown_84629F0, 0x1001 -gUnknown_8462F24:: @ 8462F24 - .incbin "baserom.gba", 0x462F24, 0x2C +gUnknown_8462F24:: @ 8462F14 + obj_pal gUnknown_84629D0, 0x1000 + +gUnknown_8462F2C:: + .incbin "baserom.gba", 0x462F2C, 0x8 + +gUnknown_8462F34:: + .incbin "baserom.gba", 0x462F34, 0x8 + +gUnknown_8462F3C:: + .incbin "baserom.gba", 0x462F3C, 0x8 + +gUnknown_8462F44:: + .4byte gUnknown_8462F2C + +gUnknown_8462F48:: + .4byte gUnknown_8462F34 + +gUnknown_8462F4C:: + .4byte gUnknown_8462F3C gUnknown_8462F50:: @ 8462F50 - .incbin "baserom.gba", 0x462F50, 0xDC + spr_template 0x1000, 0x1000, gUnknown_83ACAF8, gUnknown_8462F44, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0x1000, 0x1000, gUnknown_83ACAF8, gUnknown_8462F48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0x1000, 0x1000, gUnknown_83ACAF8, gUnknown_8462F4C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_8462F98:: + .incbin "baserom.gba", 0x462F98, 0xC + +gUnknown_8462FA4:: + .incbin "baserom.gba", 0x462FA4, 0x40 + +gUnknown_8462FE4:: + .incbin "baserom.gba", 0x462FE4, 0x3C + +gUnknown_8463020:: + .4byte gUnknown_8462F98 + +gUnknown_8463024:: + .4byte gUnknown_8462FA4 + +gUnknown_8463028:: + .4byte gUnknown_8462FE4 gUnknown_846302C:: @ 846302C - .incbin "baserom.gba", 0x46302C, 0x48 + spr_template 0x1001, 0x1001, gUnknown_83AC9D8, gUnknown_8463020, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0x1002, 0x1001, gUnknown_83AC9F8, gUnknown_8463024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0x1003, 0x1001, gUnknown_83AC9E8, gUnknown_8463028, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_8463074:: @ 8463074 .incbin "baserom.gba", 0x463074, 0x18 diff --git a/data/oak_speech/unk_84629D0.pal b/data/oak_speech/unk_84629D0.pal new file mode 100644 index 000000000..4fb339128 --- /dev/null +++ b/data/oak_speech/unk_84629D0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 189 164 +65 139 131 +82 148 139 +106 164 156 +131 180 172 +156 197 189 +180 213 205 +205 230 222 +230 246 238 +0 0 0 +255 0 255 +139 189 164 +156 205 172 +180 222 197 +205 238 222 +115 172 156 diff --git a/data/oak_speech/unk_84629F0.pal b/data/oak_speech/unk_84629F0.pal new file mode 100644 index 000000000..4d2e92c74 --- /dev/null +++ b/data/oak_speech/unk_84629F0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +205 205 180 +255 255 255 +255 246 106 +246 213 0 +238 172 0 +197 139 0 +131 82 0 +255 0 255 +255 0 255 +180 180 180 +255 74 74 +230 0 0 +180 0 0 +106 106 106 +16 16 16 +255 0 255 diff --git a/data/oak_speech/unk_8462A10.png b/data/oak_speech/unk_8462A10.png new file mode 100644 index 0000000000000000000000000000000000000000..324529e9041d2b20a276483c4fa0a4415d4d5613 GIT binary patch literal 271 zcmV+q0r38bP);jah+y+`u4L)*!F(3m8;F1H1!XHpLZn*ZRhM>u$KY4vb%e1{A0x z6qzh=YxpHdqAb;B(Wp(m*i--;`-45;By=KYKopMiJ}jt@!~l`I20S97Hg!i$pc)o5 zV7@f6N?3vr@JS+qk`)k)H3ZhM3r2Z-FKVx~jhWWXaCQ8M0>uCluI|QlfT(JNE002ovPDHLkV1j8RZ{Pp` literal 0 HcmV?d00001 diff --git a/data/oak_speech/unk_8462B74.png b/data/oak_speech/unk_8462B74.png new file mode 100644 index 0000000000000000000000000000000000000000..674cef46d8205c894555219b640b53ec1b0992c9 GIT binary patch literal 350 zcmV-k0iphhP)8@2y8_$AOIEq7-bkryh7-hEZg{@5sXXiLFU0I^9O9{^%Ic} zNGYk-nviuRR{`7>gvgv^9*jts&g5KSsKl>6$CqKOHjm{(mHK*9u2b+$EFZrYR$>ARJ+69^1cMn{U^kH^P zXK3U2F0xa17vtW#4@^d}OjT_OA5G7{W4irL_R$%Et8FH;6kR!LnpM^B@d%yvQSY%` z!8I%K{XW5+t@jy3&v5SSi}LX7nA12_y7|t-&lh+m{fm(m7Ek#&@mGdG&dX-SUHke! c?ys$3Or5%ciC^p0L6Gx3UHx3vIVCg!083U{AOHXW literal 0 HcmV?d00001 diff --git a/data/oak_speech/unk_8462E18.png b/data/oak_speech/unk_8462E18.png new file mode 100644 index 0000000000000000000000000000000000000000..f6796f7244d4b8f78fc8622a1799280682d9bbac GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExcAhSdAsjQ4fAF*N%;?#zP{4g^ z$B#0*356fu-krTk;h1maf*F76+q5^9zkj#4HPpJS_}#s^{H6jq=Ug*GiWw?Spos2.y = gSprites[sprite->data[0]].animCmdIndex; +} + +void sub_8130FD4(u8 taskId, u8 state) +{ + u8 spriteId; + u8 i = 0; + + switch (state) + { + case 0: + LoadCompressedObjectPic(&gUnknown_8462EFC[0]); + LoadCompressedObjectPic(&gUnknown_8462EFC[1]); + LoadCompressedObjectPic(&gUnknown_8462EFC[2]); + LoadSpritePalette(&gUnknown_8462F1C); + spriteId = CreateSprite(&gUnknown_846302C[0], 0x10, 0x11, 2); + gSprites[spriteId].oam.priority = 0; + gTasks[taskId].data[7] = spriteId; + spriteId = CreateSprite(&gUnknown_846302C[1], 0x10, 0x09, 3); + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].data[0] = gTasks[taskId].data[7]; + gSprites[spriteId].callback = sub_8130FB8; + gTasks[taskId].data[8] = spriteId; + spriteId = CreateSprite(&gUnknown_846302C[2], 0x18, 0x0D, 1); + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].data[0] = gTasks[taskId].data[7]; + gSprites[spriteId].callback = sub_8130FB8; + gTasks[taskId].data[9] = spriteId; + break; + case 1: + LoadCompressedObjectPic(&gUnknown_8462F14); + LoadSpritePalette(&gUnknown_8462F24); + for (i = 0; i < 3; i++) + { + spriteId = CreateSprite(&gUnknown_8462F50[i], i * 32 + 88, 0x70, 1); + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].animPaused = TRUE; + gSprites[spriteId].coordOffsetEnabled = TRUE; + gTasks[taskId].data[7 + i] = spriteId; + } + break; + } +} From 2bdcff73e612d127658a222d6605899f797f5236 Mon Sep 17 00:00:00 2001 From: scnorton Date: Thu, 11 Apr 2019 11:14:45 -0400 Subject: [PATCH 060/318] Disassemble sprite anims for oak_speech --- data/data_845FD54.s | 46 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/data/data_845FD54.s b/data/data_845FD54.s index 41c9ac2d3..b17d0fd12 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -132,13 +132,16 @@ gUnknown_8462F24:: @ 8462F14 obj_pal gUnknown_84629D0, 0x1000 gUnknown_8462F2C:: - .incbin "baserom.gba", 0x462F2C, 0x8 + obj_image_anim_frame 0, 0 + obj_image_anim_end gUnknown_8462F34:: - .incbin "baserom.gba", 0x462F34, 0x8 + obj_image_anim_frame 16, 0 + obj_image_anim_end gUnknown_8462F3C:: - .incbin "baserom.gba", 0x462F3C, 0x8 + obj_image_anim_frame 32, 0 + obj_image_anim_end gUnknown_8462F44:: .4byte gUnknown_8462F2C @@ -155,13 +158,44 @@ gUnknown_8462F50:: @ 8462F50 spr_template 0x1000, 0x1000, gUnknown_83ACAF8, gUnknown_8462F4C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_8462F98:: - .incbin "baserom.gba", 0x462F98, 0xC + obj_image_anim_frame 0x00, 30 + obj_image_anim_frame 0x10, 30 + obj_image_anim_jump 0 gUnknown_8462FA4:: - .incbin "baserom.gba", 0x462FA4, 0x40 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 8, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 8, 12 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 8, 12 + obj_image_anim_frame 0, 12 + obj_image_anim_frame 8, 12 + obj_image_anim_jump 0 gUnknown_8462FE4:: - .incbin "baserom.gba", 0x462FE4, 0x3C + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 2, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 2, 8 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 0, 60 + obj_image_anim_frame 2, 8 + obj_image_anim_frame 0, 8 + obj_image_anim_frame 2, 8 + obj_image_anim_jump 0 gUnknown_8463020:: .4byte gUnknown_8462F98 From b9e852193ae86f4e0f84fe1fea8116e095549b75 Mon Sep 17 00:00:00 2001 From: scnorton Date: Thu, 11 Apr 2019 12:19:58 -0400 Subject: [PATCH 061/318] through sub_8131338 --- asm/oak_speech.s | 367 -------------------------------- data/data_845FD54.s | 52 +---- data/oak_speech/unk_8460ED4.pal | 35 +++ data/oak_speech/unk_84615FC.pal | 35 +++ data/oak_speech/unk_8461CD4.pal | 35 +++ data/oak_speech/unk_84623AC.pal | 35 +++ src/oak_speech.c | 122 ++++++++++- 7 files changed, 260 insertions(+), 421 deletions(-) create mode 100644 data/oak_speech/unk_8460ED4.pal create mode 100644 data/oak_speech/unk_84615FC.pal create mode 100644 data/oak_speech/unk_8461CD4.pal create mode 100644 data/oak_speech/unk_84623AC.pal diff --git a/asm/oak_speech.s b/asm/oak_speech.s index f9d4e9b5a..cbe61c8ff 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,373 +5,6 @@ .text - thumb_func_start sub_8131168 -sub_8131168: @ 8131168 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - movs r4, 0 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r7, _081311AC @ =gTasks+0x8 -_0813117C: - adds r0, r4, 0x7 - lsls r0, 1 - adds r0, r5 - adds r0, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081311B0 @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _0813117C - cmp r6, 0 - beq _081311B4 - cmp r6, 0x1 - beq _081311DC - b _081311EC - .align 2, 0 -_081311AC: .4byte gTasks+0x8 -_081311B0: .4byte gSprites -_081311B4: - ldr r0, _081311D0 @ =0x00001003 - bl FreeSpriteTilesByTag - ldr r0, _081311D4 @ =0x00001002 - bl FreeSpriteTilesByTag - ldr r4, _081311D8 @ =0x00001001 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - b _081311EC - .align 2, 0 -_081311D0: .4byte 0x00001003 -_081311D4: .4byte 0x00001002 -_081311D8: .4byte 0x00001001 -_081311DC: - movs r4, 0x80 - lsls r4, 5 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag -_081311EC: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8131168 - - thumb_func_start sub_81311F4 -sub_81311F4: @ 81311F4 - push {r4-r6,lr} - sub sp, 0x24 - lsls r0, 16 - lsrs r0, 16 - adds r2, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - cmp r0, 0x1 - beq _08131230 - cmp r0, 0x1 - bgt _08131210 - cmp r0, 0 - beq _0813121A - b _081312F6 -_08131210: - cmp r2, 0x2 - beq _08131248 - cmp r2, 0x3 - beq _0813126C - b _081312F6 -_0813121A: - ldr r0, _08131228 @ =gUnknown_84615FC - movs r1, 0x40 - movs r2, 0x40 - bl LoadPalette - ldr r0, _0813122C @ =gUnknown_846163C - b _08131254 - .align 2, 0 -_08131228: .4byte gUnknown_84615FC -_0813122C: .4byte gUnknown_846163C -_08131230: - ldr r0, _08131240 @ =gUnknown_8460ED4 - movs r1, 0x40 - movs r2, 0x40 - bl LoadPalette - ldr r0, _08131244 @ =gUnknown_8460F14 - b _08131254 - .align 2, 0 -_08131240: .4byte gUnknown_8460ED4 -_08131244: .4byte gUnknown_8460F14 -_08131248: - ldr r0, _08131260 @ =gUnknown_84623AC - movs r1, 0x60 - movs r2, 0x40 - bl LoadPalette - ldr r0, _08131264 @ =gUnknown_84623EC -_08131254: - ldr r2, _08131268 @ =0x06000600 - adds r1, r4, r2 - bl LZ77UnCompVram - b _08131280 - .align 2, 0 -_08131260: .4byte gUnknown_84623AC -_08131264: .4byte gUnknown_84623EC -_08131268: .4byte 0x06000600 -_0813126C: - ldr r0, _08131300 @ =gUnknown_8461CD4 - movs r1, 0x60 - movs r2, 0x40 - bl LoadPalette - ldr r0, _08131304 @ =gUnknown_8461D14 - ldr r2, _08131308 @ =0x06000600 - adds r1, r4, r2 - bl LZ77UnCompVram -_08131280: - movs r0, 0x60 - bl AllocZeroed - ldr r2, _0813130C @ =sOakSpeechResources - ldr r1, [r2] - str r0, [r1, 0x4] - movs r1, 0 - lsrs r6, r4, 6 -_08131290: - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r0, r1 - strb r1, [r0] - adds r1, 0x1 - cmp r1, 0x5F - bls _08131290 - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r5, 0x10 - str r5, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - ldr r4, _0813130C @ =sOakSpeechResources - ldr r0, [r4] - ldr r1, [r0, 0x4] - movs r3, 0x8 - str r3, [sp] - movs r2, 0xC - str r2, [sp, 0x4] - movs r0, 0xB - str r0, [sp, 0x8] - movs r0, 0x2 - str r0, [sp, 0xC] - str r3, [sp, 0x10] - str r2, [sp, 0x14] - str r5, [sp, 0x18] - adds r0, r6, 0 - adds r0, 0x18 - str r0, [sp, 0x1C] - movs r5, 0 - str r5, [sp, 0x20] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyRectToBgTilemapBufferRect - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldr r0, [r4] - ldr r0, [r0, 0x4] - bl Free - ldr r0, [r4] - str r5, [r0, 0x4] -_081312F6: - add sp, 0x24 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08131300: .4byte gUnknown_8461CD4 -_08131304: .4byte gUnknown_8461D14 -_08131308: .4byte 0x06000600 -_0813130C: .4byte sOakSpeechResources - thumb_func_end sub_81311F4 - - thumb_func_start sub_8131310 -sub_8131310: @ 8131310 - push {lr} - sub sp, 0xC - movs r0, 0x8 - str r0, [sp] - movs r0, 0xC - str r0, [sp, 0x4] - movs r0, 0x10 - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - movs r2, 0xB - movs r3, 0x1 - bl FillBgTilemapBufferRect - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r0} - bx r0 - thumb_func_end sub_8131310 - - thumb_func_start sub_8131338 -sub_8131338: @ 8131338 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r1, _081313A8 @ =gTasks - lsls r0, r6, 2 - mov r9, r0 - adds r0, r6 - lsls r5, r0, 3 - adds r2, r5, r1 - ldrh r3, [r2, 0xA] - movs r7, 0xA - ldrsh r0, [r2, r7] - mov r8, r1 - cmp r0, 0 - bne _081313B0 - movs r1, 0x8 - ldrsh r0, [r2, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r8 - movs r0, 0x1 - strh r0, [r1, 0xC] - adds r0, r6, 0 - bl DestroyTask - ldr r6, _081313AC @ =gSprites - adds r2, r5, 0 - mov r5, r8 - adds r5, 0x8 - movs r3, 0x4 -_08131380: - adds r0, r4, 0x7 - lsls r0, 1 - adds r0, r2 - adds r0, r5 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _08131380 - b _0813143A - .align 2, 0 -_081313A8: .4byte gTasks -_081313AC: .4byte gSprites -_081313B0: - ldrh r1, [r2, 0x10] - movs r7, 0x10 - ldrsh r0, [r2, r7] - cmp r0, 0 - beq _081313C0 - subs r0, r1, 0x1 - strh r0, [r2, 0x10] - b _0813143A -_081313C0: - ldrh r0, [r2, 0xE] - strh r0, [r2, 0x10] - subs r1, r3, 0x1 - strh r1, [r2, 0xA] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - lsls r1, 16 - asrs r1, 16 - mov r12, r9 - cmp r1, 0x8 - bne _0813141E - adds r7, r5, 0 - movs r0, 0x8 - add r0, r8 - mov r10, r0 - movs r5, 0x1 - movs r1, 0x5 - negs r1, r1 - mov r9, r1 -_081313E8: - adds r0, r4, 0x7 - lsls r0, 1 - adds r0, r7 - add r0, r10 - movs r2, 0 - ldrsh r0, [r0, r2] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08131448 @ =gSprites - adds r2, r0 - adds r2, 0x3E - ldrb r3, [r2] - lsls r1, r3, 29 - lsrs r1, 31 - eors r1, r5 - ands r1, r5 - lsls r1, 2 - mov r0, r9 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _081313E8 -_0813141E: - mov r1, r12 - adds r0, r1, r6 - lsls r0, 3 - add r0, r8 - movs r2, 0xC - ldrsh r1, [r0, r2] - lsls r1, 8 - ldrh r0, [r0, 0xA] - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_0813143A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08131448: .4byte gSprites - thumb_func_end sub_8131338 - thumb_func_start sub_813144C sub_813144C: @ 813144C push {r4-r7,lr} diff --git a/data/data_845FD54.s b/data/data_845FD54.s index b17d0fd12..42d8923b3 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -5,56 +5,10 @@ .align 2 // oak_speech -gUnknown_8460D94:: @ 8460D94 - .incbin "baserom.gba", 0x460D94, 0xA0 - -gUnknown_8460E34:: @ 8460E34 - .incbin "baserom.gba", 0x460E34, 0xA0 - -gUnknown_8460ED4:: @ 8460ED4 - .incbin "baserom.gba", 0x460ED4, 0x40 - -gUnknown_8460F14:: @ 8460F14 - .incbin "baserom.gba", 0x460F14, 0x6E8 - -gUnknown_84615FC:: @ 84615FC - .incbin "baserom.gba", 0x4615FC, 0x40 - -gUnknown_846163C:: @ 846163C - .incbin "baserom.gba", 0x46163C, 0x698 - -gUnknown_8461CD4:: @ 8461CD4 - .incbin "baserom.gba", 0x461CD4, 0x40 - -gUnknown_8461D14:: @ 8461D14 - .incbin "baserom.gba", 0x461D14, 0x698 - -gUnknown_84623AC:: @ 84623AC - .incbin "baserom.gba", 0x4623AC, 0x40 - -gUnknown_84623EC:: @ 84623EC - .incbin "baserom.gba", 0x4623EC, 0x5E4 - -gUnknown_84629D0:: - .incbin "data/oak_speech/unk_84629D0.gbapal" - -gUnknown_84629F0:: - .incbin "data/oak_speech/unk_84629F0.gbapal" - -gUnknown_8462A10:: - .incbin "data/oak_speech/unk_8462A10.4bpp.lz" - -gUnknown_8462B74:: - .incbin "data/oak_speech/unk_8462B74.4bpp.lz" - -gUnknown_8462D34:: - .incbin "data/oak_speech/unk_8462D34.4bpp.lz" - -gUnknown_8462E18:: - .incbin "data/oak_speech/unk_8462E18.4bpp.lz" - gUnknown_8462E58:: @ 8462E58 - .incbin "baserom.gba", 0x462E58, 0xC + .4byte 0x000001f8 + .4byte 0x000021e1 + .4byte 0x00001bc2 gUnknown_8462E64:: @ 8462E64 window_template 0x00, 0x00, 0x07, 0x1e, 0x04, 0x0f, 0x0001 diff --git a/data/oak_speech/unk_8460ED4.pal b/data/oak_speech/unk_8460ED4.pal new file mode 100644 index 000000000..feb1214a1 --- /dev/null +++ b/data/oak_speech/unk_8460ED4.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +115 197 164 +255 238 205 +246 205 180 +213 164 148 +172 131 106 +106 74 65 +205 164 139 +164 123 98 +115 74 49 +74 41 16 +222 222 222 +180 180 180 +131 131 131 +82 82 90 +41 41 49 +255 255 255 +0 0 0 +131 189 213 +106 156 180 +82 131 156 +49 90 115 +32 65 90 +0 0 255 +255 255 189 +222 222 82 +172 172 57 +98 98 0 +213 131 123 +189 106 98 +164 82 74 +139 57 49 +98 24 16 diff --git a/data/oak_speech/unk_84615FC.pal b/data/oak_speech/unk_84615FC.pal new file mode 100644 index 000000000..7eec09831 --- /dev/null +++ b/data/oak_speech/unk_84615FC.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +115 197 164 +255 230 205 +222 189 156 +197 148 131 +148 106 90 +106 74 65 +205 164 139 +164 123 98 +115 74 49 +82 65 32 +222 222 222 +180 180 180 +131 131 131 +82 82 90 +57 57 65 +255 255 255 +0 0 0 +131 189 213 +106 156 180 +82 131 156 +49 90 115 +32 65 90 +0 0 255 +238 238 74 +205 205 49 +164 164 32 +98 98 0 +213 131 123 +189 106 98 +164 82 74 +139 57 49 +98 24 16 diff --git a/data/oak_speech/unk_8461CD4.pal b/data/oak_speech/unk_8461CD4.pal new file mode 100644 index 000000000..a0b648b2b --- /dev/null +++ b/data/oak_speech/unk_8461CD4.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +115 197 164 +255 230 205 +222 189 156 +197 148 115 +106 74 65 +238 222 148 +205 189 115 +172 156 90 +139 123 65 +98 90 49 +255 0 255 +205 205 222 +123 131 156 +57 74 106 +255 255 255 +0 0 0 +0 0 255 +172 148 222 +131 115 172 +82 65 115 +230 222 180 +205 197 156 +180 172 139 +164 156 123 +123 115 90 +82 57 49 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/oak_speech/unk_84623AC.pal b/data/oak_speech/unk_84623AC.pal new file mode 100644 index 000000000..8240527a6 --- /dev/null +++ b/data/oak_speech/unk_84623AC.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +115 197 164 +255 230 205 +222 189 156 +197 148 115 +106 74 65 +238 189 74 +213 156 57 +189 123 41 +139 82 41 +164 123 106 +222 222 222 +197 197 197 +139 139 139 +98 98 98 +65 65 65 +255 255 255 +0 0 0 +180 148 180 +139 106 139 +106 74 106 +82 49 82 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +246 131 131 +205 82 82 diff --git a/src/oak_speech.c b/src/oak_speech.c index 159a377cb..37f7169ff 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -29,7 +29,7 @@ struct OakSpeechResources { void * unk_0000; - u8 filler_0004[0x4]; + void * unk_0004; void * unk_0008; u8 filler_000C[4]; u16 unk_0010; @@ -96,7 +96,7 @@ static void CB2_ReturnFromNamingScreen(void); static void CreateNidoranFSprite(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); void sub_8131168(u8 taskId, u8 state); -void sub_81311F4(u8 arg0, u8 state); +void sub_81311F4(u16 whichPic, u16 tileOffset); void sub_8131310(void); void sub_813144C(u8 taskId, u8 state); void sub_81315CC(u8 taskId, u8 state); @@ -533,9 +533,22 @@ const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz") const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); const u32 gUnknown_8460CA4[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz"); const u32 gUnknown_8460CE8[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz"); - -extern const u16 gUnknown_8460D94[]; -extern const u16 gUnknown_8460E34[]; +const u16 gUnknown_8460D94[] = INCBIN_U16("data/oak_speech/unk_8460D94.bin"); +const u16 gUnknown_8460E34[] = INCBIN_U16("data/oak_speech/unk_8460E34.bin"); +const u16 gUnknown_8460ED4[] = INCBIN_U16("data/oak_speech/unk_8460ED4.gbapal"); +const u32 gUnknown_8460F14[] = INCBIN_U32("data/oak_speech/unk_8460F14.8bpp.lz"); +const u16 gUnknown_84615FC[] = INCBIN_U16("data/oak_speech/unk_84615FC.gbapal"); +const u32 gUnknown_846163C[] = INCBIN_U32("data/oak_speech/unk_846163C.8bpp.lz"); +const u16 gUnknown_8461CD4[] = INCBIN_U16("data/oak_speech/unk_8461CD4.gbapal"); +const u32 gUnknown_8461D14[] = INCBIN_U32("data/oak_speech/unk_8461D14.8bpp.lz"); +const u16 gUnknown_84623AC[] = INCBIN_U16("data/oak_speech/unk_84623AC.gbapal"); +const u32 gUnknown_84623EC[] = INCBIN_U32("data/oak_speech/unk_84623EC.8bpp.lz"); +const u16 gUnknown_84629D0[] = INCBIN_U16("data/oak_speech/unk_84629D0.gbapal"); +const u16 gUnknown_84629F0[] = INCBIN_U16("data/oak_speech/unk_84629F0.gbapal"); +const u32 gUnknown_8462A10[] = INCBIN_U32("data/oak_speech/unk_8462A10.4bpp.lz"); +const u32 gUnknown_8462B74[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz"); +const u32 gUnknown_8462D34[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz"); +const u32 gUnknown_8462E18[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz"); extern const struct BgTemplate gUnknown_8462E58[3]; extern const struct WindowTemplate *const gUnknown_8462EB4[3]; @@ -1845,3 +1858,102 @@ void sub_8130FD4(u8 taskId, u8 state) break; } } + +void sub_8131168(u8 taskId, u8 state) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + DestroySprite(&gSprites[gTasks[taskId].data[7 + i]]); + } + + switch (state) + { + case 0: + FreeSpriteTilesByTag(0x1003); + FreeSpriteTilesByTag(0x1002); + FreeSpriteTilesByTag(0x1001); + FreeSpritePaletteByTag(0x1001); + break; + case 1: + FreeSpriteTilesByTag(0x1000); + FreeSpritePaletteByTag(0x1000); + break; + } +} + +void sub_81311F4(u16 whichPic, u16 tileOffset) +{ + u32 i; + + switch (whichPic) + { + case 0: // FIRE + LoadPalette(gUnknown_84615FC, 0x40, 0x40); + LZ77UnCompVram(gUnknown_846163C, (void *)0x06000600 + tileOffset); + break; + case 1: // LEAF + LoadPalette(gUnknown_8460ED4, 0x40, 0x40); + LZ77UnCompVram(gUnknown_8460F14, (void *)0x06000600 + tileOffset); + break; + case 2: // BLUE + LoadPalette(gUnknown_84623AC, 0x60, 0x40); + LZ77UnCompVram(gUnknown_84623EC, (void *)0x06000600 + tileOffset); + break; + case 3: // OAK + LoadPalette(gUnknown_8461CD4, 0x60, 0x40); + LZ77UnCompVram(gUnknown_8461D14, (void *)0x06000600 + tileOffset); + break; + default: + return; + } + + sOakSpeechResources->unk_0004 = AllocZeroed(0x60); + for (i = 0; i < 0x60; i++) + ((u8 *)sOakSpeechResources->unk_0004)[i] = i; + FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x10); + CopyRectToBgTilemapBufferRect(2, sOakSpeechResources->unk_0004, 0, 0, 8, 12, 11, 2, 8, 12, 0x10, (tileOffset / 64) + 0x18, 0x00); + CopyBgTilemapBufferToVram(2); + Free(sOakSpeechResources->unk_0004); + sOakSpeechResources->unk_0004 = 0; +} + +void sub_8131310(void) +{ + FillBgTilemapBufferRect(2, 0x000, 11, 1, 8, 12, 0x10); + CopyBgTilemapBufferToVram(2); +} + +void sub_8131338(u8 taskId) +{ + u8 i = 0; + if (gTasks[taskId].data[1] == 0) + { + gTasks[gTasks[taskId].data[0]].data[2] = 1; + DestroyTask(taskId); + for (i = 0; i < 3; i++) + { + gSprites[gTasks[taskId].data[7 + i]].invisible = TRUE; + } + } + else + { + if (gTasks[taskId].data[4] != 0) + gTasks[taskId].data[4]--; + else + { + gTasks[taskId].data[4] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]--; + gTasks[taskId].data[2]++; + if (gTasks[taskId].data[1] == 8) + { + for (i = 0; i < 3; i++) + { + gSprites[gTasks[taskId].data[7 + i]].invisible ^= TRUE; + } + } + SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[2] * 256) + gTasks[taskId].data[1]); + } + } +} From fb7ba2161078a822da9698ef801472baf1ee0ed1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Thu, 11 Apr 2019 12:55:13 -0400 Subject: [PATCH 062/318] finish oak_speech code decomp --- asm/oak_speech.s | 476 ---------------------------------------- data/data_845FD54.s | 3 +- include/event_scripts.h | 1 + ld_script.txt | 1 - src/oak_speech.c | 128 +++++++++++ 5 files changed, 131 insertions(+), 478 deletions(-) delete mode 100644 asm/oak_speech.s diff --git a/asm/oak_speech.s b/asm/oak_speech.s deleted file mode 100644 index cbe61c8ff..000000000 --- a/asm/oak_speech.s +++ /dev/null @@ -1,476 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_813144C -sub_813144C: @ 813144C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r6, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - movs r7, 0 - ldr r1, _081314D0 @ =0x00001244 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r0, _081314D4 @ =gTasks - mov r8, r0 - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r0, r5, r0 - strh r7, [r0, 0xC] - ldr r0, _081314D8 @ =sub_8131338 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - mov r1, r8 - adds r0, r2, r1 - strh r4, [r0, 0x8] - movs r1, 0x10 - strh r1, [r0, 0xA] - strh r7, [r0, 0xC] - strh r6, [r0, 0xE] - strh r6, [r0, 0x10] - mov r3, r8 - adds r3, 0x8 -_081314AC: - adds r0, r7, 0x7 - lsls r0, 1 - adds r1, r0, r2 - adds r1, r3 - adds r0, r5 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x2 - bls _081314AC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081314D0: .4byte 0x00001244 -_081314D4: .4byte gTasks -_081314D8: .4byte sub_8131338 - thumb_func_end sub_813144C - - thumb_func_start sub_81314DC -sub_81314DC: @ 81314DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r1, _08131528 @ =gTasks - lsls r5, r6, 2 - adds r0, r5, r6 - lsls r0, 3 - mov r9, r0 - adds r2, r0, r1 - ldrh r3, [r2, 0xA] - movs r7, 0xA - ldrsh r0, [r2, r7] - mov r12, r1 - cmp r0, 0x10 - bne _08131530 - ldr r0, _0813152C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081315BA - movs r1, 0x8 - ldrsh r0, [r2, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r12 - movs r0, 0x1 - strh r0, [r1, 0xC] - adds r0, r6, 0 - bl DestroyTask - b _081315BA - .align 2, 0 -_08131528: .4byte gTasks -_0813152C: .4byte gPaletteFade -_08131530: - ldrh r1, [r2, 0x10] - movs r7, 0x10 - ldrsh r0, [r2, r7] - cmp r0, 0 - beq _08131540 - subs r0, r1, 0x1 - strh r0, [r2, 0x10] - b _081315BA -_08131540: - ldrh r0, [r2, 0xE] - strh r0, [r2, 0x10] - adds r1, r3, 0x2 - strh r1, [r2, 0xA] - ldrh r0, [r2, 0xC] - subs r0, 0x2 - strh r0, [r2, 0xC] - lsls r1, 16 - asrs r1, 16 - mov r8, r5 - cmp r1, 0x8 - bne _0813159E - mov r7, r9 - movs r0, 0x8 - add r0, r12 - mov r10, r0 - movs r5, 0x1 - movs r1, 0x5 - negs r1, r1 - mov r9, r1 -_08131568: - adds r0, r4, 0x7 - lsls r0, 1 - adds r0, r7 - add r0, r10 - movs r2, 0 - ldrsh r0, [r0, r2] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081315C8 @ =gSprites - adds r2, r0 - adds r2, 0x3E - ldrb r3, [r2] - lsls r1, r3, 29 - lsrs r1, 31 - eors r1, r5 - ands r1, r5 - lsls r1, 2 - mov r0, r9 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _08131568 -_0813159E: - mov r1, r8 - adds r0, r1, r6 - lsls r0, 3 - add r0, r12 - movs r2, 0xC - ldrsh r1, [r0, r2] - lsls r1, 8 - ldrh r0, [r0, 0xA] - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_081315BA: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081315C8: .4byte gSprites - thumb_func_end sub_81314DC - - thumb_func_start sub_81315CC -sub_81315CC: @ 81315CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r6, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - movs r7, 0 - ldr r1, _08131654 @ =0x00001244 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r0, _08131658 @ =gTasks - mov r8, r0 - lsls r5, r4, 2 - adds r5, r4 - lsls r5, 3 - adds r0, r5, r0 - strh r7, [r0, 0xC] - ldr r0, _0813165C @ =sub_81314DC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - mov r1, r8 - adds r0, r2, r1 - strh r4, [r0, 0x8] - strh r7, [r0, 0xA] - movs r1, 0x10 - strh r1, [r0, 0xC] - strh r6, [r0, 0xE] - strh r6, [r0, 0x10] - mov r3, r8 - adds r3, 0x8 -_0813162E: - adds r0, r7, 0x7 - lsls r0, 1 - adds r1, r0, r2 - adds r1, r3 - adds r0, r5 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x2 - bls _0813162E - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08131654: .4byte 0x00001244 -_08131658: .4byte gTasks -_0813165C: .4byte sub_81314DC - thumb_func_end sub_81315CC - - thumb_func_start sub_8131660 -sub_8131660: @ 8131660 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - mov r8, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r5, _081316DC @ =gTasks+0x8 - adds r7, r4, r5 - ldr r0, _081316E0 @ =gUnknown_8462ED8 - bl AddWindow - strh r0, [r7, 0x1A] - lsls r0, 24 - lsrs r0, 24 - bl PutWindowTilemap - ldrb r6, [r7, 0x1A] - bl sub_80F796C - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - movs r1, 0x1 - movs r3, 0xE - bl SetWindowBorderStyle - adds r5, r4 - ldrb r0, [r5, 0x1A] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldrb r0, [r7, 0x1A] - ldr r2, _081316E4 @ =gUnknown_81C574F - movs r1, 0x1 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - mov r0, r8 - cmp r0, 0 - bne _081316F4 - ldr r0, _081316E8 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - ldr r6, _081316EC @ =gUnknown_84630D8 - cmp r0, 0 - bne _081316F6 - ldr r6, _081316F0 @ =gUnknown_846308C - b _081316F6 - .align 2, 0 -_081316DC: .4byte gTasks+0x8 -_081316E0: .4byte gUnknown_8462ED8 -_081316E4: .4byte gUnknown_81C574F -_081316E8: .4byte gSaveBlock2Ptr -_081316EC: .4byte gUnknown_84630D8 -_081316F0: .4byte gUnknown_846308C -_081316F4: - ldr r6, _08131750 @ =gUnknown_8463124 -_081316F6: - movs r4, 0 - movs r5, 0 -_081316FA: - ldrb r0, [r7, 0x1A] - lsls r1, r4, 2 - adds r1, r6 - ldr r2, [r1] - adds r4, 0x1 - lsls r1, r4, 4 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - lsls r4, 24 - lsrs r4, 24 - cmp r4, 0x3 - bls _081316FA - ldrb r0, [r7, 0x1A] - movs r1, 0x10 - str r1, [sp] - movs r1, 0x5 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x1 - bl sub_810F7D8 - ldrb r0, [r7, 0x1A] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08131750: .4byte gUnknown_8463124 - thumb_func_end sub_8131660 - - thumb_func_start sub_8131754 -sub_8131754: @ 8131754 - push {r4,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r2, r1, 24 - cmp r0, 0 - bne _081317A0 - ldr r0, _08131770 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08131778 - ldr r4, _08131774 @ =gUnknown_846308C - b _0813177A - .align 2, 0 -_08131770: .4byte gSaveBlock2Ptr -_08131774: .4byte gUnknown_846308C -_08131778: - ldr r4, _08131798 @ =gUnknown_84630D8 -_0813177A: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x13 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 14 - adds r0, r4 - ldr r3, [r0] - ldr r0, _0813179C @ =gSaveBlock2Ptr - ldr r4, [r0] - b _081317B0 - .align 2, 0 -_08131798: .4byte gUnknown_84630D8 -_0813179C: .4byte gSaveBlock2Ptr -_081317A0: - ldr r1, _081317EC @ =gUnknown_8463124 - lsls r0, r2, 2 - adds r0, r1 - ldr r3, [r0] - ldr r0, _081317F0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _081317F4 @ =0x00003a4c - adds r4, r0, r1 -_081317B0: - movs r2, 0 - ldrb r0, [r3] - cmp r0, 0xFF - beq _081317D2 -_081317B8: - adds r1, r4, r2 - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x6 - bhi _081317D2 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0xFF - bne _081317B8 -_081317D2: - cmp r2, 0x7 - bhi _081317E6 - movs r1, 0xFF -_081317D8: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _081317D8 -_081317E6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081317EC: .4byte gUnknown_8463124 -_081317F0: .4byte gSaveBlock1Ptr -_081317F4: .4byte 0x00003a4c - thumb_func_end sub_8131754 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_845FD54.s b/data/data_845FD54.s index 42d8923b3..d26c0c7ab 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -55,7 +55,8 @@ gUnknown_8462ED0:: @ 8462ED0 window_template 0x00, 0x02, 0x02, 0x06, 0x04, 0x0f, 0x0180 gUnknown_8462ED8:: @ 8462ED8 - .incbin "baserom.gba", 0x462ED8, 0x10 + window_template 0x00, 0x02, 0x02, 0x0c, 0x0a, 0x0f, 0x0001 + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 .align 2 gUnknown_8462EE8:: @ 8462EE8 diff --git a/include/event_scripts.h b/include/event_scripts.h index 4b0930e9f..101148d60 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -705,6 +705,7 @@ extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni3[]; extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni4[]; extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni5[]; +extern const u8 gUnknown_81C574F[]; extern const u8 gUnknown_81C582D[]; extern const u8 gUnknown_81C59D5[]; extern const u8 gUnknown_81C5C78[]; diff --git a/ld_script.txt b/ld_script.txt index 50368d5eb..d5ed81e21 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -229,7 +229,6 @@ SECTIONS { src/fame_checker.o(.text); asm/menu2.o(.text); src/oak_speech.o(.text); - asm/oak_speech.o(.text); asm/tm_case.o(.text); asm/menu_indicators.o(.text); asm/pokedex_area_markers.o(.text); diff --git a/src/oak_speech.c b/src/oak_speech.c index 37f7169ff..63e3ae87d 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -23,6 +23,7 @@ #include "naming_screen.h" #include "math_util.h" #include "overworld.h" +#include "random.h" #include "constants/species.h" #include "constants/songs.h" @@ -555,6 +556,7 @@ extern const struct WindowTemplate *const gUnknown_8462EB4[3]; extern const struct WindowTemplate gUnknown_8462EC0; extern const struct WindowTemplate gUnknown_8462EC8; extern const struct WindowTemplate gUnknown_8462ED0; +extern const struct WindowTemplate gUnknown_8462ED8; extern const struct TextColor gUnknown_8462EE8; extern const struct TextColor gUnknown_8462EEC; extern const u8 *const gUnknown_8462EF0[]; @@ -565,6 +567,9 @@ extern const struct SpritePalette gUnknown_8462F24; extern const struct SpriteTemplate gUnknown_8462F50[3]; extern const struct SpriteTemplate gUnknown_846302C[3]; extern const u8 *const gUnknown_8463074[]; +extern const u8 *const gUnknown_846308C[]; +extern const u8 *const gUnknown_84630D8[]; +extern const u8 *const gUnknown_8463124[]; void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) { @@ -1957,3 +1962,126 @@ void sub_8131338(u8 taskId) } } } + +void sub_813144C(u8 taskId, u8 state) +{ + u8 taskId2; + u8 i = 0; + + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x10); + SetGpuReg(REG_OFFSET_BLDY, 0); + gTasks[taskId].data[2] = 0; + taskId2 = CreateTask(sub_8131338, 0); + gTasks[taskId2].data[0] = taskId; + gTasks[taskId2].data[1] = 16; + gTasks[taskId2].data[2] = 0; + gTasks[taskId2].data[3] = state; + gTasks[taskId2].data[4] = state; + for (i = 0; i < 3; i++) + { + gTasks[taskId2].data[7 + i] = gTasks[taskId].data[7 + i]; + } +} + +void sub_81314DC(u8 taskId) +{ + u8 i = 0; + + if (gTasks[taskId].data[1] == 16) + { + if (!gPaletteFade.active) + { + gTasks[gTasks[taskId].data[0]].data[2] = 1; + DestroyTask(taskId); + } + } + else + { + if (gTasks[taskId].data[4] != 0) + gTasks[taskId].data[4]--; + else + { + gTasks[taskId].data[4] = gTasks[taskId].data[3]; + gTasks[taskId].data[1] += 2; + gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].data[1] == 8) + { + for (i = 0; i < 3; i++) + { + gSprites[gTasks[taskId].data[7 + i]].invisible ^= TRUE; + } + } + SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[2] * 256) + gTasks[taskId].data[1]); + } + } +} + +void sub_81315CC(u8 taskId, u8 state) +{ + u8 taskId2; + u8 i = 0; + + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x1000); + SetGpuReg(REG_OFFSET_BLDY, 0); + gTasks[taskId].data[2] = 0; + taskId2 = CreateTask(sub_81314DC, 0); + gTasks[taskId2].data[0] = taskId; + gTasks[taskId2].data[1] = 0; + gTasks[taskId2].data[2] = 16; + gTasks[taskId2].data[3] = state; + gTasks[taskId2].data[4] = state; + for (i = 0; i < 3; i++) + { + gTasks[taskId2].data[7 + i] = gTasks[taskId].data[7 + i]; + } +} + +void sub_8131660(u8 taskId, u8 state) +{ + s16 * data = gTasks[taskId].data; + const u8 *const * textPtrs; + u8 i; + + data[13] = AddWindow(&gUnknown_8462ED8); + PutWindowTilemap(data[13]); + SetWindowBorderStyle(data[13], 1, sub_80F796C(), 14); + FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11); + AddTextPrinterParameterized(data[13], 2, gUnknown_81C574F, 8, 1, 0, NULL); + if (state == 0) + textPtrs = gSaveBlock2Ptr->playerGender == MALE ? gUnknown_846308C : gUnknown_84630D8; + else + textPtrs = gUnknown_8463124; + for (i = 0; i < 4; i++) + { + AddTextPrinterParameterized(data[13], 2, textPtrs[i], 8, 16 * (i + 1) + 1, 0, NULL); + } + sub_810F7D8(data[13], 2, 0, 1, 16, 5, 0); + CopyWindowToVram(data[13], 3); +} + +void sub_8131754(u8 arg0, u8 namePick) +{ + const u8 * src; + u8 * dest; + u8 i; + + if (arg0 == 0) + { + if (gSaveBlock2Ptr->playerGender == MALE) + src = gUnknown_846308C[Random() % 19]; + else + src = gUnknown_84630D8[Random() % 19]; + dest = gSaveBlock2Ptr->playerName; + } + else + { + src = gUnknown_8463124[namePick]; + dest = gSaveBlock1Ptr->rivalName; + } + for (i = 0; i < PLAYER_NAME_LENGTH - 1 && src[i] != EOS; i++) + dest[i] = src[i]; + for (; i < PLAYER_NAME_LENGTH; i++) + dest[i] = EOS; +} From 18b20721d91e811595491d70e9512ace654e4f5a Mon Sep 17 00:00:00 2001 From: scnorton Date: Thu, 11 Apr 2019 13:20:51 -0400 Subject: [PATCH 063/318] Remaining oak_speech data --- data/data_845FD54.s | 175 +------------------- include/event_scripts.h | 51 ++++++ src/oak_speech.c | 352 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 381 insertions(+), 197 deletions(-) diff --git a/data/data_845FD54.s b/data/data_845FD54.s index d26c0c7ab..52b6dcb1f 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -4,180 +4,7 @@ .section .rodata .align 2 - // oak_speech -gUnknown_8462E58:: @ 8462E58 - .4byte 0x000001f8 - .4byte 0x000021e1 - .4byte 0x00001bc2 - -gUnknown_8462E64:: @ 8462E64 - window_template 0x00, 0x00, 0x07, 0x1e, 0x04, 0x0f, 0x0001 - -gUnknown_8462E6C:: @ 8462E6C - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - -gUnknown_8462E74:: @ 8462E74 - window_template 0x00, 0x06, 0x03, 0x18, 0x06, 0x0f, 0x0001 - -gUnknown_8462E7C:: @ 8462E7C - window_template 0x00, 0x06, 0x0a, 0x18, 0x04, 0x0f, 0x0092 - -gUnknown_8462E84:: @ 8462E84 - window_template 0x00, 0x06, 0x0f, 0x18, 0x04, 0x0f, 0x00f3 - -gUnknown_8462E8C:: @ 8462E8C - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - -gUnknown_8462E94:: @ 8462E94 - window_template 0x00, 0x06, 0x03, 0x18, 0x04, 0x0f, 0x0001 - -gUnknown_8462E9C:: @ 8462E9C - window_template 0x00, 0x06, 0x08, 0x18, 0x04, 0x0f, 0x0062 - -gUnknown_8462EA4:: @ 8462EA4 - window_template 0x00, 0x06, 0x0d, 0x18, 0x06, 0x0f, 0x00c3 - -gUnknown_8462EAC:: @ 8462EAC - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - -gUnknown_8462EB4:: @ 8462EB4 - .4byte gUnknown_8462E64 - .4byte gUnknown_8462E74 - .4byte gUnknown_8462E94 - -gUnknown_8462EC0:: @ 8462EC0 - window_template 0x00, 0x01, 0x04, 0x1c, 0x0f, 0x0f, 0x0001 - -gUnknown_8462EC8:: @ 8462EC8 - window_template 0x00, 0x12, 0x09, 0x09, 0x04, 0x0f, 0x0174 - -gUnknown_8462ED0:: @ 8462ED0 - window_template 0x00, 0x02, 0x02, 0x06, 0x04, 0x0f, 0x0180 - -gUnknown_8462ED8:: @ 8462ED8 - window_template 0x00, 0x02, 0x02, 0x0c, 0x0a, 0x0f, 0x0001 - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - - .align 2 -gUnknown_8462EE8:: @ 8462EE8 - .byte 0x00, 0x01, 0x02 - - .align 2 -gUnknown_8462EEC:: @ 8462EEC - .byte 0x00, 0x02, 0x03 - - .align 2 -gUnknown_8462EF0:: @ 8462EF0 - .4byte gUnknown_81C5A04 - .4byte gUnknown_81C5AEB - .4byte gUnknown_81C5BB9 - -gUnknown_8462EFC:: @ 8462EFC - obj_tiles gUnknown_8462B74, 0x0400, 0x1001 - obj_tiles gUnknown_8462D34, 0x0200, 0x1002 - obj_tiles gUnknown_8462E18, 0x0080, 0x1003 - -gUnknown_8462F14:: @ 8462F14 - obj_tiles gUnknown_8462A10, 0x0600, 0x1000 - -gUnknown_8462F1C:: @ 8462F1C - obj_pal gUnknown_84629F0, 0x1001 - -gUnknown_8462F24:: @ 8462F14 - obj_pal gUnknown_84629D0, 0x1000 - -gUnknown_8462F2C:: - obj_image_anim_frame 0, 0 - obj_image_anim_end - -gUnknown_8462F34:: - obj_image_anim_frame 16, 0 - obj_image_anim_end - -gUnknown_8462F3C:: - obj_image_anim_frame 32, 0 - obj_image_anim_end - -gUnknown_8462F44:: - .4byte gUnknown_8462F2C - -gUnknown_8462F48:: - .4byte gUnknown_8462F34 - -gUnknown_8462F4C:: - .4byte gUnknown_8462F3C - -gUnknown_8462F50:: @ 8462F50 - spr_template 0x1000, 0x1000, gUnknown_83ACAF8, gUnknown_8462F44, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 0x1000, 0x1000, gUnknown_83ACAF8, gUnknown_8462F48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 0x1000, 0x1000, gUnknown_83ACAF8, gUnknown_8462F4C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_8462F98:: - obj_image_anim_frame 0x00, 30 - obj_image_anim_frame 0x10, 30 - obj_image_anim_jump 0 - -gUnknown_8462FA4:: - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 8, 12 - obj_image_anim_frame 0, 12 - obj_image_anim_frame 8, 12 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 8, 12 - obj_image_anim_frame 0, 12 - obj_image_anim_frame 8, 12 - obj_image_anim_jump 0 - -gUnknown_8462FE4:: - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 2, 8 - obj_image_anim_frame 0, 8 - obj_image_anim_frame 2, 8 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 0, 60 - obj_image_anim_frame 2, 8 - obj_image_anim_frame 0, 8 - obj_image_anim_frame 2, 8 - obj_image_anim_jump 0 - -gUnknown_8463020:: - .4byte gUnknown_8462F98 - -gUnknown_8463024:: - .4byte gUnknown_8462FA4 - -gUnknown_8463028:: - .4byte gUnknown_8462FE4 - -gUnknown_846302C:: @ 846302C - spr_template 0x1001, 0x1001, gUnknown_83AC9D8, gUnknown_8463020, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 0x1002, 0x1001, gUnknown_83AC9F8, gUnknown_8463024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 0x1003, 0x1001, gUnknown_83AC9E8, gUnknown_8463028, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_8463074:: @ 8463074 - .incbin "baserom.gba", 0x463074, 0x18 - -gUnknown_846308C:: @ 846308C - .incbin "baserom.gba", 0x46308C, 0x4C - -gUnknown_84630D8:: @ 84630D8 - .incbin "baserom.gba", 0x4630D8, 0x4C - -gUnknown_8463124:: @ 8463124 - .incbin "baserom.gba", 0x463124, 0x10 - + @ tm_case gUnknown_8463134:: @ 8463134 .incbin "baserom.gba", 0x463134, 0xC diff --git a/include/event_scripts.h b/include/event_scripts.h index 101148d60..d925f4b52 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -706,8 +706,59 @@ extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni4[]; extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni5[]; extern const u8 gUnknown_81C574F[]; +extern const u8 gUnknown_81C5758[]; +extern const u8 gUnknown_81C575E[]; +extern const u8 gUnknown_81C575E[]; +extern const u8 gUnknown_81C5767[]; +extern const u8 gUnknown_81C5767[]; +extern const u8 gUnknown_81C576C[]; +extern const u8 gUnknown_81C5771[]; +extern const u8 gUnknown_81C5775[]; +extern const u8 gUnknown_81C577A[]; +extern const u8 gUnknown_81C577E[]; +extern const u8 gUnknown_81C5783[]; +extern const u8 gUnknown_81C5788[]; +extern const u8 gUnknown_81C578C[]; +extern const u8 gUnknown_81C5792[]; +extern const u8 gUnknown_81C5797[]; +extern const u8 gUnknown_81C579D[]; +extern const u8 gUnknown_81C57A2[]; +extern const u8 gUnknown_81C57A9[]; +extern const u8 gUnknown_81C57AF[]; +extern const u8 gUnknown_81C57B4[]; +extern const u8 gUnknown_81C57B8[]; +extern const u8 gUnknown_81C57BC[]; +extern const u8 gUnknown_81C57C2[]; +extern const u8 gUnknown_81C57C6[]; +extern const u8 gUnknown_81C57CB[]; +extern const u8 gUnknown_81C57D0[]; +extern const u8 gUnknown_81C57D4[]; +extern const u8 gUnknown_81C57D9[]; +extern const u8 gUnknown_81C57E0[]; +extern const u8 gUnknown_81C57E8[]; +extern const u8 gUnknown_81C57EE[]; +extern const u8 gUnknown_81C57F4[]; +extern const u8 gUnknown_81C57FA[]; +extern const u8 gUnknown_81C57FF[]; +extern const u8 gUnknown_81C5806[]; +extern const u8 gUnknown_81C580A[]; +extern const u8 gUnknown_81C580F[]; +extern const u8 gUnknown_81C5814[]; +extern const u8 gUnknown_81C5819[]; +extern const u8 gUnknown_81C581F[]; +extern const u8 gUnknown_81C5823[]; +extern const u8 gUnknown_81C5828[]; extern const u8 gUnknown_81C582D[]; +extern const u8 gUnknown_81C5875[]; +extern const u8 gUnknown_81C58BA[]; +extern const u8 gUnknown_81C58F9[]; +extern const u8 gUnknown_81C592B[]; +extern const u8 gUnknown_81C594F[]; +extern const u8 gUnknown_81C5981[]; extern const u8 gUnknown_81C59D5[]; +extern const u8 gUnknown_81C5A04[]; +extern const u8 gUnknown_81C5AEB[]; +extern const u8 gUnknown_81C5BB9[]; extern const u8 gUnknown_81C5C78[]; extern const u8 gUnknown_81C5D06[]; extern const u8 gUnknown_81C5D12[]; diff --git a/src/oak_speech.c b/src/oak_speech.c index 63e3ae87d..f400c6dbb 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -551,25 +551,331 @@ const u32 gUnknown_8462B74[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz") const u32 gUnknown_8462D34[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz"); const u32 gUnknown_8462E18[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz"); -extern const struct BgTemplate gUnknown_8462E58[3]; -extern const struct WindowTemplate *const gUnknown_8462EB4[3]; -extern const struct WindowTemplate gUnknown_8462EC0; -extern const struct WindowTemplate gUnknown_8462EC8; -extern const struct WindowTemplate gUnknown_8462ED0; -extern const struct WindowTemplate gUnknown_8462ED8; -extern const struct TextColor gUnknown_8462EE8; -extern const struct TextColor gUnknown_8462EEC; -extern const u8 *const gUnknown_8462EF0[]; -extern const struct CompressedSpriteSheet gUnknown_8462EFC[3]; -extern const struct CompressedSpriteSheet gUnknown_8462F14; -extern const struct SpritePalette gUnknown_8462F1C; -extern const struct SpritePalette gUnknown_8462F24; -extern const struct SpriteTemplate gUnknown_8462F50[3]; -extern const struct SpriteTemplate gUnknown_846302C[3]; -extern const u8 *const gUnknown_8463074[]; -extern const u8 *const gUnknown_846308C[]; -extern const u8 *const gUnknown_84630D8[]; -extern const u8 *const gUnknown_8463124[]; +const struct BgTemplate gUnknown_8462E58[3] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 1, + .paletteMode = 1, + .priority = 1, + .baseTile = 0x000 + } +}; + +const struct WindowTemplate gUnknown_8462E64[] = { + { + .priority = 0x00, + .tilemapLeft = 0x00, + .tilemapTop = 0x07, + .width = 0x1e, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0001 + }, DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_8462E74[] = { + { + .priority = 0x00, + .tilemapLeft = 0x06, + .tilemapTop = 0x03, + .width = 0x18, + .height = 0x06, + .paletteNum = 0x0f, + .baseBlock = 0x0001 + }, { + .priority = 0x00, + .tilemapLeft = 0x06, + .tilemapTop = 0x0a, + .width = 0x18, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0092 + }, { + .priority = 0x00, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x18, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x00f3 + }, DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_8462E94[] = { + { + .priority = 0x00, + .tilemapLeft = 0x06, + .tilemapTop = 0x03, + .width = 0x18, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0001 + }, { + .priority = 0x00, + .tilemapLeft = 0x06, + .tilemapTop = 0x08, + .width = 0x18, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0062 + }, { + .priority = 0x00, + .tilemapLeft = 0x06, + .tilemapTop = 0x0d, + .width = 0x18, + .height = 0x06, + .paletteNum = 0x0f, + .baseBlock = 0x00c3 + }, DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate *const gUnknown_8462EB4[3] = { + gUnknown_8462E64, + gUnknown_8462E74, + gUnknown_8462E94 +}; + +const struct WindowTemplate gUnknown_8462EC0[] = { + { + .priority = 0x00, + .tilemapLeft = 0x01, + .tilemapTop = 0x04, + .width = 0x1c, + .height = 0x0f, + .paletteNum = 0x0f, + .baseBlock = 0x0001 + }, { + .priority = 0x00, + .tilemapLeft = 0x12, + .tilemapTop = 0x09, + .width = 0x09, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0174 + }, { + .priority = 0x00, + .tilemapLeft = 0x02, + .tilemapTop = 0x02, + .width = 0x06, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0180 + }, { + .priority = 0x00, + .tilemapLeft = 0x02, + .tilemapTop = 0x02, + .width = 0x0c, + .height = 0x0a, + .paletteNum = 0x0f, + .baseBlock = 0x0001 + }, DUMMY_WIN_TEMPLATE +}; + +ALIGNED(4) const struct TextColor gUnknown_8462EE8 = { + 0x00, 0x01, 0x02 +}; + +ALIGNED(4) const struct TextColor gUnknown_8462EEC = { + 0x00, 0x02, 0x03 +}; + +const u8 *const gUnknown_8462EF0[] = { + gUnknown_81C5A04, + gUnknown_81C5AEB, + gUnknown_81C5BB9 +}; + +const struct CompressedSpriteSheet gUnknown_8462EFC[3] = { + { (const void *)gUnknown_8462B74, 0x0400, 0x1001 }, + { (const void *)gUnknown_8462D34, 0x0200, 0x1002 }, + { (const void *)gUnknown_8462E18, 0x0080, 0x1003 }, +}; + +const struct CompressedSpriteSheet gUnknown_8462F14 = { + (const void *)gUnknown_8462A10, 0x0600, 0x1000 +}; + +const struct SpritePalette gUnknown_8462F1C = { + (const void *)gUnknown_84629F0, 0x1001 +}; +const struct SpritePalette gUnknown_8462F24 = { + (const void *)gUnknown_84629D0, 0x1000 +}; + +const union AnimCmd gUnknown_8462F2C[] = { + ANIMCMD_FRAME( 0, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8462F34[] = { + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8462F3C[] = { + ANIMCMD_FRAME(32, 0), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_8462F44[] = { + gUnknown_8462F2C +}; +const union AnimCmd *const gUnknown_8462F48[] = { + gUnknown_8462F34 +}; +const union AnimCmd *const gUnknown_8462F4C[] = { + gUnknown_8462F3C +}; + +extern const struct OamData gUnknown_83ACAF8; + +const struct SpriteTemplate gUnknown_8462F50[3] = { + { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F44, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F4C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, +}; + +const union AnimCmd gUnknown_8462F98[] = { + ANIMCMD_FRAME( 0, 30), + ANIMCMD_FRAME(16, 30), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gUnknown_8462FA4[] = { + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gUnknown_8462FE4[] = { + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_8463020[] = { + gUnknown_8462F98 +}; +const union AnimCmd *const gUnknown_8463024[] = { + gUnknown_8462FA4 +}; +const union AnimCmd *const gUnknown_8463028[] = { + gUnknown_8462FE4 +}; + +extern const struct OamData gUnknown_83AC9D8; +extern const struct OamData gUnknown_83AC9F8; +extern const struct OamData gUnknown_83AC9E8; + +const struct SpriteTemplate gUnknown_846302C[3] = { + { 0x1001, 0x1001, &gUnknown_83AC9D8, gUnknown_8463020, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1002, 0x1001, &gUnknown_83AC9F8, gUnknown_8463024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1003, 0x1001, &gUnknown_83AC9E8, gUnknown_8463028, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy } +}; + +const u8 *const gUnknown_8463074[] = { + gUnknown_81C5875, + gUnknown_81C58BA, + gUnknown_81C58F9, + gUnknown_81C592B, + gUnknown_81C594F, + gUnknown_81C5981 +}; + +const u8 *const gUnknown_846308C[] = { + gUnknown_81C575E, + gUnknown_81C5767, + gUnknown_81C577A, + gUnknown_81C577E, + gUnknown_81C5783, + gUnknown_81C5788, + gUnknown_81C578C, + gUnknown_81C5792, + gUnknown_81C5797, + gUnknown_81C579D, + gUnknown_81C57A2, + gUnknown_81C57A9, + gUnknown_81C57AF, + gUnknown_81C57B4, + gUnknown_81C57B8, + gUnknown_81C57BC, + gUnknown_81C57C2, + gUnknown_81C57C6, + gUnknown_81C57CB +}; + +const u8 *const gUnknown_84630D8[] = { + gUnknown_81C575E, + gUnknown_81C5767, + gUnknown_81C57D0, + gUnknown_81C57D4, + gUnknown_81C57D9, + gUnknown_81C57E0, + gUnknown_81C57E8, + gUnknown_81C57EE, + gUnknown_81C57F4, + gUnknown_81C57FA, + gUnknown_81C57FF, + gUnknown_81C5806, + gUnknown_81C580A, + gUnknown_81C580F, + gUnknown_81C5814, + gUnknown_81C5819, + gUnknown_81C581F, + gUnknown_81C5823, + gUnknown_81C5828 +}; + +const u8 *const gUnknown_8463124[] = { + gUnknown_81C5758, + gUnknown_81C576C, + gUnknown_81C5771, + gUnknown_81C5775 +}; + void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) { @@ -919,7 +1225,7 @@ void sub_812F33C(u8 taskId) CopyBgTilemapBufferToVram(1); Free(sOakSpeechResources->unk_0008); sOakSpeechResources->unk_0008 = NULL; - data[14] = AddWindow(&gUnknown_8462EC0); + data[14] = AddWindow(&gUnknown_8462EC0[0]); PutWindowTilemap(data[14]); FillWindowPixelBuffer(data[14], 0x00); CopyWindowToVram(data[14], 3); @@ -1248,7 +1554,7 @@ void sub_812FE88(u8 taskId) { if (!IsTextPrinterActive(0)) { - gTasks[taskId].data[13] = AddWindow(&gUnknown_8462EC8); + gTasks[taskId].data[13] = AddWindow(&gUnknown_8462EC0[1]); PutWindowTilemap(gTasks[taskId].data[13]); SetWindowBorderStyle(gTasks[taskId].data[13], 1, sub_80F796C(), 14); FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11); @@ -1442,7 +1748,7 @@ void sub_8130464(u8 taskId) data[3]--; else { - sub_810FF60(&gUnknown_8462ED0, 2, 0, 2, sub_80F796C(), 14, 0); + sub_810FF60(&gUnknown_8462EC0[2], 2, 0, 2, sub_80F796C(), 14, 0); gTasks[taskId].func = sub_8130554; } } @@ -2044,7 +2350,7 @@ void sub_8131660(u8 taskId, u8 state) const u8 *const * textPtrs; u8 i; - data[13] = AddWindow(&gUnknown_8462ED8); + data[13] = AddWindow(&gUnknown_8462EC0[3]); PutWindowTilemap(data[13]); SetWindowBorderStyle(data[13], 1, sub_80F796C(), 14); FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11); From 4af7c79db96d56c0e970c0790e164ec771163864 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 13:31:07 -0400 Subject: [PATCH 064/318] whoops forgot to add pngs --- data/oak_speech/unk_8460D94.bin | Bin 0 -> 160 bytes data/oak_speech/unk_8460E34.bin | Bin 0 -> 160 bytes data/oak_speech/unk_8460F14.png | Bin 0 -> 1219 bytes data/oak_speech/unk_846163C.png | Bin 0 -> 1087 bytes data/oak_speech/unk_8461D14.png | Bin 0 -> 1172 bytes data/oak_speech/unk_84623EC.png | Bin 0 -> 970 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/oak_speech/unk_8460D94.bin create mode 100644 data/oak_speech/unk_8460E34.bin create mode 100644 data/oak_speech/unk_8460F14.png create mode 100644 data/oak_speech/unk_846163C.png create mode 100644 data/oak_speech/unk_8461D14.png create mode 100644 data/oak_speech/unk_84623EC.png diff --git a/data/oak_speech/unk_8460D94.bin b/data/oak_speech/unk_8460D94.bin new file mode 100644 index 0000000000000000000000000000000000000000..6d3cd42f1281f9a1cde5f5855563cc403590627b GIT binary patch literal 160 zcmajXHx7ef5QNb^0>OaE!O(wT(-V6z_WiHIuPtfVW}Zf)6|t~!5OI0n;S=yABqAm; qZAwON^6m;sD&0X#ry3ZUR2w_r%a<25jdpK7^s1SKRdw*=Z*&47Vh(ix literal 0 HcmV?d00001 diff --git a/data/oak_speech/unk_8460E34.bin b/data/oak_speech/unk_8460E34.bin new file mode 100644 index 0000000000000000000000000000000000000000..24805c96e2fb2f4a116a036d1340930e24370a91 GIT binary patch literal 160 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 FV1g%b`04-v literal 0 HcmV?d00001 diff --git a/data/oak_speech/unk_8461D14.png b/data/oak_speech/unk_8461D14.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac6029449e434aac5603007834636523e12d8f9 GIT binary patch literal 1172 zcmV;F1Z(?=P)HOv$zZ!5 z-u{}IMV#MT`kVg$1O5#_G5Yjx0RQ~!01x2u4N|xK*<&K(jr2`&ocD+s1^k7Ch9KOo zPXK(ays;W zEQGHIx~(dI;g1s(d^QL7Bmo>w%mLSqV=?KD4-b6s+4>X!fKi%5yl1hno}!NfuI+

)w#2|z;Pl)*305pPR zF-){_quB}5>|TNZ`@!)b?f zP>ut(eSkWGkok{<;JxGP>BxV(HcaNAEyW-b-UtJLgWGEhASz18dZ{1KO@W_fMa&-z zh2RdvH`8qD6TH}T0JpaX0Um9zj%t8=mCX!rqk2;ZpkTd42$ejMx|gzHGSM4;Ci&Xk zs17MG(m~TwaEm*Nh&y2Q_suP@lI@7Nrz{k;yMlwxOZ8+KBJe8t%_abbI!=%(uL*Fg z7zns5%I-bFfe@2>rRY$gWb9_*Zn&ym*4YaoEBLIEZ*@o!$p9Z8)q(`mo{M1m1p%1N z7nciZq@zyaI+pj3uJ?{T9B8|OdCbngQ6}iz+Ab%1pKk6y}JN5z#6uSOPc;2aK2ZVYy7#uc~r|z>GrnXJivpv zoC{DGJkQIbq&P!O~a(C@7 zjsfIr{d_WD{oMR)^_etlzWk0TaI#)lBmLL5u@I^%rVQ?SYcP=mF`C;!PeTs_TJPCw zr}qtO5U`O-!o2;D!LbT@S69Mt8PlH){qMWk8XTrCuqd-cY-T3`zFaJU#gC_pd=UH& zuB4gW0l>xL2fz|2(>Lo4Ps=6zxM)t+z^m_Omf&S3V3VLU2?Gk&8{nli$K`SlMJ;Ju mLH|k}aa0J$umAp!>3;y2jg5W;uI)Gg00009W7ogI)gl(qoe z!4>ST~lxWBaTcx2$R2 zmn%TZ)m$#8#RSa{et2xMSz1hh$#n2HGW$6Oe3dcwo|?}y_{or$7x0ZHrAXe=02;O1 z6~58AQ|6!P#$I*|Me#2H4D_k40r--Mm~$dupsLv@h+~AFoC9c3yL~KmN~1nPn32#F zaQj$+WTkuo01AWZ@GAz%0UGVWe|$PLN5X8FpN++n)MH!ERHOjSFj4**&hI_*!lDbt zZJ=Q;mEq6`)VPtbD`X6sn^!;F;YK9vDyf8hWm7Rbz{h1yd|1H>+&Aqn4~J0S*m z*aI)8dkKXFrS9$lg)9o@=h!-2SFQpuk)ebQ6a#oDK>s`|$QWR&fVhYh*m&1TM#H5< z0_{O*ZWK5t5Ci-=+$e@0j}ag1GZXkxaMwD0CtME;1Fv`HFn-b7z2K`$N~4;(h@DzjR&Kne9ho zbs3T|TCs#qU8Z0PV4~R_C1h|vy)8Q2F;(ydm+gCqw`0OFwMGZy#p9TWZUwKa)6X4Ltn=vFFl8Dl*7)Qxf>zqMT6k0gNVPmas zM&^ZpfrFNud>sgu(^b literal 0 HcmV?d00001 From 72c0946c996fd5dc257d158558bebfc7272acbda Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 13:36:04 -0400 Subject: [PATCH 065/318] Include stdint.h in gbagfx/huff.c --- tools/gbagfx/huff.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/gbagfx/huff.c b/tools/gbagfx/huff.c index 5d55be970..143ed79be 100644 --- a/tools/gbagfx/huff.c +++ b/tools/gbagfx/huff.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "global.h" #include "huff.h" From 8ab9fe5e4e12b1c8ae5be9446280fcdb11cb7fab Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 14:19:11 -0400 Subject: [PATCH 066/318] make static what can be made static in oak_speech --- src/oak_speech.c | 334 +++++++++++++++++++++++------------------------ 1 file changed, 167 insertions(+), 167 deletions(-) diff --git a/src/oak_speech.c b/src/oak_speech.c index f400c6dbb..bb67bbb8b 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -45,64 +45,64 @@ struct OakSpeechResources EWRAM_DATA struct OakSpeechResources * sOakSpeechResources = NULL; -void sub_812E9F8(u8 taskId); -void sub_812EB58(u8 taskId); -void sub_812EEB0(void); -void sub_812F0B0(u8 taskId); -void sub_812F180(u8 taskId); -void sub_812F274(u8 taskId); -void sub_812F33C(u8 taskId); -void sub_812F4A8(u8 taskId); -void sub_812F72C(u8 taskId); -void sub_812F7C0(u8 taskId); -void sub_812F880(u8 taskId); -void sub_812F880(u8 taskId); -void sub_812F944(u8 taskId); -void sub_812F9EC(u8 taskId); -void sub_812FA78(u8 taskId); -void sub_812FB4C(u8 taskId); -void sub_812FBF0(u8 taskId); -void sub_812FC68(u8 taskId); -void sub_812FD78(u8 taskId); -void sub_812FDC0(u8 taskId); -void sub_812FE88(u8 taskId); -void sub_812FFA4(u8 taskId); -void sub_812FFF0(u8 taskId); -void sub_8130050(u8 taskId); -void sub_81300A0(u8 taskId); -void sub_8130160(u8 taskId); -void sub_8130324(u8 taskId); -void sub_81303B4(u8 taskId); -void sub_8130464(u8 taskId); -void sub_8130554(u8 taskId); -void sub_8130650(u8 taskId); -void sub_8130694(u8 taskId); -void sub_81306D4(u8 taskId); -void sub_813071C(u8 taskId); -void sub_81307D0(u8 taskId); -void sub_8130858(u8 taskId); -void sub_81308D0(u8 taskId); -void sub_8130914(u8 taskId); -void sub_8130940(u8 taskId); -void sub_8130980(u8 taskId); -void sub_8130A38(u8 taskId); -void sub_8130A80(u8 taskId); -void sub_8130ADC(u8 taskId); -void sub_8130B10(u8 taskId); -void sub_8130BA8(u8 taskId); -void sub_8130BF0(u8 taskId); -void sub_8130C20(u8 taskId); +static void sub_812E9F8(u8 taskId); +static void sub_812EB58(u8 taskId); +static void sub_812EEB0(void); +static void sub_812F0B0(u8 taskId); +static void sub_812F180(u8 taskId); +static void sub_812F274(u8 taskId); +static void sub_812F33C(u8 taskId); +static void sub_812F4A8(u8 taskId); +static void sub_812F72C(u8 taskId); +static void sub_812F7C0(u8 taskId); +static void sub_812F880(u8 taskId); +static void sub_812F880(u8 taskId); +static void sub_812F944(u8 taskId); +static void sub_812F9EC(u8 taskId); +static void sub_812FA78(u8 taskId); +static void sub_812FB4C(u8 taskId); +static void sub_812FBF0(u8 taskId); +static void sub_812FC68(u8 taskId); +static void sub_812FD78(u8 taskId); +static void sub_812FDC0(u8 taskId); +static void sub_812FE88(u8 taskId); +static void sub_812FFA4(u8 taskId); +static void sub_812FFF0(u8 taskId); +static void sub_8130050(u8 taskId); +static void sub_81300A0(u8 taskId); +static void sub_8130160(u8 taskId); +static void sub_8130324(u8 taskId); +static void sub_81303B4(u8 taskId); +static void sub_8130464(u8 taskId); +static void sub_8130554(u8 taskId); +static void sub_8130650(u8 taskId); +static void sub_8130694(u8 taskId); +static void sub_81306D4(u8 taskId); +static void sub_813071C(u8 taskId); +static void sub_81307D0(u8 taskId); +static void sub_8130858(u8 taskId); +static void sub_81308D0(u8 taskId); +static void sub_8130914(u8 taskId); +static void sub_8130940(u8 taskId); +static void sub_8130980(u8 taskId); +static void sub_8130A38(u8 taskId); +static void sub_8130A80(u8 taskId); +static void sub_8130ADC(u8 taskId); +static void sub_8130B10(u8 taskId); +static void sub_8130BA8(u8 taskId); +static void sub_8130BF0(u8 taskId); +static void sub_8130C20(u8 taskId); static void CB2_ReturnFromNamingScreen(void); static void CreateNidoranFSprite(u8 taskId); -void sub_8130FD4(u8 taskId, u8 state); -void sub_8131168(u8 taskId, u8 state); -void sub_81311F4(u16 whichPic, u16 tileOffset); -void sub_8131310(void); -void sub_813144C(u8 taskId, u8 state); -void sub_81315CC(u8 taskId, u8 state); -void sub_8131660(u8 taskId, u8 state); -void sub_8131754(u8 arg0, u8 namePick); +static void sub_8130FD4(u8 taskId, u8 state); +static void sub_8131168(u8 taskId, u8 state); +static void sub_81311F4(u16 whichPic, u16 tileOffset); +static void sub_8131310(void); +static void sub_813144C(u8 taskId, u8 state); +static void sub_81315CC(u8 taskId, u8 state); +static void sub_8131660(u8 taskId, u8 state); +static void sub_8131754(u8 arg0, u8 namePick); extern const u8 gUnknown_8415D2C[]; extern const u8 gUnknown_8415D48[]; @@ -113,7 +113,7 @@ extern const u8 gUnknown_8415D97[]; extern const struct CompressedSpriteSheet gUnknown_8235194[]; extern const struct CompressedSpritePalette gUnknown_82373F4; -const u8 gUnknown_845FD54[][5] = { +static const u8 gUnknown_845FD54[][5] = { [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, [SPECIES_VENUSAUR - 1] = {0x1b, 0x20, 0x20, 0x1b, 0x33}, @@ -530,28 +530,28 @@ const u8 gUnknown_845FD54[][5] = { }; ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); -const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); -const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); -const u32 gUnknown_8460CA4[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz"); -const u32 gUnknown_8460CE8[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz"); -const u16 gUnknown_8460D94[] = INCBIN_U16("data/oak_speech/unk_8460D94.bin"); -const u16 gUnknown_8460E34[] = INCBIN_U16("data/oak_speech/unk_8460E34.bin"); -const u16 gUnknown_8460ED4[] = INCBIN_U16("data/oak_speech/unk_8460ED4.gbapal"); -const u32 gUnknown_8460F14[] = INCBIN_U32("data/oak_speech/unk_8460F14.8bpp.lz"); -const u16 gUnknown_84615FC[] = INCBIN_U16("data/oak_speech/unk_84615FC.gbapal"); -const u32 gUnknown_846163C[] = INCBIN_U32("data/oak_speech/unk_846163C.8bpp.lz"); -const u16 gUnknown_8461CD4[] = INCBIN_U16("data/oak_speech/unk_8461CD4.gbapal"); -const u32 gUnknown_8461D14[] = INCBIN_U32("data/oak_speech/unk_8461D14.8bpp.lz"); -const u16 gUnknown_84623AC[] = INCBIN_U16("data/oak_speech/unk_84623AC.gbapal"); -const u32 gUnknown_84623EC[] = INCBIN_U32("data/oak_speech/unk_84623EC.8bpp.lz"); -const u16 gUnknown_84629D0[] = INCBIN_U16("data/oak_speech/unk_84629D0.gbapal"); -const u16 gUnknown_84629F0[] = INCBIN_U16("data/oak_speech/unk_84629F0.gbapal"); -const u32 gUnknown_8462A10[] = INCBIN_U32("data/oak_speech/unk_8462A10.4bpp.lz"); -const u32 gUnknown_8462B74[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz"); -const u32 gUnknown_8462D34[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz"); -const u32 gUnknown_8462E18[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz"); +static const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); +static const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); +static const u32 gUnknown_8460CA4[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz"); +static const u32 gUnknown_8460CE8[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz"); +static const u16 gUnknown_8460D94[] = INCBIN_U16("data/oak_speech/unk_8460D94.bin"); +static const u16 gUnknown_8460E34[] = INCBIN_U16("data/oak_speech/unk_8460E34.bin"); +static const u16 gUnknown_8460ED4[] = INCBIN_U16("data/oak_speech/unk_8460ED4.gbapal"); +static const u32 gUnknown_8460F14[] = INCBIN_U32("data/oak_speech/unk_8460F14.8bpp.lz"); +static const u16 gUnknown_84615FC[] = INCBIN_U16("data/oak_speech/unk_84615FC.gbapal"); +static const u32 gUnknown_846163C[] = INCBIN_U32("data/oak_speech/unk_846163C.8bpp.lz"); +static const u16 gUnknown_8461CD4[] = INCBIN_U16("data/oak_speech/unk_8461CD4.gbapal"); +static const u32 gUnknown_8461D14[] = INCBIN_U32("data/oak_speech/unk_8461D14.8bpp.lz"); +static const u16 gUnknown_84623AC[] = INCBIN_U16("data/oak_speech/unk_84623AC.gbapal"); +static const u32 gUnknown_84623EC[] = INCBIN_U32("data/oak_speech/unk_84623EC.8bpp.lz"); +static const u16 gUnknown_84629D0[] = INCBIN_U16("data/oak_speech/unk_84629D0.gbapal"); +static const u16 gUnknown_84629F0[] = INCBIN_U16("data/oak_speech/unk_84629F0.gbapal"); +static const u32 gUnknown_8462A10[] = INCBIN_U32("data/oak_speech/unk_8462A10.4bpp.lz"); +static const u32 gUnknown_8462B74[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz"); +static const u32 gUnknown_8462D34[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz"); +static const u32 gUnknown_8462E18[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz"); -const struct BgTemplate gUnknown_8462E58[3] = { +static const struct BgTemplate gUnknown_8462E58[3] = { { .bg = 0, .charBaseIndex = 2, @@ -579,7 +579,7 @@ const struct BgTemplate gUnknown_8462E58[3] = { } }; -const struct WindowTemplate gUnknown_8462E64[] = { +static const struct WindowTemplate gUnknown_8462E64[] = { { .priority = 0x00, .tilemapLeft = 0x00, @@ -591,7 +591,7 @@ const struct WindowTemplate gUnknown_8462E64[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_8462E74[] = { +static const struct WindowTemplate gUnknown_8462E74[] = { { .priority = 0x00, .tilemapLeft = 0x06, @@ -619,7 +619,7 @@ const struct WindowTemplate gUnknown_8462E74[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_8462E94[] = { +static const struct WindowTemplate gUnknown_8462E94[] = { { .priority = 0x00, .tilemapLeft = 0x06, @@ -647,13 +647,13 @@ const struct WindowTemplate gUnknown_8462E94[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate *const gUnknown_8462EB4[3] = { +static const struct WindowTemplate *const gUnknown_8462EB4[3] = { gUnknown_8462E64, gUnknown_8462E74, gUnknown_8462E94 }; -const struct WindowTemplate gUnknown_8462EC0[] = { +static const struct WindowTemplate gUnknown_8462EC0[] = { { .priority = 0x00, .tilemapLeft = 0x01, @@ -697,69 +697,69 @@ ALIGNED(4) const struct TextColor gUnknown_8462EEC = { 0x00, 0x02, 0x03 }; -const u8 *const gUnknown_8462EF0[] = { +static const u8 *const gUnknown_8462EF0[] = { gUnknown_81C5A04, gUnknown_81C5AEB, gUnknown_81C5BB9 }; -const struct CompressedSpriteSheet gUnknown_8462EFC[3] = { +static const struct CompressedSpriteSheet gUnknown_8462EFC[3] = { { (const void *)gUnknown_8462B74, 0x0400, 0x1001 }, { (const void *)gUnknown_8462D34, 0x0200, 0x1002 }, { (const void *)gUnknown_8462E18, 0x0080, 0x1003 }, }; -const struct CompressedSpriteSheet gUnknown_8462F14 = { +static const struct CompressedSpriteSheet gUnknown_8462F14 = { (const void *)gUnknown_8462A10, 0x0600, 0x1000 }; -const struct SpritePalette gUnknown_8462F1C = { +static const struct SpritePalette gUnknown_8462F1C = { (const void *)gUnknown_84629F0, 0x1001 }; -const struct SpritePalette gUnknown_8462F24 = { +static const struct SpritePalette gUnknown_8462F24 = { (const void *)gUnknown_84629D0, 0x1000 }; -const union AnimCmd gUnknown_8462F2C[] = { +static const union AnimCmd gUnknown_8462F2C[] = { ANIMCMD_FRAME( 0, 0), ANIMCMD_END }; -const union AnimCmd gUnknown_8462F34[] = { +static const union AnimCmd gUnknown_8462F34[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -const union AnimCmd gUnknown_8462F3C[] = { +static const union AnimCmd gUnknown_8462F3C[] = { ANIMCMD_FRAME(32, 0), ANIMCMD_END }; -const union AnimCmd *const gUnknown_8462F44[] = { +static const union AnimCmd *const gUnknown_8462F44[] = { gUnknown_8462F2C }; -const union AnimCmd *const gUnknown_8462F48[] = { +static const union AnimCmd *const gUnknown_8462F48[] = { gUnknown_8462F34 }; -const union AnimCmd *const gUnknown_8462F4C[] = { +static const union AnimCmd *const gUnknown_8462F4C[] = { gUnknown_8462F3C }; extern const struct OamData gUnknown_83ACAF8; -const struct SpriteTemplate gUnknown_8462F50[3] = { +static const struct SpriteTemplate gUnknown_8462F50[3] = { { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F44, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F4C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, }; -const union AnimCmd gUnknown_8462F98[] = { +static const union AnimCmd gUnknown_8462F98[] = { ANIMCMD_FRAME( 0, 30), ANIMCMD_FRAME(16, 30), ANIMCMD_JUMP(0) }; -const union AnimCmd gUnknown_8462FA4[] = { +static const union AnimCmd gUnknown_8462FA4[] = { ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), @@ -778,7 +778,7 @@ const union AnimCmd gUnknown_8462FA4[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd gUnknown_8462FE4[] = { +static const union AnimCmd gUnknown_8462FE4[] = { ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), @@ -796,13 +796,13 @@ const union AnimCmd gUnknown_8462FE4[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_8463020[] = { +static const union AnimCmd *const gUnknown_8463020[] = { gUnknown_8462F98 }; -const union AnimCmd *const gUnknown_8463024[] = { +static const union AnimCmd *const gUnknown_8463024[] = { gUnknown_8462FA4 }; -const union AnimCmd *const gUnknown_8463028[] = { +static const union AnimCmd *const gUnknown_8463028[] = { gUnknown_8462FE4 }; @@ -810,13 +810,13 @@ extern const struct OamData gUnknown_83AC9D8; extern const struct OamData gUnknown_83AC9F8; extern const struct OamData gUnknown_83AC9E8; -const struct SpriteTemplate gUnknown_846302C[3] = { +static const struct SpriteTemplate gUnknown_846302C[3] = { { 0x1001, 0x1001, &gUnknown_83AC9D8, gUnknown_8463020, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, { 0x1002, 0x1001, &gUnknown_83AC9F8, gUnknown_8463024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, { 0x1003, 0x1001, &gUnknown_83AC9E8, gUnknown_8463028, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy } }; -const u8 *const gUnknown_8463074[] = { +static const u8 *const gUnknown_8463074[] = { gUnknown_81C5875, gUnknown_81C58BA, gUnknown_81C58F9, @@ -825,7 +825,7 @@ const u8 *const gUnknown_8463074[] = { gUnknown_81C5981 }; -const u8 *const gUnknown_846308C[] = { +static const u8 *const gUnknown_846308C[] = { gUnknown_81C575E, gUnknown_81C5767, gUnknown_81C577A, @@ -847,7 +847,7 @@ const u8 *const gUnknown_846308C[] = { gUnknown_81C57CB }; -const u8 *const gUnknown_84630D8[] = { +static const u8 *const gUnknown_84630D8[] = { gUnknown_81C575E, gUnknown_81C5767, gUnknown_81C57D0, @@ -869,7 +869,7 @@ const u8 *const gUnknown_84630D8[] = { gUnknown_81C5828 }; -const u8 *const gUnknown_8463124[] = { +static const u8 *const gUnknown_8463124[] = { gUnknown_81C5758, gUnknown_81C576C, gUnknown_81C5771, @@ -895,7 +895,7 @@ bool8 sub_812E9E4(void) return FuncIsActiveTask(sub_812E9F8); } -void sub_812E9F8(u8 taskId) +static void sub_812E9F8(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -959,14 +959,14 @@ s8 sub_812EAE4(u16 species, u32 personality, u8 a2) return sub_812EA78(species, personality, a2) - 32; } -void sub_812EAFC(void) +static void sub_812EAFC(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_812EB10(void) +static void sub_812EB10(void) { RunTasks(); RunTextPrinters(); @@ -983,7 +983,7 @@ void sub_812EB2C(void) SetMainCallback2(sub_812EB10); } -void sub_812EB58(u8 taskId) +static void sub_812EB58(u8 taskId) { switch (gMain.state) { @@ -1072,7 +1072,7 @@ void sub_812EB58(u8 taskId) gMain.state++; } -void sub_812EEB0(void) +static void sub_812EEB0(void) { sub_810F650(gUnknown_8415D2C, gUnknown_8415D48, 0, 0, 1); sOakSpeechResources->unk_0014[0] = AddWindow(gUnknown_8462EB4[sOakSpeechResources->unk_0012]); @@ -1084,7 +1084,7 @@ void sub_812EEB0(void) CopyBgTilemapBufferToVram(1); } -void sub_812EF50(u8 taskId) +static void sub_812EF50(u8 taskId) { u8 i = 0; u8 r7 = sOakSpeechResources->unk_0012 - 1; @@ -1118,7 +1118,7 @@ void sub_812EF50(u8 taskId) gTasks[taskId].func = sub_812F0B0; } -void sub_812F0B0(u8 taskId) +static void sub_812F0B0(u8 taskId) { if (!gPaletteFade.active && JOY_NEW((A_BUTTON | B_BUTTON))) { @@ -1147,7 +1147,7 @@ void sub_812F0B0(u8 taskId) gTasks[taskId].func = sub_812F180; } -void sub_812F180(u8 taskId) +static void sub_812F180(u8 taskId) { u8 r8 = 0; u8 i; @@ -1184,7 +1184,7 @@ void sub_812F180(u8 taskId) } } -void sub_812F274(u8 taskId) +static void sub_812F274(u8 taskId) { u8 i = 0; @@ -1208,7 +1208,7 @@ void sub_812F274(u8 taskId) } } -void sub_812F33C(u8 taskId) +static void sub_812F33C(u8 taskId) { s16 * data = gTasks[taskId].data; u32 sp14 = 0; @@ -1242,7 +1242,7 @@ void sub_812F33C(u8 taskId) } } -void sub_812F4A8(u8 taskId) +static void sub_812F4A8(u8 taskId) { s16 * data = gTasks[taskId].data; switch (gMain.state) @@ -1342,7 +1342,7 @@ void sub_812F4A8(u8 taskId) } } -void sub_812F72C(u8 taskId) +static void sub_812F72C(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1362,7 +1362,7 @@ void sub_812F72C(u8 taskId) } } -void sub_812F7C0(u8 taskId) +static void sub_812F7C0(u8 taskId) { s16 * data = gTasks[taskId].data; u32 size = 0; @@ -1400,7 +1400,7 @@ void sub_812F7C0(u8 taskId) CopyWindowToVram(0, 3); \ }) -void sub_812F880(u8 taskId) +static void sub_812F880(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1416,7 +1416,7 @@ void sub_812F880(u8 taskId) } } -void sub_812F944(u8 taskId) +static void sub_812F944(u8 taskId) { if (!IsTextPrinterActive(0)) { @@ -1426,7 +1426,7 @@ void sub_812F944(u8 taskId) } } -void sub_812F9EC(u8 taskId) +static void sub_812F9EC(u8 taskId) { s16 * data = gTasks[taskId].data; u8 spriteId; @@ -1446,7 +1446,7 @@ void sub_812F9EC(u8 taskId) } } -void sub_812FA78(u8 taskId) +static void sub_812FA78(u8 taskId) { if (IsCryFinished()) { @@ -1464,7 +1464,7 @@ void sub_812FA78(u8 taskId) } } -void sub_812FB4C(u8 taskId) +static void sub_812FB4C(u8 taskId) { if (!IsTextPrinterActive(0)) { @@ -1473,7 +1473,7 @@ void sub_812FB4C(u8 taskId) } } -void sub_812FBF0(u8 taskId) +static void sub_812FBF0(u8 taskId) { u8 spriteId; @@ -1488,7 +1488,7 @@ void sub_812FBF0(u8 taskId) } } -void sub_812FC68(u8 taskId) +static void sub_812FC68(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1519,7 +1519,7 @@ void sub_812FC68(u8 taskId) } } -void sub_812FD78(u8 taskId) +static void sub_812FD78(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1532,7 +1532,7 @@ void sub_812FD78(u8 taskId) } } -void sub_812FDC0(u8 taskId) +static void sub_812FDC0(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1550,7 +1550,7 @@ void sub_812FDC0(u8 taskId) } } -void sub_812FE88(u8 taskId) +static void sub_812FE88(u8 taskId) { if (!IsTextPrinterActive(0)) { @@ -1572,7 +1572,7 @@ void sub_812FE88(u8 taskId) } } -void sub_812FFA4(u8 taskId) +static void sub_812FFA4(u8 taskId) { s8 input = ProcessMenuInputNoWrapAround(); switch (input) @@ -1591,7 +1591,7 @@ void sub_812FFA4(u8 taskId) } -void sub_812FFF0(u8 taskId) +static void sub_812FFF0(u8 taskId) { s16 * data = gTasks[taskId].data; sub_810F4D8(data[13], 1); @@ -1603,7 +1603,7 @@ void sub_812FFF0(u8 taskId) gTasks[taskId].func = sub_8130050; } -void sub_8130050(u8 taskId) +static void sub_8130050(u8 taskId) { if (gSaveBlock2Ptr->playerGender == MALE) sub_81311F4(MALE, 0); @@ -1614,7 +1614,7 @@ void sub_8130050(u8 taskId) gTasks[taskId].func = sub_81300A0; } -void sub_81300A0(u8 taskId) +static void sub_81300A0(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1631,7 +1631,7 @@ void sub_81300A0(u8 taskId) } } -void sub_8130160(u8 taskId) +static void sub_8130160(u8 taskId) { if (!IsTextPrinterActive(0)) { @@ -1640,7 +1640,7 @@ void sub_8130160(u8 taskId) gTasks[taskId].func = sub_81303B4; } } -void sub_81301B0(u8 taskId) +static void sub_81301B0(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1661,7 +1661,7 @@ void sub_81301B0(u8 taskId) } } -void sub_8130228(u8 taskId) +static void sub_8130228(u8 taskId) { sub_8131660(taskId, sOakSpeechResources->unk_0010); if (sOakSpeechResources->unk_0010 == 0) @@ -1675,7 +1675,7 @@ void sub_8130228(u8 taskId) gTasks[taskId].func = sub_8130324; } -void sub_8130324(u8 taskId) +static void sub_8130324(u8 taskId) { s16 * data = gTasks[taskId].data; s8 input = ProcessMenuInput(); @@ -1702,7 +1702,7 @@ void sub_8130324(u8 taskId) } } -void sub_81303B4(u8 taskId) +static void sub_81303B4(u8 taskId) { if (!gPaletteFade.active) { @@ -1722,7 +1722,7 @@ void sub_81303B4(u8 taskId) } } -void sub_8130464(u8 taskId) +static void sub_8130464(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1755,7 +1755,7 @@ void sub_8130464(u8 taskId) } } -void sub_8130554(u8 taskId) +static void sub_8130554(u8 taskId) { s8 input = ProcessMenuInputNoWrap_(); switch (input) @@ -1787,7 +1787,7 @@ void sub_8130554(u8 taskId) } } -void sub_8130650(u8 taskId) +static void sub_8130650(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1801,7 +1801,7 @@ void sub_8130650(u8 taskId) } } -void sub_8130694(u8 taskId) +static void sub_8130694(u8 taskId) { if (!IsTextPrinterActive(0)) { @@ -1811,7 +1811,7 @@ void sub_8130694(u8 taskId) } } -void sub_81306D4(u8 taskId) +static void sub_81306D4(u8 taskId) { ChangeBgX(2, 0, 0); gTasks[taskId].data[1] = 0; @@ -1821,7 +1821,7 @@ void sub_81306D4(u8 taskId) gTasks[taskId].func = sub_813071C; } -void sub_813071C(u8 taskId) +static void sub_813071C(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1833,7 +1833,7 @@ void sub_813071C(u8 taskId) } } -void sub_81307D0(u8 taskId) +static void sub_81307D0(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1857,7 +1857,7 @@ void sub_81307D0(u8 taskId) } } -void sub_8130858(u8 taskId) +static void sub_8130858(u8 taskId) { if (gTasks[taskId].data[2] != 0) { @@ -1868,7 +1868,7 @@ void sub_8130858(u8 taskId) } } -void sub_81308D0(u8 taskId) +static void sub_81308D0(u8 taskId) { if (!IsTextPrinterActive(0)) { @@ -1882,7 +1882,7 @@ void sub_81308D0(u8 taskId) } } -void sub_8130914(u8 taskId) +static void sub_8130914(u8 taskId) { sOakSpeechResources->unk_0012 = 0; sub_8130A38(taskId); @@ -1890,7 +1890,7 @@ void sub_8130914(u8 taskId) sub_8130940(taskId); } -void sub_8130940(u8 taskId) +static void sub_8130940(u8 taskId) { s16 * data = gTasks[taskId].data; SetBgAttribute(2, 6, 1); @@ -1901,7 +1901,7 @@ void sub_8130940(u8 taskId) gTasks[taskId].func = sub_8130980; } -void sub_8130980(u8 taskId) +static void sub_8130980(u8 taskId) { s16 * data = gTasks[taskId].data; s16 x, y; @@ -1926,7 +1926,7 @@ void sub_8130980(u8 taskId) } } -void sub_8130A38(u8 taskId) +static void sub_8130A38(u8 taskId) { u8 taskId2 = CreateTask(sub_8130A80, 1); s16 * data = gTasks[taskId2].data; @@ -1937,7 +1937,7 @@ void sub_8130A38(u8 taskId) BeginNormalPaletteFade(0xFFFF0FCF, 4, 0, 16, RGB_BLACK); } -void sub_8130A80(u8 taskId) +static void sub_8130A80(u8 taskId) { s16 * data = gTasks[taskId].data; if (!gPaletteFade.active) @@ -1955,7 +1955,7 @@ void sub_8130A80(u8 taskId) } } -void sub_8130ADC(u8 taskId) +static void sub_8130ADC(u8 taskId) { u8 taskId2 = CreateTask(sub_8130B10, 2); s16 * data = gTasks[taskId2].data; @@ -1966,7 +1966,7 @@ void sub_8130ADC(u8 taskId) data[15] = 0; } -void sub_8130B10(u8 taskId) +static void sub_8130B10(u8 taskId) { s16 * data = gTasks[taskId].data; u8 i; @@ -1993,7 +1993,7 @@ void sub_8130B10(u8 taskId) } } -void sub_8130BA8(u8 taskId) +static void sub_8130BA8(u8 taskId) { if (gTasks[taskId].data[0] != 0) gTasks[taskId].data[0]--; @@ -2004,7 +2004,7 @@ void sub_8130BA8(u8 taskId) } } -void sub_8130BF0(u8 taskId) +static void sub_8130BF0(u8 taskId) { if (!gPaletteFade.active) { @@ -2012,7 +2012,7 @@ void sub_8130BF0(u8 taskId) } } -void sub_8130C20(u8 taskId) +static void sub_8130C20(u8 taskId) { FreeAllWindowBuffers(); sub_8044D80(); @@ -2124,12 +2124,12 @@ static void CreateNidoranFSprite(u8 taskId) gTasks[taskId].data[4] = spriteId; } -void sub_8130FB8(struct Sprite * sprite) +static void sub_8130FB8(struct Sprite * sprite) { sprite->pos2.y = gSprites[sprite->data[0]].animCmdIndex; } -void sub_8130FD4(u8 taskId, u8 state) +static void sub_8130FD4(u8 taskId, u8 state) { u8 spriteId; u8 i = 0; @@ -2170,7 +2170,7 @@ void sub_8130FD4(u8 taskId, u8 state) } } -void sub_8131168(u8 taskId, u8 state) +static void sub_8131168(u8 taskId, u8 state) { u8 i; @@ -2194,7 +2194,7 @@ void sub_8131168(u8 taskId, u8 state) } } -void sub_81311F4(u16 whichPic, u16 tileOffset) +static void sub_81311F4(u16 whichPic, u16 tileOffset) { u32 i; @@ -2230,13 +2230,13 @@ void sub_81311F4(u16 whichPic, u16 tileOffset) sOakSpeechResources->unk_0004 = 0; } -void sub_8131310(void) +static void sub_8131310(void) { FillBgTilemapBufferRect(2, 0x000, 11, 1, 8, 12, 0x10); CopyBgTilemapBufferToVram(2); } -void sub_8131338(u8 taskId) +static void sub_8131338(u8 taskId) { u8 i = 0; if (gTasks[taskId].data[1] == 0) @@ -2269,7 +2269,7 @@ void sub_8131338(u8 taskId) } } -void sub_813144C(u8 taskId, u8 state) +static void sub_813144C(u8 taskId, u8 state) { u8 taskId2; u8 i = 0; @@ -2290,7 +2290,7 @@ void sub_813144C(u8 taskId, u8 state) } } -void sub_81314DC(u8 taskId) +static void sub_81314DC(u8 taskId) { u8 i = 0; @@ -2323,7 +2323,7 @@ void sub_81314DC(u8 taskId) } } -void sub_81315CC(u8 taskId, u8 state) +static void sub_81315CC(u8 taskId, u8 state) { u8 taskId2; u8 i = 0; @@ -2344,7 +2344,7 @@ void sub_81315CC(u8 taskId, u8 state) } } -void sub_8131660(u8 taskId, u8 state) +static void sub_8131660(u8 taskId, u8 state) { s16 * data = gTasks[taskId].data; const u8 *const * textPtrs; @@ -2367,7 +2367,7 @@ void sub_8131660(u8 taskId, u8 state) CopyWindowToVram(data[13], 3); } -void sub_8131754(u8 arg0, u8 namePick) +static void sub_8131754(u8 arg0, u8 namePick) { const u8 * src; u8 * dest; From 6252f311fb68177235f162127b9c0899b9b10c2b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 15:42:34 -0400 Subject: [PATCH 067/318] menu2 --- asm/intro.s | 12 +- asm/menu2.s | 563 ---------------------------- include/oak_speech.h | 7 + ld_script.txt | 3 +- src/menu2.c | 851 +++++++++++++++++++++++++++++++++++++++++++ src/oak_speech.c | 501 +------------------------ 6 files changed, 867 insertions(+), 1070 deletions(-) delete mode 100644 asm/menu2.s create mode 100644 include/oak_speech.h create mode 100644 src/menu2.c diff --git a/asm/intro.s b/asm/intro.s index 5ec5cf131..fd430031e 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -898,7 +898,7 @@ _080ECCF6: movs r1, 0x10 movs r2, 0x10 movs r3, 0 - bl sub_812E944 + bl OakSpeech_StartBlendTask b _080ECD36 .align 2, 0 _080ECD14: .4byte 0x00003f44 @@ -907,7 +907,7 @@ _080ECD18: bl ShowBg b _080ECD36 _080ECD20: - bl sub_812E9E4 + bl OakSpeech_IsBlendTaskActive lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 @@ -980,7 +980,7 @@ _080ECD9C: movs r1, 0x10 movs r2, 0x10 movs r3, 0 - bl sub_812E944 + bl OakSpeech_StartBlendTask strh r4, [r6, 0x8] strh r5, [r6, 0xA] strh r4, [r6, 0x12] @@ -992,7 +992,7 @@ _080ECDC4: str r0, [r6, 0x14] b _080ECE70 _080ECDCC: - bl sub_812E9E4 + bl OakSpeech_IsBlendTaskActive lsls r0, 24 cmp r0, 0 bne _080ECE96 @@ -1051,10 +1051,10 @@ _080ECE26: movs r1, 0 movs r2, 0 movs r3, 0x10 - bl sub_812E944 + bl OakSpeech_StartBlendTask b _080ECE70 _080ECE52: - bl sub_812E9E4 + bl OakSpeech_IsBlendTaskActive lsls r0, 24 cmp r0, 0 bne _080ECE96 diff --git a/asm/menu2.s b/asm/menu2.s deleted file mode 100644 index c196f77b4..000000000 --- a/asm/menu2.s +++ /dev/null @@ -1,563 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start box_print -box_print: @ 812E51C - push {r4-r6,lr} - sub sp, 0x10 - adds r4, r1, 0 - ldr r6, [sp, 0x20] - ldr r5, [sp, 0x24] - ldr r1, [sp, 0x28] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - str r1, [sp] - mov r1, sp - strb r0, [r1, 0x4] - mov r0, sp - strb r4, [r0, 0x5] - strb r2, [r0, 0x6] - strb r3, [r0, 0x7] - ldrb r0, [r0, 0x6] - strb r0, [r1, 0x8] - mov r0, sp - ldrb r0, [r0, 0x7] - strb r0, [r1, 0x9] - adds r0, r4, 0 - movs r1, 0x2 - bl GetFontAttribute - mov r1, sp - strb r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x3 - bl GetFontAttribute - mov r1, sp - strb r0, [r1, 0xB] - mov r3, sp - ldrb r2, [r3, 0xC] - movs r1, 0x10 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3, 0xC] - mov r2, sp - ldrb r0, [r6, 0x1] - lsls r0, 4 - movs r4, 0xF - strb r0, [r2, 0xC] - ldrb r2, [r6] - adds r0, r4, 0 - ands r0, r2 - ldrb r2, [r3, 0xD] - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xD] - mov r2, sp - ldrb r0, [r6, 0x2] - lsls r0, 4 - ands r1, r4 - orrs r1, r0 - strb r1, [r2, 0xD] - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - bl AddTextPrinter - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end box_print - - thumb_func_start AddTextPrinterParametrized2 -AddTextPrinterParametrized2: @ 812E5A4 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x10 - adds r5, r1, 0 - ldr r1, [sp, 0x28] - mov r8, r1 - ldr r1, [sp, 0x2C] - mov r9, r1 - ldr r6, [sp, 0x30] - ldr r1, [sp, 0x34] - ldr r4, [sp, 0x38] - str r4, [sp] - mov r4, sp - strb r0, [r4, 0x4] - mov r0, sp - strb r5, [r0, 0x5] - strb r2, [r0, 0x6] - strb r3, [r0, 0x7] - mov r2, sp - ldrb r0, [r0, 0x6] - strb r0, [r2, 0x8] - mov r0, sp - ldrb r0, [r0, 0x7] - strb r0, [r2, 0x9] - mov r0, sp - mov r2, r8 - strb r2, [r0, 0xA] - mov r2, r9 - strb r2, [r0, 0xB] - ldrb r3, [r4, 0xC] - movs r2, 0x10 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r4, 0xC] - mov r3, sp - ldrb r0, [r6, 0x1] - lsls r0, 4 - movs r5, 0xF - strb r0, [r3, 0xC] - ldrb r3, [r6] - adds r0, r5, 0 - ands r0, r3 - ldrb r3, [r4, 0xD] - ands r2, r3 - orrs r2, r0 - strb r2, [r4, 0xD] - mov r3, sp - ldrb r0, [r6, 0x2] - lsls r0, 4 - ands r2, r5 - orrs r2, r0 - strb r2, [r3, 0xD] - lsls r1, 24 - lsrs r1, 24 - mov r0, sp - movs r2, 0 - bl AddTextPrinter - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end AddTextPrinterParametrized2 - - thumb_func_start sub_812E62C -sub_812E62C: @ 812E62C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - adds r6, r1, 0 - ldr r4, [sp, 0x2C] - ldr r1, [sp, 0x30] - mov r8, r1 - ldr r7, [sp, 0x34] - ldr r5, [sp, 0x38] - ldr r1, [sp, 0x3C] - mov r9, r1 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - str r2, [sp] - mov r1, sp - strb r0, [r1, 0x4] - mov r0, sp - strb r6, [r0, 0x5] - strb r3, [r0, 0x6] - strb r4, [r0, 0x7] - strb r3, [r0, 0x8] - strb r4, [r0, 0x9] - strb r5, [r0, 0xA] - mov r1, r9 - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r5, 0x10 - negs r5, r5 - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2, 0xC] - adds r0, r6, 0 - movs r1, 0x5 - bl GetFontAttribute - mov r3, sp - lsls r0, 4 - ldrb r2, [r3, 0xC] - movs r4, 0xF - adds r1, r4, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xC] - adds r0, r6, 0 - movs r1, 0x6 - bl GetFontAttribute - mov r2, sp - adds r1, r4, 0 - ands r1, r0 - ldrb r0, [r2, 0xD] - ands r5, r0 - orrs r5, r1 - strb r5, [r2, 0xD] - adds r0, r6, 0 - movs r1, 0x7 - bl GetFontAttribute - mov r2, sp - lsls r0, 4 - ldrb r1, [r2, 0xD] - ands r4, r1 - orrs r4, r0 - strb r4, [r2, 0xD] - mov r0, sp - mov r1, r8 - adds r2, r7, 0 - bl AddTextPrinter - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812E62C - - thumb_func_start sub_812E6DC -sub_812E6DC: @ 812E6DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r2, 16 - lsrs r5, r2, 16 - lsls r3, 16 - lsrs r6, r3, 16 - movs r4, 0 - ldr r0, _0812E734 @ =gSaveBlock2Ptr - ldr r2, [r0] - ldrb r0, [r2] - ldr r7, _0812E738 @ =gStringVar4 - cmp r0, 0xFF - beq _0812E70A -_0812E700: - adds r4, 0x1 - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0812E700 -_0812E70A: - adds r0, r7, 0 - bl StringExpandPlaceholders - cmp r4, 0x5 - beq _0812E73C - lsls r3, r5, 24 - lsrs r3, 24 - lsls r0, r6, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - mov r0, r8 - movs r1, 0x2 - adds r2, r7, 0 - bl AddTextPrinterParameterized - b _0812E75C - .align 2, 0 -_0812E734: .4byte gSaveBlock2Ptr -_0812E738: .4byte gStringVar4 -_0812E73C: - lsls r3, r5, 24 - lsrs r3, 24 - lsls r0, r6, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r0, [sp, 0x10] - mov r0, r8 - movs r1, 0x2 - adds r2, r7, 0 - bl sub_812E62C -_0812E75C: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812E6DC - - thumb_func_start sub_812E768 -sub_812E768: @ 812E768 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - str r0, [sp] - str r1, [sp, 0x4] - ldr r0, [sp, 0x48] - ldr r4, [sp, 0x4C] - ldr r1, [sp, 0x50] - ldr r5, [sp, 0x54] - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0x8] - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - lsls r4, 16 - lsrs r4, 16 - lsls r1, 16 - lsrs r1, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r2, [sp, 0x4] - ldrh r0, [r2, 0x4] - ldr r2, [sp, 0xC] - subs r0, r2 - ldr r2, [sp, 0x8] - adds r2, r1, r2 - str r2, [sp, 0x10] - cmp r0, r1 - bge _0812E7B4 - ldr r1, [sp, 0x8] - adds r0, r1 - str r0, [sp, 0x10] -_0812E7B4: - ldr r2, [sp, 0x4] - ldrh r1, [r2, 0x6] - subs r0, r1, r4 - cmp r0, r5 - bge _0812E7C6 - adds r0, r3, r1 - subs r0, r4 - str r0, [sp, 0x14] - b _0812E7CA -_0812E7C6: - adds r5, r3, r5 - str r5, [sp, 0x14] -_0812E7CA: - ldr r0, [sp] - ldrh r1, [r0, 0x4] - movs r2, 0x7 - adds r0, r1, 0 - ands r0, r2 - adds r1, r0 - asrs r1, 3 - str r1, [sp, 0x18] - ldr r0, [sp, 0x4] - ldrh r1, [r0, 0x4] - adds r0, r1, 0 - ands r0, r2 - adds r1, r0 - asrs r1, 3 - str r1, [sp, 0x1C] - mov r12, r3 - mov r8, r4 - ldr r1, [sp, 0x14] - cmp r12, r1 - blt _0812E7F4 - b _0812E932 -_0812E7F4: - ldr r5, [sp, 0x8] - ldr r6, [sp, 0xC] - mov r2, r12 - adds r2, 0x1 - str r2, [sp, 0x20] - mov r0, r8 - adds r0, 0x1 - str r0, [sp, 0x24] - ldr r1, [sp, 0x10] - cmp r5, r1 - blt _0812E80C - b _0812E922 -_0812E80C: - movs r7, 0x1 - movs r2, 0xF0 - mov r10, r2 - movs r0, 0xF - mov r9, r0 -_0812E816: - asrs r0, r5, 1 - movs r1, 0x3 - ands r0, r1 - ldr r2, [sp] - ldr r1, [r2] - adds r1, r0 - asrs r0, r5, 3 - lsls r0, 5 - adds r1, r0 - mov r2, r12 - asrs r0, r2, 3 - ldr r2, [sp, 0x18] - muls r0, r2 - lsls r0, 5 - adds r1, r0 - mov r2, r12 - lsls r0, r2, 29 - lsrs r0, 27 - adds r3, r1, r0 - asrs r0, r6, 1 - movs r1, 0x3 - ands r0, r1 - ldr r2, [sp, 0x4] - ldr r1, [r2] - adds r1, r0 - asrs r0, r6, 3 - lsls r0, 5 - adds r1, r0 - mov r2, r8 - asrs r0, r2, 3 - ldr r2, [sp, 0x1C] - muls r0, r2 - lsls r0, 5 - adds r1, r0 - mov r2, r8 - lsls r0, r2, 29 - lsrs r0, 27 - adds r4, r1, r0 - adds r0, r4, 0 - ands r0, r7 - cmp r0, 0 - beq _0812E8C2 - subs r4, 0x1 - adds r0, r6, 0 - ands r0, r7 - cmp r0, 0 - beq _0812E89A - ldrh r0, [r4] - ldr r2, _0812E88C @ =0x00000fff - ands r2, r0 - adds r0, r5, 0 - ands r0, r7 - cmp r0, 0 - beq _0812E890 - ldrb r1, [r3] - mov r0, r10 - ands r0, r1 - lsls r0, 8 - b _0812E912 - .align 2, 0 -_0812E88C: .4byte 0x00000fff -_0812E890: - ldrb r1, [r3] - mov r0, r9 - ands r0, r1 - lsls r0, 12 - b _0812E912 -_0812E89A: - ldrh r0, [r4] - ldr r2, _0812E8B4 @ =0x0000f0ff - ands r2, r0 - adds r0, r5, 0 - ands r0, r7 - cmp r0, 0 - beq _0812E8B8 - ldrb r1, [r3] - mov r0, r10 - ands r0, r1 - lsls r0, 4 - b _0812E912 - .align 2, 0 -_0812E8B4: .4byte 0x0000f0ff -_0812E8B8: - ldrb r1, [r3] - mov r0, r9 - ands r0, r1 - lsls r0, 8 - b _0812E912 -_0812E8C2: - adds r0, r6, 0 - ands r0, r7 - cmp r0, 0 - beq _0812E8EE - ldrh r0, [r4] - ldr r2, _0812E8E0 @ =0x0000ff0f - ands r2, r0 - adds r0, r5, 0 - ands r0, r7 - cmp r0, 0 - beq _0812E8E4 - ldrb r1, [r3] - mov r0, r10 - b _0812E910 - .align 2, 0 -_0812E8E0: .4byte 0x0000ff0f -_0812E8E4: - ldrb r1, [r3] - mov r0, r9 - ands r0, r1 - lsls r0, 4 - b _0812E912 -_0812E8EE: - ldrh r0, [r4] - ldr r2, _0812E908 @ =0x0000fff0 - ands r2, r0 - adds r0, r5, 0 - ands r0, r7 - cmp r0, 0 - beq _0812E90C - ldrb r1, [r3] - mov r0, r10 - ands r0, r1 - lsrs r0, 4 - b _0812E912 - .align 2, 0 -_0812E908: .4byte 0x0000fff0 -_0812E90C: - ldrb r1, [r3] - mov r0, r9 -_0812E910: - ands r0, r1 -_0812E912: - orrs r2, r0 - strh r2, [r4] - adds r5, 0x1 - adds r6, 0x1 - ldr r0, [sp, 0x10] - cmp r5, r0 - bge _0812E922 - b _0812E816 -_0812E922: - ldr r1, [sp, 0x20] - mov r12, r1 - ldr r2, [sp, 0x24] - mov r8, r2 - ldr r0, [sp, 0x14] - cmp r12, r0 - bge _0812E932 - b _0812E7F4 -_0812E932: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812E768 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/oak_speech.h b/include/oak_speech.h new file mode 100644 index 000000000..5ee916b86 --- /dev/null +++ b/include/oak_speech.h @@ -0,0 +1,7 @@ +#ifndef GUARD_OAK_SPEECH_H +#define GUARD_OAK_SPEECH_H + +void OakSpeech_StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); +bool8 OakSpeech_IsBlendTaskActive(void); + +#endif //GUARD_OAK_SPEECH_H diff --git a/ld_script.txt b/ld_script.txt index d5ed81e21..aff4e7f6d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -227,7 +227,7 @@ SECTIONS { asm/help_system_812B1E0.o(.text); src/quest_log_battle.o(.text); src/fame_checker.o(.text); - asm/menu2.o(.text); + src/menu2.o(.text); src/oak_speech.o(.text); asm/tm_case.o(.text); asm/menu_indicators.o(.text); @@ -382,6 +382,7 @@ SECTIONS { src/quest_log.o(.rodata); data/data_83FECCC.o(.rodata.8456C74); src/fame_checker.o(.rodata); + src/menu2.o(.rodata); src/oak_speech.o(.rodata); data/data_845FD54.o(.rodata); src/mevent.o(.rodata); diff --git a/src/menu2.c b/src/menu2.c new file mode 100644 index 000000000..e83b1bff2 --- /dev/null +++ b/src/menu2.c @@ -0,0 +1,851 @@ +#include "global.h" +#include "text.h" +#include "gpu_regs.h" +#include "task.h" +#include "wild_encounter.h" +#include "string_util.h" +#include "constants/species.h" + +static void Task_SmoothBlendLayers(u8 taskId); + +static const u8 gUnknown_845FD54[][5] = { + [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, + [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, + [SPECIES_VENUSAUR - 1] = {0x1b, 0x20, 0x20, 0x1b, 0x33}, + [SPECIES_CHARMANDER - 1] = {0x14, 0x0f, 0x38, 0x13, 0x1e}, + [SPECIES_CHARMELEON - 1] = {0x0d, 0x11, 0x30, 0x0f, 0x22}, + [SPECIES_CHARIZARD - 1] = {0x1b, 0x07, 0x28, 0x1a, 0x19}, + [SPECIES_SQUIRTLE - 1] = {0x19, 0x13, 0x30, 0x1a, 0x22}, + [SPECIES_WARTORTLE - 1] = {0x16, 0x13, 0x30, 0x17, 0x21}, + [SPECIES_BLASTOISE - 1] = {0x12, 0x08, 0x28, 0x15, 0x19}, + [SPECIES_CATERPIE - 1] = {0x15, 0x14, 0x30, 0x13, 0x24}, + [SPECIES_METAPOD - 1] = {0x13, 0x1d, 0x30, 0x18, 0x2a}, + [SPECIES_BUTTERFREE - 1] = {0x12, 0x1b, 0x08, 0x12, 0x2a}, + [SPECIES_WEEDLE - 1] = {0x16, 0x1c, 0x30, 0x15, 0x2b}, + [SPECIES_KAKUNA - 1] = {0x19, 0x13, 0x30, 0x1a, 0x24}, + [SPECIES_BEEDRILL - 1] = {0x19, 0x16, 0x08, 0x19, 0x25}, + [SPECIES_PIDGEY - 1] = {0x15, 0x12, 0x30, 0x12, 0x1e}, + [SPECIES_PIDGEOTTO - 1] = {0x24, 0x0e, 0x30, 0x1f, 0x1e}, + [SPECIES_PIDGEOT - 1] = {0x0c, 0x13, 0x08, 0x0a, 0x23}, + [SPECIES_RATTATA - 1] = {0x17, 0x1e, 0x30, 0x18, 0x2d}, + [SPECIES_RATICATE - 1] = {0x12, 0x14, 0x30, 0x10, 0x26}, + [SPECIES_SPEAROW - 1] = {0x15, 0x14, 0x30, 0x15, 0x1f}, + [SPECIES_FEAROW - 1] = {0x0c, 0x27, 0x00, 0x0b, 0x3f}, + [SPECIES_EKANS - 1] = {0x11, 0x0f, 0x30, 0x14, 0x1d}, + [SPECIES_ARBOK - 1] = {0x1b, 0x01, 0x28, 0x1d, 0x10}, + [SPECIES_PIKACHU - 1] = {0x19, 0x13, 0x30, 0x1a, 0x1f}, + [SPECIES_RAICHU - 1] = {0x19, 0x14, 0x28, 0x1c, 0x22}, + [SPECIES_SANDSHREW - 1] = {0x17, 0x16, 0x30, 0x18, 0x25}, + [SPECIES_SANDSLASH - 1] = {0x11, 0x13, 0x28, 0x13, 0x22}, + [SPECIES_NIDORAN_F - 1] = {0x16, 0x15, 0x30, 0x18, 0x21}, + [SPECIES_NIDORINA - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x28}, + [SPECIES_NIDOQUEEN - 1] = {0x10, 0x0b, 0x28, 0x13, 0x1c}, + [SPECIES_NIDORAN_M - 1] = {0x15, 0x22, 0x28, 0x15, 0x31}, + [SPECIES_NIDORINO - 1] = {0x13, 0x1e, 0x28, 0x1b, 0x2d}, + [SPECIES_NIDOKING - 1] = {0x12, 0x15, 0x28, 0x13, 0x27}, + [SPECIES_CLEFAIRY - 1] = {0x19, 0x14, 0x30, 0x1b, 0x24}, + [SPECIES_CLEFABLE - 1] = {0x1c, 0x12, 0x30, 0x1d, 0x21}, + [SPECIES_VULPIX - 1] = {0x10, 0x16, 0x30, 0x0e, 0x25}, + [SPECIES_NINETALES - 1] = {0x28, 0x10, 0x28, 0x27, 0x1e}, + [SPECIES_JIGGLYPUFF - 1] = {0x1d, 0x15, 0x30, 0x1e, 0x25}, + [SPECIES_WIGGLYTUFF - 1] = {0x1a, 0x12, 0x30, 0x1c, 0x22}, + [SPECIES_ZUBAT - 1] = {0x14, 0x1d, 0x08, 0x14, 0x29}, + [SPECIES_GOLBAT - 1] = {0x23, 0x1a, 0x00, 0x21, 0x2e}, + [SPECIES_ODDISH - 1] = {0x1d, 0x20, 0x28, 0x1d, 0x2b}, + [SPECIES_GLOOM - 1] = {0x1c, 0x18, 0x28, 0x1c, 0x27}, + [SPECIES_VILEPLUME - 1] = {0x1c, 0x1e, 0x28, 0x1d, 0x2a}, + [SPECIES_PARAS - 1] = {0x1d, 0x1a, 0x30, 0x1c, 0x27}, + [SPECIES_PARASECT - 1] = {0x1e, 0x1c, 0x28, 0x20, 0x2e}, + [SPECIES_VENONAT - 1] = {0x1b, 0x16, 0x10, 0x1a, 0x29}, + [SPECIES_VENOMOTH - 1] = {0x12, 0x19, 0x08, 0x16, 0x27}, + [SPECIES_DIGLETT - 1] = {0x1e, 0x16, 0x30, 0x1c, 0x23}, + [SPECIES_DUGTRIO - 1] = {0x1a, 0x11, 0x30, 0x1a, 0x1f}, + [SPECIES_MEOWTH - 1] = {0x1c, 0x16, 0x30, 0x1c, 0x23}, + [SPECIES_PERSIAN - 1] = {0x13, 0x13, 0x30, 0x13, 0x21}, + [SPECIES_PSYDUCK - 1] = {0x1c, 0x13, 0x30, 0x17, 0x29}, + [SPECIES_GOLDUCK - 1] = {0x17, 0x12, 0x28, 0x17, 0x22}, + [SPECIES_MANKEY - 1] = {0x1c, 0x15, 0x30, 0x1b, 0x23}, + [SPECIES_PRIMEAPE - 1] = {0x1e, 0x16, 0x30, 0x1a, 0x27}, + [SPECIES_GROWLITHE - 1] = {0x14, 0x17, 0x30, 0x14, 0x24}, + [SPECIES_ARCANINE - 1] = {0x0f, 0x09, 0x28, 0x0c, 0x19}, + [SPECIES_POLIWAG - 1] = {0x15, 0x14, 0x30, 0x13, 0x1f}, + [SPECIES_POLIWHIRL - 1] = {0x1f, 0x10, 0x30, 0x1e, 0x17}, + [SPECIES_POLIWRATH - 1] = {0x22, 0x0c, 0x30, 0x21, 0x18}, + [SPECIES_ABRA - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x21}, + [SPECIES_KADABRA - 1] = {0x1b, 0x12, 0x30, 0x1c, 0x25}, + [SPECIES_ALAKAZAM - 1] = {0x1c, 0x11, 0x28, 0x1d, 0x26}, + [SPECIES_MACHOP - 1] = {0x1b, 0x11, 0x30, 0x1b, 0x1e}, + [SPECIES_MACHOKE - 1] = {0x1d, 0x11, 0x30, 0x1d, 0x1f}, + [SPECIES_MACHAMP - 1] = {0x1a, 0x0d, 0x28, 0x1c, 0x1b}, + [SPECIES_BELLSPROUT - 1] = {0x15, 0x0e, 0x30, 0x0e, 0x1c}, + [SPECIES_WEEPINBELL - 1] = {0x1a, 0x1c, 0x10, 0x15, 0x32}, + [SPECIES_VICTREEBEL - 1] = {0x1e, 0x0f, 0x30, 0x1c, 0x1b}, + [SPECIES_TENTACOOL - 1] = {0x1a, 0x15, 0x30, 0x1e, 0x26}, + [SPECIES_TENTACRUEL - 1] = {0x1b, 0x10, 0x28, 0x1c, 0x26}, + [SPECIES_GEODUDE - 1] = {0x1c, 0x20, 0x28, 0x1d, 0x2d}, + [SPECIES_GRAVELER - 1] = {0x1d, 0x19, 0x28, 0x1e, 0x26}, + [SPECIES_GOLEM - 1] = {0x19, 0x1b, 0x28, 0x1c, 0x27}, + [SPECIES_PONYTA - 1] = {0x0f, 0x11, 0x30, 0x0e, 0x23}, + [SPECIES_RAPIDASH - 1] = {0x2f, 0x0f, 0x28, 0x2b, 0x1e}, + [SPECIES_SLOWPOKE - 1] = {0x14, 0x1f, 0x28, 0x15, 0x2f}, + [SPECIES_SLOWBRO - 1] = {0x0e, 0x0d, 0x28, 0x0c, 0x1f}, + [SPECIES_MAGNEMITE - 1] = {0x20, 0x1b, 0x10, 0x1f, 0x29}, + [SPECIES_MAGNETON - 1] = {0x1f, 0x14, 0x08, 0x1f, 0x22}, + [SPECIES_FARFETCHD - 1] = {0x16, 0x14, 0x30, 0x16, 0x29}, + [SPECIES_DODUO - 1] = {0x11, 0x16, 0x30, 0x0d, 0x2c}, + [SPECIES_DODRIO - 1] = {0x1d, 0x04, 0x28, 0x0e, 0x07}, + [SPECIES_SEEL - 1] = {0x1b, 0x24, 0x20, 0x17, 0x35}, + [SPECIES_DEWGONG - 1] = {0x12, 0x0a, 0x30, 0x0e, 0x1a}, + [SPECIES_GRIMER - 1] = {0x1f, 0x10, 0x30, 0x1d, 0x25}, + [SPECIES_MUK - 1] = {0x17, 0x0f, 0x30, 0x19, 0x22}, + [SPECIES_SHELLDER - 1] = {0x1a, 0x18, 0x30, 0x17, 0x29}, + [SPECIES_CLOYSTER - 1] = {0x19, 0x1e, 0x28, 0x1d, 0x2c}, + [SPECIES_GASTLY - 1] = {0x1a, 0x1f, 0x08, 0x19, 0x30}, + [SPECIES_HAUNTER - 1] = {0x20, 0x14, 0x08, 0x1d, 0x26}, + [SPECIES_GENGAR - 1] = {0x1a, 0x16, 0x30, 0x19, 0x28}, + [SPECIES_ONIX - 1] = {0x1f, 0x24, 0x20, 0x28, 0x36}, + [SPECIES_DROWZEE - 1] = {0x1a, 0x0e, 0x30, 0x1a, 0x1e}, + [SPECIES_HYPNO - 1] = {0x1c, 0x12, 0x30, 0x19, 0x24}, + [SPECIES_KRABBY - 1] = {0x1d, 0x1d, 0x30, 0x1a, 0x2b}, + [SPECIES_KINGLER - 1] = {0x1e, 0x1f, 0x28, 0x1c, 0x30}, + [SPECIES_VOLTORB - 1] = {0x1c, 0x1b, 0x30, 0x1b, 0x2b}, + [SPECIES_ELECTRODE - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x2e}, + [SPECIES_EXEGGCUTE - 1] = {0x21, 0x17, 0x30, 0x20, 0x24}, + [SPECIES_EXEGGUTOR - 1] = {0x1c, 0x17, 0x28, 0x1b, 0x25}, + [SPECIES_CUBONE - 1] = {0x1b, 0x12, 0x30, 0x1b, 0x22}, + [SPECIES_MAROWAK - 1] = {0x14, 0x0f, 0x30, 0x11, 0x23}, + [SPECIES_HITMONLEE - 1] = {0x2e, 0x11, 0x30, 0x28, 0x22}, + [SPECIES_HITMONCHAN - 1] = {0x22, 0x0e, 0x30, 0x1e, 0x1d}, + [SPECIES_LICKITUNG - 1] = {0x14, 0x11, 0x30, 0x14, 0x24}, + [SPECIES_KOFFING - 1] = {0x1e, 0x14, 0x10, 0x1d, 0x20}, + [SPECIES_WEEZING - 1] = {0x11, 0x0d, 0x10, 0x0f, 0x1c}, + [SPECIES_RHYHORN - 1] = {0x0e, 0x23, 0x20, 0x14, 0x33}, + [SPECIES_RHYDON - 1] = {0x0d, 0x12, 0x28, 0x17, 0x22}, + [SPECIES_CHANSEY - 1] = {0x1a, 0x0d, 0x30, 0x1a, 0x1a}, + [SPECIES_TANGELA - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x29}, + [SPECIES_KANGASKHAN - 1] = {0x1b, 0x06, 0x28, 0x1c, 0x14}, + [SPECIES_HORSEA - 1] = {0x1c, 0x14, 0x30, 0x16, 0x23}, + [SPECIES_SEADRA - 1] = {0x10, 0x17, 0x30, 0x09, 0x2a}, + [SPECIES_GOLDEEN - 1] = {0x16, 0x23, 0x20, 0x15, 0x34}, + [SPECIES_SEAKING - 1] = {0x16, 0x0f, 0x30, 0x10, 0x18}, + [SPECIES_STARYU - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x26}, + [SPECIES_STARMIE - 1] = {0x1d, 0x13, 0x30, 0x1b, 0x20}, + [SPECIES_MR_MIME - 1] = {0x24, 0x11, 0x30, 0x25, 0x1e}, + [SPECIES_SCYTHER - 1] = {0x10, 0x19, 0x28, 0x12, 0x27}, + [SPECIES_JYNX - 1] = {0x1b, 0x0f, 0x30, 0x19, 0x1c}, + [SPECIES_ELECTABUZZ - 1] = {0x14, 0x11, 0x30, 0x17, 0x20}, + [SPECIES_MAGMAR - 1] = {0x10, 0x0e, 0x30, 0x0b, 0x19}, + [SPECIES_PINSIR - 1] = {0x1d, 0x1c, 0x28, 0x20, 0x2b}, + [SPECIES_TAUROS - 1] = {0x11, 0x1d, 0x28, 0x13, 0x2e}, + [SPECIES_MAGIKARP - 1] = {0x16, 0x15, 0x30, 0x13, 0x23}, + [SPECIES_GYARADOS - 1] = {0x0b, 0x18, 0x28, 0x16, 0x29}, + [SPECIES_LAPRAS - 1] = {0x16, 0x08, 0x28, 0x15, 0x16}, + [SPECIES_DITTO - 1] = {0x24, 0x12, 0x30, 0x1f, 0x20}, + [SPECIES_EEVEE - 1] = {0x16, 0x16, 0x30, 0x16, 0x23}, + [SPECIES_VAPOREON - 1] = {0x18, 0x23, 0x28, 0x18, 0x30}, + [SPECIES_JOLTEON - 1] = {0x14, 0x1b, 0x30, 0x16, 0x28}, + [SPECIES_FLAREON - 1] = {0x16, 0x17, 0x30, 0x14, 0x25}, + [SPECIES_PORYGON - 1] = {0x18, 0x12, 0x30, 0x10, 0x23}, + [SPECIES_OMANYTE - 1] = {0x1d, 0x1d, 0x30, 0x1c, 0x2b}, + [SPECIES_OMASTAR - 1] = {0x16, 0x1a, 0x30, 0x19, 0x2d}, + [SPECIES_KABUTO - 1] = {0x1b, 0x16, 0x30, 0x1a, 0x27}, + [SPECIES_KABUTOPS - 1] = {0x15, 0x11, 0x30, 0x15, 0x1f}, + [SPECIES_AERODACTYL - 1] = {0x13, 0x1d, 0x00, 0x14, 0x30}, + [SPECIES_SNORLAX - 1] = {0x35, 0x09, 0x30, 0x2e, 0x14}, + [SPECIES_ARTICUNO - 1] = {0x18, 0x0b, 0x18, 0x17, 0x17}, + [SPECIES_ZAPDOS - 1] = {0x0e, 0x0e, 0x10, 0x04, 0x28}, + [SPECIES_MOLTRES - 1] = {0x0b, 0x2a, 0x08, 0x0b, 0x38}, + [SPECIES_DRATINI - 1] = {0x0d, 0x12, 0x30, 0x0b, 0x21}, + [SPECIES_DRAGONAIR - 1] = {0x18, 0x0e, 0x30, 0x13, 0x1c}, + [SPECIES_DRAGONITE - 1] = {0x1b, 0x07, 0x18, 0x19, 0x17}, + [SPECIES_MEWTWO - 1] = {0x2b, 0x09, 0x28, 0x2c, 0x18}, + [SPECIES_MEW - 1] = {0x19, 0x14, 0x10, 0x1f, 0x21}, + [SPECIES_CHIKORITA - 1] = {0x1b, 0x17, 0x30, 0x1b, 0x24}, + [SPECIES_BAYLEEF - 1] = {0x1d, 0x10, 0x30, 0x20, 0x1d}, + [SPECIES_MEGANIUM - 1] = {0x05, 0x0d, 0x28, 0x0d, 0x1b}, + [SPECIES_CYNDAQUIL - 1] = {0x11, 0x1b, 0x30, 0x14, 0x27}, + [SPECIES_QUILAVA - 1] = {0x25, 0x18, 0x30, 0x27, 0x26}, + [SPECIES_TYPHLOSION - 1] = {0x09, 0x10, 0x28, 0x10, 0x1c}, + [SPECIES_TOTODILE - 1] = {0x16, 0x10, 0x30, 0x19, 0x20}, + [SPECIES_CROCONAW - 1] = {0x16, 0x10, 0x30, 0x18, 0x21}, + [SPECIES_FERALIGATR - 1] = {0x0e, 0x0a, 0x28, 0x08, 0x1a}, + [SPECIES_SENTRET - 1] = {0x1e, 0x0a, 0x30, 0x1d, 0x15}, + [SPECIES_FURRET - 1] = {0x21, 0x0e, 0x30, 0x21, 0x19}, + [SPECIES_HOOTHOOT - 1] = {0x1d, 0x15, 0x30, 0x1c, 0x24}, + [SPECIES_NOCTOWL - 1] = {0x19, 0x0e, 0x30, 0x18, 0x1c}, + [SPECIES_LEDYBA - 1] = {0x1b, 0x15, 0x30, 0x1c, 0x24}, + [SPECIES_LEDIAN - 1] = {0x18, 0x12, 0x10, 0x1c, 0x21}, + [SPECIES_SPINARAK - 1] = {0x20, 0x20, 0x28, 0x20, 0x2d}, + [SPECIES_ARIADOS - 1] = {0x17, 0x23, 0x28, 0x15, 0x30}, + [SPECIES_CROBAT - 1] = {0x22, 0x1e, 0x08, 0x23, 0x2b}, + [SPECIES_CHINCHOU - 1] = {0x1f, 0x1d, 0x30, 0x1f, 0x29}, + [SPECIES_LANTURN - 1] = {0x10, 0x23, 0x28, 0x19, 0x33}, + [SPECIES_PICHU - 1] = {0x1e, 0x17, 0x30, 0x1e, 0x24}, + [SPECIES_CLEFFA - 1] = {0x1c, 0x18, 0x30, 0x1e, 0x26}, + [SPECIES_IGGLYBUFF - 1] = {0x1f, 0x19, 0x30, 0x1f, 0x24}, + [SPECIES_TOGEPI - 1] = {0x21, 0x15, 0x30, 0x1f, 0x20}, + [SPECIES_TOGETIC - 1] = {0x1b, 0x10, 0x30, 0x1c, 0x1c}, + [SPECIES_NATU - 1] = {0x1c, 0x17, 0x30, 0x15, 0x21}, + [SPECIES_XATU - 1] = {0x1b, 0x08, 0x30, 0x19, 0x14}, + [SPECIES_MAREEP - 1] = {0x16, 0x15, 0x30, 0x15, 0x24}, + [SPECIES_FLAAFFY - 1] = {0x19, 0x12, 0x30, 0x18, 0x21}, + [SPECIES_AMPHAROS - 1] = {0x0f, 0x0a, 0x30, 0x10, 0x1b}, + [SPECIES_BELLOSSOM - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x20}, + [SPECIES_MARILL - 1] = {0x1d, 0x15, 0x30, 0x1d, 0x22}, + [SPECIES_AZUMARILL - 1] = {0x1a, 0x12, 0x30, 0x17, 0x1f}, + [SPECIES_SUDOWOODO - 1] = {0x20, 0x10, 0x30, 0x20, 0x1f}, + [SPECIES_POLITOED - 1] = {0x1d, 0x0f, 0x30, 0x1e, 0x20}, + [SPECIES_HOPPIP - 1] = {0x23, 0x25, 0x08, 0x25, 0x33}, + [SPECIES_SKIPLOOM - 1] = {0x1e, 0x18, 0x08, 0x1c, 0x27}, + [SPECIES_JUMPLUFF - 1] = {0x1d, 0x21, 0x08, 0x20, 0x2f}, + [SPECIES_AIPOM - 1] = {0x1e, 0x29, 0x18, 0x1e, 0x35}, + [SPECIES_SUNKERN - 1] = {0x1f, 0x20, 0x08, 0x24, 0x2e}, + [SPECIES_SUNFLORA - 1] = {0x1c, 0x0c, 0x30, 0x1b, 0x19}, + [SPECIES_YANMA - 1] = {0x1b, 0x28, 0x08, 0x16, 0x35}, + [SPECIES_WOOPER - 1] = {0x1d, 0x13, 0x30, 0x1f, 0x21}, + [SPECIES_QUAGSIRE - 1] = {0x15, 0x09, 0x30, 0x12, 0x18}, + [SPECIES_ESPEON - 1] = {0x11, 0x1b, 0x30, 0x11, 0x29}, + [SPECIES_UMBREON - 1] = {0x23, 0x15, 0x30, 0x23, 0x22}, + [SPECIES_MURKROW - 1] = {0x24, 0x13, 0x30, 0x20, 0x22}, + [SPECIES_SLOWKING - 1] = {0x1e, 0x13, 0x28, 0x1d, 0x25}, + [SPECIES_MISDREAVUS - 1] = {0x28, 0x21, 0x08, 0x26, 0x2e}, + [SPECIES_UNOWN - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_WOBBUFFET - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x1a}, + [SPECIES_GIRAFARIG - 1] = {0x0b, 0x0d, 0x28, 0x11, 0x1d}, + [SPECIES_PINECO - 1] = {0x1d, 0x12, 0x10, 0x19, 0x25}, + [SPECIES_FORRETRESS - 1] = {0x19, 0x17, 0x08, 0x1e, 0x26}, + [SPECIES_DUNSPARCE - 1] = {0x10, 0x1b, 0x30, 0x0c, 0x2d}, + [SPECIES_GLIGAR - 1] = {0x1e, 0x13, 0x08, 0x1d, 0x23}, + [SPECIES_STEELIX - 1] = {0x0c, 0x0d, 0x28, 0x0d, 0x1c}, + [SPECIES_SNUBBULL - 1] = {0x1b, 0x15, 0x30, 0x1a, 0x23}, + [SPECIES_GRANBULL - 1] = {0x1c, 0x09, 0x30, 0x19, 0x18}, + [SPECIES_QWILFISH - 1] = {0x1f, 0x26, 0x20, 0x1d, 0x33}, + [SPECIES_SCIZOR - 1] = {0x15, 0x0f, 0x10, 0x1a, 0x1a}, + [SPECIES_SHUCKLE - 1] = {0x25, 0x0a, 0x30, 0x24, 0x18}, + [SPECIES_HERACROSS - 1] = {0x18, 0x19, 0x28, 0x1a, 0x26}, + [SPECIES_SNEASEL - 1] = {0x1c, 0x13, 0x30, 0x1d, 0x24}, + [SPECIES_TEDDIURSA - 1] = {0x1e, 0x12, 0x30, 0x1b, 0x23}, + [SPECIES_URSARING - 1] = {0x1e, 0x04, 0x28, 0x1d, 0x14}, + [SPECIES_SLUGMA - 1] = {0x20, 0x18, 0x30, 0x20, 0x28}, + [SPECIES_MAGCARGO - 1] = {0x16, 0x11, 0x30, 0x17, 0x23}, + [SPECIES_SWINUB - 1] = {0x1c, 0x18, 0x30, 0x1b, 0x25}, + [SPECIES_PILOSWINE - 1] = {0x18, 0x23, 0x20, 0x18, 0x36}, + [SPECIES_CORSOLA - 1] = {0x19, 0x1d, 0x28, 0x19, 0x2b}, + [SPECIES_REMORAID - 1] = {0x15, 0x1f, 0x28, 0x13, 0x2b}, + [SPECIES_OCTILLERY - 1] = {0x1c, 0x11, 0x30, 0x1a, 0x20}, + [SPECIES_DELIBIRD - 1] = {0x1d, 0x11, 0x30, 0x1b, 0x1f}, + [SPECIES_MANTINE - 1] = {0x16, 0x1e, 0x28, 0x1f, 0x27}, + [SPECIES_SKARMORY - 1] = {0x1e, 0x00, 0x28, 0x13, 0x07}, + [SPECIES_HOUNDOUR - 1] = {0x25, 0x11, 0x30, 0x25, 0x1f}, + [SPECIES_HOUNDOOM - 1] = {0x0d, 0x13, 0x30, 0x0d, 0x24}, + [SPECIES_KINGDRA - 1] = {0x0e, 0x13, 0x28, 0x0a, 0x2c}, + [SPECIES_PHANPY - 1] = {0x1b, 0x11, 0x30, 0x19, 0x24}, + [SPECIES_DONPHAN - 1] = {0x11, 0x15, 0x30, 0x19, 0x2c}, + [SPECIES_PORYGON2 - 1] = {0x18, 0x11, 0x30, 0x11, 0x20}, + [SPECIES_STANTLER - 1] = {0x15, 0x15, 0x28, 0x17, 0x28}, + [SPECIES_SMEARGLE - 1] = {0x18, 0x10, 0x30, 0x1b, 0x25}, + [SPECIES_TYROGUE - 1] = {0x1e, 0x12, 0x30, 0x1f, 0x1f}, + [SPECIES_HITMONTOP - 1] = {0x1a, 0x39, 0x10, 0x1a, 0x2b}, + [SPECIES_SMOOCHUM - 1] = {0x20, 0x18, 0x30, 0x21, 0x26}, + [SPECIES_ELEKID - 1] = {0x1d, 0x14, 0x30, 0x1d, 0x23}, + [SPECIES_MAGBY - 1] = {0x1c, 0x15, 0x30, 0x1a, 0x24}, + [SPECIES_MILTANK - 1] = {0x18, 0x0e, 0x30, 0x18, 0x1e}, + [SPECIES_BLISSEY - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x19}, + [SPECIES_RAIKOU - 1] = {0x29, 0x0c, 0x28, 0x27, 0x1e}, + [SPECIES_ENTEI - 1] = {0x08, 0x09, 0x28, 0x0b, 0x18}, + [SPECIES_SUICUNE - 1] = {0x23, 0x1d, 0x28, 0x26, 0x2c}, + [SPECIES_LARVITAR - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x24}, + [SPECIES_PUPITAR - 1] = {0x1b, 0x19, 0x30, 0x1b, 0x28}, + [SPECIES_TYRANITAR - 1] = {0x06, 0x0b, 0x28, 0x0d, 0x19}, + [SPECIES_LUGIA - 1] = {0x08, 0x2a, 0x08, 0x14, 0x34}, + [SPECIES_HO_OH - 1] = {0x0d, 0x25, 0x08, 0x0e, 0x34}, + [SPECIES_CELEBI - 1] = {0x15, 0x21, 0x08, 0x1a, 0x2b}, + [SPECIES_OLD_UNOWN_B - 1] = {0x1f, 0x12, 0x08, 0x1e, 0x1c}, + [SPECIES_OLD_UNOWN_C - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_D - 1] = {0x1c, 0x19, 0x08, 0x1b, 0x23}, + [SPECIES_OLD_UNOWN_E - 1] = {0x21, 0x19, 0x08, 0x20, 0x23}, + [SPECIES_OLD_UNOWN_F - 1] = {0x1b, 0x13, 0x08, 0x1a, 0x1d}, + [SPECIES_OLD_UNOWN_G - 1] = {0x20, 0x16, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_H - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_I - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_J - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, + [SPECIES_OLD_UNOWN_K - 1] = {0x1d, 0x1a, 0x08, 0x1c, 0x24}, + [SPECIES_OLD_UNOWN_L - 1] = {0x20, 0x16, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_M - 1] = {0x20, 0x1c, 0x08, 0x1f, 0x26}, + [SPECIES_OLD_UNOWN_N - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_O - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_P - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, + [SPECIES_OLD_UNOWN_Q - 1] = {0x1d, 0x16, 0x08, 0x1c, 0x20}, + [SPECIES_OLD_UNOWN_R - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_S - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_T - 1] = {0x20, 0x1e, 0x08, 0x1f, 0x28}, + [SPECIES_OLD_UNOWN_U - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_V - 1] = {0x1e, 0x1e, 0x08, 0x1d, 0x28}, + [SPECIES_OLD_UNOWN_W - 1] = {0x20, 0x1d, 0x08, 0x1f, 0x27}, + [SPECIES_OLD_UNOWN_X - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_Y - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_Z - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_TREECKO - 1] = {0x1a, 0x0f, 0x30, 0x19, 0x20}, + [SPECIES_GROVYLE - 1] = {0x0d, 0x05, 0x10, 0x05, 0x13}, + [SPECIES_SCEPTILE - 1] = {0x10, 0x04, 0x28, 0x0c, 0x12}, + [SPECIES_TORCHIC - 1] = {0x17, 0x18, 0x30, 0x15, 0x25}, + [SPECIES_COMBUSKEN - 1] = {0x20, 0x12, 0x28, 0x1e, 0x20}, + [SPECIES_BLAZIKEN - 1] = {0x1a, 0x07, 0x28, 0x1d, 0x13}, + [SPECIES_MUDKIP - 1] = {0x1b, 0x1d, 0x28, 0x19, 0x2c}, + [SPECIES_MARSHTOMP - 1] = {0x1d, 0x11, 0x30, 0x1c, 0x20}, + [SPECIES_SWAMPERT - 1] = {0x1b, 0x11, 0x28, 0x1b, 0x23}, + [SPECIES_POOCHYENA - 1] = {0x14, 0x12, 0x30, 0x0f, 0x20}, + [SPECIES_MIGHTYENA - 1] = {0x09, 0x0d, 0x28, 0x09, 0x1c}, + [SPECIES_ZIGZAGOON - 1] = {0x0b, 0x1a, 0x30, 0x09, 0x2b}, + [SPECIES_LINOONE - 1] = {0x0d, 0x28, 0x18, 0x0b, 0x37}, + [SPECIES_WURMPLE - 1] = {0x21, 0x17, 0x30, 0x1f, 0x26}, + [SPECIES_SILCOON - 1] = {0x13, 0x1c, 0x30, 0x11, 0x2a}, + [SPECIES_BEAUTIFLY - 1] = {0x0f, 0x1b, 0x08, 0x0e, 0x28}, + [SPECIES_CASCOON - 1] = {0x14, 0x1d, 0x30, 0x11, 0x2c}, + [SPECIES_DUSTOX - 1] = {0x14, 0x19, 0x08, 0x16, 0x26}, + [SPECIES_LOTAD - 1] = {0x19, 0x25, 0x28, 0x17, 0x32}, + [SPECIES_LOMBRE - 1] = {0x22, 0x10, 0x30, 0x29, 0x1d}, + [SPECIES_LUDICOLO - 1] = {0x1c, 0x0f, 0x28, 0x1b, 0x24}, + [SPECIES_SEEDOT - 1] = {0x1b, 0x17, 0x30, 0x18, 0x28}, + [SPECIES_NUZLEAF - 1] = {0x20, 0x0d, 0x30, 0x1a, 0x1d}, + [SPECIES_SHIFTRY - 1] = {0x32, 0x11, 0x28, 0x2e, 0x23}, + [SPECIES_NINCADA - 1] = {0x18, 0x1a, 0x30, 0x17, 0x28}, + [SPECIES_NINJASK - 1] = {0x17, 0x21, 0x00, 0x17, 0x2f}, + [SPECIES_SHEDINJA - 1] = {0x16, 0x19, 0x08, 0x18, 0x2a}, + [SPECIES_TAILLOW - 1] = {0x17, 0x10, 0x30, 0x14, 0x1e}, + [SPECIES_SWELLOW - 1] = {0x0c, 0x0a, 0x28, 0x05, 0x16}, + [SPECIES_SHROOMISH - 1] = {0x1f, 0x16, 0x30, 0x1d, 0x23}, + [SPECIES_BRELOOM - 1] = {0x25, 0x0c, 0x30, 0x23, 0x19}, + [SPECIES_SPINDA - 1] = {0x21, 0x16, 0x30, 0x1f, 0x27}, + [SPECIES_WINGULL - 1] = {0x1a, 0x16, 0x10, 0x15, 0x26}, + [SPECIES_PELIPPER - 1] = {0x1d, 0x0a, 0x10, 0x09, 0x1b}, + [SPECIES_SURSKIT - 1] = {0x1d, 0x16, 0x30, 0x1c, 0x25}, + [SPECIES_MASQUERAIN - 1] = {0x1a, 0x21, 0x08, 0x14, 0x30}, + [SPECIES_WAILMER - 1] = {0x17, 0x17, 0x30, 0x16, 0x28}, + [SPECIES_WAILORD - 1] = {0x17, 0x03, 0x30, 0x09, 0x13}, + [SPECIES_SKITTY - 1] = {0x24, 0x1a, 0x30, 0x22, 0x2a}, + [SPECIES_DELCATTY - 1] = {0x1e, 0x12, 0x30, 0x1c, 0x21}, + [SPECIES_KECLEON - 1] = {0x19, 0x10, 0x30, 0x13, 0x1e}, + [SPECIES_BALTOY - 1] = {0x1d, 0x15, 0x30, 0x1b, 0x22}, + [SPECIES_CLAYDOL - 1] = {0x1e, 0x0d, 0x28, 0x1d, 0x24}, + [SPECIES_NOSEPASS - 1] = {0x1f, 0x10, 0x30, 0x15, 0x23}, + [SPECIES_TORKOAL - 1] = {0x0e, 0x19, 0x28, 0x0a, 0x27}, + [SPECIES_SABLEYE - 1] = {0x1e, 0x16, 0x30, 0x1d, 0x27}, + [SPECIES_BARBOACH - 1] = {0x17, 0x12, 0x30, 0x15, 0x1e}, + [SPECIES_WHISCASH - 1] = {0x18, 0x20, 0x28, 0x17, 0x31}, + [SPECIES_LUVDISC - 1] = {0x19, 0x0f, 0x30, 0x13, 0x1c}, + [SPECIES_CORPHISH - 1] = {0x1f, 0x14, 0x30, 0x1d, 0x23}, + [SPECIES_CRAWDAUNT - 1] = {0x14, 0x0c, 0x28, 0x18, 0x23}, + [SPECIES_FEEBAS - 1] = {0x18, 0x1e, 0x28, 0x16, 0x2f}, + [SPECIES_MILOTIC - 1] = {0x20, 0x0c, 0x28, 0x1f, 0x1d}, + [SPECIES_CARVANHA - 1] = {0x16, 0x19, 0x30, 0x13, 0x22}, + [SPECIES_SHARPEDO - 1] = {0x19, 0x0c, 0x28, 0x17, 0x27}, + [SPECIES_TRAPINCH - 1] = {0x29, 0x13, 0x30, 0x17, 0x18}, + [SPECIES_VIBRAVA - 1] = {0x10, 0x27, 0x20, 0x0e, 0x34}, + [SPECIES_FLYGON - 1] = {0x22, 0x07, 0x10, 0x21, 0x13}, + [SPECIES_MAKUHITA - 1] = {0x22, 0x13, 0x30, 0x1c, 0x23}, + [SPECIES_HARIYAMA - 1] = {0x24, 0x0f, 0x28, 0x26, 0x1c}, + [SPECIES_ELECTRIKE - 1] = {0x11, 0x18, 0x30, 0x14, 0x27}, + [SPECIES_MANECTRIC - 1] = {0x2f, 0x18, 0x28, 0x2e, 0x29}, + [SPECIES_NUMEL - 1] = {0x10, 0x1a, 0x30, 0x0d, 0x2a}, + [SPECIES_CAMERUPT - 1] = {0x0d, 0x22, 0x28, 0x0e, 0x36}, + [SPECIES_SPHEAL - 1] = {0x1e, 0x0f, 0x30, 0x18, 0x1f}, + [SPECIES_SEALEO - 1] = {0x1c, 0x09, 0x30, 0x1a, 0x18}, + [SPECIES_WALREIN - 1] = {0x19, 0x01, 0x28, 0x10, 0x16}, + [SPECIES_CACNEA - 1] = {0x1f, 0x17, 0x30, 0x1d, 0x29}, + [SPECIES_CACTURNE - 1] = {0x1d, 0x0e, 0x28, 0x1d, 0x1b}, + [SPECIES_SNORUNT - 1] = {0x1e, 0x16, 0x30, 0x1e, 0x26}, + [SPECIES_GLALIE - 1] = {0x1a, 0x1c, 0x08, 0x1a, 0x31}, + [SPECIES_LUNATONE - 1] = {0x1c, 0x16, 0x08, 0x19, 0x2c}, + [SPECIES_SOLROCK - 1] = {0x18, 0x18, 0x10, 0x17, 0x31}, + [SPECIES_AZURILL - 1] = {0x1b, 0x10, 0x30, 0x18, 0x1f}, + [SPECIES_SPOINK - 1] = {0x21, 0x14, 0x30, 0x1b, 0x28}, + [SPECIES_GRUMPIG - 1] = {0x14, 0x10, 0x30, 0x15, 0x20}, + [SPECIES_PLUSLE - 1] = {0x1c, 0x16, 0x08, 0x1d, 0x25}, + [SPECIES_MINUN - 1] = {0x21, 0x16, 0x08, 0x1f, 0x26}, + [SPECIES_MAWILE - 1] = {0x2d, 0x14, 0x30, 0x2f, 0x24}, + [SPECIES_MEDITITE - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x25}, + [SPECIES_MEDICHAM - 1] = {0x21, 0x0f, 0x28, 0x1e, 0x1d}, + [SPECIES_SWABLU - 1] = {0x1b, 0x16, 0x10, 0x17, 0x23}, + [SPECIES_ALTARIA - 1] = {0x1d, 0x0b, 0x10, 0x1a, 0x1a}, + [SPECIES_WYNAUT - 1] = {0x1a, 0x15, 0x30, 0x1b, 0x26}, + [SPECIES_DUSKULL - 1] = {0x10, 0x18, 0x08, 0x14, 0x2e}, + [SPECIES_DUSCLOPS - 1] = {0x1c, 0x0f, 0x30, 0x1a, 0x28}, + [SPECIES_ROSELIA - 1] = {0x1e, 0x11, 0x30, 0x1d, 0x20}, + [SPECIES_SLAKOTH - 1] = {0x19, 0x1e, 0x30, 0x18, 0x2f}, + [SPECIES_VIGOROTH - 1] = {0x10, 0x12, 0x28, 0x14, 0x24}, + [SPECIES_SLAKING - 1] = {0x37, 0x0f, 0x30, 0x29, 0x21}, + [SPECIES_GULPIN - 1] = {0x1b, 0x18, 0x30, 0x17, 0x26}, + [SPECIES_SWALOT - 1] = {0x1f, 0x06, 0x30, 0x15, 0x13}, + [SPECIES_TROPIUS - 1] = {0x18, 0x0a, 0x28, 0x20, 0x18}, + [SPECIES_WHISMUR - 1] = {0x1f, 0x19, 0x30, 0x1d, 0x29}, + [SPECIES_LOUDRED - 1] = {0x1c, 0x12, 0x28, 0x22, 0x27}, + [SPECIES_EXPLOUD - 1] = {0x10, 0x10, 0x28, 0x1a, 0x2a}, + [SPECIES_CLAMPERL - 1] = {0x20, 0x1a, 0x30, 0x1e, 0x26}, + [SPECIES_HUNTAIL - 1] = {0x13, 0x1e, 0x28, 0x15, 0x33}, + [SPECIES_GOREBYSS - 1] = {0x0d, 0x1f, 0x28, 0x03, 0x32}, + [SPECIES_ABSOL - 1] = {0x2a, 0x11, 0x28, 0x2a, 0x22}, + [SPECIES_SHUPPET - 1] = {0x16, 0x19, 0x08, 0x17, 0x27}, + [SPECIES_BANETTE - 1] = {0x1c, 0x14, 0x08, 0x1b, 0x23}, + [SPECIES_SEVIPER - 1] = {0x0e, 0x0d, 0x30, 0x0b, 0x1e}, + [SPECIES_ZANGOOSE - 1] = {0x18, 0x0c, 0x28, 0x15, 0x1a}, + [SPECIES_RELICANTH - 1] = {0x0c, 0x1f, 0x30, 0x09, 0x2d}, + [SPECIES_ARON - 1] = {0x18, 0x1c, 0x30, 0x1a, 0x2c}, + [SPECIES_LAIRON - 1] = {0x0b, 0x21, 0x30, 0x12, 0x2f}, + [SPECIES_AGGRON - 1] = {0x10, 0x0b, 0x28, 0x16, 0x1b}, + [SPECIES_CASTFORM - 1] = {0x1d, 0x18, 0x08, 0x1b, 0x26}, + [SPECIES_VOLBEAT - 1] = {0x25, 0x15, 0x08, 0x21, 0x25}, + [SPECIES_ILLUMISE - 1] = {0x20, 0x12, 0x08, 0x1f, 0x20}, + [SPECIES_LILEEP - 1] = {0x1e, 0x11, 0x30, 0x1f, 0x1e}, + [SPECIES_CRADILY - 1] = {0x12, 0x16, 0x28, 0x15, 0x28}, + [SPECIES_ANORITH - 1] = {0x1c, 0x1e, 0x30, 0x1b, 0x2b}, + [SPECIES_ARMALDO - 1] = {0x15, 0x05, 0x28, 0x14, 0x13}, + [SPECIES_RALTS - 1] = {0x1f, 0x17, 0x30, 0x20, 0x23}, + [SPECIES_KIRLIA - 1] = {0x1c, 0x12, 0x30, 0x1f, 0x1e}, + [SPECIES_GARDEVOIR - 1] = {0x35, 0x07, 0x28, 0x32, 0x14}, + [SPECIES_BAGON - 1] = {0x17, 0x13, 0x30, 0x16, 0x26}, + [SPECIES_SHELGON - 1] = {0x19, 0x1b, 0x30, 0x19, 0x2c}, + [SPECIES_SALAMENCE - 1] = {0x09, 0x11, 0x30, 0x0a, 0x21}, + [SPECIES_BELDUM - 1] = {0x16, 0x19, 0x08, 0x18, 0x23}, + [SPECIES_METANG - 1] = {0x22, 0x0f, 0x10, 0x1f, 0x21}, + [SPECIES_METAGROSS - 1] = {0x24, 0x1b, 0x28, 0x22, 0x2b}, + [SPECIES_REGIROCK - 1] = {0x16, 0x07, 0x28, 0x14, 0x12}, + [SPECIES_REGICE - 1] = {0x19, 0x0c, 0x28, 0x17, 0x19}, + [SPECIES_REGISTEEL - 1] = {0x19, 0x0d, 0x28, 0x19, 0x19}, + [SPECIES_KYOGRE - 1] = {0x0e, 0x19, 0x28, 0x0b, 0x26}, + [SPECIES_GROUDON - 1] = {0x04, 0x0b, 0x28, 0x0a, 0x19}, + [SPECIES_RAYQUAZA - 1] = {0x0c, 0x0e, 0x10, 0x0e, 0x1f}, + [SPECIES_LATIAS - 1] = {0x1e, 0x0c, 0x10, 0x23, 0x19}, + [SPECIES_LATIOS - 1] = {0x05, 0x0e, 0x10, 0x05, 0x1d}, + [SPECIES_JIRACHI - 1] = {0x1c, 0x15, 0x08, 0x1e, 0x22}, + [SPECIES_DEOXYS - 1] = {0x1b, 0x08, 0x28, 0x1c, 0x16}, + [SPECIES_CHIMECHO - 1] = {0x1d, 0x0c, 0x08, 0x1c, 0x1a}, + [SPECIES_OLD_UNOWN_EMARK - 1] = {0x20, 0x21, 0x08, 0x20, 0x2b}, + [SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d} +}; + +void box_print(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str) +{ + struct TextSubPrinter printer; + + printer.current_text_offset = str; + printer.windowId = windowId; + printer.fontId = fontId; + printer.x = x; + printer.y = y; + printer.currentX = printer.x; + printer.currentY = printer.y; + printer.letterSpacing = GetFontAttribute(fontId, 2); + printer.lineSpacing = GetFontAttribute(fontId, 3); + printer.fontColor_l = 0; + printer.fontColor_h = color->bgColor; + printer.bgColor = color->fgColor; + printer.shadowColor = color->shadowColor; + AddTextPrinter(&printer, speed, NULL); +} + +void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str) +{ + struct TextSubPrinter printer; + + printer.current_text_offset = str; + printer.windowId = windowId; + printer.fontId = fontId; + printer.x = x; + printer.y = y; + printer.currentX = printer.x; + printer.currentY = printer.y; + printer.letterSpacing = letterSpacing; + printer.lineSpacing = lineSpacing; + printer.fontColor_l = 0; + printer.fontColor_h = color->bgColor; + printer.bgColor = color->fgColor; + printer.shadowColor = color->shadowColor; + AddTextPrinter(&printer, speed, NULL); +} + +void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 letterSpacing, u8 lineSpacing) +{ + struct TextSubPrinter printer; + + printer.current_text_offset = str; + printer.windowId = windowId; + printer.fontId = fontId; + printer.x = x; + printer.y = y; + printer.currentX = x; + printer.currentY = y; + printer.letterSpacing = letterSpacing; + printer.lineSpacing = lineSpacing; + printer.fontColor_l = 0; + printer.fontColor_h = GetFontAttribute(fontId, 5); + printer.bgColor = GetFontAttribute(fontId, 6); + printer.shadowColor = GetFontAttribute(fontId, 7); + AddTextPrinter(&printer, speed, callback); +} + +void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y) +{ + s32 i; + + for (i = 0; gSaveBlock2Ptr->playerName[i] != EOS; i++) + ; + + StringExpandPlaceholders(gStringVar4, src); + if (i != 5) + { + AddTextPrinterParameterized(windowId, 2, gStringVar4, x, y, 0xFF, NULL); + } + else + { + sub_812E62C(windowId, 2, gStringVar4, x, y, 0xFF, NULL, 0, 0); + } +} + +// Yeah, no, I'm not bothering with this +NAKED +void sub_819A080(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x28\n" + "\tstr r0, [sp]\n" + "\tstr r1, [sp, 0x4]\n" + "\tldr r0, [sp, 0x48]\n" + "\tldr r4, [sp, 0x4C]\n" + "\tldr r1, [sp, 0x50]\n" + "\tldr r5, [sp, 0x54]\n" + "\tlsls r2, 16\n" + "\tlsrs r2, 16\n" + "\tstr r2, [sp, 0x8]\n" + "\tlsls r3, 16\n" + "\tlsrs r3, 16\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tstr r0, [sp, 0xC]\n" + "\tlsls r4, 16\n" + "\tlsrs r4, 16\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tlsls r5, 16\n" + "\tlsrs r5, 16\n" + "\tldr r2, [sp, 0x4]\n" + "\tldrh r0, [r2, 0x4]\n" + "\tldr r2, [sp, 0xC]\n" + "\tsubs r0, r2\n" + "\tldr r2, [sp, 0x8]\n" + "\tadds r2, r1, r2\n" + "\tstr r2, [sp, 0x10]\n" + "\tcmp r0, r1\n" + "\tbge _0812E7B4\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r0, r1\n" + "\tstr r0, [sp, 0x10]\n" + "_0812E7B4:\n" + "\tldr r2, [sp, 0x4]\n" + "\tldrh r1, [r2, 0x6]\n" + "\tsubs r0, r1, r4\n" + "\tcmp r0, r5\n" + "\tbge _0812E7C6\n" + "\tadds r0, r3, r1\n" + "\tsubs r0, r4\n" + "\tstr r0, [sp, 0x14]\n" + "\tb _0812E7CA\n" + "_0812E7C6:\n" + "\tadds r5, r3, r5\n" + "\tstr r5, [sp, 0x14]\n" + "_0812E7CA:\n" + "\tldr r0, [sp]\n" + "\tldrh r1, [r0, 0x4]\n" + "\tmovs r2, 0x7\n" + "\tadds r0, r1, 0\n" + "\tands r0, r2\n" + "\tadds r1, r0\n" + "\tasrs r1, 3\n" + "\tstr r1, [sp, 0x18]\n" + "\tldr r0, [sp, 0x4]\n" + "\tldrh r1, [r0, 0x4]\n" + "\tadds r0, r1, 0\n" + "\tands r0, r2\n" + "\tadds r1, r0\n" + "\tasrs r1, 3\n" + "\tstr r1, [sp, 0x1C]\n" + "\tmov r12, r3\n" + "\tmov r8, r4\n" + "\tldr r1, [sp, 0x14]\n" + "\tcmp r12, r1\n" + "\tblt _0812E7F4\n" + "\tb _0812E932\n" + "_0812E7F4:\n" + "\tldr r5, [sp, 0x8]\n" + "\tldr r6, [sp, 0xC]\n" + "\tmov r2, r12\n" + "\tadds r2, 0x1\n" + "\tstr r2, [sp, 0x20]\n" + "\tmov r0, r8\n" + "\tadds r0, 0x1\n" + "\tstr r0, [sp, 0x24]\n" + "\tldr r1, [sp, 0x10]\n" + "\tcmp r5, r1\n" + "\tblt _0812E80C\n" + "\tb _0812E922\n" + "_0812E80C:\n" + "\tmovs r7, 0x1\n" + "\tmovs r2, 0xF0\n" + "\tmov r10, r2\n" + "\tmovs r0, 0xF\n" + "\tmov r9, r0\n" + "_0812E816:\n" + "\tasrs r0, r5, 1\n" + "\tmovs r1, 0x3\n" + "\tands r0, r1\n" + "\tldr r2, [sp]\n" + "\tldr r1, [r2]\n" + "\tadds r1, r0\n" + "\tasrs r0, r5, 3\n" + "\tlsls r0, 5\n" + "\tadds r1, r0\n" + "\tmov r2, r12\n" + "\tasrs r0, r2, 3\n" + "\tldr r2, [sp, 0x18]\n" + "\tmuls r0, r2\n" + "\tlsls r0, 5\n" + "\tadds r1, r0\n" + "\tmov r2, r12\n" + "\tlsls r0, r2, 29\n" + "\tlsrs r0, 27\n" + "\tadds r3, r1, r0\n" + "\tasrs r0, r6, 1\n" + "\tmovs r1, 0x3\n" + "\tands r0, r1\n" + "\tldr r2, [sp, 0x4]\n" + "\tldr r1, [r2]\n" + "\tadds r1, r0\n" + "\tasrs r0, r6, 3\n" + "\tlsls r0, 5\n" + "\tadds r1, r0\n" + "\tmov r2, r8\n" + "\tasrs r0, r2, 3\n" + "\tldr r2, [sp, 0x1C]\n" + "\tmuls r0, r2\n" + "\tlsls r0, 5\n" + "\tadds r1, r0\n" + "\tmov r2, r8\n" + "\tlsls r0, r2, 29\n" + "\tlsrs r0, 27\n" + "\tadds r4, r1, r0\n" + "\tadds r0, r4, 0\n" + "\tands r0, r7\n" + "\tcmp r0, 0\n" + "\tbeq _0812E8C2\n" + "\tsubs r4, 0x1\n" + "\tadds r0, r6, 0\n" + "\tands r0, r7\n" + "\tcmp r0, 0\n" + "\tbeq _0812E89A\n" + "\tldrh r0, [r4]\n" + "\tldr r2, _0812E88C @ =0x00000fff\n" + "\tands r2, r0\n" + "\tadds r0, r5, 0\n" + "\tands r0, r7\n" + "\tcmp r0, 0\n" + "\tbeq _0812E890\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 8\n" + "\tb _0812E912\n" + "\t.align 2, 0\n" + "_0812E88C: .4byte 0x00000fff\n" + "_0812E890:\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r9\n" + "\tands r0, r1\n" + "\tlsls r0, 12\n" + "\tb _0812E912\n" + "_0812E89A:\n" + "\tldrh r0, [r4]\n" + "\tldr r2, _0812E8B4 @ =0x0000f0ff\n" + "\tands r2, r0\n" + "\tadds r0, r5, 0\n" + "\tands r0, r7\n" + "\tcmp r0, 0\n" + "\tbeq _0812E8B8\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 4\n" + "\tb _0812E912\n" + "\t.align 2, 0\n" + "_0812E8B4: .4byte 0x0000f0ff\n" + "_0812E8B8:\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r9\n" + "\tands r0, r1\n" + "\tlsls r0, 8\n" + "\tb _0812E912\n" + "_0812E8C2:\n" + "\tadds r0, r6, 0\n" + "\tands r0, r7\n" + "\tcmp r0, 0\n" + "\tbeq _0812E8EE\n" + "\tldrh r0, [r4]\n" + "\tldr r2, _0812E8E0 @ =0x0000ff0f\n" + "\tands r2, r0\n" + "\tadds r0, r5, 0\n" + "\tands r0, r7\n" + "\tcmp r0, 0\n" + "\tbeq _0812E8E4\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r10\n" + "\tb _0812E910\n" + "\t.align 2, 0\n" + "_0812E8E0: .4byte 0x0000ff0f\n" + "_0812E8E4:\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r9\n" + "\tands r0, r1\n" + "\tlsls r0, 4\n" + "\tb _0812E912\n" + "_0812E8EE:\n" + "\tldrh r0, [r4]\n" + "\tldr r2, _0812E908 @ =0x0000fff0\n" + "\tands r2, r0\n" + "\tadds r0, r5, 0\n" + "\tands r0, r7\n" + "\tcmp r0, 0\n" + "\tbeq _0812E90C\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r10\n" + "\tands r0, r1\n" + "\tlsrs r0, 4\n" + "\tb _0812E912\n" + "\t.align 2, 0\n" + "_0812E908: .4byte 0x0000fff0\n" + "_0812E90C:\n" + "\tldrb r1, [r3]\n" + "\tmov r0, r9\n" + "_0812E910:\n" + "\tands r0, r1\n" + "_0812E912:\n" + "\torrs r2, r0\n" + "\tstrh r2, [r4]\n" + "\tadds r5, 0x1\n" + "\tadds r6, 0x1\n" + "\tldr r0, [sp, 0x10]\n" + "\tcmp r5, r0\n" + "\tbge _0812E922\n" + "\tb _0812E816\n" + "_0812E922:\n" + "\tldr r1, [sp, 0x20]\n" + "\tmov r12, r1\n" + "\tldr r2, [sp, 0x24]\n" + "\tmov r8, r2\n" + "\tldr r0, [sp, 0x14]\n" + "\tcmp r12, r0\n" + "\tbge _0812E932\n" + "\tb _0812E7F4\n" + "_0812E932:\n" + "\tadd sp, 0x28\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} + +#define tEvA data[0] +#define tEvB data[1] +#define tEvAEnd data[2] +#define tEvBEnd data[3] +#define tEvADelta data[4] +#define tEvBDelta data[5] +#define tEvWhich data[6] +#define tEvStepCount data[8] + +void OakSpeech_StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority) +{ + u8 taskId = CreateTask(Task_SmoothBlendLayers, priority); + gTasks[taskId].tEvA = eva_start << 8; + gTasks[taskId].tEvB = evb_start << 8; + gTasks[taskId].tEvAEnd = eva_end; + gTasks[taskId].tEvBEnd = evb_end; + gTasks[taskId].tEvADelta = (eva_end - eva_start) * 256 / ev_step; + gTasks[taskId].tEvBDelta = (evb_end - evb_start) * 256 / ev_step; + gTasks[taskId].tEvStepCount = ev_step; + SetGpuReg(REG_OFFSET_BLDALPHA, (evb_start << 8) | eva_start); +} + +bool8 OakSpeech_IsBlendTaskActive(void) +{ + return FuncIsActiveTask(Task_SmoothBlendLayers); +} + +static void Task_SmoothBlendLayers(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (tEvStepCount != 0) + { + if (tEvWhich == 0) + { + tEvA += tEvADelta; + tEvWhich = 1; + } + else + { + if (--tEvStepCount != 0) + { + tEvB += tEvBDelta; + } + else + { + tEvA = tEvAEnd << 8; + tEvB = tEvBEnd << 8; + } + tEvWhich = 0; + } + SetGpuReg(REG_OFFSET_BLDALPHA, (tEvB & ~0xFF) | ((u16)tEvA >> 8)); + if (tEvStepCount == 0) + DestroyTask(taskId); + } +} + +u8 sub_812EA78(u16 species, u32 personality, u8 a2) +{ + if (species == SPECIES_UNOWN) + { + u8 unownLetter = GetUnownLetterByPersonality(personality); + switch (unownLetter) + { + case 0: + break; + case 26: + species = SPECIES_OLD_UNOWN_EMARK; + break; + case 27: + species = SPECIES_OLD_UNOWN_QMARK; + break; + default: + species = SPECIES_OLD_UNOWN_B + unownLetter - 1; + break; + } + } + if (species != SPECIES_NONE && a2 < 5) + { + species--; + if (gUnknown_845FD54[species][a2] != 0xFF) + return gUnknown_845FD54[species][a2]; + } + return 32; +} + +s8 sub_812EAE4(u16 species, u32 personality, u8 a2) +{ + return sub_812EA78(species, personality, a2) - 32; +} diff --git a/src/oak_speech.c b/src/oak_speech.c index bb67bbb8b..056dbd56b 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -24,6 +24,7 @@ #include "math_util.h" #include "overworld.h" #include "random.h" +#include "oak_speech.h" #include "constants/species.h" #include "constants/songs.h" @@ -45,7 +46,6 @@ struct OakSpeechResources EWRAM_DATA struct OakSpeechResources * sOakSpeechResources = NULL; -static void sub_812E9F8(u8 taskId); static void sub_812EB58(u8 taskId); static void sub_812EEB0(void); static void sub_812F0B0(u8 taskId); @@ -113,422 +113,6 @@ extern const u8 gUnknown_8415D97[]; extern const struct CompressedSpriteSheet gUnknown_8235194[]; extern const struct CompressedSpritePalette gUnknown_82373F4; -static const u8 gUnknown_845FD54[][5] = { - [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, - [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, - [SPECIES_VENUSAUR - 1] = {0x1b, 0x20, 0x20, 0x1b, 0x33}, - [SPECIES_CHARMANDER - 1] = {0x14, 0x0f, 0x38, 0x13, 0x1e}, - [SPECIES_CHARMELEON - 1] = {0x0d, 0x11, 0x30, 0x0f, 0x22}, - [SPECIES_CHARIZARD - 1] = {0x1b, 0x07, 0x28, 0x1a, 0x19}, - [SPECIES_SQUIRTLE - 1] = {0x19, 0x13, 0x30, 0x1a, 0x22}, - [SPECIES_WARTORTLE - 1] = {0x16, 0x13, 0x30, 0x17, 0x21}, - [SPECIES_BLASTOISE - 1] = {0x12, 0x08, 0x28, 0x15, 0x19}, - [SPECIES_CATERPIE - 1] = {0x15, 0x14, 0x30, 0x13, 0x24}, - [SPECIES_METAPOD - 1] = {0x13, 0x1d, 0x30, 0x18, 0x2a}, - [SPECIES_BUTTERFREE - 1] = {0x12, 0x1b, 0x08, 0x12, 0x2a}, - [SPECIES_WEEDLE - 1] = {0x16, 0x1c, 0x30, 0x15, 0x2b}, - [SPECIES_KAKUNA - 1] = {0x19, 0x13, 0x30, 0x1a, 0x24}, - [SPECIES_BEEDRILL - 1] = {0x19, 0x16, 0x08, 0x19, 0x25}, - [SPECIES_PIDGEY - 1] = {0x15, 0x12, 0x30, 0x12, 0x1e}, - [SPECIES_PIDGEOTTO - 1] = {0x24, 0x0e, 0x30, 0x1f, 0x1e}, - [SPECIES_PIDGEOT - 1] = {0x0c, 0x13, 0x08, 0x0a, 0x23}, - [SPECIES_RATTATA - 1] = {0x17, 0x1e, 0x30, 0x18, 0x2d}, - [SPECIES_RATICATE - 1] = {0x12, 0x14, 0x30, 0x10, 0x26}, - [SPECIES_SPEAROW - 1] = {0x15, 0x14, 0x30, 0x15, 0x1f}, - [SPECIES_FEAROW - 1] = {0x0c, 0x27, 0x00, 0x0b, 0x3f}, - [SPECIES_EKANS - 1] = {0x11, 0x0f, 0x30, 0x14, 0x1d}, - [SPECIES_ARBOK - 1] = {0x1b, 0x01, 0x28, 0x1d, 0x10}, - [SPECIES_PIKACHU - 1] = {0x19, 0x13, 0x30, 0x1a, 0x1f}, - [SPECIES_RAICHU - 1] = {0x19, 0x14, 0x28, 0x1c, 0x22}, - [SPECIES_SANDSHREW - 1] = {0x17, 0x16, 0x30, 0x18, 0x25}, - [SPECIES_SANDSLASH - 1] = {0x11, 0x13, 0x28, 0x13, 0x22}, - [SPECIES_NIDORAN_F - 1] = {0x16, 0x15, 0x30, 0x18, 0x21}, - [SPECIES_NIDORINA - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x28}, - [SPECIES_NIDOQUEEN - 1] = {0x10, 0x0b, 0x28, 0x13, 0x1c}, - [SPECIES_NIDORAN_M - 1] = {0x15, 0x22, 0x28, 0x15, 0x31}, - [SPECIES_NIDORINO - 1] = {0x13, 0x1e, 0x28, 0x1b, 0x2d}, - [SPECIES_NIDOKING - 1] = {0x12, 0x15, 0x28, 0x13, 0x27}, - [SPECIES_CLEFAIRY - 1] = {0x19, 0x14, 0x30, 0x1b, 0x24}, - [SPECIES_CLEFABLE - 1] = {0x1c, 0x12, 0x30, 0x1d, 0x21}, - [SPECIES_VULPIX - 1] = {0x10, 0x16, 0x30, 0x0e, 0x25}, - [SPECIES_NINETALES - 1] = {0x28, 0x10, 0x28, 0x27, 0x1e}, - [SPECIES_JIGGLYPUFF - 1] = {0x1d, 0x15, 0x30, 0x1e, 0x25}, - [SPECIES_WIGGLYTUFF - 1] = {0x1a, 0x12, 0x30, 0x1c, 0x22}, - [SPECIES_ZUBAT - 1] = {0x14, 0x1d, 0x08, 0x14, 0x29}, - [SPECIES_GOLBAT - 1] = {0x23, 0x1a, 0x00, 0x21, 0x2e}, - [SPECIES_ODDISH - 1] = {0x1d, 0x20, 0x28, 0x1d, 0x2b}, - [SPECIES_GLOOM - 1] = {0x1c, 0x18, 0x28, 0x1c, 0x27}, - [SPECIES_VILEPLUME - 1] = {0x1c, 0x1e, 0x28, 0x1d, 0x2a}, - [SPECIES_PARAS - 1] = {0x1d, 0x1a, 0x30, 0x1c, 0x27}, - [SPECIES_PARASECT - 1] = {0x1e, 0x1c, 0x28, 0x20, 0x2e}, - [SPECIES_VENONAT - 1] = {0x1b, 0x16, 0x10, 0x1a, 0x29}, - [SPECIES_VENOMOTH - 1] = {0x12, 0x19, 0x08, 0x16, 0x27}, - [SPECIES_DIGLETT - 1] = {0x1e, 0x16, 0x30, 0x1c, 0x23}, - [SPECIES_DUGTRIO - 1] = {0x1a, 0x11, 0x30, 0x1a, 0x1f}, - [SPECIES_MEOWTH - 1] = {0x1c, 0x16, 0x30, 0x1c, 0x23}, - [SPECIES_PERSIAN - 1] = {0x13, 0x13, 0x30, 0x13, 0x21}, - [SPECIES_PSYDUCK - 1] = {0x1c, 0x13, 0x30, 0x17, 0x29}, - [SPECIES_GOLDUCK - 1] = {0x17, 0x12, 0x28, 0x17, 0x22}, - [SPECIES_MANKEY - 1] = {0x1c, 0x15, 0x30, 0x1b, 0x23}, - [SPECIES_PRIMEAPE - 1] = {0x1e, 0x16, 0x30, 0x1a, 0x27}, - [SPECIES_GROWLITHE - 1] = {0x14, 0x17, 0x30, 0x14, 0x24}, - [SPECIES_ARCANINE - 1] = {0x0f, 0x09, 0x28, 0x0c, 0x19}, - [SPECIES_POLIWAG - 1] = {0x15, 0x14, 0x30, 0x13, 0x1f}, - [SPECIES_POLIWHIRL - 1] = {0x1f, 0x10, 0x30, 0x1e, 0x17}, - [SPECIES_POLIWRATH - 1] = {0x22, 0x0c, 0x30, 0x21, 0x18}, - [SPECIES_ABRA - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x21}, - [SPECIES_KADABRA - 1] = {0x1b, 0x12, 0x30, 0x1c, 0x25}, - [SPECIES_ALAKAZAM - 1] = {0x1c, 0x11, 0x28, 0x1d, 0x26}, - [SPECIES_MACHOP - 1] = {0x1b, 0x11, 0x30, 0x1b, 0x1e}, - [SPECIES_MACHOKE - 1] = {0x1d, 0x11, 0x30, 0x1d, 0x1f}, - [SPECIES_MACHAMP - 1] = {0x1a, 0x0d, 0x28, 0x1c, 0x1b}, - [SPECIES_BELLSPROUT - 1] = {0x15, 0x0e, 0x30, 0x0e, 0x1c}, - [SPECIES_WEEPINBELL - 1] = {0x1a, 0x1c, 0x10, 0x15, 0x32}, - [SPECIES_VICTREEBEL - 1] = {0x1e, 0x0f, 0x30, 0x1c, 0x1b}, - [SPECIES_TENTACOOL - 1] = {0x1a, 0x15, 0x30, 0x1e, 0x26}, - [SPECIES_TENTACRUEL - 1] = {0x1b, 0x10, 0x28, 0x1c, 0x26}, - [SPECIES_GEODUDE - 1] = {0x1c, 0x20, 0x28, 0x1d, 0x2d}, - [SPECIES_GRAVELER - 1] = {0x1d, 0x19, 0x28, 0x1e, 0x26}, - [SPECIES_GOLEM - 1] = {0x19, 0x1b, 0x28, 0x1c, 0x27}, - [SPECIES_PONYTA - 1] = {0x0f, 0x11, 0x30, 0x0e, 0x23}, - [SPECIES_RAPIDASH - 1] = {0x2f, 0x0f, 0x28, 0x2b, 0x1e}, - [SPECIES_SLOWPOKE - 1] = {0x14, 0x1f, 0x28, 0x15, 0x2f}, - [SPECIES_SLOWBRO - 1] = {0x0e, 0x0d, 0x28, 0x0c, 0x1f}, - [SPECIES_MAGNEMITE - 1] = {0x20, 0x1b, 0x10, 0x1f, 0x29}, - [SPECIES_MAGNETON - 1] = {0x1f, 0x14, 0x08, 0x1f, 0x22}, - [SPECIES_FARFETCHD - 1] = {0x16, 0x14, 0x30, 0x16, 0x29}, - [SPECIES_DODUO - 1] = {0x11, 0x16, 0x30, 0x0d, 0x2c}, - [SPECIES_DODRIO - 1] = {0x1d, 0x04, 0x28, 0x0e, 0x07}, - [SPECIES_SEEL - 1] = {0x1b, 0x24, 0x20, 0x17, 0x35}, - [SPECIES_DEWGONG - 1] = {0x12, 0x0a, 0x30, 0x0e, 0x1a}, - [SPECIES_GRIMER - 1] = {0x1f, 0x10, 0x30, 0x1d, 0x25}, - [SPECIES_MUK - 1] = {0x17, 0x0f, 0x30, 0x19, 0x22}, - [SPECIES_SHELLDER - 1] = {0x1a, 0x18, 0x30, 0x17, 0x29}, - [SPECIES_CLOYSTER - 1] = {0x19, 0x1e, 0x28, 0x1d, 0x2c}, - [SPECIES_GASTLY - 1] = {0x1a, 0x1f, 0x08, 0x19, 0x30}, - [SPECIES_HAUNTER - 1] = {0x20, 0x14, 0x08, 0x1d, 0x26}, - [SPECIES_GENGAR - 1] = {0x1a, 0x16, 0x30, 0x19, 0x28}, - [SPECIES_ONIX - 1] = {0x1f, 0x24, 0x20, 0x28, 0x36}, - [SPECIES_DROWZEE - 1] = {0x1a, 0x0e, 0x30, 0x1a, 0x1e}, - [SPECIES_HYPNO - 1] = {0x1c, 0x12, 0x30, 0x19, 0x24}, - [SPECIES_KRABBY - 1] = {0x1d, 0x1d, 0x30, 0x1a, 0x2b}, - [SPECIES_KINGLER - 1] = {0x1e, 0x1f, 0x28, 0x1c, 0x30}, - [SPECIES_VOLTORB - 1] = {0x1c, 0x1b, 0x30, 0x1b, 0x2b}, - [SPECIES_ELECTRODE - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x2e}, - [SPECIES_EXEGGCUTE - 1] = {0x21, 0x17, 0x30, 0x20, 0x24}, - [SPECIES_EXEGGUTOR - 1] = {0x1c, 0x17, 0x28, 0x1b, 0x25}, - [SPECIES_CUBONE - 1] = {0x1b, 0x12, 0x30, 0x1b, 0x22}, - [SPECIES_MAROWAK - 1] = {0x14, 0x0f, 0x30, 0x11, 0x23}, - [SPECIES_HITMONLEE - 1] = {0x2e, 0x11, 0x30, 0x28, 0x22}, - [SPECIES_HITMONCHAN - 1] = {0x22, 0x0e, 0x30, 0x1e, 0x1d}, - [SPECIES_LICKITUNG - 1] = {0x14, 0x11, 0x30, 0x14, 0x24}, - [SPECIES_KOFFING - 1] = {0x1e, 0x14, 0x10, 0x1d, 0x20}, - [SPECIES_WEEZING - 1] = {0x11, 0x0d, 0x10, 0x0f, 0x1c}, - [SPECIES_RHYHORN - 1] = {0x0e, 0x23, 0x20, 0x14, 0x33}, - [SPECIES_RHYDON - 1] = {0x0d, 0x12, 0x28, 0x17, 0x22}, - [SPECIES_CHANSEY - 1] = {0x1a, 0x0d, 0x30, 0x1a, 0x1a}, - [SPECIES_TANGELA - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x29}, - [SPECIES_KANGASKHAN - 1] = {0x1b, 0x06, 0x28, 0x1c, 0x14}, - [SPECIES_HORSEA - 1] = {0x1c, 0x14, 0x30, 0x16, 0x23}, - [SPECIES_SEADRA - 1] = {0x10, 0x17, 0x30, 0x09, 0x2a}, - [SPECIES_GOLDEEN - 1] = {0x16, 0x23, 0x20, 0x15, 0x34}, - [SPECIES_SEAKING - 1] = {0x16, 0x0f, 0x30, 0x10, 0x18}, - [SPECIES_STARYU - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x26}, - [SPECIES_STARMIE - 1] = {0x1d, 0x13, 0x30, 0x1b, 0x20}, - [SPECIES_MR_MIME - 1] = {0x24, 0x11, 0x30, 0x25, 0x1e}, - [SPECIES_SCYTHER - 1] = {0x10, 0x19, 0x28, 0x12, 0x27}, - [SPECIES_JYNX - 1] = {0x1b, 0x0f, 0x30, 0x19, 0x1c}, - [SPECIES_ELECTABUZZ - 1] = {0x14, 0x11, 0x30, 0x17, 0x20}, - [SPECIES_MAGMAR - 1] = {0x10, 0x0e, 0x30, 0x0b, 0x19}, - [SPECIES_PINSIR - 1] = {0x1d, 0x1c, 0x28, 0x20, 0x2b}, - [SPECIES_TAUROS - 1] = {0x11, 0x1d, 0x28, 0x13, 0x2e}, - [SPECIES_MAGIKARP - 1] = {0x16, 0x15, 0x30, 0x13, 0x23}, - [SPECIES_GYARADOS - 1] = {0x0b, 0x18, 0x28, 0x16, 0x29}, - [SPECIES_LAPRAS - 1] = {0x16, 0x08, 0x28, 0x15, 0x16}, - [SPECIES_DITTO - 1] = {0x24, 0x12, 0x30, 0x1f, 0x20}, - [SPECIES_EEVEE - 1] = {0x16, 0x16, 0x30, 0x16, 0x23}, - [SPECIES_VAPOREON - 1] = {0x18, 0x23, 0x28, 0x18, 0x30}, - [SPECIES_JOLTEON - 1] = {0x14, 0x1b, 0x30, 0x16, 0x28}, - [SPECIES_FLAREON - 1] = {0x16, 0x17, 0x30, 0x14, 0x25}, - [SPECIES_PORYGON - 1] = {0x18, 0x12, 0x30, 0x10, 0x23}, - [SPECIES_OMANYTE - 1] = {0x1d, 0x1d, 0x30, 0x1c, 0x2b}, - [SPECIES_OMASTAR - 1] = {0x16, 0x1a, 0x30, 0x19, 0x2d}, - [SPECIES_KABUTO - 1] = {0x1b, 0x16, 0x30, 0x1a, 0x27}, - [SPECIES_KABUTOPS - 1] = {0x15, 0x11, 0x30, 0x15, 0x1f}, - [SPECIES_AERODACTYL - 1] = {0x13, 0x1d, 0x00, 0x14, 0x30}, - [SPECIES_SNORLAX - 1] = {0x35, 0x09, 0x30, 0x2e, 0x14}, - [SPECIES_ARTICUNO - 1] = {0x18, 0x0b, 0x18, 0x17, 0x17}, - [SPECIES_ZAPDOS - 1] = {0x0e, 0x0e, 0x10, 0x04, 0x28}, - [SPECIES_MOLTRES - 1] = {0x0b, 0x2a, 0x08, 0x0b, 0x38}, - [SPECIES_DRATINI - 1] = {0x0d, 0x12, 0x30, 0x0b, 0x21}, - [SPECIES_DRAGONAIR - 1] = {0x18, 0x0e, 0x30, 0x13, 0x1c}, - [SPECIES_DRAGONITE - 1] = {0x1b, 0x07, 0x18, 0x19, 0x17}, - [SPECIES_MEWTWO - 1] = {0x2b, 0x09, 0x28, 0x2c, 0x18}, - [SPECIES_MEW - 1] = {0x19, 0x14, 0x10, 0x1f, 0x21}, - [SPECIES_CHIKORITA - 1] = {0x1b, 0x17, 0x30, 0x1b, 0x24}, - [SPECIES_BAYLEEF - 1] = {0x1d, 0x10, 0x30, 0x20, 0x1d}, - [SPECIES_MEGANIUM - 1] = {0x05, 0x0d, 0x28, 0x0d, 0x1b}, - [SPECIES_CYNDAQUIL - 1] = {0x11, 0x1b, 0x30, 0x14, 0x27}, - [SPECIES_QUILAVA - 1] = {0x25, 0x18, 0x30, 0x27, 0x26}, - [SPECIES_TYPHLOSION - 1] = {0x09, 0x10, 0x28, 0x10, 0x1c}, - [SPECIES_TOTODILE - 1] = {0x16, 0x10, 0x30, 0x19, 0x20}, - [SPECIES_CROCONAW - 1] = {0x16, 0x10, 0x30, 0x18, 0x21}, - [SPECIES_FERALIGATR - 1] = {0x0e, 0x0a, 0x28, 0x08, 0x1a}, - [SPECIES_SENTRET - 1] = {0x1e, 0x0a, 0x30, 0x1d, 0x15}, - [SPECIES_FURRET - 1] = {0x21, 0x0e, 0x30, 0x21, 0x19}, - [SPECIES_HOOTHOOT - 1] = {0x1d, 0x15, 0x30, 0x1c, 0x24}, - [SPECIES_NOCTOWL - 1] = {0x19, 0x0e, 0x30, 0x18, 0x1c}, - [SPECIES_LEDYBA - 1] = {0x1b, 0x15, 0x30, 0x1c, 0x24}, - [SPECIES_LEDIAN - 1] = {0x18, 0x12, 0x10, 0x1c, 0x21}, - [SPECIES_SPINARAK - 1] = {0x20, 0x20, 0x28, 0x20, 0x2d}, - [SPECIES_ARIADOS - 1] = {0x17, 0x23, 0x28, 0x15, 0x30}, - [SPECIES_CROBAT - 1] = {0x22, 0x1e, 0x08, 0x23, 0x2b}, - [SPECIES_CHINCHOU - 1] = {0x1f, 0x1d, 0x30, 0x1f, 0x29}, - [SPECIES_LANTURN - 1] = {0x10, 0x23, 0x28, 0x19, 0x33}, - [SPECIES_PICHU - 1] = {0x1e, 0x17, 0x30, 0x1e, 0x24}, - [SPECIES_CLEFFA - 1] = {0x1c, 0x18, 0x30, 0x1e, 0x26}, - [SPECIES_IGGLYBUFF - 1] = {0x1f, 0x19, 0x30, 0x1f, 0x24}, - [SPECIES_TOGEPI - 1] = {0x21, 0x15, 0x30, 0x1f, 0x20}, - [SPECIES_TOGETIC - 1] = {0x1b, 0x10, 0x30, 0x1c, 0x1c}, - [SPECIES_NATU - 1] = {0x1c, 0x17, 0x30, 0x15, 0x21}, - [SPECIES_XATU - 1] = {0x1b, 0x08, 0x30, 0x19, 0x14}, - [SPECIES_MAREEP - 1] = {0x16, 0x15, 0x30, 0x15, 0x24}, - [SPECIES_FLAAFFY - 1] = {0x19, 0x12, 0x30, 0x18, 0x21}, - [SPECIES_AMPHAROS - 1] = {0x0f, 0x0a, 0x30, 0x10, 0x1b}, - [SPECIES_BELLOSSOM - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x20}, - [SPECIES_MARILL - 1] = {0x1d, 0x15, 0x30, 0x1d, 0x22}, - [SPECIES_AZUMARILL - 1] = {0x1a, 0x12, 0x30, 0x17, 0x1f}, - [SPECIES_SUDOWOODO - 1] = {0x20, 0x10, 0x30, 0x20, 0x1f}, - [SPECIES_POLITOED - 1] = {0x1d, 0x0f, 0x30, 0x1e, 0x20}, - [SPECIES_HOPPIP - 1] = {0x23, 0x25, 0x08, 0x25, 0x33}, - [SPECIES_SKIPLOOM - 1] = {0x1e, 0x18, 0x08, 0x1c, 0x27}, - [SPECIES_JUMPLUFF - 1] = {0x1d, 0x21, 0x08, 0x20, 0x2f}, - [SPECIES_AIPOM - 1] = {0x1e, 0x29, 0x18, 0x1e, 0x35}, - [SPECIES_SUNKERN - 1] = {0x1f, 0x20, 0x08, 0x24, 0x2e}, - [SPECIES_SUNFLORA - 1] = {0x1c, 0x0c, 0x30, 0x1b, 0x19}, - [SPECIES_YANMA - 1] = {0x1b, 0x28, 0x08, 0x16, 0x35}, - [SPECIES_WOOPER - 1] = {0x1d, 0x13, 0x30, 0x1f, 0x21}, - [SPECIES_QUAGSIRE - 1] = {0x15, 0x09, 0x30, 0x12, 0x18}, - [SPECIES_ESPEON - 1] = {0x11, 0x1b, 0x30, 0x11, 0x29}, - [SPECIES_UMBREON - 1] = {0x23, 0x15, 0x30, 0x23, 0x22}, - [SPECIES_MURKROW - 1] = {0x24, 0x13, 0x30, 0x20, 0x22}, - [SPECIES_SLOWKING - 1] = {0x1e, 0x13, 0x28, 0x1d, 0x25}, - [SPECIES_MISDREAVUS - 1] = {0x28, 0x21, 0x08, 0x26, 0x2e}, - [SPECIES_UNOWN - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, - [SPECIES_WOBBUFFET - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x1a}, - [SPECIES_GIRAFARIG - 1] = {0x0b, 0x0d, 0x28, 0x11, 0x1d}, - [SPECIES_PINECO - 1] = {0x1d, 0x12, 0x10, 0x19, 0x25}, - [SPECIES_FORRETRESS - 1] = {0x19, 0x17, 0x08, 0x1e, 0x26}, - [SPECIES_DUNSPARCE - 1] = {0x10, 0x1b, 0x30, 0x0c, 0x2d}, - [SPECIES_GLIGAR - 1] = {0x1e, 0x13, 0x08, 0x1d, 0x23}, - [SPECIES_STEELIX - 1] = {0x0c, 0x0d, 0x28, 0x0d, 0x1c}, - [SPECIES_SNUBBULL - 1] = {0x1b, 0x15, 0x30, 0x1a, 0x23}, - [SPECIES_GRANBULL - 1] = {0x1c, 0x09, 0x30, 0x19, 0x18}, - [SPECIES_QWILFISH - 1] = {0x1f, 0x26, 0x20, 0x1d, 0x33}, - [SPECIES_SCIZOR - 1] = {0x15, 0x0f, 0x10, 0x1a, 0x1a}, - [SPECIES_SHUCKLE - 1] = {0x25, 0x0a, 0x30, 0x24, 0x18}, - [SPECIES_HERACROSS - 1] = {0x18, 0x19, 0x28, 0x1a, 0x26}, - [SPECIES_SNEASEL - 1] = {0x1c, 0x13, 0x30, 0x1d, 0x24}, - [SPECIES_TEDDIURSA - 1] = {0x1e, 0x12, 0x30, 0x1b, 0x23}, - [SPECIES_URSARING - 1] = {0x1e, 0x04, 0x28, 0x1d, 0x14}, - [SPECIES_SLUGMA - 1] = {0x20, 0x18, 0x30, 0x20, 0x28}, - [SPECIES_MAGCARGO - 1] = {0x16, 0x11, 0x30, 0x17, 0x23}, - [SPECIES_SWINUB - 1] = {0x1c, 0x18, 0x30, 0x1b, 0x25}, - [SPECIES_PILOSWINE - 1] = {0x18, 0x23, 0x20, 0x18, 0x36}, - [SPECIES_CORSOLA - 1] = {0x19, 0x1d, 0x28, 0x19, 0x2b}, - [SPECIES_REMORAID - 1] = {0x15, 0x1f, 0x28, 0x13, 0x2b}, - [SPECIES_OCTILLERY - 1] = {0x1c, 0x11, 0x30, 0x1a, 0x20}, - [SPECIES_DELIBIRD - 1] = {0x1d, 0x11, 0x30, 0x1b, 0x1f}, - [SPECIES_MANTINE - 1] = {0x16, 0x1e, 0x28, 0x1f, 0x27}, - [SPECIES_SKARMORY - 1] = {0x1e, 0x00, 0x28, 0x13, 0x07}, - [SPECIES_HOUNDOUR - 1] = {0x25, 0x11, 0x30, 0x25, 0x1f}, - [SPECIES_HOUNDOOM - 1] = {0x0d, 0x13, 0x30, 0x0d, 0x24}, - [SPECIES_KINGDRA - 1] = {0x0e, 0x13, 0x28, 0x0a, 0x2c}, - [SPECIES_PHANPY - 1] = {0x1b, 0x11, 0x30, 0x19, 0x24}, - [SPECIES_DONPHAN - 1] = {0x11, 0x15, 0x30, 0x19, 0x2c}, - [SPECIES_PORYGON2 - 1] = {0x18, 0x11, 0x30, 0x11, 0x20}, - [SPECIES_STANTLER - 1] = {0x15, 0x15, 0x28, 0x17, 0x28}, - [SPECIES_SMEARGLE - 1] = {0x18, 0x10, 0x30, 0x1b, 0x25}, - [SPECIES_TYROGUE - 1] = {0x1e, 0x12, 0x30, 0x1f, 0x1f}, - [SPECIES_HITMONTOP - 1] = {0x1a, 0x39, 0x10, 0x1a, 0x2b}, - [SPECIES_SMOOCHUM - 1] = {0x20, 0x18, 0x30, 0x21, 0x26}, - [SPECIES_ELEKID - 1] = {0x1d, 0x14, 0x30, 0x1d, 0x23}, - [SPECIES_MAGBY - 1] = {0x1c, 0x15, 0x30, 0x1a, 0x24}, - [SPECIES_MILTANK - 1] = {0x18, 0x0e, 0x30, 0x18, 0x1e}, - [SPECIES_BLISSEY - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x19}, - [SPECIES_RAIKOU - 1] = {0x29, 0x0c, 0x28, 0x27, 0x1e}, - [SPECIES_ENTEI - 1] = {0x08, 0x09, 0x28, 0x0b, 0x18}, - [SPECIES_SUICUNE - 1] = {0x23, 0x1d, 0x28, 0x26, 0x2c}, - [SPECIES_LARVITAR - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x24}, - [SPECIES_PUPITAR - 1] = {0x1b, 0x19, 0x30, 0x1b, 0x28}, - [SPECIES_TYRANITAR - 1] = {0x06, 0x0b, 0x28, 0x0d, 0x19}, - [SPECIES_LUGIA - 1] = {0x08, 0x2a, 0x08, 0x14, 0x34}, - [SPECIES_HO_OH - 1] = {0x0d, 0x25, 0x08, 0x0e, 0x34}, - [SPECIES_CELEBI - 1] = {0x15, 0x21, 0x08, 0x1a, 0x2b}, - [SPECIES_OLD_UNOWN_B - 1] = {0x1f, 0x12, 0x08, 0x1e, 0x1c}, - [SPECIES_OLD_UNOWN_C - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, - [SPECIES_OLD_UNOWN_D - 1] = {0x1c, 0x19, 0x08, 0x1b, 0x23}, - [SPECIES_OLD_UNOWN_E - 1] = {0x21, 0x19, 0x08, 0x20, 0x23}, - [SPECIES_OLD_UNOWN_F - 1] = {0x1b, 0x13, 0x08, 0x1a, 0x1d}, - [SPECIES_OLD_UNOWN_G - 1] = {0x20, 0x16, 0x08, 0x1f, 0x21}, - [SPECIES_OLD_UNOWN_H - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_I - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_J - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, - [SPECIES_OLD_UNOWN_K - 1] = {0x1d, 0x1a, 0x08, 0x1c, 0x24}, - [SPECIES_OLD_UNOWN_L - 1] = {0x20, 0x16, 0x08, 0x1f, 0x1f}, - [SPECIES_OLD_UNOWN_M - 1] = {0x20, 0x1c, 0x08, 0x1f, 0x26}, - [SPECIES_OLD_UNOWN_N - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_O - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_P - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, - [SPECIES_OLD_UNOWN_Q - 1] = {0x1d, 0x16, 0x08, 0x1c, 0x20}, - [SPECIES_OLD_UNOWN_R - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, - [SPECIES_OLD_UNOWN_S - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_T - 1] = {0x20, 0x1e, 0x08, 0x1f, 0x28}, - [SPECIES_OLD_UNOWN_U - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, - [SPECIES_OLD_UNOWN_V - 1] = {0x1e, 0x1e, 0x08, 0x1d, 0x28}, - [SPECIES_OLD_UNOWN_W - 1] = {0x20, 0x1d, 0x08, 0x1f, 0x27}, - [SPECIES_OLD_UNOWN_X - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_Y - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, - [SPECIES_OLD_UNOWN_Z - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_TREECKO - 1] = {0x1a, 0x0f, 0x30, 0x19, 0x20}, - [SPECIES_GROVYLE - 1] = {0x0d, 0x05, 0x10, 0x05, 0x13}, - [SPECIES_SCEPTILE - 1] = {0x10, 0x04, 0x28, 0x0c, 0x12}, - [SPECIES_TORCHIC - 1] = {0x17, 0x18, 0x30, 0x15, 0x25}, - [SPECIES_COMBUSKEN - 1] = {0x20, 0x12, 0x28, 0x1e, 0x20}, - [SPECIES_BLAZIKEN - 1] = {0x1a, 0x07, 0x28, 0x1d, 0x13}, - [SPECIES_MUDKIP - 1] = {0x1b, 0x1d, 0x28, 0x19, 0x2c}, - [SPECIES_MARSHTOMP - 1] = {0x1d, 0x11, 0x30, 0x1c, 0x20}, - [SPECIES_SWAMPERT - 1] = {0x1b, 0x11, 0x28, 0x1b, 0x23}, - [SPECIES_POOCHYENA - 1] = {0x14, 0x12, 0x30, 0x0f, 0x20}, - [SPECIES_MIGHTYENA - 1] = {0x09, 0x0d, 0x28, 0x09, 0x1c}, - [SPECIES_ZIGZAGOON - 1] = {0x0b, 0x1a, 0x30, 0x09, 0x2b}, - [SPECIES_LINOONE - 1] = {0x0d, 0x28, 0x18, 0x0b, 0x37}, - [SPECIES_WURMPLE - 1] = {0x21, 0x17, 0x30, 0x1f, 0x26}, - [SPECIES_SILCOON - 1] = {0x13, 0x1c, 0x30, 0x11, 0x2a}, - [SPECIES_BEAUTIFLY - 1] = {0x0f, 0x1b, 0x08, 0x0e, 0x28}, - [SPECIES_CASCOON - 1] = {0x14, 0x1d, 0x30, 0x11, 0x2c}, - [SPECIES_DUSTOX - 1] = {0x14, 0x19, 0x08, 0x16, 0x26}, - [SPECIES_LOTAD - 1] = {0x19, 0x25, 0x28, 0x17, 0x32}, - [SPECIES_LOMBRE - 1] = {0x22, 0x10, 0x30, 0x29, 0x1d}, - [SPECIES_LUDICOLO - 1] = {0x1c, 0x0f, 0x28, 0x1b, 0x24}, - [SPECIES_SEEDOT - 1] = {0x1b, 0x17, 0x30, 0x18, 0x28}, - [SPECIES_NUZLEAF - 1] = {0x20, 0x0d, 0x30, 0x1a, 0x1d}, - [SPECIES_SHIFTRY - 1] = {0x32, 0x11, 0x28, 0x2e, 0x23}, - [SPECIES_NINCADA - 1] = {0x18, 0x1a, 0x30, 0x17, 0x28}, - [SPECIES_NINJASK - 1] = {0x17, 0x21, 0x00, 0x17, 0x2f}, - [SPECIES_SHEDINJA - 1] = {0x16, 0x19, 0x08, 0x18, 0x2a}, - [SPECIES_TAILLOW - 1] = {0x17, 0x10, 0x30, 0x14, 0x1e}, - [SPECIES_SWELLOW - 1] = {0x0c, 0x0a, 0x28, 0x05, 0x16}, - [SPECIES_SHROOMISH - 1] = {0x1f, 0x16, 0x30, 0x1d, 0x23}, - [SPECIES_BRELOOM - 1] = {0x25, 0x0c, 0x30, 0x23, 0x19}, - [SPECIES_SPINDA - 1] = {0x21, 0x16, 0x30, 0x1f, 0x27}, - [SPECIES_WINGULL - 1] = {0x1a, 0x16, 0x10, 0x15, 0x26}, - [SPECIES_PELIPPER - 1] = {0x1d, 0x0a, 0x10, 0x09, 0x1b}, - [SPECIES_SURSKIT - 1] = {0x1d, 0x16, 0x30, 0x1c, 0x25}, - [SPECIES_MASQUERAIN - 1] = {0x1a, 0x21, 0x08, 0x14, 0x30}, - [SPECIES_WAILMER - 1] = {0x17, 0x17, 0x30, 0x16, 0x28}, - [SPECIES_WAILORD - 1] = {0x17, 0x03, 0x30, 0x09, 0x13}, - [SPECIES_SKITTY - 1] = {0x24, 0x1a, 0x30, 0x22, 0x2a}, - [SPECIES_DELCATTY - 1] = {0x1e, 0x12, 0x30, 0x1c, 0x21}, - [SPECIES_KECLEON - 1] = {0x19, 0x10, 0x30, 0x13, 0x1e}, - [SPECIES_BALTOY - 1] = {0x1d, 0x15, 0x30, 0x1b, 0x22}, - [SPECIES_CLAYDOL - 1] = {0x1e, 0x0d, 0x28, 0x1d, 0x24}, - [SPECIES_NOSEPASS - 1] = {0x1f, 0x10, 0x30, 0x15, 0x23}, - [SPECIES_TORKOAL - 1] = {0x0e, 0x19, 0x28, 0x0a, 0x27}, - [SPECIES_SABLEYE - 1] = {0x1e, 0x16, 0x30, 0x1d, 0x27}, - [SPECIES_BARBOACH - 1] = {0x17, 0x12, 0x30, 0x15, 0x1e}, - [SPECIES_WHISCASH - 1] = {0x18, 0x20, 0x28, 0x17, 0x31}, - [SPECIES_LUVDISC - 1] = {0x19, 0x0f, 0x30, 0x13, 0x1c}, - [SPECIES_CORPHISH - 1] = {0x1f, 0x14, 0x30, 0x1d, 0x23}, - [SPECIES_CRAWDAUNT - 1] = {0x14, 0x0c, 0x28, 0x18, 0x23}, - [SPECIES_FEEBAS - 1] = {0x18, 0x1e, 0x28, 0x16, 0x2f}, - [SPECIES_MILOTIC - 1] = {0x20, 0x0c, 0x28, 0x1f, 0x1d}, - [SPECIES_CARVANHA - 1] = {0x16, 0x19, 0x30, 0x13, 0x22}, - [SPECIES_SHARPEDO - 1] = {0x19, 0x0c, 0x28, 0x17, 0x27}, - [SPECIES_TRAPINCH - 1] = {0x29, 0x13, 0x30, 0x17, 0x18}, - [SPECIES_VIBRAVA - 1] = {0x10, 0x27, 0x20, 0x0e, 0x34}, - [SPECIES_FLYGON - 1] = {0x22, 0x07, 0x10, 0x21, 0x13}, - [SPECIES_MAKUHITA - 1] = {0x22, 0x13, 0x30, 0x1c, 0x23}, - [SPECIES_HARIYAMA - 1] = {0x24, 0x0f, 0x28, 0x26, 0x1c}, - [SPECIES_ELECTRIKE - 1] = {0x11, 0x18, 0x30, 0x14, 0x27}, - [SPECIES_MANECTRIC - 1] = {0x2f, 0x18, 0x28, 0x2e, 0x29}, - [SPECIES_NUMEL - 1] = {0x10, 0x1a, 0x30, 0x0d, 0x2a}, - [SPECIES_CAMERUPT - 1] = {0x0d, 0x22, 0x28, 0x0e, 0x36}, - [SPECIES_SPHEAL - 1] = {0x1e, 0x0f, 0x30, 0x18, 0x1f}, - [SPECIES_SEALEO - 1] = {0x1c, 0x09, 0x30, 0x1a, 0x18}, - [SPECIES_WALREIN - 1] = {0x19, 0x01, 0x28, 0x10, 0x16}, - [SPECIES_CACNEA - 1] = {0x1f, 0x17, 0x30, 0x1d, 0x29}, - [SPECIES_CACTURNE - 1] = {0x1d, 0x0e, 0x28, 0x1d, 0x1b}, - [SPECIES_SNORUNT - 1] = {0x1e, 0x16, 0x30, 0x1e, 0x26}, - [SPECIES_GLALIE - 1] = {0x1a, 0x1c, 0x08, 0x1a, 0x31}, - [SPECIES_LUNATONE - 1] = {0x1c, 0x16, 0x08, 0x19, 0x2c}, - [SPECIES_SOLROCK - 1] = {0x18, 0x18, 0x10, 0x17, 0x31}, - [SPECIES_AZURILL - 1] = {0x1b, 0x10, 0x30, 0x18, 0x1f}, - [SPECIES_SPOINK - 1] = {0x21, 0x14, 0x30, 0x1b, 0x28}, - [SPECIES_GRUMPIG - 1] = {0x14, 0x10, 0x30, 0x15, 0x20}, - [SPECIES_PLUSLE - 1] = {0x1c, 0x16, 0x08, 0x1d, 0x25}, - [SPECIES_MINUN - 1] = {0x21, 0x16, 0x08, 0x1f, 0x26}, - [SPECIES_MAWILE - 1] = {0x2d, 0x14, 0x30, 0x2f, 0x24}, - [SPECIES_MEDITITE - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x25}, - [SPECIES_MEDICHAM - 1] = {0x21, 0x0f, 0x28, 0x1e, 0x1d}, - [SPECIES_SWABLU - 1] = {0x1b, 0x16, 0x10, 0x17, 0x23}, - [SPECIES_ALTARIA - 1] = {0x1d, 0x0b, 0x10, 0x1a, 0x1a}, - [SPECIES_WYNAUT - 1] = {0x1a, 0x15, 0x30, 0x1b, 0x26}, - [SPECIES_DUSKULL - 1] = {0x10, 0x18, 0x08, 0x14, 0x2e}, - [SPECIES_DUSCLOPS - 1] = {0x1c, 0x0f, 0x30, 0x1a, 0x28}, - [SPECIES_ROSELIA - 1] = {0x1e, 0x11, 0x30, 0x1d, 0x20}, - [SPECIES_SLAKOTH - 1] = {0x19, 0x1e, 0x30, 0x18, 0x2f}, - [SPECIES_VIGOROTH - 1] = {0x10, 0x12, 0x28, 0x14, 0x24}, - [SPECIES_SLAKING - 1] = {0x37, 0x0f, 0x30, 0x29, 0x21}, - [SPECIES_GULPIN - 1] = {0x1b, 0x18, 0x30, 0x17, 0x26}, - [SPECIES_SWALOT - 1] = {0x1f, 0x06, 0x30, 0x15, 0x13}, - [SPECIES_TROPIUS - 1] = {0x18, 0x0a, 0x28, 0x20, 0x18}, - [SPECIES_WHISMUR - 1] = {0x1f, 0x19, 0x30, 0x1d, 0x29}, - [SPECIES_LOUDRED - 1] = {0x1c, 0x12, 0x28, 0x22, 0x27}, - [SPECIES_EXPLOUD - 1] = {0x10, 0x10, 0x28, 0x1a, 0x2a}, - [SPECIES_CLAMPERL - 1] = {0x20, 0x1a, 0x30, 0x1e, 0x26}, - [SPECIES_HUNTAIL - 1] = {0x13, 0x1e, 0x28, 0x15, 0x33}, - [SPECIES_GOREBYSS - 1] = {0x0d, 0x1f, 0x28, 0x03, 0x32}, - [SPECIES_ABSOL - 1] = {0x2a, 0x11, 0x28, 0x2a, 0x22}, - [SPECIES_SHUPPET - 1] = {0x16, 0x19, 0x08, 0x17, 0x27}, - [SPECIES_BANETTE - 1] = {0x1c, 0x14, 0x08, 0x1b, 0x23}, - [SPECIES_SEVIPER - 1] = {0x0e, 0x0d, 0x30, 0x0b, 0x1e}, - [SPECIES_ZANGOOSE - 1] = {0x18, 0x0c, 0x28, 0x15, 0x1a}, - [SPECIES_RELICANTH - 1] = {0x0c, 0x1f, 0x30, 0x09, 0x2d}, - [SPECIES_ARON - 1] = {0x18, 0x1c, 0x30, 0x1a, 0x2c}, - [SPECIES_LAIRON - 1] = {0x0b, 0x21, 0x30, 0x12, 0x2f}, - [SPECIES_AGGRON - 1] = {0x10, 0x0b, 0x28, 0x16, 0x1b}, - [SPECIES_CASTFORM - 1] = {0x1d, 0x18, 0x08, 0x1b, 0x26}, - [SPECIES_VOLBEAT - 1] = {0x25, 0x15, 0x08, 0x21, 0x25}, - [SPECIES_ILLUMISE - 1] = {0x20, 0x12, 0x08, 0x1f, 0x20}, - [SPECIES_LILEEP - 1] = {0x1e, 0x11, 0x30, 0x1f, 0x1e}, - [SPECIES_CRADILY - 1] = {0x12, 0x16, 0x28, 0x15, 0x28}, - [SPECIES_ANORITH - 1] = {0x1c, 0x1e, 0x30, 0x1b, 0x2b}, - [SPECIES_ARMALDO - 1] = {0x15, 0x05, 0x28, 0x14, 0x13}, - [SPECIES_RALTS - 1] = {0x1f, 0x17, 0x30, 0x20, 0x23}, - [SPECIES_KIRLIA - 1] = {0x1c, 0x12, 0x30, 0x1f, 0x1e}, - [SPECIES_GARDEVOIR - 1] = {0x35, 0x07, 0x28, 0x32, 0x14}, - [SPECIES_BAGON - 1] = {0x17, 0x13, 0x30, 0x16, 0x26}, - [SPECIES_SHELGON - 1] = {0x19, 0x1b, 0x30, 0x19, 0x2c}, - [SPECIES_SALAMENCE - 1] = {0x09, 0x11, 0x30, 0x0a, 0x21}, - [SPECIES_BELDUM - 1] = {0x16, 0x19, 0x08, 0x18, 0x23}, - [SPECIES_METANG - 1] = {0x22, 0x0f, 0x10, 0x1f, 0x21}, - [SPECIES_METAGROSS - 1] = {0x24, 0x1b, 0x28, 0x22, 0x2b}, - [SPECIES_REGIROCK - 1] = {0x16, 0x07, 0x28, 0x14, 0x12}, - [SPECIES_REGICE - 1] = {0x19, 0x0c, 0x28, 0x17, 0x19}, - [SPECIES_REGISTEEL - 1] = {0x19, 0x0d, 0x28, 0x19, 0x19}, - [SPECIES_KYOGRE - 1] = {0x0e, 0x19, 0x28, 0x0b, 0x26}, - [SPECIES_GROUDON - 1] = {0x04, 0x0b, 0x28, 0x0a, 0x19}, - [SPECIES_RAYQUAZA - 1] = {0x0c, 0x0e, 0x10, 0x0e, 0x1f}, - [SPECIES_LATIAS - 1] = {0x1e, 0x0c, 0x10, 0x23, 0x19}, - [SPECIES_LATIOS - 1] = {0x05, 0x0e, 0x10, 0x05, 0x1d}, - [SPECIES_JIRACHI - 1] = {0x1c, 0x15, 0x08, 0x1e, 0x22}, - [SPECIES_DEOXYS - 1] = {0x1b, 0x08, 0x28, 0x1c, 0x16}, - [SPECIES_CHIMECHO - 1] = {0x1d, 0x0c, 0x08, 0x1c, 0x1a}, - [SPECIES_OLD_UNOWN_EMARK - 1] = {0x20, 0x21, 0x08, 0x20, 0x2b}, - [SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d} -}; - ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); static const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); static const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); @@ -876,89 +460,6 @@ static const u8 *const gUnknown_8463124[] = { gUnknown_81C5775 }; - -void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5) -{ - u8 taskId = CreateTask(sub_812E9F8, a5); - gTasks[taskId].data[0] = a0 << 8; - gTasks[taskId].data[1] = a1 << 8; - gTasks[taskId].data[2] = a2; - gTasks[taskId].data[3] = a3; - gTasks[taskId].data[4] = (a2 - a0) * 256 / a4; - gTasks[taskId].data[5] = (a3 - a1) * 256 / a4; - gTasks[taskId].data[8] = a4; - SetGpuReg(REG_OFFSET_BLDALPHA, (a1 << 8) | a0); -} - -bool8 sub_812E9E4(void) -{ - return FuncIsActiveTask(sub_812E9F8); -} - -static void sub_812E9F8(u8 taskId) -{ - s16 * data = gTasks[taskId].data; - - if (data[8] != 0) - { - if (data[6] == 0) - { - data[0] += data[4]; - data[6] = 1; - } - else - { - if (--data[8] != 0) - { - data[1] += data[5]; - } - else - { - data[0] = data[2] << 8; - data[1] = data[3] << 8; - } - data[6] = 0; - } - SetGpuReg(REG_OFFSET_BLDALPHA, (data[1] & ~0xFF) | ((u16)data[0] >> 8)); - if (data[8] == 0) - DestroyTask(taskId); - } -} - -u8 sub_812EA78(u16 species, u32 personality, u8 a2) -{ - if (species == SPECIES_UNOWN) - { - u8 unownLetter = GetUnownLetterByPersonality(personality); - switch (unownLetter) - { - case 0: - break; - case 26: - species = SPECIES_OLD_UNOWN_EMARK; - break; - case 27: - species = SPECIES_OLD_UNOWN_QMARK; - break; - default: - species = SPECIES_OLD_UNOWN_B + unownLetter - 1; - break; - } - } - if (species != SPECIES_NONE && a2 < 5) - { - species--; - if (gUnknown_845FD54[species][a2] != 0xFF) - return gUnknown_845FD54[species][a2]; - } - return 32; -} - -s8 sub_812EAE4(u16 species, u32 personality, u8 a2) -{ - return sub_812EA78(species, personality, a2) - 32; -} - static void sub_812EAFC(void) { LoadOam(); From 532907559304e1b32f8efa76e2fb8a2fc526ec02 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 16:03:30 -0400 Subject: [PATCH 068/318] Split data_845FD54.s --- data/berry_pouch.s | 59 ++++ data/buy_menu_helpers.s | 14 + data/data_845FD54.s | 498 ---------------------------------- data/help_system.s | 8 + data/itemfinder.s | 7 + data/link_rfu_4.s | 54 ++++ data/menu_indicators.s | 46 ++++ data/mystery_gift_menu.s | 14 + data/pokedex_area_markers.s | 14 + data/pokemon_summary_screen.s | 134 +++++++++ data/roamer.s | 5 + data/slot_machine.s | 94 +++++++ data/tm_case.s | 50 ++++ data/unk_text_util.s | 5 + data/wild_pokemon_area.s | 14 + ld_script.txt | 15 +- 16 files changed, 532 insertions(+), 499 deletions(-) create mode 100644 data/berry_pouch.s create mode 100644 data/buy_menu_helpers.s delete mode 100644 data/data_845FD54.s create mode 100644 data/help_system.s create mode 100644 data/itemfinder.s create mode 100644 data/link_rfu_4.s create mode 100644 data/menu_indicators.s create mode 100644 data/mystery_gift_menu.s create mode 100644 data/pokedex_area_markers.s create mode 100644 data/pokemon_summary_screen.s create mode 100644 data/roamer.s create mode 100644 data/slot_machine.s create mode 100644 data/tm_case.s create mode 100644 data/unk_text_util.s create mode 100644 data/wild_pokemon_area.s diff --git a/data/berry_pouch.s b/data/berry_pouch.s new file mode 100644 index 000000000..172443b5e --- /dev/null +++ b/data/berry_pouch.s @@ -0,0 +1,59 @@ + .section .rodata + .align 2 + +gUnknown_846434C:: @ 846434C + .incbin "baserom.gba", 0x46434C, 0xC + +gUnknown_8464358:: @ 8464358 + .incbin "baserom.gba", 0x464358, 0x14 + +gUnknown_846436C:: @ 846436C + .incbin "baserom.gba", 0x46436C, 0x8 + +gUnknown_8464374:: @ 8464374 + .incbin "baserom.gba", 0x464374, 0x8 + +gUnknown_846437C:: @ 846437C + .incbin "baserom.gba", 0x46437C, 0x28 + +gUnknown_84643A4:: @ 84643A4 + .incbin "baserom.gba", 0x4643A4, 0x4 + +gUnknown_84643A8:: @ 84643A8 + .incbin "baserom.gba", 0x4643A8, 0x4 + +gUnknown_84643AC:: @ 84643AC + .incbin "baserom.gba", 0x4643AC, 0x4 + +gUnknown_84643B0:: @ 84643B0 + .incbin "baserom.gba", 0x4643B0, 0x4 + +gUnknown_84643B4:: @ 84643B4 + .incbin "baserom.gba", 0x4643B4, 0x4 + +gUnknown_84643B8:: @ 84643B8 + .incbin "baserom.gba", 0x4643B8, 0x20 + +gUnknown_84643D8:: @ 84643D8 + .incbin "baserom.gba", 0x4643D8, 0x18 + +gUnknown_84643F0:: @ 84643F0 + .incbin "baserom.gba", 0x4643F0, 0x8 + +gUnknown_84643F8:: @ 84643F8 + .incbin "baserom.gba", 0x4643F8, 0x8 + +gUnknown_8464400:: @ 8464400 + .incbin "baserom.gba", 0x464400, 0x48 + +gUnknown_8464448:: @ 8464448 + .incbin "baserom.gba", 0x464448, 0x60 + +gUnknown_84644A8:: @ 84644A8 + .incbin "baserom.gba", 0x4644A8, 0x8 + +gUnknown_84644B0:: @ 84644B0 + .incbin "baserom.gba", 0x4644B0, 0x8 + +gUnknown_84644B8:: @ 84644B8 + .incbin "baserom.gba", 0x4644B8, 0x32C diff --git a/data/buy_menu_helpers.s b/data/buy_menu_helpers.s new file mode 100644 index 000000000..a59b8e069 --- /dev/null +++ b/data/buy_menu_helpers.s @@ -0,0 +1,14 @@ + .section .rodata + .align 2 + +gUnknown_8464804:: @ 8464804 + .incbin "baserom.gba", 0x464804, 0x38 + +gUnknown_846483C:: @ 846483C + .incbin "baserom.gba", 0x46483C, 0x40 + +gUnknown_846487C:: @ 846487C + .incbin "baserom.gba", 0x46487C, 0x8 + +gUnknown_8464884:: @ 8464884 + .incbin "baserom.gba", 0x464884, 0xC diff --git a/data/data_845FD54.s b/data/data_845FD54.s deleted file mode 100644 index 52b6dcb1f..000000000 --- a/data/data_845FD54.s +++ /dev/null @@ -1,498 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 - @ tm_case -gUnknown_8463134:: @ 8463134 - .incbin "baserom.gba", 0x463134, 0xC - -gUnknown_8463140:: @ 8463140 - .incbin "baserom.gba", 0x463140, 0x10 - -gUnknown_8463150:: @ 8463150 - .incbin "baserom.gba", 0x463150, 0x18 - -gUnknown_8463168:: @ 8463168 - .incbin "baserom.gba", 0x463168, 0x3 - -gUnknown_846316B:: @ 846316B - .incbin "baserom.gba", 0x46316B, 0x5 - -gUnknown_8463170:: @ 8463170 - .incbin "baserom.gba", 0x463170, 0x8 - -gUnknown_8463178:: @ 8463178 - .incbin "baserom.gba", 0x463178, 0x4 - -gUnknown_846317C:: @ 846317C - .incbin "baserom.gba", 0x46317C, 0x4 - -gUnknown_8463180:: @ 8463180 - .incbin "baserom.gba", 0x463180, 0x4 - -gUnknown_8463184:: @ 8463184 - .incbin "baserom.gba", 0x463184, 0xC - -gUnknown_8463190:: @ 8463190 - .incbin "baserom.gba", 0x463190, 0x50 - -gUnknown_84631E0:: @ 84631E0 - .incbin "baserom.gba", 0x4631E0, 0x8 - -gUnknown_84631E8:: @ 84631E8 - .incbin "baserom.gba", 0x4631E8, 0x30 - -gUnknown_8463218:: @ 8463218 - .incbin "baserom.gba", 0x463218, 0x8 - -gUnknown_8463220:: @ 8463220 - .incbin "baserom.gba", 0x463220, 0x18 - -gUnknown_8463238:: @ 8463238 - .incbin "baserom.gba", 0x463238, 0x24 - -gUnknown_846325C:: @ 846325C - .incbin "baserom.gba", 0x46325C, 0x48 - -gUnknown_84632A4:: @ 84632A4 - .incbin "baserom.gba", 0x4632A4, 0x18 - -gUnknown_84632BC:: @ 84632BC - .incbin "baserom.gba", 0x4632BC, 0x4 - -gUnknown_84632C0:: @ 84632C0 - .incbin "baserom.gba", 0x4632C0, 0x4 - -gUnknown_84632C4:: @ 84632C4 - .incbin "baserom.gba", 0x4632C4, 0x4 - -gUnknown_84632C8:: @ 84632C8 - .incbin "baserom.gba", 0x4632C8, 0x4 - -gUnknown_84632CC:: @ 84632CC - .incbin "baserom.gba", 0x4632CC, 0x4 - -gUnknown_84632D0:: @ 84632D0 - .incbin "baserom.gba", 0x4632D0, 0x4 - -gUnknown_84632D4:: @ 84632D4 - .incbin "baserom.gba", 0x4632D4, 0x4 - -gUnknown_84632D8:: @ 84632D8 - .incbin "baserom.gba", 0x4632D8, 0x18 - -gUnknown_84632F0:: @ 84632F0 - .incbin "baserom.gba", 0x4632F0, 0x18 - -gUnknown_8463308:: @ 8463308 - .incbin "baserom.gba", 0x463308, 0x20 - -gUnknown_8463328:: @ 8463328 - .incbin "baserom.gba", 0x463328, 0x70 - -gUnknown_8463398:: @ 8463398 - .incbin "baserom.gba", 0x463398, 0x40 - -gUnknown_84633D8:: @ 84633D8 - .incbin "baserom.gba", 0x4633D8, 0x44 - -gUnknown_846341C:: @ 846341C - .incbin "baserom.gba", 0x46341C, 0x20 - -gUnknown_846343C:: @ 846343C - .incbin "baserom.gba", 0x46343C, 0x128 - -gUnknown_8463564:: @ 8463564 - .incbin "baserom.gba", 0x463564, 0x1C - -gUnknown_8463580:: @ 8463580 - .incbin "baserom.gba", 0x463580, 0x140 - -gUnknown_84636C0:: @ 84636C0 - .incbin "baserom.gba", 0x4636C0, 0x20 - -gUnknown_84636E0:: @ 84636E0 - .incbin "baserom.gba", 0x4636E0, 0x20 - -gUnknown_8463700:: @ 8463700 - .incbin "baserom.gba", 0x463700, 0x20 - -gUnknown_8463720:: @ 8463720 - .incbin "baserom.gba", 0x463720, 0x20 - -gUnknown_8463740:: @ 8463740 - .incbin "baserom.gba", 0x463740, 0x12C - -gUnknown_846386C:: @ 846386C - .incbin "baserom.gba", 0x46386C, 0x120 - -gUnknown_846398C:: @ 846398C - .incbin "baserom.gba", 0x46398C, 0x18 - -gUnknown_84639A4:: @ 84639A4 - .incbin "baserom.gba", 0x4639A4, 0x8 - -gUnknown_84639AC:: @ 84639AC - .incbin "baserom.gba", 0x4639AC, 0x48 - -gUnknown_84639F4:: @ 84639F4 - .incbin "baserom.gba", 0x4639F4, 0x20 - -gUnknown_8463A14:: @ 8463A14 - .incbin "baserom.gba", 0x463A14, 0x68 - -gUnknown_8463A7C:: @ 8463A7C - .incbin "baserom.gba", 0x463A7C, 0x70 - -gUnknown_8463AEC:: @ 8463AEC - .incbin "baserom.gba", 0x463AEC, 0x10 - -gUnknown_8463AFC:: @ 8463AFC - .incbin "baserom.gba", 0x463AFC, 0x4 - -gUnknown_8463B00:: @ 8463B00 - .incbin "baserom.gba", 0x463B00, 0x20 - -gUnknown_8463B20:: @ 8463B20 - .incbin "baserom.gba", 0x463B20, 0x10 - -gUnknown_8463B30:: @ 8463B30 - .incbin "baserom.gba", 0x463B30, 0x10 - -gUnknown_8463B40:: @ 8463B40 - .incbin "baserom.gba", 0x463B40, 0x4 - -gUnknown_8463B44:: @ 8463B44 - .incbin "baserom.gba", 0x463B44, 0x20 - -gUnknown_8463B64:: @ 8463B64 - .incbin "baserom.gba", 0x463B64, 0x24 - -gUnknown_8463B88:: @ 8463B88 - .incbin "baserom.gba", 0x463B88, 0xF8 - -gUnknown_8463C80:: @ 8463C80 - .incbin "baserom.gba", 0x463C80, 0x1E0 - -gUnknown_8463E60:: @ 8463E60 - .incbin "baserom.gba", 0x463E60, 0x64 - -gUnknown_8463EC4:: @ 8463EC4 - .incbin "baserom.gba", 0x463EC4, 0x10 - -gUnknown_8463ED4:: @ 8463ED4 - .incbin "baserom.gba", 0x463ED4, 0x1C - -gUnknown_8463EF0:: @ 8463EF0 - .incbin "baserom.gba", 0x463EF0, 0xC - -gUnknown_8463EFC:: @ 8463EFC - .incbin "baserom.gba", 0x463EFC, 0x10 - -gUnknown_8463F0C:: @ 8463F0C - .incbin "baserom.gba", 0x463F0C, 0x18 - -gUnknown_8463F24:: @ 8463F24 - .incbin "baserom.gba", 0x463F24, 0x18 - -gUnknown_8463F3C:: @ 8463F3C - .incbin "baserom.gba", 0x463F3C, 0x20 - -gUnknown_8463F5C:: @ 8463F5C - .incbin "baserom.gba", 0x463F5C, 0x20 - -gUnknown_8463F7C:: @ 8463F7C - .incbin "baserom.gba", 0x463F7C, 0x20 - -gUnknown_8463F9C:: @ 8463F9C - .incbin "baserom.gba", 0x463F9C, 0x8 - -gUnknown_8463FA4:: @ 8463FA4 - .incbin "baserom.gba", 0x463FA4, 0x3 - -gUnknown_8463FA7:: @ 8463FA7 - .incbin "baserom.gba", 0x463FA7, 0x11 - -gUnknown_8463FB8:: @ 8463FB8 - .incbin "baserom.gba", 0x463FB8, 0x6 - -gUnknown_8463FBE:: @ 8463FBE - .incbin "baserom.gba", 0x463FBE, 0x3 - -gUnknown_8463FC1:: @ 8463FC1 - .incbin "baserom.gba", 0x463FC1, 0x5 - -gUnknown_8463FC6:: @ 8463FC6 - .incbin "baserom.gba", 0x463FC6, 0x7 - -gUnknown_8463FCD:: @ 8463FCD - .incbin "baserom.gba", 0x463FCD, 0x7 - -gUnknown_8463FD4:: @ 8463FD4 - .incbin "baserom.gba", 0x463FD4, 0xB - -gUnknown_8463FDF:: @ 8463FDF - .incbin "baserom.gba", 0x463FDF, 0xB - -gUnknown_8463FEA:: @ 8463FEA - .incbin "baserom.gba", 0x463FEA, 0x12 - -gUnknown_8463FFC:: @ 8463FFC - .incbin "baserom.gba", 0x463FFC, 0xC - -gUnknown_8464008:: @ 8464008 - .incbin "baserom.gba", 0x464008, 0x120 - -gUnknown_8464128:: @ 8464128 - .incbin "baserom.gba", 0x464128, 0x20 - -gUnknown_8464148:: @ 8464148 - .incbin "baserom.gba", 0x464148, 0x174 - -gUnknown_84642BC:: @ 84642BC - .incbin "baserom.gba", 0x4642BC, 0x4 - -gUnknown_84642C0:: @ 84642C0 - .incbin "baserom.gba", 0x4642C0, 0x34 - -gUnknown_84642F4:: @ 84642F4 - .incbin "baserom.gba", 0x4642F4, 0xC - -gUnknown_8464300:: @ 8464300 - .incbin "baserom.gba", 0x464300, 0x4C - -gUnknown_846434C:: @ 846434C - .incbin "baserom.gba", 0x46434C, 0xC - -gUnknown_8464358:: @ 8464358 - .incbin "baserom.gba", 0x464358, 0x14 - -gUnknown_846436C:: @ 846436C - .incbin "baserom.gba", 0x46436C, 0x8 - -gUnknown_8464374:: @ 8464374 - .incbin "baserom.gba", 0x464374, 0x8 - -gUnknown_846437C:: @ 846437C - .incbin "baserom.gba", 0x46437C, 0x28 - -gUnknown_84643A4:: @ 84643A4 - .incbin "baserom.gba", 0x4643A4, 0x4 - -gUnknown_84643A8:: @ 84643A8 - .incbin "baserom.gba", 0x4643A8, 0x4 - -gUnknown_84643AC:: @ 84643AC - .incbin "baserom.gba", 0x4643AC, 0x4 - -gUnknown_84643B0:: @ 84643B0 - .incbin "baserom.gba", 0x4643B0, 0x4 - -gUnknown_84643B4:: @ 84643B4 - .incbin "baserom.gba", 0x4643B4, 0x4 - -gUnknown_84643B8:: @ 84643B8 - .incbin "baserom.gba", 0x4643B8, 0x20 - -gUnknown_84643D8:: @ 84643D8 - .incbin "baserom.gba", 0x4643D8, 0x18 - -gUnknown_84643F0:: @ 84643F0 - .incbin "baserom.gba", 0x4643F0, 0x8 - -gUnknown_84643F8:: @ 84643F8 - .incbin "baserom.gba", 0x4643F8, 0x8 - -gUnknown_8464400:: @ 8464400 - .incbin "baserom.gba", 0x464400, 0x48 - -gUnknown_8464448:: @ 8464448 - .incbin "baserom.gba", 0x464448, 0x60 - -gUnknown_84644A8:: @ 84644A8 - .incbin "baserom.gba", 0x4644A8, 0x8 - -gUnknown_84644B0:: @ 84644B0 - .incbin "baserom.gba", 0x4644B0, 0x8 - -gUnknown_84644B8:: @ 84644B8 - .incbin "baserom.gba", 0x4644B8, 0x32C - -gUnknown_84647E4:: @ 84647E4 - .incbin "baserom.gba", 0x4647E4, 0x18 - -gUnknown_84647FC:: @ 84647FC - .incbin "baserom.gba", 0x4647FC, 0x8 - -gUnknown_8464804:: @ 8464804 - .incbin "baserom.gba", 0x464804, 0x38 - -gUnknown_846483C:: @ 846483C - .incbin "baserom.gba", 0x46483C, 0x40 - -gUnknown_846487C:: @ 846487C - .incbin "baserom.gba", 0x46487C, 0x8 - -gUnknown_8464884:: @ 8464884 - .incbin "baserom.gba", 0x464884, 0xC - -gUnknown_8464890:: @ 8464890 - .incbin "baserom.gba", 0x464890, 0x1E - -gUnknown_84648AE:: @ 84648AE - .incbin "baserom.gba", 0x4648AE, 0xF - -gUnknown_84648BD:: @ 84648BD - .incbin "baserom.gba", 0x4648BD, 0x15 - -gUnknown_84648D2:: @ 84648D2 - .incbin "baserom.gba", 0x4648D2, 0x54 - -gUnknown_8464926:: @ 8464926 - .incbin "baserom.gba", 0x464926, 0x40 - -gUnknown_8464966:: @ 8464966 - .incbin "baserom.gba", 0x464966, 0xC4A - -gUnknown_84655B0:: @ 84655B0 - .incbin "baserom.gba", 0x4655B0, 0x18 - -gUnknown_84655C8:: @ 84655C8 - .incbin "baserom.gba", 0x4655C8, 0x40 - -gUnknown_8465608:: @ 8465608 - .incbin "baserom.gba", 0x465608, 0xE - -gUnknown_8465616:: @ 8465616 - .incbin "baserom.gba", 0x465616, 0xC0 - -gUnknown_84656D6:: @ 84656D6 - .incbin "baserom.gba", 0x4656D6, 0x10E - -gUnknown_84657E4:: @ 84657E4 - .incbin "baserom.gba", 0x4657E4, 0x98 - -gUnknown_846587C:: @ 846587C - .incbin "baserom.gba", 0x46587C, 0x5C - -gUnknown_84658D8:: @ 84658D8 - .incbin "baserom.gba", 0x4658D8, 0x18 - -gUnknown_84658F0:: @ 84658F0 - .incbin "baserom.gba", 0x4658F0, 0x40 - -gUnknown_8465930:: @ 8465930 - .incbin "baserom.gba", 0x465930, 0x20 - -gUnknown_8465950:: @ 8465950 - .incbin "baserom.gba", 0x465950, 0x80 - -gUnknown_84659D0:: @ 84659D0 - .incbin "baserom.gba", 0x4659D0, 0x804 - -gUnknown_84661D4:: @ 84661D4 - .incbin "baserom.gba", 0x4661D4, 0x2E8 - -gUnknown_84664BC:: @ 84664BC - .incbin "baserom.gba", 0x4664BC, 0x20 - -gUnknown_84664DC:: @ 84664DC - .incbin "baserom.gba", 0x4664DC, 0x60 - -gUnknown_846653C:: @ 846653C - .incbin "baserom.gba", 0x46653C, 0x84 - -gUnknown_84665C0:: @ 84665C0 - .incbin "baserom.gba", 0x4665C0, 0x60 - -gUnknown_8466620:: @ 8466620 - .incbin "baserom.gba", 0x466620, 0x378 - -gUnknown_8466998:: @ 8466998 - .incbin "baserom.gba", 0x466998, 0x178 - -gUnknown_8466B10:: @ 8466B10 - .incbin "baserom.gba", 0x466B10, 0x10 - -gUnknown_8466B20:: @ 8466B20 - .incbin "baserom.gba", 0x466B20, 0xEC - -gUnknown_8466C0C:: @ 8466C0C - .incbin "baserom.gba", 0x466C0C, 0x28 - -gUnknown_8466C34:: @ 8466C34 - .incbin "baserom.gba", 0x466C34, 0x4 - -gUnknown_8466C38:: @ 8466C38 - .incbin "baserom.gba", 0x466C38, 0x8 - -gUnknown_8466C40:: @ 8466C40 - .incbin "baserom.gba", 0x466C40, 0x18 - -gUnknown_8466C58:: @ 8466C58 - .incbin "baserom.gba", 0x466C58, 0xB8 - -gUnknown_8466D10:: @ 8466D10 - .incbin "baserom.gba", 0x466D10, 0x20 - -gUnknown_8466D30:: @ 8466D30 - .incbin "baserom.gba", 0x466D30, 0x30 - -gUnknown_8466D60:: @ 8466D60 - .incbin "baserom.gba", 0x466D60, 0x10 - -gUnknown_8466D70:: @ 8466D70 - .incbin "baserom.gba", 0x466D70, 0x20 - -gUnknown_8466D90:: @ 8466D90 - .incbin "baserom.gba", 0x466D90, 0x8 - -gUnknown_8466D98:: @ 8466D98 - .incbin "baserom.gba", 0x466D98, 0x8 - -gUnknown_8466DA0:: @ 8466DA0 - .incbin "baserom.gba", 0x466DA0, 0x8 - -gUnknown_8466DA8:: @ 8466DA8 - .incbin "baserom.gba", 0x466DA8, 0x8 - -gUnknown_8466DB0:: @ 8466DB0 - .incbin "baserom.gba", 0x466DB0, 0x8 - -gUnknown_8466DB8:: @ 8466DB8 - .incbin "baserom.gba", 0x466DB8, 0x8 - -gUnknown_8466DC0:: @ 8466DC0 - .incbin "baserom.gba", 0x466DC0, 0x8 - -gUnknown_8466DC8:: @ 8466DC8 - .incbin "baserom.gba", 0x466DC8, 0x8 - -gUnknown_8466DD0:: @ 8466DD0 - .incbin "baserom.gba", 0x466DD0, 0x18 - -gUnknown_8466DE8:: @ 8466DE8 - .incbin "baserom.gba", 0x466DE8, 0x18 - -gUnknown_8466E00:: @ 8466E00 - .incbin "baserom.gba", 0x466E00, 0x78 - -gUnknown_8466E78:: @ 8466E78 - .incbin "baserom.gba", 0x466E78, 0x18 - -gUnknown_8466E90:: @ 8466E90 - .incbin "baserom.gba", 0x466E90, 0x18 - -gUnknown_8466EA8:: @ 8466EA8 - .incbin "baserom.gba", 0x466EA8, 0x18 - -gUnknown_8466EC0:: @ 8466EC0 - .incbin "baserom.gba", 0x466EC0, 0x28 - -gUnknown_8466EE8:: @ 8466EE8 - .incbin "baserom.gba", 0x466EE8, 0x8 - -gUnknown_8466EF0:: @ 8466EF0 - .incbin "baserom.gba", 0x466EF0, 0x10 diff --git a/data/help_system.s b/data/help_system.s new file mode 100644 index 000000000..3031f4c7f --- /dev/null +++ b/data/help_system.s @@ -0,0 +1,8 @@ + .section .rodata + .align 2 + +gUnknown_8464008:: @ 8464008 + .incbin "baserom.gba", 0x464008, 0x120 + +gUnknown_8464128:: @ 8464128 + .incbin "baserom.gba", 0x464128, 0x20 diff --git a/data/itemfinder.s b/data/itemfinder.s new file mode 100644 index 000000000..3a955deeb --- /dev/null +++ b/data/itemfinder.s @@ -0,0 +1,7 @@ + .section .rodata + .align 2 +gUnknown_84647E4:: @ 84647E4 + .incbin "baserom.gba", 0x4647E4, 0x18 + +gUnknown_84647FC:: @ 84647FC + .incbin "baserom.gba", 0x4647FC, 0x8 diff --git a/data/link_rfu_4.s b/data/link_rfu_4.s new file mode 100644 index 000000000..20f235a80 --- /dev/null +++ b/data/link_rfu_4.s @@ -0,0 +1,54 @@ + .section .rodata + + .align 2 + +gUnknown_8466D90:: @ 8466D90 + .incbin "baserom.gba", 0x466D90, 0x8 + +gUnknown_8466D98:: @ 8466D98 + .incbin "baserom.gba", 0x466D98, 0x8 + +gUnknown_8466DA0:: @ 8466DA0 + .incbin "baserom.gba", 0x466DA0, 0x8 + +gUnknown_8466DA8:: @ 8466DA8 + .incbin "baserom.gba", 0x466DA8, 0x8 + +gUnknown_8466DB0:: @ 8466DB0 + .incbin "baserom.gba", 0x466DB0, 0x8 + +gUnknown_8466DB8:: @ 8466DB8 + .incbin "baserom.gba", 0x466DB8, 0x8 + +gUnknown_8466DC0:: @ 8466DC0 + .incbin "baserom.gba", 0x466DC0, 0x8 + +gUnknown_8466DC8:: @ 8466DC8 + .incbin "baserom.gba", 0x466DC8, 0x8 + +gUnknown_8466DD0:: @ 8466DD0 + .incbin "baserom.gba", 0x466DD0, 0x18 + +gUnknown_8466DE8:: @ 8466DE8 + .incbin "baserom.gba", 0x466DE8, 0x18 + +gUnknown_8466E00:: @ 8466E00 + .incbin "baserom.gba", 0x466E00, 0x78 + +gUnknown_8466E78:: @ 8466E78 + .incbin "baserom.gba", 0x466E78, 0x18 + +gUnknown_8466E90:: @ 8466E90 + .incbin "baserom.gba", 0x466E90, 0x18 + +gUnknown_8466EA8:: @ 8466EA8 + .incbin "baserom.gba", 0x466EA8, 0x18 + +gUnknown_8466EC0:: @ 8466EC0 + .incbin "baserom.gba", 0x466EC0, 0x28 + +gUnknown_8466EE8:: @ 8466EE8 + .incbin "baserom.gba", 0x466EE8, 0x8 + +gUnknown_8466EF0:: @ 8466EF0 + .incbin "baserom.gba", 0x466EF0, 0x10 diff --git a/data/menu_indicators.s b/data/menu_indicators.s new file mode 100644 index 000000000..dd8911c7d --- /dev/null +++ b/data/menu_indicators.s @@ -0,0 +1,46 @@ + .section .rodata + .align 2 +gUnknown_846325C:: @ 846325C + .incbin "baserom.gba", 0x46325C, 0x48 + +gUnknown_84632A4:: @ 84632A4 + .incbin "baserom.gba", 0x4632A4, 0x18 + +gUnknown_84632BC:: @ 84632BC + .incbin "baserom.gba", 0x4632BC, 0x4 + +gUnknown_84632C0:: @ 84632C0 + .incbin "baserom.gba", 0x4632C0, 0x4 + +gUnknown_84632C4:: @ 84632C4 + .incbin "baserom.gba", 0x4632C4, 0x4 + +gUnknown_84632C8:: @ 84632C8 + .incbin "baserom.gba", 0x4632C8, 0x4 + +gUnknown_84632CC:: @ 84632CC + .incbin "baserom.gba", 0x4632CC, 0x4 + +gUnknown_84632D0:: @ 84632D0 + .incbin "baserom.gba", 0x4632D0, 0x4 + +gUnknown_84632D4:: @ 84632D4 + .incbin "baserom.gba", 0x4632D4, 0x4 + +gUnknown_84632D8:: @ 84632D8 + .incbin "baserom.gba", 0x4632D8, 0x18 + +gUnknown_84632F0:: @ 84632F0 + .incbin "baserom.gba", 0x4632F0, 0x18 + +gUnknown_8463308:: @ 8463308 + .incbin "baserom.gba", 0x463308, 0x20 + +gUnknown_8463328:: @ 8463328 + .incbin "baserom.gba", 0x463328, 0x70 + +gUnknown_8463398:: @ 8463398 + .incbin "baserom.gba", 0x463398, 0x40 + +gUnknown_84633D8:: @ 84633D8 + .incbin "baserom.gba", 0x4633D8, 0x44 diff --git a/data/mystery_gift_menu.s b/data/mystery_gift_menu.s new file mode 100644 index 000000000..9caee4467 --- /dev/null +++ b/data/mystery_gift_menu.s @@ -0,0 +1,14 @@ + .section .rodata + .align 2 + +gUnknown_8466D10:: @ 8466D10 + .incbin "baserom.gba", 0x466D10, 0x20 + +gUnknown_8466D30:: @ 8466D30 + .incbin "baserom.gba", 0x466D30, 0x30 + +gUnknown_8466D60:: @ 8466D60 + .incbin "baserom.gba", 0x466D60, 0x10 + +gUnknown_8466D70:: @ 8466D70 + .incbin "baserom.gba", 0x466D70, 0x20 diff --git a/data/pokedex_area_markers.s b/data/pokedex_area_markers.s new file mode 100644 index 000000000..bf63a3210 --- /dev/null +++ b/data/pokedex_area_markers.s @@ -0,0 +1,14 @@ + .section .rodata + .align 2 + +gUnknown_846341C:: @ 846341C + .incbin "baserom.gba", 0x46341C, 0x20 + +gUnknown_846343C:: @ 846343C + .incbin "baserom.gba", 0x46343C, 0x128 + +gUnknown_8463564:: @ 8463564 + .incbin "baserom.gba", 0x463564, 0x1C + +gUnknown_8463580:: @ 8463580 + .incbin "baserom.gba", 0x463580, 0x140 diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s new file mode 100644 index 000000000..be7c0de93 --- /dev/null +++ b/data/pokemon_summary_screen.s @@ -0,0 +1,134 @@ + .section .rodata + .align 2 + +gUnknown_84636C0:: @ 84636C0 + .incbin "baserom.gba", 0x4636C0, 0x20 + +gUnknown_84636E0:: @ 84636E0 + .incbin "baserom.gba", 0x4636E0, 0x20 + +gUnknown_8463700:: @ 8463700 + .incbin "baserom.gba", 0x463700, 0x20 + +gUnknown_8463720:: @ 8463720 + .incbin "baserom.gba", 0x463720, 0x20 + +gUnknown_8463740:: @ 8463740 + .incbin "baserom.gba", 0x463740, 0x12C + +gUnknown_846386C:: @ 846386C + .incbin "baserom.gba", 0x46386C, 0x120 + +gUnknown_846398C:: @ 846398C + .incbin "baserom.gba", 0x46398C, 0x18 + +gUnknown_84639A4:: @ 84639A4 + .incbin "baserom.gba", 0x4639A4, 0x8 + +gUnknown_84639AC:: @ 84639AC + .incbin "baserom.gba", 0x4639AC, 0x48 + +gUnknown_84639F4:: @ 84639F4 + .incbin "baserom.gba", 0x4639F4, 0x20 + +gUnknown_8463A14:: @ 8463A14 + .incbin "baserom.gba", 0x463A14, 0x68 + +gUnknown_8463A7C:: @ 8463A7C + .incbin "baserom.gba", 0x463A7C, 0x70 + +gUnknown_8463AEC:: @ 8463AEC + .incbin "baserom.gba", 0x463AEC, 0x10 + +gUnknown_8463AFC:: @ 8463AFC + .incbin "baserom.gba", 0x463AFC, 0x4 + +gUnknown_8463B00:: @ 8463B00 + .incbin "baserom.gba", 0x463B00, 0x20 + +gUnknown_8463B20:: @ 8463B20 + .incbin "baserom.gba", 0x463B20, 0x10 + +gUnknown_8463B30:: @ 8463B30 + .incbin "baserom.gba", 0x463B30, 0x10 + +gUnknown_8463B40:: @ 8463B40 + .incbin "baserom.gba", 0x463B40, 0x4 + +gUnknown_8463B44:: @ 8463B44 + .incbin "baserom.gba", 0x463B44, 0x20 + +gUnknown_8463B64:: @ 8463B64 + .incbin "baserom.gba", 0x463B64, 0x24 + +gUnknown_8463B88:: @ 8463B88 + .incbin "baserom.gba", 0x463B88, 0xF8 + +gUnknown_8463C80:: @ 8463C80 + .incbin "baserom.gba", 0x463C80, 0x1E0 + +gUnknown_8463E60:: @ 8463E60 + .incbin "baserom.gba", 0x463E60, 0x64 + +gUnknown_8463EC4:: @ 8463EC4 + .incbin "baserom.gba", 0x463EC4, 0x10 + +gUnknown_8463ED4:: @ 8463ED4 + .incbin "baserom.gba", 0x463ED4, 0x1C + +gUnknown_8463EF0:: @ 8463EF0 + .incbin "baserom.gba", 0x463EF0, 0xC + +gUnknown_8463EFC:: @ 8463EFC + .incbin "baserom.gba", 0x463EFC, 0x10 + +gUnknown_8463F0C:: @ 8463F0C + .incbin "baserom.gba", 0x463F0C, 0x18 + +gUnknown_8463F24:: @ 8463F24 + .incbin "baserom.gba", 0x463F24, 0x18 + +gUnknown_8463F3C:: @ 8463F3C + .incbin "baserom.gba", 0x463F3C, 0x20 + +gUnknown_8463F5C:: @ 8463F5C + .incbin "baserom.gba", 0x463F5C, 0x20 + +gUnknown_8463F7C:: @ 8463F7C + .incbin "baserom.gba", 0x463F7C, 0x20 + +gUnknown_8463F9C:: @ 8463F9C + .incbin "baserom.gba", 0x463F9C, 0x8 + +gUnknown_8463FA4:: @ 8463FA4 + .incbin "baserom.gba", 0x463FA4, 0x3 + +gUnknown_8463FA7:: @ 8463FA7 + .incbin "baserom.gba", 0x463FA7, 0x11 + +gUnknown_8463FB8:: @ 8463FB8 + .incbin "baserom.gba", 0x463FB8, 0x6 + +gUnknown_8463FBE:: @ 8463FBE + .incbin "baserom.gba", 0x463FBE, 0x3 + +gUnknown_8463FC1:: @ 8463FC1 + .incbin "baserom.gba", 0x463FC1, 0x5 + +gUnknown_8463FC6:: @ 8463FC6 + .incbin "baserom.gba", 0x463FC6, 0x7 + +gUnknown_8463FCD:: @ 8463FCD + .incbin "baserom.gba", 0x463FCD, 0x7 + +gUnknown_8463FD4:: @ 8463FD4 + .incbin "baserom.gba", 0x463FD4, 0xB + +gUnknown_8463FDF:: @ 8463FDF + .incbin "baserom.gba", 0x463FDF, 0xB + +gUnknown_8463FEA:: @ 8463FEA + .incbin "baserom.gba", 0x463FEA, 0x12 + +gUnknown_8463FFC:: @ 8463FFC + .incbin "baserom.gba", 0x463FFC, 0xC diff --git a/data/roamer.s b/data/roamer.s new file mode 100644 index 000000000..a17d9d26b --- /dev/null +++ b/data/roamer.s @@ -0,0 +1,5 @@ + .section .rodata + .align 2 + +gUnknown_8466C58:: @ 8466C58 + .incbin "baserom.gba", 0x466C58, 0xB8 diff --git a/data/slot_machine.s b/data/slot_machine.s new file mode 100644 index 000000000..dac396602 --- /dev/null +++ b/data/slot_machine.s @@ -0,0 +1,94 @@ + .section .rodata + .align 2 +gUnknown_8464890:: @ 8464890 + .incbin "baserom.gba", 0x464890, 0x1E + +gUnknown_84648AE:: @ 84648AE + .incbin "baserom.gba", 0x4648AE, 0xF + +gUnknown_84648BD:: @ 84648BD + .incbin "baserom.gba", 0x4648BD, 0x15 + +gUnknown_84648D2:: @ 84648D2 + .incbin "baserom.gba", 0x4648D2, 0x54 + +gUnknown_8464926:: @ 8464926 + .incbin "baserom.gba", 0x464926, 0x40 + +gUnknown_8464966:: @ 8464966 + .incbin "baserom.gba", 0x464966, 0xC4A + +gUnknown_84655B0:: @ 84655B0 + .incbin "baserom.gba", 0x4655B0, 0x18 + +gUnknown_84655C8:: @ 84655C8 + .incbin "baserom.gba", 0x4655C8, 0x40 + +gUnknown_8465608:: @ 8465608 + .incbin "baserom.gba", 0x465608, 0xE + +gUnknown_8465616:: @ 8465616 + .incbin "baserom.gba", 0x465616, 0xC0 + +gUnknown_84656D6:: @ 84656D6 + .incbin "baserom.gba", 0x4656D6, 0x10E + +gUnknown_84657E4:: @ 84657E4 + .incbin "baserom.gba", 0x4657E4, 0x98 + +gUnknown_846587C:: @ 846587C + .incbin "baserom.gba", 0x46587C, 0x5C + +gUnknown_84658D8:: @ 84658D8 + .incbin "baserom.gba", 0x4658D8, 0x18 + +gUnknown_84658F0:: @ 84658F0 + .incbin "baserom.gba", 0x4658F0, 0x40 + +gUnknown_8465930:: @ 8465930 + .incbin "baserom.gba", 0x465930, 0x20 + +gUnknown_8465950:: @ 8465950 + .incbin "baserom.gba", 0x465950, 0x80 + +gUnknown_84659D0:: @ 84659D0 + .incbin "baserom.gba", 0x4659D0, 0x804 + +gUnknown_84661D4:: @ 84661D4 + .incbin "baserom.gba", 0x4661D4, 0x2E8 + +gUnknown_84664BC:: @ 84664BC + .incbin "baserom.gba", 0x4664BC, 0x20 + +gUnknown_84664DC:: @ 84664DC + .incbin "baserom.gba", 0x4664DC, 0x60 + +gUnknown_846653C:: @ 846653C + .incbin "baserom.gba", 0x46653C, 0x84 + +gUnknown_84665C0:: @ 84665C0 + .incbin "baserom.gba", 0x4665C0, 0x60 + +gUnknown_8466620:: @ 8466620 + .incbin "baserom.gba", 0x466620, 0x378 + +gUnknown_8466998:: @ 8466998 + .incbin "baserom.gba", 0x466998, 0x178 + +gUnknown_8466B10:: @ 8466B10 + .incbin "baserom.gba", 0x466B10, 0x10 + +gUnknown_8466B20:: @ 8466B20 + .incbin "baserom.gba", 0x466B20, 0xEC + +gUnknown_8466C0C:: @ 8466C0C + .incbin "baserom.gba", 0x466C0C, 0x28 + +gUnknown_8466C34:: @ 8466C34 + .incbin "baserom.gba", 0x466C34, 0x4 + +gUnknown_8466C38:: @ 8466C38 + .incbin "baserom.gba", 0x466C38, 0x8 + +gUnknown_8466C40:: @ 8466C40 + .incbin "baserom.gba", 0x466C40, 0x18 diff --git a/data/tm_case.s b/data/tm_case.s new file mode 100644 index 000000000..5720087d7 --- /dev/null +++ b/data/tm_case.s @@ -0,0 +1,50 @@ + .section .rodata + + .align 2 +gUnknown_8463134:: @ 8463134 + .incbin "baserom.gba", 0x463134, 0xC + +gUnknown_8463140:: @ 8463140 + .incbin "baserom.gba", 0x463140, 0x10 + +gUnknown_8463150:: @ 8463150 + .incbin "baserom.gba", 0x463150, 0x18 + +gUnknown_8463168:: @ 8463168 + .incbin "baserom.gba", 0x463168, 0x3 + +gUnknown_846316B:: @ 846316B + .incbin "baserom.gba", 0x46316B, 0x5 + +gUnknown_8463170:: @ 8463170 + .incbin "baserom.gba", 0x463170, 0x8 + +gUnknown_8463178:: @ 8463178 + .incbin "baserom.gba", 0x463178, 0x4 + +gUnknown_846317C:: @ 846317C + .incbin "baserom.gba", 0x46317C, 0x4 + +gUnknown_8463180:: @ 8463180 + .incbin "baserom.gba", 0x463180, 0x4 + +gUnknown_8463184:: @ 8463184 + .incbin "baserom.gba", 0x463184, 0xC + +gUnknown_8463190:: @ 8463190 + .incbin "baserom.gba", 0x463190, 0x50 + +gUnknown_84631E0:: @ 84631E0 + .incbin "baserom.gba", 0x4631E0, 0x8 + +gUnknown_84631E8:: @ 84631E8 + .incbin "baserom.gba", 0x4631E8, 0x30 + +gUnknown_8463218:: @ 8463218 + .incbin "baserom.gba", 0x463218, 0x8 + +gUnknown_8463220:: @ 8463220 + .incbin "baserom.gba", 0x463220, 0x18 + +gUnknown_8463238:: @ 8463238 + .incbin "baserom.gba", 0x463238, 0x24 diff --git a/data/unk_text_util.s b/data/unk_text_util.s new file mode 100644 index 000000000..5e5ce1a5d --- /dev/null +++ b/data/unk_text_util.s @@ -0,0 +1,5 @@ + .section .rodata + .align 2 + +gUnknown_8464300:: @ 8464300 + .incbin "baserom.gba", 0x464300, 0x4C diff --git a/data/wild_pokemon_area.s b/data/wild_pokemon_area.s new file mode 100644 index 000000000..26913b7c6 --- /dev/null +++ b/data/wild_pokemon_area.s @@ -0,0 +1,14 @@ + .section .rodata + .align 2 + +gUnknown_8464148:: @ 8464148 + .incbin "baserom.gba", 0x464148, 0x174 + +gUnknown_84642BC:: @ 84642BC + .incbin "baserom.gba", 0x4642BC, 0x4 + +gUnknown_84642C0:: @ 84642C0 + .incbin "baserom.gba", 0x4642C0, 0x34 + +gUnknown_84642F4:: @ 84642F4 + .incbin "baserom.gba", 0x4642F4, 0xC diff --git a/ld_script.txt b/ld_script.txt index aff4e7f6d..eb38837ef 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -384,7 +384,20 @@ SECTIONS { src/fame_checker.o(.rodata); src/menu2.o(.rodata); src/oak_speech.o(.rodata); - data/data_845FD54.o(.rodata); + data/tm_case.o(.rodata); + data/menu_indicators.o(.rodata); + data/pokedex_area_markers.o(.rodata); + data/pokemon_summary_screen.o(.rodata); + data/help_system.o(.rodata); + data/wild_pokemon_area.o(.rodata); + data/unk_text_util.o(.rodata); + data/berry_pouch.o(.rodata); + data/itemfinder.o(.rodata); + data/buy_menu_helpers.o(.rodata); + data/slot_machine.o(.rodata); + data/roamer.o(.rodata); + data/mystery_gift_menu.o(.rodata); + data/link_rfu_4.o(.rodata); src/mevent.o(.rodata); src/mevent_server_helpers.o(.rodata); src/mevent_server.o(.rodata); From c5e238b8c12f58ae2043587c610bcd70215d39e2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 16:30:30 -0400 Subject: [PATCH 069/318] Roamer: Documentation --- asm/field_specials.s | 20 ++++----- asm/new_game.s | 2 +- asm/roamer.s | 92 ++++++++++++++++++++-------------------- asm/wild_pokemon_area.s | 4 +- data/data_83F5738.s | 2 +- data/roamer.s | 2 +- data/specials.inc | 4 +- include/constants/vars.h | 2 +- sym_ewram.txt | 4 +- 9 files changed, 66 insertions(+), 66 deletions(-) diff --git a/asm/field_specials.s b/asm/field_specials.s index 4c0b97151..8e24bedbf 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -756,7 +756,7 @@ sub_80CAB78: @ 80CAB78 bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_80CBD94 + bl GetStarterPokemon lsls r0, 16 lsrs r6, r0, 16 bl CalculatePlayerPartyCount @@ -3085,8 +3085,8 @@ sub_80CBD80: @ 80CBD80 bx r0 thumb_func_end sub_80CBD80 - thumb_func_start sub_80CBD94 -sub_80CBD94: @ 80CBD94 + thumb_func_start GetStarterPokemon +GetStarterPokemon: @ 80CBD94 push {lr} lsls r0, 16 lsrs r1, r0, 16 @@ -3094,31 +3094,31 @@ sub_80CBD94: @ 80CBD94 bls _080CBDA0 movs r1, 0 _080CBDA0: - ldr r0, _080CBDAC @ =gUnknown_83F5D2C + ldr r0, _080CBDAC @ =sStarterMon lsls r1, 1 adds r1, r0 ldrh r0, [r1] pop {r1} bx r1 .align 2, 0 -_080CBDAC: .4byte gUnknown_83F5D2C - thumb_func_end sub_80CBD94 +_080CBDAC: .4byte sStarterMon + thumb_func_end GetStarterPokemon - thumb_func_start sub_80CBDB0 -sub_80CBDB0: @ 80CBDB0 + thumb_func_start ScrSpecial_GetStarter +ScrSpecial_GetStarter: @ 80CBDB0 push {lr} ldr r0, _080CBDC8 @ =0x00004031 bl VarGet lsls r0, 16 lsrs r0, 16 - bl sub_80CBD94 + bl GetStarterPokemon lsls r0, 16 lsrs r0, 16 pop {r1} bx r1 .align 2, 0 _080CBDC8: .4byte 0x00004031 - thumb_func_end sub_80CBDB0 + thumb_func_end ScrSpecial_GetStarter thumb_func_start sub_80CBDCC sub_80CBDCC: @ 80CBDCC diff --git a/asm/new_game.s b/asm/new_game.s index cec2b2c9a..d1d5a1487 100644 --- a/asm/new_game.s +++ b/asm/new_game.s @@ -257,7 +257,7 @@ sub_8054A60: @ 8054A60 strb r5, [r0] bl ZeroPlayerPartyMons bl sub_808C7E0 - bl sub_8141C54 + bl ClearRoamerData ldr r0, [r6] ldr r1, _08054B68 @ =0x00000296 adds r0, r1 diff --git a/asm/roamer.s b/asm/roamer.s index d42b34293..82ce82395 100644 --- a/asm/roamer.s +++ b/asm/roamer.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_8141C54 -sub_8141C54: @ 8141C54 + thumb_func_start ClearRoamerData +ClearRoamerData: @ 8141C54 push {lr} ldr r0, _08141C84 @ =gSaveBlock1Ptr ldr r0, [r0] @@ -15,13 +15,13 @@ sub_8141C54: @ 8141C54 movs r1, 0 movs r2, 0x1C bl memset - ldr r1, _08141C8C @ =gUnknown_203F3AE + ldr r1, _08141C8C @ =sRoamerLocation movs r0, 0 strb r0, [r1] strb r0, [r1, 0x1] movs r1, 0 movs r2, 0 - ldr r0, _08141C90 @ =gUnknown_203F3A8 + ldr r0, _08141C90 @ =sLocationHistory _08141C74: strb r2, [r0] strb r2, [r0, 0x1] @@ -34,31 +34,31 @@ _08141C74: .align 2, 0 _08141C84: .4byte gSaveBlock1Ptr _08141C88: .4byte 0x000030d0 -_08141C8C: .4byte gUnknown_203F3AE -_08141C90: .4byte gUnknown_203F3A8 - thumb_func_end sub_8141C54 +_08141C8C: .4byte sRoamerLocation +_08141C90: .4byte sLocationHistory + thumb_func_end ClearRoamerData - thumb_func_start sub_8141C94 -sub_8141C94: @ 8141C94 + thumb_func_start CreateInitialRoamerMon +CreateInitialRoamerMon: @ 8141C94 push {r4-r7,lr} sub sp, 0x10 ldr r7, _08141CB0 @ =gEnemyParty - bl sub_80CBDB0 + bl ScrSpecial_GetStarter lsls r0, 16 lsrs r0, 16 - cmp r0, 0x1 + cmp r0, 0x1 @ SPECIES_BULBASAUR beq _08141CB4 - cmp r0, 0x4 + cmp r0, 0x4 @ SPECIES_CHARMANDER beq _08141CB8 - movs r6, 0xF3 + movs r6, 0xF3 @ SPECIES_RAIKOU b _08141CBA .align 2, 0 _08141CB0: .4byte gEnemyParty _08141CB4: - movs r6, 0xF4 + movs r6, 0xF4 @ SPECIES_ENTEI b _08141CBA _08141CB8: - movs r6, 0xF5 + movs r6, 0xF5 @ SPECIES_SUICUNE _08141CBA: movs r0, 0 str r0, [sp] @@ -133,11 +133,11 @@ _08141CBA: ldr r1, [r5] adds r1, r4 strb r0, [r1, 0x12] - ldr r5, _08141D94 @ =gUnknown_203F3AE + ldr r5, _08141D94 @ =sRoamerLocation movs r0, 0x3 strb r0, [r5] bl Random - ldr r4, _08141D98 @ =gUnknown_8466C58 + ldr r4, _08141D98 @ =sRoamerLocations lsls r0, 16 lsrs r0, 16 movs r1, 0x19 @@ -156,22 +156,22 @@ _08141CBA: .align 2, 0 _08141D8C: .4byte gSaveBlock1Ptr _08141D90: .4byte 0x000030d0 -_08141D94: .4byte gUnknown_203F3AE -_08141D98: .4byte gUnknown_8466C58 - thumb_func_end sub_8141C94 +_08141D94: .4byte sRoamerLocation +_08141D98: .4byte sRoamerLocations + thumb_func_end CreateInitialRoamerMon - thumb_func_start sub_8141D9C -sub_8141D9C: @ 8141D9C + thumb_func_start InitRoamer +InitRoamer: @ 8141D9C push {lr} - bl sub_8141C54 - bl sub_8141C94 + bl ClearRoamerData + bl CreateInitialRoamerMon pop {r0} bx r0 - thumb_func_end sub_8141D9C + thumb_func_end InitRoamer thumb_func_start UpdateLocationHistoryForRoamer UpdateLocationHistoryForRoamer: @ 8141DAC - ldr r0, _08141DCC @ =gUnknown_203F3A8 + ldr r0, _08141DCC @ =sLocationHistory ldrb r1, [r0, 0x2] strb r1, [r0, 0x4] ldrb r1, [r0, 0x3] @@ -188,7 +188,7 @@ UpdateLocationHistoryForRoamer: @ 8141DAC strb r1, [r0, 0x1] bx lr .align 2, 0 -_08141DCC: .4byte gUnknown_203F3A8 +_08141DCC: .4byte sLocationHistory _08141DD0: .4byte gSaveBlock1Ptr thumb_func_end UpdateLocationHistoryForRoamer @@ -202,10 +202,10 @@ RoamerMoveToOtherLocationSet: @ 8141DD4 ldrb r0, [r0, 0x13] cmp r0, 0 beq _08141E10 - ldr r1, _08141E20 @ =gUnknown_203F3AE + ldr r1, _08141E20 @ =sRoamerLocation movs r0, 0x3 strb r0, [r1] - ldr r5, _08141E24 @ =gUnknown_8466C58 + ldr r5, _08141E24 @ =sRoamerLocations adds r4, r1, 0 _08141DEE: bl Random @@ -230,8 +230,8 @@ _08141E10: .align 2, 0 _08141E18: .4byte gSaveBlock1Ptr _08141E1C: .4byte 0x000030d0 -_08141E20: .4byte gUnknown_203F3AE -_08141E24: .4byte gUnknown_8466C58 +_08141E20: .4byte sRoamerLocation +_08141E24: .4byte sRoamerLocations thumb_func_end RoamerMoveToOtherLocationSet thumb_func_start RoamerMove @@ -255,9 +255,9 @@ _08141E42: ldrb r0, [r0, 0x13] cmp r0, 0 beq _08141EB2 - ldr r7, _08141E9C @ =gUnknown_203F3AE + ldr r7, _08141E9C @ =sRoamerLocation _08141E52: - ldr r3, _08141EA0 @ =gUnknown_8466C58 + ldr r3, _08141EA0 @ =sRoamerLocations lsls r0, r4, 3 subs r2, r0, r4 adds r1, r2, r3 @@ -267,7 +267,7 @@ _08141E52: bne _08141EA8 adds r6, r3, 0 adds r5, r2, 0x1 - ldr r4, _08141EA4 @ =gUnknown_203F3A8 + ldr r4, _08141EA4 @ =sLocationHistory _08141E68: bl Random lsls r0, 16 @@ -293,9 +293,9 @@ _08141E8C: .align 2, 0 _08141E94: .4byte gSaveBlock1Ptr _08141E98: .4byte 0x000030d0 -_08141E9C: .4byte gUnknown_203F3AE -_08141EA0: .4byte gUnknown_8466C58 -_08141EA4: .4byte gUnknown_203F3A8 +_08141E9C: .4byte sRoamerLocation +_08141EA0: .4byte sRoamerLocations +_08141EA4: .4byte sLocationHistory _08141EA8: adds r0, r4, 0x1 lsls r0, 24 @@ -322,7 +322,7 @@ IsRoamerAt: @ 8141EB8 ldrb r0, [r0, 0x13] cmp r0, 0 beq _08141EF0 - ldr r0, _08141EEC @ =gUnknown_203F3AE + ldr r0, _08141EEC @ =sRoamerLocation ldrb r3, [r0] cmp r2, r3 bne _08141EF0 @@ -334,7 +334,7 @@ IsRoamerAt: @ 8141EB8 .align 2, 0 _08141EE4: .4byte gSaveBlock1Ptr _08141EE8: .4byte 0x000030d0 -_08141EEC: .4byte gUnknown_203F3AE +_08141EEC: .4byte sRoamerLocation _08141EF0: movs r0, 0 _08141EF2: @@ -491,18 +491,18 @@ _08142030: .4byte 0x000030d0 thumb_func_start GetRoamerLocation GetRoamerLocation: @ 8142034 - ldr r3, _08142040 @ =gUnknown_203F3AE + ldr r3, _08142040 @ =sRoamerLocation ldrb r2, [r3] strb r2, [r0] ldrb r0, [r3, 0x1] strb r0, [r1] bx lr .align 2, 0 -_08142040: .4byte gUnknown_203F3AE +_08142040: .4byte sRoamerLocation thumb_func_end GetRoamerLocation - thumb_func_start sub_8142044 -sub_8142044: @ 8142044 + thumb_func_start GetRoamerLocationMapSectionId +GetRoamerLocationMapSectionId: @ 8142044 push {lr} ldr r0, _08142064 @ =gSaveBlock1Ptr ldr r0, [r0] @@ -511,7 +511,7 @@ sub_8142044: @ 8142044 ldrb r0, [r0, 0x13] cmp r0, 0 beq _08142070 - ldr r1, _0814206C @ =gUnknown_203F3AE + ldr r1, _0814206C @ =sRoamerLocation ldrb r0, [r1] ldrb r1, [r1, 0x1] bl get_mapheader_by_bank_and_number @@ -520,12 +520,12 @@ sub_8142044: @ 8142044 .align 2, 0 _08142064: .4byte gSaveBlock1Ptr _08142068: .4byte 0x000030d0 -_0814206C: .4byte gUnknown_203F3AE +_0814206C: .4byte sRoamerLocation _08142070: movs r0, 0xC5 _08142072: pop {r1} bx r1 - thumb_func_end sub_8142044 + thumb_func_end GetRoamerLocationMapSectionId .align 2, 0 @ Don't pad with nop. diff --git a/asm/wild_pokemon_area.s b/asm/wild_pokemon_area.s index 26c908a14..71d8ac8dc 100644 --- a/asm/wild_pokemon_area.s +++ b/asm/wild_pokemon_area.s @@ -221,13 +221,13 @@ sub_813CB5C: @ 813CB5C ldr r0, _0813CBBC @ =gUnknown_84642F4 lsls r4, 2 adds r4, r0 - bl sub_80CBDB0 + bl ScrSpecial_GetStarter ldrh r1, [r4, 0x2] lsls r0, 16 lsrs r0, 16 cmp r1, r0 bne _0813CBC4 - bl sub_8142044 + bl GetRoamerLocationMapSectionId lsls r0, 16 lsrs r0, 16 movs r1, 0 diff --git a/data/data_83F5738.s b/data/data_83F5738.s index e6f026d0e..c14edc5c8 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -55,7 +55,7 @@ gUnknown_83F5BCC:: @ 83F5BCC gUnknown_83F5D1C:: @ 83F5D1C .incbin "baserom.gba", 0x3F5D1C, 0x10 -gUnknown_83F5D2C:: @ 83F5D2C +sStarterMon:: @ 83F5D2C .incbin "baserom.gba", 0x3F5D2C, 0x6 gUnknown_83F5D32:: @ 83F5D32 diff --git a/data/roamer.s b/data/roamer.s index a17d9d26b..92ef32ff3 100644 --- a/data/roamer.s +++ b/data/roamer.s @@ -1,5 +1,5 @@ .section .rodata .align 2 -gUnknown_8466C58:: @ 8466C58 +sRoamerLocations:: @ 8466C58 .incbin "baserom.gba", 0x466C58, 0xB8 diff --git a/data/specials.inc b/data/specials.inc index 56b666207..33cc5736b 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -306,7 +306,7 @@ gSpecials:: @ 815FD60 def_special ScrSpecial_AreLeadMonEVsMaxedOut def_special sub_8069740 def_special sub_8069768 - def_special sub_8141D9C + def_special InitRoamer def_special nullsub_75 def_special sub_80CA804 def_special nullsub_75 @@ -363,7 +363,7 @@ gSpecials:: @ 815FD60 def_special GetDaycarePokemonCount def_special sub_80CB63C def_special sub_80CBD80 - def_special sub_80CBDB0 + def_special ScrSpecial_GetStarter def_special sub_80CBDCC def_special sub_810C444 def_special sub_80CC7B4 diff --git a/include/constants/vars.h b/include/constants/vars.h index 886bae93c..2f817fb02 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -54,7 +54,7 @@ #define VAR_0x402F 0x402F #define VAR_0x4030 0x4030 -#define VAR_0x4031 0x4031 +#define VAR_STARTER_MON 0x4031 #define VAR_0x4032 0x4032 #define VAR_ENIGMA_BERRY_AVAILABLE 0x4033 diff --git a/sym_ewram.txt b/sym_ewram.txt index b18406af2..36b7c991c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1638,10 +1638,10 @@ gUnknown_203F3A0: @ 203F3A0 gUnknown_203F3A4: @ 203F3A4 .space 0x4 -gUnknown_203F3A8: @ 203F3A8 +sLocationHistory: @ 203F3A8 .space 0x6 -gUnknown_203F3AE: @ 203F3AE +sRoamerLocation: @ 203F3AE .space 0x2 gUnknown_203F3B0: @ 203F3B0 From 915694e8a7a5967d76bcbe544d671bb2f962f608 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 18:26:02 -0400 Subject: [PATCH 070/318] Documentation of oak_speech --- asm/battle_1.s | 2 +- asm/battle_2.s | 8 +- asm/battle_message.s | 2 +- asm/berry_pouch.s | 4 +- asm/buy_menu_helpers.s | 2 +- asm/cable_club.s | 2 +- asm/credits.s | 4 +- asm/daycare.s | 6 +- asm/field_effect.s | 4 +- asm/field_message_box.s | 6 +- asm/field_player_avatar.s | 4 +- asm/field_screen_effect.s | 2 +- asm/field_specials.s | 4 +- asm/hall_of_fame.s | 32 +- asm/help_system_812B1E0.s | 24 +- asm/intro.s | 12 +- asm/item_menu.s | 8 +- asm/item_pc.s | 6 +- asm/item_use.s | 2 +- asm/itemfinder.s | 4 +- asm/learn_move.s | 2 +- asm/link_rfu_3.s | 36 +- asm/list_menu.s | 2 +- asm/mail.s | 4 +- asm/main_menu.s | 2 +- asm/menu.s | 28 +- asm/naming_screen.s | 10 +- asm/new_menu_helpers.s | 58 +- asm/option_menu.s | 2 +- asm/overworld.s | 8 +- asm/party_menu.s | 8 +- asm/player_pc.s | 32 +- asm/pokedex_screen.s | 2 +- asm/pokemon_3.s | 6 +- asm/pokemon_special_anim.s | 2 +- asm/pokemon_storage_system.s | 18 +- asm/pokemon_summary_screen.s | 8 +- asm/reshow_battle_screen.s | 8 +- asm/script_menu.s | 6 +- asm/shop.s | 2 +- asm/start_menu.s | 18 +- asm/teachy_tv.s | 2 +- asm/title_screen.s | 2 +- asm/tm_case.s | 4 +- asm/trade.s | 2 +- asm/trainer_card.s | 8 +- asm/union_room_chat.s | 4 +- asm/unk_814BB4C.s | 14 +- asm/unk_814D5C8.s | 4 +- asm/unk_81507FC.s | 6 +- asm/wireless_communication_status_screen.s | 2 +- data/data_835B488.s | 8 +- data/data_83FECCC.s | 28 +- data/event_scripts.s | 130 +-- data/oak_speech/unk_8462A10.png | Bin 271 -> 341 bytes data/oak_speech/unk_8462B74.png | Bin 350 -> 414 bytes data/oak_speech/unk_8462D34.png | Bin 228 -> 297 bytes data/oak_speech/unk_8462E18.png | Bin 119 -> 187 bytes include/event_scripts.h | 132 ++-- include/help_system.h | 2 +- include/menu.h | 11 +- include/new_menu_helpers.h | 14 +- include/oak_speech.h | 3 +- include/pokemon_3.h | 2 +- include/text.h | 2 +- src/fame_checker.c | 6 +- src/menu2.c | 4 +- src/mevent_8145654.c | 4 +- src/oak_speech.c | 875 ++++++++++----------- src/scrcmd.c | 2 +- src/text.c | 2 +- src/trainer_tower.c | 2 +- src/vs_seeker.c | 2 +- 73 files changed, 839 insertions(+), 838 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index abaad7e85..6ae993e27 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -253,7 +253,7 @@ sub_800F380: @ 800F380 cmp r0, 0 beq _0800F3EA movs r0, 0x70 - bl sub_80F77CC + bl Menu_LoadStdPalAt movs r0, 0 movs r1, 0x30 movs r2, 0x70 diff --git a/asm/battle_2.s b/asm/battle_2.s index e5827747b..ec9fa32a3 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -45,11 +45,11 @@ _0800FDD8: cmp r1, 0 beq _0800FDFE movs r0, 0x19 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0800FE1C _0800FDFE: movs r0, 0x18 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0800FE1C _0800FE06: movs r0, 0x80 @@ -57,11 +57,11 @@ _0800FE06: cmp r1, 0 beq _0800FE16 movs r0, 0x1A - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0800FE1C _0800FE16: movs r0, 0x17 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _0800FE1C: pop {r4} pop {r0} diff --git a/asm/battle_message.s b/asm/battle_message.s index 183306f97..9505d542b 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -2863,7 +2863,7 @@ _080D894A: movs r3, 0x1 b _080D8960 _080D8958: - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r3, r0, 24 _080D8960: diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 050c42606..8b639487f 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -1974,7 +1974,7 @@ _0813DC86: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0x6 bl sub_813EA08 adds r4, r0, 0 @@ -3642,7 +3642,7 @@ sub_813EB20: @ 813EB20 bl AddWindow strb r0, [r4, 0x5] _0813EB44: - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 ldrb r1, [r4, 0x5] diff --git a/asm/buy_menu_helpers.s b/asm/buy_menu_helpers.s index 734e648b3..224bfa20c 100644 --- a/asm/buy_menu_helpers.s +++ b/asm/buy_menu_helpers.s @@ -141,7 +141,7 @@ sub_813F75C: @ 813F75C adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 str r4, [sp] diff --git a/asm/cable_club.s b/asm/cable_club.s index 45967283c..a403aa659 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -91,7 +91,7 @@ sub_80807E8: @ 80807E8 lsrs r4, 24 adds r0, r4, 0 movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame adds r0, r4, 0 movs r1, 0x3 bl CopyWindowToVram diff --git a/asm/credits.s b/asm/credits.s index bf8c5eeac..0413aac97 100644 --- a/asm/credits.s +++ b/asm/credits.s @@ -241,7 +241,7 @@ _080F3B5E: bl sub_80F3A74 bl sub_80F3AA4 movs r0, 0xF0 - bl sub_80F77CC + bl Menu_LoadStdPalAt ldr r0, _080F3BC8 @ =gPlttBufferUnfaded movs r2, 0xFF lsls r2, 1 @@ -325,7 +325,7 @@ _080F3C64: bl sub_80F3AA4 bl sub_80F3AC4 movs r0, 0xF0 - bl sub_80F77CC + bl Menu_LoadStdPalAt ldr r0, _080F3C8C @ =gPlttBufferUnfaded movs r2, 0xFF lsls r2, 1 diff --git a/asm/daycare.s b/asm/daycare.s index 3b7d7ffe0..c19aa1bdf 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -3011,7 +3011,7 @@ _08046A46: bl sub_810713C ldrb r0, [r4, 0xA] movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r4, 0xA] bl RemoveWindow adds r0, r5, 0 @@ -3035,7 +3035,7 @@ _08046A7C: bl sub_810713C ldrb r0, [r4, 0xA] movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r4, 0xA] bl RemoveWindow adds r0, r5, 0 @@ -3060,7 +3060,7 @@ ShowDaycareLevelMenu: @ 8046AB8 lsrs r4, 24 adds r0, r4, 0 movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame mov r1, sp ldr r0, _08046B1C @ =gUnknown_825F814 ldm r0!, {r2,r3,r5} diff --git a/asm/field_effect.s b/asm/field_effect.s index 5aa0772dd..785e36266 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -2542,7 +2542,7 @@ sub_8084708: @ 8084708 movs r0, 0x8 bl SetPlayerAvatarTransitionFlags movs r0, 0x16 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _08084760: ldr r0, _08084780 @ =sub_8084484 bl FindTaskIdByFunc @@ -7213,7 +7213,7 @@ sub_8086B30: @ 8086B30 lsrs r0, 24 bl DestroyTask movs r0, 0x16 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _08086B96: pop {r4,r5} pop {r0} diff --git a/asm/field_message_box.s b/asm/field_message_box.s index 78a5f8c8c..46f4c3f8e 100644 --- a/asm/field_message_box.s +++ b/asm/field_message_box.s @@ -83,7 +83,7 @@ _080693D4: _080693DA: movs r0, 0 movs r1, 0x1 - bl sub_80F6EE4 + bl DrawDialogueFrame _080693E2: ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -250,7 +250,7 @@ HideFieldMessageBox: @ 80694F4 bl task_del_textbox movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame ldr r1, _0806950C @ =gUnknown_203709C movs r0, 0 strb r0, [r1] @@ -293,7 +293,7 @@ sub_8069538: @ 8069538 bl task_del_textbox movs r0, 0 movs r1, 0x1 - bl sub_80F6F1C + bl DrawStdWindowFrame ldr r1, _08069550 @ =gUnknown_203709C movs r0, 0 strb r0, [r1] diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index df2588587..b7824ee84 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -4769,7 +4769,7 @@ _0805D748: strh r6, [r0, 0x26] movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame ldrh r0, [r5, 0xA] adds r0, 0x1 strh r0, [r5, 0xA] @@ -5043,7 +5043,7 @@ sub_805D980: @ 805D980 bl UnfreezeMapObjects movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame ldr r0, _0805D9C0 @ =sub_805D304 bl FindTaskIdByFunc lsls r0, 24 diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s index 734c7495d..24ca7a19a 100644 --- a/asm/field_screen_effect.s +++ b/asm/field_screen_effect.s @@ -869,7 +869,7 @@ _0807F4A8: adds r7, r0, r1 strh r5, [r7, 0xA] movs r0, 0xF0 - bl sub_80F77CC + bl Menu_LoadStdPalAt adds r0, r5, 0 movs r1, 0 bl FillWindowPixelBuffer diff --git a/asm/field_specials.s b/asm/field_specials.s index 8e24bedbf..e930a2ee7 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -3078,7 +3078,7 @@ _080CBD7C: .4byte gTasks sub_80CBD80: @ 80CBD80 push {lr} movs r0, 0x16 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 movs r0, 0x8 bl SetPlayerAvatarTransitionFlags pop {r0} @@ -5542,7 +5542,7 @@ sub_80CD098: @ 80CD098 str r3, [sp] movs r0, 0 movs r3, 0 - bl sub_8006300 + bl CreateTextCursorSpriteForOakSpeech ldr r1, _080CD0DC @ =gUnknown_2039A1B strb r0, [r1] b _080CD0E8 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 5aa8a055c..c74165999 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -508,7 +508,7 @@ _080F21B2: bl memcpy movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r2, _080F2214 @ =gUnknown_8419F54 movs r0, 0 str r0, [sp] @@ -723,7 +723,7 @@ _080F22F2: strh r0, [r1] movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame adds r4, r5 ldr r0, _080F239C @ =sub_80F23A0 str r0, [r4] @@ -1265,7 +1265,7 @@ _080F27AC: bl sub_80F33DC movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r2, _080F27FC @ =gUnknown_84160C8 str r5, [sp] movs r0, 0x2 @@ -1607,7 +1607,7 @@ sub_80F2AA4: @ 80F2AA4 movs r1, 0x1E movs r2, 0 movs r3, 0xC - bl sub_810F558 + bl CreateWindow_SnapRight_StdPal movs r0, 0x3 bl Save_LoadGameData lsls r0, 24 @@ -1888,13 +1888,13 @@ _080F2CB4: ldrsh r0, [r4, r1] cmp r0, 0 bgt _080F2D24 - ldr r1, _080F2D20 @ =gUnknown_8415D78 + ldr r1, _080F2D20 @ =gText_UPDOWNPick_ABUTTONBBUTTONCancel movs r0, 0x1 str r0, [sp] adds r0, r5, 0 movs r2, 0 movs r3, 0 - bl sub_810F650 + bl Menu_PrintHelpSystemUIHeader b _080F2D34 .align 2, 0 _080F2D08: .4byte 0xffff0000 @@ -1903,15 +1903,15 @@ _080F2D10: .4byte gStringVar1 _080F2D14: .4byte gTasks _080F2D18: .4byte gStringVar4 _080F2D1C: .4byte gUnknown_84160B4 -_080F2D20: .4byte gUnknown_8415D78 +_080F2D20: .4byte gText_UPDOWNPick_ABUTTONBBUTTONCancel _080F2D24: - ldr r1, _080F2D54 @ =gUnknown_8415D60 + ldr r1, _080F2D54 @ =gText_UPDOWNPick_ABUTTONNext_BBUTTONBack movs r0, 0x1 str r0, [sp] adds r0, r5, 0 movs r2, 0 movs r3, 0 - bl sub_810F650 + bl Menu_PrintHelpSystemUIHeader _080F2D34: ldr r0, _080F2D58 @ =gTasks ldr r1, [sp, 0x14] @@ -1929,7 +1929,7 @@ _080F2D34: pop {r0} bx r0 .align 2, 0 -_080F2D54: .4byte gUnknown_8415D60 +_080F2D54: .4byte gText_UPDOWNPick_ABUTTONNext_BBUTTONBack _080F2D58: .4byte gTasks _080F2D5C: .4byte Task_HofPC_PrintMonInfo thumb_func_end sub_80F2B6C @@ -2339,13 +2339,13 @@ sub_80F30A4: @ 80F30A4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080F30FC @ =gUnknown_8415D8C + ldr r0, _080F30FC @ =gText_ABUTTONExit movs r1, 0x8 movs r2, 0x1 - bl sub_810F5E8 + bl PrintTextOnRightSnappedWindow movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r2, _080F3100 @ =gUnknown_8416090 movs r0, 0 str r0, [sp] @@ -2374,7 +2374,7 @@ sub_80F30A4: @ 80F30A4 pop {r0} bx r0 .align 2, 0 -_080F30FC: .4byte gUnknown_8415D8C +_080F30FC: .4byte gText_ABUTTONExit _080F3100: .4byte gUnknown_8416090 _080F3104: .4byte gTasks _080F3108: .4byte Task_HofPC_ExitOnButtonPress @@ -3223,8 +3223,8 @@ _080F37C8: bl CopyBgTilemapBufferToVram b _080F3854 _080F381E: - bl sub_80F6C6C - bl sub_80F6C98 + bl InitStandardTextBoxWindows + bl ResetBg0 b _080F3854 _080F3828: movs r1, 0x82 diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s index bca296e67..b88a86b47 100644 --- a/asm/help_system_812B1E0.s +++ b/asm/help_system_812B1E0.s @@ -16,8 +16,8 @@ sub_812B1E0: @ 812B1E0 _0812B1EC: .4byte gUnknown_203B0EC thumb_func_end sub_812B1E0 - thumb_func_start sub_812B1F0 -sub_812B1F0: @ 812B1F0 + thumb_func_start HelpSystem_SetSomeVariable2 +HelpSystem_SetSomeVariable2: @ 812B1F0 push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -44,7 +44,7 @@ _0812B218: bx r0 .align 2, 0 _0812B21C: .4byte gUnknown_203B0EC - thumb_func_end sub_812B1F0 + thumb_func_end HelpSystem_SetSomeVariable2 thumb_func_start sub_812B220 sub_812B220: @ 812B220 @@ -240,7 +240,7 @@ sub_812B35C: @ 812B35C cmp r0, 0 beq _0812B376 movs r0, 0x16 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 _0812B376: bl sub_812B2C4 @@ -248,7 +248,7 @@ _0812B376: cmp r0, 0 beq _0812B388 movs r0, 0x15 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 _0812B388: ldr r0, _0812B3B0 @ =gMapHeader @@ -268,7 +268,7 @@ _0812B388: bne _0812B3B8 _0812B3A8: movs r0, 0xE - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 .align 2, 0 _0812B3B0: .4byte gMapHeader @@ -279,36 +279,36 @@ _0812B3B8: cmp r1, r0 bne _0812B3C8 movs r0, 0xF - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 _0812B3C8: bl IsCurMapPokeCenter cmp r0, 0x1 bne _0812B3D8 movs r0, 0x10 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 _0812B3D8: bl sub_812B25C cmp r0, 0x1 bne _0812B3E8 movs r0, 0x11 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 _0812B3E8: bl sub_812B26C cmp r0, 0x1 bne _0812B3F8 movs r0, 0x12 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 _0812B3F8: movs r0, 0x13 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0812B406 _0812B400: movs r0, 0x14 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _0812B406: pop {r0} bx r0 diff --git a/asm/intro.s b/asm/intro.s index fd430031e..309b636c8 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -898,7 +898,7 @@ _080ECCF6: movs r1, 0x10 movs r2, 0x10 movs r3, 0 - bl OakSpeech_StartBlendTask + bl StartBlendTask b _080ECD36 .align 2, 0 _080ECD14: .4byte 0x00003f44 @@ -907,7 +907,7 @@ _080ECD18: bl ShowBg b _080ECD36 _080ECD20: - bl OakSpeech_IsBlendTaskActive + bl IsBlendTaskActive lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 @@ -980,7 +980,7 @@ _080ECD9C: movs r1, 0x10 movs r2, 0x10 movs r3, 0 - bl OakSpeech_StartBlendTask + bl StartBlendTask strh r4, [r6, 0x8] strh r5, [r6, 0xA] strh r4, [r6, 0x12] @@ -992,7 +992,7 @@ _080ECDC4: str r0, [r6, 0x14] b _080ECE70 _080ECDCC: - bl OakSpeech_IsBlendTaskActive + bl IsBlendTaskActive lsls r0, 24 cmp r0, 0 bne _080ECE96 @@ -1051,10 +1051,10 @@ _080ECE26: movs r1, 0 movs r2, 0 movs r3, 0x10 - bl OakSpeech_StartBlendTask + bl StartBlendTask b _080ECE70 _080ECE52: - bl OakSpeech_IsBlendTaskActive + bl IsBlendTaskActive lsls r0, 24 cmp r0, 0 bne _080ECE96 diff --git a/asm/item_menu.s b/asm/item_menu.s index 4f753d49e..dcc74bafd 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -400,13 +400,13 @@ _081080DE: cmp r0, 0x3 bne _081080F4 movs r0, 0x1D - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _081080FA .align 2, 0 _081080F0: .4byte gUnknown_203ACFC _081080F4: movs r0, 0x9 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _081080FA: ldr r2, _08108114 @ =gPaletteFade ldrb r1, [r2, 0x8] @@ -2177,7 +2177,7 @@ sub_8108E70: @ 8108E70 strh r0, [r4, 0x14] movs r1, 0x11 bl FillWindowPixelBuffer - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 ldrb r1, [r4, 0x14] @@ -3715,7 +3715,7 @@ _08109AD4: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0x6 movs r1, 0 bl sub_810B9DC diff --git a/asm/item_pc.s b/asm/item_pc.s index 9d7c3af52..f4a4176d9 100644 --- a/asm/item_pc.s +++ b/asm/item_pc.s @@ -257,7 +257,7 @@ _0810D608: b _0810D674 _0810D60E: movs r0, 0x1D - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0810D674 _0810D616: ldr r0, _0810D62C @ =gUnknown_203ADCC @@ -1880,7 +1880,7 @@ sub_810E274: @ 810E274 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow ldrh r0, [r6, 0x2] bl sub_810DD68 lsls r0, 16 @@ -2884,7 +2884,7 @@ sub_810EB30: @ 810EB30 adds r6, r2, 0 lsls r4, 24 lsrs r4, 24 - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 movs r2, 0xEB diff --git a/asm/item_use.s b/asm/item_use.s index fce57bc88..2b425dec2 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -203,7 +203,7 @@ sub_80A112C: @ 80A112C lsrs r4, 24 movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame adds r0, r4, 0 bl DestroyTask bl sub_80696C0 diff --git a/asm/itemfinder.s b/asm/itemfinder.s index bf3e78ebc..e510252ab 100644 --- a/asm/itemfinder.s +++ b/asm/itemfinder.s @@ -81,7 +81,7 @@ sub_813ED18: @ 813ED18 lsrs r4, 24 movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame bl sub_80696C0 bl ScriptContext2_Disable adds r0, r4, 0 @@ -970,7 +970,7 @@ sub_813F380: @ 813F380 bl sub_813F3FC movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame bl sub_80696C0 bl ScriptContext2_Disable adds r0, r4, 0 diff --git a/asm/learn_move.s b/asm/learn_move.s index 5068e6d16..fbb31d196 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -296,7 +296,7 @@ sub_80E48C0: @ 80E48C0 ldr r4, _080E48F0 @ =gStringVar4 adds r0, r4, 0 bl StringExpandPlaceholders - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 str r0, [sp] diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 01e93a41d..514e386ed 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -401,7 +401,7 @@ _08115B5C: bl CopyWindowToVram ldrb r0, [r5, 0xF] movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldr r0, _08115C58 @ =gUnknown_3005E70 adds r2, r0, 0 ldr r1, _08115C5C @ =gUnknown_8456D34 @@ -417,7 +417,7 @@ _08115B5C: strb r0, [r5, 0x12] ldrb r0, [r5, 0x11] movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldrb r0, [r5, 0x11] bl PutWindowTilemap ldrb r0, [r5, 0x11] @@ -1135,7 +1135,7 @@ sub_81161E4: @ 81161E4 bl ClearWindowTilemap ldrb r0, [r4, 0x11] movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r4, 0x12] movs r1, 0 movs r2, 0 @@ -1144,7 +1144,7 @@ sub_81161E4: @ 81161E4 bl ClearWindowTilemap ldrb r0, [r4, 0xF] movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame movs r0, 0 bl CopyBgTilemapBufferToVram ldrb r0, [r4, 0x11] @@ -1919,7 +1919,7 @@ _08116838: bl CopyWindowToVram ldrb r0, [r6, 0xB] movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldr r0, _081168FC @ =gUnknown_3005E70 adds r2, r0, 0 ldr r1, _08116900 @ =gUnknown_8456DDC @@ -1935,7 +1935,7 @@ _08116838: strb r0, [r6, 0xE] ldrb r0, [r6, 0xD] movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldrb r0, [r6, 0xD] bl PutWindowTilemap ldrb r0, [r6, 0xD] @@ -2318,7 +2318,7 @@ _08116C10: bl ClearWindowTilemap ldrb r0, [r6, 0xD] movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r6, 0xE] movs r1, 0 movs r2, 0 @@ -2327,7 +2327,7 @@ _08116C10: bl ClearWindowTilemap ldrb r0, [r6, 0xB] movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame movs r0, 0 bl CopyBgTilemapBufferToVram ldrb r0, [r6, 0xD] @@ -8485,7 +8485,7 @@ sub_811A0B4: @ 811A0B4 bl sub_80F6E9C movs r0, 0 movs r1, 0x1 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r0, _0811A0DC @ =gStringVar4 adds r1, r4, 0 bl StringExpandPlaceholders @@ -8531,7 +8531,7 @@ _0811A10A: bl sub_80F6E9C movs r0, 0 movs r1, 0x1 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r0, _0811A12C @ =gStringVar4 adds r1, r5, 0 bl StringExpandPlaceholders @@ -8624,7 +8624,7 @@ sub_811A1AC: @ 811A1AC lsrs r4, 24 adds r0, r4, 0 movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame adds r0, r4, 0 movs r1, 0xFF bl FillWindowPixelBuffer @@ -8659,7 +8659,7 @@ sub_811A1FC: @ 811A1FC lsrs r4, 24 adds r0, r4, 0 movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame adds r0, r4, 0 bl RemoveWindow pop {r4} @@ -8688,7 +8688,7 @@ _0811A234: strb r0, [r5] ldrb r0, [r5] movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldr r0, _0811A270 @ =gUnknown_3005E70 adds r2, r0, 0 ldr r1, [sp, 0x1C] @@ -8729,7 +8729,7 @@ _0811A274: bl sub_810713C ldrb r0, [r5] movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r5] bl RemoveWindow movs r0, 0 @@ -8750,7 +8750,7 @@ _0811A2B0: bl sub_810713C ldrb r0, [r5] movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r5] bl RemoveWindow strb r4, [r7] @@ -8794,7 +8794,7 @@ _0811A308: strb r0, [r4] ldrb r0, [r4] movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldr r0, _0811A354 @ =gUnknown_3005E70 adds r2, r0, 0 ldr r1, [sp, 0x20] @@ -8845,7 +8845,7 @@ _0811A37E: bl sub_810713C ldrb r0, [r4] movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r4] bl RemoveWindow ldrb r0, [r7] @@ -8870,7 +8870,7 @@ _0811A3AC: bl sub_810713C ldrb r0, [r4] movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r4] bl RemoveWindow ldrb r0, [r7] diff --git a/asm/list_menu.s b/asm/list_menu.s index 3475b0914..f0a609fcd 100644 --- a/asm/list_menu.s +++ b/asm/list_menu.s @@ -126,7 +126,7 @@ _08106FA8: bgt _08106FBA ldrb r0, [r5, 0x5] movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame _08106FBA: ldr r0, _08106FC8 @ =gUnknown_203ACF4 ldrb r0, [r0, 0x5] diff --git a/asm/mail.s b/asm/mail.s index 2631754c3..dac4bf6f8 100644 --- a/asm/mail.s +++ b/asm/mail.s @@ -209,13 +209,13 @@ _080BED8C: cmp r0, 0 bne _080BEDB4 movs r0, 0x22 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080BF0F4 .align 2, 0 _080BEDB0: .4byte gUnknown_203AAC4 _080BEDB4: movs r0, 0x1E - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080BF0F4 _080BEDBC: add r1, sp, 0x8 diff --git a/asm/main_menu.s b/asm/main_menu.s index fa9e7ef20..b170db136 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -983,7 +983,7 @@ _0800CB2E: bl FreeAllWindowBuffers adds r0, r6, 0 bl DestroyTask - bl sub_812EB2C + bl StartNewGameScene b _0800CB84 .align 2, 0 _0800CB44: .4byte gUnknown_2031DE0 diff --git a/asm/menu.s b/asm/menu.s index e593eef1c..a6d3d183b 100644 --- a/asm/menu.s +++ b/asm/menu.s @@ -933,8 +933,8 @@ sub_810F510: @ 810F510 bx r0 thumb_func_end sub_810F510 - thumb_func_start sub_810F558 -sub_810F558: @ 810F558 + thumb_func_start CreateWindow_SnapRight_StdPal +CreateWindow_SnapRight_StdPal: @ 810F558 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1005,10 +1005,10 @@ _0810F5C4: bx r1 .align 2, 0 _0810F5E4: .4byte gUnknown_203ADF4 - thumb_func_end sub_810F558 + thumb_func_end CreateWindow_SnapRight_StdPal - thumb_func_start sub_810F5E8 -sub_810F5E8: @ 810F5E8 + thumb_func_start PrintTextOnRightSnappedWindow +PrintTextOnRightSnappedWindow: @ 810F5E8 push {r4-r6,lr} sub sp, 0xC adds r5, r0, 0 @@ -1055,10 +1055,10 @@ _0810F63E: .align 2, 0 _0810F648: .4byte gUnknown_203ADF4 _0810F64C: .4byte gUnknown_8456618 - thumb_func_end sub_810F5E8 + thumb_func_end PrintTextOnRightSnappedWindow - thumb_func_start sub_810F650 -sub_810F650: @ 810F650 + thumb_func_start Menu_PrintHelpSystemUIHeader +Menu_PrintHelpSystemUIHeader: @ 810F650 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1145,7 +1145,7 @@ _0810F6F6: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_810F650 + thumb_func_end Menu_PrintHelpSystemUIHeader thumb_func_start sub_810F704 sub_810F704: @ 810F704 @@ -1264,8 +1264,8 @@ _0810F7BE: _0810F7D4: .4byte gUnknown_203ADE4 thumb_func_end sub_810F774 - thumb_func_start sub_810F7D8 -sub_810F7D8: @ 810F7D8 + thumb_func_start ProgramAndPlaceMenuCursorOnWindow +ProgramAndPlaceMenuCursorOnWindow: @ 810F7D8 push {r4-r6,lr} sub sp, 0x10 ldr r4, [sp, 0x20] @@ -1297,7 +1297,7 @@ sub_810F7D8: @ 810F7D8 pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_810F7D8 + thumb_func_end ProgramAndPlaceMenuCursorOnWindow thumb_func_start sub_810F818 sub_810F818: @ 810F818 @@ -1336,7 +1336,7 @@ sub_810F818: @ 810F818 adds r1, r6, 0 ldr r2, [sp, 0xC] ldr r3, [sp, 0x10] - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow lsls r0, 24 lsrs r0, 24 add sp, 0x14 @@ -2410,7 +2410,7 @@ sub_810FF60: @ 810FF60 adds r1, r6, 0 mov r2, r8 mov r3, r9 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow add sp, 0x1C pop {r3-r5} mov r8, r3 diff --git a/asm/naming_screen.s b/asm/naming_screen.s index b3c9d1f73..01217d92f 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -401,8 +401,8 @@ _0809DBD6: movs r1, 0 movs r2, 0 bl ChangeBgY - bl sub_80F6C6C - bl sub_80F6C98 + bl InitStandardTextBoxWindows + bl ResetBg0 _0809DCA4: lsls r0, r4, 3 ldr r1, _0809DD50 @ =gUnknown_83E22A0 @@ -493,7 +493,7 @@ sub_809DD60: @ 809DD60 bl SetMainCallback2 bl sub_812B234 movs r0, 0x3 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 pop {r0} bx r0 .align 2, 0 @@ -959,13 +959,13 @@ _0809E156: bl StringExpandPlaceholders movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r2, _0809E1D0 @ =gTextFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s index b3844a165..bf2578249 100644 --- a/asm/new_menu_helpers.s +++ b/asm/new_menu_helpers.s @@ -672,8 +672,8 @@ sub_80F6C14: @ 80F6C14 bx r0 thumb_func_end sub_80F6C14 - thumb_func_start sub_80F6C6C -sub_80F6C6C: @ 80F6C6C + thumb_func_start InitStandardTextBoxWindows +InitStandardTextBoxWindows: @ 80F6C6C push {lr} ldr r0, _080F6C84 @ =gUnknown_841F42C bl InitWindows @@ -686,7 +686,7 @@ sub_80F6C6C: @ 80F6C6C .align 2, 0 _080F6C84: .4byte gUnknown_841F42C _080F6C88: .4byte gUnknown_203ABE0 - thumb_func_end sub_80F6C6C + thumb_func_end InitStandardTextBoxWindows thumb_func_start sub_80F6C8C sub_80F6C8C: @ 80F6C8C @@ -696,8 +696,8 @@ sub_80F6C8C: @ 80F6C8C bx r0 thumb_func_end sub_80F6C8C - thumb_func_start sub_80F6C98 -sub_80F6C98: @ 80F6C98 + thumb_func_start ResetBg0 +ResetBg0: @ 80F6C98 push {lr} movs r0, 0 movs r1, 0 @@ -711,7 +711,7 @@ sub_80F6C98: @ 80F6C98 bl sub_80F6E9C pop {r0} bx r0 - thumb_func_end sub_80F6C98 + thumb_func_end ResetBg0 thumb_func_start sub_80F6CBC sub_80F6CBC: @ 80F6CBC @@ -819,7 +819,7 @@ sub_80F6D5C: @ 80F6D5C lsrs r0, 24 cmp r0, 0 bne _080F6DB0 - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -840,7 +840,7 @@ _080F6DAC: .4byte gStringVar4 _080F6DB0: cmp r0, 0x1 bne _080F6DDC - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -858,7 +858,7 @@ _080F6DB0: .align 2, 0 _080F6DD8: .4byte gStringVar4 _080F6DDC: - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -896,7 +896,7 @@ sub_80F6E08: @ 80F6E08 ands r1, r2 orrs r1, r0 strb r1, [r3] - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -995,8 +995,8 @@ _080F6ED4: bx r0 thumb_func_end sub_80F6E9C - thumb_func_start sub_80F6EE4 -sub_80F6EE4: @ 80F6EE4 + thumb_func_start DrawDialogueFrame +DrawDialogueFrame: @ 80F6EE4 push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 @@ -1022,10 +1022,10 @@ _080F6F12: bx r0 .align 2, 0 _080F6F18: .4byte sub_80F7124 - thumb_func_end sub_80F6EE4 + thumb_func_end DrawDialogueFrame - thumb_func_start sub_80F6F1C -sub_80F6F1C: @ 80F6F1C + thumb_func_start DrawStdWindowFrame +DrawStdWindowFrame: @ 80F6F1C push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 @@ -1051,10 +1051,10 @@ _080F6F4A: bx r0 .align 2, 0 _080F6F50: .4byte sub_80F6FD4 - thumb_func_end sub_80F6F1C + thumb_func_end DrawStdWindowFrame - thumb_func_start sub_80F6F54 -sub_80F6F54: @ 80F6F54 + thumb_func_start ClearDialogWindowAndFrame +ClearDialogWindowAndFrame: @ 80F6F54 push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 @@ -1087,10 +1087,10 @@ _080F6F8E: .align 2, 0 _080F6F94: .4byte sub_80F76CC _080F6F98: .4byte gUnknown_203ADFA - thumb_func_end sub_80F6F54 + thumb_func_end ClearDialogWindowAndFrame - thumb_func_start sub_80F6F9C -sub_80F6F9C: @ 80F6F9C + thumb_func_start ClearStdWindowAndFrame +ClearStdWindowAndFrame: @ 80F6F9C push {r4,r5,lr} adds r4, r1, 0 lsls r0, 24 @@ -1116,7 +1116,7 @@ _080F6FCA: bx r0 .align 2, 0 _080F6FD0: .4byte sub_80F7684 - thumb_func_end sub_80F6F9C + thumb_func_end ClearStdWindowAndFrame thumb_func_start sub_80F6FD4 sub_80F6FD4: @ 80F6FD4 @@ -2059,8 +2059,8 @@ sub_80F77B8: @ 80F77B8 _080F77C8: .4byte gUnknown_841F408 thumb_func_end sub_80F77B8 - thumb_func_start sub_80F77CC -sub_80F77CC: @ 80F77CC + thumb_func_start Menu_LoadStdPalAt +Menu_LoadStdPalAt: @ 80F77CC push {lr} adds r1, r0, 0 lsls r1, 16 @@ -2072,7 +2072,7 @@ sub_80F77CC: @ 80F77CC bx r0 .align 2, 0 _080F77E0: .4byte gUnknown_841F408 - thumb_func_end sub_80F77CC + thumb_func_end Menu_LoadStdPalAt thumb_func_start sub_80F77E4 sub_80F77E4: @ 80F77E4 @@ -2116,7 +2116,7 @@ DisplayItemMessageOnField: @ 80F7808 lsls r4, 24 lsrs r4, 24 bl sub_80F6E9C - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 movs r2, 0x80 @@ -2187,8 +2187,8 @@ sub_80F7880: @ 80F7880 _080F78A4: .4byte gUnknown_841F43C thumb_func_end sub_80F7880 - thumb_func_start sub_80F78A8 -sub_80F78A8: @ 80F78A8 + thumb_func_start GetTextSpeedSetting +GetTextSpeedSetting: @ 80F78A8 push {lr} ldr r3, _080F78D8 @ =gSaveBlock2Ptr ldr r2, [r3] @@ -2216,7 +2216,7 @@ _080F78C4: .align 2, 0 _080F78D8: .4byte gSaveBlock2Ptr _080F78DC: .4byte gUnknown_841F428 - thumb_func_end sub_80F78A8 + thumb_func_end GetTextSpeedSetting thumb_func_start sub_80F78E0 sub_80F78E0: @ 80F78E0 diff --git a/asm/option_menu.s b/asm/option_menu.s index dc175eefd..cff6f1f25 100644 --- a/asm/option_menu.s +++ b/asm/option_menu.s @@ -93,7 +93,7 @@ _080883FA: cmp r3, 0x5 bls _080883E6 movs r0, 0xD - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 ldr r0, _0808842C @ =sub_8088454 bl SetMainCallback2 pop {r4-r6} diff --git a/asm/overworld.s b/asm/overworld.s index 526b9f298..e44855b46 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3117,8 +3117,8 @@ sub_80562B0: @ 80562B0 ldr r1, [r5] movs r0, 0x3 bl SetBgTilemapBuffer - bl sub_80F6C6C - bl sub_80F6C98 + bl InitStandardTextBoxWindows + bl ResetBg0 bl sub_8069348 pop {r3} mov r8, r3 @@ -3181,8 +3181,8 @@ sub_8056354: @ 8056354 ldr r1, [r5] movs r0, 0x3 bl SetBgTilemapBuffer - bl sub_80F6C6C - bl sub_80F6C98 + bl InitStandardTextBoxWindows + bl ResetBg0 bl sub_8069348 pop {r3} mov r8, r3 diff --git a/asm/party_menu.s b/asm/party_menu.s index be2f0246c..085d0da85 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -420,7 +420,7 @@ _0811ED96: _0811EDA8: .4byte gUnknown_203B09C _0811EDAC: movs r0, 0x5 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _0811EDFC _0811EDB4: ldr r4, _0811EDCC @ =gUnknown_203B09C @@ -6888,7 +6888,7 @@ sub_8121FC0: @ 8121FC0 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -6990,7 +6990,7 @@ sub_8122084: @ 8122084 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -13684,7 +13684,7 @@ _08125680: mov r1, r8 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0x2 bl schedule_bg_copy_tilemap_to_vram add sp, 0x10 diff --git a/asm/player_pc.s b/asm/player_pc.s index 4fea7bea1..6d998daaa 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -187,7 +187,7 @@ _080EB77E: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0 bl schedule_bg_copy_tilemap_to_vram ldr r1, _080EB814 @ =gTasks @@ -361,11 +361,11 @@ _080EB940: cmp r0, 0 bne _080EB95C movs r0, 0x22 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080EB962 _080EB95C: movs r0, 0x1E - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _080EB962: ldr r0, _080EB990 @ =gUnknown_203AAC4 ldrb r0, [r0, 0x5] @@ -376,7 +376,7 @@ _080EB962: bne _080EB99C movs r0, 0 movs r1, 0 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame adds r0, r5, 0 bl sub_80EBEB0 ldr r0, _080EB994 @ =gTasks @@ -449,14 +449,14 @@ sub_80EB9E8: @ 80EB9E8 cmp r0, 0 bne _080EBA18 movs r0, 0x21 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080EBA1E .align 2, 0 _080EBA10: .4byte gTasks+0x8 _080EBA14: .4byte gUnknown_203AAC4 _080EBA18: movs r0, 0x1D - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _080EBA1E: ldr r0, _080EBA80 @ =gUnknown_8402258 bl AddWindow @@ -488,7 +488,7 @@ _080EBA1E: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0 bl schedule_bg_copy_tilemap_to_vram ldr r1, _080EBA88 @ =gUnknown_84021DC @@ -513,7 +513,7 @@ sub_80EBA8C: @ 80EBA8C adds r4, r0, 0 movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame movs r0, 0x1 str r0, [sp] movs r0, 0 @@ -702,7 +702,7 @@ sub_80EBC0C: @ 80EBC0C bl sub_80F6E9C movs r0, 0 movs r1, 0x1 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r0, _080EBC34 @ =sub_80EBBDC movs r1, 0 bl CreateTask @@ -777,7 +777,7 @@ sub_80EBCAC: @ 80EBCAC bl sub_80F6E9C movs r0, 0 movs r1, 0x1 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r0, _080EBCD4 @ =sub_80EBBDC movs r1, 0 bl CreateTask @@ -1341,7 +1341,7 @@ sub_80EC0D8: @ 80EC0D8 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0 bl schedule_bg_copy_tilemap_to_vram ldr r1, _080EC154 @ =gTasks @@ -1503,13 +1503,13 @@ sub_80EC260: @ 80EC260 cmp r0, 0 bne _080EC278 movs r0, 0x22 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080EC27E .align 2, 0 _080EC274: .4byte gUnknown_203AAC4 _080EC278: movs r0, 0x1E - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _080EC27E: bl sub_80F6E9C ldr r0, _080EC2A8 @ =sub_80EC230 @@ -1773,13 +1773,13 @@ sub_80EC474: @ 80EC474 cmp r0, 0 bne _080EC48C movs r0, 0x22 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080EC492 .align 2, 0 _080EC488: .4byte gUnknown_203AAC4 _080EC48C: movs r0, 0x1E - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _080EC492: ldr r0, _080EC4E8 @ =sub_80EC230 movs r1, 0 @@ -1871,7 +1871,7 @@ sub_80EC53C: @ 80EC53C lsrs r4, 24 movs r0, 0 movs r1, 0 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame adds r0, r4, 0 bl sub_80EBEB0 movs r0, 0 diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index ce2d3fa75..bd18d2e76 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -309,7 +309,7 @@ sub_810275C: @ 810275C ldr r0, _08102794 @ =sub_81024D4 bl SetMainCallback2 movs r0, 0x4 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 pop {r0} bx r0 .align 2, 0 diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s index 0d4ee1bcb..416c996bb 100644 --- a/asm/pokemon_3.s +++ b/asm/pokemon_3.s @@ -785,8 +785,8 @@ _08044AE8: .4byte gUnknown_825E05C _08044AEC: .4byte gUnknown_82349BC thumb_func_end sub_8044A40 - thumb_func_start sub_8044AF0 -sub_8044AF0: @ 8044AF0 + thumb_func_start SetUpMonSpriteManagerMaybe +SetUpMonSpriteManagerMaybe: @ 8044AF0 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1124,7 +1124,7 @@ _08044D70: bx r1 .align 2, 0 _08044D7C: .4byte gUnknown_20244F4 - thumb_func_end sub_8044AF0 + thumb_func_end SetUpMonSpriteManagerMaybe thumb_func_start sub_8044D80 sub_8044D80: @ 8044D80 diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s index a5e8ba21b..33f64b00b 100644 --- a/asm/pokemon_special_anim.s +++ b/asm/pokemon_special_anim.s @@ -1727,7 +1727,7 @@ sub_811D2EC: @ 811D2EC lsrs r7, r0, 16 movs r0, 0 mov r8, r0 - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 mov r9, r0 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index d656ad188..826e2f9e4 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1412,7 +1412,7 @@ _0808C3CC: .4byte _0808C680 _0808C3E0: movs r0, 0x1C - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 ldrb r0, [r5, 0xA] adds r1, r5, 0 adds r1, 0x26 @@ -1420,7 +1420,7 @@ _0808C3E0: bl sub_80F6E9C movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame movs r0, 0 movs r1, 0x11 bl FillWindowPixelBuffer @@ -1557,12 +1557,12 @@ _0808C508: .4byte gUnknown_83CDA20 _0808C50C: movs r0, 0 movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrh r0, [r5, 0x26] lsls r0, 24 lsrs r0, 24 movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame bl ScriptContext2_Disable bl EnableBothScriptContexts adds r0, r4, 0 @@ -1833,7 +1833,7 @@ sub_808C72C: @ 808C72C lsrs r4, 24 adds r0, r4, 0 movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame movs r0, 0x2 movs r1, 0 bl GetMenuCursorDimensionByFont @@ -1861,7 +1861,7 @@ sub_808C72C: @ 808C72C movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow mov r0, r10 strh r5, [r0] add sp, 0xC @@ -2716,7 +2716,7 @@ _0808CE18: ldr r1, [r4] strb r0, [r1, 0x4] movs r0, 0x1C - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 bl StorageGetCurrentBox ldr r1, _0808CE58 @ =gUnknown_20397B8 strb r0, [r1] @@ -2767,7 +2767,7 @@ _0808CE8C: ldr r1, [r4] strb r0, [r1, 0x4] movs r0, 0x1C - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 ldr r0, _0808CEC4 @ =c2_Box bl SetMainCallback2 _0808CEB6: @@ -18961,7 +18961,7 @@ sub_8094E88: @ 8094E88 movs r1, 0x1 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0 bl schedule_bg_copy_tilemap_to_vram ldr r0, [r5] diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 3d0c545ef..385e5fb84 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -107,7 +107,7 @@ _081345D0: beq _08134604 _081345D4: movs r0, 0x6 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 ldr r2, _081345F8 @ =gUnknown_203B140 ldr r0, [r2] ldr r3, _081345FC @ =0x00003214 @@ -128,7 +128,7 @@ _081345FC: .4byte 0x00003214 _08134600: .4byte 0x00003234 _08134604: movs r0, 0x6 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 ldr r0, [r4] ldr r3, _08134628 @ =0x00003214 adds r0, r3 @@ -149,7 +149,7 @@ _0813462C: .4byte 0x0000321c _08134630: .4byte 0x00003234 _08134634: movs r0, 0x8 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 ldr r0, [r4] ldr r3, _08134710 @ =0x00003214 adds r0, r3 @@ -7608,7 +7608,7 @@ _0813846C: _08138470: movs r0, 0x7 _08138472: - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _08138476: pop {r0} bx r0 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 0abdc979c..d88ecf578 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -45,7 +45,7 @@ sub_8077764: @ 8077764 cmp r1, 0 beq _080777BC movs r0, 0x19 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080777DA .align 2, 0 _080777B0: .4byte gPaletteFade @@ -53,7 +53,7 @@ _080777B4: .4byte gBattleScripting _080777B8: .4byte gBattleTypeFlags _080777BC: movs r0, 0x18 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080777DA _080777C4: movs r0, 0x80 @@ -61,11 +61,11 @@ _080777C4: cmp r1, 0 beq _080777D4 movs r0, 0x1A - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 b _080777DA _080777D4: movs r0, 0x17 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 _080777DA: ldr r0, _080777E4 @ =sub_80777E8 bl SetMainCallback2 diff --git a/asm/script_menu.s b/asm/script_menu.s index 438f715fa..11b9feee2 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -301,7 +301,7 @@ _0809CB7A: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow ldr r0, [sp, 0x18] adds r1, r7, 0 adds r2, r5, 0 @@ -1138,7 +1138,7 @@ _0809D1FA: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0 mov r1, r9 adds r2, r6, 0 @@ -1946,7 +1946,7 @@ _0809D844: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0 mov r1, r9 adds r2, r7, 0 diff --git a/asm/shop.s b/asm/shop.s index 999874b6b..67d30d52a 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -74,7 +74,7 @@ _0809AAF8: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow ldrb r0, [r4] bl PutWindowTilemap ldrb r0, [r4] diff --git a/asm/start_menu.s b/asm/start_menu.s index 1cc3a7919..65a1e4402 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -158,7 +158,7 @@ sub_806EE7C: @ 806EE7C bl PutWindowTilemap ldrb r0, [r4] movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldr r0, _0806EEFC @ =gStringVar1 ldr r1, _0806EF00 @ =gUnknown_2039996 ldrh r1, [r1] @@ -390,7 +390,7 @@ _0806F06C: lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80F6F1C + bl DrawStdWindowFrame ldr r1, _0806F08C @ =gUnknown_20370FF b _0806F0B8 .align 2, 0 @@ -438,7 +438,7 @@ _0806F0C4: movs r1, 0x2 movs r2, 0 movs r3, 0 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow strb r0, [r4] bl sub_80BF708 lsls r0, 24 @@ -1049,7 +1049,7 @@ sub_806F5A4: @ 806F5A4 push {lr} bl sub_812B234 movs r0, 0xC - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 bl sub_806F624 ldr r1, _0806F5C0 @ =gUnknown_20370F0 ldr r0, _0806F5C4 @ =sub_806F5C8 @@ -1156,7 +1156,7 @@ sub_806F67C: @ 806F67C push {lr} bl sub_812B234 movs r0, 0xC - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 bl sub_806F624 ldr r0, _0806F698 @ =task50_save_game movs r1, 0x50 @@ -1239,7 +1239,7 @@ sub_806F71C: @ 806F71C push {lr} movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame pop {r0} bx r0 thumb_func_end sub_806F71C @@ -1328,7 +1328,7 @@ sub_806F7A8: @ 806F7A8 lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame bl remove_start_menu_window_maybe movs r0, 0 bl sub_8112EDC @@ -2178,7 +2178,7 @@ sub_806FE84: @ 806FE84 ldr r4, _0806FE9C @ =gUnknown_2037104 ldrb r0, [r4] movs r1, 0 - bl sub_80F6F9C + bl ClearStdWindowAndFrame ldrb r0, [r4] bl RemoveWindow pop {r4} @@ -2197,7 +2197,7 @@ sub_806FEA0: @ 806FEA0 lsls r0, 24 lsrs r0, 24 movs r1, 0x1 - bl sub_80F6F9C + bl ClearStdWindowAndFrame bl remove_start_menu_window_maybe bl sub_80696C0 bl ScriptContext2_Disable diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index feba05e6d..b9bf09d46 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -774,7 +774,7 @@ sub_815B1DC: @ 815B1DC negs r0, r0 ands r0, r1 strb r0, [r2] - bl sub_80F78A8 + bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/title_screen.s b/asm/title_screen.s index e6f203e3b..c8261c1d3 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -809,7 +809,7 @@ sub_8078FC4: @ 8078FC4 b _08079094 _08078FD6: movs r0, 0x1 - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 ldr r0, _0807902C @ =sub_807941C movs r1, 0 bl CreateTask diff --git a/asm/tm_case.s b/asm/tm_case.s index d3b8d6320..ac58fa0a2 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -1586,7 +1586,7 @@ _08132468: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0x80 lsls r0, 1 bl Alloc @@ -3291,7 +3291,7 @@ sub_813337C: @ 813337C lsrs r5, 24 lsls r4, 24 lsrs r4, 24 - bl sub_80F78A8 + bl GetTextSpeedSetting lsls r0, 24 lsrs r0, 24 str r4, [sp] diff --git a/asm/trade.s b/asm/trade.s index e9fcddf2d..5f0f9da85 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -3390,7 +3390,7 @@ _0804E208: movs r1, 0x3 movs r2, 0 movs r3, 0 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0x1 bl PutWindowTilemap movs r0, 0x1 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 2229c0b7d..0b0d6c2cf 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -291,7 +291,7 @@ _0808924A: cmp r0, 0 beq _08089280 movs r0, 0xB - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 bl sub_808B1D4 movs r0, 0xF2 bl PlaySE @@ -387,7 +387,7 @@ _0808931C: .4byte gMain _08089320: .4byte gReceivedRemoteLinkPlayers _08089324: movs r0, 0xA - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 bl sub_808B1D4 ldr r0, _08089340 @ =gUnknown_20397A4 ldr r1, [r0] @@ -431,7 +431,7 @@ _0808937A: bl sub_800AAC0 movs r0, 0 movs r1, 0x1 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r2, _080893B0 @ =gUnknown_8419D89 movs r0, 0x1 str r0, [sp] @@ -1647,7 +1647,7 @@ sub_8089D8C: @ 8089D8C ldr r0, _08089DA0 @ =sub_8089070 bl SetMainCallback2 movs r0, 0xA - bl sub_812B1F0 + bl HelpSystem_SetSomeVariable2 pop {r0} bx r0 .align 2, 0 diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index c7be31ac9..194066e70 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -4299,7 +4299,7 @@ sub_812A424: @ 812A424 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow _0812A4F0: add sp, 0x14 pop {r3} @@ -5000,7 +5000,7 @@ sub_812AA10: @ 812AA10 movs r1, 0x2 movs r2, 0 movs r3, 0 - bl sub_810F7D8 + bl ProgramAndPlaceMenuCursorOnWindow movs r0, 0x3 bl PutWindowTilemap add sp, 0xC diff --git a/asm/unk_814BB4C.s b/asm/unk_814BB4C.s index 9c0e0503b..5ad566185 100644 --- a/asm/unk_814BB4C.s +++ b/asm/unk_814BB4C.s @@ -201,7 +201,7 @@ _0814BC98: _0814BCA2: movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldrb r1, [r5, 0x1] movs r0, 0x2 mov r8, r0 @@ -287,7 +287,7 @@ _0814BD48: beq _0814BD5A movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame _0814BD5A: ldrb r0, [r7, 0xE] movs r1, 0x1 @@ -597,7 +597,7 @@ _0814BFA0: .4byte gUnknown_83DFC9C _0814BFA4: movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame movs r0, 0xA movs r1, 0x1 movs r2, 0 @@ -2855,7 +2855,7 @@ _0814D106: beq _0814D17E movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r2, _0814D148 @ =gUnknown_8419F54 movs r0, 0 str r0, [sp] @@ -2979,7 +2979,7 @@ _0814D204: _0814D206: movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame movs r4, 0 str r4, [sp] adds r0, r6, 0 @@ -3159,7 +3159,7 @@ _0814D34A: _0814D356: movs r0, 0 movs r1, 0x1 - bl sub_80F6F54 + bl ClearDialogWindowAndFrame adds r0, r5, 0 bl sub_814DA04 movs r0, 0x1 @@ -3217,7 +3217,7 @@ _0814D3BA: _0814D3C0: movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldrh r1, [r5, 0x14] cmp r1, 0x3 bne _0814D3F0 diff --git a/asm/unk_814D5C8.s b/asm/unk_814D5C8.s index 4e8bbd051..422d34f07 100644 --- a/asm/unk_814D5C8.s +++ b/asm/unk_814D5C8.s @@ -186,8 +186,8 @@ _0814D768: beq _0814D774 b _0814D87E _0814D774: - bl sub_80F6C6C - bl sub_80F6C98 + bl InitStandardTextBoxWindows + bl ResetBg0 adds r0, r5, 0 bl sub_814EB38 adds r0, r5, 0 diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s index e0448643e..324a6b48c 100644 --- a/asm/unk_81507FC.s +++ b/asm/unk_81507FC.s @@ -10657,7 +10657,7 @@ _08155A9C: _08155AA6: movs r0, 0 movs r1, 0 - bl sub_80F6EE4 + bl DrawDialogueFrame ldr r2, _08155ACC @ =gUnknown_8419F54 str r4, [sp] movs r0, 0x2 @@ -11276,8 +11276,8 @@ _08155EC6: movs r1, 0 movs r2, 0 bl ChangeBgY - bl sub_80F6C6C - bl sub_80F6C98 + bl InitStandardTextBoxWindows + bl ResetBg0 movs r1, 0x82 lsls r1, 5 movs r0, 0 diff --git a/asm/wireless_communication_status_screen.s b/asm/wireless_communication_status_screen.s index b5f357a83..72368171f 100644 --- a/asm/wireless_communication_status_screen.s +++ b/asm/wireless_communication_status_screen.s @@ -130,7 +130,7 @@ sub_814F1E4: @ 814F1E4 movs r2, 0x20 bl LoadPalette movs r0, 0xF0 - bl sub_80F77CC + bl Menu_LoadStdPalAt bl UnkTextUtil_Reset movs r0, 0x20 str r0, [sp] diff --git a/data/data_835B488.s b/data/data_835B488.s index c5b533348..2a0bfcf87 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -740,19 +740,19 @@ sFanfares:: @ 83AC990 gUnknown_83AC9D0:: @ 83AC9D0 .incbin "baserom.gba", 0x3AC9D0, 0x8 -gUnknown_83AC9D8:: +gOamData_83AC9D8:: .incbin "baserom.gba", 0x3AC9D8, 0x10 -gUnknown_83AC9E8:: +gOamData_83AC9E8:: .incbin "baserom.gba", 0x3AC9E8, 0x10 -gUnknown_83AC9F8:: +gOamData_83AC9F8:: .incbin "baserom.gba", 0x3AC9F8, 0x8 gUnknown_83ACA00:: .incbin "baserom.gba", 0x3ACA00, 0xF8 -gUnknown_83ACAF8:: +gOamData_83ACAF8:: .incbin "baserom.gba", 0x3ACAF8, 0x110 gUnknown_83ACC08:: @ 83ACC08 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 96485c89e..682877f7e 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -586,7 +586,7 @@ gUnknown_8415C64:: @ 8415C64 gUnknown_8415CE8:: @ 8415CE8 .incbin "baserom.gba", 0x415CE8, 0x44 -gUnknown_8415D2C:: @ 8415D2C +gText_Controls:: @ 8415D2C .string "CONTROLS$" .align 2 @@ -594,28 +594,30 @@ gUnknown_8415D38:: @ 8415D2C .string "{KEYGFX_DPAD_UP_DOWN}ãˆã‚‰ã¶ {KEYGFX_A_BUTTON}ã‘ã£ã¦ã„$" .align 2 -gUnknown_8415D48:: @ 8415D48 +gText_ABUTTONNext:: @ 8415D48 .string "{KEYGFX_A_BUTTON}NEXT$" .align 2 -gUnknown_8415D50:: @ 8415D50 +gText_ABUTTONNext_BBUTTONBack:: @ 8415D50 .string "{KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}BACK$" .align 2 -gUnknown_8415D60:: @ 8415D60 - .incbin "baserom.gba", 0x415D60, 0x18 +gText_UPDOWNPick_ABUTTONNext_BBUTTONBack:: @ 8415D60 + .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}CANCEL$" -gUnknown_8415D78:: @ 8415D78 - .incbin "baserom.gba", 0x415D78, 0x14 + .align 2 +gText_UPDOWNPick_ABUTTONBBUTTONCancel:: @ 8415D78 + .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$" -gUnknown_8415D8C:: @ 8415D8C - .incbin "baserom.gba", 0x415D8C, 0x7 + .align 2 +gText_ABUTTONExit:: @ 8415D8C + .string "{KEYGFX_A_BUTTON}EXIT$" -gUnknown_8415D93:: @ 8415D93 - .incbin "baserom.gba", 0x415D93, 0x4 +gText_Boy:: @ 8415D93 + .string "BOY$" -gUnknown_8415D97:: @ 8415D97 - .incbin "baserom.gba", 0x415D97, 0x5 +gText_Girl:: @ 8415D97 + .string "GIRL$" gUnknown_8415D9C:: @ 8415D9C .incbin "baserom.gba", 0x415D9C, 0x1C diff --git a/data/event_scripts.s b/data/event_scripts.s index 7d4a7b996..95fcf7a92 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -428,167 +428,167 @@ gUnknown_81C5647:: @ 81C5647 gUnknown_81C566A:: @ 81C566A .incbin "baserom.gba", 0x1C566A, 0xE5 -gUnknown_81C574F:: @ 81C574F +gOtherText_NewName:: @ 81C574F .string "NEW NAME$" -gUnknown_81C5758:: @ 81C5758 +gNameChoice_Green:: @ 81C5758 .string "GREEN$" -gUnknown_81C575E:: @ 81C575E +gNameChoice_Red:: @ 81C575E .string "RED$" -gUnknown_81C5762:: @ 81C5762 +gNameChoice_Leaf:: @ 81C5762 .string "LEAF$" -gUnknown_81C5767:: @ 81C5767 +gNameChoice_Fire:: @ 81C5767 .string "FIRE$" -gUnknown_81C576C:: @ 81C576C +gNameChoice_Gary:: @ 81C576C .string "GARY$" -gUnknown_81C5771:: @ 81C5771 +gNameChoice_Kaz:: @ 81C5771 .string "KAZ$" -gUnknown_81C5775:: @ 81C5775 +gNameChoice_Toru:: @ 81C5775 .string "TORU$" -gUnknown_81C577A:: @ 81C577A +gNameChoice_Ash:: @ 81C577A .string "ASH$" -gUnknown_81C577E:: @ 81C577E +gNameChoice_Kene:: @ 81C577E .string "KENE$" -gUnknown_81C5783:: @ 81C5783 +gNameChoice_Geki:: @ 81C5783 .string "GEKI$" -gUnknown_81C5788:: @ 81C5788 +gNameChoice_Jak:: @ 81C5788 .string "JAK$" -gUnknown_81C578C:: @ 81C578C +gNameChoice_Janne:: @ 81C578C .string "JANNE$" -gUnknown_81C5792:: @ 81C5792 +gNameChoice_Jonn:: @ 81C5792 .string "JONN$" -gUnknown_81C5797:: @ 81C5797 +gNameChoice_Kamon:: @ 81C5797 .string "KAMON$" -gUnknown_81C579D:: @ 81C579D +gNameChoice_Karl:: @ 81C579D .string "KARL$" -gUnknown_81C57A2:: @ 81C57A2 +gNameChoice_Taylor:: @ 81C57A2 .string "TAYLOR$" -gUnknown_81C57A9:: @ 81C57A9 +gNameChoice_Oscar:: @ 81C57A9 .string "OSCAR$" -gUnknown_81C57AF:: @ 81C57AF +gNameChoice_Hiro:: @ 81C57AF .string "HIRO$" -gUnknown_81C57B4:: @ 81C57B4 +gNameChoice_Max:: @ 81C57B4 .string "MAX$" -gUnknown_81C57B8:: @ 81C57B8 +gNameChoice_Jon:: @ 81C57B8 .string "JON$" -gUnknown_81C57BC:: @ 81C57BC +gNameChoice_Ralph:: @ 81C57BC .string "RALPH$" -gUnknown_81C57C2:: @ 81C57C2 +gNameChoice_Kay:: @ 81C57C2 .string "KAY$" -gUnknown_81C57C6:: @ 81C57C6 +gNameChoice_Tosh:: @ 81C57C6 .string "TOSH$" -gUnknown_81C57CB:: @ 81C57CB +gNameChoice_Roak:: @ 81C57CB .string "ROAK$" -gUnknown_81C57D0:: @ 81C57D0 +gNameChoice_Omi:: @ 81C57D0 .string "OMI$" -gUnknown_81C57D4:: @ 81C57D4 +gNameChoice_Jodi:: @ 81C57D4 .string "JODI$" -gUnknown_81C57D9:: @ 81C57D9 +gNameChoice_Amanda:: @ 81C57D9 .string "AMANDA$" -gUnknown_81C57E0:: @ 81C57E0 +gNameChoice_Hillary:: @ 81C57E0 .string "HILLARY$" -gUnknown_81C57E8:: @ 81C57E8 +gNameChoice_Makey:: @ 81C57E8 .string "MAKEY$" -gUnknown_81C57EE:: @ 81C57EE +gNameChoice_Michi:: @ 81C57EE .string "MICHI$" -gUnknown_81C57F4:: @ 81C57F4 +gNameChoice_Paula:: @ 81C57F4 .string "PAULA$" -gUnknown_81C57FA:: @ 81C57FA +gNameChoice_June:: @ 81C57FA .string "JUNE$" -gUnknown_81C57FF:: @ 81C57FF +gNameChoice_Cassie:: @ 81C57FF .string "CASSIE$" -gUnknown_81C5806:: @ 81C5806 +gNameChoice_Rey:: @ 81C5806 .string "REY$" -gUnknown_81C580A:: @ 81C580A +gNameChoice_Seda:: @ 81C580A .string "SEDA$" -gUnknown_81C580F:: @ 81C580F +gNameChoice_Kiko:: @ 81C580F .string "KIKO$" -gUnknown_81C5814:: @ 81C5814 +gNameChoice_Mina:: @ 81C5814 .string "MINA$" -gUnknown_81C5819:: @ 81C5819 +gNameChoice_Norie:: @ 81C5819 .string "NORIE$" -gUnknown_81C581F:: @ 81C581F +gNameChoice_Sai:: @ 81C581F .string "SAI$" -gUnknown_81C5823:: @ 81C5823 +gNameChoice_Momo:: @ 81C5823 .string "MOMO$" -gUnknown_81C5828:: @ 81C5828 +gNameChoice_Suzi:: @ 81C5828 .string "SUZI$" -gUnknown_81C582D:: @ 81C582D +gNewGame_HelpDocs1:: @ 81C582D .string "The various buttons will be explained in\n" .string "the order of their importance.$" -gUnknown_81C5875:: @ 81C5875 +gNewGame_HelpDocs2:: @ 81C5875 .string "Moves the main character.\n" .string "Also used to choose various data\n" .string "headings.$" -gUnknown_81C58BA:: @ 81C58BA +gNewGame_HelpDocs3:: @ 81C58BA .string "Used to confirm a choice, check\n" .string "things, chat, and scroll text.$" -gUnknown_81C58F9:: @ 81C58F9 +gNewGame_HelpDocs4:: @ 81C58F9 .string "Used to exit, cancel a choice,\n" .string "and cancel a mode.$" -gUnknown_81C592B:: @ 81C592B +gNewGame_HelpDocs5:: @ 81C592B .string "Press this button to open the\n" .string "MENU.$" -gUnknown_81C594F:: @ 81C594F +gNewGame_HelpDocs6:: @ 81C594F .string "Used to shift items and to use\n" .string "a registered item.$" -gUnknown_81C5981:: @ 81C5981 +gNewGame_HelpDocs7:: @ 81C5981 .string "If you need help playing the\n" .string "game, or on how to do things,\n" .string "press the L or R Button.$" -gUnknown_81C59D5:: @ 81C59D5 +gOakText_AskPlayerGender:: @ 81C59D5 .string "Now tell me. Are you a boy?\n" .string "Or are you a girl?$" -gUnknown_81C5A04:: +gNewGameAdventureIntro1:: .string "In the world which you are about to\n" .string "enter, you will embark on a grand\n" .string "adventure with you as the hero.\n" @@ -598,7 +598,7 @@ gUnknown_81C5A04:: .string "or caves. Gather information and\n" .string "hints from every source.$" -gUnknown_81C5AEB:: +gNewGameAdventureIntro2:: .string "New paths will open to you by helping\n" .string "people in need, overcoming challenges,\n" .string "and solving mysteries.\n" @@ -607,7 +607,7 @@ gUnknown_81C5AEB:: .string "others and attacked by wild creatures.\n" .string "Be brave and keep pushing on.$" -gUnknown_81C5BB9:: +gNewGameAdventureIntro3:: .string "Through your adventure, we hope\n" .string "that you will interact with all sorts\n" .string "of people and achieve personal growth.\n" @@ -616,49 +616,49 @@ gUnknown_81C5BB9:: .string "Press the A Button, and let your\n" .string "adventure begin!$" -gUnknown_81C5C78:: @ 81C5C78 +gOakText_WelcomeToTheWorld:: @ 81C5C78 .string "Hello, there!\n" .string "Glad to meet you!\pWelcome to the world of POKéMON!\pMy name is OAK.\pPeople affectionately refer to me\n" .string "as the POKéMON PROFESSOR.\p$" -gUnknown_81C5D06:: @ 81C5D06 +gOakText_WorldInhabited1:: @ 81C5D06 .string "This world…$" -gUnknown_81C5D12:: @ 81C5D12 +gOakText_WorldInhabited2:: @ 81C5D12 .string "…is inhabited far and wide by\n" .string "creatures called POKéMON.\p$" -gUnknown_81C5D4B:: @ 81C5D4B +gOakText_PetsBattlingStudy:: @ 81C5D4B .string "For some people, POKéMON are pets.\n" .string "Others use them for battling.\pAs for myself…\pI study POKéMON as a profession.\p$" -gUnknown_81C5DBD:: @ 81C5DBD +gOakText_TellMeALittleAboutYourself:: @ 81C5DBD .string "But first, tell me a little about\n" .string "yourself.\p$" -gUnknown_81C5DEA:: @ 81C5DEA +gOakText_AskPlayerName:: @ 81C5DEA .string "Let’s begin with your name.\n" .string "What is it?\p$" -gUnknown_81C5E13:: @ 81C5E13 +gOakText_FinalizePlayerName:: @ 81C5E13 .string "Right…\n" .string "So your name is {PLAYER}.$" -gUnknown_81C5E2E:: @ 81C5E2E +gOakText_IntroduceRival:: @ 81C5E2E .string "This is my grandson.\pHe’s been your rival since you both\n" .string "were babies.\p…Erm, what was his name now?$" -gUnknown_81C5E91:: @ 81C5E91 +gOakText_AskRivalName:: @ 81C5E91 .string "Your rival’s name, what was it now?$" -gUnknown_81C5EB5:: @ 81C5EB5 +gOakText_ConfirmRivalName:: @ 81C5EB5 .string "…Er, was it {RIVAL}?$" -gUnknown_81C5EC5:: @ 81C5EC5 +gOakText_RememberRivalName:: @ 81C5EC5 .string "That’s right! I remember now!\n" .string "His name is {RIVAL}!\p$" -gUnknown_81C5EF4:: @ 81C5EF4 +gOakText_LegendAboutToUnfold:: @ 81C5EF4 .string "{PLAYER}!\pYour very own POKéMON legend is\n" .string "about to unfold!\pA world of dreams and adventures\n" .string "with POKéMON awaits! Let’s go!$" diff --git a/data/oak_speech/unk_8462A10.png b/data/oak_speech/unk_8462A10.png index 324529e9041d2b20a276483c4fa0a4415d4d5613..2c8e425d215ecc4a18b9a9721bd1a0aec6caf651 100644 GIT binary patch delta 325 zcmV-L0lNN=0@VVL8Gi!+0052*ZL0tP05DKYR7JhLq(O^=Qk08oq@07atenNYwAIbc z=HBM^?f?J){{a7sy`-GYthC<6&FNK8KB;iaZaf zAs%v&;HR_z(UQX9n(EX=YXm6t2P2>&R3XoS+Tf1Hw{sSPmbe=GYv{jc35{u}p7c1YQ!+;3=ZP?4FsFJ8`iEb%707*qoM6N<$ Eg6Vi~h5!Hn diff --git a/data/oak_speech/unk_8462B74.png b/data/oak_speech/unk_8462B74.png index 674cef46d8205c894555219b640b53ec1b0992c9..71644c355c34b2931de7cd4a832341a64babe84d 100644 GIT binary patch delta 399 zcmV;A0dW4_0-ghq8Gi!+004=gXq^B605DKYR7K6rwEzGA|MqJ3)d23S0L6;{gHizh z0RR60|FpEU|4K^c006WA0BUM#5D*am0RK;~xRw9_00DGTPE!Ct=GbNc00A6HL_t(I zjqQ@5Zo@DThC@RP1_me9T1O@g&GRCGR;Z^eDPV^~v)W=dWwJCyx+(^W9@k2Dp@va1NltOY%LqBEU9w<3Ztp zsj#ce0J4mL!hfffX*mH_859U0tZg)k23N?!59qBQ8bEvz9t@;q_kosFyjkghl+p+x ztld}gMBuZvR(5vqAV#9aAjb+r@N}kq7uG5I*Qyu#7MKv2Bds$9rU*X}0z)8{6qvLP t`REP;^CF6N%7=A~Hh&1B)ZLw#R-I^Z)<=00>D%PDHLkV1g3qv@HMt delta 334 zcmV-U0kQs`1Kt9V8Gir(005g6$8!Jx0VPR9K~y-6?UKJv!!Qts`wCtn)i&}I@dylA zEHU+2G6n`KYY78ma2YbDxeQ1w6uA;(2L>-$!^MB9))PW>t`Csr&i} zY(+6302TfiWf)4lLg<(*+xVdoj7#l7=D{fQ2W;u}6Oj%`DXG?)kaZ#7D0_$CqAvpq44-mwjp*?mH5}_MDLouN?LVsQB0ev3d7XC_cp-3I* z%t3%Bjb1<|ja?7EisijY57O%eI*`gm!z@EA+?+EVSeMxVIGGw(pbEW(K-aTX$CW{X zv-U4IMi3j|sc{)*bSeAABD#}pVO+9FQ;FSPJ1c?i(<%!7e4 fV;;wU^Y{RsUJ_0Z)+q}o00000NkvXXu0mjfTW56; delta 211 zcmV;^04)Eh0^|XZ8Gir(005KW$SD8-0INwvK~yM_wa_sR!ypU=&|JZ6B}j-KyB)Ge z2hvL1zGl2=^4ZExG}{ ze((Y^T>^TBVDUB2?gHEH9pcOo)rK^hAw>v$gC!^43=+#sCrpezs0x~4@4gYah2H=b z%n7-UT1ZKVoPm`agWTcs&cId2 N002ovPDHLkV1gVeS_1$8 diff --git a/data/oak_speech/unk_8462E18.png b/data/oak_speech/unk_8462E18.png index f6796f7244d4b8f78fc8622a1799280682d9bbac..5e2fd80c024d85d71559337a0a43368bc5e53e6d 100644 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!VDy{RzH{nqznRlLR`>%a$$wy}X_=Fl+&8$;uKC5C97Luir5ZsF$%M$S;_|;n|HeAji_v z#W93qW^#gptVUylRuh}?mlh!fCNEA0Mq5SIt?mMhd)*Znx4Jt#V_tAX*x>Afy&j$? dJw+Xv8C>@8Z_HImF9aIG;OXk;vd$@?2>=bUKMVi> literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExcAhSdAsjQ4fAF*N%;?#zP{4g^ z$B#0*356fu-krTk;h1maf*F76+q5^9zkj#4HPpJS_}#s^{H6jq=Ug*GiWw?SunlockedPersons[who] + offset]); - AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); + AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } } @@ -790,7 +790,7 @@ static void PrintSelectedNameInBrightGreen(u8 taskId) u16 cursorPos = FameCheckerGetCursorY(); FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); StringExpandPlaceholders(gStringVar4, sFameCheckerFlavorTextPointers[sFameCheckerData->unlockedPersons[cursorPos] * 6 + data[1]]); - AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); + AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } @@ -803,7 +803,7 @@ static void WipeMsgBoxAndTransfer(void) static void Setup_DrawMsgAndListBoxes(void) { sub_80F6E9C(); - sub_80F6EE4(FCWINDOWID_MSGBOX, TRUE); + DrawDialogueFrame(FCWINDOWID_MSGBOX, TRUE); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_LIST); } diff --git a/src/menu2.c b/src/menu2.c index e83b1bff2..ec244b8f7 100644 --- a/src/menu2.c +++ b/src/menu2.c @@ -768,7 +768,7 @@ void sub_819A080(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u #define tEvWhich data[6] #define tEvStepCount data[8] -void OakSpeech_StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority) +void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority) { u8 taskId = CreateTask(Task_SmoothBlendLayers, priority); gTasks[taskId].tEvA = eva_start << 8; @@ -781,7 +781,7 @@ void OakSpeech_StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end SetGpuReg(REG_OFFSET_BLDALPHA, (evb_start << 8) | eva_start); } -bool8 OakSpeech_IsBlendTaskActive(void) +bool8 IsBlendTaskActive(void) { return FuncIsActiveTask(Task_SmoothBlendLayers); } diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index c39d76f25..65f515d1b 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -58,7 +58,7 @@ void sub_8145D18(u8 whichWindow); void sub_8146060(void); void sub_81461D8(void); -extern const struct OamData gUnknown_83AC9F8; +extern const struct OamData gOamData_83AC9F8; const struct TextColor gUnknown_8467068[] = { {0, 2, 3}, @@ -113,7 +113,7 @@ const struct SpritePalette gUnknown_8467F60[] = { {gUnknown_8467ED4, 0x8000} }; const struct SpriteTemplate gUnknown_8467FA0 = { - 0x8000, 0x8000, &gUnknown_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + 0x8000, 0x8000, &gOamData_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = { {1, 0, 0, 0, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C}, diff --git a/src/oak_speech.c b/src/oak_speech.c index 056dbd56b..2e58e801d 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -30,15 +30,15 @@ struct OakSpeechResources { - void * unk_0000; - void * unk_0004; + void * solidColorsGfx; + void * trainerPicTilemapBuffer; void * unk_0008; u8 filler_000C[4]; u16 unk_0010; u16 unk_0012; u16 unk_0014[4]; u8 unk_001C[3]; - u8 unk_001F; + u8 textSpeed; u8 filler_0020[0x1800]; u8 bg2TilemapBuffer[0x400]; u8 bg1TilemapBuffer[0x800]; @@ -46,96 +46,96 @@ struct OakSpeechResources EWRAM_DATA struct OakSpeechResources * sOakSpeechResources = NULL; -static void sub_812EB58(u8 taskId); -static void sub_812EEB0(void); -static void sub_812F0B0(u8 taskId); -static void sub_812F180(u8 taskId); -static void sub_812F274(u8 taskId); -static void sub_812F33C(u8 taskId); -static void sub_812F4A8(u8 taskId); -static void sub_812F72C(u8 taskId); -static void sub_812F7C0(u8 taskId); -static void sub_812F880(u8 taskId); -static void sub_812F880(u8 taskId); -static void sub_812F944(u8 taskId); -static void sub_812F9EC(u8 taskId); -static void sub_812FA78(u8 taskId); -static void sub_812FB4C(u8 taskId); -static void sub_812FBF0(u8 taskId); -static void sub_812FC68(u8 taskId); -static void sub_812FD78(u8 taskId); -static void sub_812FDC0(u8 taskId); -static void sub_812FE88(u8 taskId); -static void sub_812FFA4(u8 taskId); -static void sub_812FFF0(u8 taskId); -static void sub_8130050(u8 taskId); -static void sub_81300A0(u8 taskId); -static void sub_8130160(u8 taskId); -static void sub_8130324(u8 taskId); -static void sub_81303B4(u8 taskId); -static void sub_8130464(u8 taskId); -static void sub_8130554(u8 taskId); -static void sub_8130650(u8 taskId); -static void sub_8130694(u8 taskId); -static void sub_81306D4(u8 taskId); -static void sub_813071C(u8 taskId); -static void sub_81307D0(u8 taskId); -static void sub_8130858(u8 taskId); -static void sub_81308D0(u8 taskId); -static void sub_8130914(u8 taskId); -static void sub_8130940(u8 taskId); -static void sub_8130980(u8 taskId); -static void sub_8130A38(u8 taskId); -static void sub_8130A80(u8 taskId); -static void sub_8130ADC(u8 taskId); -static void sub_8130B10(u8 taskId); -static void sub_8130BA8(u8 taskId); -static void sub_8130BF0(u8 taskId); -static void sub_8130C20(u8 taskId); +static void Task_OaksSpeech1(u8 taskId); +static void CreateHelpDocsPage1(void); +static void Task_OaksSpeech2(u8 taskId); +static void Task_OakSpeech3(u8 taskId); +static void Task_OakSpeech5(u8 taskId); +static void Task_OakSpeech6(u8 taskId); +static void Task_OakSpeech7(u8 taskId); +static void Task_OakSpeech8(u8 taskId); +static void Task_OakSpeech9(u8 taskId); +static void Task_OakSpeech10(u8 taskId); +static void Task_OakSpeech10(u8 taskId); +static void Task_OakSpeech11(u8 taskId); +static void Task_OakSpeech12(u8 taskId); +static void Task_OakSpeech13(u8 taskId); +static void Task_OakSpeech14(u8 taskId); +static void Task_OakSpeech15(u8 taskId); +static void Task_OakSpeech16(u8 taskId); +static void Task_OakSpeech17(u8 taskId); +static void Task_OakSpeech18(u8 taskId); +static void Task_OakSpeech19(u8 taskId); +static void Task_OakSpeech20(u8 taskId); +static void Task_OakSpeech21(u8 taskId); +static void Task_OakSpeech22(u8 taskId); +static void Task_OakSpeech23(u8 taskId); +static void Task_OakSpeech24(u8 taskId); +static void Task_OakSpeech29(u8 taskId); +static void Task_OakSpeech25(u8 taskId); +static void Task_OakSpeech26(u8 taskId); +static void Task_OakSpeech27(u8 taskId); +static void Task_OakSpeech30(u8 taskId); +static void Task_OakSpeech31(u8 taskId); +static void Task_OakSpeech32(u8 taskId); +static void Task_OakSpeech34(u8 taskId); +static void Task_OakSpeech33(u8 taskId); +static void Task_OakSpeech36(u8 taskId); +static void Task_OakSpeech37(u8 taskId); +static void Task_OakSpeech38(u8 taskId); +static void Task_OakSpeech38_3(u8 taskId); +static void Task_OakSpeech39(u8 taskId); +static void Task_OakSpeech38_1(u8 taskId); +static void Task_OakSpeech38_sub1(u8 taskId); +static void Task_OakSpeech38_2(u8 taskId); +static void Task_OakSpeech38_sub2(u8 taskId); +static void Task_OakSpeech40(u8 taskId); +static void Task_OakSpeech41(u8 taskId); +static void Task_OakSpeech42(u8 taskId); static void CB2_ReturnFromNamingScreen(void); static void CreateNidoranFSprite(u8 taskId); -static void sub_8130FD4(u8 taskId, u8 state); -static void sub_8131168(u8 taskId, u8 state); -static void sub_81311F4(u16 whichPic, u16 tileOffset); -static void sub_8131310(void); -static void sub_813144C(u8 taskId, u8 state); -static void sub_81315CC(u8 taskId, u8 state); -static void sub_8131660(u8 taskId, u8 state); -static void sub_8131754(u8 arg0, u8 namePick); +static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 state); +static void DestroyLinkedPikaOrGrassPlatformSprites(u8 taskId, u8 state); +static void LoadOaksSpeechTrainerPic(u16 whichPic, u16 tileOffset); +static void DestroyOaksSpeechTrainerPic(void); +static void CreateFadeInTask(u8 taskId, u8 state); +static void CreateFadeOutTask(u8 taskId, u8 state); +static void PrintNameChoiceOptions(u8 taskId, u8 state); +static void GetDefaultName(u8 arg0, u8 namePick); -extern const u8 gUnknown_8415D2C[]; -extern const u8 gUnknown_8415D48[]; -extern const u8 gUnknown_8415D50[]; -extern const u8 gUnknown_8415D93[]; -extern const u8 gUnknown_8415D97[]; +extern const u8 gText_Controls[]; +extern const u8 gText_ABUTTONNext[]; +extern const u8 gText_ABUTTONNext_BBUTTONBack[]; +extern const u8 gText_Boy[]; +extern const u8 gText_Girl[]; extern const struct CompressedSpriteSheet gUnknown_8235194[]; extern const struct CompressedSpritePalette gUnknown_82373F4; -ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); -static const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); -static const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); -static const u32 gUnknown_8460CA4[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz"); -static const u32 gUnknown_8460CE8[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz"); -static const u16 gUnknown_8460D94[] = INCBIN_U16("data/oak_speech/unk_8460D94.bin"); -static const u16 gUnknown_8460E34[] = INCBIN_U16("data/oak_speech/unk_8460E34.bin"); -static const u16 gUnknown_8460ED4[] = INCBIN_U16("data/oak_speech/unk_8460ED4.gbapal"); -static const u32 gUnknown_8460F14[] = INCBIN_U32("data/oak_speech/unk_8460F14.8bpp.lz"); -static const u16 gUnknown_84615FC[] = INCBIN_U16("data/oak_speech/unk_84615FC.gbapal"); -static const u32 gUnknown_846163C[] = INCBIN_U32("data/oak_speech/unk_846163C.8bpp.lz"); -static const u16 gUnknown_8461CD4[] = INCBIN_U16("data/oak_speech/unk_8461CD4.gbapal"); -static const u32 gUnknown_8461D14[] = INCBIN_U32("data/oak_speech/unk_8461D14.8bpp.lz"); -static const u16 gUnknown_84623AC[] = INCBIN_U16("data/oak_speech/unk_84623AC.gbapal"); -static const u32 gUnknown_84623EC[] = INCBIN_U32("data/oak_speech/unk_84623EC.8bpp.lz"); -static const u16 gUnknown_84629D0[] = INCBIN_U16("data/oak_speech/unk_84629D0.gbapal"); -static const u16 gUnknown_84629F0[] = INCBIN_U16("data/oak_speech/unk_84629F0.gbapal"); -static const u32 gUnknown_8462A10[] = INCBIN_U32("data/oak_speech/unk_8462A10.4bpp.lz"); -static const u32 gUnknown_8462B74[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz"); -static const u32 gUnknown_8462D34[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz"); -static const u32 gUnknown_8462E18[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz"); +ALIGNED(4) const u16 sHelpDocsPalette[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); +static const u32 sOakSpeechGfx_GameStartHelpUI[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); +static const u32 sNewGameAdventureIntroTilemap[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); +static const u32 sOakSpeechGfx_SolidColors[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz"); +static const u32 sOakSpeech_BackgroundTilemap[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz"); +static const u16 sHelpDocsPage2Tilemap[] = INCBIN_U16("data/oak_speech/unk_8460D94.bin"); +static const u16 sHelpDocsPage3Tilemap[] = INCBIN_U16("data/oak_speech/unk_8460E34.bin"); +static const u16 sOakSpeechGfx_LeafPal[] = INCBIN_U16("data/oak_speech/unk_8460ED4.gbapal"); +static const u32 sOakSpeechGfx_LeafPic[] = INCBIN_U32("data/oak_speech/unk_8460F14.8bpp.lz"); +static const u16 sOakSpeechGfx_RedPal[] = INCBIN_U16("data/oak_speech/unk_84615FC.gbapal"); +static const u32 sOakSpeechGfx_RedPic[] = INCBIN_U32("data/oak_speech/unk_846163C.8bpp.lz"); +static const u16 sOakSpeechGfx_OakPal[] = INCBIN_U16("data/oak_speech/unk_8461CD4.gbapal"); +static const u32 sOakSpeechGfx_OakPic[] = INCBIN_U32("data/oak_speech/unk_8461D14.8bpp.lz"); +static const u16 sOakSpeechGfx_RivalPal[] = INCBIN_U16("data/oak_speech/unk_84623AC.gbapal"); +static const u32 sOakSpeechGfx_RivalPic[] = INCBIN_U32("data/oak_speech/unk_84623EC.8bpp.lz"); +static const u16 sOakSpeech_GrassPlatformPalette[] = INCBIN_U16("data/oak_speech/unk_84629D0.gbapal"); +static const u16 sOakSpeech_PikaPalette[] = INCBIN_U16("data/oak_speech/unk_84629F0.gbapal"); +static const u32 sOakSpeechGfx_GrassPlatform[] = INCBIN_U32("data/oak_speech/unk_8462A10.4bpp.lz"); +static const u32 sOakSpeechGfx_Pika1[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz"); +static const u32 sOakSpeechGfx_Pika2[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz"); +static const u32 sOakSpeechGfx_PikaEyes[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz"); -static const struct BgTemplate gUnknown_8462E58[3] = { +static const struct BgTemplate sBgTemplates[3] = { { .bg = 0, .charBaseIndex = 2, @@ -163,7 +163,7 @@ static const struct BgTemplate gUnknown_8462E58[3] = { } }; -static const struct WindowTemplate gUnknown_8462E64[] = { +static const struct WindowTemplate sHelpDocsWindowTemplates1[] = { { .priority = 0x00, .tilemapLeft = 0x00, @@ -175,7 +175,7 @@ static const struct WindowTemplate gUnknown_8462E64[] = { }, DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_8462E74[] = { +static const struct WindowTemplate sHelpDocsWindowTemplates2[] = { { .priority = 0x00, .tilemapLeft = 0x06, @@ -203,7 +203,7 @@ static const struct WindowTemplate gUnknown_8462E74[] = { }, DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_8462E94[] = { +static const struct WindowTemplate sHelpDocsWindowTemplates3[] = { { .priority = 0x00, .tilemapLeft = 0x06, @@ -231,13 +231,13 @@ static const struct WindowTemplate gUnknown_8462E94[] = { }, DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate *const gUnknown_8462EB4[3] = { - gUnknown_8462E64, - gUnknown_8462E74, - gUnknown_8462E94 +static const struct WindowTemplate *const sHelpDocsWindowTemplatePtrs[3] = { + sHelpDocsWindowTemplates1, + sHelpDocsWindowTemplates2, + sHelpDocsWindowTemplates3 }; -static const struct WindowTemplate gUnknown_8462EC0[] = { +static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = { { .priority = 0x00, .tilemapLeft = 0x01, @@ -273,77 +273,78 @@ static const struct WindowTemplate gUnknown_8462EC0[] = { }, DUMMY_WIN_TEMPLATE }; -ALIGNED(4) const struct TextColor gUnknown_8462EE8 = { +ALIGNED(4) const struct TextColor sTextColor_HelpSystem = { 0x00, 0x01, 0x02 }; -ALIGNED(4) const struct TextColor gUnknown_8462EEC = { +ALIGNED(4) const struct TextColor sTextColor_OakSpeech = { 0x00, 0x02, 0x03 }; -static const u8 *const gUnknown_8462EF0[] = { - gUnknown_81C5A04, - gUnknown_81C5AEB, - gUnknown_81C5BB9 +static const u8 *const sNewGameAdventureIntroTextPointers[] = { + gNewGameAdventureIntro1, + gNewGameAdventureIntro2, + gNewGameAdventureIntro3 }; -static const struct CompressedSpriteSheet gUnknown_8462EFC[3] = { - { (const void *)gUnknown_8462B74, 0x0400, 0x1001 }, - { (const void *)gUnknown_8462D34, 0x0200, 0x1002 }, - { (const void *)gUnknown_8462E18, 0x0080, 0x1003 }, +static const struct CompressedSpriteSheet sOakSpeech_PikaSpriteSheets[3] = { + { (const void *)sOakSpeechGfx_Pika1, 0x0400, 0x1001 }, + { (const void *)sOakSpeechGfx_Pika2, 0x0200, 0x1002 }, + { (const void *)sOakSpeechGfx_PikaEyes, 0x0080, 0x1003 }, }; -static const struct CompressedSpriteSheet gUnknown_8462F14 = { - (const void *)gUnknown_8462A10, 0x0600, 0x1000 +static const struct CompressedSpriteSheet sOakSpeech_GrassPlatformSpriteSheet = { + (const void *)sOakSpeechGfx_GrassPlatform, 0x0600, 0x1000 }; -static const struct SpritePalette gUnknown_8462F1C = { - (const void *)gUnknown_84629F0, 0x1001 -}; -static const struct SpritePalette gUnknown_8462F24 = { - (const void *)gUnknown_84629D0, 0x1000 +static const struct SpritePalette sOakSpeech_PikaSpritePal = { + (const void *)sOakSpeech_PikaPalette, 0x1001 }; -static const union AnimCmd gUnknown_8462F2C[] = { +static const struct SpritePalette sOakSpeech_GrassPlatformSpritePal = { + (const void *)sOakSpeech_GrassPlatformPalette, 0x1000 +}; + +static const union AnimCmd sGrassPlatformAnim1[] = { ANIMCMD_FRAME( 0, 0), ANIMCMD_END }; -static const union AnimCmd gUnknown_8462F34[] = { +static const union AnimCmd sGrassPlatformAnim2[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -static const union AnimCmd gUnknown_8462F3C[] = { +static const union AnimCmd sGrassPlatformAnim3[] = { ANIMCMD_FRAME(32, 0), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_8462F44[] = { - gUnknown_8462F2C +static const union AnimCmd *const sGrassPlatformAnims1[] = { + sGrassPlatformAnim1 }; -static const union AnimCmd *const gUnknown_8462F48[] = { - gUnknown_8462F34 +static const union AnimCmd *const sGrassPlatformAnims2[] = { + sGrassPlatformAnim2 }; -static const union AnimCmd *const gUnknown_8462F4C[] = { - gUnknown_8462F3C +static const union AnimCmd *const sGrassPlatformAnims3[] = { + sGrassPlatformAnim3 }; -extern const struct OamData gUnknown_83ACAF8; +extern const struct OamData gOamData_83ACAF8; -static const struct SpriteTemplate gUnknown_8462F50[3] = { - { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F44, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1000, 0x1000, &gUnknown_83ACAF8, gUnknown_8462F4C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, +static const struct SpriteTemplate sOakSpeech_GrassPlatformSpriteTemplates[3] = { + { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, }; -static const union AnimCmd gUnknown_8462F98[] = { +static const union AnimCmd sPikaAnim1[] = { ANIMCMD_FRAME( 0, 30), ANIMCMD_FRAME(16, 30), ANIMCMD_JUMP(0) }; -static const union AnimCmd gUnknown_8462FA4[] = { +static const union AnimCmd sPikaAnim2[] = { ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), @@ -362,7 +363,7 @@ static const union AnimCmd gUnknown_8462FA4[] = { ANIMCMD_JUMP(0) }; -static const union AnimCmd gUnknown_8462FE4[] = { +static const union AnimCmd sPikaAnim3[] = { ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), ANIMCMD_FRAME(0, 60), @@ -380,94 +381,90 @@ static const union AnimCmd gUnknown_8462FE4[] = { ANIMCMD_JUMP(0) }; -static const union AnimCmd *const gUnknown_8463020[] = { - gUnknown_8462F98 +static const union AnimCmd *const sPikaAnims1[] = { + sPikaAnim1 }; -static const union AnimCmd *const gUnknown_8463024[] = { - gUnknown_8462FA4 +static const union AnimCmd *const sPikaAnims2[] = { + sPikaAnim2 }; -static const union AnimCmd *const gUnknown_8463028[] = { - gUnknown_8462FE4 +static const union AnimCmd *const sPikaAnims3[] = { + sPikaAnim3 }; -extern const struct OamData gUnknown_83AC9D8; -extern const struct OamData gUnknown_83AC9F8; -extern const struct OamData gUnknown_83AC9E8; +extern const struct OamData gOamData_83AC9D8; +extern const struct OamData gOamData_83AC9F8; +extern const struct OamData gOamData_83AC9E8; -static const struct SpriteTemplate gUnknown_846302C[3] = { - { 0x1001, 0x1001, &gUnknown_83AC9D8, gUnknown_8463020, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1002, 0x1001, &gUnknown_83AC9F8, gUnknown_8463024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1003, 0x1001, &gUnknown_83AC9E8, gUnknown_8463028, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy } +static const struct SpriteTemplate sOakSpeech_PikaSpriteTemplates[3] = { + { 0x1001, 0x1001, &gOamData_83AC9D8, sPikaAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1002, 0x1001, &gOamData_83AC9F8, sPikaAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1003, 0x1001, &gOamData_83AC9E8, sPikaAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy } }; -static const u8 *const gUnknown_8463074[] = { - gUnknown_81C5875, - gUnknown_81C58BA, - gUnknown_81C58F9, - gUnknown_81C592B, - gUnknown_81C594F, - gUnknown_81C5981 +static const u8 *const sHelpDocsPtrs[] = { + gNewGame_HelpDocs2, gNewGame_HelpDocs3, gNewGame_HelpDocs4, + gNewGame_HelpDocs5, gNewGame_HelpDocs6, gNewGame_HelpDocs7 }; -static const u8 *const gUnknown_846308C[] = { - gUnknown_81C575E, - gUnknown_81C5767, - gUnknown_81C577A, - gUnknown_81C577E, - gUnknown_81C5783, - gUnknown_81C5788, - gUnknown_81C578C, - gUnknown_81C5792, - gUnknown_81C5797, - gUnknown_81C579D, - gUnknown_81C57A2, - gUnknown_81C57A9, - gUnknown_81C57AF, - gUnknown_81C57B4, - gUnknown_81C57B8, - gUnknown_81C57BC, - gUnknown_81C57C2, - gUnknown_81C57C6, - gUnknown_81C57CB +static const u8 *const sMaleNameChoices[] = { + gNameChoice_Red, + gNameChoice_Fire, + gNameChoice_Ash, + gNameChoice_Kene, + gNameChoice_Geki, + gNameChoice_Jak, + gNameChoice_Janne, + gNameChoice_Jonn, + gNameChoice_Kamon, + gNameChoice_Karl, + gNameChoice_Taylor, + gNameChoice_Oscar, + gNameChoice_Hiro, + gNameChoice_Max, + gNameChoice_Jon, + gNameChoice_Ralph, + gNameChoice_Kay, + gNameChoice_Tosh, + gNameChoice_Roak }; -static const u8 *const gUnknown_84630D8[] = { - gUnknown_81C575E, - gUnknown_81C5767, - gUnknown_81C57D0, - gUnknown_81C57D4, - gUnknown_81C57D9, - gUnknown_81C57E0, - gUnknown_81C57E8, - gUnknown_81C57EE, - gUnknown_81C57F4, - gUnknown_81C57FA, - gUnknown_81C57FF, - gUnknown_81C5806, - gUnknown_81C580A, - gUnknown_81C580F, - gUnknown_81C5814, - gUnknown_81C5819, - gUnknown_81C581F, - gUnknown_81C5823, - gUnknown_81C5828 +static const u8 *const sFemaleNameChoices[] = { + gNameChoice_Red, + gNameChoice_Fire, + gNameChoice_Omi, + gNameChoice_Jodi, + gNameChoice_Amanda, + gNameChoice_Hillary, + gNameChoice_Makey, + gNameChoice_Michi, + gNameChoice_Paula, + gNameChoice_June, + gNameChoice_Cassie, + gNameChoice_Rey, + gNameChoice_Seda, + gNameChoice_Kiko, + gNameChoice_Mina, + gNameChoice_Norie, + gNameChoice_Sai, + gNameChoice_Momo, + gNameChoice_Suzi }; -static const u8 *const gUnknown_8463124[] = { - gUnknown_81C5758, - gUnknown_81C576C, - gUnknown_81C5771, - gUnknown_81C5775 +static const u8 *const sRivalNameChoices[] = { + gNameChoice_Green, + gNameChoice_Gary, + gNameChoice_Kaz, + gNameChoice_Toru }; -static void sub_812EAFC(void) +static void VBlankCB_NewGameOaksSpeech(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_812EB10(void) +static void CB2_NewGameOaksSpeech(void) { RunTasks(); RunTextPrinters(); @@ -476,15 +473,15 @@ static void sub_812EB10(void) UpdatePaletteFade(); } -void sub_812EB2C(void) +void StartNewGameScene(void) { gPlttBufferUnfaded[0] = RGB_BLACK; gPlttBufferFaded[0] = RGB_BLACK; - CreateTask(sub_812EB58, 0); - SetMainCallback2(sub_812EB10); + CreateTask(Task_OaksSpeech1, 0); + SetMainCallback2(CB2_NewGameOaksSpeech); } -static void sub_812EB58(u8 taskId) +static void Task_OaksSpeech1(u8 taskId) { switch (gMain.state) { @@ -499,11 +496,11 @@ static void sub_812EB58(u8 taskId) ResetSpriteData(); FreeAllSpritePalettes(); reset_temp_tile_data_buffers(); - sub_812B1F0(2); + HelpSystem_SetSomeVariable2(2); break; case 1: sOakSpeechResources = AllocZeroed(sizeof(*sOakSpeechResources)); - sub_8044AF0(1, 1); + SetUpMonSpriteManagerMaybe(1, 1); break; case 2: SetGpuReg(REG_OFFSET_WIN0H, 0); @@ -518,7 +515,7 @@ static void sub_812EB58(u8 taskId) break; case 3: ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(1, gUnknown_8462E58, NELEMS(gUnknown_8462E58)); + InitBgsFromTemplates(1, sBgTemplates, NELEMS(sBgTemplates)); SetBgTilemapBuffer(1, sOakSpeechResources->bg1TilemapBuffer); SetBgTilemapBuffer(2, sOakSpeechResources->bg2TilemapBuffer); ChangeBgX(1, 0, 0); @@ -530,32 +527,32 @@ static void sub_812EB58(u8 taskId) break; case 4: gPaletteFade.bufferTransferDisabled = TRUE; - sub_80F6C6C(); - sub_80F6C98(); - sub_80F77CC(0xD0); - LoadPalette(gUnknown_8460568, 0x000, 0x080); + InitStandardTextBoxWindows(); + ResetBg0(); + Menu_LoadStdPalAt(0xD0); + LoadPalette(sHelpDocsPalette, 0x000, 0x080); LoadPalette(stdpal_get(2) + 15, 0x000, 0x002); break; case 5: - sOakSpeechResources->unk_001F = sub_80F78A8(); + sOakSpeechResources->textSpeed = GetTextSpeedSetting(); gTextFlags.flag_0 = TRUE; - decompress_and_copy_tile_data_to_vram(1, gUnknown_84605E8, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_GameStartHelpUI, 0, 0, 0); break; case 6: if (free_temp_tile_data_buffers_if_possible()) return; - sub_80F6F54(0, 1); + ClearDialogWindowAndFrame(0, 1); FillBgTilemapBufferRect_Palette0(1, 0x0000, 0, 0, 32, 32); CopyBgTilemapBufferToVram(1); break; case 7: - sub_810F558(0, 30, 0, 13, 0x1C4); + CreateWindow_SnapRight_StdPal(0, 30, 0, 13, 0x1C4); FillBgTilemapBufferRect_Palette0(1, 0xD00F, 0, 0, 30, 2); FillBgTilemapBufferRect_Palette0(1, 0xD002, 0, 2, 30, 1); FillBgTilemapBufferRect_Palette0(1, 0xD00E, 0, 19, 30, 1); - sub_812EEB0(); + CreateHelpDocsPage1(); gPaletteFade.bufferTransferDisabled = FALSE; - gTasks[taskId].data[5] = sub_8006300(0, 0xE6, 0x95, 0, 0); + gTasks[taskId].data[5] = CreateTextCursorSpriteForOakSpeech(0, 0xE6, 0x95, 0, 0); BlendPalettes(0xFFFFFFFF, 0x10, 0x00); break; case 10: @@ -563,9 +560,9 @@ static void sub_812EB58(u8 taskId) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); ShowBg(0); ShowBg(1); - SetVBlankCallback(sub_812EAFC); + SetVBlankCallback(VBlankCB_NewGameOaksSpeech); PlayBGM(323); - gTasks[taskId].func = sub_812F0B0; + gTasks[taskId].func = Task_OaksSpeech2; gMain.state = 0; return; } @@ -573,53 +570,53 @@ static void sub_812EB58(u8 taskId) gMain.state++; } -static void sub_812EEB0(void) +static void CreateHelpDocsPage1(void) { - sub_810F650(gUnknown_8415D2C, gUnknown_8415D48, 0, 0, 1); - sOakSpeechResources->unk_0014[0] = AddWindow(gUnknown_8462EB4[sOakSpeechResources->unk_0012]); + Menu_PrintHelpSystemUIHeader(gText_Controls, gText_ABUTTONNext, 0, 0, 1); + sOakSpeechResources->unk_0014[0] = AddWindow(sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012]); PutWindowTilemap(sOakSpeechResources->unk_0014[0]); FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00); - AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, &gUnknown_8462EE8, 0, gUnknown_81C582D); + AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, &sTextColor_HelpSystem, 0, gNewGame_HelpDocs1); CopyWindowToVram(sOakSpeechResources->unk_0014[0], 3); FillBgTilemapBufferRect_Palette0(1, 0x3000, 1, 3, 5, 16); CopyBgTilemapBufferToVram(1); } -static void sub_812EF50(u8 taskId) +static void Task_OakSpeech4(u8 taskId) { u8 i = 0; u8 r7 = sOakSpeechResources->unk_0012 - 1; if (sOakSpeechResources->unk_0012 == 0) { - sub_812EEB0(); + CreateHelpDocsPage1(); } else { - sub_810F5E8(gUnknown_8415D50, 0, 1); + PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1); for (i = 0; i < 3; i++) { - sOakSpeechResources->unk_0014[i] = AddWindow(&gUnknown_8462EB4[sOakSpeechResources->unk_0012][i]); + sOakSpeechResources->unk_0014[i] = AddWindow(&sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012][i]); PutWindowTilemap(sOakSpeechResources->unk_0014[i]); FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); - AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, &gUnknown_8462EE8, 0, gUnknown_8463074[i + r7 * 3]); + AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, &sTextColor_HelpSystem, 0, sHelpDocsPtrs[i + r7 * 3]); CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); } if (sOakSpeechResources->unk_0012 == 1) { - CopyToBgTilemapBufferRect(1, gUnknown_8460D94, 1, 3, 5, 16); + CopyToBgTilemapBufferRect(1, sHelpDocsPage2Tilemap, 1, 3, 5, 16); } else { - CopyToBgTilemapBufferRect(1, gUnknown_8460E34, 1, 3, 5, 16); + CopyToBgTilemapBufferRect(1, sHelpDocsPage3Tilemap, 1, 3, 5, 16); } CopyBgTilemapBufferToVram(1); } BeginNormalPaletteFade(0xFFFFDFFF, -1, 16, 0, stdpal_get(2)[15]); - gTasks[taskId].func = sub_812F0B0; + gTasks[taskId].func = Task_OaksSpeech2; } -static void sub_812F0B0(u8 taskId) +static void Task_OaksSpeech2(u8 taskId) { if (!gPaletteFade.active && JOY_NEW((A_BUTTON | B_BUTTON))) { @@ -645,10 +642,10 @@ static void sub_812F0B0(u8 taskId) else return; PlaySE(SE_SELECT); - gTasks[taskId].func = sub_812F180; + gTasks[taskId].func = Task_OakSpeech3; } -static void sub_812F180(u8 taskId) +static void Task_OakSpeech3(u8 taskId) { u8 r8 = 0; u8 i; @@ -675,17 +672,17 @@ static void sub_812F180(u8 taskId) RemoveWindow(sOakSpeechResources->unk_0014[i]); sOakSpeechResources->unk_0014[i] = 0; } - gTasks[taskId].func = sub_812EF50; + gTasks[taskId].func = Task_OakSpeech4; } else { BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); - gTasks[taskId].func = sub_812F274; + gTasks[taskId].func = Task_OakSpeech5; } } } -static void sub_812F274(u8 taskId) +static void Task_OakSpeech5(u8 taskId) { u8 i = 0; @@ -705,11 +702,11 @@ static void sub_812F274(u8 taskId) sOakSpeechResources->unk_0014[0] = RGB_BLACK; LoadPalette(sOakSpeechResources->unk_0014, 0, 2); gTasks[taskId].data[3] = 32; - gTasks[taskId].func = sub_812F33C; + gTasks[taskId].func = Task_OakSpeech6; } } -static void sub_812F33C(u8 taskId) +static void Task_OakSpeech6(u8 taskId) { s16 * data = gTasks[taskId].data; u32 sp14 = 0; @@ -720,30 +717,30 @@ static void sub_812F33C(u8 taskId) { PlayBGM(324); sub_810F71C(); - sub_810F5E8(gUnknown_8415D48, 0, 1); - sOakSpeechResources->unk_0008 = malloc_and_decompress(gUnknown_8460BA8, &sp14); + PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1); + sOakSpeechResources->unk_0008 = malloc_and_decompress(sNewGameAdventureIntroTilemap, &sp14); CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19); CopyBgTilemapBufferToVram(1); Free(sOakSpeechResources->unk_0008); sOakSpeechResources->unk_0008 = NULL; - data[14] = AddWindow(&gUnknown_8462EC0[0]); + data[14] = AddWindow(&sNewGameAdventureIntroWindowTemplates[0]); PutWindowTilemap(data[14]); FillWindowPixelBuffer(data[14], 0x00); CopyWindowToVram(data[14], 3); sOakSpeechResources->unk_0012 = 0; gMain.state = 0; data[15] = 16; - AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &gUnknown_8462EEC, 0, gUnknown_8462EF0[0]); - data[5] = sub_8006300(0, 0xe2, 0x91, 0, 0); + AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[0]); + data[5] = CreateTextCursorSpriteForOakSpeech(0, 0xe2, 0x91, 0, 0); gSprites[data[5]].oam.objMode = ST_OAM_OBJ_BLEND; gSprites[data[5]].oam.priority = 0; - sub_8130FD4(taskId, 0); + CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(taskId, 0); BeginNormalPaletteFade(0xFFFFFFFF, 2, 16, 0, 0); - gTasks[taskId].func = sub_812F4A8; + gTasks[taskId].func = Task_OakSpeech7; } } -static void sub_812F4A8(u8 taskId) +static void Task_OakSpeech7(u8 taskId) { s16 * data = gTasks[taskId].data; switch (gMain.state) @@ -793,16 +790,16 @@ static void sub_812F4A8(u8 taskId) if (data[15] <= 0) { FillWindowPixelBuffer(data[14], 0x00); - AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &gUnknown_8462EEC, 0, gUnknown_8462EF0[sOakSpeechResources->unk_0012]); + AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]); if (sOakSpeechResources->unk_0012 == 0) { sub_810F71C(); - sub_810F5E8(gUnknown_8415D48, 0, 1); + PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1); } else { sub_810F71C(); - sub_810F5E8(gUnknown_8415D50, 0, 1); + PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1); } gMain.state++; } @@ -837,13 +834,13 @@ static void sub_812F4A8(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, 0); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_812F72C; + gTasks[taskId].func = Task_OakSpeech8; } break; } } -static void sub_812F72C(u8 taskId) +static void Task_OakSpeech8(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -857,13 +854,13 @@ static void sub_812F72C(u8 taskId) data[14] = 0; FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); CopyBgTilemapBufferToVram(1); - sub_8131168(taskId, 0); + DestroyLinkedPikaOrGrassPlatformSprites(taskId, 0); data[3] = 80; - gTasks[taskId].func = sub_812F7C0; + gTasks[taskId].func = Task_OakSpeech9; } } -static void sub_812F7C0(u8 taskId) +static void Task_OakSpeech9(u8 taskId) { s16 * data = gTasks[taskId].data; u32 size = 0; @@ -872,23 +869,23 @@ static void sub_812F7C0(u8 taskId) data[3]--; else { - sOakSpeechResources->unk_0000 = malloc_and_decompress(gUnknown_8460CA4, &size); - LoadBgTiles(1, sOakSpeechResources->unk_0000, size, 0); - CopyToBgTilemapBuffer(1, gUnknown_8460CE8, 0, 0); + sOakSpeechResources->solidColorsGfx = malloc_and_decompress(sOakSpeechGfx_SolidColors, &size); + LoadBgTiles(1, sOakSpeechResources->solidColorsGfx, size, 0); + CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0); CopyBgTilemapBufferToVram(1); CreateNidoranFSprite(taskId); - sub_81311F4(3, 0); - sub_8130FD4(taskId, 1); + LoadOaksSpeechTrainerPic(3, 0); + CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(taskId, 1); PlayBGM(292); BeginNormalPaletteFade(0xFFFFFFFF, 5, 16, 0, RGB_BLACK); data[3] = 80; ShowBg(2); - gTasks[taskId].func = sub_812F880; + gTasks[taskId].func = Task_OakSpeech10; } } #define OaksSpeechPrintMessage(str, speed) ({ \ - sub_80F6EE4(0, FALSE);\ + DrawDialogueFrame(0, FALSE);\ if (str != gStringVar4) \ { \ StringExpandPlaceholders(gStringVar4, str); \ @@ -901,7 +898,7 @@ static void sub_812F7C0(u8 taskId) CopyWindowToVram(0, 3); \ }) -static void sub_812F880(u8 taskId) +static void Task_OakSpeech10(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -911,23 +908,23 @@ static void sub_812F880(u8 taskId) data[3]--; else { - OaksSpeechPrintMessage(gUnknown_81C5C78, sOakSpeechResources->unk_001F); - gTasks[taskId].func = sub_812F944; + OaksSpeechPrintMessage(gOakText_WelcomeToTheWorld, sOakSpeechResources->textSpeed); + gTasks[taskId].func = Task_OakSpeech11; } } } -static void sub_812F944(u8 taskId) +static void Task_OakSpeech11(u8 taskId) { if (!IsTextPrinterActive(0)) { - OaksSpeechPrintMessage(gUnknown_81C5D06, sOakSpeechResources->unk_001F); + OaksSpeechPrintMessage(gOakText_WorldInhabited1, sOakSpeechResources->textSpeed); gTasks[taskId].data[3] = 30; - gTasks[taskId].func = sub_812F9EC; + gTasks[taskId].func = Task_OakSpeech12; } } -static void sub_812F9EC(u8 taskId) +static void Task_OakSpeech12(u8 taskId) { s16 * data = gTasks[taskId].data; u8 spriteId; @@ -941,55 +938,55 @@ static void sub_812F9EC(u8 taskId) gSprites[spriteId].invisible = FALSE; gSprites[spriteId].data[0] = 0; CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1FFF); - gTasks[taskId].func = sub_812FA78; + gTasks[taskId].func = Task_OakSpeech13; gTasks[taskId].data[3] = 0; // } } } -static void sub_812FA78(u8 taskId) +static void Task_OakSpeech13(u8 taskId) { if (IsCryFinished()) { if (gTasks[taskId].data[3] >= 96) - gTasks[taskId].func = sub_812FB4C; + gTasks[taskId].func = Task_OakSpeech14; } if (gTasks[taskId].data[3] < 0x4000) { gTasks[taskId].data[3]++; if (gTasks[taskId].data[3] == 32) { - OaksSpeechPrintMessage(gUnknown_81C5D12, sOakSpeechResources->unk_001F); + OaksSpeechPrintMessage(gOakText_WorldInhabited2, sOakSpeechResources->textSpeed); PlayCry1(SPECIES_NIDORAN_F, 0); } } } -static void sub_812FB4C(u8 taskId) +static void Task_OakSpeech14(u8 taskId) { if (!IsTextPrinterActive(0)) { - OaksSpeechPrintMessage(gUnknown_81C5D4B, sOakSpeechResources->unk_001F); - gTasks[taskId].func = sub_812FBF0; + OaksSpeechPrintMessage(gOakText_PetsBattlingStudy, sOakSpeechResources->textSpeed); + gTasks[taskId].func = Task_OakSpeech15; } } -static void sub_812FBF0(u8 taskId) +static void Task_OakSpeech15(u8 taskId) { u8 spriteId; if (!IsTextPrinterActive(0)) { - sub_80F6F54(0, 1); + ClearDialogWindowAndFrame(0, 1); spriteId = gTasks[taskId].data[4]; gTasks[taskId].data[6] = sub_804BB98(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1F3F); gTasks[taskId].data[3] = 48; gTasks[taskId].data[0] = 64; - gTasks[taskId].func = sub_812FC68; + gTasks[taskId].func = Task_OakSpeech16; } } -static void sub_812FC68(u8 taskId) +static void Task_OakSpeech16(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1014,26 +1011,26 @@ static void sub_812FC68(u8 taskId) } else { - OaksSpeechPrintMessage(gUnknown_81C5DBD, sOakSpeechResources->unk_001F); - gTasks[taskId].func = sub_812FD78; + OaksSpeechPrintMessage(gOakText_TellMeALittleAboutYourself, sOakSpeechResources->textSpeed); + gTasks[taskId].func = Task_OakSpeech17; } } } -static void sub_812FD78(u8 taskId) +static void Task_OakSpeech17(u8 taskId) { s16 * data = gTasks[taskId].data; if (!IsTextPrinterActive(0)) { - sub_80F6F54(0, 1); - sub_813144C(taskId, 2); + ClearDialogWindowAndFrame(0, 1); + CreateFadeInTask(taskId, 2); data[3] = 48; - gTasks[taskId].func = sub_812FDC0; + gTasks[taskId].func = Task_OakSpeech18; } } -static void sub_812FDC0(u8 taskId) +static void Task_OakSpeech18(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1044,36 +1041,36 @@ static void sub_812FDC0(u8 taskId) else { data[1] = -60; - sub_8131310(); - OaksSpeechPrintMessage(gUnknown_81C59D5, sOakSpeechResources->unk_001F); - gTasks[taskId].func = sub_812FE88; + DestroyOaksSpeechTrainerPic(); + OaksSpeechPrintMessage(gOakText_AskPlayerGender, sOakSpeechResources->textSpeed); + gTasks[taskId].func = Task_OakSpeech19; } } } -static void sub_812FE88(u8 taskId) +static void Task_OakSpeech19(u8 taskId) { if (!IsTextPrinterActive(0)) { - gTasks[taskId].data[13] = AddWindow(&gUnknown_8462EC0[1]); + gTasks[taskId].data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[1]); PutWindowTilemap(gTasks[taskId].data[13]); SetWindowBorderStyle(gTasks[taskId].data[13], 1, sub_80F796C(), 14); FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11); sOakSpeechResources->unk_001C[0] = 1; sOakSpeechResources->unk_001C[1] = 2; sOakSpeechResources->unk_001C[2] = 3; - box_print(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->unk_001C, 0, gUnknown_8415D93); + box_print(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->unk_001C, 0, gText_Boy); sOakSpeechResources->unk_001C[0] = 1; sOakSpeechResources->unk_001C[1] = 2; sOakSpeechResources->unk_001C[2] = 3; - box_print(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->unk_001C, 0, gUnknown_8415D97); - sub_810F7D8(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0); + box_print(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->unk_001C, 0, gText_Girl); + ProgramAndPlaceMenuCursorOnWindow(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0); CopyWindowToVram(gTasks[taskId].data[13], 3); - gTasks[taskId].func = sub_812FFA4; + gTasks[taskId].func = Task_OakSpeech20; } } -static void sub_812FFA4(u8 taskId) +static void Task_OakSpeech20(u8 taskId) { s8 input = ProcessMenuInputNoWrapAround(); switch (input) @@ -1088,34 +1085,34 @@ static void sub_812FFA4(u8 taskId) case -2: return; } - gTasks[taskId].func = sub_812FFF0; + gTasks[taskId].func = Task_OakSpeech21; } -static void sub_812FFF0(u8 taskId) +static void Task_OakSpeech21(u8 taskId) { s16 * data = gTasks[taskId].data; sub_810F4D8(data[13], 1); RemoveWindow(data[13]); data[13] = 0; - sub_80F6F54(0, 1); + ClearDialogWindowAndFrame(0, 1); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); CopyBgTilemapBufferToVram(0); - gTasks[taskId].func = sub_8130050; + gTasks[taskId].func = Task_OakSpeech22; } -static void sub_8130050(u8 taskId) +static void Task_OakSpeech22(u8 taskId) { if (gSaveBlock2Ptr->playerGender == MALE) - sub_81311F4(MALE, 0); + LoadOaksSpeechTrainerPic(MALE, 0); else - sub_81311F4(FEMALE, 0); - sub_81315CC(taskId, 2); + LoadOaksSpeechTrainerPic(FEMALE, 0); + CreateFadeOutTask(taskId, 2); gTasks[taskId].data[3] = 32; - gTasks[taskId].func = sub_81300A0; + gTasks[taskId].func = Task_OakSpeech23; } -static void sub_81300A0(u8 taskId) +static void Task_OakSpeech23(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1126,22 +1123,22 @@ static void sub_81300A0(u8 taskId) else { data[1] = 0; - OaksSpeechPrintMessage(gUnknown_81C5DEA, sOakSpeechResources->unk_001F); - gTasks[taskId].func = sub_8130160; + OaksSpeechPrintMessage(gOakText_AskPlayerName, sOakSpeechResources->textSpeed); + gTasks[taskId].func = Task_OakSpeech24; } } } -static void sub_8130160(u8 taskId) +static void Task_OakSpeech24(u8 taskId) { if (!IsTextPrinterActive(0)) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); sOakSpeechResources->unk_0010 = 0; - gTasks[taskId].func = sub_81303B4; + gTasks[taskId].func = Task_OakSpeech25; } } -static void sub_81301B0(u8 taskId) +static void Task_OakSpeech35(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1156,27 +1153,27 @@ static void sub_81301B0(u8 taskId) else { data[1] = -60; - sub_8131660(taskId, sOakSpeechResources->unk_0010); - gTasks[taskId].func = sub_8130324; + PrintNameChoiceOptions(taskId, sOakSpeechResources->unk_0010); + gTasks[taskId].func = Task_OakSpeech29; } } } -static void sub_8130228(u8 taskId) +static void Task_OakSpeech28(u8 taskId) { - sub_8131660(taskId, sOakSpeechResources->unk_0010); + PrintNameChoiceOptions(taskId, sOakSpeechResources->unk_0010); if (sOakSpeechResources->unk_0010 == 0) { - OaksSpeechPrintMessage(gUnknown_81C5DEA, 0); + OaksSpeechPrintMessage(gOakText_AskPlayerName, 0); } else { - OaksSpeechPrintMessage(gUnknown_81C5E91, 0); + OaksSpeechPrintMessage(gOakText_AskRivalName, 0); } - gTasks[taskId].func = sub_8130324; + gTasks[taskId].func = Task_OakSpeech29; } -static void sub_8130324(u8 taskId) +static void Task_OakSpeech29(u8 taskId) { s16 * data = gTasks[taskId].data; s8 input = ProcessMenuInput(); @@ -1189,25 +1186,25 @@ static void sub_8130324(u8 taskId) PlaySE(SE_SELECT); sub_810F4D8(data[13], TRUE); RemoveWindow(data[13]); - sub_8131754(sOakSpeechResources->unk_0010, input - 1); + GetDefaultName(sOakSpeechResources->unk_0010, input - 1); data[15] = 1; - gTasks[taskId].func = sub_8130464; + gTasks[taskId].func = Task_OakSpeech26; break; case 0: PlaySE(SE_SELECT); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_81303B4; + gTasks[taskId].func = Task_OakSpeech25; break; case -1: break; } } -static void sub_81303B4(u8 taskId) +static void Task_OakSpeech25(u8 taskId) { if (!gPaletteFade.active) { - sub_8131754(sOakSpeechResources->unk_0010, 0); + GetDefaultName(sOakSpeechResources->unk_0010, 0); if (sOakSpeechResources->unk_0010 == 0) { DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnFromNamingScreen); @@ -1218,12 +1215,12 @@ static void sub_81303B4(u8 taskId) RemoveWindow(gTasks[taskId].data[13]); DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen); } - sub_8131168(taskId, 1); + DestroyLinkedPikaOrGrassPlatformSprites(taskId, 1); FreeAllWindowBuffers(); } } -static void sub_8130464(u8 taskId) +static void Task_OakSpeech26(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1233,13 +1230,13 @@ static void sub_8130464(u8 taskId) { if (sOakSpeechResources->unk_0010 == 0) { - StringExpandPlaceholders(gStringVar4, gUnknown_81C5E13); + StringExpandPlaceholders(gStringVar4, gOakText_FinalizePlayerName); } else { - StringExpandPlaceholders(gStringVar4, gUnknown_81C5EB5); + StringExpandPlaceholders(gStringVar4, gOakText_ConfirmRivalName); } - OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->textSpeed); data[15] = 0; data[3] = 25; } @@ -1249,14 +1246,14 @@ static void sub_8130464(u8 taskId) data[3]--; else { - sub_810FF60(&gUnknown_8462EC0[2], 2, 0, 2, sub_80F796C(), 14, 0); - gTasks[taskId].func = sub_8130554; + sub_810FF60(&sNewGameAdventureIntroWindowTemplates[2], 2, 0, 2, sub_80F796C(), 14, 0); + gTasks[taskId].func = Task_OakSpeech27; } } } } -static void sub_8130554(u8 taskId) +static void Task_OakSpeech27(u8 taskId) { s8 input = ProcessMenuInputNoWrap_(); switch (input) @@ -1266,110 +1263,110 @@ static void sub_8130554(u8 taskId) gTasks[taskId].data[3] = 40; if (sOakSpeechResources->unk_0010 == 0) { - sub_80F6F54(0, 1); - sub_813144C(taskId, 2); - gTasks[taskId].func = sub_8130650; + ClearDialogWindowAndFrame(0, 1); + CreateFadeInTask(taskId, 2); + gTasks[taskId].func = Task_OakSpeech30; } else { - StringExpandPlaceholders(gStringVar4, gUnknown_81C5EC5); - OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); - gTasks[taskId].func = sub_8130694; + StringExpandPlaceholders(gStringVar4, gOakText_RememberRivalName); + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->textSpeed); + gTasks[taskId].func = Task_OakSpeech31; } break; case 1: case -1: PlaySE(SE_SELECT); if (sOakSpeechResources->unk_0010 == 0) - gTasks[taskId].func = sub_8130160; + gTasks[taskId].func = Task_OakSpeech24; else - gTasks[taskId].func = sub_8130228; + gTasks[taskId].func = Task_OakSpeech28; break; } } -static void sub_8130650(u8 taskId) +static void Task_OakSpeech30(u8 taskId) { s16 * data = gTasks[taskId].data; if (data[2] != 0) { - sub_8131310(); + DestroyOaksSpeechTrainerPic(); if (data[3] != 0) data[3]--; else - gTasks[taskId].func = sub_81306D4; + gTasks[taskId].func = Task_OakSpeech32; } } -static void sub_8130694(u8 taskId) +static void Task_OakSpeech31(u8 taskId) { if (!IsTextPrinterActive(0)) { - sub_80F6F54(0, 1); - sub_813144C(taskId, 2); - gTasks[taskId].func = sub_81307D0; + ClearDialogWindowAndFrame(0, 1); + CreateFadeInTask(taskId, 2); + gTasks[taskId].func = Task_OakSpeech33; } } -static void sub_81306D4(u8 taskId) +static void Task_OakSpeech32(u8 taskId) { ChangeBgX(2, 0, 0); gTasks[taskId].data[1] = 0; gSpriteCoordOffsetX = 0; - sub_81311F4(2, 0); - sub_81315CC(taskId, 2); - gTasks[taskId].func = sub_813071C; + LoadOaksSpeechTrainerPic(2, 0); + CreateFadeOutTask(taskId, 2); + gTasks[taskId].func = Task_OakSpeech34; } -static void sub_813071C(u8 taskId) +static void Task_OakSpeech34(u8 taskId) { s16 * data = gTasks[taskId].data; if (data[2] != 0) { - OaksSpeechPrintMessage(gUnknown_81C5E2E, sOakSpeechResources->unk_001F); + OaksSpeechPrintMessage(gOakText_IntroduceRival, sOakSpeechResources->textSpeed); sOakSpeechResources->unk_0010 = 1; - gTasks[taskId].func = sub_81301B0; + gTasks[taskId].func = Task_OakSpeech35; } } -static void sub_81307D0(u8 taskId) +static void Task_OakSpeech33(u8 taskId) { s16 * data = gTasks[taskId].data; if (data[2] != 0) { - sub_8131310(); + DestroyOaksSpeechTrainerPic(); if (data[3] != 0) data[3]--; else { if (gSaveBlock2Ptr->playerGender == MALE) - sub_81311F4(MALE, 0); + LoadOaksSpeechTrainerPic(MALE, 0); else - sub_81311F4(FEMALE, 0); + LoadOaksSpeechTrainerPic(FEMALE, 0); gTasks[taskId].data[1] = 0; gSpriteCoordOffsetX = 0; ChangeBgX(2, 0, 0); - sub_81315CC(taskId, 2); - gTasks[taskId].func = sub_8130858; + CreateFadeOutTask(taskId, 2); + gTasks[taskId].func = Task_OakSpeech36; } } } -static void sub_8130858(u8 taskId) +static void Task_OakSpeech36(u8 taskId) { if (gTasks[taskId].data[2] != 0) { - StringExpandPlaceholders(gStringVar4, gUnknown_81C5EF4); - OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + StringExpandPlaceholders(gStringVar4, gOakText_LegendAboutToUnfold); + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->textSpeed); gTasks[taskId].data[3] = 30; - gTasks[taskId].func = sub_81308D0; + gTasks[taskId].func = Task_OakSpeech37; } } -static void sub_81308D0(u8 taskId) +static void Task_OakSpeech37(u8 taskId) { if (!IsTextPrinterActive(0)) { @@ -1378,20 +1375,20 @@ static void sub_81308D0(u8 taskId) else { FadeOutBGM(4); - gTasks[taskId].func = sub_8130914; + gTasks[taskId].func = Task_OakSpeech38; } } } -static void sub_8130914(u8 taskId) +static void Task_OakSpeech38(u8 taskId) { sOakSpeechResources->unk_0012 = 0; - sub_8130A38(taskId); - sub_8130ADC(taskId); - sub_8130940(taskId); + Task_OakSpeech38_1(taskId); + Task_OakSpeech38_2(taskId); + Task_OakSpeech38_3(taskId); } -static void sub_8130940(u8 taskId) +static void Task_OakSpeech38_3(u8 taskId) { s16 * data = gTasks[taskId].data; SetBgAttribute(2, 6, 1); @@ -1399,10 +1396,10 @@ static void sub_8130940(u8 taskId) data[1] = 0; data[2] = 256; data[15] = 0; - gTasks[taskId].func = sub_8130980; + gTasks[taskId].func = Task_OakSpeech39; } -static void sub_8130980(u8 taskId) +static void Task_OakSpeech39(u8 taskId) { s16 * data = gTasks[taskId].data; s16 x, y; @@ -1422,14 +1419,14 @@ static void sub_8130980(u8 taskId) { data[15] = 1; data[0] = 36; - gTasks[taskId].func = sub_8130BA8; + gTasks[taskId].func = Task_OakSpeech40; } } } -static void sub_8130A38(u8 taskId) +static void Task_OakSpeech38_1(u8 taskId) { - u8 taskId2 = CreateTask(sub_8130A80, 1); + u8 taskId2 = CreateTask(Task_OakSpeech38_sub1, 1); s16 * data = gTasks[taskId2].data; data[0] = 0; data[1] = 0; @@ -1438,7 +1435,7 @@ static void sub_8130A38(u8 taskId) BeginNormalPaletteFade(0xFFFF0FCF, 4, 0, 16, RGB_BLACK); } -static void sub_8130A80(u8 taskId) +static void Task_OakSpeech38_sub1(u8 taskId) { s16 * data = gTasks[taskId].data; if (!gPaletteFade.active) @@ -1446,7 +1443,7 @@ static void sub_8130A80(u8 taskId) if (data[1] != 0) { DestroyTask(taskId); - sub_8131168(taskId, 1); + DestroyLinkedPikaOrGrassPlatformSprites(taskId, 1); } else { @@ -1456,9 +1453,9 @@ static void sub_8130A80(u8 taskId) } } -static void sub_8130ADC(u8 taskId) +static void Task_OakSpeech38_2(u8 taskId) { - u8 taskId2 = CreateTask(sub_8130B10, 2); + u8 taskId2 = CreateTask(Task_OakSpeech38_sub2, 2); s16 * data = gTasks[taskId2].data; data[0] = 8; data[1] = 0; @@ -1467,7 +1464,7 @@ static void sub_8130ADC(u8 taskId) data[15] = 0; } -static void sub_8130B10(u8 taskId) +static void Task_OakSpeech38_sub2(u8 taskId) { s16 * data = gTasks[taskId].data; u8 i; @@ -1494,26 +1491,26 @@ static void sub_8130B10(u8 taskId) } } -static void sub_8130BA8(u8 taskId) +static void Task_OakSpeech40(u8 taskId) { if (gTasks[taskId].data[0] != 0) gTasks[taskId].data[0]--; else { BeginNormalPaletteFade(0x00000030, 2, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_8130BF0; + gTasks[taskId].func = Task_OakSpeech41; } } -static void sub_8130BF0(u8 taskId) +static void Task_OakSpeech41(u8 taskId) { if (!gPaletteFade.active) { - gTasks[taskId].func = sub_8130C20; + gTasks[taskId].func = Task_OakSpeech42; } } -static void sub_8130C20(u8 taskId) +static void Task_OakSpeech42(u8 taskId) { FreeAllWindowBuffers(); sub_8044D80(); @@ -1543,7 +1540,7 @@ static void CB2_ReturnFromNamingScreen(void) break; case 1: ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(1, gUnknown_8462E58, NELEMS(gUnknown_8462E58)); + InitBgsFromTemplates(1, sBgTemplates, NELEMS(sBgTemplates)); SetBgTilemapBuffer(1, sOakSpeechResources->bg1TilemapBuffer); SetBgTilemapBuffer(2, sOakSpeechResources->bg2TilemapBuffer); ChangeBgX(1, 0, 0); @@ -1562,37 +1559,37 @@ static void CB2_ReturnFromNamingScreen(void) break; case 3: FreeAllWindowBuffers(); - sub_80F6C6C(); - sub_80F6C98(); - LoadPalette(gUnknown_8460568, 0, 0xe0); + InitStandardTextBoxWindows(); + ResetBg0(); + LoadPalette(sHelpDocsPalette, 0, 0xe0); break; case 4: - decompress_and_copy_tile_data_to_vram(1, gUnknown_8460CA4, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_SolidColors, 0, 0, 0); break; case 5: if (free_temp_tile_data_buffers_if_possible()) return; FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); - CopyToBgTilemapBuffer(1, gUnknown_8460CE8, 0, 0); + CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0); FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); break; case 6: - taskId = CreateTask(sub_8130464, 0); + taskId = CreateTask(Task_OakSpeech26, 0); if (sOakSpeechResources->unk_0010 == 0) { if (gSaveBlock2Ptr->playerGender == MALE) - sub_81311F4(MALE, 0); + LoadOaksSpeechTrainerPic(MALE, 0); else - sub_81311F4(FEMALE, 0); + LoadOaksSpeechTrainerPic(FEMALE, 0); } else - sub_81311F4(2, 0); + LoadOaksSpeechTrainerPic(2, 0); gTasks[taskId].data[1] = -60; gSpriteCoordOffsetX += 60; ChangeBgX(2, -0x3C00, 0); - sub_8130FD4(taskId, 1); + CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(taskId, 1); gTasks[taskId].data[15] = 1; break; case 7: @@ -1602,9 +1599,9 @@ static void CB2_ReturnFromNamingScreen(void) ShowBg(1); ShowBg(2); EnableInterrupts(INTR_FLAG_VBLANK); - SetVBlankCallback(sub_812EAFC); + SetVBlankCallback(VBlankCB_NewGameOaksSpeech); gTextFlags.flag_0 = TRUE; - SetMainCallback2(sub_812EB10); + SetMainCallback2(CB2_NewGameOaksSpeech); return; } @@ -1625,12 +1622,12 @@ static void CreateNidoranFSprite(u8 taskId) gTasks[taskId].data[4] = spriteId; } -static void sub_8130FB8(struct Sprite * sprite) +static void SpriteCB_PikaSync(struct Sprite * sprite) { sprite->pos2.y = gSprites[sprite->data[0]].animCmdIndex; } -static void sub_8130FD4(u8 taskId, u8 state) +static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 state) { u8 spriteId; u8 i = 0; @@ -1638,30 +1635,30 @@ static void sub_8130FD4(u8 taskId, u8 state) switch (state) { case 0: - LoadCompressedObjectPic(&gUnknown_8462EFC[0]); - LoadCompressedObjectPic(&gUnknown_8462EFC[1]); - LoadCompressedObjectPic(&gUnknown_8462EFC[2]); - LoadSpritePalette(&gUnknown_8462F1C); - spriteId = CreateSprite(&gUnknown_846302C[0], 0x10, 0x11, 2); + LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[0]); + LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[1]); + LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[2]); + LoadSpritePalette(&sOakSpeech_PikaSpritePal); + spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[0], 0x10, 0x11, 2); gSprites[spriteId].oam.priority = 0; gTasks[taskId].data[7] = spriteId; - spriteId = CreateSprite(&gUnknown_846302C[1], 0x10, 0x09, 3); + spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[1], 0x10, 0x09, 3); gSprites[spriteId].oam.priority = 0; gSprites[spriteId].data[0] = gTasks[taskId].data[7]; - gSprites[spriteId].callback = sub_8130FB8; + gSprites[spriteId].callback = SpriteCB_PikaSync; gTasks[taskId].data[8] = spriteId; - spriteId = CreateSprite(&gUnknown_846302C[2], 0x18, 0x0D, 1); + spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[2], 0x18, 0x0D, 1); gSprites[spriteId].oam.priority = 0; gSprites[spriteId].data[0] = gTasks[taskId].data[7]; - gSprites[spriteId].callback = sub_8130FB8; + gSprites[spriteId].callback = SpriteCB_PikaSync; gTasks[taskId].data[9] = spriteId; break; case 1: - LoadCompressedObjectPic(&gUnknown_8462F14); - LoadSpritePalette(&gUnknown_8462F24); + LoadCompressedObjectPic(&sOakSpeech_GrassPlatformSpriteSheet); + LoadSpritePalette(&sOakSpeech_GrassPlatformSpritePal); for (i = 0; i < 3; i++) { - spriteId = CreateSprite(&gUnknown_8462F50[i], i * 32 + 88, 0x70, 1); + spriteId = CreateSprite(&sOakSpeech_GrassPlatformSpriteTemplates[i], i * 32 + 88, 0x70, 1); gSprites[spriteId].oam.priority = 2; gSprites[spriteId].animPaused = TRUE; gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -1671,7 +1668,7 @@ static void sub_8130FD4(u8 taskId, u8 state) } } -static void sub_8131168(u8 taskId, u8 state) +static void DestroyLinkedPikaOrGrassPlatformSprites(u8 taskId, u8 state) { u8 i; @@ -1695,49 +1692,49 @@ static void sub_8131168(u8 taskId, u8 state) } } -static void sub_81311F4(u16 whichPic, u16 tileOffset) +static void LoadOaksSpeechTrainerPic(u16 whichPic, u16 tileOffset) { u32 i; switch (whichPic) { case 0: // FIRE - LoadPalette(gUnknown_84615FC, 0x40, 0x40); - LZ77UnCompVram(gUnknown_846163C, (void *)0x06000600 + tileOffset); + LoadPalette(sOakSpeechGfx_RedPal, 0x40, 0x40); + LZ77UnCompVram(sOakSpeechGfx_RedPic, (void *)0x06000600 + tileOffset); break; case 1: // LEAF - LoadPalette(gUnknown_8460ED4, 0x40, 0x40); - LZ77UnCompVram(gUnknown_8460F14, (void *)0x06000600 + tileOffset); + LoadPalette(sOakSpeechGfx_LeafPal, 0x40, 0x40); + LZ77UnCompVram(sOakSpeechGfx_LeafPic, (void *)0x06000600 + tileOffset); break; case 2: // BLUE - LoadPalette(gUnknown_84623AC, 0x60, 0x40); - LZ77UnCompVram(gUnknown_84623EC, (void *)0x06000600 + tileOffset); + LoadPalette(sOakSpeechGfx_RivalPal, 0x60, 0x40); + LZ77UnCompVram(sOakSpeechGfx_RivalPic, (void *)0x06000600 + tileOffset); break; case 3: // OAK - LoadPalette(gUnknown_8461CD4, 0x60, 0x40); - LZ77UnCompVram(gUnknown_8461D14, (void *)0x06000600 + tileOffset); + LoadPalette(sOakSpeechGfx_OakPal, 0x60, 0x40); + LZ77UnCompVram(sOakSpeechGfx_OakPic, (void *)0x06000600 + tileOffset); break; default: return; } - sOakSpeechResources->unk_0004 = AllocZeroed(0x60); + sOakSpeechResources->trainerPicTilemapBuffer = AllocZeroed(0x60); for (i = 0; i < 0x60; i++) - ((u8 *)sOakSpeechResources->unk_0004)[i] = i; + ((u8 *)sOakSpeechResources->trainerPicTilemapBuffer)[i] = i; FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x10); - CopyRectToBgTilemapBufferRect(2, sOakSpeechResources->unk_0004, 0, 0, 8, 12, 11, 2, 8, 12, 0x10, (tileOffset / 64) + 0x18, 0x00); + CopyRectToBgTilemapBufferRect(2, sOakSpeechResources->trainerPicTilemapBuffer, 0, 0, 8, 12, 11, 2, 8, 12, 0x10, (tileOffset / 64) + 0x18, 0x00); CopyBgTilemapBufferToVram(2); - Free(sOakSpeechResources->unk_0004); - sOakSpeechResources->unk_0004 = 0; + Free(sOakSpeechResources->trainerPicTilemapBuffer); + sOakSpeechResources->trainerPicTilemapBuffer = 0; } -static void sub_8131310(void) +static void DestroyOaksSpeechTrainerPic(void) { FillBgTilemapBufferRect(2, 0x000, 11, 1, 8, 12, 0x10); CopyBgTilemapBufferToVram(2); } -static void sub_8131338(u8 taskId) +static void Task_SlowFadeIn(u8 taskId) { u8 i = 0; if (gTasks[taskId].data[1] == 0) @@ -1770,7 +1767,7 @@ static void sub_8131338(u8 taskId) } } -static void sub_813144C(u8 taskId, u8 state) +static void CreateFadeInTask(u8 taskId, u8 state) { u8 taskId2; u8 i = 0; @@ -1779,7 +1776,7 @@ static void sub_813144C(u8 taskId, u8 state) SetGpuReg(REG_OFFSET_BLDALPHA, 0x10); SetGpuReg(REG_OFFSET_BLDY, 0); gTasks[taskId].data[2] = 0; - taskId2 = CreateTask(sub_8131338, 0); + taskId2 = CreateTask(Task_SlowFadeIn, 0); gTasks[taskId2].data[0] = taskId; gTasks[taskId2].data[1] = 16; gTasks[taskId2].data[2] = 0; @@ -1791,7 +1788,7 @@ static void sub_813144C(u8 taskId, u8 state) } } -static void sub_81314DC(u8 taskId) +static void Task_SlowFadeOut(u8 taskId) { u8 i = 0; @@ -1824,7 +1821,7 @@ static void sub_81314DC(u8 taskId) } } -static void sub_81315CC(u8 taskId, u8 state) +static void CreateFadeOutTask(u8 taskId, u8 state) { u8 taskId2; u8 i = 0; @@ -1833,7 +1830,7 @@ static void sub_81315CC(u8 taskId, u8 state) SetGpuReg(REG_OFFSET_BLDALPHA, 0x1000); SetGpuReg(REG_OFFSET_BLDY, 0); gTasks[taskId].data[2] = 0; - taskId2 = CreateTask(sub_81314DC, 0); + taskId2 = CreateTask(Task_SlowFadeOut, 0); gTasks[taskId2].data[0] = taskId; gTasks[taskId2].data[1] = 0; gTasks[taskId2].data[2] = 16; @@ -1845,30 +1842,30 @@ static void sub_81315CC(u8 taskId, u8 state) } } -static void sub_8131660(u8 taskId, u8 state) +static void PrintNameChoiceOptions(u8 taskId, u8 state) { s16 * data = gTasks[taskId].data; const u8 *const * textPtrs; u8 i; - data[13] = AddWindow(&gUnknown_8462EC0[3]); + data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[3]); PutWindowTilemap(data[13]); SetWindowBorderStyle(data[13], 1, sub_80F796C(), 14); FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11); - AddTextPrinterParameterized(data[13], 2, gUnknown_81C574F, 8, 1, 0, NULL); + AddTextPrinterParameterized(data[13], 2, gOtherText_NewName, 8, 1, 0, NULL); if (state == 0) - textPtrs = gSaveBlock2Ptr->playerGender == MALE ? gUnknown_846308C : gUnknown_84630D8; + textPtrs = gSaveBlock2Ptr->playerGender == MALE ? sMaleNameChoices : sFemaleNameChoices; else - textPtrs = gUnknown_8463124; + textPtrs = sRivalNameChoices; for (i = 0; i < 4; i++) { AddTextPrinterParameterized(data[13], 2, textPtrs[i], 8, 16 * (i + 1) + 1, 0, NULL); } - sub_810F7D8(data[13], 2, 0, 1, 16, 5, 0); + ProgramAndPlaceMenuCursorOnWindow(data[13], 2, 0, 1, 16, 5, 0); CopyWindowToVram(data[13], 3); } -static void sub_8131754(u8 arg0, u8 namePick) +static void GetDefaultName(u8 arg0, u8 namePick) { const u8 * src; u8 * dest; @@ -1877,14 +1874,14 @@ static void sub_8131754(u8 arg0, u8 namePick) if (arg0 == 0) { if (gSaveBlock2Ptr->playerGender == MALE) - src = gUnknown_846308C[Random() % 19]; + src = sMaleNameChoices[Random() % 19]; else - src = gUnknown_84630D8[Random() % 19]; + src = sFemaleNameChoices[Random() % 19]; dest = gSaveBlock2Ptr->playerName; } else { - src = gUnknown_8463124[namePick]; + src = sRivalNameChoices[namePick]; dest = gSaveBlock1Ptr->rivalName; } for (i = 0; i < PLAYER_NAME_LENGTH - 1 && src[i] != EOS; i++) diff --git a/src/scrcmd.c b/src/scrcmd.c index 12b35daa4..33859f8c6 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1567,7 +1567,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) ptr = (u8 *)ctx->data[0]; sub_80F6E9C(); - sub_80F6EE4(0, 1); + DrawDialogueFrame(0, 1); AddTextPrinterParameterized(0, 6, ptr, 0, 1, 0, NULL); return FALSE; } diff --git a/src/text.c b/src/text.c index 874e12fd5..86b60485d 100644 --- a/src/text.c +++ b/src/text.c @@ -1791,7 +1791,7 @@ void sub_80062B0(struct Sprite *sprite) } } -u8 sub_8006300(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority) +u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority) { u8 spriteId; LoadSpriteSheet(&gUnknown_81EA68C[sheetId & 1]); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index ef34c1629..e914d7ac6 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1336,7 +1336,7 @@ void sub_815E720(void) sub_815EC0C(); windowId = AddWindow(gUnknown_847A218); sub_80F6E9C(); - sub_80F6F1C(windowId, FALSE); + DrawStdWindowFrame(windowId, FALSE); AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL); for (i = 0; i < 4; i++) diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 579800576..9cf6a6e04 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -663,7 +663,7 @@ static void Task_VsSeeker_3(u8 taskId) { if (sVsSeeker->responseCode == 2) StartAllRespondantIdleMovements(); - sub_80F6F54(0, 1); + ClearDialogWindowAndFrame(0, 1); sub_80696C0(); ScriptContext2_Disable(); DestroyTask(taskId); From c85f726224bbe53502ba98557d2c89eef89d7fbd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Apr 2019 19:21:10 -0400 Subject: [PATCH 071/318] Decompile roamer --- asm/roamer.s | 531 --------------------------------------- data/roamer.s | 5 - include/field_specials.h | 1 + ld_script.txt | 4 +- src/roamer.c | 238 ++++++++++++++++++ 5 files changed, 241 insertions(+), 538 deletions(-) delete mode 100644 asm/roamer.s delete mode 100644 data/roamer.s create mode 100644 src/roamer.c diff --git a/asm/roamer.s b/asm/roamer.s deleted file mode 100644 index 82ce82395..000000000 --- a/asm/roamer.s +++ /dev/null @@ -1,531 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ClearRoamerData -ClearRoamerData: @ 8141C54 - push {lr} - ldr r0, _08141C84 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08141C88 @ =0x000030d0 - adds r0, r1 - movs r1, 0 - movs r2, 0x1C - bl memset - ldr r1, _08141C8C @ =sRoamerLocation - movs r0, 0 - strb r0, [r1] - strb r0, [r1, 0x1] - movs r1, 0 - movs r2, 0 - ldr r0, _08141C90 @ =sLocationHistory -_08141C74: - strb r2, [r0] - strb r2, [r0, 0x1] - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x2 - bls _08141C74 - pop {r0} - bx r0 - .align 2, 0 -_08141C84: .4byte gSaveBlock1Ptr -_08141C88: .4byte 0x000030d0 -_08141C8C: .4byte sRoamerLocation -_08141C90: .4byte sLocationHistory - thumb_func_end ClearRoamerData - - thumb_func_start CreateInitialRoamerMon -CreateInitialRoamerMon: @ 8141C94 - push {r4-r7,lr} - sub sp, 0x10 - ldr r7, _08141CB0 @ =gEnemyParty - bl ScrSpecial_GetStarter - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 @ SPECIES_BULBASAUR - beq _08141CB4 - cmp r0, 0x4 @ SPECIES_CHARMANDER - beq _08141CB8 - movs r6, 0xF3 @ SPECIES_RAIKOU - b _08141CBA - .align 2, 0 -_08141CB0: .4byte gEnemyParty -_08141CB4: - movs r6, 0xF4 @ SPECIES_ENTEI - b _08141CBA -_08141CB8: - movs r6, 0xF5 @ SPECIES_SUICUNE -_08141CBA: - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - adds r0, r7, 0 - adds r1, r6, 0 - movs r2, 0x32 - movs r3, 0x20 - bl CreateMon - ldr r5, _08141D8C @ =gSaveBlock1Ptr - ldr r1, [r5] - ldr r4, _08141D90 @ =0x000030d0 - adds r1, r4 - movs r2, 0 - strh r6, [r1, 0x8] - movs r0, 0x32 - strb r0, [r1, 0xC] - ldr r0, [r5] - adds r0, r4 - strb r2, [r0, 0xD] - ldr r0, [r5] - adds r0, r4 - movs r1, 0x1 - strb r1, [r0, 0x13] - adds r0, r7, 0 - movs r1, 0x42 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - str r0, [r1] - adds r0, r7, 0 - movs r1, 0 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - str r0, [r1, 0x4] - adds r0, r7, 0 - movs r1, 0x3A - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strh r0, [r1, 0xA] - adds r0, r7, 0 - movs r1, 0x16 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strb r0, [r1, 0xE] - adds r0, r7, 0 - movs r1, 0x17 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strb r0, [r1, 0xF] - adds r0, r7, 0 - movs r1, 0x18 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strb r0, [r1, 0x10] - adds r0, r7, 0 - movs r1, 0x21 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strb r0, [r1, 0x11] - adds r0, r7, 0 - movs r1, 0x2F - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strb r0, [r1, 0x12] - ldr r5, _08141D94 @ =sRoamerLocation - movs r0, 0x3 - strb r0, [r5] - bl Random - ldr r4, _08141D98 @ =sRoamerLocations - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 3 - subs r1, r0 - adds r1, r4 - ldrb r0, [r1] - strb r0, [r5, 0x1] - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08141D8C: .4byte gSaveBlock1Ptr -_08141D90: .4byte 0x000030d0 -_08141D94: .4byte sRoamerLocation -_08141D98: .4byte sRoamerLocations - thumb_func_end CreateInitialRoamerMon - - thumb_func_start InitRoamer -InitRoamer: @ 8141D9C - push {lr} - bl ClearRoamerData - bl CreateInitialRoamerMon - pop {r0} - bx r0 - thumb_func_end InitRoamer - - thumb_func_start UpdateLocationHistoryForRoamer -UpdateLocationHistoryForRoamer: @ 8141DAC - ldr r0, _08141DCC @ =sLocationHistory - ldrb r1, [r0, 0x2] - strb r1, [r0, 0x4] - ldrb r1, [r0, 0x3] - strb r1, [r0, 0x5] - ldrb r1, [r0] - strb r1, [r0, 0x2] - ldrb r1, [r0, 0x1] - strb r1, [r0, 0x3] - ldr r1, _08141DD0 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x4] - strb r1, [r0] - ldrb r1, [r2, 0x5] - strb r1, [r0, 0x1] - bx lr - .align 2, 0 -_08141DCC: .4byte sLocationHistory -_08141DD0: .4byte gSaveBlock1Ptr - thumb_func_end UpdateLocationHistoryForRoamer - - thumb_func_start RoamerMoveToOtherLocationSet -RoamerMoveToOtherLocationSet: @ 8141DD4 - push {r4,r5,lr} - ldr r0, _08141E18 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08141E1C @ =0x000030d0 - adds r0, r1 - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08141E10 - ldr r1, _08141E20 @ =sRoamerLocation - movs r0, 0x3 - strb r0, [r1] - ldr r5, _08141E24 @ =sRoamerLocations - adds r4, r1, 0 -_08141DEE: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 3 - subs r1, r0 - adds r1, r5 - ldrb r1, [r1] - ldrb r0, [r4, 0x1] - cmp r0, r1 - beq _08141DEE - strb r1, [r4, 0x1] -_08141E10: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08141E18: .4byte gSaveBlock1Ptr -_08141E1C: .4byte 0x000030d0 -_08141E20: .4byte sRoamerLocation -_08141E24: .4byte sRoamerLocations - thumb_func_end RoamerMoveToOtherLocationSet - - thumb_func_start RoamerMove -RoamerMove: @ 8141E28 - push {r4-r7,lr} - movs r4, 0 - bl Random - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 12 - ands r1, r0 - cmp r1, 0 - bne _08141E42 - bl RoamerMoveToOtherLocationSet - b _08141EB2 -_08141E42: - ldr r0, _08141E94 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08141E98 @ =0x000030d0 - adds r0, r1 - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08141EB2 - ldr r7, _08141E9C @ =sRoamerLocation -_08141E52: - ldr r3, _08141EA0 @ =sRoamerLocations - lsls r0, r4, 3 - subs r2, r0, r4 - adds r1, r2, r3 - ldrb r0, [r7, 0x1] - ldrb r1, [r1] - cmp r0, r1 - bne _08141EA8 - adds r6, r3, 0 - adds r5, r2, 0x1 - ldr r4, _08141EA4 @ =sLocationHistory -_08141E68: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, r5 - adds r0, r6 - ldrb r1, [r0] - ldrb r0, [r4, 0x4] - cmp r0, 0x3 - bne _08141E8C - ldrb r0, [r4, 0x5] - cmp r0, r1 - beq _08141E68 -_08141E8C: - cmp r1, 0xFF - beq _08141E68 - strb r1, [r7, 0x1] - b _08141EB2 - .align 2, 0 -_08141E94: .4byte gSaveBlock1Ptr -_08141E98: .4byte 0x000030d0 -_08141E9C: .4byte sRoamerLocation -_08141EA0: .4byte sRoamerLocations -_08141EA4: .4byte sLocationHistory -_08141EA8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x18 - bls _08141E52 -_08141EB2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end RoamerMove - - thumb_func_start IsRoamerAt -IsRoamerAt: @ 8141EB8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08141EE4 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, _08141EE8 @ =0x000030d0 - adds r0, r3 - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08141EF0 - ldr r0, _08141EEC @ =sRoamerLocation - ldrb r3, [r0] - cmp r2, r3 - bne _08141EF0 - ldrb r0, [r0, 0x1] - cmp r1, r0 - bne _08141EF0 - movs r0, 0x1 - b _08141EF2 - .align 2, 0 -_08141EE4: .4byte gSaveBlock1Ptr -_08141EE8: .4byte 0x000030d0 -_08141EEC: .4byte sRoamerLocation -_08141EF0: - movs r0, 0 -_08141EF2: - pop {r1} - bx r1 - thumb_func_end IsRoamerAt - - thumb_func_start CreateRoamerMonInstance -CreateRoamerMonInstance: @ 8141EF8 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08141F84 @ =gEnemyParty - bl ZeroEnemyPartyMons - ldr r4, _08141F88 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, _08141F8C @ =0x000030d0 - adds r0, r1 - ldrh r1, [r0, 0x8] - ldrb r2, [r0, 0xC] - ldr r3, [r0] - ldr r0, [r0, 0x4] - str r0, [sp] - adds r0, r5, 0 - bl CreateMonWithIVsPersonality - ldr r2, [r4] - ldr r0, _08141F90 @ =0x000030dd - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x37 - bl SetMonData - ldr r2, [r4] - ldr r1, _08141F94 @ =0x000030da - adds r2, r1 - adds r0, r5, 0 - movs r1, 0x39 - bl SetMonData - ldr r2, [r4] - ldr r0, _08141F98 @ =0x000030de - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x16 - bl SetMonData - ldr r2, [r4] - ldr r1, _08141F9C @ =0x000030df - adds r2, r1 - adds r0, r5, 0 - movs r1, 0x17 - bl SetMonData - ldr r2, [r4] - ldr r0, _08141FA0 @ =0x000030e0 - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x18 - bl SetMonData - ldr r2, [r4] - ldr r1, _08141FA4 @ =0x000030e1 - adds r2, r1 - adds r0, r5, 0 - movs r1, 0x21 - bl SetMonData - ldr r2, [r4] - ldr r0, _08141FA8 @ =0x000030e2 - adds r2, r0 - adds r0, r5, 0 - movs r1, 0x2F - bl SetMonData - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08141F84: .4byte gEnemyParty -_08141F88: .4byte gSaveBlock1Ptr -_08141F8C: .4byte 0x000030d0 -_08141F90: .4byte 0x000030dd -_08141F94: .4byte 0x000030da -_08141F98: .4byte 0x000030de -_08141F9C: .4byte 0x000030df -_08141FA0: .4byte 0x000030e0 -_08141FA4: .4byte 0x000030e1 -_08141FA8: .4byte 0x000030e2 - thumb_func_end CreateRoamerMonInstance - - thumb_func_start TryStartRoamerEncounter -TryStartRoamerEncounter: @ 8141FAC - push {lr} - ldr r0, _08141FDC @ =gSaveBlock1Ptr - ldr r1, [r0] - ldrb r0, [r1, 0x4] - ldrb r1, [r1, 0x5] - bl IsRoamerAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08141FE0 - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - cmp r1, 0 - bne _08141FE0 - bl CreateRoamerMonInstance - movs r0, 0x1 - b _08141FE2 - .align 2, 0 -_08141FDC: .4byte gSaveBlock1Ptr -_08141FE0: - movs r0, 0 -_08141FE2: - pop {r1} - bx r1 - thumb_func_end TryStartRoamerEncounter - - thumb_func_start UpdateRoamerHPStatus -UpdateRoamerHPStatus: @ 8141FE8 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x39 - bl GetMonData - ldr r5, _08142014 @ =gSaveBlock1Ptr - ldr r1, [r5] - ldr r4, _08142018 @ =0x000030d0 - adds r1, r4 - strh r0, [r1, 0xA] - adds r0, r6, 0 - movs r1, 0x37 - bl GetMonData - ldr r1, [r5] - adds r1, r4 - strb r0, [r1, 0xD] - bl RoamerMoveToOtherLocationSet - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08142014: .4byte gSaveBlock1Ptr -_08142018: .4byte 0x000030d0 - thumb_func_end UpdateRoamerHPStatus - - thumb_func_start SetRoamerInactive -SetRoamerInactive: @ 814201C - ldr r0, _0814202C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08142030 @ =0x000030d0 - adds r0, r1 - movs r1, 0 - strb r1, [r0, 0x13] - bx lr - .align 2, 0 -_0814202C: .4byte gSaveBlock1Ptr -_08142030: .4byte 0x000030d0 - thumb_func_end SetRoamerInactive - - thumb_func_start GetRoamerLocation -GetRoamerLocation: @ 8142034 - ldr r3, _08142040 @ =sRoamerLocation - ldrb r2, [r3] - strb r2, [r0] - ldrb r0, [r3, 0x1] - strb r0, [r1] - bx lr - .align 2, 0 -_08142040: .4byte sRoamerLocation - thumb_func_end GetRoamerLocation - - thumb_func_start GetRoamerLocationMapSectionId -GetRoamerLocationMapSectionId: @ 8142044 - push {lr} - ldr r0, _08142064 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08142068 @ =0x000030d0 - adds r0, r1 - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _08142070 - ldr r1, _0814206C @ =sRoamerLocation - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - bl get_mapheader_by_bank_and_number - ldrb r0, [r0, 0x14] - b _08142072 - .align 2, 0 -_08142064: .4byte gSaveBlock1Ptr -_08142068: .4byte 0x000030d0 -_0814206C: .4byte sRoamerLocation -_08142070: - movs r0, 0xC5 -_08142072: - pop {r1} - bx r1 - thumb_func_end GetRoamerLocationMapSectionId - - .align 2, 0 @ Don't pad with nop. diff --git a/data/roamer.s b/data/roamer.s deleted file mode 100644 index 92ef32ff3..000000000 --- a/data/roamer.s +++ /dev/null @@ -1,5 +0,0 @@ - .section .rodata - .align 2 - -sRoamerLocations:: @ 8466C58 - .incbin "baserom.gba", 0x466C58, 0xB8 diff --git a/include/field_specials.h b/include/field_specials.h index 2d495fdd5..c1bc8e8c9 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -6,5 +6,6 @@ u8 GetLeadMonIndex(void); u8 CountDigits(u16 number); void TV_PrintIntToStringVar(u8, int); +u16 ScrSpecial_GetStarter(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/ld_script.txt b/ld_script.txt index eb38837ef..52e4ff197 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -240,7 +240,7 @@ SECTIONS { asm/itemfinder.o(.text); asm/buy_menu_helpers.o(.text); asm/slot_machine.o(.text); - asm/roamer.o(.text); + src/roamer.o(.text); asm/mystery_gift_menu.o(.text); asm/link_rfu_4.o(.text); src/mevent.o(.text); @@ -395,7 +395,7 @@ SECTIONS { data/itemfinder.o(.rodata); data/buy_menu_helpers.o(.rodata); data/slot_machine.o(.rodata); - data/roamer.o(.rodata); + src/roamer.o(.rodata); data/mystery_gift_menu.o(.rodata); data/link_rfu_4.o(.rodata); src/mevent.o(.rodata); diff --git a/src/roamer.c b/src/roamer.c new file mode 100644 index 000000000..6ad009e8b --- /dev/null +++ b/src/roamer.c @@ -0,0 +1,238 @@ +#include "global.h" +#include "roamer.h" +#include "random.h" +#include "overworld.h" +#include "field_specials.h" +#include "constants/species.h" + +EWRAM_DATA u8 sLocationHistory[3][2] = {}; +EWRAM_DATA u8 sRoamerLocation[2] = {}; + +#define saveRoamer (*(&gSaveBlock1Ptr->roamer)) + +enum +{ + MAP_GRP = 0, // map group + MAP_NUM = 1, // map number +}; + +const u8 sRoamerLocations[][7] = { + {0x13, 0x14, 0x27, 0x29, 0xff, 0xff, 0xff}, + {0x14, 0x13, 0x15, 0x29, 0xff, 0xff, 0xff}, + {0x15, 0x14, 0x16, 0xff, 0xff, 0xff, 0xff}, + {0x16, 0x15, 0x17, 0x1b, 0x2b, 0xff, 0xff}, + {0x17, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x2b}, + {0x18, 0x17, 0x19, 0x1a, 0x1d, 0xff, 0xff}, + {0x19, 0x17, 0x18, 0x1a, 0x22, 0xff, 0xff}, + {0x1a, 0x17, 0x18, 0x19, 0x1c, 0x1e, 0xff}, + {0x1b, 0x16, 0x17, 0x1c, 0x2b, 0xff, 0xff}, + {0x1c, 0x1a, 0x1b, 0x1e, 0xff, 0xff, 0xff}, + {0x1d, 0x18, 0x1e, 0xff, 0xff, 0xff, 0xff}, + {0x1e, 0x1c, 0x1d, 0x1f, 0xff, 0xff, 0xff}, + {0x1f, 0x1e, 0x20, 0xff, 0xff, 0xff, 0xff}, + {0x20, 0x1f, 0x21, 0xff, 0xff, 0xff, 0xff}, + {0x21, 0x20, 0x24, 0x25, 0xff, 0xff, 0xff}, + {0x22, 0x19, 0x23, 0xff, 0xff, 0xff, 0xff}, + {0x23, 0x22, 0x24, 0xff, 0xff, 0xff, 0xff}, + {0x24, 0x21, 0x23, 0x25, 0xff, 0xff, 0xff}, + {0x25, 0x21, 0x24, 0x26, 0xff, 0xff, 0xff}, + {0x26, 0x25, 0x27, 0xff, 0xff, 0xff, 0xff}, + {0x27, 0x13, 0x26, 0xff, 0xff, 0xff, 0xff}, + {0x29, 0x13, 0x14, 0x2a, 0xff, 0xff, 0xff}, + {0x2a, 0x29, 0x14, 0xff, 0xff, 0xff, 0xff}, + {0x2b, 0x16, 0x17, 0x1b, 0xff, 0xff, 0xff}, + {0x2c, 0x2b, 0x1b, 0xff, 0xff, 0xff, 0xff}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} +}; + +void ClearRoamerData(void) +{ + u32 i; + gSaveBlock1Ptr->roamer = (struct Roamer){}; + sRoamerLocation[MAP_GRP] = 0; + sRoamerLocation[MAP_NUM] = 0; + for (i = 0; i < 3; i++) + { + sLocationHistory[i][MAP_GRP] = 0; + sLocationHistory[i][MAP_NUM] = 0; + } +} + +#define GetRoamerSpecies() ({\ + u16 a;\ + switch (ScrSpecial_GetStarter())\ + {\ + default:\ + a = SPECIES_RAIKOU;\ + break;\ + case SPECIES_BULBASAUR:\ + a = SPECIES_ENTEI;\ + break;\ + case SPECIES_CHARMANDER:\ + a = SPECIES_SUICUNE;\ + break;\ + }\ + a;\ +}) + +void CreateInitialRoamerMon(void) +{ + struct Pokemon * tmpMon = &gEnemyParty[0]; + u16 roamerMon; + + CreateMon(tmpMon, (roamerMon = GetRoamerSpecies()), 50, 0x20, 0, 0, 0, 0); + saveRoamer.species = roamerMon; + saveRoamer.level = 50; + saveRoamer.status = 0; + saveRoamer.active = TRUE; + saveRoamer.ivs = GetMonData(tmpMon, MON_DATA_IVS); + saveRoamer.personality = GetMonData(tmpMon, MON_DATA_PERSONALITY); + saveRoamer.hp = GetMonData(tmpMon, MON_DATA_MAX_HP); + saveRoamer.cool = GetMonData(tmpMon, MON_DATA_COOL); + saveRoamer.beauty = GetMonData(tmpMon, MON_DATA_BEAUTY); + saveRoamer.cute = GetMonData(tmpMon, MON_DATA_CUTE); + saveRoamer.smart = GetMonData(tmpMon, MON_DATA_SMART); + saveRoamer.tough = GetMonData(tmpMon, MON_DATA_TOUGH); + sRoamerLocation[MAP_GRP] = 3; + sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0]; +} + +void InitRoamer(void) +{ + ClearRoamerData(); + CreateInitialRoamerMon(); +} + +void UpdateLocationHistoryForRoamer(void) +{ + sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP]; + sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM]; + sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP]; + sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM]; + sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup; + sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum; +} + +void RoamerMoveToOtherLocationSet(void) +{ + u8 mapNum = 0; + struct Roamer *roamer = &saveRoamer; + + if (!roamer->active) + return; + + sRoamerLocation[MAP_GRP] = 3; + + while (1) + { + mapNum = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0]; + if (sRoamerLocation[MAP_NUM] != mapNum) + { + sRoamerLocation[MAP_NUM] = mapNum; + return; + } + } +} + + +void RoamerMove(void) +{ + u8 locSet = 0; + + if ((Random() % 16) == 0) + { + RoamerMoveToOtherLocationSet(); + } + else + { + struct Roamer *roamer = &saveRoamer; + + if (!roamer->active) + return; + + while (locSet < (ARRAY_COUNT(sRoamerLocations) - 1)) + { + if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0]) + { + u8 mapNum; + while (1) + { + mapNum = sRoamerLocations[locSet][(Random() % 6) + 1]; + if (!(sLocationHistory[2][MAP_GRP] == 3 && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != 0xFF) + break; + } + sRoamerLocation[MAP_NUM] = mapNum; + return; + } + locSet++; + } + } +} + +bool8 IsRoamerAt(u8 mapGroup, u8 mapNum) +{ + struct Roamer *roamer = &saveRoamer; + + if (roamer->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM]) + return TRUE; + else + return FALSE; +} + +void CreateRoamerMonInstance(void) +{ + struct Pokemon *mon; + struct Roamer *roamer; + + mon = &gEnemyParty[0]; + ZeroEnemyPartyMons(); + roamer = &saveRoamer; + CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality); + SetMonData(mon, MON_DATA_STATUS, &gSaveBlock1Ptr->roamer.status); + SetMonData(mon, MON_DATA_HP, &gSaveBlock1Ptr->roamer.hp); + SetMonData(mon, MON_DATA_COOL, &gSaveBlock1Ptr->roamer.cool); + SetMonData(mon, MON_DATA_BEAUTY, &gSaveBlock1Ptr->roamer.beauty); + SetMonData(mon, MON_DATA_CUTE, &gSaveBlock1Ptr->roamer.cute); + SetMonData(mon, MON_DATA_SMART, &gSaveBlock1Ptr->roamer.smart); + SetMonData(mon, MON_DATA_TOUGH, &gSaveBlock1Ptr->roamer.tough); +} + +bool8 TryStartRoamerEncounter(void) +{ + if (IsRoamerAt(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum) == TRUE && (Random() % 4) == 0) + { + CreateRoamerMonInstance(); + return TRUE; + } + else + { + return FALSE; + } +} +void UpdateRoamerHPStatus(struct Pokemon *mon) +{ + saveRoamer.hp = GetMonData(mon, MON_DATA_HP); + saveRoamer.status = GetMonData(mon, MON_DATA_STATUS); + + RoamerMoveToOtherLocationSet(); +} + +void SetRoamerInactive(void) +{ + struct Roamer *roamer = &saveRoamer; + roamer->active = FALSE; +} + +void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) +{ + *mapGroup = sRoamerLocation[MAP_GRP]; + *mapNum = sRoamerLocation[MAP_NUM]; +} + +u16 GetRoamerLocationMapSectionId(void) +{ + struct Roamer *roamer = &saveRoamer; + if (!saveRoamer.active) + return 0xC5; + return get_mapheader_by_bank_and_number(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId; +} From 903fcde223d71a105ae888aa7faeceb9ed811039 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Apr 2019 08:50:52 -0400 Subject: [PATCH 072/318] break up data_835B488.s before scrcmd --- data/data_835B488.s | 668 ------------------------------------- data/field_door.s | 17 + data/field_ground_effect.s | 34 ++ data/field_map_obj.s | 508 ++++++++++++++++++++++++++++ data/field_player_avatar.s | 73 ++++ data/map_obj_80688E4.s | 30 ++ ld_script.txt | 8 +- src/scrcmd.c | 4 +- 8 files changed, 670 insertions(+), 672 deletions(-) create mode 100644 data/field_door.s create mode 100644 data/field_ground_effect.s create mode 100644 data/field_map_obj.s create mode 100644 data/field_player_avatar.s create mode 100644 data/map_obj_80688E4.s diff --git a/data/data_835B488.s b/data/data_835B488.s index 2a0bfcf87..bcda20bb0 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -1,673 +1,5 @@ .section .rodata - .align 2 -gUnknown_835B488:: @ 835B488 - .incbin "baserom.gba", 0x35B488, 0x14 - -gUnknown_835B49C:: @ 835B49C - .incbin "baserom.gba", 0x35B49C, 0x14 - -gUnknown_835B4B0:: @ 835B4B0 - .incbin "baserom.gba", 0x35B4B0, 0x14 - -gUnknown_835B4C4:: @ 835B4C4 - .incbin "baserom.gba", 0x35B4C4, 0x114 - -gUnknown_835B5D8:: @ 835B5D8 - .incbin "baserom.gba", 0x35B5D8, 0x18C - -gUnknown_835B764:: @ 835B764 - .incbin "baserom.gba", 0x35B764, 0xB0 - -gUnknown_835B814:: @ 835B814 - .incbin "baserom.gba", 0x35B814, 0xC - -gUnknown_835B820:: @ 835B820 - .incbin "baserom.gba", 0x35B820, 0x8 - -gUnknown_835B828:: @ 835B828 - .incbin "baserom.gba", 0x35B828, 0x14 - -gUnknown_835B83C:: @ 835B83C - .incbin "baserom.gba", 0x35B83C, 0x8 - -gUnknown_835B844:: @ 835B844 - .incbin "baserom.gba", 0x35B844, 0x20 - -gUnknown_835B864:: @ 835B864 - .incbin "baserom.gba", 0x35B864, 0x10 - -gUnknown_835B874:: @ 835B874 - .incbin "baserom.gba", 0x35B874, 0xC - -gUnknown_835B880:: @ 835B880 - .incbin "baserom.gba", 0x35B880, 0x2 - -gUnknown_835B882:: @ 835B882 - .incbin "baserom.gba", 0x35B882, 0xC - -gUnknown_835B88E:: @ 835B88E - .incbin "baserom.gba", 0x35B88E, 0x2 - -gUnknown_835B890:: @ 835B890 - .incbin "baserom.gba", 0x35B890, 0x10 - -gUnknown_835B8A0:: @ 835B8A0 - .incbin "baserom.gba", 0x35B8A0, 0xC - -gUnknown_835B8AC:: @ 835B8AC - .incbin "baserom.gba", 0x35B8AC, 0x4 - -gUnknown_835B8B0:: @ 835B8B0 - .incbin "baserom.gba", 0x35B8B0, 0x10 - -gUnknown_835B8C0:: @ 835B8C0 - .incbin "baserom.gba", 0x35B8C0, 0x4 - -gUnknown_835B8C4:: @ 835B8C4 - .incbin "baserom.gba", 0x35B8C4, 0x8 - -gUnknown_835B8CC:: @ 835B8CC - .incbin "baserom.gba", 0x35B8CC, 0x40 - -gUnknown_835B90C:: @ 835B90C - .incbin "baserom.gba", 0x35B90C, 0x6 - -gUnknown_835B912:: @ 835B912 - .incbin "baserom.gba", 0x35B912, 0x6 - -gUnknown_835B918:: @ 835B918 - .incbin "baserom.gba", 0x35B918, 0x2 - -gUnknown_835B91A:: @ 835B91A - .incbin "baserom.gba", 0x35B91A, 0x6 - -gUnknown_835B920:: @ 835B920 - .incbin "baserom.gba", 0x35B920, 0xC - -gUnknown_835B92C:: @ 835B92C - .incbin "baserom.gba", 0x35B92C, 0x8 - -gUnknown_835B934:: @ 835B934 - .incbin "baserom.gba", 0x35B934, 0x10 - -gUnknown_835B944:: @ 835B944 - .incbin "baserom.gba", 0x35B944, 0x18 - -gUnknown_835B95C:: @ 835B95C - .incbin "baserom.gba", 0x35B95C, 0x3DA2C - -gUnknown_8399388:: @ 8399388 - .incbin "baserom.gba", 0x399388, 0x908 - -gUnknown_8399C90:: @ 8399C90 - .incbin "baserom.gba", 0x399C90, 0x5F38 - -gUnknown_839FBC8:: @ 839FBC8 - .incbin "baserom.gba", 0x39FBC8, 0x144 - -gUnknown_839FD0C:: @ 839FD0C - .incbin "baserom.gba", 0x39FD0C, 0x51 - -gUnknown_839FD5D:: @ 839FD5D - .incbin "baserom.gba", 0x39FD5D, 0x53 - -gUnknown_839FDB0:: @ 839FDB0 - .incbin "baserom.gba", 0x39FDB0, 0x260 - -gUnknown_83A0010:: @ 83A0010 - .incbin "baserom.gba", 0x3A0010, 0x3688 - -gUnknown_83A3698:: @ 83A3698 - .incbin "baserom.gba", 0x3A3698, 0x1AC0 - -gUnknown_83A5158:: @ 83A5158 - .incbin "baserom.gba", 0x3A5158, 0xB0 - -gUnknown_83A5208:: @ 83A5208 - .incbin "baserom.gba", 0x3A5208, 0x70 - -gUnknown_83A5278:: @ 83A5278 - .incbin "baserom.gba", 0x3A5278, 0xB8 - -gUnknown_83A5330:: @ 83A5330 - .incbin "baserom.gba", 0x3A5330, 0x18 - -gUnknown_83A5348:: @ 83A5348 - .incbin "baserom.gba", 0x3A5348, 0xCB8 - -gUnknown_83A6000:: @ 83A6000 - .incbin "baserom.gba", 0x3A6000, 0x10 - -gUnknown_83A6010:: @ 83A6010 - .incbin "baserom.gba", 0x3A6010, 0x8 - -gUnknown_83A6018:: @ 83A6018 - .incbin "baserom.gba", 0x3A6018, 0x1C - -gUnknown_83A6034:: @ 83A6034 - .incbin "baserom.gba", 0x3A6034, 0x1C - -gUnknown_83A6050:: @ 83A6050 - .incbin "baserom.gba", 0x3A6050, 0x4 - -gUnknown_83A6054:: @ 83A6054 - .incbin "baserom.gba", 0x3A6054, 0x2C - -gUnknown_83A6080:: @ 83A6080 - .incbin "baserom.gba", 0x3A6080, 0x14 - -gUnknown_83A6094:: @ 83A6094 - .incbin "baserom.gba", 0x3A6094, 0x1C - -gUnknown_83A60B0:: @ 83A60B0 - .incbin "baserom.gba", 0x3A60B0, 0x4 - -gUnknown_83A60B4:: @ 83A60B4 - .incbin "baserom.gba", 0x3A60B4, 0x1C - -gUnknown_83A60D0:: @ 83A60D0 - .incbin "baserom.gba", 0x3A60D0, 0x4 - -gUnknown_83A60D4:: @ 83A60D4 - .incbin "baserom.gba", 0x3A60D4, 0xC - -gUnknown_83A60E0:: @ 83A60E0 - .incbin "baserom.gba", 0x3A60E0, 0x14 - -gUnknown_83A60F4:: @ 83A60F4 - .incbin "baserom.gba", 0x3A60F4, 0x14 - -gUnknown_83A6108:: @ 83A6108 - .incbin "baserom.gba", 0x3A6108, 0x14 - -gUnknown_83A611C:: @ 83A611C - .incbin "baserom.gba", 0x3A611C, 0x4 - -gUnknown_83A6120:: @ 83A6120 - .incbin "baserom.gba", 0x3A6120, 0x14 - -gUnknown_83A6134:: @ 83A6134 - .incbin "baserom.gba", 0x3A6134, 0x4 - -gUnknown_83A6138:: @ 83A6138 - .incbin "baserom.gba", 0x3A6138, 0x14 - -gUnknown_83A614C:: @ 83A614C - .incbin "baserom.gba", 0x3A614C, 0x4 - -gUnknown_83A6150:: @ 83A6150 - .incbin "baserom.gba", 0x3A6150, 0x14 - -gUnknown_83A6164:: @ 83A6164 - .incbin "baserom.gba", 0x3A6164, 0x4 - -gUnknown_83A6168:: @ 83A6168 - .incbin "baserom.gba", 0x3A6168, 0x14 - -gUnknown_83A617C:: @ 83A617C - .incbin "baserom.gba", 0x3A617C, 0x4 - -gUnknown_83A6180:: @ 83A6180 - .incbin "baserom.gba", 0x3A6180, 0x14 - -gUnknown_83A6194:: @ 83A6194 - .incbin "baserom.gba", 0x3A6194, 0x4 - -gUnknown_83A6198:: @ 83A6198 - .incbin "baserom.gba", 0x3A6198, 0x14 - -gUnknown_83A61AC:: @ 83A61AC - .incbin "baserom.gba", 0x3A61AC, 0x4 - -gUnknown_83A61B0:: @ 83A61B0 - .incbin "baserom.gba", 0x3A61B0, 0x14 - -gUnknown_83A61C4:: @ 83A61C4 - .incbin "baserom.gba", 0x3A61C4, 0x4 - -gUnknown_83A61C8:: @ 83A61C8 - .incbin "baserom.gba", 0x3A61C8, 0x10 - -gUnknown_83A61D8:: @ 83A61D8 - .incbin "baserom.gba", 0x3A61D8, 0x8 - -gUnknown_83A61E0:: @ 83A61E0 - .incbin "baserom.gba", 0x3A61E0, 0x10 - -gUnknown_83A61F0:: @ 83A61F0 - .incbin "baserom.gba", 0x3A61F0, 0x8 - -gUnknown_83A61F8:: @ 83A61F8 - .incbin "baserom.gba", 0x3A61F8, 0x10 - -gUnknown_83A6208:: @ 83A6208 - .incbin "baserom.gba", 0x3A6208, 0xC - -gUnknown_83A6214:: @ 83A6214 - .incbin "baserom.gba", 0x3A6214, 0x4 - -gUnknown_83A6218:: @ 83A6218 - .incbin "baserom.gba", 0x3A6218, 0xC - -gUnknown_83A6224:: @ 83A6224 - .incbin "baserom.gba", 0x3A6224, 0x4 - -gUnknown_83A6228:: @ 83A6228 - .incbin "baserom.gba", 0x3A6228, 0xC - -gUnknown_83A6234:: @ 83A6234 - .incbin "baserom.gba", 0x3A6234, 0x4 - -gUnknown_83A6238:: @ 83A6238 - .incbin "baserom.gba", 0x3A6238, 0xC - -gUnknown_83A6244:: @ 83A6244 - .incbin "baserom.gba", 0x3A6244, 0x4 - -gUnknown_83A6248:: @ 83A6248 - .incbin "baserom.gba", 0x3A6248, 0xC - -gUnknown_83A6254:: @ 83A6254 - .incbin "baserom.gba", 0x3A6254, 0x4 - -gUnknown_83A6258:: @ 83A6258 - .incbin "baserom.gba", 0x3A6258, 0xC - -gUnknown_83A6264:: @ 83A6264 - .incbin "baserom.gba", 0x3A6264, 0x4 - -gUnknown_83A6268:: @ 83A6268 - .incbin "baserom.gba", 0x3A6268, 0xC - -gUnknown_83A6274:: @ 83A6274 - .incbin "baserom.gba", 0x3A6274, 0xC - -gUnknown_83A6280:: @ 83A6280 - .incbin "baserom.gba", 0x3A6280, 0x4 - -gUnknown_83A6284:: @ 83A6284 - .incbin "baserom.gba", 0x3A6284, 0xC - -gUnknown_83A6290:: @ 83A6290 - .incbin "baserom.gba", 0x3A6290, 0x4 - -gUnknown_83A6294:: @ 83A6294 - .incbin "baserom.gba", 0x3A6294, 0xC - -gUnknown_83A62A0:: @ 83A62A0 - .incbin "baserom.gba", 0x3A62A0, 0x4 - -gUnknown_83A62A4:: @ 83A62A4 - .incbin "baserom.gba", 0x3A62A4, 0xC - -gUnknown_83A62B0:: @ 83A62B0 - .incbin "baserom.gba", 0x3A62B0, 0x4 - -gUnknown_83A62B4:: @ 83A62B4 - .incbin "baserom.gba", 0x3A62B4, 0xC - -gUnknown_83A62C0:: @ 83A62C0 - .incbin "baserom.gba", 0x3A62C0, 0x4 - -gUnknown_83A62C4:: @ 83A62C4 - .incbin "baserom.gba", 0x3A62C4, 0xC - -gUnknown_83A62D0:: @ 83A62D0 - .incbin "baserom.gba", 0x3A62D0, 0x4 - -gUnknown_83A62D4:: @ 83A62D4 - .incbin "baserom.gba", 0x3A62D4, 0xC - -gUnknown_83A62E0:: @ 83A62E0 - .incbin "baserom.gba", 0x3A62E0, 0x4 - -gUnknown_83A62E4:: @ 83A62E4 - .incbin "baserom.gba", 0x3A62E4, 0xC - -gUnknown_83A62F0:: @ 83A62F0 - .incbin "baserom.gba", 0x3A62F0, 0x4 - -gUnknown_83A62F4:: @ 83A62F4 - .incbin "baserom.gba", 0x3A62F4, 0xC - -gUnknown_83A6300:: @ 83A6300 - .incbin "baserom.gba", 0x3A6300, 0x4 - -gUnknown_83A6304:: @ 83A6304 - .incbin "baserom.gba", 0x3A6304, 0xC - -gUnknown_83A6310:: @ 83A6310 - .incbin "baserom.gba", 0x3A6310, 0x4 - -gUnknown_83A6314:: @ 83A6314 - .incbin "baserom.gba", 0x3A6314, 0xC - -gUnknown_83A6320:: @ 83A6320 - .incbin "baserom.gba", 0x3A6320, 0x4 - -gUnknown_83A6324:: @ 83A6324 - .incbin "baserom.gba", 0x3A6324, 0xC - -gUnknown_83A6330:: @ 83A6330 - .incbin "baserom.gba", 0x3A6330, 0x4 - -gUnknown_83A6334:: @ 83A6334 - .incbin "baserom.gba", 0x3A6334, 0xC - -gUnknown_83A6340:: @ 83A6340 - .incbin "baserom.gba", 0x3A6340, 0x4 - -gUnknown_83A6344:: @ 83A6344 - .incbin "baserom.gba", 0x3A6344, 0xC - -gUnknown_83A6350:: @ 83A6350 - .incbin "baserom.gba", 0x3A6350, 0x4 - -gUnknown_83A6354:: @ 83A6354 - .incbin "baserom.gba", 0x3A6354, 0xC - -gUnknown_83A6360:: @ 83A6360 - .incbin "baserom.gba", 0x3A6360, 0x4 - -gUnknown_83A6364:: @ 83A6364 - .incbin "baserom.gba", 0x3A6364, 0xC - -gUnknown_83A6370:: @ 83A6370 - .incbin "baserom.gba", 0x3A6370, 0x4 - -gUnknown_83A6374:: @ 83A6374 - .incbin "baserom.gba", 0x3A6374, 0xC - -gUnknown_83A6380:: @ 83A6380 - .incbin "baserom.gba", 0x3A6380, 0x4 - -gUnknown_83A6384:: @ 83A6384 - .incbin "baserom.gba", 0x3A6384, 0xC - -gUnknown_83A6390:: @ 83A6390 - .incbin "baserom.gba", 0x3A6390, 0x2C - -gUnknown_83A63BC:: @ 83A63BC - .incbin "baserom.gba", 0x3A63BC, 0xC - -gUnknown_83A63C8:: @ 83A63C8 - .incbin "baserom.gba", 0x3A63C8, 0x4 - -gUnknown_83A63CC:: @ 83A63CC - .incbin "baserom.gba", 0x3A63CC, 0x8 - -gUnknown_83A63D4:: @ 83A63D4 - .incbin "baserom.gba", 0x3A63D4, 0x8 - -gUnknown_83A63DC:: @ 83A63DC - .incbin "baserom.gba", 0x3A63DC, 0x8 - -gUnknown_83A63E4:: @ 83A63E4 - .incbin "baserom.gba", 0x3A63E4, 0xC - -gUnknown_83A63F0:: @ 83A63F0 - .incbin "baserom.gba", 0x3A63F0, 0xC - -gUnknown_83A63FC:: @ 83A63FC - .incbin "baserom.gba", 0x3A63FC, 0x8 - -gUnknown_83A6404:: @ 83A6404 - .incbin "baserom.gba", 0x3A6404, 0x8 - -gUnknown_83A640C:: @ 83A640C - .incbin "baserom.gba", 0x3A640C, 0x9 - -gUnknown_83A6415:: @ 83A6415 - .incbin "baserom.gba", 0x3A6415, 0x9 - -gUnknown_83A641E:: @ 83A641E - .incbin "baserom.gba", 0x3A641E, 0x9 - -gUnknown_83A6427:: @ 83A6427 - .incbin "baserom.gba", 0x3A6427, 0x9 - -gUnknown_83A6430:: @ 83A6430 - .incbin "baserom.gba", 0x3A6430, 0x9 - -gUnknown_83A6439:: @ 83A6439 - .incbin "baserom.gba", 0x3A6439, 0x9 - -gUnknown_83A6442:: @ 83A6442 - .incbin "baserom.gba", 0x3A6442, 0x9 - -gUnknown_83A644B:: @ 83A644B - .incbin "baserom.gba", 0x3A644B, 0x9 - -gUnknown_83A6454:: @ 83A6454 - .incbin "baserom.gba", 0x3A6454, 0x9 - -gUnknown_83A645D:: @ 83A645D - .incbin "baserom.gba", 0x3A645D, 0x9 - -gUnknown_83A6466:: @ 83A6466 - .incbin "baserom.gba", 0x3A6466, 0x9 - -gUnknown_83A646F:: @ 83A646F - .incbin "baserom.gba", 0x3A646F, 0x9 - -gUnknown_83A6478:: @ 83A6478 - .incbin "baserom.gba", 0x3A6478, 0x9 - -gUnknown_83A6481:: @ 83A6481 - .incbin "baserom.gba", 0x3A6481, 0x9 - -gUnknown_83A648A:: @ 83A648A - .incbin "baserom.gba", 0x3A648A, 0x9 - -gUnknown_83A6493:: @ 83A6493 - .incbin "baserom.gba", 0x3A6493, 0x9 - -gUnknown_83A649C:: @ 83A649C - .incbin "baserom.gba", 0x3A649C, 0xC - -gUnknown_83A64A8:: @ 83A64A8 - .incbin "baserom.gba", 0x3A64A8, 0x10 - -gUnknown_83A64B8:: @ 83A64B8 - .incbin "baserom.gba", 0x3A64B8, 0x10 - -gUnknown_83A64C8:: @ 83A64C8 - .incbin "baserom.gba", 0x3A64C8, 0x24 - -gUnknown_83A64EC:: @ 83A64EC - .incbin "baserom.gba", 0x3A64EC, 0x5 - -gUnknown_83A64F1:: @ 83A64F1 - .incbin "baserom.gba", 0x3A64F1, 0x5 - -gUnknown_83A64F6:: @ 83A64F6 - .incbin "baserom.gba", 0x3A64F6, 0x5 - -gUnknown_83A64FB:: @ 83A64FB - .incbin "baserom.gba", 0x3A64FB, 0x5 - -gUnknown_83A6500:: @ 83A6500 - .incbin "baserom.gba", 0x3A6500, 0x5 - -gUnknown_83A6505:: @ 83A6505 - .incbin "baserom.gba", 0x3A6505, 0x5 - -gUnknown_83A650A:: @ 83A650A - .incbin "baserom.gba", 0x3A650A, 0x5 - -gUnknown_83A650F:: @ 83A650F - .incbin "baserom.gba", 0x3A650F, 0x5 - -gUnknown_83A6514:: @ 83A6514 - .incbin "baserom.gba", 0x3A6514, 0x5 - -gUnknown_83A6519:: @ 83A6519 - .incbin "baserom.gba", 0x3A6519, 0x5 - -gUnknown_83A651E:: @ 83A651E - .incbin "baserom.gba", 0x3A651E, 0x5 - -gUnknown_83A6523:: @ 83A6523 - .incbin "baserom.gba", 0x3A6523, 0x5 - -gUnknown_83A6528:: @ 83A6528 - .incbin "baserom.gba", 0x3A6528, 0x5 - -gUnknown_83A652D:: @ 83A652D - .incbin "baserom.gba", 0x3A652D, 0x5 - -gUnknown_83A6532:: @ 83A6532 - .incbin "baserom.gba", 0x3A6532, 0x5 - -gUnknown_83A6537:: @ 83A6537 - .incbin "baserom.gba", 0x3A6537, 0x5 - -gUnknown_83A653C:: @ 83A653C - .incbin "baserom.gba", 0x3A653C, 0x5 - -gUnknown_83A6541:: @ 83A6541 - .incbin "baserom.gba", 0x3A6541, 0x5 - -gUnknown_83A6546:: @ 83A6546 - .incbin "baserom.gba", 0x3A6546, 0x5 - -gUnknown_83A654B:: @ 83A654B - .incbin "baserom.gba", 0x3A654B, 0x5 - -gUnknown_83A6550:: @ 83A6550 - .incbin "baserom.gba", 0x3A6550, 0x5 - -gUnknown_83A6555:: @ 83A6555 - .incbin "baserom.gba", 0x3A6555, 0x5 - -gUnknown_83A655A:: @ 83A655A - .incbin "baserom.gba", 0x3A655A, 0x5 - -gUnknown_83A655F:: @ 83A655F - .incbin "baserom.gba", 0x3A655F, 0x5 - -gUnknown_83A6564:: @ 83A6564 - .incbin "baserom.gba", 0x3A6564, 0x5 - -gUnknown_83A6569:: @ 83A6569 - .incbin "baserom.gba", 0x3A6569, 0x5 - -gUnknown_83A656E:: @ 83A656E - .incbin "baserom.gba", 0x3A656E, 0x5 - -gUnknown_83A6573:: @ 83A6573 - .incbin "baserom.gba", 0x3A6573, 0x5 - -gUnknown_83A6578:: @ 83A6578 - .incbin "baserom.gba", 0x3A6578, 0x5 - -gUnknown_83A657D:: @ 83A657D - .incbin "baserom.gba", 0x3A657D, 0x5 - -gUnknown_83A6582:: @ 83A6582 - .incbin "baserom.gba", 0x3A6582, 0x5 - -gUnknown_83A6587:: @ 83A6587 - .incbin "baserom.gba", 0x3A6587, 0x5 - -gUnknown_83A658C:: @ 83A658C - .incbin "baserom.gba", 0x3A658C, 0x5 - -gUnknown_83A6591:: @ 83A6591 - .incbin "baserom.gba", 0x3A6591, 0x8 - -gUnknown_83A6599:: @ 83A6599 - .incbin "baserom.gba", 0x3A6599, 0x10 - -gUnknown_83A65A9:: @ 83A65A9 - .incbin "baserom.gba", 0x3A65A9, 0x13 - -gUnknown_83A65BC:: @ 83A65BC - .incbin "baserom.gba", 0x3A65BC, 0x2C8 - -gUnknown_83A6884:: @ 83A6884 - .incbin "baserom.gba", 0x3A6884, 0xD4 - -gUnknown_83A6958:: @ 83A6958 - .incbin "baserom.gba", 0x3A6958, 0x6 - -gUnknown_83A695E:: @ 83A695E - .incbin "baserom.gba", 0x3A695E, 0x6C6 - -gUnknown_83A7024:: @ 83A7024 - .incbin "baserom.gba", 0x3A7024, 0x8 - -gUnknown_83A702C:: @ 83A702C - .incbin "baserom.gba", 0x3A702C, 0x18 - -gUnknown_83A7044:: @ 83A7044 - .incbin "baserom.gba", 0x3A7044, 0x18 - -gUnknown_83A705C:: @ 83A705C - .incbin "baserom.gba", 0x3A705C, 0x10 - -gUnknown_83A706C:: @ 83A706C - .incbin "baserom.gba", 0x3A706C, 0x10 - -gUnknown_83A707C:: @ 83A707C - .incbin "baserom.gba", 0x3A707C, 0x10 - -gUnknown_83A708C:: @ 83A708C - .incbin "baserom.gba", 0x3A708C, 0x10 - -gUnknown_83A709C:: @ 83A709C - .incbin "baserom.gba", 0x3A709C, 0xC - -gUnknown_83A70A8:: @ 83A70A8 - .incbin "baserom.gba", 0x3A70A8, 0x4 - -gUnknown_83A70AC:: @ 83A70AC - .incbin "baserom.gba", 0x3A70AC, 0x10 - -gUnknown_83A70BC:: @ 83A70BC - .incbin "baserom.gba", 0x3A70BC, 0xE0 - -gUnknown_83A719C:: @ 83A719C - .incbin "baserom.gba", 0x3A719C, 0x14 - -gUnknown_83A71B0:: @ 83A71B0 - .incbin "baserom.gba", 0x3A71B0, 0x3C - -gUnknown_83A71EC:: @ 83A71EC - .incbin "baserom.gba", 0x3A71EC, 0xC - -gUnknown_83A71F8:: @ 83A71F8 - .incbin "baserom.gba", 0x3A71F8, 0x6 - -gUnknown_83A71FE:: @ 83A71FE - .incbin "baserom.gba", 0x3A71FE, 0x4 - -gUnknown_83A7202:: @ 83A7202 - .incbin "baserom.gba", 0x3A7202, 0x6 - -gUnknown_83A7208:: @ 83A7208 - .incbin "baserom.gba", 0x3A7208, 0x4 - - .align 2 -gUnknown_83A720C:: @ 83A720C - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/evobjmv.c" - - .align 2 -gUnknown_83A7240:: @ 83A7240 - .asciz "0" - - .section .rodata.83A72A0 - -gUnknown_83A72A0:: @ 83A72A0 - .string "S$" - -gUnknown_83A72A2:: @ 83A72A2 - .string "IES$" - -gUnknown_83A72A6:: @ 83A72A6 - .string " " - gUnknown_83A72A8:: @ 83A72A8 .incbin "baserom.gba", 0x3A72A8, 0x68 diff --git a/data/field_door.s b/data/field_door.s new file mode 100644 index 000000000..a29cf3e24 --- /dev/null +++ b/data/field_door.s @@ -0,0 +1,17 @@ + .section .rodata + + .align 2 +gUnknown_835B488:: @ 835B488 + .incbin "baserom.gba", 0x35B488, 0x14 + +gUnknown_835B49C:: @ 835B49C + .incbin "baserom.gba", 0x35B49C, 0x14 + +gUnknown_835B4B0:: @ 835B4B0 + .incbin "baserom.gba", 0x35B4B0, 0x14 + +gUnknown_835B4C4:: @ 835B4C4 + .incbin "baserom.gba", 0x35B4C4, 0x114 + +gUnknown_835B5D8:: @ 835B5D8 + .incbin "baserom.gba", 0x35B5D8, 0x18C diff --git a/data/field_ground_effect.s b/data/field_ground_effect.s new file mode 100644 index 000000000..7979c7522 --- /dev/null +++ b/data/field_ground_effect.s @@ -0,0 +1,34 @@ + .section .rodata + .align 2 +gUnknown_83A7024:: @ 83A7024 + .incbin "baserom.gba", 0x3A7024, 0x8 + +gUnknown_83A702C:: @ 83A702C + .incbin "baserom.gba", 0x3A702C, 0x18 + +gUnknown_83A7044:: @ 83A7044 + .incbin "baserom.gba", 0x3A7044, 0x18 + +gUnknown_83A705C:: @ 83A705C + .incbin "baserom.gba", 0x3A705C, 0x10 + +gUnknown_83A706C:: @ 83A706C + .incbin "baserom.gba", 0x3A706C, 0x10 + +gUnknown_83A707C:: @ 83A707C + .incbin "baserom.gba", 0x3A707C, 0x10 + +gUnknown_83A708C:: @ 83A708C + .incbin "baserom.gba", 0x3A708C, 0x10 + +gUnknown_83A709C:: @ 83A709C + .incbin "baserom.gba", 0x3A709C, 0xC + +gUnknown_83A70A8:: @ 83A70A8 + .incbin "baserom.gba", 0x3A70A8, 0x4 + +gUnknown_83A70AC:: @ 83A70AC + .incbin "baserom.gba", 0x3A70AC, 0x10 + +gUnknown_83A70BC:: @ 83A70BC + .incbin "baserom.gba", 0x3A70BC, 0xE0 diff --git a/data/field_map_obj.s b/data/field_map_obj.s new file mode 100644 index 000000000..d12de7aa9 --- /dev/null +++ b/data/field_map_obj.s @@ -0,0 +1,508 @@ + .section .rodata + .align 2 +gUnknown_835B934:: @ 835B934 + .incbin "baserom.gba", 0x35B934, 0x10 + +gUnknown_835B944:: @ 835B944 + .incbin "baserom.gba", 0x35B944, 0x18 + +gUnknown_835B95C:: @ 835B95C + .incbin "baserom.gba", 0x35B95C, 0x3DA2C + +gUnknown_8399388:: @ 8399388 + .incbin "baserom.gba", 0x399388, 0x908 + +gUnknown_8399C90:: @ 8399C90 + .incbin "baserom.gba", 0x399C90, 0x5F38 + +gUnknown_839FBC8:: @ 839FBC8 + .incbin "baserom.gba", 0x39FBC8, 0x144 + +gUnknown_839FD0C:: @ 839FD0C + .incbin "baserom.gba", 0x39FD0C, 0x51 + +gUnknown_839FD5D:: @ 839FD5D + .incbin "baserom.gba", 0x39FD5D, 0x53 + +gUnknown_839FDB0:: @ 839FDB0 + .incbin "baserom.gba", 0x39FDB0, 0x260 + +gUnknown_83A0010:: @ 83A0010 + .incbin "baserom.gba", 0x3A0010, 0x3688 + +gUnknown_83A3698:: @ 83A3698 + .incbin "baserom.gba", 0x3A3698, 0x1AC0 + +gUnknown_83A5158:: @ 83A5158 + .incbin "baserom.gba", 0x3A5158, 0xB0 + +gUnknown_83A5208:: @ 83A5208 + .incbin "baserom.gba", 0x3A5208, 0x70 + +gUnknown_83A5278:: @ 83A5278 + .incbin "baserom.gba", 0x3A5278, 0xB8 + +gUnknown_83A5330:: @ 83A5330 + .incbin "baserom.gba", 0x3A5330, 0x18 + +gUnknown_83A5348:: @ 83A5348 + .incbin "baserom.gba", 0x3A5348, 0xCB8 + +gUnknown_83A6000:: @ 83A6000 + .incbin "baserom.gba", 0x3A6000, 0x10 + +gUnknown_83A6010:: @ 83A6010 + .incbin "baserom.gba", 0x3A6010, 0x8 + +gUnknown_83A6018:: @ 83A6018 + .incbin "baserom.gba", 0x3A6018, 0x1C + +gUnknown_83A6034:: @ 83A6034 + .incbin "baserom.gba", 0x3A6034, 0x1C + +gUnknown_83A6050:: @ 83A6050 + .incbin "baserom.gba", 0x3A6050, 0x4 + +gUnknown_83A6054:: @ 83A6054 + .incbin "baserom.gba", 0x3A6054, 0x2C + +gUnknown_83A6080:: @ 83A6080 + .incbin "baserom.gba", 0x3A6080, 0x14 + +gUnknown_83A6094:: @ 83A6094 + .incbin "baserom.gba", 0x3A6094, 0x1C + +gUnknown_83A60B0:: @ 83A60B0 + .incbin "baserom.gba", 0x3A60B0, 0x4 + +gUnknown_83A60B4:: @ 83A60B4 + .incbin "baserom.gba", 0x3A60B4, 0x1C + +gUnknown_83A60D0:: @ 83A60D0 + .incbin "baserom.gba", 0x3A60D0, 0x4 + +gUnknown_83A60D4:: @ 83A60D4 + .incbin "baserom.gba", 0x3A60D4, 0xC + +gUnknown_83A60E0:: @ 83A60E0 + .incbin "baserom.gba", 0x3A60E0, 0x14 + +gUnknown_83A60F4:: @ 83A60F4 + .incbin "baserom.gba", 0x3A60F4, 0x14 + +gUnknown_83A6108:: @ 83A6108 + .incbin "baserom.gba", 0x3A6108, 0x14 + +gUnknown_83A611C:: @ 83A611C + .incbin "baserom.gba", 0x3A611C, 0x4 + +gUnknown_83A6120:: @ 83A6120 + .incbin "baserom.gba", 0x3A6120, 0x14 + +gUnknown_83A6134:: @ 83A6134 + .incbin "baserom.gba", 0x3A6134, 0x4 + +gUnknown_83A6138:: @ 83A6138 + .incbin "baserom.gba", 0x3A6138, 0x14 + +gUnknown_83A614C:: @ 83A614C + .incbin "baserom.gba", 0x3A614C, 0x4 + +gUnknown_83A6150:: @ 83A6150 + .incbin "baserom.gba", 0x3A6150, 0x14 + +gUnknown_83A6164:: @ 83A6164 + .incbin "baserom.gba", 0x3A6164, 0x4 + +gUnknown_83A6168:: @ 83A6168 + .incbin "baserom.gba", 0x3A6168, 0x14 + +gUnknown_83A617C:: @ 83A617C + .incbin "baserom.gba", 0x3A617C, 0x4 + +gUnknown_83A6180:: @ 83A6180 + .incbin "baserom.gba", 0x3A6180, 0x14 + +gUnknown_83A6194:: @ 83A6194 + .incbin "baserom.gba", 0x3A6194, 0x4 + +gUnknown_83A6198:: @ 83A6198 + .incbin "baserom.gba", 0x3A6198, 0x14 + +gUnknown_83A61AC:: @ 83A61AC + .incbin "baserom.gba", 0x3A61AC, 0x4 + +gUnknown_83A61B0:: @ 83A61B0 + .incbin "baserom.gba", 0x3A61B0, 0x14 + +gUnknown_83A61C4:: @ 83A61C4 + .incbin "baserom.gba", 0x3A61C4, 0x4 + +gUnknown_83A61C8:: @ 83A61C8 + .incbin "baserom.gba", 0x3A61C8, 0x10 + +gUnknown_83A61D8:: @ 83A61D8 + .incbin "baserom.gba", 0x3A61D8, 0x8 + +gUnknown_83A61E0:: @ 83A61E0 + .incbin "baserom.gba", 0x3A61E0, 0x10 + +gUnknown_83A61F0:: @ 83A61F0 + .incbin "baserom.gba", 0x3A61F0, 0x8 + +gUnknown_83A61F8:: @ 83A61F8 + .incbin "baserom.gba", 0x3A61F8, 0x10 + +gUnknown_83A6208:: @ 83A6208 + .incbin "baserom.gba", 0x3A6208, 0xC + +gUnknown_83A6214:: @ 83A6214 + .incbin "baserom.gba", 0x3A6214, 0x4 + +gUnknown_83A6218:: @ 83A6218 + .incbin "baserom.gba", 0x3A6218, 0xC + +gUnknown_83A6224:: @ 83A6224 + .incbin "baserom.gba", 0x3A6224, 0x4 + +gUnknown_83A6228:: @ 83A6228 + .incbin "baserom.gba", 0x3A6228, 0xC + +gUnknown_83A6234:: @ 83A6234 + .incbin "baserom.gba", 0x3A6234, 0x4 + +gUnknown_83A6238:: @ 83A6238 + .incbin "baserom.gba", 0x3A6238, 0xC + +gUnknown_83A6244:: @ 83A6244 + .incbin "baserom.gba", 0x3A6244, 0x4 + +gUnknown_83A6248:: @ 83A6248 + .incbin "baserom.gba", 0x3A6248, 0xC + +gUnknown_83A6254:: @ 83A6254 + .incbin "baserom.gba", 0x3A6254, 0x4 + +gUnknown_83A6258:: @ 83A6258 + .incbin "baserom.gba", 0x3A6258, 0xC + +gUnknown_83A6264:: @ 83A6264 + .incbin "baserom.gba", 0x3A6264, 0x4 + +gUnknown_83A6268:: @ 83A6268 + .incbin "baserom.gba", 0x3A6268, 0xC + +gUnknown_83A6274:: @ 83A6274 + .incbin "baserom.gba", 0x3A6274, 0xC + +gUnknown_83A6280:: @ 83A6280 + .incbin "baserom.gba", 0x3A6280, 0x4 + +gUnknown_83A6284:: @ 83A6284 + .incbin "baserom.gba", 0x3A6284, 0xC + +gUnknown_83A6290:: @ 83A6290 + .incbin "baserom.gba", 0x3A6290, 0x4 + +gUnknown_83A6294:: @ 83A6294 + .incbin "baserom.gba", 0x3A6294, 0xC + +gUnknown_83A62A0:: @ 83A62A0 + .incbin "baserom.gba", 0x3A62A0, 0x4 + +gUnknown_83A62A4:: @ 83A62A4 + .incbin "baserom.gba", 0x3A62A4, 0xC + +gUnknown_83A62B0:: @ 83A62B0 + .incbin "baserom.gba", 0x3A62B0, 0x4 + +gUnknown_83A62B4:: @ 83A62B4 + .incbin "baserom.gba", 0x3A62B4, 0xC + +gUnknown_83A62C0:: @ 83A62C0 + .incbin "baserom.gba", 0x3A62C0, 0x4 + +gUnknown_83A62C4:: @ 83A62C4 + .incbin "baserom.gba", 0x3A62C4, 0xC + +gUnknown_83A62D0:: @ 83A62D0 + .incbin "baserom.gba", 0x3A62D0, 0x4 + +gUnknown_83A62D4:: @ 83A62D4 + .incbin "baserom.gba", 0x3A62D4, 0xC + +gUnknown_83A62E0:: @ 83A62E0 + .incbin "baserom.gba", 0x3A62E0, 0x4 + +gUnknown_83A62E4:: @ 83A62E4 + .incbin "baserom.gba", 0x3A62E4, 0xC + +gUnknown_83A62F0:: @ 83A62F0 + .incbin "baserom.gba", 0x3A62F0, 0x4 + +gUnknown_83A62F4:: @ 83A62F4 + .incbin "baserom.gba", 0x3A62F4, 0xC + +gUnknown_83A6300:: @ 83A6300 + .incbin "baserom.gba", 0x3A6300, 0x4 + +gUnknown_83A6304:: @ 83A6304 + .incbin "baserom.gba", 0x3A6304, 0xC + +gUnknown_83A6310:: @ 83A6310 + .incbin "baserom.gba", 0x3A6310, 0x4 + +gUnknown_83A6314:: @ 83A6314 + .incbin "baserom.gba", 0x3A6314, 0xC + +gUnknown_83A6320:: @ 83A6320 + .incbin "baserom.gba", 0x3A6320, 0x4 + +gUnknown_83A6324:: @ 83A6324 + .incbin "baserom.gba", 0x3A6324, 0xC + +gUnknown_83A6330:: @ 83A6330 + .incbin "baserom.gba", 0x3A6330, 0x4 + +gUnknown_83A6334:: @ 83A6334 + .incbin "baserom.gba", 0x3A6334, 0xC + +gUnknown_83A6340:: @ 83A6340 + .incbin "baserom.gba", 0x3A6340, 0x4 + +gUnknown_83A6344:: @ 83A6344 + .incbin "baserom.gba", 0x3A6344, 0xC + +gUnknown_83A6350:: @ 83A6350 + .incbin "baserom.gba", 0x3A6350, 0x4 + +gUnknown_83A6354:: @ 83A6354 + .incbin "baserom.gba", 0x3A6354, 0xC + +gUnknown_83A6360:: @ 83A6360 + .incbin "baserom.gba", 0x3A6360, 0x4 + +gUnknown_83A6364:: @ 83A6364 + .incbin "baserom.gba", 0x3A6364, 0xC + +gUnknown_83A6370:: @ 83A6370 + .incbin "baserom.gba", 0x3A6370, 0x4 + +gUnknown_83A6374:: @ 83A6374 + .incbin "baserom.gba", 0x3A6374, 0xC + +gUnknown_83A6380:: @ 83A6380 + .incbin "baserom.gba", 0x3A6380, 0x4 + +gUnknown_83A6384:: @ 83A6384 + .incbin "baserom.gba", 0x3A6384, 0xC + +gUnknown_83A6390:: @ 83A6390 + .incbin "baserom.gba", 0x3A6390, 0x2C + +gUnknown_83A63BC:: @ 83A63BC + .incbin "baserom.gba", 0x3A63BC, 0xC + +gUnknown_83A63C8:: @ 83A63C8 + .incbin "baserom.gba", 0x3A63C8, 0x4 + +gUnknown_83A63CC:: @ 83A63CC + .incbin "baserom.gba", 0x3A63CC, 0x8 + +gUnknown_83A63D4:: @ 83A63D4 + .incbin "baserom.gba", 0x3A63D4, 0x8 + +gUnknown_83A63DC:: @ 83A63DC + .incbin "baserom.gba", 0x3A63DC, 0x8 + +gUnknown_83A63E4:: @ 83A63E4 + .incbin "baserom.gba", 0x3A63E4, 0xC + +gUnknown_83A63F0:: @ 83A63F0 + .incbin "baserom.gba", 0x3A63F0, 0xC + +gUnknown_83A63FC:: @ 83A63FC + .incbin "baserom.gba", 0x3A63FC, 0x8 + +gUnknown_83A6404:: @ 83A6404 + .incbin "baserom.gba", 0x3A6404, 0x8 + +gUnknown_83A640C:: @ 83A640C + .incbin "baserom.gba", 0x3A640C, 0x9 + +gUnknown_83A6415:: @ 83A6415 + .incbin "baserom.gba", 0x3A6415, 0x9 + +gUnknown_83A641E:: @ 83A641E + .incbin "baserom.gba", 0x3A641E, 0x9 + +gUnknown_83A6427:: @ 83A6427 + .incbin "baserom.gba", 0x3A6427, 0x9 + +gUnknown_83A6430:: @ 83A6430 + .incbin "baserom.gba", 0x3A6430, 0x9 + +gUnknown_83A6439:: @ 83A6439 + .incbin "baserom.gba", 0x3A6439, 0x9 + +gUnknown_83A6442:: @ 83A6442 + .incbin "baserom.gba", 0x3A6442, 0x9 + +gUnknown_83A644B:: @ 83A644B + .incbin "baserom.gba", 0x3A644B, 0x9 + +gUnknown_83A6454:: @ 83A6454 + .incbin "baserom.gba", 0x3A6454, 0x9 + +gUnknown_83A645D:: @ 83A645D + .incbin "baserom.gba", 0x3A645D, 0x9 + +gUnknown_83A6466:: @ 83A6466 + .incbin "baserom.gba", 0x3A6466, 0x9 + +gUnknown_83A646F:: @ 83A646F + .incbin "baserom.gba", 0x3A646F, 0x9 + +gUnknown_83A6478:: @ 83A6478 + .incbin "baserom.gba", 0x3A6478, 0x9 + +gUnknown_83A6481:: @ 83A6481 + .incbin "baserom.gba", 0x3A6481, 0x9 + +gUnknown_83A648A:: @ 83A648A + .incbin "baserom.gba", 0x3A648A, 0x9 + +gUnknown_83A6493:: @ 83A6493 + .incbin "baserom.gba", 0x3A6493, 0x9 + +gUnknown_83A649C:: @ 83A649C + .incbin "baserom.gba", 0x3A649C, 0xC + +gUnknown_83A64A8:: @ 83A64A8 + .incbin "baserom.gba", 0x3A64A8, 0x10 + +gUnknown_83A64B8:: @ 83A64B8 + .incbin "baserom.gba", 0x3A64B8, 0x10 + +gUnknown_83A64C8:: @ 83A64C8 + .incbin "baserom.gba", 0x3A64C8, 0x24 + +gUnknown_83A64EC:: @ 83A64EC + .incbin "baserom.gba", 0x3A64EC, 0x5 + +gUnknown_83A64F1:: @ 83A64F1 + .incbin "baserom.gba", 0x3A64F1, 0x5 + +gUnknown_83A64F6:: @ 83A64F6 + .incbin "baserom.gba", 0x3A64F6, 0x5 + +gUnknown_83A64FB:: @ 83A64FB + .incbin "baserom.gba", 0x3A64FB, 0x5 + +gUnknown_83A6500:: @ 83A6500 + .incbin "baserom.gba", 0x3A6500, 0x5 + +gUnknown_83A6505:: @ 83A6505 + .incbin "baserom.gba", 0x3A6505, 0x5 + +gUnknown_83A650A:: @ 83A650A + .incbin "baserom.gba", 0x3A650A, 0x5 + +gUnknown_83A650F:: @ 83A650F + .incbin "baserom.gba", 0x3A650F, 0x5 + +gUnknown_83A6514:: @ 83A6514 + .incbin "baserom.gba", 0x3A6514, 0x5 + +gUnknown_83A6519:: @ 83A6519 + .incbin "baserom.gba", 0x3A6519, 0x5 + +gUnknown_83A651E:: @ 83A651E + .incbin "baserom.gba", 0x3A651E, 0x5 + +gUnknown_83A6523:: @ 83A6523 + .incbin "baserom.gba", 0x3A6523, 0x5 + +gUnknown_83A6528:: @ 83A6528 + .incbin "baserom.gba", 0x3A6528, 0x5 + +gUnknown_83A652D:: @ 83A652D + .incbin "baserom.gba", 0x3A652D, 0x5 + +gUnknown_83A6532:: @ 83A6532 + .incbin "baserom.gba", 0x3A6532, 0x5 + +gUnknown_83A6537:: @ 83A6537 + .incbin "baserom.gba", 0x3A6537, 0x5 + +gUnknown_83A653C:: @ 83A653C + .incbin "baserom.gba", 0x3A653C, 0x5 + +gUnknown_83A6541:: @ 83A6541 + .incbin "baserom.gba", 0x3A6541, 0x5 + +gUnknown_83A6546:: @ 83A6546 + .incbin "baserom.gba", 0x3A6546, 0x5 + +gUnknown_83A654B:: @ 83A654B + .incbin "baserom.gba", 0x3A654B, 0x5 + +gUnknown_83A6550:: @ 83A6550 + .incbin "baserom.gba", 0x3A6550, 0x5 + +gUnknown_83A6555:: @ 83A6555 + .incbin "baserom.gba", 0x3A6555, 0x5 + +gUnknown_83A655A:: @ 83A655A + .incbin "baserom.gba", 0x3A655A, 0x5 + +gUnknown_83A655F:: @ 83A655F + .incbin "baserom.gba", 0x3A655F, 0x5 + +gUnknown_83A6564:: @ 83A6564 + .incbin "baserom.gba", 0x3A6564, 0x5 + +gUnknown_83A6569:: @ 83A6569 + .incbin "baserom.gba", 0x3A6569, 0x5 + +gUnknown_83A656E:: @ 83A656E + .incbin "baserom.gba", 0x3A656E, 0x5 + +gUnknown_83A6573:: @ 83A6573 + .incbin "baserom.gba", 0x3A6573, 0x5 + +gUnknown_83A6578:: @ 83A6578 + .incbin "baserom.gba", 0x3A6578, 0x5 + +gUnknown_83A657D:: @ 83A657D + .incbin "baserom.gba", 0x3A657D, 0x5 + +gUnknown_83A6582:: @ 83A6582 + .incbin "baserom.gba", 0x3A6582, 0x5 + +gUnknown_83A6587:: @ 83A6587 + .incbin "baserom.gba", 0x3A6587, 0x5 + +gUnknown_83A658C:: @ 83A658C + .incbin "baserom.gba", 0x3A658C, 0x5 + +gUnknown_83A6591:: @ 83A6591 + .incbin "baserom.gba", 0x3A6591, 0x8 + +gUnknown_83A6599:: @ 83A6599 + .incbin "baserom.gba", 0x3A6599, 0x10 + +gUnknown_83A65A9:: @ 83A65A9 + .incbin "baserom.gba", 0x3A65A9, 0x13 + +gUnknown_83A65BC:: @ 83A65BC + .incbin "baserom.gba", 0x3A65BC, 0x2C8 + +gUnknown_83A6884:: @ 83A6884 + .incbin "baserom.gba", 0x3A6884, 0xD4 + +gUnknown_83A6958:: @ 83A6958 + .incbin "baserom.gba", 0x3A6958, 0x6 + +gUnknown_83A695E:: @ 83A695E + .incbin "baserom.gba", 0x3A695E, 0x6C6 diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s new file mode 100644 index 000000000..c11bc74b3 --- /dev/null +++ b/data/field_player_avatar.s @@ -0,0 +1,73 @@ + .section .rodata + .align 2 +gUnknown_835B764:: @ 835B764 + .incbin "baserom.gba", 0x35B764, 0xB0 + +gUnknown_835B814:: @ 835B814 + .incbin "baserom.gba", 0x35B814, 0xC + +gUnknown_835B820:: @ 835B820 + .incbin "baserom.gba", 0x35B820, 0x8 + +gUnknown_835B828:: @ 835B828 + .incbin "baserom.gba", 0x35B828, 0x14 + +gUnknown_835B83C:: @ 835B83C + .incbin "baserom.gba", 0x35B83C, 0x8 + +gUnknown_835B844:: @ 835B844 + .incbin "baserom.gba", 0x35B844, 0x20 + +gUnknown_835B864:: @ 835B864 + .incbin "baserom.gba", 0x35B864, 0x10 + +gUnknown_835B874:: @ 835B874 + .incbin "baserom.gba", 0x35B874, 0xC + +gUnknown_835B880:: @ 835B880 + .incbin "baserom.gba", 0x35B880, 0x2 + +gUnknown_835B882:: @ 835B882 + .incbin "baserom.gba", 0x35B882, 0xC + +gUnknown_835B88E:: @ 835B88E + .incbin "baserom.gba", 0x35B88E, 0x2 + +gUnknown_835B890:: @ 835B890 + .incbin "baserom.gba", 0x35B890, 0x10 + +gUnknown_835B8A0:: @ 835B8A0 + .incbin "baserom.gba", 0x35B8A0, 0xC + +gUnknown_835B8AC:: @ 835B8AC + .incbin "baserom.gba", 0x35B8AC, 0x4 + +gUnknown_835B8B0:: @ 835B8B0 + .incbin "baserom.gba", 0x35B8B0, 0x10 + +gUnknown_835B8C0:: @ 835B8C0 + .incbin "baserom.gba", 0x35B8C0, 0x4 + +gUnknown_835B8C4:: @ 835B8C4 + .incbin "baserom.gba", 0x35B8C4, 0x8 + +gUnknown_835B8CC:: @ 835B8CC + .incbin "baserom.gba", 0x35B8CC, 0x40 + +gUnknown_835B90C:: @ 835B90C + .incbin "baserom.gba", 0x35B90C, 0x6 + +gUnknown_835B912:: @ 835B912 + .incbin "baserom.gba", 0x35B912, 0x6 + +gUnknown_835B918:: @ 835B918 + .incbin "baserom.gba", 0x35B918, 0x2 + +gUnknown_835B91A:: @ 835B91A + .incbin "baserom.gba", 0x35B91A, 0x6 + +gUnknown_835B920:: @ 835B920 + .incbin "baserom.gba", 0x35B920, 0xC + +gUnknown_835B92C:: @ 835B92C + .incbin "baserom.gba", 0x35B92C, 0x8 diff --git a/data/map_obj_80688E4.s b/data/map_obj_80688E4.s new file mode 100644 index 000000000..9010be906 --- /dev/null +++ b/data/map_obj_80688E4.s @@ -0,0 +1,30 @@ + .section .rodata + .align 2 +gUnknown_83A719C:: @ 83A719C + .incbin "baserom.gba", 0x3A719C, 0x14 + +gUnknown_83A71B0:: @ 83A71B0 + .incbin "baserom.gba", 0x3A71B0, 0x3C + +gUnknown_83A71EC:: @ 83A71EC + .incbin "baserom.gba", 0x3A71EC, 0xC + +gUnknown_83A71F8:: @ 83A71F8 + .incbin "baserom.gba", 0x3A71F8, 0x6 + +gUnknown_83A71FE:: @ 83A71FE + .incbin "baserom.gba", 0x3A71FE, 0x4 + +gUnknown_83A7202:: @ 83A7202 + .incbin "baserom.gba", 0x3A7202, 0x6 + +gUnknown_83A7208:: @ 83A7208 + .incbin "baserom.gba", 0x3A7208, 0x4 + + .align 2 +gUnknown_83A720C:: @ 83A720C + .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/evobjmv.c" + + .align 2 +gUnknown_83A7240:: @ 83A7240 + .asciz "0" diff --git a/ld_script.txt b/ld_script.txt index 52e4ff197..67f554b7e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -370,9 +370,13 @@ SECTIONS { src/fieldmap.o(.rodata); src/metatile_behavior.o(.rodata); data/metatile_behavior.o(.rodata); - data/data_835B488.o(.rodata); + data/field_door.o(.rodata); + data/field_player_avatar.o(.rodata); + data/field_map_obj.o(.rodata); + data/field_ground_effect.o(.rodata); + data/map_obj_80688E4.o(.rodata); src/scrcmd.o(.rodata); - data/data_835B488.o(.rodata.83A72A0); + data/data_835B488.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/data_83F5738.o(.rodata); src/save.o(.rodata); diff --git a/src/scrcmd.c b/src/scrcmd.c index 33859f8c6..e7c61db1f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1636,8 +1636,8 @@ bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) return FALSE; } -extern const u8 gUnknown_83A72A0[]; -extern const u8 gUnknown_83A72A2[]; +const u8 gUnknown_83A72A0[] = _("S"); +const u8 gUnknown_83A72A2[] = _("IES"); bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) { From 02974254affdcffb0cf8f44bd094ba5c9d320d4a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Apr 2019 09:55:41 -0400 Subject: [PATCH 073/318] coord_event_weather --- asm/coord_event_weather.s | 105 -------------------------------------- data/data_835B488.s | 3 -- ld_script.txt | 3 +- src/coord_event_weather.c | 47 +++++++++++++++++ 4 files changed, 49 insertions(+), 109 deletions(-) delete mode 100644 asm/coord_event_weather.s create mode 100644 src/coord_event_weather.c diff --git a/asm/coord_event_weather.s b/asm/coord_event_weather.s deleted file mode 100644 index 8c987c6e2..000000000 --- a/asm/coord_event_weather.s +++ /dev/null @@ -1,105 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_27 -nullsub_27: @ 806E7A8 - bx lr - thumb_func_end nullsub_27 - - thumb_func_start nullsub_28 -nullsub_28: @ 806E7AC - bx lr - thumb_func_end nullsub_28 - - thumb_func_start nullsub_29 -nullsub_29: @ 806E7B0 - bx lr - thumb_func_end nullsub_29 - - thumb_func_start nullsub_30 -nullsub_30: @ 806E7B4 - bx lr - thumb_func_end nullsub_30 - - thumb_func_start nullsub_31 -nullsub_31: @ 806E7B8 - bx lr - thumb_func_end nullsub_31 - - thumb_func_start nullsub_32 -nullsub_32: @ 806E7BC - bx lr - thumb_func_end nullsub_32 - - thumb_func_start nullsub_33 -nullsub_33: @ 806E7C0 - bx lr - thumb_func_end nullsub_33 - - thumb_func_start nullsub_34 -nullsub_34: @ 806E7C4 - bx lr - thumb_func_end nullsub_34 - - thumb_func_start nullsub_35 -nullsub_35: @ 806E7C8 - bx lr - thumb_func_end nullsub_35 - - thumb_func_start nullsub_36 -nullsub_36: @ 806E7CC - bx lr - thumb_func_end nullsub_36 - - thumb_func_start nullsub_37 -nullsub_37: @ 806E7D0 - bx lr - thumb_func_end nullsub_37 - - thumb_func_start nullsub_38 -nullsub_38: @ 806E7D4 - bx lr - thumb_func_end nullsub_38 - - thumb_func_start nullsub_39 -nullsub_39: @ 806E7D8 - bx lr - thumb_func_end nullsub_39 - - thumb_func_start trigger_activate_weather -trigger_activate_weather: @ 806E7DC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r2, 0 - ldr r3, _0806E7FC @ =gUnknown_83A72A8 -_0806E7E6: - lsls r1, r2, 3 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r4 - bne _0806E800 - adds r0, r3, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - bl _call_via_r0 - b _0806E80A - .align 2, 0 -_0806E7FC: .4byte gUnknown_83A72A8 -_0806E800: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xC - bls _0806E7E6 -_0806E80A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end trigger_activate_weather - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_835B488.s b/data/data_835B488.s index bcda20bb0..4377d5ef7 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -1,8 +1,5 @@ .section .rodata .align 2 -gUnknown_83A72A8:: @ 83A72A8 - .incbin "baserom.gba", 0x3A72A8, 0x68 - gUnknown_83A7310:: @ 83A7310 .incbin "baserom.gba", 0x3A7310, 0x20 diff --git a/ld_script.txt b/ld_script.txt index 67f554b7e..9b15cb474 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -106,7 +106,7 @@ SECTIONS { src/scrcmd.o(.text); asm/field_control_avatar.o(.text); asm/event_data.o(.text); - asm/coord_event_weather.o(.text); + src/coord_event_weather.o(.text); asm/field_tasks.o(.text); asm/start_menu.o(.text); asm/tileset_anims.o(.text); @@ -376,6 +376,7 @@ SECTIONS { data/field_ground_effect.o(.rodata); data/map_obj_80688E4.o(.rodata); src/scrcmd.o(.rodata); + src/coord_event_weather.o(.rodata); data/data_835B488.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/data_83F5738.o(.rodata); diff --git a/src/coord_event_weather.c b/src/coord_event_weather.c new file mode 100644 index 000000000..4dbdd574b --- /dev/null +++ b/src/coord_event_weather.c @@ -0,0 +1,47 @@ +#include "global.h" + +void nullsub_27(void) {} +void nullsub_28(void) {} +void nullsub_29(void) {} +void nullsub_30(void) {} +void nullsub_31(void) {} +void nullsub_32(void) {} +void nullsub_33(void) {} +void nullsub_34(void) {} +void nullsub_35(void) {} +void nullsub_36(void) {} +void nullsub_37(void) {} +void nullsub_38(void) {} +void nullsub_39(void) {} + +struct { + u8 weatherId; + void (*callback)(void); +} const gUnknown_83A72A8[] = { + {0x01, nullsub_27}, + {0x02, nullsub_28}, + {0x03, nullsub_29}, + {0x04, nullsub_30}, + {0x05, nullsub_31}, + {0x06, nullsub_32}, + {0x07, nullsub_33}, + {0x08, nullsub_34}, + {0x09, nullsub_35}, + {0x0a, nullsub_36}, + {0x0b, nullsub_37}, + {0x14, nullsub_38}, + {0x15, nullsub_39} +}; + +void trigger_activate_weather(u8 weatherId) +{ + u8 i; + for (i = 0; i < NELEMS(gUnknown_83A72A8); i++) + { + if (gUnknown_83A72A8[i].weatherId == weatherId) + { + gUnknown_83A72A8[i].callback(); + return; + } + } +} From bd5c36e0f376518a8fbeac0cc178ea60b9e2b274 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Apr 2019 10:23:45 -0400 Subject: [PATCH 074/318] Split data_835B488.s to sound.s; correct FRLG music constants --- charmap.txt | 77 ++++++++++++++++++ data/data_835B488.s | 67 +--------------- data/field_tasks.s | 7 ++ data/palette.s | 7 ++ data/start_menu.s | 28 +++++++ data/tileset_anims.s | 25 ++++++ include/constants/songs.h | 163 ++++++++++++++++++++------------------ ld_script.txt | 5 ++ src/oak_speech.c | 8 +- src/sound.c | 18 ++++- 10 files changed, 259 insertions(+), 146 deletions(-) create mode 100644 data/field_tasks.s create mode 100644 data/palette.s create mode 100644 data/start_menu.s create mode 100644 data/tileset_anims.s diff --git a/charmap.txt b/charmap.txt index ad4062731..f8161e87d 100644 --- a/charmap.txt +++ b/charmap.txt @@ -534,6 +534,83 @@ SE_TB_START = 72 00 SE_TB_KON = 73 00 SE_TB_KARA = 74 00 SE_BIDORO = 75 00 + +BGM_FRLG_FOLLOW_ME = 10 01 +BGM_FRLG_GAMECORNER = 11 01 +BGM_FRLG_ROCKET_HIDEOUT = 12 01 +BGM_FRLG_GYM = 13 01 +BGM_FRLG_JIGGLYPUFF = 14 01 +BGM_FRLG_OPENING = 15 01 +BGM_FRLG_TITLE = 16 01 +BGM_FRLG_CINNABAR_ISLAND = 17 01 +BGM_FRLG_LAVENDER_TOWN = 18 01 +BGM_FRLG_HEALING_TEST = 19 01 +BGM_FRLG_BICYCLE = 1A 01 +BGM_FRLG_SUSPICIOUS_EYE = 1B 01 +BGM_FRLG_GIRL_EYE = 1C 01 +BGM_FRLG_BOY_EYE = 1D 01 +BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME = 1E 01 +BGM_FRLG_VIRIDIAN_FOREST = 1F 01 +BGM_FRLG_MT_MOON = 20 01 +BGM_FRLG_POKEMON_MANSION = 21 01 +BGM_FRLG_CREDITS = 22 01 +BGM_FRLG_ROUTE_1 = 23 01 +BGM_FRLG_ROUTE_24 = 24 01 +BGM_FRLG_ROUTE_3 = 25 01 +BGM_FRLG_ROUTE_11 = 26 01 +BGM_FRLG_INDIGO_PLATEAU = 27 01 +BGM_FRLG_BATTLE_LEADER = 28 01 +BGM_FRLG_BATTLE_TRAINER = 29 01 +BGM_FRLG_BATTLE_WILD_POKEMON = 2A 01 +BGM_FRLG_BATTLE_CHAMPION = 2B 01 +BGM_FRLG_PALLET_TOWN = 2C 01 +BGM_FRLG_OAK_LAB = 2D 01 +BGM_FRLG_PROF_OAK = 2E 01 +BGM_FRLG_POKEMON_CENTER = 2F 01 +BGM_FRLG_SS_ANNE = 30 01 +BGM_FRLG_SURF = 31 01 +BGM_FRLG_POKEMON_TOWER = 32 01 +BGM_FRLG_SILPH = 33 01 +BGM_FRLG_CERULEAN_CITY = 34 01 +BGM_FRLG_CELADON_CITY = 35 01 +BGM_FRLG_KACHI_TRAINER = 36 01 +BGM_FRLG_KACHI_WILD_POKEMON = 37 01 +BGM_FRLG_KACHI_LEADER = 38 01 +BGM_FRLG_VERMILION_CITY = 39 01 +BGM_FRLG_VIRIDIAN_CITY = 3A 01 +BGM_FRLG_RIVAL = 3B 01 +BGM_FRLG_RIVAL_POSTBATTLE = 3C 01 +BGM_FRLG_ME_POKEDEX_EVAL = 3D 01 +BGM_FRLG_ME_KEYITEM = 3E 01 +BGM_FRLG_FANFA_POKEMON_CAUGHT = 3F 01 +BGM_FRLG_FANFA_TRAINERCARD_PHOTO = 40 01 +BGM_FRLG_GAMEFREAK_LOGO = 41 01 +BGM_FRLG_CAUGHT_POKEMON = 42 01 +BGM_FRLG_GAME_EXPLANATION_START = 43 01 +BGM_FRLG_GAME_EXPLANATION_MIDDLE = 44 01 +BGM_FRLG_GAME_EXPLANATION_END = 45 01 +BGM_FRLG_POKEMON_JUMP = 46 01 +BGM_FRLG_UNION_ROOM = 47 01 +BGM_FRLG_POKEMON_NETWORK_CENTER = 48 01 +BGM_FRLG_MYSTERY_GIFT = 49 01 +BGM_FRLG_DODRIO_BERRY_PICK = 4A 01 +BGM_FRLG_MT_EMBER = 4B 01 +BGM_FRLG_TEACHY_TV_EPISODE = 4C 01 +BGM_FRLG_SEVII_ISLANDS = 4D 01 +BGM_FRLG_TANOBY_RUINS = 4E 01 +BGM_FRLG_ISLAND_ONE = 4F 01 +BGM_FRLG_ISLAND_FOUR = 50 01 +BGM_FRLG_ISLAND_SIX = 51 01 +BGM_FRLG_FLUTE = 52 01 +BGM_FRLG_BATTLE_DEOXYS = 53 01 +BGM_FRLG_BATTLE_MEWTWO = 54 01 +BGM_FRLG_BATTLE_LEGENDARY = 55 01 +BGM_FRLG_LEADER_EYE = 56 01 +BGM_FRLG_DEOXYS_EYE = 57 01 +BGM_FRLG_TRAINER_TOWER = 58 01 +BGM_FRLG_HALL_OF_FAME_PALLET_TOWN = 59 01 +BGM_FRLG_TEACHY_TV = 5A 01 + BGM_STOP = 5D 01 BGM_TETSUJI = 5E 01 BGM_FIELD13 = 5F 01 diff --git a/data/data_835B488.s b/data/data_835B488.s index 4377d5ef7..f01fe4ad4 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -1,70 +1,7 @@ .section .rodata .align 2 -gUnknown_83A7310:: @ 83A7310 - .incbin "baserom.gba", 0x3A7310, 0x20 - -gUnknown_83A7330:: @ 83A7330 - .incbin "baserom.gba", 0x3A7330, 0x14 - -gUnknown_83A7344:: @ 83A7344 - .incbin "baserom.gba", 0x3A7344, 0x48 - -gUnknown_83A738C:: @ 83A738C - .incbin "baserom.gba", 0x3A738C, 0x8 - -gUnknown_83A7394:: @ 83A7394 - .incbin "baserom.gba", 0x3A7394, 0x24 - -gUnknown_83A73B8:: @ 83A73B8 - .incbin "baserom.gba", 0x3A73B8, 0x4 - -gUnknown_83A73BC:: @ 83A73BC - .incbin "baserom.gba", 0x3A73BC, 0x10 - -gUnknown_83A73CC:: @ 83A73CC - .incbin "baserom.gba", 0x3A73CC, 0x8 - -gUnknown_83A73D4:: @ 83A73D4 - .incbin "baserom.gba", 0x3A73D4, 0x4 - -gUnknown_83A73D8:: @ 83A73D8 - .incbin "baserom.gba", 0x3A73D8, 0x4 - -gUnknown_83A73DC:: @ 83A73DC - .incbin "baserom.gba", 0x3A73DC, 0x284 - -gUnknown_83A7660:: @ 83A7660 - .incbin "baserom.gba", 0x3A7660, 0x2FF4 - -gUnknown_83AA654:: @ 83AA654 - .incbin "baserom.gba", 0x3AA654, 0x1220 - -gUnknown_83AB874:: @ 83AB874 - .incbin "baserom.gba", 0x3AB874, 0x540 - -gUnknown_83ABDB4:: @ 83ABDB4 - .incbin "baserom.gba", 0x3ABDB4, 0x434 - -gUnknown_83AC1E8:: @ 83AC1E8 - .incbin "baserom.gba", 0x3AC1E8, 0x410 - -gUnknown_83AC5F8:: @ 83AC5F8 - .incbin "baserom.gba", 0x3AC5F8, 0x1D0 - -gUnknown_83AC7C8:: @ 83AC7C8 - .incbin "baserom.gba", 0x3AC7C8, 0x188 - -gUnknown_83AC950:: @ 83AC950 - .incbin "baserom.gba", 0x3AC950, 0x10 - -gUnknown_83AC960:: @ 83AC960 - .incbin "baserom.gba", 0x3AC960, 0x10 - -gUnknown_83AC970:: @ 83AC970 - .incbin "baserom.gba", 0x3AC970, 0x20 - -sFanfares:: @ 83AC990 - .incbin "baserom.gba", 0x3AC990, 0x40 +gOamData_83AC9C0:: + .4byte 0x00000000, 0x00000800 gUnknown_83AC9D0:: @ 83AC9D0 .incbin "baserom.gba", 0x3AC9D0, 0x8 diff --git a/data/field_tasks.s b/data/field_tasks.s new file mode 100644 index 000000000..a91e6cec9 --- /dev/null +++ b/data/field_tasks.s @@ -0,0 +1,7 @@ + .section .rodata + .align 2 +gUnknown_83A7310:: @ 83A7310 + .incbin "baserom.gba", 0x3A7310, 0x20 + +gUnknown_83A7330:: @ 83A7330 + .incbin "baserom.gba", 0x3A7330, 0x14 diff --git a/data/palette.s b/data/palette.s new file mode 100644 index 000000000..67a6fcb0c --- /dev/null +++ b/data/palette.s @@ -0,0 +1,7 @@ + .section .rodata + .align 2 +gUnknown_83AC960:: @ 83AC960 + .incbin "baserom.gba", 0x3AC960, 0x10 + +gUnknown_83AC970:: @ 83AC970 + .incbin "baserom.gba", 0x3AC970, 0x20 diff --git a/data/start_menu.s b/data/start_menu.s new file mode 100644 index 000000000..e004a6628 --- /dev/null +++ b/data/start_menu.s @@ -0,0 +1,28 @@ + .section .rodata + .align 2 +gUnknown_83A7344:: @ 83A7344 + .incbin "baserom.gba", 0x3A7344, 0x48 + +gUnknown_83A738C:: @ 83A738C + .incbin "baserom.gba", 0x3A738C, 0x8 + +gUnknown_83A7394:: @ 83A7394 + .incbin "baserom.gba", 0x3A7394, 0x24 + +gUnknown_83A73B8:: @ 83A73B8 + .incbin "baserom.gba", 0x3A73B8, 0x4 + +gUnknown_83A73BC:: @ 83A73BC + .incbin "baserom.gba", 0x3A73BC, 0x10 + +gUnknown_83A73CC:: @ 83A73CC + .incbin "baserom.gba", 0x3A73CC, 0x8 + +gUnknown_83A73D4:: @ 83A73D4 + .incbin "baserom.gba", 0x3A73D4, 0x4 + +gUnknown_83A73D8:: @ 83A73D8 + .incbin "baserom.gba", 0x3A73D8, 0x4 + +gUnknown_83A73DC:: @ 83A73DC + .incbin "baserom.gba", 0x3A73DC, 0x284 diff --git a/data/tileset_anims.s b/data/tileset_anims.s new file mode 100644 index 000000000..9881cdd3f --- /dev/null +++ b/data/tileset_anims.s @@ -0,0 +1,25 @@ + .section .rodata + .align 2 +gUnknown_83A7660:: @ 83A7660 + .incbin "baserom.gba", 0x3A7660, 0x2FF4 + +gUnknown_83AA654:: @ 83AA654 + .incbin "baserom.gba", 0x3AA654, 0x1220 + +gUnknown_83AB874:: @ 83AB874 + .incbin "baserom.gba", 0x3AB874, 0x540 + +gUnknown_83ABDB4:: @ 83ABDB4 + .incbin "baserom.gba", 0x3ABDB4, 0x434 + +gUnknown_83AC1E8:: @ 83AC1E8 + .incbin "baserom.gba", 0x3AC1E8, 0x410 + +gUnknown_83AC5F8:: @ 83AC5F8 + .incbin "baserom.gba", 0x3AC5F8, 0x1D0 + +gUnknown_83AC7C8:: @ 83AC7C8 + .incbin "baserom.gba", 0x3AC7C8, 0x188 + +gUnknown_83AC950:: @ 83AC950 + .incbin "baserom.gba", 0x3AC950, 0x10 diff --git a/include/constants/songs.h b/include/constants/songs.h index e31a38fdc..b216ac988 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -250,6 +250,93 @@ #define SE_W287B 245 #define SE_W114 246 #define SE_W063B 247 +#define MUS_ME_ASA 256 +#define MUS_FANFA1 257 +#define MUS_FANFA4 258 +#define MUS_FANFA5 259 +#define MUS_ME_BACHI 260 +#define MUS_ME_WAZA 261 +#define MUS_ME_KINOMI 262 +#define MUS_ME_B_BIG 268 +#define MUS_ME_B_SMALL 269 +#define MUS_ME_WASURE 270 +#define MUS_ME_ZANNEN 271 +#define BGM_FRLG_FOLLOW_ME 272 +#define BGM_FRLG_GAMECORNER 273 +#define BGM_FRLG_ROCKET_HIDEOUT 274 +#define BGM_FRLG_GYM 275 +#define BGM_FRLG_JIGGLYPUFF 276 +#define BGM_FRLG_OPENING 277 +#define BGM_FRLG_TITLE 278 +#define BGM_FRLG_CINNABAR_ISLAND 279 +#define BGM_FRLG_LAVENDER_TOWN 280 +#define BGM_FRLG_HEALING_TEST 281 +#define BGM_FRLG_BICYCLE 282 +#define BGM_FRLG_SUSPICIOUS_EYE 283 +#define BGM_FRLG_GIRL_EYE 284 +#define BGM_FRLG_BOY_EYE 285 +#define BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME 286 +#define BGM_FRLG_VIRIDIAN_FOREST 287 +#define BGM_FRLG_MT_MOON 288 +#define BGM_FRLG_POKEMON_MANSION 289 +#define BGM_FRLG_CREDITS 290 +#define BGM_FRLG_ROUTE_1 291 +#define BGM_FRLG_ROUTE_24 292 +#define BGM_FRLG_ROUTE_3 293 +#define BGM_FRLG_ROUTE_11 294 +#define BGM_FRLG_INDIGO_PLATEAU 295 +#define BGM_FRLG_BATTLE_LEADER 296 +#define BGM_FRLG_BATTLE_TRAINER 297 +#define BGM_FRLG_BATTLE_WILD_POKEMON 298 +#define BGM_FRLG_BATTLE_CHAMPION 299 +#define BGM_FRLG_PALLET_TOWN 300 +#define BGM_FRLG_OAK_LAB 301 +#define BGM_FRLG_PROF_OAK 302 +#define BGM_FRLG_POKEMON_CENTER 303 +#define BGM_FRLG_SS_ANNE 304 +#define BGM_FRLG_SURF 305 +#define BGM_FRLG_POKEMON_TOWER 306 +#define BGM_FRLG_SILPH 307 +#define BGM_FRLG_CERULEAN_CITY 308 +#define BGM_FRLG_CELADON_CITY 309 +#define BGM_FRLG_KACHI_TRAINER 310 +#define BGM_FRLG_KACHI_WILD_POKEMON 311 +#define BGM_FRLG_KACHI_LEADER 312 +#define BGM_FRLG_VERMILION_CITY 313 +#define BGM_FRLG_VIRIDIAN_CITY 314 +#define BGM_FRLG_RIVAL 315 +#define BGM_FRLG_RIVAL_POSTBATTLE 316 +#define BGM_FRLG_ME_POKEDEX_EVAL 317 +#define BGM_FRLG_ME_KEYITEM 318 +#define BGM_FRLG_FANFA_POKEMON_CAUGHT 319 +#define BGM_FRLG_FANFA_TRAINERCARD_PHOTO 320 +#define BGM_FRLG_GAMEFREAK_LOGO 321 +#define BGM_FRLG_CAUGHT_POKEMON 322 +#define BGM_FRLG_GAME_EXPLANATION_START 323 +#define BGM_FRLG_GAME_EXPLANATION_MIDDLE 324 +#define BGM_FRLG_GAME_EXPLANATION_END 325 +#define BGM_FRLG_POKEMON_JUMP 326 +#define BGM_FRLG_UNION_ROOM 327 +#define BGM_FRLG_POKEMON_NETWORK_CENTER 328 +#define BGM_FRLG_MYSTERY_GIFT 329 +#define BGM_FRLG_DODRIO_BERRY_PICK 330 +#define BGM_FRLG_MT_EMBER 331 +#define BGM_FRLG_TEACHY_TV_EPISODE 332 +#define BGM_FRLG_SEVII_ISLANDS 333 +#define BGM_FRLG_TANOBY_RUINS 334 +#define BGM_FRLG_ISLAND_ONE 335 +#define BGM_FRLG_ISLAND_FOUR 336 +#define BGM_FRLG_ISLAND_SIX 337 +#define BGM_FRLG_FLUTE 338 +#define BGM_FRLG_BATTLE_DEOXYS 339 +#define BGM_FRLG_BATTLE_MEWTWO 340 +#define BGM_FRLG_BATTLE_LEGENDARY 341 +#define BGM_FRLG_LEADER_EYE 342 +#define BGM_FRLG_DEOXYS_EYE 343 +#define BGM_FRLG_TRAINER_TOWER 344 +#define BGM_FRLG_HALL_OF_FAME_PALLET_TOWN 345 +#define BGM_FRLG_TEACHY_TV 346 + #define BGM_STOP 349 #define BGM_TETSUJI 350 #define BGM_FIELD13 351 @@ -385,82 +472,6 @@ #define BGM_BATTLE35 481 #define BGM_BATTLE38 482 #define BGM_BATTLE30 483 -#define BGM_FRLG_FOLLOW_ME 484 -#define BGM_FRLG_GAMECORNER 485 -#define BGM_FRLG_ROCKET_HIDEOUT 486 -#define BGM_FRLG_GYM 487 -#define BGM_FRLG_JIGGLYPUFF 488 -#define BGM_FRLG_OPENING 489 -#define BGM_FRLG_TITLE 490 -#define BGM_FRLG_CINNABAR_ISLAND 491 -#define BGM_FRLG_LAVENDER_TOWN 492 -#define BGM_FRLG_HEALING_TEST 493 -#define BGM_FRLG_BICYCLE 494 -#define BGM_FRLG_SUSPICIOUS_EYE 495 -#define BGM_FRLG_GIRL_EYE 496 -#define BGM_FRLG_BOY_EYE 497 -#define BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME 498 -#define BGM_FRLG_VIRIDIAN_FOREST 499 -#define BGM_FRLG_MT_MOON 500 -#define BGM_FRLG_POKEMON_MANSION 501 -#define BGM_FRLG_CREDITS 502 -#define BGM_FRLG_ROUTE_1 503 -#define BGM_FRLG_ROUTE_24 504 -#define BGM_FRLG_ROUTE_3 505 -#define BGM_FRLG_ROUTE_11 506 -#define BGM_FRLG_INDIGO_PLATEAU 507 -#define BGM_FRLG_BATTLE_LEADER 508 -#define BGM_FRLG_BATTLE_TRAINER 509 -#define BGM_FRLG_BATTLE_WILD_POKEMON 510 -#define BGM_FRLG_BATTLE_CHAMPION 511 -#define BGM_FRLG_PALLET_TOWN 512 -#define BGM_FRLG_OAK_LAB 513 -#define BGM_FRLG_PROF_OAK 514 -#define BGM_FRLG_POKEMON_CENTER 515 -#define BGM_FRLG_SS_ANNE 516 -#define BGM_FRLG_SURF 517 -#define BGM_FRLG_POKEMON_TOWER 518 -#define BGM_FRLG_SILPH 519 -#define BGM_FRLG_CERULEAN_CITY 520 -#define BGM_FRLG_CELADON_CITY 521 -#define BGM_FRLG_KACHI_TRAINER 522 -#define BGM_FRLG_KACHI_WILD_POKEMON 523 -#define BGM_FRLG_KACHI_LEADER 524 -#define BGM_FRLG_VERMILION_CITY 525 -#define BGM_FRLG_VIRIDIAN_CITY 526 -#define BGM_FRLG_RIVAL 527 -#define BGM_FRLG_RIVAL_POSTBATTLE 528 -#define BGM_FRLG_ME_POKEDEX_EVAL 529 -#define BGM_FRLG_ME_KEYITEM 530 -#define BGM_FRLG_FANFA_POKEMON_CAUGHT 531 -#define BGM_FRLG_FANFA_TRAINERCARD_PHOTO 532 -#define BGM_FRLG_GAMEFREAK_LOGO 533 -#define BGM_FRLG_CAUGHT_POKEMON 534 -#define BGM_FRLG_GAME_EXPLANATION_START 535 -#define BGM_FRLG_GAME_EXPLANATION_MIDDLE 536 -#define BGM_FRLG_GAME_EXPLANATION_END 537 -#define BGM_FRLG_POKEMON_JUMP 538 -#define BGM_FRLG_UNION_ROOM 539 -#define BGM_FRLG_POKEMON_NETWORK_CENTER 540 -#define BGM_FRLG_MYSTERY_GIFT 541 -#define BGM_FRLG_DODRIO_BERRY_PICK 542 -#define BGM_FRLG_MT_EMBER 543 -#define BGM_FRLG_TEACHY_TV_EPISODE 544 -#define BGM_FRLG_SEVII_ISLANDS 545 -#define BGM_FRLG_TANOBY_RUINS 546 -#define BGM_FRLG_ISLAND_ONE 547 -#define BGM_FRLG_ISLAND_FOUR 548 -#define BGM_FRLG_ISLAND_SIX 549 -#define BGM_FRLG_FLUTE 550 -#define BGM_FRLG_BATTLE_DEOXYS 551 -#define BGM_FRLG_BATTLE_MEWTWO 552 -#define BGM_FRLG_BATTLE_LEGENDARY 553 -#define BGM_FRLG_LEADER_EYE 554 -#define BGM_FRLG_DEOXYS_EYE 555 -#define BGM_FRLG_TRAINER_TOWER 556 -#define BGM_FRLG_HALL_OF_FAME_PALLET_TOWN 557 -#define BGM_FRLG_TEACHY_TV 558 - #define BGM_ROUTE_118 0x7FFF // What is this for? #endif // GUARD_CONSTANTS_SONGS_H diff --git a/ld_script.txt b/ld_script.txt index 9b15cb474..ba6b4f9bf 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -377,6 +377,11 @@ SECTIONS { data/map_obj_80688E4.o(.rodata); src/scrcmd.o(.rodata); src/coord_event_weather.o(.rodata); + data/field_tasks.o(.rodata); + data/start_menu.o(.rodata); + data/tileset_anims.o(.rodata); + data/palette.o(.rodata); + src/sound.o(.rodata); data/data_835B488.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/data_83F5738.o(.rodata); diff --git a/src/oak_speech.c b/src/oak_speech.c index 2e58e801d..b24faee0e 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -561,7 +561,7 @@ static void Task_OaksSpeech1(u8 taskId) ShowBg(0); ShowBg(1); SetVBlankCallback(VBlankCB_NewGameOaksSpeech); - PlayBGM(323); + PlayBGM(BGM_FRLG_GAME_EXPLANATION_START); gTasks[taskId].func = Task_OaksSpeech2; gMain.state = 0; return; @@ -715,7 +715,7 @@ static void Task_OakSpeech6(u8 taskId) data[3]--; else { - PlayBGM(324); + PlayBGM(BGM_FRLG_GAME_EXPLANATION_MIDDLE); sub_810F71C(); PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1); sOakSpeechResources->unk_0008 = malloc_and_decompress(sNewGameAdventureIntroTilemap, &sp14); @@ -817,7 +817,7 @@ static void Task_OakSpeech7(u8 taskId) break; case 4: sub_8006398(gTasks[taskId].data[5]); - PlayBGM(325); + PlayBGM(BGM_FRLG_GAME_EXPLANATION_END); data[15] = 24; gMain.state++; break; @@ -876,7 +876,7 @@ static void Task_OakSpeech9(u8 taskId) CreateNidoranFSprite(taskId); LoadOaksSpeechTrainerPic(3, 0); CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(taskId, 1); - PlayBGM(292); + PlayBGM(BGM_FRLG_ROUTE_24); BeginNormalPaletteFade(0xFFFFFFFF, 5, 16, 0, RGB_BLACK); data[3] = 80; ShowBg(2); diff --git a/src/sound.c b/src/sound.c index f94e44506..ba6511d1c 100644 --- a/src/sound.c +++ b/src/sound.c @@ -40,7 +40,23 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2; extern struct MusicPlayerInfo gMPlayInfo_SE3; extern struct ToneData gCryTable[]; extern struct ToneData gCryTable2[]; -extern const struct Fanfare sFanfares[]; + +static const struct Fanfare sFanfares[] = { + { MUS_FANFA1, 80 }, + { MUS_FANFA4, 160 }, + { MUS_FANFA5, 220 }, + { MUS_ME_WAZA, 220 }, + { MUS_ME_ASA, 160 }, + { MUS_ME_BACHI, 340 }, + { MUS_ME_WASURE, 180 }, + { MUS_ME_KINOMI, 120 }, + { MUS_ME_B_BIG, 250 }, + { MUS_ME_B_SMALL, 150 }, + { MUS_ME_ZANNEN, 160 }, + { BGM_FRLG_FLUTE, 450 }, + { BGM_FRLG_ME_KEYITEM, 170 }, + { BGM_FRLG_ME_POKEDEX_EVAL, 196 } +}; extern u16 SpeciesToCryId(u16); From 2159da7f2687faaa34a91a408801161a3f5aa472 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Apr 2019 10:36:10 -0400 Subject: [PATCH 075/318] Dissasemble battle anim oam data --- data/battle_anim.s | 271 ++++++++++++++++++++++++++++++++++++++++++++ data/data_835B488.s | 75 ------------ ld_script.txt | 1 + src/text.c | 4 +- 4 files changed, 274 insertions(+), 77 deletions(-) create mode 100644 data/battle_anim.s diff --git a/data/battle_anim.s b/data/battle_anim.s new file mode 100644 index 000000000..21f3e5158 --- /dev/null +++ b/data/battle_anim.s @@ -0,0 +1,271 @@ + .section .rodata + .align 2 +gOamData_83AC9C8:: + .4byte 0x00000000, 0x00000800 + +gOamData_83AC9D0:: + .4byte 0x40000000, 0x00000800 + +gOamData_83AC9D8:: + .4byte 0x80000000, 0x00000800 + +gOamData_83AC9E0:: + .4byte 0xc0000000, 0x00000800 + +gOamData_83AC9E8:: + .4byte 0x00004000, 0x00000800 + +gOamData_83AC9F0:: + .4byte 0x40004000, 0x00000800 + +gOamData_83AC9F8:: + .4byte 0x80004000, 0x00000800 + +gOamData_83ACA00:: + .4byte 0xc0004000, 0x00000800 + +gOamData_83ACA08:: + .4byte 0x00008000, 0x00000800 + +gOamData_83ACA10:: + .4byte 0x40008000, 0x00000800 + +gOamData_83ACA18:: + .4byte 0x80008000, 0x00000800 + +gOamData_83ACA20:: + .4byte 0xc0008000, 0x00000800 + +gOamData_83ACA28:: + .4byte 0x00000100, 0x00000800 + +gOamData_83ACA30:: + .4byte 0x40000100, 0x00000800 + +gOamData_83ACA38:: + .4byte 0x80000100, 0x00000800 + +gOamData_83ACA40:: + .4byte 0xc0000100, 0x00000800 + +gOamData_83ACA48:: + .4byte 0x00004100, 0x00000800 + +gOamData_83ACA50:: + .4byte 0x40004100, 0x00000800 + +gOamData_83ACA58:: + .4byte 0x80004100, 0x00000800 + +gOamData_83ACA60:: + .4byte 0xc0004100, 0x00000800 + +gOamData_83ACA68:: + .4byte 0x00008100, 0x00000800 + +gOamData_83ACA70:: + .4byte 0x40008100, 0x00000800 + +gOamData_83ACA78:: + .4byte 0x80008100, 0x00000800 + +gOamData_83ACA80:: + .4byte 0xc0008100, 0x00000800 + +gOamData_83ACA88:: + .4byte 0x00000300, 0x00000800 + +gOamData_83ACA90:: + .4byte 0x40000300, 0x00000800 + +gOamData_83ACA98:: + .4byte 0x80000300, 0x00000800 + +gOamData_83ACAA0:: + .4byte 0xc0000300, 0x00000800 + +gOamData_83ACAA8:: + .4byte 0x00004300, 0x00000800 + +gOamData_83ACAB0:: + .4byte 0x40004300, 0x00000800 + +gOamData_83ACAB8:: + .4byte 0x80004300, 0x00000800 + +gOamData_83ACAC0:: + .4byte 0xc0004300, 0x00000800 + +gOamData_83ACAC8:: + .4byte 0x00008300, 0x00000800 + +gOamData_83ACAD0:: + .4byte 0x40008300, 0x00000800 + +gOamData_83ACAD8:: + .4byte 0x80008300, 0x00000800 + +gOamData_83ACAE0:: + .4byte 0xc0008300, 0x00000800 + +gOamData_83ACAE8:: + .4byte 0x00000400, 0x00000800 + +gOamData_83ACAF0:: + .4byte 0x40000400, 0x00000800 + +gOamData_83ACAF8:: + .4byte 0x80000400, 0x00000800 + +gOamData_83ACB00:: + .4byte 0xc0000400, 0x00000800 + +gOamData_83ACB08:: + .4byte 0x00004400, 0x00000800 + +gOamData_83ACB10:: + .4byte 0x40004400, 0x00000800 + +gOamData_83ACB18:: + .4byte 0x80004400, 0x00000800 + +gOamData_83ACB20:: + .4byte 0xc0004400, 0x00000800 + +gOamData_83ACB28:: + .4byte 0x00008400, 0x00000800 + +gOamData_83ACB30:: + .4byte 0x40008400, 0x00000800 + +gOamData_83ACB38:: + .4byte 0x80008400, 0x00000800 + +gOamData_83ACB40:: + .4byte 0xc0008400, 0x00000800 + +gOamData_83ACB48:: + .4byte 0x00000500, 0x00000800 + +gOamData_83ACB50:: + .4byte 0x40000500, 0x00000800 + +gOamData_83ACB58:: + .4byte 0x80000500, 0x00000800 + +gOamData_83ACB60:: + .4byte 0xc0000500, 0x00000800 + +gOamData_83ACB68:: + .4byte 0x00004500, 0x00000800 + +gOamData_83ACB70:: + .4byte 0x40004500, 0x00000800 + +gOamData_83ACB78:: + .4byte 0x80004500, 0x00000800 + +gOamData_83ACB80:: + .4byte 0xc0004500, 0x00000800 + +gOamData_83ACB88:: + .4byte 0x00008500, 0x00000800 + +gOamData_83ACB90:: + .4byte 0x40008500, 0x00000800 + +gOamData_83ACB98:: + .4byte 0x80008500, 0x00000800 + +gOamData_83ACBA0:: + .4byte 0xc0008500, 0x00000800 + +gOamData_83ACBA8:: + .4byte 0x00000700, 0x00000800 + +gOamData_83ACBB0:: + .4byte 0x40000700, 0x00000800 + +gOamData_83ACBB8:: + .4byte 0x80000700, 0x00000800 + +gOamData_83ACBC0:: + .4byte 0xc0000700, 0x00000800 + +gOamData_83ACBC8:: + .4byte 0x00004700, 0x00000800 + +gOamData_83ACBD0:: + .4byte 0x40004700, 0x00000800 + +gOamData_83ACBD8:: + .4byte 0x80004700, 0x00000800 + +gOamData_83ACBE0:: + .4byte 0xc0004700, 0x00000800 + +gOamData_83ACBE8:: + .4byte 0x00008700, 0x00000800 + +gOamData_83ACBF0:: + .4byte 0x40008700, 0x00000800 + +gOamData_83ACBF8:: + .4byte 0x80008700, 0x00000800 + +gOamData_83ACC00:: + .4byte 0xc0008700, 0x00000800 + +gUnknown_83ACC08:: @ 83ACC08 + .incbin "baserom.gba", 0x3ACC08, 0x440 + +gUnknown_83AD048:: @ 83AD048 + .incbin "baserom.gba", 0x3AD048, 0x308 + +gUnknown_83AD350:: @ 83AD350 + .incbin "baserom.gba", 0x3AD350, 0x120 + +gUnknown_83AD470:: @ 83AD470 + .incbin "baserom.gba", 0x3AD470, 0x4E0 + +gUnknown_83AD950:: @ 83AD950 + .incbin "baserom.gba", 0x3AD950, 0x308 + +gUnknown_83ADC58:: @ 83ADC58 + .incbin "baserom.gba", 0x3ADC58, 0x120 + +gUnknown_83ADD78:: @ 83ADD78 + .incbin "baserom.gba", 0x3ADD78, 0xA0 + +gUnknown_83ADE18:: @ 83ADE18 + .incbin "baserom.gba", 0x3ADE18, 0x144 + +gUnknown_83ADF5C:: @ 83ADF5C + .incbin "baserom.gba", 0x3ADF5C, 0xC0 + +gUnknown_83AE01C:: @ 83AE01C + .incbin "baserom.gba", 0x3AE01C, 0x20 + +gUnknown_83AE03C:: @ 83AE03C + .incbin "baserom.gba", 0x3AE03C, 0x10 + +gUnknown_83AE04C:: @ 83AE04C + .incbin "baserom.gba", 0x3AE04C, 0x4 + +gUnknown_83AE050:: @ 83AE050 + .incbin "baserom.gba", 0x3AE050, 0x4 + +gUnknown_83AE054:: @ 83AE054 + .incbin "baserom.gba", 0x3AE054, 0x30 + +gUnknown_83AE084:: @ 83AE084 + .incbin "baserom.gba", 0x3AE084, 0x114D0 + +gUnknown_83BF554:: @ 83BF554 + .incbin "baserom.gba", 0x3BF554, 0x8 + +gUnknown_83BF55C:: @ 83BF55C + .incbin "baserom.gba", 0x3BF55C, 0x18 + +gUnknown_83BF574:: @ 83BF574 + .incbin "baserom.gba", 0x3BF574, 0x18 diff --git a/data/data_835B488.s b/data/data_835B488.s index f01fe4ad4..032136c18 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -1,80 +1,5 @@ .section .rodata .align 2 -gOamData_83AC9C0:: - .4byte 0x00000000, 0x00000800 - -gUnknown_83AC9D0:: @ 83AC9D0 - .incbin "baserom.gba", 0x3AC9D0, 0x8 - -gOamData_83AC9D8:: - .incbin "baserom.gba", 0x3AC9D8, 0x10 - -gOamData_83AC9E8:: - .incbin "baserom.gba", 0x3AC9E8, 0x10 - -gOamData_83AC9F8:: - .incbin "baserom.gba", 0x3AC9F8, 0x8 - -gUnknown_83ACA00:: - .incbin "baserom.gba", 0x3ACA00, 0xF8 - -gOamData_83ACAF8:: - .incbin "baserom.gba", 0x3ACAF8, 0x110 - -gUnknown_83ACC08:: @ 83ACC08 - .incbin "baserom.gba", 0x3ACC08, 0x440 - -gUnknown_83AD048:: @ 83AD048 - .incbin "baserom.gba", 0x3AD048, 0x308 - -gUnknown_83AD350:: @ 83AD350 - .incbin "baserom.gba", 0x3AD350, 0x120 - -gUnknown_83AD470:: @ 83AD470 - .incbin "baserom.gba", 0x3AD470, 0x4E0 - -gUnknown_83AD950:: @ 83AD950 - .incbin "baserom.gba", 0x3AD950, 0x308 - -gUnknown_83ADC58:: @ 83ADC58 - .incbin "baserom.gba", 0x3ADC58, 0x120 - -gUnknown_83ADD78:: @ 83ADD78 - .incbin "baserom.gba", 0x3ADD78, 0xA0 - -gUnknown_83ADE18:: @ 83ADE18 - .incbin "baserom.gba", 0x3ADE18, 0x144 - -gUnknown_83ADF5C:: @ 83ADF5C - .incbin "baserom.gba", 0x3ADF5C, 0xC0 - -gUnknown_83AE01C:: @ 83AE01C - .incbin "baserom.gba", 0x3AE01C, 0x20 - -gUnknown_83AE03C:: @ 83AE03C - .incbin "baserom.gba", 0x3AE03C, 0x10 - -gUnknown_83AE04C:: @ 83AE04C - .incbin "baserom.gba", 0x3AE04C, 0x4 - -gUnknown_83AE050:: @ 83AE050 - .incbin "baserom.gba", 0x3AE050, 0x4 - -gUnknown_83AE054:: @ 83AE054 - .incbin "baserom.gba", 0x3AE054, 0x30 - -gUnknown_83AE084:: @ 83AE084 - .incbin "baserom.gba", 0x3AE084, 0x114D0 - -gUnknown_83BF554:: @ 83BF554 - .incbin "baserom.gba", 0x3BF554, 0x8 - -gUnknown_83BF55C:: @ 83BF55C - .incbin "baserom.gba", 0x3BF55C, 0x18 - -gUnknown_83BF574:: @ 83BF574 - .incbin "baserom.gba", 0x3BF574, 0x18 - gUnknown_83BF58C:: @ 83BF58C .incbin "baserom.gba", 0x3BF58C, 0x1C diff --git a/ld_script.txt b/ld_script.txt index ba6b4f9bf..4b9645de2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -382,6 +382,7 @@ SECTIONS { data/tileset_anims.o(.rodata); data/palette.o(.rodata); src/sound.o(.rodata); + data/battle_anim.o(.rodata); data/data_835B488.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/data_83F5738.o(.rodata); diff --git a/src/text.c b/src/text.c index 86b60485d..d83b36f88 100644 --- a/src/text.c +++ b/src/text.c @@ -9,7 +9,7 @@ extern u8 gGlyphInfo[0x90]; extern u8 gUnknown_203ADFA; extern u16 gUnknown_841F408[]; -extern const struct OamData gUnknown_83AC9D0; +extern const struct OamData gOamData_83AC9D0; extern void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); @@ -60,7 +60,7 @@ const struct SpriteTemplate gUnknown_81EA6B4 = { .tileTag = 0x8000, .paletteTag = 0x8000, - .oam = &gUnknown_83AC9D0, + .oam = &gOamData_83AC9D0, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, From fcc77d3b96ef6f8c314f6427b4f0c17ce66ac6f7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Apr 2019 13:38:48 -0400 Subject: [PATCH 076/318] split off field_weather data --- data/data_835B488.s | 131 ------------------------------------------- data/field_weather.s | 101 +++++++++++++++++++++++++++++++++ data/title_screen.s | 34 +++++++++++ ld_script.txt | 2 + 4 files changed, 137 insertions(+), 131 deletions(-) create mode 100644 data/field_weather.s create mode 100644 data/title_screen.s diff --git a/data/data_835B488.s b/data/data_835B488.s index 032136c18..1377d8599 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -1,136 +1,5 @@ .section .rodata .align 2 -gUnknown_83BF58C:: @ 83BF58C - .incbin "baserom.gba", 0x3BF58C, 0x1C - -gUnknown_83BF5A8:: @ 83BF5A8 - .incbin "baserom.gba", 0x3BF5A8, 0x55C - -gUnknown_83BFB04:: @ 83BFB04 - .incbin "baserom.gba", 0x3BFB04, 0x18 - -gUnknown_83BFB1C:: @ 83BFB1C - .incbin "baserom.gba", 0x3BFB1C, 0x20 - -gUnknown_83BFB3C:: @ 83BFB3C - .incbin "baserom.gba", 0x3BFB3C, 0x20 - -gUnknown_83BFB5C:: @ 83BFB5C - .incbin "baserom.gba", 0x3BFB5C, 0x18 - -gUnknown_83BFB74:: @ 83BFB74 - .incbin "baserom.gba", 0x3BFB74, 0x10 - -gUnknown_83BFB84:: @ 83BFB84 - .incbin "baserom.gba", 0x3BFB84, 0x18 - -gUnknown_83BFB9C:: @ 83BFB9C - .incbin "baserom.gba", 0x3BFB9C, 0x20 - -gUnknown_83BFBBC:: @ 83BFBBC - .incbin "baserom.gba", 0x3BFBBC, 0x18 - -gUnknown_83BFBD4:: @ 83BFBD4 - .incbin "baserom.gba", 0x3BFBD4, 0x2FE8 - -gUnknown_83C2BBC:: @ 83C2BBC - .incbin "baserom.gba", 0x3C2BBC, 0x4 - -gUnknown_83C2BC0:: @ 83C2BC0 - .incbin "baserom.gba", 0x3C2BC0, 0xF0 - -gUnknown_83C2CB0:: @ 83C2CB0 - .incbin "baserom.gba", 0x3C2CB0, 0x10 - -gUnknown_83C2CC0:: @ 83C2CC0 - .incbin "baserom.gba", 0x3C2CC0, 0x20 - -gUnknown_83C2CE0:: @ 83C2CE0 - .incbin "baserom.gba", 0x3C2CE0, 0x20 - -gUnknown_83C2D00:: @ 83C2D00 - .incbin "baserom.gba", 0x3C2D00, 0x20 - -gUnknown_83C2D20:: @ 83C2D20 - .incbin "baserom.gba", 0x3C2D20, 0x820 - -gUnknown_83C3540:: @ 83C3540 - .incbin "baserom.gba", 0x3C3540, 0x3080 - -gUnknown_83C65C0:: @ 83C65C0 - .incbin "baserom.gba", 0x3C65C0, 0x4 - -gUnknown_83C65C4:: @ 83C65C4 - .incbin "baserom.gba", 0x3C65C4, 0x4 - -gUnknown_83C65C8:: @ 83C65C8 - .incbin "baserom.gba", 0x3C65C8, 0xC - -gUnknown_83C65D4:: @ 83C65D4 - .incbin "baserom.gba", 0x3C65D4, 0x1C - -gUnknown_83C65F0:: @ 83C65F0 - .incbin "baserom.gba", 0x3C65F0, 0x18 - -gUnknown_83C6608:: @ 83C6608 - .incbin "baserom.gba", 0x3C6608, 0x9C - -gUnknown_83C66A4:: @ 83C66A4 - .incbin "baserom.gba", 0x3C66A4, 0x18 - -gUnknown_83C66BC:: @ 83C66BC - .incbin "baserom.gba", 0x3C66BC, 0x8 - -gUnknown_83C66C4:: @ 83C66C4 - .incbin "baserom.gba", 0x3C66C4, 0x8 - -gUnknown_83C66CC:: @ 83C66CC - .incbin "baserom.gba", 0x3C66CC, 0x38 - -gUnknown_83C6704:: @ 83C6704 - .incbin "baserom.gba", 0x3C6704, 0x8C - -gUnknown_83C6790:: @ 83C6790 - .incbin "baserom.gba", 0x3C6790, 0x18 - -gUnknown_83C67A8:: @ 83C67A8 - .incbin "baserom.gba", 0x3C67A8, 0x8 - -gUnknown_83C67B0:: @ 83C67B0 - .incbin "baserom.gba", 0x3C67B0, 0x20 - -gUnknown_83C67D0:: @ 83C67D0 - .incbin "baserom.gba", 0x3C67D0, 0x18 - -gUnknown_83C67E8:: @ 83C67E8 - .incbin "baserom.gba", 0x3C67E8, 0x1C - -gUnknown_83C6804:: @ 83C6804 - .incbin "baserom.gba", 0x3C6804, 0x38 - -gUnknown_83C683C:: @ 83C683C - .incbin "baserom.gba", 0x3C683C, 0x18 - -gUnknown_83C6854:: @ 83C6854 - .incbin "baserom.gba", 0x3C6854, 0x8 - -gUnknown_83C685C:: @ 83C685C - .incbin "baserom.gba", 0x3C685C, 0xC - -gUnknown_83C6868:: @ 83C6868 - .incbin "baserom.gba", 0x3C6868, 0x8 - -gUnknown_83C6870:: @ 83C6870 - .incbin "baserom.gba", 0x3C6870, 0x8 - -gUnknown_83C6878:: @ 83C6878 - .incbin "baserom.gba", 0x3C6878, 0x44 - -gUnknown_83C68BC:: @ 83C68BC - .incbin "baserom.gba", 0x3C68BC, 0x18 - -gUnknown_83C68D4:: @ 83C68D4 - .incbin "baserom.gba", 0x3C68D4, 0xC gUnknown_83C68E0:: @ 83C68E0 .incbin "baserom.gba", 0x3C68E0, 0x4 diff --git a/data/field_weather.s b/data/field_weather.s new file mode 100644 index 000000000..a25e44344 --- /dev/null +++ b/data/field_weather.s @@ -0,0 +1,101 @@ + .section .rodata + .align 2 + +gUnknown_83C2BBC:: @ 83C2BBC + .incbin "baserom.gba", 0x3C2BBC, 0x4 + +gUnknown_83C2BC0:: @ 83C2BC0 + .incbin "baserom.gba", 0x3C2BC0, 0xF0 + +gUnknown_83C2CB0:: @ 83C2CB0 + .incbin "baserom.gba", 0x3C2CB0, 0x10 + +gUnknown_83C2CC0:: @ 83C2CC0 + .incbin "baserom.gba", 0x3C2CC0, 0x20 + +gUnknown_83C2CE0:: @ 83C2CE0 + .incbin "baserom.gba", 0x3C2CE0, 0x20 + +gUnknown_83C2D00:: @ 83C2D00 + .incbin "baserom.gba", 0x3C2D00, 0x20 + +gUnknown_83C2D20:: @ 83C2D20 + .incbin "baserom.gba", 0x3C2D20, 0x820 + +gUnknown_83C3540:: @ 83C3540 + .incbin "baserom.gba", 0x3C3540, 0x3080 + +gUnknown_83C65C0:: @ 83C65C0 + .incbin "baserom.gba", 0x3C65C0, 0x4 + +gUnknown_83C65C4:: @ 83C65C4 + .incbin "baserom.gba", 0x3C65C4, 0x4 + +gUnknown_83C65C8:: @ 83C65C8 + .incbin "baserom.gba", 0x3C65C8, 0xC + +gUnknown_83C65D4:: @ 83C65D4 + .incbin "baserom.gba", 0x3C65D4, 0x1C + +gUnknown_83C65F0:: @ 83C65F0 + .incbin "baserom.gba", 0x3C65F0, 0x18 + +gUnknown_83C6608:: @ 83C6608 + .incbin "baserom.gba", 0x3C6608, 0x9C + +gUnknown_83C66A4:: @ 83C66A4 + .incbin "baserom.gba", 0x3C66A4, 0x18 + +gUnknown_83C66BC:: @ 83C66BC + .incbin "baserom.gba", 0x3C66BC, 0x8 + +gUnknown_83C66C4:: @ 83C66C4 + .incbin "baserom.gba", 0x3C66C4, 0x8 + +gUnknown_83C66CC:: @ 83C66CC + .incbin "baserom.gba", 0x3C66CC, 0x38 + +gUnknown_83C6704:: @ 83C6704 + .incbin "baserom.gba", 0x3C6704, 0x8C + +gUnknown_83C6790:: @ 83C6790 + .incbin "baserom.gba", 0x3C6790, 0x18 + +gUnknown_83C67A8:: @ 83C67A8 + .incbin "baserom.gba", 0x3C67A8, 0x8 + +gUnknown_83C67B0:: @ 83C67B0 + .incbin "baserom.gba", 0x3C67B0, 0x20 + +gUnknown_83C67D0:: @ 83C67D0 + .incbin "baserom.gba", 0x3C67D0, 0x18 + +gUnknown_83C67E8:: @ 83C67E8 + .incbin "baserom.gba", 0x3C67E8, 0x1C + +gUnknown_83C6804:: @ 83C6804 + .incbin "baserom.gba", 0x3C6804, 0x38 + +gUnknown_83C683C:: @ 83C683C + .incbin "baserom.gba", 0x3C683C, 0x18 + +gUnknown_83C6854:: @ 83C6854 + .incbin "baserom.gba", 0x3C6854, 0x8 + +gUnknown_83C685C:: @ 83C685C + .incbin "baserom.gba", 0x3C685C, 0xC + +gUnknown_83C6868:: @ 83C6868 + .incbin "baserom.gba", 0x3C6868, 0x8 + +gUnknown_83C6870:: @ 83C6870 + .incbin "baserom.gba", 0x3C6870, 0x8 + +gUnknown_83C6878:: @ 83C6878 + .incbin "baserom.gba", 0x3C6878, 0x44 + +gUnknown_83C68BC:: @ 83C68BC + .incbin "baserom.gba", 0x3C68BC, 0x18 + +gUnknown_83C68D4:: @ 83C68D4 + .incbin "baserom.gba", 0x3C68D4, 0xC diff --git a/data/title_screen.s b/data/title_screen.s new file mode 100644 index 000000000..93d0f2f83 --- /dev/null +++ b/data/title_screen.s @@ -0,0 +1,34 @@ + .section .rodata + .align 2 +gUnknown_83BF58C:: @ 83BF58C + .incbin "baserom.gba", 0x3BF58C, 0x1C + +gUnknown_83BF5A8:: @ 83BF5A8 + .incbin "baserom.gba", 0x3BF5A8, 0x55C + +gUnknown_83BFB04:: @ 83BFB04 + .incbin "baserom.gba", 0x3BFB04, 0x18 + +gUnknown_83BFB1C:: @ 83BFB1C + .incbin "baserom.gba", 0x3BFB1C, 0x20 + +gUnknown_83BFB3C:: @ 83BFB3C + .incbin "baserom.gba", 0x3BFB3C, 0x20 + +gUnknown_83BFB5C:: @ 83BFB5C + .incbin "baserom.gba", 0x3BFB5C, 0x18 + +gUnknown_83BFB74:: @ 83BFB74 + .incbin "baserom.gba", 0x3BFB74, 0x10 + +gUnknown_83BFB84:: @ 83BFB84 + .incbin "baserom.gba", 0x3BFB84, 0x18 + +gUnknown_83BFB9C:: @ 83BFB9C + .incbin "baserom.gba", 0x3BFB9C, 0x20 + +gUnknown_83BFBBC:: @ 83BFBBC + .incbin "baserom.gba", 0x3BFBBC, 0x18 + +gUnknown_83BFBD4:: @ 83BFBD4 + .incbin "baserom.gba", 0x3BFBD4, 0x2FE8 diff --git a/ld_script.txt b/ld_script.txt index 4b9645de2..090b18fa1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -383,6 +383,8 @@ SECTIONS { data/palette.o(.rodata); src/sound.o(.rodata); data/battle_anim.o(.rodata); + data/title_screen.o(.rodata); + data/field_weather.o(.rodata); data/data_835B488.o(.rodata); src/battle_ai_script_commands.o(.rodata); data/data_83F5738.o(.rodata); From fcf6ad0fb53204ad36bdbc4bebc11fdbe6466dbe Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Apr 2019 14:23:19 -0400 Subject: [PATCH 077/318] Rename oak speech assets --- ...460D94.bin => help_docs_page2_tilemap.bin} | Bin ...460E34.bin => help_docs_page3_tilemap.bin} | Bin ...{unk_8460568.pal => help_docs_palette.pal} | 0 ...n => new_game_adventure_intro_tilemap.bin} | 0 ....bin => oak_speech_background_tilemap.bin} | Bin ...=> oak_speech_gfx_game_start_help_u_i.png} | Bin ....png => oak_speech_gfx_grass_platform.png} | Bin ...460ED4.pal => oak_speech_gfx_leaf_pal.pal} | 0 ...460F14.png => oak_speech_gfx_leaf_pic.png} | Bin ...8461CD4.pal => oak_speech_gfx_oak_pal.pal} | 0 ...8461D14.png => oak_speech_gfx_oak_pic.png} | Bin ...k_8462B74.png => oak_speech_gfx_pika1.png} | Bin ...k_8462D34.png => oak_speech_gfx_pika2.png} | Bin ...62E18.png => oak_speech_gfx_pika_eyes.png} | Bin ...84615FC.pal => oak_speech_gfx_red_pal.pal} | 0 ...846163C.png => oak_speech_gfx_red_pic.png} | Bin ...623AC.pal => oak_speech_gfx_rival_pal.pal} | 0 ...623EC.png => oak_speech_gfx_rival_pic.png} | Bin ...A4.png => oak_speech_gfx_solid_colors.png} | Bin ... => oak_speech_grass_platform_palette.pal} | 0 ...4629F0.pal => oak_speech_pika_palette.pal} | 0 src/oak_speech.c | 42 +++++++++--------- 22 files changed, 21 insertions(+), 21 deletions(-) rename data/oak_speech/{unk_8460D94.bin => help_docs_page2_tilemap.bin} (100%) rename data/oak_speech/{unk_8460E34.bin => help_docs_page3_tilemap.bin} (100%) rename data/oak_speech/{unk_8460568.pal => help_docs_palette.pal} (100%) rename data/oak_speech/{unk_8460BA8.bin => new_game_adventure_intro_tilemap.bin} (100%) rename data/oak_speech/{unk_8460CE8.bin => oak_speech_background_tilemap.bin} (100%) rename data/oak_speech/{unk_84605E8.png => oak_speech_gfx_game_start_help_u_i.png} (100%) rename data/oak_speech/{unk_8462A10.png => oak_speech_gfx_grass_platform.png} (100%) rename data/oak_speech/{unk_8460ED4.pal => oak_speech_gfx_leaf_pal.pal} (100%) rename data/oak_speech/{unk_8460F14.png => oak_speech_gfx_leaf_pic.png} (100%) rename data/oak_speech/{unk_8461CD4.pal => oak_speech_gfx_oak_pal.pal} (100%) rename data/oak_speech/{unk_8461D14.png => oak_speech_gfx_oak_pic.png} (100%) rename data/oak_speech/{unk_8462B74.png => oak_speech_gfx_pika1.png} (100%) rename data/oak_speech/{unk_8462D34.png => oak_speech_gfx_pika2.png} (100%) rename data/oak_speech/{unk_8462E18.png => oak_speech_gfx_pika_eyes.png} (100%) rename data/oak_speech/{unk_84615FC.pal => oak_speech_gfx_red_pal.pal} (100%) rename data/oak_speech/{unk_846163C.png => oak_speech_gfx_red_pic.png} (100%) rename data/oak_speech/{unk_84623AC.pal => oak_speech_gfx_rival_pal.pal} (100%) rename data/oak_speech/{unk_84623EC.png => oak_speech_gfx_rival_pic.png} (100%) rename data/oak_speech/{unk_8460CA4.png => oak_speech_gfx_solid_colors.png} (100%) rename data/oak_speech/{unk_84629D0.pal => oak_speech_grass_platform_palette.pal} (100%) rename data/oak_speech/{unk_84629F0.pal => oak_speech_pika_palette.pal} (100%) diff --git a/data/oak_speech/unk_8460D94.bin b/data/oak_speech/help_docs_page2_tilemap.bin similarity index 100% rename from data/oak_speech/unk_8460D94.bin rename to data/oak_speech/help_docs_page2_tilemap.bin diff --git a/data/oak_speech/unk_8460E34.bin b/data/oak_speech/help_docs_page3_tilemap.bin similarity index 100% rename from data/oak_speech/unk_8460E34.bin rename to data/oak_speech/help_docs_page3_tilemap.bin diff --git a/data/oak_speech/unk_8460568.pal b/data/oak_speech/help_docs_palette.pal similarity index 100% rename from data/oak_speech/unk_8460568.pal rename to data/oak_speech/help_docs_palette.pal diff --git a/data/oak_speech/unk_8460BA8.bin b/data/oak_speech/new_game_adventure_intro_tilemap.bin similarity index 100% rename from data/oak_speech/unk_8460BA8.bin rename to data/oak_speech/new_game_adventure_intro_tilemap.bin diff --git a/data/oak_speech/unk_8460CE8.bin b/data/oak_speech/oak_speech_background_tilemap.bin similarity index 100% rename from data/oak_speech/unk_8460CE8.bin rename to data/oak_speech/oak_speech_background_tilemap.bin diff --git a/data/oak_speech/unk_84605E8.png b/data/oak_speech/oak_speech_gfx_game_start_help_u_i.png similarity index 100% rename from data/oak_speech/unk_84605E8.png rename to data/oak_speech/oak_speech_gfx_game_start_help_u_i.png diff --git a/data/oak_speech/unk_8462A10.png b/data/oak_speech/oak_speech_gfx_grass_platform.png similarity index 100% rename from data/oak_speech/unk_8462A10.png rename to data/oak_speech/oak_speech_gfx_grass_platform.png diff --git a/data/oak_speech/unk_8460ED4.pal b/data/oak_speech/oak_speech_gfx_leaf_pal.pal similarity index 100% rename from data/oak_speech/unk_8460ED4.pal rename to data/oak_speech/oak_speech_gfx_leaf_pal.pal diff --git a/data/oak_speech/unk_8460F14.png b/data/oak_speech/oak_speech_gfx_leaf_pic.png similarity index 100% rename from data/oak_speech/unk_8460F14.png rename to data/oak_speech/oak_speech_gfx_leaf_pic.png diff --git a/data/oak_speech/unk_8461CD4.pal b/data/oak_speech/oak_speech_gfx_oak_pal.pal similarity index 100% rename from data/oak_speech/unk_8461CD4.pal rename to data/oak_speech/oak_speech_gfx_oak_pal.pal diff --git a/data/oak_speech/unk_8461D14.png b/data/oak_speech/oak_speech_gfx_oak_pic.png similarity index 100% rename from data/oak_speech/unk_8461D14.png rename to data/oak_speech/oak_speech_gfx_oak_pic.png diff --git a/data/oak_speech/unk_8462B74.png b/data/oak_speech/oak_speech_gfx_pika1.png similarity index 100% rename from data/oak_speech/unk_8462B74.png rename to data/oak_speech/oak_speech_gfx_pika1.png diff --git a/data/oak_speech/unk_8462D34.png b/data/oak_speech/oak_speech_gfx_pika2.png similarity index 100% rename from data/oak_speech/unk_8462D34.png rename to data/oak_speech/oak_speech_gfx_pika2.png diff --git a/data/oak_speech/unk_8462E18.png b/data/oak_speech/oak_speech_gfx_pika_eyes.png similarity index 100% rename from data/oak_speech/unk_8462E18.png rename to data/oak_speech/oak_speech_gfx_pika_eyes.png diff --git a/data/oak_speech/unk_84615FC.pal b/data/oak_speech/oak_speech_gfx_red_pal.pal similarity index 100% rename from data/oak_speech/unk_84615FC.pal rename to data/oak_speech/oak_speech_gfx_red_pal.pal diff --git a/data/oak_speech/unk_846163C.png b/data/oak_speech/oak_speech_gfx_red_pic.png similarity index 100% rename from data/oak_speech/unk_846163C.png rename to data/oak_speech/oak_speech_gfx_red_pic.png diff --git a/data/oak_speech/unk_84623AC.pal b/data/oak_speech/oak_speech_gfx_rival_pal.pal similarity index 100% rename from data/oak_speech/unk_84623AC.pal rename to data/oak_speech/oak_speech_gfx_rival_pal.pal diff --git a/data/oak_speech/unk_84623EC.png b/data/oak_speech/oak_speech_gfx_rival_pic.png similarity index 100% rename from data/oak_speech/unk_84623EC.png rename to data/oak_speech/oak_speech_gfx_rival_pic.png diff --git a/data/oak_speech/unk_8460CA4.png b/data/oak_speech/oak_speech_gfx_solid_colors.png similarity index 100% rename from data/oak_speech/unk_8460CA4.png rename to data/oak_speech/oak_speech_gfx_solid_colors.png diff --git a/data/oak_speech/unk_84629D0.pal b/data/oak_speech/oak_speech_grass_platform_palette.pal similarity index 100% rename from data/oak_speech/unk_84629D0.pal rename to data/oak_speech/oak_speech_grass_platform_palette.pal diff --git a/data/oak_speech/unk_84629F0.pal b/data/oak_speech/oak_speech_pika_palette.pal similarity index 100% rename from data/oak_speech/unk_84629F0.pal rename to data/oak_speech/oak_speech_pika_palette.pal diff --git a/src/oak_speech.c b/src/oak_speech.c index b24faee0e..f00d683cf 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -113,27 +113,27 @@ extern const u8 gText_Girl[]; extern const struct CompressedSpriteSheet gUnknown_8235194[]; extern const struct CompressedSpritePalette gUnknown_82373F4; -ALIGNED(4) const u16 sHelpDocsPalette[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal"); -static const u32 sOakSpeechGfx_GameStartHelpUI[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz"); -static const u32 sNewGameAdventureIntroTilemap[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz"); -static const u32 sOakSpeechGfx_SolidColors[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz"); -static const u32 sOakSpeech_BackgroundTilemap[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz"); -static const u16 sHelpDocsPage2Tilemap[] = INCBIN_U16("data/oak_speech/unk_8460D94.bin"); -static const u16 sHelpDocsPage3Tilemap[] = INCBIN_U16("data/oak_speech/unk_8460E34.bin"); -static const u16 sOakSpeechGfx_LeafPal[] = INCBIN_U16("data/oak_speech/unk_8460ED4.gbapal"); -static const u32 sOakSpeechGfx_LeafPic[] = INCBIN_U32("data/oak_speech/unk_8460F14.8bpp.lz"); -static const u16 sOakSpeechGfx_RedPal[] = INCBIN_U16("data/oak_speech/unk_84615FC.gbapal"); -static const u32 sOakSpeechGfx_RedPic[] = INCBIN_U32("data/oak_speech/unk_846163C.8bpp.lz"); -static const u16 sOakSpeechGfx_OakPal[] = INCBIN_U16("data/oak_speech/unk_8461CD4.gbapal"); -static const u32 sOakSpeechGfx_OakPic[] = INCBIN_U32("data/oak_speech/unk_8461D14.8bpp.lz"); -static const u16 sOakSpeechGfx_RivalPal[] = INCBIN_U16("data/oak_speech/unk_84623AC.gbapal"); -static const u32 sOakSpeechGfx_RivalPic[] = INCBIN_U32("data/oak_speech/unk_84623EC.8bpp.lz"); -static const u16 sOakSpeech_GrassPlatformPalette[] = INCBIN_U16("data/oak_speech/unk_84629D0.gbapal"); -static const u16 sOakSpeech_PikaPalette[] = INCBIN_U16("data/oak_speech/unk_84629F0.gbapal"); -static const u32 sOakSpeechGfx_GrassPlatform[] = INCBIN_U32("data/oak_speech/unk_8462A10.4bpp.lz"); -static const u32 sOakSpeechGfx_Pika1[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz"); -static const u32 sOakSpeechGfx_Pika2[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz"); -static const u32 sOakSpeechGfx_PikaEyes[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz"); +ALIGNED(4) static const u16 sHelpDocsPalette[] = INCBIN_U16("data/oak_speech/help_docs_palette.gbapal"); +static const u32 sOakSpeechGfx_GameStartHelpUI[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_game_start_help_u_i.4bpp.lz"); +static const u32 sNewGameAdventureIntroTilemap[] = INCBIN_U32("data/oak_speech/new_game_adventure_intro_tilemap.bin.lz"); +static const u32 sOakSpeechGfx_SolidColors[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_solid_colors.4bpp.lz"); +static const u32 sOakSpeech_BackgroundTilemap[] = INCBIN_U32("data/oak_speech/oak_speech_background_tilemap.bin.lz"); +static const u16 sHelpDocsPage2Tilemap[] = INCBIN_U16("data/oak_speech/help_docs_page2_tilemap.bin"); +static const u16 sHelpDocsPage3Tilemap[] = INCBIN_U16("data/oak_speech/help_docs_page3_tilemap.bin"); +static const u16 sOakSpeechGfx_LeafPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_leaf_pal.gbapal"); +static const u32 sOakSpeechGfx_LeafPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_leaf_pic.8bpp.lz"); +static const u16 sOakSpeechGfx_RedPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_red_pal.gbapal"); +static const u32 sOakSpeechGfx_RedPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_red_pic.8bpp.lz"); +static const u16 sOakSpeechGfx_OakPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_oak_pal.gbapal"); +static const u32 sOakSpeechGfx_OakPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_oak_pic.8bpp.lz"); +static const u16 sOakSpeechGfx_RivalPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_rival_pal.gbapal"); +static const u32 sOakSpeechGfx_RivalPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_rival_pic.8bpp.lz"); +static const u16 sOakSpeech_GrassPlatformPalette[] = INCBIN_U16("data/oak_speech/oak_speech_grass_platform_palette.gbapal"); +static const u16 sOakSpeech_PikaPalette[] = INCBIN_U16("data/oak_speech/oak_speech_pika_palette.gbapal"); +static const u32 sOakSpeechGfx_GrassPlatform[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_grass_platform.4bpp.lz"); +static const u32 sOakSpeechGfx_Pika1[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_pika1.4bpp.lz"); +static const u32 sOakSpeechGfx_Pika2[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_pika2.4bpp.lz"); +static const u32 sOakSpeechGfx_PikaEyes[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_pika_eyes.4bpp.lz"); static const struct BgTemplate sBgTemplates[3] = { { From 7f34be2b7783152785d8d536c09499348acba42e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Apr 2019 13:10:07 -0400 Subject: [PATCH 078/318] Correct region map section constants --- include/constants/region_map.h | 308 +++++++++++++++++++++------------ src/roamer.c | 54 +++--- 2 files changed, 226 insertions(+), 136 deletions(-) diff --git a/include/constants/region_map.h b/include/constants/region_map.h index 87203f538..527acf2c9 100644 --- a/include/constants/region_map.h +++ b/include/constants/region_map.h @@ -1,115 +1,203 @@ #ifndef GUARD_CONSTANTS_REGION_MAP_H #define GUARD_CONSTANTS_REGION_MAP_H -#define MAPSEC_PALLET_TOWN 0x0 -#define MAPSEC_VIRIDIAN_CITY 0x1 -#define MAPSEC_PEWTER_CITY 0x2 -#define MAPSEC_CERULEAN_CITY 0x3 -#define MAPSEC_LAVENDER_TOWN 0x4 -#define MAPSEC_VERMILION_CITY 0x5 -#define MAPSEC_CELADON_CITY 0x6 -#define MAPSEC_FUCHSIA_CITY 0x7 -#define MAPSEC_CINNABAR_ISLAND 0x8 -#define MAPSEC_INDIGO_PLATEAU 0x9 -#define MAPSEC_SAFFRON_CITY 0xA -#define MAPSEC_ROUTE_4 0xB -#define MAPSEC_ROUTE_10 0xC -#define MAPSEC_ROUTE_1 0xD -#define MAPSEC_ROUTE_2 0xE -#define MAPSEC_ROUTE_3 0xF -#define MAPSEC_ROUTE_4_2 0x10 -#define MAPSEC_ROUTE_5 0x11 -#define MAPSEC_ROUTE_6 0x12 -#define MAPSEC_ROUTE_7 0x13 -#define MAPSEC_ROUTE_8 0x14 -#define MAPSEC_ROUTE_9 0x15 -#define MAPSEC_ROUTE_10_2 0x16 -#define MAPSEC_ROUTE_11 0x17 -#define MAPSEC_ROUTE_12 0x18 -#define MAPSEC_ROUTE_13 0x19 -#define MAPSEC_ROUTE_14 0x1A -#define MAPSEC_ROUTE_15 0x1B -#define MAPSEC_ROUTE_16 0x1C -#define MAPSEC_ROUTE_17 0x1D -#define MAPSEC_ROUTE_18 0x1E -#define MAPSEC_ROUTE_19 0x1F -#define MAPSEC_ROUTE_20 0x20 -#define MAPSEC_ROUTE_21 0x21 -#define MAPSEC_ROUTE_22 0x22 -#define MAPSEC_ROUTE_23 0x23 -#define MAPSEC_ROUTE_24 0x24 -#define MAPSEC_ROUTE_25 0x25 -#define MAPSEC_VIRIDIAN_FOREST 0x26 -#define MAPSEC_MT_MOON 0x27 -#define MAPSEC_S_S_ANNE 0x28 -#define MAPSEC_UNDERGROUND_PATH 0x29 -#define MAPSEC_UNDERGROUND_PATH_2 0x2A -#define MAPSEC_DIGLETTS_CAVE 0x2B -#define MAPSEC_KANTO_VICTORY_ROAD 0x2C -#define MAPSEC_ROCKET_HIDEOUT 0x2D -#define MAPSEC_SILPH_CO 0x2E -#define MAPSEC_POKEMON_MANSION 0x2F -#define MAPSEC_KANTO_SAFARI_ZONE 0x30 -#define MAPSEC_POKEMON_LEAGUE 0x31 -#define MAPSEC_ROCK_TUNNEL 0x32 -#define MAPSEC_SEAFOAM_ISLANDS 0x33 -#define MAPSEC_POKEMON_TOWER 0x34 -#define MAPSEC_CERULEAN_CAVE 0x35 -#define MAPSEC_POWER_PLANT 0x36 -#define MAPSEC_ONE_ISLAND 0x37 -#define MAPSEC_TWO_ISLAND 0x38 -#define MAPSEC_THREE_ISLAND 0x39 -#define MAPSEC_FOUR_ISLAND 0x3A -#define MAPSEC_FIVE_ISLAND 0x3B -#define MAPSEC_SEVEN_ISLAND 0x3C -#define MAPSEC_SIX_ISLAND 0x3D -#define MAPSEC_KINDLE_ROAD 0x3E -#define MAPSEC_TREASURE_BEACH 0x3F -#define MAPSEC_CAPE_BRINK 0x40 -#define MAPSEC_BOND_BRIDGE 0x41 -#define MAPSEC_THREE_ISLE_PORT 0x42 -#define MAPSEC_SEVII_ISLE_6 0x43 -#define MAPSEC_SEVII_ISLE_7 0x44 -#define MAPSEC_SEVII_ISLE_8 0x45 -#define MAPSEC_SEVII_ISLE_9 0x46 -#define MAPSEC_RESORT_GORGEOUS 0x47 -#define MAPSEC_WATER_LABYRINTH 0x48 -#define MAPSEC_FIVE_ISLE_MEADOW 0x49 -#define MAPSEC_MEMORIAL_PILLAR 0x4A -#define MAPSEC_OUTCAST_ISLAND 0x4B -#define MAPSEC_GREEN_PATH 0x4C -#define MAPSEC_WATER_PATH 0x4D -#define MAPSEC_RUIN_VALLEY 0x4E -#define MAPSEC_TRAINER_TOWER 0x4F -#define MAPSEC_CANYON_ENTRANCE 0x50 -#define MAPSEC_SEVAULT_CANYON 0x51 -#define MAPSEC_TANOBY_RUINS 0x52 -#define MAPSEC_SEVII_ISLE_22 0x53 -#define MAPSEC_SEVII_ISLE_23 0x54 -#define MAPSEC_SEVII_ISLE_24 0x55 -#define MAPSEC_NAVEL_ROCK 0x56 -#define MAPSEC_MT_EMBER 0x57 -#define MAPSEC_BERRY_FOREST 0x58 -#define MAPSEC_ICEFALL_CAVE 0x59 -#define MAPSEC_ROCKET_WAREHOUSE 0x5A -#define MAPSEC_TRAINER_TOWER_2 0x5B -#define MAPSEC_DOTTED_HOLE 0x5C -#define MAPSEC_LOST_CAVE 0x5D -#define MAPSEC_PATTERN_BUSH 0x5E -#define MAPSEC_ALTERING_CAVE 0x5F -#define MAPSEC_TANOBY_CHAMBERS 0x60 -#define MAPSEC_THREE_ISLE_PATH 0x61 -#define MAPSEC_TANOBY_KEY 0x62 -#define MAPSEC_BIRTH_ISLAND 0x63 -#define MAPSEC_MONEAN_CHAMBER 0x64 -#define MAPSEC_LIPTOO_CHAMBER 0x65 -#define MAPSEC_WEEPTH_CHAMBER 0x66 -#define MAPSEC_DILFORD_CHAMBER 0x67 -#define MAPSEC_SCUFIB_CHAMBER 0x68 -#define MAPSEC_RIXY_CHAMBER 0x69 -#define MAPSEC_VIAPOIS_CHAMBER 0x6A -#define MAPSEC_EMBER_SPA 0x6B -#define MAPSEC_CELADON_DEPT 0x6C -#define MAPSEC_NONE 0x6D +#define MAPSEC_LITTLEROOT_TOWN 0x00 +#define MAPSEC_OLDALE_TOWN 0x01 +#define MAPSEC_DEWFORD_TOWN 0x02 +#define MAPSEC_LAVARIDGE_TOWN 0x03 +#define MAPSEC_FALLARBOR_TOWN 0x04 +#define MAPSEC_VERDANTURF_TOWN 0x05 +#define MAPSEC_PACIFIDLOG_TOWN 0x06 +#define MAPSEC_PETALBURG_CITY 0x07 +#define MAPSEC_SLATEPORT_CITY 0x08 +#define MAPSEC_MAUVILLE_CITY 0x09 +#define MAPSEC_RUSTBORO_CITY 0x0A +#define MAPSEC_FORTREE_CITY 0x0B +#define MAPSEC_LILYCOVE_CITY 0x0C +#define MAPSEC_MOSSDEEP_CITY 0x0D +#define MAPSEC_SOOTOPOLIS_CITY 0x0E +#define MAPSEC_EVER_GRANDE_CITY 0x0F +#define MAPSEC_ROUTE_101 0x10 +#define MAPSEC_ROUTE_102 0x11 +#define MAPSEC_ROUTE_103 0x12 +#define MAPSEC_ROUTE_104 0x13 +#define MAPSEC_ROUTE_105 0x14 +#define MAPSEC_ROUTE_106 0x15 +#define MAPSEC_ROUTE_107 0x16 +#define MAPSEC_ROUTE_108 0x17 +#define MAPSEC_ROUTE_109 0x18 +#define MAPSEC_ROUTE_110 0x19 +#define MAPSEC_ROUTE_111 0x1A +#define MAPSEC_ROUTE_112 0x1B +#define MAPSEC_ROUTE_113 0x1C +#define MAPSEC_ROUTE_114 0x1D +#define MAPSEC_ROUTE_115 0x1E +#define MAPSEC_ROUTE_116 0x1F +#define MAPSEC_ROUTE_117 0x20 +#define MAPSEC_ROUTE_118 0x21 +#define MAPSEC_ROUTE_119 0x22 +#define MAPSEC_ROUTE_120 0x23 +#define MAPSEC_ROUTE_121 0x24 +#define MAPSEC_ROUTE_122 0x25 +#define MAPSEC_ROUTE_123 0x26 +#define MAPSEC_ROUTE_124 0x27 +#define MAPSEC_ROUTE_125 0x28 +#define MAPSEC_ROUTE_126 0x29 +#define MAPSEC_ROUTE_127 0x2A +#define MAPSEC_ROUTE_128 0x2B +#define MAPSEC_ROUTE_129 0x2C +#define MAPSEC_ROUTE_130 0x2D +#define MAPSEC_ROUTE_131 0x2E +#define MAPSEC_ROUTE_132 0x2F +#define MAPSEC_ROUTE_133 0x30 +#define MAPSEC_ROUTE_134 0x31 +#define MAPSEC_UNDERWATER_124 0x32 +#define MAPSEC_UNDERWATER_125 0x33 +#define MAPSEC_UNDERWATER_126 0x34 +#define MAPSEC_UNDERWATER_127 0x35 +#define MAPSEC_UNDERWATER_SOOTOPOLIS 0x36 +#define MAPSEC_GRANITE_CAVE 0x37 +#define MAPSEC_MT_CHIMNEY 0x38 +#define MAPSEC_SAFARI_ZONE 0x39 +#define MAPSEC_BATTLE_FRONTIER 0x3A +#define MAPSEC_PETALBURG_WOODS 0x3B +#define MAPSEC_RUSTURF_TUNNEL 0x3C +#define MAPSEC_ABANDONED_SHIP 0x3D +#define MAPSEC_NEW_MAUVILLE 0x3E +#define MAPSEC_METEOR_FALLS 0x3F +#define MAPSEC_METEOR_FALLS2 0x40 +#define MAPSEC_MT_PYRE 0x41 +#define MAPSEC_AQUA_HIDEOUT_OLD 0x42 +#define MAPSEC_SHOAL_CAVE 0x43 +#define MAPSEC_SEAFLOOR_CAVERN 0x44 +#define MAPSEC_UNDERWATER_128 0x45 +#define MAPSEC_VICTORY_ROAD 0x46 +#define MAPSEC_MIRAGE_ISLAND 0x47 +#define MAPSEC_CAVE_OF_ORIGIN 0x48 +#define MAPSEC_SOUTHERN_ISLAND 0x49 +#define MAPSEC_FIERY_PATH 0x4A +#define MAPSEC_FIERY_PATH2 0x4B +#define MAPSEC_JAGGED_PASS 0x4C +#define MAPSEC_JAGGED_PASS2 0x4D +#define MAPSEC_SEALED_CHAMBER 0x4E +#define MAPSEC_UNDERWATER_SEALED_CHAMBER 0x4F +#define MAPSEC_SCORCHED_SLAB 0x50 +#define MAPSEC_ISLAND_CAVE 0x51 +#define MAPSEC_DESERT_RUINS 0x52 +#define MAPSEC_ANCIENT_TOMB 0x53 +#define MAPSEC_INSIDE_OF_TRUCK 0x54 +#define MAPSEC_SKY_PILLAR 0x55 +#define MAPSEC_SECRET_BASE 0x56 +#define MAPSEC_DYNAMIC 0x57 +#define MAPSEC_PALLET_TOWN 0x58 +#define MAPSEC_VIRIDIAN_CITY 0x59 +#define MAPSEC_PEWTER_CITY 0x5A +#define MAPSEC_CERULEAN_CITY 0x5B +#define MAPSEC_LAVENDER_TOWN 0x5C +#define MAPSEC_VERMILION_CITY 0x5D +#define MAPSEC_CELADON_CITY 0x5E +#define MAPSEC_FUCHSIA_CITY 0x5F +#define MAPSEC_CINNABAR_ISLAND 0x60 +#define MAPSEC_INDIGO_PLATEAU 0x61 +#define MAPSEC_SAFFRON_CITY 0x62 +#define MAPSEC_ROUTE_4_FLYDUP 0x63 +#define MAPSEC_ROUTE_10_FLYDUP 0x64 +#define MAPSEC_ROUTE_1 0x65 +#define MAPSEC_ROUTE_2 0x66 +#define MAPSEC_ROUTE_3 0x67 +#define MAPSEC_ROUTE_4 0x68 +#define MAPSEC_ROUTE_5 0x69 +#define MAPSEC_ROUTE_6 0x6A +#define MAPSEC_ROUTE_7 0x6B +#define MAPSEC_ROUTE_8 0x6C +#define MAPSEC_ROUTE_9 0x6D +#define MAPSEC_ROUTE_10 0x6E +#define MAPSEC_ROUTE_11 0x6F +#define MAPSEC_ROUTE_12 0x70 +#define MAPSEC_ROUTE_13 0x71 +#define MAPSEC_ROUTE_14 0x72 +#define MAPSEC_ROUTE_15 0x73 +#define MAPSEC_ROUTE_16 0x74 +#define MAPSEC_ROUTE_17 0x75 +#define MAPSEC_ROUTE_18 0x76 +#define MAPSEC_ROUTE_19 0x77 +#define MAPSEC_ROUTE_20 0x78 +#define MAPSEC_ROUTE_21 0x79 +#define MAPSEC_ROUTE_22 0x7A +#define MAPSEC_ROUTE_23 0x7B +#define MAPSEC_ROUTE_24 0x7C +#define MAPSEC_ROUTE_25 0x7D +#define MAPSEC_VIRIDIAN_FOREST 0x7E +#define MAPSEC_MT_MOON 0x7F +#define MAPSEC_S_S_ANNE 0x80 +#define MAPSEC_UNDERGROUND_PATH 0x81 +#define MAPSEC_UNDERGROUND_PATH_2 0x82 +#define MAPSEC_DIGLETTS_CAVE 0x83 +#define MAPSEC_KANTO_VICTORY_ROAD 0x84 +#define MAPSEC_ROCKET_HIDEOUT 0x85 +#define MAPSEC_SILPH_CO 0x86 +#define MAPSEC_POKEMON_MANSION 0x87 +#define MAPSEC_KANTO_SAFARI_ZONE 0x88 +#define MAPSEC_POKEMON_LEAGUE 0x89 +#define MAPSEC_ROCK_TUNNEL 0x8A +#define MAPSEC_SEAFOAM_ISLANDS 0x8B +#define MAPSEC_POKEMON_TOWER 0x8C +#define MAPSEC_CERULEAN_CAVE 0x8D +#define MAPSEC_POWER_PLANT 0x8E +#define MAPSEC_ONE_ISLAND 0x8F +#define MAPSEC_TWO_ISLAND 0x90 +#define MAPSEC_THREE_ISLAND 0x91 +#define MAPSEC_FOUR_ISLAND 0x92 +#define MAPSEC_FIVE_ISLAND 0x93 +#define MAPSEC_SEVEN_ISLAND 0x94 +#define MAPSEC_SIX_ISLAND 0x95 +#define MAPSEC_KINDLE_ROAD 0x96 +#define MAPSEC_TREASURE_BEACH 0x97 +#define MAPSEC_CAPE_BRINK 0x98 +#define MAPSEC_BOND_BRIDGE 0x99 +#define MAPSEC_THREE_ISLE_PORT 0x9A +#define MAPSEC_SEVII_ISLE_6 0x9B +#define MAPSEC_SEVII_ISLE_7 0x9C +#define MAPSEC_SEVII_ISLE_8 0x9D +#define MAPSEC_SEVII_ISLE_9 0x9E +#define MAPSEC_RESORT_GORGEOUS 0x9F +#define MAPSEC_WATER_LABYRINTH 0xA0 +#define MAPSEC_FIVE_ISLE_MEADOW 0xA1 +#define MAPSEC_MEMORIAL_PILLAR 0xA2 +#define MAPSEC_OUTCAST_ISLAND 0xA3 +#define MAPSEC_GREEN_PATH 0xA4 +#define MAPSEC_WATER_PATH 0xA5 +#define MAPSEC_RUIN_VALLEY 0xA6 +#define MAPSEC_TRAINER_TOWER 0xA7 +#define MAPSEC_CANYON_ENTRANCE 0xA8 +#define MAPSEC_SEVAULT_CANYON 0xA9 +#define MAPSEC_TANOBY_RUINS 0xAA +#define MAPSEC_SEVII_ISLE_22 0xAB +#define MAPSEC_SEVII_ISLE_23 0xAC +#define MAPSEC_SEVII_ISLE_24 0xAD +#define MAPSEC_NAVEL_ROCK 0xAE +#define MAPSEC_MT_EMBER 0xAF +#define MAPSEC_BERRY_FOREST 0xB0 +#define MAPSEC_ICEFALL_CAVE 0xB1 +#define MAPSEC_ROCKET_WAREHOUSE 0xB2 +#define MAPSEC_TRAINER_TOWER_2 0xB3 +#define MAPSEC_DOTTED_HOLE 0xB4 +#define MAPSEC_LOST_CAVE 0xB5 +#define MAPSEC_PATTERN_BUSH 0xB6 +#define MAPSEC_ALTERING_CAVE 0xB7 +#define MAPSEC_TANOBY_CHAMBERS 0xB8 +#define MAPSEC_THREE_ISLE_PATH 0xB9 +#define MAPSEC_TANOBY_KEY 0xBA +#define MAPSEC_BIRTH_ISLAND 0xBB +#define MAPSEC_MONEAN_CHAMBER 0xBC +#define MAPSEC_LIPTOO_CHAMBER 0xBD +#define MAPSEC_WEEPTH_CHAMBER 0xBE +#define MAPSEC_DILFORD_CHAMBER 0xBF +#define MAPSEC_SCUFIB_CHAMBER 0xC0 +#define MAPSEC_RIXY_CHAMBER 0xC1 +#define MAPSEC_VIAPOIS_CHAMBER 0xC2 +#define MAPSEC_EMBER_SPA 0xC3 +#define MAPSEC_SPECIAL_AREA 0xC4 +#define MAPSEC_NONE 0xC5 #endif //GUARD_CONSTANTS_REGION_MAP_H diff --git a/src/roamer.c b/src/roamer.c index 6ad009e8b..b42855644 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -4,6 +4,8 @@ #include "overworld.h" #include "field_specials.h" #include "constants/species.h" +#include "constants/maps.h" +#include "constants/region_map.h" EWRAM_DATA u8 sLocationHistory[3][2] = {}; EWRAM_DATA u8 sRoamerLocation[2] = {}; @@ -17,31 +19,31 @@ enum }; const u8 sRoamerLocations[][7] = { - {0x13, 0x14, 0x27, 0x29, 0xff, 0xff, 0xff}, - {0x14, 0x13, 0x15, 0x29, 0xff, 0xff, 0xff}, - {0x15, 0x14, 0x16, 0xff, 0xff, 0xff, 0xff}, - {0x16, 0x15, 0x17, 0x1b, 0x2b, 0xff, 0xff}, - {0x17, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x2b}, - {0x18, 0x17, 0x19, 0x1a, 0x1d, 0xff, 0xff}, - {0x19, 0x17, 0x18, 0x1a, 0x22, 0xff, 0xff}, - {0x1a, 0x17, 0x18, 0x19, 0x1c, 0x1e, 0xff}, - {0x1b, 0x16, 0x17, 0x1c, 0x2b, 0xff, 0xff}, - {0x1c, 0x1a, 0x1b, 0x1e, 0xff, 0xff, 0xff}, - {0x1d, 0x18, 0x1e, 0xff, 0xff, 0xff, 0xff}, - {0x1e, 0x1c, 0x1d, 0x1f, 0xff, 0xff, 0xff}, - {0x1f, 0x1e, 0x20, 0xff, 0xff, 0xff, 0xff}, - {0x20, 0x1f, 0x21, 0xff, 0xff, 0xff, 0xff}, - {0x21, 0x20, 0x24, 0x25, 0xff, 0xff, 0xff}, - {0x22, 0x19, 0x23, 0xff, 0xff, 0xff, 0xff}, - {0x23, 0x22, 0x24, 0xff, 0xff, 0xff, 0xff}, - {0x24, 0x21, 0x23, 0x25, 0xff, 0xff, 0xff}, - {0x25, 0x21, 0x24, 0x26, 0xff, 0xff, 0xff}, - {0x26, 0x25, 0x27, 0xff, 0xff, 0xff, 0xff}, - {0x27, 0x13, 0x26, 0xff, 0xff, 0xff, 0xff}, - {0x29, 0x13, 0x14, 0x2a, 0xff, 0xff, 0xff}, - {0x2a, 0x29, 0x14, 0xff, 0xff, 0xff, 0xff}, - {0x2b, 0x16, 0x17, 0x1b, 0xff, 0xff, 0xff}, - {0x2c, 0x2b, 0x1b, 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE2), MAP_NUM(ROUTE1), MAP_NUM(ROUTE3), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE3), MAP_NUM(ROUTE2), MAP_NUM(ROUTE4), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE4), MAP_NUM(ROUTE3), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24), 0xff, 0xff}, + {MAP_NUM(ROUTE5), MAP_NUM(ROUTE4), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24)}, + {MAP_NUM(ROUTE6), MAP_NUM(ROUTE5), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE11), 0xff, 0xff}, + {MAP_NUM(ROUTE7), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE8), MAP_NUM(ROUTE16), 0xff, 0xff}, + {MAP_NUM(ROUTE8), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE10), MAP_NUM(ROUTE12), 0xff}, + {MAP_NUM(ROUTE9), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE10), MAP_NUM(ROUTE24), 0xff, 0xff}, + {MAP_NUM(ROUTE10), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE11), MAP_NUM(ROUTE6), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE12), MAP_NUM(ROUTE10), MAP_NUM(ROUTE11), MAP_NUM(ROUTE13), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE13), MAP_NUM(ROUTE12), MAP_NUM(ROUTE14), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE14), MAP_NUM(ROUTE13), MAP_NUM(ROUTE15), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE15), MAP_NUM(ROUTE14), MAP_NUM(ROUTE18), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE16), MAP_NUM(ROUTE7), MAP_NUM(ROUTE17), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE17), MAP_NUM(ROUTE16), MAP_NUM(ROUTE18), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE18), MAP_NUM(ROUTE15), MAP_NUM(ROUTE17), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE19), MAP_NUM(ROUTE15), MAP_NUM(ROUTE18), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE20), MAP_NUM(ROUTE19), MAP_NUM(ROUTE21_NORTH), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE1), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE22), MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE23), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE23), MAP_NUM(ROUTE22), MAP_NUM(ROUTE2), 0xff, 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE24), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff}, + {MAP_NUM(ROUTE25), MAP_NUM(ROUTE24), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} }; @@ -233,6 +235,6 @@ u16 GetRoamerLocationMapSectionId(void) { struct Roamer *roamer = &saveRoamer; if (!saveRoamer.active) - return 0xC5; + return MAPSEC_NONE; return get_mapheader_by_bank_and_number(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId; } From 9e1028f6f1883e0fb14736b2e6b99f2dfa78e51e Mon Sep 17 00:00:00 2001 From: SatoMew Date: Sat, 13 Apr 2019 18:13:39 +0100 Subject: [PATCH 079/318] Create roulette_util.h --- include/roulette_util.h | 84 +++++++++++++++++++++++++++++++++++++++++ include/util.h | 1 + src/roulette_util.c | 65 +------------------------------ 3 files changed, 86 insertions(+), 64 deletions(-) create mode 100644 include/roulette_util.h diff --git a/include/roulette_util.h b/include/roulette_util.h new file mode 100644 index 000000000..764a3df10 --- /dev/null +++ b/include/roulette_util.h @@ -0,0 +1,84 @@ +#ifndef GUARD_ROULETTE_H +#define GUARD_ROULETTE_H + +struct UnkStruct1 +{ + u16 var00; + u16 var02; + u8 var04; + u8 var05; + u8 var06; + s8 var07_0:5; + s8 var07_5:2; + s8 var07_7:1; +}; + +struct UnkStruct3 +{ + u8 var00_0:7; + u8 var00_7:1; + u8 var01; + s8 var02; + s8 var03; + struct UnkStruct1 var04; +}; + +struct UnkStruct0 +{ + u8 var00; + u8 var01; + u16 var02; //flag for each UnkStruct3 + struct UnkStruct3 var04[0x10]; +}; + +struct PulseBlendSettings +{ + u16 blendColor; + u16 paletteOffset; + u8 numColors; + u8 delay; + u8 numFadeCycles; + s8 maxBlendCoeff:4; + s8 fadeType:2; + s8 restorePaletteOnUnload:1; + s8 unk7_7:1; +}; + +struct PulseBlendPalette +{ + u8 paletteSelector; + u8 blendCoeff:4; + u8 fadeDirection:1; + s8 unk1_5:1; + s8 available:1; + u32 inUse:1; + u8 delayCounter; + u8 fadeCycleCounter; + struct PulseBlendSettings pulseBlendSettings; +}; + +struct PulseBlend +{ + u16 usedPulseBlendPalettes; + struct PulseBlendPalette pulseBlendPalettes[16]; +}; + +void sub_80D8BE4(struct UnkStruct0 *); +u8 sub_80D8BF8(struct UnkStruct0 *, u8, const struct UnkStruct1 *); +u8 sub_80D8C7C(struct UnkStruct0 *, u8); +u8 sub_80D8CB0(struct UnkStruct3 *); +u8 sub_80D8EB8(struct UnkStruct3 *); +void task_tutorial_controls_fadein(struct UnkStruct0 *); +void sub_80D8FB4(struct UnkStruct0 *, u16); +void sub_80D9008(struct UnkStruct0 *, u16); +void InitPulseBlend(struct PulseBlend *); +int InitPulseBlendPaletteSettings(struct PulseBlend *, const struct PulseBlendSettings *); +static void ClearPulseBlendPalettesSettings(struct PulseBlendPalette *); +void UnloadUsedPulseBlendPalettes(struct PulseBlend *, u16, u8); +void MarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8); +void UnmarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8); +void UpdatePulseBlend(struct PulseBlend *); +void sub_80D9574(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height); +void sub_80D95C4(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height); + +#endif // GUARD_ROULETTE_H diff --git a/include/util.h b/include/util.h index e0034d816..884bd8f33 100644 --- a/include/util.h +++ b/include/util.h @@ -15,5 +15,6 @@ int CountTrailingZeroBits(u32 value); u16 CalcCRC16(const u8 *data, s32 length); u16 CalcCRC16WithTable(const u8 *data, u32 length); u32 CalcByteArraySum(const u8* data, u32 length); +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); #endif // GUARD_UTIL_H diff --git a/src/roulette_util.c b/src/roulette_util.c index 906dd33a5..3c5a3c825 100644 --- a/src/roulette_util.c +++ b/src/roulette_util.c @@ -1,71 +1,8 @@ #include "global.h" #include "palette.h" +#include "roulette_util.h" #include "util.h" -struct UnkStruct1 -{ - u16 var00; - u16 var02; - u8 var04; - u8 var05; - u8 var06; - s8 var07_0:5; - s8 var07_5:2; - s8 var07_7:1; -}; - -struct UnkStruct3 -{ - u8 var00_0:7; - u8 var00_7:1; - u8 var01; - s8 var02; - s8 var03; - struct UnkStruct1 var04; -}; - -struct UnkStruct0 -{ - u8 var00; - u8 var01; - u16 var02; //flag for each UnkStruct3 - struct UnkStruct3 var04[0x10]; -}; - -struct PulseBlendSettings -{ - u16 blendColor; - u16 paletteOffset; - u8 numColors; - u8 delay; - u8 numFadeCycles; - s8 maxBlendCoeff:4; - s8 fadeType:2; - s8 restorePaletteOnUnload:1; - s8 unk7_7:1; -}; - -struct PulseBlendPalette -{ - u8 paletteSelector; - u8 blendCoeff:4; - u8 fadeDirection:1; - s8 unk1_5:1; - s8 available:1; - u32 inUse:1; - u8 delayCounter; - u8 fadeCycleCounter; - struct PulseBlendSettings pulseBlendSettings; -}; - -struct PulseBlend -{ - u16 usedPulseBlendPalettes; - struct PulseBlendPalette pulseBlendPalettes[16]; -}; - -void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); - void sub_80D8BE4(struct UnkStruct0 *r0) { r0->var00 = 0; From 8ec229b5570acf7b1efd6192bc27968eafdc0474 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Apr 2019 14:12:36 -0400 Subject: [PATCH 080/318] Initial map header dump --- data/battle_anim.s | 1279 +++++++++++++- data/connections.s | 125 +- data/data.s | 1048 +++++++++++- data/event_scripts.s | 1278 +++++++++++++- data/maps/groups.inc | 3400 ++++++++++++++++++++++++++++++++----- include/constants/songs.h | 1 + 6 files changed, 6636 insertions(+), 495 deletions(-) diff --git a/data/battle_anim.s b/data/battle_anim.s index 21f3e5158..7a21ae16f 100644 --- a/data/battle_anim.s +++ b/data/battle_anim.s @@ -258,8 +258,1283 @@ gUnknown_83AE050:: @ 83AE050 gUnknown_83AE054:: @ 83AE054 .incbin "baserom.gba", 0x3AE054, 0x30 -gUnknown_83AE084:: @ 83AE084 - .incbin "baserom.gba", 0x3AE084, 0x114D0 +gUnknown_83AE084:: @ 0x83AE084 + .incbin "baserom.gba", 0x3AE084, 0x58 + +gMapEvents_UnknownMap_00_00:: @ 0x83AE0DC + .incbin "baserom.gba", 0x3AE0DC, 0x5C + +gMapEvents_UnknownMap_00_01:: @ 0x83AE138 + .incbin "baserom.gba", 0x3AE138, 0x8C + +gMapEvents_UnknownMap_00_02:: @ 0x83AE1C4 + .incbin "baserom.gba", 0x3AE1C4, 0x74 + +gMapEvents_UnknownMap_00_03:: @ 0x83AE238 + .incbin "baserom.gba", 0x3AE238, 0xF4 + +gMapEvents_UnknownMap_00_04:: @ 0x83AE32C + .incbin "baserom.gba", 0x3AE32C, 0x1AC + +gMapEvents_ViridianForest:: @ 0x83AE4D8 + .incbin "baserom.gba", 0x3AE4D8, 0x190 + +gMapEvents_MtMoon_1F:: @ 0x83AE668 + .incbin "baserom.gba", 0x3AE668, 0x9C + +gMapEvents_MtMoon_B1F:: @ 0x83AE704 + .incbin "baserom.gba", 0x3AE704, 0x164 + +gMapEvents_MtMoon_B2F:: @ 0x83AE868 + .incbin "baserom.gba", 0x3AE868, 0x60 + +gMapEvents_SSAnne_Exterior:: @ 0x83AE8C8 + .incbin "baserom.gba", 0x3AE8C8, 0xAC + +gMapEvents_SSAnne_1F_Corridor:: @ 0x83AE974 + .incbin "baserom.gba", 0x3AE974, 0xBC + +gMapEvents_SSAnne_2F_Corridor:: @ 0x83AEA30 + .incbin "baserom.gba", 0x3AEA30, 0x44 + +gMapEvents_SSAnne_3F_Corridor:: @ 0x83AEA74 + .incbin "baserom.gba", 0x3AEA74, 0x50 + +gMapEvents_SSAnne_B1F_Corridor:: @ 0x83AEAC4 + .incbin "baserom.gba", 0x3AEAC4, 0x9C + +gMapEvents_SSAnne_Deck:: @ 0x83AEB60 + .incbin "baserom.gba", 0x3AEB60, 0x100 + +gMapEvents_SSAnne_Kitchen:: @ 0x83AEC60 + .incbin "baserom.gba", 0x3AEC60, 0x58 + +gMapEvents_SSAnne_CaptainsOffice:: @ 0x83AECB8 + .incbin "baserom.gba", 0x3AECB8, 0x34 + +gMapEvents_SSAnne_1F_Room1:: @ 0x83AECEC + .incbin "baserom.gba", 0x3AECEC, 0x7C + +gMapEvents_SSAnne_1F_Room2:: @ 0x83AED68 + .incbin "baserom.gba", 0x3AED68, 0x64 + +gMapEvents_SSAnne_1F_Room3:: @ 0x83AEDCC + .incbin "baserom.gba", 0x3AEDCC, 0x34 + +gMapEvents_SSAnne_1F_Room4:: @ 0x83AEE00 + .incbin "baserom.gba", 0x3AEE00, 0x34 + +gMapEvents_SSAnne_1F_Room5:: @ 0x83AEE34 + .incbin "baserom.gba", 0x3AEE34, 0x34 + +gMapEvents_SSAnne_1F_Room7:: @ 0x83AEE68 + .incbin "baserom.gba", 0x3AEE68, 0x34 + +gMapEvents_SSAnne_2F_Room1:: @ 0x83AEE9C + .incbin "baserom.gba", 0x3AEE9C, 0x64 + +gMapEvents_SSAnne_2F_Room2:: @ 0x83AEF00 + .incbin "baserom.gba", 0x3AEF00, 0x4C + +gMapEvents_SSAnne_2F_Room3:: @ 0x83AEF4C + .incbin "baserom.gba", 0x3AEF4C, 0x64 + +gMapEvents_SSAnne_2F_Room4:: @ 0x83AEFB0 + .incbin "baserom.gba", 0x3AEFB0, 0x4C + +gMapEvents_SSAnne_2F_Room5:: @ 0x83AEFFC + .incbin "baserom.gba", 0x3AEFFC, 0x4C + +gMapEvents_SSAnne_2F_Room6:: @ 0x83AF048 + .incbin "baserom.gba", 0x3AF048, 0x4C + +gMapEvents_SSAnne_B1F_Room1:: @ 0x83AF094 + .incbin "baserom.gba", 0x3AF094, 0x4C + +gMapEvents_SSAnne_B1F_Room2:: @ 0x83AF0E0 + .incbin "baserom.gba", 0x3AF0E0, 0x4C + +gMapEvents_SSAnne_B1F_Room3:: @ 0x83AF12C + .incbin "baserom.gba", 0x3AF12C, 0x4C + +gMapEvents_SSAnne_B1F_Room4:: @ 0x83AF178 + .incbin "baserom.gba", 0x3AF178, 0x64 + +gMapEvents_SSAnne_B1F_Room5:: @ 0x83AF1DC + .incbin "baserom.gba", 0x3AF1DC, 0x34 + +gMapEvents_SSAnne_1F_Room6:: @ 0x83AF210 + .incbin "baserom.gba", 0x3AF210, 0x4C + +gMapEvents_UndergroundPath_NorthEntrance:: @ 0x83AF25C + .incbin "baserom.gba", 0x3AF25C, 0x78 + +gMapEvents_UndergroundPath_NorthSouthTunnel:: @ 0x83AF2D4 + .incbin "baserom.gba", 0x3AF2D4, 0x4C + +gMapEvents_UndergroundPath_SouthEntrance:: @ 0x83AF320 + .incbin "baserom.gba", 0x3AF320, 0x4C + +gMapEvents_UndergroundPath_WestEntrance:: @ 0x83AF36C + .incbin "baserom.gba", 0x3AF36C, 0x78 + +gMapEvents_UndergroundPath_EastWestTunnel:: @ 0x83AF3E4 + .incbin "baserom.gba", 0x3AF3E4, 0x4C + +gMapEvents_UndergroundPath_EastEntrance:: @ 0x83AF430 + .incbin "baserom.gba", 0x3AF430, 0x3C + +gMapEvents_DiglettsCave_NorthEntrance:: @ 0x83AF46C + .incbin "baserom.gba", 0x3AF46C, 0x24 + +gMapEvents_DiglettsCave_B1F:: @ 0x83AF490 + .incbin "baserom.gba", 0x3AF490, 0x3C + +gMapEvents_DiglettsCave_SouthEntrance:: @ 0x83AF4CC + .incbin "baserom.gba", 0x3AF4CC, 0xF4 + +gMapEvents_VictoryRoad_1F:: @ 0x83AF5C0 + .incbin "baserom.gba", 0x3AF5C0, 0x1B4 + +gMapEvents_VictoryRoad_2F:: @ 0x83AF774 + .incbin "baserom.gba", 0x3AF774, 0x16C + +gMapEvents_VictoryRoad_3F:: @ 0x83AF8E0 + .incbin "baserom.gba", 0x3AF8E0, 0xF8 + +gMapEvents_RocketHideout_B1F:: @ 0x83AF9D8 + .incbin "baserom.gba", 0x3AF9D8, 0xB4 + +gMapEvents_RocketHideout_B2F:: @ 0x83AFA8C + .incbin "baserom.gba", 0x3AFA8C, 0xA8 + +gMapEvents_RocketHideout_B3F:: @ 0x83AFB34 + .incbin "baserom.gba", 0x3AFB34, 0x11C + +gMapEvents_RocketHideout_B4F:: @ 0x83AFC50 + .incbin "baserom.gba", 0x3AFC50, 0x30 + +gMapEvents_RocketHideout_Elevator:: @ 0x83AFC80 + .incbin "baserom.gba", 0x3AFC80, 0x60 + +gMapEvents_SilphCo_1F:: @ 0x83AFCE0 + .incbin "baserom.gba", 0x3AFCE0, 0x13C + +gMapEvents_SilphCo_2F:: @ 0x83AFE1C + .incbin "baserom.gba", 0x3AFE1C, 0x13C + +gMapEvents_SilphCo_3F:: @ 0x83AFF58 + .incbin "baserom.gba", 0x3AFF58, 0x184 + +gMapEvents_SilphCo_4F:: @ 0x83B00DC + .incbin "baserom.gba", 0x3B00DC, 0x1FC + +gMapEvents_SilphCo_5F:: @ 0x83B02D8 + .incbin "baserom.gba", 0x3B02D8, 0x174 + +gMapEvents_SilphCo_6F:: @ 0x83B044C + .incbin "baserom.gba", 0x3B044C, 0x214 + +gMapEvents_SilphCo_7F:: @ 0x83B0660 + .incbin "baserom.gba", 0x3B0660, 0x124 + +gMapEvents_SilphCo_8F:: @ 0x83B0784 + .incbin "baserom.gba", 0x3B0784, 0x180 + +gMapEvents_SilphCo_9F:: @ 0x83B0904 + .incbin "baserom.gba", 0x3B0904, 0x11C + +gMapEvents_SilphCo_10F:: @ 0x83B0A20 + .incbin "baserom.gba", 0x3B0A20, 0x124 + +gMapEvents_SilphCo_11F:: @ 0x83B0B44 + .incbin "baserom.gba", 0x3B0B44, 0x28 + +gMapEvents_SilphCo_Elevator:: @ 0x83B0B6C + .incbin "baserom.gba", 0x3B0B6C, 0xF4 + +gMapEvents_PokemonMansion_1F:: @ 0x83B0C60 + .incbin "baserom.gba", 0x3B0C60, 0xC0 + +gMapEvents_PokemonMansion_2F:: @ 0x83B0D20 + .incbin "baserom.gba", 0x3B0D20, 0xD8 + +gMapEvents_PokemonMansion_3F:: @ 0x83B0DF8 + .incbin "baserom.gba", 0x3B0DF8, 0xDC + +gMapEvents_PokemonMansion_B1F:: @ 0x83B0ED4 + .incbin "baserom.gba", 0x3B0ED4, 0xC4 + +gMapEvents_SafariZone_Center:: @ 0x83B0F98 + .incbin "baserom.gba", 0x3B0F98, 0xD0 + +gMapEvents_SafariZone_East:: @ 0x83B1068 + .incbin "baserom.gba", 0x3B1068, 0x100 + +gMapEvents_SafariZone_North:: @ 0x83B1168 + .incbin "baserom.gba", 0x3B1168, 0x108 + +gMapEvents_SafariZone_West:: @ 0x83B1270 + .incbin "baserom.gba", 0x3B1270, 0x5C + +gMapEvents_SafariZone_Building1:: @ 0x83B12CC + .incbin "baserom.gba", 0x3B12CC, 0x74 + +gMapEvents_SafariZone_Building2:: @ 0x83B1340 + .incbin "baserom.gba", 0x3B1340, 0x8C + +gMapEvents_SafariZone_Building3:: @ 0x83B13CC + .incbin "baserom.gba", 0x3B13CC, 0x74 + +gMapEvents_SafariZone_Building4:: @ 0x83B1440 + .incbin "baserom.gba", 0x3B1440, 0x44 + +gMapEvents_SafariZone_SecretHouse:: @ 0x83B1484 + .incbin "baserom.gba", 0x3B1484, 0x138 + +gMapEvents_CeruleanCave_1F:: @ 0x83B15BC + .incbin "baserom.gba", 0x3B15BC, 0x17C + +gMapEvents_CeruleanCave_2F:: @ 0x83B1738 + .incbin "baserom.gba", 0x3B1738, 0x13C + +gMapEvents_CeruleanCave_B1F:: @ 0x83B1874 + .incbin "baserom.gba", 0x3B1874, 0x3C + +gMapEvents_PokemonLeague_LoreleisRoom:: @ 0x83B18B0 + .incbin "baserom.gba", 0x3B18B0, 0x3C + +gMapEvents_PokemonLeague_BrunosRoom:: @ 0x83B18EC + .incbin "baserom.gba", 0x3B18EC, 0x3C + +gMapEvents_PokemonLeague_AgathasRoom:: @ 0x83B1928 + .incbin "baserom.gba", 0x3B1928, 0x3C + +gMapEvents_PokemonLeague_LancesRoom:: @ 0x83B1964 + .incbin "baserom.gba", 0x3B1964, 0x54 + +gMapEvents_PokemonLeague_ChampionsRoom:: @ 0x83B19B8 + .incbin "baserom.gba", 0x3B19B8, 0x34 + +gMapEvents_PokemonLeague_HallOfFame:: @ 0x83B19EC + .incbin "baserom.gba", 0x3B19EC, 0x140 + +gMapEvents_RockTunnel_1F:: @ 0x83B1B2C + .incbin "baserom.gba", 0x3B1B2C, 0x2A4 + +gMapEvents_RockTunnel_B1F:: @ 0x83B1DD0 + .incbin "baserom.gba", 0x3B1DD0, 0x94 + +gMapEvents_SeafoamIslands_1F:: @ 0x83B1E64 + .incbin "baserom.gba", 0x3B1E64, 0xCC + +gMapEvents_SeafoamIslands_B1F:: @ 0x83B1F30 + .incbin "baserom.gba", 0x3B1F30, 0xB4 + +gMapEvents_SeafoamIslands_B2F:: @ 0x83B1FE4 + .incbin "baserom.gba", 0x3B1FE4, 0xF8 + +gMapEvents_SeafoamIslands_B3F:: @ 0x83B20DC + .incbin "baserom.gba", 0x3B20DC, 0xE8 + +gMapEvents_SeafoamIslands_B4F:: @ 0x83B21C4 + .incbin "baserom.gba", 0x3B21C4, 0xAC + +gMapEvents_PokemonTower_1F:: @ 0x83B2270 + .incbin "baserom.gba", 0x3B2270, 0x74 + +gMapEvents_PokemonTower_2F:: @ 0x83B22E4 + .incbin "baserom.gba", 0x3B22E4, 0x84 + +gMapEvents_PokemonTower_3F:: @ 0x83B2368 + .incbin "baserom.gba", 0x3B2368, 0xB4 + +gMapEvents_PokemonTower_4F:: @ 0x83B241C + .incbin "baserom.gba", 0x3B241C, 0x1E8 + +gMapEvents_PokemonTower_5F:: @ 0x83B2604 + .incbin "baserom.gba", 0x3B2604, 0xBC + +gMapEvents_PokemonTower_6F:: @ 0x83B26C0 + .incbin "baserom.gba", 0x3B26C0, 0x88 + +gMapEvents_PokemonTower_7F:: @ 0x83B2748 + .incbin "baserom.gba", 0x3B2748, 0x114 + +gMapEvents_PowerPlant:: @ 0x83B285C + .incbin "baserom.gba", 0x3B285C, 0x15C + +gMapEvents_MtEmber_RubyPath_B4F:: @ 0x83B29B8 + .incbin "baserom.gba", 0x3B29B8, 0x26C + +gMapEvents_MtEmber_Exterior:: @ 0x83B2C24 + .incbin "baserom.gba", 0x3B2C24, 0x24 + +gMapEvents_MtEmber_SummitPath_1F:: @ 0x83B2C48 + .incbin "baserom.gba", 0x3B2C48, 0xFC + +gMapEvents_MtEmber_SummitPath_2F:: @ 0x83B2D44 + .incbin "baserom.gba", 0x3B2D44, 0x24 + +gMapEvents_MtEmber_SummitPath_3F:: @ 0x83B2D68 + .incbin "baserom.gba", 0x3B2D68, 0x94 + +gMapEvents_MtEmber_Summit:: @ 0x83B2DFC + .incbin "baserom.gba", 0x3B2DFC, 0x40 + +gMapEvents_MtEmber_RubyPath_B5F:: @ 0x83B2E3C + .incbin "baserom.gba", 0x3B2E3C, 0xA4 + +gMapEvents_SSAnne_Kitchen3:: @ 0x83B2EE0 + .incbin "baserom.gba", 0x3B2EE0, 0x84 + +gMapEvents_MtEmber_RubyPath_B1F:: @ 0x83B2F64 + .incbin "baserom.gba", 0x3B2F64, 0xCC + +gMapEvents_MtEmber_RubyPath_B2F:: @ 0x83B3030 + .incbin "baserom.gba", 0x3B3030, 0x11C + +gMapEvents_MtEmber_RubyPath_B3F:: @ 0x83B314C + .incbin "baserom.gba", 0x3B314C, 0x3C + +gMapEvents_MtEmber_RubyPath_B1F_Stairs:: @ 0x83B3188 + .incbin "baserom.gba", 0x3B3188, 0x54 + +gMapEvents_MtEmber_RubyPath_B2F_Stairs:: @ 0x83B31DC + .incbin "baserom.gba", 0x3B31DC, 0x230 + +gMapEvents_ThreeIsland_BerryForest:: @ 0x83B340C + .incbin "baserom.gba", 0x3B340C, 0x2C + +gMapEvents_FourIsland_IcefallCave_Entrance:: @ 0x83B3438 + .incbin "baserom.gba", 0x3B3438, 0x74 + +gMapEvents_FourIsland_IcefallCave_1F:: @ 0x83B34AC + .incbin "baserom.gba", 0x3B34AC, 0x5C + +gMapEvents_SSAnne_CaptainsOffice2:: @ 0x83B3508 + .incbin "baserom.gba", 0x3B3508, 0xAC + +gMapEvents_SSAnne_CaptainsOffice3:: @ 0x83B35B4 + .incbin "baserom.gba", 0x3B35B4, 0x268 + +gMapEvents_SSAnne_CaptainsOffice4:: @ 0x83B381C + .incbin "baserom.gba", 0x3B381C, 0x34 + +gMapEvents_SSAnne_CaptainsOffice5:: @ 0x83B3850 + .incbin "baserom.gba", 0x3B3850, 0x48 + +gMapEvents_SixIsland_DottedHole_B1F:: @ 0x83B3898 + .incbin "baserom.gba", 0x3B3898, 0x48 + +gMapEvents_SixIsland_DottedHole_B2F:: @ 0x83B38E0 + .incbin "baserom.gba", 0x3B38E0, 0x48 + +gMapEvents_SixIsland_DottedHole_B3F:: @ 0x83B3928 + .incbin "baserom.gba", 0x3B3928, 0x48 + +gMapEvents_SSAnne_CaptainsOffice9:: @ 0x83B3970 + .incbin "baserom.gba", 0x3B3970, 0x60 + +gMapEvents_SixIsland_DottedHole_SapphireRoom:: @ 0x83B39D0 + .incbin "baserom.gba", 0x3B39D0, 0x164 + +gMapEvents_SSAnne_1F_Room11:: @ 0x83B3B34 + .incbin "baserom.gba", 0x3B3B34, 0x1C + +gMapEvents_SSAnne_1F_Room12:: @ 0x83B3B50 + .incbin "baserom.gba", 0x3B3B50, 0x24 + +gMapEvents_NavelRock_Exterior:: @ 0x83B3B74 + .incbin "baserom.gba", 0x3B3B74, 0xCC + +gMapEvents_SevenIsland_TrainerTower_1F:: @ 0x83B3C40 + .incbin "baserom.gba", 0x3B3C40, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_2F:: @ 0x83B3D14 + .incbin "baserom.gba", 0x3B3D14, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_3F:: @ 0x83B3DE8 + .incbin "baserom.gba", 0x3B3DE8, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_4F:: @ 0x83B3EBC + .incbin "baserom.gba", 0x3B3EBC, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_5F:: @ 0x83B3F90 + .incbin "baserom.gba", 0x3B3F90, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_6F:: @ 0x83B4064 + .incbin "baserom.gba", 0x3B4064, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_7F:: @ 0x83B4138 + .incbin "baserom.gba", 0x3B4138, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_8F:: @ 0x83B420C + .incbin "baserom.gba", 0x3B420C, 0x3C + +gMapEvents_SevenIsland_TrainerTower_Roof:: @ 0x83B4248 + .incbin "baserom.gba", 0x3B4248, 0xC0 + +gMapEvents_SevenIsland_TrainerTower_Lobby:: @ 0x83B4308 + .incbin "baserom.gba", 0x3B4308, 0x28 + +gMapEvents_SevenIsland_TrainerTower_Elevator:: @ 0x83B4330 + .incbin "baserom.gba", 0x3B4330, 0x24 + +gMapEvents_FiveIsland_LostCave_Entrance:: @ 0x83B4354 + .incbin "baserom.gba", 0x3B4354, 0x54 + +gMapEvents_FiveIsland_LostCave_Room1:: @ 0x83B43A8 + .incbin "baserom.gba", 0x3B43A8, 0x34 + +gMapEvents_FiveIsland_LostCave_Room2:: @ 0x83B43DC + .incbin "baserom.gba", 0x3B43DC, 0x34 + +gMapEvents_FiveIsland_LostCave_Room3:: @ 0x83B4410 + .incbin "baserom.gba", 0x3B4410, 0x4C + +gMapEvents_FiveIsland_LostCave_Room4:: @ 0x83B445C + .incbin "baserom.gba", 0x3B445C, 0x34 + +gMapEvents_FiveIsland_LostCave_Room5:: @ 0x83B4490 + .incbin "baserom.gba", 0x3B4490, 0x34 + +gMapEvents_FiveIsland_LostCave_Room6:: @ 0x83B44C4 + .incbin "baserom.gba", 0x3B44C4, 0x34 + +gMapEvents_FiveIsland_LostCave_Room7:: @ 0x83B44F8 + .incbin "baserom.gba", 0x3B44F8, 0x34 + +gMapEvents_FiveIsland_LostCave_Room8:: @ 0x83B452C + .incbin "baserom.gba", 0x3B452C, 0x34 + +gMapEvents_FiveIsland_LostCave_Room9:: @ 0x83B4560 + .incbin "baserom.gba", 0x3B4560, 0x4C + +gMapEvents_FiveIsland_LostCave_Room10:: @ 0x83B45AC + .incbin "baserom.gba", 0x3B45AC, 0x34 + +gMapEvents_FiveIsland_LostCave_Room11:: @ 0x83B45E0 + .incbin "baserom.gba", 0x3B45E0, 0x34 + +gMapEvents_FiveIsland_LostCave_Room12:: @ 0x83B4614 + .incbin "baserom.gba", 0x3B4614, 0x34 + +gMapEvents_FiveIsland_LostCave_Room13:: @ 0x83B4648 + .incbin "baserom.gba", 0x3B4648, 0x34 + +gMapEvents_FiveIsland_LostCave_Room14:: @ 0x83B467C + .incbin "baserom.gba", 0x3B467C, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_MoneanChamber:: @ 0x83B4698 + .incbin "baserom.gba", 0x3B4698, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_LiptooChamber:: @ 0x83B46B4 + .incbin "baserom.gba", 0x3B46B4, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_WeepthChamber:: @ 0x83B46D0 + .incbin "baserom.gba", 0x3B46D0, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_DilfordChamber:: @ 0x83B46EC + .incbin "baserom.gba", 0x3B46EC, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_ScufibChamber:: @ 0x83B4708 + .incbin "baserom.gba", 0x3B4708, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_RixyChamber:: @ 0x83B4724 + .incbin "baserom.gba", 0x3B4724, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_ViapoisChamber:: @ 0x83B4740 + .incbin "baserom.gba", 0x3B4740, 0x48 + +gMapEvents_ThreeIsland_DunsparceTunnel:: @ 0x83B4788 + .incbin "baserom.gba", 0x3B4788, 0x134 + +gMapEvents_SevenIsland_SeavaultCanyon_TanobyKey:: @ 0x83B48BC + .incbin "baserom.gba", 0x3B48BC, 0x24 + +gMapEvents_NavelRock_1F:: @ 0x83B48E0 + .incbin "baserom.gba", 0x3B48E0, 0x50 + +gMapEvents_NavelRock_Summit:: @ 0x83B4930 + .incbin "baserom.gba", 0x3B4930, 0x34 + +gMapEvents_NavelRock_Base:: @ 0x83B4964 + .incbin "baserom.gba", 0x3B4964, 0x24 + +gMapEvents_NavelRock_SummitPath_2F:: @ 0x83B4988 + .incbin "baserom.gba", 0x3B4988, 0x24 + +gMapEvents_NavelRock_SummitPath_3F:: @ 0x83B49AC + .incbin "baserom.gba", 0x3B49AC, 0x24 + +gMapEvents_NavelRock_SummitPath_4F:: @ 0x83B49D0 + .incbin "baserom.gba", 0x3B49D0, 0x24 + +gMapEvents_NavelRock_SummitPath_5F:: @ 0x83B49F4 + .incbin "baserom.gba", 0x3B49F4, 0x24 + +gMapEvents_NavelRock_BasePath_B1F:: @ 0x83B4A18 + .incbin "baserom.gba", 0x3B4A18, 0x24 + +gMapEvents_NavelRock_BasePath_B2F:: @ 0x83B4A3C + .incbin "baserom.gba", 0x3B4A3C, 0x24 + +gMapEvents_NavelRock_BasePath_B3F:: @ 0x83B4A60 + .incbin "baserom.gba", 0x3B4A60, 0x24 + +gMapEvents_NavelRock_BasePath_B4F:: @ 0x83B4A84 + .incbin "baserom.gba", 0x3B4A84, 0x24 + +gMapEvents_NavelRock_BasePath_B5F:: @ 0x83B4AA8 + .incbin "baserom.gba", 0x3B4AA8, 0x24 + +gMapEvents_NavelRock_BasePath_B6F:: @ 0x83B4ACC + .incbin "baserom.gba", 0x3B4ACC, 0x24 + +gMapEvents_NavelRock_BasePath_B7F:: @ 0x83B4AF0 + .incbin "baserom.gba", 0x3B4AF0, 0x24 + +gMapEvents_NavelRock_BasePath_B8F:: @ 0x83B4B14 + .incbin "baserom.gba", 0x3B4B14, 0x24 + +gMapEvents_NavelRock_BasePath_B9F:: @ 0x83B4B38 + .incbin "baserom.gba", 0x3B4B38, 0x24 + +gMapEvents_NavelRock_BasePath_B10F:: @ 0x83B4B5C + .incbin "baserom.gba", 0x3B4B5C, 0x24 + +gMapEvents_NavelRock_BasePath_B11F:: @ 0x83B4B80 + .incbin "baserom.gba", 0x3B4B80, 0x24 + +gMapEvents_NavelRock_B1F:: @ 0x83B4BA4 + .incbin "baserom.gba", 0x3B4BA4, 0x2C + +gMapEvents_NavelRock_Fork:: @ 0x83B4BD0 + .incbin "baserom.gba", 0x3B4BD0, 0x4C + +gMapEvents_BirthIsland_Exterior:: @ 0x83B4C1C + .incbin "baserom.gba", 0x3B4C1C, 0xBC + +gMapEvents_OneIsland_KindleRoad_EmberSpa:: @ 0x83B4CD8 + .incbin "baserom.gba", 0x3B4CD8, 0x4C + +gMapEvents_BirthIsland_Harbor:: @ 0x83B4D24 + .incbin "baserom.gba", 0x3B4D24, 0x4C + +gMapEvents_NavelRock_Harbor:: @ 0x83B4D70 + .incbin "baserom.gba", 0x3B4D70, 0xE0 + +gMapEvents_PalletTown:: @ 0x83B4E50 + .incbin "baserom.gba", 0x3B4E50, 0x190 + +gMapEvents_ViridianCity:: @ 0x83B4FE0 + .incbin "baserom.gba", 0x3B4FE0, 0x1AC + +gMapEvents_PewterCity:: @ 0x83B518C + .incbin "baserom.gba", 0x3B518C, 0x254 + +gMapEvents_CeruleanCity:: @ 0x83B53E0 + .incbin "baserom.gba", 0x3B53E0, 0xBC + +gMapEvents_LavenderTown:: @ 0x83B549C + .incbin "baserom.gba", 0x3B549C, 0x1AC + +gMapEvents_VermilionCity:: @ 0x83B5648 + .incbin "baserom.gba", 0x3B5648, 0x250 + +gMapEvents_CeladonCity:: @ 0x83B5898 + .incbin "baserom.gba", 0x3B5898, 0x27C + +gMapEvents_FuchsiaCity:: @ 0x83B5B14 + .incbin "baserom.gba", 0x3B5B14, 0xDC + +gMapEvents_CinnabarIsland:: @ 0x83B5BF0 + .incbin "baserom.gba", 0x3B5BF0, 0x4C + +gMapEvents_IndigoPlateau_Exterior:: @ 0x83B5C3C + .incbin "baserom.gba", 0x3B5C3C, 0x260 + +gMapEvents_SaffronCity_Duplicate:: @ 0x83B5E9C + .incbin "baserom.gba", 0x3B5E9C, 0x14 + +gMapEvents_SaffronCity:: @ 0x83B5EB0 + .incbin "baserom.gba", 0x3B5EB0, 0x94 + +gMapEvents_OneIsland:: @ 0x83B5F44 + .incbin "baserom.gba", 0x3B5F44, 0x130 + +gMapEvents_TwoIsland:: @ 0x83B6074 + .incbin "baserom.gba", 0x3B6074, 0x254 + +gMapEvents_ThreeIsland:: @ 0x83B62C8 + .incbin "baserom.gba", 0x3B62C8, 0x1A4 + +gMapEvents_FourIsland:: @ 0x83B646C + .incbin "baserom.gba", 0x3B646C, 0x88 + +gMapEvents_FiveIsland:: @ 0x83B64F4 + .incbin "baserom.gba", 0x3B64F4, 0x88 + +gMapEvents_SevenIsland:: @ 0x83B657C + .incbin "baserom.gba", 0x3B657C, 0x7C + +gMapEvents_SixIsland:: @ 0x83B65F8 + .incbin "baserom.gba", 0x3B65F8, 0x50 + +gMapEvents_Route1:: @ 0x83B6648 + .incbin "baserom.gba", 0x3B6648, 0x124 + +gMapEvents_Route2:: @ 0x83B676C + .incbin "baserom.gba", 0x3B676C, 0x104 + +gMapEvents_Route3:: @ 0x83B6870 + .incbin "baserom.gba", 0x3B6870, 0x110 + +gMapEvents_Route4:: @ 0x83B6980 + .incbin "baserom.gba", 0x3B6980, 0x40 + +gMapEvents_Route5:: @ 0x83B69C0 + .incbin "baserom.gba", 0x3B69C0, 0xE0 + +gMapEvents_Route6:: @ 0x83B6AA0 + .incbin "baserom.gba", 0x3B6AA0, 0x54 + +gMapEvents_Route7:: @ 0x83B6AF4 + .incbin "baserom.gba", 0x3B6AF4, 0x1BC + +gMapEvents_Route8:: @ 0x83B6CB0 + .incbin "baserom.gba", 0x3B6CB0, 0x164 + +gMapEvents_Route9:: @ 0x83B6E14 + .incbin "baserom.gba", 0x3B6E14, 0x18C + +gMapEvents_Route10:: @ 0x83B6FA0 + .incbin "baserom.gba", 0x3B6FA0, 0x17C + +gMapEvents_Route11:: @ 0x83B711C + .incbin "baserom.gba", 0x3B711C, 0x1C0 + +gMapEvents_Route12:: @ 0x83B72DC + .incbin "baserom.gba", 0x3B72DC, 0x14C + +gMapEvents_Route13:: @ 0x83B7428 + .incbin "baserom.gba", 0x3B7428, 0x1A0 + +gMapEvents_Route14:: @ 0x83B75C8 + .incbin "baserom.gba", 0x3B75C8, 0x180 + +gMapEvents_Route15:: @ 0x83B7748 + .incbin "baserom.gba", 0x3B7748, 0x150 + +gMapEvents_Route16:: @ 0x83B7898 + .incbin "baserom.gba", 0x3B7898, 0x188 + +gMapEvents_Route17:: @ 0x83B7A20 + .incbin "baserom.gba", 0x3B7A20, 0x84 + +gMapEvents_Route18:: @ 0x83B7AA4 + .incbin "baserom.gba", 0x3B7AA4, 0x140 + +gMapEvents_Route19:: @ 0x83B7BE4 + .incbin "baserom.gba", 0x3B7BE4, 0x150 + +gMapEvents_Route20:: @ 0x83B7D34 + .incbin "baserom.gba", 0x3B7D34, 0xB0 + +gMapEvents_Route21_North:: @ 0x83B7DE4 + .incbin "baserom.gba", 0x3B7DE4, 0x8C + +gMapEvents_Route21_South:: @ 0x83B7E70 + .incbin "baserom.gba", 0x3B7E70, 0xA8 + +gMapEvents_Route22:: @ 0x83B7F18 + .incbin "baserom.gba", 0x3B7F18, 0x3E8 + +gMapEvents_Route23:: @ 0x83B8300 + .incbin "baserom.gba", 0x3B8300, 0x100 + +gMapEvents_Route24:: @ 0x83B8400 + .incbin "baserom.gba", 0x3B8400, 0x190 + +gMapEvents_Route25:: @ 0x83B8590 + .incbin "baserom.gba", 0x3B8590, 0x2FC + +gMapEvents_OneIsland_KindleRoad:: @ 0x83B888C + .incbin "baserom.gba", 0x3B888C, 0xA4 + +gMapEvents_OneIsland_TreasureBeach:: @ 0x83B8930 + .incbin "baserom.gba", 0x3B8930, 0x34 + +gMapEvents_TwoIsland_CapeBrink:: @ 0x83B8964 + .incbin "baserom.gba", 0x3B8964, 0x138 + +gMapEvents_ThreeIsland_BondBridge:: @ 0x83B8A9C + .incbin "baserom.gba", 0x3B8A9C, 0x74 + +gMapEvents_ThreeIsland_Port:: @ 0x83B8B10 + .incbin "baserom.gba", 0x3B8B10, 0x14 + +gMapEvents_UnknownMap_03_50:: @ 0x83B8B24 + .incbin "baserom.gba", 0x3B8B24, 0x14 + +gMapEvents_UnknownMap_03_51:: @ 0x83B8B38 + .incbin "baserom.gba", 0x3B8B38, 0x14 + +gMapEvents_UnknownMap_03_52:: @ 0x83B8B4C + .incbin "baserom.gba", 0x3B8B4C, 0x14 + +gMapEvents_UnknownMap_03_53:: @ 0x83B8B60 + .incbin "baserom.gba", 0x3B8B60, 0x120 + +gMapEvents_FiveIsland_ResortGorgeous:: @ 0x83B8C80 + .incbin "baserom.gba", 0x3B8C80, 0x44 + +gMapEvents_FiveIsland_WaterLabyrinth:: @ 0x83B8CC4 + .incbin "baserom.gba", 0x3B8CC4, 0xD0 + +gMapEvents_FiveIsland_Meadow:: @ 0x83B8D94 + .incbin "baserom.gba", 0x3B8D94, 0xC8 + +gMapEvents_FiveIsland_MemorialPillar:: @ 0x83B8E5C + .incbin "baserom.gba", 0x3B8E5C, 0xDC + +gMapEvents_SixIsland_OutcastIsland:: @ 0x83B8F38 + .incbin "baserom.gba", 0x3B8F38, 0x70 + +gMapEvents_SixIsland_GreenPath:: @ 0x83B8FA8 + .incbin "baserom.gba", 0x3B8FA8, 0x138 + +gMapEvents_SixIsland_WaterPath:: @ 0x83B90E0 + .incbin "baserom.gba", 0x3B90E0, 0x1C0 + +gMapEvents_SixIsland_RuinValley:: @ 0x83B92A0 + .incbin "baserom.gba", 0x3B92A0, 0x88 + +gMapEvents_SevenIsland_TrainerTower:: @ 0x83B9328 + .incbin "baserom.gba", 0x3B9328, 0xD4 + +gMapEvents_SevenIsland_SevaultCanyon_Entrance:: @ 0x83B93FC + .incbin "baserom.gba", 0x3B93FC, 0x21C + +gMapEvents_SevenIsland_SevaultCanyon:: @ 0x83B9618 + .incbin "baserom.gba", 0x3B9618, 0xDC + +gMapEvents_SevenIsland_TanobyRuins:: @ 0x83B96F4 + .incbin "baserom.gba", 0x3B96F4, 0x58 + +gMapEvents_PalletTown_PlayersHouse_1F:: @ 0x83B974C + .incbin "baserom.gba", 0x3B974C, 0x40 + +gMapEvents_PalletTown_PlayersHouse_2F:: @ 0x83B978C + .incbin "baserom.gba", 0x3B978C, 0x80 + +gMapEvents_PalletTown_GarysHouse:: @ 0x83B980C + .incbin "baserom.gba", 0x3B980C, 0x1AC + +gMapEvents_PalletTown_ProfessorOaksLab:: @ 0x83B99B8 + .incbin "baserom.gba", 0x3B99B8, 0x80 + +gMapEvents_ViridianCity_House1:: @ 0x83B9A38 + .incbin "baserom.gba", 0x3B9A38, 0x140 + +gMapEvents_ViridianCity_Gym:: @ 0x83B9B78 + .incbin "baserom.gba", 0x3B9B78, 0x98 + +gMapEvents_ViridianCity_House2:: @ 0x83B9C10 + .incbin "baserom.gba", 0x3B9C10, 0x74 + +gMapEvents_ViridianCity_Mart:: @ 0x83B9C84 + .incbin "baserom.gba", 0x3B9C84, 0x94 + +gMapEvents_ViridianCity_PokemonCenter_1F:: @ 0x83B9D18 + .incbin "baserom.gba", 0x3B9D18, 0x8C + +gMapEvents_ViridianCity_PokemonCenter_2F:: @ 0x83B9DA4 + .incbin "baserom.gba", 0x3B9DA4, 0x134 + +gMapEvents_PewterCity_Museum_1F:: @ 0x83B9ED8 + .incbin "baserom.gba", 0x3B9ED8, 0xF4 + +gMapEvents_PewterCity_Museum_2F:: @ 0x83B9FCC + .incbin "baserom.gba", 0x3B9FCC, 0x8C + +gMapEvents_PewterCity_Gym:: @ 0x83BA058 + .incbin "baserom.gba", 0x3BA058, 0x74 + +gMapEvents_PewterCity_Mart:: @ 0x83BA0CC + .incbin "baserom.gba", 0x3BA0CC, 0x74 + +gMapEvents_PewterCity_House1:: @ 0x83BA140 + .incbin "baserom.gba", 0x3BA140, 0xDC + +gMapEvents_PewterCity_PokemonCenter_1F:: @ 0x83BA21C + .incbin "baserom.gba", 0x3BA21C, 0x8C + +gMapEvents_PewterCity_PokemonCenter_2F:: @ 0x83BA2A8 + .incbin "baserom.gba", 0x3BA2A8, 0x5C + +gMapEvents_PewterCity_House2:: @ 0x83BA304 + .incbin "baserom.gba", 0x3BA304, 0x4C + +gMapEvents_CeruleanCity_House1:: @ 0x83BA350 + .incbin "baserom.gba", 0x3BA350, 0x70 + +gMapEvents_CeruleanCity_House2:: @ 0x83BA3C0 + .incbin "baserom.gba", 0x3BA3C0, 0x5C + +gMapEvents_CeruleanCity_House3:: @ 0x83BA41C + .incbin "baserom.gba", 0x3BA41C, 0xDC + +gMapEvents_CeruleanCity_PokemonCenter_1F:: @ 0x83BA4F8 + .incbin "baserom.gba", 0x3BA4F8, 0x8C + +gMapEvents_CeruleanCity_PokemonCenter_2F:: @ 0x83BA584 + .incbin "baserom.gba", 0x3BA584, 0xA4 + +gMapEvents_CeruleanCity_Gym:: @ 0x83BA628 + .incbin "baserom.gba", 0x3BA628, 0xD4 + +gMapEvents_CeruleanCity_BikeShop:: @ 0x83BA6FC + .incbin "baserom.gba", 0x3BA6FC, 0x74 + +gMapEvents_CeruleanCity_Mart:: @ 0x83BA770 + .incbin "baserom.gba", 0x3BA770, 0x34 + +gMapEvents_CeruleanCity_House4:: @ 0x83BA7A4 + .incbin "baserom.gba", 0x3BA7A4, 0x40 + +gMapEvents_CeruleanCity_House5:: @ 0x83BA7E4 + .incbin "baserom.gba", 0x3BA7E4, 0xAC + +gMapEvents_LavenderTown_PokemonCenter_1F:: @ 0x83BA890 + .incbin "baserom.gba", 0x3BA890, 0x8C + +gMapEvents_LavenderTown_PokemonCenter_2F:: @ 0x83BA91C + .incbin "baserom.gba", 0x3BA91C, 0xE0 + +gMapEvents_LavenderTown_VolunteerPokemonHouse:: @ 0x83BA9FC + .incbin "baserom.gba", 0x3BA9FC, 0x5C + +gMapEvents_LavenderTown_House1:: @ 0x83BAA58 + .incbin "baserom.gba", 0x3BAA58, 0x44 + +gMapEvents_LavenderTown_House2:: @ 0x83BAA9C + .incbin "baserom.gba", 0x3BAA9C, 0x8C + +gMapEvents_LavenderTown_Mart:: @ 0x83BAB28 + .incbin "baserom.gba", 0x3BAB28, 0x44 + +gMapEvents_VermilionCity_House1:: @ 0x83BAB6C + .incbin "baserom.gba", 0x3BAB6C, 0xDC + +gMapEvents_VermilionCity_PokemonCenter_1F:: @ 0x83BAC48 + .incbin "baserom.gba", 0x3BAC48, 0x8C + +gMapEvents_VermilionCity_PokemonCenter_2F:: @ 0x83BACD4 + .incbin "baserom.gba", 0x3BACD4, 0xD4 + +gMapEvents_VermilionCity_PokemonFanClub:: @ 0x83BADA8 + .incbin "baserom.gba", 0x3BADA8, 0x44 + +gMapEvents_VermilionCity_House2:: @ 0x83BADEC + .incbin "baserom.gba", 0x3BADEC, 0x74 + +gMapEvents_VermilionCity_Mart:: @ 0x83BAE60 + .incbin "baserom.gba", 0x3BAE60, 0x170 + +gMapEvents_VermilionCity_Gym:: @ 0x83BAFD0 + .incbin "baserom.gba", 0x3BAFD0, 0x98 + +gMapEvents_VermilionCity_House3:: @ 0x83BB068 + .incbin "baserom.gba", 0x3BB068, 0x84 + +gMapEvents_CeladonCity_DepartmentStore_1F:: @ 0x83BB0EC + .incbin "baserom.gba", 0x3BB0EC, 0x98 + +gMapEvents_CeladonCity_DepartmentStore_2F:: @ 0x83BB184 + .incbin "baserom.gba", 0x3BB184, 0x128 + +gMapEvents_CeladonCity_DepartmentStore_3F:: @ 0x83BB2AC + .incbin "baserom.gba", 0x3BB2AC, 0x80 + +gMapEvents_CeladonCity_DepartmentStore_4F:: @ 0x83BB32C + .incbin "baserom.gba", 0x3BB32C, 0x98 + +gMapEvents_CeladonCity_DepartmentStore_5F:: @ 0x83BB3C4 + .incbin "baserom.gba", 0x3BB3C4, 0x7C + +gMapEvents_CeladonCity_DepartmentStore_Roof:: @ 0x83BB440 + .incbin "baserom.gba", 0x3BB440, 0x3C + +gMapEvents_CeladonCity_DepartmentStore_Elevator:: @ 0x83BB47C + .incbin "baserom.gba", 0x3BB47C, 0xBC + +gMapEvents_CeladonCity_Condominiums_1F:: @ 0x83BB538 + .incbin "baserom.gba", 0x3BB538, 0x7C + +gMapEvents_CeladonCity_Condominiums_2F:: @ 0x83BB5B4 + .incbin "baserom.gba", 0x3BB5B4, 0xF4 + +gMapEvents_CeladonCity_Condominiums_3F:: @ 0x83BB6A8 + .incbin "baserom.gba", 0x3BB6A8, 0x44 + +gMapEvents_CeladonCity_Condominiums_Roof:: @ 0x83BB6EC + .incbin "baserom.gba", 0x3BB6EC, 0x80 + +gMapEvents_CeladonCity_Condominiums_RoofRoom:: @ 0x83BB76C + .incbin "baserom.gba", 0x3BB76C, 0x94 + +gMapEvents_CeladonCity_PokemonCenter_1F:: @ 0x83BB800 + .incbin "baserom.gba", 0x3BB800, 0x8C + +gMapEvents_CeladonCity_PokemonCenter_2F:: @ 0x83BB88C + .incbin "baserom.gba", 0x3BB88C, 0x2EC + +gMapEvents_CeladonCity_GameCorner:: @ 0x83BBB78 + .incbin "baserom.gba", 0x3BBB78, 0xA4 + +gMapEvents_CeladonCity_GameCorner_PrizeRoom:: @ 0x83BBC1C + .incbin "baserom.gba", 0x3BBC1C, 0x14C + +gMapEvents_CeladonCity_Gym:: @ 0x83BBD68 + .incbin "baserom.gba", 0x3BBD68, 0xA4 + +gMapEvents_CeladonCity_Restaurant:: @ 0x83BBE0C + .incbin "baserom.gba", 0x3BBE0C, 0x74 + +gMapEvents_CeladonCity_House1:: @ 0x83BBE80 + .incbin "baserom.gba", 0x3BBE80, 0x8C + +gMapEvents_CeladonCity_Hotel:: @ 0x83BBF0C + .incbin "baserom.gba", 0x3BBF0C, 0x94 + +gMapEvents_FuchsiaCity_SafariZone_Entrance:: @ 0x83BBFA0 + .incbin "baserom.gba", 0x3BBFA0, 0x74 + +gMapEvents_FuchsiaCity_Mart:: @ 0x83BC014 + .incbin "baserom.gba", 0x3BC014, 0x8C + +gMapEvents_FuchsiaCity_ZooBuilding:: @ 0x83BC0A0 + .incbin "baserom.gba", 0x3BC0A0, 0x104 + +gMapEvents_FuchsiaCity_Gym:: @ 0x83BC1A4 + .incbin "baserom.gba", 0x3BC1A4, 0x74 + +gMapEvents_FuchsiaCity_House1:: @ 0x83BC218 + .incbin "baserom.gba", 0x3BC218, 0x94 + +gMapEvents_FuchsiaCity_PokemonCenter_1F:: @ 0x83BC2AC + .incbin "baserom.gba", 0x3BC2AC, 0x8C + +gMapEvents_FuchsiaCity_PokemonCenter_2F:: @ 0x83BC338 + .incbin "baserom.gba", 0x3BC338, 0xBC + +gMapEvents_FuchsiaCity_Building1:: @ 0x83BC3F4 + .incbin "baserom.gba", 0x3BC3F4, 0x4C + +gMapEvents_FuchsiaCity_House2:: @ 0x83BC440 + .incbin "baserom.gba", 0x3BC440, 0x34 + +gMapEvents_FuchsiaCity_House3:: @ 0x83BC474 + .incbin "baserom.gba", 0x3BC474, 0x1B8 + +gMapEvents_CinnabarIsland_Gym:: @ 0x83BC62C + .incbin "baserom.gba", 0x3BC62C, 0x8C + +gMapEvents_CinnabarIsland_PokemonLab_Entrance:: @ 0x83BC6B8 + .incbin "baserom.gba", 0x3BC6B8, 0x64 + +gMapEvents_CinnabarIsland_PokemonLab_Lounge:: @ 0x83BC71C + .incbin "baserom.gba", 0x3BC71C, 0x64 + +gMapEvents_CinnabarIsland_PokemonLab_ResearchRoom:: @ 0x83BC780 + .incbin "baserom.gba", 0x3BC780, 0x4C + +gMapEvents_CinnabarIsland_PokemonLab_ExperimentRoom:: @ 0x83BC7CC + .incbin "baserom.gba", 0x3BC7CC, 0xDC + +gMapEvents_CinnabarIsland_PokemonCenter_1F:: @ 0x83BC8A8 + .incbin "baserom.gba", 0x3BC8A8, 0x8C + +gMapEvents_CinnabarIsland_PokemonCenter_2F:: @ 0x83BC934 + .incbin "baserom.gba", 0x3BC934, 0x74 + +gMapEvents_CinnabarIsland_Mart:: @ 0x83BC9A8 + .incbin "baserom.gba", 0x3BC9A8, 0xEC + +gMapEvents_IndigoPlateau_PokemonCenter_1F:: @ 0x83BCA94 + .incbin "baserom.gba", 0x3BCA94, 0x8C + +gMapEvents_IndigoPlateau_PokemonCenter_2F:: @ 0x83BCB20 + .incbin "baserom.gba", 0x3BCB20, 0x7C + +gMapEvents_SaffronCity_House1_1F:: @ 0x83BCB9C + .incbin "baserom.gba", 0x3BCB9C, 0xA0 + +gMapEvents_SaffronCity_House1_2F:: @ 0x83BCC3C + .incbin "baserom.gba", 0x3BCC3C, 0x124 + +gMapEvents_SaffronCity_Dojo:: @ 0x83BCD60 + .incbin "baserom.gba", 0x3BCD60, 0x20C + +gMapEvents_SaffronCity_Gym:: @ 0x83BCF6C + .incbin "baserom.gba", 0x3BCF6C, 0x98 + +gMapEvents_SaffronCity_House2:: @ 0x83BD004 + .incbin "baserom.gba", 0x3BD004, 0x74 + +gMapEvents_SaffronCity_Mart:: @ 0x83BD078 + .incbin "baserom.gba", 0x3BD078, 0xC4 + +gMapEvents_SaffronCity_PokemonCenter_1F:: @ 0x83BD13C + .incbin "baserom.gba", 0x3BD13C, 0x8C + +gMapEvents_SaffronCity_PokemonCenter_2F:: @ 0x83BD1C8 + .incbin "baserom.gba", 0x3BD1C8, 0x44 + +gMapEvents_SaffronCity_House3:: @ 0x83BD20C + .incbin "baserom.gba", 0x3BD20C, 0x10C + +gMapEvents_SaffronCity_PokemonTrainerFanClub:: @ 0x83BD318 + .incbin "baserom.gba", 0x3BD318, 0x64 + +gMapEvents_Route2_ViridianForest_SouthEntrance:: @ 0x83BD37C + .incbin "baserom.gba", 0x3BD37C, 0x5C + +gMapEvents_Route2_House:: @ 0x83BD3D8 + .incbin "baserom.gba", 0x3BD3D8, 0x64 + +gMapEvents_Route2_EastBuilding:: @ 0x83BD43C + .incbin "baserom.gba", 0x3BD43C, 0x7C + +gMapEvents_Route2_ViridianForest_NorthEntrance:: @ 0x83BD4B8 + .incbin "baserom.gba", 0x3BD4B8, 0xC4 + +gMapEvents_Route4_PokemonCenter_1F:: @ 0x83BD57C + .incbin "baserom.gba", 0x3BD57C, 0x8C + +gMapEvents_Route4_PokemonCenter_2F:: @ 0x83BD608 + .incbin "baserom.gba", 0x3BD608, 0x44 + +gMapEvents_Route5_PokemonDayCare:: @ 0x83BD64C + .incbin "baserom.gba", 0x3BD64C, 0x7C + +gMapEvents_Route5_SouthEntrance:: @ 0x83BD6C8 + .incbin "baserom.gba", 0x3BD6C8, 0x7C + +gMapEvents_Route6_NorthEntrance:: @ 0x83BD744 + .incbin "baserom.gba", 0x3BD744, 0x14 + +gMapEvents_UnknownMap_18_01:: @ 0x83BD758 + .incbin "baserom.gba", 0x3BD758, 0x7C + +gMapEvents_Route7_EastEntrance:: @ 0x83BD7D4 + .incbin "baserom.gba", 0x3BD7D4, 0x7C + +gMapEvents_Route8_WestEntrance:: @ 0x83BD850 + .incbin "baserom.gba", 0x3BD850, 0xAC + +gMapEvents_Route10_PokemonCenter_1F:: @ 0x83BD8FC + .incbin "baserom.gba", 0x3BD8FC, 0x8C + +gMapEvents_Route10_PokemonCenter_2F:: @ 0x83BD988 + .incbin "baserom.gba", 0x3BD988, 0x6C + +gMapEvents_Route11_EastEntrance_1F:: @ 0x83BD9F4 + .incbin "baserom.gba", 0x3BD9F4, 0x64 + +gMapEvents_Route11_EastEntrance_2F:: @ 0x83BDA58 + .incbin "baserom.gba", 0x3BDA58, 0x54 + +gMapEvents_Route12_NorthEntrance_1F:: @ 0x83BDAAC + .incbin "baserom.gba", 0x3BDAAC, 0x4C + +gMapEvents_Route12_NorthEntrance_2F:: @ 0x83BDAF8 + .incbin "baserom.gba", 0x3BDAF8, 0x50 + +gMapEvents_Route12_FishingHouse:: @ 0x83BDB48 + .incbin "baserom.gba", 0x3BDB48, 0x54 + +gMapEvents_Route15_WestEntrance_1F:: @ 0x83BDB9C + .incbin "baserom.gba", 0x3BDB9C, 0x4C + +gMapEvents_Route15_WestEntrance_2F:: @ 0x83BDBE8 + .incbin "baserom.gba", 0x3BDBE8, 0x5C + +gMapEvents_Route16_House:: @ 0x83BDC44 + .incbin "baserom.gba", 0x3BDC44, 0x11C + +gMapEvents_Route16_NorthEntrance_1F:: @ 0x83BDD60 + .incbin "baserom.gba", 0x3BDD60, 0x7C + +gMapEvents_Route16_NorthEntrance_2F:: @ 0x83BDDDC + .incbin "baserom.gba", 0x3BDDDC, 0xF4 + +gMapEvents_Route18_EastEntrance_1F:: @ 0x83BDED0 + .incbin "baserom.gba", 0x3BDED0, 0x4C + +gMapEvents_Route18_EastEntrance_2F:: @ 0x83BDF1C + .incbin "baserom.gba", 0x3BDF1C, 0x14 + +gMapEvents_UnusedHouse_27_00:: @ 0x83BDF30 + .incbin "baserom.gba", 0x3BDF30, 0x5C + +gMapEvents_Route22_NorthEntrance:: @ 0x83BDF8C + .incbin "baserom.gba", 0x3BDF8C, 0x14 + +gMapEvents_UnusedHouse_29_00:: @ 0x83BDFA0 + .incbin "baserom.gba", 0x3BDFA0, 0x68 + +gMapEvents_Route25_SeaCottage:: @ 0x83BE008 + .incbin "baserom.gba", 0x3BE008, 0x48 + +gMapEvents_SevenIsland_House_Room1:: @ 0x83BE050 + .incbin "baserom.gba", 0x3BE050, 0x34 + +gMapEvents_SevenIsland_House_Room2:: @ 0x83BE084 + .incbin "baserom.gba", 0x3BE084, 0x7C + +gMapEvents_SevenIsland_Mart:: @ 0x83BE100 + .incbin "baserom.gba", 0x3BE100, 0xB4 + +gMapEvents_SevenIsland_PokemonCenter_1F:: @ 0x83BE1B4 + .incbin "baserom.gba", 0x3BE1B4, 0x8C + +gMapEvents_SevenIsland_PokemonCenter_2F:: @ 0x83BE240 + .incbin "baserom.gba", 0x3BE240, 0x14 + +gMapEvents_UnusedHouse_31_05:: @ 0x83BE254 + .incbin "baserom.gba", 0x3BE254, 0x4C + +gMapEvents_SevenIsland_Harbor:: @ 0x83BE2A0 + .incbin "baserom.gba", 0x3BE2A0, 0x160 + +gMapEvents_OneIsland_PokemonCenter_1F:: @ 0x83BE400 + .incbin "baserom.gba", 0x3BE400, 0x8C + +gMapEvents_OneIsland_PokemonCenter_2F:: @ 0x83BE48C + .incbin "baserom.gba", 0x3BE48C, 0x4C + +gMapEvents_OneIsland_House1:: @ 0x83BE4D8 + .incbin "baserom.gba", 0x3BE4D8, 0x34 + +gMapEvents_OneIsland_House2:: @ 0x83BE50C + .incbin "baserom.gba", 0x3BE50C, 0x4C + +gMapEvents_OneIsland_Harbor:: @ 0x83BE558 + .incbin "baserom.gba", 0x3BE558, 0x94 + +gMapEvents_TwoIsland_JoyfulGameCorner:: @ 0x83BE5EC + .incbin "baserom.gba", 0x3BE5EC, 0x34 + +gMapEvents_TwoIsland_House:: @ 0x83BE620 + .incbin "baserom.gba", 0x3BE620, 0x6C + +gMapEvents_TwoIsland_PokemonCenter_1F:: @ 0x83BE68C + .incbin "baserom.gba", 0x3BE68C, 0x8C + +gMapEvents_TwoIsland_PokemonCenter_2F:: @ 0x83BE718 + .incbin "baserom.gba", 0x3BE718, 0x4C + +gMapEvents_TwoIsland_Harbor:: @ 0x83BE764 + .incbin "baserom.gba", 0x3BE764, 0x40 + +gMapEvents_ThreeIsland_House1:: @ 0x83BE7A4 + .incbin "baserom.gba", 0x3BE7A4, 0x84 + +gMapEvents_ThreeIsland_PokemonCenter_1F:: @ 0x83BE828 + .incbin "baserom.gba", 0x3BE828, 0x8C + +gMapEvents_ThreeIsland_PokemonCenter_2F:: @ 0x83BE8B4 + .incbin "baserom.gba", 0x3BE8B4, 0x7C + +gMapEvents_ThreeIsland_Mart:: @ 0x83BE930 + .incbin "baserom.gba", 0x3BE930, 0x4C + +gMapEvents_ThreeIsland_House2:: @ 0x83BE97C + .incbin "baserom.gba", 0x3BE97C, 0x34 + +gMapEvents_ThreeIsland_House3:: @ 0x83BE9B0 + .incbin "baserom.gba", 0x3BE9B0, 0x4C + +gMapEvents_ThreeIsland_House4:: @ 0x83BE9FC + .incbin "baserom.gba", 0x3BE9FC, 0x34 + +gMapEvents_ThreeIsland_House5:: @ 0x83BEA30 + .incbin "baserom.gba", 0x3BEA30, 0x34 + +gMapEvents_FourIsland_PokemonDayCare:: @ 0x83BEA64 + .incbin "baserom.gba", 0x3BEA64, 0x9C + +gMapEvents_FourIsland_PokemonCenter_1F:: @ 0x83BEB00 + .incbin "baserom.gba", 0x3BEB00, 0x8C + +gMapEvents_FourIsland_PokemonCenter_2F:: @ 0x83BEB8C + .incbin "baserom.gba", 0x3BEB8C, 0x4C + +gMapEvents_FourIsland_House1:: @ 0x83BEBD8 + .incbin "baserom.gba", 0x3BEBD8, 0x184 + +gMapEvents_FourIsland_LoreleisHouse:: @ 0x83BED5C + .incbin "baserom.gba", 0x3BED5C, 0x4C + +gMapEvents_FourIsland_Harbor:: @ 0x83BEDA8 + .incbin "baserom.gba", 0x3BEDA8, 0x34 + +gMapEvents_FourIsland_House2:: @ 0x83BEDDC + .incbin "baserom.gba", 0x3BEDDC, 0x64 + +gMapEvents_FourIsland_Mart:: @ 0x83BEE40 + .incbin "baserom.gba", 0x3BEE40, 0x9C + +gMapEvents_FiveIsland_PokemonCenter_1F:: @ 0x83BEEDC + .incbin "baserom.gba", 0x3BEEDC, 0x8C + +gMapEvents_FiveIsland_PokemonCenter_2F:: @ 0x83BEF68 + .incbin "baserom.gba", 0x3BEF68, 0x4C + +gMapEvents_FiveIsland_Harbor:: @ 0x83BEFB4 + .incbin "baserom.gba", 0x3BEFB4, 0x34 + +gMapEvents_FiveIsland_House1:: @ 0x83BEFE8 + .incbin "baserom.gba", 0x3BEFE8, 0x34 + +gMapEvents_FiveIsland_House2:: @ 0x83BF01C + .incbin "baserom.gba", 0x3BF01C, 0x84 + +gMapEvents_SixIsland_PokemonCenter_1F:: @ 0x83BF0A0 + .incbin "baserom.gba", 0x3BF0A0, 0x8C + +gMapEvents_SixIsland_PokemonCenter_2F:: @ 0x83BF12C + .incbin "baserom.gba", 0x3BF12C, 0x4C + +gMapEvents_SixIsland_Harbor:: @ 0x83BF178 + .incbin "baserom.gba", 0x3BF178, 0x34 + +gMapEvents_SixIsland_House:: @ 0x83BF1AC + .incbin "baserom.gba", 0x3BF1AC, 0x64 + +gMapEvents_SixIsland_Mart:: @ 0x83BF210 + .incbin "baserom.gba", 0x3BF210, 0x4C + +gMapEvents_ThreeIsland_Harbor:: @ 0x83BF25C + .incbin "baserom.gba", 0x3BF25C, 0x64 + +gMapEvents_FiveIsland_ResortGorgeous_House:: @ 0x83BF2C0 + .incbin "baserom.gba", 0x3BF2C0, 0x34 + +gMapEvents_TwoIsland_CapeBrink_House:: @ 0x83BF2F4 + .incbin "baserom.gba", 0x3BF2F4, 0x40 + +gMapEvents_SixIsland_WaterPath_House1:: @ 0x83BF334 + .incbin "baserom.gba", 0x3BF334, 0x34 + +gMapEvents_SixIsland_WaterPath_House2:: @ 0x83BF368 + .incbin "baserom.gba", 0x3BF368, 0x64 + +gMapEvents_SevenIsland_SevaultCanyon_House:: @ 0x83BF3CC + .incbin "baserom.gba", 0x3BF3CC, 0x188 gUnknown_83BF554:: @ 83BF554 .incbin "baserom.gba", 0x3BF554, 0x8 diff --git a/data/connections.s b/data/connections.s index 3e1b03999..ec3eb9106 100644 --- a/data/connections.s +++ b/data/connections.s @@ -7,7 +7,7 @@ gUnknown_8352754:: @ 8352754 connection up, 0, MAP_ROUTE1 connection down, 0, MAP_ROUTE21_NORTH -gUnknown_835276C:: @ 835276C +gMapConnections_PalletTown:: @ 835276C .4byte 2 .4byte gUnknown_8352754 @@ -16,7 +16,7 @@ gUnknown_8352774:: @ 8352774 connection down, 12, MAP_ROUTE1 connection left, 10, MAP_ROUTE22 -gUnknown_8352798:: @ 8352798 +gMapConnections_ViridianCity:: @ 8352798 .4byte 3 .4byte gUnknown_8352774 @@ -24,7 +24,7 @@ gUnknown_83527A0:: @ 83527A0 connection down, 12, MAP_ROUTE2 connection right, 10, MAP_ROUTE3 -gUnknown_83527B8:: @ 83527B8 +gMapConnections_PewterCity:: @ 83527B8 .4byte 2 .4byte gUnknown_83527A0 @@ -34,7 +34,7 @@ gUnknown_83527C0:: @ 83527C0 connection left, 10, MAP_ROUTE4 connection right, 10, MAP_ROUTE9 -gUnknown_83527F0:: @ 83527F0 +gMapConnections_CeruleanCity:: @ 83527F0 .4byte 4 .4byte gUnknown_83527C0 @@ -43,7 +43,7 @@ gUnknown_83527F8:: @ 83527F8 connection down, 0, MAP_ROUTE12 connection left, 0, MAP_ROUTE8 -gUnknown_835281C:: @ 835281C +gMapConnections_LavenderTown:: @ 835281C .4byte 3 .4byte gUnknown_83527F8 @@ -51,7 +51,7 @@ gUnknown_8352824:: @ 8352824 connection up, 12, MAP_ROUTE6 connection right, 10, MAP_ROUTE11 -gUnknown_835283C:: @ 835283C +gMapConnections_VermilionCity:: @ 835283C .4byte 2 .4byte gUnknown_8352824 @@ -59,7 +59,7 @@ gUnknown_8352844:: @ 8352844 connection left, 10, MAP_ROUTE16 connection right, 10, MAP_ROUTE7 -gUnknown_835285C:: @ 835285C +gMapConnections_CeladonCity:: @ 835285C .4byte 2 .4byte gUnknown_8352844 @@ -68,7 +68,7 @@ gUnknown_8352864:: @ 8352864 connection left, 10, MAP_ROUTE18 connection right, 10, MAP_ROUTE15 -gUnknown_8352888:: @ 8352888 +gMapConnections_FuchsiaCity:: @ 8352888 .4byte 3 .4byte gUnknown_8352864 @@ -76,14 +76,14 @@ gUnknown_8352890:: @ 8352890 connection up, 0, MAP_ROUTE21_SOUTH connection right, 0, MAP_ROUTE20 -gUnknown_83528A8:: @ 83528A8 +gMapConnections_CinnabarIsland:: @ 83528A8 .4byte 2 .4byte gUnknown_8352890 gUnknown_83528B0:: @ 83528B0 connection down, 0, MAP_ROUTE23 -gUnknown_83528BC:: @ 83528BC +gMapConnections_IndigoPlateau_Exterior:: @ 83528BC .4byte 1 .4byte gUnknown_83528B0 @@ -103,7 +103,7 @@ gUnknown_83528FC:: @ 83528FC connection left, 10, MAP_ROUTE7 connection right, 10, MAP_ROUTE8 -gUnknown_835292C:: @ 835292C +gMapConnections_SaffronCity:: @ 835292C .4byte 4 .4byte gUnknown_83528FC @@ -111,14 +111,14 @@ gUnknown_8352934:: @ 8352934 connection down, 0, MAP_ONEISLAND_TREASUREBEACH connection right, -120, MAP_ONEISLAND_KINDLEROAD -gUnknown_835294C:: @ 835294C +gMapConnections_OneIsland:: @ 835294C .4byte 2 .4byte gUnknown_8352934 gUnknown_8352954:: @ 8352954 connection up, 24, MAP_TWOISLAND_CAPEBRINK -gUnknown_8352960:: @ 8352960 +gMapConnections_TwoIsland:: @ 8352960 .4byte 1 .4byte gUnknown_8352954 @@ -126,7 +126,7 @@ gUnknown_8352968:: @ 8352968 connection down, 0, MAP_THREEISLAND_PORT connection left, 0, MAP_THREEISLAND_BONDBRIDGE -gUnknown_8352980:: @ 8352980 +gMapConnections_ThreeIsland:: @ 8352980 .4byte 2 .4byte gUnknown_8352968 @@ -134,7 +134,7 @@ gUnknown_8352988:: @ 8352988 connection up, -48, MAP_FIVEISLAND_WATERLABYRINTH connection right, 0, MAP_FIVEISLAND_MEADOW -gUnknown_83529A0:: @ 83529A0 +gMapConnections_FiveIsland:: @ 83529A0 .4byte 2 .4byte gUnknown_8352988 @@ -142,14 +142,14 @@ gUnknown_83529A8:: @ 83529A8 connection up, -48, MAP_SEVENISLAND_TRAINERTOWER connection down, 0, MAP_SEVENISLAND_SEVAULTCANYON_ENTRANCE -gUnknown_83529C0:: @ 83529C0 +gMapConnections_SevenIsland:: @ 83529C0 .4byte 2 .4byte gUnknown_83529A8 gUnknown_83529C8:: @ 83529C8 connection right, -40, MAP_SIXISLAND_WATERPATH -gUnknown_83529D4:: @ 83529D4 +gMapConnections_SixIsland:: @ 83529D4 .4byte 1 .4byte gUnknown_83529C8 @@ -157,7 +157,7 @@ gUnknown_83529DC:: @ 83529DC connection up, -12, MAP_VIRIDIANCITY connection down, 0, MAP_PALLETTOWN -gUnknown_83529F4:: @ 83529F4 +gMapConnections_Route1:: @ 83529F4 .4byte 2 .4byte gUnknown_83529DC @@ -165,7 +165,7 @@ gUnknown_83529FC:: @ 83529FC connection up, -12, MAP_PEWTERCITY connection down, -12, MAP_VIRIDIANCITY -gUnknown_8352A14:: @ 8352A14 +gMapConnections_Route2:: @ 8352A14 .4byte 2 .4byte gUnknown_83529FC @@ -173,7 +173,7 @@ gUnknown_8352A1C:: @ 8352A1C connection up, 60, MAP_ROUTE4 connection left, -10, MAP_PEWTERCITY -gUnknown_8352A34:: @ 8352A34 +gMapConnections_Route3:: @ 8352A34 .4byte 2 .4byte gUnknown_8352A1C @@ -181,7 +181,7 @@ gUnknown_8352A3C:: @ 8352A3C connection down, -60, MAP_ROUTE3 connection right, -10, MAP_CERULEANCITY -gUnknown_8352A54:: @ 8352A54 +gMapConnections_Route4:: @ 8352A54 .4byte 2 .4byte gUnknown_8352A3C @@ -189,7 +189,7 @@ gUnknown_8352A5C:: @ 8352A5C connection up, 0, MAP_CERULEANCITY connection down, 0, MAP_SAFFRONCITY -gUnknown_8352A74:: @ 8352A74 +gMapConnections_Route5:: @ 8352A74 .4byte 2 .4byte gUnknown_8352A5C @@ -197,7 +197,7 @@ gUnknown_8352A7C:: @ 8352A7C connection up, 0, MAP_SAFFRONCITY connection down, -12, MAP_VERMILIONCITY -gUnknown_8352A94:: @ 8352A94 +gMapConnections_Route6:: @ 8352A94 .4byte 2 .4byte gUnknown_8352A7C @@ -205,7 +205,7 @@ gUnknown_8352A9C:: @ 8352A9C connection left, -10, MAP_CELADONCITY connection right, -10, MAP_SAFFRONCITY -gUnknown_8352AB4:: @ 8352AB4 +gMapConnections_Route7:: @ 8352AB4 .4byte 2 .4byte gUnknown_8352A9C @@ -213,7 +213,7 @@ gUnknown_8352ABC:: @ 8352ABC connection left, -10, MAP_SAFFRONCITY connection right, 0, MAP_LAVENDERTOWN -gUnknown_8352AD4:: @ 8352AD4 +gMapConnections_Route8:: @ 8352AD4 .4byte 2 .4byte gUnknown_8352ABC @@ -221,7 +221,7 @@ gUnknown_8352ADC:: @ 8352ADC connection left, -10, MAP_CERULEANCITY connection right, 0, MAP_ROUTE10 -gUnknown_8352AF4:: @ 8352AF4 +gMapConnections_Route9:: @ 8352AF4 .4byte 2 .4byte gUnknown_8352ADC @@ -229,7 +229,7 @@ gUnknown_8352AFC:: @ 8352AFC connection down, 0, MAP_LAVENDERTOWN connection left, 0, MAP_ROUTE9 -gUnknown_8352B14:: @ 8352B14 +gMapConnections_Route10:: @ 8352B14 .4byte 2 .4byte gUnknown_8352AFC @@ -237,7 +237,7 @@ gUnknown_8352B1C:: @ 8352B1C connection left, -10, MAP_VERMILIONCITY connection right, -60, MAP_ROUTE12 -gUnknown_8352B34:: @ 8352B34 +gMapConnections_Route11:: @ 8352B34 .4byte 2 .4byte gUnknown_8352B1C @@ -246,7 +246,7 @@ gUnknown_8352B3C:: @ 8352B3C connection down, -48, MAP_ROUTE13 connection left, 60, MAP_ROUTE11 -gUnknown_8352B60:: @ 8352B60 +gMapConnections_Route12:: @ 8352B60 .4byte 3 .4byte gUnknown_8352B3C @@ -254,7 +254,7 @@ gUnknown_8352B68:: @ 8352B68 connection up, 48, MAP_ROUTE12 connection left, 0, MAP_ROUTE14 -gUnknown_8352B80:: @ 8352B80 +gMapConnections_Route13:: @ 8352B80 .4byte 2 .4byte gUnknown_8352B68 @@ -262,7 +262,7 @@ gUnknown_8352B88:: @ 8352B88 connection left, 40, MAP_ROUTE15 connection right, 0, MAP_ROUTE13 -gUnknown_8352BA0:: @ 8352BA0 +gMapConnections_Route14:: @ 8352BA0 .4byte 2 .4byte gUnknown_8352B88 @@ -270,7 +270,7 @@ gUnknown_8352BA8:: @ 8352BA8 connection left, -10, MAP_FUCHSIACITY connection right, -40, MAP_ROUTE14 -gUnknown_8352BC0:: @ 8352BC0 +gMapConnections_Route15:: @ 8352BC0 .4byte 2 .4byte gUnknown_8352BA8 @@ -278,7 +278,7 @@ gUnknown_8352BC8:: @ 8352BC8 connection down, 0, MAP_ROUTE17 connection right, -10, MAP_CELADONCITY -gUnknown_8352BE0:: @ 8352BE0 +gMapConnections_Route16:: @ 8352BE0 .4byte 2 .4byte gUnknown_8352BC8 @@ -286,7 +286,7 @@ gUnknown_8352BE8:: @ 8352BE8 connection up, 0, MAP_ROUTE16 connection down, 0, MAP_ROUTE18 -gUnknown_8352C00:: @ 8352C00 +gMapConnections_Route17:: @ 8352C00 .4byte 2 .4byte gUnknown_8352BE8 @@ -294,7 +294,7 @@ gUnknown_8352C08:: @ 8352C08 connection up, 0, MAP_ROUTE17 connection right, -10, MAP_FUCHSIACITY -gUnknown_8352C20:: @ 8352C20 +gMapConnections_Route18:: @ 8352C20 .4byte 2 .4byte gUnknown_8352C08 @@ -302,7 +302,7 @@ gUnknown_8352C28:: @ 8352C28 connection up, -12, MAP_FUCHSIACITY connection left, 40, MAP_ROUTE20 -gUnknown_8352C40:: @ 8352C40 +gMapConnections_Route19:: @ 8352C40 .4byte 2 .4byte gUnknown_8352C28 @@ -310,7 +310,7 @@ gUnknown_8352C48:: @ 8352C48 connection left, 0, MAP_CINNABARISLAND connection right, -40, MAP_ROUTE19 -gUnknown_8352C60:: @ 8352C60 +gMapConnections_Route20:: @ 8352C60 .4byte 2 .4byte gUnknown_8352C48 @@ -318,7 +318,7 @@ gUnknown_8352C68:: @ 8352C68 connection up, 0, MAP_PALLETTOWN connection down, 0, MAP_ROUTE21_SOUTH -gUnknown_8352C80:: @ 8352C80 +gMapConnections_Route21_North:: @ 8352C80 .4byte 2 .4byte gUnknown_8352C68 @@ -326,7 +326,7 @@ gUnknown_8352C88:: @ 8352C88 connection up, 0, MAP_ROUTE21_NORTH connection down, 0, MAP_CINNABARISLAND -gUnknown_8352CA0:: @ 8352CA0 +gMapConnections_Route21_South:: @ 8352CA0 .4byte 2 .4byte gUnknown_8352C88 @@ -334,7 +334,7 @@ gUnknown_8352CA8:: @ 8352CA8 connection up, 0, MAP_ROUTE23 connection right, -10, MAP_VIRIDIANCITY -gUnknown_8352CC0:: @ 8352CC0 +gMapConnections_Route22:: @ 8352CC0 .4byte 2 .4byte gUnknown_8352CA8 @@ -342,7 +342,7 @@ gUnknown_8352CC8:: @ 8352CC8 connection up, 0, MAP_INDIGOPLATEAU_EXTERIOR connection down, 0, MAP_ROUTE22 -gUnknown_8352CE0:: @ 8352CE0 +gMapConnections_Route23:: @ 8352CE0 .4byte 2 .4byte gUnknown_8352CC8 @@ -350,70 +350,70 @@ gUnknown_8352CE8:: @ 8352CE8 connection down, -12, MAP_CERULEANCITY connection right, 0, MAP_ROUTE25 -gUnknown_8352D00:: @ 8352D00 +gMapConnections_Route24:: @ 8352D00 .4byte 2 .4byte gUnknown_8352CE8 gUnknown_8352D08:: @ 8352D08 connection left, 0, MAP_ROUTE24 -gUnknown_8352D14:: @ 8352D14 +gMapConnections_Route25:: @ 8352D14 .4byte 1 .4byte gUnknown_8352D08 gUnknown_8352D1C:: @ 8352D1C connection left, 120, MAP_ONEISLAND -gUnknown_8352D28:: @ 8352D28 +gMapConnections_OneIsland_KindleRoad:: @ 8352D28 .4byte 1 .4byte gUnknown_8352D1C gUnknown_8352D30:: @ 8352D30 connection up, 0, MAP_ONEISLAND -gUnknown_8352D3C:: @ 8352D3C +gMapConnections_OneIsland_TreasureBeach:: @ 8352D3C .4byte 1 .4byte gUnknown_8352D30 gUnknown_8352D44:: @ 8352D44 connection down, -24, MAP_TWOISLAND -gUnknown_8352D50:: @ 8352D50 +gMapConnections_TwoIsland_CapeBrink:: @ 8352D50 .4byte 1 .4byte gUnknown_8352D44 gUnknown_8352D58:: @ 8352D58 connection right, 0, MAP_THREEISLAND -gUnknown_8352D64:: @ 8352D64 +gMapConnections_ThreeIsland_BondBridge:: @ 8352D64 .4byte 1 .4byte gUnknown_8352D58 gUnknown_8352D6C:: @ 8352D6C connection up, 0, MAP_THREEISLAND -gUnknown_8352D78:: @ 8352D78 +gMapConnections_ThreeIsland_Port:: @ 8352D78 .4byte 1 .4byte gUnknown_8352D6C gUnknown_8352D80:: @ 8352D80 connection up, 0, MAP_THREEISLAND -gUnknown_8352D8C:: @ 8352D8C +gMapConnections_UnknownMap_03_50:: @ 8352D8C .4byte 1 .4byte gUnknown_8352D80 gUnknown_8352D94:: @ 8352D94 connection up, 0, MAP_THREEISLAND -gUnknown_8352DA0:: @ 8352DA0 +gMapConnections_UnknownMap_03_51:: @ 8352DA0 .4byte 1 .4byte gUnknown_8352D94 gUnknown_8352DA8:: @ 8352DA8 connection down, -48, MAP_FIVEISLAND_WATERLABYRINTH -gUnknown_8352DB4:: @ 8352DB4 +gMapConnections_FiveIsland_ResortGorgeous:: @ 8352DB4 .4byte 1 .4byte gUnknown_8352DA8 @@ -421,7 +421,7 @@ gUnknown_8352DBC:: @ 8352DBC connection up, 48, MAP_FIVEISLAND_RESORTGORGEOUS connection down, 48, MAP_FIVEISLAND -gUnknown_8352DD4:: @ 8352DD4 +gMapConnections_FiveIsland_WaterLabyrinth:: @ 8352DD4 .4byte 2 .4byte gUnknown_8352DBC @@ -429,21 +429,21 @@ gUnknown_8352DDC:: @ 8352DDC connection left, 0, MAP_FIVEISLAND connection right, 20, MAP_FIVEISLAND_MEMORIALPILLAR -gUnknown_8352DF4:: @ 8352DF4 +gMapConnections_FiveIsland_Meadow:: @ 8352DF4 .4byte 2 .4byte gUnknown_8352DDC gUnknown_8352DFC:: @ 8352DFC connection left, -20, MAP_FIVEISLAND_MEADOW -gUnknown_8352E08:: @ 8352E08 +gMapConnections_FiveIsland_MemorialPillar:: @ 8352E08 .4byte 1 .4byte gUnknown_8352DFC gUnknown_8352E10:: @ 8352E10 connection down, 0, MAP_SIXISLAND_GREENPATH -gUnknown_8352E1C:: @ 8352E1C +gMapConnections_SixIsland_OutcastIsland:: @ 8352E1C .4byte 1 .4byte gUnknown_8352E10 @@ -451,7 +451,7 @@ gUnknown_8352E24:: @ 8352E24 connection up, 0, MAP_SIXISLAND_OUTCASTISLAND connection right, 0, MAP_SIXISLAND_WATERPATH -gUnknown_8352E3C:: @ 8352E3C +gMapConnections_SixIsland_GreenPath:: @ 8352E3C .4byte 2 .4byte gUnknown_8352E24 @@ -460,21 +460,21 @@ gUnknown_8352E44:: @ 8352E44 connection left, 40, MAP_SIXISLAND connection left, 80, MAP_SIXISLAND_RUINVALLEY -gUnknown_8352E68:: @ 8352E68 +gMapConnections_SixIsland_WaterPath:: @ 8352E68 .4byte 3 .4byte gUnknown_8352E44 gUnknown_8352E70:: @ 8352E70 connection right, -80, MAP_SIXISLAND_WATERPATH -gUnknown_8352E7C:: @ 8352E7C +gMapConnections_SixIsland_RuinValley:: @ 8352E7C .4byte 1 .4byte gUnknown_8352E70 gUnknown_8352E84:: @ 8352E84 connection down, 48, MAP_SEVENISLAND -gUnknown_8352E90:: @ 8352E90 +gMapConnections_SevenIsland_TrainerTower:: @ 8352E90 .4byte 1 .4byte gUnknown_8352E84 @@ -482,7 +482,7 @@ gUnknown_8352E98:: @ 8352E98 connection up, 0, MAP_SEVENISLAND connection right, 20, MAP_SEVENISLAND_SEVAULTCANYON -gUnknown_8352EB0:: @ 8352EB0 +gMapConnections_SevenIsland_SevaultCanyon_Entrance:: @ 8352EB0 .4byte 2 .4byte gUnknown_8352E98 @@ -490,14 +490,13 @@ gUnknown_8352EB8:: @ 8352EB8 connection down, -48, MAP_SEVENISLAND_TANOBYRUINS connection left, -20, MAP_SEVENISLAND_SEVAULTCANYON_ENTRANCE -gUnknown_8352ED0:: @ 8352ED0 +gMapConnections_SevenIsland_SevaultCanyon:: @ 8352ED0 .4byte 2 .4byte gUnknown_8352EB8 gUnknown_8352ED8:: @ 8352ED8 connection up, 48, MAP_SEVENISLAND_SEVAULTCANYON -gUnknown_8352EE4:: @ 8352EE4 +gMapConnections_SevenIsland_TanobyRuins:: @ 8352EE4 .4byte 1 .4byte gUnknown_8352ED8 - diff --git a/data/data.s b/data/data.s index 236090c17..2d3806e4a 100644 --- a/data/data.s +++ b/data/data.s @@ -1,5 +1,8 @@ #include "constants/region_map.h" #include "constants/trainer_classes.h" +#include "constants/songs.h" +#include "constants/region_map.h" + .set NULL, 0 .section .rodata @@ -945,10 +948,1051 @@ gUnknown_826D374:: @ 826D374 .4byte sub_8058754 gUnknown_826D37C:: @ 826D37C - .incbin "baserom.gba", 0x26D37C, 0x78250 + .incbin "baserom.gba", 0x26D37C, 0x67E84 +gMapData_PalletTown_PlayersHouse_1F:: @ 82D5200 + .incbin "baserom.gba", 0x2D5200, 0xFC + +gMapData_PalletTown_PlayersHouse_2F:: @ 82D52FC + .incbin "baserom.gba", 0x2D52FC, 0x128 + +gMapData_PalletTown_GarysHouse:: @ 82D5424 + .incbin "baserom.gba", 0x2D5424, 0x244 + +gMapData_PalletTown_ProfessorOaksLab:: @ 82D5668 + .incbin "baserom.gba", 0x2D5668, 0xEC + +gMapData_CeruleanCity_House3:: @ 82D5754 +gMapData_CeruleanCity_House4:: @ 82D5754 +gMapData_VermilionCity_House1:: @ 82D5754 +gMapData_VermilionCity_House2:: @ 82D5754 +gMapData_VermilionCity_House3:: @ 82D5754 +gMapData_FuchsiaCity_House1:: @ 82D5754 +gMapData_FuchsiaCity_House3:: @ 82D5754 +gMapData_Route16_House:: @ 82D5754 + .incbin "baserom.gba", 0x2D5754, 0xEC + +gMapData_PewterCity_House1:: @ 82D5840 +gMapData_PewterCity_House2:: @ 82D5840 +gMapData_Route2_House:: @ 82D5840 +gMapData_UnknownMap_18_01:: @ 82D5840 +gMapData_UnusedHouse_27_00:: @ 82D5840 +gMapData_UnusedHouse_29_00:: @ 82D5840 + .incbin "baserom.gba", 0x2D5840, 0x150 + +gMapData_ViridianCity_PokemonCenter_1F:: @ 82D5990 +gMapData_PewterCity_PokemonCenter_1F:: @ 82D5990 +gMapData_CeruleanCity_PokemonCenter_1F:: @ 82D5990 +gMapData_LavenderTown_PokemonCenter_1F:: @ 82D5990 +gMapData_VermilionCity_PokemonCenter_1F:: @ 82D5990 +gMapData_CeladonCity_PokemonCenter_1F:: @ 82D5990 +gMapData_FuchsiaCity_PokemonCenter_1F:: @ 82D5990 +gMapData_CinnabarIsland_PokemonCenter_1F:: @ 82D5990 +gMapData_SaffronCity_PokemonCenter_1F:: @ 82D5990 +gMapData_Route4_PokemonCenter_1F:: @ 82D5990 +gMapData_Route10_PokemonCenter_1F:: @ 82D5990 +gMapData_SevenIsland_PokemonCenter_1F:: @ 82D5990 +gMapData_TwoIsland_PokemonCenter_1F:: @ 82D5990 +gMapData_ThreeIsland_PokemonCenter_1F:: @ 82D5990 +gMapData_FourIsland_PokemonCenter_1F:: @ 82D5990 +gMapData_FiveIsland_PokemonCenter_1F:: @ 82D5990 +gMapData_SixIsland_PokemonCenter_1F:: @ 82D5990 + .incbin "baserom.gba", 0x2D5990, 0x150 + +gMapData_ViridianCity_PokemonCenter_2F:: @ 82D5AE0 +gMapData_PewterCity_PokemonCenter_2F:: @ 82D5AE0 +gMapData_CeruleanCity_PokemonCenter_2F:: @ 82D5AE0 +gMapData_LavenderTown_PokemonCenter_2F:: @ 82D5AE0 +gMapData_VermilionCity_PokemonCenter_2F:: @ 82D5AE0 +gMapData_CeladonCity_PokemonCenter_2F:: @ 82D5AE0 +gMapData_FuchsiaCity_PokemonCenter_2F:: @ 82D5AE0 +gMapData_CinnabarIsland_PokemonCenter_2F:: @ 82D5AE0 +gMapData_IndigoPlateau_PokemonCenter_2F:: @ 82D5AE0 +gMapData_SaffronCity_PokemonCenter_2F:: @ 82D5AE0 +gMapData_Route4_PokemonCenter_2F:: @ 82D5AE0 +gMapData_Route10_PokemonCenter_2F:: @ 82D5AE0 +gMapData_SevenIsland_PokemonCenter_2F:: @ 82D5AE0 +gMapData_TwoIsland_PokemonCenter_2F:: @ 82D5AE0 +gMapData_ThreeIsland_PokemonCenter_2F:: @ 82D5AE0 +gMapData_FourIsland_PokemonCenter_2F:: @ 82D5AE0 +gMapData_FiveIsland_PokemonCenter_2F:: @ 82D5AE0 +gMapData_SixIsland_PokemonCenter_2F:: @ 82D5AE0 + .incbin "baserom.gba", 0x2D5AE0, 0xEC + +gMapData_ViridianCity_Mart:: @ 82D5BCC +gMapData_PewterCity_Mart:: @ 82D5BCC +gMapData_CeruleanCity_Mart:: @ 82D5BCC +gMapData_LavenderTown_Mart:: @ 82D5BCC +gMapData_VermilionCity_Mart:: @ 82D5BCC +gMapData_FuchsiaCity_Mart:: @ 82D5BCC +gMapData_CinnabarIsland_Mart:: @ 82D5BCC +gMapData_SaffronCity_Mart:: @ 82D5BCC +gMapData_SevenIsland_Mart:: @ 82D5BCC +gMapData_ThreeIsland_Mart:: @ 82D5BCC +gMapData_FourIsland_Mart:: @ 82D5BCC +gMapData_SixIsland_Mart:: @ 82D5BCC + .incbin "baserom.gba", 0x2D5BCC, 0xEC + +gMapData_OneIsland_House1:: @ 82D5CB8 +gMapData_OneIsland_House2:: @ 82D5CB8 +gMapData_TwoIsland_House:: @ 82D5CB8 +gMapData_ThreeIsland_House2:: @ 82D5CB8 +gMapData_ThreeIsland_House3:: @ 82D5CB8 +gMapData_ThreeIsland_House4:: @ 82D5CB8 +gMapData_ThreeIsland_House5:: @ 82D5CB8 +gMapData_FourIsland_House1:: @ 82D5CB8 +gMapData_FourIsland_House2:: @ 82D5CB8 +gMapData_FiveIsland_House1:: @ 82D5CB8 +gMapData_FiveIsland_House2:: @ 82D5CB8 +gMapData_SixIsland_House:: @ 82D5CB8 +gMapData_TwoIsland_CapeBrink_House:: @ 82D5CB8 +gMapData_SixIsland_WaterPath_House2:: @ 82D5CB8 +gMapData_SevenIsland_SevaultCanyon_House:: @ 82D5CB8 + .incbin "baserom.gba", 0x2D5CB8, 0x2CC + +gMapData_CeruleanCity_Gym:: @ 82D5F84 + .incbin "baserom.gba", 0x2D5F84, 0xEC + +gMapData_Route12_FishingHouse:: @ 82D6070 +gMapData_UnusedHouse_31_05:: @ 82D6070 +gMapData_SixIsland_WaterPath_House1:: @ 82D6070 + .incbin "baserom.gba", 0x2D6070, 0x300 + +gMapData_CeladonCity_Gym:: @ 82D6370 + .incbin "baserom.gba", 0x2D6370, 0x20C + +gMapData_FiveIsland_ResortGorgeous_House:: @ 82D657C + .incbin "baserom.gba", 0x2D657C, 0x488 + +gMapData_FuchsiaCity_Gym:: @ 82D6A04 + .incbin "baserom.gba", 0x2D6A04, 0xEC + +gMapData_LavenderTown_House1:: @ 82D6AF0 +gMapData_LavenderTown_House2:: @ 82D6AF0 +gMapData_CeladonCity_House1:: @ 82D6AF0 +gMapData_SaffronCity_House2:: @ 82D6AF0 +gMapData_SaffronCity_House3:: @ 82D6AF0 + .incbin "baserom.gba", 0x2D6AF0, 0x338 + +gMapData_VermilionCity_Gym:: @ 82D6E28 + .incbin "baserom.gba", 0x2D6E28, 0x100 + +gMapData_CeruleanCity_BikeShop:: @ 82D6F28 + .incbin "baserom.gba", 0x2D6F28, 0x240 + +gMapData_CeladonCity_GameCorner:: @ 82D7168 + .incbin "baserom.gba", 0x2D7168, 0x1C4 + +gMapData_PewterCity_Gym:: @ 82D732C + .incbin "baserom.gba", 0x2D732C, 0xEC + +gMapData_FourIsland_LoreleisHouse:: @ 82D7418 + .incbin "baserom.gba", 0x2D7418, 0xEC + +gMapData_ThreeIsland_House1:: @ 82D7504 + .incbin "baserom.gba", 0x2D7504, 0x740 + +gMapData_SaffronCity_Gym:: @ 82D7C44 + .incbin "baserom.gba", 0x2D7C44, 0x684 + +gMapData_CinnabarIsland_Gym:: @ 82D82C8 + .incbin "baserom.gba", 0x2D82C8, 0x3E4 + +gMapData_ViridianCity_Gym:: @ 82D86AC + .incbin "baserom.gba", 0x2D86AC, 0x33C + +gMapData_UnknownMap_00_00:: @ 82D89E8 + .incbin "baserom.gba", 0x2D89E8, 0xFC + +gMapData_UnknownMap_00_01:: @ 82D8AE4 + .incbin "baserom.gba", 0x2D8AE4, 0x1B4 + +gMapData_UnknownMap_00_02:: @ 82D8C98 + .incbin "baserom.gba", 0x2D8C98, 0x120 + +gMapData_UnknownMap_00_03:: @ 82D8DB8 + .incbin "baserom.gba", 0x2D8DB8, 0xC8 + +gMapData_FuchsiaCity_SafariZone_Entrance:: @ 82D8E80 + .incbin "baserom.gba", 0x2D8E80, 0x4640 + +gMapData_PalletTown:: @ 82DD4C0 + .incbin "baserom.gba", 0x2DD4C0, 0xF24 + +gMapData_ViridianCity:: @ 82DE3E4 + .incbin "baserom.gba", 0x2DE3E4, 0xF24 + +gMapData_PewterCity:: @ 82DF308 + .incbin "baserom.gba", 0x2DF308, 0xF24 + +gMapData_CeruleanCity:: @ 82E022C + .incbin "baserom.gba", 0x2E022C, 0x3E4 + +gMapData_LavenderTown:: @ 82E0610 + .incbin "baserom.gba", 0x2E0610, 0xF24 + +gMapData_VermilionCity:: @ 82E1534 + .incbin "baserom.gba", 0x2E1534, 0x12E4 + +gMapData_CeladonCity:: @ 82E2818 + .incbin "baserom.gba", 0x2E2818, 0xF24 + +gMapData_FuchsiaCity:: @ 82E373C + .incbin "baserom.gba", 0x2E373C, 0x3E4 + +gMapData_CinnabarIsland:: @ 82E3B20 + .incbin "baserom.gba", 0x2E3B20, 0x3E4 + +gMapData_IndigoPlateau_Exterior:: @ 82E3F04 + .incbin "baserom.gba", 0x2E3F04, 0xF24 + +gMapData_SaffronCity:: @ 82E4E28 + .incbin "baserom.gba", 0x2E4E28, 0x7A4 + +gMapData_Route1:: @ 82E55CC gUnknown_82E55CC:: @ 82E55CC - .incbin "baserom.gba", 0x2E55CC, 0x695C0 + .incbin "baserom.gba", 0x2E55CC, 0xF24 + +gMapData_Route2:: @ 82E64F0 + .incbin "baserom.gba", 0x2E64F0, 0xD44 + +gMapData_Route3:: @ 82E7234 + .incbin "baserom.gba", 0x2E7234, 0x1104 + +gMapData_Route4:: @ 82E8338 + .incbin "baserom.gba", 0x2E8338, 0xF24 + +gMapData_Route5:: @ 82E925C + .incbin "baserom.gba", 0x2E925C, 0x7A4 + +gMapData_Route6:: @ 82E9A00 + .incbin "baserom.gba", 0x2E9A00, 0x3E4 + +gMapData_Route7:: @ 82E9DE4 + .incbin "baserom.gba", 0x2E9DE4, 0xB64 + +gMapData_Route8:: @ 82EA948 + .incbin "baserom.gba", 0x2EA948, 0xB64 + +gMapData_Route9:: @ 82EB4AC + .incbin "baserom.gba", 0x2EB4AC, 0xF24 + +gMapData_Route10:: @ 82EC3D0 + .incbin "baserom.gba", 0x2EC3D0, 0xB64 + +gMapData_Route11:: @ 82ECF34 + .incbin "baserom.gba", 0x2ECF34, 0x16A4 + +gMapData_Route12:: @ 82EE5D8 + .incbin "baserom.gba", 0x2EE5D8, 0xB64 + +gMapData_Route13:: @ 82EF13C + .incbin "baserom.gba", 0x2EF13C, 0xB64 + +gMapData_Route14:: @ 82EFCA0 + .incbin "baserom.gba", 0x2EFCA0, 0xB64 + +gMapData_Route15:: @ 82F0804 + .incbin "baserom.gba", 0x2F0804, 0x7A4 + +gMapData_Route16:: @ 82F0FA8 + .incbin "baserom.gba", 0x2F0FA8, 0x1E24 + +gMapData_Route17:: @ 82F2DCC + .incbin "baserom.gba", 0x2F2DCC, 0x984 + +gMapData_Route18:: @ 82F3750 + .incbin "baserom.gba", 0x2F3750, 0xB64 + +gMapData_Route19:: @ 82F42B4 + .incbin "baserom.gba", 0x2F42B4, 0x12E4 + +gMapData_Route20:: @ 82F5598 + .incbin "baserom.gba", 0x2F5598, 0x984 + +gMapData_Route21_North:: @ 82F5F1C + .incbin "baserom.gba", 0x2F5F1C, 0x924 + +gMapData_Route22:: @ 82F6840 + .incbin "baserom.gba", 0x2F6840, 0x1E24 + +gMapData_Route23:: @ 82F8664 + .incbin "baserom.gba", 0x2F8664, 0x7A4 + +gMapData_Route24:: @ 82F8E08 + .incbin "baserom.gba", 0x2F8E08, 0xB64 + +gMapData_Route25:: @ 82F996C + .incbin "baserom.gba", 0x2F996C, 0xF24 + +gMapData_MtMoon_1F:: @ 82FA890 + .incbin "baserom.gba", 0x2FA890, 0xF74 + +gMapData_MtMoon_B1F:: @ 82FB804 + .incbin "baserom.gba", 0x2FB804, 0xF24 + +gMapData_MtMoon_B2F:: @ 82FC728 + .incbin "baserom.gba", 0x2FC728, 0x1D44 + +gMapData_ViridianForest:: @ 82FE46C + .incbin "baserom.gba", 0x2FE46C, 0x11A4 + +gMapData_SSAnne_Exterior:: @ 82FF610 + .incbin "baserom.gba", 0x2FF610, 0x53C + +gMapData_SSAnne_1F_Corridor:: @ 82FFB4C + .incbin "baserom.gba", 0x2FFB4C, 0x464 + +gMapData_SSAnne_2F_Corridor:: @ 82FFFB0 + .incbin "baserom.gba", 0x2FFFB0, 0x158 + +gMapData_SSAnne_3F_Corridor:: @ 8300108 + .incbin "baserom.gba", 0x300108, 0x168 + +gMapData_SSAnne_B1F_Corridor:: @ 8300270 + .incbin "baserom.gba", 0x300270, 0x3B4 + +gMapData_SSAnne_Deck:: @ 8300624 + .incbin "baserom.gba", 0x300624, 0x3544 + +gMapData_DiglettsCave_B1F:: @ 8303B68 + .incbin "baserom.gba", 0x303B68, 0x864 + +gMapData_VictoryRoad_1F:: @ 83043CC + .incbin "baserom.gba", 0x3043CC, 0x8E8 + +gMapData_VictoryRoad_2F:: @ 8304CB4 + .incbin "baserom.gba", 0x304CB4, 0x7E0 + +gMapData_VictoryRoad_3F:: @ 8305494 + .incbin "baserom.gba", 0x305494, 0x794 + +gMapData_RocketHideout_B1F:: @ 8305C28 + .incbin "baserom.gba", 0x305C28, 0x5A4 + +gMapData_RocketHideout_B2F:: @ 83061CC + .incbin "baserom.gba", 0x3061CC, 0x4C8 + +gMapData_RocketHideout_B3F:: @ 8306694 + .incbin "baserom.gba", 0x306694, 0x504 + +gMapData_RocketHideout_B4F:: @ 8306B98 + .incbin "baserom.gba", 0x306B98, 0x654 + +gMapData_SilphCo_1F:: @ 83071EC + .incbin "baserom.gba", 0x3071EC, 0x654 + +gMapData_SilphCo_2F:: @ 8307840 + .incbin "baserom.gba", 0x307840, 0x654 + +gMapData_SilphCo_3F:: @ 8307E94 + .incbin "baserom.gba", 0x307E94, 0x654 + +gMapData_SilphCo_4F:: @ 83084E8 + .incbin "baserom.gba", 0x3084E8, 0x654 + +gMapData_SilphCo_5F:: @ 8308B3C + .incbin "baserom.gba", 0x308B3C, 0x4C0 + +gMapData_SilphCo_6F:: @ 8308FFC + .incbin "baserom.gba", 0x308FFC, 0x4C0 + +gMapData_SilphCo_7F:: @ 83094BC + .incbin "baserom.gba", 0x3094BC, 0x4C0 + +gMapData_SilphCo_8F:: @ 830997C + .incbin "baserom.gba", 0x30997C, 0x4C0 + +gMapData_SilphCo_9F:: @ 8309E3C + .incbin "baserom.gba", 0x309E3C, 0x2AC + +gMapData_SilphCo_10F:: @ 830A0E8 + .incbin "baserom.gba", 0x30A0E8, 0x2CC + +gMapData_SilphCo_11F:: @ 830A3B4 + .incbin "baserom.gba", 0x30A3B4, 0xA88 + +gMapData_PokemonMansion_1F:: @ 830AE3C + .incbin "baserom.gba", 0x30AE3C, 0xB6C + +gMapData_PokemonMansion_2F:: @ 830B9A8 + .incbin "baserom.gba", 0x30B9A8, 0xA88 + +gMapData_PokemonMansion_3F:: @ 830C430 + .incbin "baserom.gba", 0x30C430, 0xA88 + +gMapData_PokemonMansion_B1F:: @ 830CEB8 + .incbin "baserom.gba", 0x30CEB8, 0xE80 + +gMapData_SafariZone_Center:: @ 830DD38 + .incbin "baserom.gba", 0x30DD38, 0xEEC + +gMapData_SafariZone_East:: @ 830EC24 + .incbin "baserom.gba", 0x30EC24, 0x11F8 + +gMapData_SafariZone_North:: @ 830FE1C + .incbin "baserom.gba", 0x30FE1C, 0xDA8 + +gMapData_SafariZone_West:: @ 8310BC4 + .incbin "baserom.gba", 0x310BC4, 0x754 + +gMapData_CeruleanCave_1F:: @ 8311318 + .incbin "baserom.gba", 0x311318, 0x754 + +gMapData_CeruleanCave_2F:: @ 8311A6C + .incbin "baserom.gba", 0x311A6C, 0x754 + +gMapData_CeruleanCave_B1F:: @ 83121C0 + .incbin "baserom.gba", 0x3121C0, 0xF24 + +gMapData_RockTunnel_1F:: @ 83130E4 + .incbin "baserom.gba", 0x3130E4, 0xF24 + +gMapData_RockTunnel_B1F:: @ 8314008 + .incbin "baserom.gba", 0x314008, 0x744 + +gMapData_SeafoamIslands_1F:: @ 831474C + .incbin "baserom.gba", 0x31474C, 0x6F8 + +gMapData_SeafoamIslands_B1F:: @ 8314E44 + .incbin "baserom.gba", 0x314E44, 0x744 + +gMapData_SeafoamIslands_B2F:: @ 8315588 + .incbin "baserom.gba", 0x315588, 0x744 + +gMapData_SeafoamIslands_B3F:: @ 8315CCC + .incbin "baserom.gba", 0x315CCC, 0x744 + +gMapData_SeafoamIslands_B4F:: @ 8316410 + .incbin "baserom.gba", 0x316410, 0x3E4 + +gMapData_PokemonTower_1F:: @ 83167F4 + .incbin "baserom.gba", 0x3167F4, 0x3E4 + +gMapData_PokemonTower_2F:: @ 8316BD8 + .incbin "baserom.gba", 0x316BD8, 0x3E4 + +gMapData_PokemonTower_3F:: @ 8316FBC + .incbin "baserom.gba", 0x316FBC, 0x3E4 + +gMapData_PokemonTower_4F:: @ 83173A0 + .incbin "baserom.gba", 0x3173A0, 0x3E4 + +gMapData_PokemonTower_5F:: @ 8317784 + .incbin "baserom.gba", 0x317784, 0x3E4 + +gMapData_PokemonTower_6F:: @ 8317B68 + .incbin "baserom.gba", 0x317B68, 0x3E4 + +gMapData_PokemonTower_7F:: @ 8317F4C + .incbin "baserom.gba", 0x317F4C, 0xF74 + +gMapData_PowerPlant:: @ 8318EC0 + .incbin "baserom.gba", 0x318EC0, 0x170 + +gMapData_Route25_SeaCottage:: @ 8319030 + .incbin "baserom.gba", 0x319030, 0x1E4 + +gMapData_SSAnne_Kitchen:: @ 8319214 + .incbin "baserom.gba", 0x319214, 0xD8 + +gMapData_SSAnne_CaptainsOffice:: @ 83192EC + .incbin "baserom.gba", 0x3192EC, 0x128 + +gMapData_UndergroundPath_NorthEntrance:: @ 8319414 +gMapData_UndergroundPath_SouthEntrance:: @ 8319414 +gMapData_UndergroundPath_WestEntrance:: @ 8319414 +gMapData_UndergroundPath_EastEntrance:: @ 8319414 + .incbin "baserom.gba", 0x319414, 0x484 + +gMapData_UndergroundPath_EastWestTunnel:: @ 8319898 + .incbin "baserom.gba", 0x319898, 0x414 + +gMapData_UndergroundPath_NorthSouthTunnel:: @ 8319CAC + .incbin "baserom.gba", 0x319CAC, 0x144 + +gMapData_Route12_NorthEntrance_1F:: @ 8319DF0 + .incbin "baserom.gba", 0x319DF0, 0x84 + +gMapData_SSAnne_1F_Room1:: @ 8319E74 +gMapData_SSAnne_1F_Room2:: @ 8319E74 +gMapData_SSAnne_1F_Room3:: @ 8319E74 +gMapData_SSAnne_1F_Room4:: @ 8319E74 +gMapData_SSAnne_1F_Room5:: @ 8319E74 +gMapData_SSAnne_1F_Room7:: @ 8319E74 +gMapData_SSAnne_1F_Room6:: @ 8319E74 + .incbin "baserom.gba", 0x319E74, 0x90 + +gMapData_SSAnne_2F_Room1:: @ 8319F04 +gMapData_SSAnne_2F_Room2:: @ 8319F04 +gMapData_SSAnne_2F_Room3:: @ 8319F04 +gMapData_SSAnne_2F_Room4:: @ 8319F04 +gMapData_SSAnne_2F_Room5:: @ 8319F04 +gMapData_SSAnne_2F_Room6:: @ 8319F04 +gMapData_SSAnne_B1F_Room1:: @ 8319F04 +gMapData_SSAnne_B1F_Room2:: @ 8319F04 +gMapData_SSAnne_B1F_Room3:: @ 8319F04 +gMapData_SSAnne_B1F_Room4:: @ 8319F04 +gMapData_SSAnne_B1F_Room5:: @ 8319F04 + .incbin "baserom.gba", 0x319F04, 0x6C + +gMapData_CeladonCity_DepartmentStore_Elevator:: @ 8319F70 + .incbin "baserom.gba", 0x319F70, 0x28C + +gMapData_PewterCity_Museum_1F:: @ 831A1FC + .incbin "baserom.gba", 0x31A1FC, 0x1A0 + +gMapData_PewterCity_Museum_2F:: @ 831A39C + .incbin "baserom.gba", 0x31A39C, 0xD8 + +gMapData_CeruleanCity_House2:: @ 831A474 + .incbin "baserom.gba", 0x31A474, 0xEC + +gMapData_CeruleanCity_House1:: @ 831A560 + .incbin "baserom.gba", 0x31A560, 0x27C + +gMapData_CeladonCity_Condominiums_1F:: @ 831A7DC + .incbin "baserom.gba", 0x31A7DC, 0x27C + +gMapData_CeladonCity_Condominiums_2F:: @ 831AA58 + .incbin "baserom.gba", 0x31AA58, 0x27C + +gMapData_CeladonCity_Condominiums_3F:: @ 831ACD4 + .incbin "baserom.gba", 0x31ACD4, 0x2A8 + +gMapData_CeladonCity_Condominiums_Roof:: @ 831AF7C + .incbin "baserom.gba", 0x31AF7C, 0xD8 + +gMapData_CeladonCity_Condominiums_RoofRoom:: @ 831B054 + .incbin "baserom.gba", 0x31B054, 0xD8 + +gMapData_CeladonCity_GameCorner_PrizeRoom:: @ 831B12C + .incbin "baserom.gba", 0x31B12C, 0x170 + +gMapData_CeladonCity_Restaurant:: @ 831B29C + .incbin "baserom.gba", 0x31B29C, 0x19C + +gMapData_CeladonCity_Hotel:: @ 831B438 + .incbin "baserom.gba", 0x31B438, 0x1C4 + +gMapData_CeladonCity_DepartmentStore_1F:: @ 831B5FC + .incbin "baserom.gba", 0x31B5FC, 0x1AC + +gMapData_CeladonCity_DepartmentStore_2F:: @ 831B7A8 + .incbin "baserom.gba", 0x31B7A8, 0x1AC + +gMapData_CeladonCity_DepartmentStore_3F:: @ 831B954 + .incbin "baserom.gba", 0x31B954, 0x1AC + +gMapData_CeladonCity_DepartmentStore_4F:: @ 831BB00 + .incbin "baserom.gba", 0x31BB00, 0x1AC + +gMapData_CeladonCity_DepartmentStore_5F:: @ 831BCAC + .incbin "baserom.gba", 0x31BCAC, 0x238 + +gMapData_CeladonCity_DepartmentStore_Roof:: @ 831BEE4 + .incbin "baserom.gba", 0x31BEE4, 0x144 + +gMapData_SafariZone_Building1:: @ 831C028 +gMapData_SafariZone_Building2:: @ 831C028 +gMapData_SafariZone_Building3:: @ 831C028 +gMapData_SafariZone_Building4:: @ 831C028 + .incbin "baserom.gba", 0x31C028, 0x144 + +gMapData_SafariZone_SecretHouse:: @ 831C16C + .incbin "baserom.gba", 0x31C16C, 0x1DC + +gMapData_FuchsiaCity_ZooBuilding:: @ 831C348 + .incbin "baserom.gba", 0x31C348, 0x144 + +gMapData_FuchsiaCity_Building1:: @ 831C48C + .incbin "baserom.gba", 0x31C48C, 0xEC + +gMapData_FuchsiaCity_House2:: @ 831C578 + .incbin "baserom.gba", 0x31C578, 0x28C + +gMapData_CinnabarIsland_PokemonLab_Entrance:: @ 831C804 + .incbin "baserom.gba", 0x31C804, 0x170 + +gMapData_CinnabarIsland_PokemonLab_Lounge:: @ 831C974 + .incbin "baserom.gba", 0x31C974, 0x170 + +gMapData_CinnabarIsland_PokemonLab_ResearchRoom:: @ 831CAE4 + .incbin "baserom.gba", 0x31CAE4, 0x170 + +gMapData_CinnabarIsland_PokemonLab_ExperimentRoom:: @ 831CC54 + .incbin "baserom.gba", 0x31CC54, 0x1C80 + +gMapData_SaffronCity_Duplicate:: @ 831E8D4 + .incbin "baserom.gba", 0x31E8D4, 0xEC + +gMapData_Route5_SouthEntrance:: @ 831E9C0 +gMapData_Route6_NorthEntrance:: @ 831E9C0 + .incbin "baserom.gba", 0x31E9C0, 0x110 + +gMapData_Route7_EastEntrance:: @ 831EAD0 +gMapData_Route8_WestEntrance:: @ 831EAD0 + .incbin "baserom.gba", 0x31EAD0, 0xC4 + +gMapData_DiglettsCave_NorthEntrance:: @ 831EB94 + .incbin "baserom.gba", 0x31EB94, 0xC4 + +gMapData_DiglettsCave_SouthEntrance:: @ 831EC58 + .incbin "baserom.gba", 0x31EC58, 0x3A8 + +gMapData_IndigoPlateau_PokemonCenter_1F:: @ 831F000 + .incbin "baserom.gba", 0x31F000, 0x178 + +gMapData_PokemonLeague_LoreleisRoom:: @ 831F178 + .incbin "baserom.gba", 0x31F178, 0x178 + +gMapData_PokemonLeague_BrunosRoom:: @ 831F2F0 + .incbin "baserom.gba", 0x31F2F0, 0x178 + +gMapData_PokemonLeague_AgathasRoom:: @ 831F468 + .incbin "baserom.gba", 0x31F468, 0x564 + +gMapData_PokemonLeague_LancesRoom:: @ 831F9CC + .incbin "baserom.gba", 0x31F9CC, 0x22C + +gMapData_PokemonLeague_ChampionsRoom:: @ 831FBF8 + .incbin "baserom.gba", 0x31FBF8, 0x144 + +gMapData_PokemonLeague_HallOfFame:: @ 831FD3C + .incbin "baserom.gba", 0x31FD3C, 0x984 + +gMapData_Route21_South:: @ 83206C0 + .incbin "baserom.gba", 0x3206C0, 0x144 + +gMapData_Route11_EastEntrance_2F:: @ 8320804 +gMapData_Route12_NorthEntrance_2F:: @ 8320804 +gMapData_Route15_WestEntrance_2F:: @ 8320804 +gMapData_Route16_NorthEntrance_2F:: @ 8320804 +gMapData_Route18_EastEntrance_2F:: @ 8320804 + .incbin "baserom.gba", 0x320804, 0x18C + +gMapData_Route2_ViridianForest_SouthEntrance:: @ 8320990 +gMapData_Route2_EastBuilding:: @ 8320990 +gMapData_Route2_ViridianForest_NorthEntrance:: @ 8320990 + .incbin "baserom.gba", 0x320990, 0x18C + +gMapData_Route22_NorthEntrance:: @ 8320B1C + .incbin "baserom.gba", 0x320B1C, 0x1F8 + +gMapData_Route16_NorthEntrance_1F:: @ 8320D14 + .incbin "baserom.gba", 0x320D14, 0x15C + +gMapData_Route11_EastEntrance_1F:: @ 8320E70 +gMapData_Route15_WestEntrance_1F:: @ 8320E70 +gMapData_Route18_EastEntrance_1F:: @ 8320E70 + .incbin "baserom.gba", 0x320E70, 0x6C + +gMapData_RocketHideout_Elevator:: @ 8320EDC + .incbin "baserom.gba", 0x320EDC, 0x128 + +gMapData_SaffronCity_House1_1F:: @ 8321004 + .incbin "baserom.gba", 0x321004, 0xFC + +gMapData_SaffronCity_House1_2F:: @ 8321100 + .incbin "baserom.gba", 0x321100, 0x1C4 + +gMapData_SaffronCity_Dojo:: @ 83212C4 + .incbin "baserom.gba", 0x3212C4, 0x6C + +gMapData_SilphCo_Elevator:: @ 8321330 + .incbin "baserom.gba", 0x321330, 0x3E4 + +gMapData_OneIsland:: @ 8321714 + .incbin "baserom.gba", 0x321714, 0x7A4 + +gMapData_TwoIsland:: @ 8321EB8 + .incbin "baserom.gba", 0x321EB8, 0x7A4 + +gMapData_ThreeIsland:: @ 832265C + .incbin "baserom.gba", 0x32265C, 0xF24 + +gMapData_FourIsland:: @ 8323580 + .incbin "baserom.gba", 0x323580, 0x3E4 + +gMapData_FiveIsland:: @ 8323964 + .incbin "baserom.gba", 0x323964, 0x3E4 + +gMapData_SevenIsland:: @ 8323D48 + .incbin "baserom.gba", 0x323D48, 0x5C4 + +gMapData_SixIsland:: @ 832430C + .incbin "baserom.gba", 0x32430C, 0x1A64 + +gMapData_OneIsland_KindleRoad:: @ 8325D70 + .incbin "baserom.gba", 0x325D70, 0x7A4 + +gMapData_OneIsland_TreasureBeach:: @ 8326514 + .incbin "baserom.gba", 0x326514, 0x7A4 + +gMapData_TwoIsland_CapeBrink:: @ 8326CB8 + .incbin "baserom.gba", 0x326CB8, 0xF24 + +gMapData_ThreeIsland_BondBridge:: @ 8327BDC + .incbin "baserom.gba", 0x327BDC, 0x7A4 + +gMapData_ThreeIsland_Port:: @ 8328380 + .incbin "baserom.gba", 0x328380, 0x28 + +gMapData_UnknownMap_03_50:: @ 83283A8 + .incbin "baserom.gba", 0x3283A8, 0x28 + +gMapData_UnknownMap_03_51:: @ 83283D0 + .incbin "baserom.gba", 0x3283D0, 0xD44 + +gMapData_UnknownMap_03_52:: @ 8329114 + .incbin "baserom.gba", 0x329114, 0xB64 + +gMapData_UnknownMap_03_53:: @ 8329C78 + .incbin "baserom.gba", 0x329C78, 0xB64 + +gMapData_FiveIsland_ResortGorgeous:: @ 832A7DC + .incbin "baserom.gba", 0x32A7DC, 0xB64 + +gMapData_FiveIsland_WaterLabyrinth:: @ 832B340 + .incbin "baserom.gba", 0x32B340, 0x7A4 + +gMapData_FiveIsland_Meadow:: @ 832BAE4 + .incbin "baserom.gba", 0x32BAE4, 0xB64 + +gMapData_FiveIsland_MemorialPillar:: @ 832C648 + .incbin "baserom.gba", 0x32C648, 0xF24 + +gMapData_SixIsland_OutcastIsland:: @ 832D56C + .incbin "baserom.gba", 0x32D56C, 0xB64 + +gMapData_SixIsland_GreenPath:: @ 832E0D0 + .incbin "baserom.gba", 0x32E0D0, 0x12E4 + +gMapData_SixIsland_WaterPath:: @ 832F3B4 + .incbin "baserom.gba", 0x32F3B4, 0xF24 + +gMapData_SixIsland_RuinValley:: @ 83302D8 + .incbin "baserom.gba", 0x3302D8, 0x25A4 + +gMapData_SevenIsland_TrainerTower:: @ 833287C + .incbin "baserom.gba", 0x33287C, 0x7A4 + +gMapData_SevenIsland_SevaultCanyon_Entrance:: @ 8333020 + .incbin "baserom.gba", 0x333020, 0xF24 + +gMapData_SevenIsland_SevaultCanyon:: @ 8333F44 + .incbin "baserom.gba", 0x333F44, 0x16A4 + +gMapData_SevenIsland_TanobyRuins:: @ 83355E8 + .incbin "baserom.gba", 0x3355E8, 0x32DC + +gMapData_UnknownMap_00_04:: @ 83388C4 + .incbin "baserom.gba", 0x3388C4, 0x19C + +gMapData_SaffronCity_PokemonTrainerFanClub:: @ 8338A60 + .incbin "baserom.gba", 0x338A60, 0x1E8 + +gMapData_SevenIsland_House_Room2:: @ 8338C48 + .incbin "baserom.gba", 0x338C48, 0xD8 + +gMapData_ViridianCity_House2:: @ 8338D20 + .incbin "baserom.gba", 0x338D20, 0x570 + +gMapData_MtEmber_RubyPath_B4F:: @ 8339290 + .incbin "baserom.gba", 0x339290, 0x1518 + +gMapData_ThreeIsland_BerryForest:: @ 833A7A8 + .incbin "baserom.gba", 0x33A7A8, 0x1C8 + +gMapData_OneIsland_PokemonCenter_1F:: @ 833A970 + .incbin "baserom.gba", 0x33A970, 0x114 + +gMapData_TwoIsland_JoyfulGameCorner:: @ 833AA84 + .incbin "baserom.gba", 0x33AA84, 0x144 + +gMapData_VermilionCity_PokemonFanClub:: @ 833ABC8 + .incbin "baserom.gba", 0x33ABC8, 0xFC + +gMapData_LavenderTown_VolunteerPokemonHouse:: @ 833ACC4 + .incbin "baserom.gba", 0x33ACC4, 0xFC + +gMapData_Route5_PokemonDayCare:: @ 833ADC0 + .incbin "baserom.gba", 0x33ADC0, 0xEC + +gMapData_ViridianCity_House1:: @ 833AEAC + .incbin "baserom.gba", 0x33AEAC, 0xFC + +gMapData_FourIsland_PokemonDayCare:: @ 833AFA8 + .incbin "baserom.gba", 0x33AFA8, 0x26B8 + +gMapData_MtEmber_Exterior:: @ 833D660 + .incbin "baserom.gba", 0x33D660, 0x368 + +gMapData_MtEmber_Summit:: @ 833D9C8 + .incbin "baserom.gba", 0x33D9C8, 0x240 + +gMapData_MtEmber_SummitPath_1F:: @ 833DC08 + .incbin "baserom.gba", 0x33DC08, 0x1164 + +gMapData_MtEmber_SummitPath_2F:: @ 833ED6C + .incbin "baserom.gba", 0x33ED6C, 0x170 + +gMapData_MtEmber_SummitPath_3F:: @ 833EEDC + .incbin "baserom.gba", 0x33EEDC, 0x428 + +gMapData_SSAnne_Kitchen3:: @ 833F304 + .incbin "baserom.gba", 0x33F304, 0x220 + +gMapData_MtEmber_RubyPath_B1F:: @ 833F524 + .incbin "baserom.gba", 0x33F524, 0x184 + +gMapData_MtEmber_RubyPath_B2F:: @ 833F6A8 + .incbin "baserom.gba", 0x33F6A8, 0x5B8 + +gMapData_MtEmber_RubyPath_B3F:: @ 833FC60 + .incbin "baserom.gba", 0x33FC60, 0x78 + +gMapData_MtEmber_RubyPath_B1F_Stairs:: @ 833FCD8 + .incbin "baserom.gba", 0x33FCD8, 0x84 + +gMapData_MtEmber_RubyPath_B2F_Stairs:: @ 833FD5C + .incbin "baserom.gba", 0x33FD5C, 0x204 + +gMapData_MtEmber_RubyPath_B5F:: @ 833FF60 + .incbin "baserom.gba", 0x33FF60, 0x644 + +gMapData_SSAnne_CaptainsOffice4:: @ 83405A4 + .incbin "baserom.gba", 0x3405A4, 0x894 + +gMapData_FourIsland_IcefallCave_Entrance:: @ 8340E38 + .incbin "baserom.gba", 0x340E38, 0x344 + +gMapData_FourIsland_IcefallCave_1F:: @ 834117C + .incbin "baserom.gba", 0x34117C, 0x3E4 + +gMapData_SSAnne_CaptainsOffice2:: @ 8341560 + .incbin "baserom.gba", 0x341560, 0x538 + +gMapData_SSAnne_CaptainsOffice3:: @ 8341A98 + .incbin "baserom.gba", 0x341A98, 0x2AC + +gMapData_SevenIsland_TrainerTower_Lobby:: @ 8341D44 + .incbin "baserom.gba", 0x341D44, 0x288 + +gMapData_SevenIsland_TrainerTower_1F:: @ 8341FCC + .incbin "baserom.gba", 0x341FCC, 0x288 + +gMapData_SevenIsland_TrainerTower_2F:: @ 8342254 + .incbin "baserom.gba", 0x342254, 0x288 + +gMapData_SevenIsland_TrainerTower_3F:: @ 83424DC + .incbin "baserom.gba", 0x3424DC, 0x288 + +gMapData_SevenIsland_TrainerTower_4F:: @ 8342764 + .incbin "baserom.gba", 0x342764, 0x288 + +gMapData_SevenIsland_TrainerTower_5F:: @ 83429EC + .incbin "baserom.gba", 0x3429EC, 0x288 + +gMapData_SevenIsland_TrainerTower_6F:: @ 8342C74 + .incbin "baserom.gba", 0x342C74, 0x288 + +gMapData_SevenIsland_TrainerTower_7F:: @ 8342EFC + .incbin "baserom.gba", 0x342EFC, 0x288 + +gMapData_SevenIsland_TrainerTower_8F:: @ 8343184 + .incbin "baserom.gba", 0x343184, 0x264 + +gMapData_SevenIsland_TrainerTower_Roof:: @ 83433E8 + .incbin "baserom.gba", 0x3433E8, 0x6C + +gMapData_SevenIsland_TrainerTower_Elevator:: @ 8343454 + .incbin "baserom.gba", 0x343454, 0xEC + +gMapData_CeruleanCity_House5:: @ 8343540 + .incbin "baserom.gba", 0x343540, 0x184 + +gMapData_SSAnne_CaptainsOffice5:: @ 83436C4 + .incbin "baserom.gba", 0x3436C4, 0x144 + +gMapData_SixIsland_DottedHole_B1F:: @ 8343808 + .incbin "baserom.gba", 0x343808, 0x144 + +gMapData_SixIsland_DottedHole_B2F:: @ 834394C + .incbin "baserom.gba", 0x34394C, 0x144 + +gMapData_SixIsland_DottedHole_B3F:: @ 8343A90 + .incbin "baserom.gba", 0x343A90, 0x144 + +gMapData_SSAnne_CaptainsOffice9:: @ 8343BD4 + .incbin "baserom.gba", 0x343BD4, 0x204 + +gMapData_SixIsland_DottedHole_SapphireRoom:: @ 8343DD8 + .incbin "baserom.gba", 0x343DD8, 0x1E0 + +gMapData_BirthIsland_Harbor:: @ 8343FB8 +gMapData_NavelRock_Harbor:: @ 8343FB8 +gMapData_SevenIsland_Harbor:: @ 8343FB8 +gMapData_OneIsland_Harbor:: @ 8343FB8 +gMapData_TwoIsland_Harbor:: @ 8343FB8 +gMapData_FourIsland_Harbor:: @ 8343FB8 +gMapData_FiveIsland_Harbor:: @ 8343FB8 +gMapData_SixIsland_Harbor:: @ 8343FB8 +gMapData_ThreeIsland_Harbor:: @ 8343FB8 + .incbin "baserom.gba", 0x343FB8, 0x150 + +gMapData_OneIsland_PokemonCenter_2F:: @ 8344108 + .incbin "baserom.gba", 0x344108, 0xF28 + +gMapData_SSAnne_1F_Room11:: @ 8345030 + .incbin "baserom.gba", 0x345030, 0x1C8 + +gMapData_ThreeIsland_DunsparceTunnel:: @ 83451F8 + .incbin "baserom.gba", 0x3451F8, 0x2E0 + +gMapData_FiveIsland_LostCave_Entrance:: @ 83454D8 + .incbin "baserom.gba", 0x3454D8, 0x118 + +gMapData_FiveIsland_LostCave_Room1:: @ 83455F0 + .incbin "baserom.gba", 0x3455F0, 0x118 + +gMapData_FiveIsland_LostCave_Room2:: @ 8345708 + .incbin "baserom.gba", 0x345708, 0x118 + +gMapData_FiveIsland_LostCave_Room3:: @ 8345820 + .incbin "baserom.gba", 0x345820, 0x118 + +gMapData_FiveIsland_LostCave_Room4:: @ 8345938 + .incbin "baserom.gba", 0x345938, 0x118 + +gMapData_FiveIsland_LostCave_Room5:: @ 8345A50 + .incbin "baserom.gba", 0x345A50, 0x118 + +gMapData_FiveIsland_LostCave_Room6:: @ 8345B68 + .incbin "baserom.gba", 0x345B68, 0x118 + +gMapData_FiveIsland_LostCave_Room7:: @ 8345C80 + .incbin "baserom.gba", 0x345C80, 0x118 + +gMapData_FiveIsland_LostCave_Room8:: @ 8345D98 + .incbin "baserom.gba", 0x345D98, 0x118 + +gMapData_FiveIsland_LostCave_Room9:: @ 8345EB0 + .incbin "baserom.gba", 0x345EB0, 0x118 + +gMapData_FiveIsland_LostCave_Room10:: @ 8345FC8 + .incbin "baserom.gba", 0x345FC8, 0x118 + +gMapData_FiveIsland_LostCave_Room11:: @ 83460E0 + .incbin "baserom.gba", 0x3460E0, 0x118 + +gMapData_FiveIsland_LostCave_Room12:: @ 83461F8 + .incbin "baserom.gba", 0x3461F8, 0x118 + +gMapData_FiveIsland_LostCave_Room13:: @ 8346310 + .incbin "baserom.gba", 0x346310, 0x118 + +gMapData_FiveIsland_LostCave_Room14:: @ 8346428 + .incbin "baserom.gba", 0x346428, 0x334 + +gMapData_SevenIsland_TanobyRuins_MoneanChamber:: @ 834675C + .incbin "baserom.gba", 0x34675C, 0x334 + +gMapData_SevenIsland_TanobyRuins_LiptooChamber:: @ 8346A90 + .incbin "baserom.gba", 0x346A90, 0x334 + +gMapData_SevenIsland_TanobyRuins_WeepthChamber:: @ 8346DC4 + .incbin "baserom.gba", 0x346DC4, 0x334 + +gMapData_SevenIsland_TanobyRuins_DilfordChamber:: @ 83470F8 + .incbin "baserom.gba", 0x3470F8, 0x334 + +gMapData_SevenIsland_TanobyRuins_ScufibChamber:: @ 834742C + .incbin "baserom.gba", 0x34742C, 0x624 + +gMapData_SSAnne_1F_Room12:: @ 8347A50 + .incbin "baserom.gba", 0x347A50, 0x204 + +gMapData_SevenIsland_SeavaultCanyon_TanobyKey:: @ 8347C54 + .incbin "baserom.gba", 0x347C54, 0x72C + +gMapData_BirthIsland_Exterior:: @ 8348380 + .incbin "baserom.gba", 0x348380, 0x3BC + +gMapData_NavelRock_Exterior:: @ 834873C + .incbin "baserom.gba", 0x34873C, 0x398 + +gMapData_NavelRock_1F:: @ 8348AD4 + .incbin "baserom.gba", 0x348AD4, 0x3DC + +gMapData_NavelRock_Summit:: @ 8348EB0 + .incbin "baserom.gba", 0x348EB0, 0x3EC + +gMapData_NavelRock_Base:: @ 834929C + .incbin "baserom.gba", 0x34929C, 0x88 + +gMapData_NavelRock_SummitPath_2F:: @ 8349324 + .incbin "baserom.gba", 0x349324, 0x88 + +gMapData_NavelRock_SummitPath_3F:: @ 83493AC + .incbin "baserom.gba", 0x3493AC, 0x88 + +gMapData_NavelRock_SummitPath_4F:: @ 8349434 + .incbin "baserom.gba", 0x349434, 0x88 + +gMapData_NavelRock_SummitPath_5F:: @ 83494BC + .incbin "baserom.gba", 0x3494BC, 0x88 + +gMapData_NavelRock_BasePath_B1F:: @ 8349544 + .incbin "baserom.gba", 0x349544, 0x88 + +gMapData_NavelRock_BasePath_B2F:: @ 83495CC + .incbin "baserom.gba", 0x3495CC, 0x88 + +gMapData_NavelRock_BasePath_B3F:: @ 8349654 + .incbin "baserom.gba", 0x349654, 0x88 + +gMapData_NavelRock_BasePath_B4F:: @ 83496DC + .incbin "baserom.gba", 0x3496DC, 0x88 + +gMapData_NavelRock_BasePath_B5F:: @ 8349764 + .incbin "baserom.gba", 0x349764, 0x88 + +gMapData_NavelRock_BasePath_B6F:: @ 83497EC + .incbin "baserom.gba", 0x3497EC, 0x88 + +gMapData_NavelRock_BasePath_B7F:: @ 8349874 + .incbin "baserom.gba", 0x349874, 0x88 + +gMapData_NavelRock_BasePath_B8F:: @ 83498FC + .incbin "baserom.gba", 0x3498FC, 0x88 + +gMapData_NavelRock_BasePath_B9F:: @ 8349984 + .incbin "baserom.gba", 0x349984, 0x88 + +gMapData_NavelRock_BasePath_B10F:: @ 8349A0C + .incbin "baserom.gba", 0x349A0C, 0x88 + +gMapData_NavelRock_BasePath_B11F:: @ 8349A94 + .incbin "baserom.gba", 0x349A94, 0x334 + +gMapData_SevenIsland_TanobyRuins_RixyChamber:: @ 8349DC8 + .incbin "baserom.gba", 0x349DC8, 0x334 + +gMapData_SevenIsland_TanobyRuins_ViapoisChamber:: @ 834A0FC + .incbin "baserom.gba", 0x34A0FC, 0x114 + +gMapData_NavelRock_B1F:: @ 834A210 + .incbin "baserom.gba", 0x34A210, 0x1794 + +gMapData_NavelRock_Fork:: @ 834B9A4 + .incbin "baserom.gba", 0x34B9A4, 0x296C + +gMapData_SevenIsland_House_Room1:: @ 834E310 + .incbin "baserom.gba", 0x34E310, 0x860 + +gMapData_OneIsland_KindleRoad_EmberSpa:: @ 834EB70 + .incbin "baserom.gba", 0x34EB70, 0x1C gUnknown_834EB8C:: @ 834EB8C .incbin "baserom.gba", 0x34EB8C, 0x5FC diff --git a/data/event_scripts.s b/data/event_scripts.s index 95fcf7a92..d03d5ecc1 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -42,14 +42,1286 @@ gStdScripts:: @ 8160450 .4byte gStdScript_81A4E66 gStdScriptsEnd:: -gUnknown_8160478:: @ 8160478 - .incbin "baserom.gba", 0x160478, 0x886C +gMapScripts_UnknownMap_00_00:: @ 8160478 + .incbin "baserom.gba", 0x160478, 0x1 + +gMapScripts_UnknownMap_00_01:: @ 8160479 + .incbin "baserom.gba", 0x160479, 0x1 + +gMapScripts_UnknownMap_00_02:: @ 816047A + .incbin "baserom.gba", 0x16047A, 0x1 + +gMapScripts_UnknownMap_00_03:: @ 816047B + .incbin "baserom.gba", 0x16047B, 0x1 + +gMapScripts_UnknownMap_00_04:: @ 816047C + .incbin "baserom.gba", 0x16047C, 0xA3 + +gMapScripts_ViridianForest:: @ 816051F + .incbin "baserom.gba", 0x16051F, 0xC5 + +gMapScripts_MtMoon_1F:: @ 81605E4 + .incbin "baserom.gba", 0x1605E4, 0xB4 + +gMapScripts_MtMoon_B1F:: @ 8160698 + .incbin "baserom.gba", 0x160698, 0x1 + +gMapScripts_MtMoon_B2F:: @ 8160699 + .incbin "baserom.gba", 0x160699, 0x1A7 + +gMapScripts_SSAnne_Exterior:: @ 8160840 + .incbin "baserom.gba", 0x160840, 0x8B + +gMapScripts_SSAnne_1F_Corridor:: @ 81608CB + .incbin "baserom.gba", 0x1608CB, 0x13 + +gMapScripts_SSAnne_2F_Corridor:: @ 81608DE + .incbin "baserom.gba", 0x1608DE, 0x17F + +gMapScripts_SSAnne_3F_Corridor:: @ 8160A5D + .incbin "baserom.gba", 0x160A5D, 0xA + +gMapScripts_SSAnne_B1F_Corridor:: @ 8160A67 + .incbin "baserom.gba", 0x160A67, 0x1 + +gMapScripts_SSAnne_Deck:: @ 8160A68 + .incbin "baserom.gba", 0x160A68, 0x4A + +gMapScripts_SSAnne_Kitchen:: @ 8160AB2 + .incbin "baserom.gba", 0x160AB2, 0x87 + +gMapScripts_SSAnne_CaptainsOffice:: @ 8160B39 + .incbin "baserom.gba", 0x160B39, 0xA2 + +gMapScripts_SSAnne_1F_Room1:: @ 8160BDB + .incbin "baserom.gba", 0x160BDB, 0xA + +gMapScripts_SSAnne_1F_Room2:: @ 8160BE5 + .incbin "baserom.gba", 0x160BE5, 0x38 + +gMapScripts_SSAnne_1F_Room3:: @ 8160C1D + .incbin "baserom.gba", 0x160C1D, 0x26 + +gMapScripts_SSAnne_1F_Room4:: @ 8160C43 + .incbin "baserom.gba", 0x160C43, 0x23 + +gMapScripts_SSAnne_1F_Room5:: @ 8160C66 + .incbin "baserom.gba", 0x160C66, 0x18 + +gMapScripts_SSAnne_1F_Room7:: @ 8160C7E + .incbin "baserom.gba", 0x160C7E, 0x18 + +gMapScripts_SSAnne_2F_Room1:: @ 8160C96 + .incbin "baserom.gba", 0x160C96, 0x1A + +gMapScripts_SSAnne_2F_Room2:: @ 8160CB0 + .incbin "baserom.gba", 0x160CB0, 0x2F + +gMapScripts_SSAnne_2F_Room3:: @ 8160CDF + .incbin "baserom.gba", 0x160CDF, 0x13 + +gMapScripts_SSAnne_2F_Room4:: @ 8160CF2 + .incbin "baserom.gba", 0x160CF2, 0x2F + +gMapScripts_SSAnne_2F_Room5:: @ 8160D21 + .incbin "baserom.gba", 0x160D21, 0x13 + +gMapScripts_SSAnne_2F_Room6:: @ 8160D34 + .incbin "baserom.gba", 0x160D34, 0x13 + +gMapScripts_SSAnne_B1F_Room1:: @ 8160D47 + .incbin "baserom.gba", 0x160D47, 0x2F + +gMapScripts_SSAnne_B1F_Room2:: @ 8160D76 + .incbin "baserom.gba", 0x160D76, 0x18 + +gMapScripts_SSAnne_B1F_Room3:: @ 8160D8E + .incbin "baserom.gba", 0x160D8E, 0x18 + +gMapScripts_SSAnne_B1F_Room4:: @ 8160DA6 + .incbin "baserom.gba", 0x160DA6, 0x2F + +gMapScripts_SSAnne_B1F_Room5:: @ 8160DD5 + .incbin "baserom.gba", 0x160DD5, 0x1D + +gMapScripts_SSAnne_1F_Room6:: @ 8160DF2 + .incbin "baserom.gba", 0x160DF2, 0x46 + +gMapScripts_UndergroundPath_NorthEntrance:: @ 8160E38 + .incbin "baserom.gba", 0x160E38, 0x7D + +gMapScripts_UndergroundPath_NorthSouthTunnel:: @ 8160EB5 + .incbin "baserom.gba", 0x160EB5, 0xA + +gMapScripts_UndergroundPath_SouthEntrance:: @ 8160EBF + .incbin "baserom.gba", 0x160EBF, 0xA + +gMapScripts_UndergroundPath_WestEntrance:: @ 8160EC9 + .incbin "baserom.gba", 0x160EC9, 0xA + +gMapScripts_UndergroundPath_EastWestTunnel:: @ 8160ED3 + .incbin "baserom.gba", 0x160ED3, 0xA + +gMapScripts_UndergroundPath_EastEntrance:: @ 8160EDD + .incbin "baserom.gba", 0x160EDD, 0xA + +gMapScripts_DiglettsCave_NorthEntrance:: @ 8160EE7 + .incbin "baserom.gba", 0x160EE7, 0xA + +gMapScripts_DiglettsCave_B1F:: @ 8160EF1 + .incbin "baserom.gba", 0x160EF1, 0xA + +gMapScripts_DiglettsCave_SouthEntrance:: @ 8160EFB + .incbin "baserom.gba", 0x160EFB, 0xA + +gMapScripts_VictoryRoad_1F:: @ 8160F05 + .incbin "baserom.gba", 0x160F05, 0x8D + +gMapScripts_VictoryRoad_2F:: @ 8160F92 + .incbin "baserom.gba", 0x160F92, 0x118 + +gMapScripts_VictoryRoad_3F:: @ 81610AA + .incbin "baserom.gba", 0x1610AA, 0xEB + +gMapScripts_RocketHideout_B1F:: @ 8161195 + .incbin "baserom.gba", 0x161195, 0x10C + +gMapScripts_RocketHideout_B2F:: @ 81612A1 + .incbin "baserom.gba", 0x1612A1, 0x18 + +gMapScripts_RocketHideout_B3F:: @ 81612B9 + .incbin "baserom.gba", 0x1612B9, 0x2F + +gMapScripts_RocketHideout_B4F:: @ 81612E8 + .incbin "baserom.gba", 0x1612E8, 0x1F0 + +gMapScripts_RocketHideout_Elevator:: @ 81614D8 + .incbin "baserom.gba", 0x1614D8, 0x14D + +gMapScripts_SilphCo_1F:: @ 8161625 + .incbin "baserom.gba", 0x161625, 0x1C + +gMapScripts_SilphCo_2F:: @ 8161641 + .incbin "baserom.gba", 0x161641, 0x84 + +gMapScripts_SilphCo_3F:: @ 81616C5 + .incbin "baserom.gba", 0x1616C5, 0x71 + +gMapScripts_SilphCo_4F:: @ 8161736 + .incbin "baserom.gba", 0x161736, 0x88 + +gMapScripts_SilphCo_5F:: @ 81617BE + .incbin "baserom.gba", 0x1617BE, 0xC3 + +gMapScripts_SilphCo_6F:: @ 8161881 + .incbin "baserom.gba", 0x161881, 0x103 + +gMapScripts_SilphCo_7F:: @ 8161984 + .incbin "baserom.gba", 0x161984, 0x2DB + +gMapScripts_SilphCo_8F:: @ 8161C5F + .incbin "baserom.gba", 0x161C5F, 0x7F + +gMapScripts_SilphCo_9F:: @ 8161CDE + .incbin "baserom.gba", 0x161CDE, 0xA8 + +gMapScripts_SilphCo_10F:: @ 8161D86 + .incbin "baserom.gba", 0x161D86, 0x68 + +gMapScripts_SilphCo_11F:: @ 8161DEE + .incbin "baserom.gba", 0x161DEE, 0x180 + +gMapScripts_SilphCo_Elevator:: @ 8161F6E + .incbin "baserom.gba", 0x161F6E, 0x28B + +gMapScripts_PokemonMansion_1F:: @ 81621F9 + .incbin "baserom.gba", 0x1621F9, 0x5B + +gMapScripts_PokemonMansion_2F:: @ 8162254 + .incbin "baserom.gba", 0x162254, 0x4D + +gMapScripts_PokemonMansion_3F:: @ 81622A1 + .incbin "baserom.gba", 0x1622A1, 0x5B + +gMapScripts_PokemonMansion_B1F:: @ 81622FC + .incbin "baserom.gba", 0x1622FC, 0x5B + +gMapScripts_SafariZone_Center:: @ 8162357 + .incbin "baserom.gba", 0x162357, 0x25 + +gMapScripts_SafariZone_East:: @ 816237C + .incbin "baserom.gba", 0x16237C, 0x1C + +gMapScripts_SafariZone_North:: @ 8162398 + .incbin "baserom.gba", 0x162398, 0x2E + +gMapScripts_SafariZone_West:: @ 81623C6 + .incbin "baserom.gba", 0x1623C6, 0x25 + +gMapScripts_SafariZone_Building1:: @ 81623EB + .incbin "baserom.gba", 0x1623EB, 0x13 + +gMapScripts_SafariZone_Building2:: @ 81623FE + .incbin "baserom.gba", 0x1623FE, 0x1C + +gMapScripts_SafariZone_Building3:: @ 816241A + .incbin "baserom.gba", 0x16241A, 0x1C + +gMapScripts_SafariZone_Building4:: @ 8162436 + .incbin "baserom.gba", 0x162436, 0x1C + +gMapScripts_SafariZone_SecretHouse:: @ 8162452 + .incbin "baserom.gba", 0x162452, 0x61 + +gMapScripts_CeruleanCave_1F:: @ 81624B3 + .incbin "baserom.gba", 0x1624B3, 0xA + +gMapScripts_CeruleanCave_2F:: @ 81624BD + .incbin "baserom.gba", 0x1624BD, 0x1 + +gMapScripts_CeruleanCave_B1F:: @ 81624BE + .incbin "baserom.gba", 0x1624BE, 0xAE + +gMapScripts_PokemonLeague_LoreleisRoom:: @ 816256C + .incbin "baserom.gba", 0x16256C, 0x119 + +gMapScripts_PokemonLeague_BrunosRoom:: @ 8162685 + .incbin "baserom.gba", 0x162685, 0x18B + +gMapScripts_PokemonLeague_AgathasRoom:: @ 8162810 + .incbin "baserom.gba", 0x162810, 0x11D + +gMapScripts_PokemonLeague_LancesRoom:: @ 816292D + .incbin "baserom.gba", 0x16292D, 0x1B5 + +gMapScripts_PokemonLeague_ChampionsRoom:: @ 8162AE2 + .incbin "baserom.gba", 0x162AE2, 0x26A + +gMapScripts_PokemonLeague_HallOfFame:: @ 8162D4C + .incbin "baserom.gba", 0x162D4C, 0x8A + +gMapScripts_RockTunnel_1F:: @ 8162DD6 + .incbin "baserom.gba", 0x162DD6, 0xB4 + +gMapScripts_RockTunnel_B1F:: @ 8162E8A + .incbin "baserom.gba", 0x162E8A, 0xB9 + +gMapScripts_SeafoamIslands_1F:: @ 8162F43 + .incbin "baserom.gba", 0x162F43, 0xA + +gMapScripts_SeafoamIslands_B1F:: @ 8162F4D + .incbin "baserom.gba", 0x162F4D, 0x1 + +gMapScripts_SeafoamIslands_B2F:: @ 8162F4E + .incbin "baserom.gba", 0x162F4E, 0x1 + +gMapScripts_SeafoamIslands_B3F:: @ 8162F4F + .incbin "baserom.gba", 0x162F4F, 0xDF + +gMapScripts_SeafoamIslands_B4F:: @ 816302E + .incbin "baserom.gba", 0x16302E, 0x207 + +gMapScripts_PokemonTower_1F:: @ 8163235 + .incbin "baserom.gba", 0x163235, 0x50 + +gMapScripts_PokemonTower_2F:: @ 8163285 + .incbin "baserom.gba", 0x163285, 0x121 + +gMapScripts_PokemonTower_3F:: @ 81633A6 + .incbin "baserom.gba", 0x1633A6, 0x46 + +gMapScripts_PokemonTower_4F:: @ 81633EC + .incbin "baserom.gba", 0x1633EC, 0x46 + +gMapScripts_PokemonTower_5F:: @ 8163432 + .incbin "baserom.gba", 0x163432, 0x85 + +gMapScripts_PokemonTower_6F:: @ 81634B7 + .incbin "baserom.gba", 0x1634B7, 0xA2 + +gMapScripts_PokemonTower_7F:: @ 8163559 + .incbin "baserom.gba", 0x163559, 0x20B + +gMapScripts_PowerPlant:: @ 8163764 + .incbin "baserom.gba", 0x163764, 0x187 + +gMapScripts_MtEmber_RubyPath_B4F:: @ 81638EB + .incbin "baserom.gba", 0x1638EB, 0x5B + +gMapScripts_MtEmber_Exterior:: @ 8163946 + .incbin "baserom.gba", 0x163946, 0x1B3 + +gMapScripts_MtEmber_SummitPath_1F:: @ 8163AF9 + .incbin "baserom.gba", 0x163AF9, 0x1 + +gMapScripts_MtEmber_SummitPath_2F:: @ 8163AFA + .incbin "baserom.gba", 0x163AFA, 0x1 + +gMapScripts_MtEmber_SummitPath_3F:: @ 8163AFB + .incbin "baserom.gba", 0x163AFB, 0x1 + +gMapScripts_MtEmber_Summit:: @ 8163AFC + .incbin "baserom.gba", 0x163AFC, 0xAE + +gMapScripts_MtEmber_RubyPath_B5F:: @ 8163BAA + .incbin "baserom.gba", 0x163BAA, 0x9B + +gMapScripts_SSAnne_Kitchen3:: @ 8163C45 + .incbin "baserom.gba", 0x163C45, 0x1 + +gMapScripts_MtEmber_RubyPath_B1F:: @ 8163C46 + .incbin "baserom.gba", 0x163C46, 0x1 + +gMapScripts_MtEmber_RubyPath_B2F:: @ 8163C47 + .incbin "baserom.gba", 0x163C47, 0x1 + +gMapScripts_MtEmber_RubyPath_B3F:: @ 8163C48 + .incbin "baserom.gba", 0x163C48, 0x27 + +gMapScripts_MtEmber_RubyPath_B1F_Stairs:: @ 8163C6F + .incbin "baserom.gba", 0x163C6F, 0x1 + +gMapScripts_MtEmber_RubyPath_B2F_Stairs:: @ 8163C70 + .incbin "baserom.gba", 0x163C70, 0x1 + +gMapScripts_ThreeIsland_BerryForest:: @ 8163C71 + .incbin "baserom.gba", 0x163C71, 0xC9 + +gMapScripts_FourIsland_IcefallCave_Entrance:: @ 8163D3A + .incbin "baserom.gba", 0x163D3A, 0xA + +gMapScripts_FourIsland_IcefallCave_1F:: @ 8163D44 + .incbin "baserom.gba", 0x163D44, 0x3D + +gMapScripts_SSAnne_CaptainsOffice2:: @ 8163D81 + .incbin "baserom.gba", 0x163D81, 0x1 + +gMapScripts_SSAnne_CaptainsOffice3:: @ 8163D82 + .incbin "baserom.gba", 0x163D82, 0x1AC + +gMapScripts_SSAnne_CaptainsOffice4:: @ 8163F2E + .incbin "baserom.gba", 0x163F2E, 0x254 + +gMapScripts_SSAnne_CaptainsOffice5:: @ 8164182 + .incbin "baserom.gba", 0x164182, 0x2E + +gMapScripts_SixIsland_DottedHole_B1F:: @ 81641B0 + .incbin "baserom.gba", 0x1641B0, 0x1 + +gMapScripts_SixIsland_DottedHole_B2F:: @ 81641B1 + .incbin "baserom.gba", 0x1641B1, 0x1 + +gMapScripts_SixIsland_DottedHole_B3F:: @ 81641B2 + .incbin "baserom.gba", 0x1641B2, 0x1 + +gMapScripts_SSAnne_CaptainsOffice9:: @ 81641B3 + .incbin "baserom.gba", 0x1641B3, 0x1 + +gMapScripts_SixIsland_DottedHole_SapphireRoom:: @ 81641B4 + .incbin "baserom.gba", 0x1641B4, 0x3A5 + +gMapScripts_SSAnne_1F_Room11:: @ 8164559 + .incbin "baserom.gba", 0x164559, 0x14B + +gMapScripts_SSAnne_1F_Room12:: @ 81646A4 + .incbin "baserom.gba", 0x1646A4, 0xA + +gMapScripts_NavelRock_Exterior:: @ 81646AE + .incbin "baserom.gba", 0x1646AE, 0xA + +gMapScripts_SevenIsland_TrainerTower_1F:: @ 81646B8 + .incbin "baserom.gba", 0x1646B8, 0x2E + +gMapScripts_SevenIsland_TrainerTower_2F:: @ 81646E6 + .incbin "baserom.gba", 0x1646E6, 0x2E + +gMapScripts_SevenIsland_TrainerTower_3F:: @ 8164714 + .incbin "baserom.gba", 0x164714, 0x2E + +gMapScripts_SevenIsland_TrainerTower_4F:: @ 8164742 + .incbin "baserom.gba", 0x164742, 0x2E + +gMapScripts_SevenIsland_TrainerTower_5F:: @ 8164770 + .incbin "baserom.gba", 0x164770, 0x2E + +gMapScripts_SevenIsland_TrainerTower_6F:: @ 816479E + .incbin "baserom.gba", 0x16479E, 0x2E + +gMapScripts_SevenIsland_TrainerTower_7F:: @ 81647CC + .incbin "baserom.gba", 0x1647CC, 0x2E + +gMapScripts_SevenIsland_TrainerTower_8F:: @ 81647FA + .incbin "baserom.gba", 0x1647FA, 0x2E + +gMapScripts_SevenIsland_TrainerTower_Roof:: @ 8164828 + .incbin "baserom.gba", 0x164828, 0x11 + +gMapScripts_SevenIsland_TrainerTower_Lobby:: @ 8164839 + .incbin "baserom.gba", 0x164839, 0x2BF + +gMapScripts_SevenIsland_TrainerTower_Elevator:: @ 8164AF8 + .incbin "baserom.gba", 0x164AF8, 0xF4 + +gMapScripts_FiveIsland_LostCave_Entrance:: @ 8164BEC + .incbin "baserom.gba", 0x164BEC, 0xA + +gMapScripts_FiveIsland_LostCave_Room1:: @ 8164BF6 + .incbin "baserom.gba", 0x164BF6, 0x18 + +gMapScripts_FiveIsland_LostCave_Room2:: @ 8164C0E + .incbin "baserom.gba", 0x164C0E, 0x1 + +gMapScripts_FiveIsland_LostCave_Room3:: @ 8164C0F + .incbin "baserom.gba", 0x164C0F, 0x1 + +gMapScripts_FiveIsland_LostCave_Room4:: @ 8164C10 + .incbin "baserom.gba", 0x164C10, 0x18 + +gMapScripts_FiveIsland_LostCave_Room5:: @ 8164C28 + .incbin "baserom.gba", 0x164C28, 0x1 + +gMapScripts_FiveIsland_LostCave_Room6:: @ 8164C29 + .incbin "baserom.gba", 0x164C29, 0x1 + +gMapScripts_FiveIsland_LostCave_Room7:: @ 8164C2A + .incbin "baserom.gba", 0x164C2A, 0x1 + +gMapScripts_FiveIsland_LostCave_Room8:: @ 8164C2B + .incbin "baserom.gba", 0x164C2B, 0x1 + +gMapScripts_FiveIsland_LostCave_Room9:: @ 8164C2C + .incbin "baserom.gba", 0x164C2C, 0x1 + +gMapScripts_FiveIsland_LostCave_Room10:: @ 8164C2D + .incbin "baserom.gba", 0x164C2D, 0x9E + +gMapScripts_FiveIsland_LostCave_Room11:: @ 8164CCB + .incbin "baserom.gba", 0x164CCB, 0x1 + +gMapScripts_FiveIsland_LostCave_Room12:: @ 8164CCC + .incbin "baserom.gba", 0x164CCC, 0x1 + +gMapScripts_FiveIsland_LostCave_Room13:: @ 8164CCD + .incbin "baserom.gba", 0x164CCD, 0x1 + +gMapScripts_FiveIsland_LostCave_Room14:: @ 8164CCE + .incbin "baserom.gba", 0x164CCE, 0x1 + +gMapScripts_SevenIsland_TanobyRuins_MoneanChamber:: @ 8164CCF + .incbin "baserom.gba", 0x164CCF, 0xF + +gMapScripts_SevenIsland_TanobyRuins_LiptooChamber:: @ 8164CDE + .incbin "baserom.gba", 0x164CDE, 0xC + +gMapScripts_SevenIsland_TanobyRuins_WeepthChamber:: @ 8164CEA + .incbin "baserom.gba", 0x164CEA, 0xC + +gMapScripts_SevenIsland_TanobyRuins_DilfordChamber:: @ 8164CF6 + .incbin "baserom.gba", 0x164CF6, 0xC + +gMapScripts_SevenIsland_TanobyRuins_ScufibChamber:: @ 8164D02 + .incbin "baserom.gba", 0x164D02, 0xC + +gMapScripts_SevenIsland_TanobyRuins_RixyChamber:: @ 8164D0E + .incbin "baserom.gba", 0x164D0E, 0xC + +gMapScripts_SevenIsland_TanobyRuins_ViapoisChamber:: @ 8164D1A + .incbin "baserom.gba", 0x164D1A, 0xC + +gMapScripts_ThreeIsland_DunsparceTunnel:: @ 8164D26 + .incbin "baserom.gba", 0x164D26, 0xA6 + +gMapScripts_SevenIsland_SeavaultCanyon_TanobyKey:: @ 8164DCC + .incbin "baserom.gba", 0x164DCC, 0x1D2 + +gMapScripts_NavelRock_1F:: @ 8164F9E + .incbin "baserom.gba", 0x164F9E, 0x1 + +gMapScripts_NavelRock_Summit:: @ 8164F9F + .incbin "baserom.gba", 0x164F9F, 0x148 + +gMapScripts_NavelRock_Base:: @ 81650E7 + .incbin "baserom.gba", 0x1650E7, 0x10B + +gMapScripts_NavelRock_SummitPath_2F:: @ 81651F2 + .incbin "baserom.gba", 0x1651F2, 0x1 + +gMapScripts_NavelRock_SummitPath_3F:: @ 81651F3 + .incbin "baserom.gba", 0x1651F3, 0x1 + +gMapScripts_NavelRock_SummitPath_4F:: @ 81651F4 + .incbin "baserom.gba", 0x1651F4, 0x1 + +gMapScripts_NavelRock_SummitPath_5F:: @ 81651F5 + .incbin "baserom.gba", 0x1651F5, 0x1 + +gMapScripts_NavelRock_BasePath_B1F:: @ 81651F6 + .incbin "baserom.gba", 0x1651F6, 0x1 + +gMapScripts_NavelRock_BasePath_B2F:: @ 81651F7 + .incbin "baserom.gba", 0x1651F7, 0x1 + +gMapScripts_NavelRock_BasePath_B3F:: @ 81651F8 + .incbin "baserom.gba", 0x1651F8, 0x1 + +gMapScripts_NavelRock_BasePath_B4F:: @ 81651F9 + .incbin "baserom.gba", 0x1651F9, 0x1 + +gMapScripts_NavelRock_BasePath_B5F:: @ 81651FA + .incbin "baserom.gba", 0x1651FA, 0x1 + +gMapScripts_NavelRock_BasePath_B6F:: @ 81651FB + .incbin "baserom.gba", 0x1651FB, 0x1 + +gMapScripts_NavelRock_BasePath_B7F:: @ 81651FC + .incbin "baserom.gba", 0x1651FC, 0x1 + +gMapScripts_NavelRock_BasePath_B8F:: @ 81651FD + .incbin "baserom.gba", 0x1651FD, 0x1 + +gMapScripts_NavelRock_BasePath_B9F:: @ 81651FE + .incbin "baserom.gba", 0x1651FE, 0x1 + +gMapScripts_NavelRock_BasePath_B10F:: @ 81651FF + .incbin "baserom.gba", 0x1651FF, 0x1 + +gMapScripts_NavelRock_BasePath_B11F:: @ 8165200 + .incbin "baserom.gba", 0x165200, 0x1 + +gMapScripts_NavelRock_B1F:: @ 8165201 + .incbin "baserom.gba", 0x165201, 0x1 + +gMapScripts_NavelRock_Fork:: @ 8165202 + .incbin "baserom.gba", 0x165202, 0x1 + +gMapScripts_BirthIsland_Exterior:: @ 8165203 + .incbin "baserom.gba", 0x165203, 0x158 + +gMapScripts_OneIsland_KindleRoad_EmberSpa:: @ 816535B + .incbin "baserom.gba", 0x16535B, 0x8B + +gMapScripts_BirthIsland_Harbor:: @ 81653E6 + .incbin "baserom.gba", 0x1653E6, 0x3A + +gMapScripts_NavelRock_Harbor:: @ 8165420 + .incbin "baserom.gba", 0x165420, 0x3A + +gMapScripts_PalletTown:: @ 816545A + .incbin "baserom.gba", 0x16545A, 0x479 + +gMapScripts_ViridianCity:: @ 81658D3 + .incbin "baserom.gba", 0x1658D3, 0x2BB + +gMapScripts_PewterCity:: @ 8165B8E + .incbin "baserom.gba", 0x165B8E, 0x8E3 + +gMapScripts_CeruleanCity:: @ 8166471 + .incbin "baserom.gba", 0x166471, 0x3FA + +gMapScripts_LavenderTown:: @ 816686B + .incbin "baserom.gba", 0x16686B, 0x71 + +gMapScripts_VermilionCity:: @ 81668DC + .incbin "baserom.gba", 0x1668DC, 0x3B3 + +gMapScripts_CeladonCity:: @ 8166C8F + .incbin "baserom.gba", 0x166C8F, 0xE6 + +gMapScripts_FuchsiaCity:: @ 8166D75 + .incbin "baserom.gba", 0x166D75, 0x161 + +gMapScripts_CinnabarIsland:: @ 8166ED6 + .incbin "baserom.gba", 0x166ED6, 0x365 + +gMapScripts_IndigoPlateau_Exterior:: @ 816723B + .incbin "baserom.gba", 0x16723B, 0x124 + +gMapScripts_SaffronCity_Duplicate:: @ 816735F + .incbin "baserom.gba", 0x16735F, 0x124 + +gMapScripts_SaffronCity:: @ 8167483 + .incbin "baserom.gba", 0x167483, 0x1 + +gMapScripts_OneIsland:: @ 8167484 + .incbin "baserom.gba", 0x167484, 0xE0 + +gMapScripts_TwoIsland:: @ 8167564 + .incbin "baserom.gba", 0x167564, 0x249 + +gMapScripts_ThreeIsland:: @ 81677AD + .incbin "baserom.gba", 0x1677AD, 0x501 + +gMapScripts_FourIsland:: @ 8167CAE + .incbin "baserom.gba", 0x167CAE, 0x1E0 + +gMapScripts_FiveIsland:: @ 8167E8E + .incbin "baserom.gba", 0x167E8E, 0x25 + +gMapScripts_SevenIsland:: @ 8167EB3 + .incbin "baserom.gba", 0x167EB3, 0x25 + +gMapScripts_SixIsland:: @ 8167ED8 + .incbin "baserom.gba", 0x167ED8, 0x25 + +gMapScripts_Route1:: @ 8167EFD + .incbin "baserom.gba", 0x167EFD, 0x67 + +gMapScripts_Route2:: @ 8167F64 + .incbin "baserom.gba", 0x167F64, 0x13 + +gMapScripts_Route3:: @ 8167F77 + .incbin "baserom.gba", 0x167F77, 0x13 + +gMapScripts_Route4:: @ 8167F8A + .incbin "baserom.gba", 0x167F8A, 0x1D + +gMapScripts_Route5:: @ 8167FA7 + .incbin "baserom.gba", 0x167FA7, 0xA + +gMapScripts_Route6:: @ 8167FB1 + .incbin "baserom.gba", 0x167FB1, 0xA + +gMapScripts_Route7:: @ 8167FBB + .incbin "baserom.gba", 0x167FBB, 0xA + +gMapScripts_Route8:: @ 8167FC5 + .incbin "baserom.gba", 0x167FC5, 0xA + +gMapScripts_Route9:: @ 8167FCF + .incbin "baserom.gba", 0x167FCF, 0xA + +gMapScripts_Route10:: @ 8167FD9 + .incbin "baserom.gba", 0x167FD9, 0x1D + +gMapScripts_Route11:: @ 8167FF6 + .incbin "baserom.gba", 0x167FF6, 0xA + +gMapScripts_Route12:: @ 8168000 + .incbin "baserom.gba", 0x168000, 0xB5 + +gMapScripts_Route13:: @ 81680B5 + .incbin "baserom.gba", 0x1680B5, 0x1C + +gMapScripts_Route14:: @ 81680D1 + .incbin "baserom.gba", 0x1680D1, 0xA + +gMapScripts_Route15:: @ 81680DB + .incbin "baserom.gba", 0x1680DB, 0xA + +gMapScripts_Route16:: @ 81680E5 + .incbin "baserom.gba", 0x1680E5, 0xDA + +gMapScripts_Route17:: @ 81681BF + .incbin "baserom.gba", 0x1681BF, 0x37 + +gMapScripts_Route18:: @ 81681F6 + .incbin "baserom.gba", 0x1681F6, 0x3B + +gMapScripts_Route19:: @ 8168231 + .incbin "baserom.gba", 0x168231, 0xA + +gMapScripts_Route20:: @ 816823B + .incbin "baserom.gba", 0x16823B, 0x4E + +gMapScripts_Route21_North:: @ 8168289 + .incbin "baserom.gba", 0x168289, 0x1 + +gMapScripts_Route21_South:: @ 816828A + .incbin "baserom.gba", 0x16828A, 0x1 + +gMapScripts_Route22:: @ 816828B + .incbin "baserom.gba", 0x16828B, 0x260 + +gMapScripts_Route23:: @ 81684EB + .incbin "baserom.gba", 0x1684EB, 0x134 + +gMapScripts_Route24:: @ 816861F + .incbin "baserom.gba", 0x16861F, 0x126 + +gMapScripts_Route25:: @ 8168745 + .incbin "baserom.gba", 0x168745, 0x13 + +gMapScripts_OneIsland_KindleRoad:: @ 8168758 + .incbin "baserom.gba", 0x168758, 0x13 + +gMapScripts_OneIsland_TreasureBeach:: @ 816876B + .incbin "baserom.gba", 0x16876B, 0xA + +gMapScripts_TwoIsland_CapeBrink:: @ 8168775 + .incbin "baserom.gba", 0x168775, 0x1 + +gMapScripts_ThreeIsland_BondBridge:: @ 8168776 + .incbin "baserom.gba", 0x168776, 0x13 + +gMapScripts_ThreeIsland_Port:: @ 8168789 + .incbin "baserom.gba", 0x168789, 0x57 + +gMapScripts_UnknownMap_03_50:: @ 81687E0 + .incbin "baserom.gba", 0x1687E0, 0x1 + +gMapScripts_UnknownMap_03_51:: @ 81687E1 + .incbin "baserom.gba", 0x1687E1, 0x1 + +gMapScripts_UnknownMap_03_52:: @ 81687E2 + .incbin "baserom.gba", 0x1687E2, 0x1 + +gMapScripts_UnknownMap_03_53:: @ 81687E3 + .incbin "baserom.gba", 0x1687E3, 0x1 + +gMapScripts_FiveIsland_ResortGorgeous:: @ 81687E4 + .incbin "baserom.gba", 0x1687E4, 0x69 + +gMapScripts_FiveIsland_WaterLabyrinth:: @ 816884D + .incbin "baserom.gba", 0x16884D, 0xE5 + +gMapScripts_FiveIsland_Meadow:: @ 8168932 + .incbin "baserom.gba", 0x168932, 0xA0 + +gMapScripts_FiveIsland_MemorialPillar:: @ 81689D2 + .incbin "baserom.gba", 0x1689D2, 0x143 + +gMapScripts_SixIsland_OutcastIsland:: @ 8168B15 + .incbin "baserom.gba", 0x168B15, 0x18 + +gMapScripts_SixIsland_GreenPath:: @ 8168B2D + .incbin "baserom.gba", 0x168B2D, 0x13 + +gMapScripts_SixIsland_WaterPath:: @ 8168B40 + .incbin "baserom.gba", 0x168B40, 0x13 + +gMapScripts_SixIsland_RuinValley:: @ 8168B53 + .incbin "baserom.gba", 0x168B53, 0x82 + +gMapScripts_SevenIsland_TrainerTower:: @ 8168BD5 + .incbin "baserom.gba", 0x168BD5, 0x1E + +gMapScripts_SevenIsland_SevaultCanyon_Entrance:: @ 8168BF3 + .incbin "baserom.gba", 0x168BF3, 0xA + +gMapScripts_SevenIsland_SevaultCanyon:: @ 8168BFD + .incbin "baserom.gba", 0x168BFD, 0xA + +gMapScripts_SevenIsland_TanobyRuins:: @ 8168C07 + .incbin "baserom.gba", 0x168C07, 0x1 + +gMapScripts_PalletTown_PlayersHouse_1F:: @ 8168C08 + .incbin "baserom.gba", 0x168C08, 0x9B + +gMapScripts_PalletTown_PlayersHouse_2F:: @ 8168CA3 + .incbin "baserom.gba", 0x168CA3, 0x41 gUnknown_8168CE4:: @ 8168CE4 .incbin "baserom.gba", 0x168CE4, 0x33 gUnknown_8168D17:: @ 8168D17 - .incbin "baserom.gba", 0x168D17, 0x3C128 + .incbin "baserom.gba", 0x168D17, 0x10 + +gMapScripts_PalletTown_GarysHouse:: @ 8168D27 + .incbin "baserom.gba", 0x168D27, 0x257 + +gMapScripts_PalletTown_ProfessorOaksLab:: @ 8168F7E + .incbin "baserom.gba", 0x168F7E, 0xF1C + +gMapScripts_ViridianCity_House1:: @ 8169E9A + .incbin "baserom.gba", 0x169E9A, 0x2F + +gMapScripts_ViridianCity_Gym:: @ 8169EC9 + .incbin "baserom.gba", 0x169EC9, 0x1B3 + +gMapScripts_ViridianCity_House2:: @ 816A07C + .incbin "baserom.gba", 0x16A07C, 0x157 + +gMapScripts_ViridianCity_Mart:: @ 816A1D3 + .incbin "baserom.gba", 0x16A1D3, 0xED + +gMapScripts_ViridianCity_PokemonCenter_1F:: @ 816A2C0 + .incbin "baserom.gba", 0x16A2C0, 0x33 + +gMapScripts_ViridianCity_PokemonCenter_2F:: @ 816A2F3 + .incbin "baserom.gba", 0x16A2F3, 0x27 + +gMapScripts_PewterCity_Museum_1F:: @ 816A31A + .incbin "baserom.gba", 0x16A31A, 0x238 + +gMapScripts_PewterCity_Museum_2F:: @ 816A552 + .incbin "baserom.gba", 0x16A552, 0x40 + +gMapScripts_PewterCity_Gym:: @ 816A592 + .incbin "baserom.gba", 0x16A592, 0x13B + +gMapScripts_PewterCity_Mart:: @ 816A6CD + .incbin "baserom.gba", 0x16A6CD, 0x4F + +gMapScripts_PewterCity_House1:: @ 816A71C + .incbin "baserom.gba", 0x16A71C, 0x44 + +gMapScripts_PewterCity_PokemonCenter_1F:: @ 816A760 + .incbin "baserom.gba", 0x16A760, 0x55 + +gMapScripts_PewterCity_PokemonCenter_2F:: @ 816A7B5 + .incbin "baserom.gba", 0x16A7B5, 0x27 + +gMapScripts_PewterCity_House2:: @ 816A7DC + .incbin "baserom.gba", 0x16A7DC, 0x13 + +gMapScripts_CeruleanCity_House1:: @ 816A7EF + .incbin "baserom.gba", 0x16A7EF, 0x186 + +gMapScripts_CeruleanCity_House2:: @ 816A975 + .incbin "baserom.gba", 0x16A975, 0x32 + +gMapScripts_CeruleanCity_House3:: @ 816A9A7 + .incbin "baserom.gba", 0x16A9A7, 0x86 + +gMapScripts_CeruleanCity_PokemonCenter_1F:: @ 816AA2D + .incbin "baserom.gba", 0x16AA2D, 0x4C + +gMapScripts_CeruleanCity_PokemonCenter_2F:: @ 816AA79 + .incbin "baserom.gba", 0x16AA79, 0x27 + +gMapScripts_CeruleanCity_Gym:: @ 816AAA0 + .incbin "baserom.gba", 0x16AAA0, 0x11C + +gMapScripts_CeruleanCity_BikeShop:: @ 816ABBC + .incbin "baserom.gba", 0x16ABBC, 0xE1 + +gMapScripts_CeruleanCity_Mart:: @ 816AC9D + .incbin "baserom.gba", 0x16AC9D, 0x51 + +gMapScripts_CeruleanCity_House4:: @ 816ACEE + .incbin "baserom.gba", 0x16ACEE, 0x161 + +gMapScripts_CeruleanCity_House5:: @ 816AE4F + .incbin "baserom.gba", 0x16AE4F, 0x2A0 + +gMapScripts_LavenderTown_PokemonCenter_1F:: @ 816B0EF + .incbin "baserom.gba", 0x16B0EF, 0x33 + +gMapScripts_LavenderTown_PokemonCenter_2F:: @ 816B122 + .incbin "baserom.gba", 0x16B122, 0x27 + +gMapScripts_LavenderTown_VolunteerPokemonHouse:: @ 816B149 + .incbin "baserom.gba", 0x16B149, 0xE9 + +gMapScripts_LavenderTown_House1:: @ 816B232 + .incbin "baserom.gba", 0x16B232, 0x33 + +gMapScripts_LavenderTown_House2:: @ 816B265 + .incbin "baserom.gba", 0x16B265, 0xEA + +gMapScripts_LavenderTown_Mart:: @ 816B34F + .incbin "baserom.gba", 0x16B34F, 0x57 + +gMapScripts_VermilionCity_House1:: @ 816B3A6 + .incbin "baserom.gba", 0x16B3A6, 0x7E + +gMapScripts_VermilionCity_PokemonCenter_1F:: @ 816B424 + .incbin "baserom.gba", 0x16B424, 0x33 + +gMapScripts_VermilionCity_PokemonCenter_2F:: @ 816B457 + .incbin "baserom.gba", 0x16B457, 0x27 + +gMapScripts_VermilionCity_PokemonFanClub:: @ 816B47E + .incbin "baserom.gba", 0x16B47E, 0x158 + +gMapScripts_VermilionCity_House2:: @ 816B5D6 + .incbin "baserom.gba", 0x16B5D6, 0x7D + +gMapScripts_VermilionCity_Mart:: @ 816B653 + .incbin "baserom.gba", 0x16B653, 0x4B + +gMapScripts_VermilionCity_Gym:: @ 816B69E + .incbin "baserom.gba", 0x16B69E, 0x40B + +gMapScripts_VermilionCity_House3:: @ 816BAA9 + .incbin "baserom.gba", 0x16BAA9, 0x2F + +gMapScripts_CeladonCity_DepartmentStore_1F:: @ 816BAD8 + .incbin "baserom.gba", 0x16BAD8, 0x1C + +gMapScripts_CeladonCity_DepartmentStore_2F:: @ 816BAF4 + .incbin "baserom.gba", 0x16BAF4, 0x90 + +gMapScripts_CeladonCity_DepartmentStore_3F:: @ 816BB84 + .incbin "baserom.gba", 0x16BB84, 0x6A + +gMapScripts_CeladonCity_DepartmentStore_4F:: @ 816BBEE + .incbin "baserom.gba", 0x16BBEE, 0x52 + +gMapScripts_CeladonCity_DepartmentStore_5F:: @ 816BC40 + .incbin "baserom.gba", 0x16BC40, 0x8C + +gMapScripts_CeladonCity_DepartmentStore_Roof:: @ 816BCCC + .incbin "baserom.gba", 0x16BCCC, 0x486 + +gMapScripts_CeladonCity_DepartmentStore_Elevator:: @ 816C152 + .incbin "baserom.gba", 0x16C152, 0x1CE + +gMapScripts_CeladonCity_Condominiums_1F:: @ 816C320 + .incbin "baserom.gba", 0x16C320, 0xB0 + +gMapScripts_CeladonCity_Condominiums_2F:: @ 816C3D0 + .incbin "baserom.gba", 0x16C3D0, 0xA + +gMapScripts_CeladonCity_Condominiums_3F:: @ 816C3DA + .incbin "baserom.gba", 0x16C3DA, 0x7F + +gMapScripts_CeladonCity_Condominiums_Roof:: @ 816C459 + .incbin "baserom.gba", 0x16C459, 0xA + +gMapScripts_CeladonCity_Condominiums_RoofRoom:: @ 816C463 + .incbin "baserom.gba", 0x16C463, 0x189 + +gMapScripts_CeladonCity_PokemonCenter_1F:: @ 816C5EC + .incbin "baserom.gba", 0x16C5EC, 0x33 + +gMapScripts_CeladonCity_PokemonCenter_2F:: @ 816C61F + .incbin "baserom.gba", 0x16C61F, 0x27 + +gMapScripts_CeladonCity_GameCorner:: @ 816C646 + .incbin "baserom.gba", 0x16C646, 0x52F + +gMapScripts_CeladonCity_GameCorner_PrizeRoom:: @ 816CB75 + .incbin "baserom.gba", 0x16CB75, 0x4EB + +gMapScripts_CeladonCity_Gym:: @ 816D060 + .incbin "baserom.gba", 0x16D060, 0x18A + +gMapScripts_CeladonCity_Restaurant:: @ 816D1EA + .incbin "baserom.gba", 0x16D1EA, 0x7D + +gMapScripts_CeladonCity_House1:: @ 816D267 + .incbin "baserom.gba", 0x16D267, 0x1C + +gMapScripts_CeladonCity_Hotel:: @ 816D283 + .incbin "baserom.gba", 0x16D283, 0x25 + +gMapScripts_FuchsiaCity_SafariZone_Entrance:: @ 816D2A8 + .incbin "baserom.gba", 0x16D2A8, 0x238 + +gMapScripts_FuchsiaCity_Mart:: @ 816D4E0 + .incbin "baserom.gba", 0x16D4E0, 0x48 + +gMapScripts_FuchsiaCity_ZooBuilding:: @ 816D528 + .incbin "baserom.gba", 0x16D528, 0x25 + +gMapScripts_FuchsiaCity_Gym:: @ 816D54D + .incbin "baserom.gba", 0x16D54D, 0x178 + +gMapScripts_FuchsiaCity_House1:: @ 816D6C5 + .incbin "baserom.gba", 0x16D6C5, 0x2C + +gMapScripts_FuchsiaCity_PokemonCenter_1F:: @ 816D6F1 + .incbin "baserom.gba", 0x16D6F1, 0x33 + +gMapScripts_FuchsiaCity_PokemonCenter_2F:: @ 816D724 + .incbin "baserom.gba", 0x16D724, 0x27 + +gMapScripts_FuchsiaCity_Building1:: @ 816D74B + .incbin "baserom.gba", 0x16D74B, 0xCB + +gMapScripts_FuchsiaCity_House2:: @ 816D816 + .incbin "baserom.gba", 0x16D816, 0x7E + +gMapScripts_FuchsiaCity_House3:: @ 816D894 + .incbin "baserom.gba", 0x16D894, 0xB7 + +gMapScripts_CinnabarIsland_Gym:: @ 816D94B + .incbin "baserom.gba", 0x16D94B, 0x928 + +gMapScripts_CinnabarIsland_PokemonLab_Entrance:: @ 816E273 + .incbin "baserom.gba", 0x16E273, 0x45 + +gMapScripts_CinnabarIsland_PokemonLab_Lounge:: @ 816E2B8 + .incbin "baserom.gba", 0x16E2B8, 0x126 + +gMapScripts_CinnabarIsland_PokemonLab_ResearchRoom:: @ 816E3DE + .incbin "baserom.gba", 0x16E3DE, 0x22 + +gMapScripts_CinnabarIsland_PokemonLab_ExperimentRoom:: @ 816E400 + .incbin "baserom.gba", 0x16E400, 0x4D7 + +gMapScripts_CinnabarIsland_PokemonCenter_1F:: @ 816E8D7 + .incbin "baserom.gba", 0x16E8D7, 0x111 + +gMapScripts_CinnabarIsland_PokemonCenter_2F:: @ 816E9E8 + .incbin "baserom.gba", 0x16E9E8, 0x27 + +gMapScripts_CinnabarIsland_Mart:: @ 816EA0F + .incbin "baserom.gba", 0x16EA0F, 0x4B + +gMapScripts_IndigoPlateau_PokemonCenter_1F:: @ 816EA5A + .incbin "baserom.gba", 0x16EA5A, 0xB5 + +gMapScripts_IndigoPlateau_PokemonCenter_2F:: @ 816EB0F + .incbin "baserom.gba", 0x16EB0F, 0x27 + +gMapScripts_SaffronCity_House1_1F:: @ 816EB36 + .incbin "baserom.gba", 0x16EB36, 0x26 + +gMapScripts_SaffronCity_House1_2F:: @ 816EB5C + .incbin "baserom.gba", 0x16EB5C, 0x7F + +gMapScripts_SaffronCity_Dojo:: @ 816EBDB + .incbin "baserom.gba", 0x16EBDB, 0x1FC + +gMapScripts_SaffronCity_Gym:: @ 816EDD7 + .incbin "baserom.gba", 0x16EDD7, 0x19C + +gMapScripts_SaffronCity_House2:: @ 816EF73 + .incbin "baserom.gba", 0x16EF73, 0x2F + +gMapScripts_SaffronCity_Mart:: @ 816EFA2 + .incbin "baserom.gba", 0x16EFA2, 0x4A + +gMapScripts_SaffronCity_PokemonCenter_1F:: @ 816EFEC + .incbin "baserom.gba", 0x16EFEC, 0x4B + +gMapScripts_SaffronCity_PokemonCenter_2F:: @ 816F037 + .incbin "baserom.gba", 0x16F037, 0x27 + +gMapScripts_SaffronCity_House3:: @ 816F05E + .incbin "baserom.gba", 0x16F05E, 0x61 + +gMapScripts_SaffronCity_PokemonTrainerFanClub:: @ 816F0BF + .incbin "baserom.gba", 0x16F0BF, 0x526 + +gMapScripts_Route2_ViridianForest_SouthEntrance:: @ 816F5E5 + .incbin "baserom.gba", 0x16F5E5, 0x13 + +gMapScripts_Route2_House:: @ 816F5F8 + .incbin "baserom.gba", 0x16F5F8, 0x86 + +gMapScripts_Route2_EastBuilding:: @ 816F67E + .incbin "baserom.gba", 0x16F67E, 0x9F + +gMapScripts_Route2_ViridianForest_NorthEntrance:: @ 816F71D + .incbin "baserom.gba", 0x16F71D, 0x1C + +gMapScripts_Route4_PokemonCenter_1F:: @ 816F739 + .incbin "baserom.gba", 0x16F739, 0x19F + +gMapScripts_Route4_PokemonCenter_2F:: @ 816F8D8 + .incbin "baserom.gba", 0x16F8D8, 0x27 + +gMapScripts_Route5_PokemonDayCare:: @ 816F8FF + .incbin "baserom.gba", 0x16F8FF, 0x1 + +gMapScripts_Route5_SouthEntrance:: @ 816F900 + .incbin "baserom.gba", 0x16F900, 0xC6 + +gMapScripts_Route6_NorthEntrance:: @ 816F9C6 + .incbin "baserom.gba", 0x16F9C6, 0xC6 + +gMapScripts_UnknownMap_18_01:: @ 816FA8C + .incbin "baserom.gba", 0x16FA8C, 0x1 + +gMapScripts_Route7_EastEntrance:: @ 816FA8D + .incbin "baserom.gba", 0x16FA8D, 0xC6 + +gMapScripts_Route8_WestEntrance:: @ 816FB53 + .incbin "baserom.gba", 0x16FB53, 0xDC + +gMapScripts_Route10_PokemonCenter_1F:: @ 816FC2F + .incbin "baserom.gba", 0x16FC2F, 0xCB + +gMapScripts_Route10_PokemonCenter_2F:: @ 816FCFA + .incbin "baserom.gba", 0x16FCFA, 0x27 + +gMapScripts_Route11_EastEntrance_1F:: @ 816FD21 + .incbin "baserom.gba", 0x16FD21, 0x13 + +gMapScripts_Route11_EastEntrance_2F:: @ 816FD34 + .incbin "baserom.gba", 0x16FD34, 0x139 + +gMapScripts_Route12_NorthEntrance_1F:: @ 816FE6D + .incbin "baserom.gba", 0x16FE6D, 0xA + +gMapScripts_Route12_NorthEntrance_2F:: @ 816FE77 + .incbin "baserom.gba", 0x16FE77, 0x94 + +gMapScripts_Route12_FishingHouse:: @ 816FF0B + .incbin "baserom.gba", 0x16FF0B, 0x17D + +gMapScripts_Route15_WestEntrance_1F:: @ 8170088 + .incbin "baserom.gba", 0x170088, 0xA + +gMapScripts_Route15_WestEntrance_2F:: @ 8170092 + .incbin "baserom.gba", 0x170092, 0xBC + +gMapScripts_Route16_House:: @ 817014E + .incbin "baserom.gba", 0x17014E, 0x74 + +gMapScripts_Route16_NorthEntrance_1F:: @ 81701C2 + .incbin "baserom.gba", 0x1701C2, 0xFC + +gMapScripts_Route16_NorthEntrance_2F:: @ 81702BE + .incbin "baserom.gba", 0x1702BE, 0xBA + +gMapScripts_Route18_EastEntrance_1F:: @ 8170378 + .incbin "baserom.gba", 0x170378, 0xF3 + +gMapScripts_Route18_EastEntrance_2F:: @ 817046B + .incbin "baserom.gba", 0x17046B, 0x8F + +gMapScripts_UnusedHouse_27_00:: @ 81704FA + .incbin "baserom.gba", 0x1704FA, 0x1 + +gMapScripts_Route22_NorthEntrance:: @ 81704FB + .incbin "baserom.gba", 0x1704FB, 0x27 + +gMapScripts_UnusedHouse_29_00:: @ 8170522 + .incbin "baserom.gba", 0x170522, 0x1 + +gMapScripts_Route25_SeaCottage:: @ 8170523 + .incbin "baserom.gba", 0x170523, 0x367 + +gMapScripts_SevenIsland_House_Room1:: @ 817088A + .incbin "baserom.gba", 0x17088A, 0x1F4 + +gMapScripts_SevenIsland_House_Room2:: @ 8170A7E + .incbin "baserom.gba", 0x170A7E, 0xB2 + +gMapScripts_SevenIsland_Mart:: @ 8170B30 + .incbin "baserom.gba", 0x170B30, 0x59 + +gMapScripts_SevenIsland_PokemonCenter_1F:: @ 8170B89 + .incbin "baserom.gba", 0x170B89, 0x33 + +gMapScripts_SevenIsland_PokemonCenter_2F:: @ 8170BBC + .incbin "baserom.gba", 0x170BBC, 0x27 + +gMapScripts_UnusedHouse_31_05:: @ 8170BE3 + .incbin "baserom.gba", 0x170BE3, 0x1 + +gMapScripts_SevenIsland_Harbor:: @ 8170BE4 + .incbin "baserom.gba", 0x170BE4, 0x14 + +gMapScripts_OneIsland_PokemonCenter_1F:: @ 8170BF8 + .incbin "baserom.gba", 0x170BF8, 0x73C + +gMapScripts_OneIsland_PokemonCenter_2F:: @ 8171334 + .incbin "baserom.gba", 0x171334, 0x27 + +gMapScripts_OneIsland_House1:: @ 817135B + .incbin "baserom.gba", 0x17135B, 0x13 + +gMapScripts_OneIsland_House2:: @ 817136E + .incbin "baserom.gba", 0x17136E, 0xA + +gMapScripts_OneIsland_Harbor:: @ 8171378 + .incbin "baserom.gba", 0x171378, 0x58 + +gMapScripts_TwoIsland_JoyfulGameCorner:: @ 81713D0 + .incbin "baserom.gba", 0x1713D0, 0x248 + +gMapScripts_TwoIsland_House:: @ 8171618 + .incbin "baserom.gba", 0x171618, 0x19C + +gMapScripts_TwoIsland_PokemonCenter_1F:: @ 81717B4 + .incbin "baserom.gba", 0x1717B4, 0x2A + +gMapScripts_TwoIsland_PokemonCenter_2F:: @ 81717DE + .incbin "baserom.gba", 0x1717DE, 0x27 + +gMapScripts_TwoIsland_Harbor:: @ 8171805 + .incbin "baserom.gba", 0x171805, 0x14 + +gMapScripts_ThreeIsland_House1:: @ 8171819 + .incbin "baserom.gba", 0x171819, 0x19 + +gMapScripts_ThreeIsland_PokemonCenter_1F:: @ 8171832 + .incbin "baserom.gba", 0x171832, 0x33 + +gMapScripts_ThreeIsland_PokemonCenter_2F:: @ 8171865 + .incbin "baserom.gba", 0x171865, 0x27 + +gMapScripts_ThreeIsland_Mart:: @ 817188C + .incbin "baserom.gba", 0x17188C, 0x53 + +gMapScripts_ThreeIsland_House2:: @ 81718DF + .incbin "baserom.gba", 0x1718DF, 0x23 + +gMapScripts_ThreeIsland_House3:: @ 8171902 + .incbin "baserom.gba", 0x171902, 0xA + +gMapScripts_ThreeIsland_House4:: @ 817190C + .incbin "baserom.gba", 0x17190C, 0x13 + +gMapScripts_ThreeIsland_House5:: @ 817191F + .incbin "baserom.gba", 0x17191F, 0x20 + +gMapScripts_FourIsland_PokemonDayCare:: @ 817193F + .incbin "baserom.gba", 0x17193F, 0x2AB + +gMapScripts_FourIsland_PokemonCenter_1F:: @ 8171BEA + .incbin "baserom.gba", 0x171BEA, 0x33 + +gMapScripts_FourIsland_PokemonCenter_2F:: @ 8171C1D + .incbin "baserom.gba", 0x171C1D, 0x27 + +gMapScripts_FourIsland_House1:: @ 8171C44 + .incbin "baserom.gba", 0x171C44, 0xA + +gMapScripts_FourIsland_LoreleisHouse:: @ 8171C4E + .incbin "baserom.gba", 0x171C4E, 0x4A + +gMapScripts_FourIsland_Harbor:: @ 8171C98 + .incbin "baserom.gba", 0x171C98, 0x14 + +gMapScripts_FourIsland_House2:: @ 8171CAC + .incbin "baserom.gba", 0x171CAC, 0x1 + +gMapScripts_FourIsland_Mart:: @ 8171CAD + .incbin "baserom.gba", 0x171CAD, 0x44 + +gMapScripts_FiveIsland_PokemonCenter_1F:: @ 8171CF1 + .incbin "baserom.gba", 0x171CF1, 0x2A + +gMapScripts_FiveIsland_PokemonCenter_2F:: @ 8171D1B + .incbin "baserom.gba", 0x171D1B, 0x27 + +gMapScripts_FiveIsland_Harbor:: @ 8171D42 + .incbin "baserom.gba", 0x171D42, 0x14 + +gMapScripts_FiveIsland_House1:: @ 8171D56 + .incbin "baserom.gba", 0x171D56, 0xA + +gMapScripts_FiveIsland_House2:: @ 8171D60 + .incbin "baserom.gba", 0x171D60, 0xA + +gMapScripts_SixIsland_PokemonCenter_1F:: @ 8171D6A + .incbin "baserom.gba", 0x171D6A, 0xB6 + +gMapScripts_SixIsland_PokemonCenter_2F:: @ 8171E20 + .incbin "baserom.gba", 0x171E20, 0x27 + +gMapScripts_SixIsland_Harbor:: @ 8171E47 + .incbin "baserom.gba", 0x171E47, 0x14 + +gMapScripts_SixIsland_House:: @ 8171E5B + .incbin "baserom.gba", 0x171E5B, 0xA + +gMapScripts_SixIsland_Mart:: @ 8171E65 + .incbin "baserom.gba", 0x171E65, 0x44 + +gMapScripts_ThreeIsland_Harbor:: @ 8171EA9 + .incbin "baserom.gba", 0x171EA9, 0x14 + +gMapScripts_FiveIsland_ResortGorgeous_House:: @ 8171EBD + .incbin "baserom.gba", 0x171EBD, 0x1AE + +gMapScripts_TwoIsland_CapeBrink_House:: @ 817206B + .incbin "baserom.gba", 0x17206B, 0x1 + +gMapScripts_SixIsland_WaterPath_House1:: @ 817206C + .incbin "baserom.gba", 0x17206C, 0x10C + +gMapScripts_SixIsland_WaterPath_House2:: @ 8172178 + .incbin "baserom.gba", 0x172178, 0xA + +gMapScripts_SevenIsland_SevaultCanyon_House:: @ 8172182 + .incbin "baserom.gba", 0x172182, 0x32CBD gStdScript_81A4E3F:: .incbin "baserom.gba", 0x1A4E3F, 0xB diff --git a/data/maps/groups.inc b/data/maps/groups.inc index 4785ec2b7..d96d28329 100644 --- a/data/maps/groups.inc +++ b/data/maps/groups.inc @@ -1,1277 +1,3827 @@ UnknownMap_00_00:: @ 834F188 - .incbin "baserom.gba", 0x34F188, 0x1C + .4byte gMapData_UnknownMap_00_00 @ 0x82D89E8 + .4byte gMapEvents_UnknownMap_00_00 @ 0x83AE0DC + .4byte gMapScripts_UnknownMap_00_00 @ 0x8160478 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 47 + .byte 0xc4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 UnknownMap_00_01:: @ 834F1A4 - .incbin "baserom.gba", 0x34F1A4, 0x1C + .4byte gMapData_UnknownMap_00_01 @ 0x82D8AE4 + .4byte gMapEvents_UnknownMap_00_01 @ 0x83AE138 + .4byte gMapScripts_UnknownMap_00_01 @ 0x8160479 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 48 + .byte 0xc4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 UnknownMap_00_02:: @ 834F1C0 - .incbin "baserom.gba", 0x34F1C0, 0x1C + .4byte gMapData_UnknownMap_00_02 @ 0x82D8C98 + .4byte gMapEvents_UnknownMap_00_02 @ 0x83AE1C4 + .4byte gMapScripts_UnknownMap_00_02 @ 0x816047A + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 49 + .byte 0xc4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 UnknownMap_00_03:: @ 834F1DC - .incbin "baserom.gba", 0x34F1DC, 0x1C + .4byte gMapData_UnknownMap_00_03 @ 0x82D8DB8 + .4byte gMapEvents_UnknownMap_00_03 @ 0x83AE238 + .4byte gMapScripts_UnknownMap_00_03 @ 0x816047B + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 50 + .byte 0xc4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 UnknownMap_00_04:: @ 834F1F8 - .incbin "baserom.gba", 0x34F1F8, 0x1C + .4byte gMapData_UnknownMap_00_04 @ 0x83388C4 + .4byte gMapEvents_UnknownMap_00_04 @ 0x83AE32C + .4byte gMapScripts_UnknownMap_00_04 @ 0x816047C + .4byte NULL + .2byte BGM_FRLG_UNION_ROOM + .2byte 262 + .byte 0xc4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 ViridianForest:: @ 834F214 - .incbin "baserom.gba", 0x34F214, 0x1C + .4byte gMapData_ViridianForest @ 0x82FE46C + .4byte gMapEvents_ViridianForest @ 0x83AE4D8 + .4byte gMapScripts_ViridianForest @ 0x816051F + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 117 + .byte 0x7e, 0x00, 0x0b, 0x03, 0x01, 0x07, 0x00, 0x00 MtMoon_1F:: @ 834F230 - .incbin "baserom.gba", 0x34F230, 0x1C + .4byte gMapData_MtMoon_1F @ 0x82FA890 + .4byte gMapEvents_MtMoon_1F @ 0x83AE668 + .4byte gMapScripts_MtMoon_1F @ 0x81605E4 + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 114 + .byte 0x7f, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtMoon_B1F:: @ 834F24C - .incbin "baserom.gba", 0x34F24C, 0x1C + .4byte gMapData_MtMoon_B1F @ 0x82FB804 + .4byte gMapEvents_MtMoon_B1F @ 0x83AE704 + .4byte gMapScripts_MtMoon_B1F @ 0x8160698 + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 115 + .byte 0x7f, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtMoon_B2F:: @ 834F268 - .incbin "baserom.gba", 0x34F268, 0x1C + .4byte gMapData_MtMoon_B2F @ 0x82FC728 + .4byte gMapEvents_MtMoon_B2F @ 0x83AE868 + .4byte gMapScripts_MtMoon_B2F @ 0x8160699 + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 116 + .byte 0x7f, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SSAnne_Exterior:: @ 834F284 - .incbin "baserom.gba", 0x34F284, 0x1C + .4byte gMapData_SSAnne_Exterior @ 0x82FF610 + .4byte gMapEvents_SSAnne_Exterior @ 0x83AE8C8 + .4byte gMapScripts_SSAnne_Exterior @ 0x8160840 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 118 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Corridor:: @ 834F2A0 - .incbin "baserom.gba", 0x34F2A0, 0x1C + .4byte gMapData_SSAnne_1F_Corridor @ 0x82FFB4C + .4byte gMapEvents_SSAnne_1F_Corridor @ 0x83AE974 + .4byte gMapScripts_SSAnne_1F_Corridor @ 0x81608CB + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 119 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_2F_Corridor:: @ 834F2BC - .incbin "baserom.gba", 0x34F2BC, 0x1C + .4byte gMapData_SSAnne_2F_Corridor @ 0x82FFFB0 + .4byte gMapEvents_SSAnne_2F_Corridor @ 0x83AEA30 + .4byte gMapScripts_SSAnne_2F_Corridor @ 0x81608DE + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 120 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_3F_Corridor:: @ 834F2D8 - .incbin "baserom.gba", 0x34F2D8, 0x1C + .4byte gMapData_SSAnne_3F_Corridor @ 0x8300108 + .4byte gMapEvents_SSAnne_3F_Corridor @ 0x83AEA74 + .4byte gMapScripts_SSAnne_3F_Corridor @ 0x8160A5D + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 121 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_B1F_Corridor:: @ 834F2F4 - .incbin "baserom.gba", 0x34F2F4, 0x1C + .4byte gMapData_SSAnne_B1F_Corridor @ 0x8300270 + .4byte gMapEvents_SSAnne_B1F_Corridor @ 0x83AEAC4 + .4byte gMapScripts_SSAnne_B1F_Corridor @ 0x8160A67 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 122 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_Deck:: @ 834F310 - .incbin "baserom.gba", 0x34F310, 0x1C + .4byte gMapData_SSAnne_Deck @ 0x8300624 + .4byte gMapEvents_SSAnne_Deck @ 0x83AEB60 + .4byte gMapScripts_SSAnne_Deck @ 0x8160A68 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 123 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_Kitchen:: @ 834F32C - .incbin "baserom.gba", 0x34F32C, 0x1C + .4byte gMapData_SSAnne_Kitchen @ 0x8319214 + .4byte gMapEvents_SSAnne_Kitchen @ 0x83AEC60 + .4byte gMapScripts_SSAnne_Kitchen @ 0x8160AB2 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 170 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_CaptainsOffice:: @ 834F348 - .incbin "baserom.gba", 0x34F348, 0x1C + .4byte gMapData_SSAnne_CaptainsOffice @ 0x83192EC + .4byte gMapEvents_SSAnne_CaptainsOffice @ 0x83AECB8 + .4byte gMapScripts_SSAnne_CaptainsOffice @ 0x8160B39 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 171 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Room1:: @ 834F364 - .incbin "baserom.gba", 0x34F364, 0x1C + .4byte gMapData_SSAnne_1F_Room1 @ 0x8319E74 + .4byte gMapEvents_SSAnne_1F_Room1 @ 0x83AECEC + .4byte gMapScripts_SSAnne_1F_Room1 @ 0x8160BDB + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 177 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Room2:: @ 834F380 - .incbin "baserom.gba", 0x34F380, 0x1C + .4byte gMapData_SSAnne_1F_Room2 @ 0x8319E74 + .4byte gMapEvents_SSAnne_1F_Room2 @ 0x83AED68 + .4byte gMapScripts_SSAnne_1F_Room2 @ 0x8160BE5 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 177 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Room3:: @ 834F39C - .incbin "baserom.gba", 0x34F39C, 0x1C + .4byte gMapData_SSAnne_1F_Room3 @ 0x8319E74 + .4byte gMapEvents_SSAnne_1F_Room3 @ 0x83AEDCC + .4byte gMapScripts_SSAnne_1F_Room3 @ 0x8160C1D + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 177 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Room4:: @ 834F3B8 - .incbin "baserom.gba", 0x34F3B8, 0x1C + .4byte gMapData_SSAnne_1F_Room4 @ 0x8319E74 + .4byte gMapEvents_SSAnne_1F_Room4 @ 0x83AEE00 + .4byte gMapScripts_SSAnne_1F_Room4 @ 0x8160C43 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 177 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Room5:: @ 834F3D4 - .incbin "baserom.gba", 0x34F3D4, 0x1C + .4byte gMapData_SSAnne_1F_Room5 @ 0x8319E74 + .4byte gMapEvents_SSAnne_1F_Room5 @ 0x83AEE34 + .4byte gMapScripts_SSAnne_1F_Room5 @ 0x8160C66 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 177 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Room7:: @ 834F3F0 - .incbin "baserom.gba", 0x34F3F0, 0x1C + .4byte gMapData_SSAnne_1F_Room7 @ 0x8319E74 + .4byte gMapEvents_SSAnne_1F_Room7 @ 0x83AEE68 + .4byte gMapScripts_SSAnne_1F_Room7 @ 0x8160C7E + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 177 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_2F_Room1:: @ 834F40C - .incbin "baserom.gba", 0x34F40C, 0x1C + .4byte gMapData_SSAnne_2F_Room1 @ 0x8319F04 + .4byte gMapEvents_SSAnne_2F_Room1 @ 0x83AEE9C + .4byte gMapScripts_SSAnne_2F_Room1 @ 0x8160C96 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_2F_Room2:: @ 834F428 - .incbin "baserom.gba", 0x34F428, 0x1C + .4byte gMapData_SSAnne_2F_Room2 @ 0x8319F04 + .4byte gMapEvents_SSAnne_2F_Room2 @ 0x83AEF00 + .4byte gMapScripts_SSAnne_2F_Room2 @ 0x8160CB0 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_2F_Room3:: @ 834F444 - .incbin "baserom.gba", 0x34F444, 0x1C + .4byte gMapData_SSAnne_2F_Room3 @ 0x8319F04 + .4byte gMapEvents_SSAnne_2F_Room3 @ 0x83AEF4C + .4byte gMapScripts_SSAnne_2F_Room3 @ 0x8160CDF + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_2F_Room4:: @ 834F460 - .incbin "baserom.gba", 0x34F460, 0x1C + .4byte gMapData_SSAnne_2F_Room4 @ 0x8319F04 + .4byte gMapEvents_SSAnne_2F_Room4 @ 0x83AEFB0 + .4byte gMapScripts_SSAnne_2F_Room4 @ 0x8160CF2 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_2F_Room5:: @ 834F47C - .incbin "baserom.gba", 0x34F47C, 0x1C + .4byte gMapData_SSAnne_2F_Room5 @ 0x8319F04 + .4byte gMapEvents_SSAnne_2F_Room5 @ 0x83AEFFC + .4byte gMapScripts_SSAnne_2F_Room5 @ 0x8160D21 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_2F_Room6:: @ 834F498 - .incbin "baserom.gba", 0x34F498, 0x1C + .4byte gMapData_SSAnne_2F_Room6 @ 0x8319F04 + .4byte gMapEvents_SSAnne_2F_Room6 @ 0x83AF048 + .4byte gMapScripts_SSAnne_2F_Room6 @ 0x8160D34 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_B1F_Room1:: @ 834F4B4 - .incbin "baserom.gba", 0x34F4B4, 0x1C + .4byte gMapData_SSAnne_B1F_Room1 @ 0x8319F04 + .4byte gMapEvents_SSAnne_B1F_Room1 @ 0x83AF094 + .4byte gMapScripts_SSAnne_B1F_Room1 @ 0x8160D47 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_B1F_Room2:: @ 834F4D0 - .incbin "baserom.gba", 0x34F4D0, 0x1C + .4byte gMapData_SSAnne_B1F_Room2 @ 0x8319F04 + .4byte gMapEvents_SSAnne_B1F_Room2 @ 0x83AF0E0 + .4byte gMapScripts_SSAnne_B1F_Room2 @ 0x8160D76 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_B1F_Room3:: @ 834F4EC - .incbin "baserom.gba", 0x34F4EC, 0x1C + .4byte gMapData_SSAnne_B1F_Room3 @ 0x8319F04 + .4byte gMapEvents_SSAnne_B1F_Room3 @ 0x83AF12C + .4byte gMapScripts_SSAnne_B1F_Room3 @ 0x8160D8E + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_B1F_Room4:: @ 834F508 - .incbin "baserom.gba", 0x34F508, 0x1C + .4byte gMapData_SSAnne_B1F_Room4 @ 0x8319F04 + .4byte gMapEvents_SSAnne_B1F_Room4 @ 0x83AF178 + .4byte gMapScripts_SSAnne_B1F_Room4 @ 0x8160DA6 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_B1F_Room5:: @ 834F524 - .incbin "baserom.gba", 0x34F524, 0x1C + .4byte gMapData_SSAnne_B1F_Room5 @ 0x8319F04 + .4byte gMapEvents_SSAnne_B1F_Room5 @ 0x83AF1DC + .4byte gMapScripts_SSAnne_B1F_Room5 @ 0x8160DD5 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 178 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 SSAnne_1F_Room6:: @ 834F540 - .incbin "baserom.gba", 0x34F540, 0x1C + .4byte gMapData_SSAnne_1F_Room6 @ 0x8319E74 + .4byte gMapEvents_SSAnne_1F_Room6 @ 0x83AF210 + .4byte gMapScripts_SSAnne_1F_Room6 @ 0x8160DF2 + .4byte NULL + .2byte BGM_FRLG_SS_ANNE + .2byte 177 + .byte 0x80, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 UndergroundPath_NorthEntrance:: @ 834F55C - .incbin "baserom.gba", 0x34F55C, 0x1C + .4byte gMapData_UndergroundPath_NorthEntrance @ 0x8319414 + .4byte gMapEvents_UndergroundPath_NorthEntrance @ 0x83AF25C + .4byte gMapScripts_UndergroundPath_NorthEntrance @ 0x8160E38 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 172 + .byte 0x81, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 UndergroundPath_NorthSouthTunnel:: @ 834F578 - .incbin "baserom.gba", 0x34F578, 0x1C + .4byte gMapData_UndergroundPath_NorthSouthTunnel @ 0x8319CAC + .4byte gMapEvents_UndergroundPath_NorthSouthTunnel @ 0x83AF2D4 + .4byte gMapScripts_UndergroundPath_NorthSouthTunnel @ 0x8160EB5 + .4byte NULL + .2byte BGM_FRLG_ROUTE_1 + .2byte 174 + .byte 0x81, 0x00, 0x00, 0x08, 0x01, 0x06, 0x00, 0x00 UndergroundPath_SouthEntrance:: @ 834F594 - .incbin "baserom.gba", 0x34F594, 0x1C + .4byte gMapData_UndergroundPath_SouthEntrance @ 0x8319414 + .4byte gMapEvents_UndergroundPath_SouthEntrance @ 0x83AF320 + .4byte gMapScripts_UndergroundPath_SouthEntrance @ 0x8160EBF + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 172 + .byte 0x81, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 UndergroundPath_WestEntrance:: @ 834F5B0 - .incbin "baserom.gba", 0x34F5B0, 0x1C + .4byte gMapData_UndergroundPath_WestEntrance @ 0x8319414 + .4byte gMapEvents_UndergroundPath_WestEntrance @ 0x83AF36C + .4byte gMapScripts_UndergroundPath_WestEntrance @ 0x8160EC9 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 172 + .byte 0x82, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 UndergroundPath_EastWestTunnel:: @ 834F5CC - .incbin "baserom.gba", 0x34F5CC, 0x1C + .4byte gMapData_UndergroundPath_EastWestTunnel @ 0x8319898 + .4byte gMapEvents_UndergroundPath_EastWestTunnel @ 0x83AF3E4 + .4byte gMapScripts_UndergroundPath_EastWestTunnel @ 0x8160ED3 + .4byte NULL + .2byte BGM_FRLG_ROUTE_1 + .2byte 173 + .byte 0x82, 0x00, 0x00, 0x08, 0x01, 0x06, 0x00, 0x00 UndergroundPath_EastEntrance:: @ 834F5E8 - .incbin "baserom.gba", 0x34F5E8, 0x1C + .4byte gMapData_UndergroundPath_EastEntrance @ 0x8319414 + .4byte gMapEvents_UndergroundPath_EastEntrance @ 0x83AF430 + .4byte gMapScripts_UndergroundPath_EastEntrance @ 0x8160EDD + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 172 + .byte 0x82, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 DiglettsCave_NorthEntrance:: @ 834F604 - .incbin "baserom.gba", 0x34F604, 0x1C + .4byte gMapData_DiglettsCave_NorthEntrance @ 0x831EB94 + .4byte gMapEvents_DiglettsCave_NorthEntrance @ 0x83AF46C + .4byte gMapScripts_DiglettsCave_NorthEntrance @ 0x8160EE7 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 210 + .byte 0x83, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 DiglettsCave_B1F:: @ 834F620 - .incbin "baserom.gba", 0x34F620, 0x1C + .4byte gMapData_DiglettsCave_B1F @ 0x8303B68 + .4byte gMapEvents_DiglettsCave_B1F @ 0x83AF490 + .4byte gMapScripts_DiglettsCave_B1F @ 0x8160EF1 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 124 + .byte 0x83, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 DiglettsCave_SouthEntrance:: @ 834F63C - .incbin "baserom.gba", 0x34F63C, 0x1C + .4byte gMapData_DiglettsCave_SouthEntrance @ 0x831EC58 + .4byte gMapEvents_DiglettsCave_SouthEntrance @ 0x83AF4CC + .4byte gMapScripts_DiglettsCave_SouthEntrance @ 0x8160EFB + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 211 + .byte 0x83, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 VictoryRoad_1F:: @ 834F658 - .incbin "baserom.gba", 0x34F658, 0x1C + .4byte gMapData_VictoryRoad_1F @ 0x83043CC + .4byte gMapEvents_VictoryRoad_1F @ 0x83AF5C0 + .4byte gMapScripts_VictoryRoad_1F @ 0x8160F05 + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 125 + .byte 0x84, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 VictoryRoad_2F:: @ 834F674 - .incbin "baserom.gba", 0x34F674, 0x1C + .4byte gMapData_VictoryRoad_2F @ 0x8304CB4 + .4byte gMapEvents_VictoryRoad_2F @ 0x83AF774 + .4byte gMapScripts_VictoryRoad_2F @ 0x8160F92 + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 126 + .byte 0x84, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 VictoryRoad_3F:: @ 834F690 - .incbin "baserom.gba", 0x34F690, 0x1C + .4byte gMapData_VictoryRoad_3F @ 0x8305494 + .4byte gMapEvents_VictoryRoad_3F @ 0x83AF8E0 + .4byte gMapScripts_VictoryRoad_3F @ 0x81610AA + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 127 + .byte 0x84, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 RocketHideout_B1F:: @ 834F6AC - .incbin "baserom.gba", 0x34F6AC, 0x1C + .4byte gMapData_RocketHideout_B1F @ 0x8305C28 + .4byte gMapEvents_RocketHideout_B1F @ 0x83AF9D8 + .4byte gMapScripts_RocketHideout_B1F @ 0x8161195 + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 128 + .byte 0x85, 0x00, 0x00, 0x08, 0x00, 0x07, 0xff, 0x03 RocketHideout_B2F:: @ 834F6C8 - .incbin "baserom.gba", 0x34F6C8, 0x1C + .4byte gMapData_RocketHideout_B2F @ 0x83061CC + .4byte gMapEvents_RocketHideout_B2F @ 0x83AFA8C + .4byte gMapScripts_RocketHideout_B2F @ 0x81612A1 + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 129 + .byte 0x85, 0x00, 0x00, 0x08, 0x00, 0x07, 0xfe, 0x03 RocketHideout_B3F:: @ 834F6E4 - .incbin "baserom.gba", 0x34F6E4, 0x1C + .4byte gMapData_RocketHideout_B3F @ 0x8306694 + .4byte gMapEvents_RocketHideout_B3F @ 0x83AFB34 + .4byte gMapScripts_RocketHideout_B3F @ 0x81612B9 + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 130 + .byte 0x85, 0x00, 0x00, 0x08, 0x00, 0x07, 0xfd, 0x03 RocketHideout_B4F:: @ 834F700 - .incbin "baserom.gba", 0x34F700, 0x1C + .4byte gMapData_RocketHideout_B4F @ 0x8306B98 + .4byte gMapEvents_RocketHideout_B4F @ 0x83AFC50 + .4byte gMapScripts_RocketHideout_B4F @ 0x81612E8 + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 131 + .byte 0x85, 0x00, 0x00, 0x08, 0x00, 0x07, 0xfc, 0x03 RocketHideout_Elevator:: @ 834F71C - .incbin "baserom.gba", 0x34F71C, 0x1C + .4byte gMapData_RocketHideout_Elevator @ 0x8320EDC + .4byte gMapEvents_RocketHideout_Elevator @ 0x83AFC80 + .4byte gMapScripts_RocketHideout_Elevator @ 0x81614D8 + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 225 + .byte 0x85, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x03 SilphCo_1F:: @ 834F738 - .incbin "baserom.gba", 0x34F738, 0x1C + .4byte gMapData_SilphCo_1F @ 0x83071EC + .4byte gMapEvents_SilphCo_1F @ 0x83AFCE0 + .4byte gMapScripts_SilphCo_1F @ 0x8161625 + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 132 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x01, 0x00 SilphCo_2F:: @ 834F754 - .incbin "baserom.gba", 0x34F754, 0x1C + .4byte gMapData_SilphCo_2F @ 0x8307840 + .4byte gMapEvents_SilphCo_2F @ 0x83AFE1C + .4byte gMapScripts_SilphCo_2F @ 0x8161641 + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 133 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x02, 0x00 SilphCo_3F:: @ 834F770 - .incbin "baserom.gba", 0x34F770, 0x1C + .4byte gMapData_SilphCo_3F @ 0x8307E94 + .4byte gMapEvents_SilphCo_3F @ 0x83AFF58 + .4byte gMapScripts_SilphCo_3F @ 0x81616C5 + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 134 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x03, 0x00 SilphCo_4F:: @ 834F78C - .incbin "baserom.gba", 0x34F78C, 0x1C + .4byte gMapData_SilphCo_4F @ 0x83084E8 + .4byte gMapEvents_SilphCo_4F @ 0x83B00DC + .4byte gMapScripts_SilphCo_4F @ 0x8161736 + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 135 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x04, 0x00 SilphCo_5F:: @ 834F7A8 - .incbin "baserom.gba", 0x34F7A8, 0x1C + .4byte gMapData_SilphCo_5F @ 0x8308B3C + .4byte gMapEvents_SilphCo_5F @ 0x83B02D8 + .4byte gMapScripts_SilphCo_5F @ 0x81617BE + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 136 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x05, 0x00 SilphCo_6F:: @ 834F7C4 - .incbin "baserom.gba", 0x34F7C4, 0x1C + .4byte gMapData_SilphCo_6F @ 0x8308FFC + .4byte gMapEvents_SilphCo_6F @ 0x83B044C + .4byte gMapScripts_SilphCo_6F @ 0x8161881 + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 137 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x06, 0x00 SilphCo_7F:: @ 834F7E0 - .incbin "baserom.gba", 0x34F7E0, 0x1C + .4byte gMapData_SilphCo_7F @ 0x83094BC + .4byte gMapEvents_SilphCo_7F @ 0x83B0660 + .4byte gMapScripts_SilphCo_7F @ 0x8161984 + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 138 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x07, 0x00 SilphCo_8F:: @ 834F7FC - .incbin "baserom.gba", 0x34F7FC, 0x1C + .4byte gMapData_SilphCo_8F @ 0x830997C + .4byte gMapEvents_SilphCo_8F @ 0x83B0784 + .4byte gMapScripts_SilphCo_8F @ 0x8161C5F + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 139 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x08, 0x00 SilphCo_9F:: @ 834F818 - .incbin "baserom.gba", 0x34F818, 0x1C + .4byte gMapData_SilphCo_9F @ 0x8309E3C + .4byte gMapEvents_SilphCo_9F @ 0x83B0904 + .4byte gMapScripts_SilphCo_9F @ 0x8161CDE + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 140 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x09, 0x00 SilphCo_10F:: @ 834F834 - .incbin "baserom.gba", 0x34F834, 0x1C + .4byte gMapData_SilphCo_10F @ 0x830A0E8 + .4byte gMapEvents_SilphCo_10F @ 0x83B0A20 + .4byte gMapScripts_SilphCo_10F @ 0x8161D86 + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 141 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x0a, 0x00 SilphCo_11F:: @ 834F850 - .incbin "baserom.gba", 0x34F850, 0x1C + .4byte gMapData_SilphCo_11F @ 0x830A3B4 + .4byte gMapEvents_SilphCo_11F @ 0x83B0B44 + .4byte gMapScripts_SilphCo_11F @ 0x8161DEE + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 142 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x07, 0x0b, 0x00 SilphCo_Elevator:: @ 834F86C - .incbin "baserom.gba", 0x34F86C, 0x1C + .4byte gMapData_SilphCo_Elevator @ 0x8321330 + .4byte gMapEvents_SilphCo_Elevator @ 0x83B0B6C + .4byte gMapScripts_SilphCo_Elevator @ 0x8161F6E + .4byte NULL + .2byte BGM_FRLG_SILPH + .2byte 229 + .byte 0x86, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00 PokemonMansion_1F:: @ 834F888 - .incbin "baserom.gba", 0x34F888, 0x1C + .4byte gMapData_PokemonMansion_1F @ 0x830AE3C + .4byte gMapEvents_PokemonMansion_1F @ 0x83B0C60 + .4byte gMapScripts_PokemonMansion_1F @ 0x81621F9 + .4byte NULL + .2byte BGM_FRLG_POKEMON_MANSION + .2byte 143 + .byte 0x87, 0x00, 0x0b, 0x08, 0x00, 0x07, 0x00, 0x03 PokemonMansion_2F:: @ 834F8A4 - .incbin "baserom.gba", 0x34F8A4, 0x1C + .4byte gMapData_PokemonMansion_2F @ 0x830B9A8 + .4byte gMapEvents_PokemonMansion_2F @ 0x83B0D20 + .4byte gMapScripts_PokemonMansion_2F @ 0x8162254 + .4byte NULL + .2byte BGM_FRLG_POKEMON_MANSION + .2byte 144 + .byte 0x87, 0x00, 0x0b, 0x08, 0x00, 0x07, 0x00, 0x03 PokemonMansion_3F:: @ 834F8C0 - .incbin "baserom.gba", 0x34F8C0, 0x1C + .4byte gMapData_PokemonMansion_3F @ 0x830C430 + .4byte gMapEvents_PokemonMansion_3F @ 0x83B0DF8 + .4byte gMapScripts_PokemonMansion_3F @ 0x81622A1 + .4byte NULL + .2byte BGM_FRLG_POKEMON_MANSION + .2byte 145 + .byte 0x87, 0x00, 0x0b, 0x08, 0x00, 0x07, 0x00, 0x03 PokemonMansion_B1F:: @ 834F8DC - .incbin "baserom.gba", 0x34F8DC, 0x1C + .4byte gMapData_PokemonMansion_B1F @ 0x830CEB8 + .4byte gMapEvents_PokemonMansion_B1F @ 0x83B0ED4 + .4byte gMapScripts_PokemonMansion_B1F @ 0x81622FC + .4byte NULL + .2byte BGM_FRLG_POKEMON_MANSION + .2byte 146 + .byte 0x87, 0x00, 0x0b, 0x08, 0x00, 0x07, 0x00, 0x03 SafariZone_Center:: @ 834F8F8 - .incbin "baserom.gba", 0x34F8F8, 0x1C + .4byte gMapData_SafariZone_Center @ 0x830DD38 + .4byte gMapEvents_SafariZone_Center @ 0x83B0F98 + .4byte gMapScripts_SafariZone_Center @ 0x8162357 + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 147 + .byte 0x88, 0x00, 0x00, 0x03, 0x01, 0x06, 0x00, 0x00 SafariZone_East:: @ 834F914 - .incbin "baserom.gba", 0x34F914, 0x1C + .4byte gMapData_SafariZone_East @ 0x830EC24 + .4byte gMapEvents_SafariZone_East @ 0x83B1068 + .4byte gMapScripts_SafariZone_East @ 0x816237C + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 148 + .byte 0x88, 0x00, 0x00, 0x03, 0x01, 0x06, 0x00, 0x00 SafariZone_North:: @ 834F930 - .incbin "baserom.gba", 0x34F930, 0x1C + .4byte gMapData_SafariZone_North @ 0x830FE1C + .4byte gMapEvents_SafariZone_North @ 0x83B1168 + .4byte gMapScripts_SafariZone_North @ 0x8162398 + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 149 + .byte 0x88, 0x00, 0x00, 0x03, 0x01, 0x06, 0x00, 0x00 SafariZone_West:: @ 834F94C - .incbin "baserom.gba", 0x34F94C, 0x1C + .4byte gMapData_SafariZone_West @ 0x8310BC4 + .4byte gMapEvents_SafariZone_West @ 0x83B1270 + .4byte gMapScripts_SafariZone_West @ 0x81623C6 + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 150 + .byte 0x88, 0x00, 0x00, 0x03, 0x01, 0x06, 0x00, 0x00 SafariZone_Building1:: @ 834F968 - .incbin "baserom.gba", 0x34F968, 0x1C + .4byte gMapData_SafariZone_Building1 @ 0x831C028 + .4byte gMapEvents_SafariZone_Building1 @ 0x83B12CC + .4byte gMapScripts_SafariZone_Building1 @ 0x81623EB + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 198 + .byte 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SafariZone_Building2:: @ 834F984 - .incbin "baserom.gba", 0x34F984, 0x1C + .4byte gMapData_SafariZone_Building2 @ 0x831C028 + .4byte gMapEvents_SafariZone_Building2 @ 0x83B1340 + .4byte gMapScripts_SafariZone_Building2 @ 0x81623FE + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 198 + .byte 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SafariZone_Building3:: @ 834F9A0 - .incbin "baserom.gba", 0x34F9A0, 0x1C + .4byte gMapData_SafariZone_Building3 @ 0x831C028 + .4byte gMapEvents_SafariZone_Building3 @ 0x83B13CC + .4byte gMapScripts_SafariZone_Building3 @ 0x816241A + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 198 + .byte 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SafariZone_Building4:: @ 834F9BC - .incbin "baserom.gba", 0x34F9BC, 0x1C + .4byte gMapData_SafariZone_Building4 @ 0x831C028 + .4byte gMapEvents_SafariZone_Building4 @ 0x83B1440 + .4byte gMapScripts_SafariZone_Building4 @ 0x8162436 + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 198 + .byte 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SafariZone_SecretHouse:: @ 834F9D8 - .incbin "baserom.gba", 0x34F9D8, 0x1C + .4byte gMapData_SafariZone_SecretHouse @ 0x831C16C + .4byte gMapEvents_SafariZone_SecretHouse @ 0x83B1484 + .4byte gMapScripts_SafariZone_SecretHouse @ 0x8162452 + .4byte NULL + .2byte BGM_FRLG_SAFARI_ZONE + .2byte 199 + .byte 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCave_1F:: @ 834F9F4 - .incbin "baserom.gba", 0x34F9F4, 0x1C + .4byte gMapData_CeruleanCave_1F @ 0x8311318 + .4byte gMapEvents_CeruleanCave_1F @ 0x83B15BC + .4byte gMapScripts_CeruleanCave_1F @ 0x81624B3 + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 151 + .byte 0x8d, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 CeruleanCave_2F:: @ 834FA10 - .incbin "baserom.gba", 0x34FA10, 0x1C + .4byte gMapData_CeruleanCave_2F @ 0x8311A6C + .4byte gMapEvents_CeruleanCave_2F @ 0x83B1738 + .4byte gMapScripts_CeruleanCave_2F @ 0x81624BD + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 152 + .byte 0x8d, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 CeruleanCave_B1F:: @ 834FA2C - .incbin "baserom.gba", 0x34FA2C, 0x1C + .4byte gMapData_CeruleanCave_B1F @ 0x83121C0 + .4byte gMapEvents_CeruleanCave_B1F @ 0x83B1874 + .4byte gMapScripts_CeruleanCave_B1F @ 0x81624BE + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 153 + .byte 0x8d, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 PokemonLeague_LoreleisRoom:: @ 834FA48 - .incbin "baserom.gba", 0x34FA48, 0x1C + .4byte gMapData_PokemonLeague_LoreleisRoom @ 0x831F178 + .4byte gMapEvents_PokemonLeague_LoreleisRoom @ 0x83B18B0 + .4byte gMapScripts_PokemonLeague_LoreleisRoom @ 0x816256C + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 213 + .byte 0x89, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04 PokemonLeague_BrunosRoom:: @ 834FA64 - .incbin "baserom.gba", 0x34FA64, 0x1C + .4byte gMapData_PokemonLeague_BrunosRoom @ 0x831F2F0 + .4byte gMapEvents_PokemonLeague_BrunosRoom @ 0x83B18EC + .4byte gMapScripts_PokemonLeague_BrunosRoom @ 0x8162685 + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 214 + .byte 0x89, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05 PokemonLeague_AgathasRoom:: @ 834FA80 - .incbin "baserom.gba", 0x34FA80, 0x1C + .4byte gMapData_PokemonLeague_AgathasRoom @ 0x831F468 + .4byte gMapEvents_PokemonLeague_AgathasRoom @ 0x83B1928 + .4byte gMapScripts_PokemonLeague_AgathasRoom @ 0x8162810 + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 215 + .byte 0x89, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06 PokemonLeague_LancesRoom:: @ 834FA9C - .incbin "baserom.gba", 0x34FA9C, 0x1C + .4byte gMapData_PokemonLeague_LancesRoom @ 0x831F9CC + .4byte gMapEvents_PokemonLeague_LancesRoom @ 0x83B1964 + .4byte gMapScripts_PokemonLeague_LancesRoom @ 0x816292D + .4byte NULL + .2byte BGM_FRLG_INDIGO_PLATEAU + .2byte 216 + .byte 0x89, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07 PokemonLeague_ChampionsRoom:: @ 834FAB8 - .incbin "baserom.gba", 0x34FAB8, 0x1C + .4byte gMapData_PokemonLeague_ChampionsRoom @ 0x831FBF8 + .4byte gMapEvents_PokemonLeague_ChampionsRoom @ 0x83B19B8 + .4byte gMapScripts_PokemonLeague_ChampionsRoom @ 0x8162AE2 + .4byte NULL + .2byte BGM_FRLG_INDIGO_PLATEAU + .2byte 217 + .byte 0x89, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PokemonLeague_HallOfFame:: @ 834FAD4 - .incbin "baserom.gba", 0x34FAD4, 0x1C + .4byte gMapData_PokemonLeague_HallOfFame @ 0x831FD3C + .4byte gMapEvents_PokemonLeague_HallOfFame @ 0x83B19EC + .4byte gMapScripts_PokemonLeague_HallOfFame @ 0x8162D4C + .4byte NULL + .2byte BGM_FRLG_HALL_OF_FAME_PALLET_TOWN + .2byte 218 + .byte 0x89, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 RockTunnel_1F:: @ 834FAF0 - .incbin "baserom.gba", 0x34FAF0, 0x1C + .4byte gMapData_RockTunnel_1F @ 0x83130E4 + .4byte gMapEvents_RockTunnel_1F @ 0x83B1B2C + .4byte gMapScripts_RockTunnel_1F @ 0x8162DD6 + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 154 + .byte 0x8a, 0x01, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 RockTunnel_B1F:: @ 834FB0C - .incbin "baserom.gba", 0x34FB0C, 0x1C + .4byte gMapData_RockTunnel_B1F @ 0x8314008 + .4byte gMapEvents_RockTunnel_B1F @ 0x83B1DD0 + .4byte gMapScripts_RockTunnel_B1F @ 0x8162E8A + .4byte NULL + .2byte BGM_FRLG_MT_MOON + .2byte 155 + .byte 0x8a, 0x01, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SeafoamIslands_1F:: @ 834FB28 - .incbin "baserom.gba", 0x34FB28, 0x1C + .4byte gMapData_SeafoamIslands_1F @ 0x831474C + .4byte gMapEvents_SeafoamIslands_1F @ 0x83B1E64 + .4byte gMapScripts_SeafoamIslands_1F @ 0x8162F43 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 156 + .byte 0x8b, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SeafoamIslands_B1F:: @ 834FB44 - .incbin "baserom.gba", 0x34FB44, 0x1C + .4byte gMapData_SeafoamIslands_B1F @ 0x8314E44 + .4byte gMapEvents_SeafoamIslands_B1F @ 0x83B1F30 + .4byte gMapScripts_SeafoamIslands_B1F @ 0x8162F4D + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 157 + .byte 0x8b, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SeafoamIslands_B2F:: @ 834FB60 - .incbin "baserom.gba", 0x34FB60, 0x1C + .4byte gMapData_SeafoamIslands_B2F @ 0x8315588 + .4byte gMapEvents_SeafoamIslands_B2F @ 0x83B1FE4 + .4byte gMapScripts_SeafoamIslands_B2F @ 0x8162F4E + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 158 + .byte 0x8b, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SeafoamIslands_B3F:: @ 834FB7C - .incbin "baserom.gba", 0x34FB7C, 0x1C + .4byte gMapData_SeafoamIslands_B3F @ 0x8315CCC + .4byte gMapEvents_SeafoamIslands_B3F @ 0x83B20DC + .4byte gMapScripts_SeafoamIslands_B3F @ 0x8162F4F + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 159 + .byte 0x8b, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SeafoamIslands_B4F:: @ 834FB98 - .incbin "baserom.gba", 0x34FB98, 0x1C + .4byte gMapData_SeafoamIslands_B4F @ 0x8316410 + .4byte gMapEvents_SeafoamIslands_B4F @ 0x83B21C4 + .4byte gMapScripts_SeafoamIslands_B4F @ 0x816302E + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 160 + .byte 0x8b, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 PokemonTower_1F:: @ 834FBB4 - .incbin "baserom.gba", 0x34FBB4, 0x1C + .4byte gMapData_PokemonTower_1F @ 0x83167F4 + .4byte gMapEvents_PokemonTower_1F @ 0x83B2270 + .4byte gMapScripts_PokemonTower_1F @ 0x8163235 + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 161 + .byte 0x8c, 0x00, 0x00, 0x08, 0x00, 0x05, 0x00, 0x02 PokemonTower_2F:: @ 834FBD0 - .incbin "baserom.gba", 0x34FBD0, 0x1C + .4byte gMapData_PokemonTower_2F @ 0x8316BD8 + .4byte gMapEvents_PokemonTower_2F @ 0x83B22E4 + .4byte gMapScripts_PokemonTower_2F @ 0x8163285 + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 162 + .byte 0x8c, 0x00, 0x00, 0x08, 0x00, 0x05, 0x00, 0x02 PokemonTower_3F:: @ 834FBEC - .incbin "baserom.gba", 0x34FBEC, 0x1C + .4byte gMapData_PokemonTower_3F @ 0x8316FBC + .4byte gMapEvents_PokemonTower_3F @ 0x83B2368 + .4byte gMapScripts_PokemonTower_3F @ 0x81633A6 + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 163 + .byte 0x8c, 0x00, 0x06, 0x08, 0x00, 0x05, 0x00, 0x02 PokemonTower_4F:: @ 834FC08 - .incbin "baserom.gba", 0x34FC08, 0x1C + .4byte gMapData_PokemonTower_4F @ 0x83173A0 + .4byte gMapEvents_PokemonTower_4F @ 0x83B241C + .4byte gMapScripts_PokemonTower_4F @ 0x81633EC + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 164 + .byte 0x8c, 0x00, 0x06, 0x08, 0x00, 0x05, 0x00, 0x02 PokemonTower_5F:: @ 834FC24 - .incbin "baserom.gba", 0x34FC24, 0x1C + .4byte gMapData_PokemonTower_5F @ 0x8317784 + .4byte gMapEvents_PokemonTower_5F @ 0x83B2604 + .4byte gMapScripts_PokemonTower_5F @ 0x8163432 + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 165 + .byte 0x8c, 0x00, 0x06, 0x08, 0x00, 0x05, 0x00, 0x02 PokemonTower_6F:: @ 834FC40 - .incbin "baserom.gba", 0x34FC40, 0x1C + .4byte gMapData_PokemonTower_6F @ 0x8317B68 + .4byte gMapEvents_PokemonTower_6F @ 0x83B26C0 + .4byte gMapScripts_PokemonTower_6F @ 0x81634B7 + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 166 + .byte 0x8c, 0x00, 0x06, 0x08, 0x00, 0x05, 0x00, 0x02 PokemonTower_7F:: @ 834FC5C - .incbin "baserom.gba", 0x34FC5C, 0x1C + .4byte gMapData_PokemonTower_7F @ 0x8317F4C + .4byte gMapEvents_PokemonTower_7F @ 0x83B2748 + .4byte gMapScripts_PokemonTower_7F @ 0x8163559 + .4byte NULL + .2byte BGM_FRLG_POKEMON_TOWER + .2byte 167 + .byte 0x8c, 0x00, 0x06, 0x08, 0x00, 0x05, 0x00, 0x02 PowerPlant:: @ 834FC78 - .incbin "baserom.gba", 0x34FC78, 0x1C + .4byte gMapData_PowerPlant @ 0x8318EC0 + .4byte gMapEvents_PowerPlant @ 0x83B285C + .4byte gMapScripts_PowerPlant @ 0x8163764 + .4byte NULL + .2byte BGM_FRLG_POKEMON_MANSION + .2byte 168 + .byte 0x8e, 0x00, 0x00, 0x08, 0x00, 0x07, 0x00, 0x03 MtEmber_RubyPath_B4F:: @ 834FC94 - .incbin "baserom.gba", 0x34FC94, 0x1C + .4byte gMapData_MtEmber_RubyPath_B4F @ 0x8339290 + .4byte gMapEvents_MtEmber_RubyPath_B4F @ 0x83B29B8 + .4byte gMapScripts_MtEmber_RubyPath_B4F @ 0x81638EB + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 269 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_Exterior:: @ 834FCB0 - .incbin "baserom.gba", 0x34FCB0, 0x1C + .4byte gMapData_MtEmber_Exterior @ 0x833D660 + .4byte gMapEvents_MtEmber_Exterior @ 0x83B2C24 + .4byte gMapScripts_MtEmber_Exterior @ 0x8163946 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 280 + .byte 0xaf, 0x00, 0x00, 0x03, 0x01, 0x06, 0x00, 0x00 MtEmber_SummitPath_1F:: @ 834FCCC - .incbin "baserom.gba", 0x34FCCC, 0x1C + .4byte gMapData_MtEmber_SummitPath_1F @ 0x833DC08 + .4byte gMapEvents_MtEmber_SummitPath_1F @ 0x83B2C48 + .4byte gMapScripts_MtEmber_SummitPath_1F @ 0x8163AF9 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 282 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_SummitPath_2F:: @ 834FCE8 - .incbin "baserom.gba", 0x34FCE8, 0x1C + .4byte gMapData_MtEmber_SummitPath_2F @ 0x833ED6C + .4byte gMapEvents_MtEmber_SummitPath_2F @ 0x83B2D44 + .4byte gMapScripts_MtEmber_SummitPath_2F @ 0x8163AFA + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 283 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_SummitPath_3F:: @ 834FD04 - .incbin "baserom.gba", 0x34FD04, 0x1C + .4byte gMapData_MtEmber_SummitPath_3F @ 0x833EEDC + .4byte gMapEvents_MtEmber_SummitPath_3F @ 0x83B2D68 + .4byte gMapScripts_MtEmber_SummitPath_3F @ 0x8163AFB + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 284 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_Summit:: @ 834FD20 - .incbin "baserom.gba", 0x34FD20, 0x1C + .4byte gMapData_MtEmber_Summit @ 0x833D9C8 + .4byte gMapEvents_MtEmber_Summit @ 0x83B2DFC + .4byte gMapScripts_MtEmber_Summit @ 0x8163AFC + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 281 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_RubyPath_B5F:: @ 834FD3C - .incbin "baserom.gba", 0x34FD3C, 0x1C + .4byte gMapData_MtEmber_RubyPath_B5F @ 0x833FF60 + .4byte gMapEvents_MtEmber_RubyPath_B5F @ 0x83B2E3C + .4byte gMapScripts_MtEmber_RubyPath_B5F @ 0x8163BAA + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 291 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SSAnne_Kitchen3:: @ 834FD58 - .incbin "baserom.gba", 0x34FD58, 0x1C + .4byte gMapData_SSAnne_Kitchen3 @ 0x833F304 + .4byte gMapEvents_SSAnne_Kitchen3 @ 0x83B2EE0 + .4byte gMapScripts_SSAnne_Kitchen3 @ 0x8163C45 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 285 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_RubyPath_B1F:: @ 834FD74 - .incbin "baserom.gba", 0x34FD74, 0x1C + .4byte gMapData_MtEmber_RubyPath_B1F @ 0x833F524 + .4byte gMapEvents_MtEmber_RubyPath_B1F @ 0x83B2F64 + .4byte gMapScripts_MtEmber_RubyPath_B1F @ 0x8163C46 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 286 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_RubyPath_B2F:: @ 834FD90 - .incbin "baserom.gba", 0x34FD90, 0x1C + .4byte gMapData_MtEmber_RubyPath_B2F @ 0x833F6A8 + .4byte gMapEvents_MtEmber_RubyPath_B2F @ 0x83B3030 + .4byte gMapScripts_MtEmber_RubyPath_B2F @ 0x8163C47 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 287 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_RubyPath_B3F:: @ 834FDAC - .incbin "baserom.gba", 0x34FDAC, 0x1C + .4byte gMapData_MtEmber_RubyPath_B3F @ 0x833FC60 + .4byte gMapEvents_MtEmber_RubyPath_B3F @ 0x83B314C + .4byte gMapScripts_MtEmber_RubyPath_B3F @ 0x8163C48 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 288 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_RubyPath_B1F_Stairs:: @ 834FDC8 - .incbin "baserom.gba", 0x34FDC8, 0x1C + .4byte gMapData_MtEmber_RubyPath_B1F_Stairs @ 0x833FCD8 + .4byte gMapEvents_MtEmber_RubyPath_B1F_Stairs @ 0x83B3188 + .4byte gMapScripts_MtEmber_RubyPath_B1F_Stairs @ 0x8163C6F + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 289 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 MtEmber_RubyPath_B2F_Stairs:: @ 834FDE4 - .incbin "baserom.gba", 0x34FDE4, 0x1C + .4byte gMapData_MtEmber_RubyPath_B2F_Stairs @ 0x833FD5C + .4byte gMapEvents_MtEmber_RubyPath_B2F_Stairs @ 0x83B31DC + .4byte gMapScripts_MtEmber_RubyPath_B2F_Stairs @ 0x8163C70 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 290 + .byte 0xaf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 ThreeIsland_BerryForest:: @ 834FE00 - .incbin "baserom.gba", 0x34FE00, 0x1C + .4byte gMapData_ThreeIsland_BerryForest @ 0x833A7A8 + .4byte gMapEvents_ThreeIsland_BerryForest @ 0x83B340C + .4byte gMapScripts_ThreeIsland_BerryForest @ 0x8163C71 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 270 + .byte 0xb0, 0x00, 0x0b, 0x03, 0x01, 0x07, 0x00, 0x00 FourIsland_IcefallCave_Entrance:: @ 834FE1C - .incbin "baserom.gba", 0x34FE1C, 0x1C + .4byte gMapData_FourIsland_IcefallCave_Entrance @ 0x8340E38 + .4byte gMapEvents_FourIsland_IcefallCave_Entrance @ 0x83B3438 + .4byte gMapScripts_FourIsland_IcefallCave_Entrance @ 0x8163D3A + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 293 + .byte 0xb1, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 FourIsland_IcefallCave_1F:: @ 834FE38 - .incbin "baserom.gba", 0x34FE38, 0x1C + .4byte gMapData_FourIsland_IcefallCave_1F @ 0x834117C + .4byte gMapEvents_FourIsland_IcefallCave_1F @ 0x83B34AC + .4byte gMapScripts_FourIsland_IcefallCave_1F @ 0x8163D44 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 294 + .byte 0xb1, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SSAnne_CaptainsOffice2:: @ 834FE54 - .incbin "baserom.gba", 0x34FE54, 0x1C + .4byte gMapData_SSAnne_CaptainsOffice2 @ 0x8341560 + .4byte gMapEvents_SSAnne_CaptainsOffice2 @ 0x83B3508 + .4byte gMapScripts_SSAnne_CaptainsOffice2 @ 0x8163D81 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 295 + .byte 0xb1, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SSAnne_CaptainsOffice3:: @ 834FE70 - .incbin "baserom.gba", 0x34FE70, 0x1C + .4byte gMapData_SSAnne_CaptainsOffice3 @ 0x8341A98 + .4byte gMapEvents_SSAnne_CaptainsOffice3 @ 0x83B35B4 + .4byte gMapScripts_SSAnne_CaptainsOffice3 @ 0x8163D82 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 296 + .byte 0xb1, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SSAnne_CaptainsOffice4:: @ 834FE8C - .incbin "baserom.gba", 0x34FE8C, 0x1C + .4byte gMapData_SSAnne_CaptainsOffice4 @ 0x83405A4 + .4byte gMapEvents_SSAnne_CaptainsOffice4 @ 0x83B381C + .4byte gMapScripts_SSAnne_CaptainsOffice4 @ 0x8163F2E + .4byte NULL + .2byte BGM_FRLG_ROCKET_HIDEOUT + .2byte 292 + .byte 0xb2, 0x00, 0x00, 0x08, 0x00, 0x05, 0x00, 0x03 SSAnne_CaptainsOffice5:: @ 834FEA8 - .incbin "baserom.gba", 0x34FEA8, 0x1C + .4byte gMapData_SSAnne_CaptainsOffice5 @ 0x83436C4 + .4byte gMapEvents_SSAnne_CaptainsOffice5 @ 0x83B3850 + .4byte gMapScripts_SSAnne_CaptainsOffice5 @ 0x8164182 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 309 + .byte 0xb4, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SixIsland_DottedHole_B1F:: @ 834FEC4 - .incbin "baserom.gba", 0x34FEC4, 0x1C + .4byte gMapData_SixIsland_DottedHole_B1F @ 0x8343808 + .4byte gMapEvents_SixIsland_DottedHole_B1F @ 0x83B3898 + .4byte gMapScripts_SixIsland_DottedHole_B1F @ 0x81641B0 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 310 + .byte 0xb4, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SixIsland_DottedHole_B2F:: @ 834FEE0 - .incbin "baserom.gba", 0x34FEE0, 0x1C + .4byte gMapData_SixIsland_DottedHole_B2F @ 0x834394C + .4byte gMapEvents_SixIsland_DottedHole_B2F @ 0x83B38E0 + .4byte gMapScripts_SixIsland_DottedHole_B2F @ 0x81641B1 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 311 + .byte 0xb4, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SixIsland_DottedHole_B3F:: @ 834FEFC - .incbin "baserom.gba", 0x34FEFC, 0x1C + .4byte gMapData_SixIsland_DottedHole_B3F @ 0x8343A90 + .4byte gMapEvents_SixIsland_DottedHole_B3F @ 0x83B3928 + .4byte gMapScripts_SixIsland_DottedHole_B3F @ 0x81641B2 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 312 + .byte 0xb4, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SSAnne_CaptainsOffice9:: @ 834FF18 - .incbin "baserom.gba", 0x34FF18, 0x1C + .4byte gMapData_SSAnne_CaptainsOffice9 @ 0x8343BD4 + .4byte gMapEvents_SSAnne_CaptainsOffice9 @ 0x83B3970 + .4byte gMapScripts_SSAnne_CaptainsOffice9 @ 0x81641B3 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 313 + .byte 0xb4, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SixIsland_DottedHole_SapphireRoom:: @ 834FF34 - .incbin "baserom.gba", 0x34FF34, 0x1C + .4byte gMapData_SixIsland_DottedHole_SapphireRoom @ 0x8343DD8 + .4byte gMapEvents_SixIsland_DottedHole_SapphireRoom @ 0x83B39D0 + .4byte gMapScripts_SixIsland_DottedHole_SapphireRoom @ 0x81641B4 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 314 + .byte 0xb4, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SSAnne_1F_Room11:: @ 834FF50 - .incbin "baserom.gba", 0x34FF50, 0x1C + .4byte gMapData_SSAnne_1F_Room11 @ 0x8345030 + .4byte gMapEvents_SSAnne_1F_Room11 @ 0x83B3B34 + .4byte gMapScripts_SSAnne_1F_Room11 @ 0x8164559 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 317 + .byte 0xb6, 0x00, 0x00, 0x03, 0x01, 0x07, 0x00, 0x00 SSAnne_1F_Room12:: @ 834FF6C - .incbin "baserom.gba", 0x34FF6C, 0x1C + .4byte gMapData_SSAnne_1F_Room12 @ 0x8347A50 + .4byte gMapEvents_SSAnne_1F_Room12 @ 0x83B3B50 + .4byte gMapScripts_SSAnne_1F_Room12 @ 0x81646A4 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 340 + .byte 0xb7, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 NavelRock_Exterior:: @ 834FF88 - .incbin "baserom.gba", 0x34FF88, 0x1C + .4byte gMapData_NavelRock_Exterior @ 0x834873C + .4byte gMapEvents_NavelRock_Exterior @ 0x83B3B74 + .4byte gMapScripts_NavelRock_Exterior @ 0x81646AE + .4byte NULL + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 343 + .byte 0xae, 0x00, 0x00, 0x03, 0x01, 0x06, 0x00, 0x00 SevenIsland_TrainerTower_1F:: @ 834FFA4 - .incbin "baserom.gba", 0x34FFA4, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_1F @ 0x8341FCC + .4byte gMapEvents_SevenIsland_TrainerTower_1F @ 0x83B3C40 + .4byte gMapScripts_SevenIsland_TrainerTower_1F @ 0x81646B8 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 298 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_2F:: @ 834FFC0 - .incbin "baserom.gba", 0x34FFC0, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_2F @ 0x8342254 + .4byte gMapEvents_SevenIsland_TrainerTower_2F @ 0x83B3D14 + .4byte gMapScripts_SevenIsland_TrainerTower_2F @ 0x81646E6 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 299 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_3F:: @ 834FFDC - .incbin "baserom.gba", 0x34FFDC, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_3F @ 0x83424DC + .4byte gMapEvents_SevenIsland_TrainerTower_3F @ 0x83B3DE8 + .4byte gMapScripts_SevenIsland_TrainerTower_3F @ 0x8164714 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 300 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_4F:: @ 834FFF8 - .incbin "baserom.gba", 0x34FFF8, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_4F @ 0x8342764 + .4byte gMapEvents_SevenIsland_TrainerTower_4F @ 0x83B3EBC + .4byte gMapScripts_SevenIsland_TrainerTower_4F @ 0x8164742 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 301 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_5F:: @ 8350014 - .incbin "baserom.gba", 0x350014, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_5F @ 0x83429EC + .4byte gMapEvents_SevenIsland_TrainerTower_5F @ 0x83B3F90 + .4byte gMapScripts_SevenIsland_TrainerTower_5F @ 0x8164770 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 302 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_6F:: @ 8350030 - .incbin "baserom.gba", 0x350030, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_6F @ 0x8342C74 + .4byte gMapEvents_SevenIsland_TrainerTower_6F @ 0x83B4064 + .4byte gMapScripts_SevenIsland_TrainerTower_6F @ 0x816479E + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 303 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_7F:: @ 835004C - .incbin "baserom.gba", 0x35004C, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_7F @ 0x8342EFC + .4byte gMapEvents_SevenIsland_TrainerTower_7F @ 0x83B4138 + .4byte gMapScripts_SevenIsland_TrainerTower_7F @ 0x81647CC + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 304 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_8F:: @ 8350068 - .incbin "baserom.gba", 0x350068, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_8F @ 0x8343184 + .4byte gMapEvents_SevenIsland_TrainerTower_8F @ 0x83B420C + .4byte gMapScripts_SevenIsland_TrainerTower_8F @ 0x81647FA + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 305 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_Roof:: @ 8350084 - .incbin "baserom.gba", 0x350084, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_Roof @ 0x83433E8 + .4byte gMapEvents_SevenIsland_TrainerTower_Roof @ 0x83B4248 + .4byte gMapScripts_SevenIsland_TrainerTower_Roof @ 0x8164828 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 306 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_Lobby:: @ 83500A0 - .incbin "baserom.gba", 0x3500A0, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_Lobby @ 0x8341D44 + .4byte gMapEvents_SevenIsland_TrainerTower_Lobby @ 0x83B4308 + .4byte gMapScripts_SevenIsland_TrainerTower_Lobby @ 0x8164839 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 297 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 SevenIsland_TrainerTower_Elevator:: @ 83500BC - .incbin "baserom.gba", 0x3500BC, 0x1C + .4byte gMapData_SevenIsland_TrainerTower_Elevator @ 0x8343454 + .4byte gMapEvents_SevenIsland_TrainerTower_Elevator @ 0x83B4330 + .4byte gMapScripts_SevenIsland_TrainerTower_Elevator @ 0x8164AF8 + .4byte NULL + .2byte BGM_FRLG_TRAINER_TOWER + .2byte 307 + .byte 0xb3, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00 FiveIsland_LostCave_Entrance:: @ 83500D8 - .incbin "baserom.gba", 0x3500D8, 0x1C + .4byte gMapData_FiveIsland_LostCave_Entrance @ 0x83454D8 + .4byte gMapEvents_FiveIsland_LostCave_Entrance @ 0x83B4354 + .4byte gMapScripts_FiveIsland_LostCave_Entrance @ 0x8164BEC + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 320 + .byte 0xb5, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room1:: @ 83500F4 - .incbin "baserom.gba", 0x3500F4, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room1 @ 0x83455F0 + .4byte gMapEvents_FiveIsland_LostCave_Room1 @ 0x83B43A8 + .4byte gMapScripts_FiveIsland_LostCave_Room1 @ 0x8164BF6 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 321 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room2:: @ 8350110 - .incbin "baserom.gba", 0x350110, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room2 @ 0x8345708 + .4byte gMapEvents_FiveIsland_LostCave_Room2 @ 0x83B43DC + .4byte gMapScripts_FiveIsland_LostCave_Room2 @ 0x8164C0E + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 322 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room3:: @ 835012C - .incbin "baserom.gba", 0x35012C, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room3 @ 0x8345820 + .4byte gMapEvents_FiveIsland_LostCave_Room3 @ 0x83B4410 + .4byte gMapScripts_FiveIsland_LostCave_Room3 @ 0x8164C0F + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 323 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room4:: @ 8350148 - .incbin "baserom.gba", 0x350148, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room4 @ 0x8345938 + .4byte gMapEvents_FiveIsland_LostCave_Room4 @ 0x83B445C + .4byte gMapScripts_FiveIsland_LostCave_Room4 @ 0x8164C10 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 324 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room5:: @ 8350164 - .incbin "baserom.gba", 0x350164, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room5 @ 0x8345A50 + .4byte gMapEvents_FiveIsland_LostCave_Room5 @ 0x83B4490 + .4byte gMapScripts_FiveIsland_LostCave_Room5 @ 0x8164C28 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 325 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room6:: @ 8350180 - .incbin "baserom.gba", 0x350180, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room6 @ 0x8345B68 + .4byte gMapEvents_FiveIsland_LostCave_Room6 @ 0x83B44C4 + .4byte gMapScripts_FiveIsland_LostCave_Room6 @ 0x8164C29 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 326 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room7:: @ 835019C - .incbin "baserom.gba", 0x35019C, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room7 @ 0x8345C80 + .4byte gMapEvents_FiveIsland_LostCave_Room7 @ 0x83B44F8 + .4byte gMapScripts_FiveIsland_LostCave_Room7 @ 0x8164C2A + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 327 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room8:: @ 83501B8 - .incbin "baserom.gba", 0x3501B8, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room8 @ 0x8345D98 + .4byte gMapEvents_FiveIsland_LostCave_Room8 @ 0x83B452C + .4byte gMapScripts_FiveIsland_LostCave_Room8 @ 0x8164C2B + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 328 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room9:: @ 83501D4 - .incbin "baserom.gba", 0x3501D4, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room9 @ 0x8345EB0 + .4byte gMapEvents_FiveIsland_LostCave_Room9 @ 0x83B4560 + .4byte gMapScripts_FiveIsland_LostCave_Room9 @ 0x8164C2C + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 329 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room10:: @ 83501F0 - .incbin "baserom.gba", 0x3501F0, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room10 @ 0x8345FC8 + .4byte gMapEvents_FiveIsland_LostCave_Room10 @ 0x83B45AC + .4byte gMapScripts_FiveIsland_LostCave_Room10 @ 0x8164C2D + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 330 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room11:: @ 835020C - .incbin "baserom.gba", 0x35020C, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room11 @ 0x83460E0 + .4byte gMapEvents_FiveIsland_LostCave_Room11 @ 0x83B45E0 + .4byte gMapScripts_FiveIsland_LostCave_Room11 @ 0x8164CCB + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 331 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room12:: @ 8350228 - .incbin "baserom.gba", 0x350228, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room12 @ 0x83461F8 + .4byte gMapEvents_FiveIsland_LostCave_Room12 @ 0x83B4614 + .4byte gMapScripts_FiveIsland_LostCave_Room12 @ 0x8164CCC + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 332 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room13:: @ 8350244 - .incbin "baserom.gba", 0x350244, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room13 @ 0x8346310 + .4byte gMapEvents_FiveIsland_LostCave_Room13 @ 0x83B4648 + .4byte gMapScripts_FiveIsland_LostCave_Room13 @ 0x8164CCD + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 333 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 FiveIsland_LostCave_Room14:: @ 8350260 - .incbin "baserom.gba", 0x350260, 0x1C + .4byte gMapData_FiveIsland_LostCave_Room14 @ 0x8346428 + .4byte gMapEvents_FiveIsland_LostCave_Room14 @ 0x83B467C + .4byte gMapScripts_FiveIsland_LostCave_Room14 @ 0x8164CCE + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 334 + .byte 0xb5, 0x00, 0x06, 0x04, 0x01, 0x07, 0x00, 0x00 SevenIsland_TanobyRuins_MoneanChamber:: @ 835027C - .incbin "baserom.gba", 0x35027C, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins_MoneanChamber @ 0x834675C + .4byte gMapEvents_SevenIsland_TanobyRuins_MoneanChamber @ 0x83B4698 + .4byte gMapScripts_SevenIsland_TanobyRuins_MoneanChamber @ 0x8164CCF + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 335 + .byte 0xbc, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 SevenIsland_TanobyRuins_LiptooChamber:: @ 8350298 - .incbin "baserom.gba", 0x350298, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins_LiptooChamber @ 0x8346A90 + .4byte gMapEvents_SevenIsland_TanobyRuins_LiptooChamber @ 0x83B46B4 + .4byte gMapScripts_SevenIsland_TanobyRuins_LiptooChamber @ 0x8164CDE + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 336 + .byte 0xbd, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 SevenIsland_TanobyRuins_WeepthChamber:: @ 83502B4 - .incbin "baserom.gba", 0x3502B4, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins_WeepthChamber @ 0x8346DC4 + .4byte gMapEvents_SevenIsland_TanobyRuins_WeepthChamber @ 0x83B46D0 + .4byte gMapScripts_SevenIsland_TanobyRuins_WeepthChamber @ 0x8164CEA + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 337 + .byte 0xbe, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 SevenIsland_TanobyRuins_DilfordChamber:: @ 83502D0 - .incbin "baserom.gba", 0x3502D0, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins_DilfordChamber @ 0x83470F8 + .4byte gMapEvents_SevenIsland_TanobyRuins_DilfordChamber @ 0x83B46EC + .4byte gMapScripts_SevenIsland_TanobyRuins_DilfordChamber @ 0x8164CF6 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 338 + .byte 0xbf, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 SevenIsland_TanobyRuins_ScufibChamber:: @ 83502EC - .incbin "baserom.gba", 0x3502EC, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins_ScufibChamber @ 0x834742C + .4byte gMapEvents_SevenIsland_TanobyRuins_ScufibChamber @ 0x83B4708 + .4byte gMapScripts_SevenIsland_TanobyRuins_ScufibChamber @ 0x8164D02 + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 339 + .byte 0xc0, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 SevenIsland_TanobyRuins_RixyChamber:: @ 8350308 - .incbin "baserom.gba", 0x350308, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins_RixyChamber @ 0x8349DC8 + .4byte gMapEvents_SevenIsland_TanobyRuins_RixyChamber @ 0x83B4724 + .4byte gMapScripts_SevenIsland_TanobyRuins_RixyChamber @ 0x8164D0E + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 362 + .byte 0xc1, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 SevenIsland_TanobyRuins_ViapoisChamber:: @ 8350324 - .incbin "baserom.gba", 0x350324, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins_ViapoisChamber @ 0x834A0FC + .4byte gMapEvents_SevenIsland_TanobyRuins_ViapoisChamber @ 0x83B4740 + .4byte gMapScripts_SevenIsland_TanobyRuins_ViapoisChamber @ 0x8164D1A + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 363 + .byte 0xc2, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 ThreeIsland_DunsparceTunnel:: @ 8350340 - .incbin "baserom.gba", 0x350340, 0x1C + .4byte gMapData_ThreeIsland_DunsparceTunnel @ 0x83451F8 + .4byte gMapEvents_ThreeIsland_DunsparceTunnel @ 0x83B4788 + .4byte gMapScripts_ThreeIsland_DunsparceTunnel @ 0x8164D26 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 318 + .byte 0xb9, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x00 SevenIsland_SeavaultCanyon_TanobyKey:: @ 835035C - .incbin "baserom.gba", 0x35035C, 0x1C + .4byte gMapData_SevenIsland_SeavaultCanyon_TanobyKey @ 0x8347C54 + .4byte gMapEvents_SevenIsland_SeavaultCanyon_TanobyKey @ 0x83B48BC + .4byte gMapScripts_SevenIsland_SeavaultCanyon_TanobyKey @ 0x8164DCC + .4byte NULL + .2byte BGM_FRLG_TANOBY_RUINS + .2byte 341 + .byte 0xba, 0x00, 0x00, 0x04, 0x01, 0x07, 0x00, 0x02 NavelRock_1F:: @ 8350378 - .incbin "baserom.gba", 0x350378, 0x1C + .4byte gMapData_NavelRock_1F @ 0x8348AD4 + .4byte gMapEvents_NavelRock_1F @ 0x83B48E0 + .4byte gMapScripts_NavelRock_1F @ 0x8164F9E + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 344 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_Summit:: @ 8350394 - .incbin "baserom.gba", 0x350394, 0x1C + .4byte gMapData_NavelRock_Summit @ 0x8348EB0 + .4byte gMapEvents_NavelRock_Summit @ 0x83B4930 + .4byte gMapScripts_NavelRock_Summit @ 0x8164F9F + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 345 + .byte 0xae, 0x00, 0x0b, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_Base:: @ 83503B0 - .incbin "baserom.gba", 0x3503B0, 0x1C + .4byte gMapData_NavelRock_Base @ 0x834929C + .4byte gMapEvents_NavelRock_Base @ 0x83B4964 + .4byte gMapScripts_NavelRock_Base @ 0x81650E7 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 346 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_SummitPath_2F:: @ 83503CC - .incbin "baserom.gba", 0x3503CC, 0x1C + .4byte gMapData_NavelRock_SummitPath_2F @ 0x8349324 + .4byte gMapEvents_NavelRock_SummitPath_2F @ 0x83B4988 + .4byte gMapScripts_NavelRock_SummitPath_2F @ 0x81651F2 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 347 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_SummitPath_3F:: @ 83503E8 - .incbin "baserom.gba", 0x3503E8, 0x1C + .4byte gMapData_NavelRock_SummitPath_3F @ 0x83493AC + .4byte gMapEvents_NavelRock_SummitPath_3F @ 0x83B49AC + .4byte gMapScripts_NavelRock_SummitPath_3F @ 0x81651F3 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 348 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_SummitPath_4F:: @ 8350404 - .incbin "baserom.gba", 0x350404, 0x1C + .4byte gMapData_NavelRock_SummitPath_4F @ 0x8349434 + .4byte gMapEvents_NavelRock_SummitPath_4F @ 0x83B49D0 + .4byte gMapScripts_NavelRock_SummitPath_4F @ 0x81651F4 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 349 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_SummitPath_5F:: @ 8350420 - .incbin "baserom.gba", 0x350420, 0x1C + .4byte gMapData_NavelRock_SummitPath_5F @ 0x83494BC + .4byte gMapEvents_NavelRock_SummitPath_5F @ 0x83B49F4 + .4byte gMapScripts_NavelRock_SummitPath_5F @ 0x81651F5 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 350 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B1F:: @ 835043C - .incbin "baserom.gba", 0x35043C, 0x1C + .4byte gMapData_NavelRock_BasePath_B1F @ 0x8349544 + .4byte gMapEvents_NavelRock_BasePath_B1F @ 0x83B4A18 + .4byte gMapScripts_NavelRock_BasePath_B1F @ 0x81651F6 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 351 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B2F:: @ 8350458 - .incbin "baserom.gba", 0x350458, 0x1C + .4byte gMapData_NavelRock_BasePath_B2F @ 0x83495CC + .4byte gMapEvents_NavelRock_BasePath_B2F @ 0x83B4A3C + .4byte gMapScripts_NavelRock_BasePath_B2F @ 0x81651F7 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 352 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B3F:: @ 8350474 - .incbin "baserom.gba", 0x350474, 0x1C + .4byte gMapData_NavelRock_BasePath_B3F @ 0x8349654 + .4byte gMapEvents_NavelRock_BasePath_B3F @ 0x83B4A60 + .4byte gMapScripts_NavelRock_BasePath_B3F @ 0x81651F8 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 353 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B4F:: @ 8350490 - .incbin "baserom.gba", 0x350490, 0x1C + .4byte gMapData_NavelRock_BasePath_B4F @ 0x83496DC + .4byte gMapEvents_NavelRock_BasePath_B4F @ 0x83B4A84 + .4byte gMapScripts_NavelRock_BasePath_B4F @ 0x81651F9 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 354 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B5F:: @ 83504AC - .incbin "baserom.gba", 0x3504AC, 0x1C + .4byte gMapData_NavelRock_BasePath_B5F @ 0x8349764 + .4byte gMapEvents_NavelRock_BasePath_B5F @ 0x83B4AA8 + .4byte gMapScripts_NavelRock_BasePath_B5F @ 0x81651FA + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 355 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B6F:: @ 83504C8 - .incbin "baserom.gba", 0x3504C8, 0x1C + .4byte gMapData_NavelRock_BasePath_B6F @ 0x83497EC + .4byte gMapEvents_NavelRock_BasePath_B6F @ 0x83B4ACC + .4byte gMapScripts_NavelRock_BasePath_B6F @ 0x81651FB + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 356 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B7F:: @ 83504E4 - .incbin "baserom.gba", 0x3504E4, 0x1C + .4byte gMapData_NavelRock_BasePath_B7F @ 0x8349874 + .4byte gMapEvents_NavelRock_BasePath_B7F @ 0x83B4AF0 + .4byte gMapScripts_NavelRock_BasePath_B7F @ 0x81651FC + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 357 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B8F:: @ 8350500 - .incbin "baserom.gba", 0x350500, 0x1C + .4byte gMapData_NavelRock_BasePath_B8F @ 0x83498FC + .4byte gMapEvents_NavelRock_BasePath_B8F @ 0x83B4B14 + .4byte gMapScripts_NavelRock_BasePath_B8F @ 0x81651FD + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 358 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B9F:: @ 835051C - .incbin "baserom.gba", 0x35051C, 0x1C + .4byte gMapData_NavelRock_BasePath_B9F @ 0x8349984 + .4byte gMapEvents_NavelRock_BasePath_B9F @ 0x83B4B38 + .4byte gMapScripts_NavelRock_BasePath_B9F @ 0x81651FE + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 359 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B10F:: @ 8350538 - .incbin "baserom.gba", 0x350538, 0x1C + .4byte gMapData_NavelRock_BasePath_B10F @ 0x8349A0C + .4byte gMapEvents_NavelRock_BasePath_B10F @ 0x83B4B5C + .4byte gMapScripts_NavelRock_BasePath_B10F @ 0x81651FF + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 360 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_BasePath_B11F:: @ 8350554 - .incbin "baserom.gba", 0x350554, 0x1C + .4byte gMapData_NavelRock_BasePath_B11F @ 0x8349A94 + .4byte gMapEvents_NavelRock_BasePath_B11F @ 0x83B4B80 + .4byte gMapScripts_NavelRock_BasePath_B11F @ 0x8165200 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 361 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_B1F:: @ 8350570 - .incbin "baserom.gba", 0x350570, 0x1C + .4byte gMapData_NavelRock_B1F @ 0x834A210 + .4byte gMapEvents_NavelRock_B1F @ 0x83B4BA4 + .4byte gMapScripts_NavelRock_B1F @ 0x8165201 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 364 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 NavelRock_Fork:: @ 835058C - .incbin "baserom.gba", 0x35058C, 0x1C + .4byte gMapData_NavelRock_Fork @ 0x834B9A4 + .4byte gMapEvents_NavelRock_Fork @ 0x83B4BD0 + .4byte gMapScripts_NavelRock_Fork @ 0x8165202 + .4byte NULL + .2byte BGM_FRLG_MT_EMBER + .2byte 365 + .byte 0xae, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 BirthIsland_Exterior:: @ 83505A8 - .incbin "baserom.gba", 0x3505A8, 0x1C + .4byte gMapData_BirthIsland_Exterior @ 0x8348380 + .4byte gMapEvents_BirthIsland_Exterior @ 0x83B4C1C + .4byte gMapScripts_BirthIsland_Exterior @ 0x8165203 + .4byte NULL + .2byte 0xFFFF + .2byte 342 + .byte 0xbb, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00 OneIsland_KindleRoad_EmberSpa:: @ 83505C4 - .incbin "baserom.gba", 0x3505C4, 0x1C + .4byte gMapData_OneIsland_KindleRoad_EmberSpa @ 0x834EB70 + .4byte gMapEvents_OneIsland_KindleRoad_EmberSpa @ 0x83B4CD8 + .4byte gMapScripts_OneIsland_KindleRoad_EmberSpa @ 0x816535B + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 383 + .byte 0xc3, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00 BirthIsland_Harbor:: @ 83505E0 - .incbin "baserom.gba", 0x3505E0, 0x1C + .4byte gMapData_BirthIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_BirthIsland_Harbor @ 0x83B4D24 + .4byte gMapScripts_BirthIsland_Harbor @ 0x81653E6 + .4byte NULL + .2byte 0xFFFF + .2byte 315 + .byte 0xbb, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 NavelRock_Harbor:: @ 83505FC - .incbin "baserom.gba", 0x3505FC, 0x1C + .4byte gMapData_NavelRock_Harbor @ 0x8343FB8 + .4byte gMapEvents_NavelRock_Harbor @ 0x83B4D70 + .4byte gMapScripts_NavelRock_Harbor @ 0x8165420 + .4byte NULL + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 315 + .byte 0xae, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PalletTown:: @ 8350618 - .incbin "baserom.gba", 0x350618, 0x1C + .4byte gMapData_PalletTown @ 0x82DD4C0 + .4byte gMapEvents_PalletTown @ 0x83B4E50 + .4byte gMapScripts_PalletTown @ 0x816545A + .4byte gMapConnections_PalletTown @ 0x835276C + .2byte BGM_FRLG_PALLET_TOWN + .2byte 78 + .byte 0x58, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 ViridianCity:: @ 8350634 - .incbin "baserom.gba", 0x350634, 0x1C + .4byte gMapData_ViridianCity @ 0x82DE3E4 + .4byte gMapEvents_ViridianCity @ 0x83B4FE0 + .4byte gMapScripts_ViridianCity @ 0x81658D3 + .4byte gMapConnections_ViridianCity @ 0x8352798 + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 79 + .byte 0x59, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 PewterCity:: @ 8350650 - .incbin "baserom.gba", 0x350650, 0x1C + .4byte gMapData_PewterCity @ 0x82DF308 + .4byte gMapEvents_PewterCity @ 0x83B518C + .4byte gMapScripts_PewterCity @ 0x8165B8E + .4byte gMapConnections_PewterCity @ 0x83527B8 + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 80 + .byte 0x5a, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 CeruleanCity:: @ 835066C - .incbin "baserom.gba", 0x35066C, 0x1C + .4byte gMapData_CeruleanCity @ 0x82E022C + .4byte gMapEvents_CeruleanCity @ 0x83B53E0 + .4byte gMapScripts_CeruleanCity @ 0x8166471 + .4byte gMapConnections_CeruleanCity @ 0x83527F0 + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 81 + .byte 0x5b, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 LavenderTown:: @ 8350688 - .incbin "baserom.gba", 0x350688, 0x1C + .4byte gMapData_LavenderTown @ 0x82E0610 + .4byte gMapEvents_LavenderTown @ 0x83B549C + .4byte gMapScripts_LavenderTown @ 0x816686B + .4byte gMapConnections_LavenderTown @ 0x835281C + .2byte BGM_FRLG_LAVENDER_TOWN + .2byte 82 + .byte 0x5c, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 VermilionCity:: @ 83506A4 - .incbin "baserom.gba", 0x3506A4, 0x1C + .4byte gMapData_VermilionCity @ 0x82E1534 + .4byte gMapEvents_VermilionCity @ 0x83B5648 + .4byte gMapScripts_VermilionCity @ 0x81668DC + .4byte gMapConnections_VermilionCity @ 0x835283C + .2byte BGM_FRLG_VERMILION_CITY + .2byte 83 + .byte 0x5d, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 CeladonCity:: @ 83506C0 - .incbin "baserom.gba", 0x3506C0, 0x1C + .4byte gMapData_CeladonCity @ 0x82E2818 + .4byte gMapEvents_CeladonCity @ 0x83B5898 + .4byte gMapScripts_CeladonCity @ 0x8166C8F + .4byte gMapConnections_CeladonCity @ 0x835285C + .2byte BGM_FRLG_CELADON_CITY + .2byte 84 + .byte 0x5e, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 FuchsiaCity:: @ 83506DC - .incbin "baserom.gba", 0x3506DC, 0x1C + .4byte gMapData_FuchsiaCity @ 0x82E373C + .4byte gMapEvents_FuchsiaCity @ 0x83B5B14 + .4byte gMapScripts_FuchsiaCity @ 0x8166D75 + .4byte gMapConnections_FuchsiaCity @ 0x8352888 + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 85 + .byte 0x5f, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 CinnabarIsland:: @ 83506F8 - .incbin "baserom.gba", 0x3506F8, 0x1C + .4byte gMapData_CinnabarIsland @ 0x82E3B20 + .4byte gMapEvents_CinnabarIsland @ 0x83B5BF0 + .4byte gMapScripts_CinnabarIsland @ 0x8166ED6 + .4byte gMapConnections_CinnabarIsland @ 0x83528A8 + .2byte BGM_FRLG_CINNABAR_ISLAND + .2byte 86 + .byte 0x60, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 IndigoPlateau_Exterior:: @ 8350714 - .incbin "baserom.gba", 0x350714, 0x1C + .4byte gMapData_IndigoPlateau_Exterior @ 0x82E3F04 + .4byte gMapEvents_IndigoPlateau_Exterior @ 0x83B5C3C + .4byte gMapScripts_IndigoPlateau_Exterior @ 0x816723B + .4byte gMapConnections_IndigoPlateau_Exterior @ 0x83528BC + .2byte BGM_FRLG_INDIGO_PLATEAU + .2byte 87 + .byte 0x61, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 SaffronCity_Duplicate:: @ 8350730 - .incbin "baserom.gba", 0x350730, 0x1C + .4byte gMapData_SaffronCity_Duplicate @ 0x831E8D4 + .4byte gMapEvents_SaffronCity_Duplicate @ 0x83B5E9C + .4byte gMapScripts_SaffronCity_Duplicate @ 0x816735F + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 207 + .byte 0x62, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 SaffronCity:: @ 835074C - .incbin "baserom.gba", 0x35074C, 0x1C + .4byte gMapData_SaffronCity @ 0x82E4E28 + .4byte gMapEvents_SaffronCity @ 0x83B5EB0 + .4byte gMapScripts_SaffronCity @ 0x8167483 + .4byte gMapConnections_SaffronCity @ 0x835292C + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 88 + .byte 0x62, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 OneIsland:: @ 8350768 - .incbin "baserom.gba", 0x350768, 0x1C + .4byte gMapData_OneIsland @ 0x8321714 + .4byte gMapEvents_OneIsland @ 0x83B5F44 + .4byte gMapScripts_OneIsland @ 0x8167484 + .4byte gMapConnections_OneIsland @ 0x835294C + .2byte BGM_FRLG_ISLAND_ONE + .2byte 230 + .byte 0x8f, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 TwoIsland:: @ 8350784 - .incbin "baserom.gba", 0x350784, 0x1C + .4byte gMapData_TwoIsland @ 0x8321EB8 + .4byte gMapEvents_TwoIsland @ 0x83B6074 + .4byte gMapScripts_TwoIsland @ 0x8167564 + .4byte gMapConnections_TwoIsland @ 0x8352960 + .2byte BGM_FRLG_ISLAND_ONE + .2byte 231 + .byte 0x90, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 ThreeIsland:: @ 83507A0 - .incbin "baserom.gba", 0x3507A0, 0x1C + .4byte gMapData_ThreeIsland @ 0x832265C + .4byte gMapEvents_ThreeIsland @ 0x83B62C8 + .4byte gMapScripts_ThreeIsland @ 0x81677AD + .4byte gMapConnections_ThreeIsland @ 0x8352980 + .2byte BGM_FRLG_ISLAND_ONE + .2byte 232 + .byte 0x91, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 FourIsland:: @ 83507BC - .incbin "baserom.gba", 0x3507BC, 0x1C + .4byte gMapData_FourIsland @ 0x8323580 + .4byte gMapEvents_FourIsland @ 0x83B646C + .4byte gMapScripts_FourIsland @ 0x8167CAE + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 233 + .byte 0x92, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 FiveIsland:: @ 83507D8 - .incbin "baserom.gba", 0x3507D8, 0x1C + .4byte gMapData_FiveIsland @ 0x8323964 + .4byte gMapEvents_FiveIsland @ 0x83B64F4 + .4byte gMapScripts_FiveIsland @ 0x8167E8E + .4byte gMapConnections_FiveIsland @ 0x83529A0 + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 234 + .byte 0x93, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 SevenIsland:: @ 83507F4 - .incbin "baserom.gba", 0x3507F4, 0x1C + .4byte gMapData_SevenIsland @ 0x8323D48 + .4byte gMapEvents_SevenIsland @ 0x83B657C + .4byte gMapScripts_SevenIsland @ 0x8167EB3 + .4byte gMapConnections_SevenIsland @ 0x83529C0 + .2byte BGM_FRLG_ISLAND_SIX + .2byte 235 + .byte 0x94, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 SixIsland:: @ 8350810 - .incbin "baserom.gba", 0x350810, 0x1C + .4byte gMapData_SixIsland @ 0x832430C + .4byte gMapEvents_SixIsland @ 0x83B65F8 + .4byte gMapScripts_SixIsland @ 0x8167ED8 + .4byte gMapConnections_SixIsland @ 0x83529D4 + .2byte BGM_FRLG_ISLAND_SIX + .2byte 236 + .byte 0x95, 0x00, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00 Route1:: @ 835082C - .incbin "baserom.gba", 0x35082C, 0x1C + .4byte gMapData_Route1 @ 0x82E55CC + .4byte gMapEvents_Route1 @ 0x83B6648 + .4byte gMapScripts_Route1 @ 0x8167EFD + .4byte gMapConnections_Route1 @ 0x83529F4 + .2byte BGM_FRLG_ROUTE_1 + .2byte 89 + .byte 0x65, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route2:: @ 8350848 - .incbin "baserom.gba", 0x350848, 0x1C + .4byte gMapData_Route2 @ 0x82E64F0 + .4byte gMapEvents_Route2 @ 0x83B676C + .4byte gMapScripts_Route2 @ 0x8167F64 + .4byte gMapConnections_Route2 @ 0x8352A14 + .2byte BGM_FRLG_ROUTE_1 + .2byte 90 + .byte 0x66, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route3:: @ 8350864 - .incbin "baserom.gba", 0x350864, 0x1C + .4byte gMapData_Route3 @ 0x82E7234 + .4byte gMapEvents_Route3 @ 0x83B6870 + .4byte gMapScripts_Route3 @ 0x8167F77 + .4byte gMapConnections_Route3 @ 0x8352A34 + .2byte BGM_FRLG_ROUTE_3 + .2byte 91 + .byte 0x67, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route4:: @ 8350880 - .incbin "baserom.gba", 0x350880, 0x1C + .4byte gMapData_Route4 @ 0x82E8338 + .4byte gMapEvents_Route4 @ 0x83B6980 + .4byte gMapScripts_Route4 @ 0x8167F8A + .4byte gMapConnections_Route4 @ 0x8352A54 + .2byte BGM_FRLG_ROUTE_3 + .2byte 92 + .byte 0x68, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route5:: @ 835089C - .incbin "baserom.gba", 0x35089C, 0x1C + .4byte gMapData_Route5 @ 0x82E925C + .4byte gMapEvents_Route5 @ 0x83B69C0 + .4byte gMapScripts_Route5 @ 0x8167FA7 + .4byte gMapConnections_Route5 @ 0x8352A74 + .2byte BGM_FRLG_ROUTE_3 + .2byte 93 + .byte 0x69, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route6:: @ 83508B8 - .incbin "baserom.gba", 0x3508B8, 0x1C + .4byte gMapData_Route6 @ 0x82E9A00 + .4byte gMapEvents_Route6 @ 0x83B6AA0 + .4byte gMapScripts_Route6 @ 0x8167FB1 + .4byte gMapConnections_Route6 @ 0x8352A94 + .2byte BGM_FRLG_ROUTE_3 + .2byte 94 + .byte 0x6a, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route7:: @ 83508D4 - .incbin "baserom.gba", 0x3508D4, 0x1C + .4byte gMapData_Route7 @ 0x82E9DE4 + .4byte gMapEvents_Route7 @ 0x83B6AF4 + .4byte gMapScripts_Route7 @ 0x8167FBB + .4byte gMapConnections_Route7 @ 0x8352AB4 + .2byte BGM_FRLG_ROUTE_3 + .2byte 95 + .byte 0x6b, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route8:: @ 83508F0 - .incbin "baserom.gba", 0x3508F0, 0x1C + .4byte gMapData_Route8 @ 0x82EA948 + .4byte gMapEvents_Route8 @ 0x83B6CB0 + .4byte gMapScripts_Route8 @ 0x8167FC5 + .4byte gMapConnections_Route8 @ 0x8352AD4 + .2byte BGM_FRLG_ROUTE_3 + .2byte 96 + .byte 0x6c, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route9:: @ 835090C - .incbin "baserom.gba", 0x35090C, 0x1C + .4byte gMapData_Route9 @ 0x82EB4AC + .4byte gMapEvents_Route9 @ 0x83B6E14 + .4byte gMapScripts_Route9 @ 0x8167FCF + .4byte gMapConnections_Route9 @ 0x8352AF4 + .2byte BGM_FRLG_ROUTE_3 + .2byte 97 + .byte 0x6d, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route10:: @ 8350928 - .incbin "baserom.gba", 0x350928, 0x1C + .4byte gMapData_Route10 @ 0x82EC3D0 + .4byte gMapEvents_Route10 @ 0x83B6FA0 + .4byte gMapScripts_Route10 @ 0x8167FD9 + .4byte gMapConnections_Route10 @ 0x8352B14 + .2byte BGM_FRLG_ROUTE_3 + .2byte 98 + .byte 0x6e, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route11:: @ 8350944 - .incbin "baserom.gba", 0x350944, 0x1C + .4byte gMapData_Route11 @ 0x82ECF34 + .4byte gMapEvents_Route11 @ 0x83B711C + .4byte gMapScripts_Route11 @ 0x8167FF6 + .4byte gMapConnections_Route11 @ 0x8352B34 + .2byte BGM_FRLG_ROUTE_11 + .2byte 99 + .byte 0x6f, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route12:: @ 8350960 - .incbin "baserom.gba", 0x350960, 0x1C + .4byte gMapData_Route12 @ 0x82EE5D8 + .4byte gMapEvents_Route12 @ 0x83B72DC + .4byte gMapScripts_Route12 @ 0x8168000 + .4byte gMapConnections_Route12 @ 0x8352B60 + .2byte BGM_FRLG_ROUTE_11 + .2byte 100 + .byte 0x70, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route13:: @ 835097C - .incbin "baserom.gba", 0x35097C, 0x1C + .4byte gMapData_Route13 @ 0x82EF13C + .4byte gMapEvents_Route13 @ 0x83B7428 + .4byte gMapScripts_Route13 @ 0x81680B5 + .4byte gMapConnections_Route13 @ 0x8352B80 + .2byte BGM_FRLG_ROUTE_11 + .2byte 101 + .byte 0x71, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route14:: @ 8350998 - .incbin "baserom.gba", 0x350998, 0x1C + .4byte gMapData_Route14 @ 0x82EFCA0 + .4byte gMapEvents_Route14 @ 0x83B75C8 + .4byte gMapScripts_Route14 @ 0x81680D1 + .4byte gMapConnections_Route14 @ 0x8352BA0 + .2byte BGM_FRLG_ROUTE_11 + .2byte 102 + .byte 0x72, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route15:: @ 83509B4 - .incbin "baserom.gba", 0x3509B4, 0x1C + .4byte gMapData_Route15 @ 0x82F0804 + .4byte gMapEvents_Route15 @ 0x83B7748 + .4byte gMapScripts_Route15 @ 0x81680DB + .4byte gMapConnections_Route15 @ 0x8352BC0 + .2byte BGM_FRLG_ROUTE_11 + .2byte 103 + .byte 0x73, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route16:: @ 83509D0 - .incbin "baserom.gba", 0x3509D0, 0x1C + .4byte gMapData_Route16 @ 0x82F0FA8 + .4byte gMapEvents_Route16 @ 0x83B7898 + .4byte gMapScripts_Route16 @ 0x81680E5 + .4byte gMapConnections_Route16 @ 0x8352BE0 + .2byte BGM_FRLG_ROUTE_3 + .2byte 104 + .byte 0x74, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route17:: @ 83509EC - .incbin "baserom.gba", 0x3509EC, 0x1C + .4byte gMapData_Route17 @ 0x82F2DCC + .4byte gMapEvents_Route17 @ 0x83B7A20 + .4byte gMapScripts_Route17 @ 0x81681BF + .4byte gMapConnections_Route17 @ 0x8352C00 + .2byte BGM_FRLG_ROUTE_3 + .2byte 105 + .byte 0x75, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route18:: @ 8350A08 - .incbin "baserom.gba", 0x350A08, 0x1C + .4byte gMapData_Route18 @ 0x82F3750 + .4byte gMapEvents_Route18 @ 0x83B7AA4 + .4byte gMapScripts_Route18 @ 0x81681F6 + .4byte gMapConnections_Route18 @ 0x8352C20 + .2byte BGM_FRLG_ROUTE_3 + .2byte 106 + .byte 0x76, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route19:: @ 8350A24 - .incbin "baserom.gba", 0x350A24, 0x1C + .4byte gMapData_Route19 @ 0x82F42B4 + .4byte gMapEvents_Route19 @ 0x83B7BE4 + .4byte gMapScripts_Route19 @ 0x8168231 + .4byte gMapConnections_Route19 @ 0x8352C40 + .2byte BGM_FRLG_ROUTE_3 + .2byte 107 + .byte 0x77, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route20:: @ 8350A40 - .incbin "baserom.gba", 0x350A40, 0x1C + .4byte gMapData_Route20 @ 0x82F5598 + .4byte gMapEvents_Route20 @ 0x83B7D34 + .4byte gMapScripts_Route20 @ 0x816823B + .4byte gMapConnections_Route20 @ 0x8352C60 + .2byte BGM_FRLG_ROUTE_3 + .2byte 108 + .byte 0x78, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route21_North:: @ 8350A5C - .incbin "baserom.gba", 0x350A5C, 0x1C + .4byte gMapData_Route21_North @ 0x82F5F1C + .4byte gMapEvents_Route21_North @ 0x83B7DE4 + .4byte gMapScripts_Route21_North @ 0x8168289 + .4byte gMapConnections_Route21_North @ 0x8352C80 + .2byte BGM_FRLG_ROUTE_3 + .2byte 109 + .byte 0x79, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route21_South:: @ 8350A78 - .incbin "baserom.gba", 0x350A78, 0x1C + .4byte gMapData_Route21_South @ 0x83206C0 + .4byte gMapEvents_Route21_South @ 0x83B7E70 + .4byte gMapScripts_Route21_South @ 0x816828A + .4byte gMapConnections_Route21_South @ 0x8352CA0 + .2byte BGM_FRLG_ROUTE_3 + .2byte 219 + .byte 0x79, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route22:: @ 8350A94 - .incbin "baserom.gba", 0x350A94, 0x1C + .4byte gMapData_Route22 @ 0x82F6840 + .4byte gMapEvents_Route22 @ 0x83B7F18 + .4byte gMapScripts_Route22 @ 0x816828B + .4byte gMapConnections_Route22 @ 0x8352CC0 + .2byte BGM_FRLG_ROUTE_3 + .2byte 110 + .byte 0x7a, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route23:: @ 8350AB0 - .incbin "baserom.gba", 0x350AB0, 0x1C + .4byte gMapData_Route23 @ 0x82F8664 + .4byte gMapEvents_Route23 @ 0x83B8300 + .4byte gMapScripts_Route23 @ 0x81684EB + .4byte gMapConnections_Route23 @ 0x8352CE0 + .2byte BGM_FRLG_INDIGO_PLATEAU + .2byte 111 + .byte 0x7b, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route24:: @ 8350ACC - .incbin "baserom.gba", 0x350ACC, 0x1C + .4byte gMapData_Route24 @ 0x82F8E08 + .4byte gMapEvents_Route24 @ 0x83B8400 + .4byte gMapScripts_Route24 @ 0x816861F + .4byte gMapConnections_Route24 @ 0x8352D00 + .2byte BGM_FRLG_ROUTE_24 + .2byte 112 + .byte 0x7c, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 Route25:: @ 8350AE8 - .incbin "baserom.gba", 0x350AE8, 0x1C + .4byte gMapData_Route25 @ 0x82F996C + .4byte gMapEvents_Route25 @ 0x83B8590 + .4byte gMapScripts_Route25 @ 0x8168745 + .4byte gMapConnections_Route25 @ 0x8352D14 + .2byte BGM_FRLG_ROUTE_24 + .2byte 113 + .byte 0x7d, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 OneIsland_KindleRoad:: @ 8350B04 - .incbin "baserom.gba", 0x350B04, 0x1C + .4byte gMapData_OneIsland_KindleRoad @ 0x8325D70 + .4byte gMapEvents_OneIsland_KindleRoad @ 0x83B888C + .4byte gMapScripts_OneIsland_KindleRoad @ 0x8168758 + .4byte gMapConnections_OneIsland_KindleRoad @ 0x8352D28 + .2byte BGM_FRLG_ROUTE_3 + .2byte 237 + .byte 0x96, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 OneIsland_TreasureBeach:: @ 8350B20 - .incbin "baserom.gba", 0x350B20, 0x1C + .4byte gMapData_OneIsland_TreasureBeach @ 0x8326514 + .4byte gMapEvents_OneIsland_TreasureBeach @ 0x83B8930 + .4byte gMapScripts_OneIsland_TreasureBeach @ 0x816876B + .4byte gMapConnections_OneIsland_TreasureBeach @ 0x8352D3C + .2byte BGM_FRLG_ROUTE_3 + .2byte 238 + .byte 0x97, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 TwoIsland_CapeBrink:: @ 8350B3C - .incbin "baserom.gba", 0x350B3C, 0x1C + .4byte gMapData_TwoIsland_CapeBrink @ 0x8326CB8 + .4byte gMapEvents_TwoIsland_CapeBrink @ 0x83B8964 + .4byte gMapScripts_TwoIsland_CapeBrink @ 0x8168775 + .4byte gMapConnections_TwoIsland_CapeBrink @ 0x8352D50 + .2byte BGM_FRLG_ROUTE_3 + .2byte 239 + .byte 0x98, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 ThreeIsland_BondBridge:: @ 8350B58 - .incbin "baserom.gba", 0x350B58, 0x1C + .4byte gMapData_ThreeIsland_BondBridge @ 0x8327BDC + .4byte gMapEvents_ThreeIsland_BondBridge @ 0x83B8A9C + .4byte gMapScripts_ThreeIsland_BondBridge @ 0x8168776 + .4byte gMapConnections_ThreeIsland_BondBridge @ 0x8352D64 + .2byte BGM_FRLG_ROUTE_3 + .2byte 240 + .byte 0x99, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 ThreeIsland_Port:: @ 8350B74 - .incbin "baserom.gba", 0x350B74, 0x1C + .4byte gMapData_ThreeIsland_Port @ 0x8328380 + .4byte gMapEvents_ThreeIsland_Port @ 0x83B8B10 + .4byte gMapScripts_ThreeIsland_Port @ 0x8168789 + .4byte gMapConnections_ThreeIsland_Port @ 0x8352D78 + .2byte BGM_FRLG_ROUTE_3 + .2byte 241 + .byte 0x9a, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 UnknownMap_03_50:: @ 8350B90 - .incbin "baserom.gba", 0x350B90, 0x1C + .4byte gMapData_UnknownMap_03_50 @ 0x83283A8 + .4byte gMapEvents_UnknownMap_03_50 @ 0x83B8B24 + .4byte gMapScripts_UnknownMap_03_50 @ 0x81687E0 + .4byte gMapConnections_UnknownMap_03_50 @ 0x8352D8C + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 242 + .byte 0x9b, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 UnknownMap_03_51:: @ 8350BAC - .incbin "baserom.gba", 0x350BAC, 0x1C + .4byte gMapData_UnknownMap_03_51 @ 0x83283D0 + .4byte gMapEvents_UnknownMap_03_51 @ 0x83B8B38 + .4byte gMapScripts_UnknownMap_03_51 @ 0x81687E1 + .4byte gMapConnections_UnknownMap_03_51 @ 0x8352DA0 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 243 + .byte 0x9c, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 UnknownMap_03_52:: @ 8350BC8 - .incbin "baserom.gba", 0x350BC8, 0x1C + .4byte gMapData_UnknownMap_03_52 @ 0x8329114 + .4byte gMapEvents_UnknownMap_03_52 @ 0x83B8B4C + .4byte gMapScripts_UnknownMap_03_52 @ 0x81687E2 + .4byte NULL + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 244 + .byte 0x9d, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 UnknownMap_03_53:: @ 8350BE4 - .incbin "baserom.gba", 0x350BE4, 0x1C + .4byte gMapData_UnknownMap_03_53 @ 0x8329C78 + .4byte gMapEvents_UnknownMap_03_53 @ 0x83B8B60 + .4byte gMapScripts_UnknownMap_03_53 @ 0x81687E3 + .4byte NULL + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 245 + .byte 0x9e, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 FiveIsland_ResortGorgeous:: @ 8350C00 - .incbin "baserom.gba", 0x350C00, 0x1C + .4byte gMapData_FiveIsland_ResortGorgeous @ 0x832A7DC + .4byte gMapEvents_FiveIsland_ResortGorgeous @ 0x83B8C80 + .4byte gMapScripts_FiveIsland_ResortGorgeous @ 0x81687E4 + .4byte gMapConnections_FiveIsland_ResortGorgeous @ 0x8352DB4 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 246 + .byte 0x9f, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 FiveIsland_WaterLabyrinth:: @ 8350C1C - .incbin "baserom.gba", 0x350C1C, 0x1C + .4byte gMapData_FiveIsland_WaterLabyrinth @ 0x832B340 + .4byte gMapEvents_FiveIsland_WaterLabyrinth @ 0x83B8CC4 + .4byte gMapScripts_FiveIsland_WaterLabyrinth @ 0x816884D + .4byte gMapConnections_FiveIsland_WaterLabyrinth @ 0x8352DD4 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 247 + .byte 0xa0, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 FiveIsland_Meadow:: @ 8350C38 - .incbin "baserom.gba", 0x350C38, 0x1C + .4byte gMapData_FiveIsland_Meadow @ 0x832BAE4 + .4byte gMapEvents_FiveIsland_Meadow @ 0x83B8D94 + .4byte gMapScripts_FiveIsland_Meadow @ 0x8168932 + .4byte gMapConnections_FiveIsland_Meadow @ 0x8352DF4 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 248 + .byte 0xa1, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 FiveIsland_MemorialPillar:: @ 8350C54 - .incbin "baserom.gba", 0x350C54, 0x1C + .4byte gMapData_FiveIsland_MemorialPillar @ 0x832C648 + .4byte gMapEvents_FiveIsland_MemorialPillar @ 0x83B8E5C + .4byte gMapScripts_FiveIsland_MemorialPillar @ 0x81689D2 + .4byte gMapConnections_FiveIsland_MemorialPillar @ 0x8352E08 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 249 + .byte 0xa2, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SixIsland_OutcastIsland:: @ 8350C70 - .incbin "baserom.gba", 0x350C70, 0x1C + .4byte gMapData_SixIsland_OutcastIsland @ 0x832D56C + .4byte gMapEvents_SixIsland_OutcastIsland @ 0x83B8F38 + .4byte gMapScripts_SixIsland_OutcastIsland @ 0x8168B15 + .4byte gMapConnections_SixIsland_OutcastIsland @ 0x8352E1C + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 250 + .byte 0xa3, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SixIsland_GreenPath:: @ 8350C8C - .incbin "baserom.gba", 0x350C8C, 0x1C + .4byte gMapData_SixIsland_GreenPath @ 0x832E0D0 + .4byte gMapEvents_SixIsland_GreenPath @ 0x83B8FA8 + .4byte gMapScripts_SixIsland_GreenPath @ 0x8168B2D + .4byte gMapConnections_SixIsland_GreenPath @ 0x8352E3C + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 251 + .byte 0xa4, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SixIsland_WaterPath:: @ 8350CA8 - .incbin "baserom.gba", 0x350CA8, 0x1C + .4byte gMapData_SixIsland_WaterPath @ 0x832F3B4 + .4byte gMapEvents_SixIsland_WaterPath @ 0x83B90E0 + .4byte gMapScripts_SixIsland_WaterPath @ 0x8168B40 + .4byte gMapConnections_SixIsland_WaterPath @ 0x8352E68 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 252 + .byte 0xa5, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SixIsland_RuinValley:: @ 8350CC4 - .incbin "baserom.gba", 0x350CC4, 0x1C + .4byte gMapData_SixIsland_RuinValley @ 0x83302D8 + .4byte gMapEvents_SixIsland_RuinValley @ 0x83B92A0 + .4byte gMapScripts_SixIsland_RuinValley @ 0x8168B53 + .4byte gMapConnections_SixIsland_RuinValley @ 0x8352E7C + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 253 + .byte 0xa6, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SevenIsland_TrainerTower:: @ 8350CE0 - .incbin "baserom.gba", 0x350CE0, 0x1C + .4byte gMapData_SevenIsland_TrainerTower @ 0x833287C + .4byte gMapEvents_SevenIsland_TrainerTower @ 0x83B9328 + .4byte gMapScripts_SevenIsland_TrainerTower @ 0x8168BD5 + .4byte gMapConnections_SevenIsland_TrainerTower @ 0x8352E90 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 254 + .byte 0xa7, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SevenIsland_SevaultCanyon_Entrance:: @ 8350CFC - .incbin "baserom.gba", 0x350CFC, 0x1C + .4byte gMapData_SevenIsland_SevaultCanyon_Entrance @ 0x8333020 + .4byte gMapEvents_SevenIsland_SevaultCanyon_Entrance @ 0x83B93FC + .4byte gMapScripts_SevenIsland_SevaultCanyon_Entrance @ 0x8168BF3 + .4byte gMapConnections_SevenIsland_SevaultCanyon_Entrance @ 0x8352EB0 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 255 + .byte 0xa8, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SevenIsland_SevaultCanyon:: @ 8350D18 - .incbin "baserom.gba", 0x350D18, 0x1C + .4byte gMapData_SevenIsland_SevaultCanyon @ 0x8333F44 + .4byte gMapEvents_SevenIsland_SevaultCanyon @ 0x83B9618 + .4byte gMapScripts_SevenIsland_SevaultCanyon @ 0x8168BFD + .4byte gMapConnections_SevenIsland_SevaultCanyon @ 0x8352ED0 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 256 + .byte 0xa9, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 SevenIsland_TanobyRuins:: @ 8350D34 - .incbin "baserom.gba", 0x350D34, 0x1C + .4byte gMapData_SevenIsland_TanobyRuins @ 0x83355E8 + .4byte gMapEvents_SevenIsland_TanobyRuins @ 0x83B96F4 + .4byte gMapScripts_SevenIsland_TanobyRuins @ 0x8168C07 + .4byte gMapConnections_SevenIsland_TanobyRuins @ 0x8352EE4 + .2byte BGM_FRLG_SEVII_ISLANDS + .2byte 257 + .byte 0xaa, 0x00, 0x02, 0x03, 0x01, 0x06, 0x00, 0x00 PalletTown_PlayersHouse_1F:: @ 8350D50 - .incbin "baserom.gba", 0x350D50, 0x1C + .4byte gMapData_PalletTown_PlayersHouse_1F @ 0x82D5200 + .4byte gMapEvents_PalletTown_PlayersHouse_1F @ 0x83B974C + .4byte gMapScripts_PalletTown_PlayersHouse_1F @ 0x8168C08 + .4byte NULL + .2byte BGM_FRLG_PALLET_TOWN + .2byte 1 + .byte 0x58, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PalletTown_PlayersHouse_2F:: @ 8350D6C - .incbin "baserom.gba", 0x350D6C, 0x1C + .4byte gMapData_PalletTown_PlayersHouse_2F @ 0x82D52FC + .4byte gMapEvents_PalletTown_PlayersHouse_2F @ 0x83B978C + .4byte gMapScripts_PalletTown_PlayersHouse_2F @ 0x8168CA3 + .4byte NULL + .2byte BGM_FRLG_PALLET_TOWN + .2byte 2 + .byte 0x58, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PalletTown_GarysHouse:: @ 8350D88 - .incbin "baserom.gba", 0x350D88, 0x1C + .4byte gMapData_PalletTown_GarysHouse @ 0x82D5424 + .4byte gMapEvents_PalletTown_GarysHouse @ 0x83B980C + .4byte gMapScripts_PalletTown_GarysHouse @ 0x8168D27 + .4byte NULL + .2byte BGM_FRLG_PALLET_TOWN + .2byte 3 + .byte 0x58, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PalletTown_ProfessorOaksLab:: @ 8350DA4 - .incbin "baserom.gba", 0x350DA4, 0x1C + .4byte gMapData_PalletTown_ProfessorOaksLab @ 0x82D5668 + .4byte gMapEvents_PalletTown_ProfessorOaksLab @ 0x83B99B8 + .4byte gMapScripts_PalletTown_ProfessorOaksLab @ 0x8168F7E + .4byte NULL + .2byte BGM_FRLG_OAK_LAB + .2byte 5 + .byte 0x58, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ViridianCity_House1:: @ 8350DC0 - .incbin "baserom.gba", 0x350DC0, 0x1C + .4byte gMapData_ViridianCity_House1 @ 0x833AEAC + .4byte gMapEvents_ViridianCity_House1 @ 0x83B9A38 + .4byte gMapScripts_ViridianCity_House1 @ 0x8169E9A + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 276 + .byte 0x59, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ViridianCity_Gym:: @ 8350DDC - .incbin "baserom.gba", 0x350DDC, 0x1C + .4byte gMapData_ViridianCity_Gym @ 0x82D86AC + .4byte gMapEvents_ViridianCity_Gym @ 0x83B9B78 + .4byte gMapScripts_ViridianCity_Gym @ 0x8169EC9 + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 37 + .byte 0x59, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 ViridianCity_House2:: @ 8350DF8 - .incbin "baserom.gba", 0x350DF8, 0x1C + .4byte gMapData_ViridianCity_House2 @ 0x8338D20 + .4byte gMapEvents_ViridianCity_House2 @ 0x83B9C10 + .4byte gMapScripts_ViridianCity_House2 @ 0x816A07C + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 266 + .byte 0x59, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ViridianCity_Mart:: @ 8350E14 - .incbin "baserom.gba", 0x350E14, 0x1C + .4byte gMapData_ViridianCity_Mart @ 0x82D5BCC + .4byte gMapEvents_ViridianCity_Mart @ 0x83B9C84 + .4byte gMapScripts_ViridianCity_Mart @ 0x816A1D3 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x59, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ViridianCity_PokemonCenter_1F:: @ 8350E30 - .incbin "baserom.gba", 0x350E30, 0x1C + .4byte gMapData_ViridianCity_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_ViridianCity_PokemonCenter_1F @ 0x83B9D18 + .4byte gMapScripts_ViridianCity_PokemonCenter_1F @ 0x816A2C0 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x59, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ViridianCity_PokemonCenter_2F:: @ 8350E4C - .incbin "baserom.gba", 0x350E4C, 0x1C + .4byte gMapData_ViridianCity_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_ViridianCity_PokemonCenter_2F @ 0x83B9DA4 + .4byte gMapScripts_ViridianCity_PokemonCenter_2F @ 0x816A2F3 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x59, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PewterCity_Museum_1F:: @ 8350E68 - .incbin "baserom.gba", 0x350E68, 0x1C + .4byte gMapData_PewterCity_Museum_1F @ 0x831A1FC + .4byte gMapEvents_PewterCity_Museum_1F @ 0x83B9ED8 + .4byte gMapScripts_PewterCity_Museum_1F @ 0x816A31A + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 180 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PewterCity_Museum_2F:: @ 8350E84 - .incbin "baserom.gba", 0x350E84, 0x1C + .4byte gMapData_PewterCity_Museum_2F @ 0x831A39C + .4byte gMapEvents_PewterCity_Museum_2F @ 0x83B9FCC + .4byte gMapScripts_PewterCity_Museum_2F @ 0x816A552 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 181 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PewterCity_Gym:: @ 8350EA0 - .incbin "baserom.gba", 0x350EA0, 0x1C + .4byte gMapData_PewterCity_Gym @ 0x82D732C + .4byte gMapEvents_PewterCity_Gym @ 0x83BA058 + .4byte gMapScripts_PewterCity_Gym @ 0x816A592 + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 28 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 PewterCity_Mart:: @ 8350EBC - .incbin "baserom.gba", 0x350EBC, 0x1C + .4byte gMapData_PewterCity_Mart @ 0x82D5BCC + .4byte gMapEvents_PewterCity_Mart @ 0x83BA0CC + .4byte gMapScripts_PewterCity_Mart @ 0x816A6CD + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PewterCity_House1:: @ 8350ED8 - .incbin "baserom.gba", 0x350ED8, 0x1C + .4byte gMapData_PewterCity_House1 @ 0x82D5840 + .4byte gMapEvents_PewterCity_House1 @ 0x83BA140 + .4byte gMapScripts_PewterCity_House1 @ 0x816A71C + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 7 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PewterCity_PokemonCenter_1F:: @ 8350EF4 - .incbin "baserom.gba", 0x350EF4, 0x1C + .4byte gMapData_PewterCity_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_PewterCity_PokemonCenter_1F @ 0x83BA21C + .4byte gMapScripts_PewterCity_PokemonCenter_1F @ 0x816A760 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PewterCity_PokemonCenter_2F:: @ 8350F10 - .incbin "baserom.gba", 0x350F10, 0x1C + .4byte gMapData_PewterCity_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_PewterCity_PokemonCenter_2F @ 0x83BA2A8 + .4byte gMapScripts_PewterCity_PokemonCenter_2F @ 0x816A7B5 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 PewterCity_House2:: @ 8350F2C - .incbin "baserom.gba", 0x350F2C, 0x1C + .4byte gMapData_PewterCity_House2 @ 0x82D5840 + .4byte gMapEvents_PewterCity_House2 @ 0x83BA304 + .4byte gMapScripts_PewterCity_House2 @ 0x816A7DC + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 7 + .byte 0x5a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_House1:: @ 8350F48 - .incbin "baserom.gba", 0x350F48, 0x1C + .4byte gMapData_CeruleanCity_House1 @ 0x831A560 + .4byte gMapEvents_CeruleanCity_House1 @ 0x83BA350 + .4byte gMapScripts_CeruleanCity_House1 @ 0x816A7EF + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 183 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_House2:: @ 8350F64 - .incbin "baserom.gba", 0x350F64, 0x1C + .4byte gMapData_CeruleanCity_House2 @ 0x831A474 + .4byte gMapEvents_CeruleanCity_House2 @ 0x83BA3C0 + .4byte gMapScripts_CeruleanCity_House2 @ 0x816A975 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 182 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_House3:: @ 8350F80 - .incbin "baserom.gba", 0x350F80, 0x1C + .4byte gMapData_CeruleanCity_House3 @ 0x82D5754 + .4byte gMapEvents_CeruleanCity_House3 @ 0x83BA41C + .4byte gMapScripts_CeruleanCity_House3 @ 0x816A9A7 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 6 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_PokemonCenter_1F:: @ 8350F9C - .incbin "baserom.gba", 0x350F9C, 0x1C + .4byte gMapData_CeruleanCity_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_CeruleanCity_PokemonCenter_1F @ 0x83BA4F8 + .4byte gMapScripts_CeruleanCity_PokemonCenter_1F @ 0x816AA2D + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_PokemonCenter_2F:: @ 8350FB8 - .incbin "baserom.gba", 0x350FB8, 0x1C + .4byte gMapData_CeruleanCity_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_CeruleanCity_PokemonCenter_2F @ 0x83BA584 + .4byte gMapScripts_CeruleanCity_PokemonCenter_2F @ 0x816AA79 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_Gym:: @ 8350FD4 - .incbin "baserom.gba", 0x350FD4, 0x1C + .4byte gMapData_CeruleanCity_Gym @ 0x82D5F84 + .4byte gMapEvents_CeruleanCity_Gym @ 0x83BA628 + .4byte gMapScripts_CeruleanCity_Gym @ 0x816AAA0 + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 12 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 CeruleanCity_BikeShop:: @ 8350FF0 - .incbin "baserom.gba", 0x350FF0, 0x1C + .4byte gMapData_CeruleanCity_BikeShop @ 0x82D6F28 + .4byte gMapEvents_CeruleanCity_BikeShop @ 0x83BA6FC + .4byte gMapScripts_CeruleanCity_BikeShop @ 0x816ABBC + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 26 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_Mart:: @ 835100C - .incbin "baserom.gba", 0x35100C, 0x1C + .4byte gMapData_CeruleanCity_Mart @ 0x82D5BCC + .4byte gMapEvents_CeruleanCity_Mart @ 0x83BA770 + .4byte gMapScripts_CeruleanCity_Mart @ 0x816AC9D + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_House4:: @ 8351028 - .incbin "baserom.gba", 0x351028, 0x1C + .4byte gMapData_CeruleanCity_House4 @ 0x82D5754 + .4byte gMapEvents_CeruleanCity_House4 @ 0x83BA7A4 + .4byte gMapScripts_CeruleanCity_House4 @ 0x816ACEE + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 6 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeruleanCity_House5:: @ 8351044 - .incbin "baserom.gba", 0x351044, 0x1C + .4byte gMapData_CeruleanCity_House5 @ 0x8343540 + .4byte gMapEvents_CeruleanCity_House5 @ 0x83BA7E4 + .4byte gMapScripts_CeruleanCity_House5 @ 0x816AE4F + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 308 + .byte 0x5b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 LavenderTown_PokemonCenter_1F:: @ 8351060 - .incbin "baserom.gba", 0x351060, 0x1C + .4byte gMapData_LavenderTown_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_LavenderTown_PokemonCenter_1F @ 0x83BA890 + .4byte gMapScripts_LavenderTown_PokemonCenter_1F @ 0x816B0EF + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x5c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 LavenderTown_PokemonCenter_2F:: @ 835107C - .incbin "baserom.gba", 0x35107C, 0x1C + .4byte gMapData_LavenderTown_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_LavenderTown_PokemonCenter_2F @ 0x83BA91C + .4byte gMapScripts_LavenderTown_PokemonCenter_2F @ 0x816B122 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x5c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 LavenderTown_VolunteerPokemonHouse:: @ 8351098 - .incbin "baserom.gba", 0x351098, 0x1C + .4byte gMapData_LavenderTown_VolunteerPokemonHouse @ 0x833ACC4 + .4byte gMapEvents_LavenderTown_VolunteerPokemonHouse @ 0x83BA9FC + .4byte gMapScripts_LavenderTown_VolunteerPokemonHouse @ 0x816B149 + .4byte NULL + .2byte BGM_FRLG_LAVENDER_TOWN + .2byte 274 + .byte 0x5c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 LavenderTown_House1:: @ 83510B4 - .incbin "baserom.gba", 0x3510B4, 0x1C + .4byte gMapData_LavenderTown_House1 @ 0x82D6AF0 + .4byte gMapEvents_LavenderTown_House1 @ 0x83BAA58 + .4byte gMapScripts_LavenderTown_House1 @ 0x816B232 + .4byte NULL + .2byte BGM_FRLG_LAVENDER_TOWN + .2byte 21 + .byte 0x5c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 LavenderTown_House2:: @ 83510D0 - .incbin "baserom.gba", 0x3510D0, 0x1C + .4byte gMapData_LavenderTown_House2 @ 0x82D6AF0 + .4byte gMapEvents_LavenderTown_House2 @ 0x83BAA9C + .4byte gMapScripts_LavenderTown_House2 @ 0x816B265 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 21 + .byte 0x5c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 LavenderTown_Mart:: @ 83510EC - .incbin "baserom.gba", 0x3510EC, 0x1C + .4byte gMapData_LavenderTown_Mart @ 0x82D5BCC + .4byte gMapEvents_LavenderTown_Mart @ 0x83BAB28 + .4byte gMapScripts_LavenderTown_Mart @ 0x816B34F + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x5c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 VermilionCity_House1:: @ 8351108 - .incbin "baserom.gba", 0x351108, 0x1C + .4byte gMapData_VermilionCity_House1 @ 0x82D5754 + .4byte gMapEvents_VermilionCity_House1 @ 0x83BAB6C + .4byte gMapScripts_VermilionCity_House1 @ 0x816B3A6 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 6 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 VermilionCity_PokemonCenter_1F:: @ 8351124 - .incbin "baserom.gba", 0x351124, 0x1C + .4byte gMapData_VermilionCity_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_VermilionCity_PokemonCenter_1F @ 0x83BAC48 + .4byte gMapScripts_VermilionCity_PokemonCenter_1F @ 0x816B424 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 VermilionCity_PokemonCenter_2F:: @ 8351140 - .incbin "baserom.gba", 0x351140, 0x1C + .4byte gMapData_VermilionCity_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_VermilionCity_PokemonCenter_2F @ 0x83BACD4 + .4byte gMapScripts_VermilionCity_PokemonCenter_2F @ 0x816B457 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 VermilionCity_PokemonFanClub:: @ 835115C - .incbin "baserom.gba", 0x35115C, 0x1C + .4byte gMapData_VermilionCity_PokemonFanClub @ 0x833ABC8 + .4byte gMapEvents_VermilionCity_PokemonFanClub @ 0x83BADA8 + .4byte gMapScripts_VermilionCity_PokemonFanClub @ 0x816B47E + .4byte NULL + .2byte BGM_FRLG_VERMILION_CITY + .2byte 273 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 VermilionCity_House2:: @ 8351178 - .incbin "baserom.gba", 0x351178, 0x1C + .4byte gMapData_VermilionCity_House2 @ 0x82D5754 + .4byte gMapEvents_VermilionCity_House2 @ 0x83BADEC + .4byte gMapScripts_VermilionCity_House2 @ 0x816B5D6 + .4byte NULL + .2byte BGM_FRLG_VERMILION_CITY + .2byte 6 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 VermilionCity_Mart:: @ 8351194 - .incbin "baserom.gba", 0x351194, 0x1C + .4byte gMapData_VermilionCity_Mart @ 0x82D5BCC + .4byte gMapEvents_VermilionCity_Mart @ 0x83BAE60 + .4byte gMapScripts_VermilionCity_Mart @ 0x816B653 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 VermilionCity_Gym:: @ 83511B0 - .incbin "baserom.gba", 0x3511B0, 0x1C + .4byte gMapData_VermilionCity_Gym @ 0x82D6E28 + .4byte gMapEvents_VermilionCity_Gym @ 0x83BAFD0 + .4byte gMapScripts_VermilionCity_Gym @ 0x816B69E + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 25 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 VermilionCity_House3:: @ 83511CC - .incbin "baserom.gba", 0x3511CC, 0x1C + .4byte gMapData_VermilionCity_House3 @ 0x82D5754 + .4byte gMapEvents_VermilionCity_House3 @ 0x83BB068 + .4byte gMapScripts_VermilionCity_House3 @ 0x816BAA9 + .4byte NULL + .2byte BGM_FRLG_VERMILION_CITY + .2byte 6 + .byte 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_DepartmentStore_1F:: @ 83511E8 - .incbin "baserom.gba", 0x3511E8, 0x1C + .4byte gMapData_CeladonCity_DepartmentStore_1F @ 0x831B5FC + .4byte gMapEvents_CeladonCity_DepartmentStore_1F @ 0x83BB0EC + .4byte gMapScripts_CeladonCity_DepartmentStore_1F @ 0x816BAD8 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 192 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x04, 0x01, 0x00 CeladonCity_DepartmentStore_2F:: @ 8351204 - .incbin "baserom.gba", 0x351204, 0x1C + .4byte gMapData_CeladonCity_DepartmentStore_2F @ 0x831B7A8 + .4byte gMapEvents_CeladonCity_DepartmentStore_2F @ 0x83BB184 + .4byte gMapScripts_CeladonCity_DepartmentStore_2F @ 0x816BAF4 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 193 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x04, 0x02, 0x00 CeladonCity_DepartmentStore_3F:: @ 8351220 - .incbin "baserom.gba", 0x351220, 0x1C + .4byte gMapData_CeladonCity_DepartmentStore_3F @ 0x831B954 + .4byte gMapEvents_CeladonCity_DepartmentStore_3F @ 0x83BB2AC + .4byte gMapScripts_CeladonCity_DepartmentStore_3F @ 0x816BB84 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 194 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x04, 0x03, 0x00 CeladonCity_DepartmentStore_4F:: @ 835123C - .incbin "baserom.gba", 0x35123C, 0x1C + .4byte gMapData_CeladonCity_DepartmentStore_4F @ 0x831BB00 + .4byte gMapEvents_CeladonCity_DepartmentStore_4F @ 0x83BB32C + .4byte gMapScripts_CeladonCity_DepartmentStore_4F @ 0x816BBEE + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 195 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x00 CeladonCity_DepartmentStore_5F:: @ 8351258 - .incbin "baserom.gba", 0x351258, 0x1C + .4byte gMapData_CeladonCity_DepartmentStore_5F @ 0x831BCAC + .4byte gMapEvents_CeladonCity_DepartmentStore_5F @ 0x83BB3C4 + .4byte gMapScripts_CeladonCity_DepartmentStore_5F @ 0x816BC40 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 196 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x04, 0x05, 0x00 CeladonCity_DepartmentStore_Roof:: @ 8351274 - .incbin "baserom.gba", 0x351274, 0x1C + .4byte gMapData_CeladonCity_DepartmentStore_Roof @ 0x831BEE4 + .4byte gMapEvents_CeladonCity_DepartmentStore_Roof @ 0x83BB440 + .4byte gMapScripts_CeladonCity_DepartmentStore_Roof @ 0x816BCCC + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 197 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x04, 0x7f, 0x00 CeladonCity_DepartmentStore_Elevator:: @ 8351290 - .incbin "baserom.gba", 0x351290, 0x1C + .4byte gMapData_CeladonCity_DepartmentStore_Elevator @ 0x8319F70 + .4byte gMapEvents_CeladonCity_DepartmentStore_Elevator @ 0x83BB47C + .4byte gMapScripts_CeladonCity_DepartmentStore_Elevator @ 0x816C152 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 179 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_Condominiums_1F:: @ 83512AC - .incbin "baserom.gba", 0x3512AC, 0x1C + .4byte gMapData_CeladonCity_Condominiums_1F @ 0x831A7DC + .4byte gMapEvents_CeladonCity_Condominiums_1F @ 0x83BB538 + .4byte gMapScripts_CeladonCity_Condominiums_1F @ 0x816C320 + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 184 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_Condominiums_2F:: @ 83512C8 - .incbin "baserom.gba", 0x3512C8, 0x1C + .4byte gMapData_CeladonCity_Condominiums_2F @ 0x831AA58 + .4byte gMapEvents_CeladonCity_Condominiums_2F @ 0x83BB5B4 + .4byte gMapScripts_CeladonCity_Condominiums_2F @ 0x816C3D0 + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 185 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_Condominiums_3F:: @ 83512E4 - .incbin "baserom.gba", 0x3512E4, 0x1C + .4byte gMapData_CeladonCity_Condominiums_3F @ 0x831ACD4 + .4byte gMapEvents_CeladonCity_Condominiums_3F @ 0x83BB6A8 + .4byte gMapScripts_CeladonCity_Condominiums_3F @ 0x816C3DA + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 186 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_Condominiums_Roof:: @ 8351300 - .incbin "baserom.gba", 0x351300, 0x1C + .4byte gMapData_CeladonCity_Condominiums_Roof @ 0x831AF7C + .4byte gMapEvents_CeladonCity_Condominiums_Roof @ 0x83BB6EC + .4byte gMapScripts_CeladonCity_Condominiums_Roof @ 0x816C459 + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 187 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_Condominiums_RoofRoom:: @ 835131C - .incbin "baserom.gba", 0x35131C, 0x1C + .4byte gMapData_CeladonCity_Condominiums_RoofRoom @ 0x831B054 + .4byte gMapEvents_CeladonCity_Condominiums_RoofRoom @ 0x83BB76C + .4byte gMapScripts_CeladonCity_Condominiums_RoofRoom @ 0x816C463 + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 188 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_PokemonCenter_1F:: @ 8351338 - .incbin "baserom.gba", 0x351338, 0x1C + .4byte gMapData_CeladonCity_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_CeladonCity_PokemonCenter_1F @ 0x83BB800 + .4byte gMapScripts_CeladonCity_PokemonCenter_1F @ 0x816C5EC + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_PokemonCenter_2F:: @ 8351354 - .incbin "baserom.gba", 0x351354, 0x1C + .4byte gMapData_CeladonCity_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_CeladonCity_PokemonCenter_2F @ 0x83BB88C + .4byte gMapScripts_CeladonCity_PokemonCenter_2F @ 0x816C61F + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_GameCorner:: @ 8351370 - .incbin "baserom.gba", 0x351370, 0x1C + .4byte gMapData_CeladonCity_GameCorner @ 0x82D7168 + .4byte gMapEvents_CeladonCity_GameCorner @ 0x83BBB78 + .4byte gMapScripts_CeladonCity_GameCorner @ 0x816C646 + .4byte NULL + .2byte BGM_FRLG_GAMECORNER + .2byte 27 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_GameCorner_PrizeRoom:: @ 835138C - .incbin "baserom.gba", 0x35138C, 0x1C + .4byte gMapData_CeladonCity_GameCorner_PrizeRoom @ 0x831B12C + .4byte gMapEvents_CeladonCity_GameCorner_PrizeRoom @ 0x83BBC1C + .4byte gMapScripts_CeladonCity_GameCorner_PrizeRoom @ 0x816CB75 + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 189 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_Gym:: @ 83513A8 - .incbin "baserom.gba", 0x3513A8, 0x1C + .4byte gMapData_CeladonCity_Gym @ 0x82D6370 + .4byte gMapEvents_CeladonCity_Gym @ 0x83BBD68 + .4byte gMapScripts_CeladonCity_Gym @ 0x816D060 + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 15 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 CeladonCity_Restaurant:: @ 83513C4 - .incbin "baserom.gba", 0x3513C4, 0x1C + .4byte gMapData_CeladonCity_Restaurant @ 0x831B29C + .4byte gMapEvents_CeladonCity_Restaurant @ 0x83BBE0C + .4byte gMapScripts_CeladonCity_Restaurant @ 0x816D1EA + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 190 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_House1:: @ 83513E0 - .incbin "baserom.gba", 0x3513E0, 0x1C + .4byte gMapData_CeladonCity_House1 @ 0x82D6AF0 + .4byte gMapEvents_CeladonCity_House1 @ 0x83BBE80 + .4byte gMapScripts_CeladonCity_House1 @ 0x816D267 + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 21 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CeladonCity_Hotel:: @ 83513FC - .incbin "baserom.gba", 0x3513FC, 0x1C + .4byte gMapData_CeladonCity_Hotel @ 0x831B438 + .4byte gMapEvents_CeladonCity_Hotel @ 0x83BBF0C + .4byte gMapScripts_CeladonCity_Hotel @ 0x816D283 + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 191 + .byte 0x5e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_SafariZone_Entrance:: @ 8351418 - .incbin "baserom.gba", 0x351418, 0x1C + .4byte gMapData_FuchsiaCity_SafariZone_Entrance @ 0x82D8E80 + .4byte gMapEvents_FuchsiaCity_SafariZone_Entrance @ 0x83BBFA0 + .4byte gMapScripts_FuchsiaCity_SafariZone_Entrance @ 0x816D2A8 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 51 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_Mart:: @ 8351434 - .incbin "baserom.gba", 0x351434, 0x1C + .4byte gMapData_FuchsiaCity_Mart @ 0x82D5BCC + .4byte gMapEvents_FuchsiaCity_Mart @ 0x83BC014 + .4byte gMapScripts_FuchsiaCity_Mart @ 0x816D4E0 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_ZooBuilding:: @ 8351450 - .incbin "baserom.gba", 0x351450, 0x1C + .4byte gMapData_FuchsiaCity_ZooBuilding @ 0x831C348 + .4byte gMapEvents_FuchsiaCity_ZooBuilding @ 0x83BC0A0 + .4byte gMapScripts_FuchsiaCity_ZooBuilding @ 0x816D528 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 200 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_Gym:: @ 835146C - .incbin "baserom.gba", 0x35146C, 0x1C + .4byte gMapData_FuchsiaCity_Gym @ 0x82D6A04 + .4byte gMapEvents_FuchsiaCity_Gym @ 0x83BC1A4 + .4byte gMapScripts_FuchsiaCity_Gym @ 0x816D54D + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 20 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 FuchsiaCity_House1:: @ 8351488 - .incbin "baserom.gba", 0x351488, 0x1C + .4byte gMapData_FuchsiaCity_House1 @ 0x82D5754 + .4byte gMapEvents_FuchsiaCity_House1 @ 0x83BC218 + .4byte gMapScripts_FuchsiaCity_House1 @ 0x816D6C5 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 6 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_PokemonCenter_1F:: @ 83514A4 - .incbin "baserom.gba", 0x3514A4, 0x1C + .4byte gMapData_FuchsiaCity_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_FuchsiaCity_PokemonCenter_1F @ 0x83BC2AC + .4byte gMapScripts_FuchsiaCity_PokemonCenter_1F @ 0x816D6F1 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_PokemonCenter_2F:: @ 83514C0 - .incbin "baserom.gba", 0x3514C0, 0x1C + .4byte gMapData_FuchsiaCity_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_FuchsiaCity_PokemonCenter_2F @ 0x83BC338 + .4byte gMapScripts_FuchsiaCity_PokemonCenter_2F @ 0x816D724 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_Building1:: @ 83514DC - .incbin "baserom.gba", 0x3514DC, 0x1C + .4byte gMapData_FuchsiaCity_Building1 @ 0x831C48C + .4byte gMapEvents_FuchsiaCity_Building1 @ 0x83BC3F4 + .4byte gMapScripts_FuchsiaCity_Building1 @ 0x816D74B + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 201 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_House2:: @ 83514F8 - .incbin "baserom.gba", 0x3514F8, 0x1C + .4byte gMapData_FuchsiaCity_House2 @ 0x831C578 + .4byte gMapEvents_FuchsiaCity_House2 @ 0x83BC440 + .4byte gMapScripts_FuchsiaCity_House2 @ 0x816D816 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 202 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FuchsiaCity_House3:: @ 8351514 - .incbin "baserom.gba", 0x351514, 0x1C + .4byte gMapData_FuchsiaCity_House3 @ 0x82D5754 + .4byte gMapEvents_FuchsiaCity_House3 @ 0x83BC474 + .4byte gMapScripts_FuchsiaCity_House3 @ 0x816D894 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 6 + .byte 0x5f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CinnabarIsland_Gym:: @ 8351530 - .incbin "baserom.gba", 0x351530, 0x1C + .4byte gMapData_CinnabarIsland_Gym @ 0x82D82C8 + .4byte gMapEvents_CinnabarIsland_Gym @ 0x83BC62C + .4byte gMapScripts_CinnabarIsland_Gym @ 0x816D94B + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 36 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 CinnabarIsland_PokemonLab_Entrance:: @ 835154C - .incbin "baserom.gba", 0x35154C, 0x1C + .4byte gMapData_CinnabarIsland_PokemonLab_Entrance @ 0x831C804 + .4byte gMapEvents_CinnabarIsland_PokemonLab_Entrance @ 0x83BC6B8 + .4byte gMapScripts_CinnabarIsland_PokemonLab_Entrance @ 0x816E273 + .4byte NULL + .2byte BGM_FRLG_CINNABAR_ISLAND + .2byte 203 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CinnabarIsland_PokemonLab_Lounge:: @ 8351568 - .incbin "baserom.gba", 0x351568, 0x1C + .4byte gMapData_CinnabarIsland_PokemonLab_Lounge @ 0x831C974 + .4byte gMapEvents_CinnabarIsland_PokemonLab_Lounge @ 0x83BC71C + .4byte gMapScripts_CinnabarIsland_PokemonLab_Lounge @ 0x816E2B8 + .4byte NULL + .2byte BGM_FRLG_CINNABAR_ISLAND + .2byte 204 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CinnabarIsland_PokemonLab_ResearchRoom:: @ 8351584 - .incbin "baserom.gba", 0x351584, 0x1C + .4byte gMapData_CinnabarIsland_PokemonLab_ResearchRoom @ 0x831CAE4 + .4byte gMapEvents_CinnabarIsland_PokemonLab_ResearchRoom @ 0x83BC780 + .4byte gMapScripts_CinnabarIsland_PokemonLab_ResearchRoom @ 0x816E3DE + .4byte NULL + .2byte BGM_FRLG_CINNABAR_ISLAND + .2byte 205 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CinnabarIsland_PokemonLab_ExperimentRoom:: @ 83515A0 - .incbin "baserom.gba", 0x3515A0, 0x1C + .4byte gMapData_CinnabarIsland_PokemonLab_ExperimentRoom @ 0x831CC54 + .4byte gMapEvents_CinnabarIsland_PokemonLab_ExperimentRoom @ 0x83BC7CC + .4byte gMapScripts_CinnabarIsland_PokemonLab_ExperimentRoom @ 0x816E400 + .4byte NULL + .2byte BGM_FRLG_CINNABAR_ISLAND + .2byte 206 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CinnabarIsland_PokemonCenter_1F:: @ 83515BC - .incbin "baserom.gba", 0x3515BC, 0x1C + .4byte gMapData_CinnabarIsland_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_CinnabarIsland_PokemonCenter_1F @ 0x83BC8A8 + .4byte gMapScripts_CinnabarIsland_PokemonCenter_1F @ 0x816E8D7 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CinnabarIsland_PokemonCenter_2F:: @ 83515D8 - .incbin "baserom.gba", 0x3515D8, 0x1C + .4byte gMapData_CinnabarIsland_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_CinnabarIsland_PokemonCenter_2F @ 0x83BC934 + .4byte gMapScripts_CinnabarIsland_PokemonCenter_2F @ 0x816E9E8 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 CinnabarIsland_Mart:: @ 83515F4 - .incbin "baserom.gba", 0x3515F4, 0x1C + .4byte gMapData_CinnabarIsland_Mart @ 0x82D5BCC + .4byte gMapEvents_CinnabarIsland_Mart @ 0x83BC9A8 + .4byte gMapScripts_CinnabarIsland_Mart @ 0x816EA0F + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 IndigoPlateau_PokemonCenter_1F:: @ 8351610 - .incbin "baserom.gba", 0x351610, 0x1C + .4byte gMapData_IndigoPlateau_PokemonCenter_1F @ 0x831F000 + .4byte gMapEvents_IndigoPlateau_PokemonCenter_1F @ 0x83BCA94 + .4byte gMapScripts_IndigoPlateau_PokemonCenter_1F @ 0x816EA5A + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 212 + .byte 0x61, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 IndigoPlateau_PokemonCenter_2F:: @ 835162C - .incbin "baserom.gba", 0x35162C, 0x1C + .4byte gMapData_IndigoPlateau_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_IndigoPlateau_PokemonCenter_2F @ 0x83BCB20 + .4byte gMapScripts_IndigoPlateau_PokemonCenter_2F @ 0x816EB0F + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x61, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 SaffronCity_House1_1F:: @ 8351648 - .incbin "baserom.gba", 0x351648, 0x1C + .4byte gMapData_SaffronCity_House1_1F @ 0x8321004 + .4byte gMapEvents_SaffronCity_House1_1F @ 0x83BCB9C + .4byte gMapScripts_SaffronCity_House1_1F @ 0x816EB36 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 226 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_House1_2F:: @ 8351664 - .incbin "baserom.gba", 0x351664, 0x1C + .4byte gMapData_SaffronCity_House1_2F @ 0x8321100 + .4byte gMapEvents_SaffronCity_House1_2F @ 0x83BCC3C + .4byte gMapScripts_SaffronCity_House1_2F @ 0x816EB5C + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 227 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_Dojo:: @ 8351680 - .incbin "baserom.gba", 0x351680, 0x1C + .4byte gMapData_SaffronCity_Dojo @ 0x83212C4 + .4byte gMapEvents_SaffronCity_Dojo @ 0x83BCD60 + .4byte gMapScripts_SaffronCity_Dojo @ 0x816EBDB + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 228 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_Gym:: @ 835169C - .incbin "baserom.gba", 0x35169C, 0x1C + .4byte gMapData_SaffronCity_Gym @ 0x82D7C44 + .4byte gMapEvents_SaffronCity_Gym @ 0x83BCF6C + .4byte gMapScripts_SaffronCity_Gym @ 0x816EDD7 + .4byte NULL + .2byte BGM_FRLG_GYM + .2byte 34 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01 SaffronCity_House2:: @ 83516B8 - .incbin "baserom.gba", 0x3516B8, 0x1C + .4byte gMapData_SaffronCity_House2 @ 0x82D6AF0 + .4byte gMapEvents_SaffronCity_House2 @ 0x83BD004 + .4byte gMapScripts_SaffronCity_House2 @ 0x816EF73 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 21 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_Mart:: @ 83516D4 - .incbin "baserom.gba", 0x3516D4, 0x1C + .4byte gMapData_SaffronCity_Mart @ 0x82D5BCC + .4byte gMapEvents_SaffronCity_Mart @ 0x83BD078 + .4byte gMapScripts_SaffronCity_Mart @ 0x816EFA2 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_PokemonCenter_1F:: @ 83516F0 - .incbin "baserom.gba", 0x3516F0, 0x1C + .4byte gMapData_SaffronCity_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_SaffronCity_PokemonCenter_1F @ 0x83BD13C + .4byte gMapScripts_SaffronCity_PokemonCenter_1F @ 0x816EFEC + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_PokemonCenter_2F:: @ 835170C - .incbin "baserom.gba", 0x35170C, 0x1C + .4byte gMapData_SaffronCity_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_SaffronCity_PokemonCenter_2F @ 0x83BD1C8 + .4byte gMapScripts_SaffronCity_PokemonCenter_2F @ 0x816F037 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_House3:: @ 8351728 - .incbin "baserom.gba", 0x351728, 0x1C + .4byte gMapData_SaffronCity_House3 @ 0x82D6AF0 + .4byte gMapEvents_SaffronCity_House3 @ 0x83BD20C + .4byte gMapScripts_SaffronCity_House3 @ 0x816F05E + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 21 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SaffronCity_PokemonTrainerFanClub:: @ 8351744 - .incbin "baserom.gba", 0x351744, 0x1C + .4byte gMapData_SaffronCity_PokemonTrainerFanClub @ 0x8338A60 + .4byte gMapEvents_SaffronCity_PokemonTrainerFanClub @ 0x83BD318 + .4byte gMapScripts_SaffronCity_PokemonTrainerFanClub @ 0x816F0BF + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 263 + .byte 0x62, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route2_ViridianForest_SouthEntrance:: @ 8351760 - .incbin "baserom.gba", 0x351760, 0x1C + .4byte gMapData_Route2_ViridianForest_SouthEntrance @ 0x8320990 + .4byte gMapEvents_Route2_ViridianForest_SouthEntrance @ 0x83BD37C + .4byte gMapScripts_Route2_ViridianForest_SouthEntrance @ 0x816F5E5 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 221 + .byte 0x66, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route2_House:: @ 835177C - .incbin "baserom.gba", 0x35177C, 0x1C + .4byte gMapData_Route2_House @ 0x82D5840 + .4byte gMapEvents_Route2_House @ 0x83BD3D8 + .4byte gMapScripts_Route2_House @ 0x816F5F8 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 7 + .byte 0x66, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route2_EastBuilding:: @ 8351798 - .incbin "baserom.gba", 0x351798, 0x1C + .4byte gMapData_Route2_EastBuilding @ 0x8320990 + .4byte gMapEvents_Route2_EastBuilding @ 0x83BD43C + .4byte gMapScripts_Route2_EastBuilding @ 0x816F67E + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 221 + .byte 0x66, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route2_ViridianForest_NorthEntrance:: @ 83517B4 - .incbin "baserom.gba", 0x3517B4, 0x1C + .4byte gMapData_Route2_ViridianForest_NorthEntrance @ 0x8320990 + .4byte gMapEvents_Route2_ViridianForest_NorthEntrance @ 0x83BD4B8 + .4byte gMapScripts_Route2_ViridianForest_NorthEntrance @ 0x816F71D + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 221 + .byte 0x66, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route4_PokemonCenter_1F:: @ 83517D0 - .incbin "baserom.gba", 0x3517D0, 0x1C + .4byte gMapData_Route4_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_Route4_PokemonCenter_1F @ 0x83BD57C + .4byte gMapScripts_Route4_PokemonCenter_1F @ 0x816F739 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x68, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route4_PokemonCenter_2F:: @ 83517EC - .incbin "baserom.gba", 0x3517EC, 0x1C + .4byte gMapData_Route4_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_Route4_PokemonCenter_2F @ 0x83BD608 + .4byte gMapScripts_Route4_PokemonCenter_2F @ 0x816F8D8 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x68, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route5_PokemonDayCare:: @ 8351808 - .incbin "baserom.gba", 0x351808, 0x1C + .4byte gMapData_Route5_PokemonDayCare @ 0x833ADC0 + .4byte gMapEvents_Route5_PokemonDayCare @ 0x83BD64C + .4byte gMapScripts_Route5_PokemonDayCare @ 0x816F8FF + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 275 + .byte 0x69, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route5_SouthEntrance:: @ 8351824 - .incbin "baserom.gba", 0x351824, 0x1C + .4byte gMapData_Route5_SouthEntrance @ 0x831E9C0 + .4byte gMapEvents_Route5_SouthEntrance @ 0x83BD6C8 + .4byte gMapScripts_Route5_SouthEntrance @ 0x816F900 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 208 + .byte 0x69, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route6_NorthEntrance:: @ 8351840 - .incbin "baserom.gba", 0x351840, 0x1C + .4byte gMapData_Route6_NorthEntrance @ 0x831E9C0 + .4byte gMapEvents_Route6_NorthEntrance @ 0x83BD744 + .4byte gMapScripts_Route6_NorthEntrance @ 0x816F9C6 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 208 + .byte 0x6a, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 UnknownMap_18_01:: @ 835185C - .incbin "baserom.gba", 0x35185C, 0x1C + .4byte gMapData_UnknownMap_18_01 @ 0x82D5840 + .4byte gMapEvents_UnknownMap_18_01 @ 0x83BD758 + .4byte gMapScripts_UnknownMap_18_01 @ 0x816FA8C + .4byte NULL + .2byte BGM_FRLG_ROUTE_3 + .2byte 7 + .byte 0x6a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route7_EastEntrance:: @ 8351878 - .incbin "baserom.gba", 0x351878, 0x1C + .4byte gMapData_Route7_EastEntrance @ 0x831EAD0 + .4byte gMapEvents_Route7_EastEntrance @ 0x83BD7D4 + .4byte gMapScripts_Route7_EastEntrance @ 0x816FA8D + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 209 + .byte 0x6b, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route8_WestEntrance:: @ 8351894 - .incbin "baserom.gba", 0x351894, 0x1C + .4byte gMapData_Route8_WestEntrance @ 0x831EAD0 + .4byte gMapEvents_Route8_WestEntrance @ 0x83BD850 + .4byte gMapScripts_Route8_WestEntrance @ 0x816FB53 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 209 + .byte 0x6c, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route10_PokemonCenter_1F:: @ 83518B0 - .incbin "baserom.gba", 0x3518B0, 0x1C + .4byte gMapData_Route10_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_Route10_PokemonCenter_1F @ 0x83BD8FC + .4byte gMapScripts_Route10_PokemonCenter_1F @ 0x816FC2F + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x6e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route10_PokemonCenter_2F:: @ 83518CC - .incbin "baserom.gba", 0x3518CC, 0x1C + .4byte gMapData_Route10_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_Route10_PokemonCenter_2F @ 0x83BD988 + .4byte gMapScripts_Route10_PokemonCenter_2F @ 0x816FCFA + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x6e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route11_EastEntrance_1F:: @ 83518E8 - .incbin "baserom.gba", 0x3518E8, 0x1C + .4byte gMapData_Route11_EastEntrance_1F @ 0x8320E70 + .4byte gMapEvents_Route11_EastEntrance_1F @ 0x83BD9F4 + .4byte gMapScripts_Route11_EastEntrance_1F @ 0x816FD21 + .4byte NULL + .2byte BGM_FRLG_VERMILION_CITY + .2byte 224 + .byte 0x6f, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route11_EastEntrance_2F:: @ 8351904 - .incbin "baserom.gba", 0x351904, 0x1C + .4byte gMapData_Route11_EastEntrance_2F @ 0x8320804 + .4byte gMapEvents_Route11_EastEntrance_2F @ 0x83BDA58 + .4byte gMapScripts_Route11_EastEntrance_2F @ 0x816FD34 + .4byte NULL + .2byte BGM_FRLG_VERMILION_CITY + .2byte 220 + .byte 0x6f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route12_NorthEntrance_1F:: @ 8351920 - .incbin "baserom.gba", 0x351920, 0x1C + .4byte gMapData_Route12_NorthEntrance_1F @ 0x8319DF0 + .4byte gMapEvents_Route12_NorthEntrance_1F @ 0x83BDAAC + .4byte gMapScripts_Route12_NorthEntrance_1F @ 0x816FE6D + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 176 + .byte 0x70, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route12_NorthEntrance_2F:: @ 835193C - .incbin "baserom.gba", 0x35193C, 0x1C + .4byte gMapData_Route12_NorthEntrance_2F @ 0x8320804 + .4byte gMapEvents_Route12_NorthEntrance_2F @ 0x83BDAF8 + .4byte gMapScripts_Route12_NorthEntrance_2F @ 0x816FE77 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 220 + .byte 0x70, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route12_FishingHouse:: @ 8351958 - .incbin "baserom.gba", 0x351958, 0x1C + .4byte gMapData_Route12_FishingHouse @ 0x82D6070 + .4byte gMapEvents_Route12_FishingHouse @ 0x83BDB48 + .4byte gMapScripts_Route12_FishingHouse @ 0x816FF0B + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 13 + .byte 0x70, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route15_WestEntrance_1F:: @ 8351974 - .incbin "baserom.gba", 0x351974, 0x1C + .4byte gMapData_Route15_WestEntrance_1F @ 0x8320E70 + .4byte gMapEvents_Route15_WestEntrance_1F @ 0x83BDB9C + .4byte gMapScripts_Route15_WestEntrance_1F @ 0x8170088 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 224 + .byte 0x73, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route15_WestEntrance_2F:: @ 8351990 - .incbin "baserom.gba", 0x351990, 0x1C + .4byte gMapData_Route15_WestEntrance_2F @ 0x8320804 + .4byte gMapEvents_Route15_WestEntrance_2F @ 0x83BDBE8 + .4byte gMapScripts_Route15_WestEntrance_2F @ 0x8170092 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 220 + .byte 0x73, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route16_House:: @ 83519AC - .incbin "baserom.gba", 0x3519AC, 0x1C + .4byte gMapData_Route16_House @ 0x82D5754 + .4byte gMapEvents_Route16_House @ 0x83BDC44 + .4byte gMapScripts_Route16_House @ 0x817014E + .4byte NULL + .2byte BGM_FRLG_CELADON_CITY + .2byte 6 + .byte 0x74, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route16_NorthEntrance_1F:: @ 83519C8 - .incbin "baserom.gba", 0x3519C8, 0x1C + .4byte gMapData_Route16_NorthEntrance_1F @ 0x8320D14 + .4byte gMapEvents_Route16_NorthEntrance_1F @ 0x83BDD60 + .4byte gMapScripts_Route16_NorthEntrance_1F @ 0x81701C2 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 223 + .byte 0x74, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route16_NorthEntrance_2F:: @ 83519E4 - .incbin "baserom.gba", 0x3519E4, 0x1C + .4byte gMapData_Route16_NorthEntrance_2F @ 0x8320804 + .4byte gMapEvents_Route16_NorthEntrance_2F @ 0x83BDDDC + .4byte gMapScripts_Route16_NorthEntrance_2F @ 0x81702BE + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 220 + .byte 0x74, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route18_EastEntrance_1F:: @ 8351A00 - .incbin "baserom.gba", 0x351A00, 0x1C + .4byte gMapData_Route18_EastEntrance_1F @ 0x8320E70 + .4byte gMapEvents_Route18_EastEntrance_1F @ 0x83BDED0 + .4byte gMapScripts_Route18_EastEntrance_1F @ 0x8170378 + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 224 + .byte 0x76, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00 Route18_EastEntrance_2F:: @ 8351A1C - .incbin "baserom.gba", 0x351A1C, 0x1C + .4byte gMapData_Route18_EastEntrance_2F @ 0x8320804 + .4byte gMapEvents_Route18_EastEntrance_2F @ 0x83BDF1C + .4byte gMapScripts_Route18_EastEntrance_2F @ 0x817046B + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_CITY + .2byte 220 + .byte 0x76, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 UnusedHouse_27_00:: @ 8351A38 - .incbin "baserom.gba", 0x351A38, 0x1C + .4byte gMapData_UnusedHouse_27_00 @ 0x82D5840 + .4byte gMapEvents_UnusedHouse_27_00 @ 0x83BDF30 + .4byte gMapScripts_UnusedHouse_27_00 @ 0x81704FA + .4byte NULL + .2byte BGM_FRLG_ROUTE_3 + .2byte 7 + .byte 0x77, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route22_NorthEntrance:: @ 8351A54 - .incbin "baserom.gba", 0x351A54, 0x1C + .4byte gMapData_Route22_NorthEntrance @ 0x8320B1C + .4byte gMapEvents_Route22_NorthEntrance @ 0x83BDF8C + .4byte gMapScripts_Route22_NorthEntrance @ 0x81704FB + .4byte NULL + .2byte BGM_FRLG_VIRIDIAN_FOREST + .2byte 222 + .byte 0x7a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 UnusedHouse_29_00:: @ 8351A70 - .incbin "baserom.gba", 0x351A70, 0x1C + .4byte gMapData_UnusedHouse_29_00 @ 0x82D5840 + .4byte gMapEvents_UnusedHouse_29_00 @ 0x83BDFA0 + .4byte gMapScripts_UnusedHouse_29_00 @ 0x8170522 + .4byte NULL + .2byte BGM_FRLG_INDIGO_PLATEAU + .2byte 7 + .byte 0x7b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 Route25_SeaCottage:: @ 8351A8C - .incbin "baserom.gba", 0x351A8C, 0x1C + .4byte gMapData_Route25_SeaCottage @ 0x8319030 + .4byte gMapEvents_Route25_SeaCottage @ 0x83BE008 + .4byte gMapScripts_Route25_SeaCottage @ 0x8170523 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 169 + .byte 0x7d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SevenIsland_House_Room1:: @ 8351AA8 - .incbin "baserom.gba", 0x351AA8, 0x1C + .4byte gMapData_SevenIsland_House_Room1 @ 0x834E310 + .4byte gMapEvents_SevenIsland_House_Room1 @ 0x83BE050 + .4byte gMapScripts_SevenIsland_House_Room1 @ 0x817088A + .4byte NULL + .2byte BGM_FRLG_ISLAND_SIX + .2byte 382 + .byte 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 SevenIsland_House_Room2:: @ 8351AC4 - .incbin "baserom.gba", 0x351AC4, 0x1C + .4byte gMapData_SevenIsland_House_Room2 @ 0x8338C48 + .4byte gMapEvents_SevenIsland_House_Room2 @ 0x83BE084 + .4byte gMapScripts_SevenIsland_House_Room2 @ 0x8170A7E + .4byte NULL + .2byte BGM_FRLG_ISLAND_SIX + .2byte 265 + .byte 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01 SevenIsland_Mart:: @ 8351AE0 - .incbin "baserom.gba", 0x351AE0, 0x1C + .4byte gMapData_SevenIsland_Mart @ 0x82D5BCC + .4byte gMapEvents_SevenIsland_Mart @ 0x83BE100 + .4byte gMapScripts_SevenIsland_Mart @ 0x8170B30 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SevenIsland_PokemonCenter_1F:: @ 8351AFC - .incbin "baserom.gba", 0x351AFC, 0x1C + .4byte gMapData_SevenIsland_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_SevenIsland_PokemonCenter_1F @ 0x83BE1B4 + .4byte gMapScripts_SevenIsland_PokemonCenter_1F @ 0x8170B89 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SevenIsland_PokemonCenter_2F:: @ 8351B18 - .incbin "baserom.gba", 0x351B18, 0x1C + .4byte gMapData_SevenIsland_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_SevenIsland_PokemonCenter_2F @ 0x83BE240 + .4byte gMapScripts_SevenIsland_PokemonCenter_2F @ 0x8170BBC + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 UnusedHouse_31_05:: @ 8351B34 - .incbin "baserom.gba", 0x351B34, 0x1C + .4byte gMapData_UnusedHouse_31_05 @ 0x82D6070 + .4byte gMapEvents_UnusedHouse_31_05 @ 0x83BE254 + .4byte gMapScripts_UnusedHouse_31_05 @ 0x8170BE3 + .4byte NULL + .2byte BGM_FRLG_ISLAND_SIX + .2byte 13 + .byte 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SevenIsland_Harbor:: @ 8351B50 - .incbin "baserom.gba", 0x351B50, 0x1C + .4byte gMapData_SevenIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_SevenIsland_Harbor @ 0x83BE2A0 + .4byte gMapScripts_SevenIsland_Harbor @ 0x8170BE4 + .4byte NULL + .2byte BGM_FRLG_ISLAND_SIX + .2byte 315 + .byte 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 OneIsland_PokemonCenter_1F:: @ 8351B6C - .incbin "baserom.gba", 0x351B6C, 0x1C + .4byte gMapData_OneIsland_PokemonCenter_1F @ 0x833A970 + .4byte gMapEvents_OneIsland_PokemonCenter_1F @ 0x83BE400 + .4byte gMapScripts_OneIsland_PokemonCenter_1F @ 0x8170BF8 + .4byte NULL + .2byte BGM_FRLG_POKEMON_NETWORK_CENTER + .2byte 271 + .byte 0x8f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 OneIsland_PokemonCenter_2F:: @ 8351B88 - .incbin "baserom.gba", 0x351B88, 0x1C + .4byte gMapData_OneIsland_PokemonCenter_2F @ 0x8344108 + .4byte gMapEvents_OneIsland_PokemonCenter_2F @ 0x83BE48C + .4byte gMapScripts_OneIsland_PokemonCenter_2F @ 0x8171334 + .4byte NULL + .2byte BGM_FRLG_POKEMON_NETWORK_CENTER + .2byte 316 + .byte 0x8f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 OneIsland_House1:: @ 8351BA4 - .incbin "baserom.gba", 0x351BA4, 0x1C + .4byte gMapData_OneIsland_House1 @ 0x82D5CB8 + .4byte gMapEvents_OneIsland_House1 @ 0x83BE4D8 + .4byte gMapScripts_OneIsland_House1 @ 0x817135B + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x8f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 OneIsland_House2:: @ 8351BC0 - .incbin "baserom.gba", 0x351BC0, 0x1C + .4byte gMapData_OneIsland_House2 @ 0x82D5CB8 + .4byte gMapEvents_OneIsland_House2 @ 0x83BE50C + .4byte gMapScripts_OneIsland_House2 @ 0x817136E + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x8f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 OneIsland_Harbor:: @ 8351BDC - .incbin "baserom.gba", 0x351BDC, 0x1C + .4byte gMapData_OneIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_OneIsland_Harbor @ 0x83BE558 + .4byte gMapScripts_OneIsland_Harbor @ 0x8171378 + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 315 + .byte 0x8f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 TwoIsland_JoyfulGameCorner:: @ 8351BF8 - .incbin "baserom.gba", 0x351BF8, 0x1C + .4byte gMapData_TwoIsland_JoyfulGameCorner @ 0x833AA84 + .4byte gMapEvents_TwoIsland_JoyfulGameCorner @ 0x83BE5EC + .4byte gMapScripts_TwoIsland_JoyfulGameCorner @ 0x81713D0 + .4byte NULL + .2byte BGM_FRLG_GAMECORNER + .2byte 272 + .byte 0x90, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 TwoIsland_House:: @ 8351C14 - .incbin "baserom.gba", 0x351C14, 0x1C + .4byte gMapData_TwoIsland_House @ 0x82D5CB8 + .4byte gMapEvents_TwoIsland_House @ 0x83BE620 + .4byte gMapScripts_TwoIsland_House @ 0x8171618 + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x90, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 TwoIsland_PokemonCenter_1F:: @ 8351C30 - .incbin "baserom.gba", 0x351C30, 0x1C + .4byte gMapData_TwoIsland_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_TwoIsland_PokemonCenter_1F @ 0x83BE68C + .4byte gMapScripts_TwoIsland_PokemonCenter_1F @ 0x81717B4 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x90, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 TwoIsland_PokemonCenter_2F:: @ 8351C4C - .incbin "baserom.gba", 0x351C4C, 0x1C + .4byte gMapData_TwoIsland_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_TwoIsland_PokemonCenter_2F @ 0x83BE718 + .4byte gMapScripts_TwoIsland_PokemonCenter_2F @ 0x81717DE + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x90, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 TwoIsland_Harbor:: @ 8351C68 - .incbin "baserom.gba", 0x351C68, 0x1C + .4byte gMapData_TwoIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_TwoIsland_Harbor @ 0x83BE764 + .4byte gMapScripts_TwoIsland_Harbor @ 0x8171805 + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 315 + .byte 0x90, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_House1:: @ 8351C84 - .incbin "baserom.gba", 0x351C84, 0x1C + .4byte gMapData_ThreeIsland_House1 @ 0x82D7504 + .4byte gMapEvents_ThreeIsland_House1 @ 0x83BE7A4 + .4byte gMapScripts_ThreeIsland_House1 @ 0x8171819 + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 31 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_PokemonCenter_1F:: @ 8351CA0 - .incbin "baserom.gba", 0x351CA0, 0x1C + .4byte gMapData_ThreeIsland_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_ThreeIsland_PokemonCenter_1F @ 0x83BE828 + .4byte gMapScripts_ThreeIsland_PokemonCenter_1F @ 0x8171832 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_PokemonCenter_2F:: @ 8351CBC - .incbin "baserom.gba", 0x351CBC, 0x1C + .4byte gMapData_ThreeIsland_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_ThreeIsland_PokemonCenter_2F @ 0x83BE8B4 + .4byte gMapScripts_ThreeIsland_PokemonCenter_2F @ 0x8171865 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_Mart:: @ 8351CD8 - .incbin "baserom.gba", 0x351CD8, 0x1C + .4byte gMapData_ThreeIsland_Mart @ 0x82D5BCC + .4byte gMapEvents_ThreeIsland_Mart @ 0x83BE930 + .4byte gMapScripts_ThreeIsland_Mart @ 0x817188C + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_House2:: @ 8351CF4 - .incbin "baserom.gba", 0x351CF4, 0x1C + .4byte gMapData_ThreeIsland_House2 @ 0x82D5CB8 + .4byte gMapEvents_ThreeIsland_House2 @ 0x83BE97C + .4byte gMapScripts_ThreeIsland_House2 @ 0x81718DF + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_House3:: @ 8351D10 - .incbin "baserom.gba", 0x351D10, 0x1C + .4byte gMapData_ThreeIsland_House3 @ 0x82D5CB8 + .4byte gMapEvents_ThreeIsland_House3 @ 0x83BE9B0 + .4byte gMapScripts_ThreeIsland_House3 @ 0x8171902 + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_House4:: @ 8351D2C - .incbin "baserom.gba", 0x351D2C, 0x1C + .4byte gMapData_ThreeIsland_House4 @ 0x82D5CB8 + .4byte gMapEvents_ThreeIsland_House4 @ 0x83BE9FC + .4byte gMapScripts_ThreeIsland_House4 @ 0x817190C + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_House5:: @ 8351D48 - .incbin "baserom.gba", 0x351D48, 0x1C + .4byte gMapData_ThreeIsland_House5 @ 0x82D5CB8 + .4byte gMapEvents_ThreeIsland_House5 @ 0x83BEA30 + .4byte gMapScripts_ThreeIsland_House5 @ 0x817191F + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x91, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_PokemonDayCare:: @ 8351D64 - .incbin "baserom.gba", 0x351D64, 0x1C + .4byte gMapData_FourIsland_PokemonDayCare @ 0x833AFA8 + .4byte gMapEvents_FourIsland_PokemonDayCare @ 0x83BEA64 + .4byte gMapScripts_FourIsland_PokemonDayCare @ 0x817193F + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 277 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_PokemonCenter_1F:: @ 8351D80 - .incbin "baserom.gba", 0x351D80, 0x1C + .4byte gMapData_FourIsland_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_FourIsland_PokemonCenter_1F @ 0x83BEB00 + .4byte gMapScripts_FourIsland_PokemonCenter_1F @ 0x8171BEA + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_PokemonCenter_2F:: @ 8351D9C - .incbin "baserom.gba", 0x351D9C, 0x1C + .4byte gMapData_FourIsland_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_FourIsland_PokemonCenter_2F @ 0x83BEB8C + .4byte gMapScripts_FourIsland_PokemonCenter_2F @ 0x8171C1D + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_House1:: @ 8351DB8 - .incbin "baserom.gba", 0x351DB8, 0x1C + .4byte gMapData_FourIsland_House1 @ 0x82D5CB8 + .4byte gMapEvents_FourIsland_House1 @ 0x83BEBD8 + .4byte gMapScripts_FourIsland_House1 @ 0x8171C44 + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 11 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_LoreleisHouse:: @ 8351DD4 - .incbin "baserom.gba", 0x351DD4, 0x1C + .4byte gMapData_FourIsland_LoreleisHouse @ 0x82D7418 + .4byte gMapEvents_FourIsland_LoreleisHouse @ 0x83BED5C + .4byte gMapScripts_FourIsland_LoreleisHouse @ 0x8171C4E + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 30 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_Harbor:: @ 8351DF0 - .incbin "baserom.gba", 0x351DF0, 0x1C + .4byte gMapData_FourIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_FourIsland_Harbor @ 0x83BEDA8 + .4byte gMapScripts_FourIsland_Harbor @ 0x8171C98 + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 315 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_House2:: @ 8351E0C - .incbin "baserom.gba", 0x351E0C, 0x1C + .4byte gMapData_FourIsland_House2 @ 0x82D5CB8 + .4byte gMapEvents_FourIsland_House2 @ 0x83BEDDC + .4byte gMapScripts_FourIsland_House2 @ 0x8171CAC + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 11 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FourIsland_Mart:: @ 8351E28 - .incbin "baserom.gba", 0x351E28, 0x1C + .4byte gMapData_FourIsland_Mart @ 0x82D5BCC + .4byte gMapEvents_FourIsland_Mart @ 0x83BEE40 + .4byte gMapScripts_FourIsland_Mart @ 0x8171CAD + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x92, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FiveIsland_PokemonCenter_1F:: @ 8351E44 - .incbin "baserom.gba", 0x351E44, 0x1C + .4byte gMapData_FiveIsland_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_FiveIsland_PokemonCenter_1F @ 0x83BEEDC + .4byte gMapScripts_FiveIsland_PokemonCenter_1F @ 0x8171CF1 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x93, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FiveIsland_PokemonCenter_2F:: @ 8351E60 - .incbin "baserom.gba", 0x351E60, 0x1C + .4byte gMapData_FiveIsland_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_FiveIsland_PokemonCenter_2F @ 0x83BEF68 + .4byte gMapScripts_FiveIsland_PokemonCenter_2F @ 0x8171D1B + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x93, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FiveIsland_Harbor:: @ 8351E7C - .incbin "baserom.gba", 0x351E7C, 0x1C + .4byte gMapData_FiveIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_FiveIsland_Harbor @ 0x83BEFB4 + .4byte gMapScripts_FiveIsland_Harbor @ 0x8171D42 + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 315 + .byte 0x93, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FiveIsland_House1:: @ 8351E98 - .incbin "baserom.gba", 0x351E98, 0x1C + .4byte gMapData_FiveIsland_House1 @ 0x82D5CB8 + .4byte gMapEvents_FiveIsland_House1 @ 0x83BEFE8 + .4byte gMapScripts_FiveIsland_House1 @ 0x8171D56 + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 11 + .byte 0x93, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FiveIsland_House2:: @ 8351EB4 - .incbin "baserom.gba", 0x351EB4, 0x1C + .4byte gMapData_FiveIsland_House2 @ 0x82D5CB8 + .4byte gMapEvents_FiveIsland_House2 @ 0x83BF01C + .4byte gMapScripts_FiveIsland_House2 @ 0x8171D60 + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 11 + .byte 0x93, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SixIsland_PokemonCenter_1F:: @ 8351ED0 - .incbin "baserom.gba", 0x351ED0, 0x1C + .4byte gMapData_SixIsland_PokemonCenter_1F @ 0x82D5990 + .4byte gMapEvents_SixIsland_PokemonCenter_1F @ 0x83BF0A0 + .4byte gMapScripts_SixIsland_PokemonCenter_1F @ 0x8171D6A + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 8 + .byte 0x95, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SixIsland_PokemonCenter_2F:: @ 8351EEC - .incbin "baserom.gba", 0x351EEC, 0x1C + .4byte gMapData_SixIsland_PokemonCenter_2F @ 0x82D5AE0 + .4byte gMapEvents_SixIsland_PokemonCenter_2F @ 0x83BF12C + .4byte gMapScripts_SixIsland_PokemonCenter_2F @ 0x8171E20 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 9 + .byte 0x95, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SixIsland_Harbor:: @ 8351F08 - .incbin "baserom.gba", 0x351F08, 0x1C + .4byte gMapData_SixIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_SixIsland_Harbor @ 0x83BF178 + .4byte gMapScripts_SixIsland_Harbor @ 0x8171E47 + .4byte NULL + .2byte BGM_FRLG_ISLAND_SIX + .2byte 315 + .byte 0x95, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SixIsland_House:: @ 8351F24 - .incbin "baserom.gba", 0x351F24, 0x1C + .4byte gMapData_SixIsland_House @ 0x82D5CB8 + .4byte gMapEvents_SixIsland_House @ 0x83BF1AC + .4byte gMapScripts_SixIsland_House @ 0x8171E5B + .4byte NULL + .2byte BGM_FRLG_ISLAND_SIX + .2byte 11 + .byte 0x95, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SixIsland_Mart:: @ 8351F40 - .incbin "baserom.gba", 0x351F40, 0x1C + .4byte gMapData_SixIsland_Mart @ 0x82D5BCC + .4byte gMapEvents_SixIsland_Mart @ 0x83BF210 + .4byte gMapScripts_SixIsland_Mart @ 0x8171E65 + .4byte NULL + .2byte BGM_FRLG_POKEMON_CENTER + .2byte 10 + .byte 0x95, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 ThreeIsland_Harbor:: @ 8351F5C - .incbin "baserom.gba", 0x351F5C, 0x1C + .4byte gMapData_ThreeIsland_Harbor @ 0x8343FB8 + .4byte gMapEvents_ThreeIsland_Harbor @ 0x83BF25C + .4byte gMapScripts_ThreeIsland_Harbor @ 0x8171EA9 + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 315 + .byte 0x9a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 FiveIsland_ResortGorgeous_House:: @ 8351F78 - .incbin "baserom.gba", 0x351F78, 0x1C + .4byte gMapData_FiveIsland_ResortGorgeous_House @ 0x82D657C + .4byte gMapEvents_FiveIsland_ResortGorgeous_House @ 0x83BF2C0 + .4byte gMapScripts_FiveIsland_ResortGorgeous_House @ 0x8171EBD + .4byte NULL + .2byte BGM_FRLG_ISLAND_FOUR + .2byte 17 + .byte 0x9f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 TwoIsland_CapeBrink_House:: @ 8351F94 - .incbin "baserom.gba", 0x351F94, 0x1C + .4byte gMapData_TwoIsland_CapeBrink_House @ 0x82D5CB8 + .4byte gMapEvents_TwoIsland_CapeBrink_House @ 0x83BF2F4 + .4byte gMapScripts_TwoIsland_CapeBrink_House @ 0x817206B + .4byte NULL + .2byte BGM_FRLG_ISLAND_ONE + .2byte 11 + .byte 0x98, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SixIsland_WaterPath_House1:: @ 8351FB0 - .incbin "baserom.gba", 0x351FB0, 0x1C + .4byte gMapData_SixIsland_WaterPath_House1 @ 0x82D6070 + .4byte gMapEvents_SixIsland_WaterPath_House1 @ 0x83BF334 + .4byte gMapScripts_SixIsland_WaterPath_House1 @ 0x817206C + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 13 + .byte 0xa5, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SixIsland_WaterPath_House2:: @ 8351FCC - .incbin "baserom.gba", 0x351FCC, 0x1C + .4byte gMapData_SixIsland_WaterPath_House2 @ 0x82D5CB8 + .4byte gMapEvents_SixIsland_WaterPath_House2 @ 0x83BF368 + .4byte gMapScripts_SixIsland_WaterPath_House2 @ 0x8172178 + .4byte NULL + .2byte BGM_FRLG_CERULEAN_CITY + .2byte 11 + .byte 0xa5, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 SevenIsland_SevaultCanyon_House:: @ 8351FE8 - .incbin "baserom.gba", 0x351FE8, 0x1C + .4byte gMapData_SevenIsland_SevaultCanyon_House @ 0x82D5CB8 + .4byte gMapEvents_SevenIsland_SevaultCanyon_House @ 0x83BF3CC + .4byte gMapScripts_SevenIsland_SevaultCanyon_House @ 0x8172182 + .4byte NULL + .2byte BGM_FRLG_ISLAND_SIX + .2byte 11 + .byte 0xa9, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 gMapGroup_00:: @ 8352004 .4byte UnknownMap_00_00 diff --git a/include/constants/songs.h b/include/constants/songs.h index b216ac988..fc42af3fc 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -257,6 +257,7 @@ #define MUS_ME_BACHI 260 #define MUS_ME_WAZA 261 #define MUS_ME_KINOMI 262 +#define BGM_FRLG_SAFARI_ZONE 264 #define MUS_ME_B_BIG 268 #define MUS_ME_B_SMALL 269 #define MUS_ME_WASURE 270 From c538a8303341600f693bcb0f6ff7f6e5152f5855 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Apr 2019 16:29:59 -0400 Subject: [PATCH 081/318] Move map events to their own file --- data/battle_anim.s | 1284 ----------------------------- data/battle_anim_status_effects.s | 11 + data/map_events.s | 1276 ++++++++++++++++++++++++++++ ld_script.txt | 2 + 4 files changed, 1289 insertions(+), 1284 deletions(-) create mode 100644 data/battle_anim_status_effects.s create mode 100644 data/map_events.s diff --git a/data/battle_anim.s b/data/battle_anim.s index 7a21ae16f..a3c58fb11 100644 --- a/data/battle_anim.s +++ b/data/battle_anim.s @@ -260,1287 +260,3 @@ gUnknown_83AE054:: @ 83AE054 gUnknown_83AE084:: @ 0x83AE084 .incbin "baserom.gba", 0x3AE084, 0x58 - -gMapEvents_UnknownMap_00_00:: @ 0x83AE0DC - .incbin "baserom.gba", 0x3AE0DC, 0x5C - -gMapEvents_UnknownMap_00_01:: @ 0x83AE138 - .incbin "baserom.gba", 0x3AE138, 0x8C - -gMapEvents_UnknownMap_00_02:: @ 0x83AE1C4 - .incbin "baserom.gba", 0x3AE1C4, 0x74 - -gMapEvents_UnknownMap_00_03:: @ 0x83AE238 - .incbin "baserom.gba", 0x3AE238, 0xF4 - -gMapEvents_UnknownMap_00_04:: @ 0x83AE32C - .incbin "baserom.gba", 0x3AE32C, 0x1AC - -gMapEvents_ViridianForest:: @ 0x83AE4D8 - .incbin "baserom.gba", 0x3AE4D8, 0x190 - -gMapEvents_MtMoon_1F:: @ 0x83AE668 - .incbin "baserom.gba", 0x3AE668, 0x9C - -gMapEvents_MtMoon_B1F:: @ 0x83AE704 - .incbin "baserom.gba", 0x3AE704, 0x164 - -gMapEvents_MtMoon_B2F:: @ 0x83AE868 - .incbin "baserom.gba", 0x3AE868, 0x60 - -gMapEvents_SSAnne_Exterior:: @ 0x83AE8C8 - .incbin "baserom.gba", 0x3AE8C8, 0xAC - -gMapEvents_SSAnne_1F_Corridor:: @ 0x83AE974 - .incbin "baserom.gba", 0x3AE974, 0xBC - -gMapEvents_SSAnne_2F_Corridor:: @ 0x83AEA30 - .incbin "baserom.gba", 0x3AEA30, 0x44 - -gMapEvents_SSAnne_3F_Corridor:: @ 0x83AEA74 - .incbin "baserom.gba", 0x3AEA74, 0x50 - -gMapEvents_SSAnne_B1F_Corridor:: @ 0x83AEAC4 - .incbin "baserom.gba", 0x3AEAC4, 0x9C - -gMapEvents_SSAnne_Deck:: @ 0x83AEB60 - .incbin "baserom.gba", 0x3AEB60, 0x100 - -gMapEvents_SSAnne_Kitchen:: @ 0x83AEC60 - .incbin "baserom.gba", 0x3AEC60, 0x58 - -gMapEvents_SSAnne_CaptainsOffice:: @ 0x83AECB8 - .incbin "baserom.gba", 0x3AECB8, 0x34 - -gMapEvents_SSAnne_1F_Room1:: @ 0x83AECEC - .incbin "baserom.gba", 0x3AECEC, 0x7C - -gMapEvents_SSAnne_1F_Room2:: @ 0x83AED68 - .incbin "baserom.gba", 0x3AED68, 0x64 - -gMapEvents_SSAnne_1F_Room3:: @ 0x83AEDCC - .incbin "baserom.gba", 0x3AEDCC, 0x34 - -gMapEvents_SSAnne_1F_Room4:: @ 0x83AEE00 - .incbin "baserom.gba", 0x3AEE00, 0x34 - -gMapEvents_SSAnne_1F_Room5:: @ 0x83AEE34 - .incbin "baserom.gba", 0x3AEE34, 0x34 - -gMapEvents_SSAnne_1F_Room7:: @ 0x83AEE68 - .incbin "baserom.gba", 0x3AEE68, 0x34 - -gMapEvents_SSAnne_2F_Room1:: @ 0x83AEE9C - .incbin "baserom.gba", 0x3AEE9C, 0x64 - -gMapEvents_SSAnne_2F_Room2:: @ 0x83AEF00 - .incbin "baserom.gba", 0x3AEF00, 0x4C - -gMapEvents_SSAnne_2F_Room3:: @ 0x83AEF4C - .incbin "baserom.gba", 0x3AEF4C, 0x64 - -gMapEvents_SSAnne_2F_Room4:: @ 0x83AEFB0 - .incbin "baserom.gba", 0x3AEFB0, 0x4C - -gMapEvents_SSAnne_2F_Room5:: @ 0x83AEFFC - .incbin "baserom.gba", 0x3AEFFC, 0x4C - -gMapEvents_SSAnne_2F_Room6:: @ 0x83AF048 - .incbin "baserom.gba", 0x3AF048, 0x4C - -gMapEvents_SSAnne_B1F_Room1:: @ 0x83AF094 - .incbin "baserom.gba", 0x3AF094, 0x4C - -gMapEvents_SSAnne_B1F_Room2:: @ 0x83AF0E0 - .incbin "baserom.gba", 0x3AF0E0, 0x4C - -gMapEvents_SSAnne_B1F_Room3:: @ 0x83AF12C - .incbin "baserom.gba", 0x3AF12C, 0x4C - -gMapEvents_SSAnne_B1F_Room4:: @ 0x83AF178 - .incbin "baserom.gba", 0x3AF178, 0x64 - -gMapEvents_SSAnne_B1F_Room5:: @ 0x83AF1DC - .incbin "baserom.gba", 0x3AF1DC, 0x34 - -gMapEvents_SSAnne_1F_Room6:: @ 0x83AF210 - .incbin "baserom.gba", 0x3AF210, 0x4C - -gMapEvents_UndergroundPath_NorthEntrance:: @ 0x83AF25C - .incbin "baserom.gba", 0x3AF25C, 0x78 - -gMapEvents_UndergroundPath_NorthSouthTunnel:: @ 0x83AF2D4 - .incbin "baserom.gba", 0x3AF2D4, 0x4C - -gMapEvents_UndergroundPath_SouthEntrance:: @ 0x83AF320 - .incbin "baserom.gba", 0x3AF320, 0x4C - -gMapEvents_UndergroundPath_WestEntrance:: @ 0x83AF36C - .incbin "baserom.gba", 0x3AF36C, 0x78 - -gMapEvents_UndergroundPath_EastWestTunnel:: @ 0x83AF3E4 - .incbin "baserom.gba", 0x3AF3E4, 0x4C - -gMapEvents_UndergroundPath_EastEntrance:: @ 0x83AF430 - .incbin "baserom.gba", 0x3AF430, 0x3C - -gMapEvents_DiglettsCave_NorthEntrance:: @ 0x83AF46C - .incbin "baserom.gba", 0x3AF46C, 0x24 - -gMapEvents_DiglettsCave_B1F:: @ 0x83AF490 - .incbin "baserom.gba", 0x3AF490, 0x3C - -gMapEvents_DiglettsCave_SouthEntrance:: @ 0x83AF4CC - .incbin "baserom.gba", 0x3AF4CC, 0xF4 - -gMapEvents_VictoryRoad_1F:: @ 0x83AF5C0 - .incbin "baserom.gba", 0x3AF5C0, 0x1B4 - -gMapEvents_VictoryRoad_2F:: @ 0x83AF774 - .incbin "baserom.gba", 0x3AF774, 0x16C - -gMapEvents_VictoryRoad_3F:: @ 0x83AF8E0 - .incbin "baserom.gba", 0x3AF8E0, 0xF8 - -gMapEvents_RocketHideout_B1F:: @ 0x83AF9D8 - .incbin "baserom.gba", 0x3AF9D8, 0xB4 - -gMapEvents_RocketHideout_B2F:: @ 0x83AFA8C - .incbin "baserom.gba", 0x3AFA8C, 0xA8 - -gMapEvents_RocketHideout_B3F:: @ 0x83AFB34 - .incbin "baserom.gba", 0x3AFB34, 0x11C - -gMapEvents_RocketHideout_B4F:: @ 0x83AFC50 - .incbin "baserom.gba", 0x3AFC50, 0x30 - -gMapEvents_RocketHideout_Elevator:: @ 0x83AFC80 - .incbin "baserom.gba", 0x3AFC80, 0x60 - -gMapEvents_SilphCo_1F:: @ 0x83AFCE0 - .incbin "baserom.gba", 0x3AFCE0, 0x13C - -gMapEvents_SilphCo_2F:: @ 0x83AFE1C - .incbin "baserom.gba", 0x3AFE1C, 0x13C - -gMapEvents_SilphCo_3F:: @ 0x83AFF58 - .incbin "baserom.gba", 0x3AFF58, 0x184 - -gMapEvents_SilphCo_4F:: @ 0x83B00DC - .incbin "baserom.gba", 0x3B00DC, 0x1FC - -gMapEvents_SilphCo_5F:: @ 0x83B02D8 - .incbin "baserom.gba", 0x3B02D8, 0x174 - -gMapEvents_SilphCo_6F:: @ 0x83B044C - .incbin "baserom.gba", 0x3B044C, 0x214 - -gMapEvents_SilphCo_7F:: @ 0x83B0660 - .incbin "baserom.gba", 0x3B0660, 0x124 - -gMapEvents_SilphCo_8F:: @ 0x83B0784 - .incbin "baserom.gba", 0x3B0784, 0x180 - -gMapEvents_SilphCo_9F:: @ 0x83B0904 - .incbin "baserom.gba", 0x3B0904, 0x11C - -gMapEvents_SilphCo_10F:: @ 0x83B0A20 - .incbin "baserom.gba", 0x3B0A20, 0x124 - -gMapEvents_SilphCo_11F:: @ 0x83B0B44 - .incbin "baserom.gba", 0x3B0B44, 0x28 - -gMapEvents_SilphCo_Elevator:: @ 0x83B0B6C - .incbin "baserom.gba", 0x3B0B6C, 0xF4 - -gMapEvents_PokemonMansion_1F:: @ 0x83B0C60 - .incbin "baserom.gba", 0x3B0C60, 0xC0 - -gMapEvents_PokemonMansion_2F:: @ 0x83B0D20 - .incbin "baserom.gba", 0x3B0D20, 0xD8 - -gMapEvents_PokemonMansion_3F:: @ 0x83B0DF8 - .incbin "baserom.gba", 0x3B0DF8, 0xDC - -gMapEvents_PokemonMansion_B1F:: @ 0x83B0ED4 - .incbin "baserom.gba", 0x3B0ED4, 0xC4 - -gMapEvents_SafariZone_Center:: @ 0x83B0F98 - .incbin "baserom.gba", 0x3B0F98, 0xD0 - -gMapEvents_SafariZone_East:: @ 0x83B1068 - .incbin "baserom.gba", 0x3B1068, 0x100 - -gMapEvents_SafariZone_North:: @ 0x83B1168 - .incbin "baserom.gba", 0x3B1168, 0x108 - -gMapEvents_SafariZone_West:: @ 0x83B1270 - .incbin "baserom.gba", 0x3B1270, 0x5C - -gMapEvents_SafariZone_Building1:: @ 0x83B12CC - .incbin "baserom.gba", 0x3B12CC, 0x74 - -gMapEvents_SafariZone_Building2:: @ 0x83B1340 - .incbin "baserom.gba", 0x3B1340, 0x8C - -gMapEvents_SafariZone_Building3:: @ 0x83B13CC - .incbin "baserom.gba", 0x3B13CC, 0x74 - -gMapEvents_SafariZone_Building4:: @ 0x83B1440 - .incbin "baserom.gba", 0x3B1440, 0x44 - -gMapEvents_SafariZone_SecretHouse:: @ 0x83B1484 - .incbin "baserom.gba", 0x3B1484, 0x138 - -gMapEvents_CeruleanCave_1F:: @ 0x83B15BC - .incbin "baserom.gba", 0x3B15BC, 0x17C - -gMapEvents_CeruleanCave_2F:: @ 0x83B1738 - .incbin "baserom.gba", 0x3B1738, 0x13C - -gMapEvents_CeruleanCave_B1F:: @ 0x83B1874 - .incbin "baserom.gba", 0x3B1874, 0x3C - -gMapEvents_PokemonLeague_LoreleisRoom:: @ 0x83B18B0 - .incbin "baserom.gba", 0x3B18B0, 0x3C - -gMapEvents_PokemonLeague_BrunosRoom:: @ 0x83B18EC - .incbin "baserom.gba", 0x3B18EC, 0x3C - -gMapEvents_PokemonLeague_AgathasRoom:: @ 0x83B1928 - .incbin "baserom.gba", 0x3B1928, 0x3C - -gMapEvents_PokemonLeague_LancesRoom:: @ 0x83B1964 - .incbin "baserom.gba", 0x3B1964, 0x54 - -gMapEvents_PokemonLeague_ChampionsRoom:: @ 0x83B19B8 - .incbin "baserom.gba", 0x3B19B8, 0x34 - -gMapEvents_PokemonLeague_HallOfFame:: @ 0x83B19EC - .incbin "baserom.gba", 0x3B19EC, 0x140 - -gMapEvents_RockTunnel_1F:: @ 0x83B1B2C - .incbin "baserom.gba", 0x3B1B2C, 0x2A4 - -gMapEvents_RockTunnel_B1F:: @ 0x83B1DD0 - .incbin "baserom.gba", 0x3B1DD0, 0x94 - -gMapEvents_SeafoamIslands_1F:: @ 0x83B1E64 - .incbin "baserom.gba", 0x3B1E64, 0xCC - -gMapEvents_SeafoamIslands_B1F:: @ 0x83B1F30 - .incbin "baserom.gba", 0x3B1F30, 0xB4 - -gMapEvents_SeafoamIslands_B2F:: @ 0x83B1FE4 - .incbin "baserom.gba", 0x3B1FE4, 0xF8 - -gMapEvents_SeafoamIslands_B3F:: @ 0x83B20DC - .incbin "baserom.gba", 0x3B20DC, 0xE8 - -gMapEvents_SeafoamIslands_B4F:: @ 0x83B21C4 - .incbin "baserom.gba", 0x3B21C4, 0xAC - -gMapEvents_PokemonTower_1F:: @ 0x83B2270 - .incbin "baserom.gba", 0x3B2270, 0x74 - -gMapEvents_PokemonTower_2F:: @ 0x83B22E4 - .incbin "baserom.gba", 0x3B22E4, 0x84 - -gMapEvents_PokemonTower_3F:: @ 0x83B2368 - .incbin "baserom.gba", 0x3B2368, 0xB4 - -gMapEvents_PokemonTower_4F:: @ 0x83B241C - .incbin "baserom.gba", 0x3B241C, 0x1E8 - -gMapEvents_PokemonTower_5F:: @ 0x83B2604 - .incbin "baserom.gba", 0x3B2604, 0xBC - -gMapEvents_PokemonTower_6F:: @ 0x83B26C0 - .incbin "baserom.gba", 0x3B26C0, 0x88 - -gMapEvents_PokemonTower_7F:: @ 0x83B2748 - .incbin "baserom.gba", 0x3B2748, 0x114 - -gMapEvents_PowerPlant:: @ 0x83B285C - .incbin "baserom.gba", 0x3B285C, 0x15C - -gMapEvents_MtEmber_RubyPath_B4F:: @ 0x83B29B8 - .incbin "baserom.gba", 0x3B29B8, 0x26C - -gMapEvents_MtEmber_Exterior:: @ 0x83B2C24 - .incbin "baserom.gba", 0x3B2C24, 0x24 - -gMapEvents_MtEmber_SummitPath_1F:: @ 0x83B2C48 - .incbin "baserom.gba", 0x3B2C48, 0xFC - -gMapEvents_MtEmber_SummitPath_2F:: @ 0x83B2D44 - .incbin "baserom.gba", 0x3B2D44, 0x24 - -gMapEvents_MtEmber_SummitPath_3F:: @ 0x83B2D68 - .incbin "baserom.gba", 0x3B2D68, 0x94 - -gMapEvents_MtEmber_Summit:: @ 0x83B2DFC - .incbin "baserom.gba", 0x3B2DFC, 0x40 - -gMapEvents_MtEmber_RubyPath_B5F:: @ 0x83B2E3C - .incbin "baserom.gba", 0x3B2E3C, 0xA4 - -gMapEvents_SSAnne_Kitchen3:: @ 0x83B2EE0 - .incbin "baserom.gba", 0x3B2EE0, 0x84 - -gMapEvents_MtEmber_RubyPath_B1F:: @ 0x83B2F64 - .incbin "baserom.gba", 0x3B2F64, 0xCC - -gMapEvents_MtEmber_RubyPath_B2F:: @ 0x83B3030 - .incbin "baserom.gba", 0x3B3030, 0x11C - -gMapEvents_MtEmber_RubyPath_B3F:: @ 0x83B314C - .incbin "baserom.gba", 0x3B314C, 0x3C - -gMapEvents_MtEmber_RubyPath_B1F_Stairs:: @ 0x83B3188 - .incbin "baserom.gba", 0x3B3188, 0x54 - -gMapEvents_MtEmber_RubyPath_B2F_Stairs:: @ 0x83B31DC - .incbin "baserom.gba", 0x3B31DC, 0x230 - -gMapEvents_ThreeIsland_BerryForest:: @ 0x83B340C - .incbin "baserom.gba", 0x3B340C, 0x2C - -gMapEvents_FourIsland_IcefallCave_Entrance:: @ 0x83B3438 - .incbin "baserom.gba", 0x3B3438, 0x74 - -gMapEvents_FourIsland_IcefallCave_1F:: @ 0x83B34AC - .incbin "baserom.gba", 0x3B34AC, 0x5C - -gMapEvents_SSAnne_CaptainsOffice2:: @ 0x83B3508 - .incbin "baserom.gba", 0x3B3508, 0xAC - -gMapEvents_SSAnne_CaptainsOffice3:: @ 0x83B35B4 - .incbin "baserom.gba", 0x3B35B4, 0x268 - -gMapEvents_SSAnne_CaptainsOffice4:: @ 0x83B381C - .incbin "baserom.gba", 0x3B381C, 0x34 - -gMapEvents_SSAnne_CaptainsOffice5:: @ 0x83B3850 - .incbin "baserom.gba", 0x3B3850, 0x48 - -gMapEvents_SixIsland_DottedHole_B1F:: @ 0x83B3898 - .incbin "baserom.gba", 0x3B3898, 0x48 - -gMapEvents_SixIsland_DottedHole_B2F:: @ 0x83B38E0 - .incbin "baserom.gba", 0x3B38E0, 0x48 - -gMapEvents_SixIsland_DottedHole_B3F:: @ 0x83B3928 - .incbin "baserom.gba", 0x3B3928, 0x48 - -gMapEvents_SSAnne_CaptainsOffice9:: @ 0x83B3970 - .incbin "baserom.gba", 0x3B3970, 0x60 - -gMapEvents_SixIsland_DottedHole_SapphireRoom:: @ 0x83B39D0 - .incbin "baserom.gba", 0x3B39D0, 0x164 - -gMapEvents_SSAnne_1F_Room11:: @ 0x83B3B34 - .incbin "baserom.gba", 0x3B3B34, 0x1C - -gMapEvents_SSAnne_1F_Room12:: @ 0x83B3B50 - .incbin "baserom.gba", 0x3B3B50, 0x24 - -gMapEvents_NavelRock_Exterior:: @ 0x83B3B74 - .incbin "baserom.gba", 0x3B3B74, 0xCC - -gMapEvents_SevenIsland_TrainerTower_1F:: @ 0x83B3C40 - .incbin "baserom.gba", 0x3B3C40, 0xD4 - -gMapEvents_SevenIsland_TrainerTower_2F:: @ 0x83B3D14 - .incbin "baserom.gba", 0x3B3D14, 0xD4 - -gMapEvents_SevenIsland_TrainerTower_3F:: @ 0x83B3DE8 - .incbin "baserom.gba", 0x3B3DE8, 0xD4 - -gMapEvents_SevenIsland_TrainerTower_4F:: @ 0x83B3EBC - .incbin "baserom.gba", 0x3B3EBC, 0xD4 - -gMapEvents_SevenIsland_TrainerTower_5F:: @ 0x83B3F90 - .incbin "baserom.gba", 0x3B3F90, 0xD4 - -gMapEvents_SevenIsland_TrainerTower_6F:: @ 0x83B4064 - .incbin "baserom.gba", 0x3B4064, 0xD4 - -gMapEvents_SevenIsland_TrainerTower_7F:: @ 0x83B4138 - .incbin "baserom.gba", 0x3B4138, 0xD4 - -gMapEvents_SevenIsland_TrainerTower_8F:: @ 0x83B420C - .incbin "baserom.gba", 0x3B420C, 0x3C - -gMapEvents_SevenIsland_TrainerTower_Roof:: @ 0x83B4248 - .incbin "baserom.gba", 0x3B4248, 0xC0 - -gMapEvents_SevenIsland_TrainerTower_Lobby:: @ 0x83B4308 - .incbin "baserom.gba", 0x3B4308, 0x28 - -gMapEvents_SevenIsland_TrainerTower_Elevator:: @ 0x83B4330 - .incbin "baserom.gba", 0x3B4330, 0x24 - -gMapEvents_FiveIsland_LostCave_Entrance:: @ 0x83B4354 - .incbin "baserom.gba", 0x3B4354, 0x54 - -gMapEvents_FiveIsland_LostCave_Room1:: @ 0x83B43A8 - .incbin "baserom.gba", 0x3B43A8, 0x34 - -gMapEvents_FiveIsland_LostCave_Room2:: @ 0x83B43DC - .incbin "baserom.gba", 0x3B43DC, 0x34 - -gMapEvents_FiveIsland_LostCave_Room3:: @ 0x83B4410 - .incbin "baserom.gba", 0x3B4410, 0x4C - -gMapEvents_FiveIsland_LostCave_Room4:: @ 0x83B445C - .incbin "baserom.gba", 0x3B445C, 0x34 - -gMapEvents_FiveIsland_LostCave_Room5:: @ 0x83B4490 - .incbin "baserom.gba", 0x3B4490, 0x34 - -gMapEvents_FiveIsland_LostCave_Room6:: @ 0x83B44C4 - .incbin "baserom.gba", 0x3B44C4, 0x34 - -gMapEvents_FiveIsland_LostCave_Room7:: @ 0x83B44F8 - .incbin "baserom.gba", 0x3B44F8, 0x34 - -gMapEvents_FiveIsland_LostCave_Room8:: @ 0x83B452C - .incbin "baserom.gba", 0x3B452C, 0x34 - -gMapEvents_FiveIsland_LostCave_Room9:: @ 0x83B4560 - .incbin "baserom.gba", 0x3B4560, 0x4C - -gMapEvents_FiveIsland_LostCave_Room10:: @ 0x83B45AC - .incbin "baserom.gba", 0x3B45AC, 0x34 - -gMapEvents_FiveIsland_LostCave_Room11:: @ 0x83B45E0 - .incbin "baserom.gba", 0x3B45E0, 0x34 - -gMapEvents_FiveIsland_LostCave_Room12:: @ 0x83B4614 - .incbin "baserom.gba", 0x3B4614, 0x34 - -gMapEvents_FiveIsland_LostCave_Room13:: @ 0x83B4648 - .incbin "baserom.gba", 0x3B4648, 0x34 - -gMapEvents_FiveIsland_LostCave_Room14:: @ 0x83B467C - .incbin "baserom.gba", 0x3B467C, 0x1C - -gMapEvents_SevenIsland_TanobyRuins_MoneanChamber:: @ 0x83B4698 - .incbin "baserom.gba", 0x3B4698, 0x1C - -gMapEvents_SevenIsland_TanobyRuins_LiptooChamber:: @ 0x83B46B4 - .incbin "baserom.gba", 0x3B46B4, 0x1C - -gMapEvents_SevenIsland_TanobyRuins_WeepthChamber:: @ 0x83B46D0 - .incbin "baserom.gba", 0x3B46D0, 0x1C - -gMapEvents_SevenIsland_TanobyRuins_DilfordChamber:: @ 0x83B46EC - .incbin "baserom.gba", 0x3B46EC, 0x1C - -gMapEvents_SevenIsland_TanobyRuins_ScufibChamber:: @ 0x83B4708 - .incbin "baserom.gba", 0x3B4708, 0x1C - -gMapEvents_SevenIsland_TanobyRuins_RixyChamber:: @ 0x83B4724 - .incbin "baserom.gba", 0x3B4724, 0x1C - -gMapEvents_SevenIsland_TanobyRuins_ViapoisChamber:: @ 0x83B4740 - .incbin "baserom.gba", 0x3B4740, 0x48 - -gMapEvents_ThreeIsland_DunsparceTunnel:: @ 0x83B4788 - .incbin "baserom.gba", 0x3B4788, 0x134 - -gMapEvents_SevenIsland_SeavaultCanyon_TanobyKey:: @ 0x83B48BC - .incbin "baserom.gba", 0x3B48BC, 0x24 - -gMapEvents_NavelRock_1F:: @ 0x83B48E0 - .incbin "baserom.gba", 0x3B48E0, 0x50 - -gMapEvents_NavelRock_Summit:: @ 0x83B4930 - .incbin "baserom.gba", 0x3B4930, 0x34 - -gMapEvents_NavelRock_Base:: @ 0x83B4964 - .incbin "baserom.gba", 0x3B4964, 0x24 - -gMapEvents_NavelRock_SummitPath_2F:: @ 0x83B4988 - .incbin "baserom.gba", 0x3B4988, 0x24 - -gMapEvents_NavelRock_SummitPath_3F:: @ 0x83B49AC - .incbin "baserom.gba", 0x3B49AC, 0x24 - -gMapEvents_NavelRock_SummitPath_4F:: @ 0x83B49D0 - .incbin "baserom.gba", 0x3B49D0, 0x24 - -gMapEvents_NavelRock_SummitPath_5F:: @ 0x83B49F4 - .incbin "baserom.gba", 0x3B49F4, 0x24 - -gMapEvents_NavelRock_BasePath_B1F:: @ 0x83B4A18 - .incbin "baserom.gba", 0x3B4A18, 0x24 - -gMapEvents_NavelRock_BasePath_B2F:: @ 0x83B4A3C - .incbin "baserom.gba", 0x3B4A3C, 0x24 - -gMapEvents_NavelRock_BasePath_B3F:: @ 0x83B4A60 - .incbin "baserom.gba", 0x3B4A60, 0x24 - -gMapEvents_NavelRock_BasePath_B4F:: @ 0x83B4A84 - .incbin "baserom.gba", 0x3B4A84, 0x24 - -gMapEvents_NavelRock_BasePath_B5F:: @ 0x83B4AA8 - .incbin "baserom.gba", 0x3B4AA8, 0x24 - -gMapEvents_NavelRock_BasePath_B6F:: @ 0x83B4ACC - .incbin "baserom.gba", 0x3B4ACC, 0x24 - -gMapEvents_NavelRock_BasePath_B7F:: @ 0x83B4AF0 - .incbin "baserom.gba", 0x3B4AF0, 0x24 - -gMapEvents_NavelRock_BasePath_B8F:: @ 0x83B4B14 - .incbin "baserom.gba", 0x3B4B14, 0x24 - -gMapEvents_NavelRock_BasePath_B9F:: @ 0x83B4B38 - .incbin "baserom.gba", 0x3B4B38, 0x24 - -gMapEvents_NavelRock_BasePath_B10F:: @ 0x83B4B5C - .incbin "baserom.gba", 0x3B4B5C, 0x24 - -gMapEvents_NavelRock_BasePath_B11F:: @ 0x83B4B80 - .incbin "baserom.gba", 0x3B4B80, 0x24 - -gMapEvents_NavelRock_B1F:: @ 0x83B4BA4 - .incbin "baserom.gba", 0x3B4BA4, 0x2C - -gMapEvents_NavelRock_Fork:: @ 0x83B4BD0 - .incbin "baserom.gba", 0x3B4BD0, 0x4C - -gMapEvents_BirthIsland_Exterior:: @ 0x83B4C1C - .incbin "baserom.gba", 0x3B4C1C, 0xBC - -gMapEvents_OneIsland_KindleRoad_EmberSpa:: @ 0x83B4CD8 - .incbin "baserom.gba", 0x3B4CD8, 0x4C - -gMapEvents_BirthIsland_Harbor:: @ 0x83B4D24 - .incbin "baserom.gba", 0x3B4D24, 0x4C - -gMapEvents_NavelRock_Harbor:: @ 0x83B4D70 - .incbin "baserom.gba", 0x3B4D70, 0xE0 - -gMapEvents_PalletTown:: @ 0x83B4E50 - .incbin "baserom.gba", 0x3B4E50, 0x190 - -gMapEvents_ViridianCity:: @ 0x83B4FE0 - .incbin "baserom.gba", 0x3B4FE0, 0x1AC - -gMapEvents_PewterCity:: @ 0x83B518C - .incbin "baserom.gba", 0x3B518C, 0x254 - -gMapEvents_CeruleanCity:: @ 0x83B53E0 - .incbin "baserom.gba", 0x3B53E0, 0xBC - -gMapEvents_LavenderTown:: @ 0x83B549C - .incbin "baserom.gba", 0x3B549C, 0x1AC - -gMapEvents_VermilionCity:: @ 0x83B5648 - .incbin "baserom.gba", 0x3B5648, 0x250 - -gMapEvents_CeladonCity:: @ 0x83B5898 - .incbin "baserom.gba", 0x3B5898, 0x27C - -gMapEvents_FuchsiaCity:: @ 0x83B5B14 - .incbin "baserom.gba", 0x3B5B14, 0xDC - -gMapEvents_CinnabarIsland:: @ 0x83B5BF0 - .incbin "baserom.gba", 0x3B5BF0, 0x4C - -gMapEvents_IndigoPlateau_Exterior:: @ 0x83B5C3C - .incbin "baserom.gba", 0x3B5C3C, 0x260 - -gMapEvents_SaffronCity_Duplicate:: @ 0x83B5E9C - .incbin "baserom.gba", 0x3B5E9C, 0x14 - -gMapEvents_SaffronCity:: @ 0x83B5EB0 - .incbin "baserom.gba", 0x3B5EB0, 0x94 - -gMapEvents_OneIsland:: @ 0x83B5F44 - .incbin "baserom.gba", 0x3B5F44, 0x130 - -gMapEvents_TwoIsland:: @ 0x83B6074 - .incbin "baserom.gba", 0x3B6074, 0x254 - -gMapEvents_ThreeIsland:: @ 0x83B62C8 - .incbin "baserom.gba", 0x3B62C8, 0x1A4 - -gMapEvents_FourIsland:: @ 0x83B646C - .incbin "baserom.gba", 0x3B646C, 0x88 - -gMapEvents_FiveIsland:: @ 0x83B64F4 - .incbin "baserom.gba", 0x3B64F4, 0x88 - -gMapEvents_SevenIsland:: @ 0x83B657C - .incbin "baserom.gba", 0x3B657C, 0x7C - -gMapEvents_SixIsland:: @ 0x83B65F8 - .incbin "baserom.gba", 0x3B65F8, 0x50 - -gMapEvents_Route1:: @ 0x83B6648 - .incbin "baserom.gba", 0x3B6648, 0x124 - -gMapEvents_Route2:: @ 0x83B676C - .incbin "baserom.gba", 0x3B676C, 0x104 - -gMapEvents_Route3:: @ 0x83B6870 - .incbin "baserom.gba", 0x3B6870, 0x110 - -gMapEvents_Route4:: @ 0x83B6980 - .incbin "baserom.gba", 0x3B6980, 0x40 - -gMapEvents_Route5:: @ 0x83B69C0 - .incbin "baserom.gba", 0x3B69C0, 0xE0 - -gMapEvents_Route6:: @ 0x83B6AA0 - .incbin "baserom.gba", 0x3B6AA0, 0x54 - -gMapEvents_Route7:: @ 0x83B6AF4 - .incbin "baserom.gba", 0x3B6AF4, 0x1BC - -gMapEvents_Route8:: @ 0x83B6CB0 - .incbin "baserom.gba", 0x3B6CB0, 0x164 - -gMapEvents_Route9:: @ 0x83B6E14 - .incbin "baserom.gba", 0x3B6E14, 0x18C - -gMapEvents_Route10:: @ 0x83B6FA0 - .incbin "baserom.gba", 0x3B6FA0, 0x17C - -gMapEvents_Route11:: @ 0x83B711C - .incbin "baserom.gba", 0x3B711C, 0x1C0 - -gMapEvents_Route12:: @ 0x83B72DC - .incbin "baserom.gba", 0x3B72DC, 0x14C - -gMapEvents_Route13:: @ 0x83B7428 - .incbin "baserom.gba", 0x3B7428, 0x1A0 - -gMapEvents_Route14:: @ 0x83B75C8 - .incbin "baserom.gba", 0x3B75C8, 0x180 - -gMapEvents_Route15:: @ 0x83B7748 - .incbin "baserom.gba", 0x3B7748, 0x150 - -gMapEvents_Route16:: @ 0x83B7898 - .incbin "baserom.gba", 0x3B7898, 0x188 - -gMapEvents_Route17:: @ 0x83B7A20 - .incbin "baserom.gba", 0x3B7A20, 0x84 - -gMapEvents_Route18:: @ 0x83B7AA4 - .incbin "baserom.gba", 0x3B7AA4, 0x140 - -gMapEvents_Route19:: @ 0x83B7BE4 - .incbin "baserom.gba", 0x3B7BE4, 0x150 - -gMapEvents_Route20:: @ 0x83B7D34 - .incbin "baserom.gba", 0x3B7D34, 0xB0 - -gMapEvents_Route21_North:: @ 0x83B7DE4 - .incbin "baserom.gba", 0x3B7DE4, 0x8C - -gMapEvents_Route21_South:: @ 0x83B7E70 - .incbin "baserom.gba", 0x3B7E70, 0xA8 - -gMapEvents_Route22:: @ 0x83B7F18 - .incbin "baserom.gba", 0x3B7F18, 0x3E8 - -gMapEvents_Route23:: @ 0x83B8300 - .incbin "baserom.gba", 0x3B8300, 0x100 - -gMapEvents_Route24:: @ 0x83B8400 - .incbin "baserom.gba", 0x3B8400, 0x190 - -gMapEvents_Route25:: @ 0x83B8590 - .incbin "baserom.gba", 0x3B8590, 0x2FC - -gMapEvents_OneIsland_KindleRoad:: @ 0x83B888C - .incbin "baserom.gba", 0x3B888C, 0xA4 - -gMapEvents_OneIsland_TreasureBeach:: @ 0x83B8930 - .incbin "baserom.gba", 0x3B8930, 0x34 - -gMapEvents_TwoIsland_CapeBrink:: @ 0x83B8964 - .incbin "baserom.gba", 0x3B8964, 0x138 - -gMapEvents_ThreeIsland_BondBridge:: @ 0x83B8A9C - .incbin "baserom.gba", 0x3B8A9C, 0x74 - -gMapEvents_ThreeIsland_Port:: @ 0x83B8B10 - .incbin "baserom.gba", 0x3B8B10, 0x14 - -gMapEvents_UnknownMap_03_50:: @ 0x83B8B24 - .incbin "baserom.gba", 0x3B8B24, 0x14 - -gMapEvents_UnknownMap_03_51:: @ 0x83B8B38 - .incbin "baserom.gba", 0x3B8B38, 0x14 - -gMapEvents_UnknownMap_03_52:: @ 0x83B8B4C - .incbin "baserom.gba", 0x3B8B4C, 0x14 - -gMapEvents_UnknownMap_03_53:: @ 0x83B8B60 - .incbin "baserom.gba", 0x3B8B60, 0x120 - -gMapEvents_FiveIsland_ResortGorgeous:: @ 0x83B8C80 - .incbin "baserom.gba", 0x3B8C80, 0x44 - -gMapEvents_FiveIsland_WaterLabyrinth:: @ 0x83B8CC4 - .incbin "baserom.gba", 0x3B8CC4, 0xD0 - -gMapEvents_FiveIsland_Meadow:: @ 0x83B8D94 - .incbin "baserom.gba", 0x3B8D94, 0xC8 - -gMapEvents_FiveIsland_MemorialPillar:: @ 0x83B8E5C - .incbin "baserom.gba", 0x3B8E5C, 0xDC - -gMapEvents_SixIsland_OutcastIsland:: @ 0x83B8F38 - .incbin "baserom.gba", 0x3B8F38, 0x70 - -gMapEvents_SixIsland_GreenPath:: @ 0x83B8FA8 - .incbin "baserom.gba", 0x3B8FA8, 0x138 - -gMapEvents_SixIsland_WaterPath:: @ 0x83B90E0 - .incbin "baserom.gba", 0x3B90E0, 0x1C0 - -gMapEvents_SixIsland_RuinValley:: @ 0x83B92A0 - .incbin "baserom.gba", 0x3B92A0, 0x88 - -gMapEvents_SevenIsland_TrainerTower:: @ 0x83B9328 - .incbin "baserom.gba", 0x3B9328, 0xD4 - -gMapEvents_SevenIsland_SevaultCanyon_Entrance:: @ 0x83B93FC - .incbin "baserom.gba", 0x3B93FC, 0x21C - -gMapEvents_SevenIsland_SevaultCanyon:: @ 0x83B9618 - .incbin "baserom.gba", 0x3B9618, 0xDC - -gMapEvents_SevenIsland_TanobyRuins:: @ 0x83B96F4 - .incbin "baserom.gba", 0x3B96F4, 0x58 - -gMapEvents_PalletTown_PlayersHouse_1F:: @ 0x83B974C - .incbin "baserom.gba", 0x3B974C, 0x40 - -gMapEvents_PalletTown_PlayersHouse_2F:: @ 0x83B978C - .incbin "baserom.gba", 0x3B978C, 0x80 - -gMapEvents_PalletTown_GarysHouse:: @ 0x83B980C - .incbin "baserom.gba", 0x3B980C, 0x1AC - -gMapEvents_PalletTown_ProfessorOaksLab:: @ 0x83B99B8 - .incbin "baserom.gba", 0x3B99B8, 0x80 - -gMapEvents_ViridianCity_House1:: @ 0x83B9A38 - .incbin "baserom.gba", 0x3B9A38, 0x140 - -gMapEvents_ViridianCity_Gym:: @ 0x83B9B78 - .incbin "baserom.gba", 0x3B9B78, 0x98 - -gMapEvents_ViridianCity_House2:: @ 0x83B9C10 - .incbin "baserom.gba", 0x3B9C10, 0x74 - -gMapEvents_ViridianCity_Mart:: @ 0x83B9C84 - .incbin "baserom.gba", 0x3B9C84, 0x94 - -gMapEvents_ViridianCity_PokemonCenter_1F:: @ 0x83B9D18 - .incbin "baserom.gba", 0x3B9D18, 0x8C - -gMapEvents_ViridianCity_PokemonCenter_2F:: @ 0x83B9DA4 - .incbin "baserom.gba", 0x3B9DA4, 0x134 - -gMapEvents_PewterCity_Museum_1F:: @ 0x83B9ED8 - .incbin "baserom.gba", 0x3B9ED8, 0xF4 - -gMapEvents_PewterCity_Museum_2F:: @ 0x83B9FCC - .incbin "baserom.gba", 0x3B9FCC, 0x8C - -gMapEvents_PewterCity_Gym:: @ 0x83BA058 - .incbin "baserom.gba", 0x3BA058, 0x74 - -gMapEvents_PewterCity_Mart:: @ 0x83BA0CC - .incbin "baserom.gba", 0x3BA0CC, 0x74 - -gMapEvents_PewterCity_House1:: @ 0x83BA140 - .incbin "baserom.gba", 0x3BA140, 0xDC - -gMapEvents_PewterCity_PokemonCenter_1F:: @ 0x83BA21C - .incbin "baserom.gba", 0x3BA21C, 0x8C - -gMapEvents_PewterCity_PokemonCenter_2F:: @ 0x83BA2A8 - .incbin "baserom.gba", 0x3BA2A8, 0x5C - -gMapEvents_PewterCity_House2:: @ 0x83BA304 - .incbin "baserom.gba", 0x3BA304, 0x4C - -gMapEvents_CeruleanCity_House1:: @ 0x83BA350 - .incbin "baserom.gba", 0x3BA350, 0x70 - -gMapEvents_CeruleanCity_House2:: @ 0x83BA3C0 - .incbin "baserom.gba", 0x3BA3C0, 0x5C - -gMapEvents_CeruleanCity_House3:: @ 0x83BA41C - .incbin "baserom.gba", 0x3BA41C, 0xDC - -gMapEvents_CeruleanCity_PokemonCenter_1F:: @ 0x83BA4F8 - .incbin "baserom.gba", 0x3BA4F8, 0x8C - -gMapEvents_CeruleanCity_PokemonCenter_2F:: @ 0x83BA584 - .incbin "baserom.gba", 0x3BA584, 0xA4 - -gMapEvents_CeruleanCity_Gym:: @ 0x83BA628 - .incbin "baserom.gba", 0x3BA628, 0xD4 - -gMapEvents_CeruleanCity_BikeShop:: @ 0x83BA6FC - .incbin "baserom.gba", 0x3BA6FC, 0x74 - -gMapEvents_CeruleanCity_Mart:: @ 0x83BA770 - .incbin "baserom.gba", 0x3BA770, 0x34 - -gMapEvents_CeruleanCity_House4:: @ 0x83BA7A4 - .incbin "baserom.gba", 0x3BA7A4, 0x40 - -gMapEvents_CeruleanCity_House5:: @ 0x83BA7E4 - .incbin "baserom.gba", 0x3BA7E4, 0xAC - -gMapEvents_LavenderTown_PokemonCenter_1F:: @ 0x83BA890 - .incbin "baserom.gba", 0x3BA890, 0x8C - -gMapEvents_LavenderTown_PokemonCenter_2F:: @ 0x83BA91C - .incbin "baserom.gba", 0x3BA91C, 0xE0 - -gMapEvents_LavenderTown_VolunteerPokemonHouse:: @ 0x83BA9FC - .incbin "baserom.gba", 0x3BA9FC, 0x5C - -gMapEvents_LavenderTown_House1:: @ 0x83BAA58 - .incbin "baserom.gba", 0x3BAA58, 0x44 - -gMapEvents_LavenderTown_House2:: @ 0x83BAA9C - .incbin "baserom.gba", 0x3BAA9C, 0x8C - -gMapEvents_LavenderTown_Mart:: @ 0x83BAB28 - .incbin "baserom.gba", 0x3BAB28, 0x44 - -gMapEvents_VermilionCity_House1:: @ 0x83BAB6C - .incbin "baserom.gba", 0x3BAB6C, 0xDC - -gMapEvents_VermilionCity_PokemonCenter_1F:: @ 0x83BAC48 - .incbin "baserom.gba", 0x3BAC48, 0x8C - -gMapEvents_VermilionCity_PokemonCenter_2F:: @ 0x83BACD4 - .incbin "baserom.gba", 0x3BACD4, 0xD4 - -gMapEvents_VermilionCity_PokemonFanClub:: @ 0x83BADA8 - .incbin "baserom.gba", 0x3BADA8, 0x44 - -gMapEvents_VermilionCity_House2:: @ 0x83BADEC - .incbin "baserom.gba", 0x3BADEC, 0x74 - -gMapEvents_VermilionCity_Mart:: @ 0x83BAE60 - .incbin "baserom.gba", 0x3BAE60, 0x170 - -gMapEvents_VermilionCity_Gym:: @ 0x83BAFD0 - .incbin "baserom.gba", 0x3BAFD0, 0x98 - -gMapEvents_VermilionCity_House3:: @ 0x83BB068 - .incbin "baserom.gba", 0x3BB068, 0x84 - -gMapEvents_CeladonCity_DepartmentStore_1F:: @ 0x83BB0EC - .incbin "baserom.gba", 0x3BB0EC, 0x98 - -gMapEvents_CeladonCity_DepartmentStore_2F:: @ 0x83BB184 - .incbin "baserom.gba", 0x3BB184, 0x128 - -gMapEvents_CeladonCity_DepartmentStore_3F:: @ 0x83BB2AC - .incbin "baserom.gba", 0x3BB2AC, 0x80 - -gMapEvents_CeladonCity_DepartmentStore_4F:: @ 0x83BB32C - .incbin "baserom.gba", 0x3BB32C, 0x98 - -gMapEvents_CeladonCity_DepartmentStore_5F:: @ 0x83BB3C4 - .incbin "baserom.gba", 0x3BB3C4, 0x7C - -gMapEvents_CeladonCity_DepartmentStore_Roof:: @ 0x83BB440 - .incbin "baserom.gba", 0x3BB440, 0x3C - -gMapEvents_CeladonCity_DepartmentStore_Elevator:: @ 0x83BB47C - .incbin "baserom.gba", 0x3BB47C, 0xBC - -gMapEvents_CeladonCity_Condominiums_1F:: @ 0x83BB538 - .incbin "baserom.gba", 0x3BB538, 0x7C - -gMapEvents_CeladonCity_Condominiums_2F:: @ 0x83BB5B4 - .incbin "baserom.gba", 0x3BB5B4, 0xF4 - -gMapEvents_CeladonCity_Condominiums_3F:: @ 0x83BB6A8 - .incbin "baserom.gba", 0x3BB6A8, 0x44 - -gMapEvents_CeladonCity_Condominiums_Roof:: @ 0x83BB6EC - .incbin "baserom.gba", 0x3BB6EC, 0x80 - -gMapEvents_CeladonCity_Condominiums_RoofRoom:: @ 0x83BB76C - .incbin "baserom.gba", 0x3BB76C, 0x94 - -gMapEvents_CeladonCity_PokemonCenter_1F:: @ 0x83BB800 - .incbin "baserom.gba", 0x3BB800, 0x8C - -gMapEvents_CeladonCity_PokemonCenter_2F:: @ 0x83BB88C - .incbin "baserom.gba", 0x3BB88C, 0x2EC - -gMapEvents_CeladonCity_GameCorner:: @ 0x83BBB78 - .incbin "baserom.gba", 0x3BBB78, 0xA4 - -gMapEvents_CeladonCity_GameCorner_PrizeRoom:: @ 0x83BBC1C - .incbin "baserom.gba", 0x3BBC1C, 0x14C - -gMapEvents_CeladonCity_Gym:: @ 0x83BBD68 - .incbin "baserom.gba", 0x3BBD68, 0xA4 - -gMapEvents_CeladonCity_Restaurant:: @ 0x83BBE0C - .incbin "baserom.gba", 0x3BBE0C, 0x74 - -gMapEvents_CeladonCity_House1:: @ 0x83BBE80 - .incbin "baserom.gba", 0x3BBE80, 0x8C - -gMapEvents_CeladonCity_Hotel:: @ 0x83BBF0C - .incbin "baserom.gba", 0x3BBF0C, 0x94 - -gMapEvents_FuchsiaCity_SafariZone_Entrance:: @ 0x83BBFA0 - .incbin "baserom.gba", 0x3BBFA0, 0x74 - -gMapEvents_FuchsiaCity_Mart:: @ 0x83BC014 - .incbin "baserom.gba", 0x3BC014, 0x8C - -gMapEvents_FuchsiaCity_ZooBuilding:: @ 0x83BC0A0 - .incbin "baserom.gba", 0x3BC0A0, 0x104 - -gMapEvents_FuchsiaCity_Gym:: @ 0x83BC1A4 - .incbin "baserom.gba", 0x3BC1A4, 0x74 - -gMapEvents_FuchsiaCity_House1:: @ 0x83BC218 - .incbin "baserom.gba", 0x3BC218, 0x94 - -gMapEvents_FuchsiaCity_PokemonCenter_1F:: @ 0x83BC2AC - .incbin "baserom.gba", 0x3BC2AC, 0x8C - -gMapEvents_FuchsiaCity_PokemonCenter_2F:: @ 0x83BC338 - .incbin "baserom.gba", 0x3BC338, 0xBC - -gMapEvents_FuchsiaCity_Building1:: @ 0x83BC3F4 - .incbin "baserom.gba", 0x3BC3F4, 0x4C - -gMapEvents_FuchsiaCity_House2:: @ 0x83BC440 - .incbin "baserom.gba", 0x3BC440, 0x34 - -gMapEvents_FuchsiaCity_House3:: @ 0x83BC474 - .incbin "baserom.gba", 0x3BC474, 0x1B8 - -gMapEvents_CinnabarIsland_Gym:: @ 0x83BC62C - .incbin "baserom.gba", 0x3BC62C, 0x8C - -gMapEvents_CinnabarIsland_PokemonLab_Entrance:: @ 0x83BC6B8 - .incbin "baserom.gba", 0x3BC6B8, 0x64 - -gMapEvents_CinnabarIsland_PokemonLab_Lounge:: @ 0x83BC71C - .incbin "baserom.gba", 0x3BC71C, 0x64 - -gMapEvents_CinnabarIsland_PokemonLab_ResearchRoom:: @ 0x83BC780 - .incbin "baserom.gba", 0x3BC780, 0x4C - -gMapEvents_CinnabarIsland_PokemonLab_ExperimentRoom:: @ 0x83BC7CC - .incbin "baserom.gba", 0x3BC7CC, 0xDC - -gMapEvents_CinnabarIsland_PokemonCenter_1F:: @ 0x83BC8A8 - .incbin "baserom.gba", 0x3BC8A8, 0x8C - -gMapEvents_CinnabarIsland_PokemonCenter_2F:: @ 0x83BC934 - .incbin "baserom.gba", 0x3BC934, 0x74 - -gMapEvents_CinnabarIsland_Mart:: @ 0x83BC9A8 - .incbin "baserom.gba", 0x3BC9A8, 0xEC - -gMapEvents_IndigoPlateau_PokemonCenter_1F:: @ 0x83BCA94 - .incbin "baserom.gba", 0x3BCA94, 0x8C - -gMapEvents_IndigoPlateau_PokemonCenter_2F:: @ 0x83BCB20 - .incbin "baserom.gba", 0x3BCB20, 0x7C - -gMapEvents_SaffronCity_House1_1F:: @ 0x83BCB9C - .incbin "baserom.gba", 0x3BCB9C, 0xA0 - -gMapEvents_SaffronCity_House1_2F:: @ 0x83BCC3C - .incbin "baserom.gba", 0x3BCC3C, 0x124 - -gMapEvents_SaffronCity_Dojo:: @ 0x83BCD60 - .incbin "baserom.gba", 0x3BCD60, 0x20C - -gMapEvents_SaffronCity_Gym:: @ 0x83BCF6C - .incbin "baserom.gba", 0x3BCF6C, 0x98 - -gMapEvents_SaffronCity_House2:: @ 0x83BD004 - .incbin "baserom.gba", 0x3BD004, 0x74 - -gMapEvents_SaffronCity_Mart:: @ 0x83BD078 - .incbin "baserom.gba", 0x3BD078, 0xC4 - -gMapEvents_SaffronCity_PokemonCenter_1F:: @ 0x83BD13C - .incbin "baserom.gba", 0x3BD13C, 0x8C - -gMapEvents_SaffronCity_PokemonCenter_2F:: @ 0x83BD1C8 - .incbin "baserom.gba", 0x3BD1C8, 0x44 - -gMapEvents_SaffronCity_House3:: @ 0x83BD20C - .incbin "baserom.gba", 0x3BD20C, 0x10C - -gMapEvents_SaffronCity_PokemonTrainerFanClub:: @ 0x83BD318 - .incbin "baserom.gba", 0x3BD318, 0x64 - -gMapEvents_Route2_ViridianForest_SouthEntrance:: @ 0x83BD37C - .incbin "baserom.gba", 0x3BD37C, 0x5C - -gMapEvents_Route2_House:: @ 0x83BD3D8 - .incbin "baserom.gba", 0x3BD3D8, 0x64 - -gMapEvents_Route2_EastBuilding:: @ 0x83BD43C - .incbin "baserom.gba", 0x3BD43C, 0x7C - -gMapEvents_Route2_ViridianForest_NorthEntrance:: @ 0x83BD4B8 - .incbin "baserom.gba", 0x3BD4B8, 0xC4 - -gMapEvents_Route4_PokemonCenter_1F:: @ 0x83BD57C - .incbin "baserom.gba", 0x3BD57C, 0x8C - -gMapEvents_Route4_PokemonCenter_2F:: @ 0x83BD608 - .incbin "baserom.gba", 0x3BD608, 0x44 - -gMapEvents_Route5_PokemonDayCare:: @ 0x83BD64C - .incbin "baserom.gba", 0x3BD64C, 0x7C - -gMapEvents_Route5_SouthEntrance:: @ 0x83BD6C8 - .incbin "baserom.gba", 0x3BD6C8, 0x7C - -gMapEvents_Route6_NorthEntrance:: @ 0x83BD744 - .incbin "baserom.gba", 0x3BD744, 0x14 - -gMapEvents_UnknownMap_18_01:: @ 0x83BD758 - .incbin "baserom.gba", 0x3BD758, 0x7C - -gMapEvents_Route7_EastEntrance:: @ 0x83BD7D4 - .incbin "baserom.gba", 0x3BD7D4, 0x7C - -gMapEvents_Route8_WestEntrance:: @ 0x83BD850 - .incbin "baserom.gba", 0x3BD850, 0xAC - -gMapEvents_Route10_PokemonCenter_1F:: @ 0x83BD8FC - .incbin "baserom.gba", 0x3BD8FC, 0x8C - -gMapEvents_Route10_PokemonCenter_2F:: @ 0x83BD988 - .incbin "baserom.gba", 0x3BD988, 0x6C - -gMapEvents_Route11_EastEntrance_1F:: @ 0x83BD9F4 - .incbin "baserom.gba", 0x3BD9F4, 0x64 - -gMapEvents_Route11_EastEntrance_2F:: @ 0x83BDA58 - .incbin "baserom.gba", 0x3BDA58, 0x54 - -gMapEvents_Route12_NorthEntrance_1F:: @ 0x83BDAAC - .incbin "baserom.gba", 0x3BDAAC, 0x4C - -gMapEvents_Route12_NorthEntrance_2F:: @ 0x83BDAF8 - .incbin "baserom.gba", 0x3BDAF8, 0x50 - -gMapEvents_Route12_FishingHouse:: @ 0x83BDB48 - .incbin "baserom.gba", 0x3BDB48, 0x54 - -gMapEvents_Route15_WestEntrance_1F:: @ 0x83BDB9C - .incbin "baserom.gba", 0x3BDB9C, 0x4C - -gMapEvents_Route15_WestEntrance_2F:: @ 0x83BDBE8 - .incbin "baserom.gba", 0x3BDBE8, 0x5C - -gMapEvents_Route16_House:: @ 0x83BDC44 - .incbin "baserom.gba", 0x3BDC44, 0x11C - -gMapEvents_Route16_NorthEntrance_1F:: @ 0x83BDD60 - .incbin "baserom.gba", 0x3BDD60, 0x7C - -gMapEvents_Route16_NorthEntrance_2F:: @ 0x83BDDDC - .incbin "baserom.gba", 0x3BDDDC, 0xF4 - -gMapEvents_Route18_EastEntrance_1F:: @ 0x83BDED0 - .incbin "baserom.gba", 0x3BDED0, 0x4C - -gMapEvents_Route18_EastEntrance_2F:: @ 0x83BDF1C - .incbin "baserom.gba", 0x3BDF1C, 0x14 - -gMapEvents_UnusedHouse_27_00:: @ 0x83BDF30 - .incbin "baserom.gba", 0x3BDF30, 0x5C - -gMapEvents_Route22_NorthEntrance:: @ 0x83BDF8C - .incbin "baserom.gba", 0x3BDF8C, 0x14 - -gMapEvents_UnusedHouse_29_00:: @ 0x83BDFA0 - .incbin "baserom.gba", 0x3BDFA0, 0x68 - -gMapEvents_Route25_SeaCottage:: @ 0x83BE008 - .incbin "baserom.gba", 0x3BE008, 0x48 - -gMapEvents_SevenIsland_House_Room1:: @ 0x83BE050 - .incbin "baserom.gba", 0x3BE050, 0x34 - -gMapEvents_SevenIsland_House_Room2:: @ 0x83BE084 - .incbin "baserom.gba", 0x3BE084, 0x7C - -gMapEvents_SevenIsland_Mart:: @ 0x83BE100 - .incbin "baserom.gba", 0x3BE100, 0xB4 - -gMapEvents_SevenIsland_PokemonCenter_1F:: @ 0x83BE1B4 - .incbin "baserom.gba", 0x3BE1B4, 0x8C - -gMapEvents_SevenIsland_PokemonCenter_2F:: @ 0x83BE240 - .incbin "baserom.gba", 0x3BE240, 0x14 - -gMapEvents_UnusedHouse_31_05:: @ 0x83BE254 - .incbin "baserom.gba", 0x3BE254, 0x4C - -gMapEvents_SevenIsland_Harbor:: @ 0x83BE2A0 - .incbin "baserom.gba", 0x3BE2A0, 0x160 - -gMapEvents_OneIsland_PokemonCenter_1F:: @ 0x83BE400 - .incbin "baserom.gba", 0x3BE400, 0x8C - -gMapEvents_OneIsland_PokemonCenter_2F:: @ 0x83BE48C - .incbin "baserom.gba", 0x3BE48C, 0x4C - -gMapEvents_OneIsland_House1:: @ 0x83BE4D8 - .incbin "baserom.gba", 0x3BE4D8, 0x34 - -gMapEvents_OneIsland_House2:: @ 0x83BE50C - .incbin "baserom.gba", 0x3BE50C, 0x4C - -gMapEvents_OneIsland_Harbor:: @ 0x83BE558 - .incbin "baserom.gba", 0x3BE558, 0x94 - -gMapEvents_TwoIsland_JoyfulGameCorner:: @ 0x83BE5EC - .incbin "baserom.gba", 0x3BE5EC, 0x34 - -gMapEvents_TwoIsland_House:: @ 0x83BE620 - .incbin "baserom.gba", 0x3BE620, 0x6C - -gMapEvents_TwoIsland_PokemonCenter_1F:: @ 0x83BE68C - .incbin "baserom.gba", 0x3BE68C, 0x8C - -gMapEvents_TwoIsland_PokemonCenter_2F:: @ 0x83BE718 - .incbin "baserom.gba", 0x3BE718, 0x4C - -gMapEvents_TwoIsland_Harbor:: @ 0x83BE764 - .incbin "baserom.gba", 0x3BE764, 0x40 - -gMapEvents_ThreeIsland_House1:: @ 0x83BE7A4 - .incbin "baserom.gba", 0x3BE7A4, 0x84 - -gMapEvents_ThreeIsland_PokemonCenter_1F:: @ 0x83BE828 - .incbin "baserom.gba", 0x3BE828, 0x8C - -gMapEvents_ThreeIsland_PokemonCenter_2F:: @ 0x83BE8B4 - .incbin "baserom.gba", 0x3BE8B4, 0x7C - -gMapEvents_ThreeIsland_Mart:: @ 0x83BE930 - .incbin "baserom.gba", 0x3BE930, 0x4C - -gMapEvents_ThreeIsland_House2:: @ 0x83BE97C - .incbin "baserom.gba", 0x3BE97C, 0x34 - -gMapEvents_ThreeIsland_House3:: @ 0x83BE9B0 - .incbin "baserom.gba", 0x3BE9B0, 0x4C - -gMapEvents_ThreeIsland_House4:: @ 0x83BE9FC - .incbin "baserom.gba", 0x3BE9FC, 0x34 - -gMapEvents_ThreeIsland_House5:: @ 0x83BEA30 - .incbin "baserom.gba", 0x3BEA30, 0x34 - -gMapEvents_FourIsland_PokemonDayCare:: @ 0x83BEA64 - .incbin "baserom.gba", 0x3BEA64, 0x9C - -gMapEvents_FourIsland_PokemonCenter_1F:: @ 0x83BEB00 - .incbin "baserom.gba", 0x3BEB00, 0x8C - -gMapEvents_FourIsland_PokemonCenter_2F:: @ 0x83BEB8C - .incbin "baserom.gba", 0x3BEB8C, 0x4C - -gMapEvents_FourIsland_House1:: @ 0x83BEBD8 - .incbin "baserom.gba", 0x3BEBD8, 0x184 - -gMapEvents_FourIsland_LoreleisHouse:: @ 0x83BED5C - .incbin "baserom.gba", 0x3BED5C, 0x4C - -gMapEvents_FourIsland_Harbor:: @ 0x83BEDA8 - .incbin "baserom.gba", 0x3BEDA8, 0x34 - -gMapEvents_FourIsland_House2:: @ 0x83BEDDC - .incbin "baserom.gba", 0x3BEDDC, 0x64 - -gMapEvents_FourIsland_Mart:: @ 0x83BEE40 - .incbin "baserom.gba", 0x3BEE40, 0x9C - -gMapEvents_FiveIsland_PokemonCenter_1F:: @ 0x83BEEDC - .incbin "baserom.gba", 0x3BEEDC, 0x8C - -gMapEvents_FiveIsland_PokemonCenter_2F:: @ 0x83BEF68 - .incbin "baserom.gba", 0x3BEF68, 0x4C - -gMapEvents_FiveIsland_Harbor:: @ 0x83BEFB4 - .incbin "baserom.gba", 0x3BEFB4, 0x34 - -gMapEvents_FiveIsland_House1:: @ 0x83BEFE8 - .incbin "baserom.gba", 0x3BEFE8, 0x34 - -gMapEvents_FiveIsland_House2:: @ 0x83BF01C - .incbin "baserom.gba", 0x3BF01C, 0x84 - -gMapEvents_SixIsland_PokemonCenter_1F:: @ 0x83BF0A0 - .incbin "baserom.gba", 0x3BF0A0, 0x8C - -gMapEvents_SixIsland_PokemonCenter_2F:: @ 0x83BF12C - .incbin "baserom.gba", 0x3BF12C, 0x4C - -gMapEvents_SixIsland_Harbor:: @ 0x83BF178 - .incbin "baserom.gba", 0x3BF178, 0x34 - -gMapEvents_SixIsland_House:: @ 0x83BF1AC - .incbin "baserom.gba", 0x3BF1AC, 0x64 - -gMapEvents_SixIsland_Mart:: @ 0x83BF210 - .incbin "baserom.gba", 0x3BF210, 0x4C - -gMapEvents_ThreeIsland_Harbor:: @ 0x83BF25C - .incbin "baserom.gba", 0x3BF25C, 0x64 - -gMapEvents_FiveIsland_ResortGorgeous_House:: @ 0x83BF2C0 - .incbin "baserom.gba", 0x3BF2C0, 0x34 - -gMapEvents_TwoIsland_CapeBrink_House:: @ 0x83BF2F4 - .incbin "baserom.gba", 0x3BF2F4, 0x40 - -gMapEvents_SixIsland_WaterPath_House1:: @ 0x83BF334 - .incbin "baserom.gba", 0x3BF334, 0x34 - -gMapEvents_SixIsland_WaterPath_House2:: @ 0x83BF368 - .incbin "baserom.gba", 0x3BF368, 0x64 - -gMapEvents_SevenIsland_SevaultCanyon_House:: @ 0x83BF3CC - .incbin "baserom.gba", 0x3BF3CC, 0x188 - -gUnknown_83BF554:: @ 83BF554 - .incbin "baserom.gba", 0x3BF554, 0x8 - -gUnknown_83BF55C:: @ 83BF55C - .incbin "baserom.gba", 0x3BF55C, 0x18 - -gUnknown_83BF574:: @ 83BF574 - .incbin "baserom.gba", 0x3BF574, 0x18 diff --git a/data/battle_anim_status_effects.s b/data/battle_anim_status_effects.s new file mode 100644 index 000000000..6c0bd6e3f --- /dev/null +++ b/data/battle_anim_status_effects.s @@ -0,0 +1,11 @@ + .section .rodata + .align 2 + +gUnknown_83BF554:: @ 83BF554 + .incbin "baserom.gba", 0x3BF554, 0x8 + +gUnknown_83BF55C:: @ 83BF55C + .incbin "baserom.gba", 0x3BF55C, 0x18 + +gUnknown_83BF574:: @ 83BF574 + .incbin "baserom.gba", 0x3BF574, 0x18 diff --git a/data/map_events.s b/data/map_events.s new file mode 100644 index 000000000..d61949575 --- /dev/null +++ b/data/map_events.s @@ -0,0 +1,1276 @@ + .section .rodata + .align 2 +gMapEvents_UnknownMap_00_00:: @ 0x83AE0DC + .incbin "baserom.gba", 0x3AE0DC, 0x5C + +gMapEvents_UnknownMap_00_01:: @ 0x83AE138 + .incbin "baserom.gba", 0x3AE138, 0x8C + +gMapEvents_UnknownMap_00_02:: @ 0x83AE1C4 + .incbin "baserom.gba", 0x3AE1C4, 0x74 + +gMapEvents_UnknownMap_00_03:: @ 0x83AE238 + .incbin "baserom.gba", 0x3AE238, 0xF4 + +gMapEvents_UnknownMap_00_04:: @ 0x83AE32C + .incbin "baserom.gba", 0x3AE32C, 0x1AC + +gMapEvents_ViridianForest:: @ 0x83AE4D8 + .incbin "baserom.gba", 0x3AE4D8, 0x190 + +gMapEvents_MtMoon_1F:: @ 0x83AE668 + .incbin "baserom.gba", 0x3AE668, 0x9C + +gMapEvents_MtMoon_B1F:: @ 0x83AE704 + .incbin "baserom.gba", 0x3AE704, 0x164 + +gMapEvents_MtMoon_B2F:: @ 0x83AE868 + .incbin "baserom.gba", 0x3AE868, 0x60 + +gMapEvents_SSAnne_Exterior:: @ 0x83AE8C8 + .incbin "baserom.gba", 0x3AE8C8, 0xAC + +gMapEvents_SSAnne_1F_Corridor:: @ 0x83AE974 + .incbin "baserom.gba", 0x3AE974, 0xBC + +gMapEvents_SSAnne_2F_Corridor:: @ 0x83AEA30 + .incbin "baserom.gba", 0x3AEA30, 0x44 + +gMapEvents_SSAnne_3F_Corridor:: @ 0x83AEA74 + .incbin "baserom.gba", 0x3AEA74, 0x50 + +gMapEvents_SSAnne_B1F_Corridor:: @ 0x83AEAC4 + .incbin "baserom.gba", 0x3AEAC4, 0x9C + +gMapEvents_SSAnne_Deck:: @ 0x83AEB60 + .incbin "baserom.gba", 0x3AEB60, 0x100 + +gMapEvents_SSAnne_Kitchen:: @ 0x83AEC60 + .incbin "baserom.gba", 0x3AEC60, 0x58 + +gMapEvents_SSAnne_CaptainsOffice:: @ 0x83AECB8 + .incbin "baserom.gba", 0x3AECB8, 0x34 + +gMapEvents_SSAnne_1F_Room1:: @ 0x83AECEC + .incbin "baserom.gba", 0x3AECEC, 0x7C + +gMapEvents_SSAnne_1F_Room2:: @ 0x83AED68 + .incbin "baserom.gba", 0x3AED68, 0x64 + +gMapEvents_SSAnne_1F_Room3:: @ 0x83AEDCC + .incbin "baserom.gba", 0x3AEDCC, 0x34 + +gMapEvents_SSAnne_1F_Room4:: @ 0x83AEE00 + .incbin "baserom.gba", 0x3AEE00, 0x34 + +gMapEvents_SSAnne_1F_Room5:: @ 0x83AEE34 + .incbin "baserom.gba", 0x3AEE34, 0x34 + +gMapEvents_SSAnne_1F_Room7:: @ 0x83AEE68 + .incbin "baserom.gba", 0x3AEE68, 0x34 + +gMapEvents_SSAnne_2F_Room1:: @ 0x83AEE9C + .incbin "baserom.gba", 0x3AEE9C, 0x64 + +gMapEvents_SSAnne_2F_Room2:: @ 0x83AEF00 + .incbin "baserom.gba", 0x3AEF00, 0x4C + +gMapEvents_SSAnne_2F_Room3:: @ 0x83AEF4C + .incbin "baserom.gba", 0x3AEF4C, 0x64 + +gMapEvents_SSAnne_2F_Room4:: @ 0x83AEFB0 + .incbin "baserom.gba", 0x3AEFB0, 0x4C + +gMapEvents_SSAnne_2F_Room5:: @ 0x83AEFFC + .incbin "baserom.gba", 0x3AEFFC, 0x4C + +gMapEvents_SSAnne_2F_Room6:: @ 0x83AF048 + .incbin "baserom.gba", 0x3AF048, 0x4C + +gMapEvents_SSAnne_B1F_Room1:: @ 0x83AF094 + .incbin "baserom.gba", 0x3AF094, 0x4C + +gMapEvents_SSAnne_B1F_Room2:: @ 0x83AF0E0 + .incbin "baserom.gba", 0x3AF0E0, 0x4C + +gMapEvents_SSAnne_B1F_Room3:: @ 0x83AF12C + .incbin "baserom.gba", 0x3AF12C, 0x4C + +gMapEvents_SSAnne_B1F_Room4:: @ 0x83AF178 + .incbin "baserom.gba", 0x3AF178, 0x64 + +gMapEvents_SSAnne_B1F_Room5:: @ 0x83AF1DC + .incbin "baserom.gba", 0x3AF1DC, 0x34 + +gMapEvents_SSAnne_1F_Room6:: @ 0x83AF210 + .incbin "baserom.gba", 0x3AF210, 0x4C + +gMapEvents_UndergroundPath_NorthEntrance:: @ 0x83AF25C + .incbin "baserom.gba", 0x3AF25C, 0x78 + +gMapEvents_UndergroundPath_NorthSouthTunnel:: @ 0x83AF2D4 + .incbin "baserom.gba", 0x3AF2D4, 0x4C + +gMapEvents_UndergroundPath_SouthEntrance:: @ 0x83AF320 + .incbin "baserom.gba", 0x3AF320, 0x4C + +gMapEvents_UndergroundPath_WestEntrance:: @ 0x83AF36C + .incbin "baserom.gba", 0x3AF36C, 0x78 + +gMapEvents_UndergroundPath_EastWestTunnel:: @ 0x83AF3E4 + .incbin "baserom.gba", 0x3AF3E4, 0x4C + +gMapEvents_UndergroundPath_EastEntrance:: @ 0x83AF430 + .incbin "baserom.gba", 0x3AF430, 0x3C + +gMapEvents_DiglettsCave_NorthEntrance:: @ 0x83AF46C + .incbin "baserom.gba", 0x3AF46C, 0x24 + +gMapEvents_DiglettsCave_B1F:: @ 0x83AF490 + .incbin "baserom.gba", 0x3AF490, 0x3C + +gMapEvents_DiglettsCave_SouthEntrance:: @ 0x83AF4CC + .incbin "baserom.gba", 0x3AF4CC, 0xF4 + +gMapEvents_VictoryRoad_1F:: @ 0x83AF5C0 + .incbin "baserom.gba", 0x3AF5C0, 0x1B4 + +gMapEvents_VictoryRoad_2F:: @ 0x83AF774 + .incbin "baserom.gba", 0x3AF774, 0x16C + +gMapEvents_VictoryRoad_3F:: @ 0x83AF8E0 + .incbin "baserom.gba", 0x3AF8E0, 0xF8 + +gMapEvents_RocketHideout_B1F:: @ 0x83AF9D8 + .incbin "baserom.gba", 0x3AF9D8, 0xB4 + +gMapEvents_RocketHideout_B2F:: @ 0x83AFA8C + .incbin "baserom.gba", 0x3AFA8C, 0xA8 + +gMapEvents_RocketHideout_B3F:: @ 0x83AFB34 + .incbin "baserom.gba", 0x3AFB34, 0x11C + +gMapEvents_RocketHideout_B4F:: @ 0x83AFC50 + .incbin "baserom.gba", 0x3AFC50, 0x30 + +gMapEvents_RocketHideout_Elevator:: @ 0x83AFC80 + .incbin "baserom.gba", 0x3AFC80, 0x60 + +gMapEvents_SilphCo_1F:: @ 0x83AFCE0 + .incbin "baserom.gba", 0x3AFCE0, 0x13C + +gMapEvents_SilphCo_2F:: @ 0x83AFE1C + .incbin "baserom.gba", 0x3AFE1C, 0x13C + +gMapEvents_SilphCo_3F:: @ 0x83AFF58 + .incbin "baserom.gba", 0x3AFF58, 0x184 + +gMapEvents_SilphCo_4F:: @ 0x83B00DC + .incbin "baserom.gba", 0x3B00DC, 0x1FC + +gMapEvents_SilphCo_5F:: @ 0x83B02D8 + .incbin "baserom.gba", 0x3B02D8, 0x174 + +gMapEvents_SilphCo_6F:: @ 0x83B044C + .incbin "baserom.gba", 0x3B044C, 0x214 + +gMapEvents_SilphCo_7F:: @ 0x83B0660 + .incbin "baserom.gba", 0x3B0660, 0x124 + +gMapEvents_SilphCo_8F:: @ 0x83B0784 + .incbin "baserom.gba", 0x3B0784, 0x180 + +gMapEvents_SilphCo_9F:: @ 0x83B0904 + .incbin "baserom.gba", 0x3B0904, 0x11C + +gMapEvents_SilphCo_10F:: @ 0x83B0A20 + .incbin "baserom.gba", 0x3B0A20, 0x124 + +gMapEvents_SilphCo_11F:: @ 0x83B0B44 + .incbin "baserom.gba", 0x3B0B44, 0x28 + +gMapEvents_SilphCo_Elevator:: @ 0x83B0B6C + .incbin "baserom.gba", 0x3B0B6C, 0xF4 + +gMapEvents_PokemonMansion_1F:: @ 0x83B0C60 + .incbin "baserom.gba", 0x3B0C60, 0xC0 + +gMapEvents_PokemonMansion_2F:: @ 0x83B0D20 + .incbin "baserom.gba", 0x3B0D20, 0xD8 + +gMapEvents_PokemonMansion_3F:: @ 0x83B0DF8 + .incbin "baserom.gba", 0x3B0DF8, 0xDC + +gMapEvents_PokemonMansion_B1F:: @ 0x83B0ED4 + .incbin "baserom.gba", 0x3B0ED4, 0xC4 + +gMapEvents_SafariZone_Center:: @ 0x83B0F98 + .incbin "baserom.gba", 0x3B0F98, 0xD0 + +gMapEvents_SafariZone_East:: @ 0x83B1068 + .incbin "baserom.gba", 0x3B1068, 0x100 + +gMapEvents_SafariZone_North:: @ 0x83B1168 + .incbin "baserom.gba", 0x3B1168, 0x108 + +gMapEvents_SafariZone_West:: @ 0x83B1270 + .incbin "baserom.gba", 0x3B1270, 0x5C + +gMapEvents_SafariZone_Building1:: @ 0x83B12CC + .incbin "baserom.gba", 0x3B12CC, 0x74 + +gMapEvents_SafariZone_Building2:: @ 0x83B1340 + .incbin "baserom.gba", 0x3B1340, 0x8C + +gMapEvents_SafariZone_Building3:: @ 0x83B13CC + .incbin "baserom.gba", 0x3B13CC, 0x74 + +gMapEvents_SafariZone_Building4:: @ 0x83B1440 + .incbin "baserom.gba", 0x3B1440, 0x44 + +gMapEvents_SafariZone_SecretHouse:: @ 0x83B1484 + .incbin "baserom.gba", 0x3B1484, 0x138 + +gMapEvents_CeruleanCave_1F:: @ 0x83B15BC + .incbin "baserom.gba", 0x3B15BC, 0x17C + +gMapEvents_CeruleanCave_2F:: @ 0x83B1738 + .incbin "baserom.gba", 0x3B1738, 0x13C + +gMapEvents_CeruleanCave_B1F:: @ 0x83B1874 + .incbin "baserom.gba", 0x3B1874, 0x3C + +gMapEvents_PokemonLeague_LoreleisRoom:: @ 0x83B18B0 + .incbin "baserom.gba", 0x3B18B0, 0x3C + +gMapEvents_PokemonLeague_BrunosRoom:: @ 0x83B18EC + .incbin "baserom.gba", 0x3B18EC, 0x3C + +gMapEvents_PokemonLeague_AgathasRoom:: @ 0x83B1928 + .incbin "baserom.gba", 0x3B1928, 0x3C + +gMapEvents_PokemonLeague_LancesRoom:: @ 0x83B1964 + .incbin "baserom.gba", 0x3B1964, 0x54 + +gMapEvents_PokemonLeague_ChampionsRoom:: @ 0x83B19B8 + .incbin "baserom.gba", 0x3B19B8, 0x34 + +gMapEvents_PokemonLeague_HallOfFame:: @ 0x83B19EC + .incbin "baserom.gba", 0x3B19EC, 0x140 + +gMapEvents_RockTunnel_1F:: @ 0x83B1B2C + .incbin "baserom.gba", 0x3B1B2C, 0x2A4 + +gMapEvents_RockTunnel_B1F:: @ 0x83B1DD0 + .incbin "baserom.gba", 0x3B1DD0, 0x94 + +gMapEvents_SeafoamIslands_1F:: @ 0x83B1E64 + .incbin "baserom.gba", 0x3B1E64, 0xCC + +gMapEvents_SeafoamIslands_B1F:: @ 0x83B1F30 + .incbin "baserom.gba", 0x3B1F30, 0xB4 + +gMapEvents_SeafoamIslands_B2F:: @ 0x83B1FE4 + .incbin "baserom.gba", 0x3B1FE4, 0xF8 + +gMapEvents_SeafoamIslands_B3F:: @ 0x83B20DC + .incbin "baserom.gba", 0x3B20DC, 0xE8 + +gMapEvents_SeafoamIslands_B4F:: @ 0x83B21C4 + .incbin "baserom.gba", 0x3B21C4, 0xAC + +gMapEvents_PokemonTower_1F:: @ 0x83B2270 + .incbin "baserom.gba", 0x3B2270, 0x74 + +gMapEvents_PokemonTower_2F:: @ 0x83B22E4 + .incbin "baserom.gba", 0x3B22E4, 0x84 + +gMapEvents_PokemonTower_3F:: @ 0x83B2368 + .incbin "baserom.gba", 0x3B2368, 0xB4 + +gMapEvents_PokemonTower_4F:: @ 0x83B241C + .incbin "baserom.gba", 0x3B241C, 0x1E8 + +gMapEvents_PokemonTower_5F:: @ 0x83B2604 + .incbin "baserom.gba", 0x3B2604, 0xBC + +gMapEvents_PokemonTower_6F:: @ 0x83B26C0 + .incbin "baserom.gba", 0x3B26C0, 0x88 + +gMapEvents_PokemonTower_7F:: @ 0x83B2748 + .incbin "baserom.gba", 0x3B2748, 0x114 + +gMapEvents_PowerPlant:: @ 0x83B285C + .incbin "baserom.gba", 0x3B285C, 0x15C + +gMapEvents_MtEmber_RubyPath_B4F:: @ 0x83B29B8 + .incbin "baserom.gba", 0x3B29B8, 0x26C + +gMapEvents_MtEmber_Exterior:: @ 0x83B2C24 + .incbin "baserom.gba", 0x3B2C24, 0x24 + +gMapEvents_MtEmber_SummitPath_1F:: @ 0x83B2C48 + .incbin "baserom.gba", 0x3B2C48, 0xFC + +gMapEvents_MtEmber_SummitPath_2F:: @ 0x83B2D44 + .incbin "baserom.gba", 0x3B2D44, 0x24 + +gMapEvents_MtEmber_SummitPath_3F:: @ 0x83B2D68 + .incbin "baserom.gba", 0x3B2D68, 0x94 + +gMapEvents_MtEmber_Summit:: @ 0x83B2DFC + .incbin "baserom.gba", 0x3B2DFC, 0x40 + +gMapEvents_MtEmber_RubyPath_B5F:: @ 0x83B2E3C + .incbin "baserom.gba", 0x3B2E3C, 0xA4 + +gMapEvents_SSAnne_Kitchen3:: @ 0x83B2EE0 + .incbin "baserom.gba", 0x3B2EE0, 0x84 + +gMapEvents_MtEmber_RubyPath_B1F:: @ 0x83B2F64 + .incbin "baserom.gba", 0x3B2F64, 0xCC + +gMapEvents_MtEmber_RubyPath_B2F:: @ 0x83B3030 + .incbin "baserom.gba", 0x3B3030, 0x11C + +gMapEvents_MtEmber_RubyPath_B3F:: @ 0x83B314C + .incbin "baserom.gba", 0x3B314C, 0x3C + +gMapEvents_MtEmber_RubyPath_B1F_Stairs:: @ 0x83B3188 + .incbin "baserom.gba", 0x3B3188, 0x54 + +gMapEvents_MtEmber_RubyPath_B2F_Stairs:: @ 0x83B31DC + .incbin "baserom.gba", 0x3B31DC, 0x230 + +gMapEvents_ThreeIsland_BerryForest:: @ 0x83B340C + .incbin "baserom.gba", 0x3B340C, 0x2C + +gMapEvents_FourIsland_IcefallCave_Entrance:: @ 0x83B3438 + .incbin "baserom.gba", 0x3B3438, 0x74 + +gMapEvents_FourIsland_IcefallCave_1F:: @ 0x83B34AC + .incbin "baserom.gba", 0x3B34AC, 0x5C + +gMapEvents_SSAnne_CaptainsOffice2:: @ 0x83B3508 + .incbin "baserom.gba", 0x3B3508, 0xAC + +gMapEvents_SSAnne_CaptainsOffice3:: @ 0x83B35B4 + .incbin "baserom.gba", 0x3B35B4, 0x268 + +gMapEvents_SSAnne_CaptainsOffice4:: @ 0x83B381C + .incbin "baserom.gba", 0x3B381C, 0x34 + +gMapEvents_SSAnne_CaptainsOffice5:: @ 0x83B3850 + .incbin "baserom.gba", 0x3B3850, 0x48 + +gMapEvents_SixIsland_DottedHole_B1F:: @ 0x83B3898 + .incbin "baserom.gba", 0x3B3898, 0x48 + +gMapEvents_SixIsland_DottedHole_B2F:: @ 0x83B38E0 + .incbin "baserom.gba", 0x3B38E0, 0x48 + +gMapEvents_SixIsland_DottedHole_B3F:: @ 0x83B3928 + .incbin "baserom.gba", 0x3B3928, 0x48 + +gMapEvents_SSAnne_CaptainsOffice9:: @ 0x83B3970 + .incbin "baserom.gba", 0x3B3970, 0x60 + +gMapEvents_SixIsland_DottedHole_SapphireRoom:: @ 0x83B39D0 + .incbin "baserom.gba", 0x3B39D0, 0x164 + +gMapEvents_SSAnne_1F_Room11:: @ 0x83B3B34 + .incbin "baserom.gba", 0x3B3B34, 0x1C + +gMapEvents_SSAnne_1F_Room12:: @ 0x83B3B50 + .incbin "baserom.gba", 0x3B3B50, 0x24 + +gMapEvents_NavelRock_Exterior:: @ 0x83B3B74 + .incbin "baserom.gba", 0x3B3B74, 0xCC + +gMapEvents_SevenIsland_TrainerTower_1F:: @ 0x83B3C40 + .incbin "baserom.gba", 0x3B3C40, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_2F:: @ 0x83B3D14 + .incbin "baserom.gba", 0x3B3D14, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_3F:: @ 0x83B3DE8 + .incbin "baserom.gba", 0x3B3DE8, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_4F:: @ 0x83B3EBC + .incbin "baserom.gba", 0x3B3EBC, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_5F:: @ 0x83B3F90 + .incbin "baserom.gba", 0x3B3F90, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_6F:: @ 0x83B4064 + .incbin "baserom.gba", 0x3B4064, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_7F:: @ 0x83B4138 + .incbin "baserom.gba", 0x3B4138, 0xD4 + +gMapEvents_SevenIsland_TrainerTower_8F:: @ 0x83B420C + .incbin "baserom.gba", 0x3B420C, 0x3C + +gMapEvents_SevenIsland_TrainerTower_Roof:: @ 0x83B4248 + .incbin "baserom.gba", 0x3B4248, 0xC0 + +gMapEvents_SevenIsland_TrainerTower_Lobby:: @ 0x83B4308 + .incbin "baserom.gba", 0x3B4308, 0x28 + +gMapEvents_SevenIsland_TrainerTower_Elevator:: @ 0x83B4330 + .incbin "baserom.gba", 0x3B4330, 0x24 + +gMapEvents_FiveIsland_LostCave_Entrance:: @ 0x83B4354 + .incbin "baserom.gba", 0x3B4354, 0x54 + +gMapEvents_FiveIsland_LostCave_Room1:: @ 0x83B43A8 + .incbin "baserom.gba", 0x3B43A8, 0x34 + +gMapEvents_FiveIsland_LostCave_Room2:: @ 0x83B43DC + .incbin "baserom.gba", 0x3B43DC, 0x34 + +gMapEvents_FiveIsland_LostCave_Room3:: @ 0x83B4410 + .incbin "baserom.gba", 0x3B4410, 0x4C + +gMapEvents_FiveIsland_LostCave_Room4:: @ 0x83B445C + .incbin "baserom.gba", 0x3B445C, 0x34 + +gMapEvents_FiveIsland_LostCave_Room5:: @ 0x83B4490 + .incbin "baserom.gba", 0x3B4490, 0x34 + +gMapEvents_FiveIsland_LostCave_Room6:: @ 0x83B44C4 + .incbin "baserom.gba", 0x3B44C4, 0x34 + +gMapEvents_FiveIsland_LostCave_Room7:: @ 0x83B44F8 + .incbin "baserom.gba", 0x3B44F8, 0x34 + +gMapEvents_FiveIsland_LostCave_Room8:: @ 0x83B452C + .incbin "baserom.gba", 0x3B452C, 0x34 + +gMapEvents_FiveIsland_LostCave_Room9:: @ 0x83B4560 + .incbin "baserom.gba", 0x3B4560, 0x4C + +gMapEvents_FiveIsland_LostCave_Room10:: @ 0x83B45AC + .incbin "baserom.gba", 0x3B45AC, 0x34 + +gMapEvents_FiveIsland_LostCave_Room11:: @ 0x83B45E0 + .incbin "baserom.gba", 0x3B45E0, 0x34 + +gMapEvents_FiveIsland_LostCave_Room12:: @ 0x83B4614 + .incbin "baserom.gba", 0x3B4614, 0x34 + +gMapEvents_FiveIsland_LostCave_Room13:: @ 0x83B4648 + .incbin "baserom.gba", 0x3B4648, 0x34 + +gMapEvents_FiveIsland_LostCave_Room14:: @ 0x83B467C + .incbin "baserom.gba", 0x3B467C, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_MoneanChamber:: @ 0x83B4698 + .incbin "baserom.gba", 0x3B4698, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_LiptooChamber:: @ 0x83B46B4 + .incbin "baserom.gba", 0x3B46B4, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_WeepthChamber:: @ 0x83B46D0 + .incbin "baserom.gba", 0x3B46D0, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_DilfordChamber:: @ 0x83B46EC + .incbin "baserom.gba", 0x3B46EC, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_ScufibChamber:: @ 0x83B4708 + .incbin "baserom.gba", 0x3B4708, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_RixyChamber:: @ 0x83B4724 + .incbin "baserom.gba", 0x3B4724, 0x1C + +gMapEvents_SevenIsland_TanobyRuins_ViapoisChamber:: @ 0x83B4740 + .incbin "baserom.gba", 0x3B4740, 0x48 + +gMapEvents_ThreeIsland_DunsparceTunnel:: @ 0x83B4788 + .incbin "baserom.gba", 0x3B4788, 0x134 + +gMapEvents_SevenIsland_SeavaultCanyon_TanobyKey:: @ 0x83B48BC + .incbin "baserom.gba", 0x3B48BC, 0x24 + +gMapEvents_NavelRock_1F:: @ 0x83B48E0 + .incbin "baserom.gba", 0x3B48E0, 0x50 + +gMapEvents_NavelRock_Summit:: @ 0x83B4930 + .incbin "baserom.gba", 0x3B4930, 0x34 + +gMapEvents_NavelRock_Base:: @ 0x83B4964 + .incbin "baserom.gba", 0x3B4964, 0x24 + +gMapEvents_NavelRock_SummitPath_2F:: @ 0x83B4988 + .incbin "baserom.gba", 0x3B4988, 0x24 + +gMapEvents_NavelRock_SummitPath_3F:: @ 0x83B49AC + .incbin "baserom.gba", 0x3B49AC, 0x24 + +gMapEvents_NavelRock_SummitPath_4F:: @ 0x83B49D0 + .incbin "baserom.gba", 0x3B49D0, 0x24 + +gMapEvents_NavelRock_SummitPath_5F:: @ 0x83B49F4 + .incbin "baserom.gba", 0x3B49F4, 0x24 + +gMapEvents_NavelRock_BasePath_B1F:: @ 0x83B4A18 + .incbin "baserom.gba", 0x3B4A18, 0x24 + +gMapEvents_NavelRock_BasePath_B2F:: @ 0x83B4A3C + .incbin "baserom.gba", 0x3B4A3C, 0x24 + +gMapEvents_NavelRock_BasePath_B3F:: @ 0x83B4A60 + .incbin "baserom.gba", 0x3B4A60, 0x24 + +gMapEvents_NavelRock_BasePath_B4F:: @ 0x83B4A84 + .incbin "baserom.gba", 0x3B4A84, 0x24 + +gMapEvents_NavelRock_BasePath_B5F:: @ 0x83B4AA8 + .incbin "baserom.gba", 0x3B4AA8, 0x24 + +gMapEvents_NavelRock_BasePath_B6F:: @ 0x83B4ACC + .incbin "baserom.gba", 0x3B4ACC, 0x24 + +gMapEvents_NavelRock_BasePath_B7F:: @ 0x83B4AF0 + .incbin "baserom.gba", 0x3B4AF0, 0x24 + +gMapEvents_NavelRock_BasePath_B8F:: @ 0x83B4B14 + .incbin "baserom.gba", 0x3B4B14, 0x24 + +gMapEvents_NavelRock_BasePath_B9F:: @ 0x83B4B38 + .incbin "baserom.gba", 0x3B4B38, 0x24 + +gMapEvents_NavelRock_BasePath_B10F:: @ 0x83B4B5C + .incbin "baserom.gba", 0x3B4B5C, 0x24 + +gMapEvents_NavelRock_BasePath_B11F:: @ 0x83B4B80 + .incbin "baserom.gba", 0x3B4B80, 0x24 + +gMapEvents_NavelRock_B1F:: @ 0x83B4BA4 + .incbin "baserom.gba", 0x3B4BA4, 0x2C + +gMapEvents_NavelRock_Fork:: @ 0x83B4BD0 + .incbin "baserom.gba", 0x3B4BD0, 0x4C + +gMapEvents_BirthIsland_Exterior:: @ 0x83B4C1C + .incbin "baserom.gba", 0x3B4C1C, 0xBC + +gMapEvents_OneIsland_KindleRoad_EmberSpa:: @ 0x83B4CD8 + .incbin "baserom.gba", 0x3B4CD8, 0x4C + +gMapEvents_BirthIsland_Harbor:: @ 0x83B4D24 + .incbin "baserom.gba", 0x3B4D24, 0x4C + +gMapEvents_NavelRock_Harbor:: @ 0x83B4D70 + .incbin "baserom.gba", 0x3B4D70, 0xE0 + +gMapEvents_PalletTown:: @ 0x83B4E50 + .incbin "baserom.gba", 0x3B4E50, 0x190 + +gMapEvents_ViridianCity:: @ 0x83B4FE0 + .incbin "baserom.gba", 0x3B4FE0, 0x1AC + +gMapEvents_PewterCity:: @ 0x83B518C + .incbin "baserom.gba", 0x3B518C, 0x254 + +gMapEvents_CeruleanCity:: @ 0x83B53E0 + .incbin "baserom.gba", 0x3B53E0, 0xBC + +gMapEvents_LavenderTown:: @ 0x83B549C + .incbin "baserom.gba", 0x3B549C, 0x1AC + +gMapEvents_VermilionCity:: @ 0x83B5648 + .incbin "baserom.gba", 0x3B5648, 0x250 + +gMapEvents_CeladonCity:: @ 0x83B5898 + .incbin "baserom.gba", 0x3B5898, 0x27C + +gMapEvents_FuchsiaCity:: @ 0x83B5B14 + .incbin "baserom.gba", 0x3B5B14, 0xDC + +gMapEvents_CinnabarIsland:: @ 0x83B5BF0 + .incbin "baserom.gba", 0x3B5BF0, 0x4C + +gMapEvents_IndigoPlateau_Exterior:: @ 0x83B5C3C + .incbin "baserom.gba", 0x3B5C3C, 0x260 + +gMapEvents_SaffronCity_Duplicate:: @ 0x83B5E9C + .incbin "baserom.gba", 0x3B5E9C, 0x14 + +gMapEvents_SaffronCity:: @ 0x83B5EB0 + .incbin "baserom.gba", 0x3B5EB0, 0x94 + +gMapEvents_OneIsland:: @ 0x83B5F44 + .incbin "baserom.gba", 0x3B5F44, 0x130 + +gMapEvents_TwoIsland:: @ 0x83B6074 + .incbin "baserom.gba", 0x3B6074, 0x254 + +gMapEvents_ThreeIsland:: @ 0x83B62C8 + .incbin "baserom.gba", 0x3B62C8, 0x1A4 + +gMapEvents_FourIsland:: @ 0x83B646C + .incbin "baserom.gba", 0x3B646C, 0x88 + +gMapEvents_FiveIsland:: @ 0x83B64F4 + .incbin "baserom.gba", 0x3B64F4, 0x88 + +gMapEvents_SevenIsland:: @ 0x83B657C + .incbin "baserom.gba", 0x3B657C, 0x7C + +gMapEvents_SixIsland:: @ 0x83B65F8 + .incbin "baserom.gba", 0x3B65F8, 0x50 + +gMapEvents_Route1:: @ 0x83B6648 + .incbin "baserom.gba", 0x3B6648, 0x124 + +gMapEvents_Route2:: @ 0x83B676C + .incbin "baserom.gba", 0x3B676C, 0x104 + +gMapEvents_Route3:: @ 0x83B6870 + .incbin "baserom.gba", 0x3B6870, 0x110 + +gMapEvents_Route4:: @ 0x83B6980 + .incbin "baserom.gba", 0x3B6980, 0x40 + +gMapEvents_Route5:: @ 0x83B69C0 + .incbin "baserom.gba", 0x3B69C0, 0xE0 + +gMapEvents_Route6:: @ 0x83B6AA0 + .incbin "baserom.gba", 0x3B6AA0, 0x54 + +gMapEvents_Route7:: @ 0x83B6AF4 + .incbin "baserom.gba", 0x3B6AF4, 0x1BC + +gMapEvents_Route8:: @ 0x83B6CB0 + .incbin "baserom.gba", 0x3B6CB0, 0x164 + +gMapEvents_Route9:: @ 0x83B6E14 + .incbin "baserom.gba", 0x3B6E14, 0x18C + +gMapEvents_Route10:: @ 0x83B6FA0 + .incbin "baserom.gba", 0x3B6FA0, 0x17C + +gMapEvents_Route11:: @ 0x83B711C + .incbin "baserom.gba", 0x3B711C, 0x1C0 + +gMapEvents_Route12:: @ 0x83B72DC + .incbin "baserom.gba", 0x3B72DC, 0x14C + +gMapEvents_Route13:: @ 0x83B7428 + .incbin "baserom.gba", 0x3B7428, 0x1A0 + +gMapEvents_Route14:: @ 0x83B75C8 + .incbin "baserom.gba", 0x3B75C8, 0x180 + +gMapEvents_Route15:: @ 0x83B7748 + .incbin "baserom.gba", 0x3B7748, 0x150 + +gMapEvents_Route16:: @ 0x83B7898 + .incbin "baserom.gba", 0x3B7898, 0x188 + +gMapEvents_Route17:: @ 0x83B7A20 + .incbin "baserom.gba", 0x3B7A20, 0x84 + +gMapEvents_Route18:: @ 0x83B7AA4 + .incbin "baserom.gba", 0x3B7AA4, 0x140 + +gMapEvents_Route19:: @ 0x83B7BE4 + .incbin "baserom.gba", 0x3B7BE4, 0x150 + +gMapEvents_Route20:: @ 0x83B7D34 + .incbin "baserom.gba", 0x3B7D34, 0xB0 + +gMapEvents_Route21_North:: @ 0x83B7DE4 + .incbin "baserom.gba", 0x3B7DE4, 0x8C + +gMapEvents_Route21_South:: @ 0x83B7E70 + .incbin "baserom.gba", 0x3B7E70, 0xA8 + +gMapEvents_Route22:: @ 0x83B7F18 + .incbin "baserom.gba", 0x3B7F18, 0x3E8 + +gMapEvents_Route23:: @ 0x83B8300 + .incbin "baserom.gba", 0x3B8300, 0x100 + +gMapEvents_Route24:: @ 0x83B8400 + .incbin "baserom.gba", 0x3B8400, 0x190 + +gMapEvents_Route25:: @ 0x83B8590 + .incbin "baserom.gba", 0x3B8590, 0x2FC + +gMapEvents_OneIsland_KindleRoad:: @ 0x83B888C + .incbin "baserom.gba", 0x3B888C, 0xA4 + +gMapEvents_OneIsland_TreasureBeach:: @ 0x83B8930 + .incbin "baserom.gba", 0x3B8930, 0x34 + +gMapEvents_TwoIsland_CapeBrink:: @ 0x83B8964 + .incbin "baserom.gba", 0x3B8964, 0x138 + +gMapEvents_ThreeIsland_BondBridge:: @ 0x83B8A9C + .incbin "baserom.gba", 0x3B8A9C, 0x74 + +gMapEvents_ThreeIsland_Port:: @ 0x83B8B10 + .incbin "baserom.gba", 0x3B8B10, 0x14 + +gMapEvents_UnknownMap_03_50:: @ 0x83B8B24 + .incbin "baserom.gba", 0x3B8B24, 0x14 + +gMapEvents_UnknownMap_03_51:: @ 0x83B8B38 + .incbin "baserom.gba", 0x3B8B38, 0x14 + +gMapEvents_UnknownMap_03_52:: @ 0x83B8B4C + .incbin "baserom.gba", 0x3B8B4C, 0x14 + +gMapEvents_UnknownMap_03_53:: @ 0x83B8B60 + .incbin "baserom.gba", 0x3B8B60, 0x120 + +gMapEvents_FiveIsland_ResortGorgeous:: @ 0x83B8C80 + .incbin "baserom.gba", 0x3B8C80, 0x44 + +gMapEvents_FiveIsland_WaterLabyrinth:: @ 0x83B8CC4 + .incbin "baserom.gba", 0x3B8CC4, 0xD0 + +gMapEvents_FiveIsland_Meadow:: @ 0x83B8D94 + .incbin "baserom.gba", 0x3B8D94, 0xC8 + +gMapEvents_FiveIsland_MemorialPillar:: @ 0x83B8E5C + .incbin "baserom.gba", 0x3B8E5C, 0xDC + +gMapEvents_SixIsland_OutcastIsland:: @ 0x83B8F38 + .incbin "baserom.gba", 0x3B8F38, 0x70 + +gMapEvents_SixIsland_GreenPath:: @ 0x83B8FA8 + .incbin "baserom.gba", 0x3B8FA8, 0x138 + +gMapEvents_SixIsland_WaterPath:: @ 0x83B90E0 + .incbin "baserom.gba", 0x3B90E0, 0x1C0 + +gMapEvents_SixIsland_RuinValley:: @ 0x83B92A0 + .incbin "baserom.gba", 0x3B92A0, 0x88 + +gMapEvents_SevenIsland_TrainerTower:: @ 0x83B9328 + .incbin "baserom.gba", 0x3B9328, 0xD4 + +gMapEvents_SevenIsland_SevaultCanyon_Entrance:: @ 0x83B93FC + .incbin "baserom.gba", 0x3B93FC, 0x21C + +gMapEvents_SevenIsland_SevaultCanyon:: @ 0x83B9618 + .incbin "baserom.gba", 0x3B9618, 0xDC + +gMapEvents_SevenIsland_TanobyRuins:: @ 0x83B96F4 + .incbin "baserom.gba", 0x3B96F4, 0x58 + +gMapEvents_PalletTown_PlayersHouse_1F:: @ 0x83B974C + .incbin "baserom.gba", 0x3B974C, 0x40 + +gMapEvents_PalletTown_PlayersHouse_2F:: @ 0x83B978C + .incbin "baserom.gba", 0x3B978C, 0x80 + +gMapEvents_PalletTown_GarysHouse:: @ 0x83B980C + .incbin "baserom.gba", 0x3B980C, 0x1AC + +gMapEvents_PalletTown_ProfessorOaksLab:: @ 0x83B99B8 + .incbin "baserom.gba", 0x3B99B8, 0x80 + +gMapEvents_ViridianCity_House1:: @ 0x83B9A38 + .incbin "baserom.gba", 0x3B9A38, 0x140 + +gMapEvents_ViridianCity_Gym:: @ 0x83B9B78 + .incbin "baserom.gba", 0x3B9B78, 0x98 + +gMapEvents_ViridianCity_House2:: @ 0x83B9C10 + .incbin "baserom.gba", 0x3B9C10, 0x74 + +gMapEvents_ViridianCity_Mart:: @ 0x83B9C84 + .incbin "baserom.gba", 0x3B9C84, 0x94 + +gMapEvents_ViridianCity_PokemonCenter_1F:: @ 0x83B9D18 + .incbin "baserom.gba", 0x3B9D18, 0x8C + +gMapEvents_ViridianCity_PokemonCenter_2F:: @ 0x83B9DA4 + .incbin "baserom.gba", 0x3B9DA4, 0x134 + +gMapEvents_PewterCity_Museum_1F:: @ 0x83B9ED8 + .incbin "baserom.gba", 0x3B9ED8, 0xF4 + +gMapEvents_PewterCity_Museum_2F:: @ 0x83B9FCC + .incbin "baserom.gba", 0x3B9FCC, 0x8C + +gMapEvents_PewterCity_Gym:: @ 0x83BA058 + .incbin "baserom.gba", 0x3BA058, 0x74 + +gMapEvents_PewterCity_Mart:: @ 0x83BA0CC + .incbin "baserom.gba", 0x3BA0CC, 0x74 + +gMapEvents_PewterCity_House1:: @ 0x83BA140 + .incbin "baserom.gba", 0x3BA140, 0xDC + +gMapEvents_PewterCity_PokemonCenter_1F:: @ 0x83BA21C + .incbin "baserom.gba", 0x3BA21C, 0x8C + +gMapEvents_PewterCity_PokemonCenter_2F:: @ 0x83BA2A8 + .incbin "baserom.gba", 0x3BA2A8, 0x5C + +gMapEvents_PewterCity_House2:: @ 0x83BA304 + .incbin "baserom.gba", 0x3BA304, 0x4C + +gMapEvents_CeruleanCity_House1:: @ 0x83BA350 + .incbin "baserom.gba", 0x3BA350, 0x70 + +gMapEvents_CeruleanCity_House2:: @ 0x83BA3C0 + .incbin "baserom.gba", 0x3BA3C0, 0x5C + +gMapEvents_CeruleanCity_House3:: @ 0x83BA41C + .incbin "baserom.gba", 0x3BA41C, 0xDC + +gMapEvents_CeruleanCity_PokemonCenter_1F:: @ 0x83BA4F8 + .incbin "baserom.gba", 0x3BA4F8, 0x8C + +gMapEvents_CeruleanCity_PokemonCenter_2F:: @ 0x83BA584 + .incbin "baserom.gba", 0x3BA584, 0xA4 + +gMapEvents_CeruleanCity_Gym:: @ 0x83BA628 + .incbin "baserom.gba", 0x3BA628, 0xD4 + +gMapEvents_CeruleanCity_BikeShop:: @ 0x83BA6FC + .incbin "baserom.gba", 0x3BA6FC, 0x74 + +gMapEvents_CeruleanCity_Mart:: @ 0x83BA770 + .incbin "baserom.gba", 0x3BA770, 0x34 + +gMapEvents_CeruleanCity_House4:: @ 0x83BA7A4 + .incbin "baserom.gba", 0x3BA7A4, 0x40 + +gMapEvents_CeruleanCity_House5:: @ 0x83BA7E4 + .incbin "baserom.gba", 0x3BA7E4, 0xAC + +gMapEvents_LavenderTown_PokemonCenter_1F:: @ 0x83BA890 + .incbin "baserom.gba", 0x3BA890, 0x8C + +gMapEvents_LavenderTown_PokemonCenter_2F:: @ 0x83BA91C + .incbin "baserom.gba", 0x3BA91C, 0xE0 + +gMapEvents_LavenderTown_VolunteerPokemonHouse:: @ 0x83BA9FC + .incbin "baserom.gba", 0x3BA9FC, 0x5C + +gMapEvents_LavenderTown_House1:: @ 0x83BAA58 + .incbin "baserom.gba", 0x3BAA58, 0x44 + +gMapEvents_LavenderTown_House2:: @ 0x83BAA9C + .incbin "baserom.gba", 0x3BAA9C, 0x8C + +gMapEvents_LavenderTown_Mart:: @ 0x83BAB28 + .incbin "baserom.gba", 0x3BAB28, 0x44 + +gMapEvents_VermilionCity_House1:: @ 0x83BAB6C + .incbin "baserom.gba", 0x3BAB6C, 0xDC + +gMapEvents_VermilionCity_PokemonCenter_1F:: @ 0x83BAC48 + .incbin "baserom.gba", 0x3BAC48, 0x8C + +gMapEvents_VermilionCity_PokemonCenter_2F:: @ 0x83BACD4 + .incbin "baserom.gba", 0x3BACD4, 0xD4 + +gMapEvents_VermilionCity_PokemonFanClub:: @ 0x83BADA8 + .incbin "baserom.gba", 0x3BADA8, 0x44 + +gMapEvents_VermilionCity_House2:: @ 0x83BADEC + .incbin "baserom.gba", 0x3BADEC, 0x74 + +gMapEvents_VermilionCity_Mart:: @ 0x83BAE60 + .incbin "baserom.gba", 0x3BAE60, 0x170 + +gMapEvents_VermilionCity_Gym:: @ 0x83BAFD0 + .incbin "baserom.gba", 0x3BAFD0, 0x98 + +gMapEvents_VermilionCity_House3:: @ 0x83BB068 + .incbin "baserom.gba", 0x3BB068, 0x84 + +gMapEvents_CeladonCity_DepartmentStore_1F:: @ 0x83BB0EC + .incbin "baserom.gba", 0x3BB0EC, 0x98 + +gMapEvents_CeladonCity_DepartmentStore_2F:: @ 0x83BB184 + .incbin "baserom.gba", 0x3BB184, 0x128 + +gMapEvents_CeladonCity_DepartmentStore_3F:: @ 0x83BB2AC + .incbin "baserom.gba", 0x3BB2AC, 0x80 + +gMapEvents_CeladonCity_DepartmentStore_4F:: @ 0x83BB32C + .incbin "baserom.gba", 0x3BB32C, 0x98 + +gMapEvents_CeladonCity_DepartmentStore_5F:: @ 0x83BB3C4 + .incbin "baserom.gba", 0x3BB3C4, 0x7C + +gMapEvents_CeladonCity_DepartmentStore_Roof:: @ 0x83BB440 + .incbin "baserom.gba", 0x3BB440, 0x3C + +gMapEvents_CeladonCity_DepartmentStore_Elevator:: @ 0x83BB47C + .incbin "baserom.gba", 0x3BB47C, 0xBC + +gMapEvents_CeladonCity_Condominiums_1F:: @ 0x83BB538 + .incbin "baserom.gba", 0x3BB538, 0x7C + +gMapEvents_CeladonCity_Condominiums_2F:: @ 0x83BB5B4 + .incbin "baserom.gba", 0x3BB5B4, 0xF4 + +gMapEvents_CeladonCity_Condominiums_3F:: @ 0x83BB6A8 + .incbin "baserom.gba", 0x3BB6A8, 0x44 + +gMapEvents_CeladonCity_Condominiums_Roof:: @ 0x83BB6EC + .incbin "baserom.gba", 0x3BB6EC, 0x80 + +gMapEvents_CeladonCity_Condominiums_RoofRoom:: @ 0x83BB76C + .incbin "baserom.gba", 0x3BB76C, 0x94 + +gMapEvents_CeladonCity_PokemonCenter_1F:: @ 0x83BB800 + .incbin "baserom.gba", 0x3BB800, 0x8C + +gMapEvents_CeladonCity_PokemonCenter_2F:: @ 0x83BB88C + .incbin "baserom.gba", 0x3BB88C, 0x2EC + +gMapEvents_CeladonCity_GameCorner:: @ 0x83BBB78 + .incbin "baserom.gba", 0x3BBB78, 0xA4 + +gMapEvents_CeladonCity_GameCorner_PrizeRoom:: @ 0x83BBC1C + .incbin "baserom.gba", 0x3BBC1C, 0x14C + +gMapEvents_CeladonCity_Gym:: @ 0x83BBD68 + .incbin "baserom.gba", 0x3BBD68, 0xA4 + +gMapEvents_CeladonCity_Restaurant:: @ 0x83BBE0C + .incbin "baserom.gba", 0x3BBE0C, 0x74 + +gMapEvents_CeladonCity_House1:: @ 0x83BBE80 + .incbin "baserom.gba", 0x3BBE80, 0x8C + +gMapEvents_CeladonCity_Hotel:: @ 0x83BBF0C + .incbin "baserom.gba", 0x3BBF0C, 0x94 + +gMapEvents_FuchsiaCity_SafariZone_Entrance:: @ 0x83BBFA0 + .incbin "baserom.gba", 0x3BBFA0, 0x74 + +gMapEvents_FuchsiaCity_Mart:: @ 0x83BC014 + .incbin "baserom.gba", 0x3BC014, 0x8C + +gMapEvents_FuchsiaCity_ZooBuilding:: @ 0x83BC0A0 + .incbin "baserom.gba", 0x3BC0A0, 0x104 + +gMapEvents_FuchsiaCity_Gym:: @ 0x83BC1A4 + .incbin "baserom.gba", 0x3BC1A4, 0x74 + +gMapEvents_FuchsiaCity_House1:: @ 0x83BC218 + .incbin "baserom.gba", 0x3BC218, 0x94 + +gMapEvents_FuchsiaCity_PokemonCenter_1F:: @ 0x83BC2AC + .incbin "baserom.gba", 0x3BC2AC, 0x8C + +gMapEvents_FuchsiaCity_PokemonCenter_2F:: @ 0x83BC338 + .incbin "baserom.gba", 0x3BC338, 0xBC + +gMapEvents_FuchsiaCity_Building1:: @ 0x83BC3F4 + .incbin "baserom.gba", 0x3BC3F4, 0x4C + +gMapEvents_FuchsiaCity_House2:: @ 0x83BC440 + .incbin "baserom.gba", 0x3BC440, 0x34 + +gMapEvents_FuchsiaCity_House3:: @ 0x83BC474 + .incbin "baserom.gba", 0x3BC474, 0x1B8 + +gMapEvents_CinnabarIsland_Gym:: @ 0x83BC62C + .incbin "baserom.gba", 0x3BC62C, 0x8C + +gMapEvents_CinnabarIsland_PokemonLab_Entrance:: @ 0x83BC6B8 + .incbin "baserom.gba", 0x3BC6B8, 0x64 + +gMapEvents_CinnabarIsland_PokemonLab_Lounge:: @ 0x83BC71C + .incbin "baserom.gba", 0x3BC71C, 0x64 + +gMapEvents_CinnabarIsland_PokemonLab_ResearchRoom:: @ 0x83BC780 + .incbin "baserom.gba", 0x3BC780, 0x4C + +gMapEvents_CinnabarIsland_PokemonLab_ExperimentRoom:: @ 0x83BC7CC + .incbin "baserom.gba", 0x3BC7CC, 0xDC + +gMapEvents_CinnabarIsland_PokemonCenter_1F:: @ 0x83BC8A8 + .incbin "baserom.gba", 0x3BC8A8, 0x8C + +gMapEvents_CinnabarIsland_PokemonCenter_2F:: @ 0x83BC934 + .incbin "baserom.gba", 0x3BC934, 0x74 + +gMapEvents_CinnabarIsland_Mart:: @ 0x83BC9A8 + .incbin "baserom.gba", 0x3BC9A8, 0xEC + +gMapEvents_IndigoPlateau_PokemonCenter_1F:: @ 0x83BCA94 + .incbin "baserom.gba", 0x3BCA94, 0x8C + +gMapEvents_IndigoPlateau_PokemonCenter_2F:: @ 0x83BCB20 + .incbin "baserom.gba", 0x3BCB20, 0x7C + +gMapEvents_SaffronCity_House1_1F:: @ 0x83BCB9C + .incbin "baserom.gba", 0x3BCB9C, 0xA0 + +gMapEvents_SaffronCity_House1_2F:: @ 0x83BCC3C + .incbin "baserom.gba", 0x3BCC3C, 0x124 + +gMapEvents_SaffronCity_Dojo:: @ 0x83BCD60 + .incbin "baserom.gba", 0x3BCD60, 0x20C + +gMapEvents_SaffronCity_Gym:: @ 0x83BCF6C + .incbin "baserom.gba", 0x3BCF6C, 0x98 + +gMapEvents_SaffronCity_House2:: @ 0x83BD004 + .incbin "baserom.gba", 0x3BD004, 0x74 + +gMapEvents_SaffronCity_Mart:: @ 0x83BD078 + .incbin "baserom.gba", 0x3BD078, 0xC4 + +gMapEvents_SaffronCity_PokemonCenter_1F:: @ 0x83BD13C + .incbin "baserom.gba", 0x3BD13C, 0x8C + +gMapEvents_SaffronCity_PokemonCenter_2F:: @ 0x83BD1C8 + .incbin "baserom.gba", 0x3BD1C8, 0x44 + +gMapEvents_SaffronCity_House3:: @ 0x83BD20C + .incbin "baserom.gba", 0x3BD20C, 0x10C + +gMapEvents_SaffronCity_PokemonTrainerFanClub:: @ 0x83BD318 + .incbin "baserom.gba", 0x3BD318, 0x64 + +gMapEvents_Route2_ViridianForest_SouthEntrance:: @ 0x83BD37C + .incbin "baserom.gba", 0x3BD37C, 0x5C + +gMapEvents_Route2_House:: @ 0x83BD3D8 + .incbin "baserom.gba", 0x3BD3D8, 0x64 + +gMapEvents_Route2_EastBuilding:: @ 0x83BD43C + .incbin "baserom.gba", 0x3BD43C, 0x7C + +gMapEvents_Route2_ViridianForest_NorthEntrance:: @ 0x83BD4B8 + .incbin "baserom.gba", 0x3BD4B8, 0xC4 + +gMapEvents_Route4_PokemonCenter_1F:: @ 0x83BD57C + .incbin "baserom.gba", 0x3BD57C, 0x8C + +gMapEvents_Route4_PokemonCenter_2F:: @ 0x83BD608 + .incbin "baserom.gba", 0x3BD608, 0x44 + +gMapEvents_Route5_PokemonDayCare:: @ 0x83BD64C + .incbin "baserom.gba", 0x3BD64C, 0x7C + +gMapEvents_Route5_SouthEntrance:: @ 0x83BD6C8 + .incbin "baserom.gba", 0x3BD6C8, 0x7C + +gMapEvents_Route6_NorthEntrance:: @ 0x83BD744 + .incbin "baserom.gba", 0x3BD744, 0x14 + +gMapEvents_UnknownMap_18_01:: @ 0x83BD758 + .incbin "baserom.gba", 0x3BD758, 0x7C + +gMapEvents_Route7_EastEntrance:: @ 0x83BD7D4 + .incbin "baserom.gba", 0x3BD7D4, 0x7C + +gMapEvents_Route8_WestEntrance:: @ 0x83BD850 + .incbin "baserom.gba", 0x3BD850, 0xAC + +gMapEvents_Route10_PokemonCenter_1F:: @ 0x83BD8FC + .incbin "baserom.gba", 0x3BD8FC, 0x8C + +gMapEvents_Route10_PokemonCenter_2F:: @ 0x83BD988 + .incbin "baserom.gba", 0x3BD988, 0x6C + +gMapEvents_Route11_EastEntrance_1F:: @ 0x83BD9F4 + .incbin "baserom.gba", 0x3BD9F4, 0x64 + +gMapEvents_Route11_EastEntrance_2F:: @ 0x83BDA58 + .incbin "baserom.gba", 0x3BDA58, 0x54 + +gMapEvents_Route12_NorthEntrance_1F:: @ 0x83BDAAC + .incbin "baserom.gba", 0x3BDAAC, 0x4C + +gMapEvents_Route12_NorthEntrance_2F:: @ 0x83BDAF8 + .incbin "baserom.gba", 0x3BDAF8, 0x50 + +gMapEvents_Route12_FishingHouse:: @ 0x83BDB48 + .incbin "baserom.gba", 0x3BDB48, 0x54 + +gMapEvents_Route15_WestEntrance_1F:: @ 0x83BDB9C + .incbin "baserom.gba", 0x3BDB9C, 0x4C + +gMapEvents_Route15_WestEntrance_2F:: @ 0x83BDBE8 + .incbin "baserom.gba", 0x3BDBE8, 0x5C + +gMapEvents_Route16_House:: @ 0x83BDC44 + .incbin "baserom.gba", 0x3BDC44, 0x11C + +gMapEvents_Route16_NorthEntrance_1F:: @ 0x83BDD60 + .incbin "baserom.gba", 0x3BDD60, 0x7C + +gMapEvents_Route16_NorthEntrance_2F:: @ 0x83BDDDC + .incbin "baserom.gba", 0x3BDDDC, 0xF4 + +gMapEvents_Route18_EastEntrance_1F:: @ 0x83BDED0 + .incbin "baserom.gba", 0x3BDED0, 0x4C + +gMapEvents_Route18_EastEntrance_2F:: @ 0x83BDF1C + .incbin "baserom.gba", 0x3BDF1C, 0x14 + +gMapEvents_UnusedHouse_27_00:: @ 0x83BDF30 + .incbin "baserom.gba", 0x3BDF30, 0x5C + +gMapEvents_Route22_NorthEntrance:: @ 0x83BDF8C + .incbin "baserom.gba", 0x3BDF8C, 0x14 + +gMapEvents_UnusedHouse_29_00:: @ 0x83BDFA0 + .incbin "baserom.gba", 0x3BDFA0, 0x68 + +gMapEvents_Route25_SeaCottage:: @ 0x83BE008 + .incbin "baserom.gba", 0x3BE008, 0x48 + +gMapEvents_SevenIsland_House_Room1:: @ 0x83BE050 + .incbin "baserom.gba", 0x3BE050, 0x34 + +gMapEvents_SevenIsland_House_Room2:: @ 0x83BE084 + .incbin "baserom.gba", 0x3BE084, 0x7C + +gMapEvents_SevenIsland_Mart:: @ 0x83BE100 + .incbin "baserom.gba", 0x3BE100, 0xB4 + +gMapEvents_SevenIsland_PokemonCenter_1F:: @ 0x83BE1B4 + .incbin "baserom.gba", 0x3BE1B4, 0x8C + +gMapEvents_SevenIsland_PokemonCenter_2F:: @ 0x83BE240 + .incbin "baserom.gba", 0x3BE240, 0x14 + +gMapEvents_UnusedHouse_31_05:: @ 0x83BE254 + .incbin "baserom.gba", 0x3BE254, 0x4C + +gMapEvents_SevenIsland_Harbor:: @ 0x83BE2A0 + .incbin "baserom.gba", 0x3BE2A0, 0x160 + +gMapEvents_OneIsland_PokemonCenter_1F:: @ 0x83BE400 + .incbin "baserom.gba", 0x3BE400, 0x8C + +gMapEvents_OneIsland_PokemonCenter_2F:: @ 0x83BE48C + .incbin "baserom.gba", 0x3BE48C, 0x4C + +gMapEvents_OneIsland_House1:: @ 0x83BE4D8 + .incbin "baserom.gba", 0x3BE4D8, 0x34 + +gMapEvents_OneIsland_House2:: @ 0x83BE50C + .incbin "baserom.gba", 0x3BE50C, 0x4C + +gMapEvents_OneIsland_Harbor:: @ 0x83BE558 + .incbin "baserom.gba", 0x3BE558, 0x94 + +gMapEvents_TwoIsland_JoyfulGameCorner:: @ 0x83BE5EC + .incbin "baserom.gba", 0x3BE5EC, 0x34 + +gMapEvents_TwoIsland_House:: @ 0x83BE620 + .incbin "baserom.gba", 0x3BE620, 0x6C + +gMapEvents_TwoIsland_PokemonCenter_1F:: @ 0x83BE68C + .incbin "baserom.gba", 0x3BE68C, 0x8C + +gMapEvents_TwoIsland_PokemonCenter_2F:: @ 0x83BE718 + .incbin "baserom.gba", 0x3BE718, 0x4C + +gMapEvents_TwoIsland_Harbor:: @ 0x83BE764 + .incbin "baserom.gba", 0x3BE764, 0x40 + +gMapEvents_ThreeIsland_House1:: @ 0x83BE7A4 + .incbin "baserom.gba", 0x3BE7A4, 0x84 + +gMapEvents_ThreeIsland_PokemonCenter_1F:: @ 0x83BE828 + .incbin "baserom.gba", 0x3BE828, 0x8C + +gMapEvents_ThreeIsland_PokemonCenter_2F:: @ 0x83BE8B4 + .incbin "baserom.gba", 0x3BE8B4, 0x7C + +gMapEvents_ThreeIsland_Mart:: @ 0x83BE930 + .incbin "baserom.gba", 0x3BE930, 0x4C + +gMapEvents_ThreeIsland_House2:: @ 0x83BE97C + .incbin "baserom.gba", 0x3BE97C, 0x34 + +gMapEvents_ThreeIsland_House3:: @ 0x83BE9B0 + .incbin "baserom.gba", 0x3BE9B0, 0x4C + +gMapEvents_ThreeIsland_House4:: @ 0x83BE9FC + .incbin "baserom.gba", 0x3BE9FC, 0x34 + +gMapEvents_ThreeIsland_House5:: @ 0x83BEA30 + .incbin "baserom.gba", 0x3BEA30, 0x34 + +gMapEvents_FourIsland_PokemonDayCare:: @ 0x83BEA64 + .incbin "baserom.gba", 0x3BEA64, 0x9C + +gMapEvents_FourIsland_PokemonCenter_1F:: @ 0x83BEB00 + .incbin "baserom.gba", 0x3BEB00, 0x8C + +gMapEvents_FourIsland_PokemonCenter_2F:: @ 0x83BEB8C + .incbin "baserom.gba", 0x3BEB8C, 0x4C + +gMapEvents_FourIsland_House1:: @ 0x83BEBD8 + .incbin "baserom.gba", 0x3BEBD8, 0x184 + +gMapEvents_FourIsland_LoreleisHouse:: @ 0x83BED5C + .incbin "baserom.gba", 0x3BED5C, 0x4C + +gMapEvents_FourIsland_Harbor:: @ 0x83BEDA8 + .incbin "baserom.gba", 0x3BEDA8, 0x34 + +gMapEvents_FourIsland_House2:: @ 0x83BEDDC + .incbin "baserom.gba", 0x3BEDDC, 0x64 + +gMapEvents_FourIsland_Mart:: @ 0x83BEE40 + .incbin "baserom.gba", 0x3BEE40, 0x9C + +gMapEvents_FiveIsland_PokemonCenter_1F:: @ 0x83BEEDC + .incbin "baserom.gba", 0x3BEEDC, 0x8C + +gMapEvents_FiveIsland_PokemonCenter_2F:: @ 0x83BEF68 + .incbin "baserom.gba", 0x3BEF68, 0x4C + +gMapEvents_FiveIsland_Harbor:: @ 0x83BEFB4 + .incbin "baserom.gba", 0x3BEFB4, 0x34 + +gMapEvents_FiveIsland_House1:: @ 0x83BEFE8 + .incbin "baserom.gba", 0x3BEFE8, 0x34 + +gMapEvents_FiveIsland_House2:: @ 0x83BF01C + .incbin "baserom.gba", 0x3BF01C, 0x84 + +gMapEvents_SixIsland_PokemonCenter_1F:: @ 0x83BF0A0 + .incbin "baserom.gba", 0x3BF0A0, 0x8C + +gMapEvents_SixIsland_PokemonCenter_2F:: @ 0x83BF12C + .incbin "baserom.gba", 0x3BF12C, 0x4C + +gMapEvents_SixIsland_Harbor:: @ 0x83BF178 + .incbin "baserom.gba", 0x3BF178, 0x34 + +gMapEvents_SixIsland_House:: @ 0x83BF1AC + .incbin "baserom.gba", 0x3BF1AC, 0x64 + +gMapEvents_SixIsland_Mart:: @ 0x83BF210 + .incbin "baserom.gba", 0x3BF210, 0x4C + +gMapEvents_ThreeIsland_Harbor:: @ 0x83BF25C + .incbin "baserom.gba", 0x3BF25C, 0x64 + +gMapEvents_FiveIsland_ResortGorgeous_House:: @ 0x83BF2C0 + .incbin "baserom.gba", 0x3BF2C0, 0x34 + +gMapEvents_TwoIsland_CapeBrink_House:: @ 0x83BF2F4 + .incbin "baserom.gba", 0x3BF2F4, 0x40 + +gMapEvents_SixIsland_WaterPath_House1:: @ 0x83BF334 + .incbin "baserom.gba", 0x3BF334, 0x34 + +gMapEvents_SixIsland_WaterPath_House2:: @ 0x83BF368 + .incbin "baserom.gba", 0x3BF368, 0x64 + +gMapEvents_SevenIsland_SevaultCanyon_House:: @ 0x83BF3CC + .incbin "baserom.gba", 0x3BF3CC, 0x188 diff --git a/ld_script.txt b/ld_script.txt index 090b18fa1..1bd106cca 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -383,6 +383,8 @@ SECTIONS { data/palette.o(.rodata); src/sound.o(.rodata); data/battle_anim.o(.rodata); + data/map_events.o(.rodata); + data/battle_anim_status_effects.o(.rodata); data/title_screen.o(.rodata); data/field_weather.o(.rodata); data/data_835B488.o(.rodata); From 0cb1417de441af6e688fc4784da498bb677cc888 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 08:46:07 -0400 Subject: [PATCH 082/318] disassemble pokedude text --- data/battle_anim_scripts.s | 1 + data/event_scripts.s | 131 ++++++++++++++++++++++++++++++++++++- 2 files changed, 131 insertions(+), 1 deletion(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 78267e5ea..3d1de8ac5 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1,4 +1,5 @@ .section script_data, "aw", %progbits + .align 2 gUnknown_81C68EC:: @ 81C68EC .incbin "baserom.gba", 0x1C68EC, 0x8 diff --git a/data/event_scripts.s b/data/event_scripts.s index d03d5ecc1..16e6b6ae0 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1936,4 +1936,133 @@ gOakText_LegendAboutToUnfold:: @ 81C5EF4 .string "with POKéMON awaits! Let’s go!$" @ pokedude data - .incbin "baserom.gba", 0x1C5F69, 0x983 +gUnknown_81C5F69:: + .string "POKé DUDE: The speedier of the\n" + .string "battlers gets to attack first.$" + +gUnknown_81C5FA7:: + .string "It looks like my RATTATA was\n" + .string "faster than the PIDGEY.$" + +gUnknown_81C5FDC:: + .string "The battlers take turns attacking\n" + .string "and reducing each other’s HP.$" + +gUnknown_81C601C:: + .string "My RATTATA reduced the foe’s HP\n" + .string "to zero, so it wins!\p" + .string "The POKéMON that took part in the\n" + .string "battle get EXP. Points.\p" + .string "When a POKéMON collects enough\n" + .string "EXP. Points, it levels up.\p" + .string "Leveling up makes your POKéMON\n" + .string "stronger than before.$" + +gUnknown_81C60FA:: + .string "POKé DUDE: Uh-oh…\n" + .string "My RATTATA has been poisoned…\p" + .string "If a POKéMON is poisoned, it loses\n" + .string "HP steadily.$" + +gUnknown_81C615A:: + .string "If a POKéMON develops a status\n" + .string "problem, heal it right away.$" + +gUnknown_81C6196:: + .string "Using an item on a POKéMON uses\n" + .string "up one turn, though.\p" + .string "Now, it’s the opponent’s turn!$" + +gUnknown_81C61EA:: + .string "Yay!\n" + .string "We managed to win!$" + +gUnknown_81C6202:: + .string "POKé DUDE: The move BUBBLE is\n" + .string "a WATER-type attack.\p" + .string "The targeted ODDISH is a\n" + .string "GRASS/POISON-type POKéMON.\p" + .string "The WATER-type attack is absorbed\n" + .string "by the GRASS-type POKéMON…\p" + .string "As a result, the move becomes not\n" + .string "very effective, and inflicts only\l" + .string "half the usual damage.$" + +gUnknown_81C6301:: + .string "Uh-oh, this is not good!\p" + .string "The ABSORB attack you just saw\n" + .string "is a GRASS-type move.\p" + .string "POLIWAG is a WATER-type POKéMON.\p" + .string "So, ABSORB becomes super\n" + .string "effective, doubling the damage.$" + +gUnknown_81C63A9:: + .string "It’s not going to be easy to win\n" + .string "with this matchup…\p" + .string "Let’s try shifting POKéMON!$" + +gUnknown_81C63F9:: + .string "Shifting POKéMON in and out uses\n" + .string "up one turn.\p" + .string "Now, it’s the opponent’s turn.$" + +gUnknown_81C6446:: + .string "BUTTERFREE is a BUG/FLYING-type\n" + .string "POKéMON.\p" + .string "Against this POKéMON, a GRASS-\n" + .string "type attack…\p" + .string "…inflicts only half the usual\n" + .string "damage on a BUG-type POKéMON…\p" + .string "…And, it also causes only half the\n" + .string "damage on a FLYING-type POKéMON.\p" + .string "Therefore, BUTTERFREE, being a\n" + .string "BUG/FLYING POKéMON, only takes\l" + .string "one quarter of the usual damage.$" + +gUnknown_81C657A:: + .string "ODDISH is a GRASS/POISON-type\n" + .string "POKéMON.\p" + .string "A FLYING- or PSYCHIC-type attack\n" + .string "is super effective against it.\p" + .string "One of those types of attacks will\n" + .string "inflict double the usual damage.\p" + .string "Okay, here we go!$" + +gUnknown_81C6637:: + .string "Yeah!\n" + .string "We won!$" + +gUnknown_81C6645:: + .string "POKé DUDE: When you’re trying to\n" + .string "catch a POKéMON, don’t throw any\l" + .string "POKé BALLS right away.\p" + .string "First, you need to weaken it by\n" + .string "reducing its HP.$" + +gUnknown_81C66CF:: + .string "Okay, that should be good enough.\p" + .string "But, if it’s possible, it would be\n" + .string "best if the target has a status\l" + .string "problem.\p" + .string "For instance, it would be easier\n" + .string "to catch if it were asleep or\l" + .string "paralyzed.$" + +gUnknown_81C6787:: + .string "This will make the POKéMON a lot\n" + .string "easier to catch!\p" + .string "Oh, yes. If you paralyze a\n" + .string "POKéMON, you can’t make it fall\l" + .string "asleep on top of paralysis.\p" + .string "In other words, you can’t double\n" + .string "up status problems, okay?$" + +gUnknown_81C684B:: + .string "Okay!\n" + .string "Let me throw my POKé BALL!$" + +gUnknown_81C686C:: + .string "Before you throw a POKé BALL,\n" + .string "consider the condition and the\l" + .string "type of POKéMON, and pick the kind\l" + .string "of BALL that would work best.$" From ed4b353795e27f362ad1abd5d31ec4bf5936b9dd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 15:02:59 -0400 Subject: [PATCH 083/318] tm_case through sub_8131D48 --- asm/tm_case.s | 739 +---------------------------------------- include/item.h | 4 + include/list_menu.h | 1 + include/menu_helpers.h | 3 + ld_script.txt | 1 + src/tm_case.c | 368 ++++++++++++++++++++ sym_ewram.txt | 25 +- 7 files changed, 388 insertions(+), 753 deletions(-) create mode 100644 src/tm_case.c diff --git a/asm/tm_case.s b/asm/tm_case.s index ac58fa0a2..28662fad3 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -5,725 +5,6 @@ .text - thumb_func_start sub_81317F8 -sub_81317F8: @ 81317F8 - push {r4-r7,lr} - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r2, 24 - lsrs r6, r2, 24 - bl sub_8131A8C - ldr r4, _08131854 @ =gUnknown_203B118 - movs r0, 0x1C - bl Alloc - str r0, [r4] - movs r1, 0 - str r1, [r0] - movs r1, 0xFF - strb r1, [r0, 0x8] - ldr r1, [r4] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x7] - cmp r5, 0x5 - beq _0813182A - ldr r0, _08131858 @ =gUnknown_203B10C - strb r5, [r0, 0x4] -_0813182A: - cmp r7, 0 - beq _08131832 - ldr r0, _08131858 @ =gUnknown_203B10C - str r7, [r0] -_08131832: - cmp r6, 0xFF - beq _0813183A - ldr r0, _08131858 @ =gUnknown_203B10C - strb r6, [r0, 0x5] -_0813183A: - ldr r2, _0813185C @ =gTextFlags - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _08131860 @ =sub_8131894 - bl SetMainCallback2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08131854: .4byte gUnknown_203B118 -_08131858: .4byte gUnknown_203B10C -_0813185C: .4byte gTextFlags -_08131860: .4byte sub_8131894 - thumb_func_end sub_81317F8 - - thumb_func_start sub_8131864 -sub_8131864: @ 8131864 - 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_8131864 - - thumb_func_start sub_8131880 -sub_8131880: @ 8131880 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8131880 - - thumb_func_start sub_8131894 -sub_8131894: @ 8131894 - push {lr} -_08131896: - bl sub_80BF72C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081318BA - bl sub_81318C0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081318BA - bl sub_80BF708 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08131896 -_081318BA: - pop {r0} - bx r0 - thumb_func_end sub_8131894 - - thumb_func_start sub_81318C0 -sub_81318C0: @ 81318C0 - push {r4,lr} - sub sp, 0x4 - ldr r0, _081318E0 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x12 - bls _081318D4 - b _08131A68 -_081318D4: - lsls r0, 2 - ldr r1, _081318E4 @ =_081318E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081318E0: .4byte gMain -_081318E4: .4byte _081318E8 - .align 2, 0 -_081318E8: - .4byte _08131934 - .4byte _0813193E - .4byte _08131944 - .4byte _0813194A - .4byte _08131950 - .4byte _08131956 - .4byte _0813195C - .4byte _08131970 - .4byte _08131976 - .4byte _08131984 - .4byte _08131990 - .4byte _0813199E - .4byte _081319A4 - .4byte _081319AE - .4byte _081319B4 - .4byte _08131A04 - .4byte _08131A0A - .4byte _08131A34 - .4byte _08131A42 -_08131934: - bl sub_80BF768 - bl clear_scheduled_bg_copies_to_vram - b _08131A52 -_0813193E: - bl ScanlineEffect_Stop - b _08131A52 -_08131944: - bl FreeAllSpritePalettes - b _08131A52 -_0813194A: - bl ResetPaletteFade - b _08131A52 -_08131950: - bl ResetSpriteData - b _08131A52 -_08131956: - bl ResetTasks - b _08131A52 -_0813195C: - bl sub_8131AB8 - ldr r0, _0813196C @ =gUnknown_203B118 - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x12] - b _08131A52 - .align 2, 0 -_0813196C: .4byte gUnknown_203B118 -_08131970: - bl sub_8133244 - b _08131A52 -_08131976: - bl sub_8131B20 - lsls r0, 24 - cmp r0, 0 - bne _08131982 - b _08131A80 -_08131982: - b _08131A52 -_08131984: - ldr r0, _0813198C @ =gUnknown_20398A4 - bl sub_809A5E4 - b _08131A52 - .align 2, 0 -_0813198C: .4byte gUnknown_20398A4 -_08131990: - bl sub_81320BC - bl sub_8132120 - bl sub_8132170 - b _08131A52 -_0813199E: - bl sub_8133404 - b _08131A52 -_081319A4: - bl sub_8131C10 - bl sub_8131C50 - b _08131A52 -_081319AE: - bl sub_81333C4 - b _08131A52 -_081319B4: - ldr r0, _081319C0 @ =gUnknown_203B10C - ldrb r0, [r0, 0x4] - cmp r0, 0x4 - bne _081319C8 - ldr r0, _081319C4 @ =sub_8132F20 - b _081319CA - .align 2, 0 -_081319C0: .4byte gUnknown_203B10C -_081319C4: .4byte sub_8132F20 -_081319C8: - ldr r0, _081319F4 @ =sub_81322D4 -_081319CA: - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081319F8 @ =gUnknown_3005E70 - ldr r2, _081319FC @ =gUnknown_203B10C - ldrh r1, [r2, 0xA] - ldrh r2, [r2, 0x8] - bl ListMenuInit - ldr r2, _08131A00 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x8] - b _08131A52 - .align 2, 0 -_081319F4: .4byte sub_81322D4 -_081319F8: .4byte gUnknown_3005E70 -_081319FC: .4byte gUnknown_203B10C -_08131A00: .4byte gTasks -_08131A04: - bl sub_8132018 - b _08131A52 -_08131A0A: - ldr r0, _08131A2C @ =gUnknown_203B10C - ldrh r1, [r0, 0x8] - ldrh r0, [r0, 0xA] - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl sub_813368C - ldr r1, _08131A30 @ =gUnknown_203B118 - ldr r1, [r1] - strb r0, [r1, 0x4] - b _08131A52 - .align 2, 0 -_08131A2C: .4byte gUnknown_203B10C -_08131A30: .4byte gUnknown_203B118 -_08131A34: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _08131A52 -_08131A42: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08131A52: - ldr r1, _08131A64 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08131A80 - .align 2, 0 -_08131A64: .4byte gMain -_08131A68: - ldr r0, _08131A78 @ =sub_8131880 - bl SetVBlankCallback - ldr r0, _08131A7C @ =sub_8131864 - bl SetMainCallback2 - movs r0, 0x1 - b _08131A82 - .align 2, 0 -_08131A78: .4byte sub_8131880 -_08131A7C: .4byte sub_8131864 -_08131A80: - movs r0, 0 -_08131A82: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81318C0 - - thumb_func_start sub_8131A8C -sub_8131A8C: @ 8131A8C - ldr r0, _08131AA4 @ =gUnknown_203B118 - movs r1, 0 - str r1, [r0] - ldr r0, _08131AA8 @ =gUnknown_203B120 - str r1, [r0] - ldr r0, _08131AAC @ =gUnknown_203B124 - str r1, [r0] - ldr r0, _08131AB0 @ =gUnknown_203B128 - str r1, [r0] - ldr r0, _08131AB4 @ =gUnknown_203B12C - str r1, [r0] - bx lr - .align 2, 0 -_08131AA4: .4byte gUnknown_203B118 -_08131AA8: .4byte gUnknown_203B120 -_08131AAC: .4byte gUnknown_203B124 -_08131AB0: .4byte gUnknown_203B128 -_08131AB4: .4byte gUnknown_203B12C - thumb_func_end sub_8131A8C - - thumb_func_start sub_8131AB8 -sub_8131AB8: @ 8131AB8 - push {r4,lr} - bl sub_80BF7C8 - ldr r4, _08131B18 @ =gUnknown_203B120 - movs r0, 0x80 - lsls r0, 4 - bl AllocZeroed - str r0, [r4] - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08131B1C @ =gUnknown_8463134 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r1, [r4] - movs r0, 0x2 - bl SetBgTilemapBuffer - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08131B18: .4byte gUnknown_203B120 -_08131B1C: .4byte gUnknown_8463134 - thumb_func_end sub_8131AB8 - - thumb_func_start sub_8131B20 -sub_8131B20: @ 8131B20 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08131B3C @ =gUnknown_203B118 - ldr r0, [r4] - movs r1, 0x12 - ldrsh r0, [r0, r1] - cmp r0, 0x4 - bhi _08131BF8 - lsls r0, 2 - ldr r1, _08131B40 @ =_08131B44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08131B3C: .4byte gUnknown_203B118 -_08131B40: .4byte _08131B44 - .align 2, 0 -_08131B44: - .4byte _08131B58 - .4byte _08131B74 - .4byte _08131B94 - .4byte _08131BAC - .4byte _08131BDC -_08131B58: - bl reset_temp_tile_data_buffers - ldr r1, _08131B70 @ =gUnknown_8E845D8 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - b _08131BE2 - .align 2, 0 -_08131B70: .4byte gUnknown_8E845D8 -_08131B74: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08131C06 - ldr r0, _08131B8C @ =gUnknown_8E84A24 - ldr r1, _08131B90 @ =gUnknown_203B120 - ldr r1, [r1] - bl LZDecompressWram - b _08131BE2 - .align 2, 0 -_08131B8C: .4byte gUnknown_8E84A24 -_08131B90: .4byte gUnknown_203B120 -_08131B94: - ldr r4, _08131BA8 @ =gUnknown_8E84B70 - movs r0, 0x1 - bl GetBgTilemapBuffer - adds r1, r0, 0 - adds r0, r4, 0 - bl LZDecompressWram - b _08131BE2 - .align 2, 0 -_08131BA8: .4byte gUnknown_8E84B70 -_08131BAC: - ldr r0, _08131BC4 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08131BCC - ldr r0, _08131BC8 @ =gUnknown_8E84CB0 - movs r1, 0 - movs r2, 0x80 - bl LoadCompressedPalette - b _08131BE2 - .align 2, 0 -_08131BC4: .4byte gSaveBlock2Ptr -_08131BC8: .4byte gUnknown_8E84CB0 -_08131BCC: - ldr r0, _08131BD8 @ =gUnknown_8E84D20 - movs r1, 0 - movs r2, 0x80 - bl LoadCompressedPalette - b _08131BE2 - .align 2, 0 -_08131BD8: .4byte gUnknown_8E84D20 -_08131BDC: - ldr r0, _08131BF0 @ =gUnknown_8463218 - bl LoadCompressedObjectPic -_08131BE2: - ldr r0, _08131BF4 @ =gUnknown_203B118 - ldr r1, [r0] - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - b _08131C06 - .align 2, 0 -_08131BF0: .4byte gUnknown_8463218 -_08131BF4: .4byte gUnknown_203B118 -_08131BF8: - bl sub_81338A8 - ldr r1, [r4] - movs r0, 0 - strh r0, [r1, 0x12] - movs r0, 0x1 - b _08131C08 -_08131C06: - movs r0, 0 -_08131C08: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8131B20 - - thumb_func_start sub_8131C10 -sub_8131C10: @ 8131C10 - push {r4,lr} - ldr r0, _08131C40 @ =gUnknown_20398A4 - ldr r4, _08131C44 @ =gUnknown_203B124 - ldrb r0, [r0, 0x4] - adds r0, 0x1 - lsls r0, 3 - bl Alloc - str r0, [r4] - ldr r4, _08131C48 @ =gUnknown_203B128 - ldr r0, _08131C4C @ =gUnknown_203B118 - ldr r0, [r0] - ldrb r1, [r0, 0x6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - bl Alloc - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08131C40: .4byte gUnknown_20398A4 -_08131C44: .4byte gUnknown_203B124 -_08131C48: .4byte gUnknown_203B128 -_08131C4C: .4byte gUnknown_203B118 - thumb_func_end sub_8131C10 - - thumb_func_start sub_8131C50 -sub_8131C50: @ 8131C50 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08131D28 @ =gUnknown_20398A4 - mov r8, r0 - movs r6, 0 - ldr r0, _08131D2C @ =gUnknown_203B118 - ldr r0, [r0] - ldrb r0, [r0, 0x6] - cmp r6, r0 - bcs _08131CA0 - ldr r7, _08131D30 @ =gUnknown_203B128 -_08131C68: - lsls r5, r6, 3 - subs r4, r5, r6 - lsls r4, 2 - adds r4, r6 - ldr r0, [r7] - adds r0, r4 - mov r1, r8 - ldr r2, [r1] - lsls r1, r6, 2 - adds r1, r2 - ldrh r1, [r1] - bl sub_8131D48 - ldr r0, _08131D34 @ =gUnknown_203B124 - ldr r0, [r0] - adds r5, r0 - ldr r0, [r7] - adds r0, r4 - str r0, [r5] - str r6, [r5, 0x4] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _08131D2C @ =gUnknown_203B118 - ldr r0, [r0] - ldrb r0, [r0, 0x6] - cmp r6, r0 - bcc _08131C68 -_08131CA0: - ldr r0, _08131D34 @ =gUnknown_203B124 - ldr r3, [r0] - lsls r0, r6, 3 - adds r0, r3 - ldr r1, _08131D38 @ =gUnknown_84166DB - str r1, [r0] - movs r1, 0x2 - negs r1, r1 - str r1, [r0, 0x4] - ldr r2, _08131D3C @ =gUnknown_3005E70 - str r3, [r2] - ldr r0, _08131D2C @ =gUnknown_203B118 - ldr r3, [r0] - ldrb r0, [r3, 0x6] - adds r0, 0x1 - movs r1, 0 - strh r0, [r2, 0xC] - strb r1, [r2, 0x10] - strb r1, [r2, 0x11] - movs r0, 0x8 - strb r0, [r2, 0x12] - strb r1, [r2, 0x13] - ldrb r0, [r2, 0x16] - movs r4, 0x8 - negs r4, r4 - ands r4, r0 - movs r0, 0x39 - negs r0, r0 - ands r4, r0 - movs r0, 0x10 - orrs r4, r0 - strb r4, [r2, 0x16] - ldrb r1, [r2, 0x14] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r5, 0x2 - orrs r0, r5 - strb r0, [r2, 0x14] - ldrb r1, [r3, 0x5] - strh r1, [r2, 0xE] - ldrb r1, [r2, 0x17] - movs r3, 0x40 - negs r3, r3 - ands r3, r1 - orrs r3, r5 - movs r1, 0xF - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0x14] - movs r0, 0x30 - strb r0, [r2, 0x15] - ldr r0, _08131D40 @ =sub_8131E18 - str r0, [r2, 0x4] - ldr r0, _08131D44 @ =sub_8131E68 - str r0, [r2, 0x8] - movs r0, 0x3F - ands r3, r0 - strb r3, [r2, 0x17] - ands r4, r0 - strb r4, [r2, 0x16] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08131D28: .4byte gUnknown_20398A4 -_08131D2C: .4byte gUnknown_203B118 -_08131D30: .4byte gUnknown_203B128 -_08131D34: .4byte gUnknown_203B124 -_08131D38: .4byte gUnknown_84166DB -_08131D3C: .4byte gUnknown_3005E70 -_08131D40: .4byte sub_8131E18 -_08131D44: .4byte sub_8131E68 - thumb_func_end sub_8131C50 - - thumb_func_start sub_8131D48 -sub_8131D48: @ 8131D48 - push {r4-r7,lr} - adds r7, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r5, _08131D8C @ =gStringVar4 - ldr r1, _08131D90 @ =gUnknown_84166FF - adds r0, r5, 0 - bl StringCopy - movs r0, 0xA9 - lsls r0, 1 - cmp r6, r0 - bls _08131DA4 - ldr r1, _08131D94 @ =gUnknown_8463178 - adds r0, r5, 0 - bl StringAppend - ldr r1, _08131D98 @ =gUnknown_8416226 - adds r0, r5, 0 - bl StringAppend - ldr r4, _08131D9C @ =gStringVar1 - ldr r0, _08131DA0 @ =0xfffffeae - adds r1, r6, r0 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - adds r0, r5, 0 - adds r1, r4, 0 - bl StringAppend - b _08131DC4 - .align 2, 0 -_08131D8C: .4byte gStringVar4 -_08131D90: .4byte gUnknown_84166FF -_08131D94: .4byte gUnknown_8463178 -_08131D98: .4byte gUnknown_8416226 -_08131D9C: .4byte gStringVar1 -_08131DA0: .4byte 0xfffffeae -_08131DA4: - ldr r1, _08131DFC @ =gUnknown_8416226 - adds r0, r5, 0 - bl StringAppend - ldr r4, _08131E00 @ =gStringVar1 - ldr r0, _08131E04 @ =0xfffffee0 - adds r1, r6, r0 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r0, r5, 0 - adds r1, r4, 0 - bl StringAppend -_08131DC4: - ldr r4, _08131E08 @ =gStringVar4 - ldr r1, _08131E0C @ =gUnknown_846317C - adds r0, r4, 0 - bl StringAppend - ldr r1, _08131E10 @ =gUnknown_8416703 - adds r0, r4, 0 - bl StringAppend - adds r0, r6, 0 - bl ItemIdToBattleMoveId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xD - muls r1, r0 - ldr r0, _08131E14 @ =gMoveNames - adds r1, r0 - adds r0, r4, 0 - bl StringAppend - adds r0, r7, 0 - adds r1, r4, 0 - bl StringCopy - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08131DFC: .4byte gUnknown_8416226 -_08131E00: .4byte gStringVar1 -_08131E04: .4byte 0xfffffee0 -_08131E08: .4byte gStringVar4 -_08131E0C: .4byte gUnknown_846317C -_08131E10: .4byte gUnknown_8416703 -_08131E14: .4byte gMoveNames - thumb_func_end sub_8131D48 - thumb_func_start sub_8131E18 sub_8131E18: @ 8131E18 push {r4-r6,lr} @@ -996,7 +277,7 @@ sub_8132018: @ 8132018 movs r0, 0x6E str r0, [sp, 0x4] str r0, [sp, 0x8] - ldr r0, _08132050 @ =gUnknown_203B116 + ldr r0, _08132050 @ =gUnknown_203B10C + 10 str r0, [sp, 0xC] movs r0, 0x2 movs r1, 0xA0 @@ -1011,7 +292,7 @@ sub_8132018: @ 8132018 bx r0 .align 2, 0 _0813204C: .4byte gUnknown_203B118 -_08132050: .4byte gUnknown_203B116 +_08132050: .4byte gUnknown_203B10C + 10 thumb_func_end sub_8132018 thumb_func_start sub_8132054 @@ -1321,7 +602,7 @@ sub_813226C: @ 813226C cmp r0, 0 bne _081322CC ldrb r0, [r2] - ldr r4, _081322AC @ =gUnknown_203B116 + ldr r4, _081322AC @ =gUnknown_203B10C + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl sub_810713C @@ -1335,7 +616,7 @@ sub_813226C: @ 813226C .align 2, 0 _081322A4: .4byte gTasks+0x8 _081322A8: .4byte gPaletteFade -_081322AC: .4byte gUnknown_203B116 +_081322AC: .4byte gUnknown_203B10C + 10 _081322B0: .4byte gUnknown_203B118 _081322B4: adds r0, r4, 0 @@ -1383,7 +664,7 @@ sub_81322D4: @ 81322D4 bl ListMenuHandleInput adds r5, r0, 0 ldrb r0, [r6] - ldr r4, _08132348 @ =gUnknown_203B116 + ldr r4, _08132348 @ =gUnknown_203B10C + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl get_coro_args_x18_x1A @@ -1407,7 +688,7 @@ sub_81322D4: @ 81322D4 .align 2, 0 _08132340: .4byte gTasks+0x8 _08132344: .4byte gPaletteFade -_08132348: .4byte gUnknown_203B116 +_08132348: .4byte gUnknown_203B10C + 10 _0813234C: .4byte gMain _08132350: .4byte gSpecialVar_ItemId _08132354: @@ -1911,7 +1192,7 @@ sub_8132780: @ 8132780 ldr r0, _081327F0 @ =gTasks+0x8 adds r5, r0 ldrb r0, [r5] - ldr r4, _081327F4 @ =gUnknown_203B116 + ldr r4, _081327F4 @ =gUnknown_203B10C + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl sub_810713C @@ -1947,7 +1228,7 @@ sub_8132780: @ 8132780 bx r0 .align 2, 0 _081327F0: .4byte gTasks+0x8 -_081327F4: .4byte gUnknown_203B116 +_081327F4: .4byte gUnknown_203B10C + 10 _081327F8: .4byte gUnknown_3005E70 thumb_func_end sub_8132780 @@ -2592,7 +1873,7 @@ sub_8132D34: @ 8132D34 bl sub_809C09C mov r3, r8 ldrb r0, [r3] - ldr r4, _08132E00 @ =gUnknown_203B116 + ldr r4, _08132E00 @ =gUnknown_203B10C + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl sub_810713C @@ -2634,7 +1915,7 @@ sub_8132D34: @ 8132D34 _08132DF4: .4byte gTasks+0x8 _08132DF8: .4byte gSpecialVar_ItemId _08132DFC: .4byte gSaveBlock1Ptr -_08132E00: .4byte gUnknown_203B116 +_08132E00: .4byte gUnknown_203B10C + 10 _08132E04: .4byte gUnknown_3005E70 _08132E08: .4byte sub_8132E0C thumb_func_end sub_8132D34 diff --git a/include/item.h b/include/item.h index 25177cb6e..37cc6ca70 100644 --- a/include/item.h +++ b/include/item.h @@ -28,6 +28,7 @@ struct BagPocket }; extern struct BagPocket gBagPockets[]; +extern struct BagPocket gUnknown_20398A4; void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity); void CopyItemName(u16 itemId, u8 *string); @@ -66,4 +67,7 @@ void CopyItemName(u16, u8 *); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); +void sub_809A5E4(struct BagPocket *); +u16 sub_809A798(u8 a0, u16 a1); + #endif // ITEM_H diff --git a/include/list_menu.h b/include/list_menu.h index 8834e5215..22be687be 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -48,6 +48,7 @@ struct ListMenu { }; extern struct ListMenuTemplate gUnknown_03006310; +extern struct ListMenuTemplate gUnknown_3005E70; // Exported ROM declarations diff --git a/include/menu_helpers.h b/include/menu_helpers.h index b193388e5..7bfd605c4 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -18,6 +18,9 @@ void sub_812225C(u16 *, u16 *, u8, u8); void sub_8122298(u16 *, u16 *, u8, u8, u8); void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data); bool8 sub_81221AC(void); +bool8 sub_80BF72C(void); bool8 sub_80BF708(void); +void sub_80BF768(void); +void sub_80BF7C8(void); #endif //GUARD_MENU_HELPERS_H diff --git a/ld_script.txt b/ld_script.txt index 1bd106cca..53575e49c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -229,6 +229,7 @@ SECTIONS { src/fame_checker.o(.text); src/menu2.o(.text); src/oak_speech.o(.text); + src/tm_case.o(.text); asm/tm_case.o(.text); asm/menu_indicators.o(.text); asm/pokedex_area_markers.o(.text); diff --git a/src/tm_case.c b/src/tm_case.c new file mode 100644 index 000000000..011af5d94 --- /dev/null +++ b/src/tm_case.c @@ -0,0 +1,368 @@ +#include "global.h" +#include "malloc.h" +#include "bg.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "palette.h" +#include "task.h" +#include "text.h" +#include "menu.h" +#include "menu_helpers.h" +#include "list_menu.h" +#include "item.h" +#include "string_util.h" +#include "party_menu.h" +#include "data2.h" +#include "scanline_effect.h" +#include "constants/items.h" + +struct UnkStruct_203B10C +{ + void (* unk_00)(void); + u8 unk_04; + u8 unk_05; + u8 unk_06; + u16 unk_08; + u16 unk_0a; +}; + +struct UnkStruct_203B118 +{ + u32 unk_00; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + u8 unk_08; + u8 filler_09[9]; + s16 unk_12; + u8 filler_14[8]; +}; + +struct UnkStruct_203B11C +{ + struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; + struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT]; + u16 unk_160; + u16 unk_162; +}; + +EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; +EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; +EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; +EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer +EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; +EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; +EWRAM_DATA u16 * gUnknown_203B12C = NULL; + +void sub_8131894(void); +bool8 sub_81318C0(void); +void sub_8131A8C(void); +void sub_8131AB8(void); +bool8 sub_8131B20(void); +void sub_8131C10(void); +void sub_8131C50(void); +void sub_8131D48(u8 * dest, u16 itemId); +void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); +void sub_8131E68(u8 windowId, s32 itemId, u8 y); +void sub_8132018(void); +void sub_81320BC(void); +void sub_8132120(void); +void sub_8132170(void); +void sub_81322D4(u8 taskId); +void sub_8132F20(u8 taskId); +void sub_8133244(void); +void sub_81333C4(void); +void sub_8133404(void); +u8 sub_813368C(u16 itemId); +void sub_81338A8(void); + +extern const struct BgTemplate gUnknown_8463134[3]; +extern const u32 gUnknown_8E845D8[]; +extern const u32 gUnknown_8E84A24[]; +extern const u32 gUnknown_8E84B70[]; +extern const u32 gUnknown_8E84CB0[]; +extern const u32 gUnknown_8E84D20[]; +extern const struct CompressedSpriteSheet gUnknown_8463218; + +extern const u8 gUnknown_84166DB[]; +extern const u8 gUnknown_84166FF[]; +extern const u8 gUnknown_8463178[]; +extern const u8 gUnknown_8416226[]; +extern const u8 gUnknown_846317C[]; +extern const u8 gUnknown_8416703[]; + +void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) +{ + sub_8131A8C(); + gUnknown_203B118 = Alloc(sizeof(struct UnkStruct_203B118)); + gUnknown_203B118->unk_00 = 0; + gUnknown_203B118->unk_08 = 0xFF; + gUnknown_203B118->unk_07 = 0xFF; + if (a0 != 5) + gUnknown_203B10C.unk_04 = a0; + if (a1 != NULL) + gUnknown_203B10C.unk_00 = a1; + if (a2 != 0xFF) + gUnknown_203B10C.unk_05 = a2; + gTextFlags.flag_2 = FALSE; + SetMainCallback2(sub_8131894); +} + +void sub_8131864(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +void sub_8131880(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8131894(void) +{ + while (1) + { + if (sub_80BF72C() == TRUE) + break; + if (sub_81318C0() == TRUE) + break; + if (sub_80BF708() == TRUE) + break; + } +} + +bool8 sub_81318C0(void) +{ + u8 taskId; + + switch (gMain.state) + { + case 0: + sub_80BF768(); + clear_scheduled_bg_copies_to_vram(); + gMain.state++; + break; + case 1: + ScanlineEffect_Stop(); + gMain.state++; + break; + case 2: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 3: + ResetPaletteFade(); + gMain.state++; + break; + case 4: + ResetSpriteData(); + gMain.state++; + break; + case 5: + ResetTasks(); + gMain.state++; + break; + case 6: + sub_8131AB8(); + gUnknown_203B118->unk_12 = 0; + gMain.state++; + break; + case 7: + sub_8133244(); + gMain.state++; + break; + case 8: + if (sub_8131B20()) + gMain.state++; + break; + case 9: + sub_809A5E4(&gUnknown_20398A4); + gMain.state++; + break; + case 10: + sub_81320BC(); + sub_8132120(); + sub_8132170(); + gMain.state++; + break; + case 11: + sub_8133404(); + gMain.state++; + break; + case 12: + sub_8131C10(); + sub_8131C50(); + gMain.state++; + break; + case 13: + sub_81333C4(); + gMain.state++; + break; + case 14: + if (gUnknown_203B10C.unk_04 == 4) + taskId = CreateTask(sub_8132F20, 0); + else + taskId = CreateTask(sub_81322D4, 0); + gTasks[taskId].data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + gMain.state++; + break; + case 15: + sub_8132018(); + gMain.state++; + break; + case 16: + gUnknown_203B118->unk_04 = sub_813368C(sub_809A798(POCKET_TM_CASE, gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08)); + gMain.state++; + break; + case 17: + BlendPalettes(0xFFFFFFFF, 16, 0); + gMain.state++; + break; + case 18: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gMain.state++; + break; + default: + SetVBlankCallback(sub_8131880); + SetMainCallback2(sub_8131864); + return TRUE; + } + + return FALSE; +} + +void sub_8131A8C(void) +{ + gUnknown_203B118 = NULL; + gUnknown_203B120 = NULL; + gUnknown_203B124 = NULL; + gUnknown_203B128 = NULL; + gUnknown_203B12C = NULL; +} + +void sub_8131AB8(void) +{ + void ** ptr; + sub_80BF7C8(); + ptr = &gUnknown_203B120; + *ptr = AllocZeroed(0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_8463134, NELEMS(gUnknown_8463134)); + SetBgTilemapBuffer(2, *ptr); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); +} + +bool8 sub_8131B20(void) +{ + switch (gUnknown_203B118->unk_12) + { + case 0: + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(1, gUnknown_8E845D8, 0, 0, 0); + gUnknown_203B118->unk_12++; + break; + case 1: + if (free_temp_tile_data_buffers_if_possible() != TRUE) + { + LZDecompressWram(gUnknown_8E84A24, gUnknown_203B120); + gUnknown_203B118->unk_12++; + } + break; + case 2: + LZDecompressWram(gUnknown_8E84B70, GetBgTilemapBuffer(1)); + gUnknown_203B118->unk_12++; + break; + case 3: + if (gSaveBlock2Ptr->playerGender == MALE) + LoadCompressedPalette(gUnknown_8E84CB0, 0, 0x80); + else + LoadCompressedPalette(gUnknown_8E84D20, 0, 0x80); + gUnknown_203B118->unk_12++; + break; + case 4: + LoadCompressedObjectPic(&gUnknown_8463218); + gUnknown_203B118->unk_12++; + break; + default: + sub_81338A8(); + gUnknown_203B118->unk_12 = 0; + return TRUE; + } + + return FALSE; +} + +void sub_8131C10(void) +{ + struct BagPocket * pocket = &gUnknown_20398A4; + gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); + gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); +} + +void sub_8131C50(void) +{ + struct BagPocket * pocket = &gUnknown_20398A4; + u16 i; + + for (i = 0; i < gUnknown_203B118->unk_06; i++) + { + sub_8131D48(gUnknown_203B128[i], pocket->itemSlots[i].itemId); + gUnknown_203B124[i].unk_00 = gUnknown_203B128[i]; + gUnknown_203B124[i].unk_04 = i; + } + gUnknown_203B124[i].unk_00 = gUnknown_84166DB; + gUnknown_203B124[i].unk_04 = -2; + gUnknown_3005E70.items = gUnknown_203B124; + gUnknown_3005E70.totalItems = gUnknown_203B118->unk_06 + 1; + gUnknown_3005E70.windowId = 0; + gUnknown_3005E70.header_X = 0; + gUnknown_3005E70.item_X = 8; + gUnknown_3005E70.cursor_X = 0; + gUnknown_3005E70.lettersSpacing = 0; + gUnknown_3005E70.itemVerticalPadding = 2; + gUnknown_3005E70.upText_Y = 2; + gUnknown_3005E70.maxShowed = gUnknown_203B118->unk_05; + gUnknown_3005E70.fontId = 2; + gUnknown_3005E70.cursorPal = 2; + gUnknown_3005E70.fillValue = 0; + gUnknown_3005E70.cursorShadowPal = 3; + gUnknown_3005E70.moveCursorFunc = sub_8131E18; + gUnknown_3005E70.itemPrintFunc = sub_8131E68; + gUnknown_3005E70.cursorKind = 0; + gUnknown_3005E70.scrollMultiple = 0; +} + +void sub_8131D48(u8 * dest, u16 itemId) +{ + StringCopy(gStringVar4, gUnknown_84166FF); + if (itemId >= ITEM_HM01) + { + StringAppend(gStringVar4, gUnknown_8463178); + StringAppend(gStringVar4, gUnknown_8416226); + ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_HM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 1); + StringAppend(gStringVar4, gStringVar1); + } + else + { + StringAppend(gStringVar4, gUnknown_8416226); + ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_TM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(gStringVar4, gStringVar1); + } + StringAppend(gStringVar4, gUnknown_846317C); + StringAppend(gStringVar4, gUnknown_8416703); + StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]); + StringCopy(dest, gStringVar4); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 36b7c991c..0d1a18e6d 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1511,30 +1511,7 @@ gUnknown_203B0EE: @ 203B0EE .include "src/fame_checker.o" .include "src/oak_speech.o" - -gUnknown_203B10C: @ 203B10C - .space 0xA - -gUnknown_203B116: @ 203B116 - .space 0x2 - -gUnknown_203B118: @ 203B118 - .space 0x4 - -gUnknown_203B11C: @ 203B11C - .space 0x4 - -gUnknown_203B120: @ 203B120 - .space 0x4 - -gUnknown_203B124: @ 203B124 - .space 0x4 - -gUnknown_203B128: @ 203B128 - .space 0x4 - -gUnknown_203B12C: @ 203B12C - .space 0x4 + .include "src/tm_case.o" gUnknown_203B130: @ 203B130 .space 0x10 From ef00905bd76a02a62ad0b69583b739c54599bd16 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 15:59:22 -0400 Subject: [PATCH 084/318] tm_case through sub_8132120 --- asm/berry_pouch.s | 8 +- asm/item.s | 54 ++--- asm/item_menu.s | 12 +- asm/tm_case.s | 451 ------------------------------------- include/item.h | 4 +- include/new_menu_helpers.h | 1 + src/tm_case.c | 162 ++++++++++++- sym_ewram.txt | 10 +- 8 files changed, 197 insertions(+), 505 deletions(-) diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 8b639487f..aa8a2ce78 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -573,7 +573,7 @@ sub_813D204: @ 813D204 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r0, _0813D280 @ =gUnknown_20398AC + ldr r0, _0813D280 @ =gBagPockets + 0x20 mov r8, r0 movs r6, 0 ldr r0, _0813D284 @ =gUnknown_203F36C @@ -633,7 +633,7 @@ _0813D254: adds r2, r1, 0 b _0813D2A6 .align 2, 0 -_0813D280: .4byte gUnknown_20398AC +_0813D280: .4byte gBagPockets + 0x20 _0813D284: .4byte gUnknown_203F36C _0813D288: .4byte gUnknown_203F380 _0813D28C: .4byte gUnknown_203F37C @@ -1441,7 +1441,7 @@ _0813D8A4: thumb_func_start sub_813D8AC sub_813D8AC: @ 813D8AC push {r4,lr} - ldr r4, _0813D904 @ =gUnknown_20398AC + ldr r4, _0813D904 @ =gBagPockets + 0x20 adds r0, r4, 0 bl sub_809A720 ldr r3, _0813D908 @ =gUnknown_203F36C @@ -1485,7 +1485,7 @@ _0813D8EE: adds r1, r0, 0 b _0813D916 .align 2, 0 -_0813D904: .4byte gUnknown_20398AC +_0813D904: .4byte gBagPockets + 0x20 _0813D908: .4byte gUnknown_203F36C _0813D90C: .4byte gUnknown_203F370 _0813D910: diff --git a/asm/item.s b/asm/item.s index 800df5f82..19e87ad10 100644 --- a/asm/item.s +++ b/asm/item.s @@ -61,7 +61,7 @@ ApplyNewEncryptionKeyToBagItems: @ 8099DE0 sub sp, 0x4 mov r8, r0 movs r1, 0 - ldr r0, _08099E34 @ =gUnknown_203988C + ldr r0, _08099E34 @ =gBagPockets mov r9, r0 _08099DF2: movs r6, 0 @@ -72,7 +72,7 @@ _08099DF2: ldrb r0, [r0, 0x4] cmp r6, r0 bcs _08099E20 - ldr r2, _08099E34 @ =gUnknown_203988C + ldr r2, _08099E34 @ =gBagPockets _08099E04: adds r4, r5, r2 lsls r1, r6, 2 @@ -99,7 +99,7 @@ _08099E20: pop {r0} bx r0 .align 2, 0 -_08099E34: .4byte gUnknown_203988C +_08099E34: .4byte gBagPockets thumb_func_end ApplyNewEncryptionKeyToBagItems thumb_func_start ApplyNewEncryptionKeyToBagItems_ @@ -112,7 +112,7 @@ ApplyNewEncryptionKeyToBagItems_: @ 8099E38 thumb_func_start sub_8099E44 sub_8099E44: @ 8099E44 - ldr r1, _08099E84 @ =gUnknown_203988C + ldr r1, _08099E84 @ =gBagPockets ldr r0, _08099E88 @ =gSaveBlock1Ptr ldr r2, [r0] movs r3, 0xC4 @@ -144,7 +144,7 @@ sub_8099E44: @ 8099E44 strb r0, [r1] bx lr .align 2, 0 -_08099E84: .4byte gUnknown_203988C +_08099E84: .4byte gBagPockets _08099E88: .4byte gSaveBlock1Ptr _08099E8C: .4byte 0x0000054c thumb_func_end sub_8099E44 @@ -184,7 +184,7 @@ sub_8099ECC: @ 8099ECC push {lr} lsls r0, 24 movs r2, 0 - ldr r1, _08099EF0 @ =gUnknown_203988C + ldr r1, _08099EF0 @ =gBagPockets lsrs r0, 21 adds r0, r1 ldrb r1, [r0, 0x4] @@ -201,7 +201,7 @@ _08099EE0: asrs r0, 24 b _08099F02 .align 2, 0 -_08099EF0: .4byte gUnknown_203988C +_08099EF0: .4byte gBagPockets _08099EF4: adds r0, r2, 0x1 lsls r0, 16 @@ -221,7 +221,7 @@ sub_8099F08: @ 8099F08 push {lr} lsls r0, 24 movs r2, 0 - ldr r1, _08099F2C @ =gUnknown_203988C + ldr r1, _08099F2C @ =gBagPockets lsrs r0, 21 subs r0, 0x8 adds r0, r1 @@ -238,7 +238,7 @@ _08099F1E: movs r0, 0x1 b _08099F3C .align 2, 0 -_08099F2C: .4byte gUnknown_203988C +_08099F2C: .4byte gBagPockets _08099F30: adds r0, r2, 0x1 lsls r0, 24 @@ -274,7 +274,7 @@ _08099F5C: subs r0, 0x1 lsls r0, 24 movs r2, 0 - ldr r1, _08099F94 @ =gUnknown_203988C + ldr r1, _08099F94 @ =gBagPockets lsrs r0, 21 adds r0, r1 ldrb r1, [r0, 0x4] @@ -296,7 +296,7 @@ _08099F76: bcs _08099F58 b _08099FA4 .align 2, 0 -_08099F94: .4byte gUnknown_203988C +_08099F94: .4byte gBagPockets _08099F98: adds r0, r2, 0x1 lsls r0, 24 @@ -378,7 +378,7 @@ CheckBagHasSpace: @ 809A000 lsls r0, 24 lsrs r5, r0, 24 movs r2, 0 - ldr r1, _0809A054 @ =gUnknown_203988C + ldr r1, _0809A054 @ =gBagPockets lsls r0, r5, 3 adds r0, r1 ldrb r1, [r0, 0x4] @@ -404,7 +404,7 @@ _0809A050: movs r0, 0 b _0809A07C .align 2, 0 -_0809A054: .4byte gUnknown_203988C +_0809A054: .4byte gBagPockets _0809A058: .4byte 0x000003e7 _0809A05C: adds r0, r2, 0x1 @@ -453,7 +453,7 @@ _0809A0A2: lsls r0, 24 lsrs r7, r0, 24 movs r2, 0 - ldr r1, _0809A0E0 @ =gUnknown_203988C + ldr r1, _0809A0E0 @ =gBagPockets lsls r0, r7, 3 adds r0, r1 ldrb r1, [r0, 0x4] @@ -478,7 +478,7 @@ _0809A0BE: ble _0809A1B8 b _0809A1CA .align 2, 0 -_0809A0E0: .4byte gUnknown_203988C +_0809A0E0: .4byte gBagPockets _0809A0E4: .4byte 0x000003e7 _0809A0E8: adds r0, r2, 0x1 @@ -506,7 +506,7 @@ _0809A0F4: negs r0, r0 cmp r1, r0 beq _0809A1CA - ldr r2, _0809A1AC @ =gUnknown_203988C + ldr r2, _0809A1AC @ =gBagPockets ldr r0, [r2, 0x8] lsls r1, 2 adds r0, r1, r0 @@ -534,7 +534,7 @@ _0809A132: negs r0, r0 cmp r1, r0 beq _0809A1CA - ldr r2, _0809A1AC @ =gUnknown_203988C + ldr r2, _0809A1AC @ =gBagPockets ldr r0, [r2, 0x8] lsls r1, 2 adds r0, r1, r0 @@ -561,7 +561,7 @@ _0809A180: negs r0, r0 cmp r2, r0 beq _0809A1CA - ldr r0, _0809A1AC @ =gUnknown_203988C + ldr r0, _0809A1AC @ =gBagPockets lsls r1, r7, 3 adds r1, r0 ldr r0, [r1] @@ -574,7 +574,7 @@ _0809A180: mov r1, r8 b _0809A1C2 .align 2, 0 -_0809A1AC: .4byte gUnknown_203988C +_0809A1AC: .4byte gBagPockets _0809A1B0: .4byte 0x0000016d _0809A1B4: .4byte 0x00000847 _0809A1B8: @@ -616,7 +616,7 @@ RemoveBagItem: @ 809A1D8 subs r0, 0x1 lsls r0, 24 movs r2, 0 - ldr r1, _0809A248 @ =gUnknown_203988C + ldr r1, _0809A248 @ =gBagPockets lsrs r0, 21 adds r0, r1 ldrb r1, [r0, 0x4] @@ -653,7 +653,7 @@ _0809A242: movs r0, 0x1 b _0809A25A .align 2, 0 -_0809A248: .4byte gUnknown_203988C +_0809A248: .4byte gBagPockets _0809A24C: adds r0, r2, 0x1 lsls r0, 24 @@ -745,7 +745,7 @@ _0809A2D8: .4byte gSaveBlock1Ptr sub_809A2DC: @ 809A2DC push {r4,r5,lr} movs r4, 0 - ldr r5, _0809A300 @ =gUnknown_203988C + ldr r5, _0809A300 @ =gBagPockets _0809A2E2: lsls r1, r4, 3 adds r1, r5 @@ -761,7 +761,7 @@ _0809A2E2: pop {r0} bx r0 .align 2, 0 -_0809A300: .4byte gUnknown_203988C +_0809A300: .4byte gBagPockets thumb_func_end sub_809A2DC thumb_func_start sub_809A304 @@ -1408,7 +1408,7 @@ _0809A786: sub_809A798: @ 809A798 lsls r0, 24 lsls r1, 16 - ldr r2, _0809A7B0 @ =gUnknown_203988C + ldr r2, _0809A7B0 @ =gBagPockets lsrs r0, 21 subs r0, 0x8 adds r0, r2 @@ -1418,7 +1418,7 @@ sub_809A798: @ 809A798 ldrh r0, [r1] bx lr .align 2, 0 -_0809A7B0: .4byte gUnknown_203988C +_0809A7B0: .4byte gBagPockets thumb_func_end sub_809A798 thumb_func_start sub_809A7B4 @@ -1426,7 +1426,7 @@ sub_809A7B4: @ 809A7B4 push {lr} lsls r0, 24 lsls r1, 16 - ldr r2, _0809A7D8 @ =gUnknown_203988C + ldr r2, _0809A7D8 @ =gBagPockets lsrs r0, 21 subs r0, 0x8 adds r0, r2 @@ -1440,7 +1440,7 @@ sub_809A7B4: @ 809A7B4 pop {r1} bx r1 .align 2, 0 -_0809A7D8: .4byte gUnknown_203988C +_0809A7D8: .4byte gBagPockets thumb_func_end sub_809A7B4 thumb_func_start sub_809A7DC diff --git a/asm/item_menu.s b/asm/item_menu.s index dcc74bafd..b9dc2669a 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -817,7 +817,7 @@ sub_810842C: @ 810842C lsls r0, 24 lsrs r7, r0, 24 lsls r1, r7, 3 - ldr r0, _0810853C @ =gUnknown_203988C + ldr r0, _0810853C @ =gBagPockets adds r1, r0 mov r8, r1 movs r6, 0 @@ -946,7 +946,7 @@ _0810848C: pop {r0} bx r0 .align 2, 0 -_0810853C: .4byte gUnknown_203988C +_0810853C: .4byte gBagPockets _08108540: .4byte gUnknown_203AD10 _08108544: .4byte gUnknown_203AD1C _08108548: .4byte gUnknown_203AD18 @@ -2065,7 +2065,7 @@ sub_8108DC8: @ 8108DC8 lsls r0, 24 lsrs r5, r0, 24 lsls r1, r5, 3 - ldr r0, _08108E3C @ =gUnknown_203988C + ldr r0, _08108E3C @ =gBagPockets adds r4, r1, r0 ldr r0, [r4] ldrb r1, [r4, 0x4] @@ -2120,7 +2120,7 @@ _08108E1C: strb r1, [r0] b _08108E4C .align 2, 0 -_08108E3C: .4byte gUnknown_203988C +_08108E3C: .4byte gBagPockets _08108E40: .4byte gUnknown_203AD10 _08108E44: adds r0, r1, 0 @@ -3063,7 +3063,7 @@ _081095DA: .align 2, 0 _081095E4: .4byte gTasks+0x8 _081095E8: - ldr r1, _0810966C @ =gUnknown_203988C + ldr r1, _0810966C @ =gBagPockets ldr r4, _08109670 @ =gUnknown_203ACFC ldrh r0, [r4, 0x6] lsls r0, 3 @@ -3125,7 +3125,7 @@ _0810965C: pop {r0} bx r0 .align 2, 0 -_0810966C: .4byte gUnknown_203988C +_0810966C: .4byte gBagPockets _08109670: .4byte gUnknown_203ACFC _08109674: .4byte gUnknown_3005E70 _08109678: .4byte sub_8108F0C diff --git a/asm/tm_case.s b/asm/tm_case.s index 28662fad3..8f25e43f6 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -5,457 +5,6 @@ .text - thumb_func_start sub_8131E18 -sub_8131E18: @ 8131E18 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - bne _08131E2C - movs r5, 0 - b _08131E3A -_08131E2C: - lsls r1, r4, 16 - lsrs r1, 16 - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r5, r0, 16 -_08131E3A: - cmp r6, 0x1 - beq _08131E50 - movs r0, 0x5 - bl PlaySE - ldr r0, _08131E64 @ =gUnknown_203B118 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - adds r1, r5, 0 - bl sub_81337E4 -_08131E50: - adds r0, r4, 0 - bl sub_8131F0C - adds r0, r5, 0 - bl sub_8133444 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08131E64: .4byte gUnknown_203B118 - thumb_func_end sub_8131E18 - - thumb_func_start sub_8131E68 -sub_8131E68: @ 8131E68 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r7, r9 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - mov r4, r8 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _08131EFE - lsls r0, r1, 16 - lsrs r6, r0, 16 - movs r0, 0x4 - adds r1, r6, 0 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl itemid_is_unique - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08131EF4 - ldr r4, _08131EE8 @ =gStringVar1 - movs r0, 0x4 - adds r1, r6, 0 - bl sub_809A7B4 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _08131EEC @ =gStringVar4 - ldr r1, _08131EF0 @ =gUnknown_84162B9 - adds r0, r4, 0 - bl StringExpandPlaceholders - mov r0, r8 - str r0, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - movs r0, 0x1 - str r0, [sp, 0x10] - mov r0, r9 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0x7E - bl sub_81332EC - b _08131EFE - .align 2, 0 -_08131EE8: .4byte gStringVar1 -_08131EEC: .4byte gStringVar4 -_08131EF0: .4byte gUnknown_84162B9 -_08131EF4: - adds r0, r7, 0 - movs r1, 0x8 - adds r2, r4, 0 - bl sub_81335B0 -_08131EFE: - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8131E68 - - thumb_func_start sub_8131F0C -sub_8131F0C: @ 8131F0C - push {r4,lr} - sub sp, 0x14 - adds r1, r0, 0 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _08131F30 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl ItemId_GetDescription - adds r4, r0, 0 - b _08131F32 -_08131F30: - ldr r4, _08131F60 @ =gUnknown_84166E1 -_08131F32: - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x3 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x1 - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0x2 - bl sub_81332EC - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08131F60: .4byte gUnknown_84166E1 - thumb_func_end sub_8131F0C - - thumb_func_start sub_8131F64 -sub_8131F64: @ 8131F64 - push {lr} - sub sp, 0x8 - movs r1, 0x8 - str r1, [sp] - lsls r0, 1 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0xC - movs r3, 0x1E - bl sub_80F6B08 - movs r0, 0x2 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_8131F64 - - thumb_func_start sub_8131F90 -sub_8131F90: @ 8131F90 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - bl ListMenuGetYCoordForPrintingArrowCursor - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_8131FB0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8131F90 - - thumb_func_start sub_8131FB0 -sub_8131FB0: @ 8131FB0 - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0xFF - bne _08131FF4 - movs r0, 0x2 - movs r1, 0 - bl GetFontAttribute - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - str r4, [sp] - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - adds r3, r5, 0 - bl FillWindowPixelRect - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - b _0813200A -_08131FF4: - ldr r2, _08132014 @ =gFameCheckerText_ListMenuCursor - str r5, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r1, [sp, 0x10] - movs r1, 0x2 - movs r3, 0 - bl sub_81332EC -_0813200A: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132014: .4byte gFameCheckerText_ListMenuCursor - thumb_func_end sub_8131FB0 - - thumb_func_start sub_8132018 -sub_8132018: @ 8132018 - push {r4,lr} - sub sp, 0x10 - ldr r4, _0813204C @ =gUnknown_203B118 - ldr r1, [r4] - ldrb r0, [r1, 0x6] - ldrb r1, [r1, 0x5] - subs r0, r1 - adds r0, 0x1 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - ldr r0, _08132050 @ =gUnknown_203B10C + 10 - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0xA0 - movs r2, 0x8 - movs r3, 0x58 - bl AddScrollIndicatorArrowPairParametrized - ldr r1, [r4] - strb r0, [r1, 0x8] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813204C: .4byte gUnknown_203B118 -_08132050: .4byte gUnknown_203B10C + 10 - thumb_func_end sub_8132018 - - thumb_func_start sub_8132054 -sub_8132054: @ 8132054 - push {r4,lr} - sub sp, 0x10 - ldr r4, _08132088 @ =gUnknown_203B118 - ldr r1, [r4] - movs r0, 0x1 - strh r0, [r1, 0xA] - movs r0, 0x2 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r1, 0xA - str r1, [sp, 0xC] - movs r0, 0x2 - movs r1, 0x98 - movs r2, 0x48 - movs r3, 0x68 - bl AddScrollIndicatorArrowPairParametrized - ldr r1, [r4] - strb r0, [r1, 0x8] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132088: .4byte gUnknown_203B118 - thumb_func_end sub_8132054 - - thumb_func_start sub_813208C -sub_813208C: @ 813208C - push {r4,lr} - ldr r4, _081320A8 @ =gUnknown_203B118 - ldr r1, [r4] - ldrb r0, [r1, 0x8] - cmp r0, 0xFF - beq _081320A2 - bl RemoveScrollIndicatorArrowPair - ldr r1, [r4] - movs r0, 0xFF - strb r0, [r1, 0x8] -_081320A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081320A8: .4byte gUnknown_203B118 - thumb_func_end sub_813208C - - thumb_func_start sub_81320AC -sub_81320AC: @ 81320AC - ldr r1, _081320B8 @ =gUnknown_203B10C - movs r0, 0 - strh r0, [r1, 0x8] - strh r0, [r1, 0xA] - bx lr - .align 2, 0 -_081320B8: .4byte gUnknown_203B10C - thumb_func_end sub_81320AC - - thumb_func_start sub_81320BC -sub_81320BC: @ 81320BC - push {r4,lr} - ldr r4, _08132118 @ =gUnknown_20398A4 - ldr r0, [r4] - ldrb r1, [r4, 0x4] - bl sub_809A584 - ldr r3, _0813211C @ =gUnknown_203B118 - ldr r1, [r3] - movs r0, 0 - strb r0, [r1, 0x6] - movs r2, 0 - ldrb r0, [r4, 0x4] - cmp r2, r0 - bcs _08132100 - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _08132100 -_081320E0: - ldr r0, [r3] - ldrb r1, [r0, 0x6] - adds r1, 0x1 - strb r1, [r0, 0x6] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldrb r0, [r4, 0x4] - cmp r2, r0 - bcs _08132100 - ldr r0, [r4] - lsls r1, r2, 2 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _081320E0 -_08132100: - ldr r0, _0813211C @ =gUnknown_203B118 - ldr r1, [r0] - ldrb r0, [r1, 0x6] - adds r0, 0x1 - cmp r0, 0x5 - ble _0813210E - movs r0, 0x5 -_0813210E: - strb r0, [r1, 0x5] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132118: .4byte gUnknown_20398A4 -_0813211C: .4byte gUnknown_203B118 - thumb_func_end sub_81320BC - - thumb_func_start sub_8132120 -sub_8132120: @ 8132120 - push {r4,r5,lr} - ldr r0, _08132160 @ =gUnknown_203B10C - ldrh r1, [r0, 0xA] - adds r4, r0, 0 - ldr r5, _08132164 @ =gUnknown_203B118 - cmp r1, 0 - beq _08132144 - ldrh r0, [r4, 0xA] - ldr r1, [r5] - ldrb r3, [r1, 0x5] - adds r0, r3 - ldrb r2, [r1, 0x6] - adds r1, r2, 0x1 - cmp r0, r1 - ble _08132144 - subs r0, r3, 0x1 - subs r0, r2, r0 - strh r0, [r4, 0xA] -_08132144: - adds r3, r4, 0 - ldrh r0, [r3, 0xA] - ldrh r1, [r3, 0x8] - adds r0, r1 - ldr r1, [r5] - ldrb r1, [r1, 0x6] - adds r2, r1, 0x1 - cmp r0, r2 - blt _0813216A - cmp r2, 0x1 - bgt _08132168 - movs r0, 0 - strh r0, [r3, 0x8] - b _0813216A - .align 2, 0 -_08132160: .4byte gUnknown_203B10C -_08132164: .4byte gUnknown_203B118 -_08132168: - strh r1, [r4, 0x8] -_0813216A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8132120 - thumb_func_start sub_8132170 sub_8132170: @ 8132170 push {r4-r6,lr} diff --git a/include/item.h b/include/item.h index 37cc6ca70..9aea7dc86 100644 --- a/include/item.h +++ b/include/item.h @@ -28,7 +28,6 @@ struct BagPocket }; extern struct BagPocket gBagPockets[]; -extern struct BagPocket gUnknown_20398A4; void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity); void CopyItemName(u16 itemId, u8 *string); @@ -69,5 +68,8 @@ bool8 AddBagItem(u16 itemId, u16 amount); void sub_809A5E4(struct BagPocket *); u16 sub_809A798(u8 a0, u16 a1); +u16 sub_809A7B4(u8 a0, u16 a1); +bool8 itemid_is_unique(u16 itemId); +void sub_809A584(struct ItemSlot * slots, u8 capacity); #endif // ITEM_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index fe8b5b754..55537f21c 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -29,5 +29,6 @@ void ResetBg0(void); void Menu_LoadStdPalAt(u16); void * malloc_and_decompress(const void * src, u32 * size); u16 sub_80F796C(void); +void sub_80F6B08(u8 bgId, u8 value, u8 height, u8 width, u8 x, u8 y); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/src/tm_case.c b/src/tm_case.c index 011af5d94..60f9c5bcb 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -8,13 +8,17 @@ #include "text.h" #include "menu.h" #include "menu_helpers.h" +#include "new_menu_helpers.h" #include "list_menu.h" #include "item.h" #include "string_util.h" #include "party_menu.h" #include "data2.h" #include "scanline_effect.h" +#include "sound.h" +#include "menu_indicators.h" #include "constants/items.h" +#include "constants/songs.h" struct UnkStruct_203B10C { @@ -34,7 +38,8 @@ struct UnkStruct_203B118 u8 unk_06; u8 unk_07; u8 unk_08; - u8 filler_09[9]; + u16 unk_0a; + u8 filler_0c[6]; s16 unk_12; u8 filler_14[8]; }; @@ -65,6 +70,8 @@ void sub_8131C50(void); void sub_8131D48(u8 * dest, u16 itemId); void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); void sub_8131E68(u8 windowId, s32 itemId, u8 y); +void sub_8131F0C(s32 itemIndex); +void sub_8131FB0(u8 a0, u8 a1); void sub_8132018(void); void sub_81320BC(void); void sub_8132120(void); @@ -72,9 +79,13 @@ void sub_8132170(void); void sub_81322D4(u8 taskId); void sub_8132F20(u8 taskId); void sub_8133244(void); +void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); void sub_81333C4(void); void sub_8133404(void); +void sub_8133444(u16 itemId); +void sub_81335B0(u8 windowId, u8 x, u8 y); u8 sub_813368C(u16 itemId); +void sub_81337E4(u8 a0, u16 itemId); void sub_81338A8(void); extern const struct BgTemplate gUnknown_8463134[3]; @@ -84,12 +95,15 @@ extern const u32 gUnknown_8E84B70[]; extern const u32 gUnknown_8E84CB0[]; extern const u32 gUnknown_8E84D20[]; extern const struct CompressedSpriteSheet gUnknown_8463218; - -extern const u8 gUnknown_84166DB[]; -extern const u8 gUnknown_84166FF[]; extern const u8 gUnknown_8463178[]; -extern const u8 gUnknown_8416226[]; extern const u8 gUnknown_846317C[]; + +extern const u8 gUnknown_8416226[]; +extern const u8 gFameCheckerText_ListMenuCursor[]; +extern const u8 gUnknown_84162B9[]; +extern const u8 gUnknown_84166DB[]; +extern const u8 gUnknown_84166E1[]; +extern const u8 gUnknown_84166FF[]; extern const u8 gUnknown_8416703[]; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) @@ -183,7 +197,7 @@ bool8 sub_81318C0(void) gMain.state++; break; case 9: - sub_809A5E4(&gUnknown_20398A4); + sub_809A5E4(&gBagPockets[POCKET_TM_CASE - 1]); gMain.state++; break; case 10: @@ -307,14 +321,14 @@ bool8 sub_8131B20(void) void sub_8131C10(void) { - struct BagPocket * pocket = &gUnknown_20398A4; + struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); } void sub_8131C50(void) { - struct BagPocket * pocket = &gUnknown_20398A4; + struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; for (i = 0; i < gUnknown_203B118->unk_06; i++) @@ -366,3 +380,135 @@ void sub_8131D48(u8 * dest, u16 itemId) StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]); StringCopy(dest, gStringVar4); } + +void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + u16 itemId; + + if (itemIndex == -2) + itemId = 0; + else + itemId = sub_809A798(POCKET_TM_CASE, itemIndex); + + if (onInit != TRUE) + { + PlaySE(SE_SELECT); + sub_81337E4(gUnknown_203B118->unk_04, itemId); + } + sub_8131F0C(itemIndex); + sub_8133444(itemId); +} + +void sub_8131E68(u8 windowId, s32 itemId, u8 y) +{ + if (itemId != -2) + { + if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, itemId))) + { + ConvertIntToDecimalStringN(gStringVar1, sub_809A7B4(POCKET_TM_CASE, itemId), STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); + sub_81332EC(windowId, 0, gStringVar4, 0x7E, y, 0, 0, 0xFF, 1); + } + else + { + sub_81335B0(windowId, 8, y); + } + } +} + +void sub_8131F0C(s32 itemIndex) +{ + const u8 * str; + if (itemIndex != -2) + { + str = ItemId_GetDescription(sub_809A798(POCKET_TM_CASE, itemIndex)); + } + else + { + str = gUnknown_84166E1; + } + FillWindowPixelBuffer(1, 0); + sub_81332EC(1, 2, str, 2, 3, 1, 0, 0, 0); +} + +void sub_8131F64(s32 a0) +{ + sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1); + schedule_bg_copy_tilemap_to_vram(2); +} + +void sub_8131F90(u8 a0, u8 a1) +{ + sub_8131FB0(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); +} + +void sub_8131FB0(u8 a0, u8 a1) +{ + if (a1 == 0xFF) + { + FillWindowPixelRect(0, 0, 0, a0, GetFontAttribute(2, 0), GetFontAttribute(2, 1)); + CopyWindowToVram(0, 2); + } + else + { + sub_81332EC(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1); + } +} + +void sub_8132018(void) +{ + gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, gUnknown_203B118->unk_06 - gUnknown_203B118->unk_05 + 1, 0x6E, 0x6E, &gUnknown_203B10C.unk_0a); +} + +void sub_8132054(void) +{ + gUnknown_203B118->unk_0a = 1; + gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gUnknown_203B118->unk_0a); +} + +void sub_813208C(void) +{ + if (gUnknown_203B118->unk_08 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_203B118->unk_08); + gUnknown_203B118->unk_08 = 0xFF; + } +} + +void sub_81320AC(void) +{ + gUnknown_203B10C.unk_08 = 0; + gUnknown_203B10C.unk_0a = 0; +} + +void sub_81320BC(void) +{ + struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; + u16 i; + + sub_809A584(pocket->itemSlots, pocket->capacity); + gUnknown_203B118->unk_06 = 0; + for (i = 0; i < pocket->capacity; i++) + { + if (pocket->itemSlots[i].itemId == ITEM_NONE) + break; + gUnknown_203B118->unk_06++; + } + gUnknown_203B118->unk_05 = min(gUnknown_203B118->unk_06 + 1, 5); +} + +void sub_8132120(void) +{ + if (gUnknown_203B10C.unk_0a != 0) + { + if (gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 > gUnknown_203B118->unk_06 + 1) + gUnknown_203B10C.unk_0a = gUnknown_203B118->unk_06 + 1 - gUnknown_203B118->unk_05; + } + if (gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08 >= gUnknown_203B118->unk_06 + 1) + { + if (gUnknown_203B118->unk_06 + 1 < 2) + gUnknown_203B10C.unk_08 = 0; + else + gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06; + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 0d1a18e6d..4cfb317c0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -971,14 +971,8 @@ gUnknown_2039884: @ 2039884 gUnknown_2039888: @ 2039888 .space 0x4 -gUnknown_203988C: @ 203988C - .space 0x18 - -gUnknown_20398A4: @ 20398A4 - .space 0x8 - -gUnknown_20398AC: @ 20398AC - .space 0x8 +gBagPockets: @ 203988C + .space 0x28 gUnknown_20398B4: @ 20398B4 .space 0x4 From ae4e94dd73deef0165801917b63fa8fb3e74b242 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 16:39:07 -0400 Subject: [PATCH 085/318] tm_case through sub_813226C --- asm/tm_case.s | 178 -------------------------------------------- include/list_menu.h | 2 +- src/fame_checker.c | 2 +- src/tm_case.c | 55 +++++++++++++- 4 files changed, 56 insertions(+), 181 deletions(-) diff --git a/asm/tm_case.s b/asm/tm_case.s index 8f25e43f6..b675019ab 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -5,184 +5,6 @@ .text - thumb_func_start sub_8132170 -sub_8132170: @ 8132170 - push {r4-r6,lr} - ldr r0, _081321CC @ =gUnknown_203B10C - ldrh r1, [r0, 0x8] - adds r6, r0, 0 - cmp r1, 0x3 - bls _081321C4 - movs r4, 0 - ldrh r0, [r6, 0x8] - subs r0, 0x3 - cmp r4, r0 - bgt _081321C4 - ldrh r1, [r6, 0xA] - ldr r5, _081321D0 @ =gUnknown_203B118 - ldr r2, [r5] - ldrb r0, [r2, 0x5] - adds r1, r0 - ldrb r0, [r2, 0x6] - adds r0, 0x1 - cmp r1, r0 - beq _081321C4 - adds r3, r6, 0 -_0813219A: - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r0, [r3, 0x8] - subs r0, 0x3 - cmp r4, r0 - bgt _081321C4 - ldrh r1, [r6, 0xA] - ldr r2, [r5] - ldrb r0, [r2, 0x5] - adds r1, r0 - ldrb r0, [r2, 0x6] - adds r0, 0x1 - cmp r1, r0 - bne _0813219A -_081321C4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081321CC: .4byte gUnknown_203B10C -_081321D0: .4byte gUnknown_203B118 - thumb_func_end sub_8132170 - - thumb_func_start sub_81321D4 -sub_81321D4: @ 81321D4 - push {lr} - ldr r0, _0813221C @ =gUnknown_203B118 - ldr r0, [r0] - cmp r0, 0 - beq _081321E2 - bl Free -_081321E2: - ldr r0, _08132220 @ =gUnknown_203B120 - ldr r0, [r0] - cmp r0, 0 - beq _081321EE - bl Free -_081321EE: - ldr r0, _08132224 @ =gUnknown_203B124 - ldr r0, [r0] - cmp r0, 0 - beq _081321FA - bl Free -_081321FA: - ldr r0, _08132228 @ =gUnknown_203B128 - ldr r0, [r0] - cmp r0, 0 - beq _08132206 - bl Free -_08132206: - ldr r0, _0813222C @ =gUnknown_203B12C - ldr r0, [r0] - cmp r0, 0 - beq _08132212 - bl Free -_08132212: - bl FreeAllWindowBuffers - pop {r0} - bx r0 - .align 2, 0 -_0813221C: .4byte gUnknown_203B118 -_08132220: .4byte gUnknown_203B120 -_08132224: .4byte gUnknown_203B124 -_08132228: .4byte gUnknown_203B128 -_0813222C: .4byte gUnknown_203B12C - thumb_func_end sub_81321D4 - - thumb_func_start sub_8132230 -sub_8132230: @ 8132230 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08132264 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08132268 @ =sub_813226C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132264: .4byte gTasks -_08132268: .4byte sub_813226C - thumb_func_end sub_8132230 - - thumb_func_start sub_813226C -sub_813226C: @ 813226C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _081322A4 @ =gTasks+0x8 - adds r2, r0, r1 - ldr r0, _081322A8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081322CC - ldrb r0, [r2] - ldr r4, _081322AC @ =gUnknown_203B10C + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl sub_810713C - ldr r0, _081322B0 @ =gUnknown_203B118 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _081322B4 - bl SetMainCallback2 - b _081322BE - .align 2, 0 -_081322A4: .4byte gTasks+0x8 -_081322A8: .4byte gPaletteFade -_081322AC: .4byte gUnknown_203B10C + 10 -_081322B0: .4byte gUnknown_203B118 -_081322B4: - adds r0, r4, 0 - subs r0, 0xA - ldr r0, [r0] - bl SetMainCallback2 -_081322BE: - bl sub_813208C - bl sub_81321D4 - adds r0, r5, 0 - bl DestroyTask -_081322CC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813226C - thumb_func_start sub_81322D4 sub_81322D4: @ 81322D4 push {r4-r7,lr} diff --git a/include/list_menu.h b/include/list_menu.h index 22be687be..56106610d 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -56,7 +56,7 @@ u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2); s32 ListMenuHandleInput(u8 id); void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); -void sub_810713C(u8, u8, u8); +void sub_810713C(u8, u16 *, u16 *); u16 ListMenuGetYCoordForPrintingArrowCursor(u8); #endif //GUARD_LIST_MENU_H diff --git a/src/fame_checker.c b/src/fame_checker.c index 29b888a32..e98795909 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -853,7 +853,7 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) FreeQuestionMarkSpriteResources(); FreeListMenuSelectorArrowPairResources(); SetMainCallback2(sFameCheckerData->savedCallback); - sub_810713C(sFameCheckerData->listMenuTaskId, 0, 0); + sub_810713C(sFameCheckerData->listMenuTaskId, NULL, NULL); Free(sBg3TilemapBuffer); Free(sBg1TilemapBuffer); Free(sBg2TilemapBuffer); diff --git a/src/tm_case.c b/src/tm_case.c index 60f9c5bcb..bc91de20f 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -32,7 +32,7 @@ struct UnkStruct_203B10C struct UnkStruct_203B118 { - u32 unk_00; + void (* unk_00)(void); u8 unk_04; u8 unk_05; u8 unk_06; @@ -76,6 +76,7 @@ void sub_8132018(void); void sub_81320BC(void); void sub_8132120(void); void sub_8132170(void); +void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); void sub_8132F20(u8 taskId); void sub_8133244(void); @@ -512,3 +513,55 @@ void sub_8132120(void) gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06; } } + +void sub_8132170(void) +{ + u8 i; + if (gUnknown_203B10C.unk_08 > 3) + { + for (i = 0; i <= gUnknown_203B10C.unk_08 - 3 && gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 != gUnknown_203B118->unk_06 + 1; i++) + { + do {} while (0); + gUnknown_203B10C.unk_08--; + gUnknown_203B10C.unk_0a++; + } + } +} + +void sub_81321D4(void) +{ + if (gUnknown_203B118 != NULL) + Free(gUnknown_203B118); + if (gUnknown_203B120 != NULL) + Free(gUnknown_203B120); + if (gUnknown_203B124 != NULL) + Free(gUnknown_203B124); + if (gUnknown_203B128 != NULL) + Free(gUnknown_203B128); + if (gUnknown_203B12C != NULL) + Free(gUnknown_203B12C); + FreeAllWindowBuffers(); +} + +void sub_8132230(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_813226C; +} + +void sub_813226C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + if (gUnknown_203B118->unk_00 != NULL) + SetMainCallback2(gUnknown_203B118->unk_00); + else + SetMainCallback2(gUnknown_203B10C.unk_00); + sub_813208C(); + sub_81321D4(); + DestroyTask(taskId); + } +} From 584bdbe5b57b28fbb06c1e49235f12f7de8c79ed Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 18:42:50 -0400 Subject: [PATCH 086/318] tm_case through sub_8132F20 --- asm/tm_case.s | 1442 ------------------------------ include/menu.h | 2 + include/menu_helpers.h | 2 + include/money.h | 3 +- include/party_menu.h | 6 + include/pokemon_storage_system.h | 1 + include/shop.h | 1 + include/teachy_tv.h | 6 + src/tm_case.c | 502 ++++++++++- 9 files changed, 510 insertions(+), 1455 deletions(-) create mode 100644 include/teachy_tv.h diff --git a/asm/tm_case.s b/asm/tm_case.s index b675019ab..94ae0db6c 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -5,1448 +5,6 @@ .text - thumb_func_start sub_81322D4 -sub_81322D4: @ 81322D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _08132340 @ =gTasks+0x8 - adds r6, r0, r1 - ldr r0, _08132344 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0 - bne _081323C8 - bl sub_80BF72C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081323C8 - ldrb r0, [r6] - bl ListMenuHandleInput - adds r5, r0, 0 - ldrb r0, [r6] - ldr r4, _08132348 @ =gUnknown_203B10C + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl get_coro_args_x18_x1A - ldr r0, _0813234C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08132354 - adds r0, r4, 0 - subs r0, 0xA - ldrb r0, [r0, 0x5] - cmp r0, 0x1 - bne _08132354 - movs r0, 0x5 - bl PlaySE - ldr r0, _08132350 @ =gSpecialVar_ItemId - mov r1, r8 - strh r1, [r0] - b _08132370 - .align 2, 0 -_08132340: .4byte gTasks+0x8 -_08132344: .4byte gPaletteFade -_08132348: .4byte gUnknown_203B10C + 10 -_0813234C: .4byte gMain -_08132350: .4byte gSpecialVar_ItemId -_08132354: - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _08132364 - adds r0, 0x1 - cmp r5, r0 - bne _0813237C - b _081323C8 -_08132364: - movs r0, 0x5 - bl PlaySE - ldr r1, _08132378 @ =gSpecialVar_ItemId - movs r0, 0 - strh r0, [r1] -_08132370: - adds r0, r7, 0 - bl sub_8132230 - b _081323C8 - .align 2, 0 -_08132378: .4byte gSpecialVar_ItemId -_0813237C: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_8131F64 - bl sub_813208C - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8131F90 - strh r5, [r6, 0x2] - lsls r4, r5, 16 - lsrs r4, 16 - movs r0, 0x4 - adds r1, r4, 0 - bl sub_809A7B4 - strh r0, [r6, 0x4] - movs r0, 0x4 - adds r1, r4, 0 - bl sub_809A798 - ldr r1, _081323D4 @ =gSpecialVar_ItemId - strh r0, [r1] - ldr r0, _081323D8 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldr r2, _081323DC @ =gUnknown_8463140 - ldr r0, _081323E0 @ =gUnknown_203B10C - ldrb r0, [r0, 0x4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] -_081323C8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081323D4: .4byte gSpecialVar_ItemId -_081323D8: .4byte gTasks -_081323DC: .4byte gUnknown_8463140 -_081323E0: .4byte gUnknown_203B10C - thumb_func_end sub_81322D4 - - thumb_func_start sub_81323E4 -sub_81323E4: @ 81323E4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - bl sub_8131F64 - bl sub_8132018 - ldr r1, _0813240C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08132410 @ =sub_81322D4 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813240C: .4byte gTasks -_08132410: .4byte sub_81322D4 - thumb_func_end sub_81323E4 - - thumb_func_start sub_8132414 -sub_8132414: @ 8132414 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x2 - bl sub_8133368 - bl sub_80BF708 - lsls r0, 24 - cmp r0, 0 - bne _08132454 - bl InUnionRoom - cmp r0, 0x1 - beq _08132454 - ldr r4, _0813244C @ =gUnknown_203B118 - ldr r0, [r4] - adds r0, 0x7 - movs r1, 0 - bl sub_8133630 - ldr r1, [r4] - ldr r0, _08132450 @ =gUnknown_8463168 - str r0, [r1, 0xC] - movs r0, 0x3 - b _08132468 - .align 2, 0 -_0813244C: .4byte gUnknown_203B118 -_08132450: .4byte gUnknown_8463168 -_08132454: - ldr r4, _0813254C @ =gUnknown_203B118 - ldr r0, [r4] - adds r0, 0x7 - movs r1, 0x1 - bl sub_8133630 - ldr r1, [r4] - ldr r0, _08132550 @ =gUnknown_846316B - str r0, [r1, 0xC] - movs r0, 0x2 -_08132468: - strb r0, [r1, 0x10] - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - ldr r6, _0813254C @ =gUnknown_203B118 - ldr r1, [r6] - ldrb r2, [r1, 0x7] - movs r5, 0 - str r5, [sp] - str r0, [sp, 0x4] - ldrb r0, [r1, 0x10] - str r0, [sp, 0x8] - ldr r0, _08132554 @ =gUnknown_8463150 - str r0, [sp, 0xC] - ldr r0, [r1, 0xC] - str r0, [sp, 0x10] - adds r0, r2, 0 - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0x2 - bl AddItemMenuActionTextPrinters - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r6] - ldrb r2, [r1, 0x7] - str r0, [sp] - ldrb r0, [r1, 0x10] - str r0, [sp, 0x4] - str r5, [sp, 0x8] - adds r0, r2, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl ProgramAndPlaceMenuCursorOnWindow - movs r0, 0x80 - lsls r0, 1 - bl Alloc - adds r4, r0, 0 - ldr r6, _08132558 @ =gSpecialVar_ItemId - ldrh r1, [r6] - bl sub_8131D48 - ldr r1, _0813255C @ =gUnknown_8416301 - adds r0, r4, 0 - bl StringAppend - movs r0, 0x2 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - str r5, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x2 - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0 - bl sub_81332EC - adds r0, r4, 0 - bl Free - ldrh r0, [r6] - bl itemid_is_unique - lsls r0, 24 - cmp r0, 0 - beq _08132528 - movs r0, 0x2 - movs r1, 0 - movs r2, 0x2 - bl sub_81335B0 - movs r0, 0x2 - movs r1, 0x2 - bl CopyWindowToVram -_08132528: - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - ldr r0, _08132560 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _08132564 @ =sub_8132568 - str r0, [r1] - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813254C: .4byte gUnknown_203B118 -_08132550: .4byte gUnknown_846316B -_08132554: .4byte gUnknown_8463150 -_08132558: .4byte gSpecialVar_ItemId -_0813255C: .4byte gUnknown_8416301 -_08132560: .4byte gTasks -_08132564: .4byte sub_8132568 - thumb_func_end sub_8132414 - - thumb_func_start sub_8132568 -sub_8132568: @ 8132568 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl sub_80BF72C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081325E0 - bl ProcessMenuInputNoWrapAround - lsls r0, 24 - asrs r4, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _081325E0 - adds r0, 0x1 - cmp r4, r0 - bne _081325C0 - movs r0, 0x5 - bl PlaySE - ldr r2, _081325B8 @ =gUnknown_8463150 - ldr r0, _081325BC @ =gUnknown_203B118 - ldr r1, [r0] - ldrb r0, [r1, 0x10] - ldr r1, [r1, 0xC] - adds r0, r1 - subs r0, 0x1 - ldrb r0, [r0] - lsls r0, 3 - adds r2, 0x4 - adds r0, r2 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - b _081325E0 - .align 2, 0 -_081325B8: .4byte gUnknown_8463150 -_081325BC: .4byte gUnknown_203B118 -_081325C0: - movs r0, 0x5 - bl PlaySE - ldr r1, _081325E8 @ =gUnknown_8463150 - ldr r0, _081325EC @ =gUnknown_203B118 - ldr r0, [r0] - ldr r0, [r0, 0xC] - adds r0, r4 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 -_081325E0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081325E8: .4byte gUnknown_8463150 -_081325EC: .4byte gUnknown_203B118 - thumb_func_end sub_8132568 - - thumb_func_start sub_81325F0 -sub_81325F0: @ 81325F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _08132634 @ =gUnknown_203B118 - ldr r0, [r5] - adds r0, 0x7 - bl sub_8133664 - movs r0, 0x2 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x2 - bl ClearWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _08132638 - adds r0, r4, 0 - bl sub_81326F8 - b _0813264A - .align 2, 0 -_08132634: .4byte gUnknown_203B118 -_08132638: - ldr r1, _08132650 @ =gUnknown_3005E98 - ldr r0, _08132654 @ =sub_8125B40 - str r0, [r1] - ldr r1, [r5] - ldr r0, _08132658 @ =sub_8124C8C - str r0, [r1] - adds r0, r4, 0 - bl sub_8132230 -_0813264A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132650: .4byte gUnknown_3005E98 -_08132654: .4byte sub_8125B40 -_08132658: .4byte sub_8124C8C - thumb_func_end sub_81325F0 - - thumb_func_start sub_813265C -sub_813265C: @ 813265C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _081326D0 @ =gTasks+0x8 - adds r0, r1 - ldrh r1, [r0, 0x2] - movs r0, 0x4 - bl sub_809A798 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r6, _081326D4 @ =gUnknown_203B118 - ldr r0, [r6] - adds r0, 0x7 - bl sub_8133664 - movs r0, 0x2 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x2 - bl ClearWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r4, 0 - bl itemid_is_unique - lsls r0, 24 - cmp r0, 0 - bne _081326EC - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _081326D8 - adds r0, r5, 0 - bl sub_81326F8 - b _081326F2 - .align 2, 0 -_081326D0: .4byte gTasks+0x8 -_081326D4: .4byte gUnknown_203B118 -_081326D8: - ldr r1, [r6] - ldr r0, _081326E8 @ =sub_8126EDC - str r0, [r1] - adds r0, r5, 0 - bl sub_8132230 - b _081326F2 - .align 2, 0 -_081326E8: .4byte sub_8126EDC -_081326EC: - adds r0, r5, 0 - bl sub_8132714 -_081326F2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_813265C - - thumb_func_start sub_81326F8 -sub_81326F8: @ 81326F8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813270C @ =gUnknown_841632A - ldr r3, _08132710 @ =sub_8132758 - movs r1, 0x2 - bl sub_813337C - pop {r0} - bx r0 - .align 2, 0 -_0813270C: .4byte gUnknown_841632A -_08132710: .4byte sub_8132758 - thumb_func_end sub_81326F8 - - thumb_func_start sub_8132714 -sub_8132714: @ 8132714 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08132744 @ =gSpecialVar_ItemId - ldrh r0, [r0] - ldr r1, _08132748 @ =gStringVar1 - bl CopyItemName - ldr r5, _0813274C @ =gStringVar4 - ldr r1, _08132750 @ =gUnknown_841635E - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r3, _08132754 @ =sub_8132758 - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r5, 0 - bl sub_813337C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132744: .4byte gSpecialVar_ItemId -_08132748: .4byte gStringVar1 -_0813274C: .4byte gStringVar4 -_08132750: .4byte gUnknown_841635E -_08132754: .4byte sub_8132758 - thumb_func_end sub_8132714 - - thumb_func_start sub_8132758 -sub_8132758: @ 8132758 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813277C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08132776 - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_8132780 -_08132776: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813277C: .4byte gMain - thumb_func_end sub_8132758 - - thumb_func_start sub_8132780 -sub_8132780: @ 8132780 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - ldr r0, _081327F0 @ =gTasks+0x8 - adds r5, r0 - ldrb r0, [r5] - ldr r4, _081327F4 @ =gUnknown_203B10C + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl sub_810713C - ldr r0, _081327F8 @ =gUnknown_3005E70 - subs r4, 0xA - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0x8] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r1, 0x1 - bl sub_8131F90 - movs r0, 0x6 - movs r1, 0 - bl sub_810F260 - movs r0, 0x6 - bl ClearWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r6, 0 - bl sub_81323E4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081327F0: .4byte gTasks+0x8 -_081327F4: .4byte gUnknown_203B10C + 10 -_081327F8: .4byte gUnknown_3005E70 - thumb_func_end sub_8132780 - - thumb_func_start sub_81327FC -sub_81327FC: @ 81327FC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _08132860 @ =gTasks+0x8 - adds r4, r0 - ldr r0, _08132864 @ =gUnknown_203B118 - ldr r0, [r0] - adds r0, 0x7 - bl sub_8133664 - movs r0, 0x2 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x2 - bl ClearWindowTilemap - movs r0, 0 - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8131F90 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r5, 0 - bl sub_81323E4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132860: .4byte gTasks+0x8 -_08132864: .4byte gUnknown_203B118 - thumb_func_end sub_81327FC - - thumb_func_start sub_8132868 -sub_8132868: @ 8132868 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _081328A0 @ =gTasks+0x8 - adds r0, r1 - ldrh r1, [r0, 0x2] - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl itemid_is_unique - lsls r0, 24 - cmp r0, 0 - bne _081328AC - ldr r0, _081328A4 @ =gUnknown_203B118 - ldr r1, [r0] - ldr r0, _081328A8 @ =c2_8123744 - str r0, [r1] - adds r0, r4, 0 - bl sub_8132230 - b _081328B2 - .align 2, 0 -_081328A0: .4byte gTasks+0x8 -_081328A4: .4byte gUnknown_203B118 -_081328A8: .4byte c2_8123744 -_081328AC: - adds r0, r4, 0 - bl sub_8132714 -_081328B2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8132868 - - thumb_func_start sub_81328B8 -sub_81328B8: @ 81328B8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _081328F0 @ =gTasks+0x8 - adds r0, r1 - ldrh r1, [r0, 0x2] - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl itemid_is_unique - lsls r0, 24 - cmp r0, 0 - bne _081328FC - ldr r0, _081328F4 @ =gUnknown_203B118 - ldr r1, [r0] - ldr r0, _081328F8 @ =sub_808CE60 - str r0, [r1] - adds r0, r4, 0 - bl sub_8132230 - b _08132902 - .align 2, 0 -_081328F0: .4byte gTasks+0x8 -_081328F4: .4byte gUnknown_203B118 -_081328F8: .4byte sub_808CE60 -_081328FC: - adds r0, r4, 0 - bl sub_8132714 -_08132902: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81328B8 - - thumb_func_start sub_8132908 -sub_8132908: @ 8132908 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08132950 @ =gTasks+0x8 - adds r4, r0, r1 - ldr r6, _08132954 @ =gSpecialVar_ItemId - ldrh r0, [r6] - bl itemid_get_market_price - lsls r0, 16 - cmp r0, 0 - bne _08132968 - ldrh r0, [r6] - ldr r1, _08132958 @ =gStringVar1 - bl CopyItemName - ldr r4, _0813295C @ =gStringVar4 - ldr r1, _08132960 @ =gUnknown_84168F1 - adds r0, r4, 0 - bl StringExpandPlaceholders - bl sub_80BF8E4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _08132964 @ =sub_8132780 - adds r0, r5, 0 - adds r2, r4, 0 - bl sub_813337C - b _081329AE - .align 2, 0 -_08132950: .4byte gTasks+0x8 -_08132954: .4byte gSpecialVar_ItemId -_08132958: .4byte gStringVar1 -_0813295C: .4byte gStringVar4 -_08132960: .4byte gUnknown_84168F1 -_08132964: .4byte sub_8132780 -_08132968: - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08132980 - bl sub_81335E0 - adds r0, r5, 0 - bl sub_81329C4 - b _081329AE -_08132980: - cmp r0, 0x63 - ble _08132988 - movs r0, 0x63 - strh r0, [r4, 0x4] -_08132988: - ldrh r0, [r6] - ldr r1, _081329B4 @ =gStringVar1 - bl CopyItemName - ldr r4, _081329B8 @ =gStringVar4 - ldr r1, _081329BC @ =gUnknown_8416911 - adds r0, r4, 0 - bl StringExpandPlaceholders - bl sub_80BF8E4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _081329C0 @ =sub_8132AAC - adds r0, r7, 0 - adds r2, r4, 0 - bl sub_813337C -_081329AE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081329B4: .4byte gStringVar1 -_081329B8: .4byte gStringVar4 -_081329BC: .4byte gUnknown_8416911 -_081329C0: .4byte sub_8132AAC - thumb_func_end sub_8132908 - - thumb_func_start sub_81329C4 -sub_81329C4: @ 81329C4 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _08132A20 @ =gTasks+0x8 - adds r4, r0 - ldr r6, _08132A24 @ =gStringVar3 - ldrh r1, [r4, 0x2] - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - movs r2, 0x10 - ldrsh r1, [r4, r2] - muls r1, r0 - adds r0, r6, 0 - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - ldr r4, _08132A28 @ =gStringVar4 - ldr r1, _08132A2C @ =gUnknown_8416936 - adds r0, r4, 0 - bl StringExpandPlaceholders - bl sub_80BF8E4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _08132A30 @ =sub_8132A34 - adds r0, r5, 0 - adds r2, r4, 0 - bl sub_813337C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08132A20: .4byte gTasks+0x8 -_08132A24: .4byte gStringVar3 -_08132A28: .4byte gStringVar4 -_08132A2C: .4byte gUnknown_8416936 -_08132A30: .4byte sub_8132A34 - thumb_func_end sub_81329C4 - - thumb_func_start sub_8132A34 -sub_8132A34: @ 8132A34 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08132A44 @ =gUnknown_8463170 - bl sub_8133604 - pop {r0} - bx r0 - .align 2, 0 -_08132A44: .4byte gUnknown_8463170 - thumb_func_end sub_8132A34 - - thumb_func_start sub_8132A48 -sub_8132A48: @ 8132A48 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _08132AA8 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0x8 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x6 - movs r1, 0 - bl sub_810F260 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x3 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8131F90 - adds r0, r5, 0 - bl sub_81323E4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08132AA8: .4byte gTasks+0x8 - thumb_func_end sub_8132A48 - - thumb_func_start sub_8132AAC -sub_8132AAC: @ 8132AAC - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r6, _08132B48 @ =gTasks+0x8 - adds r0, r4, r6 - mov r8, r0 - movs r0, 0x7 - bl sub_8133354 - ldr r0, _08132B4C @ =gStringVar1 - movs r1, 0x1 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r5, _08132B50 @ =gStringVar4 - ldr r1, _08132B54 @ =gUnknown_84162B9 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0xA - str r0, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r1, [sp, 0x10] - movs r0, 0x7 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0x4 - bl sub_81332EC - mov r2, r8 - ldrh r1, [r2, 0x2] - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - mov r3, r8 - movs r2, 0x10 - ldrsh r1, [r3, r2] - muls r1, r0 - movs r0, 0x1 - bl sub_8132B5C - bl sub_81335E0 - bl sub_8132054 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - subs r6, 0x8 - adds r4, r6 - ldr r0, _08132B58 @ =sub_8132BC8 - str r0, [r4] - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08132B48: .4byte gTasks+0x8 -_08132B4C: .4byte gStringVar1 -_08132B50: .4byte gStringVar4 -_08132B54: .4byte gUnknown_84162B9 -_08132B58: .4byte sub_8132BC8 - thumb_func_end sub_8132AAC - - thumb_func_start sub_8132B5C -sub_8132B5C: @ 8132B5C - push {r4-r6,lr} - sub sp, 0x14 - adds r4, r0, 0 - adds r6, r1, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x7 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, _08132BBC @ =gStringVar1 - lsls r4, 16 - asrs r4, 16 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r5, _08132BC0 @ =gStringVar4 - ldr r1, _08132BC4 @ =gUnknown_84162B9 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0xA - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - str r4, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x7 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0x4 - bl sub_81332EC - str r4, [sp] - movs r0, 0x7 - movs r1, 0x38 - movs r2, 0xA - adds r3, r6, 0 - bl PrintMoneyAmount - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08132BBC: .4byte gStringVar1 -_08132BC0: .4byte gStringVar4 -_08132BC4: .4byte gUnknown_84162B9 - thumb_func_end sub_8132B5C - - thumb_func_start sub_8132BC8 -sub_8132BC8: @ 8132BC8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08132C14 @ =gTasks+0x8 - adds r5, r0, r1 - adds r0, r5, 0 - adds r0, 0x10 - ldrh r1, [r5, 0x4] - bl sub_80BF848 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08132C18 - movs r0, 0x10 - ldrsh r4, [r5, r0] - ldrh r1, [r5, 0x2] - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - movs r2, 0x10 - ldrsh r1, [r5, r2] - muls r1, r0 - adds r0, r4, 0 - bl sub_8132B5C - b _08132CA6 - .align 2, 0 -_08132C14: .4byte gTasks+0x8 -_08132C18: - ldr r0, _08132C4C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08132C50 - movs r0, 0x5 - bl PlaySE - movs r0, 0x7 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - bl sub_813208C - adds r0, r4, 0 - bl sub_81329C4 - b _08132CA6 - .align 2, 0 -_08132C4C: .4byte gMain -_08132C50: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08132CA6 - movs r0, 0x5 - bl PlaySE - movs r0, 0x7 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x8 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x6 - movs r1, 0 - bl sub_810F260 - movs r0, 0x3 - bl PutWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - bl sub_813208C - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8131F90 - adds r0, r6, 0 - bl sub_81323E4 -_08132CA6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8132BC8 - - thumb_func_start sub_8132CAC -sub_8132CAC: @ 8132CAC - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _08132D18 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - ldr r0, _08132D1C @ =gSpecialVar_ItemId - ldrh r0, [r0] - ldr r1, _08132D20 @ =gStringVar1 - bl CopyItemName - ldr r6, _08132D24 @ =gStringVar3 - ldrh r1, [r4, 0x2] - movs r0, 0x4 - bl sub_809A798 - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - movs r2, 0x10 - ldrsh r1, [r4, r2] - muls r1, r0 - adds r0, r6, 0 - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - ldr r4, _08132D28 @ =gStringVar4 - ldr r1, _08132D2C @ =gUnknown_8416959 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r3, _08132D30 @ =sub_8132D34 - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl sub_813337C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08132D18: .4byte gTasks+0x8 -_08132D1C: .4byte gSpecialVar_ItemId -_08132D20: .4byte gStringVar1 -_08132D24: .4byte gStringVar3 -_08132D28: .4byte gStringVar4 -_08132D2C: .4byte gUnknown_8416959 -_08132D30: .4byte sub_8132D34 - thumb_func_end sub_8132CAC - - thumb_func_start sub_8132D34 -sub_8132D34: @ 8132D34 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - lsls r6, r0, 2 - adds r6, r0 - lsls r6, 3 - ldr r0, _08132DF4 @ =gTasks+0x8 - mov r9, r0 - adds r1, r6, 0 - add r1, r9 - mov r8, r1 - movs r0, 0xF8 - bl PlaySE - ldr r5, _08132DF8 @ =gSpecialVar_ItemId - ldrh r0, [r5] - mov r2, r8 - ldrh r1, [r2, 0x10] - bl RemoveBagItem - ldr r7, _08132DFC @ =gSaveBlock1Ptr - ldr r4, [r7] - movs r3, 0xA4 - lsls r3, 2 - mov r10, r3 - add r4, r10 - ldrh r0, [r5] - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - mov r2, r8 - movs r3, 0x10 - ldrsh r1, [r2, r3] - muls r1, r0 - adds r0, r4, 0 - bl AddMoney - ldrh r0, [r5] - mov r2, r8 - ldrh r1, [r2, 0x10] - movs r2, 0x2 - bl sub_809C09C - mov r3, r8 - ldrb r0, [r3] - ldr r4, _08132E00 @ =gUnknown_203B10C + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl sub_810713C - bl sub_81320BC - bl sub_8132120 - bl sub_8131C50 - ldr r0, _08132E04 @ =gUnknown_3005E70 - subs r4, 0xA - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0x8] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - mov r1, r8 - strh r0, [r1] - movs r1, 0x2 - bl sub_8131F90 - ldr r0, [r7] - add r0, r10 - bl GetMoney - adds r1, r0, 0 - movs r0, 0x8 - movs r2, 0 - bl PrintMoneyAmountInMoneyBox - movs r2, 0x8 - negs r2, r2 - add r9, r2 - add r6, r9 - ldr r0, _08132E08 @ =sub_8132E0C - str r0, [r6] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08132DF4: .4byte gTasks+0x8 -_08132DF8: .4byte gSpecialVar_ItemId -_08132DFC: .4byte gSaveBlock1Ptr -_08132E00: .4byte gUnknown_203B10C + 10 -_08132E04: .4byte gUnknown_3005E70 -_08132E08: .4byte sub_8132E0C - thumb_func_end sub_8132D34 - - thumb_func_start sub_8132E0C -sub_8132E0C: @ 8132E0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08132E60 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08132E26 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08132E5A -_08132E26: - movs r0, 0x5 - bl PlaySE - movs r0, 0x8 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x6 - movs r1, 0 - bl sub_810F260 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x3 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - adds r0, r4, 0 - bl sub_8132780 -_08132E5A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132E60: .4byte gMain - thumb_func_end sub_8132E0C - - thumb_func_start sub_8132E64 -sub_8132E64: @ 8132E64 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r4, _08132EFC @ =gUnknown_203B11C - movs r0, 0xB2 - lsls r0, 1 - bl AllocZeroed - str r0, [r4] - ldr r5, _08132F00 @ =gSaveBlock1Ptr - ldr r1, [r5] - ldr r2, _08132F04 @ =0x00000464 - mov r8, r2 - add r1, r8 - movs r2, 0xE8 - bl memcpy - ldr r0, [r4] - adds r0, 0xE8 - ldr r1, [r5] - movs r6, 0xEE - lsls r6, 2 - adds r1, r6 - movs r2, 0x78 - bl memcpy - ldr r3, [r4] - ldr r2, _08132F08 @ =gUnknown_203B10C - ldrh r1, [r2, 0x8] - movs r4, 0xB0 - lsls r4, 1 - adds r0, r3, r4 - strh r1, [r0] - ldrh r0, [r2, 0xA] - movs r2, 0xB1 - lsls r2, 1 - adds r1, r3, r2 - strh r0, [r1] - ldr r0, [r5] - add r0, r8 - movs r1, 0x3A - bl ClearItemSlots - ldr r0, [r5] - adds r0, r6 - movs r1, 0x1E - bl ClearItemSlots - bl sub_81320AC - ldr r0, _08132F0C @ =0x00000121 - movs r1, 0x1 - bl AddBagItem - ldr r0, _08132F10 @ =0x00000123 - movs r1, 0x1 - bl AddBagItem - ldr r0, _08132F14 @ =0x00000129 - movs r1, 0x1 - bl AddBagItem - ldr r0, _08132F18 @ =0x00000143 - movs r1, 0x1 - bl AddBagItem - ldr r1, _08132F1C @ =sub_815ABFC - movs r0, 0x4 - movs r2, 0 - bl sub_81317F8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08132EFC: .4byte gUnknown_203B11C -_08132F00: .4byte gSaveBlock1Ptr -_08132F04: .4byte 0x00000464 -_08132F08: .4byte gUnknown_203B10C -_08132F0C: .4byte 0x00000121 -_08132F10: .4byte 0x00000123 -_08132F14: .4byte 0x00000129 -_08132F18: .4byte 0x00000143 -_08132F1C: .4byte sub_815ABFC - thumb_func_end sub_8132E64 - - thumb_func_start sub_8132F20 -sub_8132F20: @ 8132F20 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r3, r1, 3 - ldr r4, _08132F54 @ =gTasks+0x8 - adds r2, r3, r4 - ldr r0, _08132F58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08132F4E - strh r0, [r2, 0x10] - strh r0, [r2, 0x12] - adds r0, r4, 0 - subs r0, 0x8 - adds r0, r3, r0 - ldr r1, _08132F5C @ =sub_8132F60 - str r1, [r0] -_08132F4E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08132F54: .4byte gTasks+0x8 -_08132F58: .4byte gPaletteFade -_08132F5C: .4byte sub_8132F60 - thumb_func_end sub_8132F20 - thumb_func_start sub_8132F60 sub_8132F60: @ 8132F60 push {r4-r7,lr} diff --git a/include/menu.h b/include/menu.h index f26c7efde..4a5bd8a2c 100644 --- a/include/menu.h +++ b/include/menu.h @@ -48,5 +48,7 @@ void sub_810FF60(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8); void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); bool8 IsBlendTaskActive(void); +void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8); +void sub_810F260(u8 windowId, u8 a1); #endif // GUARD_MENU_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 7bfd605c4..aba8b1c0d 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -22,5 +22,7 @@ bool8 sub_80BF72C(void); bool8 sub_80BF708(void); void sub_80BF768(void); void sub_80BF7C8(void); +u8 sub_80BF8E4(void); +u8 sub_80BF848(s16 * a0, u16 a1); #endif //GUARD_MENU_HELPERS_H diff --git a/include/money.h b/include/money.h index fa63e321c..25db1b157 100644 --- a/include/money.h +++ b/include/money.h @@ -11,12 +11,13 @@ void RemoveMoney(u32* moneyPtr, u32 toSub); bool8 IsEnoughForCostInVar0x8005(void); void SubtractMoneyFromVar0x8005(void); void PrintMoneyAmountInMoneyBoxInMoneyBox(u8 windowId, int amount, u8 speed); -void PrintMoneyAmountInMoneyBox(u8 windowId, u8 x, u8 y, int amount, u8 speed); +void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed); void PrintMoneyAmountInMoneyBoxInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount); void ChangeAmountInMoneyBox(int amount); void DrawMoneyBox(int amount, u8 x, u8 y); void HideMoneyBox(void); void AddMoneyLabelObject(u16 x, u16 y); void RemoveMoneyLabelObject(void); +void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed); #endif // GUARD_MONEY_H diff --git a/include/party_menu.h b/include/party_menu.h index 2e83c1496..5f7a3a68e 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -12,10 +12,16 @@ enum { AILMENT_BRN }; +extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func); + bool8 MonKnowsMove(struct Pokemon *, u16); void sub_81B58A8(void); void DoWallyTutorialBagMenu(void); u8 pokemon_ailments_get_primary(u32 status); u16 ItemIdToBattleMoveId(u16 itemId); +void sub_8125B40(u8 taskId, TaskFunc func); +void sub_8124C8C(void); +void sub_8126EDC(void); +void c2_8123744(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 897c5a42e..f2fbe85a7 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -13,5 +13,6 @@ void CompactPartySlots(void); u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); +void sub_808CE60(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/shop.h b/include/shop.h index 1046a590a..05f5160e6 100644 --- a/include/shop.h +++ b/include/shop.h @@ -8,5 +8,6 @@ extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; void CreatePokemartMenu(const u16 *); void CreateDecorationShop1Menu(const u16 *); void CreateDecorationShop2Menu(const u16 *); +void sub_809C09C(u16, u16, u8); #endif // GUARD_SHOP_H diff --git a/include/teachy_tv.h b/include/teachy_tv.h new file mode 100644 index 000000000..3eeaa3a98 --- /dev/null +++ b/include/teachy_tv.h @@ -0,0 +1,6 @@ +#ifndef GUARD_TEACHY_TV_H +#define GUARD_TEACHY_TV_H + +void sub_815ABFC(void); + +#endif //GUARD_TEACHY_TV_H diff --git a/src/tm_case.c b/src/tm_case.c index bc91de20f..b63260aaf 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -11,6 +11,12 @@ #include "new_menu_helpers.h" #include "list_menu.h" #include "item.h" +#include "item_menu.h" +#include "link.h" +#include "money.h" +#include "shop.h" +#include "teachy_tv.h" +#include "pokemon_storage_system.h" #include "string_util.h" #include "party_menu.h" #include "data2.h" @@ -39,7 +45,8 @@ struct UnkStruct_203B118 u8 unk_07; u8 unk_08; u16 unk_0a; - u8 filler_0c[6]; + const u8 * unk_0c; + u8 unk_10; s16 unk_12; u8 filler_14[8]; }; @@ -78,34 +85,70 @@ void sub_8132120(void); void sub_8132170(void); void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); +void sub_8132568(u8 taskId); +void sub_81326F8(u8 taskId); +void sub_8132714(u8 taskId); +void sub_8132758(u8 taskId); +void sub_8132780(u8 taskId); +void sub_81329C4(u8 taskId); +void sub_8132A34(u8 taskId); +void sub_8132AAC(u8 taskId); +void sub_8132B5C(s16 quantity, s32 value); +void sub_8132BC8(u8 taskId); +void sub_8132D34(u8 taskId); +void sub_8132E0C(u8 taskId); void sub_8132F20(u8 taskId); +void sub_8132F60(u8 taskId); void sub_8133244(void); void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +void sub_8133354(u8 windowId); +void sub_8133368(u8 windowId); +void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); void sub_81333C4(void); void sub_8133404(void); void sub_8133444(u16 itemId); void sub_81335B0(u8 windowId, u8 x, u8 y); +void sub_81335E0(void); +void sub_8133604(u8 taskId, const u8 *const *ptrs); +u8 sub_8133630(u8 * a0, u8 a1); +void sub_8133664(u8 * a0); u8 sub_813368C(u16 itemId); void sub_81337E4(u8 a0, u16 itemId); void sub_81338A8(void); +// event scripts +extern const u8 gUnknown_8416226[]; +extern const u8 gFameCheckerText_ListMenuCursor[]; +extern const u8 gUnknown_84162B9[]; +extern const u8 gUnknown_8416301[]; +extern const u8 gUnknown_841632A[]; +extern const u8 gUnknown_841635E[]; +extern const u8 gUnknown_84166DB[]; +extern const u8 gUnknown_84166E1[]; +extern const u8 gUnknown_84166FF[]; +extern const u8 gUnknown_8416703[]; +extern const u8 gUnknown_84168F1[]; +extern const u8 gUnknown_8416911[]; +extern const u8 gUnknown_8416936[]; +extern const u8 gUnknown_8416959[]; + +// my rodata extern const struct BgTemplate gUnknown_8463134[3]; +extern void (*const gUnknown_8463140[])(u8 taskId); +extern const struct MenuAction gUnknown_8463150[]; +extern const u8 gUnknown_8463168[]; +extern const u8 gUnknown_846316B[]; +extern const u8 *const gUnknown_8463170[]; +extern const u8 gUnknown_8463178[]; +extern const u8 gUnknown_846317C[]; +extern const struct CompressedSpriteSheet gUnknown_8463218; + +// graphics extern const u32 gUnknown_8E845D8[]; extern const u32 gUnknown_8E84A24[]; extern const u32 gUnknown_8E84B70[]; extern const u32 gUnknown_8E84CB0[]; extern const u32 gUnknown_8E84D20[]; -extern const struct CompressedSpriteSheet gUnknown_8463218; -extern const u8 gUnknown_8463178[]; -extern const u8 gUnknown_846317C[]; - -extern const u8 gUnknown_8416226[]; -extern const u8 gFameCheckerText_ListMenuCursor[]; -extern const u8 gUnknown_84162B9[]; -extern const u8 gUnknown_84166DB[]; -extern const u8 gUnknown_84166E1[]; -extern const u8 gUnknown_84166FF[]; -extern const u8 gUnknown_8416703[]; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) { @@ -565,3 +608,438 @@ void sub_813226C(u8 taskId) DestroyTask(taskId); } } + +void sub_81322D4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s32 input; + + if (!gPaletteFade.active) + { + if (sub_80BF72C() != TRUE) + { + input = ListMenuHandleInput(data[0]); + get_coro_args_x18_x1A(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + if (JOY_NEW(SELECT_BUTTON) && gUnknown_203B10C.unk_05 == 1) + { + PlaySE(SE_SELECT); + gSpecialVar_ItemId = ITEM_NONE; + sub_8132230(taskId); + } + else + { + switch (input) + { + case -1: + break; + case -2: + PlaySE(SE_SELECT); + gSpecialVar_ItemId = 0; + sub_8132230(taskId); + break; + default: + PlaySE(SE_SELECT); + sub_8131F64(1); + sub_813208C(); + sub_8131F90(data[0], 2); + data[1] = input; + data[2] = sub_809A7B4(POCKET_TM_CASE, input); + gSpecialVar_ItemId = sub_809A798(POCKET_TM_CASE, input); + gTasks[taskId].func = gUnknown_8463140[gUnknown_203B10C.unk_04]; + break; + } + } + } + } +} + +void sub_81323E4(u8 taskId) +{ + sub_8131F64(0); + sub_8132018(); + gTasks[taskId].func = sub_81322D4; +} + +void sub_8132414(u8 taskId) +{ + u8 * strbuf; + sub_8133368(2); + if (!sub_80BF708() && InUnionRoom() != TRUE) + { + sub_8133630(&gUnknown_203B118->unk_07, 0); + gUnknown_203B118->unk_0c = gUnknown_8463168; + gUnknown_203B118->unk_10 = 3; + } + else + { + sub_8133630(&gUnknown_203B118->unk_07, 1); + gUnknown_203B118->unk_0c = gUnknown_846316B; + gUnknown_203B118->unk_10 = 2; + } + AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c); + ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0); + strbuf = Alloc(256); + sub_8131D48(strbuf, gSpecialVar_ItemId); + StringAppend(strbuf, gUnknown_8416301); + sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1); + Free(strbuf); + if (itemid_is_unique(gSpecialVar_ItemId)) + { + sub_81335B0(2, 0, 2); + CopyWindowToVram(2, 2); + } + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + gTasks[taskId].func = sub_8132568; +} + +void sub_8132568(u8 taskId) +{ + s8 input; + + if (sub_80BF72C() != TRUE) + { + input = ProcessMenuInputNoWrapAround(); + switch (input) + { + case -1: + PlaySE(SE_SELECT); + gUnknown_8463150[gUnknown_203B118->unk_0c[gUnknown_203B118->unk_10 - 1]].func.void_u8(taskId); + break; + case -2: + break; + default: + PlaySE(SE_SELECT); + gUnknown_8463150[gUnknown_203B118->unk_0c[input]].func.void_u8(taskId); + break; + } + } +} + +void sub_81325F0(u8 taskId) +{ + sub_8133664(&gUnknown_203B118->unk_07); + sub_810F4D8(2, 0); + ClearWindowTilemap(2); + PutWindowTilemap(0); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + if (CalculatePlayerPartyCount() == 0) + { + sub_81326F8(taskId); + } + else + { + gUnknown_3005E98 = sub_8125B40; + gUnknown_203B118->unk_00 = sub_8124C8C; + sub_8132230(taskId); + } +} + +void sub_813265C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]); + sub_8133664(&gUnknown_203B118->unk_07); + sub_810F4D8(2, 0); + ClearWindowTilemap(2); + PutWindowTilemap(1); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + if (!itemid_is_unique(itemId)) + { + if (CalculatePlayerPartyCount() == 0) + { + sub_81326F8(taskId); + } + else + { + gUnknown_203B118->unk_00 = sub_8126EDC; + sub_8132230(taskId); + } + } + else + { + sub_8132714(taskId); + } +} + +void sub_81326F8(u8 taskId) +{ + sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758); +} + +void sub_8132714(u8 taskId) +{ + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_841635E); + sub_813337C(taskId, 2, gStringVar4, sub_8132758); +} + +void sub_8132758(u8 taskId) +{ + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_8132780(taskId); + } +} + +void sub_8132780(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + sub_8131F90(data[0], 1); + sub_810F260(6, 0); + ClearWindowTilemap(6); + PutWindowTilemap(1); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_81323E4(taskId); +} + +void sub_81327FC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_8133664(&gUnknown_203B118->unk_07); + sub_810F4D8(2, 0); + ClearWindowTilemap(2); + PutWindowTilemap(0); + sub_8131F90(data[0], 1); + PutWindowTilemap(1); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_81323E4(taskId); +} + +void sub_8132868(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + { + gUnknown_203B118->unk_00 = c2_8123744; + sub_8132230(taskId); + } + else + { + sub_8132714(taskId); + } +} + +void sub_81328B8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + { + gUnknown_203B118->unk_00 = sub_808CE60; + sub_8132230(taskId); + } + else + { + sub_8132714(taskId); + } +} + +void sub_8132908(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (itemid_get_market_price(gSpecialVar_ItemId) == 0) + { + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_84168F1); + sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); + } + else + { + data[8] = 1; + if (data[2] == 1) + { + sub_81335E0(); + sub_81329C4(taskId); + } + else + { + if (data[2] > 99) + data[2] = 99; + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_8416911); + sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132AAC); + } + } +} + +void sub_81329C4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gUnknown_8416936); + sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34); +} + +void sub_8132A34(u8 taskId) +{ + sub_8133604(taskId, gUnknown_8463170); +} + +void sub_8132A48(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_810F4D8(8, 0); + sub_810F260(6, 0); + PutWindowTilemap(0); + PutWindowTilemap(1); + PutWindowTilemap(3); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_8131F90(data[0], 1); + sub_81323E4(taskId); +} + +void sub_8132AAC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_8133354(7); + ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); + sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + sub_8132B5C(1, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); + sub_81335E0(); + sub_8132054(); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + gTasks[taskId].func = sub_8132BC8; +} + +void sub_8132B5C(s16 quantity, s32 amount) +{ + FillWindowPixelBuffer(7, 0x11); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); + sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); +} + +void sub_8132BC8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (sub_80BF848(&data[8], data[2]) == 1) + { + sub_8132B5C(data[8], itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); + } + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F4D8(7, 0); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_813208C(); + sub_81329C4(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F4D8(7, 0); + sub_810F4D8(8, 0); + sub_810F260(6, 0); + PutWindowTilemap(3); + PutWindowTilemap(0); + PutWindowTilemap(1); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_813208C(); + sub_8131F90(data[0], 1); + sub_81323E4(taskId); + } +} + +void sub_8132CAC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + PutWindowTilemap(0); + schedule_bg_copy_tilemap_to_vram(0); + CopyItemName(gSpecialVar_ItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gUnknown_8416959); + sub_813337C(taskId, 2, gStringVar4, sub_8132D34); +} + +void sub_8132D34(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + PlaySE(0xF8); + RemoveBagItem(gSpecialVar_ItemId, data[8]); + AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); + sub_809C09C(gSpecialVar_ItemId, data[8], 2); + sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + sub_81320BC(); + sub_8132120(); + sub_8131C50(); + data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + sub_8131F90(data[0], 2); + PrintMoneyAmountInMoneyBox(8, GetMoney(&gSaveBlock1Ptr->money), 0); + gTasks[taskId].func = sub_8132E0C; +} + +void sub_8132E0C(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F4D8(8, 0); + sub_810F260(6, 0); + PutWindowTilemap(1); + PutWindowTilemap(3); + PutWindowTilemap(4); + PutWindowTilemap(5); + sub_8132780(taskId); + } +} + +void sub_8132E64(void) +{ + gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C)); + memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(gUnknown_203B11C->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + gUnknown_203B11C->unk_160 = gUnknown_203B10C.unk_08; + gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a; + ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM)); + ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems)); + sub_81320AC(); + AddBagItem(ITEM_TM01, 1); + AddBagItem(ITEM_TM03, 1); + AddBagItem(ITEM_TM09, 1); + AddBagItem(ITEM_TM35, 1); + sub_81317F8(4, sub_815ABFC, 0); +} + +void sub_8132F20(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + data[8] = 0; + data[9] = 0; + gTasks[taskId].func = sub_8132F60; + } +} From c95740ab85fbec74cbfb844f33e56bf879fee8c9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 19:11:11 -0400 Subject: [PATCH 087/318] tm_case sub_8132F60 --- asm/tm_case.s | 331 -------------------------------------------- include/item_menu.h | 1 + include/teachy_tv.h | 1 + src/tm_case.c | 131 ++++++++++++++++++ 4 files changed, 133 insertions(+), 331 deletions(-) diff --git a/asm/tm_case.s b/asm/tm_case.s index 94ae0db6c..d175ace3d 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -5,337 +5,6 @@ .text - thumb_func_start sub_8132F60 -sub_8132F60: @ 8132F60 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08132FA4 @ =gTasks+0x8 - adds r6, r0, r1 - ldr r0, _08132FA8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08132F8E - movs r1, 0x10 - ldrsh r0, [r6, r1] - cmp r0, 0x14 - bgt _08132F8E - movs r0, 0x15 - strh r0, [r6, 0x10] - bl sub_815AC20 -_08132F8E: - movs r3, 0x10 - ldrsh r0, [r6, r3] - cmp r0, 0x15 - bls _08132F98 - b _08133210 -_08132F98: - lsls r0, 2 - ldr r1, _08132FAC @ =_08132FB0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08132FA4: .4byte gTasks+0x8 -_08132FA8: .4byte gMain -_08132FAC: .4byte _08132FB0 - .align 2, 0 -_08132FB0: - .4byte _08133008 - .4byte _08133024 - .4byte _08133050 - .4byte _08133050 - .4byte _08133050 - .4byte _08133080 - .4byte _08133080 - .4byte _08133080 - .4byte _081330B0 - .4byte _081330E0 - .4byte _081330F4 - .4byte _08133024 - .4byte _08133050 - .4byte _08133050 - .4byte _08133050 - .4byte _08133080 - .4byte _08133080 - .4byte _08133080 - .4byte _0813312C - .4byte _081330E0 - .4byte _0813315C - .4byte _08133170 -_08133008: - ldr r0, _08133020 @ =0xffff8405 - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x6 - bl BeginNormalPaletteFade - movs r0, 0x1 - bl sub_8131F64 - b _081331EA - .align 2, 0 -_08133020: .4byte 0xffff8405 -_08133024: - ldr r0, _0813304C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08133036 - b _08133232 -_08133036: - ldrh r0, [r6, 0x12] - adds r0, 0x1 - strh r0, [r6, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x65 - bgt _08133046 - b _08133232 -_08133046: - strh r1, [r6, 0x12] - b _081331EA - .align 2, 0 -_0813304C: .4byte gPaletteFade -_08133050: - movs r0, 0x12 - ldrsh r1, [r6, r0] - cmp r1, 0 - bne _08133066 - ldr r0, _0813307C @ =gMain - strh r1, [r0, 0x2E] - movs r1, 0x80 - strh r1, [r0, 0x30] - ldrb r0, [r6] - bl ListMenuHandleInput -_08133066: - ldrh r0, [r6, 0x12] - adds r0, 0x1 - strh r0, [r6, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x65 - bgt _08133076 - b _08133232 -_08133076: - movs r0, 0 - strh r0, [r6, 0x12] - b _081331EA - .align 2, 0 -_0813307C: .4byte gMain -_08133080: - movs r3, 0x12 - ldrsh r1, [r6, r3] - cmp r1, 0 - bne _08133096 - ldr r0, _081330AC @ =gMain - strh r1, [r0, 0x2E] - movs r1, 0x40 - strh r1, [r0, 0x30] - ldrb r0, [r6] - bl ListMenuHandleInput -_08133096: - ldrh r0, [r6, 0x12] - adds r0, 0x1 - strh r0, [r6, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x65 - bgt _081330A6 - b _08133232 -_081330A6: - movs r0, 0 - strh r0, [r6, 0x12] - b _081331EA - .align 2, 0 -_081330AC: .4byte gMain -_081330B0: - movs r0, 0x1 - bl sub_8131F64 - ldr r2, _081330D4 @ =gUnknown_841C587 - adds r0, r4, 0 - movs r1, 0x4 - movs r3, 0 - bl sub_813337C - ldr r1, _081330D8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _081330DC @ =sub_8132F60 - str r1, [r0] - b _081331EA - .align 2, 0 -_081330D4: .4byte gUnknown_841C587 -_081330D8: .4byte gTasks -_081330DC: .4byte sub_8132F60 -_081330E0: - bl RunTextPrinters - movs r0, 0x6 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - beq _081330F2 - b _08133232 -_081330F2: - b _081331EA -_081330F4: - ldr r0, _08133128 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08133102 - b _08133232 -_08133102: - movs r0, 0 - bl sub_8131F64 - movs r0, 0x80 - lsls r0, 3 - movs r1, 0 - str r1, [sp] - movs r2, 0x6 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x6 - movs r1, 0 - bl sub_810F260 - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - b _081331EA - .align 2, 0 -_08133128: .4byte gMain -_0813312C: - movs r0, 0x1 - bl sub_8131F64 - ldr r2, _08133150 @ =gUnknown_841C693 - adds r0, r4, 0 - movs r1, 0x4 - movs r3, 0 - bl sub_813337C - ldr r1, _08133154 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08133158 @ =sub_8132F60 - str r1, [r0] - b _081331EA - .align 2, 0 -_08133150: .4byte gUnknown_841C693 -_08133154: .4byte gTasks -_08133158: .4byte sub_8132F60 -_0813315C: - ldr r0, _0813316C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08133232 - b _081331EA - .align 2, 0 -_0813316C: .4byte gMain -_08133170: - ldr r0, _081331F4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - bne _08133232 - ldr r5, _081331F8 @ =gSaveBlock1Ptr - ldr r0, [r5] - ldr r1, _081331FC @ =0x00000464 - adds r0, r1 - ldr r4, _08133200 @ =gUnknown_203B11C - ldr r1, [r4] - movs r2, 0xE8 - bl memcpy - ldr r0, [r5] - movs r3, 0xEE - lsls r3, 2 - adds r0, r3 - ldr r1, [r4] - adds r1, 0xE8 - movs r2, 0x78 - bl memcpy - ldrb r0, [r6] - movs r1, 0 - movs r2, 0 - bl sub_810713C - ldr r2, _08133204 @ =gUnknown_203B10C - ldr r0, [r4] - movs r3, 0xB0 - lsls r3, 1 - adds r1, r0, r3 - ldrh r1, [r1] - strh r1, [r2, 0x8] - adds r3, 0x2 - adds r1, r0, r3 - ldrh r1, [r1] - strh r1, [r2, 0xA] - bl Free - ldr r0, _08133208 @ =gPlttBufferFaded - ldr r1, _0813320C @ =gPlttBufferUnfaded - movs r2, 0x80 - lsls r2, 1 - bl CpuFastSet - bl sub_8108CF0 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - str r7, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_081331EA: - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] - b _08133232 - .align 2, 0 -_081331F4: .4byte gPaletteFade -_081331F8: .4byte gSaveBlock1Ptr -_081331FC: .4byte 0x00000464 -_08133200: .4byte gUnknown_203B11C -_08133204: .4byte gUnknown_203B10C -_08133208: .4byte gPlttBufferFaded -_0813320C: .4byte gPlttBufferUnfaded -_08133210: - ldr r0, _0813323C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08133232 - ldr r0, _08133240 @ =gUnknown_203B10C - ldr r0, [r0] - bl SetMainCallback2 - bl sub_813208C - bl sub_81321D4 - adds r0, r4, 0 - bl DestroyTask -_08133232: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813323C: .4byte gPaletteFade -_08133240: .4byte gUnknown_203B10C - thumb_func_end sub_8132F60 - thumb_func_start sub_8133244 sub_8133244: @ 8133244 push {r4,lr} diff --git a/include/item_menu.h b/include/item_menu.h index a6128b9fb..9ebe3918a 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -12,6 +12,7 @@ extern u16 gSpecialVar_ItemId; // Exported ROM declarations void sub_81AAC50(void); void sub_81AAC70(void); +void sub_8108CF0(void); void UseFameCheckerFromMenu(void); #endif //GUARD_ITEM_MENU_H diff --git a/include/teachy_tv.h b/include/teachy_tv.h index 3eeaa3a98..382ad117d 100644 --- a/include/teachy_tv.h +++ b/include/teachy_tv.h @@ -2,5 +2,6 @@ #define GUARD_TEACHY_TV_H void sub_815ABFC(void); +void sub_815AC20(void); #endif //GUARD_TEACHY_TV_H diff --git a/src/tm_case.c b/src/tm_case.c index b63260aaf..0f709afea 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -131,6 +131,8 @@ extern const u8 gUnknown_84168F1[]; extern const u8 gUnknown_8416911[]; extern const u8 gUnknown_8416936[]; extern const u8 gUnknown_8416959[]; +extern const u8 gUnknown_841C587[]; +extern const u8 gUnknown_841C693[]; // my rodata extern const struct BgTemplate gUnknown_8463134[3]; @@ -1043,3 +1045,132 @@ void sub_8132F20(u8 taskId) gTasks[taskId].func = sub_8132F60; } } + +void sub_8132F60(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (JOY_NEW(B_BUTTON)) + { + if (data[8] < 21) + { + data[8] = 21; + sub_815AC20(); + } + } + + switch (data[8]) + { + case 0: + BeginNormalPaletteFade(0xFFFF8405, 4, 0, 6, 0); + sub_8131F64(1); + data[8]++; + break; + case 1: + case 11: + if (!gPaletteFade.active) + { + data[9]++; + if (data[9] > 0x65) + { + data[9] = 0; + data[8]++; + } + } + break; + case 2: + case 3: + case 4: + case 12: + case 13: + case 14: + if (data[9] == 0) + { + gMain.newKeys = 0; + gMain.newAndRepeatedKeys = DPAD_DOWN; + ListMenuHandleInput(data[0]); + } + data[9]++; + if (data[9] > 0x65) + { + data[9] = 0; + data[8]++; + } + break; + case 5: + case 6: + case 7: + case 15: + case 16: + case 17: + if (data[9] == 0) + { + gMain.newKeys = 0; + gMain.newAndRepeatedKeys = DPAD_UP; + ListMenuHandleInput(data[0]); + } + data[9]++; + if (data[9] > 0x65) + { + data[9] = 0; + data[8]++; + } + break; + case 8: + sub_8131F64(1); + sub_813337C(taskId, 4, gUnknown_841C587, 0); + gTasks[taskId].func = sub_8132F60; + data[8]++; + break; + case 9: + case 19: + RunTextPrinters(); + if (!IsTextPrinterActive(6)) + data[8]++; + break; + case 10: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + sub_8131F64(0); + BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0); + sub_810F260(6, 0); + schedule_bg_copy_tilemap_to_vram(1); + data[8]++; + } + break; + case 18: + sub_8131F64(1); + sub_813337C(taskId, 4, gUnknown_841C693, 0); + gTasks[taskId].func = sub_8132F60; + data[8]++; + break; + case 20: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + data[8]++; + break; + case 21: + if (!gPaletteFade.active) + { + memcpy(gSaveBlock1Ptr->bagPocket_TMHM, gUnknown_203B11C->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, gUnknown_203B11C->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + sub_810713C(data[0], NULL, NULL); + gUnknown_203B10C.unk_08 = gUnknown_203B11C->unk_160; + gUnknown_203B10C.unk_0a = gUnknown_203B11C->unk_162; + Free(gUnknown_203B11C); + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + sub_8108CF0(); + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0); + data[8]++; + } + break; + default: + if (!gPaletteFade.active) + { + SetMainCallback2(gUnknown_203B10C.unk_00); + sub_813208C(); + sub_81321D4(); + DestroyTask(taskId); + } + break; + } +} From a4b19e9187a663564b7d41f643dc28ecedaa100d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 20:29:37 -0400 Subject: [PATCH 088/318] tm_case finish code --- asm/tm_case.s | 878 ----------------------------------------- include/list_menu.h | 2 + include/menu_helpers.h | 2 + include/money.h | 4 +- include/pokemon.h | 2 + include/text_window.h | 2 + include/window.h | 2 +- ld_script.txt | 1 - src/tm_case.c | 268 ++++++++++++- src/window.c | 2 +- 10 files changed, 278 insertions(+), 885 deletions(-) delete mode 100644 asm/tm_case.s diff --git a/asm/tm_case.s b/asm/tm_case.s deleted file mode 100644 index d175ace3d..000000000 --- a/asm/tm_case.s +++ /dev/null @@ -1,878 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8133244 -sub_8133244: @ 8133244 - push {r4,lr} - ldr r0, _081332E0 @ =gUnknown_8463190 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0 - movs r1, 0x5B - movs r2, 0xE0 - bl sub_815001C - movs r0, 0 - movs r1, 0x64 - movs r2, 0xB0 - bl sub_814FEAC - movs r0, 0 - movs r1, 0x78 - movs r2, 0xD0 - bl sub_814FF2C - ldr r4, _081332E4 @ =gUnknown_841F408 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0xA0 - movs r2, 0x20 - bl LoadPalette - ldr r4, _081332E8 @ =gUnknown_8463180 - adds r0, r4, 0 - movs r1, 0xF6 - movs r2, 0x4 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0xD6 - movs r2, 0x4 - bl LoadPalette - movs r0, 0xC0 - movs r1, 0x1 - bl sub_8107D38 - movs r4, 0 -_081332A4: - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _081332A4 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x3 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081332E0: .4byte gUnknown_8463190 -_081332E4: .4byte gUnknown_841F408 -_081332E8: .4byte gUnknown_8463180 - thumb_func_end sub_8133244 - - thumb_func_start sub_81332EC -sub_81332EC: @ 81332EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r9, r3 - ldr r3, [sp, 0x30] - ldr r4, [sp, 0x34] - ldr r6, [sp, 0x38] - ldr r5, [sp, 0x3C] - mov r8, r5 - ldr r5, [sp, 0x40] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r7, r9 - lsls r7, 24 - lsrs r7, 24 - mov r9, r7 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 24 - lsrs r5, 24 - str r4, [sp] - str r6, [sp, 0x4] - lsls r4, r5, 1 - adds r4, r5 - ldr r5, _08133350 @ =gUnknown_8463184 - adds r4, r5 - str r4, [sp, 0x8] - mov r4, r8 - lsls r4, 24 - asrs r4, 24 - str r4, [sp, 0xC] - str r2, [sp, 0x10] - mov r2, r9 - bl AddTextPrinterParametrized2 - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08133350: .4byte gUnknown_8463184 - thumb_func_end sub_81332EC - - thumb_func_start sub_8133354 -sub_8133354: @ 8133354 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - movs r2, 0x5B - movs r3, 0xE - bl SetWindowBorderStyle - pop {r0} - bx r0 - thumb_func_end sub_8133354 - - thumb_func_start sub_8133368 -sub_8133368: @ 8133368 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - movs r2, 0x78 - movs r3, 0xD - bl SetWindowBorderStyle - pop {r0} - bx r0 - thumb_func_end sub_8133368 - - thumb_func_start sub_813337C -sub_813337C: @ 813337C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x10 - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - mov r8, r3 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - bl GetTextSpeedSetting - lsls r0, 24 - lsrs r0, 24 - str r4, [sp] - str r0, [sp, 0x4] - str r6, [sp, 0x8] - mov r0, r8 - str r0, [sp, 0xC] - adds r0, r5, 0 - movs r1, 0x6 - movs r2, 0x64 - movs r3, 0xB - bl DisplayMessageAndContinueTask - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_813337C - - thumb_func_start sub_81333C4 -sub_81333C4: @ 81333C4 - push {r4,lr} - sub sp, 0xC - ldr r4, _081333FC @ =gUnknown_84166D3 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r2, 0x48 - subs r2, r0 - lsrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _08133400 @ =gUnknown_8463184 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x1 - movs r3, 0x1 - bl box_print - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081333FC: .4byte gUnknown_84166D3 -_08133400: .4byte gUnknown_8463184 - thumb_func_end sub_81333C4 - - thumb_func_start sub_8133404 -sub_8133404: @ 8133404 - push {lr} - movs r0, 0x4 - movs r1, 0x13 - movs r2, 0 - movs r3, 0 - bl sub_8107D68 - movs r0, 0x4 - movs r1, 0x14 - movs r2, 0 - movs r3, 0xC - bl sub_8107D68 - movs r0, 0x4 - movs r1, 0x15 - movs r2, 0 - movs r3, 0x18 - bl sub_8107D68 - movs r0, 0x4 - movs r1, 0x16 - movs r2, 0 - movs r3, 0x24 - bl sub_8107D68 - movs r0, 0x4 - movs r1, 0x2 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_8133404 - - thumb_func_start sub_8133444 -sub_8133444: @ 8133444 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x28 - str r0, [sp] - movs r0, 0x30 - str r0, [sp, 0x4] - movs r0, 0x5 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillWindowPixelRect - cmp r4, 0 - bne _081334A8 - movs r4, 0 - movs r5, 0 -_0813346E: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 26 - lsrs r0, 24 - str r0, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - movs r0, 0x3 - str r0, [sp, 0x10] - movs r0, 0x5 - movs r1, 0x3 - ldr r2, _081334A4 @ =gUnknown_8416213 - movs r3, 0x7 - bl sub_81332EC - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0813346E - movs r0, 0x5 - movs r1, 0x2 - bl CopyWindowToVram - b _0813359A - .align 2, 0 -_081334A4: .4byte gUnknown_8416213 -_081334A8: - adds r0, r4, 0 - bl ItemIdToBattleMoveId - lsls r0, 16 - lsrs r7, r0, 16 - ldr r1, _081334D8 @ =gBattleMoves - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - adds r5, r0, r1 - ldrb r1, [r5, 0x2] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - movs r2, 0 - movs r3, 0 - bl sub_8107D68 - ldrb r0, [r5, 0x1] - cmp r0, 0x1 - bhi _081334E0 - ldr r2, _081334DC @ =gUnknown_8416213 - b _081334F0 - .align 2, 0 -_081334D8: .4byte gBattleMoves -_081334DC: .4byte gUnknown_8416213 -_081334E0: - ldr r4, _08133524 @ =gStringVar1 - ldrb r1, [r5, 0x1] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r2, r4, 0 -_081334F0: - movs r0, 0xC - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - movs r0, 0x3 - str r0, [sp, 0x10] - movs r0, 0x5 - movs r1, 0x3 - movs r3, 0x7 - bl sub_81332EC - ldr r2, _08133528 @ =gBattleMoves - lsls r1, r7, 1 - adds r0, r1, r7 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x3] - adds r6, r1, 0 - cmp r0, 0 - bne _08133530 - ldr r2, _0813352C @ =gUnknown_8416213 - b _08133540 - .align 2, 0 -_08133524: .4byte gStringVar1 -_08133528: .4byte gBattleMoves -_0813352C: .4byte gUnknown_8416213 -_08133530: - ldr r4, _081335A8 @ =gStringVar1 - ldrb r1, [r2, 0x3] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r2, r4, 0 -_08133540: - movs r0, 0x18 - str r0, [sp] - movs r4, 0 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0xFF - mov r8, r0 - str r0, [sp, 0xC] - movs r0, 0x3 - mov r9, r0 - str r0, [sp, 0x10] - movs r0, 0x5 - movs r1, 0x3 - movs r3, 0x7 - bl sub_81332EC - ldr r5, _081335A8 @ =gStringVar1 - ldr r1, _081335AC @ =gBattleMoves - adds r0, r6, r7 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x4] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r0, 0x24 - str r0, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - mov r0, r8 - str r0, [sp, 0xC] - mov r0, r9 - str r0, [sp, 0x10] - movs r0, 0x5 - movs r1, 0x3 - adds r2, r5, 0 - movs r3, 0x7 - bl sub_81332EC - movs r0, 0x5 - movs r1, 0x2 - bl CopyWindowToVram -_0813359A: - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081335A8: .4byte gStringVar1 -_081335AC: .4byte gBattleMoves - thumb_func_end sub_8133444 - - thumb_func_start sub_81335B0 -sub_81335B0: @ 81335B0 - push {r4,lr} - sub sp, 0x8 - adds r4, r1, 0 - adds r3, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r1, _081335DC @ =gUnknown_8E99118 - movs r2, 0x10 - str r2, [sp] - movs r2, 0xC - str r2, [sp, 0x4] - adds r2, r4, 0 - bl BlitBitmapToWindow - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081335DC: .4byte gUnknown_8E99118 - thumb_func_end sub_81335B0 - - thumb_func_start sub_81335E0 -sub_81335E0: @ 81335E0 - push {lr} - ldr r0, _08133600 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - adds r3, r0, 0 - movs r0, 0x8 - movs r1, 0x78 - movs r2, 0xD - bl PrintMoneyAmountInMoneyBoxWithBorder - pop {r0} - bx r0 - .align 2, 0 -_08133600: .4byte gSaveBlock1Ptr - thumb_func_end sub_81335E0 - - thumb_func_start sub_8133604 -sub_8133604: @ 8133604 - push {lr} - sub sp, 0x10 - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813362C @ =gUnknown_84631E0 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x5B - str r2, [sp, 0x4] - movs r2, 0xE - str r2, [sp, 0x8] - str r3, [sp, 0xC] - movs r2, 0x2 - movs r3, 0 - bl sub_80BF5D0 - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_0813362C: .4byte gUnknown_84631E0 - thumb_func_end sub_8133604 - - thumb_func_start sub_8133630 -sub_8133630: @ 8133630 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - cmp r0, 0xFF - bne _08133656 - lsls r0, r1, 3 - ldr r1, _08133660 @ =gUnknown_84631E8 - adds r0, r1 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - bl sub_8133354 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram -_08133656: - ldrb r0, [r4] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08133660: .4byte gUnknown_84631E8 - thumb_func_end sub_8133630 - - thumb_func_start sub_8133664 -sub_8133664: @ 8133664 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - movs r1, 0 - bl sub_810F4D8 - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r0, 0xFF - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8133664 - - thumb_func_start sub_813368C -sub_813368C: @ 813368C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _081336E8 @ =gUnknown_8463220 - movs r1, 0x29 - movs r2, 0x2E - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - cmp r6, 0 - beq _081336F4 - adds r5, r6, 0 - subs r5, 0x21 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - ldr r0, _081336EC @ =gSprites - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8133714 - ldr r0, _081336F0 @ =gBattleMoves - mov r8, r0 - adds r0, r6, 0 - bl ItemIdToBattleMoveId - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r0, [r1, 0x2] - bl sub_8133730 - adds r0, r4, 0 - adds r1, r5, 0 - b _08133700 - .align 2, 0 -_081336E8: .4byte gUnknown_8463220 -_081336EC: .4byte gSprites -_081336F0: .4byte gBattleMoves -_081336F4: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _08133710 @ =gSprites - adds r0, r1 - movs r1, 0xFF -_08133700: - bl sub_8133790 - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08133710: .4byte gSprites - thumb_func_end sub_813368C - - thumb_func_start sub_8133714 -sub_8133714: @ 8133714 - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x31 - bls _08133726 - movs r1, 0x1 - bl StartSpriteAnim - b _0813372C -_08133726: - movs r1, 0 - bl StartSpriteAnim -_0813372C: - pop {r0} - bx r0 - thumb_func_end sub_8133714 - - thumb_func_start sub_8133730 -sub_8133730: @ 8133730 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xC8 - lsls r0, 1 - bl IndexOfSpritePaletteTag - lsls r0, 28 - lsrs r5, r0, 24 - ldr r2, _08133784 @ =gUnknown_203B12C - ldr r0, _08133788 @ =gUnknown_8463238 - lsls r4, 1 - adds r4, r0 - ldrh r1, [r4] - lsls r1, 1 - ldr r0, [r2] - adds r0, r1 - movs r1, 0x80 - lsls r1, 1 - adds r2, r1, 0 - adds r1, r5, 0 - orrs r1, r2 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0813378C @ =gUnknown_203B10C - ldrb r0, [r0, 0x4] - cmp r0, 0x4 - bne _0813377C - adds r1, r5, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - movs r1, 0x4 - movs r2, 0 - bl BlendPalettes -_0813377C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08133784: .4byte gUnknown_203B12C -_08133788: .4byte gUnknown_8463238 -_0813378C: .4byte gUnknown_203B10C - thumb_func_end sub_8133730 - - thumb_func_start sub_8133790 -sub_8133790: @ 8133790 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r4, 0xFF - bne _081337A6 - movs r6, 0x1B - movs r1, 0x36 - movs r0, 0x14 - strh r0, [r5, 0x26] - b _081337D8 -_081337A6: - cmp r4, 0x31 - bls _081337B0 - adds r0, r4, 0 - subs r0, 0x32 - b _081337B4 -_081337B0: - adds r0, r4, 0 - adds r0, 0x8 -_081337B4: - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 9 - movs r1, 0x3A - bl __divsi3 - asrs r0, 8 - movs r1, 0x29 - subs r6, r1, r0 - lsls r0, r4, 11 - movs r1, 0x3A - bl __divsi3 - asrs r0, 8 - adds r1, r0, 0 - adds r1, 0x2E -_081337D8: - strh r6, [r5, 0x20] - strh r1, [r5, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8133790 - - thumb_func_start sub_81337E4 -sub_81337E4: @ 81337E4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08133808 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r0, r2, r3 - movs r4, 0 - strh r1, [r0, 0x2E] - strh r4, [r0, 0x30] - adds r3, 0x1C - adds r2, r3 - ldr r0, _0813380C @ =sub_8133810 - str r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08133808: .4byte gSprites -_0813380C: .4byte sub_8133810 - thumb_func_end sub_81337E4 - - thumb_func_start sub_8133810 -sub_8133810: @ 8133810 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x30 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08133822 - cmp r0, 0x1 - beq _08133886 - b _081338A2 -_08133822: - ldrh r1, [r5, 0x26] - movs r2, 0x26 - ldrsh r0, [r5, r2] - cmp r0, 0x13 - ble _08133880 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08133890 - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - ldr r4, _08133878 @ =gBattleMoves - ldrh r0, [r5, 0x2E] - bl ItemIdToBattleMoveId - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1, 0x2] - bl sub_8133730 - ldr r2, _0813387C @ =0xfffffedf - adds r1, r2, 0 - ldrh r0, [r5, 0x2E] - adds r1, r0 - strh r1, [r5, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_8133714 - ldrh r1, [r5, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_8133790 - b _081338A2 - .align 2, 0 -_08133878: .4byte gBattleMoves -_0813387C: .4byte 0xfffffedf -_08133880: - adds r0, r1, 0 - adds r0, 0xA - b _081338A0 -_08133886: - ldrh r1, [r5, 0x26] - movs r2, 0x26 - ldrsh r0, [r5, r2] - cmp r0, 0 - bgt _0813389C -_08133890: - ldr r0, _08133898 @ =SpriteCallbackDummy - str r0, [r5, 0x1C] - b _081338A2 - .align 2, 0 -_08133898: .4byte SpriteCallbackDummy -_0813389C: - adds r0, r1, 0 - subs r0, 0xA -_081338A0: - strh r0, [r5, 0x26] -_081338A2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8133810 - - thumb_func_start sub_81338A8 -sub_81338A8: @ 81338A8 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, _081338F4 @ =gUnknown_203B12C - movs r5, 0x88 - lsls r5, 2 - adds r0, r5, 0 - bl Alloc - adds r1, r0, 0 - str r1, [r4] - ldr r0, _081338F8 @ =gUnknown_8E84F20 - bl LZDecompressWram - ldr r0, _081338FC @ =gUnknown_8E85068 - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 2 - adds r1, r2 - bl LZDecompressWram - ldr r0, [r4] - adds r0, r5 - str r0, [sp] - ldr r1, _08133900 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC8 - lsls r1, 1 - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpritePalette - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081338F4: .4byte gUnknown_203B12C -_081338F8: .4byte gUnknown_8E84F20 -_081338FC: .4byte gUnknown_8E85068 -_08133900: .4byte 0xffff0000 - thumb_func_end sub_81338A8 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/list_menu.h b/include/list_menu.h index 56106610d..9c4960e3e 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -58,5 +58,7 @@ void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); void sub_810713C(u8, u16 *, u16 *); u16 ListMenuGetYCoordForPrintingArrowCursor(u8); +void sub_8107D38(u8, u8); +void sub_8107D68(u8, u8, u8, u8); #endif //GUARD_LIST_MENU_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index aba8b1c0d..a04385b1d 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -24,5 +24,7 @@ void sub_80BF768(void); void sub_80BF7C8(void); u8 sub_80BF8E4(void); u8 sub_80BF848(s16 * a0, u16 a1); +void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); +void sub_80BF5D0(u8 taskId, const struct WindowTemplate * unk1, u8 unk2, u8 unk3, u8 unk4, u8 unk5, u8 unk6, const TaskFunc *ptrs); #endif //GUARD_MENU_HELPERS_H diff --git a/include/money.h b/include/money.h index 25db1b157..5bcef18d4 100644 --- a/include/money.h +++ b/include/money.h @@ -10,9 +10,9 @@ void AddMoney(u32* moneyPtr, u32 toAdd); void RemoveMoney(u32* moneyPtr, u32 toSub); bool8 IsEnoughForCostInVar0x8005(void); void SubtractMoneyFromVar0x8005(void); -void PrintMoneyAmountInMoneyBoxInMoneyBox(u8 windowId, int amount, u8 speed); void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed); -void PrintMoneyAmountInMoneyBoxInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount); +void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed); +void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount); void ChangeAmountInMoneyBox(int amount); void DrawMoneyBox(int amount, u8 x, u8 y); void HideMoneyBox(void); diff --git a/include/pokemon.h b/include/pokemon.h index c08f37b5f..c84eb4c42 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -445,6 +445,8 @@ struct BattleMove u8 flags; }; +extern const struct BattleMove gBattleMoves[]; + #define FLAG_MAKES_CONTACT 0x1 #define FLAG_PROTECT_AFFECTED 0x2 #define FLAG_MAGICCOAT_AFFECTED 0x4 diff --git a/include/text_window.h b/include/text_window.h index 72ce50efc..8a4113c62 100644 --- a/include/text_window.h +++ b/include/text_window.h @@ -20,6 +20,8 @@ void rbox_fill_rectangle(u8 windowId); const u16* stdpal_get(u8 id); const u16* GetOverworldTextboxPalettePtr(void); void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset); +void sub_814FEAC(u8 windowId, u16 tileStart, u8 palette); void sub_814FF2C(u8 windowId, u16 tileStart, u8 palette); +void sub_815001C(u8 windowId, u16 tileStart, u8 palette); #endif // GUARD_TEXT_WINDOW_H diff --git a/include/window.h b/include/window.h index 2705a7895..8edaf73ae 100644 --- a/include/window.h +++ b/include/window.h @@ -56,7 +56,7 @@ void PutWindowTilemap(u8 windowId); void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette); void ClearWindowTilemap(u8 windowId); void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); -void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height); +void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset); diff --git a/ld_script.txt b/ld_script.txt index 53575e49c..8e3687296 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -230,7 +230,6 @@ SECTIONS { src/menu2.o(.text); src/oak_speech.o(.text); src/tm_case.o(.text); - asm/tm_case.o(.text); asm/menu_indicators.o(.text); asm/pokedex_area_markers.o(.text); asm/pokemon_summary_screen.o(.text); diff --git a/src/tm_case.c b/src/tm_case.c index 0f709afea..699fda447 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -6,6 +6,7 @@ #include "palette.h" #include "task.h" #include "text.h" +#include "text_window.h" #include "menu.h" #include "menu_helpers.h" #include "new_menu_helpers.h" @@ -109,20 +110,26 @@ void sub_8133404(void); void sub_8133444(u16 itemId); void sub_81335B0(u8 windowId, u8 x, u8 y); void sub_81335E0(void); -void sub_8133604(u8 taskId, const u8 *const *ptrs); +void sub_8133604(u8 taskId, const TaskFunc * ptrs); u8 sub_8133630(u8 * a0, u8 a1); void sub_8133664(u8 * a0); u8 sub_813368C(u16 itemId); +void sub_8133714(struct Sprite * sprite, u8 var); +void sub_8133730(u8 type); +void sub_8133790(struct Sprite * sprite, u8 var); void sub_81337E4(u8 a0, u16 itemId); +void sub_8133810(struct Sprite * sprite); void sub_81338A8(void); // event scripts +extern const u8 gUnknown_8416213[]; extern const u8 gUnknown_8416226[]; extern const u8 gFameCheckerText_ListMenuCursor[]; extern const u8 gUnknown_84162B9[]; extern const u8 gUnknown_8416301[]; extern const u8 gUnknown_841632A[]; extern const u8 gUnknown_841635E[]; +extern const u8 gUnknown_84166D3[]; extern const u8 gUnknown_84166DB[]; extern const u8 gUnknown_84166E1[]; extern const u8 gUnknown_84166FF[]; @@ -134,16 +141,25 @@ extern const u8 gUnknown_8416959[]; extern const u8 gUnknown_841C587[]; extern const u8 gUnknown_841C693[]; +extern const u16 gUnknown_841F408[]; + // my rodata extern const struct BgTemplate gUnknown_8463134[3]; extern void (*const gUnknown_8463140[])(u8 taskId); extern const struct MenuAction gUnknown_8463150[]; extern const u8 gUnknown_8463168[]; extern const u8 gUnknown_846316B[]; -extern const u8 *const gUnknown_8463170[]; +extern const TaskFunc gUnknown_8463170[]; extern const u8 gUnknown_8463178[]; extern const u8 gUnknown_846317C[]; +extern const u16 gUnknown_8463180[]; +extern const struct TextColor gUnknown_8463184[]; +extern const struct WindowTemplate gUnknown_8463190[]; +extern const struct WindowTemplate gUnknown_84631E0; +extern const struct WindowTemplate gUnknown_84631E8[]; extern const struct CompressedSpriteSheet gUnknown_8463218; +extern const struct SpriteTemplate gUnknown_8463220; +extern const u16 gUnknown_8463238[]; // graphics extern const u32 gUnknown_8E845D8[]; @@ -151,6 +167,9 @@ extern const u32 gUnknown_8E84A24[]; extern const u32 gUnknown_8E84B70[]; extern const u32 gUnknown_8E84CB0[]; extern const u32 gUnknown_8E84D20[]; +extern const u32 gUnknown_8E84F20[]; +extern const u32 gUnknown_8E85068[]; +extern const u8 gUnknown_8E99118[]; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) { @@ -1174,3 +1193,248 @@ void sub_8132F60(u8 taskId) break; } } + +void sub_8133244(void) +{ + u8 i; + + InitWindows(gUnknown_8463190); + DeactivateAllTextPrinters(); + sub_815001C(0, 0x5B, 0xE0); + sub_814FEAC(0, 0x64, 0xB0); + sub_814FF2C(0, 0x78, 0xD0); + LoadPalette(gUnknown_841F408, 0xF0, 0x20); + LoadPalette(gUnknown_841F408, 0xA0, 0x20); + LoadPalette(gUnknown_8463180, 0xF6, 0x04); + LoadPalette(gUnknown_8463180, 0xD6, 0x04); + sub_8107D38(0xc0, 0x01); + for (i = 0; i < 9; i++) + FillWindowPixelBuffer(i, 0x00); + PutWindowTilemap(0); + PutWindowTilemap(1); + PutWindowTilemap(3); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +{ + AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8463184[colorIdx], speed, str); +} + +void sub_8133354(u8 windowId) +{ + SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E); +} + +void sub_8133368(u8 windowId) +{ + SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D); +} + +void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) +{ + DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func); + schedule_bg_copy_tilemap_to_vram(1); +} + +void sub_81333C4(void) +{ + u32 distance = 72 - GetStringWidth(1, gUnknown_84166D3, 0); + box_print(3, 1, distance / 2, 1, &gUnknown_8463184[0], 0, gUnknown_84166D3); +} + +void sub_8133404(void) +{ + sub_8107D68(4, 19, 0, 0); + sub_8107D68(4, 20, 0, 12); + sub_8107D68(4, 21, 0, 24); + sub_8107D68(4, 22, 0, 36); + CopyWindowToVram(4, 2); +} + +void sub_8133444(u16 itemId) +{ + u8 i; + u16 move; + const u8 * str; + + FillWindowPixelRect(5, 0, 0, 0, 40, 48); + if (itemId == ITEM_NONE) + { + for (i = 0; i < 4; i++) + { + sub_81332EC(5, 3, gUnknown_8416213, 7, 12 * i, 0, 0, 0xFF, 3); + } + CopyWindowToVram(5, 2); + } + else + { + move = ItemIdToBattleMoveId(itemId); + sub_8107D68(5, gBattleMoves[move].type + 1, 0, 0); + if (gBattleMoves[move].power < 2) + str = gUnknown_8416213; + else + { + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = gStringVar1; + } + sub_81332EC(5, 3, str, 7, 12, 0, 0, 0xFF, 3); + if (gBattleMoves[move].accuracy == 0) + str = gUnknown_8416213; + else + { + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = gStringVar1; + } + sub_81332EC(5, 3, str, 7, 24, 0, 0, 0xFF, 3); + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_81332EC(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3); + CopyWindowToVram(5, 2); + } +} + +void sub_81335B0(u8 windowId, u8 x, u8 y) +{ + BlitBitmapToWindow(windowId, gUnknown_8E99118, x, y, 16, 12); +} + +void sub_81335E0(void) +{ + PrintMoneyAmountInMoneyBoxWithBorder(8, 0x78, 0xD, GetMoney(&gSaveBlock1Ptr->money)); +} + +void sub_8133604(u8 taskId, const TaskFunc *ptrs) +{ + sub_80BF5D0(taskId, &gUnknown_84631E0, 2, 0, 2, 0x5B, 0x0E, ptrs); +} + +u8 sub_8133630(u8 * a0, u8 a1) +{ + if (*a0 == 0xFF) + { + *a0 = AddWindow(&gUnknown_84631E8[a1]); + sub_8133354(*a0); + schedule_bg_copy_tilemap_to_vram(0); + } + return *a0; +} + +void sub_8133664(u8 * a0) +{ + sub_810F4D8(*a0, FALSE); + ClearWindowTilemap(*a0); + RemoveWindow(*a0); + schedule_bg_copy_tilemap_to_vram(0); + *a0 = 0xFF; +} + +u8 sub_813368C(u16 itemId) +{ + u8 spriteId = CreateSprite(&gUnknown_8463220, 0x29, 0x2E, 0); + u8 r5; + if (itemId == ITEM_NONE) + { + sub_8133790(&gSprites[spriteId], 0xFF); + return spriteId; + } + else + { + r5 = itemId - 33; + sub_8133714(&gSprites[spriteId], r5); + sub_8133730(gBattleMoves[ItemIdToBattleMoveId(itemId)].type); + sub_8133790(&gSprites[spriteId], r5); + return spriteId; + } +} + +void sub_8133714(struct Sprite * sprite, u8 idx) +{ + if (idx >= 50) + StartSpriteAnim(sprite, 1); + else + StartSpriteAnim(sprite, 0); +} + +void sub_8133730(u8 type) +{ + u8 palIndex = IndexOfSpritePaletteTag(400) << 4; + LoadPalette(gUnknown_203B12C + gUnknown_8463238[type], 0x100 | palIndex, 0x20); + if (gUnknown_203B10C.unk_04 == 4) + { + BlendPalettes(1 << (0x10 + palIndex), 4, RGB_BLACK); + } +} + +void sub_8133790(struct Sprite * sprite, u8 var) +{ + s32 x, y; + if (var == 0xFF) + { + x = 0x1B; + y = 0x36; + sprite->pos2.y = 0x14; + } + else + { + if (var >= 50) + var -= 50; + else + var += 8; + x = 0x29 - (((0xE00 * var) / 58) >> 8); + y = 0x2E + (((0x800 * var) / 58) >> 8); + } + sprite->pos1.x = x; + sprite->pos1.y = y; +} + +void sub_81337E4(u8 spriteId, u16 itemId) +{ + gSprites[spriteId].data[0] = itemId; + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].callback = sub_8133810; +} + +void sub_8133810(struct Sprite * sprite) +{ + switch (sprite->data[1]) + { + case 0: + if (sprite->pos2.y >= 20) + { + if (sprite->data[0] != ITEM_NONE) + { + sprite->data[1]++; + sub_8133730(gBattleMoves[ItemIdToBattleMoveId(sprite->data[0])].type); + sprite->data[0] -= ITEM_TM01; + sub_8133714(sprite, sprite->data[0]); + sub_8133790(sprite, sprite->data[0]); + } + else + sprite->callback = SpriteCallbackDummy; + } + else + { + sprite->pos2.y += 10; + } + break; + case 1: + if (sprite->pos2.y <= 0) + sprite->callback = SpriteCallbackDummy; + else + sprite->pos2.y -= 10; + } +} + +void sub_81338A8(void) +{ + struct SpritePalette spritePalette; + + gUnknown_203B12C = Alloc(0x110 * sizeof(u16)); + LZDecompressWram(gUnknown_8E84F20, gUnknown_203B12C); + LZDecompressWram(gUnknown_8E85068, gUnknown_203B12C + 0x100); + spritePalette.data = gUnknown_203B12C + 0x110; + spritePalette.tag = 400; + LoadSpritePalette(&spritePalette); +} diff --git a/src/window.c b/src/window.c index e760fc8e4..71cfa6898 100644 --- a/src/window.c +++ b/src/window.c @@ -320,7 +320,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height) } } -void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height) +void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height) { BlitBitmapRectToWindow(windowId, pixels, 0, 0, width, height, x, y, width, height); } From d294e845532face99e16338daab1e21b21f72c15 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 21:24:48 -0400 Subject: [PATCH 089/318] disassemble tm_case data --- data/data_83FECCC.s | 8 +++- data/tm_case.s | 110 +++++++++++++++++++++++++++++++++++++------- src/tm_case.c | 2 +- 3 files changed, 102 insertions(+), 18 deletions(-) diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 682877f7e..9b6aa16eb 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -728,7 +728,13 @@ gUnknown_8416188:: @ 8416188 .incbin "baserom.gba", 0x416188, 0x8 gUnknown_8416190:: @ 8416190 - .incbin "baserom.gba", 0x416190, 0x31 + .incbin "baserom.gba", 0x416190, 0x10 + +gUnknown_84161A0:: + .incbin "baserom.gba", 0x4161a0, 0x12 + +gUnknown_84161B2:: + .incbin "baserom.gba", 0x4161b2, 0xf gFameCheckerText_Cancel:: @ 84161C1 .string "CANCEL$" diff --git a/data/tm_case.s b/data/tm_case.s index 5720087d7..6237e4612 100644 --- a/data/tm_case.s +++ b/data/tm_case.s @@ -1,50 +1,128 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" .section .rodata + .set NULL, 0 .align 2 gUnknown_8463134:: @ 8463134 - .incbin "baserom.gba", 0x463134, 0xC + .4byte 0x000011f0, 0x000001e1, 0x000021d2 gUnknown_8463140:: @ 8463140 - .incbin "baserom.gba", 0x463140, 0x10 + .4byte sub_8132414 + .4byte sub_8132868 + .4byte sub_8132908 + .4byte sub_81328B8 gUnknown_8463150:: @ 8463150 - .incbin "baserom.gba", 0x463150, 0x18 + .4byte gUnknown_84161A0, sub_81325F0 + .4byte gUnknown_84161B2, sub_813265C + .4byte gUnknown_84161C8, sub_81327FC gUnknown_8463168:: @ 8463168 - .incbin "baserom.gba", 0x463168, 0x3 + .byte 0x00, 0x01, 0x02 gUnknown_846316B:: @ 846316B - .incbin "baserom.gba", 0x46316B, 0x5 + .byte 0x01, 0x02, 0x00, 0x00, 0x00 gUnknown_8463170:: @ 8463170 - .incbin "baserom.gba", 0x463170, 0x8 + .4byte sub_8132CAC + .4byte sub_8132A48 gUnknown_8463178:: @ 8463178 - .incbin "baserom.gba", 0x463178, 0x4 + .string "{CLEAR_TO 18}$" gUnknown_846317C:: @ 846317C - .incbin "baserom.gba", 0x46317C, 0x4 + .string " $" + .align 2, 0 gUnknown_8463180:: @ 8463180 - .incbin "baserom.gba", 0x463180, 0x4 + .2byte 0x2108, 0x1a1e gUnknown_8463184:: @ 8463184 - .incbin "baserom.gba", 0x463184, 0xC + .byte 0x00, 0x01, 0x02, 0x00, 0x02, 0x03, 0x00, 0x03, 0x06, 0x00, 0x0e, 0x0a gUnknown_8463190:: @ 8463190 - .incbin "baserom.gba", 0x463190, 0x50 + .align 2 + .byte 0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f + .2byte 0x0081 + @ {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081} + .align 2 + .byte 0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a + .2byte 0x013f + @ {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f} + .align 2 + .byte 0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d + .2byte 0x01f9 + @ {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9} + .align 2 + .byte 0x00, 0x00, 0x01, 0x0a, 0x02, 0x0f + .2byte 0x0235 + @ {0x00, 0x00, 0x01, 0x0a, 0x02, 0x0f, 0x0235} + .align 2 + .byte 0x00, 0x01, 0x0d, 0x05, 0x06, 0x0c + .2byte 0x0249 + @ {0x00, 0x01, 0x0d, 0x05, 0x06, 0x0c, 0x0249} + .align 2 + .byte 0x00, 0x07, 0x0d, 0x05, 0x06, 0x0c + .2byte 0x0267 + @ {0x00, 0x07, 0x0d, 0x05, 0x06, 0x0c, 0x0267} + .align 2 + .byte 0x01, 0x02, 0x0f, 0x1a, 0x04, 0x0b + .2byte 0x0285 + @ {0x01, 0x02, 0x0f, 0x1a, 0x04, 0x0b, 0x0285} + .align 2 + .byte 0x01, 0x11, 0x09, 0x0c, 0x04, 0x0f + .2byte 0x02ed + @ {0x01, 0x11, 0x09, 0x0c, 0x04, 0x0f, 0x02ed} + .align 2 + .byte 0x01, 0x01, 0x01, 0x08, 0x03, 0x0d + .2byte 0x031d + @ {0x01, 0x01, 0x01, 0x08, 0x03, 0x0d, 0x031d} + .align 2 + .byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 + .2byte 0x0000 + @ {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000} gUnknown_84631E0:: @ 84631E0 - .incbin "baserom.gba", 0x4631E0, 0x8 + .align 2 + .byte 0x01, 0x15, 0x09, 0x06, 0x04, 0x0f + .2byte 0x0335 + @ {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335} gUnknown_84631E8:: @ 84631E8 - .incbin "baserom.gba", 0x4631E8, 0x30 + .align 2 + .byte 0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f + .2byte 0x01cf + @ {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf} + .align 2 + .byte 0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f + .2byte 0x01cf + + .align 2 +gOamData_84631F8:: + .2byte 0x0000, 0x8000, 0x0800, 0x0000 + + .align 2 +gUnknown_8463200:: + obj_image_anim_frame 0, 0 + obj_image_anim_end + + .align 2 +gUnknown_8463208:: + obj_image_anim_frame 16, 0 + obj_image_anim_end + + .align 2 +gUnknown_8463210:: + .4byte gUnknown_8463200 + .4byte gUnknown_8463208 gUnknown_8463218:: @ 8463218 - .incbin "baserom.gba", 0x463218, 0x8 + obj_tiles gUnknown_8E84D90, 0x400, 0x0190 gUnknown_8463220:: @ 8463220 - .incbin "baserom.gba", 0x463220, 0x18 + spr_template 0x0190, 0x0190, gOamData_84631F8, gUnknown_8463210, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_8463238:: @ 8463238 - .incbin "baserom.gba", 0x463238, 0x24 + .2byte 0x0000, 0x0090, 0x0080, 0x00c0, 0x0060, 0x0050, 0x00b0, 0x00a0, 0x00e0, 0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x00d0, 0x0070 + .2byte 0x0100, 0x00f0 diff --git a/src/tm_case.c b/src/tm_case.c index 699fda447..df3b4c7df 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -121,7 +121,7 @@ void sub_81337E4(u8 a0, u16 itemId); void sub_8133810(struct Sprite * sprite); void sub_81338A8(void); -// event scripts +// data_83FECCC extern const u8 gUnknown_8416213[]; extern const u8 gUnknown_8416226[]; extern const u8 gFameCheckerText_ListMenuCursor[]; From 642729d03072fcc763fad90f60a92b9b74f70a37 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 21:51:07 -0400 Subject: [PATCH 090/318] Decompile tm_case data --- data/data_83FECCC.s | 21 +++++- data/tm_case.s | 128 --------------------------------- include/graphics.h | 11 +++ ld_script.txt | 2 +- src/tm_case.c | 170 +++++++++++++++++++++++++++++++++++++------- 5 files changed, 175 insertions(+), 157 deletions(-) delete mode 100644 data/tm_case.s diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 9b6aa16eb..072ea050f 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -728,13 +728,28 @@ gUnknown_8416188:: @ 8416188 .incbin "baserom.gba", 0x416188, 0x8 gUnknown_8416190:: @ 8416190 - .incbin "baserom.gba", 0x416190, 0x10 + .string "TIME$" + +gUnknown_8416195:: + .string "ã©ã“㸠ã¨ã³ã¾ã™ã‹?$" gUnknown_84161A0:: - .incbin "baserom.gba", 0x4161a0, 0x12 + .string "USE$" + +gUnknown_84161A4:: + .string "TOSS$" + +gUnknown_84161A9:: + .string "REGISTER$" gUnknown_84161B2:: - .incbin "baserom.gba", 0x4161b2, 0xf + .string "GIVE$" + +gUnknown_84161B7:: + .string "ã‘ã£ã¦ã„$" + +gUnknown_84161BC:: + .string "WALK$" gFameCheckerText_Cancel:: @ 84161C1 .string "CANCEL$" diff --git a/data/tm_case.s b/data/tm_case.s deleted file mode 100644 index 6237e4612..000000000 --- a/data/tm_case.s +++ /dev/null @@ -1,128 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .set NULL, 0 - - .align 2 -gUnknown_8463134:: @ 8463134 - .4byte 0x000011f0, 0x000001e1, 0x000021d2 - -gUnknown_8463140:: @ 8463140 - .4byte sub_8132414 - .4byte sub_8132868 - .4byte sub_8132908 - .4byte sub_81328B8 - -gUnknown_8463150:: @ 8463150 - .4byte gUnknown_84161A0, sub_81325F0 - .4byte gUnknown_84161B2, sub_813265C - .4byte gUnknown_84161C8, sub_81327FC - -gUnknown_8463168:: @ 8463168 - .byte 0x00, 0x01, 0x02 - -gUnknown_846316B:: @ 846316B - .byte 0x01, 0x02, 0x00, 0x00, 0x00 - -gUnknown_8463170:: @ 8463170 - .4byte sub_8132CAC - .4byte sub_8132A48 - -gUnknown_8463178:: @ 8463178 - .string "{CLEAR_TO 18}$" - -gUnknown_846317C:: @ 846317C - .string " $" - - .align 2, 0 -gUnknown_8463180:: @ 8463180 - .2byte 0x2108, 0x1a1e - -gUnknown_8463184:: @ 8463184 - .byte 0x00, 0x01, 0x02, 0x00, 0x02, 0x03, 0x00, 0x03, 0x06, 0x00, 0x0e, 0x0a - -gUnknown_8463190:: @ 8463190 - .align 2 - .byte 0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f - .2byte 0x0081 - @ {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081} - .align 2 - .byte 0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a - .2byte 0x013f - @ {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f} - .align 2 - .byte 0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d - .2byte 0x01f9 - @ {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9} - .align 2 - .byte 0x00, 0x00, 0x01, 0x0a, 0x02, 0x0f - .2byte 0x0235 - @ {0x00, 0x00, 0x01, 0x0a, 0x02, 0x0f, 0x0235} - .align 2 - .byte 0x00, 0x01, 0x0d, 0x05, 0x06, 0x0c - .2byte 0x0249 - @ {0x00, 0x01, 0x0d, 0x05, 0x06, 0x0c, 0x0249} - .align 2 - .byte 0x00, 0x07, 0x0d, 0x05, 0x06, 0x0c - .2byte 0x0267 - @ {0x00, 0x07, 0x0d, 0x05, 0x06, 0x0c, 0x0267} - .align 2 - .byte 0x01, 0x02, 0x0f, 0x1a, 0x04, 0x0b - .2byte 0x0285 - @ {0x01, 0x02, 0x0f, 0x1a, 0x04, 0x0b, 0x0285} - .align 2 - .byte 0x01, 0x11, 0x09, 0x0c, 0x04, 0x0f - .2byte 0x02ed - @ {0x01, 0x11, 0x09, 0x0c, 0x04, 0x0f, 0x02ed} - .align 2 - .byte 0x01, 0x01, 0x01, 0x08, 0x03, 0x0d - .2byte 0x031d - @ {0x01, 0x01, 0x01, 0x08, 0x03, 0x0d, 0x031d} - .align 2 - .byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 - .2byte 0x0000 - @ {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000} - -gUnknown_84631E0:: @ 84631E0 - .align 2 - .byte 0x01, 0x15, 0x09, 0x06, 0x04, 0x0f - .2byte 0x0335 - @ {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335} - -gUnknown_84631E8:: @ 84631E8 - .align 2 - .byte 0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f - .2byte 0x01cf - @ {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf} - .align 2 - .byte 0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f - .2byte 0x01cf - - .align 2 -gOamData_84631F8:: - .2byte 0x0000, 0x8000, 0x0800, 0x0000 - - .align 2 -gUnknown_8463200:: - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gUnknown_8463208:: - obj_image_anim_frame 16, 0 - obj_image_anim_end - - .align 2 -gUnknown_8463210:: - .4byte gUnknown_8463200 - .4byte gUnknown_8463208 - -gUnknown_8463218:: @ 8463218 - obj_tiles gUnknown_8E84D90, 0x400, 0x0190 - -gUnknown_8463220:: @ 8463220 - spr_template 0x0190, 0x0190, gOamData_84631F8, gUnknown_8463210, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_8463238:: @ 8463238 - .2byte 0x0000, 0x0090, 0x0080, 0x00c0, 0x0060, 0x0050, 0x00b0, 0x00a0, 0x00e0, 0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x00d0, 0x0070 - .2byte 0x0100, 0x00f0 diff --git a/include/graphics.h b/include/graphics.h index d249ece10..0f3553eea 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -150,4 +150,15 @@ extern const u16 gFameCheckerBgTiles[0xa50]; extern const u16 gFameCheckerBg3Tilemap[0x400]; extern const u16 gFameCheckerBg2Tilemap[0x400]; +// tm_case +extern const u32 gUnknown_8E845D8[]; +extern const u32 gUnknown_8E84A24[]; +extern const u32 gUnknown_8E84B70[]; +extern const u32 gUnknown_8E84CB0[]; +extern const u32 gUnknown_8E84D20[]; +extern const u32 gUnknown_8E84D90[]; +extern const u32 gUnknown_8E84F20[]; +extern const u32 gUnknown_8E85068[]; +extern const u8 gUnknown_8E99118[]; + #endif //GUARD_GRAPHICS_H diff --git a/ld_script.txt b/ld_script.txt index 8e3687296..6e3dda820 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -399,7 +399,7 @@ SECTIONS { src/fame_checker.o(.rodata); src/menu2.o(.rodata); src/oak_speech.o(.rodata); - data/tm_case.o(.rodata); + src/tm_case.o(.rodata); data/menu_indicators.o(.rodata); data/pokedex_area_markers.o(.rodata); data/pokemon_summary_screen.o(.rodata); diff --git a/src/tm_case.c b/src/tm_case.c index df3b4c7df..3cb840875 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -4,6 +4,7 @@ #include "decompress.h" #include "gpu_regs.h" #include "palette.h" +#include "graphics.h" #include "task.h" #include "text.h" #include "text_window.h" @@ -86,16 +87,25 @@ void sub_8132120(void); void sub_8132170(void); void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); +void sub_8132414(u8 taskId); void sub_8132568(u8 taskId); +void sub_81325F0(u8 taskId); +void sub_813265C(u8 taskId); void sub_81326F8(u8 taskId); void sub_8132714(u8 taskId); void sub_8132758(u8 taskId); void sub_8132780(u8 taskId); +void sub_81327FC(u8 taskId); +void sub_8132868(u8 taskId); +void sub_81328B8(u8 taskId); +void sub_8132908(u8 taskId); void sub_81329C4(u8 taskId); void sub_8132A34(u8 taskId); +void sub_8132A48(u8 taskId); void sub_8132AAC(u8 taskId); void sub_8132B5C(s16 quantity, s32 value); void sub_8132BC8(u8 taskId); +void sub_8132CAC(u8 taskId); void sub_8132D34(u8 taskId); void sub_8132E0C(u8 taskId); void sub_8132F20(u8 taskId); @@ -122,6 +132,9 @@ void sub_8133810(struct Sprite * sprite); void sub_81338A8(void); // data_83FECCC +extern const u8 gUnknown_84161A0[]; +extern const u8 gUnknown_84161B2[]; +extern const u8 gUnknown_84161C8[]; extern const u8 gUnknown_8416213[]; extern const u8 gUnknown_8416226[]; extern const u8 gFameCheckerText_ListMenuCursor[]; @@ -144,32 +157,139 @@ extern const u8 gUnknown_841C693[]; extern const u16 gUnknown_841F408[]; // my rodata -extern const struct BgTemplate gUnknown_8463134[3]; -extern void (*const gUnknown_8463140[])(u8 taskId); -extern const struct MenuAction gUnknown_8463150[]; -extern const u8 gUnknown_8463168[]; -extern const u8 gUnknown_846316B[]; -extern const TaskFunc gUnknown_8463170[]; -extern const u8 gUnknown_8463178[]; -extern const u8 gUnknown_846317C[]; -extern const u16 gUnknown_8463180[]; -extern const struct TextColor gUnknown_8463184[]; -extern const struct WindowTemplate gUnknown_8463190[]; -extern const struct WindowTemplate gUnknown_84631E0; -extern const struct WindowTemplate gUnknown_84631E8[]; -extern const struct CompressedSpriteSheet gUnknown_8463218; -extern const struct SpriteTemplate gUnknown_8463220; -extern const u16 gUnknown_8463238[]; +const struct BgTemplate gUnknown_8463134[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + } +}; -// graphics -extern const u32 gUnknown_8E845D8[]; -extern const u32 gUnknown_8E84A24[]; -extern const u32 gUnknown_8E84B70[]; -extern const u32 gUnknown_8E84CB0[]; -extern const u32 gUnknown_8E84D20[]; -extern const u32 gUnknown_8E84F20[]; -extern const u32 gUnknown_8E85068[]; -extern const u8 gUnknown_8E99118[]; +void (*const gUnknown_8463140[])(u8 taskId) = { + sub_8132414, + sub_8132868, + sub_8132908, + sub_81328B8 +}; + +const struct MenuAction gUnknown_8463150[] = { + {gUnknown_84161A0, sub_81325F0}, + {gUnknown_84161B2, sub_813265C}, + {gUnknown_84161C8, sub_81327FC}, +}; + +const u8 gUnknown_8463168[] = {0, 1, 2}; +const u8 gUnknown_846316B[] = {1, 2, 0}; +const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; + +const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); +const u8 gUnknown_846317C[] = _(" "); + +ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; + +const struct TextColor gUnknown_8463184[] = { + {0, 1, 2}, + {0, 2, 3}, + {0, 3, 6}, + {0, 14, 10} +}; + +const struct WindowTemplate gUnknown_8463190[] = { + {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081}, + {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f}, + {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9}, + {0x00, 0x00, 0x01, 0x0a, 0x02, 0x0f, 0x0235}, + {0x00, 0x01, 0x0d, 0x05, 0x06, 0x0c, 0x0249}, + {0x00, 0x07, 0x0d, 0x05, 0x06, 0x0c, 0x0267}, + {0x01, 0x02, 0x0f, 0x1a, 0x04, 0x0b, 0x0285}, + {0x01, 0x11, 0x09, 0x0c, 0x04, 0x0f, 0x02ed}, + {0x01, 0x01, 0x01, 0x08, 0x03, 0x0d, 0x031d}, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; + +const struct WindowTemplate gUnknown_84631E8[] = { + {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf}, + {0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01cf} +}; + +const struct OamData gOamData_84631F8 = { + .size = 2, + .priority = 2 +}; + +const union AnimCmd gUnknown_8463200[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8463208[] = { + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_8463210[] = { + gUnknown_8463200, + gUnknown_8463208 +}; + +const struct CompressedSpriteSheet gUnknown_8463218 = { + (const void *)gUnknown_8E84D90, + 0x400, + 400 +}; + +const struct SpriteTemplate gUnknown_8463220 = { + 400, + 400, + &gOamData_84631F8, + gUnknown_8463210, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const u16 gUnknown_8463238[] = { + 0x000, + 0x090, + 0x080, + 0x0c0, + 0x060, + 0x050, + 0x0b0, + 0x0a0, + 0x0e0, + 0x000, + 0x010, + 0x020, + 0x030, + 0x040, + 0x0d0, + 0x070, + 0x100, + 0x0f0 +}; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) { From 016c99ad0be74d4e13a9500d0bd8af830572d39a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 22:16:27 -0400 Subject: [PATCH 091/318] Disassemble some strings relating to tm_case --- data/data_83FECCC.s | 98 ++++++++++++++++++++++++++++++++++++--------- src/tm_case.c | 12 +++--- 2 files changed, 85 insertions(+), 25 deletions(-) diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 072ea050f..dab75e5b5 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -755,64 +755,124 @@ gFameCheckerText_Cancel:: @ 84161C1 .string "CANCEL$" gUnknown_84161C8:: @ 84161C8 - .incbin "baserom.gba", 0x4161C8, 0x5 + .string "EXIT$" gUnknown_84161CD:: @ 84161CD - .incbin "baserom.gba", 0x4161CD, 0x22 + .string "$" + +gUnknown_84161CE:: + .string "キャンセル$" + +gUnknown_84161D4:: + .string "ITEM$" + +gUnknown_84161D9:: + .string "MAIL$" + +gUnknown_84161DE:: + .string "TAKE$" + +gUnknown_84161E3:: + .string "STORE$" + +gUnknown_84161E9:: + .string "CHECK$" gUnknown_84161EF:: @ 84161EF - .incbin "baserom.gba", 0x4161EF, 0x13 + .string "NONE$" + +gUnknown_84161F4:: + .string "OPEN$" + +gUnknown_84161F9:: + .string "DESELECT$" gUnknown_8416202:: @ 8416202 - .incbin "baserom.gba", 0x416202, 0xA + .string "???$" + +gUnknown_8416206:: + .string "?????$" gUnknown_841620C:: @ 841620C - .incbin "baserom.gba", 0x41620C, 0x2 + .string "/$" gUnknown_841620E:: @ 841620E - .incbin "baserom.gba", 0x41620E, 0x2 + .string "-$" gUnknown_8416210:: @ 8416210 - .incbin "baserom.gba", 0x416210, 0x3 + .string "--$" gUnknown_8416213:: @ 8416213 - .incbin "baserom.gba", 0x416213, 0x4 + .string "---$" gUnknown_8416217:: @ 8416217 - .incbin "baserom.gba", 0x416217, 0x8 + .string "-------$" gUnknown_841621F:: @ 841621F - .incbin "baserom.gba", 0x41621F, 0x2 + .string "♂$" gUnknown_8416221:: @ 8416221 - .incbin "baserom.gba", 0x416221, 0x2 + .string "♀$" gUnknown_8416223:: @ 8416223 - .incbin "baserom.gba", 0x416223, 0x3 + .string "{UNKNOWN_F9 0x05}$" gUnknown_8416226:: @ 8416226 - .incbin "baserom.gba", 0x416226, 0x12 + .string "{UNKNOWN_F9 0x08}{CLEAR 0x01}$" + +gUnknown_841622C:: + .string "{UNKNOWN_F9 0x04}$" + +gUnknown_841622F:: + .string "{ESCAPE 0x03}$" + +gUnknown_8416233:: + .string "{UNKNOWN_F9 0x07}{UNKNOWN_F9 0x08}$" gUnknown_8416238:: @ 8416238 - .incbin "baserom.gba", 0x416238, 0x3 + .string "{UNKNOWN_F9 0x06}$" gFameCheckerText_ListMenuCursor:: @ 841623B .string "â–¶$" gUnknown_841623D:: @ 841623D - .incbin "baserom.gba", 0x41623D, 0x25 + .string "YES\nNO$" + +gUnknown_8416244:: + .string "Go back to the\nprevious menu.$" gUnknown_8416262:: @ 8416262 - .incbin "baserom.gba", 0x416262, 0x23 + .string "What would you like to do?$" + +gUnknown_841627D:: + .string "POKéDEX$" gUnknown_8416285:: @ 8416285 - .incbin "baserom.gba", 0x416285, 0x24 + .string "BAG$" + +gUnknown_8416289:: + .string "ãƒã‚±ãƒŠãƒ“$" + +gUnknown_841628E:: + .string "{PLAYER}$" + +gUnknown_8416291:: + .string "SAVE$" + +gUnknown_8416296:: + .string "OPTION$" + +gUnknown_841629D:: + .string "EXIT$" + +gUnknown_84162A2:: + .string "RETIRE$" gUnknown_84162A9:: @ 84162A9 - .incbin "baserom.gba", 0x4162A9, 0x10 + .string "{STR_VAR_1}/{STR_VAR_2}\nBALLS {STR_VAR_3}$" gUnknown_84162B9:: @ 84162B9 - .incbin "baserom.gba", 0x4162B9, 0x4 + .string "×{STR_VAR_1}$" gUnknown_84162BD:: @ 84162BD .string " BERRY$" diff --git a/src/tm_case.c b/src/tm_case.c index 3cb840875..6bb74407b 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -87,7 +87,7 @@ void sub_8132120(void); void sub_8132170(void); void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); -void sub_8132414(u8 taskId); +void SelectTMAction_FromFieldBag(u8 taskId); void sub_8132568(u8 taskId); void sub_81325F0(u8 taskId); void sub_813265C(u8 taskId); @@ -98,7 +98,7 @@ void sub_8132780(u8 taskId); void sub_81327FC(u8 taskId); void sub_8132868(u8 taskId); void sub_81328B8(u8 taskId); -void sub_8132908(u8 taskId); +void SelectTMAction_FromSellMenu(u8 taskId); void sub_81329C4(u8 taskId); void sub_8132A34(u8 taskId); void sub_8132A48(u8 taskId); @@ -186,9 +186,9 @@ const struct BgTemplate gUnknown_8463134[] = { }; void (*const gUnknown_8463140[])(u8 taskId) = { - sub_8132414, + SelectTMAction_FromFieldBag, sub_8132868, - sub_8132908, + SelectTMAction_FromSellMenu, sub_81328B8 }; @@ -801,7 +801,7 @@ void sub_81323E4(u8 taskId) gTasks[taskId].func = sub_81322D4; } -void sub_8132414(u8 taskId) +void SelectTMAction_FromFieldBag(u8 taskId) { u8 * strbuf; sub_8133368(2); @@ -992,7 +992,7 @@ void sub_81328B8(u8 taskId) } } -void sub_8132908(u8 taskId) +void SelectTMAction_FromSellMenu(u8 taskId) { s16 * data = gTasks[taskId].data; From d5504aefaefc62da33e714ee4fd314fea105b7b8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Apr 2019 08:49:52 -0400 Subject: [PATCH 092/318] tm_case documentation, 1 --- asm/item.s | 56 ++--- asm/item_menu.s | 10 +- asm/item_use.s | 4 +- asm/new_game.s | 2 +- asm/party_menu.s | 2 +- data/data_835B488.s | 2 +- data/data_83FECCC.s | 4 +- data/graphics.s | 5 +- graphics/tm_case/unk_8E99118.png | Bin 0 -> 99 bytes include/strings.h | 23 ++ include/tm_case.h | 8 + src/tm_case.c | 358 ++++++++++++++----------------- 12 files changed, 243 insertions(+), 231 deletions(-) create mode 100644 graphics/tm_case/unk_8E99118.png create mode 100644 include/tm_case.h diff --git a/asm/item.s b/asm/item.s index 19e87ad10..49722bbea 100644 --- a/asm/item.s +++ b/asm/item.s @@ -1577,12 +1577,12 @@ ItemId_GetItem: @ 809A8BC lsrs r0, 16 movs r1, 0x2C muls r0, r1 - ldr r1, _0809A8D8 @ =gUnknown_83DB028 + ldr r1, _0809A8D8 @ =gItems adds r0, r1 pop {r1} bx r1 .align 2, 0 -_0809A8D8: .4byte gUnknown_83DB028 +_0809A8D8: .4byte gItems thumb_func_end ItemId_GetItem thumb_func_start itemid_get_number @@ -1590,7 +1590,7 @@ itemid_get_number: @ 809A8DC push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A8FC @ =gUnknown_83DB028 + ldr r4, _0809A8FC @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1602,7 +1602,7 @@ itemid_get_number: @ 809A8DC pop {r1} bx r1 .align 2, 0 -_0809A8FC: .4byte gUnknown_83DB028 +_0809A8FC: .4byte gItems thumb_func_end itemid_get_number thumb_func_start itemid_get_market_price @@ -1610,7 +1610,7 @@ itemid_get_market_price: @ 809A900 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A920 @ =gUnknown_83DB028 + ldr r4, _0809A920 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1622,7 +1622,7 @@ itemid_get_market_price: @ 809A900 pop {r1} bx r1 .align 2, 0 -_0809A920: .4byte gUnknown_83DB028 +_0809A920: .4byte gItems thumb_func_end itemid_get_market_price thumb_func_start ItemId_GetHoldEffect @@ -1630,7 +1630,7 @@ ItemId_GetHoldEffect: @ 809A924 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A944 @ =gUnknown_83DB028 + ldr r4, _0809A944 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1642,7 +1642,7 @@ ItemId_GetHoldEffect: @ 809A924 pop {r1} bx r1 .align 2, 0 -_0809A944: .4byte gUnknown_83DB028 +_0809A944: .4byte gItems thumb_func_end ItemId_GetHoldEffect thumb_func_start ItemId_GetHoldEffectParam @@ -1650,7 +1650,7 @@ ItemId_GetHoldEffectParam: @ 809A948 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A968 @ =gUnknown_83DB028 + ldr r4, _0809A968 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1662,7 +1662,7 @@ ItemId_GetHoldEffectParam: @ 809A948 pop {r1} bx r1 .align 2, 0 -_0809A968: .4byte gUnknown_83DB028 +_0809A968: .4byte gItems thumb_func_end ItemId_GetHoldEffectParam thumb_func_start ItemId_GetDescription @@ -1670,7 +1670,7 @@ ItemId_GetDescription: @ 809A96C push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A98C @ =gUnknown_83DB028 + ldr r4, _0809A98C @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1683,7 +1683,7 @@ ItemId_GetDescription: @ 809A96C pop {r1} bx r1 .align 2, 0 -_0809A98C: .4byte gUnknown_83DB028 +_0809A98C: .4byte gItems thumb_func_end ItemId_GetDescription thumb_func_start itemid_is_unique @@ -1691,7 +1691,7 @@ itemid_is_unique: @ 809A990 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A9B0 @ =gUnknown_83DB028 + ldr r4, _0809A9B0 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1703,7 +1703,7 @@ itemid_is_unique: @ 809A990 pop {r1} bx r1 .align 2, 0 -_0809A9B0: .4byte gUnknown_83DB028 +_0809A9B0: .4byte gItems thumb_func_end itemid_is_unique thumb_func_start itemid_get_x19 @@ -1711,7 +1711,7 @@ itemid_get_x19: @ 809A9B4 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A9D4 @ =gUnknown_83DB028 + ldr r4, _0809A9D4 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1723,7 +1723,7 @@ itemid_get_x19: @ 809A9B4 pop {r1} bx r1 .align 2, 0 -_0809A9D4: .4byte gUnknown_83DB028 +_0809A9D4: .4byte gItems thumb_func_end itemid_get_x19 thumb_func_start ItemId_GetPocket @@ -1731,7 +1731,7 @@ ItemId_GetPocket: @ 809A9D8 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809A9F8 @ =gUnknown_83DB028 + ldr r4, _0809A9F8 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1743,7 +1743,7 @@ ItemId_GetPocket: @ 809A9D8 pop {r1} bx r1 .align 2, 0 -_0809A9F8: .4byte gUnknown_83DB028 +_0809A9F8: .4byte gItems thumb_func_end ItemId_GetPocket thumb_func_start ItemId_GetType @@ -1751,7 +1751,7 @@ ItemId_GetType: @ 809A9FC push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809AA1C @ =gUnknown_83DB028 + ldr r4, _0809AA1C @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1763,7 +1763,7 @@ ItemId_GetType: @ 809A9FC pop {r1} bx r1 .align 2, 0 -_0809AA1C: .4byte gUnknown_83DB028 +_0809AA1C: .4byte gItems thumb_func_end ItemId_GetType thumb_func_start ItemId_GetFieldFunc @@ -1771,7 +1771,7 @@ ItemId_GetFieldFunc: @ 809AA20 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809AA40 @ =gUnknown_83DB028 + ldr r4, _0809AA40 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1784,7 +1784,7 @@ ItemId_GetFieldFunc: @ 809AA20 pop {r1} bx r1 .align 2, 0 -_0809AA40: .4byte gUnknown_83DB028 +_0809AA40: .4byte gItems thumb_func_end ItemId_GetFieldFunc thumb_func_start ItemId_GetBattleUsage @@ -1792,7 +1792,7 @@ ItemId_GetBattleUsage: @ 809AA44 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809AA64 @ =gUnknown_83DB028 + ldr r4, _0809AA64 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1805,7 +1805,7 @@ ItemId_GetBattleUsage: @ 809AA44 pop {r1} bx r1 .align 2, 0 -_0809AA64: .4byte gUnknown_83DB028 +_0809AA64: .4byte gItems thumb_func_end ItemId_GetBattleUsage thumb_func_start ItemId_GetBattleFunc @@ -1813,7 +1813,7 @@ ItemId_GetBattleFunc: @ 809AA68 push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809AA88 @ =gUnknown_83DB028 + ldr r4, _0809AA88 @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1826,7 +1826,7 @@ ItemId_GetBattleFunc: @ 809AA68 pop {r1} bx r1 .align 2, 0 -_0809AA88: .4byte gUnknown_83DB028 +_0809AA88: .4byte gItems thumb_func_end ItemId_GetBattleFunc thumb_func_start ItemId_GetSecondaryId @@ -1834,7 +1834,7 @@ ItemId_GetSecondaryId: @ 809AA8C push {r4,lr} lsls r0, 16 lsrs r0, 16 - ldr r4, _0809AAAC @ =gUnknown_83DB028 + ldr r4, _0809AAAC @ =gItems bl SanitizeItemId lsls r0, 16 lsrs r0, 16 @@ -1847,7 +1847,7 @@ ItemId_GetSecondaryId: @ 809AA8C pop {r1} bx r1 .align 2, 0 -_0809AAAC: .4byte gUnknown_83DB028 +_0809AAAC: .4byte gItems thumb_func_end ItemId_GetSecondaryId .align 2, 0 @ Don't pad with nop. diff --git a/asm/item_menu.s b/asm/item_menu.s index b9dc2669a..7ebe3b1cd 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -4763,7 +4763,7 @@ sub_810A434: @ 810A434 ldr r1, _0810A444 @ =sub_810A45C movs r0, 0x1 movs r2, 0 - bl sub_81317F8 + bl InitTMCase pop {r0} bx r0 .align 2, 0 @@ -4892,7 +4892,7 @@ sub_810A52C: @ 810A52C ldr r1, _0810A53C @ =sub_810A554 movs r0, 0x3 movs r2, 0 - bl sub_81317F8 + bl InitTMCase pop {r0} bx r0 .align 2, 0 @@ -5037,7 +5037,7 @@ sub_810A654: @ 810A654 ldr r1, _0810A664 @ =sub_810A67C movs r0, 0x2 movs r2, 0 - bl sub_81317F8 + bl InitTMCase pop {r0} bx r0 .align 2, 0 @@ -6993,7 +6993,7 @@ _0810B68C: bl sub_810AECC ldr r0, _0810B6D4 @ =gUnknown_203AD10 ldr r1, [r0] - ldr r0, _0810B6D8 @ =sub_8132E64 + ldr r0, _0810B6D8 @ =PokeDude_InitTMCase str r0, [r1] mov r0, r9 subs r0, 0x8 @@ -7003,7 +7003,7 @@ _0810B68C: b _0810B6E6 .align 2, 0 _0810B6D4: .4byte gUnknown_203AD10 -_0810B6D8: .4byte sub_8132E64 +_0810B6D8: .4byte PokeDude_InitTMCase _0810B6DC: .4byte sub_810B070 _0810B6E0: ldrh r0, [r6, 0x10] diff --git a/asm/item_use.s b/asm/item_use.s index 2b425dec2..79dcb290a 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -1048,7 +1048,7 @@ sub_80A17D4: @ 80A17D4 ldr r1, _080A17E4 @ =UseFameCheckerFromMenu movs r0, 0 movs r2, 0 - bl sub_81317F8 + bl InitTMCase pop {r0} bx r0 .align 2, 0 @@ -1071,7 +1071,7 @@ sub_80A17E8: @ 80A17E8 ldr r1, _080A181C @ =c2_exit_to_overworld_2_switch movs r0, 0 movs r2, 0x1 - bl sub_81317F8 + bl InitTMCase adds r0, r4, 0 bl DestroyTask _080A1812: diff --git a/asm/new_game.s b/asm/new_game.s index d1d5a1487..63bfd9523 100644 --- a/asm/new_game.s +++ b/asm/new_game.s @@ -183,7 +183,7 @@ sub_8054A28: @ 8054A28 bl ZeroPlayerPartyMons bl ZeroEnemyPartyMons bl sub_81089BC - bl sub_81320AC + bl ResetTMCaseCursorPos bl sub_813D6E4 bl sub_811089C bl Random diff --git a/asm/party_menu.s b/asm/party_menu.s index 085d0da85..5a4a458bd 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -12606,7 +12606,7 @@ sub_8124DA0: @ 8124DA0 movs r0, 0x5 movs r1, 0 movs r2, 0xFF - bl sub_81317F8 + bl InitTMCase pop {r0} bx r0 thumb_func_end sub_8124DA0 diff --git a/data/data_835B488.s b/data/data_835B488.s index 1377d8599..2c8a853a8 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -568,7 +568,7 @@ gUnknown_83D427C:: @ 83D427C gUnknown_83D4294:: @ 83D4294 .incbin "baserom.gba", 0x3D4294, 0x6D94 -gUnknown_83DB028:: @ 83DB028 +gItems:: @ 83DB028 .incbin "baserom.gba", 0x3DB028, 0x4074 gUnknown_83DF09C:: @ 83DF09C diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index dab75e5b5..a212d0acb 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -517,6 +517,7 @@ gUnknown_8415A08:: @ 8415A08 gUnknown_8415A10:: @ 8415A10 .incbin "baserom.gba", 0x415A10, 0x10 + @ strings gExpandedPlaceholder_Empty:: @ 8415A20 .incbin "baserom.gba", 0x415A20, 0x1 @@ -2376,8 +2377,9 @@ gUnknown_841EDCA:: @ 841EDCA .incbin "baserom.gba", 0x41EDCA, 0x61 gUnknown_841EE2B:: @ 841EE2B - .incbin "baserom.gba", 0x41EE2B, 0x19 + .incbin "baserom.gba", 0x41EE2B, 0x17 + .align 2 gUnknown_841EE44:: @ 841EE44 .incbin "baserom.gba", 0x41EE44, 0x20 diff --git a/data/graphics.s b/data/graphics.s index a1e421f2c..5b54a94e2 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16072,7 +16072,10 @@ gUnknown_8E985D8:: @ 8E985D8 .incbin "baserom.gba", 0xE985D8, 0xB40 @UNKNOWN, FALSEPOSITIVE? gUnknown_8E99118:: @ 8E99118 - .incbin "baserom.gba", 0xE99118, 0xE0 @UNKNOWN + .incbin "graphics/tm_case/unk_8E99118.4bpp" + +gUnknown_8E99198:: + .incbin "baserom.gba", 0xE99198, 0x60 @UNKNOWN gUnknown_8E991F8:: @ 8E991F8 .incbin "baserom.gba", 0xE991F8, 0x674 diff --git a/graphics/tm_case/unk_8E99118.png b/graphics/tm_case/unk_8E99118.png new file mode 100644 index 0000000000000000000000000000000000000000..426e404fe0dc256ffc0ad6f408b691104d4e782f GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExTAnVBAsjQ4e^?6hJTpGi!lZJn vXXac7mei64Nm&mi3kiv52iE@JXRVN6NQ{e==k5O?2h#27>gTe~DWM4fe3}}V literal 0 HcmV?d00001 diff --git a/include/strings.h b/include/strings.h index 40021a01d..c2173242f 100644 --- a/include/strings.h +++ b/include/strings.h @@ -92,4 +92,27 @@ extern const u8 gText_Coins[]; extern const u8 gText_EggNickname[]; extern const u8 gText_Pokemon[]; +extern const u8 gUnknown_84161A0[]; +extern const u8 gUnknown_84161B2[]; +extern const u8 gUnknown_84161C8[]; +extern const u8 gUnknown_8416213[]; +extern const u8 gUnknown_8416226[]; +extern const u8 gFameCheckerText_ListMenuCursor[]; +extern const u8 gUnknown_84162B9[]; +extern const u8 gUnknown_8416301[]; +extern const u8 gUnknown_841632A[]; +extern const u8 gUnknown_841635E[]; +extern const u8 gUnknown_84166D3[]; +extern const u8 gUnknown_84166DB[]; +extern const u8 gUnknown_84166E1[]; +extern const u8 gUnknown_84166FF[]; +extern const u8 gUnknown_8416703[]; +extern const u8 gUnknown_84168F1[]; +extern const u8 gUnknown_8416911[]; +extern const u8 gUnknown_8416936[]; +extern const u8 gUnknown_8416959[]; +extern const u8 gUnknown_841C587[]; +extern const u8 gUnknown_841C693[]; +extern const u16 gUnknown_841F408[]; + #endif //GUARD_STRINGS_H diff --git a/include/tm_case.h b/include/tm_case.h new file mode 100644 index 000000000..f77eae457 --- /dev/null +++ b/include/tm_case.h @@ -0,0 +1,8 @@ +#ifndef GUARD_TM_CASE_H +#define GUARD_TM_CASE_H + +void InitTMCase(u8 a0, void (* a1)(void), u8 a2); +void ResetTMCaseCursorPos(void); +void PokeDude_InitTMCase(void); + +#endif //GUARD_TM_CASE_H diff --git a/src/tm_case.c b/src/tm_case.c index 6bb74407b..94b3278ab 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -24,6 +24,8 @@ #include "data2.h" #include "scanline_effect.h" #include "sound.h" +#include "strings.h" +#include "tm_case.h" #include "menu_indicators.h" #include "constants/items.h" #include "constants/songs.h" @@ -61,103 +63,77 @@ struct UnkStruct_203B11C u16 unk_162; }; -EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; -EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; -EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; -EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer -EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; -EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; -EWRAM_DATA u16 * gUnknown_203B12C = NULL; +static EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; +static EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; +static EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; +static EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer +static EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; +static EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; +static EWRAM_DATA u16 * gUnknown_203B12C = NULL; -void sub_8131894(void); -bool8 sub_81318C0(void); -void sub_8131A8C(void); -void sub_8131AB8(void); -bool8 sub_8131B20(void); -void sub_8131C10(void); -void sub_8131C50(void); -void sub_8131D48(u8 * dest, u16 itemId); -void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); -void sub_8131E68(u8 windowId, s32 itemId, u8 y); -void sub_8131F0C(s32 itemIndex); -void sub_8131FB0(u8 a0, u8 a1); -void sub_8132018(void); -void sub_81320BC(void); -void sub_8132120(void); -void sub_8132170(void); -void sub_813226C(u8 taskId); -void sub_81322D4(u8 taskId); -void SelectTMAction_FromFieldBag(u8 taskId); -void sub_8132568(u8 taskId); -void sub_81325F0(u8 taskId); -void sub_813265C(u8 taskId); -void sub_81326F8(u8 taskId); -void sub_8132714(u8 taskId); -void sub_8132758(u8 taskId); -void sub_8132780(u8 taskId); -void sub_81327FC(u8 taskId); -void sub_8132868(u8 taskId); -void sub_81328B8(u8 taskId); -void SelectTMAction_FromSellMenu(u8 taskId); -void sub_81329C4(u8 taskId); -void sub_8132A34(u8 taskId); -void sub_8132A48(u8 taskId); -void sub_8132AAC(u8 taskId); -void sub_8132B5C(s16 quantity, s32 value); -void sub_8132BC8(u8 taskId); -void sub_8132CAC(u8 taskId); -void sub_8132D34(u8 taskId); -void sub_8132E0C(u8 taskId); -void sub_8132F20(u8 taskId); -void sub_8132F60(u8 taskId); -void sub_8133244(void); -void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -void sub_8133354(u8 windowId); -void sub_8133368(u8 windowId); -void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); -void sub_81333C4(void); -void sub_8133404(void); -void sub_8133444(u16 itemId); -void sub_81335B0(u8 windowId, u8 x, u8 y); -void sub_81335E0(void); -void sub_8133604(u8 taskId, const TaskFunc * ptrs); -u8 sub_8133630(u8 * a0, u8 a1); -void sub_8133664(u8 * a0); -u8 sub_813368C(u16 itemId); -void sub_8133714(struct Sprite * sprite, u8 var); -void sub_8133730(u8 type); -void sub_8133790(struct Sprite * sprite, u8 var); -void sub_81337E4(u8 a0, u16 itemId); -void sub_8133810(struct Sprite * sprite); -void sub_81338A8(void); +static void sub_8131894(void); +static bool8 sub_81318C0(void); +static void sub_8131A8C(void); +static void sub_8131AB8(void); +static bool8 sub_8131B20(void); +static void sub_8131C10(void); +static void sub_8131C50(void); +static void GetTMNumberAndMoveString(u8 * dest, u16 itemId); +static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void sub_8131E68(u8 windowId, s32 itemId, u8 y); +static void sub_8131F0C(s32 itemIndex); +static void sub_8131FB0(u8 a0, u8 a1); +static void sub_8132018(void); +static void sub_81320BC(void); +static void sub_8132120(void); +static void sub_8132170(void); +static void sub_813226C(u8 taskId); +static void sub_81322D4(u8 taskId); +static void SelectTMAction_FromFieldBag(u8 taskId); +static void sub_8132568(u8 taskId); +static void sub_81325F0(u8 taskId); +static void sub_813265C(u8 taskId); +static void sub_81326F8(u8 taskId); +static void sub_8132714(u8 taskId); +static void sub_8132758(u8 taskId); +static void sub_8132780(u8 taskId); +static void sub_81327FC(u8 taskId); +static void sub_8132868(u8 taskId); +static void sub_81328B8(u8 taskId); +static void SelectTMAction_FromSellMenu(u8 taskId); +static void sub_81329C4(u8 taskId); +static void sub_8132A34(u8 taskId); +static void sub_8132A48(u8 taskId); +static void sub_8132AAC(u8 taskId); +static void sub_8132B5C(s16 quantity, s32 value); +static void sub_8132BC8(u8 taskId); +static void sub_8132CAC(u8 taskId); +static void sub_8132D34(u8 taskId); +static void sub_8132E0C(u8 taskId); +static void sub_8132F20(u8 taskId); +static void sub_8132F60(u8 taskId); +static void sub_8133244(void); +static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +static void sub_8133354(u8 windowId); +static void sub_8133368(u8 windowId); +static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); +static void sub_81333C4(void); +static void sub_8133404(void); +static void sub_8133444(u16 itemId); +static void sub_81335B0(u8 windowId, u8 x, u8 y); +static void sub_81335E0(void); +static void sub_8133604(u8 taskId, const TaskFunc * ptrs); +static u8 sub_8133630(u8 * a0, u8 a1); +static void sub_8133664(u8 * a0); +static u8 sub_813368C(u16 itemId); +static void sub_8133714(struct Sprite * sprite, u8 var); +static void sub_8133730(u8 type); +static void sub_8133790(struct Sprite * sprite, u8 var); +static void sub_81337E4(u8 a0, u16 itemId); +static void sub_8133810(struct Sprite * sprite); +static void sub_81338A8(void); -// data_83FECCC -extern const u8 gUnknown_84161A0[]; -extern const u8 gUnknown_84161B2[]; -extern const u8 gUnknown_84161C8[]; -extern const u8 gUnknown_8416213[]; -extern const u8 gUnknown_8416226[]; -extern const u8 gFameCheckerText_ListMenuCursor[]; -extern const u8 gUnknown_84162B9[]; -extern const u8 gUnknown_8416301[]; -extern const u8 gUnknown_841632A[]; -extern const u8 gUnknown_841635E[]; -extern const u8 gUnknown_84166D3[]; -extern const u8 gUnknown_84166DB[]; -extern const u8 gUnknown_84166E1[]; -extern const u8 gUnknown_84166FF[]; -extern const u8 gUnknown_8416703[]; -extern const u8 gUnknown_84168F1[]; -extern const u8 gUnknown_8416911[]; -extern const u8 gUnknown_8416936[]; -extern const u8 gUnknown_8416959[]; -extern const u8 gUnknown_841C587[]; -extern const u8 gUnknown_841C693[]; - -extern const u16 gUnknown_841F408[]; - -// my rodata -const struct BgTemplate gUnknown_8463134[] = { +static const struct BgTemplate gUnknown_8463134[] = { { .bg = 0, .charBaseIndex = 0, @@ -185,36 +161,36 @@ const struct BgTemplate gUnknown_8463134[] = { } }; -void (*const gUnknown_8463140[])(u8 taskId) = { +static void (*const gUnknown_8463140[])(u8 taskId) = { SelectTMAction_FromFieldBag, sub_8132868, SelectTMAction_FromSellMenu, sub_81328B8 }; -const struct MenuAction gUnknown_8463150[] = { +static const struct MenuAction gUnknown_8463150[] = { {gUnknown_84161A0, sub_81325F0}, {gUnknown_84161B2, sub_813265C}, {gUnknown_84161C8, sub_81327FC}, }; -const u8 gUnknown_8463168[] = {0, 1, 2}; -const u8 gUnknown_846316B[] = {1, 2, 0}; -const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; +static const u8 gUnknown_8463168[] = {0, 1, 2}; +static const u8 gUnknown_846316B[] = {1, 2, 0}; +static const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; -const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); -const u8 gUnknown_846317C[] = _(" "); +static const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); +static const u8 gUnknown_846317C[] = _(" "); -ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; +static ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; -const struct TextColor gUnknown_8463184[] = { +static const struct TextColor gUnknown_8463184[] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 6}, {0, 14, 10} }; -const struct WindowTemplate gUnknown_8463190[] = { +static const struct WindowTemplate gUnknown_8463190[] = { {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081}, {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f}, {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9}, @@ -227,40 +203,40 @@ const struct WindowTemplate gUnknown_8463190[] = { DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; +static const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; -const struct WindowTemplate gUnknown_84631E8[] = { +static const struct WindowTemplate gUnknown_84631E8[] = { {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf}, {0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01cf} }; -const struct OamData gOamData_84631F8 = { +static const struct OamData gOamData_84631F8 = { .size = 2, .priority = 2 }; -const union AnimCmd gUnknown_8463200[] = { +static const union AnimCmd gUnknown_8463200[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd gUnknown_8463208[] = { +static const union AnimCmd gUnknown_8463208[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -const union AnimCmd *const gUnknown_8463210[] = { +static const union AnimCmd *const gUnknown_8463210[] = { gUnknown_8463200, gUnknown_8463208 }; -const struct CompressedSpriteSheet gUnknown_8463218 = { +static const struct CompressedSpriteSheet gUnknown_8463218 = { (const void *)gUnknown_8E84D90, 0x400, 400 }; -const struct SpriteTemplate gUnknown_8463220 = { +static const struct SpriteTemplate gUnknown_8463220 = { 400, 400, &gOamData_84631F8, @@ -270,7 +246,7 @@ const struct SpriteTemplate gUnknown_8463220 = { SpriteCallbackDummy }; -const u16 gUnknown_8463238[] = { +static const u16 gUnknown_8463238[] = { 0x000, 0x090, 0x080, @@ -291,7 +267,7 @@ const u16 gUnknown_8463238[] = { 0x0f0 }; -void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) +void InitTMCase(u8 a0, void (* a1)(void), u8 a2) { sub_8131A8C(); gUnknown_203B118 = Alloc(sizeof(struct UnkStruct_203B118)); @@ -308,7 +284,7 @@ void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) SetMainCallback2(sub_8131894); } -void sub_8131864(void) +static void sub_8131864(void) { RunTasks(); AnimateSprites(); @@ -317,14 +293,14 @@ void sub_8131864(void) UpdatePaletteFade(); } -void sub_8131880(void) +static void sub_8131880(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_8131894(void) +static void sub_8131894(void) { while (1) { @@ -337,7 +313,7 @@ void sub_8131894(void) } } -bool8 sub_81318C0(void) +static bool8 sub_81318C0(void) { u8 taskId; @@ -437,7 +413,7 @@ bool8 sub_81318C0(void) return FALSE; } -void sub_8131A8C(void) +static void sub_8131A8C(void) { gUnknown_203B118 = NULL; gUnknown_203B120 = NULL; @@ -446,7 +422,7 @@ void sub_8131A8C(void) gUnknown_203B12C = NULL; } -void sub_8131AB8(void) +static void sub_8131AB8(void) { void ** ptr; sub_80BF7C8(); @@ -464,7 +440,7 @@ void sub_8131AB8(void) ShowBg(2); } -bool8 sub_8131B20(void) +static bool8 sub_8131B20(void) { switch (gUnknown_203B118->unk_12) { @@ -504,21 +480,21 @@ bool8 sub_8131B20(void) return FALSE; } -void sub_8131C10(void) +static void sub_8131C10(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); } -void sub_8131C50(void) +static void sub_8131C50(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; for (i = 0; i < gUnknown_203B118->unk_06; i++) { - sub_8131D48(gUnknown_203B128[i], pocket->itemSlots[i].itemId); + GetTMNumberAndMoveString(gUnknown_203B128[i], pocket->itemSlots[i].itemId); gUnknown_203B124[i].unk_00 = gUnknown_203B128[i]; gUnknown_203B124[i].unk_04 = i; } @@ -544,7 +520,7 @@ void sub_8131C50(void) gUnknown_3005E70.scrollMultiple = 0; } -void sub_8131D48(u8 * dest, u16 itemId) +static void GetTMNumberAndMoveString(u8 * dest, u16 itemId) { StringCopy(gStringVar4, gUnknown_84166FF); if (itemId >= ITEM_HM01) @@ -566,7 +542,7 @@ void sub_8131D48(u8 * dest, u16 itemId) StringCopy(dest, gStringVar4); } -void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u16 itemId; @@ -584,7 +560,7 @@ void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) sub_8133444(itemId); } -void sub_8131E68(u8 windowId, s32 itemId, u8 y) +static void sub_8131E68(u8 windowId, s32 itemId, u8 y) { if (itemId != -2) { @@ -601,7 +577,7 @@ void sub_8131E68(u8 windowId, s32 itemId, u8 y) } } -void sub_8131F0C(s32 itemIndex) +static void sub_8131F0C(s32 itemIndex) { const u8 * str; if (itemIndex != -2) @@ -616,18 +592,18 @@ void sub_8131F0C(s32 itemIndex) sub_81332EC(1, 2, str, 2, 3, 1, 0, 0, 0); } -void sub_8131F64(s32 a0) +static void sub_8131F64(s32 a0) { sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1); schedule_bg_copy_tilemap_to_vram(2); } -void sub_8131F90(u8 a0, u8 a1) +static void sub_8131F90(u8 a0, u8 a1) { sub_8131FB0(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); } -void sub_8131FB0(u8 a0, u8 a1) +static void sub_8131FB0(u8 a0, u8 a1) { if (a1 == 0xFF) { @@ -640,18 +616,18 @@ void sub_8131FB0(u8 a0, u8 a1) } } -void sub_8132018(void) +static void sub_8132018(void) { gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, gUnknown_203B118->unk_06 - gUnknown_203B118->unk_05 + 1, 0x6E, 0x6E, &gUnknown_203B10C.unk_0a); } -void sub_8132054(void) +static void sub_8132054(void) { gUnknown_203B118->unk_0a = 1; gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gUnknown_203B118->unk_0a); } -void sub_813208C(void) +static void sub_813208C(void) { if (gUnknown_203B118->unk_08 != 0xFF) { @@ -660,13 +636,13 @@ void sub_813208C(void) } } -void sub_81320AC(void) +void ResetTMCaseCursorPos(void) { gUnknown_203B10C.unk_08 = 0; gUnknown_203B10C.unk_0a = 0; } -void sub_81320BC(void) +static void sub_81320BC(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; @@ -682,7 +658,7 @@ void sub_81320BC(void) gUnknown_203B118->unk_05 = min(gUnknown_203B118->unk_06 + 1, 5); } -void sub_8132120(void) +static void sub_8132120(void) { if (gUnknown_203B10C.unk_0a != 0) { @@ -698,7 +674,7 @@ void sub_8132120(void) } } -void sub_8132170(void) +static void sub_8132170(void) { u8 i; if (gUnknown_203B10C.unk_08 > 3) @@ -712,7 +688,7 @@ void sub_8132170(void) } } -void sub_81321D4(void) +static void sub_81321D4(void) { if (gUnknown_203B118 != NULL) Free(gUnknown_203B118); @@ -727,13 +703,13 @@ void sub_81321D4(void) FreeAllWindowBuffers(); } -void sub_8132230(u8 taskId) +static void sub_8132230(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); gTasks[taskId].func = sub_813226C; } -void sub_813226C(u8 taskId) +static void sub_813226C(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -750,7 +726,7 @@ void sub_813226C(u8 taskId) } } -void sub_81322D4(u8 taskId) +static void sub_81322D4(u8 taskId) { s16 * data = gTasks[taskId].data; s32 input; @@ -794,14 +770,14 @@ void sub_81322D4(u8 taskId) } } -void sub_81323E4(u8 taskId) +static void sub_81323E4(u8 taskId) { sub_8131F64(0); sub_8132018(); gTasks[taskId].func = sub_81322D4; } -void SelectTMAction_FromFieldBag(u8 taskId) +static void SelectTMAction_FromFieldBag(u8 taskId) { u8 * strbuf; sub_8133368(2); @@ -820,7 +796,7 @@ void SelectTMAction_FromFieldBag(u8 taskId) AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c); ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0); strbuf = Alloc(256); - sub_8131D48(strbuf, gSpecialVar_ItemId); + GetTMNumberAndMoveString(strbuf, gSpecialVar_ItemId); StringAppend(strbuf, gUnknown_8416301); sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1); Free(strbuf); @@ -834,7 +810,7 @@ void SelectTMAction_FromFieldBag(u8 taskId) gTasks[taskId].func = sub_8132568; } -void sub_8132568(u8 taskId) +static void sub_8132568(u8 taskId) { s8 input; @@ -857,7 +833,7 @@ void sub_8132568(u8 taskId) } } -void sub_81325F0(u8 taskId) +static void sub_81325F0(u8 taskId) { sub_8133664(&gUnknown_203B118->unk_07); sub_810F4D8(2, 0); @@ -877,7 +853,7 @@ void sub_81325F0(u8 taskId) } } -void sub_813265C(u8 taskId) +static void sub_813265C(u8 taskId) { s16 * data = gTasks[taskId].data; u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]); @@ -907,19 +883,19 @@ void sub_813265C(u8 taskId) } } -void sub_81326F8(u8 taskId) +static void sub_81326F8(u8 taskId) { sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758); } -void sub_8132714(u8 taskId) +static void sub_8132714(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gUnknown_841635E); sub_813337C(taskId, 2, gStringVar4, sub_8132758); } -void sub_8132758(u8 taskId) +static void sub_8132758(u8 taskId) { if (JOY_NEW(A_BUTTON)) { @@ -928,7 +904,7 @@ void sub_8132758(u8 taskId) } } -void sub_8132780(u8 taskId) +static void sub_8132780(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -945,7 +921,7 @@ void sub_8132780(u8 taskId) sub_81323E4(taskId); } -void sub_81327FC(u8 taskId) +static void sub_81327FC(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -962,7 +938,7 @@ void sub_81327FC(u8 taskId) sub_81323E4(taskId); } -void sub_8132868(u8 taskId) +static void sub_8132868(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -977,7 +953,7 @@ void sub_8132868(u8 taskId) } } -void sub_81328B8(u8 taskId) +static void sub_81328B8(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -992,7 +968,7 @@ void sub_81328B8(u8 taskId) } } -void SelectTMAction_FromSellMenu(u8 taskId) +static void SelectTMAction_FromSellMenu(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1021,7 +997,7 @@ void SelectTMAction_FromSellMenu(u8 taskId) } } -void sub_81329C4(u8 taskId) +static void sub_81329C4(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1030,12 +1006,12 @@ void sub_81329C4(u8 taskId) sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34); } -void sub_8132A34(u8 taskId) +static void sub_8132A34(u8 taskId) { sub_8133604(taskId, gUnknown_8463170); } -void sub_8132A48(u8 taskId) +static void sub_8132A48(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1052,7 +1028,7 @@ void sub_8132A48(u8 taskId) sub_81323E4(taskId); } -void sub_8132AAC(u8 taskId) +static void sub_8132AAC(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1068,7 +1044,7 @@ void sub_8132AAC(u8 taskId) gTasks[taskId].func = sub_8132BC8; } -void sub_8132B5C(s16 quantity, s32 amount) +static void sub_8132B5C(s16 quantity, s32 amount) { FillWindowPixelBuffer(7, 0x11); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); @@ -1077,7 +1053,7 @@ void sub_8132B5C(s16 quantity, s32 amount) PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); } -void sub_8132BC8(u8 taskId) +static void sub_8132BC8(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1111,7 +1087,7 @@ void sub_8132BC8(u8 taskId) } } -void sub_8132CAC(u8 taskId) +static void sub_8132CAC(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1123,7 +1099,7 @@ void sub_8132CAC(u8 taskId) sub_813337C(taskId, 2, gStringVar4, sub_8132D34); } -void sub_8132D34(u8 taskId) +static void sub_8132D34(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1141,7 +1117,7 @@ void sub_8132D34(u8 taskId) gTasks[taskId].func = sub_8132E0C; } -void sub_8132E0C(u8 taskId) +static void sub_8132E0C(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { @@ -1156,7 +1132,7 @@ void sub_8132E0C(u8 taskId) } } -void sub_8132E64(void) +void PokeDude_InitTMCase(void) { gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C)); memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); @@ -1165,15 +1141,15 @@ void sub_8132E64(void) gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a; ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM)); ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems)); - sub_81320AC(); + ResetTMCaseCursorPos(); AddBagItem(ITEM_TM01, 1); AddBagItem(ITEM_TM03, 1); AddBagItem(ITEM_TM09, 1); AddBagItem(ITEM_TM35, 1); - sub_81317F8(4, sub_815ABFC, 0); + InitTMCase(4, sub_815ABFC, 0); } -void sub_8132F20(u8 taskId) +static void sub_8132F20(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1185,7 +1161,7 @@ void sub_8132F20(u8 taskId) } } -void sub_8132F60(u8 taskId) +static void sub_8132F60(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1314,7 +1290,7 @@ void sub_8132F60(u8 taskId) } } -void sub_8133244(void) +static void sub_8133244(void) { u8 i; @@ -1338,34 +1314,34 @@ void sub_8133244(void) schedule_bg_copy_tilemap_to_vram(0); } -void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8463184[colorIdx], speed, str); } -void sub_8133354(u8 windowId) +static void sub_8133354(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E); } -void sub_8133368(u8 windowId) +static void sub_8133368(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D); } -void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) +static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) { DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func); schedule_bg_copy_tilemap_to_vram(1); } -void sub_81333C4(void) +static void sub_81333C4(void) { u32 distance = 72 - GetStringWidth(1, gUnknown_84166D3, 0); box_print(3, 1, distance / 2, 1, &gUnknown_8463184[0], 0, gUnknown_84166D3); } -void sub_8133404(void) +static void sub_8133404(void) { sub_8107D68(4, 19, 0, 0); sub_8107D68(4, 20, 0, 12); @@ -1374,7 +1350,7 @@ void sub_8133404(void) CopyWindowToVram(4, 2); } -void sub_8133444(u16 itemId) +static void sub_8133444(u16 itemId) { u8 i; u16 move; @@ -1415,22 +1391,22 @@ void sub_8133444(u16 itemId) } } -void sub_81335B0(u8 windowId, u8 x, u8 y) +static void sub_81335B0(u8 windowId, u8 x, u8 y) { BlitBitmapToWindow(windowId, gUnknown_8E99118, x, y, 16, 12); } -void sub_81335E0(void) +static void sub_81335E0(void) { PrintMoneyAmountInMoneyBoxWithBorder(8, 0x78, 0xD, GetMoney(&gSaveBlock1Ptr->money)); } -void sub_8133604(u8 taskId, const TaskFunc *ptrs) +static void sub_8133604(u8 taskId, const TaskFunc *ptrs) { sub_80BF5D0(taskId, &gUnknown_84631E0, 2, 0, 2, 0x5B, 0x0E, ptrs); } -u8 sub_8133630(u8 * a0, u8 a1) +static u8 sub_8133630(u8 * a0, u8 a1) { if (*a0 == 0xFF) { @@ -1441,7 +1417,7 @@ u8 sub_8133630(u8 * a0, u8 a1) return *a0; } -void sub_8133664(u8 * a0) +static void sub_8133664(u8 * a0) { sub_810F4D8(*a0, FALSE); ClearWindowTilemap(*a0); @@ -1450,7 +1426,7 @@ void sub_8133664(u8 * a0) *a0 = 0xFF; } -u8 sub_813368C(u16 itemId) +static u8 sub_813368C(u16 itemId) { u8 spriteId = CreateSprite(&gUnknown_8463220, 0x29, 0x2E, 0); u8 r5; @@ -1469,7 +1445,7 @@ u8 sub_813368C(u16 itemId) } } -void sub_8133714(struct Sprite * sprite, u8 idx) +static void sub_8133714(struct Sprite * sprite, u8 idx) { if (idx >= 50) StartSpriteAnim(sprite, 1); @@ -1477,7 +1453,7 @@ void sub_8133714(struct Sprite * sprite, u8 idx) StartSpriteAnim(sprite, 0); } -void sub_8133730(u8 type) +static void sub_8133730(u8 type) { u8 palIndex = IndexOfSpritePaletteTag(400) << 4; LoadPalette(gUnknown_203B12C + gUnknown_8463238[type], 0x100 | palIndex, 0x20); @@ -1487,7 +1463,7 @@ void sub_8133730(u8 type) } } -void sub_8133790(struct Sprite * sprite, u8 var) +static void sub_8133790(struct Sprite * sprite, u8 var) { s32 x, y; if (var == 0xFF) @@ -1509,14 +1485,14 @@ void sub_8133790(struct Sprite * sprite, u8 var) sprite->pos1.y = y; } -void sub_81337E4(u8 spriteId, u16 itemId) +static void sub_81337E4(u8 spriteId, u16 itemId) { gSprites[spriteId].data[0] = itemId; gSprites[spriteId].data[1] = 0; gSprites[spriteId].callback = sub_8133810; } -void sub_8133810(struct Sprite * sprite) +static void sub_8133810(struct Sprite * sprite) { switch (sprite->data[1]) { @@ -1547,7 +1523,7 @@ void sub_8133810(struct Sprite * sprite) } } -void sub_81338A8(void) +static void sub_81338A8(void) { struct SpritePalette spritePalette; From 0298df9b5f01b5913bd038523ee6beabbb628ee3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Apr 2019 09:47:38 -0400 Subject: [PATCH 093/318] Extract TM case graphics --- data/graphics.s | 16 +- graphics/tm_case/unk_8E845D8.png | Bin 0 -> 951 bytes graphics/tm_case/unk_8E84A24.bin | Bin 0 -> 2048 bytes graphics/tm_case/unk_8E84B70.bin | Bin 0 -> 2048 bytes graphics/tm_case/unk_8E84CB0.pal | 67 ++++++++ graphics/tm_case/unk_8E84D20.pal | 67 ++++++++ graphics/tm_case/unk_8E84D90.png | Bin 0 -> 293 bytes graphics/tm_case/unk_8E84F20.pal | 259 +++++++++++++++++++++++++++++++ graphics/tm_case/unk_8E85068.pal | 19 +++ graphics_file_rules.mk | 3 + 10 files changed, 423 insertions(+), 8 deletions(-) create mode 100644 graphics/tm_case/unk_8E845D8.png create mode 100644 graphics/tm_case/unk_8E84A24.bin create mode 100644 graphics/tm_case/unk_8E84B70.bin create mode 100644 graphics/tm_case/unk_8E84CB0.pal create mode 100644 graphics/tm_case/unk_8E84D20.pal create mode 100644 graphics/tm_case/unk_8E84D90.png create mode 100644 graphics/tm_case/unk_8E84F20.pal create mode 100644 graphics/tm_case/unk_8E85068.pal diff --git a/data/graphics.s b/data/graphics.s index 5b54a94e2..2a6e50c87 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13953,28 +13953,28 @@ gFile_graphics_interface_bag_swap_palette:: @ 8E845C8 .align 2 gUnknown_8E845D8:: @ 8E845D8 - .incbin "baserom.gba", 0xE845D8, 0x44C + .incbin "graphics/tm_case/unk_8E845D8.4bpp.lz" gUnknown_8E84A24:: @ 8E84A24 - .incbin "baserom.gba", 0xE84A24, 0x14C + .incbin "graphics/tm_case/unk_8E84A24.bin.lz" gUnknown_8E84B70:: @ 8E84B70 - .incbin "baserom.gba", 0xE84B70, 0x140 + .incbin "graphics/tm_case/unk_8E84B70.bin.lz" gUnknown_8E84CB0:: @ 8E84CB0 - .incbin "baserom.gba", 0xE84CB0, 0x70 + .incbin "graphics/tm_case/unk_8E84CB0.gbapal.lz" gUnknown_8E84D20:: @ 8E84D20 - .incbin "baserom.gba", 0xE84D20, 0x70 + .incbin "graphics/tm_case/unk_8E84D20.gbapal.lz" gUnknown_8E84D90:: @ 8E84D90 - .incbin "baserom.gba", 0xE84D90, 0x190 + .incbin "graphics/tm_case/unk_8E84D90.4bpp.lz" gUnknown_8E84F20:: @ 8E84F20 - .incbin "baserom.gba", 0xE84F20, 0x148 + .incbin "graphics/tm_case/unk_8E84F20.gbapal.lz" gUnknown_8E85068:: @ 8E85068 - .incbin "baserom.gba", 0xE85068, 0x28 + .incbin "graphics/tm_case/unk_8E85068.gbapal.lz" gUnknown_8E85090:: @ 8E85090 .incbin "baserom.gba", 0xE85090, 0x378 diff --git a/graphics/tm_case/unk_8E845D8.png b/graphics/tm_case/unk_8E845D8.png new file mode 100644 index 0000000000000000000000000000000000000000..2729ac568c00a627399512663d9011085854800a GIT binary patch literal 951 zcmV;o14#UdP)HV%7{;%(3Y9t-BT=DDl?{88b2fx3;Yf^Wl9L!SnU$r4u^mt{qD<-74OuGco~>Ph zg%u;gh!iWzKVaUE^TnU7sE~N3i~W0_d!Lj2#v%dv1x-<>j{}sb2lh9>v`YUCuu1j6 zX$4TUOn<%}kKcXmX-olbFm1`^Zvic|%#gUSOA>dDKD!wo>C16Iv)4uu}D>MG}u zNrBNy4oIifwARPvXo*<{m@z;yK!pQIYULcxW(T4qcCb0YRRzHN+WXw~%rSe5ZQ6<* zv;~|%2I$cFXa{~$&N32$Pf%3D{*|qasjJ4FCyRRe-G};KE52 zV45$+ss(}?nJpGI0^n8aMu$|UEpQDEW#PQGOIh0=@p!-UJzQe$I2o@K{VLmPbAzBy*2wMWs!Z;LxuW=lr z#WK3q4#$%m@EifKh!7wLl?R^1@o%vB6h)F9;0y=|?meBP5Htc5FyE!@p$ps-ixlu) zP$NI!#Gp^vLl*>$gEzo^mdj;?ZOBI6LG@j4DA58PU483^1W>AtRi_~+Gd+JU zT_1RU*I0SIg}|2h`D+s}gbxgr5~>jh%uG-4VjJzfu1^HP3XW4;Yaj>^@O*#B1Whx1 zH!(B6hnKj&?{|slDm6UBCrafW%}^ zl4>B~?3Ny&>8DZ#fbl5OWi?RJ`riTT%(qkJU-~-pX>>OrSszqh{|g{lXFiSY25eMy Z{|~29B7fdUcNzcy002ovPDHLkV1h#Lu$TY< literal 0 HcmV?d00001 diff --git a/graphics/tm_case/unk_8E84A24.bin b/graphics/tm_case/unk_8E84A24.bin new file mode 100644 index 0000000000000000000000000000000000000000..a4962cbaaf6d333c470e6996f11df897ca92f00e GIT binary patch literal 2048 zcmeIv$qs@*5QO0xK|x$-7Qr2O|CfY@(~M)Rgrk%1{HK#@gN-9XOfoRoe%K))X`fH~;_u literal 0 HcmV?d00001 diff --git a/graphics/tm_case/unk_8E84B70.bin b/graphics/tm_case/unk_8E84B70.bin new file mode 100644 index 0000000000000000000000000000000000000000..0b13dc93a0153c8feee1b539d1b3ed516dd36e29 GIT binary patch literal 2048 zcmeIxHxh$D3_#J{oBW|O1`l8l$v{DJLGb-=L#ilIi?r>&=8t5Ie5|o@yh`ISOCt`4U_-? literal 0 HcmV?d00001 diff --git a/graphics/tm_case/unk_8E84CB0.pal b/graphics/tm_case/unk_8E84CB0.pal new file mode 100644 index 000000000..2464f7026 --- /dev/null +++ b/graphics/tm_case/unk_8E84CB0.pal @@ -0,0 +1,67 @@ +JASC-PAL +0100 +64 +0 65 90 +255 0 255 +41 57 82 +65 180 164 +255 0 255 +255 0 255 +106 205 197 +197 230 205 +238 230 172 +255 255 197 +180 180 180 +230 255 238 +139 106 172 +115 115 115 +164 205 172 +148 180 156 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +16 172 222 +0 82 115 +0 115 139 +0 123 197 +205 164 238 +106 164 222 +82 123 197 +164 172 131 +106 205 197 +238 238 238 +90 90 65 +115 115 90 +189 189 164 +65 180 164 +222 156 0 +238 180 16 +246 213 57 +255 246 123 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +24 82 180 +0 90 131 +24 82 180 +24 82 180 diff --git a/graphics/tm_case/unk_8E84D20.pal b/graphics/tm_case/unk_8E84D20.pal new file mode 100644 index 000000000..99fd00240 --- /dev/null +++ b/graphics/tm_case/unk_8E84D20.pal @@ -0,0 +1,67 @@ +JASC-PAL +0100 +64 +0 65 90 +255 0 255 +41 57 82 +213 139 115 +255 0 255 +255 0 255 +255 172 148 +197 230 205 +238 230 172 +255 255 197 +180 180 180 +230 255 238 +139 106 172 +115 115 115 +164 205 172 +148 180 156 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +16 172 222 +0 82 115 +0 115 139 +0 123 197 +205 164 238 +106 164 222 +82 123 197 +164 172 131 +255 172 148 +238 238 238 +90 90 65 +115 115 90 +189 189 164 +213 139 115 +222 156 0 +238 180 16 +246 213 57 +255 246 123 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +24 82 180 +0 90 131 +24 82 180 +24 82 180 diff --git a/graphics/tm_case/unk_8E84D90.png b/graphics/tm_case/unk_8E84D90.png new file mode 100644 index 0000000000000000000000000000000000000000..a268318222899624764b58637b1482f8771f3e3a GIT binary patch literal 293 zcmV+=0owkFP)CFpON@kziIXng z_@xK!-EY;Mvfe-iP__X~y#U}uX}=N6oWI+Y+DFr+0dA>=Y!3}o5T^&n?PZBRq5!Uu z)F7iRG$10GJ8mu`VW0vL#Hr(ENhnm0f(sWxN=Oz8zA Date: Mon, 15 Apr 2019 13:17:19 -0400 Subject: [PATCH 094/318] tm_case and peripheral documentation --- asm/bag.s | 4 +- asm/berry_pouch.s | 112 ++-- asm/buy_menu_helpers.s | 2 +- asm/daycare.s | 8 +- asm/field_specials.s | 2 +- asm/item.s | 12 +- asm/item_menu.s | 150 ++--- asm/item_pc.s | 48 +- asm/learn_move.s | 28 +- asm/link.s | 4 +- asm/link_rfu_3.s | 50 +- asm/list_menu.s | 18 +- asm/mailbox_pc.s | 4 +- asm/menu_helpers.s | 6 +- asm/new_menu_helpers.s | 16 +- asm/party_menu.s | 8 +- asm/player_pc.s | 8 +- asm/pokedex_screen.s | 22 +- asm/pokemon_summary_screen.s | 24 +- asm/script_menu.s | 4 +- asm/shop.s | 26 +- asm/teachy_tv.s | 74 +-- asm/trade.s | 4 +- asm/union_room_chat.s | 4 +- data/data_83FECCC.s | 278 ++++++++-- data/data_8471F00.s | 7 +- data/graphics.s | 2 +- graphics/tm_case/unk_841F408.pal | 19 + include/graphics.h | 2 +- include/item.h | 4 +- include/list_menu.h | 5 +- include/menu_helpers.h | 2 +- include/new_menu_helpers.h | 2 +- include/strings.h | 42 +- include/teachy_tv.h | 2 +- src/fame_checker.c | 2 +- src/text.c | 4 +- src/tm_case.c | 923 ++++++++++++++++--------------- sym_common.txt | 2 +- sym_ewram.txt | 2 +- 40 files changed, 1083 insertions(+), 853 deletions(-) create mode 100644 graphics/tm_case/unk_841F408.pal diff --git a/asm/bag.s b/asm/bag.s index e7c72d082..aeac17e69 100644 --- a/asm/bag.s +++ b/asm/bag.s @@ -356,7 +356,7 @@ sub_810BAE8: @ 810BAE8 str r3, [sp, 0xC] movs r2, 0x2 movs r3, 0 - bl sub_80BF5D0 + bl CreateYesNoMenuWithCallbacks add sp, 0x10 pop {r0} bx r0 @@ -381,7 +381,7 @@ sub_810BB14: @ 810BB14 str r3, [sp, 0xC] movs r2, 0x2 movs r3, 0 - bl sub_80BF5D0 + bl CreateYesNoMenuWithCallbacks add sp, 0x10 pop {r0} bx r0 diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index aa8a2ce78..762938e3c 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -255,7 +255,7 @@ _0813CF62: adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0813CF98 @ =gUnknown_3005E70 + ldr r0, _0813CF98 @ =gMultiuseListMenuTemplate ldr r2, _0813CF9C @ =gUnknown_203F370 ldrh r1, [r2, 0xA] ldrh r2, [r2, 0x8] @@ -273,7 +273,7 @@ _0813CF62: b _0813CFD2 .align 2, 0 _0813CF94: .4byte sub_813DA68 -_0813CF98: .4byte gUnknown_3005E70 +_0813CF98: .4byte gMultiuseListMenuTemplate _0813CF9C: .4byte gUnknown_203F370 _0813CFA0: .4byte gTasks _0813CFA4: @@ -615,10 +615,10 @@ _0813D254: ldr r2, [r0] lsls r0, r6, 3 adds r0, r2 - ldr r1, _0813D290 @ =gUnknown_84166DB + ldr r1, _0813D290 @ =gText_Close str r1, [r0] str r6, [r0, 0x4] - ldr r1, _0813D294 @ =gUnknown_3005E70 + ldr r1, _0813D294 @ =gMultiuseListMenuTemplate str r2, [r1] ldr r0, _0813D298 @ =gUnknown_203F370 ldrb r0, [r0, 0x4] @@ -637,8 +637,8 @@ _0813D280: .4byte gBagPockets + 0x20 _0813D284: .4byte gUnknown_203F36C _0813D288: .4byte gUnknown_203F380 _0813D28C: .4byte gUnknown_203F37C -_0813D290: .4byte gUnknown_84166DB -_0813D294: .4byte gUnknown_3005E70 +_0813D290: .4byte gText_Close +_0813D294: .4byte gMultiuseListMenuTemplate _0813D298: .4byte gUnknown_203F370 _0813D29C: ldr r0, _0813D310 @ =gUnknown_203F36C @@ -715,10 +715,10 @@ sub_813D31C: @ 813D31C lsls r5, r1, 16 lsrs r5, 16 ldr r4, _0813D384 @ =gStringVar4 - ldr r1, _0813D388 @ =gUnknown_84166FF + ldr r1, _0813D388 @ =gText_FontSize0 adds r0, r4, 0 bl StringCopy - ldr r1, _0813D38C @ =gUnknown_8416226 + ldr r1, _0813D38C @ =gOtherText_UnkF9_08_Clear_01 adds r0, r4, 0 bl StringAppend ldr r6, _0813D390 @ =gStringVar1 @@ -737,7 +737,7 @@ sub_813D31C: @ 813D31C ldr r1, _0813D394 @ =gUnknown_84643B4 adds r0, r4, 0 bl StringAppend - ldr r1, _0813D398 @ =gUnknown_8416703 + ldr r1, _0813D398 @ =gText_FontSize2 adds r0, r4, 0 bl StringAppend adds r0, r4, 0 @@ -753,11 +753,11 @@ sub_813D31C: @ 813D31C bx r0 .align 2, 0 _0813D384: .4byte gStringVar4 -_0813D388: .4byte gUnknown_84166FF -_0813D38C: .4byte gUnknown_8416226 +_0813D388: .4byte gText_FontSize0 +_0813D38C: .4byte gOtherText_UnkF9_08_Clear_01 _0813D390: .4byte gStringVar1 _0813D394: .4byte gUnknown_84643B4 -_0813D398: .4byte gUnknown_8416703 +_0813D398: .4byte gText_FontSize2 thumb_func_end sub_813D31C thumb_func_start sub_813D39C @@ -806,7 +806,7 @@ _0813D3D6: lsls r1, r5, 16 lsrs r1, 16 movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 ldr r1, [r4] @@ -857,10 +857,10 @@ sub_813D430: @ 813D430 lsrs r4, 16 movs r0, 0x5 adds r1, r4, 0 - bl sub_809A798 + bl BagGetItemIdByPocketPosition movs r0, 0x5 adds r1, r4, 0 - bl sub_809A7B4 + bl BagGetQuantityByPocketPosition adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 @@ -869,7 +869,7 @@ sub_813D430: @ 813D430 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _0813D4A8 @ =gStringVar4 - ldr r1, _0813D4AC @ =gUnknown_84162B9 + ldr r1, _0813D4AC @ =gText_TimesStrVar1 adds r0, r4, 0 bl StringExpandPlaceholders str r5, [sp] @@ -894,7 +894,7 @@ _0813D498: _0813D4A0: .4byte gUnknown_203F36C _0813D4A4: .4byte gStringVar1 _0813D4A8: .4byte gStringVar4 -_0813D4AC: .4byte gUnknown_84162B9 +_0813D4AC: .4byte gText_TimesStrVar1 thumb_func_end sub_813D430 thumb_func_start sub_813D4B0 @@ -980,7 +980,7 @@ sub_813D538: @ 813D538 lsls r1, 16 lsrs r1, 16 movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl ItemId_GetDescription @@ -1409,7 +1409,7 @@ sub_813D844: @ 813D844 ldr r4, _0813D884 @ =gUnknown_203F37A subs r2, r4, 0x2 adds r1, r4, 0 - bl sub_810713C + bl DestroyListMenu ldr r0, _0813D888 @ =gUnknown_203F36C ldr r0, [r0] ldr r0, [r0] @@ -1574,7 +1574,7 @@ sub_813D940: @ 813D940 movs r2, 0x2 movs r3, 0x3 bl ConvertIntToDecimalStringN - ldr r1, _0813D9F4 @ =gUnknown_84162B9 + ldr r1, _0813D9F4 @ =gText_TimesStrVar1 mov r0, r9 bl StringExpandPlaceholders movs r0, 0xA @@ -1601,7 +1601,7 @@ sub_813D940: @ 813D940 _0813D9E8: .4byte gTasks+0x8 _0813D9EC: .4byte gStringVar1 _0813D9F0: .4byte gStringVar4 -_0813D9F4: .4byte gUnknown_84162B9 +_0813D9F4: .4byte gText_TimesStrVar1 thumb_func_end sub_813D940 thumb_func_start sub_813D9F8 @@ -1631,7 +1631,7 @@ sub_813D9F8: @ 813D9F8 adds r3, r5, 0 bl ConvertIntToDecimalStringN ldr r4, _0813DA60 @ =gStringVar4 - ldr r1, _0813DA64 @ =gUnknown_84162B9 + ldr r1, _0813DA64 @ =gText_TimesStrVar1 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0xA @@ -1654,7 +1654,7 @@ sub_813D9F8: @ 813D9F8 .align 2, 0 _0813DA5C: .4byte gStringVar1 _0813DA60: .4byte gStringVar4 -_0813DA64: .4byte gUnknown_84162B9 +_0813DA64: .4byte gText_TimesStrVar1 thumb_func_end sub_813D9F8 thumb_func_start sub_813DA68 @@ -1748,7 +1748,7 @@ _0813DB10: lsls r1, r5, 16 lsrs r1, 16 movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition ldr r1, _0813DB34 @ =gSpecialVar_ItemId b _0813DB46 .align 2, 0 @@ -1784,11 +1784,11 @@ _0813DB58: lsrs r4, 16 movs r0, 0x5 adds r1, r4, 0 - bl sub_809A7B4 + bl BagGetQuantityByPocketPosition strh r0, [r7, 0x4] movs r0, 0x5 adds r1, r4, 0 - bl sub_809A798 + bl BagGetItemIdByPocketPosition ldr r1, _0813DBA8 @ =gSpecialVar_ItemId strh r0, [r1] ldr r0, _0813DBAC @ =gTasks @@ -2504,11 +2504,11 @@ _0813E18A: ldr r4, _0813E1F8 @ =gUnknown_203F37A subs r2, r4, 0x2 adds r1, r4, 0 - bl sub_810713C + bl DestroyListMenu bl sub_813D8AC bl sub_813D6F4 bl sub_813D204 - ldr r0, _0813E1FC @ =gUnknown_3005E70 + ldr r0, _0813E1FC @ =gMultiuseListMenuTemplate subs r4, 0xA ldrh r1, [r4, 0xA] ldrh r2, [r4, 0x8] @@ -2534,7 +2534,7 @@ _0813E1EC: .4byte gTasks+0x8 _0813E1F0: .4byte gMain _0813E1F4: .4byte gSpecialVar_ItemId _0813E1F8: .4byte gUnknown_203F37A -_0813E1FC: .4byte gUnknown_3005E70 +_0813E1FC: .4byte gMultiuseListMenuTemplate thumb_func_end sub_813E164 thumb_func_start sub_813E200 @@ -2595,14 +2595,14 @@ sub_813E274: @ 813E274 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _0813E288 @ =gUnknown_841632A + ldr r2, _0813E288 @ =gText_ThereIsNoPokemon ldr r3, _0813E28C @ =sub_813E290 movs r1, 0x2 bl sub_813EB20 pop {r0} bx r0 .align 2, 0 -_0813E288: .4byte gUnknown_841632A +_0813E288: .4byte gText_ThereIsNoPokemon _0813E28C: .4byte sub_813E290 thumb_func_end sub_813E274 @@ -2646,11 +2646,11 @@ sub_813E2B8: @ 813E2B8 ldr r4, _0813E318 @ =gUnknown_203F37A subs r2, r4, 0x2 adds r1, r4, 0 - bl sub_810713C + bl DestroyListMenu bl sub_813D8AC bl sub_813D6F4 bl sub_813D204 - ldr r0, _0813E31C @ =gUnknown_3005E70 + ldr r0, _0813E31C @ =gMultiuseListMenuTemplate subs r4, 0xA ldrh r1, [r4, 0xA] ldrh r2, [r4, 0x8] @@ -2671,7 +2671,7 @@ sub_813E2B8: @ 813E2B8 .align 2, 0 _0813E314: .4byte gTasks+0x8 _0813E318: .4byte gUnknown_203F37A -_0813E31C: .4byte gUnknown_3005E70 +_0813E31C: .4byte gMultiuseListMenuTemplate thumb_func_end sub_813E2B8 thumb_func_start sub_813E320 @@ -2726,7 +2726,7 @@ sub_813E37C: @ 813E37C adds r0, r6, r7 ldrh r1, [r0, 0x2] movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 @@ -2817,7 +2817,7 @@ sub_813E428: @ 813E428 ldr r1, _0813E478 @ =gStringVar1 bl CopyItemName ldr r4, _0813E47C @ =gStringVar4 - ldr r1, _0813E480 @ =gUnknown_84168F1 + ldr r1, _0813E480 @ =gText_OhNoICantBuyThat adds r0, r4, 0 bl StringExpandPlaceholders bl sub_80BF8E4 @@ -2834,7 +2834,7 @@ _0813E470: .4byte gTasks+0x8 _0813E474: .4byte gSpecialVar_ItemId _0813E478: .4byte gStringVar1 _0813E47C: .4byte gStringVar4 -_0813E480: .4byte gUnknown_84168F1 +_0813E480: .4byte gText_OhNoICantBuyThat _0813E484: .4byte sub_813E2B8 _0813E488: movs r0, 0x1 @@ -2857,7 +2857,7 @@ _0813E4A8: ldr r1, _0813E4D4 @ =gStringVar1 bl CopyItemName ldr r4, _0813E4D8 @ =gStringVar4 - ldr r1, _0813E4DC @ =gUnknown_8416911 + ldr r1, _0813E4DC @ =gText_HowManyWouldYouLikeToSell adds r0, r4, 0 bl StringExpandPlaceholders bl sub_80BF8E4 @@ -2875,7 +2875,7 @@ _0813E4CE: .align 2, 0 _0813E4D4: .4byte gStringVar1 _0813E4D8: .4byte gStringVar4 -_0813E4DC: .4byte gUnknown_8416911 +_0813E4DC: .4byte gText_HowManyWouldYouLikeToSell _0813E4E0: .4byte sub_813E5B8 thumb_func_end sub_813E428 @@ -2893,7 +2893,7 @@ sub_813E4E4: @ 813E4E4 ldr r6, _0813E544 @ =gStringVar3 ldrh r1, [r4, 0x2] movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -2907,7 +2907,7 @@ sub_813E4E4: @ 813E4E4 movs r3, 0x6 bl ConvertIntToDecimalStringN ldr r4, _0813E548 @ =gStringVar4 - ldr r1, _0813E54C @ =gUnknown_8416936 + ldr r1, _0813E54C @ =gText_ICanPayThisMuch_WouldThatBeOkay adds r0, r4, 0 bl StringExpandPlaceholders bl sub_80BF8E4 @@ -2925,7 +2925,7 @@ sub_813E4E4: @ 813E4E4 _0813E540: .4byte gTasks+0x8 _0813E544: .4byte gStringVar3 _0813E548: .4byte gStringVar4 -_0813E54C: .4byte gUnknown_8416936 +_0813E54C: .4byte gText_ICanPayThisMuch_WouldThatBeOkay _0813E550: .4byte sub_813E554 thumb_func_end sub_813E4E4 @@ -3004,7 +3004,7 @@ sub_813E5B8: @ 813E5B8 bl ConvertIntToDecimalStringN ldr r2, _0813E65C @ =gStringVar4 mov r8, r2 - ldr r1, _0813E660 @ =gUnknown_84162B9 + ldr r1, _0813E660 @ =gText_TimesStrVar1 mov r0, r8 bl StringExpandPlaceholders movs r0, 0xA @@ -3024,7 +3024,7 @@ sub_813E5B8: @ 813E5B8 mov r3, r9 ldrh r1, [r3, 0x2] movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -3052,7 +3052,7 @@ sub_813E5B8: @ 813E5B8 _0813E654: .4byte gTasks+0x8 _0813E658: .4byte gStringVar1 _0813E65C: .4byte gStringVar4 -_0813E660: .4byte gUnknown_84162B9 +_0813E660: .4byte gText_TimesStrVar1 _0813E664: .4byte sub_813E690 thumb_func_end sub_813E5B8 @@ -3103,7 +3103,7 @@ sub_813E690: @ 813E690 bl sub_813D9F8 ldrh r1, [r5, 0x2] movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -3192,7 +3192,7 @@ sub_813E768: @ 813E768 ldr r6, _0813E7E0 @ =gStringVar3 ldrh r1, [r4, 0x2] movs r0, 0x5 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -3206,7 +3206,7 @@ sub_813E768: @ 813E768 movs r3, 0x6 bl ConvertIntToDecimalStringN ldr r4, _0813E7E4 @ =gStringVar4 - ldr r1, _0813E7E8 @ =gUnknown_8416959 + ldr r1, _0813E7E8 @ =gText_TurnedOverItemsWorthYen adds r0, r4, 0 bl StringExpandPlaceholders ldr r3, _0813E7EC @ =sub_813E7F0 @@ -3223,7 +3223,7 @@ _0813E7D8: .4byte gSpecialVar_ItemId _0813E7DC: .4byte gStringVar1 _0813E7E0: .4byte gStringVar3 _0813E7E4: .4byte gStringVar4 -_0813E7E8: .4byte gUnknown_8416959 +_0813E7E8: .4byte gText_TurnedOverItemsWorthYen _0813E7EC: .4byte sub_813E7F0 thumb_func_end sub_813E768 @@ -3277,11 +3277,11 @@ sub_813E7F0: @ 813E7F0 ldr r4, _0813E8C8 @ =gUnknown_203F37A subs r2, r4, 0x2 adds r1, r4, 0 - bl sub_810713C + bl DestroyListMenu bl sub_813D8AC bl sub_813D6F4 bl sub_813D204 - ldr r0, _0813E8CC @ =gUnknown_3005E70 + ldr r0, _0813E8CC @ =gMultiuseListMenuTemplate subs r4, 0xA ldrh r1, [r4, 0xA] ldrh r2, [r4, 0x8] @@ -3322,7 +3322,7 @@ _0813E8BC: .4byte gTasks+0x8 _0813E8C0: .4byte gSpecialVar_ItemId _0813E8C4: .4byte gSaveBlock1Ptr _0813E8C8: .4byte gUnknown_203F37A -_0813E8CC: .4byte gUnknown_3005E70 +_0813E8CC: .4byte gMultiuseListMenuTemplate _0813E8D0: .4byte sub_813E8D4 thumb_func_end sub_813E7F0 @@ -3376,7 +3376,7 @@ sub_813E910: @ 813E910 movs r1, 0xA movs r2, 0xC0 bl sub_814FF2C - ldr r0, _0813E998 @ =gUnknown_841F408 + ldr r0, _0813E998 @ =gTMCaseMainWindowPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette @@ -3418,7 +3418,7 @@ _0813E97C: bx r0 .align 2, 0 _0813E994: .4byte gUnknown_84643B8 -_0813E998: .4byte gUnknown_841F408 +_0813E998: .4byte gTMCaseMainWindowPalette _0813E99C: .4byte gUnknown_203F38C thumb_func_end sub_813E910 @@ -3685,7 +3685,7 @@ sub_813EB7C: @ 813EB7C str r3, [sp, 0xC] movs r2, 0x2 movs r3, 0 - bl sub_80BF5D0 + bl CreateYesNoMenuWithCallbacks add sp, 0x10 pop {r0} bx r0 @@ -3710,7 +3710,7 @@ sub_813EBA8: @ 813EBA8 str r3, [sp, 0xC] movs r2, 0x2 movs r3, 0 - bl sub_80BF5D0 + bl CreateYesNoMenuWithCallbacks add sp, 0x10 pop {r0} bx r0 diff --git a/asm/buy_menu_helpers.s b/asm/buy_menu_helpers.s index 224bfa20c..04caf30a4 100644 --- a/asm/buy_menu_helpers.s +++ b/asm/buy_menu_helpers.s @@ -209,7 +209,7 @@ sub_813F7D8: @ 813F7D8 str r3, [sp, 0xC] movs r2, 0x2 movs r3, 0 - bl sub_80BF5D0 + bl CreateYesNoMenuWithCallbacks add sp, 0x10 pop {r0} bx r0 diff --git a/asm/daycare.s b/asm/daycare.s index c19aa1bdf..5f1b787af 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -2714,7 +2714,7 @@ _080467C8: adds r0, r7, 0 adds r1, r4, 0 bl StringAppend - ldr r1, _08046830 @ =gUnknown_84161C8 + ldr r1, _08046830 @ =gOtherText_Exit adds r0, r7, 0 bl StringAppend add sp, 0x28 @@ -2726,7 +2726,7 @@ _080467C8: bx r0 .align 2, 0 _0804682C: .4byte gUnknown_825F83C -_08046830: .4byte gUnknown_84161C8 +_08046830: .4byte gOtherText_Exit thumb_func_end GetDaycareLevelMenuText thumb_func_start GetDaycareLevelMenuLevelText @@ -3008,7 +3008,7 @@ _08046A46: ldrb r0, [r4, 0x8] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0xA] movs r1, 0x1 bl ClearStdWindowAndFrame @@ -3032,7 +3032,7 @@ _08046A7C: ldrb r0, [r4, 0x8] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0xA] movs r1, 0x1 bl ClearStdWindowAndFrame diff --git a/asm/field_specials.s b/asm/field_specials.s index e930a2ee7..d98798352 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -2854,7 +2854,7 @@ sub_80CBBAC: @ 80CBBAC lsrs r0, 24 movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldr r0, _080CBC28 @ =gUnknown_2039A14 ldr r0, [r0] bl Free diff --git a/asm/item.s b/asm/item.s index 49722bbea..ce20d4f8c 100644 --- a/asm/item.s +++ b/asm/item.s @@ -1404,8 +1404,8 @@ _0809A786: bx r0 thumb_func_end sub_809A720 - thumb_func_start sub_809A798 -sub_809A798: @ 809A798 + thumb_func_start BagGetItemIdByPocketPosition +BagGetItemIdByPocketPosition: @ 809A798 lsls r0, 24 lsls r1, 16 ldr r2, _0809A7B0 @ =gBagPockets @@ -1419,10 +1419,10 @@ sub_809A798: @ 809A798 bx lr .align 2, 0 _0809A7B0: .4byte gBagPockets - thumb_func_end sub_809A798 + thumb_func_end BagGetItemIdByPocketPosition - thumb_func_start sub_809A7B4 -sub_809A7B4: @ 809A7B4 + thumb_func_start BagGetQuantityByPocketPosition +BagGetQuantityByPocketPosition: @ 809A7B4 push {lr} lsls r0, 24 lsls r1, 16 @@ -1441,7 +1441,7 @@ sub_809A7B4: @ 809A7B4 bx r1 .align 2, 0 _0809A7D8: .4byte gBagPockets - thumb_func_end sub_809A7B4 + thumb_func_end BagGetQuantityByPocketPosition thumb_func_start sub_809A7DC sub_809A7DC: @ 809A7DC diff --git a/asm/item_menu.s b/asm/item_menu.s index 7ebe3b1cd..05f1a6acb 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -350,7 +350,7 @@ _0810806E: adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r0, _081080B0 @ =gUnknown_3005E70 + ldr r0, _081080B0 @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 adds r1, r4, 0 @@ -375,7 +375,7 @@ _0810806E: b _08108104 .align 2, 0 _081080AC: .4byte gUnknown_203ACFC -_081080B0: .4byte gUnknown_3005E70 +_081080B0: .4byte gMultiuseListMenuTemplate _081080B4: .4byte gTasks _081080B8: ldr r0, _081080C4 @ =gUnknown_203ACFC @@ -881,7 +881,7 @@ _0810848C: adds r0, r4 str r0, [r1] str r6, [r1, 0x4] - ldr r3, _08108554 @ =gUnknown_3005E70 + ldr r3, _08108554 @ =gMultiuseListMenuTemplate str r2, [r3] ldr r0, _08108540 @ =gUnknown_203AD10 ldr r2, [r0] @@ -952,7 +952,7 @@ _08108544: .4byte gUnknown_203AD1C _08108548: .4byte gUnknown_203AD18 _0810854C: .4byte gUnknown_8452F60 _08108550: .4byte gFameCheckerText_Cancel -_08108554: .4byte gUnknown_3005E70 +_08108554: .4byte gMultiuseListMenuTemplate _08108558: .4byte sub_81085A4 _0810855C: .4byte sub_8108654 thumb_func_end sub_810842C @@ -1029,7 +1029,7 @@ _081085BA: lsrs r0, 24 lsls r1, r5, 16 lsrs r1, 16 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 ldr r1, [r4] @@ -1129,7 +1129,7 @@ _08108690: lsls r4, 16 lsrs r4, 16 adds r1, r4, 0 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r7, r0, 16 ldrb r0, [r5, 0x6] @@ -1137,7 +1137,7 @@ _08108690: lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 - bl sub_809A7B4 + bl BagGetQuantityByPocketPosition lsls r0, 16 lsrs r4, r0, 16 ldrh r0, [r5, 0x6] @@ -1155,7 +1155,7 @@ _08108690: movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _08108724 @ =gStringVar4 - ldr r1, _08108728 @ =gUnknown_84162B9 + ldr r1, _08108728 @ =gText_TimesStrVar1 adds r0, r4, 0 bl StringExpandPlaceholders str r6, [sp] @@ -1176,7 +1176,7 @@ _08108718: .4byte gUnknown_203AD10 _0810871C: .4byte gUnknown_203ACFC _08108720: .4byte gStringVar1 _08108724: .4byte gStringVar4 -_08108728: .4byte gUnknown_84162B9 +_08108728: .4byte gText_TimesStrVar1 _0810872C: ldr r0, _08108760 @ =gSaveBlock1Ptr ldr r0, [r0] @@ -1317,7 +1317,7 @@ sub_8108818: @ 8108818 lsrs r0, 24 lsls r1, r2, 16 lsrs r1, 16 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl ItemId_GetDescription @@ -1802,7 +1802,7 @@ sub_8108B8C: @ 8108B8C adds r3, r4, 0 adds r3, 0x8 adds r2, r3 - bl sub_810713C + bl DestroyListMenu ldr r0, _08108BF0 @ =gUnknown_203AD10 ldr r0, [r0] ldr r0, [r0] @@ -2422,14 +2422,14 @@ _08109084: lsls r4, 16 lsrs r4, 16 adds r1, r4, 0 - bl sub_809A7B4 + bl BagGetQuantityByPocketPosition strh r0, [r7, 0x4] ldrb r0, [r5, 0x6] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 - bl sub_809A798 + bl BagGetItemIdByPocketPosition ldr r1, _081090D0 @ =gSpecialVar_ItemId strh r0, [r1] ldr r1, _081090D4 @ =gTasks @@ -2617,7 +2617,7 @@ sub_81091D0: @ 81091D0 adds r1, r2, r1 adds r3, 0x8 adds r2, r3 - bl sub_810713C + bl DestroyListMenu movs r0, 0 bl schedule_bg_copy_tilemap_to_vram ldr r0, _08109290 @ =gUnknown_203AD10 @@ -2773,7 +2773,7 @@ _08109358: bl sub_81087EC ldrb r0, [r4, 0x6] bl sub_810842C - ldr r0, _081093B4 @ =gUnknown_3005E70 + ldr r0, _081093B4 @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 adds r1, r4, 0 @@ -2803,7 +2803,7 @@ _081093AA: bx r0 .align 2, 0 _081093B0: .4byte gUnknown_203ACFC -_081093B4: .4byte gUnknown_3005E70 +_081093B4: .4byte gMultiuseListMenuTemplate thumb_func_end sub_8109298 thumb_func_start sub_81093B8 @@ -2850,7 +2850,7 @@ sub_81093B8: @ 81093B8 lsrs r0, 24 mov r2, r8 ldrh r1, [r2, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl ItemId_GetItem @@ -3082,7 +3082,7 @@ _081095E8: adds r7, r4, 0 adds r7, 0x8 adds r2, r7 - bl sub_810713C + bl DestroyListMenu movs r3, 0x2 ldrsh r0, [r6, r3] cmp r0, r5 @@ -3096,7 +3096,7 @@ _081095E8: _08109628: ldrb r0, [r4, 0x6] bl sub_810842C - ldr r0, _08109674 @ =gUnknown_3005E70 + ldr r0, _08109674 @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 mov r3, r8 @@ -3127,7 +3127,7 @@ _0810965C: .align 2, 0 _0810966C: .4byte gBagPockets _08109670: .4byte gUnknown_203ACFC -_08109674: .4byte gUnknown_3005E70 +_08109674: .4byte gMultiuseListMenuTemplate _08109678: .4byte sub_8108F0C thumb_func_end sub_81095AC @@ -3160,7 +3160,7 @@ sub_810967C: @ 810967C adds r7, r5, 0 adds r7, 0x8 adds r2, r7 - bl sub_810713C + bl DestroyListMenu movs r3, 0x2 ldrsh r0, [r6, r3] cmp r0, r4 @@ -3174,7 +3174,7 @@ sub_810967C: @ 810967C _081096CA: ldrb r0, [r5, 0x6] bl sub_810842C - ldr r0, _08109714 @ =gUnknown_3005E70 + ldr r0, _08109714 @ =gMultiuseListMenuTemplate ldrh r2, [r5, 0x6] lsls r2, 1 mov r3, r9 @@ -3204,7 +3204,7 @@ _081096CA: .align 2, 0 _0810970C: .4byte gTasks+0x8 _08109710: .4byte gUnknown_203ACFC -_08109714: .4byte gUnknown_3005E70 +_08109714: .4byte gMultiuseListMenuTemplate _08109718: .4byte sub_8108F0C thumb_func_end sub_810967C @@ -3232,7 +3232,7 @@ sub_810971C: @ 810971C lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 ldr r1, _081097D8 @ =gStringVar1 @@ -3267,7 +3267,7 @@ sub_810971C: @ 810971C movs r2, 0x2 movs r3, 0x3 bl ConvertIntToDecimalStringN - ldr r1, _081097E0 @ =gUnknown_84162B9 + ldr r1, _081097E0 @ =gText_TimesStrVar1 mov r0, r9 bl StringExpandPlaceholders movs r0, 0xA @@ -3295,7 +3295,7 @@ sub_810971C: @ 810971C _081097D4: .4byte gUnknown_203ACFC _081097D8: .4byte gStringVar1 _081097DC: .4byte gStringVar4 -_081097E0: .4byte gUnknown_84162B9 +_081097E0: .4byte gText_TimesStrVar1 thumb_func_end sub_810971C thumb_func_start sub_81097E4 @@ -3324,7 +3324,7 @@ sub_81097E4: @ 81097E4 adds r3, r5, 0 bl ConvertIntToDecimalStringN ldr r4, _0810984C @ =gStringVar4 - ldr r1, _08109850 @ =gUnknown_84162B9 + ldr r1, _08109850 @ =gText_TimesStrVar1 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0xA @@ -3347,7 +3347,7 @@ sub_81097E4: @ 81097E4 .align 2, 0 _08109848: .4byte gStringVar1 _0810984C: .4byte gStringVar4 -_08109850: .4byte gUnknown_84162B9 +_08109850: .4byte gText_TimesStrVar1 thumb_func_end sub_81097E4 thumb_func_start sub_8109854 @@ -4121,7 +4121,7 @@ sub_8109EA8: @ 8109EA8 lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 ldr r1, _08109F30 @ =gStringVar1 @@ -4213,14 +4213,14 @@ _08109F6E: adds r6, r4, 0 adds r6, 0x8 adds r2, r6 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0x6] bl sub_8108DC8 ldrb r0, [r4, 0x6] bl sub_81089F4 ldrb r0, [r4, 0x6] bl sub_810842C - ldr r0, _08109FFC @ =gUnknown_3005E70 + ldr r0, _08109FFC @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 adds r5, r2, r5 @@ -4251,7 +4251,7 @@ _08109FEC: .4byte gTasks+0x8 _08109FF0: .4byte gMain _08109FF4: .4byte gSpecialVar_ItemId _08109FF8: .4byte gUnknown_203ACFC -_08109FFC: .4byte gUnknown_3005E70 +_08109FFC: .4byte gMultiuseListMenuTemplate thumb_func_end sub_8109F44 thumb_func_start sub_810A000 @@ -4273,7 +4273,7 @@ sub_810A000: @ 810A000 lsls r0, 24 lsrs r0, 24 ldrh r1, [r7, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r2, r0, 16 ldr r0, _0810A048 @ =gSaveBlock1Ptr @@ -4304,10 +4304,10 @@ _0810A052: adds r6, r4, 0 adds r6, 0x8 adds r2, r6 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0x6] bl sub_810842C - ldr r0, _0810A0A4 @ =gUnknown_3005E70 + ldr r0, _0810A0A4 @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 adds r5, r2, r5 @@ -4330,7 +4330,7 @@ _0810A052: bx r0 .align 2, 0 _0810A0A0: .4byte gUnknown_203ACFC -_0810A0A4: .4byte gUnknown_3005E70 +_0810A0A4: .4byte gMultiuseListMenuTemplate thumb_func_end sub_810A000 thumb_func_start sub_810A0A8 @@ -4353,7 +4353,7 @@ sub_810A0A8: @ 810A0A8 lsls r0, 24 lsrs r0, 24 ldrh r1, [r1, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r5, r0, 16 movs r0, 0xA @@ -4427,14 +4427,14 @@ sub_810A170: @ 810A170 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _0810A184 @ =gUnknown_841632A + ldr r2, _0810A184 @ =gText_ThereIsNoPokemon ldr r3, _0810A188 @ =sub_810A1D0 movs r1, 0x2 bl sub_8108E70 pop {r0} bx r0 .align 2, 0 -_0810A184: .4byte gUnknown_841632A +_0810A184: .4byte gText_ThereIsNoPokemon _0810A188: .4byte sub_810A1D0 thumb_func_end sub_810A170 @@ -4449,7 +4449,7 @@ sub_810A18C: @ 810A18C ldr r1, _0810A1C0 @ =gStringVar1 bl CopyItemName ldr r5, _0810A1C4 @ =gStringVar4 - ldr r1, _0810A1C8 @ =gUnknown_841635E + ldr r1, _0810A1C8 @ =gText_ItemCantBeHeld adds r0, r5, 0 bl StringExpandPlaceholders ldr r3, _0810A1CC @ =sub_810A1D0 @@ -4464,7 +4464,7 @@ sub_810A18C: @ 810A18C _0810A1BC: .4byte gSpecialVar_ItemId _0810A1C0: .4byte gStringVar1 _0810A1C4: .4byte gStringVar4 -_0810A1C8: .4byte gUnknown_841635E +_0810A1C8: .4byte gText_ItemCantBeHeld _0810A1CC: .4byte sub_810A1D0 thumb_func_end sub_810A18C @@ -4519,14 +4519,14 @@ sub_810A1F8: @ 810A1F8 adds r3, r4 mov r9, r3 add r2, r9 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0x6] bl sub_8108DC8 ldrb r0, [r4, 0x6] bl sub_81089F4 ldrb r0, [r4, 0x6] bl sub_810842C - ldr r0, _0810A284 @ =gUnknown_3005E70 + ldr r0, _0810A284 @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 adds r6, r2, r6 @@ -4553,7 +4553,7 @@ sub_810A1F8: @ 810A1F8 .align 2, 0 _0810A27C: .4byte gTasks+0x8 _0810A280: .4byte gUnknown_203ACFC -_0810A284: .4byte gUnknown_3005E70 +_0810A284: .4byte gMultiuseListMenuTemplate thumb_func_end sub_810A1F8 thumb_func_start sub_810A288 @@ -4684,7 +4684,7 @@ sub_810A370: @ 810A370 lsls r0, 24 lsrs r0, 24 ldrh r1, [r1, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r4, r0, 16 adds r6, r4, 0 @@ -4812,7 +4812,7 @@ sub_810A468: @ 810A468 lsls r0, 24 lsrs r0, 24 ldrh r1, [r1, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r4, r0, 16 adds r6, r4, 0 @@ -4971,7 +4971,7 @@ _0810A5B4: ldr r1, _0810A5E8 @ =gStringVar1 bl CopyItemName ldr r4, _0810A5EC @ =gStringVar4 - ldr r1, _0810A5F0 @ =gUnknown_84168F1 + ldr r1, _0810A5F0 @ =gText_OhNoICantBuyThat adds r0, r4, 0 bl StringExpandPlaceholders bl sub_80BF8E4 @@ -4986,7 +4986,7 @@ _0810A5B4: .align 2, 0 _0810A5E8: .4byte gStringVar1 _0810A5EC: .4byte gStringVar4 -_0810A5F0: .4byte gUnknown_84168F1 +_0810A5F0: .4byte gText_OhNoICantBuyThat _0810A5F4: .4byte sub_810A1F8 _0810A5F8: movs r0, 0x1 @@ -5009,7 +5009,7 @@ _0810A618: ldr r1, _0810A644 @ =gStringVar1 bl CopyItemName ldr r4, _0810A648 @ =gStringVar4 - ldr r1, _0810A64C @ =gUnknown_8416911 + ldr r1, _0810A64C @ =gText_HowManyWouldYouLikeToSell adds r0, r4, 0 bl StringExpandPlaceholders bl sub_80BF8E4 @@ -5027,7 +5027,7 @@ _0810A63E: .align 2, 0 _0810A644: .4byte gStringVar1 _0810A648: .4byte gStringVar4 -_0810A64C: .4byte gUnknown_8416911 +_0810A64C: .4byte gText_HowManyWouldYouLikeToSell _0810A650: .4byte sub_810A770 thumb_func_end sub_810A568 @@ -5088,7 +5088,7 @@ sub_810A690: @ 810A690 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -5102,7 +5102,7 @@ sub_810A690: @ 810A690 movs r3, 0x6 bl ConvertIntToDecimalStringN ldr r4, _0810A700 @ =gStringVar4 - ldr r1, _0810A704 @ =gUnknown_8416936 + ldr r1, _0810A704 @ =gText_ICanPayThisMuch_WouldThatBeOkay adds r0, r4, 0 bl StringExpandPlaceholders bl sub_80BF8E4 @@ -5121,7 +5121,7 @@ _0810A6F4: .4byte gTasks+0x8 _0810A6F8: .4byte gStringVar3 _0810A6FC: .4byte gUnknown_203ACFC _0810A700: .4byte gStringVar4 -_0810A704: .4byte gUnknown_8416936 +_0810A704: .4byte gText_ICanPayThisMuch_WouldThatBeOkay _0810A708: .4byte sub_810A70C thumb_func_end sub_810A690 @@ -5202,7 +5202,7 @@ sub_810A770: @ 810A770 movs r3, 0x2 bl ConvertIntToDecimalStringN ldr r6, _0810A824 @ =gStringVar4 - ldr r1, _0810A828 @ =gUnknown_84162B9 + ldr r1, _0810A828 @ =gText_TimesStrVar1 adds r0, r6, 0 bl StringExpandPlaceholders movs r0, 0xA @@ -5226,7 +5226,7 @@ sub_810A770: @ 810A770 lsrs r0, 24 mov r3, r9 ldrh r1, [r3, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -5256,7 +5256,7 @@ sub_810A770: @ 810A770 _0810A81C: .4byte gTasks+0x8 _0810A820: .4byte gStringVar1 _0810A824: .4byte gStringVar4 -_0810A828: .4byte gUnknown_84162B9 +_0810A828: .4byte gText_TimesStrVar1 _0810A82C: .4byte gUnknown_203ACFC _0810A830: .4byte sub_810A85C thumb_func_end sub_810A770 @@ -5311,7 +5311,7 @@ sub_810A85C: @ 810A85C lsls r0, 24 lsrs r0, 24 ldrh r1, [r5, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -5405,7 +5405,7 @@ sub_810A940: @ 810A940 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] - bl sub_809A798 + bl BagGetItemIdByPocketPosition lsls r0, 16 lsrs r0, 16 bl itemid_get_market_price @@ -5419,7 +5419,7 @@ sub_810A940: @ 810A940 movs r3, 0x6 bl ConvertIntToDecimalStringN ldr r4, _0810A9C8 @ =gStringVar4 - ldr r1, _0810A9CC @ =gUnknown_8416959 + ldr r1, _0810A9CC @ =gText_TurnedOverItemsWorthYen adds r0, r4, 0 bl StringExpandPlaceholders ldr r3, _0810A9D0 @ =sub_810A9D4 @@ -5437,7 +5437,7 @@ _0810A9BC: .4byte gStringVar1 _0810A9C0: .4byte gStringVar3 _0810A9C4: .4byte gUnknown_203ACFC _0810A9C8: .4byte gStringVar4 -_0810A9CC: .4byte gUnknown_8416959 +_0810A9CC: .4byte gText_TurnedOverItemsWorthYen _0810A9D0: .4byte sub_810A9D4 thumb_func_end sub_810A940 @@ -5497,7 +5497,7 @@ sub_810A9D4: @ 810A9D4 adds r3, r4 mov r9, r3 add r2, r9 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0x6] bl sub_8108DC8 ldrb r0, [r4, 0x6] @@ -5512,7 +5512,7 @@ sub_810A9D4: @ 810A9D4 strb r0, [r2, 0x5] ldrb r0, [r4, 0x6] bl sub_810842C - ldr r0, _0810AAEC @ =gUnknown_3005E70 + ldr r0, _0810AAEC @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 adds r5, r2, r5 @@ -5563,7 +5563,7 @@ _0810AADC: .4byte gSpecialVar_ItemId _0810AAE0: .4byte gSaveBlock1Ptr _0810AAE4: .4byte gUnknown_203ACFC _0810AAE8: .4byte gUnknown_203AD10 -_0810AAEC: .4byte gUnknown_3005E70 +_0810AAEC: .4byte gMultiuseListMenuTemplate _0810AAF0: .4byte sub_810AAF4 thumb_func_end sub_810A9D4 @@ -6212,7 +6212,7 @@ _0810B01C: ldrb r0, [r5] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu bl sub_810AECC bl sub_8108CB4 adds r0, r7, 0 @@ -6342,11 +6342,11 @@ sub_810B108: @ 810B108 beq _0810B160 cmp r4, 0x8 beq _0810B16C - ldr r2, _0810B15C @ =sub_815ABFC + ldr r2, _0810B15C @ =CB2_ReturnToTeachyTV adds r0, r4, 0 b _0810B170 .align 2, 0 -_0810B15C: .4byte sub_815ABFC +_0810B15C: .4byte CB2_ReturnToTeachyTV _0810B160: ldr r2, _0810B168 @ =sub_8030AEC movs r0, 0x7 @@ -6386,7 +6386,7 @@ _0810B19C: bl sub_815AC20 ldr r0, _0810B1C4 @ =gUnknown_203AD10 ldr r1, [r0] - ldr r0, _0810B1C8 @ =sub_815ABFC + ldr r0, _0810B1C8 @ =CB2_ReturnToTeachyTV str r0, [r1] ldr r1, _0810B1CC @ =gTasks lsls r0, r4, 2 @@ -6402,7 +6402,7 @@ _0810B1BC: bx r1 .align 2, 0 _0810B1C4: .4byte gUnknown_203AD10 -_0810B1C8: .4byte sub_815ABFC +_0810B1C8: .4byte CB2_ReturnToTeachyTV _0810B1CC: .4byte gTasks _0810B1D0: .4byte sub_810B070 thumb_func_end sub_810B180 @@ -6537,10 +6537,10 @@ _0810B29E: adds r6, r4, 0 adds r6, 0x8 adds r2, r6 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0x6] bl sub_810842C - ldr r0, _0810B328 @ =gUnknown_3005E70 + ldr r0, _0810B328 @ =gMultiuseListMenuTemplate ldrh r2, [r4, 0x6] lsls r2, 1 adds r5, r2, r5 @@ -6565,7 +6565,7 @@ _0810B318: .4byte gSaveBlock1Ptr _0810B31C: .4byte gSpecialVar_ItemId _0810B320: .4byte 0x00000296 _0810B324: .4byte gUnknown_203ACFC -_0810B328: .4byte gUnknown_3005E70 +_0810B328: .4byte gMultiuseListMenuTemplate _0810B32C: ldr r1, _0810B340 @ =gMain movs r0, 0 @@ -6583,7 +6583,7 @@ _0810B344: ldrb r0, [r7] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu bl sub_810AECC bl sub_8108CB4 adds r0, r6, 0 @@ -6738,7 +6738,7 @@ _0810B468: ldrb r0, [r4] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu bl sub_810AECC bl sub_8108CB4 adds r0, r7, 0 @@ -6854,7 +6854,7 @@ _0810B564: ldrb r0, [r5] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu bl sub_810AECC ldr r1, _0810B5B0 @ =gUnknown_3005E98 ldr r0, _0810B5B4 @ =ItemUseCB_Medicine @@ -6989,7 +6989,7 @@ _0810B68C: ldrb r0, [r6] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu bl sub_810AECC ldr r0, _0810B6D4 @ =gUnknown_203AD10 ldr r1, [r0] diff --git a/asm/item_pc.s b/asm/item_pc.s index f4a4176d9..e7a9f8ee5 100644 --- a/asm/item_pc.s +++ b/asm/item_pc.s @@ -233,7 +233,7 @@ _0810D5CC: adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0810D5FC @ =gUnknown_3005E70 + ldr r0, _0810D5FC @ =gMultiuseListMenuTemplate ldr r2, _0810D600 @ =gUnknown_203ADCC ldrh r1, [r2, 0x4] ldrh r2, [r2, 0x6] @@ -249,7 +249,7 @@ _0810D5CC: b _0810D674 .align 2, 0 _0810D5F8: .4byte sub_810DEA0 -_0810D5FC: .4byte gUnknown_3005E70 +_0810D5FC: .4byte gMultiuseListMenuTemplate _0810D600: .4byte gUnknown_203ADCC _0810D604: .4byte gTasks _0810D608: @@ -594,7 +594,7 @@ _0810D8A4: movs r1, 0x2 negs r1, r1 str r1, [r0, 0x4] - ldr r2, _0810D948 @ =gUnknown_3005E70 + ldr r2, _0810D948 @ =gMultiuseListMenuTemplate str r3, [r2] ldr r0, _0810D940 @ =gUnknown_203ADBC ldr r3, [r0] @@ -658,7 +658,7 @@ _0810D938: .4byte gSaveBlock1Ptr _0810D93C: .4byte gUnknown_203ADC4 _0810D940: .4byte gUnknown_203ADBC _0810D944: .4byte gFameCheckerText_Cancel -_0810D948: .4byte gUnknown_3005E70 +_0810D948: .4byte gMultiuseListMenuTemplate _0810D94C: .4byte sub_810D954 _0810D950: .4byte sub_810DA20 thumb_func_end sub_810D878 @@ -804,7 +804,7 @@ _0810DA58: movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _0810DAAC @ =gStringVar4 - ldr r1, _0810DAB0 @ =gUnknown_84162B9 + ldr r1, _0810DAB0 @ =gText_TimesStrVar1 adds r0, r4, 0 bl StringExpandPlaceholders str r5, [sp] @@ -828,7 +828,7 @@ _0810DA9E: .align 2, 0 _0810DAA8: .4byte gStringVar1 _0810DAAC: .4byte gStringVar4 -_0810DAB0: .4byte gUnknown_84162B9 +_0810DAB0: .4byte gText_TimesStrVar1 thumb_func_end sub_810DA20 thumb_func_start sub_810DAB4 @@ -1154,7 +1154,7 @@ sub_810DCE4: @ 810DCE4 ldr r4, _0810DD30 @ =gUnknown_203ADD0 adds r2, r4, 0x2 adds r1, r4, 0 - bl sub_810713C + bl DestroyListMenu ldr r0, _0810DD34 @ =gUnknown_203ADBC ldr r0, [r0] ldr r0, [r0] @@ -1731,7 +1731,7 @@ _0810E194: ldr r5, _0810E1F4 @ =gUnknown_203ADD0 adds r2, r5, 0x2 adds r1, r5, 0 - bl sub_810713C + bl DestroyListMenu movs r1, 0x2 ldrsh r0, [r6, r1] cmp r0, r4 @@ -1742,7 +1742,7 @@ _0810E194: strh r0, [r1, 0x6] _0810E1C0: bl sub_810D878 - ldr r0, _0810E1F8 @ =gUnknown_3005E70 + ldr r0, _0810E1F8 @ =gMultiuseListMenuTemplate subs r2, r5, 0x4 ldrh r1, [r2, 0x4] ldrh r2, [r2, 0x6] @@ -1766,7 +1766,7 @@ _0810E1E6: .align 2, 0 _0810E1F0: .4byte gSaveBlock1Ptr _0810E1F4: .4byte gUnknown_203ADD0 -_0810E1F8: .4byte gUnknown_3005E70 +_0810E1F8: .4byte gMultiuseListMenuTemplate _0810E1FC: .4byte sub_810DEA0 thumb_func_end sub_810E160 @@ -1788,7 +1788,7 @@ sub_810E200: @ 810E200 ldr r5, _0810E268 @ =gUnknown_203ADD0 adds r2, r5, 0x2 adds r1, r5, 0 - bl sub_810713C + bl DestroyListMenu movs r1, 0x2 ldrsh r0, [r6, r1] cmp r0, r4 @@ -1799,7 +1799,7 @@ sub_810E200: @ 810E200 strh r0, [r1, 0x6] _0810E234: bl sub_810D878 - ldr r0, _0810E26C @ =gUnknown_3005E70 + ldr r0, _0810E26C @ =gMultiuseListMenuTemplate subs r2, r5, 0x4 ldrh r1, [r2, 0x4] ldrh r2, [r2, 0x6] @@ -1822,7 +1822,7 @@ _0810E234: .align 2, 0 _0810E264: .4byte gTasks+0x8 _0810E268: .4byte gUnknown_203ADD0 -_0810E26C: .4byte gUnknown_3005E70 +_0810E26C: .4byte gMultiuseListMenuTemplate _0810E270: .4byte sub_810DEA0 thumb_func_end sub_810E200 @@ -2205,11 +2205,11 @@ sub_810E578: @ 810E578 ldr r4, _0810E5D8 @ =gUnknown_203ADD0 adds r2, r4, 0x2 adds r1, r4, 0 - bl sub_810713C + bl DestroyListMenu bl sub_810DDA4 bl sub_810DBF0 bl sub_810D878 - ldr r0, _0810E5DC @ =gUnknown_3005E70 + ldr r0, _0810E5DC @ =gMultiuseListMenuTemplate subs r4, 0x4 ldrh r1, [r4, 0x4] ldrh r2, [r4, 0x6] @@ -2227,7 +2227,7 @@ sub_810E578: @ 810E578 .align 2, 0 _0810E5D4: .4byte gTasks+0x8 _0810E5D8: .4byte gUnknown_203ADD0 -_0810E5DC: .4byte gUnknown_3005E70 +_0810E5DC: .4byte gMultiuseListMenuTemplate thumb_func_end sub_810E578 thumb_func_start sub_810E5E0 @@ -2263,7 +2263,7 @@ sub_810E5E0: @ 810E5E0 movs r2, 0x2 movs r3, 0x3 bl ConvertIntToDecimalStringN - ldr r1, _0810E66C @ =gUnknown_84162B9 + ldr r1, _0810E66C @ =gText_TimesStrVar1 adds r0, r5, 0 bl StringExpandPlaceholders movs r0, 0x3 @@ -2290,7 +2290,7 @@ sub_810E5E0: @ 810E5E0 _0810E660: .4byte gStringVar1 _0810E664: .4byte gStringVar4 _0810E668: .4byte gUnknown_84177AC -_0810E66C: .4byte gUnknown_84162B9 +_0810E66C: .4byte gText_TimesStrVar1 thumb_func_end sub_810E5E0 thumb_func_start sub_810E670 @@ -2317,7 +2317,7 @@ sub_810E670: @ 810E670 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _0810E6D0 @ =gStringVar4 - ldr r1, _0810E6D4 @ =gUnknown_84162B9 + ldr r1, _0810E6D4 @ =gText_TimesStrVar1 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0xA @@ -2340,7 +2340,7 @@ sub_810E670: @ 810E670 .align 2, 0 _0810E6CC: .4byte gStringVar1 _0810E6D0: .4byte gStringVar4 -_0810E6D4: .4byte gUnknown_84162B9 +_0810E6D4: .4byte gText_TimesStrVar1 thumb_func_end sub_810E670 thumb_func_start sub_810E6D8 @@ -2444,13 +2444,13 @@ sub_810E79C: @ 810E79C bl ClearWindowTilemap movs r0, 0 bl PutWindowTilemap - ldr r1, _0810E7D4 @ =gUnknown_841632A + ldr r1, _0810E7D4 @ =gText_ThereIsNoPokemon ldr r2, _0810E7D8 @ =sub_810E848 adds r0, r4, 0 bl sub_810EB30 b _0810E7EA .align 2, 0 -_0810E7D4: .4byte gUnknown_841632A +_0810E7D4: .4byte gText_ThereIsNoPokemon _0810E7D8: .4byte sub_810E848 _0810E7DC: ldr r0, _0810E7F0 @ =gUnknown_203ADBC @@ -2610,7 +2610,7 @@ sub_810E8F0: @ 810E8F0 movs r1, 0xD0 movs r2, 0x20 bl LoadPalette - ldr r0, _0810E97C @ =gUnknown_841F408 + ldr r0, _0810E97C @ =gTMCaseMainWindowPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette @@ -2647,7 +2647,7 @@ _0810E95C: .align 2, 0 _0810E974: .4byte gUnknown_8453F98 _0810E978: .4byte 0x000003a3 -_0810E97C: .4byte gUnknown_841F408 +_0810E97C: .4byte gTMCaseMainWindowPalette _0810E980: .4byte gUnknown_203ADD8 thumb_func_end sub_810E8F0 diff --git a/asm/learn_move.s b/asm/learn_move.s index fbb31d196..db41257a2 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -1373,7 +1373,7 @@ _080E51AA: adds r2, r3 movs r0, 0xFE str r0, [r2] - ldr r2, _080E51FC @ =gUnknown_3005E70 + ldr r2, _080E51FC @ =gMultiuseListMenuTemplate adds r1, r2, 0 ldr r0, _080E5200 @ =gUnknown_83FFA94 ldm r0!, {r3,r5,r6} @@ -1397,7 +1397,7 @@ _080E51EC: .4byte gPlayerParty _080E51F0: .4byte gMoveNames _080E51F4: .4byte gStringVar1 _080E51F8: .4byte gFameCheckerText_Cancel -_080E51FC: .4byte gUnknown_3005E70 +_080E51FC: .4byte gMultiuseListMenuTemplate _080E5200: .4byte gUnknown_83FFA94 thumb_func_end sub_80E50CC @@ -1523,7 +1523,7 @@ _080E52FA: thumb_func_start sub_80E5300 sub_80E5300: @ 80E5300 push {r4,lr} - ldr r0, _080E5330 @ =gUnknown_3005E70 + ldr r0, _080E5330 @ =gMultiuseListMenuTemplate ldr r4, _080E5334 @ =gUnknown_203AAB4 ldr r2, [r4] ldr r3, _080E5338 @ =0x00000a68 @@ -1544,7 +1544,7 @@ sub_80E5300: @ 80E5300 pop {r0} bx r0 .align 2, 0 -_080E5330: .4byte gUnknown_3005E70 +_080E5330: .4byte gMultiuseListMenuTemplate _080E5334: .4byte gUnknown_203AAB4 _080E5338: .4byte 0x00000a68 _080E533C: .4byte 0x00000263 @@ -1568,11 +1568,11 @@ sub_80E5340: @ 80E5340 movs r0, 0x2 movs r2, 0x1 movs r3, 0x4 - bl sub_8107D68 + bl blit_move_info_icon ldrb r0, [r4, 0x1] cmp r0, 0x1 bhi _080E5388 - ldr r1, _080E5384 @ =gUnknown_8416213 + ldr r1, _080E5384 @ =gText_ThreeHyphens movs r0, 0 str r0, [sp] str r0, [sp, 0x4] @@ -1583,7 +1583,7 @@ sub_80E5340: @ 80E5340 b _080E53A6 .align 2, 0 _080E5380: .4byte gBattleMoves -_080E5384: .4byte gUnknown_8416213 +_080E5384: .4byte gText_ThreeHyphens _080E5388: ldrb r1, [r4, 0x1] add r0, sp, 0x8 @@ -1608,7 +1608,7 @@ _080E53A6: adds r4, r1, 0 cmp r2, 0 bne _080E53D4 - ldr r1, _080E53D0 @ =gUnknown_8416213 + ldr r1, _080E53D0 @ =gText_ThreeHyphens str r2, [sp] movs r0, 0x1 str r0, [sp, 0x4] @@ -1619,7 +1619,7 @@ _080E53A6: b _080E53F4 .align 2, 0 _080E53CC: .4byte gBattleMoves -_080E53D0: .4byte gUnknown_8416213 +_080E53D0: .4byte gText_ThreeHyphens _080E53D4: ldrb r1, [r0, 0x3] add r0, sp, 0x8 @@ -1680,27 +1680,27 @@ sub_80E5444: @ 80E5444 movs r1, 0x13 movs r2, 0x1 movs r3, 0x4 - bl sub_8107D68 + bl blit_move_info_icon movs r0, 0x1 movs r1, 0x14 movs r2, 0 movs r3, 0x4 - bl sub_8107D68 + bl blit_move_info_icon movs r0, 0x1 movs r1, 0x15 movs r2, 0 movs r3, 0x13 - bl sub_8107D68 + bl blit_move_info_icon movs r0, 0 movs r1, 0x16 movs r2, 0x1 movs r3, 0x13 - bl sub_8107D68 + bl blit_move_info_icon movs r0, 0 movs r1, 0x17 movs r2, 0x1 movs r3, 0x22 - bl sub_8107D68 + bl blit_move_info_icon movs r0, 0 bl PutWindowTilemap movs r0, 0x1 diff --git a/asm/link.s b/asm/link.s index 13305edde..7130ce69d 100644 --- a/asm/link.s +++ b/asm/link.s @@ -3308,7 +3308,7 @@ _0800AD30: lsls r1, 8 movs r0, 0 bl ClearGpuRegBits - ldr r0, _0800AE08 @ =gUnknown_841F408 + ldr r0, _0800AE08 @ =gTMCaseMainWindowPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette @@ -3343,7 +3343,7 @@ _0800ADF8: .4byte sub_800978C _0800ADFC: .4byte gUnknown_82345E8 _0800AE00: .4byte gUnknown_2022860 _0800AE04: .4byte gUnknown_82345F0 -_0800AE08: .4byte gUnknown_841F408 +_0800AE08: .4byte gTMCaseMainWindowPalette _0800AE0C: .4byte gSoftResetDisabled _0800AE10: .4byte sub_80094D4 _0800AE14: .4byte gMain diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 514e386ed..776b94c41 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -402,7 +402,7 @@ _08115B5C: ldrb r0, [r5, 0xF] movs r1, 0 bl DrawStdWindowFrame - ldr r0, _08115C58 @ =gUnknown_3005E70 + ldr r0, _08115C58 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _08115C5C @ =gUnknown_8456D34 ldm r1!, {r3,r6,r7} @@ -434,7 +434,7 @@ _08115C48: .4byte gUnknown_8456CD0 _08115C4C: .4byte gUnknown_8456CFC _08115C50: .4byte gUnknown_8456D04 _08115C54: .4byte gUnknown_845747C -_08115C58: .4byte gUnknown_3005E70 +_08115C58: .4byte gMultiuseListMenuTemplate _08115C5C: .4byte gUnknown_8456D34 _08115C60: ldr r0, _08115C98 @ =gStringVar1 @@ -1139,7 +1139,7 @@ sub_81161E4: @ 81161E4 ldrb r0, [r4, 0x12] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4, 0x10] bl ClearWindowTilemap ldrb r0, [r4, 0xF] @@ -1920,7 +1920,7 @@ _08116838: ldrb r0, [r6, 0xB] movs r1, 0 bl DrawStdWindowFrame - ldr r0, _081168FC @ =gUnknown_3005E70 + ldr r0, _081168FC @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _08116900 @ =gUnknown_8456DDC ldm r1!, {r3,r5,r7} @@ -1955,7 +1955,7 @@ _081168EC: .4byte gUnknown_8456CD0 _081168F0: .4byte gUnknown_8456D4C _081168F4: .4byte gUnknown_8456D54 _081168F8: .4byte gUnknown_8458FC8 -_081168FC: .4byte gUnknown_3005E70 +_081168FC: .4byte gMultiuseListMenuTemplate _08116900: .4byte gUnknown_8456DDC _08116904: bl sub_8116FE4 @@ -2322,7 +2322,7 @@ _08116C10: ldrb r0, [r6, 0xE] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r6, 0xC] bl ClearWindowTilemap ldrb r0, [r6, 0xB] @@ -4068,7 +4068,7 @@ _08117AB8: strb r0, [r5, 0xF] ldrb r0, [r5, 0xF] bl sub_814240C - ldr r0, _08117B74 @ =gUnknown_3005E70 + ldr r0, _08117B74 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _08117B78 @ =gUnknown_8456D34 ldm r1!, {r3,r4,r6} @@ -4089,7 +4089,7 @@ _08117AB8: .align 2, 0 _08117B6C: .4byte gUnknown_8456CFC _08117B70: .4byte 0x0000ffff -_08117B74: .4byte gUnknown_3005E70 +_08117B74: .4byte gMultiuseListMenuTemplate _08117B78: .4byte gUnknown_8456D34 _08117B7C: ldr r0, _08117B9C @ =gStringVar1 @@ -4398,7 +4398,7 @@ _08117DEE: ldrb r0, [r5, 0x12] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu movs r0, 0 bl CopyBgTilemapBufferToVram ldrb r0, [r5, 0xF] @@ -4457,7 +4457,7 @@ _08117E80: ldrb r0, [r5, 0x12] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu movs r0, 0 bl CopyBgTilemapBufferToVram ldrb r0, [r5, 0xF] @@ -4624,7 +4624,7 @@ _08117FC0: strb r0, [r5, 0xD] ldrb r0, [r5, 0xB] bl sub_814240C - ldr r0, _08118068 @ =gUnknown_3005E70 + ldr r0, _08118068 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _0811806C @ =gUnknown_8456DDC ldm r1!, {r3,r6,r7} @@ -4659,7 +4659,7 @@ _08117FC0: _0811805C: .4byte gUnknown_8456D4C _08118060: .4byte 0x0000ffff _08118064: .4byte gUnknown_8456D54 -_08118068: .4byte gUnknown_3005E70 +_08118068: .4byte gMultiuseListMenuTemplate _0811806C: .4byte gUnknown_8456DDC _08118070: bl sub_8116FE4 @@ -4842,7 +4842,7 @@ _081181EC: ldrb r0, [r5, 0xE] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu movs r0, 0 bl CopyBgTilemapBufferToVram ldrb r0, [r5, 0xD] @@ -5042,7 +5042,7 @@ _08118380: strb r0, [r5, 0xB] ldrb r0, [r5, 0xB] bl sub_814240C - ldr r0, _08118400 @ =gUnknown_3005E70 + ldr r0, _08118400 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, _08118404 @ =gUnknown_8456DDC ldm r1!, {r3,r4,r6} @@ -5066,7 +5066,7 @@ _081183EC: .align 2, 0 _081183F8: .4byte gUnknown_8456D4C _081183FC: .4byte 0x0000ffff -_08118400: .4byte gUnknown_3005E70 +_08118400: .4byte gMultiuseListMenuTemplate _08118404: .4byte gUnknown_8456DDC _08118408: bl sub_8116FE4 @@ -5242,7 +5242,7 @@ _08118564: ldrb r0, [r5, 0xE] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu movs r0, 0 bl CopyBgTilemapBufferToVram ldrb r0, [r5, 0xB] @@ -8689,7 +8689,7 @@ _0811A234: ldrb r0, [r5] movs r1, 0 bl DrawStdWindowFrame - ldr r0, _0811A270 @ =gUnknown_3005E70 + ldr r0, _0811A270 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, [sp, 0x1C] ldm r1!, {r3,r4,r6} @@ -8711,7 +8711,7 @@ _0811A234: strb r0, [r7] b _0811A2DA .align 2, 0 -_0811A270: .4byte gUnknown_3005E70 +_0811A270: .4byte gMultiuseListMenuTemplate _0811A274: mov r3, r9 ldrb r0, [r3] @@ -8726,7 +8726,7 @@ _0811A274: ldrb r0, [r4] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r5] movs r1, 0x1 bl ClearStdWindowAndFrame @@ -8747,7 +8747,7 @@ _0811A2B0: ldrb r0, [r6] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r5] movs r1, 0x1 bl ClearStdWindowAndFrame @@ -8795,7 +8795,7 @@ _0811A308: ldrb r0, [r4] movs r1, 0 bl DrawStdWindowFrame - ldr r0, _0811A354 @ =gUnknown_3005E70 + ldr r0, _0811A354 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, [sp, 0x20] ldm r1!, {r3,r6,r7} @@ -8818,7 +8818,7 @@ _0811A308: b _0811A3E6 .align 2, 0 _0811A350: .4byte gUnknown_8456F1C -_0811A354: .4byte gUnknown_3005E70 +_0811A354: .4byte gMultiuseListMenuTemplate _0811A358: ldrb r0, [r5] bl ListMenuHandleInput @@ -8842,7 +8842,7 @@ _0811A37E: ldrb r0, [r5] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4] movs r1, 0x1 bl ClearStdWindowAndFrame @@ -8867,7 +8867,7 @@ _0811A3AC: ldrb r0, [r5] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r4] movs r1, 0x1 bl ClearStdWindowAndFrame @@ -9999,7 +9999,7 @@ _0811AC3C: adds r0, r6, 0 movs r2, 0x44 adds r3, r5, 0 - bl sub_8107D68 + bl blit_move_info_icon movs r0, 0xB mov r2, r8 muls r2, r0 diff --git a/asm/list_menu.s b/asm/list_menu.s index f0a609fcd..3119d53bd 100644 --- a/asm/list_menu.s +++ b/asm/list_menu.s @@ -62,7 +62,7 @@ _08106F24: ldr r1, [sp, 0x4] bl sub_8150048 _08106F34: - ldr r0, _08106F64 @ =gUnknown_3005E70 + ldr r0, _08106F64 @ =gMultiuseListMenuTemplate adds r2, r0, 0 ldr r1, [sp] ldm r1!, {r3-r5} @@ -84,7 +84,7 @@ _08106F34: b _08106FE4 .align 2, 0 _08106F60: .4byte gUnknown_203ACF4 -_08106F64: .4byte gUnknown_3005E70 +_08106F64: .4byte gMultiuseListMenuTemplate _08106F68: ldrb r0, [r5, 0x6] bl ListMenuHandleInput @@ -139,7 +139,7 @@ _08106FCC: ldrb r0, [r5, 0x6] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu ldrb r0, [r5, 0x5] bl RemoveWindow movs r0, 0 @@ -340,8 +340,8 @@ _08107136: bx r1 thumb_func_end ListMenuHandleInput - thumb_func_start sub_810713C -sub_810713C: @ 810713C + thumb_func_start DestroyListMenu +DestroyListMenu: @ 810713C push {r4,lr} adds r3, r1, 0 lsls r0, 24 @@ -377,7 +377,7 @@ _08107170: bx r0 .align 2, 0 _0810717C: .4byte gTasks+0x8 - thumb_func_end sub_810713C + thumb_func_end DestroyListMenu thumb_func_start sub_8107180 sub_8107180: @ 8107180 @@ -1976,8 +1976,8 @@ _08107D56: _08107D64: .4byte gUnknown_8E95DBC thumb_func_end sub_8107D38 - thumb_func_start sub_8107D68 -sub_8107D68: @ 8107D68 + thumb_func_start blit_move_info_icon +blit_move_info_icon: @ 8107D68 push {r4,r5,lr} sub sp, 0x18 lsls r0, 24 @@ -2014,6 +2014,6 @@ sub_8107D68: @ 8107D68 .align 2, 0 _08107DAC: .4byte gUnknown_8452C94 _08107DB0: .4byte gUnknown_8E95DDC - thumb_func_end sub_8107D68 + thumb_func_end blit_move_info_icon .align 2, 0 @ Don't pad with nop. diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s index d2cc06070..5273d1357 100644 --- a/asm/mailbox_pc.s +++ b/asm/mailbox_pc.s @@ -176,7 +176,7 @@ sub_810EC98: @ 810EC98 ldr r7, _0810ED50 @ =gUnknown_203ADE0 ldr r0, _0810ED54 @ =gFameCheckerText_Cancel mov r12, r0 - ldr r5, _0810ED58 @ =gUnknown_3005E70 + ldr r5, _0810ED58 @ =gMultiuseListMenuTemplate ldr r1, _0810ED5C @ =gUnknown_203ADDC mov r8, r1 ldrb r0, [r6, 0x5] @@ -263,7 +263,7 @@ _0810ECCE: .align 2, 0 _0810ED50: .4byte gUnknown_203ADE0 _0810ED54: .4byte gFameCheckerText_Cancel -_0810ED58: .4byte gUnknown_3005E70 +_0810ED58: .4byte gMultiuseListMenuTemplate _0810ED5C: .4byte gUnknown_203ADDC _0810ED60: .4byte gUnknown_8454003 _0810ED64: .4byte sub_810ED6C diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index 612672b93..e576313f4 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -182,8 +182,8 @@ _080BF5C8: .4byte gTasks _080BF5CC: .4byte gUnknown_20399C8 thumb_func_end sub_80BF560 - thumb_func_start sub_80BF5D0 -sub_80BF5D0: @ 80BF5D0 + thumb_func_start CreateYesNoMenuWithCallbacks +CreateYesNoMenuWithCallbacks: @ 80BF5D0 push {r4-r7,lr} sub sp, 0xC adds r6, r0, 0 @@ -228,7 +228,7 @@ sub_80BF5D0: @ 80BF5D0 _080BF624: .4byte gUnknown_20399C8 _080BF628: .4byte gTasks _080BF62C: .4byte sub_80BF560 - thumb_func_end sub_80BF5D0 + thumb_func_end CreateYesNoMenuWithCallbacks thumb_func_start GetLRKeysState GetLRKeysState: @ 80BF630 diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s index bf2578249..2e4e1a2c9 100644 --- a/asm/new_menu_helpers.s +++ b/asm/new_menu_helpers.s @@ -2049,14 +2049,14 @@ _080F77A4: thumb_func_start sub_80F77B8 sub_80F77B8: @ 80F77B8 push {lr} - ldr r0, _080F77C8 @ =gUnknown_841F408 + ldr r0, _080F77C8 @ =gTMCaseMainWindowPalette movs r1, 0xE0 movs r2, 0x14 bl LoadPalette pop {r0} bx r0 .align 2, 0 -_080F77C8: .4byte gUnknown_841F408 +_080F77C8: .4byte gTMCaseMainWindowPalette thumb_func_end sub_80F77B8 thumb_func_start Menu_LoadStdPalAt @@ -2065,21 +2065,21 @@ Menu_LoadStdPalAt: @ 80F77CC adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 - ldr r0, _080F77E0 @ =gUnknown_841F408 + ldr r0, _080F77E0 @ =gTMCaseMainWindowPalette movs r2, 0x14 bl LoadPalette pop {r0} bx r0 .align 2, 0 -_080F77E0: .4byte gUnknown_841F408 +_080F77E0: .4byte gTMCaseMainWindowPalette thumb_func_end Menu_LoadStdPalAt thumb_func_start sub_80F77E4 sub_80F77E4: @ 80F77E4 - ldr r0, _080F77E8 @ =gUnknown_841F408 + ldr r0, _080F77E8 @ =gTMCaseMainWindowPalette bx lr .align 2, 0 -_080F77E8: .4byte gUnknown_841F408 +_080F77E8: .4byte gTMCaseMainWindowPalette thumb_func_end sub_80F77E4 thumb_func_start sub_80F77EC @@ -2091,14 +2091,14 @@ sub_80F77EC: @ 80F77EC bls _080F77F8 movs r1, 0 _080F77F8: - ldr r0, _080F7804 @ =gUnknown_841F408 + ldr r0, _080F7804 @ =gTMCaseMainWindowPalette lsls r1, 1 adds r1, r0 ldrh r0, [r1] pop {r1} bx r1 .align 2, 0 -_080F7804: .4byte gUnknown_841F408 +_080F7804: .4byte gTMCaseMainWindowPalette thumb_func_end sub_80F77EC thumb_func_start DisplayItemMessageOnField diff --git a/asm/party_menu.s b/asm/party_menu.s index 5a4a458bd..d716165ac 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -4879,12 +4879,12 @@ sub_8120FB0: @ 8120FB0 bl FreeRestoreBattleData bl LoadPlayerParty bl sub_815AC20 - ldr r0, _08120FC8 @ =sub_815ABFC + ldr r0, _08120FC8 @ =CB2_ReturnToTeachyTV bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_08120FC8: .4byte sub_815ABFC +_08120FC8: .4byte CB2_ReturnToTeachyTV thumb_func_end sub_8120FB0 thumb_func_start sub_8120FCC @@ -5149,7 +5149,7 @@ _081211E4: .4byte gUnknown_203B0A0 _081211E8: .4byte gFameCheckerText_Cancel _081211EC: .4byte gUnknown_8459FFC _081211F0: - ldr r4, _08121240 @ =gUnknown_84161C8 + ldr r4, _08121240 @ =gOtherText_Exit movs r0, 0 adds r1, r4, 0 movs r2, 0 @@ -5187,7 +5187,7 @@ _08121238: pop {r0} bx r0 .align 2, 0 -_08121240: .4byte gUnknown_84161C8 +_08121240: .4byte gOtherText_Exit _08121244: .4byte gUnknown_8459FFC thumb_func_end sub_81210F8 diff --git a/asm/player_pc.s b/asm/player_pc.s index 6d998daaa..f847db1e6 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -1174,7 +1174,7 @@ _080EBFB6: ldrb r0, [r4, 0x16] adds r1, r7, 0 mov r2, r8 - bl sub_810713C + bl DestroyListMenu movs r0, 0 bl schedule_bg_copy_tilemap_to_vram mov r1, r8 @@ -1288,7 +1288,7 @@ sub_80EC094: @ 80EC094 ldrb r0, [r4, 0x16] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu movs r0, 0 bl schedule_bg_copy_tilemap_to_vram bl sub_810EDB0 @@ -1852,14 +1852,14 @@ sub_80EC520: @ 80EC520 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _080EC534 @ =gUnknown_841632A + ldr r2, _080EC534 @ =gText_ThereIsNoPokemon ldr r3, _080EC538 @ =sub_80EC574 movs r1, 0x2 bl DisplayItemMessageOnField pop {r0} bx r0 .align 2, 0 -_080EC534: .4byte gUnknown_841632A +_080EC534: .4byte gText_ThereIsNoPokemon _080EC538: .4byte sub_80EC574 thumb_func_end sub_80EC520 diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index bd18d2e76..68b30e43b 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -754,7 +754,7 @@ _08102B24: adds r1, r2, 0 adds r1, 0x12 adds r2, 0x10 - bl sub_810713C + bl DestroyListMenu movs r0, 0x20 str r0, [sp] movs r0, 0x14 @@ -804,7 +804,7 @@ _08102B94: adds r1, r2, 0 adds r1, 0x12 adds r2, 0x10 - bl sub_810713C + bl DestroyListMenu movs r0, 0x1 bl HideBg ldr r0, [r4] @@ -832,7 +832,7 @@ _08102BD8: adds r1, r2, 0 adds r1, 0x12 adds r2, 0x10 - bl sub_810713C + bl DestroyListMenu movs r0, 0x1 bl HideBg ldr r0, [r4] @@ -2467,7 +2467,7 @@ _0810399C: adds r1, r2, 0 adds r1, 0x36 adds r2, 0x34 - bl sub_810713C + bl DestroyListMenu b _081039E8 .align 2, 0 _081039B4: .4byte gUnknown_203ACF0 @@ -2480,7 +2480,7 @@ _081039B8: adds r1, r2, 0 adds r1, 0x3A adds r2, 0x38 - bl sub_810713C + bl DestroyListMenu b _081039E8 .align 2, 0 _081039D0: .4byte gUnknown_203ACF0 @@ -2493,7 +2493,7 @@ _081039D4: adds r1, r2, 0 adds r1, 0x3E adds r2, 0x3C - bl sub_810713C + bl DestroyListMenu _081039E8: pop {r0} bx r0 @@ -2572,7 +2572,7 @@ sub_8103A40: @ 8103A40 movs r1, 0 movs r2, 0x28 adds r3, r6, 0 - bl sub_8107D68 + bl blit_move_info_icon ldr r0, _08103AC4 @ =gBaseStats lsls r4, r5, 3 subs r4, r5 @@ -2587,7 +2587,7 @@ sub_8103A40: @ 8103A40 lsrs r1, 24 movs r2, 0x78 adds r3, r6, 0 - bl sub_8107D68 + bl blit_move_info_icon ldrb r1, [r4, 0x7] cmp r5, r1 beq _08103AB6 @@ -2599,7 +2599,7 @@ sub_8103A40: @ 8103A40 lsrs r1, 24 movs r2, 0x98 adds r3, r6, 0 - bl sub_8107D68 + bl blit_move_info_icon _08103AB6: add sp, 0x4 pop {r4-r7} @@ -7753,7 +7753,7 @@ _08106478: lsrs r1, 24 movs r2, 0 movs r3, 0x1 - bl sub_8107D68 + bl blit_move_info_icon ldrb r1, [r4, 0x7] cmp r5, r1 beq _08106504 @@ -7765,7 +7765,7 @@ _08106478: lsrs r1, 24 movs r2, 0x20 movs r3, 0x1 - bl sub_8107D68 + bl blit_move_info_icon _08106504: ldr r7, _081066B8 @ =gUnknown_203ACF0 ldr r0, [r7] diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 385e5fb84..1688f2ed5 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -4180,7 +4180,7 @@ _08136812: adds r1, r4, r3 ldr r0, [r6] adds r0, r1 - ldr r5, _081368A4 @ =gUnknown_8416213 + ldr r5, _081368A4 @ =gText_ThreeHyphens adds r1, r5, 0 bl StringCopy ldr r0, _081368A8 @ =0x00003188 @@ -4209,7 +4209,7 @@ _08136894: .4byte gUnknown_841620E _08136898: .4byte 0x000030b8 _0813689C: .4byte gUnknown_8416210 _081368A0: .4byte 0x0000316c -_081368A4: .4byte gUnknown_8416213 +_081368A4: .4byte gText_ThreeHyphens _081368A8: .4byte 0x00003188 _081368AC: .4byte gUnknown_203B144 _081368B0: @@ -4399,7 +4399,7 @@ _081369D0: ldr r1, _08136A68 @ =0x0000316c adds r0, r1 adds r0, r6, r0 - ldr r1, _08136A6C @ =gUnknown_8416213 + ldr r1, _08136A6C @ =gText_ThreeHyphens bl StringCopy b _08136A84 .align 2, 0 @@ -4411,7 +4411,7 @@ _08136A5C: .4byte 0x00003258 _08136A60: .4byte gUnknown_203B144 _08136A64: .4byte gBattleMoves _08136A68: .4byte 0x0000316c -_08136A6C: .4byte gUnknown_8416213 +_08136A6C: .4byte gText_ThreeHyphens _08136A70: lsls r4, r7, 2 adds r0, r4, r7 @@ -4441,7 +4441,7 @@ _08136A84: ldr r2, _08136AC0 @ =0x00003188 adds r0, r2 adds r0, r3, r0 - ldr r1, _08136AC4 @ =gUnknown_8416213 + ldr r1, _08136AC4 @ =gText_ThreeHyphens bl StringCopy b _08136ADA .align 2, 0 @@ -4450,7 +4450,7 @@ _08136AB4: .4byte gBattleMoves _08136AB8: .4byte gUnknown_203B140 _08136ABC: .4byte 0x00003258 _08136AC0: .4byte 0x00003188 -_08136AC4: .4byte gUnknown_8416213 +_08136AC4: .4byte gText_ThreeHyphens _08136AC8: adds r0, r4, r7 ldr r4, _08136AE8 @ =0x00003188 @@ -6636,7 +6636,7 @@ _08137CA4: adds r3, r2 lsrs r3, 16 movs r2, 0x3 - bl sub_8107D68 + bl blit_move_info_icon _08137CDE: adds r0, r4, 0x1 lsls r0, 24 @@ -6660,7 +6660,7 @@ _08137CDE: lsrs r1, 24 movs r2, 0x3 movs r3, 0x75 - bl sub_8107D68 + bl blit_move_info_icon _08137D0E: pop {r4,r5} pop {r0} @@ -8325,7 +8325,7 @@ _08138A62: lsrs r1, 24 movs r2, 0x2F movs r3, 0x23 - bl sub_8107D68 + bl blit_move_info_icon ldr r1, [r6] adds r4, r1, r4 ldr r3, _08138AB8 @ =0x00003221 @@ -8342,7 +8342,7 @@ _08138A62: lsrs r1, 24 movs r2, 0x53 movs r3, 0x23 - bl sub_8107D68 + bl blit_move_info_icon b _08138B0E .align 2, 0 _08138AB0: .4byte 0x00003003 @@ -8365,7 +8365,7 @@ _08138ABC: lsrs r1, 24 movs r2, 0 movs r3, 0x3 - bl sub_8107D68 + bl blit_move_info_icon ldr r2, [r6] adds r4, r2, r4 ldr r1, _08138B1C @ =0x00003221 @@ -8381,7 +8381,7 @@ _08138ABC: lsrs r1, 24 movs r2, 0x24 movs r3, 0x3 - bl sub_8107D68 + bl blit_move_info_icon _08138B04: ldr r0, [r6] adds r0, r5 diff --git a/asm/script_menu.s b/asm/script_menu.s index 11b9feee2..eaf874aea 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -1925,7 +1925,7 @@ _0809D844: bl AddTextPrinterParameterized adds r0, r6, 0x1 lsls r0, 24 - ldr r2, _0809D8BC @ =gUnknown_84161C8 + ldr r2, _0809D8BC @ =gOtherText_Exit lsrs r0, 20 adds r0, 0x2 lsls r0, 24 @@ -1964,7 +1964,7 @@ _0809D8A8: bx r0 .align 2, 0 _0809D8B8: .4byte gUnknown_8417DED -_0809D8BC: .4byte gUnknown_84161C8 +_0809D8BC: .4byte gOtherText_Exit thumb_func_end sub_809D764 thumb_func_start sub_809D8C0 diff --git a/asm/shop.s b/asm/shop.s index 67d30d52a..bdb2f8e9e 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -477,7 +477,7 @@ _0809AE2C: adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0809AE9C @ =gUnknown_3005E70 + ldr r0, _0809AE9C @ =gMultiuseListMenuTemplate movs r1, 0 movs r2, 0 bl ListMenuInit @@ -510,7 +510,7 @@ _0809AE2C: _0809AE90: .4byte gMain _0809AE94: .4byte gUnknown_2039934 _0809AE98: .4byte sub_809BBC0 -_0809AE9C: .4byte gUnknown_3005E70 +_0809AE9C: .4byte gMultiuseListMenuTemplate _0809AEA0: .4byte gTasks _0809AEA4: .4byte sub_809AE00 _0809AEA8: .4byte sub_809ADE4 @@ -904,7 +904,7 @@ _0809B1F2: movs r0, 0x2 negs r0, r0 str r0, [r1, 0x4] - ldr r5, _0809B2D4 @ =gUnknown_3005E70 + ldr r5, _0809B2D4 @ =gMultiuseListMenuTemplate str r2, [r5] ldr r6, _0809B2D8 @ =gUnknown_2039934 ldrh r0, [r6, 0x10] @@ -992,7 +992,7 @@ _0809B2BC: _0809B2C8: .4byte gUnknown_2039968 _0809B2CC: .4byte gFameCheckerText_Cancel _0809B2D0: .4byte gUnknown_2039964 -_0809B2D4: .4byte gUnknown_3005E70 +_0809B2D4: .4byte gMultiuseListMenuTemplate _0809B2D8: .4byte gUnknown_2039934 _0809B2DC: .4byte sub_809B320 _0809B2E0: .4byte sub_809B408 @@ -1000,7 +1000,7 @@ _0809B2E4: strh r0, [r5, 0xE] _0809B2E6: ldr r0, _0809B2F8 @ =gUnknown_2039934 - ldr r1, _0809B2FC @ =gUnknown_3005E70 + ldr r1, _0809B2FC @ =gMultiuseListMenuTemplate ldrh r1, [r1, 0xE] strh r1, [r0, 0x12] movs r0, 0x1 @@ -1010,7 +1010,7 @@ _0809B2F0: bx r1 .align 2, 0 _0809B2F8: .4byte gUnknown_2039934 -_0809B2FC: .4byte gUnknown_3005E70 +_0809B2FC: .4byte gMultiuseListMenuTemplate thumb_func_end sub_809B188 thumb_func_start sub_809B300 @@ -1233,7 +1233,7 @@ sub_809B494: @ 809B494 movs r3, 0x2 bl ConvertIntToDecimalStringN ldr r5, _0809B51C @ =gStringVar4 - ldr r1, _0809B520 @ =gUnknown_8416226 + ldr r1, _0809B520 @ =gOtherText_UnkF9_08_Clear_01 adds r0, r5, 0 bl StringCopy adds r0, r5, 0 @@ -1279,10 +1279,10 @@ sub_809B494: @ 809B494 _0809B514: .4byte gStringVar1 _0809B518: .4byte 0xfffffee0 _0809B51C: .4byte gStringVar4 -_0809B520: .4byte gUnknown_8416226 +_0809B520: .4byte gOtherText_UnkF9_08_Clear_01 _0809B524: .4byte gMoveNames _0809B528: - ldr r2, _0809B564 @ =gUnknown_8416213 + ldr r2, _0809B564 @ =gText_ThreeHyphens movs r4, 0 str r4, [sp] str r4, [sp, 0x4] @@ -1312,7 +1312,7 @@ _0809B55C: pop {r0} bx r0 .align 2, 0 -_0809B564: .4byte gUnknown_8416213 +_0809B564: .4byte gText_ThreeHyphens _0809B568: .4byte gUnknown_8416217 thumb_func_end sub_809B494 @@ -2119,7 +2119,7 @@ sub_809BB44: @ 809BB44 movs r3, 0x2 bl ConvertIntToDecimalStringN ldr r4, _0809BBB8 @ =gStringVar4 - ldr r1, _0809BBBC @ =gUnknown_84162B9 + ldr r1, _0809BBBC @ =gText_TimesStrVar1 adds r0, r4, 0 bl StringExpandPlaceholders movs r0, 0xA @@ -2144,7 +2144,7 @@ _0809BBAC: .4byte gTasks+0x8 _0809BBB0: .4byte gUnknown_2039934 _0809BBB4: .4byte gStringVar1 _0809BBB8: .4byte gStringVar4 -_0809BBBC: .4byte gUnknown_84162B9 +_0809BBBC: .4byte gText_TimesStrVar1 thumb_func_end sub_809BB44 thumb_func_start sub_809BBC0 @@ -2691,7 +2691,7 @@ sub_809C04C: @ 809C04C ldrb r0, [r2, 0xE] movs r1, 0 movs r2, 0 - bl sub_810713C + bl DestroyListMenu bl sub_809B604 ldr r0, _0809C090 @ =c2_exit_to_overworld_2_switch bl SetMainCallback2 diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index b9bf09d46..b7875e7a9 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -33,7 +33,7 @@ sub_815ABC4: @ 815ABC4 lsls r0, 24 lsrs r0, 24 adds r2, r0, 0 - ldr r3, _0815ABF4 @ =gUnknown_203F444 + ldr r3, _0815ABF4 @ =gTeachyTV_StaticResources movs r4, 0 strb r2, [r3, 0x4] str r1, [r3] @@ -54,14 +54,14 @@ _0815ABE6: pop {r0} bx r0 .align 2, 0 -_0815ABF4: .4byte gUnknown_203F444 +_0815ABF4: .4byte gTeachyTV_StaticResources _0815ABF8: .4byte sub_815AC2C thumb_func_end sub_815ABC4 - thumb_func_start sub_815ABFC -sub_815ABFC: @ 815ABFC + thumb_func_start CB2_ReturnToTeachyTV +CB2_ReturnToTeachyTV: @ 815ABFC push {lr} - ldr r1, _0815AC10 @ =gUnknown_203F444 + ldr r1, _0815AC10 @ =gTeachyTV_StaticResources ldrb r0, [r1, 0x4] cmp r0, 0x1 bne _0815AC14 @@ -70,7 +70,7 @@ sub_815ABFC: @ 815ABFC bl sub_815ABC4 b _0815AC1C .align 2, 0 -_0815AC10: .4byte gUnknown_203F444 +_0815AC10: .4byte gTeachyTV_StaticResources _0815AC14: ldr r1, [r1] movs r0, 0x2 @@ -78,16 +78,16 @@ _0815AC14: _0815AC1C: pop {r0} bx r0 - thumb_func_end sub_815ABFC + thumb_func_end CB2_ReturnToTeachyTV thumb_func_start sub_815AC20 sub_815AC20: @ 815AC20 - ldr r1, _0815AC28 @ =gUnknown_203F444 + ldr r1, _0815AC28 @ =gTeachyTV_StaticResources movs r0, 0x1 strb r0, [r1, 0x4] bx lr .align 2, 0 -_0815AC28: .4byte gUnknown_203F444 +_0815AC28: .4byte gTeachyTV_StaticResources thumb_func_end sub_815AC20 thumb_func_start sub_815AC2C @@ -145,7 +145,7 @@ _0815AC9C: beq _0815AD6E bl sub_815AEB8 bl sub_815AFEC - ldr r0, _0815ACE0 @ =gUnknown_203F444 + ldr r0, _0815ACE0 @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x4] cmp r0, 0x2 bne _0815ACEC @@ -167,7 +167,7 @@ _0815AC9C: bl sub_815B118 b _0815AD26 .align 2, 0 -_0815ACE0: .4byte gUnknown_203F444 +_0815ACE0: .4byte gTeachyTV_StaticResources _0815ACE4: .4byte sub_815BA54 _0815ACE8: .4byte gTasks _0815ACEC: @@ -384,7 +384,7 @@ _0815AEE4: .4byte gUnknown_84792F0 thumb_func_start sub_815AEE8 sub_815AEE8: @ 815AEE8 push {r4,r5,lr} - ldr r4, _0815AF48 @ =gUnknown_3005E70 + ldr r4, _0815AF48 @ =gMultiuseListMenuTemplate adds r1, r4, 0 ldr r0, _0815AF4C @ =gUnknown_8479368 ldm r0!, {r2,r3,r5} @@ -419,7 +419,7 @@ sub_815AEE8: @ 815AEE8 orrs r0, r1 strb r0, [r4, 0x14] _0815AF30: - ldr r0, _0815AF58 @ =gUnknown_203F444 + ldr r0, _0815AF58 @ =gTeachyTV_StaticResources ldrh r1, [r0, 0x6] ldrh r2, [r0, 0x8] adds r0, r4, 0 @@ -430,11 +430,11 @@ _0815AF30: pop {r1} bx r1 .align 2, 0 -_0815AF48: .4byte gUnknown_3005E70 +_0815AF48: .4byte gMultiuseListMenuTemplate _0815AF4C: .4byte gUnknown_8479368 _0815AF50: .4byte sub_815AFD8 _0815AF54: .4byte gUnknown_8479340 -_0815AF58: .4byte gUnknown_203F444 +_0815AF58: .4byte gTeachyTV_StaticResources thumb_func_end sub_815AEE8 thumb_func_start sub_815AF5C @@ -694,7 +694,7 @@ sub_815B118: @ 815B118 movs r0, 0x1 bl ClearWindowTilemap bl sub_815B0B4 - ldr r0, _0815B198 @ =gUnknown_203F444 + ldr r0, _0815B198 @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] cmp r0, 0 blt _0815B1B8 @@ -732,7 +732,7 @@ sub_815B118: @ 815B118 .align 2, 0 _0815B190: .4byte gTasks+0x8 _0815B194: .4byte gSprites -_0815B198: .4byte gUnknown_203F444 +_0815B198: .4byte gTeachyTV_StaticResources _0815B19C: .4byte gUnknown_203F450 _0815B1A0: .4byte 0x00004004 _0815B1A4: .4byte 0x00004005 @@ -867,7 +867,7 @@ _0815B298: .4byte gPaletteFade _0815B29C: .4byte gUnknown_203F450 _0815B2A0: bl sub_8055DC4 - ldr r0, _0815B2BC @ =gUnknown_203F444 + ldr r0, _0815B2BC @ =gTeachyTV_StaticResources ldr r0, [r0] bl SetMainCallback2 _0815B2AC: @@ -879,7 +879,7 @@ _0815B2B6: pop {r0} bx r0 .align 2, 0 -_0815B2BC: .4byte gUnknown_203F444 +_0815B2BC: .4byte gTeachyTV_StaticResources thumb_func_end sub_815B274 thumb_func_start sub_815B2C0 @@ -942,13 +942,13 @@ _0815B330: _0815B33E: movs r0, 0x5 bl PlaySE - ldr r2, _0815B380 @ =gUnknown_203F444 + ldr r2, _0815B380 @ =gTeachyTV_StaticResources movs r4, 0 strb r5, [r2, 0x5] ldrb r0, [r6] adds r1, r2, 0x6 adds r2, 0x8 - bl sub_810713C + bl DestroyListMenu bl sub_815B0B4 movs r0, 0x1 bl ClearWindowTilemap @@ -969,7 +969,7 @@ _0815B37A: pop {r0} bx r0 .align 2, 0 -_0815B380: .4byte gUnknown_203F444 +_0815B380: .4byte gTeachyTV_StaticResources _0815B384: .4byte gTasks _0815B388: .4byte sub_815B4EC thumb_func_end sub_815B2C0 @@ -1208,7 +1208,7 @@ _0815B554: .4byte 0x00004006 _0815B558: .4byte sub_815B92C _0815B55C: ldr r1, _0815B580 @ =gUnknown_8479548 - ldr r0, _0815B584 @ =gUnknown_203F444 + ldr r0, _0815B584 @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] lsls r0, 2 adds r0, r1 @@ -1226,7 +1226,7 @@ _0815B578: bx r0 .align 2, 0 _0815B580: .4byte gUnknown_8479548 -_0815B584: .4byte gUnknown_203F444 +_0815B584: .4byte gTeachyTV_StaticResources thumb_func_end sub_815B4EC thumb_func_start sub_815B588 @@ -1240,7 +1240,7 @@ sub_815B588: @ 815B588 ldr r0, _0815B5B4 @ =gTasks+0x8 adds r4, r0 ldr r1, _0815B5B8 @ =gUnknown_8479560 - ldr r0, _0815B5BC @ =gUnknown_203F444 + ldr r0, _0815B5BC @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] lsls r0, 2 adds r0, r1 @@ -1255,7 +1255,7 @@ sub_815B588: @ 815B588 .align 2, 0 _0815B5B4: .4byte gTasks+0x8 _0815B5B8: .4byte gUnknown_8479560 -_0815B5BC: .4byte gUnknown_203F444 +_0815B5BC: .4byte gTeachyTV_StaticResources thumb_func_end sub_815B588 thumb_func_start sub_815B5C0 @@ -1269,7 +1269,7 @@ sub_815B5C0: @ 815B5C0 ldr r0, _0815B5EC @ =gTasks+0x8 adds r4, r0 ldr r1, _0815B5F0 @ =gUnknown_8479578 - ldr r0, _0815B5F4 @ =gUnknown_203F444 + ldr r0, _0815B5F4 @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] lsls r0, 2 adds r0, r1 @@ -1284,7 +1284,7 @@ sub_815B5C0: @ 815B5C0 .align 2, 0 _0815B5EC: .4byte gTasks+0x8 _0815B5F0: .4byte gUnknown_8479578 -_0815B5F4: .4byte gUnknown_203F444 +_0815B5F4: .4byte gTeachyTV_StaticResources thumb_func_end sub_815B5C0 thumb_func_start sub_815B5F8 @@ -1806,7 +1806,7 @@ sub_815B9F0: @ 815B9F0 lsls r0, 24 lsrs r1, r0, 24 adds r2, r1, 0 - ldr r0, _0815BA0C @ =gUnknown_203F444 + ldr r0, _0815BA0C @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] cmp r0, 0 blt _0815BA22 @@ -1816,7 +1816,7 @@ sub_815B9F0: @ 815B9F0 bl sub_815BC90 b _0815BA22 .align 2, 0 -_0815BA0C: .4byte gUnknown_203F444 +_0815BA0C: .4byte gTeachyTV_StaticResources _0815BA10: cmp r0, 0x5 bgt _0815BA22 @@ -1837,7 +1837,7 @@ _0815BA2C: .4byte sub_815BA30 thumb_func_start sub_815BA30 sub_815BA30: @ 815BA30 push {lr} - ldr r0, _0815BA44 @ =gUnknown_203F444 + ldr r0, _0815BA44 @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] cmp r0, 0x4 bne _0815BA48 @@ -1845,7 +1845,7 @@ sub_815BA30: @ 815BA30 bl sub_810B108 b _0815BA4E .align 2, 0 -_0815BA44: .4byte gUnknown_203F444 +_0815BA44: .4byte gTeachyTV_StaticResources _0815BA48: movs r0, 0x9 bl sub_810B108 @@ -1871,7 +1871,7 @@ sub_815BA54: @ 815BA54 cmp r0, 0 bne _0815BA86 ldr r1, _0815BA94 @ =gUnknown_8479390 - ldr r0, _0815BA98 @ =gUnknown_203F444 + ldr r0, _0815BA98 @ =gTeachyTV_StaticResources ldrb r0, [r0, 0x5] adds r0, r1 ldrb r0, [r0] @@ -1889,7 +1889,7 @@ _0815BA86: _0815BA8C: .4byte gTasks+0x8 _0815BA90: .4byte gPaletteFade _0815BA94: .4byte gUnknown_8479390 -_0815BA98: .4byte gUnknown_203F444 +_0815BA98: .4byte gTeachyTV_StaticResources _0815BA9C: .4byte sub_815B4EC thumb_func_end sub_815BA54 @@ -2155,7 +2155,7 @@ sub_815BC90: @ 815BC90 adds r5, r0, r1 bl sub_815B220 ldr r1, _0815BCD0 @ =gSpecialVar_0x8004 - ldr r4, _0815BCD4 @ =gUnknown_203F444 + ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources ldrb r0, [r4, 0x5] strh r0, [r1] ldr r1, _0815BCD8 @ =gMain @@ -2173,7 +2173,7 @@ sub_815BC90: @ 815BC90 .align 2, 0 _0815BCCC: .4byte gTasks+0x8 _0815BCD0: .4byte gSpecialVar_0x8004 -_0815BCD4: .4byte gUnknown_203F444 +_0815BCD4: .4byte gTeachyTV_StaticResources _0815BCD8: .4byte gMain _0815BCDC: .4byte sub_815BD58 _0815BCE0: @@ -2257,7 +2257,7 @@ _0815BD70: lsls r0, 1 bl PlayNewMapMusic _0815BD78: - bl sub_815ABFC + bl CB2_ReturnToTeachyTV pop {r0} bx r0 thumb_func_end sub_815BD58 diff --git a/asm/trade.s b/asm/trade.s index 9dc1c2bf3..ea2221aa1 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -20,7 +20,7 @@ sub_804C600: @ 804C600 strb r0, [r2, 0x8] ldr r0, _0804C6FC @ =sub_804D4F8 bl SetVBlankCallback - ldr r4, _0804C700 @ =gUnknown_841F408 + ldr r4, _0804C700 @ =gTMCaseMainWindowPalette adds r0, r4, 0 movs r1, 0xF0 movs r2, 0x14 @@ -118,7 +118,7 @@ _0804C6F0: .align 2, 0 _0804C6F8: .4byte gPaletteFade _0804C6FC: .4byte sub_804D4F8 -_0804C700: .4byte gUnknown_841F408 +_0804C700: .4byte gTMCaseMainWindowPalette _0804C704: .4byte gUnknown_8261F1C _0804C708: .4byte gUnknown_2031DA8 _0804C70C: .4byte gUnknown_8261F2C diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index 194066e70..fcf0ceb19 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -5355,14 +5355,14 @@ sub_812AD20: @ 812AD20 movs r1, 0xA movs r2, 0x20 bl sub_814FF2C - ldr r0, _0812AD4C @ =gUnknown_841F408 + ldr r0, _0812AD4C @ =gTMCaseMainWindowPalette movs r1, 0xE0 movs r2, 0x20 bl LoadPalette pop {r0} bx r0 .align 2, 0 -_0812AD4C: .4byte gUnknown_841F408 +_0812AD4C: .4byte gTMCaseMainWindowPalette thumb_func_end sub_812AD20 thumb_func_start sub_812AD50 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index a212d0acb..8fb1d4533 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -734,7 +734,7 @@ gUnknown_8416190:: @ 8416190 gUnknown_8416195:: .string "ã©ã“㸠ã¨ã³ã¾ã™ã‹?$" -gUnknown_84161A0:: +gOtherText_Use:: .string "USE$" gUnknown_84161A4:: @@ -743,7 +743,7 @@ gUnknown_84161A4:: gUnknown_84161A9:: .string "REGISTER$" -gUnknown_84161B2:: +gOtherText_Give:: .string "GIVE$" gUnknown_84161B7:: @@ -755,7 +755,7 @@ gUnknown_84161BC:: gFameCheckerText_Cancel:: @ 84161C1 .string "CANCEL$" -gUnknown_84161C8:: @ 84161C8 +gOtherText_Exit:: @ 84161C8 .string "EXIT$" gUnknown_84161CD:: @ 84161CD @@ -803,7 +803,7 @@ gUnknown_841620E:: @ 841620E gUnknown_8416210:: @ 8416210 .string "--$" -gUnknown_8416213:: @ 8416213 +gText_ThreeHyphens:: @ 8416213 .string "---$" gUnknown_8416217:: @ 8416217 @@ -818,7 +818,7 @@ gUnknown_8416221:: @ 8416221 gUnknown_8416223:: @ 8416223 .string "{UNKNOWN_F9 0x05}$" -gUnknown_8416226:: @ 8416226 +gOtherText_UnkF9_08_Clear_01:: @ 8416226 .string "{UNKNOWN_F9 0x08}{CLEAR 0x01}$" gUnknown_841622C:: @@ -872,7 +872,7 @@ gUnknown_84162A2:: gUnknown_84162A9:: @ 84162A9 .string "{STR_VAR_1}/{STR_VAR_2}\nBALLS {STR_VAR_3}$" -gUnknown_84162B9:: @ 84162B9 +gText_TimesStrVar1:: @ 84162B9 .string "×{STR_VAR_1}$" gUnknown_84162BD:: @ 84162BD @@ -890,20 +890,21 @@ gUnknown_84162F5:: @ 84162F5 gUnknown_84162FF:: @ 84162FF .incbin "baserom.gba", 0x4162FF, 0x2 -gUnknown_8416301:: @ 8416301 - .incbin "baserom.gba", 0x416301, 0xE +gText_IsSelected:: @ 8416301 + .string " is\nselected.$" gUnknown_841630F:: @ 841630F .incbin "baserom.gba", 0x41630F, 0x1B -gUnknown_841632A:: @ 841632A - .incbin "baserom.gba", 0x41632A, 0x15 +gText_ThereIsNoPokemon:: @ 841632A + .string "There is no\n" + .string "POKéMON.$" gUnknown_841633F:: @ 841633F .incbin "baserom.gba", 0x41633F, 0x1F -gUnknown_841635E:: @ 841635E - .incbin "baserom.gba", 0x41635E, 0x16 +gText_ItemCantBeHeld:: @ 841635E + .string "The {STR_VAR_1} can’t be held.$" gUnknown_8416374:: @ 8416374 .incbin "baserom.gba", 0x416374, 0x1B @@ -974,20 +975,24 @@ gUnknown_8416690:: @ 8416690 gUnknown_84166A7:: @ 84166A7 .incbin "baserom.gba", 0x4166A7, 0x2C -gUnknown_84166D3:: @ 84166D3 - .incbin "baserom.gba", 0x4166D3, 0x8 +gText_TMCase:: @ 84166D3 + .string "TM CASE$" -gUnknown_84166DB:: @ 84166DB - .incbin "baserom.gba", 0x4166DB, 0x6 +gText_Close:: @ 84166DB + .string "CLOSE$" -gUnknown_84166E1:: @ 84166E1 - .incbin "baserom.gba", 0x4166E1, 0x1E +gText_TMCaseWillBePutAway:: @ 84166E1 + .string "The TM CASE will be\n" + .string "put away.$" -gUnknown_84166FF:: @ 84166FF - .incbin "baserom.gba", 0x4166FF, 0x4 +gText_FontSize0:: @ 84166FF + .string "{SIZE 0}$" -gUnknown_8416703:: @ 8416703 - .incbin "baserom.gba", 0x416703, 0x7 +gText_FontSize2:: @ 8416703 + .string "{SIZE 2}$" + +gUnknown_8416707:: @ 8416707 + .string " $" gUnknown_841670A:: @ 841670A .incbin "baserom.gba", 0x41670A, 0xC @@ -1019,16 +1024,19 @@ gUnknown_8416861:: @ 8416861 gUnknown_841689E:: @ 841689E .incbin "baserom.gba", 0x41689E, 0x53 -gUnknown_84168F1:: @ 84168F1 - .incbin "baserom.gba", 0x4168F1, 0x20 +gText_OhNoICantBuyThat:: @ 84168F1 + .string "{STR_VAR_1}? Oh, no.\n" + .string "I can’t buy that.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416911:: @ 8416911 - .incbin "baserom.gba", 0x416911, 0x25 +gText_HowManyWouldYouLikeToSell:: @ 8416911 + .string "{STR_VAR_1}?\n" + .string "How many would you like to sell?$" -gUnknown_8416936:: @ 8416936 - .incbin "baserom.gba", 0x416936, 0x23 +gText_ICanPayThisMuch_WouldThatBeOkay:: @ 8416936 + .string "I can pay Â¥{STR_VAR_3}.\n" + .string "Would that be okay?$" -gUnknown_8416959:: @ 8416959 +gText_TurnedOverItemsWorthYen:: @ 8416959 .incbin "baserom.gba", 0x416959, 0x21 gText_PokedollarVar1:: @ 841697A @@ -1894,13 +1902,211 @@ gUnknown_841B779:: @ 841B779 .incbin "baserom.gba", 0x41B779, 0xC4 gUnknown_841B83D:: @ 841B83D - .incbin "baserom.gba", 0x41B83D, 0xD4A + .string "Hey, all you TRAINERS out there!\n" + .string "HELLO, TRAINERS!\p" + .string "……… ……… ………\p" + .string "Come on, let me hear you!\n" + .string "HELLO, TRAINERS!\l" + .string "It’s me, the POKé DUDE!\p" + .string "$" -gUnknown_841C587:: @ 841C587 - .incbin "baserom.gba", 0x41C587, 0x10C +gUnknown_841B8BF:: @ 841B8BF + .string "Today, the POKé DUDE’s here to\n" + .string "tell you about how you can battle\l" + .string "POKéMON!\p" + .string "Say you’re out for a stroll when,\n" + .string "suddenly, a wild POKéMON appears!\p" + .string "It’s up to you to smartly use your\n" + .string "POKéMON and their moves to reduce\l" + .string "the opponent’s HP to nothing, and\l" + .string "claim victory!\p" + .string "I’ll show you how to do that in\n" + .string "person and for sure!\p" + .string "All righty, here goes!\p" + .string "Keep your eyes glued to the super\n" + .string "POKé DUDE SHOW!$" -gUnknown_841C693:: @ 841C693 - .incbin "baserom.gba", 0x41C693, 0x4A9 +gUnknown_841BA41:: @ 841BA41 + .string "Well, did you get that?\p" + .string "Even if your own POKéMON’s HP\n" + .string "falls to zero, and it becomes\l" + .string "unable to battle, not to worry!\p" + .string "Just take it to any POKéMON\n" + .string "CENTER and heal it!\p" + .string "All righty, be seeing you!\p" + .string "Remember, TRAINERS, a good deed\n" + .string "a day brings happiness to stay!$" + +gUnknown_841BB40:: @ 841BB40 + .string "Today, the POKé DUDE’s here to\n" + .string "tell you about status problems!\p" + .string "Status problems include poisoning,\n" + .string "paralysis, sleep, burn…\p" + .string "There are a couple others, but\n" + .string "they really are trouble.\p" + .string "Get any one, and your POKéMON\n" + .string "may become useless in battle.\p" + .string "You know, it hurts the POKé DUDE\n" + .string "to see a POKéMON suffer…\p" + .string "So, what should you do if your\n" + .string "POKéMON gets a status problem?\p" + .string "Well, you’ve got me to show you!\p" + .string "All righty, here goes!\p" + .string "Keep your eyes glued to the super\n" + .string "POKé DUDE SHOW!$" + +gUnknown_841BD10:: @ 841BD10 + .string "Poisoning or paralysis don’t go\n" + .string "away after a battle.\p" + .string "If a POKéMON is poisoned, it loses\n" + .string "HP even while you’re walking.\p" + .string "You should heal POKéMON of these\n" + .string "kinds of problems right away.\p" + .string "Use an item, or try to get to a\n" + .string "POKéMON CENTER for healing.\p" + .string "That wasn’t hard, was it?\n" + .string "All righty, be seeing you!\p" + .string "Remember, TRAINERS, a good deed\n" + .string "a day brings happiness to stay!$" + +gUnknown_841BE76:: @ 841BE76 + .string "Does everyone know about type\n" + .string "matchups?\p" + .string "POKéMON and their moves all\n" + .string "belong to certain types.\p" + .string "For example, there are such types\n" + .string "as GRASS and WATER.\p" + .string "You need to consider the type of\n" + .string "the move used to attack…\p" + .string "And, the type of the POKéMON that\n" + .string "is hit by that attack.\p" + .string "Depending on how those two types\n" + .string "match up, the damage can change.\p" + .string "You see, it depends on whether\n" + .string "the type matchup is good or bad.\p" + .string "If you don’t know how matchups\n" + .string "work, battles will be tough.\p" + .string "So, let me demonstrate exactly\n" + .string "what I mean.\p" + .string "All righty, here goes!\p" + .string "Keep your eyes glued to the super\n" + .string "POKé DUDE SHOW!$" + +gUnknown_841C0AF:: @ 841C0AF + .string "Is it possible to launch an attack\n" + .string "that will inflict heavy damage?\p" + .string "Does the opposing POKéMON pose\n" + .string "a threat to your POKéMON?\p" + .string "Is there any chance that it may\n" + .string "have disastrously tough moves?\p" + .string "Watch the type matchups to gain\n" + .string "the upper hand!\p" + .string "All righty, be seeing you!\p" + .string "Oh, for the COOL-type POKé DUDE,\n" + .string "AWESOME-type kids like you match\l" + .string "up perfectly!\p" + .string "Remember, a good deed a day\n" + .string "brings happiness to stay!$" + +gUnknown_841C23B:: @ 841C23B + .string "Today, the POKé DUDE’s going to\n" + .string "show you how to catch POKéMON!\p" + .string "Just imagine… A groovy POKéMON\n" + .string "suddenly appearing in the wild!\p" + .string "Oh, you want it!\n" + .string "You just can’t help it!\p" + .string "Oh, you have to catch it!\n" + .string "You gotta have it!\p" + .string "Let me show you how you can make\n" + .string "it happen!\p" + .string "All righty, here goes!\p" + .string "Keep your eyes glued to the super\n" + .string "POKé DUDE SHOW!$" + +gUnknown_841C384:: @ 841C384 + .string "If your first POKé BALL fails to\n" + .string "catch the POKéMON, don’t give up!\p" + .string "Keep throwing POKé BALLS…\n" + .string "It’s bound to work sometime!\p" + .string "All righty, be seeing you!\p" + .string "Remember, TRAINERS, a good deed\n" + .string "a day brings happiness to stay!$" + +gUnknown_841C459:: @ 841C459 + .string "Hey, everyone!\n" + .string "Do you all have TMs?\p" + .string "A TM, Technical Machine, is an\n" + .string "amazingly great item!\p" + .string "It teaches POKéMON a move that\n" + .string "it may not learn when leveling up!\p" + .string "Isn’t that just great? What a\n" + .string "convenient world we live in!\p" + .string "Open the TM CASE and check out\n" + .string "the TMs you have.\p" + .string "You can check them out in detail,\n" + .string "too.$" + +gPokeDudeText_TMTypes:: @ 841C587 + .string "POKé DUDE: NORMAL, WATER, GRASS…\n" + .string "TMs also come in types.\p" + .string "Check the type and teach it to\n" + .string "a POKéMON that matches up well.\p" + .string "For example, WATER PULSE is\n" + .string "suitable for WATER-type POKéMON.\p" + .string "BULLET SEED is a move that most\n" + .string "GRASS-type POKéMON can learn.\p" + .string "There’s one other thing!$" + +gPokeDudeText_ReadTMDescription:: @ 841C693 + .string "Don’t just look at the type, read\n" + .string "the description, too.\p" + .string "It will contain hints about what\n" + .string "POKéMON might learn the move.\p" + .string "For example, take a move like\n" + .string "FOCUS PUNCH.\p" + .string "It doesn’t sound like anything a\n" + .string "bird or fish POKéMON can learn.\p" + .string "So, try using it on POKéMON with\n" + .string "arms that can throw punches!$" + +gUnknown_841C7B4:: @ 841C7B4 + .string "Wow, I talked a lot today!\n" + .string "All righty, be seeing you!\p" + .string "Remember, TRAINERS, a good deed\n" + .string "a day brings happiness to stay!$" + +gUnknown_841C82A:: @ 841C82A + .string "A TRAINER’s BAG has a bunch of\n" + .string "nifty, convenient features!\p" + .string "Take stuff in the KEY ITEMS\n" + .string "POCKET, for instance.\p" + .string "You can use a key item without\n" + .string "opening the BAG every time.\p" + .string "For example, let’s pretend I have\n" + .string "a TEACHY TV in my BAG.\p" + .string "I can register it for instant use,\n" + .string "and I’ll show you how!\p" + .string "All righty, here goes!\p" + .string "Keep your eyes glued to the sorta\n" + .string "super POKé DUDE SHOW!$" + +gUnknown_841C994:: @ 841C994 + .string "And now, your TEACHY TV is\n" + .string "registered.\p" + .string "How do you use it?\n" + .string "Well, here’s how it works.\p" + .string "Once an item in the KEY ITEMS\n" + .string "POKCET is registered, you can use\l" + .string "it by pressing SELECT.\p" + .string "So, you’ve given yourself\n" + .string "one-touch access to TEACHY TV.\p" + .string "All it takes for you to see me is\n" + .string "pressing one button!\p" + .string "That kind of attention is a little\n" + .string "embarrassing!\p" + .string "All righty, be seeing you!\p" + .string "Remember, TRAINERS, a good deed\n" + .string "a day brings happiness to stay!$" gUnknown_841CB3C:: @ 841CB3C .incbin "baserom.gba", 0x41CB3C, 0x5 @@ -2407,8 +2613,8 @@ gUnknown_841EF10:: @ 841EF10 gUnknown_841F1C8:: @ 841F1C8 .incbin "baserom.gba", 0x41F1C8, 0x240 -gUnknown_841F408:: @ 841F408 - .incbin "baserom.gba", 0x41F408, 0x20 +gTMCaseMainWindowPalette:: @ 841F408 + .incbin "graphics/tm_case/unk_841F408.gbapal" gUnknown_841F428:: @ 841F428 .incbin "baserom.gba", 0x41F428, 0x4 diff --git a/data/data_8471F00.s b/data/data_8471F00.s index 6733b3f4d..9c616b37c 100644 --- a/data/data_8471F00.s +++ b/data/data_8471F00.s @@ -237,7 +237,12 @@ gUnknown_8479548:: @ 8479548 .incbin "baserom.gba", 0x479548, 0x18 gUnknown_8479560:: @ 8479560 - .incbin "baserom.gba", 0x479560, 0x18 + .4byte gUnknown_841B8BF + .4byte gUnknown_841BB40 + .4byte gUnknown_841BE76 + .4byte gUnknown_841C23B + .4byte gUnknown_841C459 + .4byte gUnknown_841C82A gUnknown_8479578:: @ 8479578 .incbin "baserom.gba", 0x479578, 0x18 diff --git a/data/graphics.s b/data/graphics.s index 2a6e50c87..12cb6a33f 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13967,7 +13967,7 @@ gUnknown_8E84CB0:: @ 8E84CB0 gUnknown_8E84D20:: @ 8E84D20 .incbin "graphics/tm_case/unk_8E84D20.gbapal.lz" -gUnknown_8E84D90:: @ 8E84D90 +gTMCase_TMSpriteGfx:: @ 8E84D90 .incbin "graphics/tm_case/unk_8E84D90.4bpp.lz" gUnknown_8E84F20:: @ 8E84F20 diff --git a/graphics/tm_case/unk_841F408.pal b/graphics/tm_case/unk_841F408.pal new file mode 100644 index 000000000..25a3ac1d2 --- /dev/null +++ b/graphics/tm_case/unk_841F408.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +98 98 98 +213 213 205 +230 8 8 +255 189 115 +32 156 8 +148 246 148 +49 82 205 +164 197 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/include/graphics.h b/include/graphics.h index 0f3553eea..83cc19bb3 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -156,7 +156,7 @@ extern const u32 gUnknown_8E84A24[]; extern const u32 gUnknown_8E84B70[]; extern const u32 gUnknown_8E84CB0[]; extern const u32 gUnknown_8E84D20[]; -extern const u32 gUnknown_8E84D90[]; +extern const u32 gTMCase_TMSpriteGfx[]; extern const u32 gUnknown_8E84F20[]; extern const u32 gUnknown_8E85068[]; extern const u8 gUnknown_8E99118[]; diff --git a/include/item.h b/include/item.h index 9aea7dc86..320b7ffec 100644 --- a/include/item.h +++ b/include/item.h @@ -67,8 +67,8 @@ void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); void sub_809A5E4(struct BagPocket *); -u16 sub_809A798(u8 a0, u16 a1); -u16 sub_809A7B4(u8 a0, u16 a1); +u16 BagGetItemIdByPocketPosition(u8 a0, u16 a1); +u16 BagGetQuantityByPocketPosition(u8 a0, u16 a1); bool8 itemid_is_unique(u16 itemId); void sub_809A584(struct ItemSlot * slots, u8 capacity); diff --git a/include/list_menu.h b/include/list_menu.h index 9c4960e3e..3fd54d0d1 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -48,7 +48,7 @@ struct ListMenu { }; extern struct ListMenuTemplate gUnknown_03006310; -extern struct ListMenuTemplate gUnknown_3005E70; +extern struct ListMenuTemplate gMultiuseListMenuTemplate; // Exported ROM declarations @@ -56,9 +56,8 @@ u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2); s32 ListMenuHandleInput(u8 id); void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); -void sub_810713C(u8, u16 *, u16 *); +void DestroyListMenu(u8, u16 *, u16 *); u16 ListMenuGetYCoordForPrintingArrowCursor(u8); void sub_8107D38(u8, u8); -void sub_8107D68(u8, u8, u8, u8); #endif //GUARD_LIST_MENU_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index a04385b1d..e27fb4e5d 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -25,6 +25,6 @@ void sub_80BF7C8(void); u8 sub_80BF8E4(void); u8 sub_80BF848(s16 * a0, u16 a1); void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); -void sub_80BF5D0(u8 taskId, const struct WindowTemplate * unk1, u8 unk2, u8 unk3, u8 unk4, u8 unk5, u8 unk6, const TaskFunc *ptrs); +void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate * unk1, u8 unk2, u8 unk3, u8 unk4, u8 unk5, u8 unk6, const struct YesNoFuncTable *ptrs); #endif //GUARD_MENU_HELPERS_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 55537f21c..b17326667 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -29,6 +29,6 @@ void ResetBg0(void); void Menu_LoadStdPalAt(u16); void * malloc_and_decompress(const void * src, u32 * size); u16 sub_80F796C(void); -void sub_80F6B08(u8 bgId, u8 value, u8 height, u8 width, u8 x, u8 y); +void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/strings.h b/include/strings.h index c2173242f..6af1b0d69 100644 --- a/include/strings.h +++ b/include/strings.h @@ -92,27 +92,27 @@ extern const u8 gText_Coins[]; extern const u8 gText_EggNickname[]; extern const u8 gText_Pokemon[]; -extern const u8 gUnknown_84161A0[]; -extern const u8 gUnknown_84161B2[]; -extern const u8 gUnknown_84161C8[]; -extern const u8 gUnknown_8416213[]; -extern const u8 gUnknown_8416226[]; +extern const u8 gOtherText_Use[]; +extern const u8 gOtherText_Give[]; +extern const u8 gOtherText_Exit[]; +extern const u8 gText_ThreeHyphens[]; +extern const u8 gOtherText_UnkF9_08_Clear_01[]; extern const u8 gFameCheckerText_ListMenuCursor[]; -extern const u8 gUnknown_84162B9[]; -extern const u8 gUnknown_8416301[]; -extern const u8 gUnknown_841632A[]; -extern const u8 gUnknown_841635E[]; -extern const u8 gUnknown_84166D3[]; -extern const u8 gUnknown_84166DB[]; -extern const u8 gUnknown_84166E1[]; -extern const u8 gUnknown_84166FF[]; -extern const u8 gUnknown_8416703[]; -extern const u8 gUnknown_84168F1[]; -extern const u8 gUnknown_8416911[]; -extern const u8 gUnknown_8416936[]; -extern const u8 gUnknown_8416959[]; -extern const u8 gUnknown_841C587[]; -extern const u8 gUnknown_841C693[]; -extern const u16 gUnknown_841F408[]; +extern const u8 gText_TimesStrVar1[]; +extern const u8 gText_IsSelected[]; +extern const u8 gText_ThereIsNoPokemon[]; +extern const u8 gText_ItemCantBeHeld[]; +extern const u8 gText_TMCase[]; +extern const u8 gText_Close[]; +extern const u8 gText_TMCaseWillBePutAway[]; +extern const u8 gText_FontSize0[]; +extern const u8 gText_FontSize2[]; +extern const u8 gText_OhNoICantBuyThat[]; +extern const u8 gText_HowManyWouldYouLikeToSell[]; +extern const u8 gText_ICanPayThisMuch_WouldThatBeOkay[]; +extern const u8 gText_TurnedOverItemsWorthYen[]; +extern const u8 gPokeDudeText_TMTypes[]; +extern const u8 gPokeDudeText_ReadTMDescription[]; +extern const u16 gTMCaseMainWindowPalette[]; #endif //GUARD_STRINGS_H diff --git a/include/teachy_tv.h b/include/teachy_tv.h index 382ad117d..374780c04 100644 --- a/include/teachy_tv.h +++ b/include/teachy_tv.h @@ -1,7 +1,7 @@ #ifndef GUARD_TEACHY_TV_H #define GUARD_TEACHY_TV_H -void sub_815ABFC(void); +void CB2_ReturnToTeachyTV(void); void sub_815AC20(void); #endif //GUARD_TEACHY_TV_H diff --git a/src/fame_checker.c b/src/fame_checker.c index e98795909..c47e52f06 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -853,7 +853,7 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) FreeQuestionMarkSpriteResources(); FreeListMenuSelectorArrowPairResources(); SetMainCallback2(sFameCheckerData->savedCallback); - sub_810713C(sFameCheckerData->listMenuTaskId, NULL, NULL); + DestroyListMenu(sFameCheckerData->listMenuTaskId, NULL, NULL); Free(sBg3TilemapBuffer); Free(sBg1TilemapBuffer); Free(sBg2TilemapBuffer); diff --git a/src/text.c b/src/text.c index d83b36f88..d74d77e2f 100644 --- a/src/text.c +++ b/src/text.c @@ -8,7 +8,7 @@ extern u8 gGlyphInfo[0x90]; extern u8 gUnknown_203ADFA; -extern u16 gUnknown_841F408[]; +extern u16 gTMCaseMainWindowPalette[]; extern const struct OamData gOamData_83AC9D0; extern void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); @@ -52,7 +52,7 @@ const struct SpriteSheet gUnknown_81EA68C[] = const struct SpritePalette gUnknown_81EA6A4[] = { - {gUnknown_841F408, 0x8000}, + {gTMCaseMainWindowPalette, 0x8000}, {NULL} }; diff --git a/src/tm_case.c b/src/tm_case.c index 94b3278ab..607b7fbdd 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -30,28 +30,30 @@ #include "constants/items.h" #include "constants/songs.h" +#define TM_CASE_TM_TAG 400 + struct UnkStruct_203B10C { - void (* unk_00)(void); - u8 unk_04; + void (* savedCallback)(void); + u8 tmCaseMenuType; u8 unk_05; u8 unk_06; - u16 unk_08; - u16 unk_0a; + u16 selectedRow; + u16 scrollOffset; }; struct UnkStruct_203B118 { - void (* unk_00)(void); - u8 unk_04; - u8 unk_05; - u8 unk_06; - u8 unk_07; - u8 unk_08; - u16 unk_0a; - const u8 * unk_0c; - u8 unk_10; - s16 unk_12; + void (* savedCallback)(void); + u8 tmSpriteId; + u8 maxTMsShown; + u8 numTMs; + u8 contextMenuWindowId; + u8 scrollIndicatorArrowPairId; + u16 currItem; + const u8 * menuActionIndices; + u8 numMenuActions; + s16 seqId; u8 filler_14[8]; }; @@ -63,77 +65,77 @@ struct UnkStruct_203B11C u16 unk_162; }; -static EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; -static EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; -static EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; -static EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer -static EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; -static EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; -static EWRAM_DATA u16 * gUnknown_203B12C = NULL; +static EWRAM_DATA struct UnkStruct_203B10C sTMCaseStaticResources = {}; +static EWRAM_DATA struct UnkStruct_203B118 * sTMCaseDynamicResources = NULL; +static EWRAM_DATA struct UnkStruct_203B11C * sPokeDudePackBackup = NULL; +static EWRAM_DATA void * sTilemapBuffer = NULL; // tilemap buffer +static EWRAM_DATA struct ListMenuItem * sListMenuItemsBuffer = NULL; +static EWRAM_DATA u8 (* sListMenuStringsBuffer)[29] = NULL; +static EWRAM_DATA u16 * sTMSpritePaletteBuffer = NULL; -static void sub_8131894(void); -static bool8 sub_81318C0(void); -static void sub_8131A8C(void); -static void sub_8131AB8(void); -static bool8 sub_8131B20(void); -static void sub_8131C10(void); -static void sub_8131C50(void); +static void CB2_SetUpTMCaseUI_Blocking(void); +static bool8 DoSetUpTMCaseUI(void); +static void ResetBufferPointers_NoFree(void); +static void LoadBGTemplates(void); +static bool8 HandleLoadTMCaseGraphicsAndPalettes(void); +static void CreateTMCaseListMenuBuffers(void); +static void InitTMCaseListMenuItems(void); static void GetTMNumberAndMoveString(u8 * dest, u16 itemId); -static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); -static void sub_8131E68(u8 windowId, s32 itemId, u8 y); -static void sub_8131F0C(s32 itemIndex); -static void sub_8131FB0(u8 a0, u8 a1); +static void TMCase_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void TMCase_ItemPrintFunc(u8 windowId, s32 itemId, u8 y); +static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex); +static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1); static void sub_8132018(void); static void sub_81320BC(void); static void sub_8132120(void); static void sub_8132170(void); -static void sub_813226C(u8 taskId); -static void sub_81322D4(u8 taskId); -static void SelectTMAction_FromFieldBag(u8 taskId); -static void sub_8132568(u8 taskId); -static void sub_81325F0(u8 taskId); -static void sub_813265C(u8 taskId); -static void sub_81326F8(u8 taskId); -static void sub_8132714(u8 taskId); +static void Task_FadeOutAndCloseTMCase(u8 taskId); +static void Task_TMCaseMain(u8 taskId); +static void Task_SelectTMAction_FromFieldBag(u8 taskId); +static void Task_TMContextMenu_HandleInput(u8 taskId); +static void TMHMContextMenuAction_Use(u8 taskId); +static void TMHMContextMenuAction_Give(u8 taskId); +static void PrintError_ThereIsNoPokemon(u8 taskId); +static void PrintError_ItemCantBeHeld(u8 taskId); static void sub_8132758(u8 taskId); static void sub_8132780(u8 taskId); -static void sub_81327FC(u8 taskId); +static void TMHMContextMenuAction_Exit(u8 taskId); static void sub_8132868(u8 taskId); static void sub_81328B8(u8 taskId); -static void SelectTMAction_FromSellMenu(u8 taskId); -static void sub_81329C4(u8 taskId); -static void sub_8132A34(u8 taskId); -static void sub_8132A48(u8 taskId); -static void sub_8132AAC(u8 taskId); +static void Task_SelectTMAction_FromSellMenu(u8 taskId); +static void Task_AskConfirmSaleWithAmount(u8 taskId); +static void Task_PlaceYesNoBox(u8 taskId); +static void Task_SaleOfTMsCancelled(u8 taskId); +static void Task_InitQuantitySelectUI(u8 taskId); static void sub_8132B5C(s16 quantity, s32 value); static void sub_8132BC8(u8 taskId); -static void sub_8132CAC(u8 taskId); -static void sub_8132D34(u8 taskId); -static void sub_8132E0C(u8 taskId); -static void sub_8132F20(u8 taskId); -static void sub_8132F60(u8 taskId); -static void sub_8133244(void); -static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -static void sub_8133354(u8 windowId); -static void sub_8133368(u8 windowId); -static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); -static void sub_81333C4(void); -static void sub_8133404(void); -static void sub_8133444(u16 itemId); -static void sub_81335B0(u8 windowId, u8 x, u8 y); -static void sub_81335E0(void); -static void sub_8133604(u8 taskId, const TaskFunc * ptrs); -static u8 sub_8133630(u8 * a0, u8 a1); -static void sub_8133664(u8 * a0); -static u8 sub_813368C(u16 itemId); -static void sub_8133714(struct Sprite * sprite, u8 var); -static void sub_8133730(u8 type); -static void sub_8133790(struct Sprite * sprite, u8 var); -static void sub_81337E4(u8 a0, u16 itemId); -static void sub_8133810(struct Sprite * sprite); -static void sub_81338A8(void); +static void Task_PrintSaleConfirmedText(u8 taskId); +static void Task_DoSaleOfTMs(u8 taskId); +static void Task_AfterSale_ReturnToList(u8 taskId); +static void Task_TMCaseDude1(u8 taskId); +static void Task_TMCaseDude_Playback(u8 taskId); +static void InitWindowTemplatesAndPals(void); +static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +static void TMCase_SetWindowBorder1(u8 windowId); +static void TMCase_SetWindowBorder2(u8 windowId); +static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); +static void PrintStringTMCaseOnWindow3(void); +static void DrawMoveInfoUIMarkers(void); +static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId); +static void PlaceHMTileInWindow(u8 windowId, u8 x, u8 y); +static void HandlePrintMoneyOnHand(void); +static void HandleCreateYesNoMenu(u8 taskId, const struct YesNoFuncTable * ptrs); +static u8 AddTMContextMenu(u8 * a0, u8 a1); +static void RemoveTMContextMenu(u8 * a0); +static u8 CreateTMSprite(u16 itemId); +static void SetTMSpriteAnim(struct Sprite * sprite, u8 var); +static void TintTMSpriteByType(u8 type); +static void UpdateTMSpritePosition(struct Sprite * sprite, u8 var); +static void InitSelectedTMSpriteData(u8 a0, u16 itemId); +static void SpriteCB_MoveTMSpriteInCase(struct Sprite * sprite); +static void LoadTMTypePalettes(void); -static const struct BgTemplate gUnknown_8463134[] = { +static const struct BgTemplate sBGTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -161,36 +163,36 @@ static const struct BgTemplate gUnknown_8463134[] = { } }; -static void (*const gUnknown_8463140[])(u8 taskId) = { - SelectTMAction_FromFieldBag, +static void (*const sSelectTMActionTasks[])(u8 taskId) = { + Task_SelectTMAction_FromFieldBag, sub_8132868, - SelectTMAction_FromSellMenu, + Task_SelectTMAction_FromSellMenu, sub_81328B8 }; -static const struct MenuAction gUnknown_8463150[] = { - {gUnknown_84161A0, sub_81325F0}, - {gUnknown_84161B2, sub_813265C}, - {gUnknown_84161C8, sub_81327FC}, +static const struct MenuAction sMenuActions_UseGiveExit[] = { + {gOtherText_Use, TMHMContextMenuAction_Use }, + {gOtherText_Give, TMHMContextMenuAction_Give}, + {gOtherText_Exit, TMHMContextMenuAction_Exit}, }; -static const u8 gUnknown_8463168[] = {0, 1, 2}; -static const u8 gUnknown_846316B[] = {1, 2, 0}; -static const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; +static const u8 sMenuActionIndices_Field[] = {0, 1, 2}; +static const u8 sMenuActionIndices_UnionRoom[] = {1, 2}; +static const struct YesNoFuncTable sYesNoFuncTable = {Task_PrintSaleConfirmedText, Task_SaleOfTMsCancelled}; -static const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); -static const u8 gUnknown_846317C[] = _(" "); +static const u8 sText_ClearTo18[] = _("{CLEAR_TO 18}"); +static const u8 sText_SingleSpace[] = _(" "); -static ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; +static ALIGNED(4) const u16 sPal3Override[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; -static const struct TextColor gUnknown_8463184[] = { +static const struct TextColor sTextColors[] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 6}, {0, 14, 10} }; -static const struct WindowTemplate gUnknown_8463190[] = { +static const struct WindowTemplate sWindowTemplates[] = { {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081}, {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f}, {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9}, @@ -203,88 +205,87 @@ static const struct WindowTemplate gUnknown_8463190[] = { DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; +static const struct WindowTemplate sYesNoWindowTemplate = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; -static const struct WindowTemplate gUnknown_84631E8[] = { +static const struct WindowTemplate sTMContextWindowTemplates[] = { {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf}, {0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01cf} }; -static const struct OamData gOamData_84631F8 = { +static const struct OamData sTMSpriteOamData = { .size = 2, .priority = 2 }; -static const union AnimCmd gUnknown_8463200[] = { +static const union AnimCmd sTMSpriteAnim0[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -static const union AnimCmd gUnknown_8463208[] = { +static const union AnimCmd sTMSpriteAnim1[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_8463210[] = { - gUnknown_8463200, - gUnknown_8463208 +static const union AnimCmd *const sTMSpriteAnims[] = { + sTMSpriteAnim0, + sTMSpriteAnim1 }; -static const struct CompressedSpriteSheet gUnknown_8463218 = { - (const void *)gUnknown_8E84D90, +static const struct CompressedSpriteSheet sTMSpriteSheet = { + (const void *)gTMCase_TMSpriteGfx, 0x400, - 400 + TM_CASE_TM_TAG }; -static const struct SpriteTemplate gUnknown_8463220 = { - 400, - 400, - &gOamData_84631F8, - gUnknown_8463210, +static const struct SpriteTemplate sTMSpriteTemplate = { + TM_CASE_TM_TAG, + TM_CASE_TM_TAG, + &sTMSpriteOamData, + sTMSpriteAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static const u16 gUnknown_8463238[] = { - 0x000, - 0x090, - 0x080, - 0x0c0, - 0x060, - 0x050, - 0x0b0, - 0x0a0, - 0x0e0, - 0x000, - 0x010, - 0x020, - 0x030, - 0x040, - 0x0d0, - 0x070, - 0x100, - 0x0f0 +static const u16 sTMSpritePaletteOffsetByType[] = { + [TYPE_NORMAL] = 0x000, + [TYPE_FIRE] = 0x010, + [TYPE_WATER] = 0x020, + [TYPE_GRASS] = 0x030, + [TYPE_ELECTRIC] = 0x040, + [TYPE_ROCK] = 0x050, + [TYPE_GROUND] = 0x060, + [TYPE_ICE] = 0x070, + [TYPE_FLYING] = 0x080, + [TYPE_FIGHTING] = 0x090, + [TYPE_GHOST] = 0x0a0, + [TYPE_BUG] = 0x0b0, + [TYPE_POISON] = 0x0c0, + [TYPE_PSYCHIC] = 0x0d0, + [TYPE_STEEL] = 0x0e0, + [TYPE_DARK] = 0x0f0, + [TYPE_DRAGON] = 0x100 }; -void InitTMCase(u8 a0, void (* a1)(void), u8 a2) +void InitTMCase(u8 type, void (* callback)(void), u8 a2) { - sub_8131A8C(); - gUnknown_203B118 = Alloc(sizeof(struct UnkStruct_203B118)); - gUnknown_203B118->unk_00 = 0; - gUnknown_203B118->unk_08 = 0xFF; - gUnknown_203B118->unk_07 = 0xFF; - if (a0 != 5) - gUnknown_203B10C.unk_04 = a0; - if (a1 != NULL) - gUnknown_203B10C.unk_00 = a1; + ResetBufferPointers_NoFree(); + sTMCaseDynamicResources = Alloc(sizeof(struct UnkStruct_203B118)); + sTMCaseDynamicResources->savedCallback = 0; + sTMCaseDynamicResources->scrollIndicatorArrowPairId = 0xFF; + sTMCaseDynamicResources->contextMenuWindowId = 0xFF; + if (type != 5) + sTMCaseStaticResources.tmCaseMenuType = type; + if (callback != NULL) + sTMCaseStaticResources.savedCallback = callback; if (a2 != 0xFF) - gUnknown_203B10C.unk_05 = a2; + sTMCaseStaticResources.unk_05 = a2; gTextFlags.flag_2 = FALSE; - SetMainCallback2(sub_8131894); + SetMainCallback2(CB2_SetUpTMCaseUI_Blocking); } -static void sub_8131864(void) +static void CB2_Idle(void) { RunTasks(); AnimateSprites(); @@ -293,27 +294,27 @@ static void sub_8131864(void) UpdatePaletteFade(); } -static void sub_8131880(void) +static void VBlankCB_Idle(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_8131894(void) +static void CB2_SetUpTMCaseUI_Blocking(void) { while (1) { if (sub_80BF72C() == TRUE) break; - if (sub_81318C0() == TRUE) + if (DoSetUpTMCaseUI() == TRUE) break; if (sub_80BF708() == TRUE) break; } } -static bool8 sub_81318C0(void) +static bool8 DoSetUpTMCaseUI(void) { u8 taskId; @@ -345,16 +346,16 @@ static bool8 sub_81318C0(void) gMain.state++; break; case 6: - sub_8131AB8(); - gUnknown_203B118->unk_12 = 0; + LoadBGTemplates(); + sTMCaseDynamicResources->seqId = 0; gMain.state++; break; case 7: - sub_8133244(); + InitWindowTemplatesAndPals(); gMain.state++; break; case 8: - if (sub_8131B20()) + if (HandleLoadTMCaseGraphicsAndPalettes()) gMain.state++; break; case 9: @@ -368,24 +369,24 @@ static bool8 sub_81318C0(void) gMain.state++; break; case 11: - sub_8133404(); + DrawMoveInfoUIMarkers(); gMain.state++; break; case 12: - sub_8131C10(); - sub_8131C50(); + CreateTMCaseListMenuBuffers(); + InitTMCaseListMenuItems(); gMain.state++; break; case 13: - sub_81333C4(); + PrintStringTMCaseOnWindow3(); gMain.state++; break; case 14: - if (gUnknown_203B10C.unk_04 == 4) - taskId = CreateTask(sub_8132F20, 0); + if (sTMCaseStaticResources.tmCaseMenuType == 4) + taskId = CreateTask(Task_TMCaseDude1, 0); else - taskId = CreateTask(sub_81322D4, 0); - gTasks[taskId].data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + taskId = CreateTask(Task_TMCaseMain, 0); + gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); gMain.state++; break; case 15: @@ -393,7 +394,7 @@ static bool8 sub_81318C0(void) gMain.state++; break; case 16: - gUnknown_203B118->unk_04 = sub_813368C(sub_809A798(POCKET_TM_CASE, gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08)); + sTMCaseDynamicResources->tmSpriteId = CreateTMSprite(BagGetItemIdByPocketPosition(POCKET_TM_CASE, sTMCaseStaticResources.scrollOffset + sTMCaseStaticResources.selectedRow)); gMain.state++; break; case 17: @@ -405,31 +406,31 @@ static bool8 sub_81318C0(void) gMain.state++; break; default: - SetVBlankCallback(sub_8131880); - SetMainCallback2(sub_8131864); + SetVBlankCallback(VBlankCB_Idle); + SetMainCallback2(CB2_Idle); return TRUE; } return FALSE; } -static void sub_8131A8C(void) +static void ResetBufferPointers_NoFree(void) { - gUnknown_203B118 = NULL; - gUnknown_203B120 = NULL; - gUnknown_203B124 = NULL; - gUnknown_203B128 = NULL; - gUnknown_203B12C = NULL; + sTMCaseDynamicResources = NULL; + sTilemapBuffer = NULL; + sListMenuItemsBuffer = NULL; + sListMenuStringsBuffer = NULL; + sTMSpritePaletteBuffer = NULL; } -static void sub_8131AB8(void) +static void LoadBGTemplates(void) { void ** ptr; sub_80BF7C8(); - ptr = &gUnknown_203B120; + ptr = &sTilemapBuffer; *ptr = AllocZeroed(0x800); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_8463134, NELEMS(gUnknown_8463134)); + InitBgsFromTemplates(0, sBGTemplates, NELEMS(sBGTemplates)); SetBgTilemapBuffer(2, *ptr); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -440,170 +441,170 @@ static void sub_8131AB8(void) ShowBg(2); } -static bool8 sub_8131B20(void) +static bool8 HandleLoadTMCaseGraphicsAndPalettes(void) { - switch (gUnknown_203B118->unk_12) + switch (sTMCaseDynamicResources->seqId) { case 0: reset_temp_tile_data_buffers(); decompress_and_copy_tile_data_to_vram(1, gUnknown_8E845D8, 0, 0, 0); - gUnknown_203B118->unk_12++; + sTMCaseDynamicResources->seqId++; break; case 1: if (free_temp_tile_data_buffers_if_possible() != TRUE) { - LZDecompressWram(gUnknown_8E84A24, gUnknown_203B120); - gUnknown_203B118->unk_12++; + LZDecompressWram(gUnknown_8E84A24, sTilemapBuffer); + sTMCaseDynamicResources->seqId++; } break; case 2: LZDecompressWram(gUnknown_8E84B70, GetBgTilemapBuffer(1)); - gUnknown_203B118->unk_12++; + sTMCaseDynamicResources->seqId++; break; case 3: if (gSaveBlock2Ptr->playerGender == MALE) LoadCompressedPalette(gUnknown_8E84CB0, 0, 0x80); else LoadCompressedPalette(gUnknown_8E84D20, 0, 0x80); - gUnknown_203B118->unk_12++; + sTMCaseDynamicResources->seqId++; break; case 4: - LoadCompressedObjectPic(&gUnknown_8463218); - gUnknown_203B118->unk_12++; + LoadCompressedObjectPic(&sTMSpriteSheet); + sTMCaseDynamicResources->seqId++; break; default: - sub_81338A8(); - gUnknown_203B118->unk_12 = 0; + LoadTMTypePalettes(); + sTMCaseDynamicResources->seqId = 0; return TRUE; } return FALSE; } -static void sub_8131C10(void) +static void CreateTMCaseListMenuBuffers(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; - gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); - gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); + sListMenuItemsBuffer = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); + sListMenuStringsBuffer = Alloc(sTMCaseDynamicResources->numTMs * 29); } -static void sub_8131C50(void) +static void InitTMCaseListMenuItems(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; - for (i = 0; i < gUnknown_203B118->unk_06; i++) + for (i = 0; i < sTMCaseDynamicResources->numTMs; i++) { - GetTMNumberAndMoveString(gUnknown_203B128[i], pocket->itemSlots[i].itemId); - gUnknown_203B124[i].unk_00 = gUnknown_203B128[i]; - gUnknown_203B124[i].unk_04 = i; + GetTMNumberAndMoveString(sListMenuStringsBuffer[i], pocket->itemSlots[i].itemId); + sListMenuItemsBuffer[i].unk_00 = sListMenuStringsBuffer[i]; + sListMenuItemsBuffer[i].unk_04 = i; } - gUnknown_203B124[i].unk_00 = gUnknown_84166DB; - gUnknown_203B124[i].unk_04 = -2; - gUnknown_3005E70.items = gUnknown_203B124; - gUnknown_3005E70.totalItems = gUnknown_203B118->unk_06 + 1; - gUnknown_3005E70.windowId = 0; - gUnknown_3005E70.header_X = 0; - gUnknown_3005E70.item_X = 8; - gUnknown_3005E70.cursor_X = 0; - gUnknown_3005E70.lettersSpacing = 0; - gUnknown_3005E70.itemVerticalPadding = 2; - gUnknown_3005E70.upText_Y = 2; - gUnknown_3005E70.maxShowed = gUnknown_203B118->unk_05; - gUnknown_3005E70.fontId = 2; - gUnknown_3005E70.cursorPal = 2; - gUnknown_3005E70.fillValue = 0; - gUnknown_3005E70.cursorShadowPal = 3; - gUnknown_3005E70.moveCursorFunc = sub_8131E18; - gUnknown_3005E70.itemPrintFunc = sub_8131E68; - gUnknown_3005E70.cursorKind = 0; - gUnknown_3005E70.scrollMultiple = 0; + sListMenuItemsBuffer[i].unk_00 = gText_Close; + sListMenuItemsBuffer[i].unk_04 = -2; + gMultiuseListMenuTemplate.items = sListMenuItemsBuffer; + gMultiuseListMenuTemplate.totalItems = sTMCaseDynamicResources->numTMs + 1; + gMultiuseListMenuTemplate.windowId = 0; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = 8; + gMultiuseListMenuTemplate.cursor_X = 0; + gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.itemVerticalPadding = 2; + gMultiuseListMenuTemplate.upText_Y = 2; + gMultiuseListMenuTemplate.maxShowed = sTMCaseDynamicResources->maxTMsShown; + gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.cursorPal = 2; + gMultiuseListMenuTemplate.fillValue = 0; + gMultiuseListMenuTemplate.cursorShadowPal = 3; + gMultiuseListMenuTemplate.moveCursorFunc = TMCase_MoveCursorFunc; + gMultiuseListMenuTemplate.itemPrintFunc = TMCase_ItemPrintFunc; + gMultiuseListMenuTemplate.cursorKind = 0; + gMultiuseListMenuTemplate.scrollMultiple = 0; } static void GetTMNumberAndMoveString(u8 * dest, u16 itemId) { - StringCopy(gStringVar4, gUnknown_84166FF); + StringCopy(gStringVar4, gText_FontSize0); if (itemId >= ITEM_HM01) { - StringAppend(gStringVar4, gUnknown_8463178); - StringAppend(gStringVar4, gUnknown_8416226); + StringAppend(gStringVar4, sText_ClearTo18); + StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01); ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_HM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 1); StringAppend(gStringVar4, gStringVar1); } else { - StringAppend(gStringVar4, gUnknown_8416226); + StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01); ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_TM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringAppend(gStringVar4, gStringVar1); } - StringAppend(gStringVar4, gUnknown_846317C); - StringAppend(gStringVar4, gUnknown_8416703); + StringAppend(gStringVar4, sText_SingleSpace); + StringAppend(gStringVar4, gText_FontSize2); StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]); StringCopy(dest, gStringVar4); } -static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void TMCase_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u16 itemId; if (itemIndex == -2) itemId = 0; else - itemId = sub_809A798(POCKET_TM_CASE, itemIndex); + itemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, itemIndex); if (onInit != TRUE) { PlaySE(SE_SELECT); - sub_81337E4(gUnknown_203B118->unk_04, itemId); + InitSelectedTMSpriteData(sTMCaseDynamicResources->tmSpriteId, itemId); } - sub_8131F0C(itemIndex); - sub_8133444(itemId); + TMCase_MoveCursor_UpdatePrintedDescription(itemIndex); + TMCase_MoveCursor_UpdatePrintedTMInfo(itemId); } -static void sub_8131E68(u8 windowId, s32 itemId, u8 y) +static void TMCase_ItemPrintFunc(u8 windowId, s32 itemId, u8 y) { if (itemId != -2) { - if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, itemId))) + if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, itemId))) { - ConvertIntToDecimalStringN(gStringVar1, sub_809A7B4(POCKET_TM_CASE, itemId), STR_CONV_MODE_RIGHT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); - sub_81332EC(windowId, 0, gStringVar4, 0x7E, y, 0, 0, 0xFF, 1); + ConvertIntToDecimalStringN(gStringVar1, BagGetQuantityByPocketPosition(POCKET_TM_CASE, itemId), STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + AddTextPrinterParameterized_ColorByIndex(windowId, 0, gStringVar4, 0x7E, y, 0, 0, 0xFF, 1); } else { - sub_81335B0(windowId, 8, y); + PlaceHMTileInWindow(windowId, 8, y); } } } -static void sub_8131F0C(s32 itemIndex) +static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex) { const u8 * str; if (itemIndex != -2) { - str = ItemId_GetDescription(sub_809A798(POCKET_TM_CASE, itemIndex)); + str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_TM_CASE, itemIndex)); } else { - str = gUnknown_84166E1; + str = gText_TMCaseWillBePutAway; } FillWindowPixelBuffer(1, 0); - sub_81332EC(1, 2, str, 2, 3, 1, 0, 0, 0); + AddTextPrinterParameterized_ColorByIndex(1, 2, str, 2, 3, 1, 0, 0, 0); } -static void sub_8131F64(s32 a0) +static void FillBG2RowWithPalette_2timesNplus1(s32 a0) { sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1); schedule_bg_copy_tilemap_to_vram(2); } -static void sub_8131F90(u8 a0, u8 a1) +static void PrintListMenuCursorByID_WithColorIdx(u8 a0, u8 a1) { - sub_8131FB0(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); + PrintListMenuCursorAt_WithColorIdx(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); } -static void sub_8131FB0(u8 a0, u8 a1) +static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1) { if (a1 == 0xFF) { @@ -612,34 +613,34 @@ static void sub_8131FB0(u8 a0, u8 a1) } else { - sub_81332EC(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1); + AddTextPrinterParameterized_ColorByIndex(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1); } } static void sub_8132018(void) { - gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, gUnknown_203B118->unk_06 - gUnknown_203B118->unk_05 + 1, 0x6E, 0x6E, &gUnknown_203B10C.unk_0a); + sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, sTMCaseDynamicResources->numTMs - sTMCaseDynamicResources->maxTMsShown + 1, 0x6E, 0x6E, &sTMCaseStaticResources.scrollOffset); } static void sub_8132054(void) { - gUnknown_203B118->unk_0a = 1; - gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gUnknown_203B118->unk_0a); + sTMCaseDynamicResources->currItem = 1; + sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &sTMCaseDynamicResources->currItem); } -static void sub_813208C(void) +static void RemoveTMCaseScrollIndicatorArrowPair(void) { - if (gUnknown_203B118->unk_08 != 0xFF) + if (sTMCaseDynamicResources->scrollIndicatorArrowPairId != 0xFF) { - RemoveScrollIndicatorArrowPair(gUnknown_203B118->unk_08); - gUnknown_203B118->unk_08 = 0xFF; + RemoveScrollIndicatorArrowPair(sTMCaseDynamicResources->scrollIndicatorArrowPairId); + sTMCaseDynamicResources->scrollIndicatorArrowPairId = 0xFF; } } void ResetTMCaseCursorPos(void) { - gUnknown_203B10C.unk_08 = 0; - gUnknown_203B10C.unk_0a = 0; + sTMCaseStaticResources.selectedRow = 0; + sTMCaseStaticResources.scrollOffset = 0; } static void sub_81320BC(void) @@ -648,85 +649,85 @@ static void sub_81320BC(void) u16 i; sub_809A584(pocket->itemSlots, pocket->capacity); - gUnknown_203B118->unk_06 = 0; + sTMCaseDynamicResources->numTMs = 0; for (i = 0; i < pocket->capacity; i++) { if (pocket->itemSlots[i].itemId == ITEM_NONE) break; - gUnknown_203B118->unk_06++; + sTMCaseDynamicResources->numTMs++; } - gUnknown_203B118->unk_05 = min(gUnknown_203B118->unk_06 + 1, 5); + sTMCaseDynamicResources->maxTMsShown = min(sTMCaseDynamicResources->numTMs + 1, 5); } static void sub_8132120(void) { - if (gUnknown_203B10C.unk_0a != 0) + if (sTMCaseStaticResources.scrollOffset != 0) { - if (gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 > gUnknown_203B118->unk_06 + 1) - gUnknown_203B10C.unk_0a = gUnknown_203B118->unk_06 + 1 - gUnknown_203B118->unk_05; + if (sTMCaseStaticResources.scrollOffset + sTMCaseDynamicResources->maxTMsShown > sTMCaseDynamicResources->numTMs + 1) + sTMCaseStaticResources.scrollOffset = sTMCaseDynamicResources->numTMs + 1 - sTMCaseDynamicResources->maxTMsShown; } - if (gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08 >= gUnknown_203B118->unk_06 + 1) + if (sTMCaseStaticResources.scrollOffset + sTMCaseStaticResources.selectedRow >= sTMCaseDynamicResources->numTMs + 1) { - if (gUnknown_203B118->unk_06 + 1 < 2) - gUnknown_203B10C.unk_08 = 0; + if (sTMCaseDynamicResources->numTMs + 1 < 2) + sTMCaseStaticResources.selectedRow = 0; else - gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06; + sTMCaseStaticResources.selectedRow = sTMCaseDynamicResources->numTMs; } } static void sub_8132170(void) { u8 i; - if (gUnknown_203B10C.unk_08 > 3) + if (sTMCaseStaticResources.selectedRow > 3) { - for (i = 0; i <= gUnknown_203B10C.unk_08 - 3 && gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 != gUnknown_203B118->unk_06 + 1; i++) + for (i = 0; i <= sTMCaseStaticResources.selectedRow - 3 && sTMCaseStaticResources.scrollOffset + sTMCaseDynamicResources->maxTMsShown != sTMCaseDynamicResources->numTMs + 1; i++) { do {} while (0); - gUnknown_203B10C.unk_08--; - gUnknown_203B10C.unk_0a++; + sTMCaseStaticResources.selectedRow--; + sTMCaseStaticResources.scrollOffset++; } } } -static void sub_81321D4(void) +static void DestroyTMCaseBuffers(void) { - if (gUnknown_203B118 != NULL) - Free(gUnknown_203B118); - if (gUnknown_203B120 != NULL) - Free(gUnknown_203B120); - if (gUnknown_203B124 != NULL) - Free(gUnknown_203B124); - if (gUnknown_203B128 != NULL) - Free(gUnknown_203B128); - if (gUnknown_203B12C != NULL) - Free(gUnknown_203B12C); + if (sTMCaseDynamicResources != NULL) + Free(sTMCaseDynamicResources); + if (sTilemapBuffer != NULL) + Free(sTilemapBuffer); + if (sListMenuItemsBuffer != NULL) + Free(sListMenuItemsBuffer); + if (sListMenuStringsBuffer != NULL) + Free(sListMenuStringsBuffer); + if (sTMSpritePaletteBuffer != NULL) + Free(sTMSpritePaletteBuffer); FreeAllWindowBuffers(); } -static void sub_8132230(u8 taskId) +static void Task_BeginFadeOutFromTMCase(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_813226C; + gTasks[taskId].func = Task_FadeOutAndCloseTMCase; } -static void sub_813226C(u8 taskId) +static void Task_FadeOutAndCloseTMCase(u8 taskId) { s16 * data = gTasks[taskId].data; if (!gPaletteFade.active) { - sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); - if (gUnknown_203B118->unk_00 != NULL) - SetMainCallback2(gUnknown_203B118->unk_00); + DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); + if (sTMCaseDynamicResources->savedCallback != NULL) + SetMainCallback2(sTMCaseDynamicResources->savedCallback); else - SetMainCallback2(gUnknown_203B10C.unk_00); - sub_813208C(); - sub_81321D4(); + SetMainCallback2(sTMCaseStaticResources.savedCallback); + RemoveTMCaseScrollIndicatorArrowPair(); + DestroyTMCaseBuffers(); DestroyTask(taskId); } } -static void sub_81322D4(u8 taskId) +static void Task_TMCaseMain(u8 taskId) { s16 * data = gTasks[taskId].data; s32 input; @@ -736,12 +737,12 @@ static void sub_81322D4(u8 taskId) if (sub_80BF72C() != TRUE) { input = ListMenuHandleInput(data[0]); - get_coro_args_x18_x1A(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); - if (JOY_NEW(SELECT_BUTTON) && gUnknown_203B10C.unk_05 == 1) + get_coro_args_x18_x1A(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); + if (JOY_NEW(SELECT_BUTTON) && sTMCaseStaticResources.unk_05 == 1) { PlaySE(SE_SELECT); gSpecialVar_ItemId = ITEM_NONE; - sub_8132230(taskId); + Task_BeginFadeOutFromTMCase(taskId); } else { @@ -752,17 +753,17 @@ static void sub_81322D4(u8 taskId) case -2: PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; - sub_8132230(taskId); + Task_BeginFadeOutFromTMCase(taskId); break; default: PlaySE(SE_SELECT); - sub_8131F64(1); - sub_813208C(); - sub_8131F90(data[0], 2); + FillBG2RowWithPalette_2timesNplus1(1); + RemoveTMCaseScrollIndicatorArrowPair(); + PrintListMenuCursorByID_WithColorIdx(data[0], 2); data[1] = input; - data[2] = sub_809A7B4(POCKET_TM_CASE, input); - gSpecialVar_ItemId = sub_809A798(POCKET_TM_CASE, input); - gTasks[taskId].func = gUnknown_8463140[gUnknown_203B10C.unk_04]; + data[2] = BagGetQuantityByPocketPosition(POCKET_TM_CASE, input); + gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, input); + gTasks[taskId].func = sSelectTMActionTasks[sTMCaseStaticResources.tmCaseMenuType]; break; } } @@ -770,47 +771,47 @@ static void sub_81322D4(u8 taskId) } } -static void sub_81323E4(u8 taskId) +static void Subtask_ReturnToTMCaseMain(u8 taskId) { - sub_8131F64(0); + FillBG2RowWithPalette_2timesNplus1(0); sub_8132018(); - gTasks[taskId].func = sub_81322D4; + gTasks[taskId].func = Task_TMCaseMain; } -static void SelectTMAction_FromFieldBag(u8 taskId) +static void Task_SelectTMAction_FromFieldBag(u8 taskId) { u8 * strbuf; - sub_8133368(2); + TMCase_SetWindowBorder2(2); if (!sub_80BF708() && InUnionRoom() != TRUE) { - sub_8133630(&gUnknown_203B118->unk_07, 0); - gUnknown_203B118->unk_0c = gUnknown_8463168; - gUnknown_203B118->unk_10 = 3; + AddTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId, 0); + sTMCaseDynamicResources->menuActionIndices = sMenuActionIndices_Field; + sTMCaseDynamicResources->numMenuActions = NELEMS(sMenuActionIndices_Field); } else { - sub_8133630(&gUnknown_203B118->unk_07, 1); - gUnknown_203B118->unk_0c = gUnknown_846316B; - gUnknown_203B118->unk_10 = 2; + AddTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId, 1); + sTMCaseDynamicResources->menuActionIndices = sMenuActionIndices_UnionRoom; + sTMCaseDynamicResources->numMenuActions = NELEMS(sMenuActionIndices_UnionRoom); } - AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c); - ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0); + AddItemMenuActionTextPrinters(sTMCaseDynamicResources->contextMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, sMenuActions_UseGiveExit, sTMCaseDynamicResources->menuActionIndices); + ProgramAndPlaceMenuCursorOnWindow(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0); strbuf = Alloc(256); GetTMNumberAndMoveString(strbuf, gSpecialVar_ItemId); - StringAppend(strbuf, gUnknown_8416301); - sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1); + StringAppend(strbuf, gText_IsSelected); + AddTextPrinterParameterized_ColorByIndex(2, 2, strbuf, 0, 2, 1, 0, 0, 1); Free(strbuf); if (itemid_is_unique(gSpecialVar_ItemId)) { - sub_81335B0(2, 0, 2); + PlaceHMTileInWindow(2, 0, 2); CopyWindowToVram(2, 2); } schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - gTasks[taskId].func = sub_8132568; + gTasks[taskId].func = Task_TMContextMenu_HandleInput; } -static void sub_8132568(u8 taskId) +static void Task_TMContextMenu_HandleInput(u8 taskId) { s8 input; @@ -821,21 +822,21 @@ static void sub_8132568(u8 taskId) { case -1: PlaySE(SE_SELECT); - gUnknown_8463150[gUnknown_203B118->unk_0c[gUnknown_203B118->unk_10 - 1]].func.void_u8(taskId); + sMenuActions_UseGiveExit[sTMCaseDynamicResources->menuActionIndices[sTMCaseDynamicResources->numMenuActions - 1]].func.void_u8(taskId); break; case -2: break; default: PlaySE(SE_SELECT); - gUnknown_8463150[gUnknown_203B118->unk_0c[input]].func.void_u8(taskId); + sMenuActions_UseGiveExit[sTMCaseDynamicResources->menuActionIndices[input]].func.void_u8(taskId); break; } } } -static void sub_81325F0(u8 taskId) +static void TMHMContextMenuAction_Use(u8 taskId) { - sub_8133664(&gUnknown_203B118->unk_07); + RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId); sub_810F4D8(2, 0); ClearWindowTilemap(2); PutWindowTilemap(0); @@ -843,21 +844,21 @@ static void sub_81325F0(u8 taskId) schedule_bg_copy_tilemap_to_vram(1); if (CalculatePlayerPartyCount() == 0) { - sub_81326F8(taskId); + PrintError_ThereIsNoPokemon(taskId); } else { gUnknown_3005E98 = sub_8125B40; - gUnknown_203B118->unk_00 = sub_8124C8C; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = sub_8124C8C; + Task_BeginFadeOutFromTMCase(taskId); } } -static void sub_813265C(u8 taskId) +static void TMHMContextMenuAction_Give(u8 taskId) { s16 * data = gTasks[taskId].data; - u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]); - sub_8133664(&gUnknown_203B118->unk_07); + u16 itemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]); + RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId); sub_810F4D8(2, 0); ClearWindowTilemap(2); PutWindowTilemap(1); @@ -869,30 +870,30 @@ static void sub_813265C(u8 taskId) { if (CalculatePlayerPartyCount() == 0) { - sub_81326F8(taskId); + PrintError_ThereIsNoPokemon(taskId); } else { - gUnknown_203B118->unk_00 = sub_8126EDC; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = sub_8126EDC; + Task_BeginFadeOutFromTMCase(taskId); } } else { - sub_8132714(taskId); + PrintError_ItemCantBeHeld(taskId); } } -static void sub_81326F8(u8 taskId) +static void PrintError_ThereIsNoPokemon(u8 taskId) { - sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gText_ThereIsNoPokemon, sub_8132758); } -static void sub_8132714(u8 taskId) +static void PrintError_ItemCantBeHeld(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_841635E); - sub_813337C(taskId, 2, gStringVar4, sub_8132758); + StringExpandPlaceholders(gStringVar4, gText_ItemCantBeHeld); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, sub_8132758); } static void sub_8132758(u8 taskId) @@ -908,9 +909,9 @@ static void sub_8132780(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); - data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); - sub_8131F90(data[0], 1); + DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); sub_810F260(6, 0); ClearWindowTilemap(6); PutWindowTilemap(1); @@ -918,38 +919,38 @@ static void sub_8132780(u8 taskId) PutWindowTilemap(5); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_81323E4(taskId); + Subtask_ReturnToTMCaseMain(taskId); } -static void sub_81327FC(u8 taskId) +static void TMHMContextMenuAction_Exit(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_8133664(&gUnknown_203B118->unk_07); + RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId); sub_810F4D8(2, 0); ClearWindowTilemap(2); PutWindowTilemap(0); - sub_8131F90(data[0], 1); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); PutWindowTilemap(1); PutWindowTilemap(4); PutWindowTilemap(5); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_81323E4(taskId); + Subtask_ReturnToTMCaseMain(taskId); } static void sub_8132868(u8 taskId) { s16 * data = gTasks[taskId].data; - if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - gUnknown_203B118->unk_00 = c2_8123744; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = c2_8123744; + Task_BeginFadeOutFromTMCase(taskId); } else { - sub_8132714(taskId); + PrintError_ItemCantBeHeld(taskId); } } @@ -957,61 +958,61 @@ static void sub_81328B8(u8 taskId) { s16 * data = gTasks[taskId].data; - if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - gUnknown_203B118->unk_00 = sub_808CE60; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = sub_808CE60; + Task_BeginFadeOutFromTMCase(taskId); } else { - sub_8132714(taskId); + PrintError_ItemCantBeHeld(taskId); } } -static void SelectTMAction_FromSellMenu(u8 taskId) +static void Task_SelectTMAction_FromSellMenu(u8 taskId) { s16 * data = gTasks[taskId].data; if (itemid_get_market_price(gSpecialVar_ItemId) == 0) { CopyItemName(gSpecialVar_ItemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_84168F1); - sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); + StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); } else { data[8] = 1; if (data[2] == 1) { - sub_81335E0(); - sub_81329C4(taskId); + HandlePrintMoneyOnHand(); + Task_AskConfirmSaleWithAmount(taskId); } else { if (data[2] > 99) data[2] = 99; CopyItemName(gSpecialVar_ItemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_8416911); - sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132AAC); + StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Task_InitQuantitySelectUI); } } } -static void sub_81329C4(u8 taskId) +static void Task_AskConfirmSaleWithAmount(u8 taskId) { s16 * data = gTasks[taskId].data; - ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, gUnknown_8416936); - sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34); + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Task_PlaceYesNoBox); } -static void sub_8132A34(u8 taskId) +static void Task_PlaceYesNoBox(u8 taskId) { - sub_8133604(taskId, gUnknown_8463170); + HandleCreateYesNoMenu(taskId, &sYesNoFuncTable); } -static void sub_8132A48(u8 taskId) +static void Task_SaleOfTMsCancelled(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1024,20 +1025,20 @@ static void sub_8132A48(u8 taskId) PutWindowTilemap(5); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_8131F90(data[0], 1); - sub_81323E4(taskId); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); + Subtask_ReturnToTMCaseMain(taskId); } -static void sub_8132AAC(u8 taskId) +static void Task_InitQuantitySelectUI(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_8133354(7); + TMCase_SetWindowBorder1(7); ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); - sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); - sub_8132B5C(1, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); - sub_81335E0(); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + AddTextPrinterParameterized_ColorByIndex(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + sub_8132B5C(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); + HandlePrintMoneyOnHand(); sub_8132054(); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); @@ -1048,8 +1049,8 @@ static void sub_8132B5C(s16 quantity, s32 amount) { FillWindowPixelBuffer(7, 0x11); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); - sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + AddTextPrinterParameterized_ColorByIndex(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); } @@ -1059,7 +1060,7 @@ static void sub_8132BC8(u8 taskId) if (sub_80BF848(&data[8], data[2]) == 1) { - sub_8132B5C(data[8], itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); + sub_8132B5C(data[8], itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); } else if (JOY_NEW(A_BUTTON)) { @@ -1067,8 +1068,8 @@ static void sub_8132BC8(u8 taskId) sub_810F4D8(7, 0); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_813208C(); - sub_81329C4(taskId); + RemoveTMCaseScrollIndicatorArrowPair(); + Task_AskConfirmSaleWithAmount(taskId); } else if (JOY_NEW(B_BUTTON)) { @@ -1081,25 +1082,25 @@ static void sub_8132BC8(u8 taskId) PutWindowTilemap(1); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_813208C(); - sub_8131F90(data[0], 1); - sub_81323E4(taskId); + RemoveTMCaseScrollIndicatorArrowPair(); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); + Subtask_ReturnToTMCaseMain(taskId); } } -static void sub_8132CAC(u8 taskId) +static void Task_PrintSaleConfirmedText(u8 taskId) { s16 * data = gTasks[taskId].data; PutWindowTilemap(0); schedule_bg_copy_tilemap_to_vram(0); CopyItemName(gSpecialVar_ItemId, gStringVar1); - ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, gUnknown_8416959); - sub_813337C(taskId, 2, gStringVar4, sub_8132D34); + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, Task_DoSaleOfTMs); } -static void sub_8132D34(u8 taskId) +static void Task_DoSaleOfTMs(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1107,17 +1108,17 @@ static void sub_8132D34(u8 taskId) RemoveBagItem(gSpecialVar_ItemId, data[8]); AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); sub_809C09C(gSpecialVar_ItemId, data[8], 2); - sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); sub_81320BC(); sub_8132120(); - sub_8131C50(); - data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); - sub_8131F90(data[0], 2); + InitTMCaseListMenuItems(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); + PrintListMenuCursorByID_WithColorIdx(data[0], 2); PrintMoneyAmountInMoneyBox(8, GetMoney(&gSaveBlock1Ptr->money), 0); - gTasks[taskId].func = sub_8132E0C; + gTasks[taskId].func = Task_AfterSale_ReturnToList; } -static void sub_8132E0C(u8 taskId) +static void Task_AfterSale_ReturnToList(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { @@ -1134,11 +1135,11 @@ static void sub_8132E0C(u8 taskId) void PokeDude_InitTMCase(void) { - gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C)); - memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); - memcpy(gUnknown_203B11C->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); - gUnknown_203B11C->unk_160 = gUnknown_203B10C.unk_08; - gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a; + sPokeDudePackBackup = AllocZeroed(sizeof(*sPokeDudePackBackup)); + memcpy(sPokeDudePackBackup->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(sPokeDudePackBackup->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + sPokeDudePackBackup->unk_160 = sTMCaseStaticResources.selectedRow; + sPokeDudePackBackup->unk_162 = sTMCaseStaticResources.scrollOffset; ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM)); ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems)); ResetTMCaseCursorPos(); @@ -1146,10 +1147,10 @@ void PokeDude_InitTMCase(void) AddBagItem(ITEM_TM03, 1); AddBagItem(ITEM_TM09, 1); AddBagItem(ITEM_TM35, 1); - InitTMCase(4, sub_815ABFC, 0); + InitTMCase(4, CB2_ReturnToTeachyTV, 0); } -static void sub_8132F20(u8 taskId) +static void Task_TMCaseDude1(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1157,11 +1158,11 @@ static void sub_8132F20(u8 taskId) { data[8] = 0; data[9] = 0; - gTasks[taskId].func = sub_8132F60; + gTasks[taskId].func = Task_TMCaseDude_Playback; } } -static void sub_8132F60(u8 taskId) +static void Task_TMCaseDude_Playback(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1178,7 +1179,7 @@ static void sub_8132F60(u8 taskId) { case 0: BeginNormalPaletteFade(0xFFFF8405, 4, 0, 6, 0); - sub_8131F64(1); + FillBG2RowWithPalette_2timesNplus1(1); data[8]++; break; case 1: @@ -1232,9 +1233,9 @@ static void sub_8132F60(u8 taskId) } break; case 8: - sub_8131F64(1); - sub_813337C(taskId, 4, gUnknown_841C587, 0); - gTasks[taskId].func = sub_8132F60; + FillBG2RowWithPalette_2timesNplus1(1); + TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokeDudeText_TMTypes, 0); + gTasks[taskId].func = Task_TMCaseDude_Playback; data[8]++; break; case 9: @@ -1246,7 +1247,7 @@ static void sub_8132F60(u8 taskId) case 10: if (JOY_NEW(A_BUTTON | B_BUTTON)) { - sub_8131F64(0); + FillBG2RowWithPalette_2timesNplus1(0); BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0); sub_810F260(6, 0); schedule_bg_copy_tilemap_to_vram(1); @@ -1254,9 +1255,9 @@ static void sub_8132F60(u8 taskId) } break; case 18: - sub_8131F64(1); - sub_813337C(taskId, 4, gUnknown_841C693, 0); - gTasks[taskId].func = sub_8132F60; + FillBG2RowWithPalette_2timesNplus1(1); + TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokeDudeText_ReadTMDescription, NULL); + gTasks[taskId].func = Task_TMCaseDude_Playback; // this function data[8]++; break; case 20: @@ -1266,12 +1267,12 @@ static void sub_8132F60(u8 taskId) case 21: if (!gPaletteFade.active) { - memcpy(gSaveBlock1Ptr->bagPocket_TMHM, gUnknown_203B11C->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); - memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, gUnknown_203B11C->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); - sub_810713C(data[0], NULL, NULL); - gUnknown_203B10C.unk_08 = gUnknown_203B11C->unk_160; - gUnknown_203B10C.unk_0a = gUnknown_203B11C->unk_162; - Free(gUnknown_203B11C); + memcpy(gSaveBlock1Ptr->bagPocket_TMHM, sPokeDudePackBackup->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, sPokeDudePackBackup->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + DestroyListMenu(data[0], NULL, NULL); + sTMCaseStaticResources.selectedRow = sPokeDudePackBackup->unk_160; + sTMCaseStaticResources.scrollOffset = sPokeDudePackBackup->unk_162; + Free(sPokeDudePackBackup); CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); sub_8108CF0(); BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0); @@ -1281,28 +1282,28 @@ static void sub_8132F60(u8 taskId) default: if (!gPaletteFade.active) { - SetMainCallback2(gUnknown_203B10C.unk_00); - sub_813208C(); - sub_81321D4(); + SetMainCallback2(sTMCaseStaticResources.savedCallback); + RemoveTMCaseScrollIndicatorArrowPair(); + DestroyTMCaseBuffers(); DestroyTask(taskId); } break; } } -static void sub_8133244(void) +static void InitWindowTemplatesAndPals(void) { u8 i; - InitWindows(gUnknown_8463190); + InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); sub_815001C(0, 0x5B, 0xE0); sub_814FEAC(0, 0x64, 0xB0); sub_814FF2C(0, 0x78, 0xD0); - LoadPalette(gUnknown_841F408, 0xF0, 0x20); - LoadPalette(gUnknown_841F408, 0xA0, 0x20); - LoadPalette(gUnknown_8463180, 0xF6, 0x04); - LoadPalette(gUnknown_8463180, 0xD6, 0x04); + LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20); + LoadPalette(gTMCaseMainWindowPalette, 0xA0, 0x20); + LoadPalette(sPal3Override, 0xF6, 0x04); + LoadPalette(sPal3Override, 0xD6, 0x04); sub_8107D38(0xc0, 0x01); for (i = 0; i < 9; i++) FillWindowPixelBuffer(i, 0x00); @@ -1314,43 +1315,43 @@ static void sub_8133244(void) schedule_bg_copy_tilemap_to_vram(0); } -static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { - AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8463184[colorIdx], speed, str); + AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &sTextColors[colorIdx], speed, str); } -static void sub_8133354(u8 windowId) +static void TMCase_SetWindowBorder1(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E); } -static void sub_8133368(u8 windowId) +static void TMCase_SetWindowBorder2(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D); } -static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) +static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) { DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func); schedule_bg_copy_tilemap_to_vram(1); } -static void sub_81333C4(void) +static void PrintStringTMCaseOnWindow3(void) { - u32 distance = 72 - GetStringWidth(1, gUnknown_84166D3, 0); - box_print(3, 1, distance / 2, 1, &gUnknown_8463184[0], 0, gUnknown_84166D3); + u32 distance = 72 - GetStringWidth(1, gText_TMCase, 0); + box_print(3, 1, distance / 2, 1, &sTextColors[0], 0, gText_TMCase); } -static void sub_8133404(void) +static void DrawMoveInfoUIMarkers(void) { - sub_8107D68(4, 19, 0, 0); - sub_8107D68(4, 20, 0, 12); - sub_8107D68(4, 21, 0, 24); - sub_8107D68(4, 22, 0, 36); + blit_move_info_icon(4, 19, 0, 0); + blit_move_info_icon(4, 20, 0, 12); + blit_move_info_icon(4, 21, 0, 24); + blit_move_info_icon(4, 22, 0, 36); CopyWindowToVram(4, 2); } -static void sub_8133444(u16 itemId) +static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId) { u8 i; u16 move; @@ -1361,63 +1362,63 @@ static void sub_8133444(u16 itemId) { for (i = 0; i < 4; i++) { - sub_81332EC(5, 3, gUnknown_8416213, 7, 12 * i, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, gText_ThreeHyphens, 7, 12 * i, 0, 0, 0xFF, 3); } CopyWindowToVram(5, 2); } else { move = ItemIdToBattleMoveId(itemId); - sub_8107D68(5, gBattleMoves[move].type + 1, 0, 0); + blit_move_info_icon(5, gBattleMoves[move].type + 1, 0, 0); if (gBattleMoves[move].power < 2) - str = gUnknown_8416213; + str = gText_ThreeHyphens; else { ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3); str = gStringVar1; } - sub_81332EC(5, 3, str, 7, 12, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, str, 7, 12, 0, 0, 0xFF, 3); if (gBattleMoves[move].accuracy == 0) - str = gUnknown_8416213; + str = gText_ThreeHyphens; else { ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3); str = gStringVar1; } - sub_81332EC(5, 3, str, 7, 24, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, str, 7, 24, 0, 0, 0xFF, 3); ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_81332EC(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3); CopyWindowToVram(5, 2); } } -static void sub_81335B0(u8 windowId, u8 x, u8 y) +static void PlaceHMTileInWindow(u8 windowId, u8 x, u8 y) { BlitBitmapToWindow(windowId, gUnknown_8E99118, x, y, 16, 12); } -static void sub_81335E0(void) +static void HandlePrintMoneyOnHand(void) { PrintMoneyAmountInMoneyBoxWithBorder(8, 0x78, 0xD, GetMoney(&gSaveBlock1Ptr->money)); } -static void sub_8133604(u8 taskId, const TaskFunc *ptrs) +static void HandleCreateYesNoMenu(u8 taskId, const struct YesNoFuncTable *ptrs) { - sub_80BF5D0(taskId, &gUnknown_84631E0, 2, 0, 2, 0x5B, 0x0E, ptrs); + CreateYesNoMenuWithCallbacks(taskId, &sYesNoWindowTemplate, 2, 0, 2, 0x5B, 0x0E, ptrs); } -static u8 sub_8133630(u8 * a0, u8 a1) +static u8 AddTMContextMenu(u8 * a0, u8 a1) { if (*a0 == 0xFF) { - *a0 = AddWindow(&gUnknown_84631E8[a1]); - sub_8133354(*a0); + *a0 = AddWindow(&sTMContextWindowTemplates[a1]); + TMCase_SetWindowBorder1(*a0); schedule_bg_copy_tilemap_to_vram(0); } return *a0; } -static void sub_8133664(u8 * a0) +static void RemoveTMContextMenu(u8 * a0) { sub_810F4D8(*a0, FALSE); ClearWindowTilemap(*a0); @@ -1426,26 +1427,26 @@ static void sub_8133664(u8 * a0) *a0 = 0xFF; } -static u8 sub_813368C(u16 itemId) +static u8 CreateTMSprite(u16 itemId) { - u8 spriteId = CreateSprite(&gUnknown_8463220, 0x29, 0x2E, 0); + u8 spriteId = CreateSprite(&sTMSpriteTemplate, 0x29, 0x2E, 0); u8 r5; if (itemId == ITEM_NONE) { - sub_8133790(&gSprites[spriteId], 0xFF); + UpdateTMSpritePosition(&gSprites[spriteId], 0xFF); return spriteId; } else { r5 = itemId - 33; - sub_8133714(&gSprites[spriteId], r5); - sub_8133730(gBattleMoves[ItemIdToBattleMoveId(itemId)].type); - sub_8133790(&gSprites[spriteId], r5); + SetTMSpriteAnim(&gSprites[spriteId], r5); + TintTMSpriteByType(gBattleMoves[ItemIdToBattleMoveId(itemId)].type); + UpdateTMSpritePosition(&gSprites[spriteId], r5); return spriteId; } } -static void sub_8133714(struct Sprite * sprite, u8 idx) +static void SetTMSpriteAnim(struct Sprite * sprite, u8 idx) { if (idx >= 50) StartSpriteAnim(sprite, 1); @@ -1453,17 +1454,17 @@ static void sub_8133714(struct Sprite * sprite, u8 idx) StartSpriteAnim(sprite, 0); } -static void sub_8133730(u8 type) +static void TintTMSpriteByType(u8 type) { - u8 palIndex = IndexOfSpritePaletteTag(400) << 4; - LoadPalette(gUnknown_203B12C + gUnknown_8463238[type], 0x100 | palIndex, 0x20); - if (gUnknown_203B10C.unk_04 == 4) + u8 palIndex = IndexOfSpritePaletteTag(TM_CASE_TM_TAG) << 4; + LoadPalette(sTMSpritePaletteBuffer + sTMSpritePaletteOffsetByType[type], 0x100 | palIndex, 0x20); + if (sTMCaseStaticResources.tmCaseMenuType == 4) { BlendPalettes(1 << (0x10 + palIndex), 4, RGB_BLACK); } } -static void sub_8133790(struct Sprite * sprite, u8 var) +static void UpdateTMSpritePosition(struct Sprite * sprite, u8 var) { s32 x, y; if (var == 0xFF) @@ -1485,14 +1486,14 @@ static void sub_8133790(struct Sprite * sprite, u8 var) sprite->pos1.y = y; } -static void sub_81337E4(u8 spriteId, u16 itemId) +static void InitSelectedTMSpriteData(u8 spriteId, u16 itemId) { gSprites[spriteId].data[0] = itemId; gSprites[spriteId].data[1] = 0; - gSprites[spriteId].callback = sub_8133810; + gSprites[spriteId].callback = SpriteCB_MoveTMSpriteInCase; } -static void sub_8133810(struct Sprite * sprite) +static void SpriteCB_MoveTMSpriteInCase(struct Sprite * sprite) { switch (sprite->data[1]) { @@ -1502,10 +1503,10 @@ static void sub_8133810(struct Sprite * sprite) if (sprite->data[0] != ITEM_NONE) { sprite->data[1]++; - sub_8133730(gBattleMoves[ItemIdToBattleMoveId(sprite->data[0])].type); + TintTMSpriteByType(gBattleMoves[ItemIdToBattleMoveId(sprite->data[0])].type); sprite->data[0] -= ITEM_TM01; - sub_8133714(sprite, sprite->data[0]); - sub_8133790(sprite, sprite->data[0]); + SetTMSpriteAnim(sprite, sprite->data[0]); + UpdateTMSpritePosition(sprite, sprite->data[0]); } else sprite->callback = SpriteCallbackDummy; @@ -1523,14 +1524,14 @@ static void sub_8133810(struct Sprite * sprite) } } -static void sub_81338A8(void) +static void LoadTMTypePalettes(void) { struct SpritePalette spritePalette; - gUnknown_203B12C = Alloc(0x110 * sizeof(u16)); - LZDecompressWram(gUnknown_8E84F20, gUnknown_203B12C); - LZDecompressWram(gUnknown_8E85068, gUnknown_203B12C + 0x100); - spritePalette.data = gUnknown_203B12C + 0x110; - spritePalette.tag = 400; + sTMSpritePaletteBuffer = Alloc(0x110 * sizeof(u16)); + LZDecompressWram(gUnknown_8E84F20, sTMSpritePaletteBuffer); + LZDecompressWram(gUnknown_8E85068, sTMSpritePaletteBuffer + 0x100); + spritePalette.data = sTMSpritePaletteBuffer + 0x110; + spritePalette.tag = TM_CASE_TM_TAG; LoadSpritePalette(&spritePalette); } diff --git a/sym_common.txt b/sym_common.txt index 16c275b01..4adfe3bac 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -301,7 +301,7 @@ gUnknown_3005E20: @ 3005E20 gUnknown_3005E60: @ 3005E60 .space 0x10 -gUnknown_3005E70: @ 3005E70 +gMultiuseListMenuTemplate: @ 3005E70 .space 0x18 .include "quest_log.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 4cfb317c0..5a9795eb1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1659,7 +1659,7 @@ gUnknown_203F43C: @ 203F43C gUnknown_203F440: @ 203F440 .space 0x4 -gUnknown_203F444: @ 203F444 +gTeachyTV_StaticResources: @ 203F444 .space 0x6 gUnknown_203F44A: @ 203F44A From 0f569270391f68ef10a703a9e37f1a4e298a0cee Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Apr 2019 13:26:24 -0400 Subject: [PATCH 095/318] tm_case documentation, 3 --- asm/item_menu.s | 4 +-- src/tm_case.c | 78 ++++++++++++++++++++++++------------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/asm/item_menu.s b/asm/item_menu.s index 05f1a6acb..01c5f6e4c 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -4835,7 +4835,7 @@ _0810A4BC: .4byte gUnknown_841630F _0810A4C0: .4byte sub_810A1D0 _0810A4C4: movs r0, 0xB6 - lsls r0, 1 + lsls r0, 1 @ ITEM_TM_CASE cmp r4, r0 bne _0810A4D4 ldr r0, _0810A4D0 @ =sub_810A52C @@ -4843,7 +4843,7 @@ _0810A4C4: .align 2, 0 _0810A4D0: .4byte sub_810A52C _0810A4D4: - ldr r0, _0810A4E8 @ =0x0000016d + ldr r0, _0810A4E8 @ =0x0000016d @ ITEM_BERRY_POUCH cmp r4, r0 bne _0810A4F0 ldr r0, _0810A4EC @ =sub_810A540 diff --git a/src/tm_case.c b/src/tm_case.c index 607b7fbdd..2fc30da2d 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -85,10 +85,10 @@ static void TMCase_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * static void TMCase_ItemPrintFunc(u8 windowId, s32 itemId, u8 y); static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex); static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1); -static void sub_8132018(void); -static void sub_81320BC(void); -static void sub_8132120(void); -static void sub_8132170(void); +static void CreateTMCaseScrollIndicatorArrowPair_Main(void); +static void TMCaseSetup_GetTMCount(void); +static void TMCaseSetup_InitListMenuPositions(void); +static void TMCaseSetup_UpdateVisualMenuOffset(void); static void Task_FadeOutAndCloseTMCase(u8 taskId); static void Task_TMCaseMain(u8 taskId); static void Task_SelectTMAction_FromFieldBag(u8 taskId); @@ -97,18 +97,18 @@ static void TMHMContextMenuAction_Use(u8 taskId); static void TMHMContextMenuAction_Give(u8 taskId); static void PrintError_ThereIsNoPokemon(u8 taskId); static void PrintError_ItemCantBeHeld(u8 taskId); -static void sub_8132758(u8 taskId); -static void sub_8132780(u8 taskId); +static void Task_WaitButtonAfterErrorPrint(u8 taskId); +static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId); static void TMHMContextMenuAction_Exit(u8 taskId); -static void sub_8132868(u8 taskId); -static void sub_81328B8(u8 taskId); +static void Task_SelectTMAction_Type1(u8 taskId); +static void Task_SelectTMAction_Type3(u8 taskId); static void Task_SelectTMAction_FromSellMenu(u8 taskId); static void Task_AskConfirmSaleWithAmount(u8 taskId); static void Task_PlaceYesNoBox(u8 taskId); static void Task_SaleOfTMsCancelled(u8 taskId); static void Task_InitQuantitySelectUI(u8 taskId); -static void sub_8132B5C(s16 quantity, s32 value); -static void sub_8132BC8(u8 taskId); +static void SellTM_PrintQuantityAndSalePrice(s16 quantity, s32 value); +static void Task_QuantitySelect_HandleInput(u8 taskId); static void Task_PrintSaleConfirmedText(u8 taskId); static void Task_DoSaleOfTMs(u8 taskId); static void Task_AfterSale_ReturnToList(u8 taskId); @@ -165,9 +165,9 @@ static const struct BgTemplate sBGTemplates[] = { static void (*const sSelectTMActionTasks[])(u8 taskId) = { Task_SelectTMAction_FromFieldBag, - sub_8132868, + Task_SelectTMAction_Type1, Task_SelectTMAction_FromSellMenu, - sub_81328B8 + Task_SelectTMAction_Type3 }; static const struct MenuAction sMenuActions_UseGiveExit[] = { @@ -363,9 +363,9 @@ static bool8 DoSetUpTMCaseUI(void) gMain.state++; break; case 10: - sub_81320BC(); - sub_8132120(); - sub_8132170(); + TMCaseSetup_GetTMCount(); + TMCaseSetup_InitListMenuPositions(); + TMCaseSetup_UpdateVisualMenuOffset(); gMain.state++; break; case 11: @@ -390,7 +390,7 @@ static bool8 DoSetUpTMCaseUI(void) gMain.state++; break; case 15: - sub_8132018(); + CreateTMCaseScrollIndicatorArrowPair_Main(); gMain.state++; break; case 16: @@ -617,12 +617,12 @@ static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1) } } -static void sub_8132018(void) +static void CreateTMCaseScrollIndicatorArrowPair_Main(void) { sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, sTMCaseDynamicResources->numTMs - sTMCaseDynamicResources->maxTMsShown + 1, 0x6E, 0x6E, &sTMCaseStaticResources.scrollOffset); } -static void sub_8132054(void) +static void CreateTMCaseScrollIndicatorArrowPair_SellQuantitySelect(void) { sTMCaseDynamicResources->currItem = 1; sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &sTMCaseDynamicResources->currItem); @@ -643,7 +643,7 @@ void ResetTMCaseCursorPos(void) sTMCaseStaticResources.scrollOffset = 0; } -static void sub_81320BC(void) +static void TMCaseSetup_GetTMCount(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; @@ -659,7 +659,7 @@ static void sub_81320BC(void) sTMCaseDynamicResources->maxTMsShown = min(sTMCaseDynamicResources->numTMs + 1, 5); } -static void sub_8132120(void) +static void TMCaseSetup_InitListMenuPositions(void) { if (sTMCaseStaticResources.scrollOffset != 0) { @@ -675,7 +675,7 @@ static void sub_8132120(void) } } -static void sub_8132170(void) +static void TMCaseSetup_UpdateVisualMenuOffset(void) { u8 i; if (sTMCaseStaticResources.selectedRow > 3) @@ -774,7 +774,7 @@ static void Task_TMCaseMain(u8 taskId) static void Subtask_ReturnToTMCaseMain(u8 taskId) { FillBG2RowWithPalette_2timesNplus1(0); - sub_8132018(); + CreateTMCaseScrollIndicatorArrowPair_Main(); gTasks[taskId].func = Task_TMCaseMain; } @@ -886,26 +886,26 @@ static void TMHMContextMenuAction_Give(u8 taskId) static void PrintError_ThereIsNoPokemon(u8 taskId) { - TMCase_PrintMessageWithFollowupTask(taskId, 2, gText_ThereIsNoPokemon, sub_8132758); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gText_ThereIsNoPokemon, Task_WaitButtonAfterErrorPrint); } static void PrintError_ItemCantBeHeld(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_ItemCantBeHeld); - TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, sub_8132758); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, Task_WaitButtonAfterErrorPrint); } -static void sub_8132758(u8 taskId) +static void Task_WaitButtonAfterErrorPrint(u8 taskId) { if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_8132780(taskId); + Subtask_CloseContextMenuAndReturnToMain(taskId); } } -static void sub_8132780(u8 taskId) +static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -939,7 +939,7 @@ static void TMHMContextMenuAction_Exit(u8 taskId) Subtask_ReturnToTMCaseMain(taskId); } -static void sub_8132868(u8 taskId) +static void Task_SelectTMAction_Type1(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -954,7 +954,7 @@ static void sub_8132868(u8 taskId) } } -static void sub_81328B8(u8 taskId) +static void Task_SelectTMAction_Type3(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -977,7 +977,7 @@ static void Task_SelectTMAction_FromSellMenu(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat); - TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Subtask_CloseContextMenuAndReturnToMain); } else { @@ -1037,15 +1037,15 @@ static void Task_InitQuantitySelectUI(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); AddTextPrinterParameterized_ColorByIndex(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); - sub_8132B5C(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); + SellTM_PrintQuantityAndSalePrice(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); HandlePrintMoneyOnHand(); - sub_8132054(); + CreateTMCaseScrollIndicatorArrowPair_SellQuantitySelect(); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - gTasks[taskId].func = sub_8132BC8; + gTasks[taskId].func = Task_QuantitySelect_HandleInput; } -static void sub_8132B5C(s16 quantity, s32 amount) +static void SellTM_PrintQuantityAndSalePrice(s16 quantity, s32 amount) { FillWindowPixelBuffer(7, 0x11); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); @@ -1054,13 +1054,13 @@ static void sub_8132B5C(s16 quantity, s32 amount) PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); } -static void sub_8132BC8(u8 taskId) +static void Task_QuantitySelect_HandleInput(u8 taskId) { s16 * data = gTasks[taskId].data; if (sub_80BF848(&data[8], data[2]) == 1) { - sub_8132B5C(data[8], itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); + SellTM_PrintQuantityAndSalePrice(data[8], itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); } else if (JOY_NEW(A_BUTTON)) { @@ -1109,8 +1109,8 @@ static void Task_DoSaleOfTMs(u8 taskId) AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); sub_809C09C(gSpecialVar_ItemId, data[8], 2); DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); - sub_81320BC(); - sub_8132120(); + TMCaseSetup_GetTMCount(); + TMCaseSetup_InitListMenuPositions(); InitTMCaseListMenuItems(); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); PrintListMenuCursorByID_WithColorIdx(data[0], 2); @@ -1129,7 +1129,7 @@ static void Task_AfterSale_ReturnToList(u8 taskId) PutWindowTilemap(3); PutWindowTilemap(4); PutWindowTilemap(5); - sub_8132780(taskId); + Subtask_CloseContextMenuAndReturnToMain(taskId); } } From d74dda011ad0fc50d3ffb1a98213308e114933cf Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Wed, 17 Apr 2019 14:09:54 -0700 Subject: [PATCH 096/318] Port fldeff_teleport --- asm/field_effect.s | 6 +-- asm/fldeff_cut.s | 24 ++++----- asm/fldeff_flash.s | 12 ++--- asm/fldeff_strength.s | 12 ++--- asm/fldeff_sweetscent.s | 12 ++--- asm/fldeff_teleport.s | 92 ----------------------------------- asm/item_use.s | 4 +- asm/overworld.s | 32 ++++++------ asm/party_menu.s | 52 ++++++++++---------- asm/rom6.s | 24 ++++----- asm/start_menu.s | 4 +- include/field_effect.h | 4 ++ include/field_player_avatar.h | 1 + include/fldeff.h | 7 +++ include/overworld.h | 4 +- include/party_menu.h | 5 +- ld_script.txt | 2 +- src/fldeff_teleport.c | 42 ++++++++++++++++ src/quest_log.c | 6 +-- sym_common.txt | 2 +- sym_ewram.txt | 2 +- 21 files changed, 158 insertions(+), 191 deletions(-) delete mode 100644 asm/fldeff_teleport.s create mode 100644 include/fldeff.h create mode 100644 src/fldeff_teleport.c diff --git a/asm/field_effect.s b/asm/field_effect.s index 785e36266..798b6920b 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -5156,8 +5156,8 @@ _08085B58: _08085B60: .4byte sub_8085A24 thumb_func_end sub_8085A80 - thumb_func_start sub_8085B64 -sub_8085B64: @ 8085B64 + thumb_func_start CreateTeleportFieldEffectTask +CreateTeleportFieldEffectTask: @ 8085B64 push {lr} ldr r0, _08085B74 @ =sub_8085B78 movs r1, 0 @@ -5166,7 +5166,7 @@ sub_8085B64: @ 8085B64 bx r0 .align 2, 0 _08085B74: .4byte sub_8085B78 - thumb_func_end sub_8085B64 + thumb_func_end CreateTeleportFieldEffectTask thumb_func_start sub_8085B78 sub_8085B78: @ 8085B78 diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index ac5ab0a72..c98cda3b7 100644 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -44,34 +44,34 @@ sub_8097898: @ 8097898 lsrs r0, 24 cmp r0, 0x1 bne _08097904 - ldr r1, _080978D0 @ =gUnknown_3005024 - ldr r0, _080978D4 @ =hm_add_c3_launch_phase_2 + ldr r1, _080978D0 @ =gFieldCallback2 + ldr r0, _080978D4 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080978D8 @ =gUnknown_203B0C4 + ldr r1, _080978D8 @ =gPostMenuFieldCallback ldr r0, _080978DC @ =sub_80979D0 b _080978EC .align 2, 0 _080978CC: .4byte gUnknown_2039874 -_080978D0: .4byte gUnknown_3005024 -_080978D4: .4byte hm_add_c3_launch_phase_2 -_080978D8: .4byte gUnknown_203B0C4 +_080978D0: .4byte gFieldCallback2 +_080978D4: .4byte FieldCallback_PrepareFadeInFromMenu +_080978D8: .4byte gPostMenuFieldCallback _080978DC: .4byte sub_80979D0 _080978E0: strb r0, [r4] _080978E2: - ldr r1, _080978F4 @ =gUnknown_3005024 - ldr r0, _080978F8 @ =hm_add_c3_launch_phase_2 + ldr r1, _080978F4 @ =gFieldCallback2 + ldr r0, _080978F8 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080978FC @ =gUnknown_203B0C4 + ldr r1, _080978FC @ =gPostMenuFieldCallback ldr r0, _08097900 @ =sub_8097984 _080978EC: str r0, [r1] movs r0, 0x1 b _08097970 .align 2, 0 -_080978F4: .4byte gUnknown_3005024 -_080978F8: .4byte hm_add_c3_launch_phase_2 -_080978FC: .4byte gUnknown_203B0C4 +_080978F4: .4byte gFieldCallback2 +_080978F8: .4byte FieldCallback_PrepareFadeInFromMenu +_080978FC: .4byte gPostMenuFieldCallback _08097900: .4byte sub_8097984 _08097904: ldr r4, _0809797C @ =gUnknown_2039A04 diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index 6466c706e..c25978eb1 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -17,10 +17,10 @@ sub_80C9B2C: @ 80C9B2C lsls r0, 24 cmp r0, 0 bne _080C9B6C - ldr r1, _080C9B5C @ =gUnknown_3005024 - ldr r0, _080C9B60 @ =hm_add_c3_launch_phase_2 + ldr r1, _080C9B5C @ =gFieldCallback2 + ldr r0, _080C9B60 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080C9B64 @ =gUnknown_203B0C4 + ldr r1, _080C9B64 @ =gPostMenuFieldCallback ldr r0, _080C9B68 @ =sub_80C9B74 str r0, [r1] movs r0, 0x1 @@ -28,9 +28,9 @@ sub_80C9B2C: @ 80C9B2C .align 2, 0 _080C9B54: .4byte gMapHeader _080C9B58: .4byte 0x00000806 -_080C9B5C: .4byte gUnknown_3005024 -_080C9B60: .4byte hm_add_c3_launch_phase_2 -_080C9B64: .4byte gUnknown_203B0C4 +_080C9B5C: .4byte gFieldCallback2 +_080C9B60: .4byte FieldCallback_PrepareFadeInFromMenu +_080C9B64: .4byte gPostMenuFieldCallback _080C9B68: .4byte sub_80C9B74 _080C9B6C: movs r0, 0 diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s index 778f2c916..ace765f55 100644 --- a/asm/fldeff_strength.s +++ b/asm/fldeff_strength.s @@ -28,10 +28,10 @@ _080D080C: lsls r0, 24 lsrs r0, 24 strh r0, [r4] - ldr r1, _080D0830 @ =gUnknown_3005024 - ldr r0, _080D0834 @ =hm_add_c3_launch_phase_2 + ldr r1, _080D0830 @ =gFieldCallback2 + ldr r0, _080D0834 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080D0838 @ =gUnknown_203B0C4 + ldr r1, _080D0838 @ =gPostMenuFieldCallback ldr r0, _080D083C @ =sub_80D0840 str r0, [r1] movs r0, 0x1 @@ -41,9 +41,9 @@ _080D0826: bx r1 .align 2, 0 _080D082C: .4byte gSpecialVar_Result -_080D0830: .4byte gUnknown_3005024 -_080D0834: .4byte hm_add_c3_launch_phase_2 -_080D0838: .4byte gUnknown_203B0C4 +_080D0830: .4byte gFieldCallback2 +_080D0834: .4byte FieldCallback_PrepareFadeInFromMenu +_080D0838: .4byte gPostMenuFieldCallback _080D083C: .4byte sub_80D0840 thumb_func_end sub_80D07EC diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s index 47b9ef390..aead537d4 100644 --- a/asm/fldeff_sweetscent.s +++ b/asm/fldeff_sweetscent.s @@ -20,18 +20,18 @@ _080DE0C4: .4byte gUnknown_203B0A0 thumb_func_start sub_80DE0C8 sub_80DE0C8: @ 80DE0C8 - ldr r1, _080DE0D8 @ =gUnknown_3005024 - ldr r0, _080DE0DC @ =hm_add_c3_launch_phase_2 + ldr r1, _080DE0D8 @ =gFieldCallback2 + ldr r0, _080DE0DC @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080DE0E0 @ =gUnknown_203B0C4 + ldr r1, _080DE0E0 @ =gPostMenuFieldCallback ldr r0, _080DE0E4 @ =hm2_sweet_scent str r0, [r1] movs r0, 0x1 bx lr .align 2, 0 -_080DE0D8: .4byte gUnknown_3005024 -_080DE0DC: .4byte hm_add_c3_launch_phase_2 -_080DE0E0: .4byte gUnknown_203B0C4 +_080DE0D8: .4byte gFieldCallback2 +_080DE0DC: .4byte FieldCallback_PrepareFadeInFromMenu +_080DE0E0: .4byte gPostMenuFieldCallback _080DE0E4: .4byte hm2_sweet_scent thumb_func_end sub_80DE0C8 diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s deleted file mode 100644 index 698ad4c23..000000000 --- a/asm/fldeff_teleport.s +++ /dev/null @@ -1,92 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start SetUpFieldMove_Teleport -SetUpFieldMove_Teleport: @ 80F66F0 - push {lr} - ldr r0, _080F6708 @ =gMapHeader - ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_or_6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F670C - movs r0, 0 - b _080F671A - .align 2, 0 -_080F6708: .4byte gMapHeader -_080F670C: - ldr r1, _080F6720 @ =gUnknown_3005024 - ldr r0, _080F6724 @ =hm_add_c3_launch_phase_2 - str r0, [r1] - ldr r1, _080F6728 @ =gUnknown_203B0C4 - ldr r0, _080F672C @ =hm_teleport_run_dp02scr - str r0, [r1] - movs r0, 0x1 -_080F671A: - pop {r1} - bx r1 - .align 2, 0 -_080F6720: .4byte gUnknown_3005024 -_080F6724: .4byte hm_add_c3_launch_phase_2 -_080F6728: .4byte gUnknown_203B0C4 -_080F672C: .4byte hm_teleport_run_dp02scr - thumb_func_end SetUpFieldMove_Teleport - - thumb_func_start hm_teleport_run_dp02scr -hm_teleport_run_dp02scr: @ 80F6730 - push {lr} - bl sub_8054D08 - movs r0, 0x3F - bl FieldEffectStart - bl GetCursorSelectionMonId - ldr r1, _080F674C @ =gFieldEffectArguments - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080F674C: .4byte gFieldEffectArguments - thumb_func_end hm_teleport_run_dp02scr - - thumb_func_start FldEff_UseTeleport -FldEff_UseTeleport: @ 80F6750 - push {lr} - bl oei_task_add - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F6778 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, _080F677C @ =sub_80F6780 - lsrs r0, r2, 16 - strh r0, [r1, 0x18] - strh r2, [r1, 0x1A] - movs r0, 0x1 - bl SetPlayerAvatarTransitionFlags - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080F6778: .4byte gTasks -_080F677C: .4byte sub_80F6780 - thumb_func_end FldEff_UseTeleport - - thumb_func_start sub_80F6780 -sub_80F6780: @ 80F6780 - push {lr} - movs r0, 0x3F - bl FieldEffectActiveListRemove - bl sub_8085B64 - pop {r0} - bx r0 - thumb_func_end sub_80F6780 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/item_use.s b/asm/item_use.s index 79dcb290a..b05f5be82 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -246,12 +246,12 @@ _080A117E: thumb_func_start sub_80A1184 sub_80A1184: @ 80A1184 - ldr r1, _080A118C @ =gUnknown_3005024 + ldr r1, _080A118C @ =gFieldCallback2 ldr r0, _080A1190 @ =sub_80A1194 str r0, [r1] bx lr .align 2, 0 -_080A118C: .4byte gUnknown_3005024 +_080A118C: .4byte gFieldCallback2 _080A1190: .4byte sub_80A1194 thumb_func_end sub_80A1184 diff --git a/asm/overworld.s b/asm/overworld.s index e44855b46..b7de72a1e 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -154,8 +154,8 @@ _08054D00: .4byte 0x00000808 _08054D04: .4byte 0x0000404d thumb_func_end sub_8054CA0 - thumb_func_start sub_8054D08 -sub_8054D08: @ 8054D08 + thumb_func_start Overworld_ResetStateAfterTeleport +Overworld_ResetStateAfterTeleport: @ 8054D08 push {lr} bl ResetInitialPlayerAvatarState movs r0, 0x83 @@ -191,7 +191,7 @@ _08054D60: .4byte 0x00000805 _08054D64: .4byte 0x00000806 _08054D68: .4byte 0x00000808 _08054D6C: .4byte 0x0000404d - thumb_func_end sub_8054D08 + thumb_func_end Overworld_ResetStateAfterTeleport thumb_func_start sub_8054D70 sub_8054D70: @ 8054D70 @@ -2958,8 +2958,8 @@ _080561F8: bx r1 thumb_func_end is_light_level_1_2_3_5_or_6 - thumb_func_start is_light_level_1_2_3_or_6 -is_light_level_1_2_3_or_6: @ 80561FC + thumb_func_start Overworld_MapTypeAllowsTeleportAndFly +Overworld_MapTypeAllowsTeleportAndFly: @ 80561FC push {lr} lsls r0, 24 lsrs r0, 24 @@ -2979,7 +2979,7 @@ _08056216: _08056218: pop {r1} bx r1 - thumb_func_end is_light_level_1_2_3_or_6 + thumb_func_end Overworld_MapTypeAllowsTeleportAndFly thumb_func_start is_light_level_8_or_9 is_light_level_8_or_9: @ 805621C @@ -3442,7 +3442,7 @@ _080565E8: .4byte gMain thumb_func_start map_post_load_hook_exec map_post_load_hook_exec: @ 80565EC push {r4,lr} - ldr r4, _08056604 @ =gUnknown_3005024 + ldr r4, _08056604 @ =gFieldCallback2 ldr r0, [r4] cmp r0, 0 beq _08056618 @@ -3453,7 +3453,7 @@ map_post_load_hook_exec: @ 80565EC movs r0, 0 b _08056638 .align 2, 0 -_08056604: .4byte gUnknown_3005024 +_08056604: .4byte gFieldCallback2 _08056608: movs r1, 0 str r1, [r4] @@ -3501,7 +3501,7 @@ CB2_NewGame: @ 8056644 ldr r1, _0805668C @ =gUnknown_3005020 ldr r0, _08056690 @ =sub_807DF7C str r0, [r1] - ldr r1, _08056694 @ =gUnknown_3005024 + ldr r1, _08056694 @ =gFieldCallback2 movs r0, 0 str r0, [r1] ldr r0, _08056698 @ =gMain + 0x438 @@ -3516,7 +3516,7 @@ CB2_NewGame: @ 8056644 .align 2, 0 _0805668C: .4byte gUnknown_3005020 _08056690: .4byte sub_807DF7C -_08056694: .4byte gUnknown_3005024 +_08056694: .4byte gFieldCallback2 _08056698: .4byte gMain + 0x438 _0805669C: .4byte sub_8056534 _080566A0: .4byte sub_80565B4 @@ -3758,14 +3758,14 @@ _080568A4: .4byte sub_807DDD0 sub_80568A8: @ 80568A8 push {lr} bl sub_80569BC - ldr r1, _080568BC @ =gUnknown_3005024 + ldr r1, _080568BC @ =gFieldCallback2 ldr r0, _080568C0 @ =sub_807E3BC str r0, [r1] bl c2_exit_to_overworld_2_switch pop {r0} bx r0 .align 2, 0 -_080568BC: .4byte gUnknown_3005024 +_080568BC: .4byte gFieldCallback2 _080568C0: .4byte sub_807E3BC thumb_func_end sub_80568A8 @@ -3847,7 +3847,7 @@ sub_8056938: @ 8056938 bl PlayTimeCounter_Start bl ScriptContext1_Init bl ScriptContext2_Disable - ldr r1, _08056990 @ =gUnknown_3005024 + ldr r1, _08056990 @ =gFieldCallback2 movs r0, 0 str r0, [r1] ldr r1, _08056994 @ =gUnknown_2031DE0 @@ -3863,7 +3863,7 @@ sub_8056938: @ 8056938 bl SetMainCallback2 b _080569AC .align 2, 0 -_08056990: .4byte gUnknown_3005024 +_08056990: .4byte gFieldCallback2 _08056994: .4byte gUnknown_2031DE0 _08056998: .4byte sub_805671C _0805699C: @@ -5314,7 +5314,7 @@ _08057560: bl ScriptContext2_Disable movs r0, 0 bl sub_80565E0 - ldr r1, _08057614 @ =gUnknown_3005024 + ldr r1, _08057614 @ =gFieldCallback2 ldr r0, _08057618 @ =sub_80574EC str r0, [r1] ldr r0, _0805761C @ =gMain @@ -5334,7 +5334,7 @@ _08057604: .4byte 0x0000ffff _08057608: .4byte gUnknown_2031DBC _0805760C: .4byte gUnknown_2031DE8 _08057610: .4byte gPaletteFade -_08057614: .4byte gUnknown_3005024 +_08057614: .4byte gFieldCallback2 _08057618: .4byte sub_80574EC _0805761C: .4byte gMain _08057620: diff --git a/asm/party_menu.s b/asm/party_menu.s index d716165ac..b512bd751 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -11943,10 +11943,10 @@ _0812488C: movs r0, 0x5 bl PlaySE _08124892: - ldr r0, _081248A8 @ =gUnknown_3005024 + ldr r0, _081248A8 @ =gFieldCallback2 movs r1, 0 str r1, [r0] - ldr r0, _081248AC @ =gUnknown_203B0C4 + ldr r0, _081248AC @ =gPostMenuFieldCallback str r1, [r0] adds r0, r4, 0 bl sub_81203B8 @@ -11955,12 +11955,12 @@ _081248A2: pop {r0} bx r0 .align 2, 0 -_081248A8: .4byte gUnknown_3005024 -_081248AC: .4byte gUnknown_203B0C4 +_081248A8: .4byte gFieldCallback2 +_081248AC: .4byte gPostMenuFieldCallback thumb_func_end sub_8124828 - thumb_func_start hm_add_c3_launch_phase_2 -hm_add_c3_launch_phase_2: @ 81248B0 + thumb_func_start FieldCallback_PrepareFadeInFromMenu +FieldCallback_PrepareFadeInFromMenu: @ 81248B0 push {lr} bl sub_807DC00 ldr r0, _081248C4 @ =task_launch_hm_phase_2 @@ -11971,7 +11971,7 @@ hm_add_c3_launch_phase_2: @ 81248B0 bx r1 .align 2, 0 _081248C4: .4byte task_launch_hm_phase_2 - thumb_func_end hm_add_c3_launch_phase_2 + thumb_func_end FieldCallback_PrepareFadeInFromMenu thumb_func_start task_launch_hm_phase_2 task_launch_hm_phase_2: @ 81248C8 @@ -11988,7 +11988,7 @@ task_launch_hm_phase_2: @ 81248C8 lsls r0, 16 lsrs r0, 16 str r0, [r1] - ldr r0, _08124900 @ =gUnknown_203B0C4 + ldr r0, _08124900 @ =gPostMenuFieldCallback ldr r0, [r0] bl _call_via_r0 adds r0, r4, 0 @@ -11999,7 +11999,7 @@ _081248F4: bx r0 .align 2, 0 _081248FC: .4byte gFieldEffectArguments -_08124900: .4byte gUnknown_203B0C4 +_08124900: .4byte gPostMenuFieldCallback thumb_func_end task_launch_hm_phase_2 thumb_func_start brm_get_selected_species @@ -12118,18 +12118,18 @@ sub_8124998: @ 8124998 lsrs r0, 24 cmp r0, 0x1 bne _08124A00 - ldr r1, _081249F0 @ =gUnknown_3005024 - ldr r0, _081249F4 @ =hm_add_c3_launch_phase_2 + ldr r1, _081249F0 @ =gFieldCallback2 + ldr r0, _081249F4 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _081249F8 @ =gUnknown_203B0C4 + ldr r1, _081249F8 @ =gPostMenuFieldCallback ldr r0, _081249FC @ =hm_surf_run_dp02scr str r0, [r1] movs r0, 0x1 b _08124A02 .align 2, 0 -_081249F0: .4byte gUnknown_3005024 -_081249F4: .4byte hm_add_c3_launch_phase_2 -_081249F8: .4byte gUnknown_203B0C4 +_081249F0: .4byte gFieldCallback2 +_081249F4: .4byte FieldCallback_PrepareFadeInFromMenu +_081249F8: .4byte gPostMenuFieldCallback _081249FC: .4byte hm_surf_run_dp02scr _08124A00: movs r0, 0 @@ -12207,7 +12207,7 @@ sub_8124A8C: @ 8124A8C push {lr} ldr r0, _08124AA4 @ =gMapHeader ldrb r0, [r0, 0x17] - bl is_light_level_1_2_3_or_6 + bl Overworld_MapTypeAllowsTeleportAndFly lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -12289,18 +12289,18 @@ hm_prepare_waterfall: @ 8124AF8 lsrs r0, 24 cmp r0, 0x1 bne _08124B54 - ldr r1, _08124B44 @ =gUnknown_3005024 - ldr r0, _08124B48 @ =hm_add_c3_launch_phase_2 + ldr r1, _08124B44 @ =gFieldCallback2 + ldr r0, _08124B48 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _08124B4C @ =gUnknown_203B0C4 + ldr r1, _08124B4C @ =gPostMenuFieldCallback ldr r0, _08124B50 @ =hm2_waterfall str r0, [r1] movs r0, 0x1 b _08124B56 .align 2, 0 -_08124B44: .4byte gUnknown_3005024 -_08124B48: .4byte hm_add_c3_launch_phase_2 -_08124B4C: .4byte gUnknown_203B0C4 +_08124B44: .4byte gFieldCallback2 +_08124B48: .4byte FieldCallback_PrepareFadeInFromMenu +_08124B4C: .4byte gPostMenuFieldCallback _08124B50: .4byte hm2_waterfall _08124B54: movs r0, 0 @@ -19301,7 +19301,7 @@ _0812836C: .4byte gUnknown_2022B58 sub_8128370: @ 8128370 push {lr} sub sp, 0xC - ldr r1, _08128398 @ =gUnknown_3005024 + ldr r1, _08128398 @ =gFieldCallback2 ldr r0, _0812839C @ =hm_add_c3_without_phase_2 str r0, [r1] movs r0, 0xF @@ -19319,7 +19319,7 @@ sub_8128370: @ 8128370 pop {r0} bx r0 .align 2, 0 -_08128398: .4byte gUnknown_3005024 +_08128398: .4byte gFieldCallback2 _0812839C: .4byte hm_add_c3_without_phase_2 _081283A0: .4byte sub_811FB28 _081283A4: .4byte c2_exit_to_overworld_2_switch @@ -19331,7 +19331,7 @@ sub_81283A8: @ 81283A8 sub sp, 0xC lsls r0, 24 lsrs r0, 24 - ldr r2, _081283D4 @ =gUnknown_3005024 + ldr r2, _081283D4 @ =gFieldCallback2 ldr r1, _081283D8 @ =hm_add_c3_without_phase_2 str r1, [r2] movs r1, 0 @@ -19348,7 +19348,7 @@ sub_81283A8: @ 81283A8 pop {r0} bx r0 .align 2, 0 -_081283D4: .4byte gUnknown_3005024 +_081283D4: .4byte gFieldCallback2 _081283D8: .4byte hm_add_c3_without_phase_2 _081283DC: .4byte sub_811FB28 _081283E0: .4byte c2_exit_to_overworld_2_switch diff --git a/asm/rom6.s b/asm/rom6.s index 06c2d30a2..2ac2cc0a4 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -291,10 +291,10 @@ SetUpFieldMove_RockSmash: @ 80C99D8 movs r0, 0 b _080C99FA _080C99EC: - ldr r1, _080C9A00 @ =gUnknown_3005024 - ldr r0, _080C9A04 @ =hm_add_c3_launch_phase_2 + ldr r1, _080C9A00 @ =gFieldCallback2 + ldr r0, _080C9A04 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080C9A08 @ =gUnknown_203B0C4 + ldr r1, _080C9A08 @ =gPostMenuFieldCallback ldr r0, _080C9A0C @ =sub_80C9A10 str r0, [r1] movs r0, 0x1 @@ -302,9 +302,9 @@ _080C99FA: pop {r1} bx r1 .align 2, 0 -_080C9A00: .4byte gUnknown_3005024 -_080C9A04: .4byte hm_add_c3_launch_phase_2 -_080C9A08: .4byte gUnknown_203B0C4 +_080C9A00: .4byte gFieldCallback2 +_080C9A04: .4byte FieldCallback_PrepareFadeInFromMenu +_080C9A08: .4byte gPostMenuFieldCallback _080C9A0C: .4byte sub_80C9A10 thumb_func_end SetUpFieldMove_RockSmash @@ -373,10 +373,10 @@ SetUpFieldMove_Dig: @ 80C9A78 movs r0, 0 b _080C9A98 _080C9A8A: - ldr r1, _080C9A9C @ =gUnknown_3005024 - ldr r0, _080C9AA0 @ =hm_add_c3_launch_phase_2 + ldr r1, _080C9A9C @ =gFieldCallback2 + ldr r0, _080C9AA0 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] - ldr r1, _080C9AA4 @ =gUnknown_203B0C4 + ldr r1, _080C9AA4 @ =gPostMenuFieldCallback ldr r0, _080C9AA8 @ =hm2_dig str r0, [r1] movs r0, 0x1 @@ -384,9 +384,9 @@ _080C9A98: pop {r1} bx r1 .align 2, 0 -_080C9A9C: .4byte gUnknown_3005024 -_080C9AA0: .4byte hm_add_c3_launch_phase_2 -_080C9AA4: .4byte gUnknown_203B0C4 +_080C9A9C: .4byte gFieldCallback2 +_080C9AA0: .4byte FieldCallback_PrepareFadeInFromMenu +_080C9AA4: .4byte gPostMenuFieldCallback _080C9AA8: .4byte hm2_dig thumb_func_end SetUpFieldMove_Dig diff --git a/asm/start_menu.s b/asm/start_menu.s index 65a1e4402..124f64792 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -568,13 +568,13 @@ sub_806F1D4: @ 806F1D4 movs r0, 0 strb r0, [r1] strb r0, [r1, 0x1] - ldr r1, _0806F1E8 @ =gUnknown_3005024 + ldr r1, _0806F1E8 @ =gFieldCallback2 ldr r0, _0806F1EC @ =sub_806F1B8 str r0, [r1] bx lr .align 2, 0 _0806F1E4: .4byte gUnknown_20370FF -_0806F1E8: .4byte gUnknown_3005024 +_0806F1E8: .4byte gFieldCallback2 _0806F1EC: .4byte sub_806F1B8 thumb_func_end sub_806F1D4 diff --git a/include/field_effect.h b/include/field_effect.h index bb5e0f1d5..979037a8e 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -74,9 +74,13 @@ enum FieldEffectScriptIdx }; extern u32 gFieldEffectArguments[8]; +extern void (*gPostMenuFieldCallback)(void); +extern bool8 (*gFieldCallback2)(void); u8 FieldEffectStart(u8); bool8 FieldEffectActiveListContains(u8 id); void sub_80B69DC(void); +void CreateTeleportFieldEffectTask(void); +void FieldEffectActiveListRemove(u8 id); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index bb78bd0f3..b365a9d92 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -21,5 +21,6 @@ void SetPlayerAvatarStateMask(u8 mask); void sub_805D9C4(struct Sprite *sprite); void sub_805D154(u8 direction); void sub_805DAE4(u8 direction); +void SetPlayerAvatarTransitionFlags(u16 a); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/fldeff.h b/include/fldeff.h new file mode 100644 index 000000000..70bd25313 --- /dev/null +++ b/include/fldeff.h @@ -0,0 +1,7 @@ +#ifndef GUARD_FLDEFF_H +#define GUARD_FLDEFF_H + +// rock smash +u8 oei_task_add(void); + +#endif // GUARD_FLDEFF_H \ No newline at end of file diff --git a/include/overworld.h b/include/overworld.h index 8c32d3e06..234fb7c01 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -96,9 +96,11 @@ void sub_80563F0(void); extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; -extern bool8 (* gUnknown_3005024)(void); +extern bool8 (* gFieldCallback2)(void); void SetLastHealLocationWarp(u8 healLocaionId); void sub_8055864(u8 mapGroup, u8 mapNum); void CB2_NewGame(void); +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); +void Overworld_ResetStateAfterTeleport(void); #endif //GUARD_ROM4_H diff --git a/include/party_menu.h b/include/party_menu.h index 5f7a3a68e..09b160954 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -1,7 +1,8 @@ #ifndef GUARD_PARTY_MENU_H #define GUARD_PARTY_MENU_H -#include "global.h" +#include "main.h" +#include "task.h" enum { AILMENT_NONE, @@ -14,6 +15,7 @@ enum { extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func); +bool8 FieldCallback_PrepareFadeInFromMenu(void); bool8 MonKnowsMove(struct Pokemon *, u16); void sub_81B58A8(void); void DoWallyTutorialBagMenu(void); @@ -23,5 +25,6 @@ void sub_8125B40(u8 taskId, TaskFunc func); void sub_8124C8C(void); void sub_8126EDC(void); void c2_8123744(void); +u8 GetCursorSelectionMonId(void); #endif // GUARD_PARTY_MENU_H diff --git a/ld_script.txt b/ld_script.txt index bd94c2055..2ee7869b6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -201,7 +201,7 @@ SECTIONS { asm/save_failed_screen.o(.text); asm/clear_save_data_screen.o(.text); asm/evolution_graphics.o(.text); - asm/fldeff_teleport.o(.text); + src/fldeff_teleport.o(.text); asm/new_menu_helpers.o(.text); asm/box_party_pokemon_dropdown.o(.text); asm/save_menu_util.o(.text); diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c new file mode 100644 index 000000000..35515e9cb --- /dev/null +++ b/src/fldeff_teleport.c @@ -0,0 +1,42 @@ +#include "global.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "fldeff.h" +#include "party_menu.h" +#include "overworld.h" + +static void FieldCallback_Teleport(void); +static void StartTeleportFieldEffect(void); + +bool8 SetUpFieldMove_Teleport(void) +{ + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) + { + gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gPostMenuFieldCallback = FieldCallback_Teleport; + return TRUE; + } + return FALSE; +} + +static void FieldCallback_Teleport(void) +{ + Overworld_ResetStateAfterTeleport(); + FieldEffectStart(FLDEFF_USE_TELEPORT); + gFieldEffectArguments[0] = (u32)GetCursorSelectionMonId(); +} + +bool8 FldEff_UseTeleport(void) +{ + u8 taskId = oei_task_add(); + gTasks[taskId].data[8] = (u32)StartTeleportFieldEffect >> 16; + gTasks[taskId].data[9] = (u32)StartTeleportFieldEffect; + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); + return FALSE; +} + +static void StartTeleportFieldEffect(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT); + CreateTeleportFieldEffectTask(); +} \ No newline at end of file diff --git a/src/quest_log.c b/src/quest_log.c index a01cbde2d..340bef957 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -990,14 +990,14 @@ void sub_8111368(void) if (sub_8110AC8() == 1) { sub_8111274(gUnknown_203ADF8, 0); - gUnknown_3005024 = sub_8111038; + gFieldCallback2 = sub_8111038; SetMainCallback2(sub_80572A8); } else { sub_8111274(gUnknown_203ADF8, 1); warp_in(); - gUnknown_3005024 = sub_8111000; + gFieldCallback2 = sub_8111000; SetMainCallback2(sub_805726C); } } @@ -1237,7 +1237,7 @@ void sub_8111984(void) Save_ResetSaveCounters(); Save_LoadGameData(0); SetMainCallback2(sub_8057430); - gUnknown_3005024 = sub_8111F60; + gFieldCallback2 = sub_8111F60; FreeAllWindowBuffers(); gUnknown_203ADFA = 3; gUnknown_203AE8C = NULL; diff --git a/sym_common.txt b/sym_common.txt index 4adfe3bac..1e4d50314 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -148,7 +148,7 @@ gUnknown_300501C: @ 300501C gUnknown_3005020: @ 3005020 .space 0x4 -gUnknown_3005024: @ 3005024 +gFieldCallback2: @ 3005024 .space 0x4 gUnknown_3005028: @ 3005028 diff --git a/sym_ewram.txt b/sym_ewram.txt index 5a9795eb1..56b7300e1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1467,7 +1467,7 @@ gUnknown_203B0C0: @ 203B0C0 gUnknown_203B0C1: @ 203B0C1 .space 0x3 -gUnknown_203B0C4: @ 203B0C4 +gPostMenuFieldCallback: @ 203B0C4 .space 0x4 gUnknown_203B0C8: @ 203B0C8 From 7ca19ae250abb713ca494a838791adc0dae9fd8d Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Wed, 17 Apr 2019 17:32:52 -0700 Subject: [PATCH 097/318] Decompile fldeff_berrytree --- asm/fldeff_berrytree.s | 13 ------------- ld_script.txt | 1 + src/fldeff_berrytree.c | 4 ++++ 3 files changed, 5 insertions(+), 13 deletions(-) delete mode 100644 asm/fldeff_berrytree.s create mode 100644 src/fldeff_berrytree.c diff --git a/asm/fldeff_berrytree.s b/asm/fldeff_berrytree.s deleted file mode 100644 index 83c9c8be8..000000000 --- a/asm/fldeff_berrytree.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_56 -nullsub_56: @ 80A0E74 - bx lr - thumb_func_end nullsub_56 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 2ee7869b6..bc51c7d0c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -151,6 +151,7 @@ SECTIONS { asm/pokemon_size_record.o(.text); asm/pc_screen_effect.o(.text); asm/fldeff_poison.o(.text); + src/fldeff_berrytree.o(.text); asm/fldeff_berrytree.o(.text); asm/field_special_scene.o(.text); asm/safari_zone.o(.text); diff --git a/src/fldeff_berrytree.c b/src/fldeff_berrytree.c new file mode 100644 index 000000000..53d8c2f1b --- /dev/null +++ b/src/fldeff_berrytree.c @@ -0,0 +1,4 @@ +void nullsub_56(void) +{ + return; +} \ No newline at end of file From 57603a0d46c785d845a3fa168f94c01dc8b0b253 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Thu, 18 Apr 2019 08:18:12 -0700 Subject: [PATCH 098/318] Fix formatting and ld_script --- ld_script.txt | 1 - src/fldeff_berrytree.c | 4 ++-- src/fldeff_teleport.c | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index bc51c7d0c..86464ee98 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -152,7 +152,6 @@ SECTIONS { asm/pc_screen_effect.o(.text); asm/fldeff_poison.o(.text); src/fldeff_berrytree.o(.text); - asm/fldeff_berrytree.o(.text); asm/field_special_scene.o(.text); asm/safari_zone.o(.text); asm/item_use.o(.text); diff --git a/src/fldeff_berrytree.c b/src/fldeff_berrytree.c index 53d8c2f1b..90ca36508 100644 --- a/src/fldeff_berrytree.c +++ b/src/fldeff_berrytree.c @@ -1,4 +1,4 @@ void nullsub_56(void) { - return; -} \ No newline at end of file + +} diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index 35515e9cb..74fad1110 100644 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -39,4 +39,4 @@ static void StartTeleportFieldEffect(void) { FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT); CreateTeleportFieldEffectTask(); -} \ No newline at end of file +} From 172b12a8cb4651b59658740443d6786db5875b5c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 Apr 2019 12:11:10 -0400 Subject: [PATCH 099/318] Port m4a from emerald --- Makefile | 3 +- asm/m4a_3.s | 574 --------- common_syms/{m4a_2.txt => m4a.txt} | 0 ld_script.txt | 6 +- src/m4a.c | 1779 ++++++++++++++++++++++++++++ src/m4a_2.c | 912 -------------- src/m4a_4.c | 545 --------- sym_common.txt | 2 +- 8 files changed, 1783 insertions(+), 2038 deletions(-) delete mode 100644 asm/m4a_3.s rename common_syms/{m4a_2.txt => m4a.txt} (100%) create mode 100644 src/m4a.c delete mode 100644 src/m4a_2.c delete mode 100644 src/m4a_4.c diff --git a/Makefile b/Makefile index 495279735..b69da2dfd 100644 --- a/Makefile +++ b/Makefile @@ -115,8 +115,7 @@ $(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork $(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork $(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork -$(C_BUILDDIR)/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc -$(C_BUILDDIR)/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc +$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc $(C_BUILDDIR)/isagbprn.o: CC1 := tools/agbcc/bin/old_agbcc $(C_BUILDDIR)/isagbprn.o: CFLAGS := -mthumb-interwork diff --git a/asm/m4a_3.s b/asm/m4a_3.s deleted file mode 100644 index a842ae925..000000000 --- a/asm/m4a_3.s +++ /dev/null @@ -1,574 +0,0 @@ - .include "asm/macros.inc" - .include "constants/gba_constants.inc" - .include "constants/m4a_constants.inc" - - .syntax unified - - .text - - thumb_func_start CgbSound -CgbSound: @ 81DEA70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r0, =SOUND_INFO_PTR - ldr r0, [r0] - str r0, [sp, 0x4] - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _081DEA94 - subs r0, 0x1 - ldr r1, [sp, 0x4] - strb r0, [r1, 0xA] - b _081DEA9A - .pool -_081DEA94: - movs r0, 0xE - ldr r2, [sp, 0x4] - strb r0, [r2, 0xA] -_081DEA9A: - movs r6, 0x1 - ldr r0, [sp, 0x4] - ldr r4, [r0, 0x1C] -_081DEAA0: - ldrb r1, [r4] - movs r0, 0xC7 - ands r0, r1 - adds r2, r6, 0x1 - mov r10, r2 - movs r2, 0x40 - adds r2, r4 - mov r9, r2 - cmp r0, 0 - bne _081DEAB6 - b _081DEEA0 -_081DEAB6: - cmp r6, 0x2 - beq _081DEAE8 - cmp r6, 0x2 - bgt _081DEAC4 - cmp r6, 0x1 - beq _081DEACA - b _081DEB20 -_081DEAC4: - cmp r6, 0x3 - beq _081DEB00 - b _081DEB20 -_081DEACA: - ldr r0, =REG_NR10 - str r0, [sp, 0x8] - ldr r7, =REG_NR11 - ldr r2, =REG_NR12 - str r2, [sp, 0xC] - adds r0, 0x4 - str r0, [sp, 0x10] - adds r2, 0x2 - b _081DEB30 - .pool -_081DEAE8: - ldr r0, =REG_NR10 + 1 - str r0, [sp, 0x8] - ldr r7, =REG_NR21 - ldr r2, =REG_NR22 - b _081DEB28 - .pool -_081DEB00: - ldr r0, =REG_NR30 - str r0, [sp, 0x8] - ldr r7, =REG_NR31 - ldr r2, =REG_NR32 - str r2, [sp, 0xC] - adds r0, 0x4 - str r0, [sp, 0x10] - adds r2, 0x2 - b _081DEB30 - .pool -_081DEB20: - ldr r0, =REG_NR30 + 1 - str r0, [sp, 0x8] - ldr r7, =REG_NR41 - ldr r2, =REG_NR42 -_081DEB28: - str r2, [sp, 0xC] - adds r0, 0xB - str r0, [sp, 0x10] - adds r2, 0x4 -_081DEB30: - str r2, [sp, 0x14] - ldr r0, [sp, 0x4] - ldrb r0, [r0, 0xA] - str r0, [sp] - ldr r2, [sp, 0xC] - ldrb r0, [r2] - mov r8, r0 - adds r2, r1, 0 - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _081DEC26 - movs r3, 0x40 - adds r0, r3, 0 - ands r0, r2 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0x1 - mov r10, r0 - movs r1, 0x40 - adds r1, r4 - mov r9, r1 - cmp r5, 0 - bne _081DEC4A - movs r0, 0x3 - strb r0, [r4] - strb r0, [r4, 0x1D] - adds r0, r4, 0 - str r3, [sp, 0x18] - bl CgbModVol - ldr r3, [sp, 0x18] - cmp r6, 0x2 - beq _081DEB98 - cmp r6, 0x2 - bgt _081DEB8C - cmp r6, 0x1 - beq _081DEB92 - b _081DEBEC - .pool -_081DEB8C: - cmp r6, 0x3 - beq _081DEBA4 - b _081DEBEC -_081DEB92: - ldrb r0, [r4, 0x1F] - ldr r2, [sp, 0x8] - strb r0, [r2] -_081DEB98: - ldr r0, [r4, 0x24] - lsls r0, 6 - ldrb r1, [r4, 0x1E] - adds r0, r1, r0 - strb r0, [r7] - b _081DEBF8 -_081DEBA4: - ldr r1, [r4, 0x24] - ldr r0, [r4, 0x28] - cmp r1, r0 - beq _081DEBCC - ldr r2, [sp, 0x8] - strb r3, [r2] - ldr r1, =REG_WAVE_RAM - ldr r2, [r4, 0x24] - ldr r0, [r2] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0x4] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0x8] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0xC] - str r0, [r1] - str r2, [r4, 0x28] -_081DEBCC: - ldr r0, [sp, 0x8] - strb r5, [r0] - ldrb r0, [r4, 0x1E] - strb r0, [r7] - ldrb r0, [r4, 0x1E] - cmp r0, 0 - beq _081DEBE4 - movs r0, 0xC0 - b _081DEC06 - .pool -_081DEBE4: - movs r1, 0x80 - negs r1, r1 - strb r1, [r4, 0x1A] - b _081DEC08 -_081DEBEC: - ldrb r0, [r4, 0x1E] - strb r0, [r7] - ldr r0, [r4, 0x24] - lsls r0, 3 - ldr r2, [sp, 0x10] - strb r0, [r2] -_081DEBF8: - ldrb r0, [r4, 0x4] - adds r0, 0x8 - mov r8, r0 - ldrb r0, [r4, 0x1E] - cmp r0, 0 - beq _081DEC06 - movs r0, 0x40 -_081DEC06: - strb r0, [r4, 0x1A] -_081DEC08: - ldrb r1, [r4, 0x4] - movs r2, 0 - strb r1, [r4, 0xB] - movs r0, 0xFF - ands r0, r1 - adds r1, r6, 0x1 - mov r10, r1 - movs r1, 0x40 - adds r1, r4 - mov r9, r1 - cmp r0, 0 - bne _081DEC22 - b _081DED5E -_081DEC22: - strb r2, [r4, 0x9] - b _081DED8C -_081DEC26: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _081DEC58 - ldrb r0, [r4, 0xD] - subs r0, 0x1 - strb r0, [r4, 0xD] - movs r2, 0xFF - ands r0, r2 - lsls r0, 24 - adds r1, r6, 0x1 - mov r10, r1 - movs r2, 0x40 - adds r2, r4 - mov r9, r2 - cmp r0, 0 - ble _081DEC4A - b _081DED9E -_081DEC4A: - lsls r0, r6, 24 - lsrs r0, 24 - bl CgbOscOff - movs r0, 0 - strb r0, [r4] - b _081DEE9C -_081DEC58: - movs r0, 0x40 - ands r0, r1 - adds r2, r6, 0x1 - mov r10, r2 - movs r2, 0x40 - adds r2, r4 - mov r9, r2 - cmp r0, 0 - beq _081DEC98 - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _081DEC98 - movs r0, 0xFC - ands r0, r1 - movs r2, 0 - strb r0, [r4] - ldrb r1, [r4, 0x7] - strb r1, [r4, 0xB] - movs r0, 0xFF - ands r0, r1 - cmp r0, 0 - beq _081DECCA - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] - cmp r6, 0x3 - beq _081DED8C - ldrb r2, [r4, 0x7] - mov r8, r2 - b _081DED8C -_081DEC98: - ldrb r0, [r4, 0xB] - cmp r0, 0 - bne _081DED8C - cmp r6, 0x3 - bne _081DECAA - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] -_081DECAA: - adds r0, r4, 0 - bl CgbModVol - movs r0, 0x3 - ldrb r2, [r4] - ands r0, r2 - cmp r0, 0 - bne _081DECFE - ldrb r0, [r4, 0x9] - subs r0, 0x1 - strb r0, [r4, 0x9] - movs r1, 0xFF - ands r0, r1 - lsls r0, 24 - cmp r0, 0 - bgt _081DECFA -_081DECCA: - ldrb r2, [r4, 0xC] - ldrb r1, [r4, 0xA] - adds r0, r2, 0 - muls r0, r1 - adds r0, 0xFF - asrs r0, 8 - movs r1, 0 - strb r0, [r4, 0x9] - lsls r0, 24 - cmp r0, 0 - beq _081DEC4A - movs r0, 0x4 - ldrb r2, [r4] - orrs r0, r2 - strb r0, [r4] - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] - cmp r6, 0x3 - beq _081DED9E - movs r2, 0x8 - mov r8, r2 - b _081DED9E -_081DECFA: - ldrb r0, [r4, 0x7] - b _081DED8A -_081DECFE: - cmp r0, 0x1 - bne _081DED0A -_081DED02: - ldrb r0, [r4, 0x19] - strb r0, [r4, 0x9] - movs r0, 0x7 - b _081DED8A -_081DED0A: - cmp r0, 0x2 - bne _081DED4E - ldrb r0, [r4, 0x9] - subs r0, 0x1 - strb r0, [r4, 0x9] - movs r1, 0xFF - ands r0, r1 - lsls r0, 24 - ldrb r2, [r4, 0x19] - lsls r1, r2, 24 - cmp r0, r1 - bgt _081DED4A -_081DED22: - ldrb r0, [r4, 0x6] - cmp r0, 0 - bne _081DED32 - movs r0, 0xFC - ldrb r1, [r4] - ands r0, r1 - strb r0, [r4] - b _081DECCA -_081DED32: - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - movs r0, 0x1 - ldrb r2, [r4, 0x1D] - orrs r0, r2 - strb r0, [r4, 0x1D] - cmp r6, 0x3 - beq _081DED02 - movs r0, 0x8 - mov r8, r0 - b _081DED02 -_081DED4A: - ldrb r0, [r4, 0x5] - b _081DED8A -_081DED4E: - ldrb r0, [r4, 0x9] - adds r0, 0x1 - strb r0, [r4, 0x9] - movs r1, 0xFF - ands r0, r1 - ldrb r2, [r4, 0xA] - cmp r0, r2 - bcc _081DED88 -_081DED5E: - ldrb r0, [r4] - subs r0, 0x1 - movs r2, 0 - strb r0, [r4] - ldrb r1, [r4, 0x5] - strb r1, [r4, 0xB] - movs r0, 0xFF - ands r0, r1 - cmp r0, 0 - beq _081DED22 - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] - ldrb r0, [r4, 0xA] - strb r0, [r4, 0x9] - cmp r6, 0x3 - beq _081DED8C - ldrb r2, [r4, 0x5] - mov r8, r2 - b _081DED8C -_081DED88: - ldrb r0, [r4, 0x4] -_081DED8A: - strb r0, [r4, 0xB] -_081DED8C: - ldrb r0, [r4, 0xB] - subs r0, 0x1 - strb r0, [r4, 0xB] - ldr r0, [sp] - cmp r0, 0 - bne _081DED9E - subs r0, 0x1 - str r0, [sp] - b _081DEC98 -_081DED9E: - movs r0, 0x2 - ldrb r1, [r4, 0x1D] - ands r0, r1 - cmp r0, 0 - beq _081DEE16 - cmp r6, 0x3 - bgt _081DEDDE - movs r0, 0x8 - ldrb r2, [r4, 0x1] - ands r0, r2 - cmp r0, 0 - beq _081DEDDE - ldr r0, =REG_SOUNDBIAS + 1 - ldrb r0, [r0] - cmp r0, 0x3F - bgt _081DEDD0 - ldr r0, [r4, 0x20] - adds r0, 0x2 - ldr r1, =0x000007fc - b _081DEDDA - .pool -_081DEDD0: - cmp r0, 0x7F - bgt _081DEDDE - ldr r0, [r4, 0x20] - adds r0, 0x1 - ldr r1, =0x000007fe -_081DEDDA: - ands r0, r1 - str r0, [r4, 0x20] -_081DEDDE: - cmp r6, 0x4 - beq _081DEDF0 - ldr r0, [r4, 0x20] - ldr r1, [sp, 0x10] - strb r0, [r1] - b _081DEDFE - .pool -_081DEDF0: - ldr r2, [sp, 0x10] - ldrb r0, [r2] - movs r1, 0x8 - ands r1, r0 - ldr r0, [r4, 0x20] - orrs r0, r1 - strb r0, [r2] -_081DEDFE: - movs r0, 0xC0 - ldrb r1, [r4, 0x1A] - ands r0, r1 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r0, r1, r0 - strb r0, [r4, 0x1A] - movs r2, 0xFF - ands r0, r2 - ldr r1, [sp, 0x14] - strb r0, [r1] -_081DEE16: - movs r0, 0x1 - ldrb r2, [r4, 0x1D] - ands r0, r2 - cmp r0, 0 - beq _081DEE9C - ldr r1, =REG_NR51 - ldrb r0, [r1] - ldrb r2, [r4, 0x1C] - bics r0, r2 - ldrb r2, [r4, 0x1B] - orrs r0, r2 - strb r0, [r1] - cmp r6, 0x3 - bne _081DEE68 - ldr r0, =gCgb3Vol - ldrb r1, [r4, 0x9] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, [sp, 0xC] - strb r0, [r2] - movs r1, 0x80 - adds r0, r1, 0 - ldrb r2, [r4, 0x1A] - ands r0, r2 - cmp r0, 0 - beq _081DEE9C - ldr r0, [sp, 0x8] - strb r1, [r0] - ldrb r0, [r4, 0x1A] - ldr r1, [sp, 0x14] - strb r0, [r1] - movs r0, 0x7F - ldrb r2, [r4, 0x1A] - ands r0, r2 - strb r0, [r4, 0x1A] - b _081DEE9C - .pool -_081DEE68: - movs r0, 0xF - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldrb r2, [r4, 0x9] - lsls r0, r2, 4 - add r0, r8 - ldr r1, [sp, 0xC] - strb r0, [r1] - movs r2, 0x80 - ldrb r0, [r4, 0x1A] - orrs r0, r2 - ldr r1, [sp, 0x14] - strb r0, [r1] - cmp r6, 0x1 - bne _081DEE9C - ldr r0, [sp, 0x8] - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _081DEE9C - ldrb r0, [r4, 0x1A] - orrs r0, r2 - ldr r1, [sp, 0x14] - strb r0, [r1] -_081DEE9C: - movs r0, 0 - strb r0, [r4, 0x1D] -_081DEEA0: - mov r6, r10 - mov r4, r9 - cmp r6, 0x4 - bgt _081DEEAA - b _081DEAA0 -_081DEEAA: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CgbSound - - .align 2, 0 @ Don't pad with nop. diff --git a/common_syms/m4a_2.txt b/common_syms/m4a.txt similarity index 100% rename from common_syms/m4a_2.txt rename to common_syms/m4a.txt diff --git a/ld_script.txt b/ld_script.txt index bd94c2055..867510f1a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -30,7 +30,7 @@ SECTIONS { /* .bss.code starts at 0x30028E0 */ - src/m4a_2.o(.bss.code); + src/m4a.o(.bss.code); /* COMMON starts at 0x30030E0 */ @@ -289,9 +289,7 @@ SECTIONS { { asm/libgcnmultiboot.o(.text); asm/m4a_1.o(.text); - src/m4a_2.o(.text); - asm/m4a_3.o(.text); - src/m4a_4.o(.text); + src/m4a.o(.text); src/agb_flash.o(.text); src/agb_flash_1m.o(.text); src/agb_flash_mx.o(.text); diff --git a/src/m4a.c b/src/m4a.c new file mode 100644 index 000000000..092b93004 --- /dev/null +++ b/src/m4a.c @@ -0,0 +1,1779 @@ +#include + +extern const u8 gCgb3Vol[]; + +#define BSS_CODE __attribute__((section(".bss.code"))) + +BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0}; + +struct SoundInfo gSoundInfo; +struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES]; +struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES]; +void *gMPlayJumpTable[36]; +struct CgbChannel gCgbChans[4]; +struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2]; +struct PokemonCrySong gPokemonCrySong; +struct MusicPlayerInfo gMPlayInfo_BGM; +struct MusicPlayerInfo gMPlayInfo_SE1; +struct MusicPlayerInfo gMPlayInfo_SE2; +struct MusicPlayerInfo gMPlayInfo_SE3; +u8 gMPlayMemAccArea[0x10]; + +u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust) +{ + u32 val1; + u32 val2; + u32 fineAdjustShifted = fineAdjust << 24; + + if (key > 178) + { + key = 178; + fineAdjustShifted = 255 << 24; + } + + val1 = gScaleTable[key]; + val1 = gFreqTable[val1 & 0xF] >> (val1 >> 4); + + val2 = gScaleTable[key + 1]; + val2 = gFreqTable[val2 & 0xF] >> (val2 >> 4); + + return umul3232H32(wav->freq, val1 + umul3232H32(val2 - val1, fineAdjustShifted)); +} + +void UnusedDummyFunc(void) +{ +} + +void MPlayContinue(struct MusicPlayerInfo *mplayInfo) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE; + mplayInfo->ident = ID_NUMBER; + } +} + +void MPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->fadeOC = speed; + mplayInfo->fadeOI = speed; + mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT); + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aSoundInit(void) +{ + s32 i; + + CpuCopy32((void *)((s32)SoundMainRAM & ~1), SoundMainRAM_Buffer, sizeof(SoundMainRAM_Buffer)); + + SoundInit(&gSoundInfo); + MPlayExtender(gCgbChans); + m4aSoundMode(SOUND_MODE_DA_BIT_8 + | SOUND_MODE_FREQ_13379 + | (12 << SOUND_MODE_MASVOL_SHIFT) + | (5 << SOUND_MODE_MAXCHN_SHIFT)); + + for (i = 0; i < NUM_MUSIC_PLAYERS; i++) + { + struct MusicPlayerInfo *mplayInfo = gMPlayTable[i].info; + MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].unk_8); + mplayInfo->unk_B = gMPlayTable[i].unk_A; + mplayInfo->memAccArea = gMPlayMemAccArea; + } + + memcpy(&gPokemonCrySong, &gPokemonCrySongTemplate, sizeof(struct PokemonCrySong)); + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + { + struct MusicPlayerInfo *mplayInfo = &gPokemonCryMusicPlayers[i]; + struct MusicPlayerTrack *track = &gPokemonCryTracks[i * 2]; + MPlayOpen(mplayInfo, track, 2); + track->chan = 0; + } +} + +void m4aSoundMain(void) +{ + SoundMain(); +} + +void m4aSongNumStart(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + MPlayStart(mplay->info, song->header); +} + +void m4aSongNumStartOrChange(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader != song->header) + { + MPlayStart(mplay->info, song->header); + } + else + { + if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0 + || (mplay->info->status & MUSICPLAYER_STATUS_PAUSE)) + { + MPlayStart(mplay->info, song->header); + } + } +} + +void m4aSongNumStartOrContinue(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader != song->header) + MPlayStart(mplay->info, song->header); + else if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0) + MPlayStart(mplay->info, song->header); + else if (mplay->info->status & MUSICPLAYER_STATUS_PAUSE) + MPlayContinue(mplay->info); +} + +void m4aSongNumStop(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader == song->header) + m4aMPlayStop(mplay->info); +} + +void m4aSongNumContinue(u16 n) +{ + const struct MusicPlayer *mplayTable = gMPlayTable; + const struct Song *songTable = gSongTable; + const struct Song *song = &songTable[n]; + const struct MusicPlayer *mplay = &mplayTable[song->ms]; + + if (mplay->info->songHeader == song->header) + MPlayContinue(mplay->info); +} + +void m4aMPlayAllStop(void) +{ + s32 i; + + for (i = 0; i < NUM_MUSIC_PLAYERS; i++) + m4aMPlayStop(gMPlayTable[i].info); + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + m4aMPlayStop(&gPokemonCryMusicPlayers[i]); +} + +void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo) +{ + MPlayContinue(mplayInfo); +} + +void m4aMPlayAllContinue(void) +{ + s32 i; + + for (i = 0; i < NUM_MUSIC_PLAYERS; i++) + MPlayContinue(gMPlayTable[i].info); + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + MPlayContinue(&gPokemonCryMusicPlayers[i]); +} + +void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + MPlayFadeOut(mplayInfo, speed); +} + +void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->fadeOC = speed; + mplayInfo->fadeOI = speed; + mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT) | TEMPORARY_FADE; + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->fadeOC = speed; + mplayInfo->fadeOI = speed; + mplayInfo->fadeOV = (0 << FADE_VOL_SHIFT) | FADE_IN; + mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE; + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo) +{ + s32 trackCount = mplayInfo->trackCount; + struct MusicPlayerTrack *track = mplayInfo->tracks; + + while (trackCount > 0) + { + if (track->flags & MPT_FLG_EXIST) + { + if (track->flags & MPT_FLG_START) + { + Clear64byte(track); + track->flags = MPT_FLG_EXIST; + track->bendRange = 2; + track->volX = 64; + track->lfoSpeed = 22; + track->tone.type = 1; + } + } + + trackCount--; + track++; + } +} + +void MPlayExtender(struct CgbChannel *cgbChans) +{ + struct SoundInfo *soundInfo; + u32 ident; + + REG_SOUNDCNT_X = SOUND_MASTER_ENABLE + | SOUND_4_ON + | SOUND_3_ON + | SOUND_2_ON + | SOUND_1_ON; + REG_SOUNDCNT_L = 0; // set master volume to zero + REG_NR12 = 0x8; + REG_NR22 = 0x8; + REG_NR42 = 0x8; + REG_NR14 = 0x80; + REG_NR24 = 0x80; + REG_NR44 = 0x80; + REG_NR30 = 0; + REG_NR50 = 0x77; + + soundInfo = SOUND_INFO_PTR; + + ident = soundInfo->ident; + + if (ident != ID_NUMBER) + return; + + soundInfo->ident++; + + gMPlayJumpTable[8] = ply_memacc; + gMPlayJumpTable[17] = ply_lfos; + gMPlayJumpTable[19] = ply_mod; + gMPlayJumpTable[28] = ply_xcmd; + gMPlayJumpTable[29] = ply_endtie; + gMPlayJumpTable[30] = SampleFreqSet; + gMPlayJumpTable[31] = TrackStop; + gMPlayJumpTable[32] = FadeOutBody; + gMPlayJumpTable[33] = TrkVolPitSet; + + soundInfo->cgbChans = (struct CgbChannel *)cgbChans; + soundInfo->CgbSound = CgbSound; + soundInfo->CgbOscOff = CgbOscOff; + soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq; + soundInfo->maxLines = MAX_LINES; + + CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4); + + cgbChans[0].ty = 1; + cgbChans[0].panMask = 0x11; + cgbChans[1].ty = 2; + cgbChans[1].panMask = 0x22; + cgbChans[2].ty = 3; + cgbChans[2].panMask = 0x44; + cgbChans[3].ty = 4; + cgbChans[3].panMask = 0x88; + + soundInfo->ident = ident; +} + +void MusicPlayerJumpTableCopy(void) +{ + asm("swi 0x2A"); +} + +void ClearChain(void *x) +{ + void (*func)(void *) = *(&gMPlayJumpTable[34]); + func(x); +} + +void Clear64byte(void *x) +{ + void (*func)(void *) = *(&gMPlayJumpTable[35]); + func(x); +} + +void SoundInit(struct SoundInfo *soundInfo) +{ + soundInfo->ident = 0; + + if (REG_DMA1CNT & (DMA_REPEAT << 16)) + REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + if (REG_DMA2CNT & (DMA_REPEAT << 16)) + REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + REG_DMA1CNT_H = DMA_32BIT; + REG_DMA2CNT_H = DMA_32BIT; + REG_SOUNDCNT_X = SOUND_MASTER_ENABLE + | SOUND_4_ON + | SOUND_3_ON + | SOUND_2_ON + | SOUND_1_ON; + REG_SOUNDCNT_H = SOUND_B_FIFO_RESET | SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT + | SOUND_A_FIFO_RESET | SOUND_A_TIMER_0 | SOUND_A_RIGHT_OUTPUT + | SOUND_ALL_MIX_FULL; + REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | 0x40; + + REG_DMA1SAD = (s32)soundInfo->pcmBuffer; + REG_DMA1DAD = (s32)®_FIFO_A; + REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; + REG_DMA2DAD = (s32)®_FIFO_B; + + SOUND_INFO_PTR = soundInfo; + CpuFill32(0, soundInfo, sizeof(struct SoundInfo)); + + soundInfo->maxChans = 8; + soundInfo->masterVolume = 15; + soundInfo->plynote = (u32)ply_note; + soundInfo->CgbSound = DummyFunc; + soundInfo->CgbOscOff = (void (*)(u8))DummyFunc; + soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc; + soundInfo->ExtVolPit = (u32)DummyFunc; + + MPlayJumpTableCopy(gMPlayJumpTable); + + soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable; + + SampleFreqSet(SOUND_MODE_FREQ_13379); + + soundInfo->ident = ID_NUMBER; +} + +void SampleFreqSet(u32 freq) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + freq = (freq & 0xF0000) >> 16; + soundInfo->freq = freq; + soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1]; + soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank; + + // LCD refresh rate 59.7275Hz + soundInfo->pcmFreq = (597275 * soundInfo->pcmSamplesPerVBlank + 5000) / 10000; + + // CPU frequency 16.78Mhz + soundInfo->divFreq = (16777216 / soundInfo->pcmFreq + 1) >> 1; + + // Turn off timer 0. + REG_TM0CNT_H = 0; + + // cycles per LCD fresh 280896 + REG_TM0CNT_L = -(280896 / soundInfo->pcmSamplesPerVBlank); + + m4aSoundVSyncOn(); + + while (*(vu8 *)REG_ADDR_VCOUNT == 159) + ; + + while (*(vu8 *)REG_ADDR_VCOUNT != 159) + ; + + REG_TM0CNT_H = TIMER_ENABLE | TIMER_1CLK; +} + +void m4aSoundMode(u32 mode) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + u32 temp; + + if (soundInfo->ident != ID_NUMBER) + return; + + soundInfo->ident++; + + temp = mode & (SOUND_MODE_REVERB_SET | SOUND_MODE_REVERB_VAL); + + if (temp) + soundInfo->reverb = temp & SOUND_MODE_REVERB_VAL; + + temp = mode & SOUND_MODE_MAXCHN; + + if (temp) + { + struct SoundChannel *chan; + + soundInfo->maxChans = temp >> SOUND_MODE_MAXCHN_SHIFT; + + temp = MAX_DIRECTSOUND_CHANNELS; + chan = &soundInfo->chans[0]; + + while (temp != 0) + { + chan->status = 0; + temp--; + chan++; + } + } + + temp = mode & SOUND_MODE_MASVOL; + + if (temp) + soundInfo->masterVolume = temp >> SOUND_MODE_MASVOL_SHIFT; + + temp = mode & SOUND_MODE_DA_BIT; + + if (temp) + { + temp = (temp & 0x300000) >> 14; + REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | temp; + } + + temp = mode & SOUND_MODE_FREQ; + + if (temp) + { + m4aSoundVSyncOff(); + SampleFreqSet(temp); + } + + soundInfo->ident = ID_NUMBER; +} + +void SoundClear(void) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + s32 i; + void *chan; + + if (soundInfo->ident != ID_NUMBER) + return; + + soundInfo->ident++; + + i = MAX_DIRECTSOUND_CHANNELS; + chan = &soundInfo->chans[0]; + + while (i > 0) + { + ((struct SoundChannel *)chan)->status = 0; + i--; + chan = (void *)((s32)chan + sizeof(struct SoundChannel)); + } + + chan = soundInfo->cgbChans; + + if (chan) + { + i = 1; + + while (i <= 4) + { + soundInfo->CgbOscOff(i); + ((struct CgbChannel *)chan)->sf = 0; + i++; + chan = (void *)((s32)chan + sizeof(struct CgbChannel)); + } + } + + soundInfo->ident = ID_NUMBER; +} + +void m4aSoundVSyncOff(void) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1) + { + soundInfo->ident += 10; + + if (REG_DMA1CNT & (DMA_REPEAT << 16)) + REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + if (REG_DMA2CNT & (DMA_REPEAT << 16)) + REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + + REG_DMA1CNT_H = DMA_32BIT; + REG_DMA2CNT_H = DMA_32BIT; + + CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer)); + } +} + +void m4aSoundVSyncOn(void) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + u32 ident = soundInfo->ident; + + if (ident == ID_NUMBER) + return; + + REG_DMA1CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT; + REG_DMA2CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT; + + soundInfo->pcmDmaCounter = 0; + soundInfo->ident = ident - 10; +} + +void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tracks, u8 trackCount) +{ + struct SoundInfo *soundInfo; + + if (trackCount == 0) + return; + + if (trackCount > MAX_MUSICPLAYER_TRACKS) + trackCount = MAX_MUSICPLAYER_TRACKS; + + soundInfo = SOUND_INFO_PTR; + + if (soundInfo->ident != ID_NUMBER) + return; + + soundInfo->ident++; + + Clear64byte(mplayInfo); + + mplayInfo->tracks = tracks; + mplayInfo->trackCount = trackCount; + mplayInfo->status = MUSICPLAYER_STATUS_PAUSE; + + while (trackCount != 0) + { + tracks->flags = 0; + trackCount--; + tracks++; + } + + if (soundInfo->func != 0) + { + mplayInfo->func = soundInfo->func; + mplayInfo->intp = soundInfo->intp; + soundInfo->func = 0; + } + + soundInfo->intp = (u32)mplayInfo; + soundInfo->func = (u32)MPlayMain; + soundInfo->ident = ID_NUMBER; + mplayInfo->ident = ID_NUMBER; +} + +void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader) +{ + s32 i; + u8 unk_B; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + unk_B = mplayInfo->unk_B; + + if (!unk_B + || ((!mplayInfo->songHeader || !(mplayInfo->tracks[0].flags & MPT_FLG_START)) + && ((mplayInfo->status & MUSICPLAYER_STATUS_TRACK) == 0 + || (mplayInfo->status & MUSICPLAYER_STATUS_PAUSE))) + || (mplayInfo->priority <= songHeader->priority)) + { + mplayInfo->ident++; + mplayInfo->status = 0; + mplayInfo->songHeader = songHeader; + mplayInfo->tone = songHeader->tone; + mplayInfo->priority = songHeader->priority; + mplayInfo->clock = 0; + mplayInfo->tempoD = 150; + mplayInfo->tempoI = 150; + mplayInfo->tempoU = 0x100; + mplayInfo->tempoC = 0; + mplayInfo->fadeOI = 0; + + i = 0; + track = mplayInfo->tracks; + + while (i < songHeader->trackCount && i < mplayInfo->trackCount) + { + TrackStop(mplayInfo, track); + track->flags = MPT_FLG_EXIST | MPT_FLG_START; + track->chan = 0; + track->cmdPtr = songHeader->part[i]; + i++; + track++; + } + + while (i < mplayInfo->trackCount) + { + TrackStop(mplayInfo, track); + track->flags = 0; + i++; + track++; + } + + if (songHeader->reverb & 0x80) + m4aSoundMode(songHeader->reverb); + + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo) +{ + s32 i; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + + while (i > 0) + { + TrackStop(mplayInfo, track); + i--; + track++; + } + + mplayInfo->ident = ID_NUMBER; +} + +void FadeOutBody(struct MusicPlayerInfo *mplayInfo) +{ + s32 i; + struct MusicPlayerTrack *track; + u16 fadeOV; +#ifdef NONMATCHING + u16 mask; +#else + register u16 mask asm("r2"); +#endif // NONMATCHING + + if (mplayInfo->fadeOI == 0) + return; + + mplayInfo->fadeOC--; + mask = 0xFFFF; + + if (mplayInfo->fadeOC != 0) + return; + + mplayInfo->fadeOC = mplayInfo->fadeOI; + + if (mplayInfo->fadeOV & FADE_IN) + { + mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT); + + if ((u16)(mplayInfo->fadeOV & mask) >= (64 << FADE_VOL_SHIFT)) + { + mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT); + mplayInfo->fadeOI = 0; + } + } + else + { + mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT); + + if ((s16)(mplayInfo->fadeOV & mask) <= 0) + { + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + + while (i > 0) + { + u32 val; + + TrackStop(mplayInfo, track); + + val = TEMPORARY_FADE; + fadeOV = mplayInfo->fadeOV; + val &= fadeOV; + + if (!val) + track->flags = 0; + + i--; + track++; + } + + if (mplayInfo->fadeOV & TEMPORARY_FADE) + mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE; + else + mplayInfo->status = MUSICPLAYER_STATUS_PAUSE; + + mplayInfo->fadeOI = 0; + return; + } + } + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + + while (i > 0) + { + if (track->flags & MPT_FLG_EXIST) + { + fadeOV = mplayInfo->fadeOV; + + track->volX = (fadeOV >> FADE_VOL_SHIFT); + track->flags |= MPT_FLG_VOLCHG; + } + + i--; + track++; + } +} + +void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + if (track->flags & MPT_FLG_VOLSET) + { + s32 x; + s32 y; + + x = (u32)(track->vol * track->volX) >> 5; + + if (track->modT == 1) + x = (u32)(x * (track->modM + 128)) >> 7; + + y = 2 * track->pan + track->panX; + + if (track->modT == 2) + y += track->modM; + + if (y < -128) + y = -128; + else if (y > 127) + y = 127; + + track->volMR = (u32)((y + 128) * x) >> 8; + track->volML = (u32)((127 - y) * x) >> 8; + } + + if (track->flags & MPT_FLG_PITSET) + { + s32 bend = track->bend * track->bendRange; + s32 x = (track->tune + bend) + * 4 + + (track->keyShift << 8) + + (track->keyShiftX << 8) + + track->pitX; + + if (track->modT == 0) + x += 16 * track->modM; + + track->keyM = x >> 8; + track->pitM = x; + } + + track->flags &= ~(MPT_FLG_PITSET | MPT_FLG_VOLSET); +} + +u32 MidiKeyToCgbFreq(u8 chanNum, u8 key, u8 fineAdjust) +{ + if (chanNum == 4) + { + if (key <= 20) + { + key = 0; + } + else + { + key -= 21; + if (key > 59) + key = 59; + } + + return gNoiseTable[key]; + } + else + { + s32 val1; + s32 val2; + + if (key <= 35) + { + fineAdjust = 0; + key = 0; + } + else + { + key -= 36; + if (key > 130) + { + key = 130; + fineAdjust = 255; + } + } + + val1 = gCgbScaleTable[key]; + val1 = gCgbFreqTable[val1 & 0xF] >> (val1 >> 4); + + val2 = gCgbScaleTable[key + 1]; + val2 = gCgbFreqTable[val2 & 0xF] >> (val2 >> 4); + + return val1 + ((fineAdjust * (val2 - val1)) >> 8) + 2048; + } +} + +void CgbOscOff(u8 chanNum) +{ + switch (chanNum) + { + case 1: + REG_NR12 = 8; + REG_NR14 = 0x80; + break; + case 2: + REG_NR22 = 8; + REG_NR24 = 0x80; + break; + case 3: + REG_NR30 = 0; + break; + default: + REG_NR42 = 8; + REG_NR44 = 0x80; + } +} + +static inline int CgbPan(struct CgbChannel *chan) +{ + u32 rightVolume = chan->rightVolume; + u32 leftVolume = chan->leftVolume; + + if ((rightVolume = (u8)rightVolume) >= (leftVolume = (u8)leftVolume)) + { + if (rightVolume / 2 >= leftVolume) + { + chan->pan = 0x0F; + return 1; + } + } + else + { + if (leftVolume / 2 >= rightVolume) + { + chan->pan = 0xF0; + return 1; + } + } + + return 0; +} + +void CgbModVol(struct CgbChannel *chan) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + if ((soundInfo->mode & 1) || !CgbPan(chan)) + { + chan->pan = 0xFF; + chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + } + else + { + // Force chan->rightVolume and chan->leftVolume to be read from memory again, + // even though there is no reason to do so. + // The command line option "-fno-gcse" achieves the same result as this. + asm("" : : : "memory"); + + chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + if (chan->eg > 15) + chan->eg = 15; + } + + chan->sg = (chan->eg * chan->su + 15) >> 4; + chan->pan &= chan->panMask; +} + +void CgbSound(void) +{ + s32 ch; + struct CgbChannel *channels; + s32 evAdd; + s32 prevC15; + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + vu8 *nrx0ptr; + vu8 *nrx1ptr; + vu8 *nrx2ptr; + vu8 *nrx3ptr; + vu8 *nrx4ptr; + + // Most comparision operations that cast to s8 perform 'and' by 0xFF. + int mask = 0xff; + + if (soundInfo->c15) + soundInfo->c15--; + else + soundInfo->c15 = 14; + + for (ch = 1, channels = soundInfo->cgbChans; ch <= 4; ch++, channels++) + { + if (!(channels->sf & 0xc7)) + continue; + + switch (ch) + { + case 1: + nrx0ptr = (vu8 *)(REG_ADDR_NR10); + nrx1ptr = (vu8 *)(REG_ADDR_NR11); + nrx2ptr = (vu8 *)(REG_ADDR_NR12); + nrx3ptr = (vu8 *)(REG_ADDR_NR13); + nrx4ptr = (vu8 *)(REG_ADDR_NR14); + break; + case 2: + nrx0ptr = (vu8 *)(REG_ADDR_NR10+1); + nrx1ptr = (vu8 *)(REG_ADDR_NR21); + nrx2ptr = (vu8 *)(REG_ADDR_NR22); + nrx3ptr = (vu8 *)(REG_ADDR_NR23); + nrx4ptr = (vu8 *)(REG_ADDR_NR24); + break; + case 3: + nrx0ptr = (vu8 *)(REG_ADDR_NR30); + nrx1ptr = (vu8 *)(REG_ADDR_NR31); + nrx2ptr = (vu8 *)(REG_ADDR_NR32); + nrx3ptr = (vu8 *)(REG_ADDR_NR33); + nrx4ptr = (vu8 *)(REG_ADDR_NR34); + break; + default: + nrx0ptr = (vu8 *)(REG_ADDR_NR30+1); + nrx1ptr = (vu8 *)(REG_ADDR_NR41); + nrx2ptr = (vu8 *)(REG_ADDR_NR42); + nrx3ptr = (vu8 *)(REG_ADDR_NR43); + nrx4ptr = (vu8 *)(REG_ADDR_NR44); + break; + } + + prevC15 = soundInfo->c15; + evAdd = *nrx2ptr; + + if (channels->sf & 0x80) + { + if (!(channels->sf & 0x40)) + { + channels->sf = 3; + channels->mo = 3; + CgbModVol(channels); + switch (ch) + { + case 1: + *nrx0ptr = channels->sw; + // fallthrough + case 2: + *nrx1ptr = ((u32)channels->wp << 6) + channels->le; + goto loc_82E0E30; + case 3: + if ((u32)channels->wp != channels->cp) + { + *nrx0ptr = 0x40; + REG_WAVE_RAM0 = channels->wp[0]; + REG_WAVE_RAM1 = channels->wp[1]; + REG_WAVE_RAM2 = channels->wp[2]; + REG_WAVE_RAM3 = channels->wp[3]; + channels->cp = (u32)channels->wp; + } + *nrx0ptr = 0; + *nrx1ptr = channels->le; + if (channels->le) + channels->n4 = -64; + else + channels->n4 = -128; + break; + default: + *nrx1ptr = channels->le; + *nrx3ptr = (u32)channels->wp << 3; + loc_82E0E30: + evAdd = channels->at + 8; + if (channels->le) + channels->n4 = 64; + else + channels->n4 = 0; + break; + } + channels->ec = channels->at; + if ((s8)(channels->at & mask)) + { + channels->ev = 0; + goto EC_MINUS; + } + else + { + goto loc_82E0F96; + } + } + else + { + goto loc_82E0E82; + } + } + else if (channels->sf & 0x04) + { + channels->echoLength--; + if ((s8)(channels->echoLength & mask) <= 0) + { + loc_82E0E82: + CgbOscOff(ch); + channels->sf = 0; + goto LAST_LABEL; + } + goto loc_82E0FD6; + } + else if ((channels->sf & 0x40) && (channels->sf & 0x03)) + { + channels->sf &= 0xfc; + channels->ec = channels->re; + if ((s8)(channels->re & mask)) + { + channels->mo |= 1; + if (ch != 3) + { + evAdd = channels->re; + } + goto EC_MINUS; + } + else + { + goto loc_82E0F02; + } + } + else + { + loc_82E0ED0: + if (channels->ec == 0) + { + if (ch == 3) + { + channels->mo |= 1; + } + CgbModVol(channels); + if ((channels->sf & 0x3) == 0) + { + channels->ev--; + if ((s8)(channels->ev & mask) <= 0) + { + loc_82E0F02: + channels->ev = ((channels->eg * channels->echoVolume) + 0xFF) >> 8; + if (channels->ev) + { + channels->sf |= 0x4; + channels->mo |= 1; + if (ch != 3) + { + evAdd = 8; + } + goto loc_82E0FD6; + } + else + { + goto loc_82E0E82; + } + } + else + { + channels->ec = channels->re; + } + } + else if ((channels->sf & 0x3) == 1) + { + loc_82E0F3A: + channels->ev = channels->sg; + channels->ec = 7; + } + else if ((channels->sf & 0x3) == 2) + { + int ev, sg; + + channels->ev--; + ev = (s8)(channels->ev & mask); + sg = (s8)(channels->sg); + if (ev <= sg) + { + loc_82E0F5A: + if (channels->su == 0) + { + channels->sf &= 0xfc; + goto loc_82E0F02; + } + else + { + channels->sf--; + channels->mo |= 1; + if (ch != 3) + { + evAdd = 8; + } + goto loc_82E0F3A; + } + } + else + { + channels->ec = channels->de; + } + } + else + { + channels->ev++; + if ((u8)(channels->ev & mask) >= channels->eg) + { + loc_82E0F96: + channels->sf--; + channels->ec = channels->de; + if ((u8)(channels->ec & mask)) + { + channels->mo |= 1; + channels->ev = channels->eg; + if (ch != 3) + { + evAdd = channels->de; + } + } + else + { + goto loc_82E0F5A; + } + } + else + { + channels->ec = channels->at; + } + } + } + } + + EC_MINUS: + channels->ec--; + if (prevC15 == 0) + { + prevC15--; + goto loc_82E0ED0; + } + + loc_82E0FD6: + if (channels->mo & 0x2) + { + if (ch < 4 && (channels->ty & 0x08)) + { + int biasH = REG_SOUNDBIAS_H; + + if (biasH < 64) + { + channels->fr = (channels->fr + 2) & 0x7fc; + } + else if (biasH < 128) + { + channels->fr = (channels->fr + 1) & 0x7fe; + } + } + if (ch != 4) + { + *nrx3ptr = channels->fr; + } + else + { + *nrx3ptr = (*nrx3ptr & 0x08) | channels->fr; + } + channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->fr) + 1)); + *nrx4ptr = (s8)(channels->n4 & mask); + } + + if (channels->mo & 1) + { + REG_NR51 = (REG_NR51 & ~channels->panMask) | channels->pan; + if (ch == 3) + { + *nrx2ptr = gCgb3Vol[channels->ev]; + if (channels->n4 & 0x80) + { + *nrx0ptr = 0x80; + *nrx4ptr = channels->n4; + channels->n4 &= 0x7f; + } + } + else + { + evAdd &= 0xf; + *nrx2ptr = (channels->ev << 4) + evAdd; + *nrx4ptr = channels->n4 | 0x80; + if (ch == 1 && !(*nrx0ptr & 0x08)) + { + *nrx4ptr = channels->n4 | 0x80; + } + } + } + + LAST_LABEL: + channels->mo = 0; + } +} + +void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo) +{ + if (mplayInfo->ident == ID_NUMBER) + { + mplayInfo->ident++; + mplayInfo->tempoU = tempo; + mplayInfo->tempoI = (mplayInfo->tempoD * mplayInfo->tempoU) >> 8; + mplayInfo->ident = ID_NUMBER; + } +} + +void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->volX = volume / 4; + track->flags |= MPT_FLG_VOLCHG; + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->keyShiftX = pitch >> 8; + track->pitX = pitch; + track->flags |= MPT_FLG_PITCHG; + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->panX = pan; + track->flags |= MPT_FLG_VOLCHG; + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void ClearModM(struct MusicPlayerTrack *track) +{ + track->lfoSpeedC = 0; + track->modM = 0; + + if (track->modT == 0) + track->flags |= MPT_FLG_PITCHG; + else + track->flags |= MPT_FLG_VOLCHG; +} + +void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->mod = modDepth; + + if (!track->mod) + ClearModM(track); + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed) +{ + s32 i; + u32 bit; + struct MusicPlayerTrack *track; + + if (mplayInfo->ident != ID_NUMBER) + return; + + mplayInfo->ident++; + + i = mplayInfo->trackCount; + track = mplayInfo->tracks; + bit = 1; + + while (i > 0) + { + if (trackBits & bit) + { + if (track->flags & MPT_FLG_EXIST) + { + track->lfoSpeed = lfoSpeed; + + if (!track->lfoSpeed) + ClearModM(track); + } + } + + i--; + track++; + bit <<= 1; + } + + mplayInfo->ident = ID_NUMBER; +} + +#define MEMACC_COND_JUMP(cond) \ +if (cond) \ + goto cond_true; \ +else \ + goto cond_false; \ + +void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 op; + u8 *addr; + u8 data; + + op = *track->cmdPtr; + track->cmdPtr++; + + addr = mplayInfo->memAccArea + *track->cmdPtr; + track->cmdPtr++; + + data = *track->cmdPtr; + track->cmdPtr++; + + switch (op) + { + case 0: + *addr = data; + return; + case 1: + *addr += data; + return; + case 2: + *addr -= data; + return; + case 3: + *addr = mplayInfo->memAccArea[data]; + return; + case 4: + *addr += mplayInfo->memAccArea[data]; + return; + case 5: + *addr -= mplayInfo->memAccArea[data]; + return; + case 6: + MEMACC_COND_JUMP(*addr == data) + return; + case 7: + MEMACC_COND_JUMP(*addr != data) + return; + case 8: + MEMACC_COND_JUMP(*addr > data) + return; + case 9: + MEMACC_COND_JUMP(*addr >= data) + return; + case 10: + MEMACC_COND_JUMP(*addr <= data) + return; + case 11: + MEMACC_COND_JUMP(*addr < data) + return; + case 12: + MEMACC_COND_JUMP(*addr == mplayInfo->memAccArea[data]) + return; + case 13: + MEMACC_COND_JUMP(*addr != mplayInfo->memAccArea[data]) + return; + case 14: + MEMACC_COND_JUMP(*addr > mplayInfo->memAccArea[data]) + return; + case 15: + MEMACC_COND_JUMP(*addr >= mplayInfo->memAccArea[data]) + return; + case 16: + MEMACC_COND_JUMP(*addr <= mplayInfo->memAccArea[data]) + return; + case 17: + MEMACC_COND_JUMP(*addr < mplayInfo->memAccArea[data]) + return; + default: + return; + } + +cond_true: + { + void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]); + func(mplayInfo, track); + return; + } + +cond_false: + track->cmdPtr += 4; +} + +void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 n = *track->cmdPtr; + track->cmdPtr++; + + gXcmdTable[n](mplayInfo, track); +} + +void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]); + func(mplayInfo, track); +} + +#define READ_XCMD_BYTE(var, n) \ +{ \ + u32 byte = track->cmdPtr[(n)]; \ + byte <<= n * 8; \ + (var) &= ~(0xFF << (n * 8)); \ + (var) |= byte; \ +} + +void ply_xwave(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 wav; + + READ_XCMD_BYTE(wav, 0) // UB: uninitialized variable + READ_XCMD_BYTE(wav, 1) + READ_XCMD_BYTE(wav, 2) + READ_XCMD_BYTE(wav, 3) + + track->tone.wav = (struct WaveData *)wav; + track->cmdPtr += 4; +} + +void ply_xtype(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.type = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xatta(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.attack = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xdeca(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.decay = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xsust(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.sustain = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.release = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->echoVolume = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->echoLength = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xleng(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.length = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xswee(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + track->tone.pan_sweep = *track->cmdPtr; + track->cmdPtr++; +} + +void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 unk; + + READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable + READ_XCMD_BYTE(unk, 1) + + if (track->unk_3A < (u16)unk) + { + track->unk_3A++; + track->cmdPtr -= 2; + track->wait = 1; + } + else + { + track->unk_3A = 0; + track->cmdPtr += 2; + } +} + +void ply_xcmd_0D(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) +{ + u32 unk; + + READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable + READ_XCMD_BYTE(unk, 1) + READ_XCMD_BYTE(unk, 2) + READ_XCMD_BYTE(unk, 3) + + track->unk_3C = unk; + track->cmdPtr += 4; +} + +void DummyFunc(void) +{ +} + +struct MusicPlayerInfo *SetPokemonCryTone(struct ToneData *tone) +{ + u32 maxClock = 0; + s32 maxClockIndex = 0; + s32 i; + struct MusicPlayerInfo *mplayInfo; + + for (i = 0; i < MAX_POKEMON_CRIES; i++) + { + struct MusicPlayerTrack *track = &gPokemonCryTracks[i * 2]; + + if (!track->flags && (!track->chan || track->chan->track != track)) + goto start_song; + + if (maxClock < gPokemonCryMusicPlayers[i].clock) + { + maxClock = gPokemonCryMusicPlayers[i].clock; + maxClockIndex = i; + } + } + + i = maxClockIndex; + +start_song: + mplayInfo = &gPokemonCryMusicPlayers[i]; + mplayInfo->ident++; + +#define CRY ((s32)&gPokemonCrySongs + i * sizeof(struct PokemonCrySong)) +#define CRY_OFS(field) offsetof(struct PokemonCrySong, field) + + memcpy((void *)CRY, &gPokemonCrySong, sizeof(struct PokemonCrySong)); + + *(u32 *)(CRY + CRY_OFS(tone)) = (u32)tone; + *(u32 *)(CRY + CRY_OFS(part)) = CRY + CRY_OFS(part0); + *(u32 *)(CRY + CRY_OFS(part) + 4) = CRY + CRY_OFS(part1); + *(u32 *)(CRY + CRY_OFS(gotoTarget)) = CRY + CRY_OFS(cont); + +#undef CRY_OFS +#undef CRY + + mplayInfo->ident = ID_NUMBER; + + MPlayStart(mplayInfo, (struct SongHeader *)(&gPokemonCrySongs[i])); + + return mplayInfo; +} + +void SetPokemonCryVolume(u8 val) +{ + gPokemonCrySong.volumeValue = val & 0x7F; +} + +void SetPokemonCryPanpot(s8 val) +{ + gPokemonCrySong.panValue = (val + C_V) & 0x7F; +} + +void SetPokemonCryPitch(s16 val) +{ + s16 b = val + 0x80; + u8 a = gPokemonCrySong.tuneValue2 - gPokemonCrySong.tuneValue; + gPokemonCrySong.tieKeyValue = (b >> 8) & 0x7F; + gPokemonCrySong.tuneValue = (b >> 1) & 0x7F; + gPokemonCrySong.tuneValue2 = (a + ((b >> 1) & 0x7F)) & 0x7F; +} + +void SetPokemonCryLength(u16 val) +{ + gPokemonCrySong.unkCmd0CParam = val; +} + +void SetPokemonCryRelease(u8 val) +{ + gPokemonCrySong.releaseValue = val; +} + +void SetPokemonCryProgress(u32 val) +{ + gPokemonCrySong.unkCmd0DParam = val; +} + +int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo) +{ + struct MusicPlayerTrack *track = mplayInfo->tracks; + + if (track->chan && track->chan->track == track) + return 1; + else + return 0; +} + +void SetPokemonCryChorus(s8 val) +{ + if (val) + { + gPokemonCrySong.trackCount = 2; + gPokemonCrySong.tuneValue2 = (val + gPokemonCrySong.tuneValue) & 0x7F; + } + else + { + gPokemonCrySong.trackCount = 1; + } +} + +void SetPokemonCryStereo(u32 val) +{ + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + + if (val) + { + REG_SOUNDCNT_H = SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT + | SOUND_A_TIMER_0 | SOUND_A_RIGHT_OUTPUT + | SOUND_ALL_MIX_FULL; + soundInfo->mode &= ~1; + } + else + { + REG_SOUNDCNT_H = SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT | SOUND_B_RIGHT_OUTPUT + | SOUND_A_TIMER_0 | SOUND_A_LEFT_OUTPUT | SOUND_A_RIGHT_OUTPUT + | SOUND_B_MIX_HALF | SOUND_A_MIX_HALF | SOUND_CGB_MIX_FULL; + soundInfo->mode |= 1; + } +} + +void SetPokemonCryPriority(u8 val) +{ + gPokemonCrySong.priority = val; +} diff --git a/src/m4a_2.c b/src/m4a_2.c deleted file mode 100644 index 0625f05d1..000000000 --- a/src/m4a_2.c +++ /dev/null @@ -1,912 +0,0 @@ -#include "gba/m4a_internal.h" - -#define BSS_CODE __attribute__((section(".bss.code"))) - -BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0}; - -struct SoundInfo gSoundInfo; -struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES]; -struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES]; -void *gMPlayJumpTable[36]; -struct CgbChannel gCgbChans[4]; -struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2]; -struct PokemonCrySong gPokemonCrySong; -struct MusicPlayerInfo gMPlayInfo_BGM; -struct MusicPlayerInfo gMPlayInfo_SE1; -struct MusicPlayerInfo gMPlayInfo_SE2; -struct MusicPlayerInfo gMPlayInfo_SE3; -u8 gMPlayMemAccArea[0x10]; - -u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust) -{ - u32 val1; - u32 val2; - u32 fineAdjustShifted = fineAdjust << 24; - - if (key > 178) - { - key = 178; - fineAdjustShifted = 255 << 24; - } - - val1 = gScaleTable[key]; - val1 = gFreqTable[val1 & 0xF] >> (val1 >> 4); - - val2 = gScaleTable[key + 1]; - val2 = gFreqTable[val2 & 0xF] >> (val2 >> 4); - - return umul3232H32(wav->freq, val1 + umul3232H32(val2 - val1, fineAdjustShifted)); -} - -void UnusedDummyFunc() -{ -} - -void MPlayContinue(struct MusicPlayerInfo *mplayInfo) -{ - if (mplayInfo->ident == ID_NUMBER) - { - mplayInfo->ident++; - mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE; - mplayInfo->ident = ID_NUMBER; - } -} - -void MPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed) -{ - if (mplayInfo->ident == ID_NUMBER) - { - mplayInfo->ident++; - mplayInfo->fadeOC = speed; - mplayInfo->fadeOI = speed; - mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT); - mplayInfo->ident = ID_NUMBER; - } -} - -void m4aSoundInit(void) -{ - s32 i; - - CpuCopy32((void *)((s32)SoundMainRAM & ~1), SoundMainRAM_Buffer, sizeof(SoundMainRAM_Buffer)); - - SoundInit(&gSoundInfo); - MPlayExtender(gCgbChans); - m4aSoundMode(SOUND_MODE_DA_BIT_8 - | SOUND_MODE_FREQ_13379 - | (12 << SOUND_MODE_MASVOL_SHIFT) - | (5 << SOUND_MODE_MAXCHN_SHIFT)); - - for (i = 0; i < NUM_MUSIC_PLAYERS; i++) - { - struct MusicPlayerInfo *mplayInfo = gMPlayTable[i].info; - MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].unk_8); - mplayInfo->unk_B = gMPlayTable[i].unk_A; - mplayInfo->memAccArea = gMPlayMemAccArea; - } - - memcpy(&gPokemonCrySong, &gPokemonCrySongTemplate, sizeof(struct PokemonCrySong)); - - for (i = 0; i < MAX_POKEMON_CRIES; i++) - { - struct MusicPlayerInfo *mplayInfo = &gPokemonCryMusicPlayers[i]; - struct MusicPlayerTrack *track = &gPokemonCryTracks[i * 2]; - MPlayOpen(mplayInfo, track, 2); - track->chan = 0; - } -} - -void m4aSoundMain(void) -{ - SoundMain(); -} - -void m4aSongNumStart(u16 n) -{ - const struct MusicPlayer *mplayTable = gMPlayTable; - const struct Song *songTable = gSongTable; - const struct Song *song = &songTable[n]; - const struct MusicPlayer *mplay = &mplayTable[song->ms]; - - MPlayStart(mplay->info, song->header); -} - -void m4aSongNumStartOrChange(u16 n) -{ - const struct MusicPlayer *mplayTable = gMPlayTable; - const struct Song *songTable = gSongTable; - const struct Song *song = &songTable[n]; - const struct MusicPlayer *mplay = &mplayTable[song->ms]; - - if (mplay->info->songHeader != song->header) - { - MPlayStart(mplay->info, song->header); - } - else - { - if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0 - || (mplay->info->status & MUSICPLAYER_STATUS_PAUSE)) - { - MPlayStart(mplay->info, song->header); - } - } -} - -void m4aSongNumStartOrContinue(u16 n) -{ - const struct MusicPlayer *mplayTable = gMPlayTable; - const struct Song *songTable = gSongTable; - const struct Song *song = &songTable[n]; - const struct MusicPlayer *mplay = &mplayTable[song->ms]; - - if (mplay->info->songHeader != song->header) - MPlayStart(mplay->info, song->header); - else if ((mplay->info->status & MUSICPLAYER_STATUS_TRACK) == 0) - MPlayStart(mplay->info, song->header); - else if (mplay->info->status & MUSICPLAYER_STATUS_PAUSE) - MPlayContinue(mplay->info); -} - -void m4aSongNumStop(u16 n) -{ - const struct MusicPlayer *mplayTable = gMPlayTable; - const struct Song *songTable = gSongTable; - const struct Song *song = &songTable[n]; - const struct MusicPlayer *mplay = &mplayTable[song->ms]; - - if (mplay->info->songHeader == song->header) - m4aMPlayStop(mplay->info); -} - -void m4aSongNumContinue(u16 n) -{ - const struct MusicPlayer *mplayTable = gMPlayTable; - const struct Song *songTable = gSongTable; - const struct Song *song = &songTable[n]; - const struct MusicPlayer *mplay = &mplayTable[song->ms]; - - if (mplay->info->songHeader == song->header) - MPlayContinue(mplay->info); -} - -void m4aMPlayAllStop(void) -{ - s32 i; - - for (i = 0; i < NUM_MUSIC_PLAYERS; i++) - m4aMPlayStop(gMPlayTable[i].info); - - for (i = 0; i < MAX_POKEMON_CRIES; i++) - m4aMPlayStop(&gPokemonCryMusicPlayers[i]); -} - -void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo) -{ - MPlayContinue(mplayInfo); -} - -void m4aMPlayAllContinue(void) -{ - s32 i; - - for (i = 0; i < NUM_MUSIC_PLAYERS; i++) - MPlayContinue(gMPlayTable[i].info); - - for (i = 0; i < MAX_POKEMON_CRIES; i++) - MPlayContinue(&gPokemonCryMusicPlayers[i]); -} - -void m4aMPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed) -{ - MPlayFadeOut(mplayInfo, speed); -} - -void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed) -{ - if (mplayInfo->ident == ID_NUMBER) - { - mplayInfo->ident++; - mplayInfo->fadeOC = speed; - mplayInfo->fadeOI = speed; - mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT) | TEMPORARY_FADE; - mplayInfo->ident = ID_NUMBER; - } -} - -void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed) -{ - if (mplayInfo->ident == ID_NUMBER) - { - mplayInfo->ident++; - mplayInfo->fadeOC = speed; - mplayInfo->fadeOI = speed; - mplayInfo->fadeOV = (0 << FADE_VOL_SHIFT) | FADE_IN; - mplayInfo->status &= ~MUSICPLAYER_STATUS_PAUSE; - mplayInfo->ident = ID_NUMBER; - } -} - -void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo) -{ - s32 trackCount = mplayInfo->trackCount; - struct MusicPlayerTrack *track = mplayInfo->tracks; - - while (trackCount > 0) - { - if (track->flags & MPT_FLG_EXIST) - { - if (track->flags & MPT_FLG_START) - { - Clear64byte(track); - track->flags = MPT_FLG_EXIST; - track->bendRange = 2; - track->volX = 64; - track->lfoSpeed = 22; - track->tone.type = 1; - } - } - - trackCount--; - track++; - } -} - -void MPlayExtender(struct CgbChannel *cgbChans) -{ - struct SoundInfo *soundInfo; - u32 ident; - - REG_SOUNDCNT_X = SOUND_MASTER_ENABLE - | SOUND_4_ON - | SOUND_3_ON - | SOUND_2_ON - | SOUND_1_ON; - REG_SOUNDCNT_L = 0; // set master volume to zero - REG_NR12 = 0x8; - REG_NR22 = 0x8; - REG_NR42 = 0x8; - REG_NR14 = 0x80; - REG_NR24 = 0x80; - REG_NR44 = 0x80; - REG_NR30 = 0; - REG_NR50 = 0x77; - - soundInfo = SOUND_INFO_PTR; - - ident = soundInfo->ident; - - if (ident != ID_NUMBER) - return; - - soundInfo->ident++; - - gMPlayJumpTable[8] = ply_memacc; - gMPlayJumpTable[17] = ply_lfos; - gMPlayJumpTable[19] = ply_mod; - gMPlayJumpTable[28] = ply_xcmd; - gMPlayJumpTable[29] = ply_endtie; - gMPlayJumpTable[30] = SampleFreqSet; - gMPlayJumpTable[31] = TrackStop; - gMPlayJumpTable[32] = FadeOutBody; - gMPlayJumpTable[33] = TrkVolPitSet; - - soundInfo->cgbChans = (struct CgbChannel *)cgbChans; - soundInfo->CgbSound = CgbSound; - soundInfo->CgbOscOff = CgbOscOff; - soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq; - soundInfo->maxLines = MAX_LINES; - - CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4); - - cgbChans[0].ty = 1; - cgbChans[0].panMask = 0x11; - cgbChans[1].ty = 2; - cgbChans[1].panMask = 0x22; - cgbChans[2].ty = 3; - cgbChans[2].panMask = 0x44; - cgbChans[3].ty = 4; - cgbChans[3].panMask = 0x88; - - soundInfo->ident = ident; -} - -void MusicPlayerJumpTableCopy(void) -{ - asm("swi 0x2A"); -} - -void ClearChain(void *x) -{ - void (*func)(void *) = *(&gMPlayJumpTable[34]); - func(x); -} - -void Clear64byte(void *x) -{ - void (*func)(void *) = *(&gMPlayJumpTable[35]); - func(x); -} - -void SoundInit(struct SoundInfo *soundInfo) -{ - soundInfo->ident = 0; - - if (REG_DMA1CNT & (DMA_REPEAT << 16)) - REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; - - if (REG_DMA2CNT & (DMA_REPEAT << 16)) - REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; - - REG_DMA1CNT_H = DMA_32BIT; - REG_DMA2CNT_H = DMA_32BIT; - REG_SOUNDCNT_X = SOUND_MASTER_ENABLE - | SOUND_4_ON - | SOUND_3_ON - | SOUND_2_ON - | SOUND_1_ON; - REG_SOUNDCNT_H = SOUND_B_FIFO_RESET | SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT - | SOUND_A_FIFO_RESET | SOUND_A_TIMER_0 | SOUND_A_RIGHT_OUTPUT - | SOUND_ALL_MIX_FULL; - REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | 0x40; - - REG_DMA1SAD = (s32)soundInfo->pcmBuffer; - REG_DMA1DAD = (s32)®_FIFO_A; - REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; - REG_DMA2DAD = (s32)®_FIFO_B; - - SOUND_INFO_PTR = soundInfo; - CpuFill32(0, soundInfo, sizeof(struct SoundInfo)); - - soundInfo->maxChans = 8; - soundInfo->masterVolume = 15; - soundInfo->plynote = (u32)ply_note; - soundInfo->CgbSound = DummyFunc; - soundInfo->CgbOscOff = (void (*)(u8))DummyFunc; - soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc; - soundInfo->ExtVolPit = (u32)DummyFunc; - - MPlayJumpTableCopy(gMPlayJumpTable); - - soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable; - - SampleFreqSet(SOUND_MODE_FREQ_13379); - - soundInfo->ident = ID_NUMBER; -} - -void SampleFreqSet(u32 freq) -{ - struct SoundInfo *soundInfo = SOUND_INFO_PTR; - - freq = (freq & 0xF0000) >> 16; - soundInfo->freq = freq; - soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1]; - soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank; - - // LCD refresh rate 59.7275Hz - soundInfo->pcmFreq = (597275 * soundInfo->pcmSamplesPerVBlank + 5000) / 10000; - - // CPU frequency 16.78Mhz - soundInfo->divFreq = (16777216 / soundInfo->pcmFreq + 1) >> 1; - - // Turn off timer 0. - REG_TM0CNT_H = 0; - - // cycles per LCD fresh 280896 - REG_TM0CNT_L = -(280896 / soundInfo->pcmSamplesPerVBlank); - - m4aSoundVSyncOn(); - - while (*(vu8 *)REG_ADDR_VCOUNT == 159) - ; - - while (*(vu8 *)REG_ADDR_VCOUNT != 159) - ; - - REG_TM0CNT_H = TIMER_ENABLE | TIMER_1CLK; -} - -void m4aSoundMode(u32 mode) -{ - struct SoundInfo *soundInfo = SOUND_INFO_PTR; - u32 temp; - - if (soundInfo->ident != ID_NUMBER) - return; - - soundInfo->ident++; - - temp = mode & (SOUND_MODE_REVERB_SET | SOUND_MODE_REVERB_VAL); - - if (temp) - soundInfo->reverb = temp & SOUND_MODE_REVERB_VAL; - - temp = mode & SOUND_MODE_MAXCHN; - - if (temp) - { - struct SoundChannel *chan; - - soundInfo->maxChans = temp >> SOUND_MODE_MAXCHN_SHIFT; - - temp = MAX_DIRECTSOUND_CHANNELS; - chan = &soundInfo->chans[0]; - - while (temp != 0) - { - chan->status = 0; - temp--; - chan++; - } - } - - temp = mode & SOUND_MODE_MASVOL; - - if (temp) - soundInfo->masterVolume = temp >> SOUND_MODE_MASVOL_SHIFT; - - temp = mode & SOUND_MODE_DA_BIT; - - if (temp) - { - temp = (temp & 0x300000) >> 14; - REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | temp; - } - - temp = mode & SOUND_MODE_FREQ; - - if (temp) - { - m4aSoundVSyncOff(); - SampleFreqSet(temp); - } - - soundInfo->ident = ID_NUMBER; -} - -void SoundClear(void) -{ - struct SoundInfo *soundInfo = SOUND_INFO_PTR; - s32 i; - void *chan; - - if (soundInfo->ident != ID_NUMBER) - return; - - soundInfo->ident++; - - i = MAX_DIRECTSOUND_CHANNELS; - chan = &soundInfo->chans[0]; - - while (i > 0) - { - ((struct SoundChannel *)chan)->status = 0; - i--; - chan = (void *)((s32)chan + sizeof(struct SoundChannel)); - } - - chan = soundInfo->cgbChans; - - if (chan) - { - i = 1; - - while (i <= 4) - { - soundInfo->CgbOscOff(i); - ((struct CgbChannel *)chan)->sf = 0; - i++; - chan = (void *)((s32)chan + sizeof(struct CgbChannel)); - } - } - - soundInfo->ident = ID_NUMBER; -} - -void m4aSoundVSyncOff(void) -{ - struct SoundInfo *soundInfo = SOUND_INFO_PTR; - - if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1) - { - soundInfo->ident += 10; - - if (REG_DMA1CNT & (DMA_REPEAT << 16)) - REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; - - if (REG_DMA2CNT & (DMA_REPEAT << 16)) - REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; - - REG_DMA1CNT_H = DMA_32BIT; - REG_DMA2CNT_H = DMA_32BIT; - - CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer)); - } -} - -void m4aSoundVSyncOn(void) -{ - struct SoundInfo *soundInfo = SOUND_INFO_PTR; - u32 ident = soundInfo->ident; - - if (ident == ID_NUMBER) - return; - - REG_DMA1CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT; - REG_DMA2CNT_H = DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT; - - soundInfo->pcmDmaCounter = 0; - soundInfo->ident = ident - 10; -} - -void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tracks, u8 trackCount) -{ - struct SoundInfo *soundInfo; - - if (trackCount == 0) - return; - - if (trackCount > MAX_MUSICPLAYER_TRACKS) - trackCount = MAX_MUSICPLAYER_TRACKS; - - soundInfo = SOUND_INFO_PTR; - - if (soundInfo->ident != ID_NUMBER) - return; - - soundInfo->ident++; - - Clear64byte(mplayInfo); - - mplayInfo->tracks = tracks; - mplayInfo->trackCount = trackCount; - mplayInfo->status = MUSICPLAYER_STATUS_PAUSE; - - while (trackCount != 0) - { - tracks->flags = 0; - trackCount--; - tracks++; - } - - if (soundInfo->func != 0) - { - mplayInfo->func = soundInfo->func; - mplayInfo->intp = soundInfo->intp; - soundInfo->func = 0; - } - - soundInfo->intp = (u32)mplayInfo; - soundInfo->func = (u32)MPlayMain; - soundInfo->ident = ID_NUMBER; - mplayInfo->ident = ID_NUMBER; -} - -void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader) -{ - s32 i; - u8 unk_B; - struct MusicPlayerTrack *track; - - if (mplayInfo->ident != ID_NUMBER) - return; - - unk_B = mplayInfo->unk_B; - - if (!unk_B - || ((!mplayInfo->songHeader || !(mplayInfo->tracks[0].flags & MPT_FLG_START)) - && ((mplayInfo->status & MUSICPLAYER_STATUS_TRACK) == 0 - || (mplayInfo->status & MUSICPLAYER_STATUS_PAUSE))) - || (mplayInfo->priority <= songHeader->priority)) - { - mplayInfo->ident++; - mplayInfo->status = 0; - mplayInfo->songHeader = songHeader; - mplayInfo->tone = songHeader->tone; - mplayInfo->priority = songHeader->priority; - mplayInfo->clock = 0; - mplayInfo->tempoD = 150; - mplayInfo->tempoI = 150; - mplayInfo->tempoU = 0x100; - mplayInfo->tempoC = 0; - mplayInfo->fadeOI = 0; - - i = 0; - track = mplayInfo->tracks; - - while (i < songHeader->trackCount && i < mplayInfo->trackCount) - { - TrackStop(mplayInfo, track); - track->flags = MPT_FLG_EXIST | MPT_FLG_START; - track->chan = 0; - track->cmdPtr = songHeader->part[i]; - i++; - track++; - } - - while (i < mplayInfo->trackCount) - { - TrackStop(mplayInfo, track); - track->flags = 0; - i++; - track++; - } - - if (songHeader->reverb & 0x80) - m4aSoundMode(songHeader->reverb); - - mplayInfo->ident = ID_NUMBER; - } -} - -void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo) -{ - s32 i; - struct MusicPlayerTrack *track; - - if (mplayInfo->ident != ID_NUMBER) - return; - - mplayInfo->ident++; - mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE; - - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - - while (i > 0) - { - TrackStop(mplayInfo, track); - i--; - track++; - } - - mplayInfo->ident = ID_NUMBER; -} - -void FadeOutBody(struct MusicPlayerInfo *mplayInfo) -{ - s32 i; - struct MusicPlayerTrack *track; - u16 fadeOI = mplayInfo->fadeOI; - register u32 temp asm("r3"); - register u16 mask asm("r2"); - - if (fadeOI == 0) - return; - - mplayInfo->fadeOC--; - - temp = 0xFFFF; - mask = temp; - - if (mplayInfo->fadeOC != 0) - return; - - mplayInfo->fadeOC = fadeOI; - - if (mplayInfo->fadeOV & FADE_IN) - { - mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT); - - if ((u16)(mplayInfo->fadeOV & mask) >= (64 << FADE_VOL_SHIFT)) - { - mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT); - mplayInfo->fadeOI = 0; - } - } - else - { - mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT); - - if ((s16)(mplayInfo->fadeOV & mask) <= 0) - { - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - - while (i > 0) - { - register u32 fadeOV asm("r7"); - u32 val; - - TrackStop(mplayInfo, track); - - val = TEMPORARY_FADE; - fadeOV = mplayInfo->fadeOV; - val &= fadeOV; - - if (!val) - track->flags = 0; - - i--; - track++; - } - - if (mplayInfo->fadeOV & TEMPORARY_FADE) - mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE; - else - mplayInfo->status = MUSICPLAYER_STATUS_PAUSE; - - mplayInfo->fadeOI = 0; - return; - } - } - - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - - while (i > 0) - { - if (track->flags & MPT_FLG_EXIST) - { - track->volX = (mplayInfo->fadeOV >> FADE_VOL_SHIFT); - track->flags |= MPT_FLG_VOLCHG; - } - - i--; - track++; - } -} - -void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - if (track->flags & MPT_FLG_VOLSET) - { - s32 x; - s32 y; - - x = (u32)(track->vol * track->volX) >> 5; - - if (track->modT == 1) - x = (u32)(x * (track->modM + 128)) >> 7; - - y = 2 * track->pan + track->panX; - - if (track->modT == 2) - y += track->modM; - - if (y < -128) - y = -128; - else if (y > 127) - y = 127; - - track->volMR = (u32)((y + 128) * x) >> 8; - track->volML = (u32)((127 - y) * x) >> 8; - } - - if (track->flags & MPT_FLG_PITSET) - { - s32 bend = track->bend * track->bendRange; - register s32 x asm("r1") = track->tune; - x += bend; - x *= 4; - x += (track->keyShift << 8); - x += (track->keyShiftX << 8); - x += track->pitX; - - if (track->modT == 0) - x += 16 * track->modM; - - track->keyM = x >> 8; - track->pitM = x; - } - - track->flags &= ~(MPT_FLG_PITSET | MPT_FLG_VOLSET); -} - -u32 MidiKeyToCgbFreq(u8 chanNum, u8 key, u8 fineAdjust) -{ - if (chanNum == 4) - { - if (key <= 20) - { - key = 0; - } - else - { - key -= 21; - if (key > 59) - key = 59; - } - - return gNoiseTable[key]; - } - else - { - s32 val1; - s32 val2; - - if (key <= 35) - { - fineAdjust = 0; - key = 0; - } - else - { - key -= 36; - if (key > 130) - { - key = 130; - fineAdjust = 255; - } - } - - val1 = gCgbScaleTable[key]; - val1 = gCgbFreqTable[val1 & 0xF] >> (val1 >> 4); - - val2 = gCgbScaleTable[key + 1]; - val2 = gCgbFreqTable[val2 & 0xF] >> (val2 >> 4); - - return val1 + ((fineAdjust * (val2 - val1)) >> 8) + 2048; - } -} - -void CgbOscOff(u8 chanNum) -{ - switch (chanNum) - { - case 1: - REG_NR12 = 8; - REG_NR14 = 0x80; - break; - case 2: - REG_NR22 = 8; - REG_NR24 = 0x80; - break; - case 3: - REG_NR30 = 0; - break; - default: - REG_NR42 = 8; - REG_NR44 = 0x80; - } -} - -static inline int CgbPan(struct CgbChannel *chan) -{ - u32 rightVolume = chan->rightVolume; - u32 leftVolume = chan->leftVolume; - - if ((rightVolume = (u8)rightVolume) >= (leftVolume = (u8)leftVolume)) - { - if (rightVolume / 2 >= leftVolume) - { - chan->pan = 0x0F; - return 1; - } - } - else - { - if (leftVolume / 2 >= rightVolume) - { - chan->pan = 0xF0; - return 1; - } - } - - return 0; -} - -void CgbModVol(struct CgbChannel *chan) -{ - struct SoundInfo *soundInfo = SOUND_INFO_PTR; - - if ((soundInfo->mode & 1) || !CgbPan(chan)) - { - chan->pan = 0xFF; - chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; - } - else - { - // Force chan->rightVolume and chan->leftVolume to be read from memory again, - // even though there is no reason to do so. - // The command line option "-fno-gcse" achieves the same result as this. - asm("" : : : "memory"); - - chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; - if (chan->eg > 15) - chan->eg = 15; - } - - chan->sg = (chan->eg * chan->su + 15) >> 4; - chan->pan &= chan->panMask; -} diff --git a/src/m4a_4.c b/src/m4a_4.c deleted file mode 100644 index 2e1d140b4..000000000 --- a/src/m4a_4.c +++ /dev/null @@ -1,545 +0,0 @@ -#include "gba/m4a_internal.h" - -void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo) -{ - if (mplayInfo->ident == ID_NUMBER) - { - mplayInfo->ident++; - mplayInfo->tempoU = tempo; - mplayInfo->tempoI = (mplayInfo->tempoD * mplayInfo->tempoU) >> 8; - mplayInfo->ident = ID_NUMBER; - } -} - -void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume) -{ - s32 i; - u32 bit; - struct MusicPlayerTrack *track; - - if (mplayInfo->ident != ID_NUMBER) - return; - - mplayInfo->ident++; - - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - bit = 1; - - while (i > 0) - { - if (trackBits & bit) - { - if (track->flags & MPT_FLG_EXIST) - { - track->volX = volume / 4; - track->flags |= MPT_FLG_VOLCHG; - } - } - - i--; - track++; - bit <<= 1; - } - - mplayInfo->ident = ID_NUMBER; -} - -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch) -{ - s32 i; - u32 bit; - struct MusicPlayerTrack *track; - - if (mplayInfo->ident != ID_NUMBER) - return; - - mplayInfo->ident++; - - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - bit = 1; - - while (i > 0) - { - if (trackBits & bit) - { - if (track->flags & MPT_FLG_EXIST) - { - track->keyShiftX = (s16)pitch >> 8; - track->pitX = pitch; - track->flags |= MPT_FLG_PITCHG; - } - } - - i--; - track++; - bit <<= 1; - } - - mplayInfo->ident = ID_NUMBER; -} - -void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan) -{ - s32 i; - u32 bit; - struct MusicPlayerTrack *track; - - if (mplayInfo->ident != ID_NUMBER) - return; - - mplayInfo->ident++; - - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - bit = 1; - - while (i > 0) - { - if (trackBits & bit) - { - if (track->flags & MPT_FLG_EXIST) - { - track->panX = pan; - track->flags |= MPT_FLG_VOLCHG; - } - } - - i--; - track++; - bit <<= 1; - } - - mplayInfo->ident = ID_NUMBER; -} - -void ClearModM(struct MusicPlayerTrack *track) -{ - track->lfoSpeedC = 0; - track->modM = 0; - - if (track->modT == 0) - track->flags |= MPT_FLG_PITCHG; - else - track->flags |= MPT_FLG_VOLCHG; -} - -void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth) -{ - s32 i; - u32 bit; - struct MusicPlayerTrack *track; - - if (mplayInfo->ident != ID_NUMBER) - return; - - mplayInfo->ident++; - - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - bit = 1; - - while (i > 0) - { - if (trackBits & bit) - { - if (track->flags & MPT_FLG_EXIST) - { - track->mod = modDepth; - - if (!track->mod) - ClearModM(track); - } - } - - i--; - track++; - bit <<= 1; - } - - mplayInfo->ident = ID_NUMBER; -} - -void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed) -{ - s32 i; - u32 bit; - struct MusicPlayerTrack *track; - - if (mplayInfo->ident != ID_NUMBER) - return; - - mplayInfo->ident++; - - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - bit = 1; - - while (i > 0) - { - if (trackBits & bit) - { - if (track->flags & MPT_FLG_EXIST) - { - track->lfoSpeed = lfoSpeed; - - if (!track->lfoSpeed) - ClearModM(track); - } - } - - i--; - track++; - bit <<= 1; - } - - mplayInfo->ident = ID_NUMBER; -} - -#define MEMACC_COND_JUMP(cond) \ -if (cond) \ - goto cond_true; \ -else \ - goto cond_false; \ - -void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - u32 op; - u8 *addr; - u8 data; - - op = *track->cmdPtr; - track->cmdPtr++; - - addr = mplayInfo->memAccArea + *track->cmdPtr; - track->cmdPtr++; - - data = *track->cmdPtr; - track->cmdPtr++; - - switch (op) - { - case 0: - *addr = data; - return; - case 1: - *addr += data; - return; - case 2: - *addr -= data; - return; - case 3: - *addr = mplayInfo->memAccArea[data]; - return; - case 4: - *addr += mplayInfo->memAccArea[data]; - return; - case 5: - *addr -= mplayInfo->memAccArea[data]; - return; - case 6: - MEMACC_COND_JUMP(*addr == data) - return; - case 7: - MEMACC_COND_JUMP(*addr != data) - return; - case 8: - MEMACC_COND_JUMP(*addr > data) - return; - case 9: - MEMACC_COND_JUMP(*addr >= data) - return; - case 10: - MEMACC_COND_JUMP(*addr <= data) - return; - case 11: - MEMACC_COND_JUMP(*addr < data) - return; - case 12: - MEMACC_COND_JUMP(*addr == mplayInfo->memAccArea[data]) - return; - case 13: - MEMACC_COND_JUMP(*addr != mplayInfo->memAccArea[data]) - return; - case 14: - MEMACC_COND_JUMP(*addr > mplayInfo->memAccArea[data]) - return; - case 15: - MEMACC_COND_JUMP(*addr >= mplayInfo->memAccArea[data]) - return; - case 16: - MEMACC_COND_JUMP(*addr <= mplayInfo->memAccArea[data]) - return; - case 17: - MEMACC_COND_JUMP(*addr < mplayInfo->memAccArea[data]) - return; - default: - return; - } - -cond_true: - { - void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]); - func(mplayInfo, track); - return; - } - -cond_false: - track->cmdPtr += 4; -} - -void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - u32 n = *track->cmdPtr; - track->cmdPtr++; - - gXcmdTable[n](mplayInfo, track); -} - -void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]); - func(mplayInfo, track); -} - -#define READ_XCMD_BYTE(var, n) \ -{ \ - u32 byte = track->cmdPtr[(n)]; \ - byte <<= n * 8; \ - (var) &= ~(0xFF << (n * 8)); \ - (var) |= byte; \ -} - -void ply_xwave(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - u32 wav; - - READ_XCMD_BYTE(wav, 0) // UB: uninitialized variable - READ_XCMD_BYTE(wav, 1) - READ_XCMD_BYTE(wav, 2) - READ_XCMD_BYTE(wav, 3) - - track->tone.wav = (struct WaveData *)wav; - track->cmdPtr += 4; -} - -void ply_xtype(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->tone.type = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xatta(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->tone.attack = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xdeca(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->tone.decay = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xsust(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->tone.sustain = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->tone.release = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->echoVolume = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->echoLength = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xleng(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->tone.length = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xswee(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - track->tone.pan_sweep = *track->cmdPtr; - track->cmdPtr++; -} - -void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - u32 unk; - - READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable - READ_XCMD_BYTE(unk, 1) - - if (track->unk_3A < (u16)unk) - { - track->unk_3A++; - track->cmdPtr -= 2; - track->wait = 1; - } - else - { - track->unk_3A = 0; - track->cmdPtr += 2; - } -} - -void ply_xcmd_0D(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) -{ - u32 unk; - - READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable - READ_XCMD_BYTE(unk, 1) - READ_XCMD_BYTE(unk, 2) - READ_XCMD_BYTE(unk, 3) - - track->unk_3C = unk; - track->cmdPtr += 4; -} - -void DummyFunc(void) -{ -} - -struct MusicPlayerInfo *SetPokemonCryTone(struct ToneData *tone) -{ - u32 maxClock = 0; - s32 maxClockIndex = 0; - s32 i; - struct MusicPlayerInfo *mplayInfo; - - for (i = 0; i < MAX_POKEMON_CRIES; i++) - { - struct MusicPlayerTrack *track = &gPokemonCryTracks[i * 2]; - - if (!track->flags && (!track->chan || track->chan->track != track)) - goto start_song; - - if (maxClock < gPokemonCryMusicPlayers[i].clock) - { - maxClock = gPokemonCryMusicPlayers[i].clock; - maxClockIndex = i; - } - } - - i = maxClockIndex; - -start_song: - mplayInfo = &gPokemonCryMusicPlayers[i]; - mplayInfo->ident++; - -#define CRY ((s32)&gPokemonCrySongs + i * sizeof(struct PokemonCrySong)) -#define CRY_OFS(field) offsetof(struct PokemonCrySong, field) - - memcpy((void *)CRY, &gPokemonCrySong, sizeof(struct PokemonCrySong)); - - *(u32 *)(CRY + CRY_OFS(tone)) = (u32)tone; - *(u32 *)(CRY + CRY_OFS(part)) = CRY + CRY_OFS(part0); - *(u32 *)(CRY + CRY_OFS(part) + 4) = CRY + CRY_OFS(part1); - *(u32 *)(CRY + CRY_OFS(gotoTarget)) = CRY + CRY_OFS(cont); - -#undef CRY_OFS -#undef CRY - - mplayInfo->ident = ID_NUMBER; - - MPlayStart(mplayInfo, (struct SongHeader *)(&gPokemonCrySongs[i])); - - return mplayInfo; -} - -void SetPokemonCryVolume(u8 val) -{ - gPokemonCrySong.volumeValue = val & 0x7F; -} - -void SetPokemonCryPanpot(s8 val) -{ - gPokemonCrySong.panValue = (val + C_V) & 0x7F; -} - -void SetPokemonCryPitch(s16 val) -{ - s16 b = val + 0x80; - u8 a = gPokemonCrySong.tuneValue2 - gPokemonCrySong.tuneValue; - gPokemonCrySong.tieKeyValue = (b >> 8) & 0x7F; - gPokemonCrySong.tuneValue = (b >> 1) & 0x7F; - gPokemonCrySong.tuneValue2 = (a + ((b >> 1) & 0x7F)) & 0x7F; -} - -void SetPokemonCryLength(u16 val) -{ - gPokemonCrySong.unkCmd0CParam = val; -} - -void SetPokemonCryRelease(u8 val) -{ - gPokemonCrySong.releaseValue = val; -} - -void SetPokemonCryProgress(u32 val) -{ - gPokemonCrySong.unkCmd0DParam = val; -} - -int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo) -{ - struct MusicPlayerTrack *track = mplayInfo->tracks; - - if (track->chan && track->chan->track == track) - return 1; - else - return 0; -} - -void SetPokemonCryChorus(s8 val) -{ - if (val) - { - gPokemonCrySong.trackCount = 2; - gPokemonCrySong.tuneValue2 = (val + gPokemonCrySong.tuneValue) & 0x7F; - } - else - { - gPokemonCrySong.trackCount = 1; - } -} - -void SetPokemonCryStereo(u32 val) -{ - struct SoundInfo *soundInfo = SOUND_INFO_PTR; - - if (val) - { - REG_SOUNDCNT_H = SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT - | SOUND_A_TIMER_0 | SOUND_A_RIGHT_OUTPUT - | SOUND_ALL_MIX_FULL; - soundInfo->mode &= ~1; - } - else - { - REG_SOUNDCNT_H = SOUND_B_TIMER_0 | SOUND_B_LEFT_OUTPUT | SOUND_B_RIGHT_OUTPUT - | SOUND_A_TIMER_0 | SOUND_A_LEFT_OUTPUT | SOUND_A_RIGHT_OUTPUT - | SOUND_B_MIX_HALF | SOUND_A_MIX_HALF | SOUND_CGB_MIX_FULL; - soundInfo->mode |= 1; - } -} - -void SetPokemonCryPriority(u8 val) -{ - gPokemonCrySong.priority = val; -} diff --git a/sym_common.txt b/sym_common.txt index 4adfe3bac..a1e9c00e6 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -347,7 +347,7 @@ gUnknown_3005EF8: @ 3005EF8 gUnknown_3005F00: @ 3005F00 .space 0x50 - .include "m4a_2.o" + .include "m4a.o" .include "agb_flash.o" gRfuState: @ 3007438 From 1276184621c83e39c368374cbe7e1ef77ad70c41 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 Apr 2019 18:09:25 -0400 Subject: [PATCH 100/318] First pass disassembly of battle ai scripts --- data/battle_ai_scripts.s | 3124 ++++++++++++++++++++++++- data/mystery_event_script_cmd_table.s | 1 + 2 files changed, 3124 insertions(+), 1 deletion(-) diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index bb0c1883c..944275acc 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -1,4 +1,3126 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .include "asm/macros/battle_ai_script.inc" + .section script_data, "aw", %progbits BattleAIs:: @ 81D9BF4 - .incbin "baserom.gba", 0x1D9BF4, 0x20FC + .4byte AI_CheckBadMove + .4byte AI_TryToFaint + .4byte AI_CheckViability + .4byte AI_SetupFirstTurn + .4byte AI_Risky + .4byte AI_PreferStrongestMove + .4byte AI_PreferBatonPass + .4byte AI_DoubleBattle + .4byte AI_HPAware + .4byte AI_Unknown + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Ret + .4byte AI_Roaming + .4byte AI_Safari + .4byte AI_FirstBattle + +AI_CheckBadMove:: @ 81D9C74 + is_most_powerful_move + if_equal 0, AI_sub_81D9CE0 + if_damage_bonus 0, AI_sub_81DA433 + get_ability 0 + if_equal 10, AI_sub_81D9CA6 + if_equal 11, AI_sub_81D9CB3 + if_equal 18, AI_sub_81D9CC0 + if_equal 25, AI_sub_81D9CCD + if_equal 26, AI_sub_81D9CD8 + jump AI_sub_81D9CE0 + +AI_sub_81D9CA6:: @ 81D9CA6 + get_type 4 + if_arg_equal 13, AI_sub_81DA436 + jump AI_sub_81D9CE0 + +AI_sub_81D9CB3:: @ 81D9CB3 + get_type 4 + if_arg_equal 11, AI_sub_81DA436 + jump AI_sub_81D9CE0 + +AI_sub_81D9CC0:: @ 81D9CC0 + get_type 4 + if_arg_equal 10, AI_sub_81DA436 + jump AI_sub_81D9CE0 + +AI_sub_81D9CCD:: @ 81D9CCD + if_damage_bonus 80, AI_sub_81D9CE0 + jump AI_sub_81DA433 + +AI_sub_81D9CD8:: @ 81D9CD8 + get_type 4 + if_arg_equal 4, AI_sub_81DA433 + +AI_sub_81D9CE0:: @ 81D9CE0 + get_ability 0 + if_not_equal 43, AI_sub_81D9D27 + if_move 45, AI_sub_81DA433 + if_move 46, AI_sub_81DA433 + if_move 47, AI_sub_81DA433 + if_move 48, AI_sub_81DA433 + if_move 103, AI_sub_81DA433 + if_move 173, AI_sub_81DA433 + if_move 253, AI_sub_81DA433 + if_move 319, AI_sub_81DA433 + if_move 320, AI_sub_81DA433 + +AI_sub_81D9D27:: @ 81D9D27 + if_effect 1, AI_sub_81D9FB6 + if_effect 7, AI_sub_81D9FCF + if_effect 8, AI_sub_81DA008 + if_effect 10, AI_sub_81DA020 + if_effect 11, AI_sub_81DA029 + if_effect 12, AI_sub_81DA032 + if_effect 13, AI_sub_81DA03B + if_effect 14, AI_sub_81DA044 + if_effect 15, AI_sub_81DA04D + if_effect 16, AI_sub_81DA056 + if_effect 18, AI_sub_81DA05F + if_effect 19, AI_sub_81DA074 + if_effect 20, AI_sub_81DA081 + if_effect 21, AI_sub_81DA08E + if_effect 22, AI_sub_81DA09B + if_effect 23, AI_sub_81DA0A8 + if_effect 24, AI_sub_81DA0BD + if_effect 25, AI_sub_81DA0D4 + if_effect 26, AI_sub_81DA1B2 + if_effect 28, AI_sub_81DA14A + if_effect 33, AI_sub_81DA15B + if_effect 35, AI_sub_81DA18A + if_effect 38, AI_sub_81DA195 + if_effect 39, AI_sub_81DA1B2 + if_effect 40, AI_sub_81DA1B2 + if_effect 46, AI_sub_81DA1CC + if_effect 47, AI_sub_81DA1D7 + if_effect 49, AI_sub_81DA1E2 + if_effect 50, AI_sub_81DA020 + if_effect 51, AI_sub_81DA029 + if_effect 52, AI_sub_81DA032 + if_effect 53, AI_sub_81DA03B + if_effect 54, AI_sub_81DA044 + if_effect 55, AI_sub_81DA04D + if_effect 56, AI_sub_81DA056 + if_effect 58, AI_sub_81DA05F + if_effect 59, AI_sub_81DA074 + if_effect 60, AI_sub_81DA081 + if_effect 61, AI_sub_81DA08E + if_effect 62, AI_sub_81DA09B + if_effect 63, AI_sub_81DA0A8 + if_effect 64, AI_sub_81DA0BD + if_effect 65, AI_sub_81DA1F5 + if_effect 66, AI_sub_81DA15B + if_effect 67, AI_sub_81DA200 + if_effect 79, AI_sub_81DA219 + if_effect 80, AI_sub_81DA1B2 + if_effect 84, AI_sub_81DA22B + if_effect 86, AI_sub_81DA246 + if_effect 87, AI_sub_81DA1B2 + if_effect 88, AI_sub_81DA1B2 + if_effect 89, AI_sub_81DA1B2 + if_effect 90, AI_sub_81DA24E + if_effect 92, AI_sub_81DA256 + if_effect 97, AI_sub_81DA256 + if_effect 99, AI_sub_81DA1B2 + if_effect 106, AI_sub_81DA261 + if_effect 107, AI_sub_81D9FF3 + if_effect 108, AI_sub_81DA056 + if_effect 109, AI_sub_81DA26C + if_effect 112, AI_sub_81DA27D + if_effect 113, AI_sub_81DA288 + if_effect 114, AI_sub_81DA293 + if_effect 115, AI_sub_81DA29E + if_effect 118, AI_sub_81DA1E2 + if_effect 120, AI_sub_81DA2A6 + if_effect 121, AI_sub_81DA1B2 + if_effect 122, AI_sub_81DA1B2 + if_effect 123, AI_sub_81DA1B2 + if_effect 124, AI_sub_81DA2E6 + if_effect 126, AI_sub_81DA1AA + if_effect 127, AI_sub_81DA301 + if_effect -126, AI_sub_81DA1B2 + if_effect -120, AI_sub_81DA30A + if_effect -119, AI_sub_81DA312 + if_effect -114, AI_sub_81DA019 + if_effect -113, AI_sub_81DA0D4 + if_effect -112, AI_sub_81DA1B2 + if_effect -111, AI_sub_81DA1B2 + if_effect -108, AI_sub_81DA31A + if_effect -103, AI_sub_81DA433 + if_effect -100, AI_sub_81DA029 + if_effect -98, AI_sub_81DA325 + if_effect -96, AI_sub_81DA32E + if_effect -95, AI_sub_81DA337 + if_effect -94, AI_sub_81DA337 + if_effect -92, AI_sub_81DA346 + if_effect -91, AI_sub_81DA34E + if_effect -90, AI_sub_81DA1E2 + if_effect -89, AI_sub_81DA359 + if_effect -88, AI_sub_81DA2F1 + if_effect -86, AI_sub_81DA1B2 + if_effect -80, AI_sub_81DA37E + if_effect -79, AI_sub_81DA386 + if_effect -75, AI_sub_81DA38F + if_effect -74, AI_sub_81DA1B2 + if_effect -72, AI_sub_81DA39A + if_effect -68, AI_sub_81DA386 + if_effect -67, AI_sub_81DA1B2 + if_effect -64, AI_sub_81DA3A3 + if_effect -63, AI_sub_81DA3AE + if_effect -60, AI_sub_81DA1B2 + if_effect -55, AI_sub_81DA3B9 + if_effect -51, AI_sub_81DA3C4 + if_effect -50, AI_sub_81DA3D5 + if_effect -48, AI_sub_81DA3E6 + if_effect -46, AI_sub_81DA3F7 + if_effect -45, AI_sub_81DA402 + if_effect -44, AI_sub_81DA413 + end + +AI_sub_81D9FB6:: @ 81D9FB6 + get_ability 0 + if_equal 15, AI_sub_81DA433 + if_equal 72, AI_sub_81DA433 + if_status 0, 255, AI_sub_81DA433 + end + +AI_sub_81D9FCF:: @ 81D9FCF + if_damage_bonus 0, AI_sub_81DA433 + get_ability 0 + if_equal 6, AI_sub_81DA433 + count_alive_pokemon 1 + if_not_equal 0, AI_sub_81D9FF2 + count_alive_pokemon 0 + if_not_equal 0, AI_sub_81DA433 + jump AI_sub_81DA424 + +AI_sub_81D9FF2:: @ 81D9FF2 + end + +AI_sub_81D9FF3:: @ 81D9FF3 + if_status2 0, 0x8000000, AI_sub_81DA433 + if_not_status 0, 7, AI_sub_81DA430 + end + +AI_sub_81DA008:: @ 81DA008 + if_not_status 0, 7, AI_sub_81DA430 + if_damage_bonus 0, AI_sub_81DA433 + end + +AI_sub_81DA019:: @ 81DA019 + if_hp_less_than 1, 51, AI_sub_81DA433 + +AI_sub_81DA020:: @ 81DA020 + if_stat_level_equal 1, 1, 12, AI_sub_81DA433 + end + +AI_sub_81DA029:: @ 81DA029 + if_stat_level_equal 1, 2, 12, AI_sub_81DA433 + end + +AI_sub_81DA032:: @ 81DA032 + if_stat_level_equal 1, 3, 12, AI_sub_81DA433 + end + +AI_sub_81DA03B:: @ 81DA03B + if_stat_level_equal 1, 4, 12, AI_sub_81DA433 + end + +AI_sub_81DA044:: @ 81DA044 + if_stat_level_equal 1, 5, 12, AI_sub_81DA433 + end + +AI_sub_81DA04D:: @ 81DA04D + if_stat_level_equal 1, 6, 12, AI_sub_81DA433 + end + +AI_sub_81DA056:: @ 81DA056 + if_stat_level_equal 1, 7, 12, AI_sub_81DA433 + end + +AI_sub_81DA05F:: @ 81DA05F + if_stat_level_equal 0, 1, 0, AI_sub_81DA433 + get_ability 0 + if_equal 52, AI_sub_81DA433 + jump AI_sub_81DA0C5 + +AI_sub_81DA074:: @ 81DA074 + if_stat_level_equal 0, 2, 0, AI_sub_81DA433 + jump AI_sub_81DA0C5 + +AI_sub_81DA081:: @ 81DA081 + if_stat_level_equal 0, 3, 0, AI_sub_81DA433 + jump AI_sub_81DA0C5 + +AI_sub_81DA08E:: @ 81DA08E + if_stat_level_equal 0, 4, 0, AI_sub_81DA433 + jump AI_sub_81DA0C5 + +AI_sub_81DA09B:: @ 81DA09B + if_stat_level_equal 0, 5, 0, AI_sub_81DA433 + jump AI_sub_81DA0C5 + +AI_sub_81DA0A8:: @ 81DA0A8 + if_stat_level_equal 0, 6, 0, AI_sub_81DA433 + get_ability 0 + if_equal 51, AI_sub_81DA433 + jump AI_sub_81DA0C5 + +AI_sub_81DA0BD:: @ 81DA0BD + if_stat_level_equal 0, 7, 0, AI_sub_81DA433 + +AI_sub_81DA0C5:: @ 81DA0C5 + get_ability 0 + if_equal 29, AI_sub_81DA433 + if_equal 73, AI_sub_81DA433 + end + +AI_sub_81DA0D4:: @ 81DA0D4 + if_stat_level_less_than 1, 1, 6, AI_sub_81DA149 + if_stat_level_less_than 1, 2, 6, AI_sub_81DA149 + if_stat_level_less_than 1, 3, 6, AI_sub_81DA149 + if_stat_level_less_than 1, 4, 6, AI_sub_81DA149 + if_stat_level_less_than 1, 5, 6, AI_sub_81DA149 + if_stat_level_less_than 1, 6, 6, AI_sub_81DA149 + if_stat_level_less_than 1, 7, 6, AI_sub_81DA149 + if_stat_level_more_than 0, 1, 6, AI_sub_81DA149 + if_stat_level_more_than 0, 2, 6, AI_sub_81DA149 + if_stat_level_more_than 0, 3, 6, AI_sub_81DA149 + if_stat_level_more_than 0, 4, 6, AI_sub_81DA149 + if_stat_level_more_than 0, 5, 6, AI_sub_81DA149 + if_stat_level_more_than 0, 6, 6, AI_sub_81DA149 + if_stat_level_more_than 0, 7, 6, AI_sub_81DA149 + jump AI_sub_81DA433 + +AI_sub_81DA149:: @ 81DA149 + end + +AI_sub_81DA14A:: @ 81DA14A + count_alive_pokemon 0 + if_equal 0, AI_sub_81DA433 + get_ability 0 + if_equal 21, AI_sub_81DA433 + end + +AI_sub_81DA15B:: @ 81DA15B + get_type 0 + if_equal 8, AI_sub_81DA433 + if_equal 3, AI_sub_81DA433 + get_type 2 + if_equal 8, AI_sub_81DA433 + if_equal 3, AI_sub_81DA433 + get_ability 0 + if_equal 17, AI_sub_81DA433 + if_status 0, 255, AI_sub_81DA433 + end + +AI_sub_81DA18A:: @ 81DA18A + if_status4 1, 2, AI_sub_81DA430 + end + +AI_sub_81DA195:: @ 81DA195 + if_damage_bonus 0, AI_sub_81DA433 + get_ability 0 + if_equal 5, AI_sub_81DA433 + if_level_cond 1, AI_sub_81DA433 + end + +AI_sub_81DA1AA:: @ 81DA1AA + get_ability 0 + if_equal 26, AI_sub_81DA433 + +AI_sub_81DA1B2:: @ 81DA1B2 + if_damage_bonus 0, AI_sub_81DA433 + get_ability 0 + if_not_equal 25, AI_sub_81DA1CB + if_damage_bonus 80, AI_sub_81DA1CB + jump AI_sub_81DA433 + +AI_sub_81DA1CB:: @ 81DA1CB + end + +AI_sub_81DA1CC:: @ 81DA1CC + if_status4 1, 256, AI_sub_81DA430 + end + +AI_sub_81DA1D7:: @ 81DA1D7 + if_status2 1, 1048576, AI_sub_81DA433 + end + +AI_sub_81DA1E2:: @ 81DA1E2 + if_status2 0, 7, AI_sub_81DA42D + get_ability 0 + if_equal 20, AI_sub_81DA433 + end + +AI_sub_81DA1F5:: @ 81DA1F5 + if_status4 1, 1, AI_sub_81DA430 + end + +AI_sub_81DA200:: @ 81DA200 + if_damage_bonus 0, AI_sub_81DA433 + get_ability 0 + if_equal 7, AI_sub_81DA433 + if_status 0, 255, AI_sub_81DA433 + end + +AI_sub_81DA219:: @ 81DA219 + if_status2 1, 16777216, AI_sub_81DA430 + if_hp_less_than 1, 26, AI_sub_81DA433 + end + +AI_sub_81DA22B:: @ 81DA22B + if_status3 0, 4, AI_sub_81DA433 + get_type 0 + if_equal 12, AI_sub_81DA433 + get_type 2 + if_equal 12, AI_sub_81DA433 + end + +AI_sub_81DA246:: @ 81DA246 + if_last_move_did_damage 0, 0, AI_sub_81DA430 + end + +AI_sub_81DA24E:: @ 81DA24E + if_last_move_did_damage 0, 1, AI_sub_81DA430 + end + +AI_sub_81DA256:: @ 81DA256 + if_not_status 1, 7, AI_sub_81DA430 + end + +AI_sub_81DA261:: @ 81DA261 + if_status2 0, 67108864, AI_sub_81DA433 + end + +AI_sub_81DA26C:: @ 81DA26C + if_stat_level_equal 1, 1, 12, AI_sub_81DA433 + if_stat_level_equal 1, 2, 12, AI_sub_81DA430 + end + +AI_sub_81DA27D:: @ 81DA27D + if_status4 0, 16, AI_sub_81DA433 + end + +AI_sub_81DA288:: @ 81DA288 + if_status2 0, 536870912, AI_sub_81DA433 + end + +AI_sub_81DA293:: @ 81DA293 + if_status3 0, 32, AI_sub_81DA433 + end + +AI_sub_81DA29E:: @ 81DA29E + get_weather + if_equal 2, AI_sub_81DA430 + end + +AI_sub_81DA2A6:: @ 81DA2A6 + if_status2 0, 983040, AI_sub_81DA433 + get_ability 0 + if_equal 12, AI_sub_81DA433 + get_gender 1 + if_equal 0, AI_sub_81DA2CB + if_equal -2, AI_sub_81DA2D8 + jump AI_sub_81DA433 + +AI_sub_81DA2CB:: @ 81DA2CB + get_gender 0 + if_equal -2, AI_sub_81DA2E5 + jump AI_sub_81DA433 + +AI_sub_81DA2D8:: @ 81DA2D8 + get_gender 0 + if_equal 0, AI_sub_81DA2E5 + jump AI_sub_81DA433 + +AI_sub_81DA2E5:: @ 81DA2E5 + end + +AI_sub_81DA2E6:: @ 81DA2E6 + if_status4 1, 32, AI_sub_81DA430 + end + +AI_sub_81DA2F1:: @ 81DA2F1 + if_stat_level_equal 0, 1, 0, AI_sub_81DA433 + if_stat_level_equal 0, 4, 0, AI_sub_81DA430 + +AI_sub_81DA301:: @ 81DA301 + count_alive_pokemon 1 + if_equal 0, AI_sub_81DA433 + end + +AI_sub_81DA30A:: @ 81DA30A + get_weather + if_equal 1, AI_sub_81DA430 + end + +AI_sub_81DA312:: @ 81DA312 + get_weather + if_equal 0, AI_sub_81DA430 + end + +AI_sub_81DA31A:: @ 81DA31A + if_status4 0, 64, AI_sub_81DA433 + end + +AI_sub_81DA325:: @ 81DA325 + is_first_turn 1 + if_equal 0, AI_sub_81DA433 + end + +AI_sub_81DA32E:: @ 81DA32E + get_stockpile_count 1 + if_equal 3, AI_sub_81DA433 + end + +AI_sub_81DA337:: @ 81DA337 + if_damage_bonus 0, AI_sub_81DA433 + get_stockpile_count 1 + if_equal 0, AI_sub_81DA433 + end + +AI_sub_81DA346:: @ 81DA346 + get_weather + if_equal 3, AI_sub_81DA430 + end + +AI_sub_81DA34E:: @ 81DA34E + if_status2 0, -2147483648, AI_sub_81DA433 + end + +AI_sub_81DA359:: @ 81DA359 + get_ability 0 + if_equal 41, AI_sub_81DA433 + if_status 0, 255, AI_sub_81DA433 + if_damage_bonus 0, AI_sub_81DA433 + if_damage_bonus 20, AI_sub_81DA433 + if_damage_bonus 10, AI_sub_81DA433 + end + +AI_sub_81DA37E:: @ 81DA37E + is_double_battle + if_equal 0, AI_sub_81DA433 + end + +AI_sub_81DA386:: @ 81DA386 + get_ability 0 + if_equal 60, AI_sub_81DA433 + end + +AI_sub_81DA38F:: @ 81DA38F + if_status3 1, 1024, AI_sub_81DA433 + end + +AI_sub_81DA39A:: @ 81DA39A + get_item 1 + if_equal 0, AI_sub_81DA433 + end + +AI_sub_81DA3A3:: @ 81DA3A3 + if_status3 1, 8192, AI_sub_81DA433 + end + +AI_sub_81DA3AE:: @ 81DA3AE + if_not_status 1, 216, AI_sub_81DA433 + end + +AI_sub_81DA3B9:: @ 81DA3B9 + if_status3 1, 65536, AI_sub_81DA433 + end + +AI_sub_81DA3C4:: @ 81DA3C4 + if_stat_level_equal 0, 1, 0, AI_sub_81DA433 + if_stat_level_equal 0, 2, 0, AI_sub_81DA430 + end + +AI_sub_81DA3D5:: @ 81DA3D5 + if_stat_level_equal 1, 2, 12, AI_sub_81DA433 + if_stat_level_equal 1, 5, 12, AI_sub_81DA430 + end + +AI_sub_81DA3E6:: @ 81DA3E6 + if_stat_level_equal 1, 1, 12, AI_sub_81DA433 + if_stat_level_equal 1, 2, 12, AI_sub_81DA430 + end + +AI_sub_81DA3F7:: @ 81DA3F7 + if_status3 1, 131072, AI_sub_81DA433 + end + +AI_sub_81DA402:: @ 81DA402 + if_stat_level_equal 1, 4, 12, AI_sub_81DA433 + if_stat_level_equal 1, 5, 12, AI_sub_81DA430 + end + +AI_sub_81DA413:: @ 81DA413 + if_stat_level_equal 1, 1, 12, AI_sub_81DA433 + if_stat_level_equal 1, 3, 12, AI_sub_81DA430 + end + +AI_sub_81DA424:: @ 81DA424 + score -1 + end + +AI_sub_81DA427:: @ 81DA427 + score -2 + end + +AI_sub_81DA42A:: @ 81DA42A + score -3 + end + +AI_sub_81DA42D:: @ 81DA42D + score -5 + end + +AI_sub_81DA430:: @ 81DA430 + score -8 + end + +AI_sub_81DA433:: @ 81DA433 + score -10 + end + +AI_sub_81DA436:: @ 81DA436 + score -12 + end + score 1 + end + score 2 + end + score 3 + end + score 5 + end + +AI_TryToFaint:: @ 81DA445 + if_effect 1, AI_sub_81DA71C + if_effect 3, AI_sub_81DA738 + if_effect 7, AI_sub_81DA752 + if_effect 8, AI_sub_81DA7B0 + if_effect 9, AI_sub_81DA7C4 + if_effect 10, AI_sub_81DA848 + if_effect 11, AI_sub_81DA883 + if_effect 12, AI_sub_81DA8E9 + if_effect 13, AI_sub_81DA8FF + if_effect 14, AI_sub_81DA93A + if_effect 15, AI_sub_81DA9A0 + if_effect 16, AI_sub_81DA9BA + if_effect 17, AI_sub_81DAA54 + if_effect 18, AI_sub_81DAA84 + if_effect 19, AI_sub_81DAAD6 + if_effect 20, AI_sub_81DAB0D + if_effect 21, AI_sub_81DAB23 + if_effect 22, AI_sub_81DAB77 + if_effect 23, AI_sub_81DAB98 + if_effect 24, AI_sub_81DAC2C + if_effect 25, AI_sub_81DAC4D + if_effect 26, AI_sub_81DAD10 + if_effect 28, AI_sub_81DAD1A + if_effect 30, AI_sub_81DAD52 + if_effect 32, AI_sub_81DAD83 + if_effect 33, AI_sub_81DADDC + if_effect 35, AI_sub_81DAE1B + if_effect 37, AI_sub_81DAE4A + if_effect 38, AI_sub_81DAEAA + if_effect 39, AI_sub_81DB645 + if_effect 40, AI_sub_81DAEAB + if_effect 42, AI_sub_81DAEB5 + if_effect 43, AI_sub_81DAEEB + if_effect 49, AI_sub_81DAF1A + if_effect 50, AI_sub_81DA848 + if_effect 51, AI_sub_81DA883 + if_effect 52, AI_sub_81DA8E9 + if_effect 53, AI_sub_81DA8FF + if_effect 54, AI_sub_81DA93A + if_effect 55, AI_sub_81DA9A0 + if_effect 56, AI_sub_81DA9BA + if_effect 58, AI_sub_81DAA84 + if_effect 59, AI_sub_81DAAD6 + if_effect 60, AI_sub_81DAB0D + if_effect 61, AI_sub_81DAB23 + if_effect 62, AI_sub_81DAB77 + if_effect 63, AI_sub_81DAB98 + if_effect 64, AI_sub_81DAC2C + if_effect 65, AI_sub_81DAF3C + if_effect 66, AI_sub_81DAF6C + if_effect 67, AI_sub_81DAF7D + if_effect 70, AI_sub_81DAAF7 + if_effect 75, AI_sub_81DB645 + if_effect 78, AI_sub_81DAF9A + if_effect 79, AI_sub_81DAFBD + if_effect 80, AI_sub_81DB053 + if_effect 84, AI_sub_81DADDC + if_effect 86, AI_sub_81DB07B + if_effect 89, AI_sub_81DB09A + if_effect 90, AI_sub_81DB13B + if_effect 91, AI_sub_81DB1A3 + if_effect 92, AI_sub_81DB1CF + if_effect 94, AI_sub_81DB1D2 + if_effect 97, AI_sub_81DB1DB + if_effect 98, AI_sub_81DB1DE + if_effect 99, AI_sub_81DB214 + if_effect 102, AI_sub_81DB259 + if_effect 105, AI_sub_81DB270 + if_effect 106, AI_sub_81DAEB5 + if_effect 108, AI_sub_81DA9BA + if_effect 109, AI_sub_81DB293 + if_effect 111, AI_sub_81DB2E2 + if_effect 113, AI_sub_81DB3A3 + if_effect 116, AI_sub_81DB3D1 + if_effect 127, AI_sub_81DB3EF + if_effect -128, AI_sub_81DB48B + if_effect -124, AI_sub_81DAD69 + if_effect -123, AI_sub_81DAD69 + if_effect -122, AI_sub_81DAD69 + if_effect -120, AI_sub_81DB4C1 + if_effect -119, AI_sub_81DB500 + if_effect -114, AI_sub_81DB529 + if_effect -113, AI_sub_81DB538 + if_effect -112, AI_sub_81DB5A5 + if_effect -111, AI_sub_81DB645 + if_effect -105, AI_sub_81DB645 + if_effect -101, AI_sub_81DB669 + if_effect -99, AI_sub_81DAD83 + if_effect -98, AI_sub_81DB6F3 + if_effect -95, AI_sub_81DB6F6 + if_effect -94, AI_sub_81DAD83 + if_effect -92, AI_sub_81DB707 + if_effect -90, AI_sub_81DAF12 + if_effect -88, AI_sub_81DA752 + if_effect -87, AI_sub_81DB730 + if_effect -86, AI_sub_81DB73D + if_effect -85, AI_sub_81DB78C + if_effect -79, AI_sub_81DB79E + if_effect -78, AI_sub_81DB7E9 + if_effect -74, AI_sub_81DB820 + if_effect -73, AI_sub_81DB850 + if_effect -72, AI_sub_81DB883 + if_effect -71, AI_sub_81DB8A2 + if_effect -70, AI_sub_81DB8D0 + if_effect -68, AI_sub_81DB8E2 + if_effect -67, AI_sub_81DB8FA + if_effect -66, AI_sub_81DB926 + if_effect -65, AI_sub_81DB7E9 + if_effect -64, AI_sub_81DB94E + if_effect -63, AI_sub_81DB95F + if_effect -61, AI_sub_81DB96E + if_effect -56, AI_sub_81DAEEB + if_effect -55, AI_sub_81DB9D8 + if_effect -52, AI_sub_81DB9FE + if_effect -51, AI_sub_81DAAD6 + if_effect -50, AI_sub_81DA93A + if_effect -48, AI_sub_81DA883 + if_effect -47, AI_sub_81DAEEB + if_effect -46, AI_sub_81DBA26 + if_effect -45, AI_sub_81DA93A + if_effect -44, AI_sub_81DBA4C + end + +AI_sub_81DA71C:: @ 81DA71C + if_move_effect 0, 8, AI_sub_81DA72F + if_move_effect 0, 107, AI_sub_81DA72F + jump AI_sub_81DA737 + +AI_sub_81DA72F:: @ 81DA72F + if_random_less_than -128, AI_sub_81DA737 + score 1 + +AI_sub_81DA737:: @ 81DA737 + end + +AI_sub_81DA738:: @ 81DA738 + if_damage_bonus 20, AI_sub_81DA749 + if_damage_bonus 10, AI_sub_81DA749 + jump AI_sub_81DA751 + +AI_sub_81DA749:: @ 81DA749 + if_random_less_than 50, AI_sub_81DA751 + score -3 + +AI_sub_81DA751:: @ 81DA751 + end + +AI_sub_81DA752:: @ 81DA752 + if_stat_level_less_than 0, 7, 7, AI_sub_81DA76C + score -1 + if_stat_level_less_than 0, 7, 10, AI_sub_81DA76C + if_random_less_than -128, AI_sub_81DA76C + score -1 + +AI_sub_81DA76C:: @ 81DA76C + if_hp_less_than 1, 80, AI_sub_81DA784 + if_would_go_first 1, AI_sub_81DA784 + if_random_less_than 50, AI_sub_81DA7AF + jump AI_sub_81DA42A + +AI_sub_81DA784:: @ 81DA784 + if_hp_more_than 1, 50, AI_sub_81DA7A7 + if_random_less_than -128, AI_sub_81DA793 + score 1 + +AI_sub_81DA793:: @ 81DA793 + if_hp_more_than 1, 30, AI_sub_81DA7AF + if_random_less_than 50, AI_sub_81DA7AF + score 1 + jump AI_sub_81DA7AF + +AI_sub_81DA7A7:: @ 81DA7A7 + if_random_less_than 50, AI_sub_81DA7AF + score -1 + +AI_sub_81DA7AF:: @ 81DA7AF + end + +AI_sub_81DA7B0:: @ 81DA7B0 + if_damage_bonus 10, AI_sub_81DA7C1 + if_damage_bonus 20, AI_sub_81DA7C1 + jump AI_sub_81DA7C3 + +AI_sub_81DA7C1:: @ 81DA7C1 + score -1 + +AI_sub_81DA7C3:: @ 81DA7C3 + end + +AI_sub_81DA7C4:: @ 81DA7C4 + if_would_go_first 1, AI_sub_81DA7E2 + get_move 0 + if_not_in_words AI_words_81DA7F8, AI_sub_81DA7E2 + if_random_less_than -128, AI_sub_81DA7F5 + score 2 + jump AI_sub_81DA7F5 + +AI_sub_81DA7E2:: @ 81DA7E2 + get_move 0 + if_in_words AI_words_81DA7F8, AI_sub_81DA7F5 + if_random_less_than 80, AI_sub_81DA7F5 + score -1 + +AI_sub_81DA7F5:: @ 81DA7F5 + end + .space 2 + +AI_words_81DA7F8:: @ 81DA7F8 + .align 1 + .2byte 0x4F + .2byte 0x8E + .2byte 0x93 + .2byte 0x5F + .2byte 0x2F + .2byte 0x140 + .2byte 0x145 + .2byte 0x1C + .2byte 0x6C + .2byte 0x5C + .2byte 0xC + .2byte 0x20 + .2byte 0x5A + .2byte 0x149 + .2byte 0xEE + .2byte 0xB1 + .2byte 0x6D + .2byte 0xBA + .2byte 0x67 + .2byte 0xB2 + .2byte 0xB8 + .2byte 0x139 + .2byte 0x13F + .2byte 0x56 + .2byte 0x89 + .2byte 0x4D + .2byte 0xF7 + .2byte 0xDF + .2byte 0x3F + .2byte 0xF5 + .2byte 0xA8 + .2byte 0x157 + .2byte 0xD5 + .2byte 0xCF + .2byte 0x103 + .2byte 0x104 + .2byte 0x10F + .2byte 0x114 + .2byte 0x11D + .2byte 0xFFFF + +AI_sub_81DA848:: @ 81DA848 + if_stat_level_less_than 1, 1, 9, AI_sub_81DA85D + if_random_less_than 100, AI_sub_81DA86C + score -1 + jump AI_sub_81DA86C + +AI_sub_81DA85D:: @ 81DA85D + if_hp_not_equal 1, 100, AI_sub_81DA86C + if_random_less_than -128, AI_sub_81DA86C + score 2 + +AI_sub_81DA86C:: @ 81DA86C + if_hp_more_than 1, 70, AI_sub_81DA882 + if_hp_less_than 1, 40, AI_sub_81DA880 + if_random_less_than 40, AI_sub_81DA882 + +AI_sub_81DA880:: @ 81DA880 + score -2 + +AI_sub_81DA882:: @ 81DA882 + end + +AI_sub_81DA883:: @ 81DA883 + if_stat_level_less_than 1, 2, 9, AI_sub_81DA898 + if_random_less_than 100, AI_sub_81DA8A7 + score -1 + jump AI_sub_81DA8A7 + +AI_sub_81DA898:: @ 81DA898 + if_hp_not_equal 1, 100, AI_sub_81DA8A7 + if_random_less_than -128, AI_sub_81DA8A7 + score 2 + +AI_sub_81DA8A7:: @ 81DA8A7 + if_hp_less_than 1, 70, AI_sub_81DA8B4 + if_random_less_than -56, AI_sub_81DA8DE + +AI_sub_81DA8B4:: @ 81DA8B4 + if_hp_less_than 1, 40, AI_sub_81DA8DC + get_move 0 + get_move_power_from_result + if_equal 0, AI_sub_81DA8D6 + get_move 0 + get_move_type_from_result + if_not_in_bytes AI_bytes_81DA8DF, AI_sub_81DA8DC + if_random_less_than 60, AI_sub_81DA8DE + +AI_sub_81DA8D6:: @ 81DA8D6 + if_random_less_than 60, AI_sub_81DA8DE + +AI_sub_81DA8DC:: @ 81DA8DC + score -2 + +AI_sub_81DA8DE:: @ 81DA8DE + end + +AI_bytes_81DA8DF:: @ 81DA8DF + .byte 0 + .byte 1 + .byte 3 + .byte 4 + .byte 2 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 0xFF + +AI_sub_81DA8E9:: @ 81DA8E9 + if_would_go_first 1, AI_sub_81DA8F6 + score -3 + jump AI_sub_81DA8FE + +AI_sub_81DA8F6:: @ 81DA8F6 + if_random_less_than 70, AI_sub_81DA8FE + score 3 + +AI_sub_81DA8FE:: @ 81DA8FE + end + +AI_sub_81DA8FF:: @ 81DA8FF + if_stat_level_less_than 1, 4, 9, AI_sub_81DA914 + if_random_less_than 100, AI_sub_81DA923 + score -1 + jump AI_sub_81DA923 + +AI_sub_81DA914:: @ 81DA914 + if_hp_not_equal 1, 100, AI_sub_81DA923 + if_random_less_than -128, AI_sub_81DA923 + score 2 + +AI_sub_81DA923:: @ 81DA923 + if_hp_more_than 1, 70, AI_sub_81DA939 + if_hp_less_than 1, 40, AI_sub_81DA937 + if_random_less_than 70, AI_sub_81DA939 + +AI_sub_81DA937:: @ 81DA937 + score -2 + +AI_sub_81DA939:: @ 81DA939 + end + +AI_sub_81DA93A:: @ 81DA93A + if_stat_level_less_than 1, 5, 9, AI_sub_81DA94F + if_random_less_than 100, AI_sub_81DA95E + score -1 + jump AI_sub_81DA95E + +AI_sub_81DA94F:: @ 81DA94F + if_hp_not_equal 1, 100, AI_sub_81DA95E + if_random_less_than -128, AI_sub_81DA95E + score 2 + +AI_sub_81DA95E:: @ 81DA95E + if_hp_less_than 1, 70, AI_sub_81DA96B + if_random_less_than -56, AI_sub_81DA995 + +AI_sub_81DA96B:: @ 81DA96B + if_hp_less_than 1, 40, AI_sub_81DA993 + get_move 0 + get_move_power_from_result + if_equal 0, AI_sub_81DA98D + get_move 0 + get_move_type_from_result + if_in_bytes AI_bytes_81DA996, AI_sub_81DA993 + if_random_less_than 60, AI_sub_81DA995 + +AI_sub_81DA98D:: @ 81DA98D + if_random_less_than 60, AI_sub_81DA995 + +AI_sub_81DA993:: @ 81DA993 + score -2 + +AI_sub_81DA995:: @ 81DA995 + end + +AI_bytes_81DA996:: @ 81DA996 + .byte 0 + .byte 1 + .byte 3 + .byte 4 + .byte 2 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 0xFF + +AI_sub_81DA9A0:: @ 81DA9A0 + if_stat_level_less_than 1, 6, 9, AI_sub_81DA9B0 + if_random_less_than 50, AI_sub_81DA9B0 + score -2 + +AI_sub_81DA9B0:: @ 81DA9B0 + if_hp_more_than 1, 70, AI_sub_81DA9B9 + score -2 + +AI_sub_81DA9B9:: @ 81DA9B9 + end + +AI_sub_81DA9BA:: @ 81DA9BA + if_hp_less_than 1, 90, AI_sub_81DA9C9 + if_random_less_than 100, AI_sub_81DA9C9 + score 3 + +AI_sub_81DA9C9:: @ 81DA9C9 + if_stat_level_less_than 1, 7, 9, AI_sub_81DA9D9 + if_random_less_than -128, AI_sub_81DA9D9 + score -1 + +AI_sub_81DA9D9:: @ 81DA9D9 + if_not_status 0, 128, AI_sub_81DA9F8 + if_hp_more_than 1, 50, AI_sub_81DA9F0 + if_random_less_than 80, AI_sub_81DA9F8 + +AI_sub_81DA9F0:: @ 81DA9F0 + if_random_less_than 50, AI_sub_81DA9F8 + score 3 + +AI_sub_81DA9F8:: @ 81DA9F8 + if_not_status3 0, 4, AI_sub_81DAA0A + if_random_less_than 70, AI_sub_81DAA0A + score 3 + +AI_sub_81DAA0A:: @ 81DAA0A + if_not_status3 1, 1024, AI_sub_81DAA1C + if_random_less_than -128, AI_sub_81DAA1C + score 2 + +AI_sub_81DAA1C:: @ 81DAA1C + if_not_status2 0, 268435456, AI_sub_81DAA2E + if_random_less_than 70, AI_sub_81DAA2E + score 3 + +AI_sub_81DAA2E:: @ 81DAA2E + if_hp_more_than 1, 70, AI_sub_81DAA53 + if_stat_level_equal 1, 7, 6, AI_sub_81DAA53 + if_hp_less_than 1, 40, AI_sub_81DAA51 + if_hp_less_than 0, 40, AI_sub_81DAA51 + if_random_less_than 70, AI_sub_81DAA53 + +AI_sub_81DAA51:: @ 81DAA51 + score -2 + +AI_sub_81DAA53:: @ 81DAA53 + end + +AI_sub_81DAA54:: @ 81DAA54 + if_stat_level_more_than 0, 7, 10, AI_sub_81DAA79 + if_stat_level_less_than 1, 6, 2, AI_sub_81DAA79 + if_stat_level_more_than 0, 7, 8, AI_sub_81DAA7B + if_stat_level_less_than 1, 6, 4, AI_sub_81DAA7B + jump AI_sub_81DAA83 + +AI_sub_81DAA79:: @ 81DAA79 + score 1 + +AI_sub_81DAA7B:: @ 81DAA7B + if_random_less_than 100, AI_sub_81DAA83 + score 1 + +AI_sub_81DAA83:: @ 81DAA83 + end + +AI_sub_81DAA84:: @ 81DAA84 + if_stat_level_equal 0, 1, 6, AI_sub_81DAAA7 + score -1 + if_hp_more_than 1, 90, AI_sub_81DAA97 + score -1 + +AI_sub_81DAA97:: @ 81DAA97 + if_stat_level_more_than 0, 1, 3, AI_sub_81DAAA7 + if_random_less_than 50, AI_sub_81DAAA7 + score -2 + +AI_sub_81DAAA7:: @ 81DAAA7 + if_hp_more_than 0, 70, AI_sub_81DAAB0 + score -2 + +AI_sub_81DAAB0:: @ 81DAAB0 + get_type 0 + if_in_bytes AI_bytes_81DAACF, AI_sub_81DAACE + get_type 2 + if_in_bytes AI_bytes_81DAACF, AI_sub_81DAACE + if_random_less_than 50, AI_sub_81DAACE + score -2 + +AI_sub_81DAACE:: @ 81DAACE + end + +AI_bytes_81DAACF:: @ 81DAACF + .byte 0 + .byte 1 + .byte 4 + .byte 5 + .byte 6 + .byte 8 + .byte 0xFF + +AI_sub_81DAAD6:: @ 81DAAD6 + if_hp_less_than 1, 70, AI_sub_81DAAE5 + if_stat_level_more_than 0, 2, 3, AI_sub_81DAAED + +AI_sub_81DAAE5:: @ 81DAAE5 + if_random_less_than 50, AI_sub_81DAAED + score -2 + +AI_sub_81DAAED:: @ 81DAAED + if_hp_more_than 0, 70, AI_sub_81DAAF6 + score -2 + +AI_sub_81DAAF6:: @ 81DAAF6 + end + +AI_sub_81DAAF7:: @ 81DAAF7 + if_move 196, AI_sub_81DAB0D + if_move 317, AI_sub_81DAB0D + if_move 341, AI_sub_81DAB0D + end + +AI_sub_81DAB0D:: @ 81DAB0D + if_would_go_first 1, AI_sub_81DAB1A + score -3 + jump AI_sub_81DAB22 + +AI_sub_81DAB1A:: @ 81DAB1A + if_random_less_than 70, AI_sub_81DAB22 + score 2 + +AI_sub_81DAB22:: @ 81DAB22 + end + +AI_sub_81DAB23:: @ 81DAB23 + if_stat_level_equal 0, 1, 6, AI_sub_81DAB46 + score -1 + if_hp_more_than 1, 90, AI_sub_81DAB36 + score -1 + +AI_sub_81DAB36:: @ 81DAB36 + if_stat_level_more_than 0, 4, 3, AI_sub_81DAB46 + if_random_less_than 50, AI_sub_81DAB46 + score -2 + +AI_sub_81DAB46:: @ 81DAB46 + if_hp_more_than 0, 70, AI_sub_81DAB4F + score -2 + +AI_sub_81DAB4F:: @ 81DAB4F + get_type 0 + if_in_bytes AI_bytes_81DAB6E, AI_sub_81DAB6D + get_type 2 + if_in_bytes AI_bytes_81DAB6E, AI_sub_81DAB6D + if_random_less_than 50, AI_sub_81DAB6D + score -2 + +AI_sub_81DAB6D:: @ 81DAB6D + end + +AI_bytes_81DAB6E:: @ 81DAB6E + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 17 + .byte 0xFF + +AI_sub_81DAB77:: @ 81DAB77 + if_hp_less_than 1, 70, AI_sub_81DAB86 + if_stat_level_more_than 0, 5, 3, AI_sub_81DAB8E + +AI_sub_81DAB86:: @ 81DAB86 + if_random_less_than 50, AI_sub_81DAB8E + score -2 + +AI_sub_81DAB8E:: @ 81DAB8E + if_hp_more_than 0, 70, AI_sub_81DAB97 + score -2 + +AI_sub_81DAB97:: @ 81DAB97 + end + +AI_sub_81DAB98:: @ 81DAB98 + if_hp_less_than 1, 70, AI_sub_81DABA6 + if_hp_more_than 0, 70, AI_sub_81DABAE + +AI_sub_81DABA6:: @ 81DABA6 + if_random_less_than 100, AI_sub_81DABAE + score -1 + +AI_sub_81DABAE:: @ 81DABAE + if_stat_level_more_than 1, 6, 4, AI_sub_81DABBE + if_random_less_than 80, AI_sub_81DABBE + score -2 + +AI_sub_81DABBE:: @ 81DABBE + if_not_status 0, 128, AI_sub_81DABD0 + if_random_less_than 70, AI_sub_81DABD0 + score 2 + +AI_sub_81DABD0:: @ 81DABD0 + if_not_status3 0, 4, AI_sub_81DABE2 + if_random_less_than 70, AI_sub_81DABE2 + score 2 + +AI_sub_81DABE2:: @ 81DABE2 + if_not_status3 1, 1024, AI_sub_81DABF4 + if_random_less_than -128, AI_sub_81DABF4 + score 1 + +AI_sub_81DABF4:: @ 81DABF4 + if_not_status2 0, 268435456, AI_sub_81DAC06 + if_random_less_than 70, AI_sub_81DAC06 + score 2 + +AI_sub_81DAC06:: @ 81DAC06 + if_hp_more_than 1, 70, AI_sub_81DAC2B + if_stat_level_equal 0, 6, 6, AI_sub_81DAC2B + if_hp_less_than 1, 40, AI_sub_81DAC29 + if_hp_less_than 0, 40, AI_sub_81DAC29 + if_random_less_than 70, AI_sub_81DAC2B + +AI_sub_81DAC29:: @ 81DAC29 + score -2 + +AI_sub_81DAC2B:: @ 81DAC2B + end + +AI_sub_81DAC2C:: @ 81DAC2C + if_hp_less_than 1, 70, AI_sub_81DAC3B + if_stat_level_more_than 0, 7, 3, AI_sub_81DAC43 + +AI_sub_81DAC3B:: @ 81DAC3B + if_random_less_than 50, AI_sub_81DAC43 + score -2 + +AI_sub_81DAC43:: @ 81DAC43 + if_hp_more_than 0, 70, AI_sub_81DAC4C + score -2 + +AI_sub_81DAC4C:: @ 81DAC4C + end + +AI_sub_81DAC4D:: @ 81DAC4D + if_stat_level_more_than 1, 1, 8, AI_sub_81DACA2 + if_stat_level_more_than 1, 2, 8, AI_sub_81DACA2 + if_stat_level_more_than 1, 4, 8, AI_sub_81DACA2 + if_stat_level_more_than 1, 5, 8, AI_sub_81DACA2 + if_stat_level_more_than 1, 7, 8, AI_sub_81DACA2 + if_stat_level_less_than 0, 1, 4, AI_sub_81DACA2 + if_stat_level_less_than 0, 2, 4, AI_sub_81DACA2 + if_stat_level_less_than 0, 4, 4, AI_sub_81DACA2 + if_stat_level_less_than 0, 5, 4, AI_sub_81DACA2 + if_stat_level_less_than 0, 6, 4, AI_sub_81DACA2 + jump AI_sub_81DACAA + +AI_sub_81DACA2:: @ 81DACA2 + if_random_less_than 50, AI_sub_81DACAA + score -3 + +AI_sub_81DACAA:: @ 81DACAA + if_stat_level_more_than 0, 1, 8, AI_sub_81DAD07 + if_stat_level_more_than 0, 2, 8, AI_sub_81DAD07 + if_stat_level_more_than 0, 4, 8, AI_sub_81DAD07 + if_stat_level_more_than 0, 5, 8, AI_sub_81DAD07 + if_stat_level_more_than 0, 7, 8, AI_sub_81DAD07 + if_stat_level_less_than 1, 1, 4, AI_sub_81DAD07 + if_stat_level_less_than 1, 2, 4, AI_sub_81DAD07 + if_stat_level_less_than 1, 4, 4, AI_sub_81DAD07 + if_stat_level_less_than 1, 5, 4, AI_sub_81DAD07 + if_stat_level_less_than 1, 6, 4, AI_sub_81DAD07 + if_random_less_than 50, AI_sub_81DAD0F + score -1 + jump AI_sub_81DAD0F + +AI_sub_81DAD07:: @ 81DAD07 + if_random_less_than 50, AI_sub_81DAD0F + score 3 + +AI_sub_81DAD0F:: @ 81DAD0F + end + +AI_sub_81DAD10:: @ 81DAD10 + if_hp_more_than 1, 90, AI_sub_81DAD19 + score -2 + +AI_sub_81DAD19:: @ 81DAD19 + end + +AI_sub_81DAD1A:: @ 81DAD1A + if_stat_level_more_than 0, 1, 8, AI_sub_81DAD49 + if_stat_level_more_than 0, 2, 8, AI_sub_81DAD49 + if_stat_level_more_than 0, 4, 8, AI_sub_81DAD49 + if_stat_level_more_than 0, 5, 8, AI_sub_81DAD49 + if_stat_level_more_than 0, 7, 8, AI_sub_81DAD49 + score -3 + jump AI_sub_81DAD51 + +AI_sub_81DAD49:: @ 81DAD49 + if_random_less_than -128, AI_sub_81DAD51 + score 2 + +AI_sub_81DAD51:: @ 81DAD51 + end + +AI_sub_81DAD52:: @ 81DAD52 + if_hp_more_than 1, 90, AI_sub_81DAD5B + score -2 + +AI_sub_81DAD5B:: @ 81DAD5B + get_turn_count + if_equal 0, AI_sub_81DAD68 + if_random_less_than -56, AI_sub_81DA427 + +AI_sub_81DAD68:: @ 81DAD68 + end + +AI_sub_81DAD69:: @ 81DAD69 + get_weather + if_equal 3, AI_sub_81DAD81 + if_equal 1, AI_sub_81DAD81 + if_equal 2, AI_sub_81DAD81 + jump AI_sub_81DAD83 + +AI_sub_81DAD81:: @ 81DAD81 + score -2 + +AI_sub_81DAD83:: @ 81DAD83 + if_hp_equal 1, 100, AI_sub_81DADAB + if_would_go_first 1, AI_sub_81DADB2 + score -8 + jump AI_sub_81DADDB + if_hp_less_than 1, 50, AI_sub_81DADC6 + if_hp_more_than 1, 80, AI_sub_81DADAB + if_random_less_than 70, AI_sub_81DADC6 + +AI_sub_81DADAB:: @ 81DADAB + score -3 + jump AI_sub_81DADDB + +AI_sub_81DADB2:: @ 81DADB2 + if_hp_less_than 1, 70, AI_sub_81DADC6 + if_random_less_than 30, AI_sub_81DADC6 + score -3 + jump AI_sub_81DADDB + +AI_sub_81DADC6:: @ 81DADC6 + if_not_move_effect 0, -61, AI_sub_81DADD3 + if_random_less_than 100, AI_sub_81DADDB + +AI_sub_81DADD3:: @ 81DADD3 + if_random_less_than 20, AI_sub_81DADDB + score 2 + +AI_sub_81DADDB:: @ 81DADDB + end + +AI_sub_81DADDC:: @ 81DADDC + if_user_cant_damage AI_sub_81DADFF + if_hp_more_than 1, 50, AI_sub_81DADF0 + if_random_less_than 50, AI_sub_81DADF0 + score -3 + +AI_sub_81DADF0:: @ 81DADF0 + if_hp_more_than 0, 50, AI_sub_81DADFF + if_random_less_than 50, AI_sub_81DADFF + score -3 + +AI_sub_81DADFF:: @ 81DADFF + if_move_effect 1, 14, AI_sub_81DAE12 + if_move_effect 1, 111, AI_sub_81DAE12 + jump AI_sub_81DAE1A + +AI_sub_81DAE12:: @ 81DAE12 + if_random_less_than 60, AI_sub_81DAE1A + score 2 + +AI_sub_81DAE1A:: @ 81DAE1A + end + +AI_sub_81DAE1B:: @ 81DAE1B + if_hp_less_than 1, 50, AI_sub_81DAE3E + get_type 0 + if_in_bytes AI_bytes_81DAE41, AI_sub_81DAE40 + get_type 2 + if_in_bytes AI_bytes_81DAE41, AI_sub_81DAE40 + if_random_less_than 50, AI_sub_81DAE40 + +AI_sub_81DAE3E:: @ 81DAE3E + score -2 + +AI_sub_81DAE40:: @ 81DAE40 + end + +AI_bytes_81DAE41:: @ 81DAE41 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 17 + .byte 0xFF + +AI_sub_81DAE4A:: @ 81DAE4A + if_would_go_first 1, AI_sub_81DAE79 + if_hp_not_equal 1, 100, AI_sub_81DAE5E + score -8 + jump AI_sub_81DAEA9 + +AI_sub_81DAE5E:: @ 81DAE5E + if_hp_less_than 1, 40, AI_sub_81DAE94 + if_hp_more_than 1, 50, AI_sub_81DAE72 + if_random_less_than 70, AI_sub_81DAE94 + +AI_sub_81DAE72:: @ 81DAE72 + score -3 + jump AI_sub_81DAEA9 + +AI_sub_81DAE79:: @ 81DAE79 + if_hp_less_than 1, 60, AI_sub_81DAE94 + if_hp_more_than 1, 70, AI_sub_81DAE8D + if_random_less_than 50, AI_sub_81DAE94 + +AI_sub_81DAE8D:: @ 81DAE8D + score -3 + jump AI_sub_81DAEA9 + +AI_sub_81DAE94:: @ 81DAE94 + if_not_move_effect 0, -61, AI_sub_81DAEA1 + if_random_less_than 50, AI_sub_81DAEA9 + +AI_sub_81DAEA1:: @ 81DAEA1 + if_random_less_than 10, AI_sub_81DAEA9 + score 3 + +AI_sub_81DAEA9:: @ 81DAEA9 + end + +AI_sub_81DAEAA:: @ 81DAEAA + end + +AI_sub_81DAEAB:: @ 81DAEAB + if_hp_more_than 0, 50, AI_sub_81DAEB4 + score -1 + +AI_sub_81DAEB4:: @ 81DAEB4 + end + +AI_sub_81DAEB5:: @ 81DAEB5 + if_status 0, 128, AI_sub_81DAEE2 + if_status2 0, 268435456, AI_sub_81DAEE2 + if_status3 0, 32, AI_sub_81DAEE2 + if_status2 0, 983040, AI_sub_81DAEE2 + jump AI_sub_81DAEEA + +AI_sub_81DAEE2:: @ 81DAEE2 + if_random_less_than -128, AI_sub_81DAEEA + score 1 + +AI_sub_81DAEEA:: @ 81DAEEA + end + +AI_sub_81DAEEB:: @ 81DAEEB + if_damage_bonus 10, AI_sub_81DAF11 + if_damage_bonus 20, AI_sub_81DAF11 + if_damage_bonus 80, AI_sub_81DAF09 + if_damage_bonus -96, AI_sub_81DAF09 + if_random_less_than -128, AI_sub_81DAF11 + +AI_sub_81DAF09:: @ 81DAF09 + if_random_less_than -128, AI_sub_81DAF11 + score 1 + +AI_sub_81DAF11:: @ 81DAF11 + end + +AI_sub_81DAF12:: @ 81DAF12 + if_random_less_than -128, AI_sub_81DAF1A + score 1 + +AI_sub_81DAF1A:: @ 81DAF1A + if_hp_more_than 0, 70, AI_sub_81DAF3B + if_random_less_than -128, AI_sub_81DAF29 + score -1 + +AI_sub_81DAF29:: @ 81DAF29 + if_hp_more_than 0, 50, AI_sub_81DAF3B + score -1 + if_hp_more_than 0, 30, AI_sub_81DAF3B + score -1 + +AI_sub_81DAF3B:: @ 81DAF3B + end + +AI_sub_81DAF3C:: @ 81DAF3C + if_hp_less_than 1, 50, AI_sub_81DAF5F + get_type 0 + if_in_bytes AI_bytes_81DAF62, AI_sub_81DAF61 + get_type 2 + if_in_bytes AI_bytes_81DAF62, AI_sub_81DAF61 + if_random_less_than 50, AI_sub_81DAF61 + +AI_sub_81DAF5F:: @ 81DAF5F + score -2 + +AI_sub_81DAF61:: @ 81DAF61 + end + +AI_bytes_81DAF62:: @ 81DAF62 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 0xFF + +AI_sub_81DAF6C:: @ 81DAF6C + if_hp_less_than 1, 50, AI_sub_81DAF7A + if_hp_more_than 0, 50, AI_sub_81DAF7C + +AI_sub_81DAF7A:: @ 81DAF7A + score -1 + +AI_sub_81DAF7C:: @ 81DAF7C + end + +AI_sub_81DAF7D:: @ 81DAF7D + if_would_go_first 1, AI_sub_81DAF91 + if_hp_more_than 1, 70, AI_sub_81DAF99 + score -1 + jump AI_sub_81DAF99 + +AI_sub_81DAF91:: @ 81DAF91 + if_random_less_than 20, AI_sub_81DAF99 + score 3 + +AI_sub_81DAF99:: @ 81DAF99 + end + +AI_sub_81DAF9A:: @ 81DAF9A + if_would_go_first 1, AI_sub_81DAFBC + if_hp_more_than 1, 60, AI_sub_81DAFBC + if_hp_less_than 1, 40, AI_sub_81DAFB4 + if_random_less_than -76, AI_sub_81DAFBC + +AI_sub_81DAFB4:: @ 81DAFB4 + if_random_less_than 50, AI_sub_81DAFBC + score -1 + +AI_sub_81DAFBC:: @ 81DAFBC + end + +AI_sub_81DAFBD:: @ 81DAFBD + if_hp_more_than 1, 90, AI_sub_81DAFEA + if_hp_more_than 1, 70, AI_sub_81DAFE2 + if_hp_more_than 1, 50, AI_sub_81DAFDA + if_random_less_than 100, AI_sub_81DAFDA + score -1 + +AI_sub_81DAFDA:: @ 81DAFDA + if_random_less_than 100, AI_sub_81DAFE2 + score -1 + +AI_sub_81DAFE2:: @ 81DAFE2 + if_random_less_than 100, AI_sub_81DAFEA + score -1 + +AI_sub_81DAFEA:: @ 81DAFEA + if_would_go_first 1, AI_sub_81DB052 + get_move 0 + get_move_effect_from_result + if_equal 1, AI_sub_81DB022 + if_equal 33, AI_sub_81DB022 + if_equal 66, AI_sub_81DB022 + if_equal 67, AI_sub_81DB022 + if_equal -89, AI_sub_81DB022 + if_equal 49, AI_sub_81DB031 + if_equal 84, AI_sub_81DB040 + jump AI_sub_81DB052 + +AI_sub_81DB022:: @ 81DB022 + if_not_status 0, 255, AI_sub_81DB04A + jump AI_sub_81DB052 + +AI_sub_81DB031:: @ 81DB031 + if_not_status2 0, 7, AI_sub_81DB04A + jump AI_sub_81DB052 + +AI_sub_81DB040:: @ 81DB040 + if_status3 0, 4, AI_sub_81DB052 + +AI_sub_81DB04A:: @ 81DB04A + if_random_less_than 100, AI_sub_81DB052 + score 1 + +AI_sub_81DB052:: @ 81DB052 + end + +AI_sub_81DB053:: @ 81DB053 + if_damage_bonus 10, AI_sub_81DB078 + if_damage_bonus 20, AI_sub_81DB078 + if_would_go_first 1, AI_sub_81DB071 + if_hp_more_than 1, 40, AI_sub_81DB078 + jump AI_sub_81DB07A + +AI_sub_81DB071:: @ 81DB071 + if_hp_less_than 1, 60, AI_sub_81DB07A + +AI_sub_81DB078:: @ 81DB078 + score -1 + +AI_sub_81DB07A:: @ 81DB07A + end + +AI_sub_81DB07B:: @ 81DB07B + if_would_go_first 1, AI_sub_81DB099 + get_move 0 + get_move_power_from_result + if_equal 0, AI_sub_81DB091 + score 1 + jump AI_sub_81DB099 + +AI_sub_81DB091:: @ 81DB091 + if_random_less_than 100, AI_sub_81DB099 + score -1 + +AI_sub_81DB099:: @ 81DB099 + end + +AI_sub_81DB09A:: @ 81DB09A + if_status 0, 7, AI_sub_81DB12E + if_status2 0, 983040, AI_sub_81DB12E + if_status2 0, 7, AI_sub_81DB12E + if_hp_more_than 1, 30, AI_sub_81DB0C7 + if_random_less_than 10, AI_sub_81DB0C7 + score -1 + +AI_sub_81DB0C7:: @ 81DB0C7 + if_hp_more_than 1, 50, AI_sub_81DB0D6 + if_random_less_than 100, AI_sub_81DB0D6 + score -1 + +AI_sub_81DB0D6:: @ 81DB0D6 + get_move 0 + get_move_power_from_result + if_equal 0, AI_sub_81DB105 + if_not_taunted AI_sub_81DB0EC + if_random_less_than 100, AI_sub_81DB0EC + score 1 + +AI_sub_81DB0EC:: @ 81DB0EC + get_move 0 + get_move_type_from_result + if_not_in_bytes AI_bytes_81DB131, AI_sub_81DB12E + if_random_less_than 100, AI_sub_81DB130 + score 1 + jump AI_sub_81DB130 + +AI_sub_81DB105:: @ 81DB105 + if_not_taunted AI_sub_81DB112 + if_random_less_than 100, AI_sub_81DB112 + score 1 + +AI_sub_81DB112:: @ 81DB112 + get_type 0 + if_in_bytes AI_bytes_81DB131, AI_sub_81DB130 + get_type 2 + if_in_bytes AI_bytes_81DB131, AI_sub_81DB130 + if_random_less_than 50, AI_sub_81DB130 + +AI_sub_81DB12E:: @ 81DB12E + score -1 + +AI_sub_81DB130:: @ 81DB130 + end + +AI_bytes_81DB131:: @ 81DB131 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 0xFF + +AI_sub_81DB13B:: @ 81DB13B + if_last_move_did_damage 0, 0, AI_sub_81DB154 + if_would_go_first 1, AI_sub_81DB161 + get_move 0 + get_move_effect_from_result + if_not_in_bytes AI_bytes_81DB164, AI_sub_81DB161 + +AI_sub_81DB154:: @ 81DB154 + if_random_less_than 30, AI_sub_81DB163 + score 3 + jump AI_sub_81DB163 + +AI_sub_81DB161:: @ 81DB161 + score -2 + +AI_sub_81DB163:: @ 81DB163 + end + +AI_bytes_81DB164:: @ 81DB164 + .byte 8 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 25 + .byte 28 + .byte 30 + .byte 33 + .byte 35 + .byte 37 + .byte 40 + .byte 54 + .byte 49 + .byte 66 + .byte 67 + .byte 84 + .byte 85 + .byte 50 + .byte 90 + .byte 93 + .byte 94 + .byte 102 + .byte 106 + .byte 107 + .byte 111 + .byte 191 + .byte 113 + .byte 114 + .byte 115 + .byte 116 + .byte 118 + .byte 120 + .byte 124 + .byte 136 + .byte 137 + .byte 142 + .byte 143 + .byte 148 + .byte 158 + .byte 160 + .byte 161 + .byte 162 + .byte 164 + .byte 165 + .byte 167 + .byte 172 + .byte 174 + .byte 177 + .byte 178 + .byte 181 + .byte 184 + .byte 188 + .byte 191 + .byte 192 + .byte 193 + .byte 194 + .byte 199 + .byte 201 + .byte 210 + .byte 212 + .byte 213 + .byte 0xFF + +AI_sub_81DB1A3:: @ 81DB1A3 + if_hp_less_than 0, 80, AI_sub_81DB1CC + if_would_go_first 1, AI_sub_81DB1BE + if_hp_more_than 1, 40, AI_sub_81DB1CC + score 1 + jump AI_sub_81DB1CE + +AI_sub_81DB1BE:: @ 81DB1BE + if_hp_more_than 1, 60, AI_sub_81DB1CC + score 1 + jump AI_sub_81DB1CE + +AI_sub_81DB1CC:: @ 81DB1CC + score -1 + +AI_sub_81DB1CE:: @ 81DB1CE + end + +AI_sub_81DB1CF:: @ 81DB1CF + score 2 + end + +AI_sub_81DB1D2:: @ 81DB1D2 + if_random_less_than -128, AI_sub_81DB1DA + score 2 + +AI_sub_81DB1DA:: @ 81DB1DA + end + +AI_sub_81DB1DB:: @ 81DB1DB + score 2 + end + +AI_sub_81DB1DE:: @ 81DB1DE + score -1 + if_would_go_first 1, AI_sub_81DB213 + if_hp_more_than 1, 70, AI_sub_81DB213 + if_random_less_than -128, AI_sub_81DB1F5 + score 1 + +AI_sub_81DB1F5:: @ 81DB1F5 + if_hp_more_than 1, 50, AI_sub_81DB213 + if_random_less_than -128, AI_sub_81DB204 + score 1 + +AI_sub_81DB204:: @ 81DB204 + if_hp_more_than 1, 30, AI_sub_81DB213 + if_random_less_than 100, AI_sub_81DB213 + score 2 + +AI_sub_81DB213:: @ 81DB213 + end + +AI_sub_81DB214:: @ 81DB214 + if_would_go_first 1, AI_sub_81DB234 + if_hp_more_than 1, 33, AI_sub_81DB256 + if_hp_more_than 1, 20, AI_sub_81DB258 + if_hp_less_than 1, 8, AI_sub_81DB247 + jump AI_sub_81DB249 + +AI_sub_81DB234:: @ 81DB234 + if_hp_more_than 1, 60, AI_sub_81DB256 + if_hp_more_than 1, 40, AI_sub_81DB258 + jump AI_sub_81DB249 + +AI_sub_81DB247:: @ 81DB247 + score 1 + +AI_sub_81DB249:: @ 81DB249 + if_random_less_than 100, AI_sub_81DB258 + score 1 + jump AI_sub_81DB258 + +AI_sub_81DB256:: @ 81DB256 + score -1 + +AI_sub_81DB258:: @ 81DB258 + end + +AI_sub_81DB259:: @ 81DB259 + if_status 0, 255, AI_sub_81DB26F + if_status_in_party 0, 255, AI_sub_81DB26F + score -5 + +AI_sub_81DB26F:: @ 81DB26F + end + +AI_sub_81DB270:: @ 81DB270 + get_hold_effect 0 + if_not_in_bytes AI_bytes_81DB28B, AI_sub_81DB288 + if_random_less_than 50, AI_sub_81DB28A + score 1 + jump AI_sub_81DB28A + +AI_sub_81DB288:: @ 81DB288 + score -2 + +AI_sub_81DB28A:: @ 81DB28A + end + +AI_bytes_81DB28B:: @ 81DB28B + .byte 3 + .byte 9 + .byte 1 + .byte 22 + .byte 43 + .byte 45 + .byte 65 + .byte 0xFF + +AI_sub_81DB293:: @ 81DB293 + get_type 1 + if_equal 7, AI_sub_81DB2D8 + get_type 3 + if_equal 7, AI_sub_81DB2D8 + if_stat_level_more_than 1, 2, 9, AI_sub_81DB2E1 + if_random_less_than -128, AI_sub_81DB2B3 + score 1 + +AI_sub_81DB2B3:: @ 81DB2B3 + if_stat_level_more_than 1, 2, 7, AI_sub_81DB2E1 + if_random_less_than -128, AI_sub_81DB2C3 + score 1 + +AI_sub_81DB2C3:: @ 81DB2C3 + if_stat_level_more_than 1, 2, 6, AI_sub_81DB2E1 + if_random_less_than -128, AI_sub_81DB2E1 + score 1 + jump AI_sub_81DB2E1 + +AI_sub_81DB2D8:: @ 81DB2D8 + if_hp_more_than 1, 80, AI_sub_81DB2E1 + score -1 + +AI_sub_81DB2E1:: @ 81DB2E1 + end + +AI_sub_81DB2E2:: @ 81DB2E2 + get_protect_count 1 + if_more_than 1, AI_sub_81DB3A0 + if_status 1, 128, AI_sub_81DB397 + if_status2 1, 268435456, AI_sub_81DB397 + if_status3 1, 32, AI_sub_81DB397 + if_status2 1, 983040, AI_sub_81DB397 + if_status3 1, 4, AI_sub_81DB397 + if_status3 1, 6144, AI_sub_81DB397 + if_move_effect 0, 32, AI_sub_81DB397 + if_move_effect 0, -100, AI_sub_81DB397 + if_status 0, 128, AI_sub_81DB37E + if_status2 0, 268435456, AI_sub_81DB37E + if_status3 0, 32, AI_sub_81DB37E + if_status2 0, 983040, AI_sub_81DB37E + if_status3 0, 4, AI_sub_81DB37E + if_status3 0, 6144, AI_sub_81DB37E + get_move 0 + get_move_effect_from_result + if_not_equal 94, AI_sub_81DB37E + jump AI_sub_81DB380 + +AI_sub_81DB37E:: @ 81DB37E + score 2 + +AI_sub_81DB380:: @ 81DB380 + get_protect_count 1 + if_equal 0, AI_sub_81DB3A2 + score -1 + if_random_less_than -128, AI_sub_81DB3A2 + score -1 + jump AI_sub_81DB3A2 + +AI_sub_81DB397:: @ 81DB397 + get_move 0 + get_move_effect_from_result + if_not_equal 94, AI_sub_81DB3A2 + +AI_sub_81DB3A0:: @ 81DB3A0 + score -2 + +AI_sub_81DB3A2:: @ 81DB3A2 + end + +AI_sub_81DB3A3:: @ 81DB3A3 + get_type 1 + if_equal 7, AI_sub_81DB3C2 + get_type 3 + if_equal 7, AI_sub_81DB3C2 + if_stat_level_more_than 1, 7, 8, AI_sub_81DB3C8 + score -2 + jump AI_sub_81DB3D0 + +AI_sub_81DB3C2:: @ 81DB3C2 + if_random_less_than 80, AI_sub_81DB3D0 + +AI_sub_81DB3C8:: @ 81DB3C8 + if_random_less_than 80, AI_sub_81DB3D0 + score 2 + +AI_sub_81DB3D0:: @ 81DB3D0 + end + +AI_sub_81DB3D1:: @ 81DB3D1 + if_hp_less_than 1, 4, AI_sub_81DB3DF + if_hp_less_than 1, 35, AI_sub_81DB3E6 + +AI_sub_81DB3DF:: @ 81DB3DF + score -1 + jump AI_sub_81DB3EE + +AI_sub_81DB3E6:: @ 81DB3E6 + if_random_less_than 70, AI_sub_81DB3EE + score 1 + +AI_sub_81DB3EE:: @ 81DB3EE + end + +AI_sub_81DB3EF:: @ 81DB3EF + if_stat_level_more_than 1, 1, 8, AI_sub_81DB41C + if_stat_level_more_than 1, 2, 8, AI_sub_81DB41C + if_stat_level_more_than 1, 4, 8, AI_sub_81DB41C + if_stat_level_more_than 1, 5, 8, AI_sub_81DB41C + if_stat_level_more_than 1, 7, 8, AI_sub_81DB41C + jump AI_sub_81DB442 + +AI_sub_81DB41C:: @ 81DB41C + if_would_go_first 1, AI_sub_81DB42E + if_hp_more_than 1, 60, AI_sub_81DB48A + jump AI_sub_81DB435 + +AI_sub_81DB42E:: @ 81DB42E + if_hp_more_than 1, 70, AI_sub_81DB48A + +AI_sub_81DB435:: @ 81DB435 + if_random_less_than 80, AI_sub_81DB48A + score 2 + jump AI_sub_81DB48A + +AI_sub_81DB442:: @ 81DB442 + if_stat_level_more_than 1, 1, 7, AI_sub_81DB46F + if_stat_level_more_than 1, 2, 7, AI_sub_81DB46F + if_stat_level_more_than 1, 4, 7, AI_sub_81DB46F + if_stat_level_more_than 1, 5, 7, AI_sub_81DB46F + if_stat_level_more_than 1, 7, 7, AI_sub_81DB46F + jump AI_sub_81DB488 + +AI_sub_81DB46F:: @ 81DB46F + if_would_go_first 1, AI_sub_81DB481 + if_hp_more_than 1, 60, AI_sub_81DB488 + jump AI_sub_81DB48A + +AI_sub_81DB481:: @ 81DB481 + if_hp_less_than 1, 70, AI_sub_81DB48A + +AI_sub_81DB488:: @ 81DB488 + score -2 + +AI_sub_81DB48A:: @ 81DB48A + end + +AI_sub_81DB48B:: @ 81DB48B + is_first_turn 1 + if_not_equal 0, AI_sub_81DB4C0 + get_type 0 + if_equal 7, AI_sub_81DB4B8 + get_type 0 + if_equal 14, AI_sub_81DB4B8 + get_type 2 + if_equal 7, AI_sub_81DB4B8 + get_type 2 + if_equal 14, AI_sub_81DB4B8 + jump AI_sub_81DB4C0 + +AI_sub_81DB4B8:: @ 81DB4B8 + if_random_less_than -128, AI_sub_81DB4C0 + score 1 + +AI_sub_81DB4C0:: @ 81DB4C0 + end + +AI_sub_81DB4C1:: @ 81DB4C1 + if_would_go_first 0, AI_sub_81DB4CF + get_ability 1 + if_equal 33, AI_sub_81DB4F6 + +AI_sub_81DB4CF:: @ 81DB4CF + if_hp_less_than 1, 40, AI_sub_81DB4FD + get_weather + if_equal 3, AI_sub_81DB4F6 + if_equal 0, AI_sub_81DB4F6 + if_equal 2, AI_sub_81DB4F6 + get_ability 1 + if_equal 44, AI_sub_81DB4F6 + jump AI_sub_81DB4FF + +AI_sub_81DB4F6:: @ 81DB4F6 + score 1 + jump AI_sub_81DB4FF + +AI_sub_81DB4FD:: @ 81DB4FD + score -1 + +AI_sub_81DB4FF:: @ 81DB4FF + end + +AI_sub_81DB500:: @ 81DB500 + if_hp_less_than 1, 40, AI_sub_81DB526 + get_weather + if_equal 3, AI_sub_81DB51F + if_equal 1, AI_sub_81DB51F + if_equal 2, AI_sub_81DB51F + jump AI_sub_81DB528 + +AI_sub_81DB51F:: @ 81DB51F + score 1 + jump AI_sub_81DB528 + +AI_sub_81DB526:: @ 81DB526 + score -1 + +AI_sub_81DB528:: @ 81DB528 + end + +AI_sub_81DB529:: @ 81DB529 + if_hp_less_than 1, 90, AI_sub_81DB535 + jump AI_sub_81DB537 + +AI_sub_81DB535:: @ 81DB535 + score -2 + +AI_sub_81DB537:: @ 81DB537 + end + +AI_sub_81DB538:: @ 81DB538 + if_stat_level_more_than 0, 1, 8, AI_sub_81DB565 + if_stat_level_more_than 0, 2, 8, AI_sub_81DB565 + if_stat_level_more_than 0, 4, 8, AI_sub_81DB565 + if_stat_level_more_than 0, 5, 8, AI_sub_81DB565 + if_stat_level_more_than 0, 7, 8, AI_sub_81DB565 + jump AI_sub_81DB5A2 + +AI_sub_81DB565:: @ 81DB565 + if_stat_level_less_than 1, 1, 7, AI_sub_81DB59A + if_stat_level_less_than 1, 2, 7, AI_sub_81DB59A + if_stat_level_less_than 1, 4, 7, AI_sub_81DB59A + if_stat_level_less_than 1, 5, 7, AI_sub_81DB59A + if_stat_level_less_than 1, 7, 7, AI_sub_81DB598 + if_random_less_than 50, AI_sub_81DB5A4 + jump AI_sub_81DB5A2 + +AI_sub_81DB598:: @ 81DB598 + score 1 + +AI_sub_81DB59A:: @ 81DB59A + if_random_less_than -128, AI_sub_81DB5A4 + score 1 + +AI_sub_81DB5A2:: @ 81DB5A2 + score -2 + +AI_sub_81DB5A4:: @ 81DB5A4 + end + +AI_sub_81DB5A5:: @ 81DB5A5 + if_status 0, 7, AI_sub_81DB639 + if_status2 0, 983040, AI_sub_81DB639 + if_status2 0, 7, AI_sub_81DB639 + if_hp_more_than 1, 30, AI_sub_81DB5D2 + if_random_less_than 10, AI_sub_81DB5D2 + score -1 + +AI_sub_81DB5D2:: @ 81DB5D2 + if_hp_more_than 1, 50, AI_sub_81DB5E1 + if_random_less_than 100, AI_sub_81DB5E1 + score -1 + +AI_sub_81DB5E1:: @ 81DB5E1 + get_move 0 + get_move_power_from_result + if_equal 0, AI_sub_81DB610 + if_not_taunted AI_sub_81DB5F7 + if_random_less_than 100, AI_sub_81DB5F7 + score 1 + +AI_sub_81DB5F7:: @ 81DB5F7 + get_move 0 + get_move_type_from_result + if_not_in_bytes AI_bytes_81DB63C, AI_sub_81DB639 + if_random_less_than 100, AI_sub_81DB63B + score 1 + jump AI_sub_81DB63B + +AI_sub_81DB610:: @ 81DB610 + if_not_taunted AI_sub_81DB61D + if_random_less_than 100, AI_sub_81DB61D + score 1 + +AI_sub_81DB61D:: @ 81DB61D + get_type 0 + if_in_bytes AI_bytes_81DB63C, AI_sub_81DB63B + get_type 2 + if_in_bytes AI_bytes_81DB63C, AI_sub_81DB63B + if_random_less_than 50, AI_sub_81DB63B + +AI_sub_81DB639:: @ 81DB639 + score -1 + +AI_sub_81DB63B:: @ 81DB63B + end + +AI_bytes_81DB63C:: @ 81DB63C + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 17 + .byte 0xFF + +AI_sub_81DB645:: @ 81DB645 + if_damage_bonus 10, AI_sub_81DB666 + if_damage_bonus 20, AI_sub_81DB666 + if_move_effect 0, 111, AI_sub_81DB666 + if_hp_more_than 1, 38, AI_sub_81DB668 + score -1 + jump AI_sub_81DB668 + +AI_sub_81DB666:: @ 81DB666 + score -2 + +AI_sub_81DB668:: @ 81DB668 + end + +AI_sub_81DB669:: @ 81DB669 + if_not_move_effect 0, 111, AI_sub_81DB677 + score -1 + jump AI_sub_81DB6EE + +AI_sub_81DB677:: @ 81DB677 + if_status 0, 128, AI_sub_81DB6E6 + if_status2 0, 268435456, AI_sub_81DB6E6 + if_status3 0, 4, AI_sub_81DB6E6 + get_weather + if_equal 3, AI_sub_81DB6A7 + if_equal 2, AI_sub_81DB6C2 + jump AI_sub_81DB6D2 + +AI_sub_81DB6A7:: @ 81DB6A7 + get_type 1 + if_in_bytes AI_bytes_81DB6EF, AI_sub_81DB6E6 + get_type 3 + if_in_bytes AI_bytes_81DB6EF, AI_sub_81DB6E6 + jump AI_sub_81DB6D2 + +AI_sub_81DB6C2:: @ 81DB6C2 + get_type 1 + if_equal 15, AI_sub_81DB6E6 + get_type 3 + if_equal 15, AI_sub_81DB6E6 + +AI_sub_81DB6D2:: @ 81DB6D2 + if_would_go_first 1, AI_sub_81DB6EE + get_move 0 + get_move_effect_from_result + if_not_equal 94, AI_sub_81DB6E6 + jump AI_sub_81DB6EE + +AI_sub_81DB6E6:: @ 81DB6E6 + if_random_less_than 80, AI_sub_81DB6EE + score 1 + +AI_sub_81DB6EE:: @ 81DB6EE + end + +AI_bytes_81DB6EF:: @ 81DB6EF + .byte 4 + .byte 5 + .byte 8 + .byte 0xFF + +AI_sub_81DB6F3:: @ 81DB6F3 + score 2 + end + +AI_sub_81DB6F6:: @ 81DB6F6 + get_stockpile_count 1 + if_less_than 2, AI_sub_81DB706 + if_random_less_than 80, AI_sub_81DB706 + score 2 + +AI_sub_81DB706:: @ 81DB706 + end + +AI_sub_81DB707:: @ 81DB707 + if_hp_less_than 1, 40, AI_sub_81DB72D + get_weather + if_equal 0, AI_sub_81DB726 + if_equal 1, AI_sub_81DB726 + if_equal 2, AI_sub_81DB726 + jump AI_sub_81DB72F + +AI_sub_81DB726:: @ 81DB726 + score 1 + jump AI_sub_81DB72F + +AI_sub_81DB72D:: @ 81DB72D + score -1 + +AI_sub_81DB72F:: @ 81DB72F + end + +AI_sub_81DB730:: @ 81DB730 + if_not_status 0, 216, AI_sub_81DB73C + score 1 + +AI_sub_81DB73C:: @ 81DB73C + end + +AI_sub_81DB73D:: @ 81DB73D + if_damage_bonus 10, AI_sub_81DB77C + if_damage_bonus 20, AI_sub_81DB77C + if_status 0, 7, AI_sub_81DB789 + if_status2 0, 983040, AI_sub_81DB783 + if_status2 0, 7, AI_sub_81DB783 + is_first_turn 1 + if_not_equal 0, AI_sub_81DB78B + if_random_less_than 100, AI_sub_81DB78B + score 1 + jump AI_sub_81DB78B + +AI_sub_81DB77C:: @ 81DB77C + score -1 + jump AI_sub_81DB78B + +AI_sub_81DB783:: @ 81DB783 + if_random_less_than 100, AI_sub_81DB78B + +AI_sub_81DB789:: @ 81DB789 + score 1 + +AI_sub_81DB78B:: @ 81DB78B + end + +AI_sub_81DB78C:: @ 81DB78C + if_status 0, 64, AI_sub_81DB79B + jump AI_sub_81DB79D + +AI_sub_81DB79B:: @ 81DB79B + score 1 + +AI_sub_81DB79D:: @ 81DB79D + end + +AI_sub_81DB79E:: @ 81DB79E + get_hold_effect 1 + if_in_bytes AI_bytes_81DB7E7, AI_sub_81DB7B9 + if_in_bytes AI_bytes_81DB7DF, AI_sub_81DB7CB + +AI_sub_81DB7B2:: @ 81DB7B2 + score -3 + jump AI_sub_81DB7DE + +AI_sub_81DB7B9:: @ 81DB7B9 + get_hold_effect 0 + if_in_bytes AI_bytes_81DB7E7, AI_sub_81DB7B2 + score 5 + jump AI_sub_81DB7DE + +AI_sub_81DB7CB:: @ 81DB7CB + get_hold_effect 0 + if_in_bytes AI_bytes_81DB7DF, AI_sub_81DB7B2 + if_random_less_than 50, AI_sub_81DB7DE + score 2 + +AI_sub_81DB7DE:: @ 81DB7DE + end + +AI_bytes_81DB7DF:: @ 81DB7DF + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 24 + .byte 29 + .byte 0xFF + +AI_bytes_81DB7E7:: @ 81DB7E7 + .byte 29 + .byte 0xFF + +AI_sub_81DB7E9:: @ 81DB7E9 + get_ability 1 + if_in_bytes AI_bytes_81DB80F, AI_sub_81DB7FF + get_ability 0 + if_in_bytes AI_bytes_81DB80F, AI_sub_81DB806 + +AI_sub_81DB7FF:: @ 81DB7FF + score -1 + jump AI_sub_81DB80E + +AI_sub_81DB806:: @ 81DB806 + if_random_less_than 50, AI_sub_81DB80E + score 2 + +AI_sub_81DB80E:: @ 81DB80E + end + +AI_bytes_81DB80F:: @ 81DB80F + .byte 3 + .byte 4 + .byte 8 + .byte 9 + .byte 18 + .byte 25 + .byte 27 + .byte 33 + .byte 37 + .byte 44 + .byte 56 + .byte 61 + .byte 63 + .byte 74 + .byte 34 + .byte 19 + .byte 0xFF + +AI_sub_81DB820:: @ 81DB820 + if_damage_bonus 10, AI_sub_81DB84D + if_damage_bonus 20, AI_sub_81DB84D + if_stat_level_less_than 1, 1, 6, AI_sub_81DB84D + if_would_go_first 1, AI_sub_81DB846 + if_hp_more_than 1, 40, AI_sub_81DB84D + jump AI_sub_81DB84F + +AI_sub_81DB846:: @ 81DB846 + if_hp_less_than 1, 60, AI_sub_81DB84F + +AI_sub_81DB84D:: @ 81DB84D + score -1 + +AI_sub_81DB84F:: @ 81DB84F + end + +AI_sub_81DB850:: @ 81DB850 + if_hp_more_than 0, 30, AI_sub_81DB85F + if_random_less_than 100, AI_sub_81DB85F + score -1 + +AI_sub_81DB85F:: @ 81DB85F + is_first_turn 1 + if_equal 0, AI_sub_81DB87A + if_random_less_than -106, AI_sub_81DB882 + score 1 + jump AI_sub_81DB882 + if_random_less_than 50, AI_sub_81DB882 + +AI_sub_81DB87A:: @ 81DB87A + if_random_less_than 30, AI_sub_81DB882 + score -1 + +AI_sub_81DB882:: @ 81DB882 + end + +AI_sub_81DB883:: @ 81DB883 + get_item 1 + if_not_in_bytes AI_bytes_81DB89E, AI_sub_81DB89B + if_random_less_than 50, AI_sub_81DB89D + score 1 + jump AI_sub_81DB89D + +AI_sub_81DB89B:: @ 81DB89B + score -2 + +AI_sub_81DB89D:: @ 81DB89D + end + +AI_bytes_81DB89E:: @ 81DB89E + .byte 134 + .byte 141 + .byte 174 + .byte 0xFF + +AI_sub_81DB8A2:: @ 81DB8A2 + if_status 0, 7, AI_sub_81DB8CD + if_status2 0, 983040, AI_sub_81DB8CD + if_status2 0, 7, AI_sub_81DB8CD + if_random_less_than -76, AI_sub_81DB8CD + score 2 + jump AI_sub_81DB8CF + +AI_sub_81DB8CD:: @ 81DB8CD + score -2 + +AI_sub_81DB8CF:: @ 81DB8CF + end + +AI_sub_81DB8D0:: @ 81DB8D0 + if_status4 0, 1, AI_sub_81DB8DF + jump AI_sub_81DB8E1 + +AI_sub_81DB8DF:: @ 81DB8DF + score 1 + +AI_sub_81DB8E1:: @ 81DB8E1 + end + +AI_sub_81DB8E2:: @ 81DB8E2 + if_hp_less_than 0, 30, AI_sub_81DB8F9 + is_first_turn 1 + if_more_than 0, AI_sub_81DB8F9 + if_random_less_than -76, AI_sub_81DB8F9 + score 1 + +AI_sub_81DB8F9:: @ 81DB8F9 + end + +AI_sub_81DB8FA:: @ 81DB8FA + if_hp_less_than 0, 70, AI_sub_81DB923 + if_would_go_first 1, AI_sub_81DB915 + if_hp_more_than 1, 40, AI_sub_81DB923 + score 1 + jump AI_sub_81DB925 + +AI_sub_81DB915:: @ 81DB915 + if_hp_more_than 1, 50, AI_sub_81DB923 + score 1 + jump AI_sub_81DB925 + +AI_sub_81DB923:: @ 81DB923 + score -1 + +AI_sub_81DB925:: @ 81DB925 + end + +AI_sub_81DB926:: @ 81DB926 + if_damage_bonus 10, AI_sub_81DB94B + if_damage_bonus 20, AI_sub_81DB94B + if_would_go_first 1, AI_sub_81DB944 + if_hp_more_than 0, 50, AI_sub_81DB94D + jump AI_sub_81DB94B + +AI_sub_81DB944:: @ 81DB944 + if_hp_more_than 0, 70, AI_sub_81DB94D + +AI_sub_81DB94B:: @ 81DB94B + score -1 + +AI_sub_81DB94D:: @ 81DB94D + end + +AI_sub_81DB94E:: @ 81DB94E + is_first_turn 1 + if_more_than 0, AI_sub_81DB95E + if_random_less_than 100, AI_sub_81DB95E + score 2 + +AI_sub_81DB95E:: @ 81DB95E + end + +AI_sub_81DB95F:: @ 81DB95F + if_hp_less_than 0, 50, AI_sub_81DB96B + jump AI_sub_81DB96D + +AI_sub_81DB96B:: @ 81DB96B + score -1 + +AI_sub_81DB96D:: @ 81DB96D + end + +AI_sub_81DB96E:: @ 81DB96E + is_first_turn 1 + if_equal 1, AI_sub_81DB9B5 + if_random_less_than 30, AI_sub_81DB9D7 + if_would_go_first 1, AI_sub_81DB99B + if_hp_not_equal 1, 100, AI_sub_81DB9CF + if_hp_less_than 0, 70, AI_sub_81DB9CF + if_random_less_than 60, AI_sub_81DB9D7 + jump AI_sub_81DB9CF + +AI_sub_81DB99B:: @ 81DB99B + if_hp_more_than 0, 25, AI_sub_81DB9CF + if_move_effect 0, 32, AI_sub_81DB9B5 + if_move_effect 0, -100, AI_sub_81DB9B5 + jump AI_sub_81DB9C2 + +AI_sub_81DB9B5:: @ 81DB9B5 + if_random_less_than -106, AI_sub_81DB9D7 + score 2 + jump AI_sub_81DB9D7 + +AI_sub_81DB9C2:: @ 81DB9C2 + if_random_less_than -26, AI_sub_81DB9CF + score 1 + jump AI_sub_81DB9D7 + +AI_sub_81DB9CF:: @ 81DB9CF + if_random_less_than 30, AI_sub_81DB9D7 + score -2 + +AI_sub_81DB9D7:: @ 81DB9D7 + end + +AI_sub_81DB9D8:: @ 81DB9D8 + if_hp_less_than 1, 50, AI_sub_81DB9FB + get_type 0 + if_equal 13, AI_sub_81DB9F4 + get_type 2 + if_equal 13, AI_sub_81DB9F4 + jump AI_sub_81DB9FB + +AI_sub_81DB9F4:: @ 81DB9F4 + score 1 + jump AI_sub_81DB9FD + +AI_sub_81DB9FB:: @ 81DB9FB + score -1 + +AI_sub_81DB9FD:: @ 81DB9FD + end + +AI_sub_81DB9FE:: @ 81DB9FE + if_damage_bonus 10, AI_sub_81DBA23 + if_damage_bonus 20, AI_sub_81DBA23 + if_would_go_first 1, AI_sub_81DBA1C + if_hp_more_than 1, 60, AI_sub_81DBA25 + jump AI_sub_81DBA23 + +AI_sub_81DBA1C:: @ 81DBA1C + if_hp_more_than 1, 80, AI_sub_81DBA25 + +AI_sub_81DBA23:: @ 81DBA23 + score -1 + +AI_sub_81DBA25:: @ 81DBA25 + end + +AI_sub_81DBA26:: @ 81DBA26 + if_hp_less_than 1, 50, AI_sub_81DBA49 + get_type 0 + if_equal 10, AI_sub_81DBA42 + get_type 2 + if_equal 10, AI_sub_81DBA42 + jump AI_sub_81DBA49 + +AI_sub_81DBA42:: @ 81DBA42 + score 1 + jump AI_sub_81DBA4B + +AI_sub_81DBA49:: @ 81DBA49 + score -1 + +AI_sub_81DBA4B:: @ 81DBA4B + end + +AI_sub_81DBA4C:: @ 81DBA4C + if_would_go_first 1, AI_sub_81DBA66 + if_hp_more_than 1, 50, AI_sub_81DBA6E + if_random_less_than 70, AI_sub_81DBA6E + score -1 + jump AI_sub_81DBA6E + +AI_sub_81DBA66:: @ 81DBA66 + if_random_less_than -128, AI_sub_81DBA6E + score 1 + +AI_sub_81DBA6E:: @ 81DBA6E + end + +AI_CheckViability:: @ 81DBA6F + if_can_faint AI_sub_81DBA7C + is_most_powerful_move + if_equal 1, AI_sub_81DA424 + end + +AI_sub_81DBA7C:: @ 81DBA7C + if_effect 7, AI_sub_81DBA8C + if_not_effect 103, AI_sub_81DBA8A + score 2 + +AI_sub_81DBA8A:: @ 81DBA8A + score 4 + +AI_sub_81DBA8C:: @ 81DBA8C + end + +AI_SetupFirstTurn:: @ 81DBA8D + get_turn_count + if_not_equal 0, AI_sub_81DBAA6 + get_effect + if_not_in_bytes AI_bytes_81DBAA7, AI_sub_81DBAA6 + if_random_less_than 80, AI_sub_81DBAA6 + score 2 + +AI_sub_81DBAA6:: @ 81DBAA6 + end + +AI_bytes_81DBAA7:: @ 81DBAA7 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 23 + .byte 24 + .byte 30 + .byte 35 + .byte 54 + .byte 47 + .byte 49 + .byte 50 + .byte 51 + .byte 52 + .byte 53 + .byte 54 + .byte 55 + .byte 56 + .byte 58 + .byte 59 + .byte 60 + .byte 61 + .byte 62 + .byte 63 + .byte 64 + .byte 65 + .byte 66 + .byte 67 + .byte 79 + .byte 84 + .byte 108 + .byte 109 + .byte 118 + .byte 213 + .byte 187 + .byte 156 + .byte 165 + .byte 166 + .byte 167 + .byte 181 + .byte 192 + .byte 199 + .byte 205 + .byte 206 + .byte 208 + .byte 211 + .byte 213 + .byte 0xFF + +AI_PreferStrongestMove:: @ 81DBADF + is_most_powerful_move + if_not_equal 0, AI_sub_81DBAEE + if_random_less_than 100, AI_sub_81DBAEE + score 2 + +AI_sub_81DBAEE:: @ 81DBAEE + end + +AI_Risky:: @ 81DBAEF + get_effect + if_not_in_bytes AI_bytes_81DBB02, AI_sub_81DBB01 + if_random_less_than -128, AI_sub_81DBB01 + score 2 + +AI_sub_81DBB01:: @ 81DBB01 + end + +AI_bytes_81DBB02:: @ 81DBB02 + .byte 1 + .byte 7 + .byte 9 + .byte 38 + .byte 43 + .byte 49 + .byte 83 + .byte 88 + .byte 89 + .byte 98 + .byte 118 + .byte 120 + .byte 122 + .byte 140 + .byte 142 + .byte 144 + .byte 170 + .byte 185 + .byte 199 + .byte 0xFF + +AI_PreferBatonPass:: @ 81DBB16 + count_alive_pokemon 1 + if_equal 0, AI_sub_81DBB3A + is_most_powerful_move + if_not_equal 0, AI_sub_81DBB3A + if_move_effect 1, 127, AI_sub_81DBB32 + if_random_less_than 80, AI_sub_81DBB01 + +AI_sub_81DBB32:: @ 81DBB32 + if_random_less_than 20, AI_sub_81DBB01 + score 3 + +AI_sub_81DBB3A:: @ 81DBB3A + end + +AI_DoubleBattle:: @ 81DBB3B + end + +AI_HPAware:: @ 81DBB3C + if_hp_more_than 1, 70, AI_sub_81DBB59 + if_hp_more_than 1, 30, AI_sub_81DBB68 + get_effect + if_in_bytes AI_bytes_81DBBFC, AI_sub_81DBB77 + jump AI_sub_81DBB7F + +AI_sub_81DBB59:: @ 81DBB59 + get_effect + if_in_bytes AI_bytes_81DBBC3, AI_sub_81DBB77 + jump AI_sub_81DBB7F + +AI_sub_81DBB68:: @ 81DBB68 + get_effect + if_in_bytes AI_bytes_81DBBD1, AI_sub_81DBB77 + jump AI_sub_81DBB7F + +AI_sub_81DBB77:: @ 81DBB77 + if_random_less_than 50, AI_sub_81DBB7F + score -2 + +AI_sub_81DBB7F:: @ 81DBB7F + if_hp_more_than 0, 70, AI_sub_81DBB9C + if_hp_more_than 0, 30, AI_sub_81DBBAB + get_effect + if_in_bytes AI_bytes_81DBC55, AI_sub_81DBBBA + jump AI_sub_81DBBC2 + +AI_sub_81DBB9C:: @ 81DBB9C + get_effect + if_in_bytes AI_bytes_81DBC2C, AI_sub_81DBBBA + jump AI_sub_81DBBC2 + +AI_sub_81DBBAB:: @ 81DBBAB + get_effect + if_in_bytes AI_bytes_81DBC2D, AI_sub_81DBBBA + jump AI_sub_81DBBC2 + +AI_sub_81DBBBA:: @ 81DBBBA + if_random_less_than 50, AI_sub_81DBBC2 + score -2 + +AI_sub_81DBBC2:: @ 81DBBC2 + end + +AI_bytes_81DBBC3:: @ 81DBBC3 + .byte 7 + .byte 32 + .byte 37 + .byte 98 + .byte 99 + .byte 116 + .byte 132 + .byte 133 + .byte 134 + .byte 157 + .byte 168 + .byte 194 + .byte 204 + .byte 0xFF + +AI_bytes_81DBBD1:: @ 81DBBD1 + .byte 7 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 23 + .byte 24 + .byte 26 + .byte 30 + .byte 35 + .byte 46 + .byte 47 + .byte 50 + .byte 51 + .byte 52 + .byte 53 + .byte 54 + .byte 55 + .byte 56 + .byte 58 + .byte 59 + .byte 60 + .byte 61 + .byte 62 + .byte 63 + .byte 64 + .byte 93 + .byte 124 + .byte 142 + .byte 205 + .byte 206 + .byte 208 + .byte 211 + .byte 212 + .byte 0xFF + +AI_bytes_81DBBFC:: @ 81DBBFC + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 23 + .byte 24 + .byte 26 + .byte 30 + .byte 35 + .byte 46 + .byte 47 + .byte 50 + .byte 51 + .byte 52 + .byte 53 + .byte 54 + .byte 55 + .byte 56 + .byte 58 + .byte 59 + .byte 60 + .byte 61 + .byte 62 + .byte 63 + .byte 64 + .byte 81 + .byte 93 + .byte 94 + .byte 124 + .byte 142 + .byte 143 + .byte 144 + .byte 151 + .byte 190 + .byte 205 + .byte 206 + .byte 208 + .byte 211 + .byte 212 + .byte 0xFF + +AI_bytes_81DBC2C:: @ 81DBC2C + .byte 0xFF + +AI_bytes_81DBC2D:: @ 81DBC2D + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 23 + .byte 24 + .byte 46 + .byte 47 + .byte 50 + .byte 51 + .byte 52 + .byte 53 + .byte 54 + .byte 55 + .byte 56 + .byte 58 + .byte 59 + .byte 60 + .byte 61 + .byte 62 + .byte 63 + .byte 64 + .byte 66 + .byte 91 + .byte 114 + .byte 124 + .byte 205 + .byte 206 + .byte 208 + .byte 211 + .byte 212 + .byte 0xFF + +AI_bytes_81DBC55:: @ 81DBC55 + .byte 1 + .byte 7 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 16 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 23 + .byte 24 + .byte 26 + .byte 30 + .byte 33 + .byte 35 + .byte 38 + .byte 40 + .byte 40 + .byte 46 + .byte 47 + .byte 49 + .byte 50 + .byte 51 + .byte 52 + .byte 53 + .byte 54 + .byte 55 + .byte 56 + .byte 58 + .byte 59 + .byte 60 + .byte 61 + .byte 62 + .byte 63 + .byte 64 + .byte 66 + .byte 67 + .byte 91 + .byte 93 + .byte 94 + .byte 100 + .byte 114 + .byte 118 + .byte 119 + .byte 120 + .byte 124 + .byte 143 + .byte 144 + .byte 167 + .byte 205 + .byte 206 + .byte 208 + .byte 211 + .byte 212 + .byte 0xFF + +AI_Unknown:: @ 81DBC91 + if_not_effect -119, AI_sub_81DBCA7 + if_equal 0, AI_sub_81DBCA7 + is_first_turn 1 + if_equal 0, AI_sub_81DBCA7 + score 5 + +AI_sub_81DBCA7:: @ 81DBCA7 + end + +AI_Roaming:: @ 81DBCA8 + if_status2 1, 57344, AI_sub_81DBCD5 + if_status2 1, 67108864, AI_sub_81DBCD5 + get_ability 0 + if_equal 23, AI_sub_81DBCD5 + get_ability 1 + if_equal 26, AI_sub_81DBCD4 + get_ability 0 + if_equal 71, AI_sub_81DBCD5 + +AI_sub_81DBCD4:: @ 81DBCD4 + flee + +AI_sub_81DBCD5:: @ 81DBCD5 + end + +AI_Safari:: @ 81DBCD6 + if_random_100 AI_sub_81DBCDC + watch + +AI_sub_81DBCDC:: @ 81DBCDC + flee + +AI_FirstBattle:: @ 81DBCDD + if_hp_equal 0, 20, AI_sub_81DBCEC + if_hp_less_than 0, 20, AI_sub_81DBCEC + end + +AI_sub_81DBCEC:: @ 81DBCEC + flee + +AI_Ret:: @ 81DBCED + end diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s index 5dbcf50ee..9d74b6282 100644 --- a/data/mystery_event_script_cmd_table.s +++ b/data/mystery_event_script_cmd_table.s @@ -1,5 +1,6 @@ .section script_data, "aw", %progbits + .align 2 gMysteryEventScriptCmdTable:: @ 81DBCF0 .4byte MEScrCmd_nop .4byte MEScrCmd_checkcompat From f8fda972f8cbcf2793d41798c2d233d14838d6ae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 Apr 2019 20:42:51 -0400 Subject: [PATCH 101/318] Dump mplaytable and song ptrs --- asm/m4a_1.s | 27 +- asm/macros.inc | 1 + asm/overworld.s | 4 +- data/sound_data.s | 1071 +++++++++++++++++++++++++++++++++- sound/music_player_table.inc | 6 + sound/song_table.inc | 351 +++++++++++ 6 files changed, 1433 insertions(+), 27 deletions(-) create mode 100644 sound/music_player_table.inc create mode 100644 sound/song_table.inc diff --git a/asm/m4a_1.s b/asm/m4a_1.s index e78c3e69b..db8476382 100644 --- a/asm/m4a_1.s +++ b/asm/m4a_1.s @@ -4,8 +4,6 @@ .syntax unified - .lcomm gUnknown_030007B8, 0x770 - .text thumb_func_start umul3232H32 @@ -1909,3 +1907,28 @@ _081DDD90: thumb_func_end ply_mod .align 2, 0 @ Don't pad with nop. + + .bss +gUnknown_030007B8: + .space 0x40 + .size gUnknown_030007B8, .-gUnknown_030007B8 + + .global gMPlayTrack_BGM +gMPlayTrack_BGM: + .space 0x320 + .size gMPlayTrack_BGM, .-gMPlayTrack_BGM + + .global gMPlayTrack_SE1 +gMPlayTrack_SE1: + .space 0xF0 + .size gMPlayTrack_SE1, .-gMPlayTrack_SE1 + + .global gMPlayTrack_SE2 +gMPlayTrack_SE2: + .space 0x2D0 + .size gMPlayTrack_SE2, .-gMPlayTrack_SE2 + + .global gMPlayTrack_SE3 +gMPlayTrack_SE3: + .space 0x50 + .size gMPlayTrack_SE3, .-gMPlayTrack_SE3 diff --git a/asm/macros.inc b/asm/macros.inc index 324a8de02..e6813d319 100644 --- a/asm/macros.inc +++ b/asm/macros.inc @@ -4,6 +4,7 @@ .include "asm/macros/pokemon_data.inc" .include "asm/macros/ec.inc" .include "asm/macros/map.inc" + .include "asm/macros/m4a.inc" .macro region_map_location x, y, width, height, name .byte \x diff --git a/asm/overworld.s b/asm/overworld.s index e44855b46..0efea9307 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -2411,7 +2411,7 @@ _08055DDC: bgt _08055E24 ldr r0, _08055E1C @ =gMPlayInfo_BGM ldr r1, [r0] - ldr r0, _08055E20 @ =gUnknown_86E6B0C + ldr r0, _08055E20 @ =gSong_86E6B0C cmp r1, r0 bne _08055E24 movs r0, 0x4 @@ -2421,7 +2421,7 @@ _08055DDC: _08055E14: .4byte gSaveBlock1Ptr _08055E18: .4byte 0x00004f01 _08055E1C: .4byte gMPlayInfo_BGM -_08055E20: .4byte gUnknown_86E6B0C +_08055E20: .4byte gSong_86E6B0C _08055E24: bl sub_8055D8C lsls r0, 16 diff --git a/data/sound_data.s b/data/sound_data.s index 4bbe6ce75..bda39ccc4 100644 --- a/data/sound_data.s +++ b/data/sound_data.s @@ -1,37 +1,1062 @@ + .include "asm/macros/m4a.inc" + .include "asm/macros/music_voice.inc" .section .rodata voicegroup_pokemon_cry:: @ 8489C8C .incbin "baserom.gba", 0x489C8C, 0x2C88 gCryTable:: @ 848C914 - .incbin "baserom.gba", 0x48C914, 0x600 - -gUnknown_848CF14:: @ 848CF14 - .incbin "baserom.gba", 0x48CF14, 0x600 - -gUnknown_848D514:: @ 848D514 - .incbin "baserom.gba", 0x48D514, 0x600 - -gUnknown_848DB14:: @ 848DB14 - .incbin "baserom.gba", 0x48DB14, 0x30 + .incbin "baserom.gba", 0x48C914, 0x1230 gCryTable2:: @ 848DB44 - .incbin "baserom.gba", 0x48DB44, 0x600 + .incbin "baserom.gba", 0x48DB44, 0x1230 -gUnknown_848E144:: @ 848E144 - .incbin "baserom.gba", 0x48E144, 0x600 +gUnknown_848ED74:: @ 848ED74 + .incbin "baserom.gba", 0x48ED74, 0x14528 -gUnknown_848E744:: @ 848E744 - .incbin "baserom.gba", 0x48E744, 0x600 + .include "sound/music_player_table.inc" + .include "sound/song_table.inc" -gUnknown_848ED44:: @ 848ED44 - .incbin "baserom.gba", 0x48ED44, 0x14558 +gDirectSoundWaveData_0:: @ 0x84A3DA8 + .incbin "baserom.gba", 0x4A3DA8, 0x211898 -gMPlayTable:: @ 84A329C - .incbin "baserom.gba", 0x4A329C, 0x30 +gSong_86B5640:: @ 0x86B5640 + .incbin "baserom.gba", 0x6B5640, 0x20 -gSongTable:: @ 84A32CC - .incbin "baserom.gba", 0x4A32CC, 0x243840 +gSong_86B5660:: @ 0x86B5660 + .incbin "baserom.gba", 0x6B5660, 0x2C -gUnknown_86E6B0C:: @ 86E6B0C - .incbin "baserom.gba", 0x6E6B0C, 0x15398 +gSong_86B568C:: @ 0x86B568C + .incbin "baserom.gba", 0x6B568C, 0x24 + +gSong_86B56B0:: @ 0x86B56B0 + .incbin "baserom.gba", 0x6B56B0, 0x44 + +gSong_86B56F4:: @ 0x86B56F4 + .incbin "baserom.gba", 0x6B56F4, 0x2C + +gSong_86B5720:: @ 0x86B5720 + .incbin "baserom.gba", 0x6B5720, 0x1C + +gSong_86B573C:: @ 0x86B573C + .incbin "baserom.gba", 0x6B573C, 0x1C + +gSong_86B5758:: @ 0x86B5758 + .incbin "baserom.gba", 0x6B5758, 0x1C + +gSong_86B5774:: @ 0x86B5774 + .incbin "baserom.gba", 0x6B5774, 0x34 + +gSong_86B57A8:: @ 0x86B57A8 + .incbin "baserom.gba", 0x6B57A8, 0x24 + +gSong_86B57CC:: @ 0x86B57CC + .incbin "baserom.gba", 0x6B57CC, 0x1C + +gSong_86B57E8:: @ 0x86B57E8 + .incbin "baserom.gba", 0x6B57E8, 0x2C + +gSong_86B5814:: @ 0x86B5814 + .incbin "baserom.gba", 0x6B5814, 0x4C + +gSong_86B5860:: @ 0x86B5860 + .incbin "baserom.gba", 0x6B5860, 0x7C + +gSong_86B58DC:: @ 0x86B58DC + .incbin "baserom.gba", 0x6B58DC, 0x54 + +gSong_86B5930:: @ 0x86B5930 + .incbin "baserom.gba", 0x6B5930, 0x54 + +gSong_86B5984:: @ 0x86B5984 + .incbin "baserom.gba", 0x6B5984, 0x50 + +gSong_86B59D4:: @ 0x86B59D4 + .incbin "baserom.gba", 0x6B59D4, 0x1C + +gSong_86B59F0:: @ 0x86B59F0 + .incbin "baserom.gba", 0x6B59F0, 0x54 + +gSong_86B5A44:: @ 0x86B5A44 + .incbin "baserom.gba", 0x6B5A44, 0x48 + +gSong_86B5A8C:: @ 0x86B5A8C + .incbin "baserom.gba", 0x6B5A8C, 0x2C + +gSong_86B5AB8:: @ 0x86B5AB8 + .incbin "baserom.gba", 0x6B5AB8, 0x24 + +gSong_86B5ADC:: @ 0x86B5ADC + .incbin "baserom.gba", 0x6B5ADC, 0x24 + +gSong_86B5B00:: @ 0x86B5B00 + .incbin "baserom.gba", 0x6B5B00, 0x84 + +gSong_86B5B84:: @ 0x86B5B84 + .incbin "baserom.gba", 0x6B5B84, 0x2C + +gSong_86B5BB0:: @ 0x86B5BB0 + .incbin "baserom.gba", 0x6B5BB0, 0x30 + +gSong_86B5BE0:: @ 0x86B5BE0 + .incbin "baserom.gba", 0x6B5BE0, 0x180 + +gSong_86B5D60:: @ 0x86B5D60 + .incbin "baserom.gba", 0x6B5D60, 0x24 + +gSong_86B5D84:: @ 0x86B5D84 + .incbin "baserom.gba", 0x6B5D84, 0x24 + +gSong_86B5DA8:: @ 0x86B5DA8 + .incbin "baserom.gba", 0x6B5DA8, 0x24 + +gSong_86B5DCC:: @ 0x86B5DCC + .incbin "baserom.gba", 0x6B5DCC, 0x30 + +gSong_86B5DFC:: @ 0x86B5DFC + .incbin "baserom.gba", 0x6B5DFC, 0x24 + +gSong_86B5E20:: @ 0x86B5E20 + .incbin "baserom.gba", 0x6B5E20, 0x4C + +gSong_86B5E6C:: @ 0x86B5E6C + .incbin "baserom.gba", 0x6B5E6C, 0x38 + +gSong_86B5EA4:: @ 0x86B5EA4 + .incbin "baserom.gba", 0x6B5EA4, 0x54 + +gSong_86B5EF8:: @ 0x86B5EF8 + .incbin "baserom.gba", 0x6B5EF8, 0x3C + +gSong_86B5F34:: @ 0x86B5F34 + .incbin "baserom.gba", 0x6B5F34, 0x58 + +gSong_86B5F8C:: @ 0x86B5F8C + .incbin "baserom.gba", 0x6B5F8C, 0x44 + +gSong_86B5FD0:: @ 0x86B5FD0 + .incbin "baserom.gba", 0x6B5FD0, 0x3C + +gSong_86B600C:: @ 0x86B600C + .incbin "baserom.gba", 0x6B600C, 0x40 + +gSong_86B604C:: @ 0x86B604C + .incbin "baserom.gba", 0x6B604C, 0x2C + +gSong_86B6078:: @ 0x86B6078 + .incbin "baserom.gba", 0x6B6078, 0x3C + +gSong_86B60B4:: @ 0x86B60B4 + .incbin "baserom.gba", 0x6B60B4, 0xAC + +gSong_86B6160:: @ 0x86B6160 + .incbin "baserom.gba", 0x6B6160, 0x78 + +gSong_86B61D8:: @ 0x86B61D8 + .incbin "baserom.gba", 0x6B61D8, 0x2C + +gSong_86B6204:: @ 0x86B6204 + .incbin "baserom.gba", 0x6B6204, 0x34 + +gSong_86B6238:: @ 0x86B6238 + .incbin "baserom.gba", 0x6B6238, 0x2C + +gSong_86B6264:: @ 0x86B6264 + .incbin "baserom.gba", 0x6B6264, 0x44 + +gSong_86B62A8:: @ 0x86B62A8 + .incbin "baserom.gba", 0x6B62A8, 0x2C + +gSong_86B62D4:: @ 0x86B62D4 + .incbin "baserom.gba", 0x6B62D4, 0x2C + +gSong_86B6300:: @ 0x86B6300 + .incbin "baserom.gba", 0x6B6300, 0x2C + +gSong_86B632C:: @ 0x86B632C + .incbin "baserom.gba", 0x6B632C, 0x2C + +gSong_86B6358:: @ 0x86B6358 + .incbin "baserom.gba", 0x6B6358, 0x54 + +gSong_86B63AC:: @ 0x86B63AC + .incbin "baserom.gba", 0x6B63AC, 0x44 + +gSong_86B63F0:: @ 0x86B63F0 + .incbin "baserom.gba", 0x6B63F0, 0x34 + +gSong_86B6424:: @ 0x86B6424 + .incbin "baserom.gba", 0x6B6424, 0x38 + +gSong_86B645C:: @ 0x86B645C + .incbin "baserom.gba", 0x6B645C, 0x38 + +gSong_86B6494:: @ 0x86B6494 + .incbin "baserom.gba", 0x6B6494, 0x38 + +gSong_86B64CC:: @ 0x86B64CC + .incbin "baserom.gba", 0x6B64CC, 0x38 + +gSong_86B6504:: @ 0x86B6504 + .incbin "baserom.gba", 0x6B6504, 0x38 + +gSong_86B653C:: @ 0x86B653C + .incbin "baserom.gba", 0x6B653C, 0x38 + +gSong_86B6574:: @ 0x86B6574 + .incbin "baserom.gba", 0x6B6574, 0x38 + +gSong_86B65AC:: @ 0x86B65AC + .incbin "baserom.gba", 0x6B65AC, 0x34 + +gSong_86B65E0:: @ 0x86B65E0 + .incbin "baserom.gba", 0x6B65E0, 0x24 + +gSong_86B6604:: @ 0x86B6604 + .incbin "baserom.gba", 0x6B6604, 0x4C + +gSong_86B6650:: @ 0x86B6650 + .incbin "baserom.gba", 0x6B6650, 0x60 + +gSong_86B66B0:: @ 0x86B66B0 + .incbin "baserom.gba", 0x6B66B0, 0x34 + +gSong_86B66E4:: @ 0x86B66E4 + .incbin "baserom.gba", 0x6B66E4, 0x30 + +gSong_86B6714:: @ 0x86B6714 + .incbin "baserom.gba", 0x6B6714, 0x38 + +gSong_86B674C:: @ 0x86B674C + .incbin "baserom.gba", 0x6B674C, 0x44 + +gSong_86B6790:: @ 0x86B6790 + .incbin "baserom.gba", 0x6B6790, 0x30 + +gSong_86B67C0:: @ 0x86B67C0 + .incbin "baserom.gba", 0x6B67C0, 0x28 + +gSong_86B67E8:: @ 0x86B67E8 + .incbin "baserom.gba", 0x6B67E8, 0x68 + +gSong_86B6850:: @ 0x86B6850 + .incbin "baserom.gba", 0x6B6850, 0x3C + +gSong_86B688C:: @ 0x86B688C + .incbin "baserom.gba", 0x6B688C, 0x40 + +gSong_86B68CC:: @ 0x86B68CC + .incbin "baserom.gba", 0x6B68CC, 0x3C + +gSong_86B6908:: @ 0x86B6908 + .incbin "baserom.gba", 0x6B6908, 0x40 + +gSong_86B6948:: @ 0x86B6948 + .incbin "baserom.gba", 0x6B6948, 0x3C + +gSong_86B6984:: @ 0x86B6984 + .incbin "baserom.gba", 0x6B6984, 0x40 + +gSong_86B69C4:: @ 0x86B69C4 + .incbin "baserom.gba", 0x6B69C4, 0x68 + +gSong_86B6A2C:: @ 0x86B6A2C + .incbin "baserom.gba", 0x6B6A2C, 0x50 + +gSong_86B6A7C:: @ 0x86B6A7C + .incbin "baserom.gba", 0x6B6A7C, 0x3C + +gSong_86B6AB8:: @ 0x86B6AB8 + .incbin "baserom.gba", 0x6B6AB8, 0x30 + +gSong_86B6AE8:: @ 0x86B6AE8 + .incbin "baserom.gba", 0x6B6AE8, 0x4C + +gSong_86B6B34:: @ 0x86B6B34 + .incbin "baserom.gba", 0x6B6B34, 0x24 + +gSong_86B6B58:: @ 0x86B6B58 + .incbin "baserom.gba", 0x6B6B58, 0x54 + +gSong_86B6BAC:: @ 0x86B6BAC + .incbin "baserom.gba", 0x6B6BAC, 0x94 + +gSong_86B6C40:: @ 0x86B6C40 + .incbin "baserom.gba", 0x6B6C40, 0x3C + +gSong_86B6C7C:: @ 0x86B6C7C + .incbin "baserom.gba", 0x6B6C7C, 0x24 + +gSong_86B6CA0:: @ 0x86B6CA0 + .incbin "baserom.gba", 0x6B6CA0, 0x64 + +gSong_86B6D04:: @ 0x86B6D04 + .incbin "baserom.gba", 0x6B6D04, 0x68 + +gSong_86B6D6C:: @ 0x86B6D6C + .incbin "baserom.gba", 0x6B6D6C, 0x28 + +gSong_86B6D94:: @ 0x86B6D94 + .incbin "baserom.gba", 0x6B6D94, 0x34 + +gSong_86B6DC8:: @ 0x86B6DC8 + .incbin "baserom.gba", 0x6B6DC8, 0x2C + +gSong_86B6DF4:: @ 0x86B6DF4 + .incbin "baserom.gba", 0x6B6DF4, 0x7C + +gSong_86B6E70:: @ 0x86B6E70 + .incbin "baserom.gba", 0x6B6E70, 0xC0 + +gSong_86B6F30:: @ 0x86B6F30 + .incbin "baserom.gba", 0x6B6F30, 0xE8 + +gSong_86B7018:: @ 0x86B7018 + .incbin "baserom.gba", 0x6B7018, 0x118 + +gSong_86B7130:: @ 0x86B7130 + .incbin "baserom.gba", 0x6B7130, 0x24 + +gSong_86B7154:: @ 0x86B7154 + .incbin "baserom.gba", 0x6B7154, 0x114 + +gSong_86B7268:: @ 0x86B7268 + .incbin "baserom.gba", 0x6B7268, 0x2C + +gSong_86B7294:: @ 0x86B7294 + .incbin "baserom.gba", 0x6B7294, 0x34 + +gSong_86B72C8:: @ 0x86B72C8 + .incbin "baserom.gba", 0x6B72C8, 0x64 + +gSong_86B732C:: @ 0x86B732C + .incbin "baserom.gba", 0x6B732C, 0x68 + +gSong_86B7394:: @ 0x86B7394 + .incbin "baserom.gba", 0x6B7394, 0x1FC + +gSong_86B7590:: @ 0x86B7590 + .incbin "baserom.gba", 0x6B7590, 0x8C + +gSong_86B761C:: @ 0x86B761C + .incbin "baserom.gba", 0x6B761C, 0x50 + +gSong_86B766C:: @ 0x86B766C + .incbin "baserom.gba", 0x6B766C, 0x2C + +gSong_86B7698:: @ 0x86B7698 + .incbin "baserom.gba", 0x6B7698, 0x20 + +gSong_86B76B8:: @ 0x86B76B8 + .incbin "baserom.gba", 0x6B76B8, 0x3C + +gSong_86B76F4:: @ 0x86B76F4 + .incbin "baserom.gba", 0x6B76F4, 0x94 + +gSong_86B7788:: @ 0x86B7788 + .incbin "baserom.gba", 0x6B7788, 0x6C + +gSong_86B77F4:: @ 0x86B77F4 + .incbin "baserom.gba", 0x6B77F4, 0x48 + +gSong_86B783C:: @ 0x86B783C + .incbin "baserom.gba", 0x6B783C, 0xC4 + +gSong_86B7900:: @ 0x86B7900 + .incbin "baserom.gba", 0x6B7900, 0x54 + +gSong_86B7954:: @ 0x86B7954 + .incbin "baserom.gba", 0x6B7954, 0x80 + +gSong_86B79D4:: @ 0x86B79D4 + .incbin "baserom.gba", 0x6B79D4, 0x38 + +gSong_86B7A0C:: @ 0x86B7A0C + .incbin "baserom.gba", 0x6B7A0C, 0x34 + +gSong_86B7A40:: @ 0x86B7A40 + .incbin "baserom.gba", 0x6B7A40, 0x40 + +gSong_86B7A80:: @ 0x86B7A80 + .incbin "baserom.gba", 0x6B7A80, 0x78 + +gSong_86B7AF8:: @ 0x86B7AF8 + .incbin "baserom.gba", 0x6B7AF8, 0x80 + +gSong_86B7B78:: @ 0x86B7B78 + .incbin "baserom.gba", 0x6B7B78, 0x58 + +gSong_86B7BD0:: @ 0x86B7BD0 + .incbin "baserom.gba", 0x6B7BD0, 0xA4 + +gSong_86B7C74:: @ 0x86B7C74 + .incbin "baserom.gba", 0x6B7C74, 0x4C + +gSong_86B7CC0:: @ 0x86B7CC0 + .incbin "baserom.gba", 0x6B7CC0, 0x7C + +gSong_86B7D3C:: @ 0x86B7D3C + .incbin "baserom.gba", 0x6B7D3C, 0x4C + +gSong_86B7D88:: @ 0x86B7D88 + .incbin "baserom.gba", 0x6B7D88, 0x34 + +gSong_86B7DBC:: @ 0x86B7DBC + .incbin "baserom.gba", 0x6B7DBC, 0x4C + +gSong_86B7E08:: @ 0x86B7E08 + .incbin "baserom.gba", 0x6B7E08, 0x60 + +gSong_86B7E68:: @ 0x86B7E68 + .incbin "baserom.gba", 0x6B7E68, 0x4C + +gSong_86B7EB4:: @ 0x86B7EB4 + .incbin "baserom.gba", 0x6B7EB4, 0x84 + +gSong_86B7F38:: @ 0x86B7F38 + .incbin "baserom.gba", 0x6B7F38, 0x54 + +gSong_86B7F8C:: @ 0x86B7F8C + .incbin "baserom.gba", 0x6B7F8C, 0xCC + +gSong_86B8058:: @ 0x86B8058 + .incbin "baserom.gba", 0x6B8058, 0xA0 + +gSong_86B80F8:: @ 0x86B80F8 + .incbin "baserom.gba", 0x6B80F8, 0x3C + +gSong_86B8134:: @ 0x86B8134 + .incbin "baserom.gba", 0x6B8134, 0x4C + +gSong_86B8180:: @ 0x86B8180 + .incbin "baserom.gba", 0x6B8180, 0x84 + +gSong_86B8204:: @ 0x86B8204 + .incbin "baserom.gba", 0x6B8204, 0x70 + +gSong_86B8274:: @ 0x86B8274 + .incbin "baserom.gba", 0x6B8274, 0xD4 + +gSong_86B8348:: @ 0x86B8348 + .incbin "baserom.gba", 0x6B8348, 0xA4 + +gSong_86B83EC:: @ 0x86B83EC + .incbin "baserom.gba", 0x6B83EC, 0x70 + +gSong_86B845C:: @ 0x86B845C + .incbin "baserom.gba", 0x6B845C, 0x74 + +gSong_86B84D0:: @ 0x86B84D0 + .incbin "baserom.gba", 0x6B84D0, 0xE0 + +gSong_86B85B0:: @ 0x86B85B0 + .incbin "baserom.gba", 0x6B85B0, 0x3C + +gSong_86B85EC:: @ 0x86B85EC + .incbin "baserom.gba", 0x6B85EC, 0x68 + +gSong_86B8654:: @ 0x86B8654 + .incbin "baserom.gba", 0x6B8654, 0x7C + +gSong_86B86D0:: @ 0x86B86D0 + .incbin "baserom.gba", 0x6B86D0, 0x4C + +gSong_86B871C:: @ 0x86B871C + .incbin "baserom.gba", 0x6B871C, 0x48 + +gSong_86B8764:: @ 0x86B8764 + .incbin "baserom.gba", 0x6B8764, 0x68 + +gSong_86B87CC:: @ 0x86B87CC + .incbin "baserom.gba", 0x6B87CC, 0x9C + +gSong_86B8868:: @ 0x86B8868 + .incbin "baserom.gba", 0x6B8868, 0x164 + +gSong_86B89CC:: @ 0x86B89CC + .incbin "baserom.gba", 0x6B89CC, 0x68 + +gSong_86B8A34:: @ 0x86B8A34 + .incbin "baserom.gba", 0x6B8A34, 0x44 + +gSong_86B8A78:: @ 0x86B8A78 + .incbin "baserom.gba", 0x6B8A78, 0x7C + +gSong_86B8AF4:: @ 0x86B8AF4 + .incbin "baserom.gba", 0x6B8AF4, 0x6C + +gSong_86B8B60:: @ 0x86B8B60 + .incbin "baserom.gba", 0x6B8B60, 0x80 + +gSong_86B8BE0:: @ 0x86B8BE0 + .incbin "baserom.gba", 0x6B8BE0, 0x80 + +gSong_86B8C60:: @ 0x86B8C60 + .incbin "baserom.gba", 0x6B8C60, 0x9C + +gSong_86B8CFC:: @ 0x86B8CFC + .incbin "baserom.gba", 0x6B8CFC, 0x4C + +gSong_86B8D48:: @ 0x86B8D48 + .incbin "baserom.gba", 0x6B8D48, 0x40 + +gSong_86B8D88:: @ 0x86B8D88 + .incbin "baserom.gba", 0x6B8D88, 0x78 + +gSong_86B8E00:: @ 0x86B8E00 + .incbin "baserom.gba", 0x6B8E00, 0x3C + +gSong_86B8E3C:: @ 0x86B8E3C + .incbin "baserom.gba", 0x6B8E3C, 0x58 + +gSong_86B8E94:: @ 0x86B8E94 + .incbin "baserom.gba", 0x6B8E94, 0xC8 + +gSong_86B8F5C:: @ 0x86B8F5C + .incbin "baserom.gba", 0x6B8F5C, 0xF4 + +gSong_86B9050:: @ 0x86B9050 + .incbin "baserom.gba", 0x6B9050, 0x110 + +gSong_86B9160:: @ 0x86B9160 + .incbin "baserom.gba", 0x6B9160, 0x88 + +gSong_86B91E8:: @ 0x86B91E8 + .incbin "baserom.gba", 0x6B91E8, 0x48 + +gSong_86B9230:: @ 0x86B9230 + .incbin "baserom.gba", 0x6B9230, 0x60 + +gSong_86B9290:: @ 0x86B9290 + .incbin "baserom.gba", 0x6B9290, 0x4C + +gSong_86B92DC:: @ 0x86B92DC + .incbin "baserom.gba", 0x6B92DC, 0x88 + +gSong_86B9364:: @ 0x86B9364 + .incbin "baserom.gba", 0x6B9364, 0xBC + +gSong_86B9420:: @ 0x86B9420 + .incbin "baserom.gba", 0x6B9420, 0x58 + +gSong_86B9478:: @ 0x86B9478 + .incbin "baserom.gba", 0x6B9478, 0x7C + +gSong_86B94F4:: @ 0x86B94F4 + .incbin "baserom.gba", 0x6B94F4, 0xC8 + +gSong_86B95BC:: @ 0x86B95BC + .incbin "baserom.gba", 0x6B95BC, 0xBC + +gSong_86B9678:: @ 0x86B9678 + .incbin "baserom.gba", 0x6B9678, 0xEC + +gSong_86B9764:: @ 0x86B9764 + .incbin "baserom.gba", 0x6B9764, 0x40 + +gSong_86B97A4:: @ 0x86B97A4 + .incbin "baserom.gba", 0x6B97A4, 0x5C + +gSong_86B9800:: @ 0x86B9800 + .incbin "baserom.gba", 0x6B9800, 0x38 + +gSong_86B9838:: @ 0x86B9838 + .incbin "baserom.gba", 0x6B9838, 0xB4 + +gSong_86B98EC:: @ 0x86B98EC + .incbin "baserom.gba", 0x6B98EC, 0xA0 + +gSong_86B998C:: @ 0x86B998C + .incbin "baserom.gba", 0x6B998C, 0x68 + +gSong_86B99F4:: @ 0x86B99F4 + .incbin "baserom.gba", 0x6B99F4, 0x124 + +gSong_86B9B18:: @ 0x86B9B18 + .incbin "baserom.gba", 0x6B9B18, 0x7C + +gSong_86B9B94:: @ 0x86B9B94 + .incbin "baserom.gba", 0x6B9B94, 0x5C + +gSong_86B9BF0:: @ 0x86B9BF0 + .incbin "baserom.gba", 0x6B9BF0, 0x38 + +gSong_86B9C28:: @ 0x86B9C28 + .incbin "baserom.gba", 0x6B9C28, 0x50 + +gSong_86B9C78:: @ 0x86B9C78 + .incbin "baserom.gba", 0x6B9C78, 0x8C + +gSong_86B9D04:: @ 0x86B9D04 + .incbin "baserom.gba", 0x6B9D04, 0x64 + +gSong_86B9D68:: @ 0x86B9D68 + .incbin "baserom.gba", 0x6B9D68, 0x78 + +gSong_86B9DE0:: @ 0x86B9DE0 + .incbin "baserom.gba", 0x6B9DE0, 0x68 + +gSong_86B9E48:: @ 0x86B9E48 + .incbin "baserom.gba", 0x6B9E48, 0x154 + +gSong_86B9F9C:: @ 0x86B9F9C + .incbin "baserom.gba", 0x6B9F9C, 0xD4 + +gSong_86BA070:: @ 0x86BA070 + .incbin "baserom.gba", 0x6BA070, 0x110 + +gSong_86BA180:: @ 0x86BA180 + .incbin "baserom.gba", 0x6BA180, 0xE4 + +gSong_86BA264:: @ 0x86BA264 + .incbin "baserom.gba", 0x6BA264, 0xE0 + +gSong_86BA344:: @ 0x86BA344 + .incbin "baserom.gba", 0x6BA344, 0x4C + +gSong_86BA390:: @ 0x86BA390 + .incbin "baserom.gba", 0x6BA390, 0x8C + +gSong_86BA41C:: @ 0x86BA41C + .incbin "baserom.gba", 0x6BA41C, 0x190 + +gSong_86BA5AC:: @ 0x86BA5AC + .incbin "baserom.gba", 0x6BA5AC, 0x1A0 + +gSong_86BA74C:: @ 0x86BA74C + .incbin "baserom.gba", 0x6BA74C, 0x70 + +gSong_86BA7BC:: @ 0x86BA7BC + .incbin "baserom.gba", 0x6BA7BC, 0x50 + +gSong_86BA80C:: @ 0x86BA80C + .incbin "baserom.gba", 0x6BA80C, 0x124 + +gSong_86BA930:: @ 0x86BA930 + .incbin "baserom.gba", 0x6BA930, 0x80 + +gSong_86BA9B0:: @ 0x86BA9B0 + .incbin "baserom.gba", 0x6BA9B0, 0xF0 + +gSong_86BAAA0:: @ 0x86BAAA0 + .incbin "baserom.gba", 0x6BAAA0, 0x64 + +gSong_86BAB04:: @ 0x86BAB04 + .incbin "baserom.gba", 0x6BAB04, 0x5C + +gSong_86BAB60:: @ 0x86BAB60 + .incbin "baserom.gba", 0x6BAB60, 0xB4 + +gSong_86BAC14:: @ 0x86BAC14 + .incbin "baserom.gba", 0x6BAC14, 0x1FC + +gSong_86BAE10:: @ 0x86BAE10 + .incbin "baserom.gba", 0x6BAE10, 0x120 + +gSong_86BAF30:: @ 0x86BAF30 + .incbin "baserom.gba", 0x6BAF30, 0x170 + +gSong_86BB0A0:: @ 0x86BB0A0 + .incbin "baserom.gba", 0x6BB0A0, 0x70 + +gSong_86BB110:: @ 0x86BB110 + .incbin "baserom.gba", 0x6BB110, 0x98 + +gSong_86BB1A8:: @ 0x86BB1A8 + .incbin "baserom.gba", 0x6BB1A8, 0x38 + +gSong_86BB1E0:: @ 0x86BB1E0 + .incbin "baserom.gba", 0x6BB1E0, 0xD8 + +gSong_86BB2B8:: @ 0x86BB2B8 + .incbin "baserom.gba", 0x6BB2B8, 0xD8 + +gSong_86BB390:: @ 0x86BB390 + .incbin "baserom.gba", 0x6BB390, 0xAC + +gSong_86BB43C:: @ 0x86BB43C + .incbin "baserom.gba", 0x6BB43C, 0x98 + +gSong_86BB4D4:: @ 0x86BB4D4 + .incbin "baserom.gba", 0x6BB4D4, 0x98 + +gSong_86BB56C:: @ 0x86BB56C + .incbin "baserom.gba", 0x6BB56C, 0xA8 + +gSong_86BB614:: @ 0x86BB614 + .incbin "baserom.gba", 0x6BB614, 0x4C + +gSong_86BB660:: @ 0x86BB660 + .incbin "baserom.gba", 0x6BB660, 0xFC + +gSong_86BB75C:: @ 0x86BB75C + .incbin "baserom.gba", 0x6BB75C, 0x94 + +gSong_86BB7F0:: @ 0x86BB7F0 + .incbin "baserom.gba", 0x6BB7F0, 0x64 + +gSong_86BB854:: @ 0x86BB854 + .incbin "baserom.gba", 0x6BB854, 0x9C + +gSong_86BB8F0:: @ 0x86BB8F0 + .incbin "baserom.gba", 0x6BB8F0, 0x208 + +gSong_86BBAF8:: @ 0x86BBAF8 + .incbin "baserom.gba", 0x6BBAF8, 0xFC + +gSong_86BBBF4:: @ 0x86BBBF4 + .incbin "baserom.gba", 0x6BBBF4, 0xF0 + +gSong_86BBCE4:: @ 0x86BBCE4 + .incbin "baserom.gba", 0x6BBCE4, 0x84 + +gSong_86BBD68:: @ 0x86BBD68 + .incbin "baserom.gba", 0x6BBD68, 0x74 + +gSong_86BBDDC:: @ 0x86BBDDC + .incbin "baserom.gba", 0x6BBDDC, 0x180 + +gSong_86BBF5C:: @ 0x86BBF5C + .incbin "baserom.gba", 0x6BBF5C, 0x104 + +gSong_86BC060:: @ 0x86BC060 + .incbin "baserom.gba", 0x6BC060, 0x60 + +gSong_86BC0C0:: @ 0x86BC0C0 + .incbin "baserom.gba", 0x6BC0C0, 0x70 + +gSong_86BC130:: @ 0x86BC130 + .incbin "baserom.gba", 0x6BC130, 0x11C + +gSong_86BC24C:: @ 0x86BC24C + .incbin "baserom.gba", 0x6BC24C, 0xA4 + +gSong_86BC2F0:: @ 0x86BC2F0 + .incbin "baserom.gba", 0x6BC2F0, 0x170 + +gSong_86BC460:: @ 0x86BC460 + .incbin "baserom.gba", 0x6BC460, 0x134 + +gSong_86BC594:: @ 0x86BC594 + .incbin "baserom.gba", 0x6BC594, 0x84 + +gSong_86BC618:: @ 0x86BC618 + .incbin "baserom.gba", 0x6BC618, 0x58 + +gSong_86BC670:: @ 0x86BC670 + .incbin "baserom.gba", 0x6BC670, 0x30 + +gSong_86BC6A0:: @ 0x86BC6A0 + .incbin "baserom.gba", 0x6BC6A0, 0x38 + +gSong_86BC6D8:: @ 0x86BC6D8 + .incbin "baserom.gba", 0x6BC6D8, 0x8C + +gSong_86BC764:: @ 0x86BC764 + .incbin "baserom.gba", 0x6BC764, 0x38 + +gSong_86BC79C:: @ 0x86BC79C + .incbin "baserom.gba", 0x6BC79C, 0x44 + +gSong_86BC7E0:: @ 0x86BC7E0 + .incbin "baserom.gba", 0x6BC7E0, 0x40 + +gSong_86BC820:: @ 0x86BC820 + .incbin "baserom.gba", 0x6BC820, 0x28 + +gSong_86BC848:: @ 0x86BC848 + .incbin "baserom.gba", 0x6BC848, 0xB8 + +gSong_86BC900:: @ 0x86BC900 + .incbin "baserom.gba", 0x6BC900, 0x74 + +gSong_86BC974:: @ 0x86BC974 + .incbin "baserom.gba", 0x6BC974, 0x6C + +gSong_86BC9E0:: @ 0x86BC9E0 + .incbin "baserom.gba", 0x6BC9E0, 0x48 + +gSong_86BCA28:: @ 0x86BCA28 + .incbin "baserom.gba", 0x6BCA28, 0xE0 + +gSong_86BCB08:: @ 0x86BCB08 + .incbin "baserom.gba", 0x6BCB08, 0xC0 + +gSong_86BCBC8:: @ 0x86BCBC8 + .incbin "baserom.gba", 0x6BCBC8, 0x34 + +gSong_86BCBFC:: @ 0x86BCBFC + .incbin "baserom.gba", 0x6BCBFC, 0xBC + +gSong_86BCCB8:: @ 0x86BCCB8 + .incbin "baserom.gba", 0x6BCCB8, 0xE0 + +gSong_86BCD98:: @ 0x86BCD98 + .incbin "baserom.gba", 0x6BCD98, 0x14C + +gSong_86BCEE4:: @ 0x86BCEE4 + .incbin "baserom.gba", 0x6BCEE4, 0x19C + +gSong_86BD080:: @ 0x86BD080 + .incbin "baserom.gba", 0x6BD080, 0x2D8 + +gSong_86BD358:: @ 0x86BD358 + .incbin "baserom.gba", 0x6BD358, 0x18C + +gSong_86BD4E4:: @ 0x86BD4E4 + .incbin "baserom.gba", 0x6BD4E4, 0xD8 + +gSong_86BD5BC:: @ 0x86BD5BC + .incbin "baserom.gba", 0x6BD5BC, 0x6C + +gSong_86BD628:: @ 0x86BD628 + .incbin "baserom.gba", 0x6BD628, 0x570 + +gSong_86BDB98:: @ 0x86BDB98 + .incbin "baserom.gba", 0x6BDB98, 0xE2C + +gSong_86BE9C4:: @ 0x86BE9C4 + .incbin "baserom.gba", 0x6BE9C4, 0x10A4 + +gSong_86BFA68:: @ 0x86BFA68 + .incbin "baserom.gba", 0x6BFA68, 0x358 + +gSong_86BFDC0:: @ 0x86BFDC0 + .incbin "baserom.gba", 0x6BFDC0, 0x220 + +gSong_86BFFE0:: @ 0x86BFFE0 + .incbin "baserom.gba", 0x6BFFE0, 0x140 + +gSong_86C0120:: @ 0x86C0120 + .incbin "baserom.gba", 0x6C0120, 0xE4 + +gSong_86C0204:: @ 0x86C0204 + .incbin "baserom.gba", 0x6C0204, 0xF8 + +gSong_86C02FC:: @ 0x86C02FC + .incbin "baserom.gba", 0x6C02FC, 0x4E8 + +gSong_86C07E4:: @ 0x86C07E4 + .incbin "baserom.gba", 0x6C07E4, 0xF3C + +gSong_86C1720:: @ 0x86C1720 + .incbin "baserom.gba", 0x6C1720, 0x1C24 + +gSong_86C3344:: @ 0x86C3344 + .incbin "baserom.gba", 0x6C3344, 0xA0C + +gSong_86C3D50:: @ 0x86C3D50 + .incbin "baserom.gba", 0x6C3D50, 0x298 + +gSong_86C3FE8:: @ 0x86C3FE8 + .incbin "baserom.gba", 0x6C3FE8, 0xB00 + +gSong_86C4AE8:: @ 0x86C4AE8 + .incbin "baserom.gba", 0x6C4AE8, 0x1074 + +gSong_86C5B5C:: @ 0x86C5B5C + .incbin "baserom.gba", 0x6C5B5C, 0xED4 + +gSong_86C6A30:: @ 0x86C6A30 + .incbin "baserom.gba", 0x6C6A30, 0xD2C + +gSong_86C775C:: @ 0x86C775C + .incbin "baserom.gba", 0x6C775C, 0x54 + +gSong_86C77B0:: @ 0x86C77B0 + .incbin "baserom.gba", 0x6C77B0, 0xC14 + +gSong_86C83C4:: @ 0x86C83C4 + .incbin "baserom.gba", 0x6C83C4, 0x3C0 + +gSong_86C8784:: @ 0x86C8784 + .incbin "baserom.gba", 0x6C8784, 0x3B8 + +gSong_86C8B3C:: @ 0x86C8B3C + .incbin "baserom.gba", 0x6C8B3C, 0x4A8 + +gSong_86C8FE4:: @ 0x86C8FE4 + .incbin "baserom.gba", 0x6C8FE4, 0xABC + +gSong_86C9AA0:: @ 0x86C9AA0 + .incbin "baserom.gba", 0x6C9AA0, 0x1218 + +gSong_86CACB8:: @ 0x86CACB8 + .incbin "baserom.gba", 0x6CACB8, 0x1450 + +gSong_86CC108:: @ 0x86CC108 + .incbin "baserom.gba", 0x6CC108, 0x123C + +gSong_86CD344:: @ 0x86CD344 + .incbin "baserom.gba", 0x6CD344, 0x4010 + +gSong_86D1354:: @ 0x86D1354 + .incbin "baserom.gba", 0x6D1354, 0xA88 + +gSong_86D1DDC:: @ 0x86D1DDC + .incbin "baserom.gba", 0x6D1DDC, 0x870 + +gSong_86D264C:: @ 0x86D264C + .incbin "baserom.gba", 0x6D264C, 0xF3C + +gSong_86D3588:: @ 0x86D3588 + .incbin "baserom.gba", 0x6D3588, 0xD74 + +gSong_86D42FC:: @ 0x86D42FC + .incbin "baserom.gba", 0x6D42FC, 0xD40 + +gSong_86D503C:: @ 0x86D503C + .incbin "baserom.gba", 0x6D503C, 0x1AE4 + +gSong_86D6B20:: @ 0x86D6B20 + .incbin "baserom.gba", 0x6D6B20, 0x2B74 + +gSong_86D9694:: @ 0x86D9694 + .incbin "baserom.gba", 0x6D9694, 0x117C + +gSong_86DA810:: @ 0x86DA810 + .incbin "baserom.gba", 0x6DA810, 0x27D0 + +gSong_86DCFE0:: @ 0x86DCFE0 + .incbin "baserom.gba", 0x6DCFE0, 0x864 + +gSong_86DD844:: @ 0x86DD844 + .incbin "baserom.gba", 0x6DD844, 0x79C + +gSong_86DDFE0:: @ 0x86DDFE0 + .incbin "baserom.gba", 0x6DDFE0, 0x98C + +gSong_86DE96C:: @ 0x86DE96C + .incbin "baserom.gba", 0x6DE96C, 0xA60 + +gSong_86DF3CC:: @ 0x86DF3CC + .incbin "baserom.gba", 0x6DF3CC, 0x12A4 + +gSong_86E0670:: @ 0x86E0670 + .incbin "baserom.gba", 0x6E0670, 0x978 + +gSong_86E0FE8:: @ 0x86E0FE8 + .incbin "baserom.gba", 0x6E0FE8, 0x8CC + +gSong_86E18B4:: @ 0x86E18B4 + .incbin "baserom.gba", 0x6E18B4, 0x16F4 + +gSong_86E2FA8:: @ 0x86E2FA8 + .incbin "baserom.gba", 0x6E2FA8, 0xA3C + +gSong_86E39E4:: @ 0x86E39E4 + .incbin "baserom.gba", 0x6E39E4, 0xB80 + +gSong_86E4564:: @ 0x86E4564 + .incbin "baserom.gba", 0x6E4564, 0x1180 + +gSong_86E56E4:: @ 0x86E56E4 + .incbin "baserom.gba", 0x6E56E4, 0x538 + +gSong_86E5C1C:: @ 0x86E5C1C + .incbin "baserom.gba", 0x6E5C1C, 0xEF0 + +gSong_86E6B0C:: @ 0x86E6B0C + .incbin "baserom.gba", 0x6E6B0C, 0xE14 + +gSong_86E7920:: @ 0x86E7920 + .incbin "baserom.gba", 0x6E7920, 0xEF0 + +gSong_86E8810:: @ 0x86E8810 + .incbin "baserom.gba", 0x6E8810, 0x83C + +gSong_86E904C:: @ 0x86E904C + .incbin "baserom.gba", 0x6E904C, 0x7D4 + +gSong_86E9820:: @ 0x86E9820 + .incbin "baserom.gba", 0x6E9820, 0x200 + +gSong_86E9A20:: @ 0x86E9A20 + .incbin "baserom.gba", 0x6E9A20, 0x200 + +gSong_86E9C20:: @ 0x86E9C20 + .incbin "baserom.gba", 0x6E9C20, 0x370 + +gSong_86E9F90:: @ 0x86E9F90 + .incbin "baserom.gba", 0x6E9F90, 0x170 + +gSong_86EA100:: @ 0x86EA100 + .incbin "baserom.gba", 0x6EA100, 0x904 + +gSong_86EAA04:: @ 0x86EAA04 + .incbin "baserom.gba", 0x6EAA04, 0x438 + +gSong_86EAE3C:: @ 0x86EAE3C + .incbin "baserom.gba", 0x6EAE3C, 0x8C + +gSong_86EAEC8:: @ 0x86EAEC8 + .incbin "baserom.gba", 0x6EAEC8, 0x1D0 + +gSong_86EB098:: @ 0x86EB098 + .incbin "baserom.gba", 0x6EB098, 0xBC + +gSong_86EB154:: @ 0x86EB154 + .incbin "baserom.gba", 0x6EB154, 0xF74 + +gSong_86EC0C8:: @ 0x86EC0C8 + .incbin "baserom.gba", 0x6EC0C8, 0xF7C + +gSong_86ED044:: @ 0x86ED044 + .incbin "baserom.gba", 0x6ED044, 0xA5C + +gSong_86EDAA0:: @ 0x86EDAA0 + .incbin "baserom.gba", 0x6EDAA0, 0x480 + +gSong_86EDF20:: @ 0x86EDF20 + .incbin "baserom.gba", 0x6EDF20, 0xF2C + +gSong_86EEE4C:: @ 0x86EEE4C + .incbin "baserom.gba", 0x6EEE4C, 0x1404 + +gSong_86F0250:: @ 0x86F0250 + .incbin "baserom.gba", 0x6F0250, 0x4F0 + +gSong_86F0740:: @ 0x86F0740 + .incbin "baserom.gba", 0x6F0740, 0xEC0 + +gSong_86F1600:: @ 0x86F1600 + .incbin "baserom.gba", 0x6F1600, 0x121C + +gSong_86F281C:: @ 0x86F281C + .incbin "baserom.gba", 0x6F281C, 0xEF4 + +gSong_86F3710:: @ 0x86F3710 + .incbin "baserom.gba", 0x6F3710, 0x1028 + +gSong_86F4738:: @ 0x86F4738 + .incbin "baserom.gba", 0x6F4738, 0xF30 + +gSong_86F5668:: @ 0x86F5668 + .incbin "baserom.gba", 0x6F5668, 0x1C4 + +gSong_86F582C:: @ 0x86F582C + .incbin "baserom.gba", 0x6F582C, 0x2188 + +gSong_86F79B4:: @ 0x86F79B4 + .incbin "baserom.gba", 0x6F79B4, 0x1178 + +gSong_86F8B2C:: @ 0x86F8B2C + .incbin "baserom.gba", 0x6F8B2C, 0x12B8 + +gSong_86F9DE4:: @ 0x86F9DE4 + .incbin "baserom.gba", 0x6F9DE4, 0x444 + +gSong_86FA228:: @ 0x86FA228 + .incbin "baserom.gba", 0x6FA228, 0x948 + +gSong_86FAB70:: @ 0x86FAB70 + .incbin "baserom.gba", 0x6FAB70, 0xA00 + +gSong_86FB570:: @ 0x86FB570 + .incbin "baserom.gba", 0x6FB570, 0x840 + +gSong_86FBDB0:: @ 0x86FBDB0 + .incbin "baserom.gba", 0x6FBDB0, 0xDC + +gSong_86FBE8C:: @ 0x86FBE8C + .incbin "baserom.gba", 0x6FBE8C, 0x18 diff --git a/sound/music_player_table.inc b/sound/music_player_table.inc new file mode 100644 index 000000000..a82eef72b --- /dev/null +++ b/sound/music_player_table.inc @@ -0,0 +1,6 @@ + .align 2 +gMPlayTable:: @ 84A329C + music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 10, 0 + music_player gMPlayInfo_SE1, gMPlayTrack_SE1, 3, 1 + music_player gMPlayInfo_SE2, gMPlayTrack_SE2, 9, 1 + music_player gMPlayInfo_SE3, gMPlayTrack_SE3, 1, 0 diff --git a/sound/song_table.inc b/sound/song_table.inc new file mode 100644 index 000000000..39f1a795e --- /dev/null +++ b/sound/song_table.inc @@ -0,0 +1,351 @@ +gSongTable:: @ 84A32CC + song gSong_86B5640, 0, 0 + song gSong_86B5660, 1, 1 + song gSong_86B568C, 1, 1 + song gSong_86B56B0, 1, 1 + song gSong_86B56F4, 1, 1 + song gSong_86B5720, 2, 2 + song gSong_86B573C, 1, 1 + song gSong_86B5758, 2, 2 + song gSong_86B5774, 1, 1 + song gSong_86B57A8, 1, 1 + song gSong_86B57CC, 1, 1 + song gSong_86B57E8, 1, 1 + song gSong_86B5814, 1, 1 + song gSong_86B5860, 1, 1 + song gSong_86B58DC, 1, 1 + song gSong_86B5930, 1, 1 + song gSong_86B5984, 1, 1 + song gSong_86B59D4, 1, 1 + song gSong_86B59F0, 1, 1 + song gSong_86B5A44, 1, 1 + song gSong_86B5A8C, 1, 1 + song gSong_86B5AB8, 1, 1 + song gSong_86B5ADC, 1, 1 + song gSong_86B5B00, 1, 1 + song gSong_86B5B84, 2, 2 + song gSong_86B5BB0, 1, 1 + song gSong_86B5BE0, 1, 1 + song gSong_86B5D60, 1, 1 + song gSong_86B5D84, 1, 1 + song gSong_86B5DA8, 1, 1 + song gSong_86B5DCC, 1, 1 + song gSong_86B5DFC, 1, 1 + song gSong_86B5E20, 1, 1 + song gSong_86B5E6C, 1, 1 + song gSong_86B5EA4, 1, 1 + song gSong_86B5EF8, 1, 1 + song gSong_86B5F34, 1, 1 + song gSong_86B5F8C, 1, 1 + song gSong_86B5FD0, 2, 2 + song gSong_86B600C, 1, 1 + song gSong_86B604C, 1, 1 + song gSong_86B6078, 1, 1 + song gSong_86B60B4, 1, 1 + song gSong_86B6160, 1, 1 + song gSong_86B61D8, 1, 1 + song gSong_86B6204, 2, 2 + song gSong_86B6238, 1, 1 + song gSong_86B6264, 2, 2 + song gSong_86B62A8, 1, 1 + song gSong_86B62D4, 1, 1 + song gSong_86B6300, 1, 1 + song gSong_86B632C, 1, 1 + song gSong_86B6358, 1, 1 + song gSong_86B63AC, 2, 2 + song gSong_86B63F0, 1, 1 + song gSong_86B6424, 2, 2 + song gSong_86B645C, 2, 2 + song gSong_86B6494, 2, 2 + song gSong_86B64CC, 2, 2 + song gSong_86B6504, 2, 2 + song gSong_86B653C, 2, 2 + song gSong_86B6574, 2, 2 + song gSong_86B65AC, 2, 2 + song gSong_86B65E0, 2, 2 + song gSong_86B6604, 2, 2 + song gSong_86B6650, 1, 1 + song gSong_86B66B0, 1, 1 + song gSong_86B66E4, 2, 2 + song gSong_86B6714, 2, 2 + song gSong_86B674C, 2, 2 + song gSong_86B6790, 2, 2 + song gSong_86B67C0, 2, 2 + song gSong_86B67E8, 1, 1 + song gSong_86B6850, 1, 1 + song gSong_86B688C, 3, 3 + song gSong_86B68CC, 3, 3 + song gSong_86B6908, 3, 3 + song gSong_86B6948, 3, 3 + song gSong_86B6984, 3, 3 + song gSong_86B69C4, 3, 3 + song gSong_86B6A2C, 1, 1 + song gSong_86B6A7C, 1, 1 + song gSong_86B6AB8, 1, 1 + song gSong_86B6AE8, 3, 3 + song gSong_86B6B34, 1, 1 + song gSong_86B6B58, 2, 2 + song gSong_86B6BAC, 2, 2 + song gSong_86B6C40, 1, 1 + song gSong_86B6C7C, 1, 1 + song gSong_86B6CA0, 1, 1 + song gSong_86B6D04, 1, 1 + song gSong_86B6D6C, 1, 1 + song gSong_86B6D94, 1, 1 + song gSong_86B6DC8, 1, 1 + song gSong_86B6DF4, 1, 1 + song gSong_86B6E70, 1, 1 + song gSong_86B6F30, 1, 1 + song gSong_86B7018, 1, 1 + song gSong_86B7130, 1, 1 + song gSong_86B7154, 1, 1 + song gSong_86B7268, 1, 1 + song gSong_86B7294, 1, 1 + song gSong_86B72C8, 1, 1 + song gSong_86B732C, 1, 1 + song gSong_86B7394, 1, 1 + song gSong_86B7590, 1, 1 + song gSong_86B761C, 1, 1 + song gSong_86B766C, 1, 1 + song gSong_86B7698, 1, 1 + song gSong_86B76B8, 2, 2 + song gSong_86B76F4, 1, 1 + song gSong_86B7788, 2, 2 + song gSong_86B77F4, 1, 1 + song gSong_86B783C, 1, 1 + song gSong_86B7900, 1, 1 + song gSong_86B7954, 1, 1 + song gSong_86B79D4, 1, 1 + song gSong_86B7A0C, 1, 1 + song gSong_86B7A40, 1, 1 + song gSong_86B7A80, 1, 1 + song gSong_86B7AF8, 1, 1 + song gSong_86B7B78, 1, 1 + song gSong_86B7BD0, 1, 1 + song gSong_86B7C74, 1, 1 + song gSong_86B7CC0, 1, 1 + song gSong_86B7D3C, 2, 2 + song gSong_86B7D88, 2, 2 + song gSong_86B7DBC, 1, 1 + song gSong_86B7E08, 1, 1 + song gSong_86B7E68, 1, 1 + song gSong_86B7EB4, 1, 1 + song gSong_86B7F38, 1, 1 + song gSong_86B7F8C, 1, 1 + song gSong_86B8058, 1, 1 + song gSong_86B80F8, 1, 1 + song gSong_86B8134, 1, 1 + song gSong_86B8180, 1, 1 + song gSong_86B8204, 1, 1 + song gSong_86B8274, 1, 1 + song gSong_86B8348, 1, 1 + song gSong_86B83EC, 1, 1 + song gSong_86B845C, 1, 1 + song gSong_86B84D0, 1, 1 + song gSong_86B85B0, 2, 2 + song gSong_86B85EC, 1, 1 + song gSong_86B8654, 2, 2 + song gSong_86B86D0, 1, 1 + song gSong_86B871C, 1, 1 + song gSong_86B8764, 1, 1 + song gSong_86B87CC, 1, 1 + song gSong_86B8868, 1, 1 + song gSong_86B89CC, 1, 1 + song gSong_86B8A34, 1, 1 + song gSong_86B8A78, 1, 1 + song gSong_86B8AF4, 1, 1 + song gSong_86B8B60, 1, 1 + song gSong_86B8BE0, 1, 1 + song gSong_86B8C60, 1, 1 + song gSong_86B8CFC, 1, 1 + song gSong_86B8D48, 1, 1 + song gSong_86B8D88, 2, 2 + song gSong_86B8E00, 1, 1 + song gSong_86B8E3C, 1, 1 + song gSong_86B8E94, 2, 2 + song gSong_86B8F5C, 1, 1 + song gSong_86B9050, 1, 1 + song gSong_86B9160, 1, 1 + song gSong_86B91E8, 1, 1 + song gSong_86B9230, 1, 1 + song gSong_86B9290, 1, 1 + song gSong_86B92DC, 1, 1 + song gSong_86B9364, 1, 1 + song gSong_86B9420, 1, 1 + song gSong_86B9478, 1, 1 + song gSong_86B94F4, 1, 1 + song gSong_86B95BC, 1, 1 + song gSong_86B9678, 1, 1 + song gSong_86B9764, 1, 1 + song gSong_86B97A4, 1, 1 + song gSong_86B9800, 1, 1 + song gSong_86B9838, 1, 1 + song gSong_86B98EC, 1, 1 + song gSong_86B998C, 1, 1 + song gSong_86B99F4, 1, 1 + song gSong_86B9B18, 1, 1 + song gSong_86B9B94, 1, 1 + song gSong_86B9BF0, 1, 1 + song gSong_86B9C28, 1, 1 + song gSong_86B9C78, 1, 1 + song gSong_86B9D04, 1, 1 + song gSong_86B9D68, 1, 1 + song gSong_86B9DE0, 1, 1 + song gSong_86B9E48, 1, 1 + song gSong_86B9F9C, 1, 1 + song gSong_86BA070, 2, 2 + song gSong_86BA180, 1, 1 + song gSong_86BA264, 1, 1 + song gSong_86BA344, 1, 1 + song gSong_86BA390, 1, 1 + song gSong_86BA41C, 1, 1 + song gSong_86BA5AC, 1, 1 + song gSong_86BA74C, 1, 1 + song gSong_86BA7BC, 2, 2 + song gSong_86BA80C, 1, 1 + song gSong_86BA930, 1, 1 + song gSong_86BA9B0, 1, 1 + song gSong_86BAAA0, 1, 1 + song gSong_86BAB04, 1, 1 + song gSong_86BAB60, 1, 1 + song gSong_86BAC14, 1, 1 + song gSong_86BAE10, 1, 1 + song gSong_86BAF30, 1, 1 + song gSong_86BB0A0, 1, 1 + song gSong_86BB110, 1, 1 + song gSong_86BB1A8, 1, 1 + song gSong_86BB1E0, 1, 1 + song gSong_86BB2B8, 2, 2 + song gSong_86BB390, 1, 1 + song gSong_86BB43C, 1, 1 + song gSong_86BB4D4, 1, 1 + song gSong_86BB56C, 1, 1 + song gSong_86BB614, 1, 1 + song gSong_86BB660, 1, 1 + song gSong_86BB75C, 1, 1 + song gSong_86BB7F0, 1, 1 + song gSong_86BB854, 1, 1 + song gSong_86BB8F0, 1, 1 + song gSong_86BBAF8, 2, 2 + song gSong_86BBBF4, 2, 2 + song gSong_86BBCE4, 1, 1 + song gSong_86BBD68, 1, 1 + song gSong_86BBDDC, 2, 2 + song gSong_86BBF5C, 1, 1 + song gSong_86BC060, 1, 1 + song gSong_86BC0C0, 1, 1 + song gSong_86BC130, 1, 1 + song gSong_86BC24C, 2, 2 + song gSong_86BC2F0, 1, 1 + song gSong_86BC460, 1, 1 + song gSong_86BC594, 1, 1 + song gSong_86BC618, 1, 1 + song gSong_86BC670, 1, 1 + song gSong_86BC6A0, 1, 1 + song gSong_86BC6D8, 1, 1 + song gSong_86BC764, 1, 1 + song gSong_86BC79C, 1, 1 + song gSong_86BC7E0, 1, 1 + song gSong_86BC820, 1, 1 + song gSong_86BC848, 1, 1 + song gSong_86BC900, 1, 1 + song gSong_86BC974, 1, 1 + song gSong_86BC9E0, 1, 1 + song gSong_86BCA28, 1, 1 + song gSong_86BCB08, 1, 1 + song gSong_86BCBC8, 1, 1 + song gSong_86BCBFC, 1, 1 + song gSong_86BCCB8, 2, 2 + song gSong_86BCD98, 2, 2 + song gSong_86BCEE4, 2, 2 + song gSong_86BD080, 2, 2 + song gSong_86BD358, 2, 2 + song gSong_86BD4E4, 2, 2 + song gSong_86BD5BC, 2, 2 + song gSong_86BD628, 2, 2 + song gSong_86BDB98, 0, 0 + song gSong_86BE9C4, 0, 0 + song gSong_86BFA68, 0, 0 + song gSong_86BFDC0, 0, 0 + song gSong_86BFFE0, 2, 2 + song gSong_86C0120, 2, 2 + song gSong_86C0204, 2, 2 + song gSong_86C02FC, 2, 2 + song gSong_86C07E4, 0, 0 + song gSong_86C1720, 0, 0 + song gSong_86C3344, 0, 0 + song gSong_86C3D50, 0, 0 + song gSong_86C3FE8, 2, 2 + song gSong_86C4AE8, 0, 0 + song gSong_86C5B5C, 0, 0 + song gSong_86C6A30, 0, 0 + song gSong_86C775C, 0, 0 + song gSong_86C77B0, 0, 0 + song gSong_86C83C4, 0, 0 + song gSong_86C8784, 0, 0 + song gSong_86C8B3C, 0, 0 + song gSong_86C8FE4, 0, 0 + song gSong_86C9AA0, 0, 0 + song gSong_86CACB8, 0, 0 + song gSong_86CC108, 0, 0 + song gSong_86CD344, 0, 0 + song gSong_86D1354, 0, 0 + song gSong_86D1DDC, 0, 0 + song gSong_86D264C, 0, 0 + song gSong_86D3588, 0, 0 + song gSong_86D42FC, 0, 0 + song gSong_86D503C, 0, 0 + song gSong_86D6B20, 0, 0 + song gSong_86D9694, 0, 0 + song gSong_86DA810, 0, 0 + song gSong_86DCFE0, 0, 0 + song gSong_86DD844, 0, 0 + song gSong_86DDFE0, 0, 0 + song gSong_86DE96C, 0, 0 + song gSong_86DF3CC, 0, 0 + song gSong_86E0670, 0, 0 + song gSong_86E0FE8, 0, 0 + song gSong_86E18B4, 0, 0 + song gSong_86E2FA8, 0, 0 + song gSong_86E39E4, 0, 0 + song gSong_86E4564, 0, 0 + song gSong_86E56E4, 0, 0 + song gSong_86E5C1C, 0, 0 + song gSong_86E6B0C, 0, 0 + song gSong_86E7920, 0, 0 + song gSong_86E8810, 0, 0 + song gSong_86E904C, 0, 0 + song gSong_86E9820, 0, 0 + song gSong_86E9A20, 2, 2 + song gSong_86E9C20, 2, 2 + song gSong_86E9F90, 2, 2 + song gSong_86EA100, 2, 2 + song gSong_86EAA04, 0, 0 + song gSong_86EAE3C, 0, 0 + song gSong_86EAEC8, 0, 0 + song gSong_86EB098, 0, 0 + song gSong_86EB154, 0, 0 + song gSong_86EC0C8, 0, 0 + song gSong_86ED044, 0, 0 + song gSong_86EDAA0, 0, 0 + song gSong_86EDF20, 0, 0 + song gSong_86EEE4C, 0, 0 + song gSong_86F0250, 0, 0 + song gSong_86F0740, 0, 0 + song gSong_86F1600, 0, 0 + song gSong_86F281C, 0, 0 + song gSong_86F3710, 0, 0 + song gSong_86F4738, 0, 0 + song gSong_86F5668, 0, 0 + song gSong_86F582C, 2, 2 + song gSong_86F79B4, 0, 0 + song gSong_86F8B2C, 0, 0 + song gSong_86F9DE4, 0, 0 + song gSong_86FA228, 0, 0 + song gSong_86FAB70, 0, 0 + song gSong_86FB570, 0, 0 + song gSong_86FBDB0, 0, 0 + song gSong_86FBE8C, 0, 0 + +dummy_song_header: @ 84A3DA4 + .byte 0, 0, 0, 0 From 330746183a04cdc1efe36a430fcee5cc5289b60c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 Apr 2019 21:15:54 -0400 Subject: [PATCH 102/318] Port cries from Ruby --- data/sound_data.s | 1560 ++++++++++++++++- sound/direct_sound_samples/cry_abra.aif | Bin 0 -> 11660 bytes sound/direct_sound_samples/cry_absol.aif | Bin 0 -> 5256 bytes sound/direct_sound_samples/cry_aerodactyl.aif | Bin 0 -> 12142 bytes sound/direct_sound_samples/cry_aggron.aif | Bin 0 -> 12776 bytes sound/direct_sound_samples/cry_aipom.aif | Bin 0 -> 7058 bytes sound/direct_sound_samples/cry_alakazam.aif | Bin 0 -> 15740 bytes sound/direct_sound_samples/cry_altaria.aif | Bin 0 -> 5564 bytes sound/direct_sound_samples/cry_ampharos.aif | Bin 0 -> 8242 bytes sound/direct_sound_samples/cry_anorith.aif | Bin 0 -> 5862 bytes sound/direct_sound_samples/cry_arbok.aif | Bin 0 -> 9648 bytes sound/direct_sound_samples/cry_arcanine.aif | Bin 0 -> 8602 bytes sound/direct_sound_samples/cry_ariados.aif | Bin 0 -> 6170 bytes sound/direct_sound_samples/cry_armaldo.aif | Bin 0 -> 11380 bytes sound/direct_sound_samples/cry_aron.aif | Bin 0 -> 4600 bytes sound/direct_sound_samples/cry_articuno.aif | Bin 0 -> 11792 bytes sound/direct_sound_samples/cry_azumarill.aif | Bin 0 -> 8452 bytes sound/direct_sound_samples/cry_azurill.aif | Bin 0 -> 5212 bytes sound/direct_sound_samples/cry_bagon.aif | Bin 0 -> 3934 bytes sound/direct_sound_samples/cry_baltoy.aif | Bin 0 -> 6264 bytes sound/direct_sound_samples/cry_banette.aif | Bin 0 -> 6334 bytes sound/direct_sound_samples/cry_barboach.aif | Bin 0 -> 4632 bytes sound/direct_sound_samples/cry_bayleef.aif | Bin 0 -> 4414 bytes sound/direct_sound_samples/cry_beautifly.aif | Bin 0 -> 4128 bytes sound/direct_sound_samples/cry_beedrill.aif | Bin 0 -> 9656 bytes sound/direct_sound_samples/cry_beldum.aif | Bin 0 -> 4828 bytes sound/direct_sound_samples/cry_bellossom.aif | Bin 0 -> 7042 bytes sound/direct_sound_samples/cry_bellsprout.aif | Bin 0 -> 3792 bytes sound/direct_sound_samples/cry_blastoise.aif | Bin 0 -> 9622 bytes sound/direct_sound_samples/cry_blaziken.aif | Bin 0 -> 15690 bytes sound/direct_sound_samples/cry_blissey.aif | Bin 0 -> 8278 bytes sound/direct_sound_samples/cry_breloom.aif | Bin 0 -> 6376 bytes sound/direct_sound_samples/cry_bulbasaur.aif | Bin 0 -> 8266 bytes sound/direct_sound_samples/cry_butterfree.aif | Bin 0 -> 5026 bytes sound/direct_sound_samples/cry_cacnea.aif | Bin 0 -> 4488 bytes sound/direct_sound_samples/cry_cacturne.aif | Bin 0 -> 11310 bytes sound/direct_sound_samples/cry_camerupt.aif | Bin 0 -> 11526 bytes sound/direct_sound_samples/cry_carvanha.aif | Bin 0 -> 5048 bytes sound/direct_sound_samples/cry_cascoon.aif | Bin 0 -> 8126 bytes sound/direct_sound_samples/cry_castform.aif | Bin 0 -> 6302 bytes sound/direct_sound_samples/cry_caterpie.aif | Bin 0 -> 4192 bytes sound/direct_sound_samples/cry_celebi.aif | Bin 0 -> 7230 bytes sound/direct_sound_samples/cry_chansey.aif | Bin 0 -> 7390 bytes sound/direct_sound_samples/cry_charizard.aif | Bin 0 -> 9622 bytes sound/direct_sound_samples/cry_charmander.aif | Bin 0 -> 7216 bytes sound/direct_sound_samples/cry_charmeleon.aif | Bin 0 -> 7248 bytes sound/direct_sound_samples/cry_chikorita.aif | Bin 0 -> 2654 bytes sound/direct_sound_samples/cry_chimecho.aif | Bin 0 -> 5040 bytes sound/direct_sound_samples/cry_chinchou.aif | Bin 0 -> 6346 bytes sound/direct_sound_samples/cry_clamperl.aif | Bin 0 -> 9142 bytes sound/direct_sound_samples/cry_claydol.aif | Bin 0 -> 9668 bytes sound/direct_sound_samples/cry_clefable.aif | Bin 0 -> 5294 bytes sound/direct_sound_samples/cry_clefairy.aif | Bin 0 -> 4234 bytes sound/direct_sound_samples/cry_cleffa.aif | Bin 0 -> 2992 bytes sound/direct_sound_samples/cry_cloyster.aif | Bin 0 -> 10354 bytes sound/direct_sound_samples/cry_combusken.aif | Bin 0 -> 14360 bytes sound/direct_sound_samples/cry_corphish.aif | Bin 0 -> 6010 bytes sound/direct_sound_samples/cry_corsola.aif | Bin 0 -> 6440 bytes sound/direct_sound_samples/cry_cradily.aif | Bin 0 -> 14542 bytes sound/direct_sound_samples/cry_crawdaunt.aif | Bin 0 -> 12316 bytes sound/direct_sound_samples/cry_crobat.aif | Bin 0 -> 11562 bytes sound/direct_sound_samples/cry_croconaw.aif | Bin 0 -> 10096 bytes sound/direct_sound_samples/cry_cubone.aif | Bin 0 -> 7558 bytes sound/direct_sound_samples/cry_cyndaquil.aif | Bin 0 -> 3528 bytes sound/direct_sound_samples/cry_delcatty.aif | Bin 0 -> 10518 bytes sound/direct_sound_samples/cry_delibird.aif | Bin 0 -> 8094 bytes sound/direct_sound_samples/cry_deoxys.aif | Bin 0 -> 10388 bytes sound/direct_sound_samples/cry_dewgong.aif | Bin 0 -> 10546 bytes sound/direct_sound_samples/cry_diglett.aif | Bin 0 -> 9698 bytes sound/direct_sound_samples/cry_ditto.aif | Bin 0 -> 5566 bytes sound/direct_sound_samples/cry_dodrio.aif | Bin 0 -> 9712 bytes sound/direct_sound_samples/cry_doduo.aif | Bin 0 -> 9616 bytes sound/direct_sound_samples/cry_donphan.aif | Bin 0 -> 8554 bytes sound/direct_sound_samples/cry_dragonair.aif | Bin 0 -> 8318 bytes sound/direct_sound_samples/cry_dragonite.aif | Bin 0 -> 9502 bytes sound/direct_sound_samples/cry_dratini.aif | Bin 0 -> 5812 bytes sound/direct_sound_samples/cry_drowzee.aif | Bin 0 -> 14494 bytes sound/direct_sound_samples/cry_dugtrio.aif | Bin 0 -> 9686 bytes sound/direct_sound_samples/cry_dunsparce.aif | Bin 0 -> 7926 bytes sound/direct_sound_samples/cry_dusclops.aif | Bin 0 -> 6858 bytes sound/direct_sound_samples/cry_duskull.aif | Bin 0 -> 5310 bytes sound/direct_sound_samples/cry_dustox.aif | Bin 0 -> 6338 bytes sound/direct_sound_samples/cry_eevee.aif | Bin 0 -> 7104 bytes sound/direct_sound_samples/cry_ekans.aif | Bin 0 -> 9626 bytes sound/direct_sound_samples/cry_electabuzz.aif | Bin 0 -> 15380 bytes sound/direct_sound_samples/cry_electrike.aif | Bin 0 -> 6186 bytes sound/direct_sound_samples/cry_electrode.aif | Bin 0 -> 12564 bytes sound/direct_sound_samples/cry_elekid.aif | Bin 0 -> 5284 bytes sound/direct_sound_samples/cry_entei.aif | Bin 0 -> 10198 bytes sound/direct_sound_samples/cry_espeon.aif | Bin 0 -> 9828 bytes sound/direct_sound_samples/cry_exeggcute.aif | Bin 0 -> 9416 bytes sound/direct_sound_samples/cry_exeggutor.aif | Bin 0 -> 15880 bytes sound/direct_sound_samples/cry_exploud.aif | Bin 0 -> 14086 bytes sound/direct_sound_samples/cry_farfetchd.aif | Bin 0 -> 3766 bytes sound/direct_sound_samples/cry_fearow.aif | Bin 0 -> 8602 bytes sound/direct_sound_samples/cry_feebas.aif | Bin 0 -> 3932 bytes sound/direct_sound_samples/cry_feraligatr.aif | Bin 0 -> 12712 bytes sound/direct_sound_samples/cry_flaaffy.aif | Bin 0 -> 6854 bytes sound/direct_sound_samples/cry_flareon.aif | Bin 0 -> 7748 bytes sound/direct_sound_samples/cry_flygon.aif | Bin 0 -> 12974 bytes sound/direct_sound_samples/cry_forretress.aif | Bin 0 -> 9990 bytes sound/direct_sound_samples/cry_furret.aif | Bin 0 -> 3168 bytes sound/direct_sound_samples/cry_gardevoir.aif | Bin 0 -> 12154 bytes sound/direct_sound_samples/cry_gastly.aif | Bin 0 -> 11620 bytes sound/direct_sound_samples/cry_gengar.aif | Bin 0 -> 7372 bytes sound/direct_sound_samples/cry_geodude.aif | Bin 0 -> 11816 bytes sound/direct_sound_samples/cry_girafarig.aif | Bin 0 -> 7346 bytes sound/direct_sound_samples/cry_glalie.aif | Bin 0 -> 10420 bytes sound/direct_sound_samples/cry_gligar.aif | Bin 0 -> 6068 bytes sound/direct_sound_samples/cry_gloom.aif | Bin 0 -> 6246 bytes sound/direct_sound_samples/cry_golbat.aif | Bin 0 -> 9674 bytes sound/direct_sound_samples/cry_goldeen.aif | Bin 0 -> 4936 bytes sound/direct_sound_samples/cry_golduck.aif | Bin 0 -> 5646 bytes sound/direct_sound_samples/cry_golem.aif | Bin 0 -> 7080 bytes sound/direct_sound_samples/cry_gorebyss.aif | Bin 0 -> 11176 bytes sound/direct_sound_samples/cry_granbull.aif | Bin 0 -> 11782 bytes sound/direct_sound_samples/cry_graveler.aif | Bin 0 -> 13900 bytes sound/direct_sound_samples/cry_grimer.aif | Bin 0 -> 5274 bytes sound/direct_sound_samples/cry_groudon.aif | Bin 0 -> 18438 bytes sound/direct_sound_samples/cry_grovyle.aif | Bin 0 -> 10198 bytes sound/direct_sound_samples/cry_growlithe.aif | Bin 0 -> 6696 bytes sound/direct_sound_samples/cry_grumpig.aif | Bin 0 -> 6318 bytes sound/direct_sound_samples/cry_gulpin.aif | Bin 0 -> 4028 bytes sound/direct_sound_samples/cry_gyarados.aif | Bin 0 -> 10078 bytes sound/direct_sound_samples/cry_hariyama.aif | Bin 0 -> 8348 bytes sound/direct_sound_samples/cry_haunter.aif | Bin 0 -> 11714 bytes sound/direct_sound_samples/cry_heracross.aif | Bin 0 -> 9144 bytes sound/direct_sound_samples/cry_hitmonchan.aif | Bin 0 -> 8906 bytes sound/direct_sound_samples/cry_hitmonlee.aif | Bin 0 -> 9318 bytes sound/direct_sound_samples/cry_hitmontop.aif | Bin 0 -> 6936 bytes sound/direct_sound_samples/cry_ho_oh.aif | Bin 0 -> 11260 bytes sound/direct_sound_samples/cry_hoothoot.aif | Bin 0 -> 5458 bytes sound/direct_sound_samples/cry_hoppip.aif | Bin 0 -> 4226 bytes sound/direct_sound_samples/cry_horsea.aif | Bin 0 -> 4754 bytes sound/direct_sound_samples/cry_houndoom.aif | Bin 0 -> 9820 bytes sound/direct_sound_samples/cry_houndour.aif | Bin 0 -> 6332 bytes sound/direct_sound_samples/cry_huntail.aif | Bin 0 -> 7944 bytes sound/direct_sound_samples/cry_hypno.aif | Bin 0 -> 14450 bytes sound/direct_sound_samples/cry_igglybuff.aif | Bin 0 -> 3518 bytes sound/direct_sound_samples/cry_illumise.aif | Bin 0 -> 8536 bytes sound/direct_sound_samples/cry_ivysaur.aif | Bin 0 -> 8270 bytes sound/direct_sound_samples/cry_jigglypuff.aif | Bin 0 -> 2720 bytes sound/direct_sound_samples/cry_jirachi.aif | Bin 0 -> 6758 bytes sound/direct_sound_samples/cry_jolteon.aif | Bin 0 -> 7904 bytes sound/direct_sound_samples/cry_jumpluff.aif | Bin 0 -> 8106 bytes sound/direct_sound_samples/cry_jynx.aif | Bin 0 -> 23606 bytes sound/direct_sound_samples/cry_kabuto.aif | Bin 0 -> 6170 bytes sound/direct_sound_samples/cry_kabutops.aif | Bin 0 -> 6867 bytes sound/direct_sound_samples/cry_kadabra.aif | Bin 0 -> 13408 bytes sound/direct_sound_samples/cry_kakuna.aif | Bin 0 -> 9104 bytes sound/direct_sound_samples/cry_kangaskhan.aif | Bin 0 -> 9334 bytes sound/direct_sound_samples/cry_kecleon.aif | Bin 0 -> 4202 bytes sound/direct_sound_samples/cry_kingdra.aif | Bin 0 -> 6922 bytes sound/direct_sound_samples/cry_kingler.aif | Bin 0 -> 12132 bytes sound/direct_sound_samples/cry_kirlia.aif | Bin 0 -> 6100 bytes sound/direct_sound_samples/cry_koffing.aif | Bin 0 -> 10154 bytes sound/direct_sound_samples/cry_krabby.aif | Bin 0 -> 12112 bytes sound/direct_sound_samples/cry_kyogre.aif | Bin 0 -> 17782 bytes sound/direct_sound_samples/cry_lairon.aif | Bin 0 -> 10392 bytes sound/direct_sound_samples/cry_lanturn.aif | Bin 0 -> 5282 bytes sound/direct_sound_samples/cry_lapras.aif | Bin 0 -> 7408 bytes sound/direct_sound_samples/cry_larvitar.aif | Bin 0 -> 6350 bytes sound/direct_sound_samples/cry_latias.aif | Bin 0 -> 6098 bytes sound/direct_sound_samples/cry_latios.aif | Bin 0 -> 10958 bytes sound/direct_sound_samples/cry_ledian.aif | Bin 0 -> 4214 bytes sound/direct_sound_samples/cry_ledyba.aif | Bin 0 -> 3506 bytes sound/direct_sound_samples/cry_lickitung.aif | Bin 0 -> 7571 bytes sound/direct_sound_samples/cry_lileep.aif | Bin 0 -> 4838 bytes sound/direct_sound_samples/cry_linoone.aif | Bin 0 -> 15248 bytes sound/direct_sound_samples/cry_lombre.aif | Bin 0 -> 7282 bytes sound/direct_sound_samples/cry_lotad.aif | Bin 0 -> 2232 bytes sound/direct_sound_samples/cry_loudred.aif | Bin 0 -> 6582 bytes sound/direct_sound_samples/cry_ludicolo.aif | Bin 0 -> 8398 bytes sound/direct_sound_samples/cry_lugia.aif | Bin 0 -> 18900 bytes sound/direct_sound_samples/cry_lunatone.aif | Bin 0 -> 11956 bytes sound/direct_sound_samples/cry_luvdisc.aif | Bin 0 -> 2456 bytes sound/direct_sound_samples/cry_machamp.aif | Bin 0 -> 8256 bytes sound/direct_sound_samples/cry_machoke.aif | Bin 0 -> 6782 bytes sound/direct_sound_samples/cry_machop.aif | Bin 0 -> 6696 bytes sound/direct_sound_samples/cry_magby.aif | Bin 0 -> 7218 bytes sound/direct_sound_samples/cry_magcargo.aif | Bin 0 -> 10486 bytes sound/direct_sound_samples/cry_magikarp.aif | Bin 0 -> 9492 bytes sound/direct_sound_samples/cry_magmar.aif | Bin 0 -> 7738 bytes sound/direct_sound_samples/cry_magnemite.aif | Bin 0 -> 9610 bytes sound/direct_sound_samples/cry_magneton.aif | Bin 0 -> 11914 bytes sound/direct_sound_samples/cry_makuhita.aif | Bin 0 -> 3704 bytes sound/direct_sound_samples/cry_manectric.aif | Bin 0 -> 10492 bytes sound/direct_sound_samples/cry_mankey.aif | Bin 0 -> 8178 bytes sound/direct_sound_samples/cry_mantine.aif | Bin 0 -> 7884 bytes sound/direct_sound_samples/cry_mareep.aif | Bin 0 -> 3694 bytes sound/direct_sound_samples/cry_marill.aif | Bin 0 -> 6538 bytes sound/direct_sound_samples/cry_marowak.aif | Bin 0 -> 7216 bytes sound/direct_sound_samples/cry_marshtomp.aif | Bin 0 -> 8498 bytes sound/direct_sound_samples/cry_masquerain.aif | Bin 0 -> 9830 bytes sound/direct_sound_samples/cry_mawile.aif | Bin 0 -> 5756 bytes sound/direct_sound_samples/cry_medicham.aif | Bin 0 -> 8246 bytes sound/direct_sound_samples/cry_meditite.aif | Bin 0 -> 4078 bytes sound/direct_sound_samples/cry_meganium.aif | Bin 0 -> 8100 bytes sound/direct_sound_samples/cry_meowth.aif | Bin 0 -> 4796 bytes sound/direct_sound_samples/cry_metagross.aif | Bin 0 -> 19644 bytes sound/direct_sound_samples/cry_metang.aif | Bin 0 -> 9398 bytes sound/direct_sound_samples/cry_metapod.aif | Bin 0 -> 11622 bytes sound/direct_sound_samples/cry_mew.aif | Bin 0 -> 15146 bytes sound/direct_sound_samples/cry_mewtwo.aif | Bin 0 -> 15144 bytes sound/direct_sound_samples/cry_mightyena.aif | Bin 0 -> 9748 bytes sound/direct_sound_samples/cry_milotic.aif | Bin 0 -> 19542 bytes sound/direct_sound_samples/cry_miltank.aif | Bin 0 -> 7424 bytes sound/direct_sound_samples/cry_minun.aif | Bin 0 -> 8004 bytes sound/direct_sound_samples/cry_misdreavus.aif | Bin 0 -> 5816 bytes sound/direct_sound_samples/cry_moltres.aif | Bin 0 -> 11796 bytes sound/direct_sound_samples/cry_mr_mime.aif | Bin 0 -> 9446 bytes sound/direct_sound_samples/cry_mudkip.aif | Bin 0 -> 3776 bytes sound/direct_sound_samples/cry_muk.aif | Bin 0 -> 7374 bytes sound/direct_sound_samples/cry_murkrow.aif | Bin 0 -> 8370 bytes sound/direct_sound_samples/cry_natu.aif | Bin 0 -> 5294 bytes sound/direct_sound_samples/cry_nidoking.aif | Bin 0 -> 12176 bytes sound/direct_sound_samples/cry_nidoqueen.aif | Bin 0 -> 8424 bytes sound/direct_sound_samples/cry_nidoran_f.aif | Bin 0 -> 4858 bytes sound/direct_sound_samples/cry_nidoran_m.aif | Bin 0 -> 5216 bytes sound/direct_sound_samples/cry_nidorina.aif | Bin 0 -> 6394 bytes sound/direct_sound_samples/cry_nidorino.aif | Bin 0 -> 6042 bytes sound/direct_sound_samples/cry_nincada.aif | Bin 0 -> 3244 bytes sound/direct_sound_samples/cry_ninetales.aif | Bin 0 -> 12174 bytes sound/direct_sound_samples/cry_ninjask.aif | Bin 0 -> 6084 bytes sound/direct_sound_samples/cry_noctowl.aif | Bin 0 -> 10564 bytes sound/direct_sound_samples/cry_none.aif | Bin 0 -> 8286 bytes sound/direct_sound_samples/cry_nosepass.aif | Bin 0 -> 6696 bytes sound/direct_sound_samples/cry_numel.aif | Bin 0 -> 4664 bytes sound/direct_sound_samples/cry_nuzleaf.aif | Bin 0 -> 5712 bytes sound/direct_sound_samples/cry_octillery.aif | Bin 0 -> 13084 bytes sound/direct_sound_samples/cry_oddish.aif | Bin 0 -> 7298 bytes sound/direct_sound_samples/cry_omanyte.aif | Bin 0 -> 6672 bytes sound/direct_sound_samples/cry_omastar.aif | Bin 0 -> 6666 bytes sound/direct_sound_samples/cry_onix.aif | Bin 0 -> 12340 bytes sound/direct_sound_samples/cry_paras.aif | Bin 0 -> 13924 bytes sound/direct_sound_samples/cry_parasect.aif | Bin 0 -> 15140 bytes sound/direct_sound_samples/cry_pelipper.aif | Bin 0 -> 5894 bytes sound/direct_sound_samples/cry_persian.aif | Bin 0 -> 9412 bytes sound/direct_sound_samples/cry_phanpy.aif | Bin 0 -> 5664 bytes sound/direct_sound_samples/cry_pichu.aif | Bin 0 -> 3684 bytes sound/direct_sound_samples/cry_pidgeot.aif | Bin 0 -> 8590 bytes sound/direct_sound_samples/cry_pidgeotto.aif | Bin 0 -> 7512 bytes sound/direct_sound_samples/cry_pidgey.aif | Bin 0 -> 1984 bytes sound/direct_sound_samples/cry_pikachu.aif | Bin 0 -> 8316 bytes sound/direct_sound_samples/cry_piloswine.aif | Bin 0 -> 6480 bytes sound/direct_sound_samples/cry_pineco.aif | Bin 0 -> 6690 bytes sound/direct_sound_samples/cry_pinsir.aif | Bin 0 -> 6186 bytes sound/direct_sound_samples/cry_plusle.aif | Bin 0 -> 4504 bytes sound/direct_sound_samples/cry_politoed.aif | Bin 0 -> 9114 bytes sound/direct_sound_samples/cry_poliwag.aif | Bin 0 -> 5562 bytes sound/direct_sound_samples/cry_poliwhirl.aif | Bin 0 -> 3354 bytes sound/direct_sound_samples/cry_poliwrath.aif | Bin 0 -> 5582 bytes sound/direct_sound_samples/cry_ponyta.aif | Bin 0 -> 7524 bytes sound/direct_sound_samples/cry_poochyena.aif | Bin 0 -> 4656 bytes sound/direct_sound_samples/cry_porygon.aif | Bin 0 -> 10002 bytes sound/direct_sound_samples/cry_porygon2.aif | Bin 0 -> 7854 bytes sound/direct_sound_samples/cry_primeape.aif | Bin 0 -> 8086 bytes sound/direct_sound_samples/cry_psyduck.aif | Bin 0 -> 6578 bytes sound/direct_sound_samples/cry_pupitar.aif | Bin 0 -> 4234 bytes sound/direct_sound_samples/cry_quagsire.aif | Bin 0 -> 6684 bytes sound/direct_sound_samples/cry_quilava.aif | Bin 0 -> 5962 bytes sound/direct_sound_samples/cry_qwilfish.aif | Bin 0 -> 5808 bytes sound/direct_sound_samples/cry_raichu.aif | Bin 0 -> 11842 bytes sound/direct_sound_samples/cry_raikou.aif | Bin 0 -> 8704 bytes sound/direct_sound_samples/cry_ralts.aif | Bin 0 -> 5066 bytes sound/direct_sound_samples/cry_rapidash.aif | Bin 0 -> 9292 bytes sound/direct_sound_samples/cry_raticate.aif | Bin 0 -> 4770 bytes sound/direct_sound_samples/cry_rattata.aif | Bin 0 -> 3956 bytes sound/direct_sound_samples/cry_rayquaza.aif | Bin 0 -> 14532 bytes sound/direct_sound_samples/cry_regice.aif | Bin 0 -> 15936 bytes sound/direct_sound_samples/cry_regirock.aif | Bin 0 -> 15862 bytes sound/direct_sound_samples/cry_registeel.aif | Bin 0 -> 11476 bytes sound/direct_sound_samples/cry_relicanth.aif | Bin 0 -> 10072 bytes sound/direct_sound_samples/cry_remoraid.aif | Bin 0 -> 5290 bytes sound/direct_sound_samples/cry_rhydon.aif | Bin 0 -> 10186 bytes sound/direct_sound_samples/cry_rhyhorn.aif | Bin 0 -> 9686 bytes sound/direct_sound_samples/cry_roselia.aif | Bin 0 -> 5382 bytes sound/direct_sound_samples/cry_sableye.aif | Bin 0 -> 5826 bytes sound/direct_sound_samples/cry_salamence.aif | Bin 0 -> 12514 bytes sound/direct_sound_samples/cry_sandshrew.aif | Bin 0 -> 4678 bytes sound/direct_sound_samples/cry_sandslash.aif | Bin 0 -> 6784 bytes sound/direct_sound_samples/cry_sceptile.aif | Bin 0 -> 13012 bytes sound/direct_sound_samples/cry_scizor.aif | Bin 0 -> 11462 bytes sound/direct_sound_samples/cry_scyther.aif | Bin 0 -> 6676 bytes sound/direct_sound_samples/cry_seadra.aif | Bin 0 -> 4228 bytes sound/direct_sound_samples/cry_seaking.aif | Bin 0 -> 9654 bytes sound/direct_sound_samples/cry_sealeo.aif | Bin 0 -> 5928 bytes sound/direct_sound_samples/cry_seedot.aif | Bin 0 -> 4106 bytes sound/direct_sound_samples/cry_seel.aif | Bin 0 -> 8954 bytes sound/direct_sound_samples/cry_sentret.aif | Bin 0 -> 2108 bytes sound/direct_sound_samples/cry_seviper.aif | Bin 0 -> 5820 bytes sound/direct_sound_samples/cry_sharpedo.aif | Bin 0 -> 11488 bytes sound/direct_sound_samples/cry_shedinja.aif | Bin 0 -> 3876 bytes sound/direct_sound_samples/cry_shelgon.aif | Bin 0 -> 9992 bytes sound/direct_sound_samples/cry_shellder.aif | Bin 0 -> 7718 bytes sound/direct_sound_samples/cry_shiftry.aif | Bin 0 -> 9860 bytes sound/direct_sound_samples/cry_shroomish.aif | Bin 0 -> 4436 bytes sound/direct_sound_samples/cry_shuckle.aif | Bin 0 -> 5110 bytes sound/direct_sound_samples/cry_shuppet.aif | Bin 0 -> 4144 bytes sound/direct_sound_samples/cry_silcoon.aif | Bin 0 -> 8074 bytes sound/direct_sound_samples/cry_skarmory.aif | Bin 0 -> 11982 bytes sound/direct_sound_samples/cry_skiploom.aif | Bin 0 -> 6516 bytes sound/direct_sound_samples/cry_skitty.aif | Bin 0 -> 3560 bytes sound/direct_sound_samples/cry_slaking.aif | Bin 0 -> 4970 bytes sound/direct_sound_samples/cry_slakoth.aif | Bin 0 -> 4272 bytes sound/direct_sound_samples/cry_slowbro.aif | Bin 0 -> 6720 bytes sound/direct_sound_samples/cry_slowking.aif | Bin 0 -> 11908 bytes sound/direct_sound_samples/cry_slowpoke.aif | Bin 0 -> 3724 bytes sound/direct_sound_samples/cry_slugma.aif | Bin 0 -> 8536 bytes sound/direct_sound_samples/cry_smeargle.aif | Bin 0 -> 5114 bytes sound/direct_sound_samples/cry_smoochum.aif | Bin 0 -> 5860 bytes sound/direct_sound_samples/cry_sneasel.aif | Bin 0 -> 4586 bytes sound/direct_sound_samples/cry_snorlax.aif | Bin 0 -> 2648 bytes sound/direct_sound_samples/cry_snorunt.aif | Bin 0 -> 8500 bytes sound/direct_sound_samples/cry_snubbull.aif | Bin 0 -> 7220 bytes sound/direct_sound_samples/cry_solrock.aif | Bin 0 -> 8080 bytes sound/direct_sound_samples/cry_spearow.aif | Bin 0 -> 8806 bytes sound/direct_sound_samples/cry_spheal.aif | Bin 0 -> 2880 bytes sound/direct_sound_samples/cry_spinarak.aif | Bin 0 -> 6696 bytes sound/direct_sound_samples/cry_spinda.aif | Bin 0 -> 6216 bytes sound/direct_sound_samples/cry_spoink.aif | Bin 0 -> 3648 bytes sound/direct_sound_samples/cry_squirtle.aif | Bin 0 -> 7222 bytes sound/direct_sound_samples/cry_stantler.aif | Bin 0 -> 11208 bytes sound/direct_sound_samples/cry_starmie.aif | Bin 0 -> 10402 bytes sound/direct_sound_samples/cry_staryu.aif | Bin 0 -> 9934 bytes sound/direct_sound_samples/cry_steelix.aif | Bin 0 -> 18988 bytes sound/direct_sound_samples/cry_sudowoodo.aif | Bin 0 -> 8084 bytes sound/direct_sound_samples/cry_suicune.aif | Bin 0 -> 9126 bytes sound/direct_sound_samples/cry_sunflora.aif | Bin 0 -> 7928 bytes sound/direct_sound_samples/cry_sunkern.aif | Bin 0 -> 4056 bytes sound/direct_sound_samples/cry_surskit.aif | Bin 0 -> 5258 bytes sound/direct_sound_samples/cry_swablu.aif | Bin 0 -> 2824 bytes sound/direct_sound_samples/cry_swalot.aif | Bin 0 -> 8676 bytes sound/direct_sound_samples/cry_swampert.aif | Bin 0 -> 11220 bytes sound/direct_sound_samples/cry_swellow.aif | Bin 0 -> 4524 bytes sound/direct_sound_samples/cry_swinub.aif | Bin 0 -> 6328 bytes sound/direct_sound_samples/cry_taillow.aif | Bin 0 -> 3024 bytes sound/direct_sound_samples/cry_tangela.aif | Bin 0 -> 7550 bytes sound/direct_sound_samples/cry_tauros.aif | Bin 0 -> 9150 bytes sound/direct_sound_samples/cry_teddiursa.aif | Bin 0 -> 8266 bytes sound/direct_sound_samples/cry_tentacool.aif | Bin 0 -> 7960 bytes sound/direct_sound_samples/cry_tentacruel.aif | Bin 0 -> 11458 bytes sound/direct_sound_samples/cry_togepi.aif | Bin 0 -> 5460 bytes sound/direct_sound_samples/cry_togetic.aif | Bin 0 -> 3526 bytes sound/direct_sound_samples/cry_torchic.aif | Bin 0 -> 4840 bytes sound/direct_sound_samples/cry_torkoal.aif | Bin 0 -> 4662 bytes sound/direct_sound_samples/cry_totodile.aif | Bin 0 -> 9152 bytes sound/direct_sound_samples/cry_trapinch.aif | Bin 0 -> 5080 bytes sound/direct_sound_samples/cry_treecko.aif | Bin 0 -> 5836 bytes sound/direct_sound_samples/cry_tropius.aif | Bin 0 -> 16318 bytes sound/direct_sound_samples/cry_typhlosion.aif | Bin 0 -> 18944 bytes sound/direct_sound_samples/cry_tyranitar.aif | Bin 0 -> 11656 bytes sound/direct_sound_samples/cry_tyrogue.aif | Bin 0 -> 8072 bytes sound/direct_sound_samples/cry_umbreon.aif | Bin 0 -> 7746 bytes sound/direct_sound_samples/cry_unown.aif | Bin 0 -> 6576 bytes sound/direct_sound_samples/cry_unused_265.aif | Bin 0 -> 4676 bytes sound/direct_sound_samples/cry_unused_268.aif | Bin 0 -> 8828 bytes sound/direct_sound_samples/cry_ursaring.aif | Bin 0 -> 14862 bytes sound/direct_sound_samples/cry_vaporeon.aif | Bin 0 -> 11018 bytes sound/direct_sound_samples/cry_venomoth.aif | Bin 0 -> 8002 bytes sound/direct_sound_samples/cry_venonat.aif | Bin 0 -> 7746 bytes sound/direct_sound_samples/cry_venusaur.aif | Bin 0 -> 9648 bytes sound/direct_sound_samples/cry_vibrava.aif | Bin 0 -> 7002 bytes sound/direct_sound_samples/cry_victreebel.aif | Bin 0 -> 9630 bytes sound/direct_sound_samples/cry_vigoroth.aif | Bin 0 -> 7168 bytes sound/direct_sound_samples/cry_vileplume.aif | Bin 0 -> 12760 bytes sound/direct_sound_samples/cry_volbeat.aif | Bin 0 -> 5772 bytes sound/direct_sound_samples/cry_voltorb.aif | Bin 0 -> 12346 bytes sound/direct_sound_samples/cry_vulpix.aif | Bin 0 -> 11870 bytes sound/direct_sound_samples/cry_wailmer.aif | Bin 0 -> 14134 bytes sound/direct_sound_samples/cry_wailord.aif | Bin 0 -> 20928 bytes sound/direct_sound_samples/cry_walrein.aif | Bin 0 -> 18067 bytes sound/direct_sound_samples/cry_wartortle.aif | Bin 0 -> 8614 bytes sound/direct_sound_samples/cry_weedle.aif | Bin 0 -> 8124 bytes sound/direct_sound_samples/cry_weepinbell.aif | Bin 0 -> 7310 bytes sound/direct_sound_samples/cry_weezing.aif | Bin 0 -> 10806 bytes sound/direct_sound_samples/cry_whiscash.aif | Bin 0 -> 8478 bytes sound/direct_sound_samples/cry_whismur.aif | Bin 0 -> 4092 bytes sound/direct_sound_samples/cry_wigglytuff.aif | Bin 0 -> 3412 bytes sound/direct_sound_samples/cry_wingull.aif | Bin 0 -> 6132 bytes sound/direct_sound_samples/cry_wobbuffet.aif | Bin 0 -> 10276 bytes sound/direct_sound_samples/cry_wooper.aif | Bin 0 -> 3710 bytes sound/direct_sound_samples/cry_wurmple.aif | Bin 0 -> 4412 bytes sound/direct_sound_samples/cry_wynaut.aif | Bin 0 -> 6932 bytes sound/direct_sound_samples/cry_xatu.aif | Bin 0 -> 7392 bytes sound/direct_sound_samples/cry_yanma.aif | Bin 0 -> 8506 bytes sound/direct_sound_samples/cry_zangoose.aif | Bin 0 -> 4794 bytes sound/direct_sound_samples/cry_zapdos.aif | Bin 0 -> 7724 bytes sound/direct_sound_samples/cry_zigzagoon.aif | Bin 0 -> 5786 bytes sound/direct_sound_samples/cry_zubat.aif | Bin 0 -> 9688 bytes 390 files changed, 1558 insertions(+), 2 deletions(-) create mode 100644 sound/direct_sound_samples/cry_abra.aif create mode 100644 sound/direct_sound_samples/cry_absol.aif create mode 100644 sound/direct_sound_samples/cry_aerodactyl.aif create mode 100644 sound/direct_sound_samples/cry_aggron.aif create mode 100644 sound/direct_sound_samples/cry_aipom.aif create mode 100644 sound/direct_sound_samples/cry_alakazam.aif create mode 100644 sound/direct_sound_samples/cry_altaria.aif create mode 100644 sound/direct_sound_samples/cry_ampharos.aif create mode 100644 sound/direct_sound_samples/cry_anorith.aif create mode 100644 sound/direct_sound_samples/cry_arbok.aif create mode 100644 sound/direct_sound_samples/cry_arcanine.aif create mode 100644 sound/direct_sound_samples/cry_ariados.aif create mode 100644 sound/direct_sound_samples/cry_armaldo.aif create mode 100644 sound/direct_sound_samples/cry_aron.aif create mode 100644 sound/direct_sound_samples/cry_articuno.aif create mode 100644 sound/direct_sound_samples/cry_azumarill.aif create mode 100644 sound/direct_sound_samples/cry_azurill.aif create mode 100644 sound/direct_sound_samples/cry_bagon.aif create mode 100644 sound/direct_sound_samples/cry_baltoy.aif create mode 100644 sound/direct_sound_samples/cry_banette.aif create mode 100644 sound/direct_sound_samples/cry_barboach.aif create mode 100644 sound/direct_sound_samples/cry_bayleef.aif create mode 100644 sound/direct_sound_samples/cry_beautifly.aif create mode 100644 sound/direct_sound_samples/cry_beedrill.aif create mode 100644 sound/direct_sound_samples/cry_beldum.aif create mode 100644 sound/direct_sound_samples/cry_bellossom.aif create mode 100644 sound/direct_sound_samples/cry_bellsprout.aif create mode 100644 sound/direct_sound_samples/cry_blastoise.aif create mode 100644 sound/direct_sound_samples/cry_blaziken.aif create mode 100644 sound/direct_sound_samples/cry_blissey.aif create mode 100644 sound/direct_sound_samples/cry_breloom.aif create mode 100644 sound/direct_sound_samples/cry_bulbasaur.aif create mode 100644 sound/direct_sound_samples/cry_butterfree.aif create mode 100644 sound/direct_sound_samples/cry_cacnea.aif create mode 100644 sound/direct_sound_samples/cry_cacturne.aif create mode 100644 sound/direct_sound_samples/cry_camerupt.aif create mode 100644 sound/direct_sound_samples/cry_carvanha.aif create mode 100644 sound/direct_sound_samples/cry_cascoon.aif create mode 100644 sound/direct_sound_samples/cry_castform.aif create mode 100644 sound/direct_sound_samples/cry_caterpie.aif create mode 100644 sound/direct_sound_samples/cry_celebi.aif create mode 100644 sound/direct_sound_samples/cry_chansey.aif create mode 100644 sound/direct_sound_samples/cry_charizard.aif create mode 100644 sound/direct_sound_samples/cry_charmander.aif create mode 100644 sound/direct_sound_samples/cry_charmeleon.aif create mode 100644 sound/direct_sound_samples/cry_chikorita.aif create mode 100644 sound/direct_sound_samples/cry_chimecho.aif create mode 100644 sound/direct_sound_samples/cry_chinchou.aif create mode 100644 sound/direct_sound_samples/cry_clamperl.aif create mode 100644 sound/direct_sound_samples/cry_claydol.aif create mode 100644 sound/direct_sound_samples/cry_clefable.aif create mode 100644 sound/direct_sound_samples/cry_clefairy.aif create mode 100644 sound/direct_sound_samples/cry_cleffa.aif create mode 100644 sound/direct_sound_samples/cry_cloyster.aif create mode 100644 sound/direct_sound_samples/cry_combusken.aif create mode 100644 sound/direct_sound_samples/cry_corphish.aif create mode 100644 sound/direct_sound_samples/cry_corsola.aif create mode 100644 sound/direct_sound_samples/cry_cradily.aif create mode 100644 sound/direct_sound_samples/cry_crawdaunt.aif create mode 100644 sound/direct_sound_samples/cry_crobat.aif create mode 100644 sound/direct_sound_samples/cry_croconaw.aif create mode 100644 sound/direct_sound_samples/cry_cubone.aif create mode 100644 sound/direct_sound_samples/cry_cyndaquil.aif create mode 100644 sound/direct_sound_samples/cry_delcatty.aif create mode 100644 sound/direct_sound_samples/cry_delibird.aif create mode 100644 sound/direct_sound_samples/cry_deoxys.aif create mode 100644 sound/direct_sound_samples/cry_dewgong.aif create mode 100644 sound/direct_sound_samples/cry_diglett.aif create mode 100644 sound/direct_sound_samples/cry_ditto.aif create mode 100644 sound/direct_sound_samples/cry_dodrio.aif create mode 100644 sound/direct_sound_samples/cry_doduo.aif create mode 100644 sound/direct_sound_samples/cry_donphan.aif create mode 100644 sound/direct_sound_samples/cry_dragonair.aif create mode 100644 sound/direct_sound_samples/cry_dragonite.aif create mode 100644 sound/direct_sound_samples/cry_dratini.aif create mode 100644 sound/direct_sound_samples/cry_drowzee.aif create mode 100644 sound/direct_sound_samples/cry_dugtrio.aif create mode 100644 sound/direct_sound_samples/cry_dunsparce.aif create mode 100644 sound/direct_sound_samples/cry_dusclops.aif create mode 100644 sound/direct_sound_samples/cry_duskull.aif create mode 100644 sound/direct_sound_samples/cry_dustox.aif create mode 100644 sound/direct_sound_samples/cry_eevee.aif create mode 100644 sound/direct_sound_samples/cry_ekans.aif create mode 100644 sound/direct_sound_samples/cry_electabuzz.aif create mode 100644 sound/direct_sound_samples/cry_electrike.aif create mode 100644 sound/direct_sound_samples/cry_electrode.aif create mode 100644 sound/direct_sound_samples/cry_elekid.aif create mode 100644 sound/direct_sound_samples/cry_entei.aif create mode 100644 sound/direct_sound_samples/cry_espeon.aif create mode 100644 sound/direct_sound_samples/cry_exeggcute.aif create mode 100644 sound/direct_sound_samples/cry_exeggutor.aif create mode 100644 sound/direct_sound_samples/cry_exploud.aif create mode 100644 sound/direct_sound_samples/cry_farfetchd.aif create mode 100644 sound/direct_sound_samples/cry_fearow.aif create mode 100644 sound/direct_sound_samples/cry_feebas.aif create mode 100644 sound/direct_sound_samples/cry_feraligatr.aif create mode 100644 sound/direct_sound_samples/cry_flaaffy.aif create mode 100644 sound/direct_sound_samples/cry_flareon.aif create mode 100644 sound/direct_sound_samples/cry_flygon.aif create mode 100644 sound/direct_sound_samples/cry_forretress.aif create mode 100644 sound/direct_sound_samples/cry_furret.aif create mode 100644 sound/direct_sound_samples/cry_gardevoir.aif create mode 100644 sound/direct_sound_samples/cry_gastly.aif create mode 100644 sound/direct_sound_samples/cry_gengar.aif create mode 100644 sound/direct_sound_samples/cry_geodude.aif create mode 100644 sound/direct_sound_samples/cry_girafarig.aif create mode 100644 sound/direct_sound_samples/cry_glalie.aif create mode 100644 sound/direct_sound_samples/cry_gligar.aif create mode 100644 sound/direct_sound_samples/cry_gloom.aif create mode 100644 sound/direct_sound_samples/cry_golbat.aif create mode 100644 sound/direct_sound_samples/cry_goldeen.aif create mode 100644 sound/direct_sound_samples/cry_golduck.aif create mode 100644 sound/direct_sound_samples/cry_golem.aif create mode 100644 sound/direct_sound_samples/cry_gorebyss.aif create mode 100644 sound/direct_sound_samples/cry_granbull.aif create mode 100644 sound/direct_sound_samples/cry_graveler.aif create mode 100644 sound/direct_sound_samples/cry_grimer.aif create mode 100644 sound/direct_sound_samples/cry_groudon.aif create mode 100644 sound/direct_sound_samples/cry_grovyle.aif create mode 100644 sound/direct_sound_samples/cry_growlithe.aif create mode 100644 sound/direct_sound_samples/cry_grumpig.aif create mode 100644 sound/direct_sound_samples/cry_gulpin.aif create mode 100644 sound/direct_sound_samples/cry_gyarados.aif create mode 100644 sound/direct_sound_samples/cry_hariyama.aif create mode 100644 sound/direct_sound_samples/cry_haunter.aif create mode 100644 sound/direct_sound_samples/cry_heracross.aif create mode 100644 sound/direct_sound_samples/cry_hitmonchan.aif create mode 100644 sound/direct_sound_samples/cry_hitmonlee.aif create mode 100644 sound/direct_sound_samples/cry_hitmontop.aif create mode 100644 sound/direct_sound_samples/cry_ho_oh.aif create mode 100644 sound/direct_sound_samples/cry_hoothoot.aif create mode 100644 sound/direct_sound_samples/cry_hoppip.aif create mode 100644 sound/direct_sound_samples/cry_horsea.aif create mode 100644 sound/direct_sound_samples/cry_houndoom.aif create mode 100644 sound/direct_sound_samples/cry_houndour.aif create mode 100644 sound/direct_sound_samples/cry_huntail.aif create mode 100644 sound/direct_sound_samples/cry_hypno.aif create mode 100644 sound/direct_sound_samples/cry_igglybuff.aif create mode 100644 sound/direct_sound_samples/cry_illumise.aif create mode 100644 sound/direct_sound_samples/cry_ivysaur.aif create mode 100644 sound/direct_sound_samples/cry_jigglypuff.aif create mode 100644 sound/direct_sound_samples/cry_jirachi.aif create mode 100644 sound/direct_sound_samples/cry_jolteon.aif create mode 100644 sound/direct_sound_samples/cry_jumpluff.aif create mode 100644 sound/direct_sound_samples/cry_jynx.aif create mode 100644 sound/direct_sound_samples/cry_kabuto.aif create mode 100644 sound/direct_sound_samples/cry_kabutops.aif create mode 100644 sound/direct_sound_samples/cry_kadabra.aif create mode 100644 sound/direct_sound_samples/cry_kakuna.aif create mode 100644 sound/direct_sound_samples/cry_kangaskhan.aif create mode 100644 sound/direct_sound_samples/cry_kecleon.aif create mode 100644 sound/direct_sound_samples/cry_kingdra.aif create mode 100644 sound/direct_sound_samples/cry_kingler.aif create mode 100644 sound/direct_sound_samples/cry_kirlia.aif create mode 100644 sound/direct_sound_samples/cry_koffing.aif create mode 100644 sound/direct_sound_samples/cry_krabby.aif create mode 100644 sound/direct_sound_samples/cry_kyogre.aif create mode 100644 sound/direct_sound_samples/cry_lairon.aif create mode 100644 sound/direct_sound_samples/cry_lanturn.aif create mode 100644 sound/direct_sound_samples/cry_lapras.aif create mode 100644 sound/direct_sound_samples/cry_larvitar.aif create mode 100644 sound/direct_sound_samples/cry_latias.aif create mode 100644 sound/direct_sound_samples/cry_latios.aif create mode 100644 sound/direct_sound_samples/cry_ledian.aif create mode 100644 sound/direct_sound_samples/cry_ledyba.aif create mode 100644 sound/direct_sound_samples/cry_lickitung.aif create mode 100644 sound/direct_sound_samples/cry_lileep.aif create mode 100644 sound/direct_sound_samples/cry_linoone.aif create mode 100644 sound/direct_sound_samples/cry_lombre.aif create mode 100644 sound/direct_sound_samples/cry_lotad.aif create mode 100644 sound/direct_sound_samples/cry_loudred.aif create mode 100644 sound/direct_sound_samples/cry_ludicolo.aif create mode 100644 sound/direct_sound_samples/cry_lugia.aif create mode 100644 sound/direct_sound_samples/cry_lunatone.aif create mode 100644 sound/direct_sound_samples/cry_luvdisc.aif create mode 100644 sound/direct_sound_samples/cry_machamp.aif create mode 100644 sound/direct_sound_samples/cry_machoke.aif create mode 100644 sound/direct_sound_samples/cry_machop.aif create mode 100644 sound/direct_sound_samples/cry_magby.aif create mode 100644 sound/direct_sound_samples/cry_magcargo.aif create mode 100644 sound/direct_sound_samples/cry_magikarp.aif create mode 100644 sound/direct_sound_samples/cry_magmar.aif create mode 100644 sound/direct_sound_samples/cry_magnemite.aif create mode 100644 sound/direct_sound_samples/cry_magneton.aif create mode 100644 sound/direct_sound_samples/cry_makuhita.aif create mode 100644 sound/direct_sound_samples/cry_manectric.aif create mode 100644 sound/direct_sound_samples/cry_mankey.aif create mode 100644 sound/direct_sound_samples/cry_mantine.aif create mode 100644 sound/direct_sound_samples/cry_mareep.aif create mode 100644 sound/direct_sound_samples/cry_marill.aif create mode 100644 sound/direct_sound_samples/cry_marowak.aif create mode 100644 sound/direct_sound_samples/cry_marshtomp.aif create mode 100644 sound/direct_sound_samples/cry_masquerain.aif create mode 100644 sound/direct_sound_samples/cry_mawile.aif create mode 100644 sound/direct_sound_samples/cry_medicham.aif create mode 100644 sound/direct_sound_samples/cry_meditite.aif create mode 100644 sound/direct_sound_samples/cry_meganium.aif create mode 100644 sound/direct_sound_samples/cry_meowth.aif create mode 100644 sound/direct_sound_samples/cry_metagross.aif create mode 100644 sound/direct_sound_samples/cry_metang.aif create mode 100644 sound/direct_sound_samples/cry_metapod.aif create mode 100644 sound/direct_sound_samples/cry_mew.aif create mode 100644 sound/direct_sound_samples/cry_mewtwo.aif create mode 100644 sound/direct_sound_samples/cry_mightyena.aif create mode 100644 sound/direct_sound_samples/cry_milotic.aif create mode 100644 sound/direct_sound_samples/cry_miltank.aif create mode 100644 sound/direct_sound_samples/cry_minun.aif create mode 100644 sound/direct_sound_samples/cry_misdreavus.aif create mode 100644 sound/direct_sound_samples/cry_moltres.aif create mode 100644 sound/direct_sound_samples/cry_mr_mime.aif create mode 100644 sound/direct_sound_samples/cry_mudkip.aif create mode 100644 sound/direct_sound_samples/cry_muk.aif create mode 100644 sound/direct_sound_samples/cry_murkrow.aif create mode 100644 sound/direct_sound_samples/cry_natu.aif create mode 100644 sound/direct_sound_samples/cry_nidoking.aif create mode 100644 sound/direct_sound_samples/cry_nidoqueen.aif create mode 100644 sound/direct_sound_samples/cry_nidoran_f.aif create mode 100644 sound/direct_sound_samples/cry_nidoran_m.aif create mode 100644 sound/direct_sound_samples/cry_nidorina.aif create mode 100644 sound/direct_sound_samples/cry_nidorino.aif create mode 100644 sound/direct_sound_samples/cry_nincada.aif create mode 100644 sound/direct_sound_samples/cry_ninetales.aif create mode 100644 sound/direct_sound_samples/cry_ninjask.aif create mode 100644 sound/direct_sound_samples/cry_noctowl.aif create mode 100644 sound/direct_sound_samples/cry_none.aif create mode 100644 sound/direct_sound_samples/cry_nosepass.aif create mode 100644 sound/direct_sound_samples/cry_numel.aif create mode 100644 sound/direct_sound_samples/cry_nuzleaf.aif create mode 100644 sound/direct_sound_samples/cry_octillery.aif create mode 100644 sound/direct_sound_samples/cry_oddish.aif create mode 100644 sound/direct_sound_samples/cry_omanyte.aif create mode 100644 sound/direct_sound_samples/cry_omastar.aif create mode 100644 sound/direct_sound_samples/cry_onix.aif create mode 100644 sound/direct_sound_samples/cry_paras.aif create mode 100644 sound/direct_sound_samples/cry_parasect.aif create mode 100644 sound/direct_sound_samples/cry_pelipper.aif create mode 100644 sound/direct_sound_samples/cry_persian.aif create mode 100644 sound/direct_sound_samples/cry_phanpy.aif create mode 100644 sound/direct_sound_samples/cry_pichu.aif create mode 100644 sound/direct_sound_samples/cry_pidgeot.aif create mode 100644 sound/direct_sound_samples/cry_pidgeotto.aif create mode 100644 sound/direct_sound_samples/cry_pidgey.aif create mode 100644 sound/direct_sound_samples/cry_pikachu.aif create mode 100644 sound/direct_sound_samples/cry_piloswine.aif create mode 100644 sound/direct_sound_samples/cry_pineco.aif create mode 100644 sound/direct_sound_samples/cry_pinsir.aif create mode 100644 sound/direct_sound_samples/cry_plusle.aif create mode 100644 sound/direct_sound_samples/cry_politoed.aif create mode 100644 sound/direct_sound_samples/cry_poliwag.aif create mode 100644 sound/direct_sound_samples/cry_poliwhirl.aif create mode 100644 sound/direct_sound_samples/cry_poliwrath.aif create mode 100644 sound/direct_sound_samples/cry_ponyta.aif create mode 100644 sound/direct_sound_samples/cry_poochyena.aif create mode 100644 sound/direct_sound_samples/cry_porygon.aif create mode 100644 sound/direct_sound_samples/cry_porygon2.aif create mode 100644 sound/direct_sound_samples/cry_primeape.aif create mode 100644 sound/direct_sound_samples/cry_psyduck.aif create mode 100644 sound/direct_sound_samples/cry_pupitar.aif create mode 100644 sound/direct_sound_samples/cry_quagsire.aif create mode 100644 sound/direct_sound_samples/cry_quilava.aif create mode 100644 sound/direct_sound_samples/cry_qwilfish.aif create mode 100644 sound/direct_sound_samples/cry_raichu.aif create mode 100644 sound/direct_sound_samples/cry_raikou.aif create mode 100644 sound/direct_sound_samples/cry_ralts.aif create mode 100644 sound/direct_sound_samples/cry_rapidash.aif create mode 100644 sound/direct_sound_samples/cry_raticate.aif create mode 100644 sound/direct_sound_samples/cry_rattata.aif create mode 100644 sound/direct_sound_samples/cry_rayquaza.aif create mode 100644 sound/direct_sound_samples/cry_regice.aif create mode 100644 sound/direct_sound_samples/cry_regirock.aif create mode 100644 sound/direct_sound_samples/cry_registeel.aif create mode 100644 sound/direct_sound_samples/cry_relicanth.aif create mode 100644 sound/direct_sound_samples/cry_remoraid.aif create mode 100644 sound/direct_sound_samples/cry_rhydon.aif create mode 100644 sound/direct_sound_samples/cry_rhyhorn.aif create mode 100644 sound/direct_sound_samples/cry_roselia.aif create mode 100644 sound/direct_sound_samples/cry_sableye.aif create mode 100644 sound/direct_sound_samples/cry_salamence.aif create mode 100644 sound/direct_sound_samples/cry_sandshrew.aif create mode 100644 sound/direct_sound_samples/cry_sandslash.aif create mode 100644 sound/direct_sound_samples/cry_sceptile.aif create mode 100644 sound/direct_sound_samples/cry_scizor.aif create mode 100644 sound/direct_sound_samples/cry_scyther.aif create mode 100644 sound/direct_sound_samples/cry_seadra.aif create mode 100644 sound/direct_sound_samples/cry_seaking.aif create mode 100644 sound/direct_sound_samples/cry_sealeo.aif create mode 100644 sound/direct_sound_samples/cry_seedot.aif create mode 100644 sound/direct_sound_samples/cry_seel.aif create mode 100644 sound/direct_sound_samples/cry_sentret.aif create mode 100644 sound/direct_sound_samples/cry_seviper.aif create mode 100644 sound/direct_sound_samples/cry_sharpedo.aif create mode 100644 sound/direct_sound_samples/cry_shedinja.aif create mode 100644 sound/direct_sound_samples/cry_shelgon.aif create mode 100644 sound/direct_sound_samples/cry_shellder.aif create mode 100644 sound/direct_sound_samples/cry_shiftry.aif create mode 100644 sound/direct_sound_samples/cry_shroomish.aif create mode 100644 sound/direct_sound_samples/cry_shuckle.aif create mode 100644 sound/direct_sound_samples/cry_shuppet.aif create mode 100644 sound/direct_sound_samples/cry_silcoon.aif create mode 100644 sound/direct_sound_samples/cry_skarmory.aif create mode 100644 sound/direct_sound_samples/cry_skiploom.aif create mode 100644 sound/direct_sound_samples/cry_skitty.aif create mode 100644 sound/direct_sound_samples/cry_slaking.aif create mode 100644 sound/direct_sound_samples/cry_slakoth.aif create mode 100644 sound/direct_sound_samples/cry_slowbro.aif create mode 100644 sound/direct_sound_samples/cry_slowking.aif create mode 100644 sound/direct_sound_samples/cry_slowpoke.aif create mode 100644 sound/direct_sound_samples/cry_slugma.aif create mode 100644 sound/direct_sound_samples/cry_smeargle.aif create mode 100644 sound/direct_sound_samples/cry_smoochum.aif create mode 100644 sound/direct_sound_samples/cry_sneasel.aif create mode 100644 sound/direct_sound_samples/cry_snorlax.aif create mode 100644 sound/direct_sound_samples/cry_snorunt.aif create mode 100644 sound/direct_sound_samples/cry_snubbull.aif create mode 100644 sound/direct_sound_samples/cry_solrock.aif create mode 100644 sound/direct_sound_samples/cry_spearow.aif create mode 100644 sound/direct_sound_samples/cry_spheal.aif create mode 100644 sound/direct_sound_samples/cry_spinarak.aif create mode 100644 sound/direct_sound_samples/cry_spinda.aif create mode 100644 sound/direct_sound_samples/cry_spoink.aif create mode 100644 sound/direct_sound_samples/cry_squirtle.aif create mode 100644 sound/direct_sound_samples/cry_stantler.aif create mode 100644 sound/direct_sound_samples/cry_starmie.aif create mode 100644 sound/direct_sound_samples/cry_staryu.aif create mode 100644 sound/direct_sound_samples/cry_steelix.aif create mode 100644 sound/direct_sound_samples/cry_sudowoodo.aif create mode 100644 sound/direct_sound_samples/cry_suicune.aif create mode 100644 sound/direct_sound_samples/cry_sunflora.aif create mode 100644 sound/direct_sound_samples/cry_sunkern.aif create mode 100644 sound/direct_sound_samples/cry_surskit.aif create mode 100644 sound/direct_sound_samples/cry_swablu.aif create mode 100644 sound/direct_sound_samples/cry_swalot.aif create mode 100644 sound/direct_sound_samples/cry_swampert.aif create mode 100644 sound/direct_sound_samples/cry_swellow.aif create mode 100644 sound/direct_sound_samples/cry_swinub.aif create mode 100644 sound/direct_sound_samples/cry_taillow.aif create mode 100644 sound/direct_sound_samples/cry_tangela.aif create mode 100644 sound/direct_sound_samples/cry_tauros.aif create mode 100644 sound/direct_sound_samples/cry_teddiursa.aif create mode 100644 sound/direct_sound_samples/cry_tentacool.aif create mode 100644 sound/direct_sound_samples/cry_tentacruel.aif create mode 100644 sound/direct_sound_samples/cry_togepi.aif create mode 100644 sound/direct_sound_samples/cry_togetic.aif create mode 100644 sound/direct_sound_samples/cry_torchic.aif create mode 100644 sound/direct_sound_samples/cry_torkoal.aif create mode 100644 sound/direct_sound_samples/cry_totodile.aif create mode 100644 sound/direct_sound_samples/cry_trapinch.aif create mode 100644 sound/direct_sound_samples/cry_treecko.aif create mode 100644 sound/direct_sound_samples/cry_tropius.aif create mode 100644 sound/direct_sound_samples/cry_typhlosion.aif create mode 100644 sound/direct_sound_samples/cry_tyranitar.aif create mode 100644 sound/direct_sound_samples/cry_tyrogue.aif create mode 100644 sound/direct_sound_samples/cry_umbreon.aif create mode 100644 sound/direct_sound_samples/cry_unown.aif create mode 100644 sound/direct_sound_samples/cry_unused_265.aif create mode 100644 sound/direct_sound_samples/cry_unused_268.aif create mode 100644 sound/direct_sound_samples/cry_ursaring.aif create mode 100644 sound/direct_sound_samples/cry_vaporeon.aif create mode 100644 sound/direct_sound_samples/cry_venomoth.aif create mode 100644 sound/direct_sound_samples/cry_venonat.aif create mode 100644 sound/direct_sound_samples/cry_venusaur.aif create mode 100644 sound/direct_sound_samples/cry_vibrava.aif create mode 100644 sound/direct_sound_samples/cry_victreebel.aif create mode 100644 sound/direct_sound_samples/cry_vigoroth.aif create mode 100644 sound/direct_sound_samples/cry_vileplume.aif create mode 100644 sound/direct_sound_samples/cry_volbeat.aif create mode 100644 sound/direct_sound_samples/cry_voltorb.aif create mode 100644 sound/direct_sound_samples/cry_vulpix.aif create mode 100644 sound/direct_sound_samples/cry_wailmer.aif create mode 100644 sound/direct_sound_samples/cry_wailord.aif create mode 100644 sound/direct_sound_samples/cry_walrein.aif create mode 100644 sound/direct_sound_samples/cry_wartortle.aif create mode 100644 sound/direct_sound_samples/cry_weedle.aif create mode 100644 sound/direct_sound_samples/cry_weepinbell.aif create mode 100644 sound/direct_sound_samples/cry_weezing.aif create mode 100644 sound/direct_sound_samples/cry_whiscash.aif create mode 100644 sound/direct_sound_samples/cry_whismur.aif create mode 100644 sound/direct_sound_samples/cry_wigglytuff.aif create mode 100644 sound/direct_sound_samples/cry_wingull.aif create mode 100644 sound/direct_sound_samples/cry_wobbuffet.aif create mode 100644 sound/direct_sound_samples/cry_wooper.aif create mode 100644 sound/direct_sound_samples/cry_wurmple.aif create mode 100644 sound/direct_sound_samples/cry_wynaut.aif create mode 100644 sound/direct_sound_samples/cry_xatu.aif create mode 100644 sound/direct_sound_samples/cry_yanma.aif create mode 100644 sound/direct_sound_samples/cry_zangoose.aif create mode 100644 sound/direct_sound_samples/cry_zapdos.aif create mode 100644 sound/direct_sound_samples/cry_zigzagoon.aif create mode 100644 sound/direct_sound_samples/cry_zubat.aif diff --git a/data/sound_data.s b/data/sound_data.s index bda39ccc4..1b3090ff1 100644 --- a/data/sound_data.s +++ b/data/sound_data.s @@ -17,8 +17,1564 @@ gUnknown_848ED74:: @ 848ED74 .include "sound/music_player_table.inc" .include "sound/song_table.inc" -gDirectSoundWaveData_0:: @ 0x84A3DA8 - .incbin "baserom.gba", 0x4A3DA8, 0x211898 + .align 2 +gDirectSoundWaveData_0:: @ 84A3DA8 + .incbin "baserom.gba", 0x4A3DA8, 0x6BE1C + + .align 2 +Cry_Bulbasaur:: @ 850FBC4 + .incbin "sound/direct_sound_samples/cry_bulbasaur.bin" + + .align 2 +Cry_Ivysaur:: @ 8510C50 + .incbin "sound/direct_sound_samples/cry_ivysaur.bin" + + .align 2 +Cry_Venusaur:: @ 8511CE0 + .incbin "sound/direct_sound_samples/cry_venusaur.bin" + + .align 2 +Cry_Charmander:: @ 8513038 + .incbin "sound/direct_sound_samples/cry_charmander.bin" + + .align 2 +Cry_Charmeleon:: @ 8513EA8 + .incbin "sound/direct_sound_samples/cry_charmeleon.bin" + + .align 2 +Cry_Charizard:: @ 8514D28 + .incbin "sound/direct_sound_samples/cry_charizard.bin" + + .align 2 +Cry_Squirtle:: @ 8516070 + .incbin "sound/direct_sound_samples/cry_squirtle.bin" + + .align 2 +Cry_Wartortle:: @ 8516EE4 + .incbin "sound/direct_sound_samples/cry_wartortle.bin" + + .align 2 +Cry_Blastoise:: @ 8518024 + .incbin "sound/direct_sound_samples/cry_blastoise.bin" + + .align 2 +Cry_Caterpie:: @ 851936C + .incbin "sound/direct_sound_samples/cry_caterpie.bin" + + .align 2 +Cry_Metapod:: @ 8519BC4 + .incbin "sound/direct_sound_samples/cry_metapod.bin" + + .align 2 +Cry_Butterfree:: @ 851B314 + .incbin "sound/direct_sound_samples/cry_butterfree.bin" + + .align 2 +Cry_Weedle:: @ 851BD1C + .incbin "sound/direct_sound_samples/cry_weedle.bin" + + .align 2 +Cry_Kakuna:: @ 851CD60 + .incbin "sound/direct_sound_samples/cry_kakuna.bin" + + .align 2 +Cry_Beedrill:: @ 851DF9C + .incbin "sound/direct_sound_samples/cry_beedrill.bin" + + .align 2 +Cry_Pidgey:: @ 851F2F8 + .incbin "sound/direct_sound_samples/cry_pidgey.bin" + + .align 2 +Cry_Pidgeotto:: @ 851F6E0 + .incbin "sound/direct_sound_samples/cry_pidgeotto.bin" + + .align 2 +Cry_Pidgeot:: @ 85205E8 + .incbin "sound/direct_sound_samples/cry_pidgeot.bin" + + .align 2 +Cry_Rattata:: @ 852171C + .incbin "sound/direct_sound_samples/cry_rattata.bin" + + .align 2 +Cry_Raticate:: @ 8521EFC + .incbin "sound/direct_sound_samples/cry_raticate.bin" + + .align 2 +Cry_Spearow:: @ 8522880 + .incbin "sound/direct_sound_samples/cry_spearow.bin" + + .align 2 +Cry_Fearow:: @ 8523A24 + .incbin "sound/direct_sound_samples/cry_fearow.bin" + + .align 2 +Cry_Ekans:: @ 8524B60 + .incbin "sound/direct_sound_samples/cry_ekans.bin" + + .align 2 +Cry_Arbok:: @ 8525EAC + .incbin "sound/direct_sound_samples/cry_arbok.bin" + + .align 2 +Cry_Pikachu:: @ 8527204 + .incbin "sound/direct_sound_samples/cry_pikachu.bin" + + .align 2 +Cry_Raichu:: @ 85282AC + .incbin "sound/direct_sound_samples/cry_raichu.bin" + + .align 2 +Cry_Sandshrew:: @ 8529A6C + .incbin "sound/direct_sound_samples/cry_sandshrew.bin" + + .align 2 +Cry_Sandslash:: @ 852A3C0 + .incbin "sound/direct_sound_samples/cry_sandslash.bin" + + .align 2 +Cry_NidoranF:: @ 852B150 + .incbin "sound/direct_sound_samples/cry_nidoran_f.bin" + + .align 2 +Cry_Nidorina:: @ 852BB00 + .incbin "sound/direct_sound_samples/cry_nidorina.bin" + + .align 2 +Cry_Nidoqueen:: @ 852C7C8 + .incbin "sound/direct_sound_samples/cry_nidoqueen.bin" + + .align 2 +Cry_NidoranM:: @ 852D8A8 + .incbin "sound/direct_sound_samples/cry_nidoran_m.bin" + + .align 2 +Cry_Nidorino:: @ 852E310 + .incbin "sound/direct_sound_samples/cry_nidorino.bin" + + .align 2 +Cry_Nidoking:: @ 852EF24 + .incbin "sound/direct_sound_samples/cry_nidoking.bin" + + .align 2 +Cry_Clefairy:: @ 8530790 + .incbin "sound/direct_sound_samples/cry_clefairy.bin" + + .align 2 +Cry_Clefable:: @ 8531000 + .incbin "sound/direct_sound_samples/cry_clefable.bin" + + .align 2 +Cry_Vulpix:: @ 8531A90 + .incbin "sound/direct_sound_samples/cry_vulpix.bin" + + .align 2 +Cry_Ninetales:: @ 8533260 + .incbin "sound/direct_sound_samples/cry_ninetales.bin" + + .align 2 +Cry_Jigglypuff:: @ 8534ACC + .incbin "sound/direct_sound_samples/cry_jigglypuff.bin" + + .align 2 +Cry_Wigglytuff:: @ 8535030 + .incbin "sound/direct_sound_samples/cry_wigglytuff.bin" + + .align 2 +Cry_Zubat:: @ 85356F8 + .incbin "sound/direct_sound_samples/cry_zubat.bin" + + .align 2 +Cry_Golbat:: @ 8536A64 + .incbin "sound/direct_sound_samples/cry_golbat.bin" + + .align 2 +Cry_Oddish:: @ 8537DC8 + .incbin "sound/direct_sound_samples/cry_oddish.bin" + + .align 2 +Cry_Gloom:: @ 8538C64 + .incbin "sound/direct_sound_samples/cry_gloom.bin" + + .align 2 +Cry_Vileplume:: @ 85398E0 + .incbin "sound/direct_sound_samples/cry_vileplume.bin" + + .align 2 +Cry_Paras:: @ 853B27C + .incbin "sound/direct_sound_samples/cry_paras.bin" + + .align 2 +Cry_Parasect:: @ 853CE70 + .incbin "sound/direct_sound_samples/cry_parasect.bin" + + .align 2 +Cry_Venonat:: @ 853ECD8 + .incbin "sound/direct_sound_samples/cry_venonat.bin" + + .align 2 +Cry_Venomoth:: @ 853FC58 + .incbin "sound/direct_sound_samples/cry_venomoth.bin" + + .align 2 +Cry_Diglett:: @ 8540C5C + .incbin "sound/direct_sound_samples/cry_diglett.bin" + + .align 2 +Cry_Dugtrio:: @ 8541FCC + .incbin "sound/direct_sound_samples/cry_dugtrio.bin" + + .align 2 +Cry_Meowth:: @ 8543338 + .incbin "sound/direct_sound_samples/cry_meowth.bin" + + .align 2 +Cry_Persian:: @ 8543CC8 + .incbin "sound/direct_sound_samples/cry_persian.bin" + + .align 2 +Cry_Psyduck:: @ 8544FA4 + .incbin "sound/direct_sound_samples/cry_psyduck.bin" + + .align 2 +Cry_Golduck:: @ 8545CCC + .incbin "sound/direct_sound_samples/cry_golduck.bin" + + .align 2 +Cry_Mankey:: @ 8546814 + .incbin "sound/direct_sound_samples/cry_mankey.bin" + + .align 2 +Cry_Primeape:: @ 8547874 + .incbin "sound/direct_sound_samples/cry_primeape.bin" + + .align 2 +Cry_Growlithe:: @ 85488A4 + .incbin "sound/direct_sound_samples/cry_growlithe.bin" + + .align 2 +Cry_Arcanine:: @ 8549608 + .incbin "sound/direct_sound_samples/cry_arcanine.bin" + + .align 2 +Cry_Poliwag:: @ 854A744 + .incbin "sound/direct_sound_samples/cry_poliwag.bin" + + .align 2 +Cry_Poliwhirl:: @ 854B260 + .incbin "sound/direct_sound_samples/cry_poliwhirl.bin" + + .align 2 +Cry_Poliwrath:: @ 854B908 + .incbin "sound/direct_sound_samples/cry_poliwrath.bin" + + .align 2 +Cry_Abra:: @ 854C42C + .incbin "sound/direct_sound_samples/cry_abra.bin" + + .align 2 +Cry_Kadabra:: @ 854DB90 + .incbin "sound/direct_sound_samples/cry_kadabra.bin" + + .align 2 +Cry_Alakazam:: @ 854F678 + .incbin "sound/direct_sound_samples/cry_alakazam.bin" + + .align 2 +Cry_Machop:: @ 8551614 + .incbin "sound/direct_sound_samples/cry_machop.bin" + + .align 2 +Cry_Machoke:: @ 8552378 + .incbin "sound/direct_sound_samples/cry_machoke.bin" + + .align 2 +Cry_Machamp:: @ 8553108 + .incbin "sound/direct_sound_samples/cry_machamp.bin" + + .align 2 +Cry_Bellsprout:: @ 8554190 + .incbin "sound/direct_sound_samples/cry_bellsprout.bin" + + .align 2 +Cry_Weepinbell:: @ 855491C + .incbin "sound/direct_sound_samples/cry_weepinbell.bin" + + .align 2 +Cry_Victreebel:: @ 85557BC + .incbin "sound/direct_sound_samples/cry_victreebel.bin" + + .align 2 +Cry_Tentacool:: @ 8556B08 + .incbin "sound/direct_sound_samples/cry_tentacool.bin" + + .align 2 +Cry_Tentacruel:: @ 8557AF8 + .incbin "sound/direct_sound_samples/cry_tentacruel.bin" + + .align 2 +Cry_Geodude:: @ 85591F4 + .incbin "sound/direct_sound_samples/cry_geodude.bin" + + .align 2 +Cry_Graveler:: @ 855A9A8 + .incbin "sound/direct_sound_samples/cry_graveler.bin" + + .align 2 +Cry_Golem:: @ 855C590 + .incbin "sound/direct_sound_samples/cry_golem.bin" + + .align 2 +Cry_Ponyta:: @ 855D3BC + .incbin "sound/direct_sound_samples/cry_ponyta.bin" + + .align 2 +Cry_Rapidash:: @ 855E2CC + .incbin "sound/direct_sound_samples/cry_rapidash.bin" + + .align 2 +Cry_Slowpoke:: @ 855F56C + .incbin "sound/direct_sound_samples/cry_slowpoke.bin" + + .align 2 +Cry_Slowbro:: @ 855FCD4 + .incbin "sound/direct_sound_samples/cry_slowbro.bin" + + .align 2 +Cry_Magnemite:: @ 8560A44 + .incbin "sound/direct_sound_samples/cry_magnemite.bin" + + .align 2 +Cry_Magneton:: @ 8561D88 + .incbin "sound/direct_sound_samples/cry_magneton.bin" + + .align 2 +Cry_Farfetchd:: @ 8563570 + .incbin "sound/direct_sound_samples/cry_farfetchd.bin" + + .align 2 +Cry_Doduo:: @ 8563CEC + .incbin "sound/direct_sound_samples/cry_doduo.bin" + + .align 2 +Cry_Dodrio:: @ 8565030 + .incbin "sound/direct_sound_samples/cry_dodrio.bin" + + .align 2 +Cry_Seel:: @ 85663A8 + .incbin "sound/direct_sound_samples/cry_seel.bin" + + .align 2 +Cry_Dewgong:: @ 8567598 + .incbin "sound/direct_sound_samples/cry_dewgong.bin" + + .align 2 +Cry_Grimer:: @ 8568ABC + .incbin "sound/direct_sound_samples/cry_grimer.bin" + + .align 2 +Cry_Muk:: @ 8569544 + .incbin "sound/direct_sound_samples/cry_muk.bin" + + .align 2 +Cry_Shellder:: @ 856A404 + .incbin "sound/direct_sound_samples/cry_shellder.bin" + + .align 2 +Cry_Cloyster:: @ 856B378 + .incbin "sound/direct_sound_samples/cry_cloyster.bin" + + .align 2 +Cry_Gastly:: @ 856C83C + .incbin "sound/direct_sound_samples/cry_gastly.bin" + + .align 2 +Cry_Haunter:: @ 856DF8C + .incbin "sound/direct_sound_samples/cry_haunter.bin" + + .align 2 +Cry_Gengar:: @ 856F70C + .incbin "sound/direct_sound_samples/cry_gengar.bin" + + .align 2 +Cry_Onix:: @ 85705CC + .incbin "sound/direct_sound_samples/cry_onix.bin" + + .align 2 +Cry_Drowzee:: @ 8571E90 + .incbin "sound/direct_sound_samples/cry_drowzee.bin" + + .align 2 +Cry_Hypno:: @ 8573BA8 + .incbin "sound/direct_sound_samples/cry_hypno.bin" + + .align 2 +Cry_Krabby:: @ 85758AC + .incbin "sound/direct_sound_samples/cry_krabby.bin" + + .align 2 +Cry_Kingler:: @ 85770F8 + .incbin "sound/direct_sound_samples/cry_kingler.bin" + + .align 2 +Cry_Voltorb:: @ 8578950 + .incbin "sound/direct_sound_samples/cry_voltorb.bin" + + .align 2 +Cry_Electrode:: @ 857A214 + .incbin "sound/direct_sound_samples/cry_electrode.bin" + + .align 2 +Cry_Exeggcute:: @ 857BB4C + .incbin "sound/direct_sound_samples/cry_exeggcute.bin" + + .align 2 +Cry_Exeggutor:: @ 857CE2C + .incbin "sound/direct_sound_samples/cry_exeggutor.bin" + + .align 2 +Cry_Cubone:: @ 857EE10 + .incbin "sound/direct_sound_samples/cry_cubone.bin" + + .align 2 +Cry_Marowak:: @ 857FD30 + .incbin "sound/direct_sound_samples/cry_marowak.bin" + + .align 2 +Cry_Hitmonlee:: @ 8580BA0 + .incbin "sound/direct_sound_samples/cry_hitmonlee.bin" + + .align 2 +Cry_Hitmonchan:: @ 8581E4C + .incbin "sound/direct_sound_samples/cry_hitmonchan.bin" + + .align 2 +Cry_Lickitung:: @ 8583024 + .incbin "sound/direct_sound_samples/cry_lickitung.bin" + + .align 2 +Cry_Koffing:: @ 8583F4C + .incbin "sound/direct_sound_samples/cry_koffing.bin" + + .align 2 +Cry_Weezing:: @ 85853A8 + .incbin "sound/direct_sound_samples/cry_weezing.bin" + + .align 2 +Cry_Rhyhorn:: @ 8586954 + .incbin "sound/direct_sound_samples/cry_rhyhorn.bin" + + .align 2 +Cry_Rhydon:: @ 8587CC0 + .incbin "sound/direct_sound_samples/cry_rhydon.bin" + + .align 2 +Cry_Chansey:: @ 858912C + .incbin "sound/direct_sound_samples/cry_chansey.bin" + + .align 2 +Cry_Tangela:: @ 8589FF8 + .incbin "sound/direct_sound_samples/cry_tangela.bin" + + .align 2 +Cry_Kangaskhan:: @ 858AF14 + .incbin "sound/direct_sound_samples/cry_kangaskhan.bin" + + .align 2 +Cry_Horsea:: @ 858C1C8 + .incbin "sound/direct_sound_samples/cry_horsea.bin" + + .align 2 +Cry_Seadra:: @ 858CB44 + .incbin "sound/direct_sound_samples/cry_seadra.bin" + + .align 2 +Cry_Goldeen:: @ 858D3B0 + .incbin "sound/direct_sound_samples/cry_goldeen.bin" + + .align 2 +Cry_Seaking:: @ 858DD88 + .incbin "sound/direct_sound_samples/cry_seaking.bin" + + .align 2 +Cry_Staryu:: @ 858F0E0 + .incbin "sound/direct_sound_samples/cry_staryu.bin" + + .align 2 +Cry_Starmie:: @ 85904C8 + .incbin "sound/direct_sound_samples/cry_starmie.bin" + + .align 2 +Cry_MrMime:: @ 85919A4 + .incbin "sound/direct_sound_samples/cry_mr_mime.bin" + + .align 2 +Cry_Scyther:: @ 8592C94 + .incbin "sound/direct_sound_samples/cry_scyther.bin" + + .align 2 +Cry_Jynx:: @ 85939F0 + .incbin "sound/direct_sound_samples/cry_jynx.bin" + + .align 2 +Cry_Electabuzz:: @ 8596964 + .incbin "sound/direct_sound_samples/cry_electabuzz.bin" + + .align 2 +Cry_Magmar:: @ 8598848 + .incbin "sound/direct_sound_samples/cry_magmar.bin" + + .align 2 +Cry_Pinsir:: @ 85997C4 + .incbin "sound/direct_sound_samples/cry_pinsir.bin" + + .align 2 +Cry_Tauros:: @ 859A420 + .incbin "sound/direct_sound_samples/cry_tauros.bin" + + .align 2 +Cry_Magikarp:: @ 859B674 + .incbin "sound/direct_sound_samples/cry_magikarp.bin" + + .align 2 +Cry_Gyarados:: @ 859C97C + .incbin "sound/direct_sound_samples/cry_gyarados.bin" + + .align 2 +Cry_Lapras:: @ 859DDB0 + .incbin "sound/direct_sound_samples/cry_lapras.bin" + + .align 2 +Cry_Ditto:: @ 859EC84 + .incbin "sound/direct_sound_samples/cry_ditto.bin" + + .align 2 +Cry_Eevee:: @ 859F7A0 + .incbin "sound/direct_sound_samples/cry_eevee.bin" + + .align 2 +Cry_Vaporeon:: @ 85A05D8 + .incbin "sound/direct_sound_samples/cry_vaporeon.bin" + + .align 2 +Cry_Jolteon:: @ 85A1BF0 + .incbin "sound/direct_sound_samples/cry_jolteon.bin" + + .align 2 +Cry_Flareon:: @ 85A2BC4 + .incbin "sound/direct_sound_samples/cry_flareon.bin" + + .align 2 +Cry_Porygon:: @ 85A3B48 + .incbin "sound/direct_sound_samples/cry_porygon.bin" + + .align 2 +Cry_Omanyte:: @ 85A4F54 + .incbin "sound/direct_sound_samples/cry_omanyte.bin" + + .align 2 +Cry_Omastar:: @ 85A5CAC + .incbin "sound/direct_sound_samples/cry_omastar.bin" + + .align 2 +Cry_Kabuto:: @ 85A6A00 + .incbin "sound/direct_sound_samples/cry_kabuto.bin" + + .align 2 +Cry_Kabutops:: @ 85A7654 + .incbin "sound/direct_sound_samples/cry_kabutops.bin" + + .align 2 +Cry_Aerodactyl:: @ 85A8410 + .incbin "sound/direct_sound_samples/cry_aerodactyl.bin" + + .align 2 +Cry_Snorlax:: @ 85A9C6C + .incbin "sound/direct_sound_samples/cry_snorlax.bin" + + .align 2 +Cry_Articuno:: @ 85AA1A8 + .incbin "sound/direct_sound_samples/cry_articuno.bin" + + .align 2 +Cry_Zapdos:: @ 85AB950 + .incbin "sound/direct_sound_samples/cry_zapdos.bin" + + .align 2 +Cry_Moltres:: @ 85AC8C8 + .incbin "sound/direct_sound_samples/cry_moltres.bin" + + .align 2 +Cry_Dratini:: @ 85AE074 + .incbin "sound/direct_sound_samples/cry_dratini.bin" + + .align 2 +Cry_Dragonair:: @ 85AEC10 + .incbin "sound/direct_sound_samples/cry_dragonair.bin" + + .align 2 +Cry_Dragonite:: @ 85AFCB8 + .incbin "sound/direct_sound_samples/cry_dragonite.bin" + + .align 2 +Cry_Mewtwo:: @ 85B0FC4 + .incbin "sound/direct_sound_samples/cry_mewtwo.bin" + + .align 2 +Cry_Mew:: @ 85B2E2C + .incbin "sound/direct_sound_samples/cry_mew.bin" + + .align 2 +Cry_Chikorita:: @ 85B4C94 + .incbin "sound/direct_sound_samples/cry_chikorita.bin" + + .align 2 +Cry_Bayleef:: @ 85B51D4 + .incbin "sound/direct_sound_samples/cry_bayleef.bin" + + .align 2 +Cry_Meganium:: @ 85B5AA0 + .incbin "sound/direct_sound_samples/cry_meganium.bin" + + .align 2 +Cry_Cyndaquil:: @ 85B6AD8 + .incbin "sound/direct_sound_samples/cry_cyndaquil.bin" + + .align 2 +Cry_Quilava:: @ 85B71DC + .incbin "sound/direct_sound_samples/cry_quilava.bin" + + .align 2 +Cry_Typhlosion:: @ 85B7DC4 + .incbin "sound/direct_sound_samples/cry_typhlosion.bin" + + .align 2 +Cry_Totodile:: @ 85BA3D4 + .incbin "sound/direct_sound_samples/cry_totodile.bin" + + .align 2 +Cry_Croconaw:: @ 85BB62C + .incbin "sound/direct_sound_samples/cry_croconaw.bin" + + .align 2 +Cry_Feraligatr:: @ 85BCA68 + .incbin "sound/direct_sound_samples/cry_feraligatr.bin" + + .align 2 +Cry_Sentret:: @ 85BE3EC + .incbin "sound/direct_sound_samples/cry_sentret.bin" + + .align 2 +Cry_Furret:: @ 85BE814 + .incbin "sound/direct_sound_samples/cry_furret.bin" + + .align 2 +Cry_Hoothoot:: @ 85BEE5C + .incbin "sound/direct_sound_samples/cry_hoothoot.bin" + + .align 2 +Cry_Noctowl:: @ 85BF940 + .incbin "sound/direct_sound_samples/cry_noctowl.bin" + + .align 2 +Cry_Ledyba:: @ 85C0E70 + .incbin "sound/direct_sound_samples/cry_ledyba.bin" + + .align 2 +Cry_Ledian:: @ 85C1568 + .incbin "sound/direct_sound_samples/cry_ledian.bin" + + .align 2 +Cry_Spinarak:: @ 85C1DCC + .incbin "sound/direct_sound_samples/cry_spinarak.bin" + + .align 2 +Cry_Ariados:: @ 85C2B30 + .incbin "sound/direct_sound_samples/cry_ariados.bin" + + .align 2 +Cry_Crobat:: @ 85C3784 + .incbin "sound/direct_sound_samples/cry_crobat.bin" + + .align 2 +Cry_Chinchou:: @ 85C4EB4 + .incbin "sound/direct_sound_samples/cry_chinchou.bin" + + .align 2 +Cry_Lanturn:: @ 85C5B64 + .incbin "sound/direct_sound_samples/cry_lanturn.bin" + + .align 2 +Cry_Pichu:: @ 85C65F0 + .incbin "sound/direct_sound_samples/cry_pichu.bin" + + .align 2 +Cry_Cleffa:: @ 85C6D44 + .incbin "sound/direct_sound_samples/cry_cleffa.bin" + + .align 2 +Cry_Igglybuff:: @ 85C7334 + .incbin "sound/direct_sound_samples/cry_igglybuff.bin" + + .align 2 +Cry_Togepi:: @ 85C7A30 + .incbin "sound/direct_sound_samples/cry_togepi.bin" + + .align 2 +Cry_Togetic:: @ 85C8518 + .incbin "sound/direct_sound_samples/cry_togetic.bin" + + .align 2 +Cry_Natu:: @ 85C8C18 + .incbin "sound/direct_sound_samples/cry_natu.bin" + + .align 2 +Cry_Xatu:: @ 85C96A8 + .incbin "sound/direct_sound_samples/cry_xatu.bin" + + .align 2 +Cry_Mareep:: @ 85CA574 + .incbin "sound/direct_sound_samples/cry_mareep.bin" + + .align 2 +Cry_Flaaffy:: @ 85CACCC + .incbin "sound/direct_sound_samples/cry_flaaffy.bin" + + .align 2 +Cry_Ampharos:: @ 85CBA80 + .incbin "sound/direct_sound_samples/cry_ampharos.bin" + + .align 2 +Cry_Bellossom:: @ 85CCB00 + .incbin "sound/direct_sound_samples/cry_bellossom.bin" + + .align 2 +Cry_Marill:: @ 85CD918 + .incbin "sound/direct_sound_samples/cry_marill.bin" + + .align 2 +Cry_Azumarill:: @ 85CE62C + .incbin "sound/direct_sound_samples/cry_azumarill.bin" + + .align 2 +Cry_Sudowoodo:: @ 85CF718 + .incbin "sound/direct_sound_samples/cry_sudowoodo.bin" + + .align 2 +Cry_Politoed:: @ 85D0748 + .incbin "sound/direct_sound_samples/cry_politoed.bin" + + .align 2 +Cry_Hoppip:: @ 85D198C + .incbin "sound/direct_sound_samples/cry_hoppip.bin" + + .align 2 +Cry_Skiploom:: @ 85D21F8 + .incbin "sound/direct_sound_samples/cry_skiploom.bin" + + .align 2 +Cry_Jumpluff:: @ 85D2F00 + .incbin "sound/direct_sound_samples/cry_jumpluff.bin" + + .align 2 +Cry_Aipom:: @ 85D3F3C + .incbin "sound/direct_sound_samples/cry_aipom.bin" + + .align 2 +Cry_Sunkern:: @ 85D4D5C + .incbin "sound/direct_sound_samples/cry_sunkern.bin" + + .align 2 +Cry_Sunflora:: @ 85D5570 + .incbin "sound/direct_sound_samples/cry_sunflora.bin" + + .align 2 +Cry_Yanma:: @ 85D6550 + .incbin "sound/direct_sound_samples/cry_yanma.bin" + + .align 2 +Cry_Wooper:: @ 85D7658 + .incbin "sound/direct_sound_samples/cry_wooper.bin" + + .align 2 +Cry_Quagsire:: @ 85D7DB8 + .incbin "sound/direct_sound_samples/cry_quagsire.bin" + + .align 2 +Cry_Espeon:: @ 85D8B18 + .incbin "sound/direct_sound_samples/cry_espeon.bin" + + .align 2 +Cry_Umbreon:: @ 85D9ECC + .incbin "sound/direct_sound_samples/cry_umbreon.bin" + + .align 2 +Cry_Murkrow:: @ 85DAE4C + .incbin "sound/direct_sound_samples/cry_murkrow.bin" + + .align 2 +Cry_Slowking:: @ 85DBF10 + .incbin "sound/direct_sound_samples/cry_slowking.bin" + + .align 2 +Cry_Misdreavus:: @ 85DD6F4 + .incbin "sound/direct_sound_samples/cry_misdreavus.bin" + + .align 2 +Cry_Unown:: @ 85DE294 + .incbin "sound/direct_sound_samples/cry_unown.bin" + + .align 2 +Cry_Wobbuffet:: @ 85DEFBC + .incbin "sound/direct_sound_samples/cry_wobbuffet.bin" + + .align 2 +Cry_Girafarig:: @ 85E0458 + .incbin "sound/direct_sound_samples/cry_girafarig.bin" + + .align 2 +Cry_Pineco:: @ 85E130C + .incbin "sound/direct_sound_samples/cry_pineco.bin" + + .align 2 +Cry_Forretress:: @ 85E206C + .incbin "sound/direct_sound_samples/cry_forretress.bin" + + .align 2 +Cry_Dunsparce:: @ 85E3474 + .incbin "sound/direct_sound_samples/cry_dunsparce.bin" + + .align 2 +Cry_Gligar:: @ 85E4454 + .incbin "sound/direct_sound_samples/cry_gligar.bin" + + .align 2 +Cry_Steelix:: @ 85E5074 + .incbin "sound/direct_sound_samples/cry_steelix.bin" + + .align 2 +Cry_Snubbull:: @ 85E769C + .incbin "sound/direct_sound_samples/cry_snubbull.bin" + + .align 2 +Cry_Granbull:: @ 85E8510 + .incbin "sound/direct_sound_samples/cry_granbull.bin" + + .align 2 +Cry_Qwilfish:: @ 85E9CB4 + .incbin "sound/direct_sound_samples/cry_qwilfish.bin" + + .align 2 +Cry_Scizor:: @ 85EA850 + .incbin "sound/direct_sound_samples/cry_scizor.bin" + + .align 2 +Cry_Shuckle:: @ 85EBF4C + .incbin "sound/direct_sound_samples/cry_shuckle.bin" + + .align 2 +Cry_Heracross:: @ 85EC980 + .incbin "sound/direct_sound_samples/cry_heracross.bin" + + .align 2 +Cry_Sneasel:: @ 85EDBD4 + .incbin "sound/direct_sound_samples/cry_sneasel.bin" + + .align 2 +Cry_Teddiursa:: @ 85EE4F8 + .incbin "sound/direct_sound_samples/cry_teddiursa.bin" + + .align 2 +Cry_Ursaring:: @ 85EF584 + .incbin "sound/direct_sound_samples/cry_ursaring.bin" + + .align 2 +Cry_Slugma:: @ 85F135C + .incbin "sound/direct_sound_samples/cry_slugma.bin" + + .align 2 +Cry_Magcargo:: @ 85F2474 + .incbin "sound/direct_sound_samples/cry_magcargo.bin" + + .align 2 +Cry_Swinub:: @ 85F397C + .incbin "sound/direct_sound_samples/cry_swinub.bin" + + .align 2 +Cry_Piloswine:: @ 85F4624 + .incbin "sound/direct_sound_samples/cry_piloswine.bin" + + .align 2 +Cry_Corsola:: @ 85F5318 + .incbin "sound/direct_sound_samples/cry_corsola.bin" + + .align 2 +Cry_Remoraid:: @ 85F5FF8 + .incbin "sound/direct_sound_samples/cry_remoraid.bin" + + .align 2 +Cry_Octillery:: @ 85F6A88 + .incbin "sound/direct_sound_samples/cry_octillery.bin" + + .align 2 +Cry_Delibird:: @ 85F84CC + .incbin "sound/direct_sound_samples/cry_delibird.bin" + + .align 2 +Cry_Mantine:: @ 85F9500 + .incbin "sound/direct_sound_samples/cry_mantine.bin" + + .align 2 +Cry_Skarmory:: @ 85FA4C8 + .incbin "sound/direct_sound_samples/cry_skarmory.bin" + + .align 2 +Cry_Houndour:: @ 85FBCD0 + .incbin "sound/direct_sound_samples/cry_houndour.bin" + + .align 2 +Cry_Houndoom:: @ 85FC978 + .incbin "sound/direct_sound_samples/cry_houndoom.bin" + + .align 2 +Cry_Kingdra:: @ 85FDD28 + .incbin "sound/direct_sound_samples/cry_kingdra.bin" + + .align 2 +Cry_Phanpy:: @ 85FEB00 + .incbin "sound/direct_sound_samples/cry_phanpy.bin" + + .align 2 +Cry_Donphan:: @ 85FF650 + .incbin "sound/direct_sound_samples/cry_donphan.bin" + + .align 2 +Cry_Porygon2:: @ 8600774 + .incbin "sound/direct_sound_samples/cry_porygon2.bin" + + .align 2 +Cry_Stantler:: @ 860172C + .incbin "sound/direct_sound_samples/cry_stantler.bin" + + .align 2 +Cry_Smeargle:: @ 8602DA8 + .incbin "sound/direct_sound_samples/cry_smeargle.bin" + + .align 2 +Cry_Tyrogue:: @ 86037DC + .incbin "sound/direct_sound_samples/cry_tyrogue.bin" + + .align 2 +Cry_Hitmontop:: @ 8604804 + .incbin "sound/direct_sound_samples/cry_hitmontop.bin" + + .align 2 +Cry_Smoochum:: @ 86055E4 + .incbin "sound/direct_sound_samples/cry_smoochum.bin" + + .align 2 +Cry_Elekid:: @ 8606198 + .incbin "sound/direct_sound_samples/cry_elekid.bin" + + .align 2 +Cry_Magby:: @ 8606C24 + .incbin "sound/direct_sound_samples/cry_magby.bin" + + .align 2 +Cry_Miltank:: @ 8607A94 + .incbin "sound/direct_sound_samples/cry_miltank.bin" + + .align 2 +Cry_Blissey:: @ 8608970 + .incbin "sound/direct_sound_samples/cry_blissey.bin" + + .align 2 +Cry_Raikou:: @ 8609A04 + .incbin "sound/direct_sound_samples/cry_raikou.bin" + + .align 2 +Cry_Entei:: @ 860AB74 + .incbin "sound/direct_sound_samples/cry_entei.bin" + + .align 2 +Cry_Suicune:: @ 860BFE8 + .incbin "sound/direct_sound_samples/cry_suicune.bin" + + .align 2 +Cry_Larvitar:: @ 860D230 + .incbin "sound/direct_sound_samples/cry_larvitar.bin" + + .align 2 +Cry_Pupitar:: @ 860DEE0 + .incbin "sound/direct_sound_samples/cry_pupitar.bin" + + .align 2 +Cry_Tyranitar:: @ 860E750 + .incbin "sound/direct_sound_samples/cry_tyranitar.bin" + + .align 2 +Cry_Lugia:: @ 860FEB0 + .incbin "sound/direct_sound_samples/cry_lugia.bin" + + .align 2 +Cry_HoOh:: @ 86124A8 + .incbin "sound/direct_sound_samples/cry_ho_oh.bin" + + .align 2 +Cry_Celebi:: @ 8613B3C + .incbin "sound/direct_sound_samples/cry_celebi.bin" + + .align 2 +Cry_Kecleon:: @ 86149B4 + .incbin "sound/direct_sound_samples/cry_kecleon.bin" + + .align 2 +Cry_Roselia:: @ 8615214 + .incbin "sound/direct_sound_samples/cry_roselia.bin" + + .align 2 +Cry_Torkoal:: @ 8615CD4 + .incbin "sound/direct_sound_samples/cry_torkoal.bin" + + .align 2 +Cry_Electrike:: @ 8616620 + .incbin "sound/direct_sound_samples/cry_electrike.bin" + + .align 2 +Cry_Manectric:: @ 861727C + .incbin "sound/direct_sound_samples/cry_manectric.bin" + + .align 2 +Cry_Duskull:: @ 8618784 + .incbin "sound/direct_sound_samples/cry_duskull.bin" + + .align 2 +Cry_Latias:: @ 861921C + .incbin "sound/direct_sound_samples/cry_latias.bin" + + .align 2 +Cry_Wynaut:: @ 8619E4C + .incbin "sound/direct_sound_samples/cry_wynaut.bin" + + .align 2 +Cry_Seviper:: @ 861AC2C + .incbin "sound/direct_sound_samples/cry_seviper.bin" + + .align 2 +Cry_Sharpedo:: @ 861B7CC + .incbin "sound/direct_sound_samples/cry_sharpedo.bin" + + .align 2 +Cry_Zangoose:: @ 861CED8 + .incbin "sound/direct_sound_samples/cry_zangoose.bin" + + .align 2 +Cry_Azurill:: @ 861D868 + .incbin "sound/direct_sound_samples/cry_azurill.bin" + + .align 2 +Cry_Swablu:: @ 861E2D0 + .incbin "sound/direct_sound_samples/cry_swablu.bin" + + .align 2 +Cry_Altaria:: @ 861E868 + .incbin "sound/direct_sound_samples/cry_altaria.bin" + + .align 2 +Cry_Unused265:: @ 861F384 + .incbin "sound/direct_sound_samples/cry_unused_265.bin" + + .align 2 +Cry_Taillow:: @ 861FCD8 + .incbin "sound/direct_sound_samples/cry_taillow.bin" + + .align 2 +Cry_Swellow:: @ 86202D8 + .incbin "sound/direct_sound_samples/cry_swellow.bin" + + .align 2 +Cry_Unused268:: @ 8620BDC + .incbin "sound/direct_sound_samples/cry_unused_268.bin" + + .align 2 +Cry_Spinda:: @ 8621D8C + .incbin "sound/direct_sound_samples/cry_spinda.bin" + + .align 2 +Cry_Torchic:: @ 86229F8 + .incbin "sound/direct_sound_samples/cry_torchic.bin" + + .align 2 +Cry_Combusken:: @ 86233A0 + .incbin "sound/direct_sound_samples/cry_combusken.bin" + + .align 2 +Cry_Blaziken:: @ 8625074 + .incbin "sound/direct_sound_samples/cry_blaziken.bin" + + .align 2 +Cry_Treecko:: @ 8626FF4 + .incbin "sound/direct_sound_samples/cry_treecko.bin" + + .align 2 +Cry_Grovyle:: @ 8627B9C + .incbin "sound/direct_sound_samples/cry_grovyle.bin" + + .align 2 +Cry_Sceptile:: @ 8629010 + .incbin "sound/direct_sound_samples/cry_sceptile.bin" + + .align 2 +Cry_Mudkip:: @ 862AA2C + .incbin "sound/direct_sound_samples/cry_mudkip.bin" + + .align 2 +Cry_Marshtomp:: @ 862B1B0 + .incbin "sound/direct_sound_samples/cry_marshtomp.bin" + + .align 2 +Cry_Swampert:: @ 862C2B4 + .incbin "sound/direct_sound_samples/cry_swampert.bin" + + .align 2 +Cry_Pelipper:: @ 862D934 + .incbin "sound/direct_sound_samples/cry_pelipper.bin" + + .align 2 +Cry_Wingull:: @ 862E4FC + .incbin "sound/direct_sound_samples/cry_wingull.bin" + + .align 2 +Cry_Banette:: @ 862F13C + .incbin "sound/direct_sound_samples/cry_banette.bin" + + .align 2 +Cry_Shuppet:: @ 862FDE4 + .incbin "sound/direct_sound_samples/cry_shuppet.bin" + + .align 2 +Cry_Lotad:: @ 8630624 + .incbin "sound/direct_sound_samples/cry_lotad.bin" + + .align 2 +Cry_Lombre:: @ 8630A8C + .incbin "sound/direct_sound_samples/cry_lombre.bin" + + .align 2 +Cry_Ludicolo:: @ 8631920 + .incbin "sound/direct_sound_samples/cry_ludicolo.bin" + + .align 2 +Cry_Seedot:: @ 86329F0 + .incbin "sound/direct_sound_samples/cry_seedot.bin" + + .align 2 +Cry_Nuzleaf:: @ 863321C + .incbin "sound/direct_sound_samples/cry_nuzleaf.bin" + + .align 2 +Cry_Shiftry:: @ 8633D84 + .incbin "sound/direct_sound_samples/cry_shiftry.bin" + + .align 2 +Cry_Carvanha:: @ 8635148 + .incbin "sound/direct_sound_samples/cry_carvanha.bin" + + .align 2 +Cry_Wurmple:: @ 8635B5C + .incbin "sound/direct_sound_samples/cry_wurmple.bin" + + .align 2 +Cry_Silcoon:: @ 8636428 + .incbin "sound/direct_sound_samples/cry_silcoon.bin" + + .align 2 +Cry_Beautifly:: @ 8637454 + .incbin "sound/direct_sound_samples/cry_beautifly.bin" + + .align 2 +Cry_Cascoon:: @ 8637C8C + .incbin "sound/direct_sound_samples/cry_cascoon.bin" + + .align 2 +Cry_Dustox:: @ 8638CD0 + .incbin "sound/direct_sound_samples/cry_dustox.bin" + + .align 2 +Cry_Ralts:: @ 863997C + .incbin "sound/direct_sound_samples/cry_ralts.bin" + + .align 2 +Cry_Kirlia:: @ 863A398 + .incbin "sound/direct_sound_samples/cry_kirlia.bin" + + .align 2 +Cry_Gardevoir:: @ 863AFC8 + .incbin "sound/direct_sound_samples/cry_gardevoir.bin" + + .align 2 +Cry_Slakoth:: @ 863C82C + .incbin "sound/direct_sound_samples/cry_slakoth.bin" + + .align 2 +Cry_Vigoroth:: @ 863D0B0 + .incbin "sound/direct_sound_samples/cry_vigoroth.bin" + + .align 2 +Cry_Slaking:: @ 863DF08 + .incbin "sound/direct_sound_samples/cry_slaking.bin" + + .align 2 +Cry_Nincada:: @ 863E8F4 + .incbin "sound/direct_sound_samples/cry_nincada.bin" + + .align 2 +Cry_Ninjask:: @ 863EF64 + .incbin "sound/direct_sound_samples/cry_ninjask.bin" + + .align 2 +Cry_Shedinja:: @ 863FB8C + .incbin "sound/direct_sound_samples/cry_shedinja.bin" + + .align 2 +Cry_Makuhita:: @ 8640344 + .incbin "sound/direct_sound_samples/cry_makuhita.bin" + + .align 2 +Cry_Hariyama:: @ 8640AA0 + .incbin "sound/direct_sound_samples/cry_hariyama.bin" + + .align 2 +Cry_Nosepass:: @ 8641B58 + .incbin "sound/direct_sound_samples/cry_nosepass.bin" + + .align 2 +Cry_Glalie:: @ 86428BC + .incbin "sound/direct_sound_samples/cry_glalie.bin" + + .align 2 +Cry_Plusle:: @ 8643DA0 + .incbin "sound/direct_sound_samples/cry_plusle.bin" + + .align 2 +Cry_Minun:: @ 864469C + .incbin "sound/direct_sound_samples/cry_minun.bin" + + .align 2 +Cry_Surskit:: @ 86456A4 + .incbin "sound/direct_sound_samples/cry_surskit.bin" + + .align 2 +Cry_Masquerain:: @ 8646124 + .incbin "sound/direct_sound_samples/cry_masquerain.bin" + + .align 2 +Cry_Skitty:: @ 86474D8 + .incbin "sound/direct_sound_samples/cry_skitty.bin" + + .align 2 +Cry_Delcatty:: @ 8647BEC + .incbin "sound/direct_sound_samples/cry_delcatty.bin" + + .align 2 +Cry_Gulpin:: @ 8649104 + .incbin "sound/direct_sound_samples/cry_gulpin.bin" + + .align 2 +Cry_Swalot:: @ 8649908 + .incbin "sound/direct_sound_samples/cry_swalot.bin" + + .align 2 +Cry_Numel:: @ 864AA68 + .incbin "sound/direct_sound_samples/cry_numel.bin" + + .align 2 +Cry_Camerupt:: @ 864B3B4 + .incbin "sound/direct_sound_samples/cry_camerupt.bin" + + .align 2 +Cry_Barboach:: @ 864CAD4 + .incbin "sound/direct_sound_samples/cry_barboach.bin" + + .align 2 +Cry_Whiscash:: @ 864D410 + .incbin "sound/direct_sound_samples/cry_whiscash.bin" + + .align 2 +Cry_Corphish:: @ 864E50C + .incbin "sound/direct_sound_samples/cry_corphish.bin" + + .align 2 +Cry_Crawdaunt:: @ 864F110 + .incbin "sound/direct_sound_samples/cry_crawdaunt.bin" + + .align 2 +Cry_Spoink:: @ 86509C8 + .incbin "sound/direct_sound_samples/cry_spoink.bin" + + .align 2 +Cry_Grumpig:: @ 8651108 + .incbin "sound/direct_sound_samples/cry_grumpig.bin" + + .align 2 +Cry_Trapinch:: @ 8651DA8 + .incbin "sound/direct_sound_samples/cry_trapinch.bin" + + .align 2 +Cry_Vibrava:: @ 86527CC + .incbin "sound/direct_sound_samples/cry_vibrava.bin" + + .align 2 +Cry_Flygon:: @ 86535D0 + .incbin "sound/direct_sound_samples/cry_flygon.bin" + + .align 2 +Cry_Cacnea:: @ 8654FD8 + .incbin "sound/direct_sound_samples/cry_cacnea.bin" + + .align 2 +Cry_Cacturne:: @ 86558C8 + .incbin "sound/direct_sound_samples/cry_cacturne.bin" + + .align 2 +Cry_Baltoy:: @ 8656F78 + .incbin "sound/direct_sound_samples/cry_baltoy.bin" + + .align 2 +Cry_Claydol:: @ 8657BFC + .incbin "sound/direct_sound_samples/cry_claydol.bin" + + .align 2 +Cry_Lunatone:: @ 8658F5C + .incbin "sound/direct_sound_samples/cry_lunatone.bin" + + .align 2 +Cry_Solrock:: @ 865A758 + .incbin "sound/direct_sound_samples/cry_solrock.bin" + + .align 2 +Cry_Feebas:: @ 865B784 + .incbin "sound/direct_sound_samples/cry_feebas.bin" + + .align 2 +Cry_Milotic:: @ 865BF58 + .incbin "sound/direct_sound_samples/cry_milotic.bin" + + .align 2 +Cry_Absol:: @ 865E69C + .incbin "sound/direct_sound_samples/cry_absol.bin" + + .align 2 +Cry_Meditite:: @ 865F118 + .incbin "sound/direct_sound_samples/cry_meditite.bin" + + .align 2 +Cry_Medicham:: @ 865F938 + .incbin "sound/direct_sound_samples/cry_medicham.bin" + + .align 2 +Cry_Spheal:: @ 86609BC + .incbin "sound/direct_sound_samples/cry_spheal.bin" + + .align 2 +Cry_Sealeo:: @ 8660F70 + .incbin "sound/direct_sound_samples/cry_sealeo.bin" + + .align 2 +Cry_Walrein:: @ 8661B48 + .incbin "sound/direct_sound_samples/cry_walrein.bin" + + .align 2 +Cry_Clamperl:: @ 8663F94 + .incbin "sound/direct_sound_samples/cry_clamperl.bin" + + .align 2 +Cry_Huntail:: @ 86651E4 + .incbin "sound/direct_sound_samples/cry_huntail.bin" + + .align 2 +Cry_Gorebyss:: @ 86661CC + .incbin "sound/direct_sound_samples/cry_gorebyss.bin" + + .align 2 +Cry_Lileep:: @ 8667838 + .incbin "sound/direct_sound_samples/cry_lileep.bin" + + .align 2 +Cry_Cradily:: @ 86681E0 + .incbin "sound/direct_sound_samples/cry_cradily.bin" + + .align 2 +Cry_Anorith:: @ 8669F10 + .incbin "sound/direct_sound_samples/cry_anorith.bin" + + .align 2 +Cry_Armaldo:: @ 866AAC8 + .incbin "sound/direct_sound_samples/cry_armaldo.bin" + + .align 2 +Cry_Beldum:: @ 866C19C + .incbin "sound/direct_sound_samples/cry_beldum.bin" + + .align 2 +Cry_Metang:: @ 866CB3C + .incbin "sound/direct_sound_samples/cry_metang.bin" + + .align 2 +Cry_Metagross:: @ 866DE10 + .incbin "sound/direct_sound_samples/cry_metagross.bin" + + .align 2 +Cry_Bagon:: @ 8670588 + .incbin "sound/direct_sound_samples/cry_bagon.bin" + + .align 2 +Cry_Shelgon:: @ 8670D5C + .incbin "sound/direct_sound_samples/cry_shelgon.bin" + + .align 2 +Cry_Regirock:: @ 8672164 + .incbin "sound/direct_sound_samples/cry_regirock.bin" + + .align 2 +Cry_Regice:: @ 8674140 + .incbin "sound/direct_sound_samples/cry_regice.bin" + + .align 2 +Cry_Registeel:: @ 8676140 + .incbin "sound/direct_sound_samples/cry_registeel.bin" + + .align 2 +Cry_Castform:: @ 8677844 + .incbin "sound/direct_sound_samples/cry_castform.bin" + + .align 2 +Cry_Volbeat:: @ 86784DC + .incbin "sound/direct_sound_samples/cry_volbeat.bin" + + .align 2 +Cry_Illumise:: @ 8679064 + .incbin "sound/direct_sound_samples/cry_illumise.bin" + + .align 2 +Cry_Poochyena:: @ 867A17C + .incbin "sound/direct_sound_samples/cry_poochyena.bin" + + .align 2 +Cry_Mightyena:: @ 867AAC4 + .incbin "sound/direct_sound_samples/cry_mightyena.bin" + + .align 2 +Cry_Dusclops:: @ 867BE50 + .incbin "sound/direct_sound_samples/cry_dusclops.bin" + + .align 2 +Cry_Sableye:: @ 867CC08 + .incbin "sound/direct_sound_samples/cry_sableye.bin" + + .align 2 +Cry_Mawile:: @ 867D7AC + .incbin "sound/direct_sound_samples/cry_mawile.bin" + + .align 2 +Cry_Aron:: @ 867E32C + .incbin "sound/direct_sound_samples/cry_aron.bin" + + .align 2 +Cry_Lairon:: @ 867EC58 + .incbin "sound/direct_sound_samples/cry_lairon.bin" + + .align 2 +Cry_Aggron:: @ 8680130 + .incbin "sound/direct_sound_samples/cry_aggron.bin" + + .align 2 +Cry_Relicanth:: @ 8681AD4 + .incbin "sound/direct_sound_samples/cry_relicanth.bin" + + .align 2 +Cry_Luvdisc:: @ 8682F04 + .incbin "sound/direct_sound_samples/cry_luvdisc.bin" + + .align 2 +Cry_Groudon:: @ 86833E0 + .incbin "sound/direct_sound_samples/cry_groudon.bin" + + .align 2 +Cry_Kyogre:: @ 86858EC + .incbin "sound/direct_sound_samples/cry_kyogre.bin" + + .align 2 +Cry_Rayquaza:: @ 8687CA4 + .incbin "sound/direct_sound_samples/cry_rayquaza.bin" + + .align 2 +Cry_Salamence:: @ 86899D0 + .incbin "sound/direct_sound_samples/cry_salamence.bin" + + .align 2 +Cry_Breloom:: @ 868B2EC + .incbin "sound/direct_sound_samples/cry_breloom.bin" + + .align 2 +Cry_Shroomish:: @ 868BFAC + .incbin "sound/direct_sound_samples/cry_shroomish.bin" + + .align 2 +Cry_Linoone:: @ 868C884 + .incbin "sound/direct_sound_samples/cry_linoone.bin" + + .align 2 +Cry_Tropius:: @ 868E720 + .incbin "sound/direct_sound_samples/cry_tropius.bin" + + .align 2 +Cry_Wailmer:: @ 86907E4 + .incbin "sound/direct_sound_samples/cry_wailmer.bin" + + .align 2 +Cry_Zigzagoon:: @ 8692444 + .incbin "sound/direct_sound_samples/cry_zigzagoon.bin" + + .align 2 +Cry_Exploud:: @ 8692FD4 + .incbin "sound/direct_sound_samples/cry_exploud.bin" + + .align 2 +Cry_Loudred:: @ 8694C1C + .incbin "sound/direct_sound_samples/cry_loudred.bin" + + .align 2 +Cry_Wailord:: @ 8695944 + .incbin "sound/direct_sound_samples/cry_wailord.bin" + + .align 2 +Cry_Whismur:: @ 8698354 + .incbin "sound/direct_sound_samples/cry_whismur.bin" + + .align 2 +Cry_Snorunt:: @ 8698B78 + .incbin "sound/direct_sound_samples/cry_snorunt.bin" + + .align 2 +Cry_Latios:: @ 8699C80 + .incbin "sound/direct_sound_samples/cry_latios.bin" + + .align 2 +Cry_Jirachi:: @ 869B278 + .incbin "sound/direct_sound_samples/cry_jirachi.bin" + + .align 2 +Cry_Deoxys:: @ 869BFFC + .incbin "sound/direct_sound_samples/cry_deoxys.bin" + + .align 2 +Cry_Chimecho:: @ 869D4D0 + .incbin "sound/direct_sound_samples/cry_chimecho.bin" + + .align 2 + .incbin "baserom.gba", 0x69DEE0, 0x17760 gSong_86B5640:: @ 0x86B5640 .incbin "baserom.gba", 0x6B5640, 0x20 diff --git a/sound/direct_sound_samples/cry_abra.aif b/sound/direct_sound_samples/cry_abra.aif new file mode 100644 index 0000000000000000000000000000000000000000..7df4446dba6208392292c3f12a44a53ab9eaf9b0 GIT binary patch literal 11660 zcmY*Nl71e_XG>{r->ekMTT@_xJq2$5(uO z1l-^6zyJ1C-2V#QM_1|ODweoUuIs}$UmfUl)QgPQe*X5g?jHH%Z-4XIw+|=QH`X_H zobFI4ln#X>i6VZnm`D_O=}bCb&X`g(e%)OWV8Yp~hUY`3a}28~*rOqFHj zR1D9Oq{`(~`P9FB_r}@G?Z>wtKVMqgclvYDNHms8^W?HjHk->U1$;#gt5H|U<>F+b zC`qO9fDB(DN#S3S49iGMOUbNUCY1<9i3~rQOr`Tm1#YGr%6Sp}sgh>}N@+-npQz%6 zdtZO$GMaij>-Y-3uCBURC674Xd;Rj&)4e8@Nmo@22JldiH=4Wi(La3o`1ba`FNmk+ zvOaG#*znHvH{R%X)Ef;7gVm7BX3{B1F)N5ggDHuaFDQllxl$;6oEKrK#bBr;6^f4Y z|NOz){Cj@ed|igmOY?YT_$iY~9J-JE$Kg<#2P4K4Sc3rn zB(X#?T)ZHbi}9Uk4sXVPl43cJtSJ&FOK?XKOO(cdQMpvg`F*}%C>DiVSu`mO_yS+)_87#uE{qJd4dlldutwRP1dalp$L2O2bC=Y9^`%#B79<0&w!X?&<%`We`0axOmnX6|TjqHX`+AGgV=f=1>QWM0wJns! zI*W%vT^--+tK(;^#~MkhuGVbSYLrUB!sad_6hBO*l31dxuR0cwr}N!;rNti)%N&gj z^`d>JSndwF<@%7`BG~mPEj5M%iC|&on@{HAg<`2JTuha>4!wbb-DcNfFGh1BVYVJy z-}={YSug+XPuqTKcJ#M<`E@#(+`S?Z>^`5JgP~U>2a5-WgIKjhgJ(*Wp4nZ2KD)A^ z$OY>&}B?yw)E_LbD}CqseS%R*&!a)orcySmK^m>e~CK`Hjh( z(ErPi7O|O$Y|>rrJ}f%ywuZXejUs>NC>-H6fAAk}G&dQ#PpO21KW*ze_k%W}wT17k z^=4$ECBRKtxVI`TZN6Aq7OP8}O3#|d?BUgFjjn)}Em31mZ0%{&@tQSRCTvF#sTFd0 zc4A>=7fZyZ6OnAD=;$|lB7no*kRB`e%|rlT6`q>oiJtxM->kT&i`B&qUtMQw&(KVs~WyQ^(^m@047&hvG8wcfd- zuG*f4shY}LD(`x<@j%j9*RV^Dc0b-!Hpl1I<&i{-yE+!KH8j*=k?Q2LnVFsKfXi4P zh#)D8y%&FRvA4zA^5g2(Hc#4PM#lR#ZaxTyUTiLyWnsI$u-xURb%hYNk}Jm+Kd|R7zNJyQ)>Nt2y4n zV&sjr^*gCLo#}Au(9{rI-ckGG&4;FF#8GcWFsfAXCsR{fYqIV?|4B`aR4GuNzh*@K z9DIq-@tvg?d7I5*&5Y0Ud2_tx_Vg}1F~6?^f-Z{#h?tFHZ%ebKMm<~3Ppoh6XFFRv zB`dIEwcA&x+t1byiv#toh={r${ODZ1yQc$-aq8uhk0uv|*37ba8H-v$y40*ij4JK? ztu2-HczjKEm@uy+_H8i4;_9Yr>Hpk)IJe|FFw`7{Gu~&*;)dMno;M&KPPH`zi`n|O z|Lzw*?~#j!tjGCSlOfmDCfp0#-@VcwZ7db5-OgNt$*5HDAIE&pS5`OU%}A8_{WY1? zb!ZYhqo&?su)!8`SI_h76dMYIQK^~R)2gF$RqM0+zA9anXi0P&mL2YA^=gew4iiV#_7B~q#@f2n&Jp7D$PZ9STe@-pz+}{P zC^O5}WIDaPYCC`>u2HZcW%stqO)g`Ttr|;3?9Th@EdB+*#V<50rN>sKLa7ABOCBK` zx&p^mvj^oPBkPtOKAK&^96fHi}iRB89V*;ba6U@J#Qy#O|YV(X+X0Z@`qlGjc2keyZAEKH7KNdDDA>K zsCu74u*Kn*^sdKc6y>|y(@TMR2fc7DZ=Byy^fn-rq~jUy-1;^)*3pUQ?5Gt;d&Nf4 zF`A1uwjP}<(QGvsmxG9~7n{oSADC39yoWM}Q{N?Z{qr))#+@$@4Dj}WVM$cAT}At~ zvwTsq8e5W{?F;YiJKaadkywc&rPI{VK+`s+ZA8sR+Y}J&$k0v*Y z8^6DeS^}pzVVa@-o{koW{oNa{H6fBm>?<3DV}bgf<`2LYhq~J}b91w6pd(fN4krrE zf#Hl{X>ALs(b3XuTz-~pt*t{nJr+3*5gk;-crd>h3cD zX}!Z-0|>vrDz%5F#@F&|U*CH^>oK>J39sI`G~C)*m|7NhXsPJKt5oSmM^1G&HI^RC zBAVO?-k#vj5yI!H;lPOk*L!B5uX=SX-3|+6Zck)8%d^i@ZB0nM?-qq^4RtzQl}acb z|9m{7)9dBgY%-fHCDoTMl~YH*``wyM^z6~(%#QjJpk6le*MIizl?#@wCr=YdOnmNr zdhWt5GUIN`+-!`WAMxxCKm%Br@4zq37qL zIkI9ppD&jLrJ5VBUpwFADwu#&N?2#;XYF1%$+ETfyZ`yw{Rd&Y4OQRhoLHauAHV+O zo0(E$X=Vo=NhDi;LRNh3Z~o>NjiAu6>ens~UHrv+ugg*Ux^k0ne{p(xej(Y~LT&}~ zLd(HIH1+M+3$z1=!5}K$Xn(uSUbr_6HzQ6tE2i2mYjzKg+@-#OzApXZZ26SkYDwRk z=Oaj_iv?F8GX49Pzj zdoCmDs#$}IdpA&ztda=$Xi8qpmH~@3M^C1fS0rZu+?fu*R-&aNvwUcR4QmM%h%C^>a;fkAzVI=ONLI{?^0u>5nKXUt(KCvWP%Pj5L)+f2=JKgXG?GY` zioHL(e5tRup)tBX@t;2W`0F*9!%;-H#}^Re@nFq^U7h~1x%Cajxi0i{M#It_6jRSr z1Z{F*Wn;5+v6p?DoXV2V9)2)OKJ|fZpFTI*-&5}(2uCjXEte<*Jn44Yc%c5u-@z#@ z+kh9oH#+l=H;=I4u{8K1i}xCoEsdr;yZF&R+ykkX6z@C5C^%);iD>HKU4Q*W?{^cM75{cU4o}OQ(B{bHWRI-UbEQyS+hwJjjgUOlI zHPi&kJzxyteCZDp+4{g;K*_cnR#coD9qsHbZruFk$DcnKU)$Hc(y+T1o|-N?B7|Co ztLM%P6N9?YgHTdg-}-ZqHV2}&`S1~(cJ&+qwn6w5u2m@&*yi1->Fp&EDm!6B`BZ6U zdSx|iKUJOuU1)276>$%$Z4J5--lKa&dD^fu@bJY|=~>&}91rvyfAs{xDSBI4sOEVn zgOk||-~0R9_x}0Qdsvr;8hq*554&<`6uP_K`KzD4bA9-ofA_E6f1`HeVApfx_n}Mc z9F?zo%>BH%rDbHU%ZRSM5v&KL>-N3pczl~@mMo4NU)96#eO+x$E>xX$`DkYc>Y8Tm zTaOvB2txYJuRpo_Fyd$=*VQ0yltx2XHiDFgcZg<3jMuJq<%Bum(~s{wm|fdKMw?bP zd>fCV2)ZQezLga+S6V+ zJJ^RtPc|Z(Sl9&MT`bMuxB6OJz*+A-ilQGfY60@FB2Wi;vhyritG)7P!>OQ->SeLF zVHY58MK_7QISKIq9bc+^bn_qo%Y6zv28*!bjb_}C&Y*n~@Wq9m>lX&WISx>0(Bs5~ zgBLg^vwsMhlpx>tG*gY%?W0!A#hVfNkX?MJO6Q1EkmM2 z&gi6;|J!G~(1fsUm*5;5rQM5bZ_xVm#Ot47_PkHlrB!fYRf|0Cd7d572y* zYDu9`glr@p9tFFn@w z`#vgzHxMZFa5o}fH-Gi<*H7iOCh!d%3P8kR_5ipQFUG(OGy|Pf?SRzif2Xn~2!sjy5c8+iqk#0>%%C5*vxnp{#lIzsQE2?=P>>-3BN z^=V@3{-r>vY7lnR2^Ud?;y1K#Tx0g^N zv>ol{^)<9=>^B%h%fOlfNMt$kMXfQQS25(Mo9k}(*7CrhdEhOB32cGGF4go@LAS44 z5a97`z%E!@Ht`TRzDxaq&&zKyUH|KMb(wHH)}+99LRdNKnQj3^dUX?z1t~+(avAf= zsl(#^(C%|!AR2z_w!3^#u z2#%IW&t}4V$Y-SY94g@!fo-($T+JHrx~0P>P)-$G53wk2iSo%8lZywhj0{<~*Fof9 zUzAtFRW39HyCGYXD-M>2QWDSxK7IZe?nMuR&MI_b#SX08GAMldED7~us-W6ZwRG5R zXlf9eU_LvjANgZ2s(AAU=L<+Wbf#)B!5wuQ^rhs@Pj`Trc&y8K&A3dUJP=o*qjw_{ z`g^*qcE}OSQ!haL&W@N?h;zbqC45z zcn&f~O`GTcP8E6z0Mi^<5j|5kLpM|5-tF5HlN&4bSNLAgaEPfRSs&_UQ zl!z{@NN=vapqidXZ`BjT=3*O<4k5+1R@?T%NLOOi{kVArOqenlE&Ek;gh(&}SYn$8 zU6k43ydTm#znH`=EZw$LTjf)2XVRWCs8Zj;PoVNiSY{TQkhTL*Uu!bv@3LYG%aDJe zvHTc8NlT1Xqp8EUUmYDW-KSW5xkS*tHfTHLSK3bID1l>TbX{c**p)GYWrC zGPXqeIa;(M^eYggP-7)$Bx7l6Hx6apO^}_Qr!;e)+{G;jl+DLTGtK3;Q<1RUioOx) za(w407J?wiqC9~N)amru?{423pKwy>1YCh&stvrIUMmjg}u@A0Cy%FOo4> z(E=DzP2;V-*g+a0hCUHZDIl&?ygxQhoyf(i85R~mH3%VZs?p8B+z36moQ1?3Pdoo9 zOw}d?Kt4HwyGJ@s$6`%n#Z@%*cV6U=0by0ZA*2gbBz@@fTi=e2L!1G&9mJ4c=u{w) zkrlg+!=O!9&ccd_-U;VKR`1jgivcv3;Wo2pZ6Hooq|ybE5c7!HSku7y!ac-d9Xi!I zl)N{QmlulDz$ef!;FGa_2YTb|$5=*R=6zidF~nIB z(EauFgp)AB?~J0s`3oCrt(Siqp>X7fW3LU3WWRe77e3v7ny7+l1y6`l0@R@VkfYln z1)&_I;fv`aMECq%I2z?<1ZnPgk2ZyffVE+mR!Xc@DTJ{{NICvIe;!l_Dc{=z?=>_Y zd`ZROJLpjKUHG6GmG=8qgkMgUNU~C2*pBaDiI>k{W;2mRCoqwP%sHAvD>BdpmxInx z?sj2`8i-L}phrcEc4EaXm1!kp`=J)SV`58%#gi4=kSiJWU+2T zz-T>svMAi6Fhj;Rqf3LtcKpd*4j18dDARW=Tt>D$2Kn6s9=>FIoFui{$`D}}DcTcMUQM(}nDus5j1ymh*Bh{gO9f}os zqPPK`#>zfwA-~0Xvc#>?oDe48PPVo}7=eDZ_fHk*=9VZLdRqx>Ke-B^ zZMcesB3+fyA|`{v#gD$c1F4ve$1txFh$T{)OfFa8lH-!mC53b-7K=sf!sJj00?B<& z|KJtyK7y6S&mTOY77OANqlCFUO(%HZngZOxBh(TD6P#_Vs{^Ye+2l~)?)}l(GQ^ELw z^%mGOX1mxjw_!=q@g8U+_46nU580dof|c#;AeoHq8pA|h0i(y=&+db}k{2*mWKR)D z#KZ4gqHdFOGGpP)$()yS(Jya4AWe>#4(+Ac!X^+i)QzEskeoS->?4Ii@dA%#WSg2w z%!2tm$QU&FV?X8yJ_Qc~hqj-_pO--dy3Zm9l%EMB)VCy|+ngEbL~jTw9*tWicp#R* z-9iy_6gi8#n8Tnm+_-cOwGG?GKvKv>D_)mIpF>^Ri0Agl`;Cbn;KYINPG$%w# ztrkt#^gM~D5a(zhg~jm-stZhBBEQf5$zEYe3^vWLUp`OW#~+)SVgd7GQZx<^0qGZq zPJ#wP8p|a}X_fFnDIH-y=EPT0#2`US&Txt&vX5(z${4uMl0TNAtwY^_hp}3cm6#sF zva^6(tYjsI;TVVKgnLjRmsRBKx0R`T??(7wVpfdTZj}c0FVnJp7u&507%;;!{_Sg5sFVIn4E)EA7402dV2QJFo#VenDK*mUWhQdc8;ECx0j2tLR=^{}49wZXd@!6@4B2@+2 z0sN047fGIw4V!6&;g^cYM`&O0i-=c?!4Yr`DawBgnQx2c@7!8REnq6kDb?2YK86+$O7x5H zAt$lpPzJQ>iiU55gvc#1TMSk}@z5J>JdHg;ccBRZRGbV>tmJL4UK&2F-r3nbh&4e{ z*!N$MGwjEHJhm6*AygJJ>46Ybx8KFeV(J8c3P1S*4rE&@Q z1GRTTNQT-Vh>4zrDU()^;0jYOTOco8mOxD5R!xxMcO)gbYdtBfL^ zDDf2N;nbsdpcgVl729Me49I{g2z`#$W)LotUCHTq804A^B89buQ1gM<7|4>_kqc;3 zIVq>&YeGk)C?zS14f~W+&#AC-<@+V{RU%QM;MWoFsNo`roy37EN_>OmuQ1nuE}o%< zCiR@s4|{~1Pm&+27d@mt=iw%o6cVUSva*5E78ld>ls=NaNDpNYf&$H{Uu*zIf)z$! zAiGSmBVvJL3+1Ns&{{D{_Iibb%~YolMv$<$N)Nz%`ySQ?Zuf;+<33Oor#LZZu^Son!BxLm0Ol!Z{} zbTC=B;Q)&ybvZ>twKj@HSAd`?VLsnY7-3LAc7e(K7K%ld4a-16^vE4YFO)W$mPI^K?cs#Ep6|hWokrKIhmm$>rup5h2Z`IUk351Aa8;cFdl0s1N^2Vnq&M@cbP zUT|_+FiyY`%AI-%+#CT!c9gd`&V^#f!k0#9mFQ-4rwP`>sT!}(j{zhBAiyC1k^yEq zfW8n@P+V|kj4yT~&9)NeS~Fr1tB9amvEYnLgImRF0xyQ7RNCN-2AT5dP$y7K^ zvyFo*wUiB5G3HlTrIFMi7f23lW?=&=i6TmA98IR8s4LWdfZ-lxS4|1X1NDYRFfE7_V}vF$cq>C-kVKF(fsc|qYBJJz zOu-c`K5u)SIRjd*8ABc*CLMD_&12@lc@T232YHLbTu6-=HtegyW=v26y}m5H;QRH5 z14WLzRB$oO2q7gtcuA$hLh4ug8h%|T3I)#0P<^HVVs~&{gE&SD<4}lpRUBKTbr2|? zgscc-aBD3S$pQBm%b?HY0*mg*i)hBp8csU=K%j)`xQXb2G!u+QjcV0q0^W_NXCHhVuXx zV#vI0qD4x~H>&7}0&e`Cg)yVYO1RXNyODrCfgY!daLR>4mZX?~R)xF{#j3f(Zye+n z`K)#nDcV#oUstSjNdOXTfny8oh1e)kOo}|OQ6nxRl>A0*09K|gKp?~ma1@dQ4oW1J z_OSKIRgn+yR)%J1!zvvcwZ13KuTVh8g)IUu#wtNZXOzLT8U3XLW2jUJh|n$!NekgX kk$hT`+EEg<0V>MXltw{{0yvC|t6~)mCOPv~*2m-he|Zz}hyVZp literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_absol.aif b/sound/direct_sound_samples/cry_absol.aif new file mode 100644 index 0000000000000000000000000000000000000000..884ab22b3e5e6afb22554919271ca5f024ed82bf GIT binary patch literal 5256 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_aggron.aif b/sound/direct_sound_samples/cry_aggron.aif new file mode 100644 index 0000000000000000000000000000000000000000..b89ea1222a15e6f2b0064f12d447e24fdd1e668f GIT binary patch literal 12776 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_altaria.aif b/sound/direct_sound_samples/cry_altaria.aif new file mode 100644 index 0000000000000000000000000000000000000000..3e8e35e8eda83b590a81e6b91a82dfc385e7a207 GIT binary patch literal 5564 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 UH^LWEUR*%FUfmYwlLOTM11q)OI{*Lx literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_ampharos.aif b/sound/direct_sound_samples/cry_ampharos.aif new file mode 100644 index 0000000000000000000000000000000000000000..4f6e255a06add074a79cecd757b2bc37a95e1e24 GIT binary patch literal 8242 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_anorith.aif b/sound/direct_sound_samples/cry_anorith.aif new file mode 100644 index 0000000000000000000000000000000000000000..96e87e9193402ddc966048ddc8b29905cdc891c4 GIT binary patch literal 5862 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 SDA_v>eZh{zRUUpN0{9;eu-?D` literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_arcanine.aif b/sound/direct_sound_samples/cry_arcanine.aif new file mode 100644 index 0000000000000000000000000000000000000000..61d802153290899dc923393378973873dc50dfa7 GIT binary patch literal 8602 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 H^XUHvf-hfY literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_armaldo.aif b/sound/direct_sound_samples/cry_armaldo.aif new file mode 100644 index 0000000000000000000000000000000000000000..756bf08425e37875d5e693950276b75196e5b6d5 GIT binary patch literal 11380 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 R=MQiD{nHOl|Ns8^e*xH?9(Di# literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_aron.aif b/sound/direct_sound_samples/cry_aron.aif new file mode 100644 index 0000000000000000000000000000000000000000..cce70b73ba630e8dc31f2202c06d278bf20f5dc0 GIT binary patch literal 4600 zcmYLNS#uj_c5O7e0W|h~Aqa5acZyo6#j+IHiYeIZ4Wl(>Qfz!f9`5DT$yz2`I)Pr9qn>-Y8j?mhS1b8+qCU)>-G zTjBEcYuB!Pd;{l%olxP<7liH|FV7`Y0q)hah2M&Ek(=w&O)WjctK>vNU1|V z+0KM#9v9liOca0LX0@qoP0>F`CGtd5^pA7-glF`Yvru#i*+5%iy}*jYUB>w@BYJK? zE9L&OV{JX#YF$j3D1y=*JSn<}F+!O8V(y^Q1sm#qgMXs4yg$ox>WK;UvYOnk6IP>( zrg&MFv>I9?sz^x^rD{#)1yK+y4T^VCJio`w>Sl+&cxY4`M?G3~nk#a_7Jpiqz-la~ z)w0(aaIU^sJ#Ymv~;AzLoW;mjsygK3EFdi-(Hk!NQ?vlHOcN(IG zQpfp@(%zp|DAPq#cOqVm=URf?PZ@ZnO_bvEA{#j8wl8Oz)jjW6tl3Q>Np$wM>?mi9 zeR;!Zoly6vpZ}EM2S>-eVWyD84;`~J_I9RlXSK0oy&Sk#35Db3b9)o6@%1}CESF^WLa2lLvS}cYV$&%eY9kSDqBz!KRY}B;{x&zsj{c`8T zK>J?Fkn~!tL~>ncbX{vNzJ8d~p84e&XCa?oOL%%l3r?zH65ZmwC=L$=sFirb1jbf2|VyPw>y_nzrJTp$Yh*4ABix8NLd4hawD3(ii1 zW92#4L=l7#Uf5aFdK^HVqj|8yp-epb5FM$OJ-R+nPLls;Ii4--B_B_ z8x4FWor>qQnpy&bdpz3uHfhjzG}X8m$2R&}Jrbvnh$gpqRFid#&vh`jk)e7!odEed zFXx#!W4E=n2e(7)E*m)2?T!N>aY^pj*J{LJQDr+4RdipgkVVF^{kFEkym*w;dbDd% zz_YWw@NWy{1!An%g7EJ-1_v_BwJp`Sj|s=@Ir~7yvQSp12?h*&wVvn`P+QvE!+4piD>|GvD&At?1;ieFFGw=ICN zz1?o>Z?dWCxl#uvc*Vh>k?urIb5zr~*AiQ*A~MYtT3gHOyue6iV;N`2o0C+pSLQRk z!D6-6bMdN5Y-`o3W!-^j0-XRyWutZHu%Xi$ESjUNK-6pXa@rikE>$;8X31<~3V9h| zRngU|M6x=Hs1qO)HF$wkiQvMwbO*i=C0V)pc~hxKlI2*^ZnnsYG<@i`=i;fdrzdFM zifkPP+Xw8iaAeQnamT-Vy+ocEZ{K_La$R?}&ld^BrIBG5J@rQJxOLUB_or!O?pRyw z4t)B_#ir=@(`o;u5yRZ<3U#ttUAny#vtRk}iuyUA)z#U$`(QrqJ~w9C+}x#3f?PtH zT2HXYT$LWZ0sn-y_ki(sU$q#UVeNjP>cNv@`^{s5p!;ro2vP-l#=Mr=RL#=jC#C2t zPdN=d_bQ^-Am(#_oD*8FwrWAGjpkOX7O*mO`VHEBFx}}O?FwmH{LP@j+uNic*n~+G zn2=g|o-8mr@HZlIvbnKyKN}bt)BzZEf0K_fZGOFJ>i!MB{XNKLkk5P#j9nfhfHq?6 z98-Aw={#s%wfN25#OMeT@hM`jf`mW72dGc@+eSTU@) z;FI>fNTfub_>CvA6)UR7C;7cc57+Xop7lp}5w_Egy-0K;(|qHCvAiEGcfNlHIkLtL zjI?NKM_aX~{{E)g)Hhq^@e>y7&UQ{3Idj$(ntxvJ9XxNCdx=P0ydXZj_pIDG6xdn~ z#oZ&_4S1{~Wl20haWq{dONiP?b!xquHU>?w37g zPdSeiZS#7{QE)PfkAM?W?a*_4ChyQU=`~_RbbGv&@;+)|pHD+)H%(*X%2yT$@Nm6> zIC|woV(Uef*0`JWiDzZOg&H?ICk&nHHdUS{y|P*cyU?d#6T2`CZgUp0_wjhl+oqcd zGwlQZ`tpjS2PhuTUXxjT+}a zeH>=aF~pM>2<`{(b(FrH+b~|3=p>#jBF|3Q$!E(o%R86M)y?b-8wk4SY;_4bz+(2` zmWgR+2qC*d@d1h`RGwE%0kDsAl{VAW?2#s|CDJS9Dt)f4{1)HAXAF~UQaj4hCZKR z`#^E0odXtq%R{8+jDo$jVFL4Q0&%1!tUbI&#^UDroF>wlQZ2C&dj zJcM%5=G7TdS2>4TU9L~pwP1XXM?Ha}J^N4sMDzS&H(DB zgyWDCpjW61<=ilrhp3=qMc~9q?MKr~V4nePy}XZb8cIbKY8PA0R*R~q&{XHaYCi&V zr-lHPqRZE3)k^XIT+;%3)-0kjj2sF*fK2kEkpBb%@2YGp18R_wQgsPoeSgG|{Qhpj z^FE+-7X!~+w$@jm2$6Llpf|yfFPYOzw~=kYc63&WyMrsnwrUUzVkHA_42zL)IK~Yq z;!aUN?|aJodoj*|Jc&!5>!Wg_)-!tD8-9F$$2u|K-}vEBHU2@5dFvafVL_lDOtwppl)Sx7>EdVPcdzD}EIMWfdt-U7iEjYVNHSMex&m<>3Gj$X~g zmPq8hLrrB~HYz4tzfCs-_2_nss>SU(-{KxI01bkR*3=+>b9F*K&dtCOXit74=QEWu zWEP~zC@RU)k4T|5Fv>GP^)zHbbgAkahZ+H;WGpQ$Q2kNK+!JgH(yL)utY`F*kjCBO z)}ThdY}j11P<}QCxj`Y1*i^F4qju%uP%f6&JCp!iIng0MejF~g#8a z8WKwqO=x~98%CYY?kDXr+7)PSqubdOexp6+X>L9y86bNE`}Zs8mFizC+JJ9#R#`RH67%t!nnb zl%2c`Sy_PWqX?^$FClJPolTc7tBo!j6k=8|nv6OvrmdizG3z;w6@@Yu%tMn`8Y)tw zmBgbI%h=7dkS!35$*AU73?tAC89`Fer!rB`Nm_%lQoIQTugsf;VO}3PxdKXt(@=t2 zO-S^kEv&es1^w5-Q3~>(A(Dqh&f!#SD?t!L)@>r$dpaBdbAhm09C|aYDsn6%nf3Z2 zCy~&va;?PI34w+r5E=~_jLIZdL_Cx8I>yeRAYsMW2^l>FxQXt3})2-<2f zkZhr-(lg3b@G`suJJHG*b$E^=rHBzoZ}dsnHA;Ifh>|E`0`!lBfL0#jT=@q=mat(l z635E~1iUEVcx)qHLIV#gd0se{@*KK*iIhZEu^tj%Xb5%gp3XMlp}7VNs!Pcyxos`1GEZ~@&{S5FoP+mgWfyACKidZD9K_>$yVFMDNftXN&m6?KWBgD>}EGPd$Mtq zv(DPFt+i}Zos>wi2n2}U`v5bThQajS>pu7W2Bdw??#vMde3<#Z``-K9=RWto?<;S- zd6UN*mA&}dE3drt#!dXp)ART|-pE6q?3(Jw*YG=Duf6`(+xVa13Xk_U{J+6Ze7ptR zzi++u`gMH%34M-U=@fgX)9DO*=hOLE$D6O;xHQqxYEVjr)nYc8h{vLlNH`ph;1!L= zVsX4vvHbQw{^0%lU$1Z5PlC~8wpbO4#1g4Yu6Xv6%jGheOp2ETFEL)C)0Yr0fk42= zi?f7Rtvq{`E9L+1t5W8ldH2n4JU7s8u2+cp<$R8r7>lwOtcxcS$wUTk!PGze@Po&* zy9b_dJe@D|1_z^3vkgwq&r09?Who zPERjaG#dI@Dj}GZ`SC|vMO>Kl0Hi}eO=!`}OkrnmN-$B{&)>iv9QQExVxjD~u> zt`4`-1fIaWCXyTKObKh8XnnE&#>RwSUInL=oofq2+FW6}A|e!EE(n`0G*JXkfTt{v&gyl4knK z=_hbyv4ro?3dv)5XJ+OLLvOtP{JG&S08TFElfMK6q7qq{%jQzKqtB-2_T(&9%+D2p zeP(6V*VuY`3Ex`(dVS5`#KoA423<+@bkK)55b{HOrWv|&xc_SB#kd@UHX7aD31T#6+(?V$C;KDw`>u%<*0K62?H5k}ZTj^5+ z+u64OR9uNIE!&o-ZQ!>Q=%XSKC}GY)ux0pn|HJRzync4P&tfzuSNHbeo!XQ5yi$4p zkq4Y75eTcojav_I}!r2z{BlN?oBV-oB=XN zTUV#6tJAUvsFc=)VjBYd6mwGH#(bfk5&-;&wIHoo0@QK%5`lH9!sOJGEbhPnCuCOw zUv3axoF)xS4&JqE>-8`F$-e^(dpa5nN(E&o0>>{i5N5L(mJ%|#SW=d3|KqJYvupdV z2e*#uw0P4?t05Z?m&zTj%wtGFx&Ec!`If3wPBmN^2AS#z+vRfjt9#RP`Bv~EabTrV zs6_664IcvhM6oO$fiLHmcckqcoB#r_)!fpyU8`JNT-|d9z#v(WFon3MqvzdPkh>E5 zE@zFuz&(5vs^#ge%@9Kl=N*1|X>NTZ!}6Fpgz&Ynxg{QGJY_v0!Z*9NCAQRAiT<>P?=i@Bvkhd+=^0bgrdVM}Lk>-j(Vqwl_a zWpc1LeR%9F40T#Sxkw2f2x$J%{6d7X5sb!pV;)I@1YkJDhrnM8PgXZY;Cc`xk(yAN zeX_8*D}$d2msl7xr=roz^^sej++!X}T5qrN>I?>=S7Ovtf^9T1V5*;|K#Lr>Epxh{ z!i9Nj+J{OgpzJ7>a-|%9?eG6#%1en~s8o5ZLJE%#R7L~G+o;Y;g;HR*X^l<5#OS3S^*2Rvmx)`sE?1TMF&KYB-0& z%*K2eRi*-SOT}WL2<+VY0cT*IEaZztG7%~$Qi7EgR!9_ln^VkEhW$$Zsu{>V9hHSI zPOm%Z8>jZb@4;CIT_AG|FTaSyZEV7gTwVn;NR;~Q)30W>XMTZyBnn6s(kSvvZ{29* ziHgdx-cBNBmOi;Hl+1{kBE=$HuB6vdj4O;)D0;*gkPl9MGm#|`8aZs9>NQvGD7A&Z zR-HLE-vp(xbYmI=A1N*@ZtclCiD9)8?dlKiJbL&qKfi~1V=(GXV2OIg<-fR$ht#ub z*g^}Dl=-&l<&~3~P7$ztCk!Udgi1~;2=a53Bu`U@nw*wT<)B{y-rkR*VyZ>K*@?dex<_(Z|1q$WI zUnjb76M*?N%m<65c5@Ac6hk?0m6pxG4hhF)4KhNfXKIHE3+mc~T^TN%)?%m!C&`J^ z3qmPmWV>{TaW(^Cv5?6or>2syl=7vJFJuaLfB2)n{n2J9oXHkTJSbNZY5DDA6Wqr= zotYDx3(>QmJxX}Qk@6|vfC91@pQtGV!sPT8;g(&%ZE+o?Z^62;8ee=1C zQg;b7S+kDGne{LH0@SoxMw5DYJhix5Vc{eoaTNiS(#ln0qDtI&X>DIYyhx9ujOF;O z7GL^ItynWP!NrHaHoLpS_zWwh5K1x|>(&ER4}k)iv-tj<*#|%Q`~fPaxdD`6)EQM* z|LSUEqtSHfx$(Xl;R^)zmEBFa2Tums5^a}Ddw_NVuwnFuYrOn6?tEH#2`j?F&bHky zAfjYKw3bDO>Q*Me5b7)4#mzOFdco4mUDCm+P(Vtp_!tHcPv=9<>Ydnp#@}5&nBH-D>ldDIc#!_PuzI%;ut*3gh=&Z zV`nEySmKmJp_m1|?r~Bb?xLm_k}@92|z~YA|J} zNrCcfv){AjX z7Hb312>NHX^8$PwjDs-;GK?Qzw$+3(-Im4+{x!c^BcA!;$9ET~SEOzh$T2ja*D)Ch zz*uS+;0Brg%0gWGE*Hc**Gn)ivRmD*A}J|_28HH#-g;>gZp~<+$WWeOUpARNSy^7+ z&XZOoN9POqa(HVGA!ZrESP=5wiq1?<4KH#4Sq(CG|J(og#hT;kFh!y$1kx!HqDe&w zHi2@|p;#RG$F&lSf5QH7h~Um?Ae4Bw^&m*U=b0s612RXXS$S`vbpPk097fe@`xO}dvT)<>8@a%=hI|TN|h(On4hqUNzAfs zw^q`h&&(s20?B~Y?vik3BQrALcmaJm@I!?v97%M&{myq@yx0%PEXB|ZkAaxY=hGQ4 zh@NyT)#-ft;K*GfhY@R5BFEkU^;+x#-{(0_lSTBasOa*Z@Q7c4ET}NgafJ1L?6U!{ z7o8qSLS^yZo%ioNiWe$0myyd<$v_aHta(@E3xy>nBWi)>g*RRqK|k5qfxt(-C&8dd zt*IR2hfpk*N|peZ82ubir*bJZkQoX`qRA8>o@;4s5e6cWL^7KxWF!DiGLW>s_rcxA zo4Z9YL~WD@H8e0dsLPd#RkXblfqtm3tBP-zO1!GD+SS);%-_zaA!_Y0A z&gb|!-C(b2?3+~NsIm+X_iKZ}lVBhcj)XHv(74m(KJkS@u@F?B&fz%@hQjegGS$%1 zDsuS!aC;(?77w(y;7c$cR%WHMbJIWn?Edo3kuP2lo*f@o;lZUcA2p(B^2`9zEmI&X zE1hR18mOhn6kwI)!stkeoB^v!IUQyoiAXpeqv7UjfBDD1eL*5Fv1ld)(3-)6Bbb86 z`%w|qhYlyo3HggwhD>DRFim=W8?z-=tHIiK>dMd#v+-JC9#`3JxG%@@x1cIutS$8y{P zN*|Li+cLTc=y%|ZG|Uzy0#zm;DS{cIh6zAwZ#-LEB2Z6&GW@I?fK^1;Ow-_N!hqA2 zKuM6wAVyIq{`LRt*9s`q;juqqLIUH%NCtl(D57=`eZJx4>yU)~!(Ci&Ck~+>Rf7bX zvdVAoTazqVVWS{H#i~Yc;Eh8^j8k&da--LQf;jcnuES$2eT4zu8ajVI80$C^&0$n4 z7O5vjhGkr!K?$uR1MQ$L{Hct7th=XMiTQ3ZVfy#)ynG!kor1=|G|G;nYD!#gm)9Ez z06_*LAcw3BMx)873pFa@M*BfHH4uV{umI$1UNL_P#n*>zBen^Qh z%_Tx{czmKEmCFkS5{W`$x^(`W2)|)Qg|z57H_?GxQMTg3M-u4%t3u=j>R$s1 z70QIVklR!4fW0QQPS$bBWNx@J$uyo)!C%AV8ij8i<-~iUY;IEQyWC(naIdJpyFE(a zBO1yN4)pMSA^IhmO`1WWU>VPU|JM&6Vgjo-C7`k~+yTFKO`d6_;c=k?QZu7V%%$*k z!kb|7%!JyXs8Mapx#5-|NDV`)A`xSs@Tl&^YnTUhG+eoMq29&uZafSmHk?4-dVqYC zwa$(*85oR45)u6nF%8Lk&~Bx((-KC$Gi!4#NU=q(E;z7sFmfoC%CT1T!sHmTk4u44 z`#7w?ieLj+cM!uUT6zYOqSQVxP#5Czp_*wLeCa>2i7Cd8DrI+1M>!k{a#l#qNLeqE z0c8o|q0tzpBmw{Cvgq=~p)l?k_82Xl6)1-mHe@C!PS4F3ENn(8=b?26UeO7HbRh^f z7Z#)K<_2htx}#gaga|(5iDWX=Q<(~KH`?CTg^4ZN7~#e~rfr10=5M|8wxO7nUK|@D zAuf@W?>|{6GBlAyx8J2f69*?@b!CCZ0zkP;B~F#$SK$ z-B+%TbT=RDvi@4D!MGFymbvxQ<`FYVZsG@!)8rZ~26xo5VP|020sVrv3g1btu_3)Pz}PsGLAf5x6ZVpU4?ex)L(_(igDXjr z3l}d)!dyN`E1j1w^kou+d1AY<$w{ppDS%unr_g*2hn^y*e_~v95Oi@Psezl2|5Ht;_StX1~&#bNcnO}bybz@9vPrE7M;bx;u6Rb zo(Ft|1?)QA{N5|yzyz>Ct3fdL?>#pW@`KP+wXMqvb>3r0m6!0T>5HeCWA$wJ9}!Bn)*iQ^VKJ_AZdg0 zR|F8p%gDu50GOo?4RVP0F%O|>fmpsbw~n2zni$B%Lls3Zq3LFkC9YFmxpG-SDjJ~_m)g-blVAlKV<EdET8fa2sFyI@TepH@I9v+WmmzdPF$4kHy#*;UwT#~|ss8B8`HcgQ zFOEcFxCGkR2*A5@lpE-Q`eFpSSQ`1gzk26eS0epDcmG!IlcRnXCLxY>gY98pSDiu0}}Ro7h;?Vp@TT_Rl~2`~UqjD-F10 zQl+$x1ZzhtHwe}$t#)jkH-kP0zWXjRf-fFGIZMWTZC4g`Q9=Dyte`Oy8? zq&X#E+DXUm2HDT`q)1a#C)kUDGFn;SjS(#oD++B5M&O?Tv6B^Kv~dmCmydwJ@JYaN zaFG7w4^ylYv@h_iX7;1$vY+^XC?FFB4HcQ)9*}4q0qlb{LYAEAw9Q{VwG)H#Azk0 z10y-XsoG2yYP$>evSp_8>Ba$wXv!mcvaqigDhal8eH#@M&Nrm5dwT^n^@Em<`xCxJ zz;EwHLjYG0=jP>|mexEiglYtL5`p-ZhA$;{Hsj;ZXIAX?NTB(JDyf6P7fdFz{aHIETX-V6MzcmMQ7rsy3XMAm z4}jYD!#Ra`=UX=>;yx04mJ8YDvnkK9r#y+)$v&LLZ5lJ z$XY_d6lQR6*Ze|pc*FoIw{N5V9MwVe^?Gd@OH*^;%lp{vY&*h+M7u*b7)W+|JeS#V z7}}r}OwsoAj@9jf+i0gVS;`IEd|hMn0oK{s@y{fv z!20*MNkeovk4-zV0$UUyp-*mOi0Af%{Y}qTm_&y_zj+-a4qrU1`-UKo!UQ4Ic;nL9Za{2ymqyZu z1QkF`zX1zJ&}L4j8}}1k?#)#Qr#?%o!H9z)v=6+E0|(EKjwu%*V#Mb&wtWS}jjR5` zMObJ-fH8qULU`~CCO?L)d)Nb6|Ke+OMjJn7mW_;zwr2@7r1A*on3arrT1}d&Tcdn<` zJM}o#bG%K5mW(*hGnquJv6Q}(+b3Dbx+S=42#Jev-_jZ%E&rk&VY_?=5TmVUmM$Gm zhrem^LKYIM?I_yrI6}q5|4GRxpim9Pdtc2w$@UW(`}dC+&-9Uj6PT!4Lc{H*)N^H3J8 zw&};IhP^Fxv?J&~Mn}S1Y%Og^JLomBUx$N5L&Fpnh8{?Lh9@Wl^v53X0gNuWk01xf zqV*RhwX3|w{qpFb1h%t-EuUb19{R=9;!=6^3?FI_K89Dyqhmvzu0&T?lf`})CyanM z%$69{03ArXL7dCu;`05EKVO;Y6K=Si#9F>1VV|(?#4Wve@d`eU!)21P38ZF#7?tiw zAK5k+#-BD{TK%_Ogj)UV{bu6VWDslSmsiP6M)&makBH74Ix~iwQJFc^aJFZ zqUo*abnkg6z-n=!7(7so;~3USn3x2PeCmyCE(pgOHc* zBOewD?xI>m4tEqx3cyz; z6l_SYP8cI1nahiTE=%I`BWTr|=qL^*buoH(z}sfCmj>2*IG^YD=Latp;!b_1yc6dI zE}wxj+lm;3LpG#Ct>>|1C+^udghWln9wH9lb}+X+(gu-*c!o+v@Cof`?-mUZWnzu3 z1)XuKr#FrI;k)B&^sVwvlz2DLDG+mVYH`83BSoWw`OM4WkS{kN9`O74XC}{p@#w^c zQ1e0+k)*KcuqTfvBU}WI(XlAT@ClSVuem+iF3sZc`E;*|rSvQ-0GMg!Tgj|O9*(z_ z7E6d2-Z&4T)A1>tFy?e(iidDvg4~SIo@DzWf{t=B54xA?IG)@Cw?;AB#37m%;Srt; zunp7xkPMVc>D*)q>%taIpcz&G!URU2DhbO>n7^2sbSPR_N)as$zdUNhu{-o=s1?~} z$gZgDIU^j|p=;7%csz-|R8Tf|QMc@>8=Mg3W6 zyF(PzHsAz=5n;)110jXHU|o>F@ty$AV!CiLYBMCu(VMNgF0^@w$ygJ1BB)jN!G7x2 z!aDG3`cR$n;06|~9+1uP;|k!U-Q0Z0JE0M34+iG2Sy&&fb}0%&z-^^7PA5um@C+pt z6E@K%RJ75Q$Y3!De88)S)0@ad3DImvnXSjhKopayOu{eF3-pmlrPG3DMN;(4uK<;+wwTf7!0|B+6+Jq0!embdm!134G5jlQ#KtRqT7wbhiVM?vCpFy z*aiAL@XA)r1TglBF{r|BW-6Id_X=n$po+WEj+VxTnP(82K@BO)pz8=7A#5C}kT1N$ zkQ%SzbDvS_G1I3~Tv zM`$xyDfLrHGd6%rygFl<-JC2nd z%F6sc{VH9rE&8|ku}^>dsjE%5FI?oT&y`cV)qy($vAMEYvfM~mshMJLPe|8v=DOOn zLEqO;^+zgRm-NC#+--x~)a~tl{UVp^`tUAw{GXc-H+`zk5B`2AG5Og#hk5PBZ61%C z71svM-N8_?rN8=0AOGd!ZS3#%FU=OW><^26p>S?*t8|o1C|E=IWuYm%alU7an)&XN z->o#ykEFfny+7=U%KcP4oyq39?EU2*BSyyf=KW!2@eg|sqoy0LpHJo1o~7F-dPAWY zYK2-NhuyoLM_8_3HuI(*#SUFqN;tRv@BiynoD+=Szs+ln+W-b`+27N=y9AKH60=jC;C2HU)aEwgmzu8 zF0|{Rhko^;MzTD;<&s`EUVpXv=qukQZvX%*}KHGy{9j5)!SxXbark%Vzj>dYnx~7)5md(!4fBTWBXYHy)bih zqJQv_;b7t6pH?y*%G>X&wjS*W&h;CN5vewNz;KL)gXimcRKkU!#6n^c302>{+UXY} z=W3R1ug!iwTk4bdg*n|CYG(CBjHgkv5^2Qf6rUgH)!FO&^a9F9-4)2|@o8zz<5f5; z7Ape$-2pRvuBV%WnmSlWSbI;}teUmgC%+&mHCl~E=c4mS-ly;5Z}HXQrR{(wAaYn7 zdU^5t-%jVd&1RL^Rmkjz4IK{Ao=D+n9IWR9qCvAmZ)iXNm;XLsItSzaufOoHZ9_+f zlhF(_G`0OWPL2Iy;x08a_2N)+?PvD{#q8I9wOHP2*K@qlfhuZi!Kb=&cf#U+_+(e8 zd;JbSUk*p4d^LKiroMYeg?ubdWjpWR>+n7OVw0!Ry~b3FC6idl#y@kTJ+9tWZ-4m^ zX?gb@OFaH~o07?NvI14;Io}lepG_m)H^(pKzL|WIwB3FmW$s_Bsr4eoEv|A54`(jV zImP6&NVpqvC#*7tsV-D`lANbQWD@A*3>9idF)fh zsMRWE^5Q1iL#0%(o|K(sOGk3Sj({;TDxPYKtf<=h{iolen{S*?J)K)ZS#}yZ+=y3U zv?5Zj_JubL`uwzOIjBAV{u|8V>SArMv!fZL+a(qo*k0P+5sbg0PCuL90B~J=Q|u%$ zRpIH&BDo$LJet|r;9h#`by;IPe?DWKV|=q$r{A9^UGUZ~&93EXmlUCE zwdr89L)lT>+}#shxuuZ0ma#_9xp&S*AG&4M@v)2j)C`In6{OFvbKJ*KlUVJKvq;>Q zEAEnNwNe>{mZYUAq@C)hH5y?WMZLz$!$Fjg?T;WYa3SM{>4(f^NeZ z292665eTqp5u&Yl`XueJn0X$SHMCETxRJ^^qe3ZT4p5awtx;igHg%zB)oNr87*t2o z8QtKTbb7U3U3(nQbXYC!?ftzpEt2qZsaU?dODvq5UQRoHdgU^ncIi;k4OlqN9HV1R zrK1uG_ZoWn;pS><!q;@V;j9~nV$rf5`1r4ngl86yy}RBp!1 z61J37ayPhQInI%~iOL)_mnR)&G zw=d_B7%LUWjM3R`w&c#Phn=|CK`$H}M2wx6Zu2&GH;cX2UfyOARbe+H`mQbh<*^|E z8Q{6cGDgK+Tcti*XN%10kzSoPxO{NX7`}c>v9Y=3SEDVE27lddwhMQ6j<}abO~%Oj z0jhBLy3vUva+?)+Tu!wR!1mhyLALX1pZ;WZ4?u6hi1LxqYXsg3nAbXb(A;R`W+B62 zRKAc-h=?YG%MCKM(3NYs5-XQU8*^m^CsU{>(cltRA}WUwbq$(a>he|!6bcn<2-#9O zB?@2=0Ie}lvSO1`g+*iXRtrr}Vv6&UC`=re%NWj7mW!CvN;D0(S>=)TAdBW32$TZ9 z07FVOzEmsK2GeRWx0zgY;@W|Z%vYa3naXN4fFaUw1HFBq1wneKe@N{Q1e3P&Jv{|i z5U}0ZD{~+DV&=il&g_BjnCiz66S5L^0>xGHWg`eS*4Rho*tD9!w%gV2G8s8;7de2K zl1r>eCGL{6bsDXS?SPlxXS2zVeEztlr^A|XhkODq?mhJa4P@4vV~4R5@%f%}3U4Hm z?HuguwRU6*28~7m6xgO{hGqb;J{1GR6{1dsqQSeD$0$BpT_Pq2xB@P(%G*4Y)Z49Q z1Jt6yX>%Haog)RIbv%OFLi|V$10tbVC={S@1!s#!&;v9rB4vp#LHmUbIKa^DwKn;m z!-UW;Xa*5*`OjzI5=I~tki3W)M!qf0~HS0rJ z+HAGGlNkTV6D$8Z)nT2*Sk|@u_1>78dIZW=m{CAmECf zQ63MO!NjKoa#r3#9jN4j28RM6ArO@3djk#W%C|3PcE0jub9F2h01r^3gP6=Qy2MiP zrsH)yH83Vs?*GM4K&6CD-H2VMN`+EMB}QZ+7zq{(G*dkeMzUP7M3nNRLPfbsC-ld| zU^8eeUo6T~sV%r!uppDG)M;-dA<#+{qWO=%{SM?A!vR57>#=CAUN(0-9HLaM%Iig| z*RsWep~Koi2a`YtTPHd`RW_S+DxL?et2djJ$wa2gAeW6qGF$BZ`9}|~TvjMeIy9~b z&z27)0{KHHKr~q@CL$HOqU2U0-bw>O5Ht=>%SkLhIsx$kTrT4%SV|ojqUQ5?gmI%X z#Y`xLv8trgdnYBfgq`K0GD;)i@oObkD3+hnVX(@VZr4_vqAO`s6C+lOna&Shd-Kg( zS4Mg}TZo5@;!vQ_0&cSbWNH=)#f1AfSm?pdKmXSsClQm(N+!%vi1bKqiS)6o*(_j| zYo(0}S8U>nx!FvHgAu7pr7Kmd24pW$EXb@zZ8j3lFh+%_Tqy*bI-xF?O97p9SQ&^d z0q2S3bNTL{{rWF4_RZbh{f2Nn?d3~p>e!pkqq}&~P>KvIel2#ghpasL{EH_m83rv3 zWdg|Wr;ek!`jA?W$)3dn8)!TxExrD?A3f-HU^&EwDpa_b(=Ft_)W%QgB!=286$`-v zg~!bl;s^@~JF{S(4r_apq>9S{bFf3jY(8O-J&ZvKvhgJwMMH% zrAvWI43L4Nxb@R_t`Bz)4_PpLQMVFat0^p{W-puOuvy&f*FExqMkv z#*NFRa=u(CgVf}36+##HpQPJhQAHz@sba9?>XRaUOOLz;WobBex6^Sq9#$ z@J{X|ZFaNCRAM0*G0Z?9wV2Bs1sQfKwg1^#o9(A)U@ld7S;(w3JFFUQj}%h?(87HY z0{eXwt7U7k{Pd&68vpV;GVF3^a+yr{zx&6(x+nw>==Yx?^>w=qtn{#jpfW0e3rO4c{sHsa2k+UEUp#%XyUFYA>>7Pr z%6~Zztqc|;+FRWdNk*;^RNY;9=>`@5>%Y0y6?i_0#fG{}U6{fZ8oCO^lU70ju)=0_ z;QYXOtrDZ#d`iw6ki{KnA|)3*>z|>NKvQ&jK5rWK!Qr8YRd*2)E0fFQu}xphhq*!K z3r%TuJ_d8qV~DCCSb+maCwri2P{p_l3u3%8^BEX-ug(NAoLT~2#z3AR<-u}|T7mCq zhfFebvrenSC_Oa=>}JBcXQ&EQ>C$tA@vv6Z*e2p zBuK0b0;yWeayiu4xT@N8em}eDXD5C#apAIJ_USYtq17k=P!ODuX9%^LPYevHwsDZv zDz%L#Nu>%o23Okwt<^!Y0CzF}P68UWUXR}wlQs-9E8c+HjiR6S~bJtrMB+?wvfrBg#O>JYZR9+=y7LgsofB?>)Y3^ikIfr4?qAM z-DZ0iX2;qpl$#FyGlK_&A|s4xXLAaMaNOGm5t*=*yn8XM! zMV%-maCgX2hr!IFs<*M%?^-ZFjHg$ z-HTKZ`acD735_Kd?m8jR)g;$qaNFkrKg>Lf8kI)`2`CVpFSP}@r8DVd;KP;qkFfyu zh_CP@(dsVru@*88p(e?LWLIbaJ1Ug=sfPUB^8nn1o?a_-+xC~w(Z5%(4bkamvyf(S z%TT|4Q*?=acZmpqlESm9a^ouwgjON)ZTxcSdLSRs~8R!J33Y4y(gukd6*VP zlMXY4AguIyw**wjIkmBQNT3JPH~D0CaceK_=er}1Pm5okCp1_)G`Tof%ma{7G; z1Qag-f(5I0WX}ks*bP(w3rfH~s^N3?-#i5@eXeSd8){m{YF(FfJip z66iP~CbuSD!4!NkyS7hUo_p6uM_Q}!8c%id_)T*xj$-#Jh|Cr*9kyz%+8_+#QhN>1 z?8HF3adYGX&}4E3HXD@f)l0c3cx9)YV_fY*SDNkA91qg#Wkz3QjPryaadV=U^Oxs9BDRZwpL7_rUTHyAj%H{Ar zC;*U7wC8fe8o7B@kL!a%^*#nhE5`4VjJjil;-ngKL z^ z^~Uh{Fer)V@zNSB{oAMVCObu{H0`kWV>yu7aD2XKM182345)mqWV&Gj*)L+g`2?g) zfinKDUo36Iw!Q{NGt3-B4i?~W>P({$OGYxOpe$j8d7&~8Ggtcqb zQZfM#;OD?RynPNVCJbxK=LaNRzA^$DhiCvAyU?*}*y|||fqFtpoV&228^agjG{NXY z24iu{1YAdCe`}9;3@CWhC>xJ$9>QG$M#G`pCKI)B+Fzo*EtePU5t#w!TE)JCWHaaB zSzuDZ4kR5dpg7@x7w;JGQiep6$IHDq%%>|#Qcof}xGa@Q^Rf7;OvfuRatYL8Gy*Me zhE6|?xv2c(MgcnY&oy`iZH)GU$p}K{gy+aWu;y}gP2Dd9nw)w!rJNJ4?AZkXB7Y!X zs8nIElU(_87_{|VK96@QLO+jW6Q}F~AKnp(emlK)i03c%4xp}x3+)Exqhzc$6BpJ(1x5sXDG@(bYc*RS z(ng5hiWgP}-U#-CG~w;wA?8Y&Ho$na@FAlEhcPmd2=T3y>t&GxEP$ep-N#jC7$nII z#6sAg0TW3p!X9h2U0!}ZRwEIl`0ceYa9O~OM0rAFCo3jIk>XQ@U;qsNG_ELZDh|*9 z?I4c>^5?@Qv0X?5q$UFYm!NnliB~Cj@o`rF`1}Kg+F8|t1a0vFG<>NH*~DuTv4lhz zFYCZN0)QSs6#?$=*TSfF1ORW!yn!(6?^nkxAlQc#P}lp1t}j+i0{Z3iYCD<2K&H74%}dS;3#;NrOVah{y;(j%M}n3NWjJ> zlph_P@`S^ggyPmkV0P>95JqT1fQa`Fz|MDLZM*`3ciT<_R8M_!@(6bHTCrLKxSavS zjsQ^%kvoHI;N2k31<-^}V#x9-E+7G1pkTHL+K&VfQ>Q3s5BJv5= zAc+@P9xvzGuS*~n2p$WB@SgB0l~`!lcRCML7D2(6pef+jU|V2vRaGn1N~5Aw!1AN&@k9~ZSCH92Vnm=;0|;OhoN|hUqlw&O7M3fx z2;K<_6nEjlautItqWZ#M-e^G7Ii?e#Kj}0k3SKNq8}&v#9)pbt?S)=Pdkdk#+x0fc zI<~LrCex+vCn>WY&YK!&~QA-F>(@YsXXzD&o1HDTErI>A$x$Ed>WP*-hF_2)N0jQz0qi3 zTTLO-NWQLAYqff<4i8jBTs3^g0er4gIB<3XIin88hPcxegc@r!iQWJKqR1Ec9fFO^ Y16v|K6F%c3ekd6*4OY+D_Z-gu0mZpyo&W#< literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_azurill.aif b/sound/direct_sound_samples/cry_azurill.aif new file mode 100644 index 0000000000000000000000000000000000000000..7f651c3d39a81a23598fe06cf3813737a0891fb7 GIT binary patch literal 5212 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 YFlG}?pht)1xUi7vK2m%1BOv?xH$1l}yZ`_I literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_bagon.aif b/sound/direct_sound_samples/cry_bagon.aif new file mode 100644 index 0000000000000000000000000000000000000000..3843fb9f41f10757b057f59e719fc15c572a27d6 GIT binary patch literal 3934 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

R z+OSRosyE@G-X5?nJbf+=_gnG}MBdS9TD?e>)eQ&~uzww1@uO4fHKxfE+y6r4;yLjN z6;`K449XoyA!G&>q%zTNiJQ#dP>medcJMt+5>K$6B`@fVeWW0S2Xlyq2N zpv~UgV=NL}0wi-7ZD1+_!y~pstVK(G!YS zotY?dO2Dwd1NG<`L2B1g5P3b8M!rFWXG`Hiea{>tGG+&vgXjbHb(B{Xk>QPzptfvL zEXz(oLxBvH!(GI;Lh)5m@DX<@5y{00v5Is04I#B&g6_#!ggZyGI=G za0^8nI7#BaOqEg$LX9pdF760q9nr#IoFp&U?SbK-F_K)tO=4#QRRBgr-PY870!!2` z<+3PM16?wG@7M_cb|Mc}iu$D;BQ^w##R>V9+c1#edDr0~Hv&Nhqdqj5a)3@5fo*Cj zsM*nyK0rUl8Pr{HmtYMsiQ2If5J(VcFGTNhiD*YmV#MvXp(Mj2!{7+wkp}B{PL&=C zHFU#4KMkTC>wu_@6Y!D=EJS24*EbVOiZI!fUVbqc?GQQ06Q|20J9M(^mrR+K|Z6hhe{Jl?{pJYi4$sq zWW!tl>i`HsXc0t_pnyQ*n!16YyxKf7UsoeIzTTPbqOP0KSuBy{337N3d(>1GF?UJ! z640QrA%`=R5D*D5v<_X^AR2^XOq1*$6-<}|!!koww;{biLc%(G1wn>Tc9#a;9Sp-5 zn&D2D7fgK^Xc?L4IexEE`|5<=r?_;5i9XK;`3m9GDSeTR87JKzYft^qZ8jtJ3HEh* f_QzJQUcli`ZvUST{ppL{ucOK9R{#6m?g#$|_DJ5% literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_banette.aif b/sound/direct_sound_samples/cry_banette.aif new file mode 100644 index 0000000000000000000000000000000000000000..23713f1b53d25aff1c18a0621e659efadfa78602 GIT binary patch literal 6334 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_barboach.aif b/sound/direct_sound_samples/cry_barboach.aif new file mode 100644 index 0000000000000000000000000000000000000000..4b92282594542c4a15c6b095fdbee12ae19b421e GIT binary patch literal 4632 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_bayleef.aif b/sound/direct_sound_samples/cry_bayleef.aif new file mode 100644 index 0000000000000000000000000000000000000000..8cef22df3e54db062dc45f8e0deaec1d542cc807 GIT binary patch literal 4414 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 M(CLr`c!=`<0U>{0-2eap literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_beautifly.aif b/sound/direct_sound_samples/cry_beautifly.aif new file mode 100644 index 0000000000000000000000000000000000000000..0924b6c55875becf1684070c32ca449b5d8a1b44 GIT binary patch literal 4128 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 Ocmw~8WE>b{`u_o&C+E`u literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_beedrill.aif b/sound/direct_sound_samples/cry_beedrill.aif new file mode 100644 index 0000000000000000000000000000000000000000..00d0bc96c41d8d57d1c24c8805121e6111ddc96a GIT binary patch literal 9656 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 UUy2YB63`2bM9!dG_~Bpw4@h}ujsO4v literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_beldum.aif b/sound/direct_sound_samples/cry_beldum.aif new file mode 100644 index 0000000000000000000000000000000000000000..76435a6a86c0fd806a79829c1f498ea65bc2e3bf GIT binary patch literal 4828 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 c`R>Hrxw$UF*yUBx7_!Z=RWuP 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_blissey.aif b/sound/direct_sound_samples/cry_blissey.aif new file mode 100644 index 0000000000000000000000000000000000000000..897eb3d6954469a9853ecb082e2354dec332c983 GIT binary patch literal 8278 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 Io{(Su8}5&S!vFvP literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_breloom.aif b/sound/direct_sound_samples/cry_breloom.aif new file mode 100644 index 0000000000000000000000000000000000000000..ea3f1bb66f1d12abc5943a1ead61fdd1e3950051 GIT binary patch literal 6376 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 QYArnfkKf<^O@bi)7jNoq?EnA( literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_bulbasaur.aif b/sound/direct_sound_samples/cry_bulbasaur.aif new file mode 100644 index 0000000000000000000000000000000000000000..040fb1df7e4bf9f58e15650b20639bffaf3bf5a1 GIT binary patch literal 8266 zcmb7JS#TWJb?w;~U{(w;gMF|A1W15b2!NYNN~FYyqC{tGqozHd4Ay&eEb{NZ$05d>zs`@MV5 zJ?GrpmtKGKH9@dnIDh%lr59g+4gVL+fZ_Z~pVU$J28wJHAjXl@laVrAn>Q zXtX%+L!(x!RVtNIsZc27a=A<_~8HlKML0I zKY#Obe@9bQu}LQva@k}eP7A#G(M<}K)3xQrVrV6j&THrU+8ZlNi%n{kOq$ImQ!&B$ z>CHRC(N~be)WO3vl{0E1QA|}ZwSAGrn3{5X>`orN~WIu@*jS4gKoHw zM+M=L&?p{eMn4#iZChlr^|!SE~9{r$jZ83Uw{ z!#&xyXhYZ%4i@`pGMe*UzjgoFq;s803)q&*;%9J6kR) zE*(!q5`JOySO4+Fq3g3bT#p;%4<)X|wW@6Uk2vqpW^pyGCl%-D7Y{z6i%=PzXS!Q!Ycg|NWp&kc zFROS!qOnkH^S{1-nmF>}$rI*@1?T!YRp}(iX>Ef}*-JaYVOt!v$_3X){ zdmW4Rh444jV640~nbaQJ3(_`XDYgwE*KxVOr=fmr!J)3Pr=L&Fy4TkuQ@{K0UneG4 z!8sAdiQW@OTN>7<*KdCGG@&8t0q+p&9KF_e+O|0|oQ(j@DdY)zXQVK>Yq@yoOn<_) zMmr3mz~Yj?7hi2y^_}m&_EL9;-Q`?#VsQb(k`H*hTRX`Ba=@)n{>F`0lx*2sVFy_^?HTIKQuPC=&hkKOltXqt;N z!)La zKyiOdb2Zc!ThV2P#-=Ff-T>h~*4+0esM)jGyANm)tQ_cR(ys1~xBs+F4flZ3W9$m; zRrR&Emg8ZLf4hET4b%%H67%D)wWS^sZcktq;+zFls#;$HNte#LS7-@v7vanticfp$ zrBl5{`M)v8k<4a}X_JBCQcv6$4?{EY2RfC#T}Wr(i_bn=lFH~=0KHr&J=2Y}tYVLz z<@;dPNIx-&WzA4b)auT12MJWQXqzs~xBi4>J^^R}e;@EE~_$_v?cD>&QhP z-(N2&E-@Dw&e6IN(TSC%z3DG*u9xUcM!-^|Rca*-XM2v<)MoF#{~TpWn$D^m5Cq&I z6CLL|j_atJDYk5H*+<__DT+-;u3m%yH|m_6A-2EyYEG*+o1oDJD&u)@L=%t*fIfZ# zIQeVr)g{nIjan|;8+@9mw5$?#!VQgF@*pFWmF)1}{^ItIFV{iwzy&591Ee6Id^q5^ z@!N$$7ASy^-%9PcJ2JYwWT>tS!hlvZ)Z4AETzRpp9YnY6St|ypZI%MV4x!&@F`B%C z6XWhhJ;8{TjzXf?{r34#ro^fmaF9lhI9zL@mM9g)m;UN!fA&tj5JSyPz&~-hPAg9I zbhb1bjHL)*q5A3I1Q&sL%h9&FTFtDJYODz~Tx?k-Z7Lx~)>1*SJA@m~9&3*;djekY zR`5Q_De-PJna!yY>i7Qgy|-U2n`eJ_Z;M_~BGkXq{>qPkXj98+y`!^>K%dX=i~H35 zXMXmRcdj(o3r-!1kn{=0Gf7;$X9lm8+SE_~`XB#gm}4*R9NJJgwu<=F^vuVfd^w|H zTm&R4B-&G;SeFc%`qq zzF9s=``+FO`xDd9)Re_$sl56}=lhzQJ+rgvqm{s~R-=H}r!xuZ()I6WHS5!)S)$@l z-=ILN;24OvyvCr)*q$m3aseujJbFBmvsuZi!t+%nXXfWuu@K*0Z1OgiVgluv%$nLu zggUEj(?Ml>>-w#&GLsq9LXHed-c8^ECdYsAPoKnSqgl6OU`@ejj;K!^B_h@i;LR#>D|8R)55{+crQQ74FMaa6o8ya48?pETD z`bGDm7chw>NzKxhRI*VW<+MZOuIootQSJx;e_lAFk+@$IIn-Zy%c z83_r_AvXlyAuTwKE~B^0FbY?I&V~#*`Q5aTX6#T~m2`teh!GG;P-7;MNtj_QY!*45 z{{V(nqF_#xT(qQtin%mGH`>_oZ9I5B>VbRJ>J`OAde!CI^g-SXtPIZ0X^VQ_IM>_M zWZhU{tsuG=)(66Xk4a3ps@u5Fq395)HI(HHP~)<#;QeuY8T8EhR*6DlVyP0bkjti- zr;CdROe+rN?qGlc)}(CtgX_1j=T)MNG&OQ6l^RX4mQFD4g`d8A=}h6!G$ac(4i~~a zmmrZyaVjL8?_RnNLX*I_dJ4u=bjf4sSA^Wh|KCg6b~GUy{-lsz0^ zPG`>-kEaoD#nkTxpHXiK7k2UdnSLwOoskaj*A*u&K{+CzzJJr%!jaS1-@-tOrB&Oc=^a zHD>pnCuD&i-v2BkK6n>rsY>`~eLvk}KaVMkMAS-H7Lt6xMjGa9O=Pna8G0tBCz z%6*T84rK^%R=olGft3*K#m-#SN4+y_zPX50X-3uBR973gM+SrlP;(M2TD3Hf4VHE? zTSZ-~QkhW_GqRO|Ibq6Jo0YsRwh{h7?WGgc0K)C8<9n#ht>B)juOH&m`iqOeS@q=W7wq+p=!5 zPd46Q$py*%JNL)Oz^t~49b_5tXl$raKOLv`AL5a0J%tSLrk1=G>ou{2xWofZAKtLq zF+P~eOEa6g$k2*tgyWDd*gudt4Hpy<);;ItDxHGe>pYgB=@$uJM2{dGD@Hn4ki+qo zd=crK4+qAk6fLkmFw1h?7CH4zTMeKyK_e<-3qh>NtYKdqmv#}`!U@xe17(A7Ws`%C zVLl2m{Qzcw#ihpwrIQxGS0qSq7$)5?Rf`_3smeRG2r-5>hO8v$Cf705Raccifi-3KYkDp~}4_44Sf z+hszVwO>g*)c+fcxe=Z7{=U_(32$owNT*R;$YT(drb|6sP_fc@k|HlXTdN%z&JFh7>;RY&2 z&1073wQ7kVUx9{%^p7$%Iq5>NP;C-K$cj=(Wx0{ZL@&rFx<=?{v8eZAGLcJOnN*zz zN9q|(AXv;HPi*MN%2TXQB@~dzvHZ&EzUC&Y1AMpX*$wdM@NSW!gZ7F>V#;3h)K~!V zfjT}wzMH#FD1-QA=u6uE>Z#r)Q1%Rp9vnrSBOMoQEE6L>IDlPZ`-7ih3QhC1WFm>q zPAo@iK*F}uZTOac5wIY?O0gp?Mbg+h78Z6*c=N01B$$O z4L3yOcy9S@mCsd)VQFnVi=3i{;m<^2f%`=7FU{7{W@=0>_Iw&EC!=WPV3t{n$g~Vj zRXBdYH%I`ix_hMv6}ivQV>E?Z)iqX<*`xZ|-7%omrA@#Hsg%*jZ1Khx+J;`7x*eib%sj%-cvk8nhM5Ku?;!Q9aLcMy zW+VB^v*^@CvZuS zJn?)oFkDr7G0GwH#^wz+IKC=kF={eMBd7x*dktAZ2gqZ(6|AG~*&5mhF>K(`Jf&kC zlt&dRCVvV}f*$5A+~@OQ3gZp(rQjDfsgM)efS_brRKB?+gJ&R!RoIzW^Ga%JU_G?F z!Wg%(p*smDML)s1bC-Ny`EXC_U@*7?g80iAfu=8HQkW-Gsn^Jypj-%&CfEL)C7H~& z!*x|6LF;SY-Soi~`>|wM+Q`9o^7QZz0JQiN+EKiJq0v;b2uf1H_KYDQO*+LnPAXYN z)Qt+EnP#vAgEo^HGe$5(*hUwa_m+q*Qkd`2Fo0XqCLbB_ogrN%A!UMJ^(jc z+1UX#8r&u)-;;5 zS^S$j7y_tR_E`Q=F5)1N4Gst`72$_8sj1QMV`f5fq>%40GCx=QB&631X$AX|F-Cjx<=8EmO`=@WBsA$}aFfw^oMlH05BTiBv}7|Sjg{Q_;$o$D zjTZ}xb19W*ae9~dowf-ckJ1DRzp(LkXd6%V3#F`CU=ae&NWRz$t;5c zWEfNng1B-1t0Y)B4GhJ!3cNe#^d`1>tNE!1nN|X$UPmhric#5a|IM`OSj70&GN)z+6`l{u`*z-4*}< literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_butterfree.aif b/sound/direct_sound_samples/cry_butterfree.aif new file mode 100644 index 0000000000000000000000000000000000000000..f27616395f4fc1bbe4bebbc7a204ee650c84a7c4 GIT binary patch literal 5026 zcmaJ_X;&NRm9COX`@SFvu?Ubr0tAR1W4qgKyWQ<1c9Qm_C(DQVFh3-}A?M^vGRv9i z>C@@4)9JL+aWC%88#XqW&7c(|Bq0`o0PRvqsyuH=*z`$GRL5AQx88g2d+&3fdv9I& z@jKTj%JBP(SFc>T^y6#zPU$Hczx;%fUQoV&0r&V^y?*0g@SpJx!mLCpWsj zy>fe3bhd0TtT3vcMBZwTJ!Osm;D)n1;?F8d=utbj3oVVCetlPzwefqji?rMxt8|c+ zCgofe(l|@!=97}1Sm4^B>!KA9(!EtPJGb$x;=dOtM_k(3x3?tF<2(=`>FC{Eq^)uo z`wv$9azkSUqJ1(w^Du{#3Sh;C#vpu zpOpHhwIq?obw!gd(y9scoHNFzr2Wg#Er zj>9#H7MRm^L`uAN9t*axu(c!NmFiUUE#{_e{XbX

Y?YK-5@RmfEtJfs_N2=xQRElm%mKna9UV^n8JDRfzH~uhmgSgz^EQ+ zy*=zIe72)(4XI2+hu>eZw7R8drps%RsUjbvfTAS`RK@w|MX;ZQ|EBu&I_AjD%ZLN< zyZoLLFueo@fhGjJ0^n&ZWIx?9Re{y-Vd3u~bMhFEl7&0l#BH5*1UCfK(*{c6g4VY6 z`P$GSa7vER5(IV*KHAXav9C2WSA9c(GZB;O83~*o{TWVQYwRJ9T6`o4A&m%WT5TMG z{9yL3T)T__^yC0s(;CSkSdfMg!-`kRCwmD_(Ju!9Mv{m?@kze+?*4y3p{#&YjeuMG z2Bb+I7ZLGOHx^*8D;hJxUwINrW7|4x6VDVRW&p8s6MIO+t$>>&zGdPCob2Jj)QnWH z$8fmQkCA*sER`UKgc&)S;ltmPfJ4Al(z*bw6lMzGDI%c00tO>`cADF8D0SU}Jr_Zi zsA*LUf`xktnCdtCZS9~Mu?hLtyL-@X0}1g~_wA)@r*4kBI>CH0qQ||DFoNv(^9&pu zciBOZ3gVr?RKev$kx|v9rR@&zTU`%=MfNn+S4wR?iTfFZf+W;Y=R2L%!S1b9@g&S@ zuE&VP6%11kB|`EP2qD1uUi9igZUCdc0zxLSMa1hIOr%+SFGS}FVC&3uN{_|om7XD? zCyM{+&1w8J_UzpZDz%G*(SgzJKlo&-`9=~F$Y>Ub1<;=Oz$;bG5txA&_rXKodrUdk zFlXmOzg+PwsN@UG=Kq2h=RzvJrbORcVWj`lC>HVeSH<$Dgk0gB2!O7dC(L%LFukl1 z^}@6!=}#ihMUQ^_X!ZU7dm-9HB-9#QDwR^DR4U|hnM^8`NF@@nSR`T?M#u<-0--=a z)1)0i(}E8@^6xh;O%JmA~xfBXHQOK(#8p#E%Pz$Z~3(5sFx$2sE_4Pj-)ws|KoqTQl zU!e-FU;ON+7pI7YYPncYE0>DdYz7t{6BCJrnQS(f%jffV{_CSVGYhXQJTZ}&#+yex zB9juQz&LzF#4iocG<+jy*huUY(V~iSXaC?hmoKnvrHbxMQ0n{DJJ(+uciXKdl}yA? z9LpBi7!kM(!8TXlGnrnp+Q!ov7Mp1%r(Vxd?p z6-%XZnT2$6RjSomt%{5Ef$+pDXEdC}y>wbVg1jeBzP@xTDPkfu`V_U?fJ&`Y7}05{ zkh)>55`Panw4@+6%k*F#v&4c{MSeDH@ElNkuAy zUTsEtE5TQgh^iMgXh6s*o5nySYDr}^Xn2XrR)AB7X3Q^FLutaS)@T>A7L68tp-H8q zNx4^x)X#5z^VlnmXBjrhL>Lt_eqFuy1(J;Agq+9h1sk6698n-bmXmUps}|oMkWJz$ zecVNQHfs1HT_$ya0DG)Ic?$$#V;R;+DhB2FSyLtR7q3*x2}vV(7iD51UuG+!7b}d= zaM@7ayNS~krN!23s(EDLkCYYa==dNmWted{8+{L1T@utt^$ihO$MlY`Qj|(+L$7ns zZxYr*zy?#lfj`bWG8OdWGK!&^e;|MQ0qG>US{V(%hDJPjmgRzAlnTWO$6A8W=`m-B zpvOrK=ee5Ah5mCMF$c5;Q-2C;FAg7<*|cCIC8?R;HfI*lAInNuoJJ{S#@`fGsL(!k zGop!}+{0TTRcDnh>PQh4I)84-R>3*~AwwK<51u-E`2rRCe7Dqh$tJdi*An-ah0Y#Q zi&44c>Jc!?pH>R4DOW)f3+x5JC{7QmFJF~L?XmC-7YhWXclk`HqKe~A=H%yM&)3@*LR|d{2n}Dta z$kQ`Ca4>ri&vwfOCeR>!x+R-_%_^7qLZm?-93m|<#uts{9LO6nJTu)_%7sE(z}nCt zx}IRT*xM|dmiadC%oJSifl4eKi67*h9(QZ#R%oj>WMkb@@Ah+WY3~SqFA$5eOxwgr zv;V`nBiZyY<)9XJ!U%BBglyKo8)4d1!z1eTFOU#tr)8?DKMI&TT*FX)6k*00*Dw{D zLyvN1%E+eu(Igs;{vp%a*B|}%Q9UNxh17vgDub1);Bg*Y!?ROOh&lhCC#XU!cCj*zks+R4(b! zeIn-^84_6JNl6BPqDH@Ks@A}lD~yO9Im;%$1W2-=wV~QKpo2Hs531Q9mq#w!-;%^` zlc5BUW1dOQ0cH+`AQl*Cr#tEoA zLxMv z9GDn_H_QEFqt@LB%t&fR`%upBrFX5bkrCUwO)?B3R$}oTS~LMtx_dj8alCCtXhQpU z!`d;=SoVv(1c=&!NG#k60T(XDh+JMmBQZ$2uI*&2MRUQq4I5cEY^B#>Hgb80u)xRQ zk6&8z<$NN)PRr@;tFj{k4UVFbU49JXXGZ{pI{ET30gVwL^marZ7wHiIA@^4dra}Qd z0`5XI+e+0ETFKdRt?PyX%#4->MReebcm}iaWC0~kiRoIXJl~w#|KlSBQB<-0M7xMd z`iG$W!=uBn7I`w7iQOi>pRi2&d0(aJ3L)RHFjJw3tkq92t^(`@Oin>gJc*YPq&4Mv zP`C6EqQjtLv0#>m>hsk~jKB;P)q}PQ_PO~}`Qo)lxtD995> zK@2S%3Q~9mZ#wX5j0vX#a$K*KnqRVaxVLcq>(C8S^;vcV^JnPf0p#;f*LV*zF+zO5`<~(Gm3L_tJ+Gt{F9ia%F$a0CwBm&`I=l4C&%M6muAVM_5k0Tdj#1F($6Kr( zlI3`QsNdO>TM9tfSiciRd?S!?3^-iO%8PZh#RI*V(^maa!=%#%pZWaN!J!_faCt2N dVQyDL81h8B2pO=fAFo0F{2kwzlHRMv{SB9th|mB4 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_cacnea.aif b/sound/direct_sound_samples/cry_cacnea.aif new file mode 100644 index 0000000000000000000000000000000000000000..4fd5acd3636d409ea56324f7d62b35c9ec238f86 GIT binary patch literal 4488 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_cacturne.aif b/sound/direct_sound_samples/cry_cacturne.aif new file mode 100644 index 0000000000000000000000000000000000000000..d9fb8fda8d5f7ccaa6b6ca301f67de82f480cc54 GIT binary patch literal 11310 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

Eg#=sErV=^jIN*?|=6ynWo}5?oWm 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_carvanha.aif b/sound/direct_sound_samples/cry_carvanha.aif new file mode 100644 index 0000000000000000000000000000000000000000..c7cdedf914a65d432d9cbfebd3bdba064b5d92dc GIT binary patch literal 5048 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_cascoon.aif b/sound/direct_sound_samples/cry_cascoon.aif new file mode 100644 index 0000000000000000000000000000000000000000..17eef0ee9015236ac74edddeca91882bb60d8ac6 GIT binary patch literal 8126 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�aKUocL{rsca%-O%uynhH>`JVFWcw_u=eV53&dhv=3RHu;> zSoaRwCjb9n8TRrOoZ{$AEm2>bL9e-Xf9bE++4Ij&zwABC8?Lwd(6UW1xpnaAb3_8j zz+A(p{vLpR{?*s^`g*DnC`&u|XWUTzySAdt3tf0q4HU(X{mX1T`^)T;QU9y{ zS#Y!M3%$`WnAG(5h$Nn$tG-4cPcuTK;;vh6F-TdWw9GY@8_DV~Ba=C5LJfzsC-(cyq~mzC4QhamC` z)FILtG~O6@p*6R3$qtq)j_Ck|l1Qj#JE;`}kX#~1fI|?i=_!AB&hjsJ9oh@cq}qXD z^rGA34H$1wKycLT;_M7Pw|i}&wUEZP&&hnQl20y%e%uwHi4ups*Zj2kDLC}~jser@R%H~?;xDtAPPURw&+%97!RfHWba9=S8d4uLmQU>U_DUE{ozR^Ld5sVz= zBLXcP#cAn)!Q{0~N;c+F`{4G={@EjJVGDW52$2YHB6@72lXSo6F3(4{)nT+wD~Ofe zdzTXT5rl<|2F}kLbKy@Ku@L+a&K!5#T#`lEOMp;vT24>XEl7(iH&>lIyjDxpAbzmCPkfvkR`E9*zfZPlCyKLQKJW+u&QVXQyHJyZmY-u zgW+qFkvAP*_O>4*G6~K?CT$W$p-Q*8U+5dSYwecac=|P|hkkbf+}UobCG2r@3+B|K zQ$q_tK$={HqE%7i4uM^y#%rwIccHg^Q* zz6c!}MVtYTAJdD%FeXwNY6wt(=2A9?uMMX~DuF{Tj+{Om3nWeW^}zu4PQ4s=fp(dm zK6xYH(I0QC?W=EUV;hafMN-h*7Ez=cjX6>}o<&NimxBR_N-&k_52&#jl};=;L-}r* znj|3%z}R?Z`tSA)gwYYkoba&vS|j zX(2N*2%}OMlWETawOOX}r+Y~0=*TKvp_gzK0yAR%-U}l{IhBrcPc0&5$Ek?ffCNE| z``T!2a0A(+H|FLiLNS=_2#wBm3;iuq79EOHITfw+rWZ{{5$Rw&LE1nNT8NNAA)%ng#k_~;86cS7*KFibPZ3i67P3g6X!dzqRFD=z zlBq$RT`CowrmTUc;c=2-UWNV{af3Mss#H{T@%R`?#h~LGyHwzU{t`h*rH#*xtwe4- zuOlSo4U@-c{Lo^=H`&=X+E)l6?JN4Qf*ke}Y`Dnuy0Df%jHrRKK_lAfXt9*7M(ei3 z;Zd9jA3>HtE+2YS%j+`4N`1F`E|r`_i)l#g z0W@&?+^%*J9Z zbPcP@j6*H}kfAe_S9A$vR?+!&EG(o^Q?NZP0;0H3@{w$+)?mn%b$8$Bhtbc3@I_CG zZ~&w;kf3_9eWYcNn5i*N3q~0)Rk~=a8R0P1TKVmfeGWir{=*u`0yJzcgl@D4F|9)Bq`5|1_RtgYJ<2=cn;6fbDsUY_IY{YpdH^{VG7Xcd z9-4!1#N`Zs&|+KWh;bcbyS9&s9$mX8p(t>SSHXZFI>cozT`0pe8)B9rv~HwlG$f57 z8{!q3hno~;YBN-6rQEEH*+o!l=CJ2qQ|z0 zyz1kA@dP9hu@1Pv%}$rXu+!8uMw6U~h58+f!HTf-06m477xr?p6PZI{nScG8L*JY*eqNdE9&bMPGQVY15II8IDkdj=clkz!QKW<~z8<5vS$Tp{5}*5th+ zZcu?%OLl1NV8nKq-wt`InERTHeX#~Z&7p}skf|(w;WFZt*|5qKm#2b-Jd5)R<;Y+& z%7FF6#Fuff#!5WWAqK+O%kk=5BCt6h&%o=9p}CI)VOYerI2iXT!VgTCNe*VuctR7_ z?(_ZsufiY9ur19@^S-%h@{Of2{9f3eD|-SP8({}RiHdn9oPeu;Oy7oYv#2jY!*C)N}r Hcw71(N8;PU literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_castform.aif b/sound/direct_sound_samples/cry_castform.aif new file mode 100644 index 0000000000000000000000000000000000000000..c107456406c2d02745e2dc5b90fd45693c794439 GIT binary patch literal 6302 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_caterpie.aif b/sound/direct_sound_samples/cry_caterpie.aif new file mode 100644 index 0000000000000000000000000000000000000000..b0b246b4f0c03124c6a5e10cf45adad8aef1ab79 GIT binary patch literal 4192 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_charmander.aif b/sound/direct_sound_samples/cry_charmander.aif new file mode 100644 index 0000000000000000000000000000000000000000..d72c0f9e084eb847f673f2058df58fa36faffd27 GIT binary patch literal 7216 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_charmeleon.aif b/sound/direct_sound_samples/cry_charmeleon.aif new file mode 100644 index 0000000000000000000000000000000000000000..8e84af0d8a88dc641cc6c000a266536f86273ac2 GIT binary patch literal 7248 zcmYjWXK++kn(dsES}m!SbB?WmNJbcgFu}kWdmJW|%d<7!sjb?Y+S=OvIluSEPSuQO zYCPWY*dE(>zy^Z>fx#d^0ZAYU#a3+P)asgrcJ`o+?(U2?fvu8=DvMs83WSq5$+$Hl zS+qv2WnmEuL&<_z7s?{y$@QUd>e1$=ssLMeJwQ=`PusPwWotSMVVPC>cNqzrRD8yrz_;ke4)9zDrICw zdGPe911M=ms#Yl#CL)nQ@bRq&{U7}G;!HdtOvqLr^bgL@smqGk`}MLKoLEh@baG~P zVFhq;d40a_2mPb7bG(vO*}jGv+sekK&E@5G&ldpelGfv`t>q1_t5>f*95BzW+Vjr7 z`P!)?ji$n5zdUoS#iX8_0%q@he&gQYkfrC-Yj*~QHjITu=ifM^@rA;1Rz)74&lk|= zK--?iqO$c1m#zS`IzZ_mqT?If>l-_z*!tbBX7dvJ1wcIolPP>0dk z?VPf*qV}^|oNIDD0%0?XT$0^(w(UT5xv=YFys>8pCuyNu|zBq z2}L~7woNBh3Y6}l;RT(+$Z>~z2zVhl`9iT!U;n5uM_+xm9mqvzqUY3dnMfQJ_x$OD z{;)qBiZQ6LgORj0H5N7Q5sLuH@{P?c>$cPBBF^&qyg{^-n21R^<53BvLJ?|D)SRI5 z7woI7EXbFDMd!Y{+X?zWH)|RzD~uJVUupv>B%KEZ~WP@e@3gaf4^7 zMMD^;!1aVxDmxyJ31c#>S`QwI#(_St(%pwgaRu+s^w}Zau#B{%7CYB?_g|aO~*e);f;cK+qED zq*NLJgNbmklYb{(wI`d2f(}E+bp%E>1nlZpcn9!0Lc3}lX8=IcD5M>jX!M1g+bybB$2QpGg9?{B+Tbn!f z6lho39x=38VCk6{Uroz|xq6W0BbPhiw55v(Y z*%vy0FeOAZvP_M=VZQ#^*WdT}Vfoai28eN`TtiwE3!y&pGC`vAM^STYOGW}wKjNtUw2XA!ug`AV?%aQ!z{DSDp#)bO3ukz|!C-U++`PI8a|%G` zp81b|2htDLR2Vt3cQ_sHXEpN&sg=mlsVx8E0nBu^8S!~9A2{`~w& z)E`W;vbsrvoOJQ9@XRpB1tI+&aWoQ+P=5fjT4P4Ko)dhOM<7|gKQy{*L5Vrv9_uj>BRj4TDUN({@w-Q!5+2bl>l@}br82Vm zxR?dbfrM{nvUW#@f}#oGgU?BVIFG;c0A4b!{Wvp`(4(AGE$Lf;H{9{<@BjWKlWAu` z4&Du;KRmT#$7$35Ln|=FG#Fg4W9Tf7U9`Hum>IJdHM2jw!(K*{6}0qF%dy|Qb&fQT zR!u5v2X@Md8?tfytp7HA2hlMj6=OllNQXV%~iOc#-Wnz3>w%Aa#Azm_lJgl|HrRxbPvwY1C)^QmS6wk zHR{PqF|5}7`dYl6-pV?=AA`chPp(n}zK%w2dgHxvsteRFjN{t5#>EO8A5sA;tDu#> z5w06-E*B4q$f%z~eJp){*y^yOw?-df#7*}7Qs3vO8w)bP7w7(yXuie7+vvJOmWHt{ zB^KZ~73x-AoVx6$Q3E5A(ml;aZLoPFj_!Fr-A7~4OHzM>a^~U}fBplTI1})GX?2J8 zn;J6KF`|Js>vr)>I?gO4Gs6Kk5;&YeFLdL*U%h?uMN=&*2oV(Uq5Oe>-|zE}Vgh_Z zd^xi+0Gqb0g*(+@N2M)QOle>%OYwZ<0r0Yc-j2&3T`;>id$cS4I2W`r&R9u}5nSk< zoLq;?B|9S(!XT3}vZw^p7+tUt7rwd826ba07n1DSbj)m?;i(%0(#IIV$3!hGj3Csf zR3%3#=I1%@VjeP2Iz3h-HK;7d*ARXdXYqNNjYaVDiuL97wRFic=4_U9L=t|&>n^l~ z0ttDf#RX?U$;&4&Z_-w2nw3eDtpjtAz|cE7WS)u^I60A~;3*M-x<1cvxGabTGa(wl z2PYR8oP6DzqB5O3nq`A{xD*m>fIx;{r%zO0LI|!NoF<3U(>nUsWw#*+3x35{&1p&TniI>;@;L zEj7n*26cIMip=cD8NJ(gx+w9ZS{Bz-lxLKKI`S;&sIHH(;t?c<>hC?j~oZNymRh22{YMQK|CDx2Rwl> zEcW(@^*cs1C^8dRHcQDV4#gI73teUzhEEzcinF$+=jYcRvgDL=jtGPl2T&^bvp~gL zuyhc$B)OxdP{43%YaUJ*0o&+z{R1#ZEUuX*CbVY5;T$@H2XiJHI{gfrwPsr{?ank@ z?jf02TlGGB&^@nFV+e0O_Z#F?*ok*_6WWhwlQA4+IPqXlgN7-J-@kJI zi<|4q@aBdR)PWVnOHMxdJ01RVUA&bEWv}xhC&}^$vU$y$xdX`XPBMxs+|&)C4D-Acw~lT z*%WoVR7_C?1dFC~IM;>XZFpRc5&W3kez5hb1{1Uf*h*5ke2p9!H_CHMp%ete8#K~u zECg;cFqmllGQiSbP={2!vPyzM5x*f5jUkL( zg`CE#<;)LgVUw9^1HRkVa2}&LrnjO+>I*Rni89Ja+6b|5$B9`kg8{wscz8-xq3OlF zG~lPDiI0eSMWI;IdPpJpq zOE!Te1grQGAV{erpBBlbh?JP~6`XPyl-boqa(Ma#F{;C|!9~wFa(wH9;wNVl0MUaQ zde!M^>3T{YDFpxtkO^WyA*2+^d9FoBo8Wm|6ysBQ?6xQ&9-b1$3j5WWGp60&xedLnBXR)Bgx={;{M&hU%(F{O-J_#1bR&z-vcGvn=@kodYldT OydNA|1Zu^)f%pGgXR=rT literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_chikorita.aif b/sound/direct_sound_samples/cry_chikorita.aif new file mode 100644 index 0000000000000000000000000000000000000000..67ceafdc370406d50c52e1026f656337708b8816 GIT binary patch literal 2654 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 G9{&R)G1Q9y literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_chinchou.aif b/sound/direct_sound_samples/cry_chinchou.aif new file mode 100644 index 0000000000000000000000000000000000000000..35647567814806010a175d37cf3f77e997b74ecf GIT binary patch literal 6346 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 b=GEaW=y1q`| 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_claydol.aif b/sound/direct_sound_samples/cry_claydol.aif new file mode 100644 index 0000000000000000000000000000000000000000..b89772021e623b4d5fd08f9db1383dd3ca1fd90c GIT binary patch literal 9668 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_clefable.aif b/sound/direct_sound_samples/cry_clefable.aif new file mode 100644 index 0000000000000000000000000000000000000000..9c2d8c6642528dbf2ea0e2978d55116fc67e8d0a GIT binary patch literal 5294 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_cleffa.aif b/sound/direct_sound_samples/cry_cleffa.aif new file mode 100644 index 0000000000000000000000000000000000000000..b27cdeca92e27756c22e4d9e3a3a011ce300bc34 GIT binary patch literal 2992 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 Kq~!g}KmNZaz# literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_corphish.aif b/sound/direct_sound_samples/cry_corphish.aif new file mode 100644 index 0000000000000000000000000000000000000000..f0f5ca01ebd30c9e9dee9e00a252bb4bb07e0c66 GIT binary patch literal 6010 zcmY+I*^?XBb;i4aMq}RxgTd?zIiulb$~3h*p_U?}6eYV%r<}ayA<0YL@(=hm4|z!9 zB$bCaRY|ETv88g7ifomXQbbykC0QmZ&XD3Z;*c`~%nbG&=tcvb-?^a64lskI(f8hS z&+>iWx#z$2o!2xi`xh_1dj9;&-+GPDT1wNovaSWrMcz2acOI|4e(AfsO}wCK-`Bs- zC!MEf{Cerq>#uPCX}RzJJ%Rzl>lqDo&FNeA$R98apRT!@Gt_mBkHhHPgwd|=*R8%D zGDGQj*gv}Z(Se?rNQdl3<*-=o^|W9rJ(2K-%>OW(`hzV`8FcbnCGzS_0Z+1Rz8-VL4l`g$&C4WqG9HGk_@!&67w_cwOTW5<`5 zlKte;Vs>pMq#s=W#r5s`rGYz&rDE|!+zgquJ~JO%^;jM2)4%-3&+Pf-U`VE!%tV}i zt=gM8zP6IKyQZf(=xyHY>y3(eZ2H)#jN|i_%g*lR!$T{WO6s04HyGOG|GepY>ilvl znBUU0{RjJn;>_`x>|&zVb!+ZQ+8demwvPP4#mN1i|LE$-?RLtYGf%H&VG2v~SGmrk`+UwIJQ4Qbjk;xdOrIH#`3!Aqv*%ANGI8-R|EP$+!(sXJww%c9 zRNNf4>+OE6j=!}dGvR^V2tB_XOa%kaerKt^|KQ$kYxmxRYNZ=b_^*F(C%C+v%S2jE zW*$Qhw!Pm-eDT)D-RUzc=~VTW_3-xK#OcMXzt?wsPM;WsPF+}O9zIOI^z~S$yxWQ- zG^hO54?gOwMz=oPiq6dv&mvd-fk?m~4mIvPvePTeqfWQkH7AK-#5sAMukBLX(0aXU zqp^JH_d~z@uUq*}Y<_L!!uQU!u3!7%KVR3LoFagw_`*!e!pFy6Kil~T-#)igzkTh2 z$Lk+;tW+!-@&4~mw!P`u(wlGRCl}0}f*YTj$|W>6o<4Dw4A^UvZTdlj6gPb0VJ)$q zOH3r<=f0iT{_<)e6pKWS62mlO^I!j`Jhzm*@#!Pq`mtpHV0%09;xqo;%?oDK(IlkbXo4)nMY;2Uja--;-opJ|G`Jli3Wi6eK zPi12a^?U8~(`zdWgPom1Xl1%v$g^RtHtyUVPGmtOpzZVN7vaYC1&$`$CCLfUscR_nhfGb55ufJfmfb00s+J4(@DYL@`}`Kwa2oK zGjOqo+LvnAdBv0g7*LnW;NjDCk5`aks3$WKuWb!Yzt8=T4r4)oid z5iu}WjL;`1QzT@w>juQrOivI)fT$*L0T|1Ej0wpn5~9wEk!aB8v;Ys58Ak=XNtE3>!hOHDk*T&xQ z5K;<2xf2g#fkS$?B$o-i5oNfcp5d6W=?&%zQ>* zs5fB80Yh`i3x`poYO&NNV1z|7!Uf#J_*P{CL-C6RD|yI!5)ibGKr#}JPPNwR2|tM$ zQbB~HVW%h3UYk9*UQZZbx^8Xz0Qi#t4oOe4#cy`OdrTm^2}!-ya^MV;I7GrwK~=e8 z)bXt!CFP4%+&wESP}nIA$b^t>0qE8ci|wvEx_SdBfS;ra<5TQvtDKmq-+s7PF$wRe z`e3`Zc>2U_#0xJjEH11Z2{(5(-u?TZZ0ro2;=Q6BnqFCpWvAlj{^%U&TgY#H_};r4 zo4fvOj8sW2FF^>3Cgb4&+*d2r3IbY@qpN^5o*uscSMOI-lc^wVf!jijN^)sx_GqM4 zD|~scD7oS{&B+VjUZ~~|4?zc0NL~wSm;dQ%BlN_ADPD~P2$t{Br;qFq)!J!Gl*u_? zFbd}D{aT?&A$zD1J^2zG^pGSA#h^Ck3F%jUc%`{=g8hR*Ko05S&k_JCi%gWn=8vp{ ztwx=vr5=kuUh`^Dw zvnyr92|l!J+hVqIWhmlCC>$QQ?BXwe$q+G|AqlA47h5~N79-yPifZw&BHE@_UwUo{ zz0;Hw{YH5jX)=o&i6Gx+9O3dihd%=k7gt3MV(}R*-tsoK~%hj*xn!vU_;A zM}7x@3;ubv`ZxdXja%lze8#~|LZPOIiJptW>_n`Z-^z=3OZVNW32_mTHN-{0kzFiw zxl|TP!#4nga6u>(jG{jRM*G7bUqdKN2x0}e z0uC;pe=0?S^mXO|CmGoO;uF+|2p>!bNI-ld7Cs*L>sub*`P*-jZV(bTgmYnFXV7et zn~qGZ1|dC^!ti*)aqyX?84WviI>LoW7_|Y4QO%~jBwj~u!>Pcd+LmY-zdr!cayN8E z{oBGqUa3T}nkURPA^JtQgb>SyCDux-z{kQRWR1F62Fa6pBzFj-%uH5N*(#c-Z|Kk; zCKWXlgOUm??Lo-SLGg@~?2!dPl`g>9QME;-ph=_#q7+Li77F8%AsM;-V4n&QRs|&C zJ+DC*5!8Bv=3%8=LHs(A3f&-SNYc;<LM(C#5-AhgNsWOVYv zpI?}4?liG?|Juj5^61Gr{nh-blXG;E;2NQnRBS<1sbIAI_D>7h=K*WkMuR4%Jo?%nf33E?T?*Dw&7>;t}fE$iVY56K4MI(k2lIyUkjpXqJh-q&)=IkX;&0*(#3 znw-|FR%nnzw1-1lCqvLbUtn!SXtM5=ZRp(jZegRVt$F|0#%X@(Zezx`1sH#a}63tga7 z2X^|ESD-IxQ)DOTK-fv^pSP4 zwY0RE+q>nC0&iNIXpo(AIzejRy>s`lSoo^axcotV>B*C#e}||UT-{vx?&oVzt=;XKN};v^^Pvn$sDaX$B4D*({Y@I@c)T~lxyQ)Z^In1iDN zQ6iK-{b0KjPQD;@eowja_fm+Rp{$6 z%Mzb2?*U+#)CDK71iD8agFxsDlhsu_g-j>s!FMbW0Hr4qbW^NCry|Eh?ntR`87G&q zRRO;0wiMeatY#?B@rzK0^cRY+1iaaaYF$-VHl7E3R}=Z@G}V-Hvl=MKtd3bAknx;Y z510d)LNIbkIvdq$ie^wfrd(!176Q_6n{;#I78OmPn9Qvex~3nkD9pg2(vW5gZjlIr z5+8?6wNg=90-mx!_p6(G90#cWTggS42zzLjRa0sZ0wcP*DuBQS z2BrN+9Gq#$u69%)Q}sS1<048X~$UWn47{2j>~ z@AmcWKKURANObRXUv}vEr_;64K4>ba)0U$Jp;$r$;ZrYJiiy|08CI3AS&%8ye%v)=Tsb3kj*WGGO@;FsI=Fjlg(r%!CqQG z0L|{=H;`IRS4dj|4ox7tS%)r}*i@TP*{HLnj(D2H)I zQn%7@LiTe0AYCdSR;eG)H8jm_-d>e0i(P*~o7kz~Sqv5Ii9n*R-4h2#iU) zg*TCZR6o-Yb^b&h(jThx5NR`*evBpT9`8_<;ziM8I9@z2=MDgrszFVI`Z&N)X9-ZH w=xwo;wZ@an8xNw69FpqBVwqo~rzNp4X{>prpoy;F9>2-bGK^&<*n(vL2ViX47ytkO literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_corsola.aif b/sound/direct_sound_samples/cry_corsola.aif new file mode 100644 index 0000000000000000000000000000000000000000..68e743bfd0053a23e80631d24f2abbb714fe0522 GIT binary patch literal 6440 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 H;OPGYR3osS literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_cradily.aif b/sound/direct_sound_samples/cry_cradily.aif new file mode 100644 index 0000000000000000000000000000000000000000..197dc8d92253d1f260ef6e47b535c099aebaaa7c GIT binary patch literal 14542 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 Rc&|_a;Q^HY*|5eF|6kAezuo`< literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_croconaw.aif b/sound/direct_sound_samples/cry_croconaw.aif new file mode 100644 index 0000000000000000000000000000000000000000..afb7f3fdc787c70b55a01a9b9ae718d0d99f2ee1 GIT binary patch literal 10096 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_cubone.aif b/sound/direct_sound_samples/cry_cubone.aif new file mode 100644 index 0000000000000000000000000000000000000000..170745da16d5505fd31f5748d4f5486585e0e667 GIT binary patch literal 7558 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 W6WLgI6d(WQ<+n3w6!m|T!}%Xd=!rl8 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_cyndaquil.aif b/sound/direct_sound_samples/cry_cyndaquil.aif new file mode 100644 index 0000000000000000000000000000000000000000..4aa580199430b64b017b441d18925c6f87755101 GIT binary patch literal 3528 zcmYjUS!^5E6&-R&4u|``%A!bWmn~UK?8J@}+iIOUshuJzlJqO63-rJJ=ud&>t0;=1 z{SEpPC?^M;a>M_3$_Z|>Z8?z!h4 zUV8PlD-@-^bK&x(OS7+D!8K)|MEK-)l>EHvgY)=5*5#|O{~T|o=PBwP(L1;j;U(_= zef{;TKf?Y$kbOT`ft^j?#yVLWzD>V>YkMaU-h8mQ?BCjr#P(CkEq@>!O{DXMVzpLp zG+Ql><9WW#w_8e+(V$Vtq!PN*=DAk0*$`H<(Znun!{RwAA3wm&3XNK&RIqY}Y^TL| zb)=QUz?EvV!P?DwwMyRoUM!*zk>|J;hd{z=w(x3iFFf89k|`q-zTKfjViHO$L=$U7K288_$9-B$0 z)f{F1G&7_Y1uB_Bu>@3-u_Ug(zwa{KZQ(8K&vtMNJ0U< zM!i<8lq-b@U{9v9xqQLD?#E@O0DPV%)IF|PX0cjyTBQI!PSLKQQrTRoTxU~_y8=LnM~Ng7sZ=Ioj+Ts(F|?`&@o56d(IW{2q(shsr=wdIiIgL3D%B4+kusu= zLhXe5iSK>%#l1COu0+qgW%ILV+>w-X>|l+aDSuraP(6%UT%l!ZvT*aDr~cr^O8EVc zww2p=i(bW6($O0X>1OBLc;#%X=$#e^#e?cV`j}~bL#Ewc z$huk!dnR4z%f;MRABS|c`yriaFQgl(3jyjQ1F?PU$H15X~Z9i6cjS1O^VORbEUoQ;FF?KsgmbVLj*BP)0HxBag4g#)G-uZ9n7w!+E!C*idoXUZZ++M7ZGM;O)hq?Iu8@xzYx?$c`~Um4 zs$E{>`nbj1q|KkOk0e(_1EQ7kfH|75dkPW5?6lbV)8SfecqAFt1ER*Lel=nMJYt|< z8`cIlwvwM;kFl}4dAEEstas<*wn-{LP1@plHwiGt_?Ty(ldI0n&?tM;*BmpfJuzDM zeN12OK+=*BUgppql#*d;@q?WZctjd7)l|q7BDBwbhn7ey>3p8jX?08uO<_MbGwo2Y zQizO6StR%B7-f9fABeTVOmZ)+Qu9%?TZ(4nY$I7Li1c~`OEgbwGnpi<4xS6Kt4LY7 zt;c3%YSm(u^j{&9&G2d#&&?F_rvAPjy2PaubJDIv0b&^d zacq-=js5aBla&4C!Tns{NODUtp1mD0i0`e@#wTm^Q1#pDkahFj`Sh2c?wRs)dAEKw zA9j*n%)7oIx<&7Vb+iIJ<_L_k`aZZ&`4Gi?y$L&p`MTIu)UFzCpA$54lnp6%HqKohFi5%MuLLARN@6h4vSd8E{mE zt%%YPi=>r!K3CTR#A2aRk(vqI`Q}0S`lGf7;LXtZ*B{OFo~{M8=P5|VHP7IiZ`sNNmsvk|!nD4t z=?yM*yh&iJS=yA_{PT_a=YRS<8N2>XMYHs%J<;B7Pgs1UE@AyMlE;!~^x>rAl_Bd- z-m=A&&lB2vo@^#zy0@5_qbcPv##ty>$vf8`qVQO-)kl znN!t$#rVXa$Ixh2Wut>03lFsy=?UKw@dJrmLZ>irt1_vKk3#lk+G=KZeK(MnLRVAC zOqQ`~3}U?3bS5Jx*{m^Eqk(0i8CHmHvp|9oz|+{;#fabwAjY@296GF4LPw1`^; z;3l*}sa)5a^?DITOvgLqb&z?e(xDg1m2zE<35xD1(F`M#p|0}Hci;c$i|^KULiEt! zpr_Yiaa7lKh&5c$os;=(KheTe*$MrC0;x>g`7Ojn$oj3`Ri*K>T#(+l&# zq5#53Zl?Ajqhzulj?=b=Na^9QZD&&l>A+4Xk%l-3b5Kl6DXUea zJj7ZOp4y22JMyLNCd^Ub-=ECQ`~8W3eF#NVYqUyJ>&rP%ZaF0lc(zC|elm{_DKA%jmbBkm5Y zPZ3K( zMpI(!y_ zk26Qhgk5~*kh<_DXHl$?J~#hxg_z?a>IbHJrhfJIc$SR%a=mQ3{M<=MjouKseShI` zAOQ7qX^o1m=@r%2p&CE1)goRE*&@Ar=u=F&7n_Z%OF0~S&L2c|XT3jhEB literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_delcatty.aif b/sound/direct_sound_samples/cry_delcatty.aif new file mode 100644 index 0000000000000000000000000000000000000000..dd665b110fa0fa8de605fcb31cf3404f9124ecd4 GIT binary patch literal 10518 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_delibird.aif b/sound/direct_sound_samples/cry_delibird.aif new file mode 100644 index 0000000000000000000000000000000000000000..dbedc42d4d0d6a35e53b06d8f59ea146d1e89f73 GIT binary patch literal 8094 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

fx6c=6-+ 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_ditto.aif b/sound/direct_sound_samples/cry_ditto.aif new file mode 100644 index 0000000000000000000000000000000000000000..2c797f4c4637f9e02ea2060d1f732f6172e38ec5 GIT binary patch literal 5566 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 b&nn$2ERCd4XP}SvG#k{o2BG)(aq#~EqJ~*I literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dodrio.aif b/sound/direct_sound_samples/cry_dodrio.aif new file mode 100644 index 0000000000000000000000000000000000000000..111d8bf3e2c8696066b4ac1da7ebdfafe3b117e6 GIT binary patch literal 9712 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

>230+sZ5FYM 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dratini.aif b/sound/direct_sound_samples/cry_dratini.aif new file mode 100644 index 0000000000000000000000000000000000000000..298497480800e455b8640c25e02a51b8a315eacf GIT binary patch literal 5812 zcmYjVX>1(ldEVKb+55i9y?B%2O^P~bU6d@#p%vS)9J{ca2Ca+yX$$mMf9G$2wn%}t z>0vYu5Zkd~$?zpRj%CS`Nl~IC-sh6bJJaWzm8{GF!<}ztzTEjGrHYB9=iXyG3l;tUTxh#*U*_tY=s*y|f&n|RKSLEd>Q|jqOE-UFvGI^@y zl{a4*xMb;cN}OdmSI|Z!xv0ed_>$tod@3zE5T!H9*-x*1>AjuZJggjQ@^ww#&db%q zfAgb@bWcRB!O}E}kkzXaBW#UJBN7Ssj;@$Rbg-~>dFtt(?)ZovoiY0RFz>{m?yueC%^XP!T@y48Qb!w)>3J#t|CUzSar@Q=ClPZ zgQzo#im@Vo5=(K#n3PG2LJ;L;5^*5`Bq?=i!mxPl?zNrOwUobJN#mIi8#`~8)2@n9 z%h@=sj<@p?6Jq`1>z!u@EuCtM0ZFBpI8(^eF*=`Cgt%%{5@kgPs%%l3kQR|Y6*7b* z$G`EX9b1sP&2~?xJHy4mF0}))Bk8L)4@Y0bc~M!lH5#04pWm zud{J|{OK|Y-l`d8h8n$aWpHp5z^BcCGvZMwhWT)+9HBA z`t;6RHkktC6{04Q-b}kRhGweSpmA|Fld_%HnIuk$+QM2G1{Z-ts+ze*Yx0^pg}_rl zuZHATAum&-r)vFjHNjNgeqaVFwng+4WXAP=ed)k{Kw1`mH}&sR-!0_7&!=|{y9A^e zs`KnWo;~xr_4#(?VA4b4svvPC9M2|=0fq&xWdv*_-1#(ME^vZCn*&S>LZ*mb{LoT0 z1x-~*kcnhdsf{|KRiI{kcv3OoqI*hubq=dByJ#~Fa*Menmn_v{wQQDLa`V4_=fi7v z@2-V?#YBe6C@GO%q*qH!5;gwHR61TKMLf`Ov2SeH)~z*K>l#|5sED}&Q{d`(I$x$T zR9U#-1{xzPiO^5AhMQUyNfKHbpf5`6;EP&9nhALzEb=l7@^ENT{y-JHGrz$;VB-Lr zT7vaR1XO{p+z%Lf+G6tSMd{W6GyNaaSAAM;NTus3_2~HatW}fm%+pYrVk1IC2N3S3 zEk)=LS^@;3S+OzcsgV~YIYhA$+^Cj&H1)g1g@^Tr^$PM!Xiz4SOx0V{W_=04HK$ug z-g;x=CvQv+PdK56rYa{(%94Tx#%jTAZjar|m7o@JX8P(!R~Nq9^lfH?h&^OMSJX+x z#)_HXOi*oxghFVpTeB)<)l`*`5xvZY zw{uXj%Axo$TMO1=aVEgT*@2PsC(Q#2qxjB)&+aVEUBBwP>f2nEu2!l6AkG+oXgMH= zpd-N2kyC5xgQKS|t4`YyN{5Qbf()o60+}P?O874)c&}?7-GA?Tq(}7JeF}M z+zi{2GURHx=i8WrhQNF7olCH!a6%oISQwcpHqycC-$`_a9rO7a4YxNzn5 z&eyG;A*58+H|Fp-P~0R4Zb^`ZsHA)1gnLk_HIh(}l0(9s2~-1_LWm0`xe%9xI97`Z zX`%?3%$0~tl1~Nc0Q|BwQsGK6WVxU%Fha3J@u-p#SR*R>w8gyl*@xE_Z->G`X`(JI zHd90+7%57MhRC&nYNnK?s!2j?M&6nnKhxCaX57fpcMI?Q`hyR>-Y@UYZv-~J`1bCa zKN2rg>J+0;YPC9@NoSvY;nMiAk=8&k98G46r7~ORco8L*&?b zbERUn*nRobGrdPzUU}vG$)PTnZ)IaM5D0~mQOCKVzP2X4PAcQtMvrt_ESXRL_5a@g z^47gY@6JIimCKhab(UcV`s0a2rm+3Tdy9b(Myzr?%}8Z(h0$s;n~a7Fm(E~NXa8Tl zcyVl)-`d{t?;S+qv6TPgo43-6wpX7$H#Ed~x3+ipBZrA(HkU6H*&Gbb=!LV*-e@?L z%w`H1<*CuZ&Q^QV3+GSvlytSgrA* zkz*qRN17rSE}hTUHy2j+EmoV=c>L1wW1WM&%~qpUsgTnWUN-@AfRrY=LOw?(P(;r- zYdA&o%XH8Ak)95fcP|(|h{e+x436Hun<_NvTP{wVz{Cu@{@wk(&p!WZ;j7>NVM8HR zDphK={`|!0qrHe|Aeh~}{u%|8#SXA09u}-|k7SZU#+elTIa*@Z8OB@6Ipm8d~d{ z!9BCfX*a7?GO1Xybmsv;Vr*-*+qA~Yy~S0j$7)gQ{deb=w?o#hHg_Wc48uNHS)j@* z`+M<(8;fx@8T4xP*3#B?D4bgR%{#w`3mqRG?iRkV;F$*2Vqw#}cMygN?D_F)&z&C` z=x`Vf8a2Ct=AhJN*6U)ya0=PiDC9DU7;czlZ~XJyAAK{mvJnU=n(TI))xub;R-;J* z1g8m>2uvB;Jkasl-~Z+1Q7W<@I*cY$2zLP}E?25oB*>LOb>v+eh1uwII*i7EFAzFRWI&Hv&C}y) zu?o<3}D zDlB?84|iz*zPZUlpad3Bb;@`3SO0w<-eUAPWC?HwJ!JR@v!1^-f9vg!w#P4=Jw_D4 z27)M&0cqmK!$-bt(MV5Zf4@Emv1@!K=jUeU)_3x(d3V`iFn|#m}C-NKZ{o&n<23 z5qX62*7%y|*=I)1|6)u+i|G9KGY<&*0X*34W8i<6HMAXfxdA4F-aij4?XCV!66^|OSoPL}kYV>d4 zeC7NZbtE1Kc7d;a9z=rNOM6Msbo0Oc_^SvKOo=IqY(*)kC5c(oyW@`>#AdKW%Af~K zb(vT&*WPNA5@!Eb?7ASX*6iC89(QEJbfIx*-uvrN z5M;m8X+tOw9D;Ui>>sVIg&$27@}0;}M+-h9&tww12JCL_L&;t4gfAR*bTm+{mMbEH z$|gPSk2QYwe?GjE!$u0F%+=Ivu&^83y99+5)M|;?agLP3D=)cl>%C2w2;CK&0|^W} z@bfoczjS6GapRA-iQJN~39`h)6+qaojLT_6H!awLhUX|S0x_|%1-hM1lUb#U&8)BQ z2BL==6jDdCa&r|RJH+k;%SGZ%!KF1>i_NYxRY_>~2xMEvkMu@iC_F=d{TI)l9qg^_ z!j*)h0su)tDAls~zlQ0=$sVD;KgA!%@%-?_@UVL8!T&xGq*DMniY!j$sb@w=23LGv zfB5ws_)?)7D;R~S<3}hi?WSeIP-OnrO^BNvi7;r+K7SVeh*|MHEgIR|v$IK0&l^7> zGXrC=?ih>;bn>Lfp9&j}b#{dxEe5JlREx)Y&GDEQ!KkF#*M{Qd80(9HI6@KnbCzUp zXKN7E;UN_vqTq-~WvJnEj=%N&t#s>iFOm6_SA^-1>Lv&cKPSw1@(lXs}m6Bre`di&Z)U^bQDSHoI}1#3av0-PXp z8nyt?TF48ctD6^$MA!x$BML_387dc>Sy(x+=ZVWpr%We+kjD=N8-VrKzWJ{|KzZt# zv&RS+8dyic1=e{{=`Jw#`E}SF!B+{Ns^xO*bKm{o(;zGzjI4iNq}M%hAp~(G0G^XW zecf(X1-MRTv#O33cpZaYwC&r0OM!%A7_b_e3T1}tmG(kbVFa)%gX$<0qWJ~H6GU^Ea}=4GU6cU z)(iwxA+!*23{0Y$XLvJ5D{eoJCX*VQUat`AFl4`^o@z>db-<*m1G201y^=^ zVTI8)h(!z#qaY+FWg5G>uV9BbThGF*{P48Yi}XvJ#ZG ztzDT(3$BPzf@?!wjRv_ohmyTMvvAnlOUgKa*l+_}z0TGXsN9HU*{MbWtP}VDLpnt4 z2GPN2&PKFY%f!Jp1M#;i%!~;Ll{#r`_-{;@pL0)TPR_7hV7ZF)#WtVy5Z+BZFWznwGFe! z*UT=m3(ysjcxTa%P4|It%@P+s5xBKa*pKiST&bx2% zcqczN|Juthzwpjm_?u_o@$t@^JlQ$bg>(3Syk2|zy`SKh@idS3ul#?-Uwr%sxPRY! z@9h_HJblhyxqObFZ289@zxCYF`Z~qn(CFms+M3%F@ClC|Y^$^Bby8VDxccq=uA$Mn zCC^6CUvci>fyP>Exk@FJ&fM!8#PRN}?cGrAvxoOL)L4u?9ShaI{M@O7O;t9N zL8Fj}`TQLJ;rDm^6=if?sZhY@6$<%$E|<+kuU{ERmzfQEH9n9C1bmnw%gc(LSFX>= z4W{DzVi7%dj-QiEfB(aV*<{ljG-^3c5R2$yIH&VUXQ?Jqxn z3g)b~8}$5#x9&b3n_u355oD*HKYx;}i4(TJ`2iPzjlJPO^^ab8;RxO*)S7#KGIraF>ADi2RH6?Kc1dn$5v_2 zy~r+OwaD~qA78mWfKBl|b$M)}QY7XJQi7EaFV4y3wdp%Q{Fk`f6 zEpr#II1RN}z8TwSa9+9XvzzS(lceu*A9)G0hV;?RF}|&;+$y)ufBDsdvc4IIYs|CP z?(S4oR>HnY?dXT!uIe214zpSM=>B?Hg~M#o>Se0z-EVs1O}L6};o)GWx(Wy5U7>36 z<}I(yZnMhgrgo}qHhpQQ$1nf-!u5LrgUM_%m|l41P&2MrrqzghKY^)cWfqIMtnDc9K)`-i=8o6TBz{^Zep@GWeqYobj#z3c&y(>Q>8`rOiGBC7P?NO(vaIqfkf`q2ZCR2^Sr?KT@cxu7Wpf;my*S;TfsUs553d z9?Z$Dl~$}pE78U$#$(u!GDX??eK>y=_RqLGyXN$fOSUyPRaHy+dc8L57CBcmmP%)` z?JS6wx+g`=qBXB~ClHP&G6~($eeIPsyAQgf4drgvCObNw&a@#28dQ((uIX!X^Xsnd zolq>Ej@!=c-(OX`js+exZ+JF*fp8>|Oz{pKJ6hkIxY@Cd3$1y#_6~-TEpu3PyV2!# zZ-vq+#617-p+hwd9(YMx9R*EUdf@SHjlNu^7OA~oU0PI?b8);dxS%w`hhfV8@A^}f zus0$p)-xQcHJH?TzMe&~wbE$RspWJ199}R-T-H>Pmm?heALnW;R-Im^M`#DC$<_wF zY<6Tti+7DmqwDJTzP4z65P?)JDj z%Vi1&kM3*Lj}H&5OiN5Ti2(a85=!#`(H1;k@AOo%B?;Iffa3Gy&zx#$P2C>opPQ4b zbNPIMM?YByAf@bTSN9}fhsSV^4%VH2u6=)ifO)%8gv0O_{Tw=f=$NRdw|51R$&>RK z%n9-uf|K?8kH+BGgknHGK3)xH8gPk+;kvqdGKNwx-tQ!jB`beEBSq}PoMMfyZ&9w1vKAy@W5n)cN-dFPW} zE*UWw&$j>gtrwrI4Q(Y`95s5|0$p`{VFj5jlF0Zg8eaR+IYQn_1QV{>@nCckSGd0} zQAk?<>5bQ)Io?>y;6|D0_~oxI&TWM#Y>=hefBfp%Gq z+VtgO=W@K5sYF7y*WxLl)lMkAj{_>odB6yk@-|0+v7PSnh8Cn>+AW0y{*<1XScg%R zNRWda$XEv4GIQBjx7Q<&R3oPnWU7bn4HFz@IF}> zz=c^_6AHSx^lU#G?VemxA3D~y&kh(KWlSLuOeT1V<~L6ti7Wv7jvWODfU^@T0A7YO z3F*o6Cr>2Ua~x`JiuX<<33+{iU?iGLwZ1@ZxITc5-q%*KG)a2^z7~rY;@Wd(PaLUh zir?t#iqyAf=a#U0@a$+ZmCGL>4{gD=-M9%{b+0)+UWVi8e7fqLv%o2MRP_2SkSYiK zSg#xF1YX!Es5P8#b$|3FAQWW98tdsF7uZ?oX%xtMJdywFZ-{9iZu-ZO51Ae4BZ)u) zzx(uS7`LG@HooAq*Ov^)_C*lB`Ym9-p<-!mRoBvt8*?ZR79-Azr;xeRRcW6$)mlTL zz~xffPEfBIbOw&iB zlL>^u!Pic~)otWhaxs5-YVP92o1F-FW4)uE8LODO0L-f(+L8LYddG_|QZ6X62avR`hY!O_&^H_7 z#t2l-g|oR-ZoU)bA+)nCu40ShT$o2Gg17sie;_SHu4Uv6T!AAOFbFKt+n2BtO=PH8 zG8W^xliiQj^vPg=9-HMd0u?bA?VEg^e%%{Ka5KB$MJtBx@srM&zITBysco&#t+F zG;+C2F0R`D6!?iI-)C2Z-SCm-a4`zWF5>NPKEpa>^btO5DVdRO4U+iz{a`_cb?n17 zSJ_zl65*k9{H>nhaRF$Z-=8Ux2hPNWd?DUDfMUZ4klWTF!2n~6_J@f_`yQb_F-L-a zQ4t5oR&a7~HEguRR4qZ$H__HmDIq5_^2OUIk@CP~ToK#$q+9_mj{H@iGKKSBBpAVT!D3vJq4gbRUC_vAYb8l^4{NlSwqHHMYa+2KscV9bqVn2LH z>-Twg+!wCTm4Y}0Sm0^~TYP6Hv>SD!@LOVq90fn}6Ieu>ESZSMQZXy9lPU))=NL5X zfA{$_HbPGTNOfKK>JX~|@r;oKfauk;cD8$(rYg#cD5+4BeL}^T-DV00c5?KrjQZjd znL>g$`XM8KxEasN!D0+w@NMs`pce);_%HoOMW&OnxPd`4n& z`TIZosWVi*pK44ZV{FH`{lslMJ|zzF1b^Wed{mB|JyUbe_3+4_ZvdX({l!0!`MBhc z8g+mk(;4c#h`O`toxlGH7oX&+%7q(!k7jYE|Lco@wZ@DahPZ;jIJ)e}5Ik;I$%6VMv0q zrgvasX2TQfxqfR&eWsX&InyHaQ6i^u(eD5F73CTDIV*3e>g8YoHAi>P`#sB=!;Mej zD=JwkuXB(4#}{T+0k91K*kVOOr=kG%-x(Y!#F2RLVbSQwi3}M)5<&dT8^bePN}v-F z`z#cq-H*oR*Vn@V4{}l>(TqZ@9)$!f28jR_MiLstVK@i)QF`CAFuHHS#j;d5j;t;? za@qpxZutDjea8*Xb*3!PY1w4WOUF*7rstQPz755*&&VNMP}WPP1OlP(=yRu9nzx{6 zEV|e9$6|3JU+Fw49y!x1Cs6a5X8IVLQ)b}Ij3!gq9-=a_wo2SfSrK&x;XSXjrw28Y zNlm~+sphk5H@B>nmBwO3bQO#;b}>TaRi^ZdM1c`oAs zvRw~GAN-2&+)xIuIzx1|nBS!N;m6Y#{&-}@>>myX^xBDzSoyP4OvOBOkqVCfF-d6uk&WdYH$OZ z6s$`7@r3?@!rtkQ`h))mQ6;gar{jSu>)HmHC^<5hs-W0}Q8-2Y+kP{}DZ3=cn+w9U zu=`HOs%|y7ThmbTaV8kiVpu+P_Rr03x{NO!gY-aKq*5=TtY5o(>*3&}%U%BRJ8zH+ zBRq6tOzA-lLix0&vJn*laVq}UIB_?Sw>Z)$5*2o_aGg%Q;^dz8Xc5$_1XfUHZ{nM91X$~$-r~$)vHBm5@lZ;SK&lR z_0sa6Z{TQBHj>Gw= z@(OQrH%bx}r800)AcCLVO%HY;b-CO~kHp0AQQtix2<$)-c%Tf*4H^S0%ONF{7z0vT zeqmv;Ylv~p5?5oTS_XLu%nDjby`6YDRmgX`A2I$P3zff2$fi?jn^6?ZA@_3**1|HE zA`}iJ`Yw+%kp`uQ{ms){O{Ic}d*Mqs`hrrSP@aDC1unj|p#KBI%fq0`bI3+Ndz-}u zoV2&Z9D-2(u)1<4gRYXw45MOe+JN8X*-RS199vrE_(_T^&26J005%WJF>nt>tl6yL zP@w=5X9~d?l;ex4qB=&U89bbmfKdm4o0OO`K0#*7-X%rXWR|+Nca25+$$3cZD01y2 zFe4l`JhTBMZuH)rmM}%5L^-01ZkN&ZpdYmb;c}6RNWjVjsoP&&f-b~_aokg_Pu}Y1 zB-q_(ZhzIv^kYOV_|*2&8hbz#Z1%GU_5;h!vzNNNNCwMg0WJj@vkqaiTs$>7_{%?h zMp~cdFxwL(5m8F!=fi3o12T%LlS)6yzg_p?F|S+A^( zFhdU!e(BanU(V+w5~;9)-eWgowFFAuOvi7@ZyPEn6(49DA?T`X8OnRHoVT0pEU zP*ABR$v`OT=>!^(TS5#YIfiJfjLv5w1D??w2@8<)7@c4|jpzigu<`Hj_iR~PfI94! z96c7p6XIH>7T!ZjA4mLvKqNaxgcaZ<$hrUmgi|-K-a)69wG}M^HWpr=|2@@FP~T2* z447h*f@{l5mirpHBpJ1EQJW8hLtzjGsF_j+k}Id~RA76FyhtSyNh>Q>;1kQYzxo)R z3a%z?WP+&02&YLqJs$5@5Sa&2xSx52DbieV3GO?$v<-sL1A)895M)$rY^}OjB?Q*l z`@`*JjhTGgAnHR8i%=>&%5egY ztjdzNehnf)Iw9mrk@z@tm{P6=vHAEye~LI6$P_7yMFVk_El%TfA@X#lT(WIdD1mEp zdx`|7jXg)~3(qT`b1rN0!^=>2m<)|m*)5UeOde9mOrT?UBv2L77mAQ7_aGJPNrqtf zD(rp$IR=d!cqF1{3b~9jHp_gXOh*qWo}EsWOwY_nu?tW11m~53;XEy*+`YIIqo&B- zH4C!-TTplGHhW@v1^lj9_rYDrjQRTyn5eeqhA2nz0%(yaHhw@pDrOQWH9Ux#weP)t zo@F=l?0xJBwby{U;3W<9&2RpcwRBKI;RzU;xFYcPQR+aT=40#?E)zhLiJC@B#66Zg zrdLV@gn@;6Kc&D9sxekjK>S1Tnv`p)N7p}h{R&H-8uP3FP@CSt{lER~#m*2_);P`jI_hIaY_U$+>=z%<%_wFN7+lD3bU>bBnn>}qO!d>HpHMJ9 zF_|!_hY92=sO3iD1w|oBuxvJY>$_Y1+dH}aC1slZ#(a zIS4AOy5)@Z#E^_j1K~mGYfGphmk|LhvXiC7OW&>r9rcjrxmaTRiuFK7nq6G@>hg^R z6i)|U<(g=w@(?An-6*h=2aO$)M4n_wl2~mD)M_Z~A_??;3X2n{@*+|78R(V}cOW>h z5)FvUOGsnzdS4)5c;U#Ax_V_8QbaTsM?yrMW@_Ak>VRZddH&ErM>eweK|ZZOow77J z1=hD+dHlE`m8KpQlZT-cwAa@&#bVVJsXt2Mywy@zTy+_lx+^PSyFgJbly3muBGDQp z8-}d}j>rx}Sw{_;In*&iuUbugM@B9LXx*aLhH8nBR&H*1l9RI;%^W`-qzN6bnRE?%wae>WZk)<)cNI zsY^<6SWF@xefAB?Iy?s?x4lB1it+F~%iw_7mU#qTbOnT9U$XuIVyb&8IH?5VtVhhzQ;^46 z_Mwux7Sg~Vod(sDhBSJRfQoz!@~LF{F+i5whf8AAcLqKXTA}Maj>VUk>kTOoqtQ7k z!gh@>aruH6i$a3F2K$7BpJ*=HP%7vsZGcZ)hf2;BX|a5)vDi$aot7%YXwpH5V!bwM zW4!&+dFrR5->MPIJ)i$TnQMK6^&~QFKjH*1qR1lk5|k2d#DaQwyhE?Q%q1}P2!mfd zxom=0(4K25cFP&LLM2UV3N_o%2xg>WX0;<*LhAxo22$33v%5uUsdYv*M}N zgNQo$OjEdo>I2=7;zUW2D)4D4Cwuo64LX#pS|WKkjj)PhvA7aKnj%JFz6PZ&q%(Aq zUjtJhEgPT&S+F!+0`V9e_oZSV4K{mfl4K{4pclK*I#)$iZa_D+&_8nLHx&l zU}x;W-}VBPEv>ouD71Kh)stt~dzjKg{Y}5wLig-L*M4fXrIoVf=KoVKx=L}Sdkf|k z`}8`W{`+rQE@xPJ?9!{ap={Mf!~Ulh${oy3FJ1DPV&%Q5>sWY^?7r=7O zvuJ(;HZ9sw9!(g`X4;zDGJ^|fl{(kU3}ar~8MW8enp)G33(!!Z;UKgqblOqKtjYuV z1?9rH&%UTS=%{g~F$*wHlPXZL6dUoTO-nRFiav+}w4M==D=g8z==Vj!nYPmwv_?_> zK%86jV~IyvTau{Wd81osF^6g!1-R_KT0?i#y#s{}T!)y!a6X0>-V*N+Ezz~0)S~Rw zt|XdIO3@!kY+6wI7%+we#y5)(Mu$dM8xQ0?CJ)Z1tI-l|7*z2Ix&XvckybidM2yRhy^z1&3~o zzqPGfok{P5%4m=eq(f+?E*1_t>La78i?s$PxZG0AdYF%gifvb70!>3oxy}gvO0_sa z^98(3%jRsR8cjDx#S#zXas#7*jvyLs8&dPEEQsMGRu^buzXmJ%DiYjmv&n=p~7lg>!de_D2mG4h15 zz*U_JO&QTzs$ssApQ9He@(0U=tB@}FAUNtd3BkdU9NLnR11e+%BiRNl# z$rf))4%q~|h5dl~1CMu;SM%gn49=Z`CWx4=18q(TQeIn~Egl|0o70)bRA<&9bp&O4 zJiv~AZH&)LZ1Uu_p<0BA(}$WKK3J_Cog570F(`K=;uB(*bw}&n<vBo=VVr{;;W*-WnU5u=U@87GMx1i2J+(P2e6qODiYv%*m@>lQFf%t-UG z?JNZpe~iDpgQPEMwE(f_eM~4;mBV7)HRV?RGSsro?DtT6s%6opD!=CBile%zVrANj^fkS{vU% ziOQ@PkecC~P^Mv83wlI&gpAVevqu*ZplpTk73An2O!0I#IQPtix{r zjfO9->08N)7}MHzNdvUem7ymTBXk^-WCHku|%Ut-3ULtyCW$s5qk)eC9uSrO54I9 zT1O}ea2r(Mm{L5EkS1_#^M<)BEsQ`iF$8unak95WQ&@@nA<%*2{19f9DhYbwBHR)y zgftMGK;m|+?aHmZ-I{0c;B%OR@~Rsl-Ls8OOp+D1_#xV8K$uCQZH6CWGAgs45#diH zK6ougkVy!bL*5gux#3UCe7(UbK7KeX@FEnE2sGGewnQIv0qoVLa#Lwk+7mh~Q3ETk zmkA@mf(2GY4xdZ_BJ?#DZi&0_#oF~ax6x%m*{n>|yrpUY1zN`JP&y7j-sktFLwq<` zJ+ELX&=M2q3uj%3xg>^hm6>&fONJzn*^$vz;p!S7a!sVxW7^|T2x&!WHz4s9gb@fD z7-xg9Cw-LM;%{NZv^=Ch#3{od0!l$Rgm02W>Va7^m@`iqFs;fTn@22e5C%j53Q!Vt z+i?Bj5(}_yMKX#;1N5 z1!*d$u0-feV*C$F1gs&^AQCZ>YKFYCI6D(8Y-}dL=6G^oDaO|U!veeD$r97Pg}fQW za}#Mmt)iK8>VRRo1hbkjd(=-|?fO>_1nH00{$-(g)N${1bMDvA`F^#pv?2@453NdX*}Dw;iJ(_K-~5&b^~1w z%`!T|Bgi6_O-r)~{l!LnP*{(Z*nD?qd=-9J* z=ea2twnU60(3fK*(;hSsJ^1pNCt%oT2pDRqV#u4z)+O-AGVGVe2bofftCj^J*9K)k zIDZrqE3m18=5*lW)_Dc!CmS6Fd7GLehPee03e)skWjk0p#<<(?Wvk5uZctkVzU>sl zu`$CBIv{p}zLo>ll0n=e$+gPSjKNhl6X-$;K!Gv#Sk>` dhPhHALi8;mYI7hAmD06c6jJzd6@SZ{`rl_hQV0M5 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dugtrio.aif b/sound/direct_sound_samples/cry_dugtrio.aif new file mode 100644 index 0000000000000000000000000000000000000000..dff573dfee11b55989b6aec224d9d1c4a20440e2 GIT binary patch literal 9686 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dunsparce.aif b/sound/direct_sound_samples/cry_dunsparce.aif new file mode 100644 index 0000000000000000000000000000000000000000..454617c057b9109a0664d04371d0ca12273ad9f8 GIT binary patch literal 7926 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 aC;k7cMay{tcs|*|LXkx!7xrKQi2nh`c5(~= literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dusclops.aif b/sound/direct_sound_samples/cry_dusclops.aif new file mode 100644 index 0000000000000000000000000000000000000000..de9657e4f705a104597abd4a1b5a649986896b58 GIT binary patch literal 6858 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dustox.aif b/sound/direct_sound_samples/cry_dustox.aif new file mode 100644 index 0000000000000000000000000000000000000000..56d8eb336c0e7ec2428ea7ef681f28a96eef5af9 GIT binary patch literal 6338 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_ekans.aif b/sound/direct_sound_samples/cry_ekans.aif new file mode 100644 index 0000000000000000000000000000000000000000..9eb39673515c628f8ba1fd34d59675359afbf10b GIT binary patch literal 9626 zcma)CSyYu*n!O|3dx6Ugf;gZcq9~|n#MwlRNkkJ(QmItMtgIfYRl{KN_CP>(y7GCV4_BiibE7<5d=X&21RAK%-nhEy}xt*dojuC)#qPw0q;Hk zf6n)P``ddTcI??(Z!(qtcI$IHc09AE9^adCOlJIMr^&G;{i7}T8RNO#`(DON-UgHD zH|F2qJ2Nhe`nqr5?rnJgi+rCN+|`2Azx^y z@q>T+;IAjnx88GCR4iOjRGhtf_oj6#7SEeqn46hqw^=Q*Xe1m81%tr=23~@pU?>#E z6$`~49zK7mw>fNi+c&JOUNomDKRd(8SUotB%Bi)gzKO2oi!ZLX8$*;dT z-E^z#o_q6}m6hdqV^(IGD~0#5#4M9%&tAFJ)jK$lzOklykxcD&IUVXD@E8q88ZO@K z?aJ7+x^`&=Z|u%+>f4y&@zdWlUb)--cwpkp$!l%B{Ua0JVAO1uC9Pdsz3=C{c4A!% zWL=K2FMt2um!~f^9Q~q!y8pHbS_LP)Vb=e$ax7B}62mG_;VN16^x8qj{NzvBNC{r%5rXRQ9iccosph~O_nE=XR?^>Yc?a1$|R8x#aP3)4HvI=wmYi$ zyMmNP1hBV%z%#<-Gn?i*Va9?T#|!XWQ|*g4t)FFwYKj2h}Co; z7?pIjSS=}*l#$ksE_}r2jom%l+=gg|tKN9|g{SMPRc0pBCl-w&5sg%ggmK{qUh%N4 z_x+DPId-=BZd&!eXEsX)qlWNVBma#La{`Pg;*E&QWu7>5`TFg(+yEwVJwf66R z#f?FnPzWguNjT*D=9|-(uC?6`EnR@^%1VNwO1;R`IoW~1p{WO71IjxF9?x2Vx>+!{ zXjWc++qJek_lJk9wKLO6!=dC;JcbMT8$Ugsmqr|Qtw&sd-C5a9xNmdY9cJbH67&OL zfUz>&4~&iwj7}due5w&C-1zx7jZHnh0IM?x zkE86nOe+>MalPSiJZ6cdj(&0U;?>BqvhtESSW&KIuL2v5fPg@0fcP5C*n~7^hGwK& z?X6eOz5S;T4*|;2rN+jC0Y_b88*$iKPm;f9WYwgCm)hs1d-~vtNnb?G=oj@q0ov}Aedj;Q73^B{#1uPL= zZe;FL%a@mzp&awENjp%6Xe;TMD{jIzNF@=*P&BGJ5U&!+Xz!D98TLe$?f>;Je)8<5 z)m4Db3{-3Tq3@8I_XvTkL0t|;HcLs!EN71m7H9XicMLSWi|xIMAg@}vvajfGM=hkY5*X1xKl6jBBvfl8ow zmE%$~BK;7zRk_xC@g^E60bo+#Ip|!s26N2Fcj7E~!-$|a?xbI|{D z(Ztz+5b#za%}8{4H9kzJlkSdZkQ|Ac2acXOk5E3yTdTnxP?*d}=3&G%ep>a3p~Cem zxeRpsEZ}A8MPx(E{cg*umF#PJZs8Tc8z8gPQKydFve>=3dh_4>^FO`0 zM-r^q*V5V91MooQlanDogaU-Z>?iCC3feJYXUpx>!h)Qf(eC>o3uA%lj40tT0)Vqv zNjAVXjDa6Gq@~-exMGDn*9y89ksz7veWx1HEPMOdXG%%1h$T|fDn7cgDOjo6uu4}w zC|ERd^3>--SiH|Ie%*285GoDOEKNSF^aJTLh69(& z3>*_e5O7qfWLdFp1rWN#+VkMSW73TOgFAD<9A;rpOn`E!=7Ekbrm&)s$Xr91P~gZ2 zdXKR2-R&M83N2OY1PIV``|g8VU!FeQ;asq94-;I|paj1I!r=-=`wv0cwBGB^TwJcx zo12@`Mq<@@pfla!l*_>tI&6!#VnIeNDzO9Z^F@O&gX|@XPztDjgMwOCZCJaw(vH~y z2MD#mhtC^a0!ab5O;59=G|IEzohmCYpIr>#(#j{HQtb5UL3U@9$uK$eu~HBi1j#P80e56#V7{K5-tM$#K| z63}XmXKr~)$R3}^(1IcaDFrW`e&@IEeDry@CAMH?rNRV3bPWnDUgC>E8B|!Mc z!+>W&=4Z5jTmKRy#3Z+n`*h&&5)pe5{I~KnIt;zi6jM%ScFj`;5Qb}cq zpqyM+ZfF9)tO+*PiIwUrR;aoKl{lX}8uKn9Jt;&`khH;oAL9LwAAEg+q}#g)eUNlS zAt}<@KxFO~>fTYMG_@o|+%$gheT^zodmtAO?sn%mkal7+9J1Edzfu3(It7H8lB4Rr zB&7cE{RTxj4gF>?6osqtS(==ur(3zTn$>&J2_un?rk-vR{jvFF6gNtX7}AkVIyp!U z^)Qgj-q&o&DagnUkbHyij^(00R~qaon>t>VbHMNOCWeog1W;0JRUYma!o$$r1|bxs0uDeSMQ0->YHaqdo&WgD*Cg5I7v{2G zgh7uM&B+7lvBtxG|J3yO^mmF^YKCTTQfvSSZ5s#`+fEwWj_T-yJez&Zx)l?BBrX($ z;4P-duvczTYpc7H#MoeE2;TE6jT3{!P5J_rX!lDO?09oek`!R;Kt_&%MYOj&z$2v- zK}~6#!mg66@`|1U8z3CC9y|k8G_hc5Ma^4SCLN7=nOpu=g(Ejp71Q+8+RaSV#d8ui~OP>NeI%#Xhk%;ornf((qvLIK3?3i?0Ics_Ztj7rXNzx2Lmz zaB?)~nN`{%(~6(?$FxpdA!`r24K0-77r@&UaS-SRh7dgP{sys5_>5(gK0mM}P@n#z z(s-~C=_he(eAdt4p|Fp*uE^tve)1m`xj`4^kSMc~Gcbg+xp zX-*i8+60{Sd?pLl>PC14+JNmm9Zcy$L|NpMBRwr|`~Fv+-%6HWn!Wm`FN#&6fE3Uf z8WL&OBKuCIsf7}Z11d?I$$9yIjx^jros4_3wmy$;Pity+&YIVs-ysT7Bh8Z&jbS3C z^Wu(l$`Pb96)G-HDQ;=k!$)Id@tT+a<(IE1o~h6sfK1V0bP%WkZDY{Luo(UY=&wP& zNKHf5q2r(a>$~KJNJFTB**jtIa$*Bu+~;M|PmJRl@wFTW zq<7pIymJKID&da-RP4Bl5y;hEbh!JdbFrrqE{n7*e9;z5+|e&JH!v}h{qzdJDc~Tp zNkIeOD`LMuN4oXiXGkWBeIS$x2u3|1GH_N= zR&D(@u|pGiBwUZqoj@GYh%PRADJ~d}@$}9(vnB!2lu4FY^}cocf3<)2rqy5{8hpm4 z?tTitKs5a$RGDNXJW9-^-C)Duuni}39i**v`|8@V^8C6t>bEKXAY=NwTh!Hk6JPz| z6S8aVO{ZmMX1d)O8OX~tm&@q{`=l@u<`Fr0?Rv~j6mzX70*G|U^21;k7a_@Kw6B&h z){NLEC<|6c1~+eZP76pCn!@n(a7j6StKMNO!YR#5GXMLI5}UMKk&e@sDEvk|S+!+Q z+u1oSS_JWVG)`L5Hf%?Y8-~2i4!2uZC_S8je`;!M>Ku0VI^@nhGYK2X6Jky)0bnkA zQHzXd&~lDmNT9O399>MfNz&O)wWi*Nzx4o(*jofh6?tXYsKm**qi!$GPMjTmy>JwV zMn`-VC{`poN>wvnoVoA{-BykzmPT)#W}w}D;FGVuO=5B+Jg<6DMPbcb zFY$DP}J+0uQZ{h~C@2a);n809B?3^59n*Z>s;8PVPWiD{8OOEQ=S6g@pKvf&$| z#6fBd!_90etF5V;Zya4@Z2Af69odjgd|-;OZCKhm zwjJ_Y7!pz;b*Z-1c={y9O*dnWo)gH1iO4e&F>@Fl_G}Iztg`(kzcPvOklvz1`ik{s zGCh8vJ^M@%n`$O_4AIiPKim5>c?}?s#7i=WO#}33Vsi9~w%!5uiZ+Z$d+>#VIjGqD zZ-4*gG3e+A9xwHUiWN;l8Hkxv0;VD+V1!QDi(cj~RJuSPC>g3iYXKuse&kh?@^IW& z@ftXzc)5mHVz*P5e=2hF51)L+V?vS-_;ci;upAtCAg2rYwEoRK?DH@@j224wCwX*v z5Iyepqlez+xBvS9D0?qwiCI!yY3Uj6%&hF3Y>uofg}F~cE-_b~xe-03bcAzgY>Y17 z`}8J*!Bh09y7fcCP{TYSV`xJuyAa1LGLmX(Mv4CLTePPcBhdg`Ka>V2Nr=2t5tBXP zz8J;Dx=O4;D^}M3s$DxbgKZ%>>0ygLg#;705y1HiOl?KD6hGA5AJdWab7=EYO`g~z z*`k@UFtHxhxY1{8-rBj1r!VSY5a2FQ=c5Ajd3}>#^MsqGuN;QazfWbL&t29k4 ziac}mZhZ!p#md#?H9bA0hL~yMritgCG>4yvbz(b=ZzPlWWM4PHaZ*RvTr+?&Egb{P z#=_U_e`S|CqlZ)!dqH;yB$}~jU_;-t=HzVK1wQz)Hb9inqxf zj>Qd?r|L`ZiUR6n+%-`KRo46!$P5jc2nVN645JVXK@S+##UK&Vokpp3T^c|3Lb$+C zsG(j^7c;-%dA$CAyq^A8955|kwRSZ?BPDZ-k{L>UC%04t{&ckeBS6lD8>BSo6Ra;| z0@{IatBgZ*gPHx{U|!KJRS*B~uVh}JbxMfIUt=WfH|(OIitPW*i@$TdRIuR{& z3Gt?9(hTCELUlvzm4T-%tuX%ng+`15a%6F0&>A4h$fm0eSNk14p?r%0V2Z(XNdg2Y zQ?0q%g!AgjlLf+!!BCDvVqyhcN?Gxgw-X0oJR`%OI~d1EiK$ak;rl6xBWFX@D@h-N zu6`pp9#nBZ&LtC6M=TtnT5wtue>((vM^Y^3ep=q?Tw(@EHKL+0bo+@zrfDnL=*Tu0 rLy|;HB>S2fp1UFPu&YlFg^|hM{UCAW=89rU4*wV|%=jH2FmC!^S_A|i literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_electabuzz.aif b/sound/direct_sound_samples/cry_electabuzz.aif new file mode 100644 index 0000000000000000000000000000000000000000..5abdb49b7ee5efe14b1b931c3fddbc02de7ba96b GIT binary patch literal 15380 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_elekid.aif b/sound/direct_sound_samples/cry_elekid.aif new file mode 100644 index 0000000000000000000000000000000000000000..839bdee17160a0985bf0b17fa3d8ff9c059c7623 GIT binary patch literal 5284 zcmYkA>2n+RdB^t#7FgUjK!Ep6Q4%Fz5@lPmBuDf)mg2TUwG{md{6iZ67O6k?9U6odLBRHk#mwAFw*BkXcT5-5bbRTURR7;Bc;u6-y&w^NTcMMz2cIVrNY$`tGyYR-V$tRNx zF+zA(ZmcXd*0PD?!bqX561hI}FM#Peczp5FgJ!+cKjbGnt zIs$!xi`QPdcJb`okkRSw-(0$Rdoj(WcabNen~z?3V>UGF;KHt?tL+NwnvCoTcD~Wh z?iYJ&H?P0*i+4WzA92Jv|HDi3^H295A4@XHUZdylQN^B2`eaSeG7K^=cjYeOwb^aP z;lW{6CkxF65qtdJCtv^SH~;bHTdw4H?F^Ped%U3Psj=kX=wLF&ALdF$3U{gc zLd{BpCzx_O8VuAMME>K?zsxT`pv`)t-8l^VA1vNlx%2IoaBe<&@>ud%5Ig?+XU|NX z8B7ii*f`vUv(@E2S`_Sc(~d(GH$T2{Yvq1P?8;Y-;Q{&Ld)&Mkf<=dZcP?cdsDea^vpL@BZgzX45#VSwe`2*RyuHKH!Zl zoLM-za56d(-T2+%(zn@6zFc8>9=YB)I4rvKs?-?^x0hboDPzO~pyV3mLt?cW4e|Fk7J(T|K+Re4yZa(K|HkGU%_EWtg!t52H!gkc|bLlRg zAL0pqLt~jT^yR0g*}?VrAL{dXIWi}9B(ym4V}Xl#7iKjepu6+_pMa-P`U-;?D+ zMGHZ=4AJ0Y-U?gM2ya)mDqLCo=l}Tk-~Q&~dx+qz^9y6o9X~M;8Hfb>XvUspIlYZS zpiNI%HS4CTsf^ub$6{5zEw)`uTjyBq=Jo8uor82Md}iu}Q^WlzxV`|5d^?2#)zf=A zr*o1COW{#jCEAo)Sfq|c$Y!UfsHVs1q;_|As?BOuAJj>Q+o1&dqNYdU*ie^<5fCWh z^_XfokC1CdhwZoxx6v^a!`nM21v)fh69;e5dNJPSVyCZp|E=;GYbB-n% zPbrWT$+}Akr-~55P-SJc;uW?`2``U?-O)2OCY} zSQ-THhexKr3o#jF+A9xNyHZXXKVcHy7~k_JoZAF~9;hQk)yz5KNXyoi(1%RIk_YuL zr@I(Ca!%ZX@t5`L#qFE>D|h6F?32%(MSaG2zmJ5bI0vcs6k4H8 z6<(zG8f~U6_hfD3XaDrG_rAEj+#0@ib>Z^4)6K}jl_Ah>YV+Hqn>&;irJu^9;O7=yA40^1rv6^)~qaIyg{qfQ5 zC4``MiF==ay|lgGSc0wJUxQ~oJNwl5^w4nPxqnzV19R<5x&#+P3%Iqc$q;o1niE?! z&K3iVj&sJ+)S?+b%+aKLt+s)_8ea}C2YHoHa?0@0v3um6096(isT?~OBu!F9s zVb2v!hDdS2SC2L`m1?c3qwVOQesz28ak{L|T)H?to*E0E`SBYUo_%6;HWl*O1v_I$ zxP+;;ng<{L_77h!ZKGM#TG#>nNH=V>jV>v)&CdJzq08syXNJd;uDgq0ZyZ?V*@B-c zC`4-oMm0@>VHui%ovb@dE&|so*To?%XhxIv+_87(5yBaR=QC{ z9e5vnfVOcS&epZj6zRZ;5~R*i9Gt9cMaTp%y}EGnso9i!`S#-C<4v>>x!uSgot0ux zv`M3iXnY5Jp)7yK+7xG_VeD3X_&W2WYZqrG`X>rEZvF4w`=#9Bc15e8^Wo+=YxG4G zdok@c4thGev*nK((Fg_`2!-^Kb1%JkY3A6ZcLh!F!Tn7!lW#Pj8ps_)rE1u;WoD)w zp>PhT1KEM6*t*1slR~GK5zz6!y7J8Av5_E7UQ==I3gim4NUd5|Y)MKF=GeBBiQbMM zt?TirGW6ar|K*qOeR6-L{o;@R`lYjTPmaM6{XQ@RQch?xiIs4x4yXkem_%2!R>8YE zyoS&qk@$dIbYUipE`Td>T0otE0>;_nLa%-&?gj%)gr9CRiym2Y7NKVLWjQp z$tT-iu2#xSx#YGG>XQ%l8%<@K7#SIT_PH@C@$w5-kDs^_J&9^WJ$i+u>r3cb&5go6 zu|$LG+#NL7JOqf-L8^TAYyr)JtEQfM{Wa`;s&xO0Z=lMpY4-~llJX}2Z9d@K^!W4h!~LB8>A}w3oV4?ht!#JDH+t4xyxrY=p#lI= zr12DL!{c^$*i?TC?baAFY~D&|j2c@we=<5hW6AKtMP+)NE}{9jOK@yhKY9#@gqmtP zV}ldHr_mG9-O3(xIYn*BKCj0qh;|v2#fUqC zMRFx2|{ga31JWfx28+ zySd+kmU{cXLEi=6VA92d#0R6Ea$k9?+$YR#zn2`e>UhT;3HWQ>-OWreYHoq0nD&;iC5Y_?kSrF$zwM0! z_5heEc}{tvCtbz(6lNvApZ5>NAVieR9&O8@qm4^dY~Bmv<6YZ3cZ*S^|*nY&4J0$cKJ@(<6cJd zr!lYqQsjETk#l^r=~U4_+!1j^%mgte5Sq{zh}a(OJyLo_!C3Mbm<1Hugpv`LP#{Og za%R2ExR5BjtW~P1I96Q57_y90gEiQ#;n9e=L6(>x|9^;ZK8yuneQA4@X=e|^{d@Rx z@c#*%`j$YC=P}rs1imJ^($21DqEMv3&HdPh;bz?_^zBDBkdRKsNk@FsiFn}tk+9!a z&1S0{Iw;0a_{ayVT@0c50_kuxr+lPCF@^?xB#L{`x9^iN$cBWFCJ1)0hi@PAQ5SU^ zu#PK~)qz&7us=ZWWialP%ARPx3lI|{m}5fa@Wv<)CFXh(UID6Z$Hba9AZ;zcK}GmB4IquONUFR7`LKumv!xsX7ypsJXnm3EV69B}$3|(TtzKY=k4hL65)#^U=Ym zsjeR-8H1xV4*5`i%0JX}e3wNIQAaoUo|Q#14moEwH%oM>q)aO%I^ZdLCMF63M(-F% z571T72Kq6|Jw%OyC#?{Ha9*1=)C)_*vESo2ngvn@0$5uSycqH# z0i`6;iek+jEIAs2QJ2vP0IKjOx5EwAL19>256Re^@Ou~ohP!Ho#Zwu_tmAP@tOwwo zD60V+w%z6o0#+HuBApgK(XOdPB)3!DA)$#1!p6IPzQOx@$PeNpx;0#d5<#|i$R-9G zSUB1V1{6Cg8dE!oCPHCy)eXw}ubtJ~Ss>w2>oUMHKtPcO7Y*GtBmq5B=~1)|W4Ve33HnoLv@5KsVXpt%AT+A@jf z1>j#1g|b(NE1~<4vfzcSYM4J20G`{xM1nhDT13ak{8g`Y3DO!QaE{1c9mTh96~A?O zbrT%Y8}cUrs4fPkLK#L4gvz2}K^l0jVm$(}x;J)=X+CDD%i;nE30Y&T$+O~x+Hq7k zWjw;bAzP1?EYVsMJ`8@qEM~ULo=?|MFGHVgGvDb uUSu1VZ#_*wZGrr~up9`IO86g0z>q5Jkd*DVqxs+K1JE;eOpZHM{r>=zMq^h1 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_entei.aif b/sound/direct_sound_samples/cry_entei.aif new file mode 100644 index 0000000000000000000000000000000000000000..56a740207b85b8bfb87c58f03e6178262c41bb3e GIT binary patch literal 10198 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 ZpY$(iEy^37jW%2_N>*|dy9DUp{{UFLIfVcK literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_espeon.aif b/sound/direct_sound_samples/cry_espeon.aif new file mode 100644 index 0000000000000000000000000000000000000000..53dc62f4d81cc72b4b5c49b3406cc8e9dbdd44b3 GIT binary patch literal 9828 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 Mlu^a>x^aMuQ^q+z4`b@zSuo^$TGbM4J<-J&SR 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_exeggutor.aif b/sound/direct_sound_samples/cry_exeggutor.aif new file mode 100644 index 0000000000000000000000000000000000000000..c0b9177bfa786c1895ae2aa067ee394dbd738be5 GIT binary patch literal 15880 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_farfetchd.aif b/sound/direct_sound_samples/cry_farfetchd.aif new file mode 100644 index 0000000000000000000000000000000000000000..f1db556dc73aeb85b375245a6c51cdec50c9a06f GIT binary patch literal 3766 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 U%9;W!U#wpJjZ$G9T?#1t2l@vohyVZp literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_feraligatr.aif b/sound/direct_sound_samples/cry_feraligatr.aif new file mode 100644 index 0000000000000000000000000000000000000000..9fcd93cffd9793205f3aada9b8530ce6bd12791d GIT binary patch literal 12712 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 Pcj=Lcc#*_Q9moFz-zgb< literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_flareon.aif b/sound/direct_sound_samples/cry_flareon.aif new file mode 100644 index 0000000000000000000000000000000000000000..58d28e60adafe19d19231d7f8c628ec4282edfbd GIT binary patch literal 7748 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%0D+g&Oryt@Qj7FbDwGX(2d$#T*j0tQTp)rQi zIKU}v+IVI^h*zUvfG&#ni6wTy;4UC6i0brxHN+OJjVJhD5kAt{`4GSkfu%!#Wb=t7 zVouB5WyGS8!52?A5a>sBAY^~o4`?6mH|y-n^D(*y2Sq&aVh|*Kaj`o^HvpPxfMHB9 z1xZBQP+6#W=pN*}geoKrky5hlI0Qqi)*>o)hGL?1a*15hnRPA6C##FqLlhp?z4P$=XZ`3_1)o-Rl180Lp(3(Z2H$?A>i(Q08o3_AsC z0!rz1gzAEf%^ot9P=IF!l2UJ#)=A5mc{RGH(gVfg#vYXBN-mL0#1jb%Dx|!$9DgOv zsYIZgB)GjS8ZlQVatB@X!PXin2vaZH2JJzRje~LEk8xoWz#F-lra)w_SR!<6!2%P( zP!Ke&46HQ%xphQBNRWhkCbezR1h$~Yy3JaEC@w;7YQG!(0*U2HDU%|KM1xonCv0?$;z(ofd zD%1-0Qd`Wv2q;_J$nZ<$ZiX?z6p_@exa<;isISiN$afG+OaKHR5V6FKm2}19MM9Kd zDw(iW$cJDRy33_5Bn}>WR|~Uvv_vZ>z;TI~B4!cdq`Un8OJrce8+fdOD#7WiL$83z zUN~(50x1R2PlX~lnA3JBQ=zbag;9}7!%S#x%_PEO<9AEc$3!r~)NG`}X+!Xft0jSz zjBbsVyR;3(?t>MG#prT08-PTKhd`D>rH9#|gee_pN#8cTtK_0a1Q9Jo!Y)hDSmipV zgW2%s8?9^-+!R6?=pBhxiE)l3yC zf~3yV1r4PNPh|Gl_`D%7#0~Uqx+h)15{+67XYl~hB;kT%aXgZNgfL)SXjl^2j3)+B z8e*@a^MKn~bW+gJ8nT#G5|il$bTV?sN+errVN!LFxo#SP|0)@gBG`DLAn{nN#1hBr zCfrUr%*SfwVoX%BMaRn~2{XJ+kKuuulqyZK*d(<)jprkRMm|=90MikDpDfj?G&~HU zZ|`rHN+CoOzBohJOty5XLp)oPsw0+ICx>`C6A!Z36IU)o8V; zYLbw&W4{UhM}`mw5wcUU6dnWB8F-+fH>I#QOfG~!68mCSsTAaMwwy}nq-5}xP$XsK zK3Yjxg74vTY&}6XXpu&xIHX}+{VRUUu)-Fr2{cLO#r;UTh9bByx9|t&^ zLcE@%u2fNIK95&B4C2sCnj?r*s7TS^=+b07^AiKp@XVmhmIxa4cpASK@mQrO!up!5 XCXS@nVo0HjRctE^5*esiZ#4f8gk=E1 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_flygon.aif b/sound/direct_sound_samples/cry_flygon.aif new file mode 100644 index 0000000000000000000000000000000000000000..c8c3770160d7668398e10e45a5892d119cae4aaf GIT binary patch literal 12974 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_furret.aif b/sound/direct_sound_samples/cry_furret.aif new file mode 100644 index 0000000000000000000000000000000000000000..6b4e9ce11972372d9095745897854ecac2e445c2 GIT binary patch literal 3168 zcmXYzXLB3Z6^7BIZM+)I?OblVDIZMI8DSy}hojP`CsL(CE=Z2s6Ja8YM6xxlQYDkh`Z0xk5FBVV zsj*6_P)e1hVj|8`dQu)WkfcVVu6!OfFa`r@DCI~EIXWDXInu!BDIF1Rl1C{M!}ecP zSjIpS>UB&t8Vz*uNT4ZNIEqHPb~8s)%KZ~56HA$lwSyss39=auh6y9bY7dX~jGiQ9 zYj?{G%h7ZvP{f_ZgesBIaV(?P=R@NOrka%Ty2*%Ay3p4dv&CZMs?SE^h2r{7%jcP~ za&+W`GEc%2b2B`dwOVL{WILB?Su7S*Gyc@$4j z6lqJVSgmq%HfuW_zZGZgF1lDOG|l+vdtbzAo+XqDCzGR7+VrGSF16=<9!oZojf4rW zPkK_$%jRc1n$Xv`6WrXKtCG&=tg}vPE6^#cmgarrQPE+^{`-Et-JiLrEY<4mx`~O^ zB!WcHTv-*c*O|4Zml%$Q!q9lxRjK~Cg@Fr-RX{#8${)oS-^b(3;5 z#>;(0Q*AaLJRPpgHR`oidvaz~xc9FEjpD)$3iJ%ShV!i*=~yaJT)2X}>TP`K++aAE z47j)5)#mmm$ND$kk~KQ*e$R1La(_oElURQ<-)=R#&Cz&#`t0I@#c|xW8c2QqaU^P> z4Qh=-9_XlKYuMIAktPVWTwQq)*%D}Q6P{2ywOT&-K0?#nlnz2o$acd7HXbDu`r{ZA z+mSM+(V-T&P)ceG>)~yTEnlz$679y5xYurDSc=}37?|?D(pj#!rlo)@IN@0~t~9;8 z^T#S^U>WHNMbT8@r*2kaHQ^~_bFE2k){GWpgWVXplIcVif0)O6Z;!x@FpV>j?f%Sos{cwrPF3LFunaUQ%;$z zhG^1=8^q^7?%3>RaN9KVSm5)o(!9%#hlr(2^+PSN2h2uJ7Yc*zS*x|ZE3=y|!dB$7 zpSlZ+)?7AMngKuY_n%hSi}U^|l0H*v3?xPJJhfOVi5r*Mcp=mA&&{&&AKu5dFE90D zshDEH>yF(8f#=RF+48Yenje>)1I*ODw!EwkX4XCm6KCc#iA=%1?DvZlny#$AqCZY! zRm+2TI#aE z9N<4;?pJe-CIC`i>^$xaCW5efRg$fh+K-;&1Y@8fJ9oB`4~c92t)Wz_wQ9y+dT_c1 z6ZK^vS*_Ivy1}q3BI$hBSuR)79|qNzd#!e7&|kVi6+Zq5pZew*%xi;gJ{Xk?a$)tl zHeD%CPfW9miL!H-y4l*TPfw^f^{sZR*RovqP3xR*`4$&kcEY&-kA0qd6UL4#)#Xq=_-5%A(NJhMf;~q#}~KkPb2(;ahI-ENGxR zC%AT~Ww|{C{Do4Ht$^IYv-~)uBWQva?tPQBSWPCoXSd4<8lSB_Nb~cv&Y98^ zND3mX-~KwJI}IC|xy0QvoRhV9#+y?D8CJIYC+wlyWjANmGH{v5TsUd;x*a$iQ7j__ z-`cx-r5T6FzWm{zAGR#w+v>Bb+sx~qX9TFr?Xa_ecSj1Ats=bzyMu$GpNbnh<+oU% z{LtR_kxErqU74HHg%Zh9yJT2&S2NY3NT{Q?f9rmI7E+-jqN`7No8cr_8J$|0gIOcl zgP?kO#Zk-_v!Hd>S^n&HVz{#EpH9c6Nm|>V8hdG86mb|(drujYN%XT-JUaTp4i3O8 z3k!-Eh&EdewX^kHsi?Ss>h;6pPwtdNXO1M^^Wd;`^li@iGjCJmtfN{wUHLp9m&s-G zZ(^(toYRxp38V-cub!6|n&EFi;k8)^6mX$p=}u`R5#;_$9Kfs(f&sa|)9Lm`JqIY*lnM*hw42TzMcN+hss2~{I*yM#LmO~5<2O|^GO=Q zHWH+q1Z3GQVQQT*FE)C${2}b<5SyrQL_*1c(wH2%F&+G(+iwXo;Be||QP^mE3@nGy zPC$;}@TAXji6M-vgS!j60kkxXD)tn5yQnZJ`o*muo2Qpac=Bv9NQpjm@Z-i zW}Guf0Q*45V61J9MZw#wCWh&)#}ok2YSV>Ys9d5z$xT=raliySAM1I342P$WCFl+? zb9o~X$yywCOb-)wGrB_M^Yz}MPh_;ci!(ul(N8K78qjmJp|tn#SP!}_nu8+})MIte zPo$V_&IF_A>+V<$I;k}HGxI)E^r*Nl8hN1`$>v~3yK8vo5qkCMrTLlCaXQuVwTfb3 z$d{ei9VQkP(};HgD2rZ(YXDYVEaf+6PBICVI%z~+$QPR4Q(lCCz~3Kt{L4$wc|P5q z_s=!9B9%tRhG@aYV=3Uu&-X&qy&o}(A7ia<}}MY+-td+%#H zXth5;z~B3b#SU(RbPJ?W4z~Rv_RVHisKeZpj?jVMuBNed$V0ZvnAaDXvWhZu^fkyepR)dEO zsi}xPGY%x&GzjDyA)QUS10&;k)Fk`>UKTxCL*Nj@$I%*j;6pxFP!oQfpu0LKh+ pEYcP)uB^P@V_1eMpL9-MMiEAnIubMoL!^{y5V;27WZFI?{{t~lxXu6o literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_gardevoir.aif b/sound/direct_sound_samples/cry_gardevoir.aif new file mode 100644 index 0000000000000000000000000000000000000000..a147809903d6d58a9b9320be95ffbc6a7f854e21 GIT binary patch literal 12154 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 P$I7{eDSTO=Uj2UnB-izQ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_gengar.aif b/sound/direct_sound_samples/cry_gengar.aif new file mode 100644 index 0000000000000000000000000000000000000000..379b5d37e55bfb6bc4d69397edc80adfb8ae3088 GIT binary patch literal 7372 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 AHUIzs literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_geodude.aif b/sound/direct_sound_samples/cry_geodude.aif new file mode 100644 index 0000000000000000000000000000000000000000..143b9031ce7874e25318d8decbab7f58f1a8c9e4 GIT binary patch literal 11816 zcmYkCcXOlXmF1B$KxBddGr=62?5u97yJblu$#RmzX!2kCHRcQK*6!9+xpt>!XLfcy ztxy5^a-u%|P-{*h!8xqOiOaGpKNqNc6e!u(fx4yyk`{FwB zBb~l56#T>D|5}eZ-3WPTz!zsCJ#y@f9csdSye_Om9+EvyS?@D$6x--m)S`BTkqPADvkQK z-ZQG!2a+XgDK{W1jSNgWYq3v%@i6b!xnHj5c8xVvEn6&jzG(;+{}?KjLZy*!jf68F zoESs08Fzm0)|DAqD0bqX{m-ApyHqW%_M&v!G~dWS%*QO!>0$HYfnsQ^UCyZ4lb@`q zoJP~2sk5v*U6(X=8WNVP56m~F8hyHF@ij5a_Oa34wqWQ$k^S9+oJpze?PCyAj_DPB za$k`fN|la@enU0BAK(Awl1%T_PddAtwUaFS=8rQ8Pk4!$Sw_NgX33Bv*GERn;ZQ99 zVSw{pRdx=_ZE}NAYs|XDG#fhxhw}2cSIj5z{FCUh-Q~LA8Y-+P?B0HV=pjLHyrSs1 ztQw-ipxpxx#bWPQDr_()?F_?Xi)=y6xeKV8#K;e;3-jH8p%aWz? zq4ibk;nI_6PPwWywVL)$bv9ipwr6_frAqq!Pom1s`sCF=YdzITgVMdZb@kPuLPZ~N zWp@nK@e9Ve&*D~#W@E>2b3FF6tlQdN+SX70-FM8s;%c$j9%+B4eRt)!+HIC36Si;M zk}PDl*WW*`j=z4{%8H`N(nn#BEELYP*6Xbsm9Fkb=?%${`5WE>bN z$x5{z5-0HPtMV^betl5V_8!^3VJjboPjy;j=#L?{wCLL*+gQ(cyQ`Z)pFERj^nJfi z-0(Oc*^PEwww7elFY5lB>6J!bZ%QY1GtUV^M=dYww8@Ri(cMHtV&vx zR5C`cZPkoSt+W<@R%ukE?wJ<7F6HPn%|D#qZ<&$RO?6W^qUbP&((!bk&dpqmrn*|w zQ;Vg3dt{Th8ytrI_Kwn%=nAXJJFYoWo7&!b>)=!}y0W{O>eXKFu~?)MuV-gt=l*Hy zVBRfthYl=`PNgGtsLa)KOEOQZTCQ$&)>Mxcw0@_v)zsSE759f?vDD`3isBMi3>Xzd z7f9MipRtIkiyo_`*zO7>wVO{$vVED=#3iH*!4%8yeH1QtcD1O~=5BR7d>9UG)tqkU zK)=6UkEio33(t29!3BwTh~S@=>O=qLnB>8z#n>?`eboXdnc16eD z|C)bR8EZGlZLQr0rCMEf|L$k&WnJGJZ@ag*7PH9!5!pZCQ0AhH7|^%eYL9#zX_q%7 z0oR+aDG!&H<+A(B^1)l}gi#_RFV`nWJv)C077Kxbq^*Z2taaM%K_ulOH&(7`T zPXo!Gno3<~Wu7jdxqG;~O3v4+%4o;8-qLOD2?Tk#&p2{fU6z)~%cC##T9;XNDp&Ws zGWiNAKc5aQE=s5G42K@hFXv+?Ag%87h}3m=a+kJgscb1{3NLX9iwKjU?Yoi-N9-Z92WSx6>5<`N#V$T`HM=vR+;7xXby*>F-Zqcm`(Qd4s=96`FtU> zu&KT7R5{(ifq9X7Tbr16OQ)q@q?vk`Z+-cGCR?lbYTG1jt`--ep6uyv?M^gY)D}&T zkQZQf4)+QVdL)FpgNZtFVx%yhvH70QB!gVJRuREpKxCl~b zI#mvrZC5UL?EPZTRNtuZ7%FR^=&<|B=eAXS}qxneHwduFV)*Q(P?V6f!q6qKLk?_gTo@= zFJ!b7OKbbSVxs#R7?O6@U}3wnNh)yL%^UjXCqNwZrMjsljfO{5>f@@T-~VsxiAc+g zdjxtiSMRO&QUFfF@@4r&s&TSI6nBjwqxR|1R!yGq_7n6;a0I54RdjUr ziV9-X>Q4PR!FM{^%!DcNemv!Yso!d#`8roSLQDL>UnBabG zj+5uac5~|LRwy~^5MVoz2(wtH>%I8n@ig}&#U8J@_Ppiw~cWw ze4B4fy{Rq1vb3cqrIA;y{MJeqf`+MXh>~>g(0X~`veJ~>m6(G?i>7Fi?yVLz#o_J* zxb1LSJ+Itq$uHl3zPkB4zmtj`2&R(S>wnX^|1tU07Hs1}AB%K=zt^TXSQr_!g<==C zI@845<^01nRSRXfodUGBL?D=Nzcq0B@6Y006+sh7^R{4$vv^6jD78S!1+V_%S*7}X z2exu4S1PY>Bxh?AMDw~@V<{$pzLk$x3La6oD2yDBA7(ZZezdU4VhH>?)z@+fN-USD zY7?EYT9XK0y*S#NI($;fJzze9NYABo6a53ZB@j1K5ur3_cWoY8m!Cci$v^~6BcB6s z?jG$^5O3Y6!f^e&#@!r%=OrBU_OBHP!g)M~~w2^*-MF-$d3 z6raFbFI-YcyeE#eCD?-X^7ydwVLlyC0IpRfa-wdUHst_&xT0aU^UgHPIN%ymRJyq2 zKEcqj7Yi9LNbaSA4@e_1H*IO8XC(ad4`Am|vfR@|qWE}2vjH=7 z7^ZGrQRN>#U516dq*E!0m3%pM@4wzlA_3QSZHIR%=egF*uF8 zn_D`!TbI&p9oZ5-C~nyE&6!L=y-sEeh6^KCYLij8*~2whl$8q2?j8IZIGgC7sHtL4 z=OAK%jf!GL0i|q4Zfy&xacH$Ap6_gDyctme!=}N$G$mmY?d0D6B3&8#>-T`TM?fQW zeLSY>YT4g|DZEsPgnz!16{JD0uB+F#>)ZSBIO<0b`PQka?>;WJa~M#745iQ$W-F}mXM|xP57Ar_QexxMdq40>B-L8=Ih;xEBdL?9 zr%UaI{_K~5WJ(8JvK<}n4 z`i_tO&kA}BO%y5}SWrhpjE17!0%N;WwH^!PvLl*20Gzki%c-uRuDCV+tM`x9=G#Lk zQdo^<1I|fxf!|CuT-55^gP@^*06phR+?{V!1c#B^5CB)NsAMHssPqw(-lTL~1O2N- z-*FXqrdnGr^`is^A(Mc$H09%6xp4u5V6vfbh<64jON-v-6zpco|aKI09bz(-5UyjL{Xps z+OMkXjr`s!(F_OCC@!(;`u0*7ws;lsWa)wQW^12uOz@5A-htCObj0qL+5U-%czseZ zj>yN)VEb2in==gtK7iDy`6%jLALteQ@uD>cb>mPsyzJcCuT2Qm!G@!)O|A9N>hX5Bs`Y9LxU@Jt6!e)5MuXfS zCj{5l_5u92-qvqFi&LJ}S0_iUPErM-?>NaCO?&w^bBo^Iar>rWR;XQ>3dk-F7d4ip z+yg56xYp0&bfSvSH%{}7mYL~^{vPPwKYsARhDM=j^tGYQ)vBY4T_GU@EO#u9iMaal zms!Qo)h?`(+Gp`ZH|m!Z#BhNZ834-_DA&v+0iD~8X3~U-Qra){D)qD|?)|)q#G7!W zdXJDn#bB{irhFRO<>3tR3~|^6J*5^%0!X1roZjEbo@5o0w&9{w=LX&NlX}K6+nK*P zdQ3771|(Hrvy#>aKKwYMxYTazvr*O6nvFo@;J~73w77CF4lbB(Bw3N#@zX z5gHS4pfD;b`j-8FUXZkPpbXKL&_zY|%WTbilI?fE11xOWFZTm_uSYM_w?wl2uC^82V3_q*f`R&X3<&Tzk;3Pf0oy-%JO1v5}VdM^S7V3=GW;S3Wpds;#vXFpD zr=Nsup|%x%YLD-c0{V4_E)>KmKuh*&$htsjPh2IgB>iP!%oTPaA5X>9<>v!5C zj~7wD2c?dI(*PVcon3EN>qh>+8b$N?~zq>$i{X| zd%x6eF?K|M!IY-(5Nz$;v$c9oRNz)yUqf=i7@~C7W@iOK9vH#7n_-U&#h`&)M&7`@ z`lXV9*ppPR)guBGSgfn-IF>kW42FPnv~7hBPz*5a;cghngNNktKD^Y?FG}G|ruB3k zfZH>5I-Dxy1q#aCgFRCY;{#BVc)QiDIFhJCFq|nG+C2qy5LC9^W9{ujBKi=|vvYWh z1&?=JE1S7uJG#peFq^CD*35nQv^4cwn4WK4O$1Ilt;_4`xYdf;0(FU7FHg5^)wcd) z3s|~3nb7ETK=EA4VG)({K%p@>UVlsX>^b#}9r=FWF{0gM#p~fMq7-Fgf9*DEoMH61 zJALl`z5Rk3(T1n9n?uH#?f6Xxzy9&#$PpBd4VMJ)a3}yS=$ydWO2K^lj_m%UXUBFZ z)&xAojM=t=Re|A5EZ5_hWcbbCP2jki@!tI5bUOdxqhJ04R^@(s8lw+dJq&D>OC95} zlR;wfIOF}njlSde?=SBFu$soyEi8?!pej$Fpi)M{1Sl&%#AbtqVRRZ8a6@x#m^cL=;W7h7s zxa`7PZPWIWg3q>(pHZQP*x!6wUm>Q7t1{xrrRBXORU)qU}C3Qo#>*c4v zIZXAobpY+17#`qremRoRXvaIC@@li$U~Y3up`(DSS`T@w8J$LerM5-cYaKM{Ccv*o zOIK%Xm6eWFgt4k5JdFyN;(S2j&9r)O3+3&=c<=-kRdZS?`uO?zxV3~*$O`kwWW9V@ ziCJTo?EWz%13T5DBa8}j>PzRBk0{FRI8c`RWT|R7 zTqKzkpJIt~+YXai7m0u00nS`3KRDHWkhEh@Mih}2+cz#wB|l$)|4|fmVE=UQ(J7AC z>L(!N&3AMnm%f_P+ArICEQKuz3)M*Km7bS+Sy^O;ds1pr4Zi_1cNvwm9g(! zfhy-PyNZcO)^#D(i=VX}&J^+u*U)?T#2UqLOG%}kSbp+(GJ&L0ZKM9Gk_+!{x14t7q&1!%69>n7MKLj*Ug5@L}! zy43$B=HlZYbEf;0cQhH!M4DR2DRuOGud%bsQiGIYV+SMy*=>RK!AwVK8AunmLR(L% zf$jZ2L=2gIq(rJrp}2U{dqR~y*=ZaKmWTsmkjn=L2QCi`z^gs2^||%6Pd}K2IBix9 zM9;;W=*47q@!lV(vv$SMZHS0^{l|}sK@2^3J0>o!2BsYCo%Y>7?n`vmTW!i-9J7lK}rge0wAL!)B^MAz8jQqKJj?*xWYgGSIkUcyiJSE zMWq1)kn_jYO?ZOW>uEL3uS8?1Tn<2y1m^eY0-@%+0kcaMsk<+ok$)MO7aU^T+n26% zIsJ$1{L!gj>)$0p2cSSHQ)g`Nl)BrSx`(hw`48stZbt_@-A+e!^KfZyo}BGe!p7G8 z&Mwu_X*f;|9`~LcW7Kwe+!;!j!rp)Y53Qan4OrHB5V61Vc-?j|S$!nF9&%XN;! zK#8njY0KL$y@zjIr)RJ~zr2GZd>h%jNIJssW%~usE0_6wJdzj zJ@6#c^ZT+H*PHLO7avDjRH`*BTVWKAs_P=(GG31xfa|B&r6zp;ZLT3n{c*pumUU%+_Zy~4w$aNJI<%j3cR}?|o}a`he*=^N=!Brj zO_R8UT>;5P!M6a!?Kb-=y_f%nXK>@CO0_$2s-xz*vJs>?6F6;5v1j?gz-a zfZ@BrNKBJ2{N##0%`XzQw-Zb_{A_M+Y3)-m0~-_v^wm3}wRIf8O_GqL9hWbS(d;`` zKNhZWP1@fc!J#DP9#bP7Cm0Uolbb%_-W-mX0dwVaZckXb={~v#Q`hL4_R~q4Z}c_h zq2n#)MXZh|vv{{tNkD`t;;;`vrrJPtdWl^=IPZ=@b8-`36+VuIX@a)R?d=C5?S^0~ zM(w+COM>wg0~>Lz#1zN9-HCO~brOyg_j``;j*BuHlXbiu}n~~cRbZL+@t`>T1GzU-MqcD7!y9y`PC6doUu+jzq9kYZ*Bhh_8 zZFX3U2H5%R+7@n2l3Qd122V~^B8g0*+ne!9lF3x>=pdvNg-9)l&;n)`cN%@@YmucY zNZ=3w)(W%1s5xrx=`pu!MLQ4V{Po_^NTsXGhyFFR7r}mq0bb=$V%5<7L!qsni$zk& zj>!Pl*^ZX0-3OLpkYMlY0?tf2{q`42%R4?;2l+tk8E)dPNAY|H7z3=MBMUP@%!Cgi zXc5H~YCguJ7l%bORA_B>bUNCwke8aa;YDxX@iyrJpX$$Y(4srg@7L<^neuQEr&aT$ zWTjoj!K2d5i(4F{3DaVk=9h@25z7IQu!&>cgWU)yTANdRHotLjLK8F`k0Md7T`PrX zp@N~ksbGkw4JL6|V1#?Sf|NpH=t~TBA?P8HGMs=>PgjeJF80RC>K@=c_Mv(;^B;UeE2Lwb`RiPn3_}p>2xoy7&j7Agp1KMWs2)8 z6dSYWaBp9PG2{x{X_R=R97Co%z$^@3(Gik=DOdwD*U~aZ2ev|9v_kERZYE!GKDai* z;A0bwTHM0Lt-aGAYM;_v%C${T)M8AwyA@=DxAYJ9gCiSB`|%0^z7Mv@zLK}F zZ;#u;XNH}fU0N!GeH38ULLY-ez^;N|inWB?EVv8r1%c0h!eu2NG*k@H7woNzAgFC^ zR;kCx;5`#<9$YGy-E7dSRcp<3p{HF=0qmG|NOO@cW@s@_V(^SZr{&;mia@PsQSHJG zU}&tBo;5x1HnUwQ!reXGG$Gr4q$`Kq5oL;4x;?Hn`gxrlXndOu-Xp_lKct-u+Nek{ z1=_xoX9&a;w`x5aRtu?$LVO%;XBn-Q%VknYqh703n?IH6S1(i}Ma>t4FBa+IHY8G+ zT%k}Zp}4#>4cCnsS_B*~SEO>ZZ>m+UYMec7gBfxi`A0v22P_s>*Y-u>Ph$p@$`x^0 zeNq@Gsl%fX3+d?~;m9&ER4!jGS1LsDxBx}Ek1C~<2{Nn34(%{naa2JKF)wUjh8DN1 zRVDb1B5nGmU}IPg3UOj)wZ8If*wG&R z2tHJ5(k~pivk559_DF0}t<+2m8{fexSUaxxSGyxutDM)FcsGA%V&V!OCRtvGPec$& zxl*ZCvI>BN1W|F=RWN+0r^9~i6IXDbf@ie1#|4UEQqR(~AeIGQXq8Io;_9Z5Z*2}5 zn9LEB;=s|=+QjFnH425eZE#^_gTlbf_)Muh+nPDXYAzz} z6uuZk>UhN9#gR5|<_`G@fv!GcI>>@?n!1tp`-}iwosXba5sXA*ovl9m!Ppir+{&}U zBLe6w6p2Nm@$AJz7$ZGo;CTcUUPPJXJQ}^?Oq@p1R9oNPIT70+`i&wMiP$r`DyA1{ zVIQ4ofKLQ#^MXbl6$d+M?f^QbIlmfSu(%HeMl^JKI*ec2S~0!;3Fd?A6^~hZI4ST- zq2Z*?hpu$JI4^>mM-uj7J3LXqu9er>nu3RO#sof(3jCt;!a+oxXX~Ff1<#o6Hv7)5 zE;N%%WU7p&``HOM!ID3$Z*#im3nQBJt z>#brH1OdQA+{Y{qATD^~kH#!8eL_KWR?aUJ@z#t)fh_eJuWbU1hByz@LO zSL$q+Vn}44NH%>yOwmMeS#iTfw33UOp7WW(q{JpQK|vwsA*t~8esgAD8&F!?I$x&n zhnf_cV`sp#h2rZ9o)D(qrbRkg{6xcx0U@8{OEcv(FOK?au_zY8OZv6hS0z%ZOeSx} z;(0Wpn~*iqU`ovW9PPw&hT=j}lP6TpVMQH(0gCh+Iky^HQKxSqrY8;sBa!w?6J5`P zwL#mjxgvor=aB$zLr~5aXCzMTim#5a3AJYfCd3`-6`!ABPC%D9_#C#{*HKO)4j`cC zY@0)4ba2jsAUA`gTyH(!QB8AvN#p!{&o`xHwSv0MxIIgrv+W@ovG`vUMW!wop=;Lii*oK;s3pMH&yCr}HcS@{Wi*7+(Dy8(o&+6Ct5vW_g3IGu#JjlkC zklb?s*RsJjd4@`c1tci(i+$ToU`Ktjr>rzO>nLwJF^DKXubv`CqsYTYMXVn%> zg01C=3^SbtF^Y*>7&3gA<}t12&4?O6@$0B~4vs`)oI#t#w?zDac4v{+3^fsMR*|$d zit3B%e0E9mQCO)&VYgY&myl(=Gr$wo`3yI;oTibdOY>Oy2DXa_U7FSTMW~uZnty$7 zsgK}?sNtNVj%Da8>AZOJBD!VGWfsK+Y93W0$>b7DCJ|fWoE6Q}6NQH020IdBqZAsg zhUY=}8x=>(vr^4#MNKe^v;OJ;Sh<+Dcoq0N9?4+@N%Pp6c_5g{88MuU2i1GjQwkpwzc{f)rcBV-G{Op~)ES4$}Z)GJ>TAB;|(}hxIW?C%6*hujKX5ci;WdUt|0~l5ynE zlRxg&jAB_&U;g})N4rU*PPG@F$tCjIgZDnpa;!nCDIB*o*TImIx}Y2uuSz-m>^EWc z&WgvFJQc5aa;aSOYU+0Jaz#CGKM+)GF~+mrD$jW5*T4NJ!}@JoH|LKU%0@lM&$3`!2U(84>9P$*GkNXuD#g@Yv|gt2&X3MgWvPiZ7t9`qj(UFiW!0fG zZhDlBygGjr6I+c*BeSKD+N1w>BKn5MtaMbT+)h1^D_Q$%&arf@PoKOjSL`OAwIs1= z{F;Nt!Su$)y1BcO`>Orb{{Cd!UZIpKr9w0LvT86Yjbdvlr?M2EAGJ7{Q?{{AiKY*d zsj|&)(_GJQuIfs;{3l_xUTrn%O67d8ffKStv{J2BH+%TYS0kV6rfa=;rBdh9d$oRE z(95PXUH4D9Ij*QTdN?$MB9K!tTWiuaX}P0~M6fy`q#PPOE8^nwr=6)**%&5HMASv5 zBV9zacE=6BM)LG!Q1KQ^Idn()h54$OkS3&d?Jf6)q55UD*z$T-x)o}jme+=#ok{M{ zcW6U3TAg0Cik6L1(rD!c#r)B)f(l_xza~u-wZ+!ebat5IU9`bsIQ{3Za;h6QzR?oT zMt((80n}tiYs?52jFORpj*7~*V<(HQ-IlWFv6G>w&7FJtJR`osaT;WcB zm>g~Ha58S{zP-b>Qh&URA?OOJwkR%MMMW0Fz~IIn#Ieu6sMvqFA)_WZ_enax5EU{k zw#PbRADoJBTMQe+%j}Gwh1=|NIwv`Q&TEEu+^rQd8 z$ikDOoQXs~NeL*r?N~EL`A4Ttn;CnsyqSKToIdsx3w(qhzVGR7&RLELhTp z+m$$Z{A#3P^t471R3ObTVSkLpsnxCfPg>sF_q?jna03{`F_!g=3E?yYLRoG{tuL2! zDz!M)ul3i~H{5m;bDrLNbvV-*l?xh^Qqj-;l;d^0&NxKqhr6fAWrA$`+LEUqWfTI! z&<@XLVq-Gei|T;FZJ(13ex?*6Hv|C5>SvZU=?aM(R_qMjH zA3UfzInJmIHIZXO@vJu6;aCk2|KY3Z)Ggdvo3wq~>&26ozmL-Zl}cMbIVKtxq`4^Bjdxa7`VEY_7E8KPiDfgCU2w2DuYl`C<8NxNJA;d=<42ov z*Ud)0(dp_|9aM6JV9=HGKb%WVf{9V(qPp4PgTq<&a%j})W%}~(j;C(F+m8I=EQW+s z+bQb>V8~FtI4PEN4!bteH48jb4;;>R?wZs<&>2vioq1+irN?YBSi(Ph+VR_jTieyB z$S{b<3r#|Ngi81KYAx?Of3-1GZrg{AgWdNoWdxqcb5XNUq2FFB3~X54-^gCX$%R^V zrBWJ`q2o3__2!M~uv=*iN6pcAUJuA6QmT7;`NtIVy}#7U-t6ZWbC97Az!=SDbI=&* z+V+EQzcsYGUG*|hEU_WqGKJ9l`}=i9@4PFQK~d7@!IuM@%Vxdv18t{sa#gfAsLA%X zzUP`$zW4M#&ymb}TAr3~-jT!y-~mbraII*k2fHCa z_@t!MYHrSt{`+Wt^A>Kekl3F*Y9tKbbpR${;!@jZ@?|=Hzeb%85}+DA-%{oH;76Yp z%nRC}P-t#y4lc8t*8WECOk!is&#r%ajc4i|_5LJ%{yXR1FmKu|2%C8$Ku$Y$+xz}m@fYJVzBP=sl#ob)ei|Z>#(nEl)~zKEUE*^ z+{UsDrys=n-?5nKc)@I6$<_A}-mNXKvvyg#jA12>h0mlGTd)5M3hHMKiH6&t2sR+) zch>~HbDWAru{1n!dyqpXKRXdwHVkfrj_&7UwU&AZ$!F=E1#oaKTe%KFoL_$hLtwU> z37cyQ1BH9a8J7Hc9KW6m5G@T&B;h%f89_2sdlu0kE?Jc@U;?Q&^5;mxV7aaDS-f-T z!;`(S+C*#U3hk=r0&*TyC88#pgO7qZ3!_zRWPsT)VgQOVZ7YX^0_J8ZmZiWi&%UV8 z>)XCH5ET~)Tn6G2#7Je(K!M+&9G;nYHVPm!HsKMHO^-4Z=~5N@8`~z>k6onj zj?)Vn5X+_qPXRa}$xtm?idW&82UKTZHSFX|aE%2TAlonyLU`Qtm_0_Oo>N`HFL=`v zR%6rH5E>FX06GYI&HmkBrWZ1@Vuv*)8 z!gJ^8JQRwKOYkZo|2_e)0}#&(icF%h0Gd1wy9riG+RW`XRx|XuTy`#P-Zhz zE--S~ZH)f-QF^ky?$094d~ISy3A5sW$EoC~*IV^^%xvay3e2<$n`X6GdPE4_Zch^i zsvk?iQUbx4H=8YLZ)u4!W6f8{w=FL+Ty1sMvLFsCvJlc6z78ss4Yy#X4TC>NqJ;X3 z7TC+s?jL|za-dprMy3WyRz0Ev)v{WOT29ZXt`J;skGUYiRxYX}whoqS)nb=5=UN|0 z$Ql&8j~Z^j%{2klOU|y(B&!Z5g3%J6k|Tj#x2mn+JxGaPQvfi!r@OC42(ksL&_*pY;O7Dds2fp^iMVr+5_d&BBv%S(V z(eW4YI$=K@-!A12qq39wxN7$WC4qT<)zsRsnl@}1VUVnO>Va=YV$gi;t00D}{a^M1}3xZRPA0#4q`ZT|| zwFdKyB@K7~ZFgv2anUCoU^ddNOkiyQt^I4j+<{|pkcg70T($_{F%Dh>vwoiySR;tu zo>c4(2m3X>`N2pwdnNq{1&iP9nuL^%1U3ZdxopDx5q7ms_#0BaJT|Y7%q!&6d6XFh zN%YC5g^GQ}9_;}#+Q?6l>?FYB>=Sz@_o{$|{ysb9RO%Eawl#XtLrB}sucSSrT69D{y z!zT2m$#O<63rq7B2#(FLh&wFkIw}Yjcn2Vzu<4MHrJi$6C?nrKJ|Z>6>vTn-3;7}G zdU|@=1?x3EMovpu#p8BCQXuWiw|E&_WYIXlk-^70_0HPwA(mJo%0aGm1nZ43^?Mdo z4l;*?<~Uik7tPJFBc#%6-e&ab@QfGcxx-~j+AC$-00s`_8!(}G5icN+jV3V)*`*O9 zMKa;NmxFb`8)qsW0*T0KLJ9#m5|0~B6NfQ>M5qN3MLn60gIEDWOE1^UUW7(_6Lz1p%_p~Ohv0~Fq%Y^ePh6j__$ z+PpXpVR~RQdEVz=(ehljMGN~~NA<+|%4bWSy z!V^TJP&1zu3zMbbi#qU3PELDx&@lPXb z0jp@?=x+YxwPr#r%SfKSw7d^@~H6xL*~Ojy_i8l(Ytj>ZJKDW2Kf3#BIp$qh-Y zGeAv*V2{KS=)6+ty2vBFlTfG2>8Ki57WF&PUkmyc5Yh8=%j+Z%s|dUB%^vsk zO2wqEiUrV@4|J7FfpjRiTekowPRNBth9GvIB7;$-qM&Mr(_k?|$%B_cxMoiZJGFit zHX^t#J{SOPtgU)gd*e|uVGu!SAni+tZ=#9?;-t^O8Y_Mq@*g^U4t0hGCNhc)K%0T@CquqVLHYmj@raN01q!C&p&+u8&w zqq;6c8x#kz5IP@+lEzKgC7hm+|6~bVasuGX)VQo)12QCM@H=R(#KiEpuT25$I97#J z0P&KQF{yGXS%OPIUy8&4kOItWRbqqUXp10Sp#NIpv^!eR76M5Qo_7(aEZ`_fB0vGV z=5FM?znH(K-9#Mb#xv`JUFgMQ>=2YHDS?mip1ze(Dw=esFrh~975W0XUqSrwIK_ak zuCA~NE1Y7Iszjh4WL{3o1rBqNVA4p_a@hzX2*?T@ASisL5|QlCGxdk5m>$NmgKMPQ z!#ZOl^IFyUlY|r#SYfu~ad;YVC-6xx4XXv+7(gD)#{_CcWQ`#)Ob|(c{XnfRd$Ct@ zx^O2o5l@4Hlq?_C_7dVfCi_KO=OJK&Q~<+*HlD#0;7H&mJJ-Q6l*nQ=!dpa%Qea*f zjm7~3y|EMIi3+8gMHDd|iN*QnfGPL}X97j|3f2Zm4*hQy@&afDc;s65)4-r> z0#V?MwLNf%&1MxN$oX`ILP=#4czGb0hfKVl*O>eej7Lh!kpn%^QW3pl)DR6_6d*Sa zjSQ;%#p5f~{dk?6rWcXx{RvAXxGIAt)LnH2!47l2hczzQR0EH)o7`gH_!}Lp?s~oe z^6?sYZ?uqXk`b=;z2{HRTj6+l&4~U;8n%?jAheoNP+6wVp!0#&H(VY{m8!vjK4m;@ z63}zODr&L3+S(_Dx>|pHQUuzC4nS^5B;gzZYk*uABFwWCYg6MSP$AQFhs-V1z^ zHX-5B0j$aUI99Z$k|~tb1YR)l)CJO*yu78x7(@W>)`er|{?*yh3LdLW|lA zris`sqA^8FFOyXcyJm|S!t$zGL+7^*8DjM1mykq~5P2LA+F1<~ITE6!SpFifCcU=k zXCEdT{IlCnSHVsR04HH2HmGJ5lfur zOL#gfe44??O*8wXz=sJ-8pXwe2%K)l2l~Y2Sb!F#(O^Kiwrq+?N)l#Ns&r8<U~SVgaj(db5kV(1h21-qGVw>T8l<+CzOH3x)i z+VzG>+F3$ixQne=zTR&cfLy{ljqf8WDCTJ_jhS{Dn8b{BJUY6lO|VgP_IhY|mCD#P z9;(Hyako))AtH zW=Tt|RyC^tn_j0?DhA?K4Nt~WTuUi@5kq0REC$!&Rw~Ww(7%?9RH7ydxzStV6zG=^9J?$mgWCMcO|D8_j76V-OgQc~6G!4azBu*WeXmnS9o5Hk9P$vfg~$ z@8e8G7$TRYK>jLxK{dkNpo3$^5cF*n1B{vBA;$Fc{eeQGnc$%C>1t6+R)af?8DmeH z<%+w*DLFmzH4jxuw>4UgM$(pG(Str_Qj>W{!@&frk!X|(g|yS1$rTFuY>wbe2A!!) zE~BL5$zpwe_4<`fBVmK6wrWhfW%; zGJbhC9gb$xo)B~4kywnDzi5hAVHCbzTug9{-(m>4 g8B7);JjUH(f-&Odkog?*l7|>CTHrMCN%3s{|HNj1&Hw-a literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_glalie.aif b/sound/direct_sound_samples/cry_glalie.aif new file mode 100644 index 0000000000000000000000000000000000000000..e4e8965476770727211006420ec6d7c863e35e6a GIT binary patch literal 10420 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 CfJ06I literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_gligar.aif b/sound/direct_sound_samples/cry_gligar.aif new file mode 100644 index 0000000000000000000000000000000000000000..4050f08b012eb7e6af100f5aa577bfe2e4a966d8 GIT binary patch literal 6068 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 L=NPrxR{OsJc#mB$ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_golduck.aif b/sound/direct_sound_samples/cry_golduck.aif new file mode 100644 index 0000000000000000000000000000000000000000..b6b71a7a414a7d3ad55bd8192d002df813423ffe GIT binary patch literal 5646 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_golem.aif b/sound/direct_sound_samples/cry_golem.aif new file mode 100644 index 0000000000000000000000000000000000000000..0d2c4515ed866642c10cf1062a8af23fc114d87d GIT binary patch literal 7080 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 Xl0OxufK#Wl>1BGk_LtQfpQ`;YhyJD2 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_gorebyss.aif b/sound/direct_sound_samples/cry_gorebyss.aif new file mode 100644 index 0000000000000000000000000000000000000000..b7605062c75e99a9768b5de0d4853347500b9e09 GIT binary patch literal 11176 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 UCZw&H{p>3e$(cT}ORrG;KUs=Ui2wiq literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_graveler.aif b/sound/direct_sound_samples/cry_graveler.aif new file mode 100644 index 0000000000000000000000000000000000000000..77399422804c27ae93ff30e56d4015bde5dc75bb GIT binary patch literal 13900 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 h+I2WgFM6o=<dIJ-;T7>q-kRJ*vpR`NPeA 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_grovyle.aif b/sound/direct_sound_samples/cry_grovyle.aif new file mode 100644 index 0000000000000000000000000000000000000000..983bcfff3600aa56f4c5f9101639df377a175a12 GIT binary patch literal 10198 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_growlithe.aif b/sound/direct_sound_samples/cry_growlithe.aif new file mode 100644 index 0000000000000000000000000000000000000000..134e2983459e8cdb34e90c7b6ab7abd7df000883 GIT binary patch literal 6696 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_grumpig.aif b/sound/direct_sound_samples/cry_grumpig.aif new file mode 100644 index 0000000000000000000000000000000000000000..97c3720766ae7a21377e8cc417e860d2c25ac287 GIT binary patch literal 6318 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_gyarados.aif b/sound/direct_sound_samples/cry_gyarados.aif new file mode 100644 index 0000000000000000000000000000000000000000..238b6d7213fceb59fff3369b9c7981562c1a33b0 GIT binary patch literal 10078 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_haunter.aif b/sound/direct_sound_samples/cry_haunter.aif new file mode 100644 index 0000000000000000000000000000000000000000..60ec72171a8441b5b83cc886f5ac6b9f6212c66c GIT binary patch literal 11714 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_heracross.aif b/sound/direct_sound_samples/cry_heracross.aif new file mode 100644 index 0000000000000000000000000000000000000000..a0734748f275379b750cf413460f950f40b4e898 GIT binary patch literal 9144 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 PJWcgaO@UZqgW-!cr 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%0A?(o!i&TWF7Sc`~d(&hK99C;6s+alV>lYI58?! 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_hitmontop.aif b/sound/direct_sound_samples/cry_hitmontop.aif new file mode 100644 index 0000000000000000000000000000000000000000..3fbee8041a18cbf3c0307fb334d379f426f6bcde GIT binary patch literal 6936 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 Z@Xy&W&xUH!u}9yBaH&irS*ogJ(5PV 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 B?0qe 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 A(f|Me literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_hoppip.aif b/sound/direct_sound_samples/cry_hoppip.aif new file mode 100644 index 0000000000000000000000000000000000000000..ea47877d0136d80e6935d4e403910d3f0d4a4f51 GIT binary patch literal 4226 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_houndoom.aif b/sound/direct_sound_samples/cry_houndoom.aif new file mode 100644 index 0000000000000000000000000000000000000000..6fec16d395b84a4aa22c3d927beeb61638a9c492 GIT binary patch literal 9820 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 EUqKZ3b^rhX literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_houndour.aif b/sound/direct_sound_samples/cry_houndour.aif new file mode 100644 index 0000000000000000000000000000000000000000..7431bbf297dede1d3f0b9474cb98ad2c3a7a41cb GIT binary patch literal 6332 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 KrU~SwrTTwInY@kw literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_huntail.aif b/sound/direct_sound_samples/cry_huntail.aif new file mode 100644 index 0000000000000000000000000000000000000000..f1d3b29d9346635524944d9f5770d283547406c7 GIT binary patch literal 7944 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_hypno.aif b/sound/direct_sound_samples/cry_hypno.aif new file mode 100644 index 0000000000000000000000000000000000000000..32672a3c3455d9903751d4abb8c76c670fafa8e8 GIT binary patch literal 14450 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 YZ>x<-D!7mFT*Zc2gP_skj2f-%|5>bjs{jB1 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_illumise.aif b/sound/direct_sound_samples/cry_illumise.aif new file mode 100644 index 0000000000000000000000000000000000000000..75e03efc82ffeaece5d116f4127c2b06d55ed901 GIT binary patch literal 8536 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 HK%@N^V)|C_ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_jigglypuff.aif b/sound/direct_sound_samples/cry_jigglypuff.aif new file mode 100644 index 0000000000000000000000000000000000000000..780424b4f0ed06b527df114cb544a23e91149619 GIT binary patch literal 2720 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 H@8JIjKbj~W literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_jirachi.aif b/sound/direct_sound_samples/cry_jirachi.aif new file mode 100644 index 0000000000000000000000000000000000000000..ea8a5c8ad12b7ad55c4851055b88eb81bb3ff11f GIT binary patch literal 6758 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≪2=ncTc!S%_=zI4aU>@E)-7OH%6t5 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_jumpluff.aif b/sound/direct_sound_samples/cry_jumpluff.aif new file mode 100644 index 0000000000000000000000000000000000000000..13b0fd315d97dc0d4d2c70a8a862f4adedb82556 GIT binary patch literal 8106 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 OWkmFwX8tRdYX2|v%}@#e literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_kabuto.aif b/sound/direct_sound_samples/cry_kabuto.aif new file mode 100644 index 0000000000000000000000000000000000000000..6ae9801b5c35181f00dfb956d58d0733d7a4e90d GIT binary patch literal 6170 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 IuUOFk2L3}vDF6Tf literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_kakuna.aif b/sound/direct_sound_samples/cry_kakuna.aif new file mode 100644 index 0000000000000000000000000000000000000000..7c4e9d7a861acac4fea72465e2e18e970977c7b4 GIT binary patch literal 9104 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 IjcogW0MVSi7ytkO literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_kecleon.aif b/sound/direct_sound_samples/cry_kecleon.aif new file mode 100644 index 0000000000000000000000000000000000000000..f27ae183232af1a83159506e3691208059ae47b7 GIT binary patch literal 4202 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_kingdra.aif b/sound/direct_sound_samples/cry_kingdra.aif new file mode 100644 index 0000000000000000000000000000000000000000..ade230c8248ca457cb1b111d9564f30a77fad2ff GIT binary patch literal 6922 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 NmsTJa9wn};{Xfnae3k$J literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_kingler.aif b/sound/direct_sound_samples/cry_kingler.aif new file mode 100644 index 0000000000000000000000000000000000000000..a1d845f4557226332d83f2a74c2e7e536bb92029 GIT binary patch literal 12132 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_kirlia.aif b/sound/direct_sound_samples/cry_kirlia.aif new file mode 100644 index 0000000000000000000000000000000000000000..692e03e5fec0cfeaefcf5401b3fb9ab1cddee5bb GIT binary patch literal 6100 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 In!gbFzjueXzW@LL literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_koffing.aif b/sound/direct_sound_samples/cry_koffing.aif new file mode 100644 index 0000000000000000000000000000000000000000..7ca9de0889344e3e23dada8d16c20965d15c7b6d GIT binary patch literal 10154 zcmY*-DVd znH_s(HLINwWmy~si8+EGNDzt0p&J?KoO9lD-vcH2wJ3p5zkc6$zkAO;=iEMh`N~BO zr~WqsXHTC#arq*C=IA(F{N^K$BbCJveyj zB;Nl+{Fb@m33^5N-F>;GMVsCC>gS(dfBNR>-~6Ae&t9)=`$DmNfzMa)yMOx0M`w=q zbT-ynOO^Y6d`0IEcmn=#C>D;#>S}j3*0*>3zECI@&H4W2`qR%7Vju zq^rHIs;taTwD+ixCE&e+zsonBwu_h5KpVSU>lNG2M38=RJ^%2KPo z<*IG#wRn%bHwOD!6OM9k;q3-RfRf?6e$FOSYFtQ4xlORlLe@w}zY-9R{#DCur) zq6J#|E;c5kwI7}~3LB3%CY{_`t7pY_=k}9V)AMUv4o@JGNM>92wboQv^#=}jHda`Z zcRv69-DlI!e)ZMuk*W1_4h<`)gXI^hPXdIq!e?2w~7xR#?pjjT#># z5eWE#nW35K_};O~MCxNlRrYv&M`2}c-R1TNBGFjt?!TT~TMv3m2ljQ;vzeq-B1L-NYxTMOzIgos(cI41=hyFzP87_DlUk*e zN+py)6XSWDYq4uMUVr|b{x<(A9iulGVp1fX$!2p|PF5%q`@edGEuF#2d}a8s)m4Y{ z_BSsOUJqq2lD_iFhZp+}HZ}-mCOI_*BOcBldiG-S#ov8}I3em`qz1S1xYid6M-+WO z`si|VIuxsG|KTUi=}aOKiAI3BM&GocnJY1=y6YAb^a!ODsv6Z0P3#+#VMVl)b8r?|yU zqFlZZh$x)T$MZ#c^~S@`9{S6ByD8&Lc%!?d$fVOs@V{q;Mr46V78<8F>a@OBK9Ni$ zo);rE6e~E=`)mAy`l2glqv-cY7Ywa%GrY*Rb@sk#VD6eCgQOuA|1v9|M8dqeE)IKpx5aGuV)uG z+%F!Ezggb$2BW#0=}=SG9}J!w=>6oU16)qcsmkEGwyAh|iHZjm@`3;cA&sTdc~r@X zrc{y%Nhx+Lj-nA@4VY0sXWvp z^kyq6bK6eb=nENZ6;6k|M85pLA8oD>A=VDo#}0_ zE43II{7t9c4fM}Jp z&Dp8hMHcWwp){Xh?9n|BC8_C9CGsSm&fx%hbbg>y2``n7iw?BOcH_lODKrTO2L)8Z zd$YWXgu=0D-vIHqyudncQc`I)t2N^J@p!Q;lrF0;+C^2AxRJiV%9ZUcac_Hmhe4-& zdq+z(pa`HM5ukdeH$^-VkDq?^BxKa?KV`KIjZL|V(NplzY}ypiaCv;bfUoEqKp1xC z(*Vx#5D+1XTu%Xa&=;`KCJ~Z>`UKM}(p0l`P3{O`e=L>EZc!q-iu-GK=C0oxnpt29 zJ;lqnpXvScMhn$wsewABnBRT!aC4LU%^c2e+v)OoV>V@O%r+xX+Pp6xzeM6Yg3;Qu zwL30!CIw$y(TFBxQufy>`f_d3VC9B=73hohR?}TmtB5Q=9i6%M>uY!DMuP$AO9{-` z_v5N+eNlv|OzafRzr446ZEHIis0c{Riv;1za#^S<V$tD7AEch}Nh;;CB4( zh#P?F7jNCzdc0*2%-ln}8O<2BS{ob6%ZwJzB*(F^DAo0RJaC-n@`+5!(o6k)iWSd_ z0_dw%;wYzPg~QKdDj*t=PExt?>Gd01hEinQ(L!}`y#Awles|O(*dNQQV$Wkjl~4*a z;Ol2>N`YZ^4)kYYbxqT#SzFUotUtKpQYy#u>5X)=T692vvRRA`n;qtYB=9I8kq}P+ z#VX|Uxv`rI67Bj3)g__d(&Cbg8>-sW%XVc_88*}k+H~p4@q>**k?+Bi=i@BVsSs~P z0?8;&0b!35{Xz zE_L@A5MJZ8&D`_cyYKyS`00)bEHTy8rIs5`T{?B7#S322A_-vAW~)sZMa>y9;cA4| zV=b}jiMw3Ax;zhthlPip+#UgylpK^CG-gpM(q10Pi2A=0i@t#diuB|zdBi4#Q zva#YMHkP6Cjpdi0K0}iXRY`YZbvzIR^!Cc26n~XkI1V$G`FtpvT+<9z>3T}-8$!{X zKR<5g7Hf^$Ig@Uh-`#6y?Ww~_@z=J*^4B-!(O(iA+t?gf@8YeUxmBLr5j1GT?;f)r zQy0`-omGRMSdR@fBuWUY)Sk_yUtIlSC@NS77CijL)w|Dd;5t9(q+fU9Ldntgyei*b z-hT9>fznI+fuH53BCPn~20l6#4^MpY>Gb@=TjTlhd~O@bZBzEQwVy%o6&*kN(MRUO zgd;H{;DcIoIr;QFfxAwRV7ZiN{Yt58pz+9FAEYq<z+p3_yj=1=}| z@bXbrOjwqN*0IF$MJmU{7x(UYHdlEf->groGl@3!>3g4E-^^q);N6B^u++c!_`M1- zzg~s6gHfT99TWfb+tIDjOd&8Y2KIUa`s%Iar*C4hJi6|Io>Dpwbv&V|(0F~Ka<#`H zS2(@GGL_qP^{)M{+qEPs?mE)Nt5fFCt<8>!h50~5O@kmxFsIIi`mHNX-MxC( zz5E7D*4on0fCE=`S~yaR6X$F)p-!cBU?LS_q(vUpvl{?SkS_l2HmDhizKd2pU_w;h z+mMKCZC>Bh>x&K-k)kRpNi-zH6-5!ZD@>Vl^^28gB!Sad%K5+m0AC;(@=S~M*bn~v z2k*A%(Lqg0S4zsUt*-?n+dzVafB5BR4>v*^%Xz?w46#wgESz9USJM5{Kl`JDjh(78 z>ew2NgToO-S8OpM*Z%xxBopUSDc5>X8k9<){4|DGK3#Ts@IMcpxNxGYy>D6KYVF;Q8mfTKyoQL~VZSz{LO$qFGA z!;rJVR1izc`vFEdpGzqXLaWewghoZg4VX}9#C{)gS&LkBt70jgN)_Aj@9gZx)p1|W zR4i+&-SHzw)N%YqPn_B7$rxzmL4yDZDF(j|tR=JP8!ER-r&5d59)Up+^&myi2N91z zFetUeEaxuuACht$;3(8W<05tZn;Z9^$3SI-VmVJ&HTai@JC7eU8fqXI!l7VP8O)|mBXjapw^EfQ~evx`~p z%R9C)n-?J;{_^W3moJ`nyOaWD|M7!=bg}QWv8_xf;^|6sh)p;W<{9L2o(RjCUw#v_ z*;nsfpWBgwGU%&i#Z7;B{(SNBD%Q($x!q|9vjP$f5F6PVedU{-@n*3B{fBx=E3XWm zI9gbVdZs<@HL(iHq69PYKYThomx?_fo|xX8#(vhf!876_q*Yu0p?w3#ul%P|4D^`ls`9Z= z*e~WsMxPR5%sqJW``I}-3OQtnREJD~4E*ro*^VOB(aSxj`)Uj|Fg!Hgpf@Xw*~X@3 zpMwS6y^5$!jPDjWf{Z7MgXio!cm8luM-k4Zb>Dt%lU8DmDh2pQvhZl)>tV2vhyU`B z5u8jXD!Fi^y5&zUpY8$MDvD5%7Xp4{B>E*aZG#yVq9r#ayLE$rbw%Ms1MC~X=Fc56 z84bb5lg>~ynMzTp(=r@0cB@H567e*W;l#Pt@0;Sc6q3;ZG#n|U#wjHREEeERW-;rH(x~i@UEiVNq%0-Dk!}&-gz=1mW1s(zC!zE!!f2NdQneN0 z974mWsO{fRbiYV1gUHNRkw24Nv|*Xvm;d#DehN;h0(bdsj$K0abf9VhEO#4sm z7l2yg6{EJDS|6F3weQ-WlU{TLgOy~<{Kdx~_8l=32@T=!sNE5mfEi7{Sq49`Gy!_2kt!!Y-E6*7@S*_WYv> z*f&UTY&enN1Q!-E2Dt+)IckPWW-d|{K}R+fyLR$LaEW9h;NT{FA_#MNcmiAzHqz{K zJ6OcDM-7sukPtnB%oFkIdg^Me6thesIs5$Oh7MerlrT3pHZ=ltrn593`QX9{GB0od zsIfvvg@zgvydS9gVd55X)SG$nF)WFd4Pm3jxh(;kw^xpo^04JN(RD=1cYS!^{lYWXwt#P0HwE>(I!b zT<*JgEA;5pmv$8ZygdM4Dw@n9iFo;{)1q8du)n(m&!f1Bawc%l%GE$0UMKrRq7DMzrrFmn56 zUrw<$1^LP;n2pK4(OKfLe3dkaW(FI`Ra_>V-G+7x`Ql-y zgz%EAy1=*Eyv`7l;lPXfvQ@R&0=_``3&~I^+0Ioqi8eh%@JTJMs=J`Fz`VijK|@f& z(OLw#vZAJ1rl0W&hasQgBG)NxjNed-L*8EBfS^T&CZhoK8bdIJ56qNf#dW1#yo=lr z@cwJ-*VYA`Cn1<|N^R4nQ$iIvhL9JyyKw*^R^Let7G% zmy0jQf?&F61sZTiy)0dpmK{D{f8gEsT2EJ%)$^^4V+1Sa(_z-~2}bSkKQ=S4l227q zNkkH0wTaAquLd?Dw>VCuIAf@RG?#<&xp*a@{FpEpwR-|isxHrfv4ZYc0Sz>HNs++` zMzP8R3u6s2^f)-Zcw?y{xG<8mveFvIc=DnWL~xO{&fq?ai}Gn%vB{K+GE6&zPFPYL z-+hKql#)14&dx2#4kHAEC(0q}`GriHW>-kEkTb*u9f{t8^E$H-Ou6nnfaL&9UEoK^ zsv0==lfl8k6NfM-$)%)1Z_F#?hGf!|E9eb67DkZZHhX;f?yI}gn^+BfWc!&54ZWY7 zIMff?qvOfdg^YkqglBAP z%%}NlUp+!Hu8{?e`3ri!fK!99Q)Pvw`=c`_yE_WI4p<8SssPby^17nA?VAv*G@~L) zkz+`L^blA@U1{qdUpfVp2ygE0xZP0G%su3zXFT_)6X70eCXBNx6&errwl`Nbe=HZTiW?Gho zILH>=MTR5PAXNw5Lk2~7;=A*Of4QF-=8;*?Zl;jWrIJY^9dTR?0gk6bPhL$dJo@?( zwZS0 zFw<7TJRBHQ3eh02Ik-!lXZ@P({&II za?_AEsCnqmMUG;LibXJ+D7IdKhM1covZm0Uyyq9WLR(Xh=y+ zIi_O22|%eW^wM1DUqyqdA)0&_so0v>>jG`0(Dw4#Phdy4QOihYG8DzV`%F885ezy& zNm*&``nHNZ4hrGFs&XV8@}PiO@1Dm^gF7%kBoQqSMi9Fr>iziwEH|15GJKzo0F;RZ zWFA+@?L2?He~+ePqR7O7DV|Iw{rztMAgvhbhO`BW8&6|a#mu_cXi=T!C}1hxn>#jW zFv5vc8Z`k9$qp6iQA{~eLF~1NEFO|Z>r96jTqRQw=!i)@W2wTAg3klJ-}^Rx@ZiX4 z!>|Y66$m6pzG7kjEe>leMhrhGeHDGDNw>2~lnyhv7sGG{WN&EZ?cg1*x~#YiL=aG- z5jUSaeBf=tV*Xsn$GkzdF~uR8QYbt=Me{#|Gg7tZ=s=n zj=CkXf*-*YVo%-y#xS7x7Lc$Mg2oh!{7K?1D1W%Nc)h0fwBcqZO4$l@XM}>OhPO$P zX52#D!sIRcErJaiF|Rs;IBSJmO)8ebF`zOwMdKK3h(hu9qTS`wjBrQMvsud)J+OT5 zi!yW*-j6knG8xDY7%B0vKb!$x=xGd6P?MlO%VaE*N%8bNyClYEAYf);7RMkG_Pl)* zQy|Rh*au}JlWzqx3Ulus2GE7v;x4!$Y(r!A#H@}D*&=fn!6I=Lx{X$dizlM4#zH?K z5OpIq(?JrkDR#bt?UU?aZo|omcx*TNKKxPm=#^bW|D|CTa}P!0Z7BGPZx4#T_QS@U zy$!=Ty2+=d@1aP+K1N*h|P>n5`p_xVX#HoM|bx-@!0@9!yA+0T5T>P~X1^d4rd1 zZ%1#N81r##oZ@I2-`&B*``HUw!+i6H%8ju5+bvPQPcZ$Oc@D8POz7WU1qsut8MJ4} m5(_&_vVpAu7^ujZV#S?w(LsZ>;!x;BzI)EzCuW(&asEHF8B&V? literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_krabby.aif b/sound/direct_sound_samples/cry_krabby.aif new file mode 100644 index 0000000000000000000000000000000000000000..6b7692f219ce64a02ca613f65f7e70bd597a967a GIT binary patch literal 12112 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 Nhkrx#62I_){|8|2#wq{+ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_lanturn.aif b/sound/direct_sound_samples/cry_lanturn.aif new file mode 100644 index 0000000000000000000000000000000000000000..dfeac1fbd9ded626308a6192b1efc0eaddc00452 GIT binary patch literal 5282 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 NFw3WLr|(7+{C{nS5#0a) literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_latias.aif b/sound/direct_sound_samples/cry_latias.aif new file mode 100644 index 0000000000000000000000000000000000000000..46f7235f38fd7dcb7f194e0a7deb8eb317a80726 GIT binary patch literal 6098 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_latios.aif b/sound/direct_sound_samples/cry_latios.aif new file mode 100644 index 0000000000000000000000000000000000000000..b8ace2a3010bc4f6437eaaf3d6254f8311da876e GIT binary patch literal 10958 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_ledian.aif b/sound/direct_sound_samples/cry_ledian.aif new file mode 100644 index 0000000000000000000000000000000000000000..baefb5fa39400fab40046e711d36fd98f3075d32 GIT binary patch literal 4214 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 C@bu3B literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_ledyba.aif b/sound/direct_sound_samples/cry_ledyba.aif new file mode 100644 index 0000000000000000000000000000000000000000..4f26859a7b5e7f59b4da5540ae4cfee2df9b7354 GIT binary patch literal 3506 zcmX|DS$A926~0%xnrzF19Lttu%a*L!mSxFd+nVRmn&;`>en+O&m9EaP&z{fz_KjD6{W3*KKfLzhjT_Is z`ZC6pjH0pf2THs?@a{V1_`LYaYrnzYxyuywI{i9EG#=jB`?c3z`330zNa)T!8%3={ zak6pp!L#myQ+W8y`(;YG$oaqX53N(fij&k%MZZ#2P}|7>e|fp0 zj~&Lm(ktNSa=XjAwQjVsv+u1Mem@>h?}nhst3&?qkKvQPOINwAJy$#?x4j^K^25=?^_*V4r~P(J{SQJ>`2`1%K@<_wYE`FgwgM`8&bD@HG=i z$e}CBCEo5^yH&%gRYz^Sf84PyILxVAA3#fogHGPN8F&WSsKoj`)!-B@5(H29yx4*BO%+_o)`2}Kbu(7fDXWtlKa+n)|u;ZRz2l@r5dzWDeHVh#hGdO;i=JM{aAdlM50e*yz%T@=|rMR2a?vbn?D zq0o7$FP?YBkwZx5pJ|rLZnqzax8$sUABZICruh}-vCkWWUzU_^cRF4(I+td_CsNie z>#W(Yv(V$Z`9kxnbO=t+lI%$oG)S7}SH5_7)VW}l{J2?6D%PwzmFH18a_+osPU*ho z#$b6)i=dJf!<6slR-*s%{2~(R$tfal*A(vFi%Blp9opi@ADna-Y)h8rlXsysvLbtc zq*%RbTPz&CM*=mwRE~Ud%Z>9ZRqr#BWpm5?J=b4;Xqc@FeJ3Py#3Rx{f#moAIbJF^ z8kH`~c3F{zhm;eB;`m&R<8Y8igMy;Tfa0*t zQTWne0d_q`G!2R_XebUFgc?8aJ3Gnn!Rf3*kqvSLA_);WKq?f+@>no#b8T{-$Y^sE zCK%xX8OMU6%eGhyxHkT%4pDTR-l(a0@f}a;4Fj zTwh$Sc)XNdGdnu8{dD_`S*cdTop5Nwe*ch3rnp&CGCH#sshnb|{GiDq-9TC2s{uCA_(1OxdQvtA>9LKK7adX1|Qhr!Aq zW160p$H@9=0a|rB0<*=SmF3bonOr90rBX26Mbz$C=dHTgi2L)KTctKbp>Dwo{JlrF zHpLAw!(TrCE358Y ze|$fKe4c;aYMwzgz4OtB9!@OQT(lUbG!x<{4-3UmI>*|kZE}Qu^RJune4{BLM$C+> zJa0ZLRA8^!YPU{tL)(A;G+N0p6}6dJl5-c57~V(Wq9=j_$wn_Fhxc>EFlPX}>g9k(lgI1wXRJ}1!)=kFQX_Zo5I!S$bFUHzzxC9g8D9(M6q#X--&D7*T z^4R;I`v4`Rvto(~hGO4-nUY>v(8CX`n@~2VuGy_H1(22gzK4_+oNEMvsqg;f8+0IZ zrXVhu+Ud=3U6iRs-aC?tTf5PAp+Qb(zv zys=O^^!6U#xHvOD!Fi&woF6TN1rdV)9{?Mj#N51TT9tN3BBv2F1Xf6&NJM~&@z2nD zVTRiri{~@8qjYyO-v4W_Hgks01EUlI*5z=ve5$p8W#tE1J}5fcC#(g znskBl<$5kw1u&a*0Bux+QjyHexD~Nfso1Jji$ES@B91$jtM_IOMKYQ^t)6zeQGgjP zHo2IEVXBZ9U%)j38dYO*VHSwz6o$dFUe@)Okb_ISR5qKd=ccjOv91cpwJlfl1K?#K zbt97~P1luZV-aS zm>GDFJb}n5aCrbdlR346FsIN+3~q6=#>5r^L{MDrLXsvCk}Twsy+vcY3)naVS; zri%sdHrfCJ@0^ zi>+q0Sgp0#R;$@X8EkYKXq;*U{;=5XoFN8VZ30y*-73L70z86h5f}|fBZZx!iv*9r z5AX^I;xh!I@DCw?Wg!oB1XC8^N1z;VhW-pdM)yz*aMQy-YzVLbEE57Ifz$1J8Hf8M zGIS7q!l6-_M0&1&h&+SR0kNpRkM5&+{h$SZVIM#rxWgynda_$AuUQpz1f4cifM^k6 zPxk>=(Sm?TC=inRCSpbC0XSA95(+>7^d|U9p)fLnPNZDwC(MVq8V=xJBIas!k*L4T zi6s;#W~2-Vs{*BKNa_3+Puho! literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_lickitung.aif b/sound/direct_sound_samples/cry_lickitung.aif new file mode 100644 index 0000000000000000000000000000000000000000..ef889a27506535fe42b08b7342ba0ed7a42334b7 GIT binary patch literal 7571 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 B{!IV? literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_lileep.aif b/sound/direct_sound_samples/cry_lileep.aif new file mode 100644 index 0000000000000000000000000000000000000000..ed8258eb72a19206f16c15373940d9f8f123c952 GIT binary patch literal 4838 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 HS0?&jTLC4Z literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_linoone.aif b/sound/direct_sound_samples/cry_linoone.aif new file mode 100644 index 0000000000000000000000000000000000000000..4e5e7d3b57751c49c25bd6af8a3b9adad33b9b25 GIT binary patch literal 15248 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_lotad.aif b/sound/direct_sound_samples/cry_lotad.aif new file mode 100644 index 0000000000000000000000000000000000000000..2596f43901712fc863bc0b076bd9ac445f908443 GIT binary patch literal 2232 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 Z37`p@(K-VOBUtnZfjC-5hL7O={{^25&xZg2 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_ludicolo.aif b/sound/direct_sound_samples/cry_ludicolo.aif new file mode 100644 index 0000000000000000000000000000000000000000..7cf670f38dda530095534c286c75e51f5cf7e8d6 GIT binary patch literal 8398 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 G#s34O=rqLu literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_lunatone.aif b/sound/direct_sound_samples/cry_lunatone.aif new file mode 100644 index 0000000000000000000000000000000000000000..42cbc5e3c900a92473e51e35631ba32a18da69c5 GIT binary patch literal 11956 zcmZvicX*Z8mF|!FQ9J6r_ujiumrwyz5WQo-G~3uQacocinE&P`xlU#>89T{LCXSsr zF4!>`V^d5sy(0-pNT{HSdhd09Yaery``jy@2gE7gx4*U5de{5DYZsPRmTEN7pXZho z7Uq|i^1H@fW56qWHQF4jzvS?LeoD&Lt>+)d42|ZW4gQ(m4ESTH|9joKvI0JTSU&gv z`B@lfdeU#~73^$k;}hT?921*X`O@JRie0+D|LW6^{`&FpM>C$0Nm+ThsiCe~V9~#UR;ylZqR)7*oR+zU)?_M7?m9F9}pRvR#Lil>)|7>>?rUxTbdjg7@0MYaE;P{5)-5bPI>>5ae0XSh#=s(=X!mPxzwz?+&E?5n))PFUk9wOw4nGpAyG#oDb~*A^ES zWd%7|SsIQt+^TNxpBV4!?&=+zw+zhO`08749w@p>esZwr(j&3-fi+nHXr6HRf*a&i3}s zKE9r=j!r>Yn+_1AwJItz!$V`^eQnK;9yNFO^$*Wz{nFR%J#g^QiyPKtM0z?{nA*5H z8c*~;d)Cod^{}dOaLUxeftai*PECvmiCD3E{pJ_;RHiwNKE8SNUi0A8+|shffK~YO zPDN2lNI*zvpohJKi!XnhYo=#3=JpW=;#e_~@HQ4{u$Y8|u0|%O|Zuc+uCClh1q;N-&cT?Btkg3VO(qnhfPrb%5$N@|Rcv%Rys zhfiqgs;!3)RYW?-H=p$k@Mc5^c^@9;>**DoTz>Gax8LBq0S-oeja7|(;}hhBxxEUJ zOGwVXSB@OszcDi^(9w8)S`t6X%hAE!e0F4DaM9W;I6NXId-L{n`F!0mFfo%wzP2gB zrvFK6&y3d2$vY%A#6`C>zii_Z8W|B193CAN7UUO{l$9Rtr=1xdUoi1bDJrJUTwHV( zvN@qX-d>(we!ebd(?ip?VQH0nUOKQT%f)QT(B6Z;=ZvgK#G;BVd-m+vS+=ThC9#_7 zZXYwW_m5anP`Z}rM)-TXQ-3L}(|WPT~bbxdrDboaZW_miidZ`;W(A~|>+E_!LI|U`BrSn|I^JBeTO-)@x(`I}+ zGlSUMSXx-PH2Yb6HY`gIEtn{?>wAc`DH!r_%iAZ2zRCKtXoxy0&v!2m8 zi|8yM#M9N&%Nr0(EhgJd+i#sYeYvX7$jX*y@bdN|KX_7$xxOJ_WWkD>@{5c2H`i#4 zwZ<9)3kOdxM@z${MV=@e$jgd$S{R_@Z(jW7+e;6hj%aLs!_rE&y#CWSkL+AY{`ECJ zY3*ozQeD+JPSpm5Ma9KN{=Ek8->&Hx7#W}-EU0GrK(IgSPK*uV9;UovW<*6z5T}s| zlFLplF*qh6B?rv#)-4TnHPzg{b+4|mrS)m=tbKAh1@r2z^6X$|&GfUDRzTq1`7b{I zu69VGR=MZ(LtAn}_*TpP3+KF)>Z^zdRzc@ep$0Tzp%J4GiwMg1o?TnImxDhRu&Y?;zZ}8hYi4h zqn96-7kHiNX_fdmT8<4(Yc$hCUA?pB_I6rxHwg;W$u7;zOapg7qq&u(V-!F}80al* zmb8Vz-o9}{lvP$)wi3*>BJkuIPg-Bs*f*!|Gly3CEl%`5xpVjC=}+E&@0UOSce+=% z3k_!13XAT#+Nzs3uYP^}^H2WrU;p)&^KB+)pPiI&*?I-X zWM@SO`MEl>-uoBMp1VqvI~D{#i;HMeKmsr~M22XLjaaXRrHzAUP;`ovR$7?t^wavf zZXh5gJ3o*AYDU0Ju-4Jmj6EY$wXUJ585x3Cl&1ktO}MU}JA1ohL8^VzfrEQ#cLj+a zhGV@?>u-Gf@gG0@>du45qvY?V1M*gOjE{}!;G^Te{nami{ z$sdZV_aR?<_dkAj;&N4E%d`FoW5>WCfp3GE;r{lP<`&>;c5F=Y0f!K=mtMk%mLnCDA@Ump&wfoPgoq`?v_roj} z1{!Z)zJ2HW3+K-q|MK|Pr!RLor|&#+xX@{|?eU{Kw=bWT7tfr(UN`IznX!`Yq?+bX zSM9Y^AHDm|&wl;cl^z2-(gqN7a(4F)32>NetGayYR)gTChr3`R1i*)o`PxoDyMOIg zLocuU`1*MJM^IfWR+q0#@}zc2;CYf;GSS1u)h{SIOEQm(J$_W%GDL6nfG+54z_@^r zShi#tk}z-S=-?SyP+X9c5*?MC9_Q-lK+GpbMgTsYi7o^NRk?A~=FRI1BEWabpsl%~ z7Rt~z$Fr>2uyfbO%96C$)U>1^r-hE&XHR_b=@-|Dk&UaT2lx>hx2g=5<)xLoD`!ufki>CHtK3+c=>~U@M-Pja&(vN2=G3*?A^V8Lgm9i(+D%w^G`|`U$odgT zhO@mnkmljy5utC=()%YCO>OM#0ULLoDlIcJF;I}Z_bG@lJ}nh$6u_8D70|@!YqkFW+ull6Jm7&u);%z00bjhCZ&tO98o1Mf{;w@0 zePj#SLA8a6sc?_7RdKG%-F4vD><hb_5E1 z`}EfWuX&Q`>sM2s#2!Q$YdH0XcYgWT+Z{AkJvca6fPaRTAWHwU?qOP-wa%V;(ag>) zNP98SLEGn07xae!($H|0N*d@HkT(o8=Kk>sF%gLcD}UfQ3*!ViEHo@CIXfjpCs!uJ z{ey!%9oVy++&tNv{iUQcE9nJ^06QaePg>sUZ7==!=-zet;j){wwBhbse)Yb6 z+kmPt;ZD+xXQ>UYmQ!))^&>mWkRuD@l#2xz;OJzhHMWl1aOBOOymDxF9-zN44>6&& z>nu#cSJ4uO4(=*X4u(xaFM7w&ISmcH*1_5N@Hi+ToXcjJHPH>m;TJx>fl---t56@X zTFBDGqJg2oBE=ox?@bo$*ix~EvY|3XOo)mSA%Xx%qCsxlSSXamfOgFFrMf&keZ%6D zRXajENXtT{CC7&W!cfxaA`-_1USw^oh4TkHTUpzI=rh{Ll^fP8{_gG;mM7`}z=Phm z4Eb=siuIrvvY~8KSrV;M7~Ip&32W!z?7as!7Z$+1 z{S+-O+4Ixaw*a$ju!XsW=@bpVg)BxMWbZnN@(`8)Pn1U1)ZErJwB!Pw@f5{0UN|Pr zcoMb)#0N%&QTo6ZDF%2q0pt6iR-gZCJKOd+v}Ny*v8YuA>R zKAuY?xHXV5L$OabgX*Ax^J~qER)!YQG(#I;-t*d0^aC5FC^n^@>KR=H(d4U|! z{5{rLdw%-nPA()$l31fNpm$sl9lZ0vft~*t>-xt{T_YOO3lXB4l`E>6Y*H8l+mHNv ztnHnhtiaVpgT*B?m)M+=;)3EeD4IYIwhiqwzq~X#f#!$UhzW-5M}+(NLVrA590V!-Ty1Q9(}aK^(&#(R zF|n8#@DhZB|BCgSivt~HyQPX*NRO_(T)yC8& zGj<34hIv~3phD4&k_bhG#FMP21hlSkBHmDD8F{!# z;+>@C=EdtKySk^`k#niC9SbI5rTbsppm1WetxIY;QE?P|=a^!2`Kok3yO|#PoLC<~ zs?a=1>!XKNeXx-%P&lA-FmSl$#W#NR0{d;L+!ffXnGrH9GNW{dfYb_#Qxp%P#?ZjP z5Y2~o@T1puQ-V~yv1pH$=I&v^iCj!Eydr{40@zxS8x74sFfkA@*$}N&P|2398w-=Y$j$nvvykn85TFls9xgr_T3L|V z!ra;!uBEf_5gJ~!`|UTjr}~(hu>-PjkYYiQH>Kjx+sfRTo1$Wbl9?>b8-o&syY|vw z?WI+U%xrJ#!*0RgT9KVYGs5r*_w({{Lv;)c3}OZZWbA(J)%_a_A-E_U%61mjrl@wD zas`u;)3GBJA(`u=eN3BSSt;U1$4E>~478kwl3s3Hf}h6F3Q9AhA}JA)RJSCIw4E(G z^fnb6VQ&sG&IWBw5L{2&ki}lq6OJ3WEb3Wg*=SGapk0!*QgrZwg##B2@E5LyK9fD6 zOwDH}CnmssaaDCX3p_!+p+{}gR-(l267DYAk}JDn5?X1++YxIKLD*2+GVPIFE);RH ztBJ~qO$##_sCm>WU4G||Qskx}@x(Y1P2aSU>xrcsE7P=a`TA!gvtmX-k6nsima0L$ z(rpN(m^g0eclZy++^P~NEbRfHF|`qoLMqW2=@B06j|GP;>2B|6Z||N``grp}3_cwg z%QbM>bS9HswU8os^se2CU)$lDwLWj`Udf1vqp$DDawlF;D|1nhSiunQOuVp6oT3TQ zm>Lsvt?@+XlX^HgrMYuMM!<4+Gt$9=ICOOmF5=!mOlZI1(YQT(vqrM&Is->tOsA^ALd-&+yY+du!OAmXk<8m{j97pb+{PJRlQ?%Oe8H1pbJumUN zy$^3(zuh=)6nu(Okxa>}_hG8Vw&{z9zM=vml4Qmj5PV(tIBdPt_z#3j)u#dtOqFG4K9R(v8OWj@5~`l>E}f2ULH7e|dlXdD6}mD>a(q(XZQ z#od2-d#YL8`7^iLO~cbsx+ zn+^C-&7@-9k|pRj#{C~RhK6DT+`pl~44Jb8$}|(AF7dLH<6$5FurZ3>-mB`Vskt?>~FJ&bK zS@k@)c;UuV$+gX!%IKL^;#@c1JOA~ukB?pLaa(od&9`1vx)uNJ&YeeMT{C^5YtRh! zLlbE@5dc)x=`W9ccI@k`%|w=751UY94_uG?*G?(18!wbUmwtuA@fgcZj5Czhct>L$ zp`{>X_u@Ccdh~FiKVzV~wJq&fKk9mG@e){`#c112wcgO&P20AwOIJ|IwCPz3m($qd zX^TG`6b1!08>+p_97*97J0Bet2fdI@!HdIX4#XU7!hE@OmC0V|{-3<@A_&L?rl<4H zxnm#x_2P)5?D7$46gCq*;L63D!b`oy#DzlJ2(ri+Y5`9!7Pe{DQF8?pl$!MSk5GI| zh9lxX>%SU}yNu(lJf~~qJT@4*OhTIF+U+~V^JGXtqz@XE4eQSg~C@DpTVav72*a|ivCPG%3cwW!yDFu2Lxro&^ ziGi%{31Np>2EYNa7uws}FnGnb0}fzf;I%I{4t{Ybqnpt=)IIaP_U>ohVwSoJ02~FH zAuYteE_D+qYHbNqfdA z`{KX<`-8Lno;h1yKl?zHH}C@QV7$PuuwC@Q-TsD^h~kKN9X31cihKa=mLxQaQ=7~{`kzyKqm+K z2S!E(^adduv_o?yN1&J_#t1!&YBt61;X1u)a7$-kFu8C23W3MF-<>;q_QH*aY;DG+qYt7IiQRBpw3VGso1>Lo0CoWD+|v>nVGU)Wq6vvlv%e|zT-mpa9s z_OQ3NCyHH7k8#<+cMJ-p$!1y~Tt9#2^y%+}GX!UsZ{A#9sOIL~b?3kM%SWdgV79=k z3|%H^dJLeb6u!Q)WThe`e|-PTi;sI`)D~WL;LW33$+D&zVC=ioERtMVjbjIo>Xequ zoCc>#C7P!d!_;=>Rih)rFl;8FF*0jr>J8752F_;cC({5rb3O(^I#J`8Rybi&!$yW; z4z_k+yUL_X*gyU$;D7Um$_0kLZc+{GLJ#K-n0bi5kG;Z-($JLA2@T}tWAXR^EqZ4t z`8-^AUNE0Qppe?9Bj*12O1;?W%vo2EBIa7AlI+yi1m^yjp$8`dFxz4(?L12*m;7#Y}c} z`RaJLo-=>?U;pynmo+lb&8u8jDd67y{imOtxGnapeh}+`>51J935iq*)Gv8sF~=VM z?Ls{Y$ zViO*(oNwrV^8Kg3fA^yc!!mI?z`fxLOj}NT@Vh^JE|-hia_Dsd12dUST^7g_#lVbQ z=_2yIu2w%wQavt!9B#&7#L}fvaexNX#0tXahU8|1N@HofeEM>uC7{V!1~~)3zKBYp z%CR1m{Q}KKu1+Jc&{rX`#6pXxbCoG0NphuTz(lkT%!qRpLVtNIXaRF0EKeB@W1ZkI z$@FFh`d5xvQ6d=xQCNXr{8~%YN$vb=~&ObQ>5L6pUE|sCxLHezHH$d+-)>wtxH6Ra~wt#v~AMbdnl1&wAyqEqx21~e0Vdl`Qnr(>?|=9llk_n)6JvO-QD#hp~Z526X2$*G1IA@n@n)27Fd zI7!ntrys1s4P}BX@r zFfKXR;y9vC7Lnb|doh)eWip3D?weZR>kEp|8JMML@j98&Ao&7hYwq30V3?pi2ygcA zWSkW*j8=s5ML}p~vZZqP1s(STZ7|m#M}X;a0O%1uhOn%iWl5fxyxvX=cYwBE{qb9p z$|JFK$Ns|{t4T0yIs4fMfBFj()ftAQ?slBl@rSD6W%6vwSfN}k85xi(v?Sqju6`&C z!jDx$oX+2^6y6_Y_J32{EtyU&)BZ3r=dl^162ji&HO<~shX3VG6 zD6B_L;Mp_2#hnlthvw#N#`KtwWAPBg?1ECl(FRpRHxM7wf}FQz#G~3T;OeVyWSZh>9njMBaw60T2GeD%;?) zcQ_D8Ig|K!<|@&sIMs-m&d@KRp(myb^|GFE#+XMPFV~M5@@a_ z|Kr>d9tai)OsuV^MJE__RK!}<)joxxCp)^nfzb>Xb>qgewb#-jxn&HV?kM5 zJmiDSkU1YWq=u11lIpg^&gJ5ACQ=+rF`gOPF3!#{@8JhdD16b@Rt9vOaT*cID48iH zpaB$XP+d(dEyck`Rdcmu8X<-}J#JzW!ALS18et6qCY%W1WzwB}u;k%!?m4hB&U3?g zxQdo6btNsVDqr9x4~HhqYd3EP7JP>OQM6ThlK+5W7a z^~;@^w1Rg;m}fHM$<3rXND&c*%nmfmOYmRe0$SdYsX8aRWR#3!C@C{Gsve(bk%OOyuiRNb2N0^a`LjcwiGsP`L zB%5PR>6H^iK}7_jrh+O}NFK0$l@^4EERhpg`gQ4p|2(FAQn-%(9KHxNH zc~2&F8XjNrSYFY~WY#QuA*nA(!L~7j6v@EiRDuf2p5#I0&ias0sIvr=70oS4^I*kB zDzGY(78WFlrGnKP%kmij`+oo*9JFHq literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_luvdisc.aif b/sound/direct_sound_samples/cry_luvdisc.aif new file mode 100644 index 0000000000000000000000000000000000000000..3cc0cc74443e2ff7b4c29adb9a17bf1c37c9b847 GIT binary patch literal 2456 zcmX|DX;T~7742@dcB!?4ShXO)W?zg=V#YHQFB#X=FjeEJ${$GOZ_HoFm*iV2`7oc7 zN-|50lTJ!zY$+KS3X#hx3oV#+Q4JqQ0TOL5s#8bM=1oX#O7T=ZW2i5A6^H z18bd};ZKsguOjt}^Y#h9KUCSMNULjdo6hF5na6$6<#bobU-;+qV!&_LE8Jl1@elFP z=$Pqk-0eMxIbAlNZh22XE9@jr*_r#=SG7TnDn474Msq*s90;)Vx-ry9H3Yhoet+r+ z7}(5;Fu*Tec6fTn>9)8pj$E@vo^G=< z>=K5}M~g@1xxP5eCQIMH6-T~uZoO#^JGcG=A9K>rySgFW?piT`;eSN!*R`=T*F7Zk zyhzcdbp#&w_4Zh0CI1!ZUc)A^lw?%ki>sT1w{c){g&G3Q-h^v_RHoqgqZ`-Wfm zPghPIL%QWZEZ47nN-rYfwfZuU8DPqyJJgl_*RyQT{0#ro_h+tdAu3#-;=)T|u3b5L zi#+eUcb@HNd%1M1IXq%WB#omZhW(XH_e_8FCE3!XRc5X1DYCu=0Dqm`c9<1h$S+1fLDbAUkr^W5#AvB7J5$NK5Z=-z(OJ$uU)-U-(_r^l7` zg}tV0WMWVg-G~a{#_KgqgK|;Ljp1hOG}SrXS6&22w|XOg2b9-^mDK|5)ddt41$uH~ zy#ucsQTvTh;@gG1Z&rA+SZ?!m)wjXU`+?YZJKCE);lotJ*by`y0IFX$pT4a2d-zf= zmDUV`hJ-XxfaGSYd?}XhBBVHP_e=3CugJ8+o;}IhJNQjZ1WW7TT&mpGX(}Da0Yf4# zjb0ZnX)Rx(r>4q_$u?}49|)EXPAC?cf8KfY_`++;RJ{Rt?Zn#CC>n$CT?x6xrfZB4 z*RKcJ2QN^k?#!{JpMHNRk9iU~M<*SQIlJl?lpWD2*q24KiI!=TPOi#2#A})e!a7;P z;g)2YQVlFA5>*#jgDN&lMar(%FdDT`(dg@VlxC@^(VLlaMPt!aB#S1^b6Q^O(Zao5 zU$3b)m#r2)H+9mNmi|C&lj#CY&9>UB<+`0JQXxO#+EDr^%_-|)ZmQ$3d=ofsvpv>S zV<->i?B(FMg9lBmdo0l)f1T(3J5&1E2K!qLLM+T^ueUE6!`!np;d!o!7gz1+KU zA0#E=aR}XA$E%XR@b7}(4l8y$+tV9~+Nl@Ni_FtZx3Hu2Bz~+wC8^2LT+OCxx<|S* zS&2G1Fb0*pg8CZ)PNp0E(HwRkIdkEpxZ3wGkXY32j_d8&IEl(RV!Y|klz=eqpE~SOdk1v_(L3Q4CdCXe2%#QZI8!st@eQNFk&_!migk;k zS`ey;06|Alz!ab~$#{&~qlqe&Xi>jhmcuoPotW|;5 zN)-(&HZ?41(*j5avj!oW$ZGNaaD%iODpkz#NhR0;kf8WO&__rxG@K}tb88a{Fsonr zBOrko{|zS=2P3W@z6VyFI({`({sCv=hCRCtKw&_1zIAc}L1S|5Jw0_>BP0O9~AMpLtfUcE-T@CIi@avBg443Vsn z7vzS#k*h?pgco=bVvt11T&v3VE;0hQqG_ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_machamp.aif b/sound/direct_sound_samples/cry_machamp.aif new file mode 100644 index 0000000000000000000000000000000000000000..ddeaf22c81bdc9e8b2fc9cf967382932cc328214 GIT binary patch literal 8256 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 D?L(!| literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_machoke.aif b/sound/direct_sound_samples/cry_machoke.aif new file mode 100644 index 0000000000000000000000000000000000000000..97065ee091843f311b696253355af32eefbec550 GIT binary patch literal 6782 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_machop.aif b/sound/direct_sound_samples/cry_machop.aif new file mode 100644 index 0000000000000000000000000000000000000000..d92419e849098d9b78f837fa11af265e0b013e93 GIT binary patch literal 6696 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 Wl|Zk26!2dS(hmFs7Ne12^#1{S@rqyo literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_magby.aif b/sound/direct_sound_samples/cry_magby.aif new file mode 100644 index 0000000000000000000000000000000000000000..12f3dc88954efdc31b687435fad093092caa5e4b GIT binary patch literal 7218 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 YjN;38U%rn|Dzuk}!Rr3}qjKf{00F7#cmMzZ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_magnemite.aif b/sound/direct_sound_samples/cry_magnemite.aif new file mode 100644 index 0000000000000000000000000000000000000000..ebb9103d908328b7398fa494043f8de4dd6d7bb9 GIT binary patch literal 9610 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_makuhita.aif b/sound/direct_sound_samples/cry_makuhita.aif new file mode 100644 index 0000000000000000000000000000000000000000..38d7f4b4430059d72c6470ee51e2d6a0f1ead226 GIT binary patch literal 3704 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 Gx&1#g()zjp literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_manectric.aif b/sound/direct_sound_samples/cry_manectric.aif new file mode 100644 index 0000000000000000000000000000000000000000..18a8f4666fb239cc087ac1d03ad0308b40b2ba52 GIT binary patch literal 10492 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 OVE6B@gt5Y+iSmD9Lxng1 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_mantine.aif b/sound/direct_sound_samples/cry_mantine.aif new file mode 100644 index 0000000000000000000000000000000000000000..d1840aafa9b725e27e570cc9d3e745f4c5408ea0 GIT binary patch literal 7884 zcmYLOS9Dz0b)8-?eK3RR7z}y`2!J2~f*>dskrG8JqTFOVUWq^K@BHS&Yh`7v{5VdL zlQ>baWi?yH5+#x%DN!USP;BVE12dR{>Akn?^9GbLOBC?tz5DJx=iGhv-uLXKmtJ78 zY9~&fKYRAnr5Er!OU+{A%0IG1W72oV@Hc+WU%dP>{-+sXv3|w=6@Fvm!>Rmx`SQin zxc{H%KKk*-@R5y{Ts6-MmzUPI>@K&@9}cBMrI6LMk!U)cbS=5;K5sCXisk*cZu(3c z^W1^N?BbT)7mB6Q(+YYnS3C07 z%A%Af|Kaa{G&a)E!u{rh_f|whb&YYK&mRbe!jVWKlD+xof4{ma?rLl>8nh~zR3zf@ z3w-;h@4vm6X>09lupT{ms7n)x2JwRHAOH5o9H;-(g^^>rQVP?>r|f?3{r4V+tgUTz z)*5C2A(zMEOyKaJ>WRUw#yXwc=SFq{$!k|W zyZ5Bf)!1k<)~Hn?>BhY$$dN1b_{!sa=THCcZ(e9qN=0S2XFsqxxjFgyH;Jb6Lt29p zQE80dyNR1u_a{F5GGG}z+}Ub1sjIp33oA%nH24TPzwqMN2rk#uxGE(QUjFP}ym6qv zy;-l5E6UR|t1A!ix|@Gqm-O`abkx@xRa)ob>ZU6cOu47rx^ox$jTo~^UYeR)+IIK@ z$+;U|bB3b+zM>gCg!mK9VS;_BI1@i!wxR(!!(X&i6(>UF5SfJNq7gAd<+S zzB)%byTp&)UC!kTNOehGYcXi0=CKpavd!1unD$V;p$zd=Sv2(0`7y=Jzuk>i$>sb2 z4S(0Sc@Ff3UBuNjmwb z$zqm9tc;S^AaZK^TYp-ktE@6MDVxLQ4<12G-S0ilmsxBMm-z^awqaC&=;0>|yu8L@ zFtTZJ`CLa&cWsO3Kd!l{QaN}SkF!zCI*$6hOWcH(3Hb3xivS?F% zSDa$k_~X1r>wMzW)}rWX2r*y4@w$*eqjxRVU_}+E*!xtRn>TLy^QkRoRA*^|kTY#Zr#zyNSwZ?+*F=3JFFO@g}~Rq>}L`BI5cePzKSg zt1CQNT-x?X6mq5Ts5RuOvDRv}(x$|Q6BQSonw$5V{SLvA?sl8S%>9Oe3ZF0MGd0H3 ztrvcB`ME=~sjI8eWOjFUbBo<)0Dd&t&Ws$@EPhHmVap!fm-a>i%9BS2I_eu@<8w=E zUYSa!5)Ji6vhAn(`|53~xra2Y+Zzm(dP*Umd~0HH)lTr0EcKi?*4JIU{lC9^lN3IY%y!0!Au)py!z1=n0g83LKAa&U4LrjZz_r5%v)T=o1@XTu0jU1{PkWu8}o2ne{s1-oht0 zHd$p<5tql~R-4DhT6DU20>I!*Fq^2HFXuZhojBIfQmf?`@;pA9!$7bv6b2^da;apX zz?V~XW40VNhKlcb_Ps8`qjRmLs6 zgg;ys(Gc_v7gI%uG#Z}Y&qHPoZqB3;5(EX1t&lJ~9DfxuX%<}-vkFqcaUM&?ifIP4 zS>wKtP*TO*Tg+zBR|*BbSd=O7Yxz7DYB}%6Qfc?{MCGtQk5Pr(T$UOTfdyY&mGgzv z1mI#;IbX;ZGKfX4R1Uj+T%k}XC?YFNfXiH|Od1boRJK~c0rG$fL#lLoLU@EmEGnlC zZe^84Qduz=5-K%~CJADeq;8z#BlxHmrm~R6gLoF=>GVha@MR;&bIkxgd3YYrCedAeDl$A1z|Hk007-zyOI5WPS>V#e`sJhry(lOr-! z0)<|$XOIE|M0V{tToYpuzCh91QY%kJBMIlm4p%4;3XororMcdqSNPFsH&^X^0j?qV zJef*aXVas{2JTO9Gq{W$Qf_Fd7qcP>9zO{H$TK}0*eF3lj8)=DczGvWU6spaK@SjW zgTQvN~Bz$H>;KdfC_;Cs)t`&%TKyO+tc$Y0bgEgHF2_H z89`X8tf>w^*(g)l@wifRXG0a6FXr?4?ETeE7J|#I)+jZ44KI((hmaWF#2+S-6IWd| z!{SxD`qYVIXumA+>ib{p8H@go9~7P&%D#a0DB zzV6YRo3yptZ{nGH8<7Pu|NdL|Q^tmBbLPe;0MmA3tz1_sPygn#Jq_N^v>pH)TBJ%T zeDL-nzqSRPua&ddS+W!r!J{4;%r^fvpae|TqU(Yg5L z#KToErs3g3Kr7|!7q3oixx)xIyIAw=#WN$Fo#rOj_#4+fZVZX0&F(|PMHe$k)~~;T z^qO=vvV>DR)Y}PirPS=*`OTe(CqlP^H&Q!bZvDU4CS8Ey-b1a{of$9>H{!kU$(;zA z=P!Qw!*eI((_a&`Z+rGW14~gzM!pBYx9;pP^fZ!Px-uREaQ@)pnZuod&0V{XKrsCE zUv`vjecuO9X^|(Bso)|wP2k}>$e-W{7CBV6yL&)yqgSphp@M%z@rbW)JLvWC!V@&d zp|)3k{>sTQ76x?z*_I|JfBj$Irt_UIK0A8Yytz$m0^1}1_{uFmo`3P_^I+GpykvbY zXefy7Jx;T0`xp}ZCb$xVd zS=jNDpLUupfroSR8%~i}CYBX%-}J>B&!Hcw=RtzqMC6mDsjCyo<{y0jh2sMWqT!)f z-fA*SCtsT^cK__>moF)1W+z=G4u|VokAMDEu=dhL%NCfOPOng+tkF7RpMCDss?_uM zHl$k60f~ko!_?zdM(_P40eGzxEQ8C-^L9VMt=j0_*+h}i3JkBxfBD(6uuk}ZNNj_( zrkVPDA@ksE+{(W{&d`Y(wOj@i6=gstOlteXZ2Rz$7B2V?Z!Qo6ocBl)LqSv6dx8A_!$rPk!z3tN3<6Uh4f_!1`?N?u)0*<49^$r{- zzAa|4_h;^0UoYYLc%rGhz1ae?3KEODyzW8wt_4wnsAwf>92>v#yVs{mIrLNwDC^K+ zRBMgezIyeY+o4jKi-0r4TqfnBF@N&`R%NhgEGI{CA5BylSXg}fRb*hWt1T0zj!25B znB{CEbVumoe&9Q4REW;Ew7$Kwe=x6766BiKdJ=mo%yc>IPsE~}M-`782gvdHcJO%UHmBS;xXhtUE<1jd+uS#Q(Z+69WS^MG&2EGJY-g<~0#QSDi+GZ?D0K0<#$lse1l zZ`g}VwJMQwpG04(9Ik7WARnTYe5cu@Cah$GEqibL%ZHmX3#tK~T|k%0tVW6F`Ype? z2`n0a64S;o1cI+l>>ISuR8Vz9If$gq-u-mZscmXBS%F^YlUZ@S+O+Y(2Y7z0SBh@X zYNb|&89*p~yX@B05&9Bo12@2Cp~*#TD9Ac6IocGU<>@cJ+}WN+o!1Fz{guv{fBfx^ z5^a}VC9g8J+iao?qk%|HLyz-hQtCo{UY_Wbu3DY-y3l2)ae@Vb{KV5K1+xvL+Cn@| zeLjet{awTbHL@OtRdPz}8#{X*KX_k;t&+*B8ai9`9+U=g99(AD5=KR%q|_AZ8tbf} zTik(;Hf12Pi%0h}2u^#uij8f>Oo@xqo7tgPp`WkpW{V|GGnyHK3b_D+6A6EPZF<`Q z?19A6xx>VMi^0I=M!C18g-d0TPL&l3xq8rI&ODg)#u!4wD(gp%4}h?_b@EcKO0LMS z0IMWa=87 zcON;RrU4T>8I&IgF1!WGpHw2QVuPYfr81&ELT)vp1~jAMMIDIwi`a3SuBEy4IF}a8N)bz|+HJP}+eXo@)dw8C77G zf~qLi=zJ0u52IhZP!3wa>bA!X?ZkypJu#S?caTBG7-vP`3%bpbV>&nZrG2&1-${IR zST6qJqCA<1Cr~}f>=Ka#cgkJv1>bPlbJf)CAm4xo)xgKj{Ff6`%OK*4>YN?C!6)Z? zBygb+5C@Q)#A~vYG(2apbR93QkwHgxOIuT;CgMS#Z+m4hl}thCG8T@-P>;#yQi68h z`kZ}>ZDgpZ*tO}Zi8=C}tvrSmFlY;%T-GOMy~h5Yb0-FyD|$hK()Hi^=W75*vmUb) zK%ub;a6=N`{2tM61T&@mM_2~+%i6s0``JVj>>|>>0>D@x8O_;m6Bp~THW=yc(303V zqVn|D*I+-iw2&!8sLe=}_32G*KYTdYu90QSZsRc&I91O^Ub~a z4e7zVq!P|O6r|nZ_rMrZjGa8%(|-y~wt)O?PEKvz`~$ei00<&^UWF$!3q(Erx2`y< zkBs&95a3BCr{>lvm#c6Hk?v8LF*eb|8{_L>3%TWY;U;$WwlqVJX!4I2$XN9!W#+Tg%{VBsD>D;_3RnVo?|-=2*;i$CyK>mDNjCk zD9Vlk=yvv*I1p)6>h5qV>K$K0 zw-eih8-b!on_d_=%$opjLgkX)&XtmztI_&~7TwDKd}@#4?RYtdOOkPP^u(pw?fZsL@npd|$yGVMew3jqrtYDi%vE%Rf0;^ zRTFgA376-&Ejp9r$pa({H5Iw@kjjtnsR=%R$O?ZJH>Ef8dA_^I9XLIZK-2C;c|`XoDkFsJhK6&X zJ-sa*!UuF#z%cNp(a|Q?rfjsSO*wmTF%EC~8gSK!~jHeE)fNJtE~qXyAho^0HE6VHplrKE6+pBXx=qJVj>!-kb8 z6xO4y7hZ%Ol}^r*M-GA9Zv@MM_8c8CB%qZrAvRVv{FO5Y>Z3V20DvVCfzQC_S(qqXQLTlhJI2fW9{+6>U|Pj@jV>kSqK0%6)@ z?Xl*`!Xu^+T1mVy1*?Z#F>sO|NM0P$5PR`NSUhkB_*-QW#5xz;gtzc`frhR4eK4Ry zzFd_gmhU`FNN71Y$*}|X;fcj{$BqnI0x(p`xm}%E2owT)0luI@bVNMO(Vh-JEJ2Az z(^UX@11`aK&WQBod|pGT!V9sk-4#HNbK?p5m(UiPGv~*SbmLHj_?Ty9`r7n7zGrkT z#ViWewluk!L`1bw+Szmn2L5Knam9)U$5h;E*c|%jhKF!c0U?@&4X%<=3rwZctV6w> zA|5L;`8kpWb~XIm@E}3?(*5zdhZC@9I$Ap5@z%o2#xci3&`JAkdz1~y_*5b=@Z^bz z4aOQl5M7+Y4B9|vRbW;|I2x54k)xL@g>H|}Ays)g86n6#z$`9LWUE(K5D+LvJ}wV! zm8WUc&`_omJ-zXYeq$FCJd2E8LQdjS#6`W=Y6}&Ml0cZw15}5xZH`nc1WWfRV5m+y zT7x{`N(rtjWx||M$YFYwj55n}eccz|TVJO56Gww}%;OU2tcL~f0mw5}HJxlVyTgcNa0`Mwp&#k& zg;7YJM2U7TNvMj+3n~mI3<`%2M0+oqo3`-PBq+|FqndOzZhrhNS~9bB5FMgtg!=$= zGAPj#&kr5d?0NQtM_XId3!CWrHp>=7rn0 zR)iCk{9k`!&?--Ji0#DuU{_&V36GvU-sn6y;^O#WP~xih&~+5m4eC46ZZNs z94I_J^dQit#!Wuiv0)ol3a-^DTG=4VOl+~TMC!N4NA#=vPSH?XR}jWmZb1ds%nA4ou&g^#to?~tHUYWz> z(B@zuu$H%39mT52W`nqc61E#fY}icZT)}Ss@5Gobu|{jXpkHHLsR|aMy2Wx3eZAD? z>|A^6iewvCaD{M%i74p*{%;}(mPAjMMDZjeC^BzeJrQpvqQu#gO%0QSG{?(4mp{b>VOsdSWP@%jdL4oWc?br)xteJ2Dc9{Kj ztK&vBOqxkM$6sz<@*HP%v{Dxwf1K`<80K{Sl);4KdCqR{C3<8P%kl8V)k4d`mT;Ni zU@V5^W1cG)oE&enn@y_+B3ml4tjMx9>-wQ0Wa=_mV7F})9oD_e}477Str!?nymqGPG+{R;SurKvi&Vb+Rfz zu56cA9#;6ErUD{lBX$v~m(baZD@5z`w#*%lQU5PjI)F z*7BOi>k)mG<=l>>d9YSoC~nx?exHoBV^S5Ptra*#U)$QS!8mfj zqrm|8@-m8e2faby!RuVNj{8Dq-yH-3+Z{yf{QH^|$yI!=;m$Wj$3T8ZlB3Nhx1B@# zFE9DwB0M#;|MZ9*EX-f%BUgCm^O@e5<;96_y!zQ<|E@b}k7AVO?nZL*_*muBEp~A9 zUwJK<`A0?=xpi><+CU!D!Ji!;1pH}={TrQa-nBtT-aJ_~scT>4u?SC0G=PZ?U*}f=fAH7hwr#HZ2D*d!Zd05$5!kXt}?RoQ04yEME%4%t&i>>Rg6>f z7ZYy|zj=~5`F830-Wx-2bXIm(jQ+uhJCgfh9iy;c@mD9Oa5W&}Y<=}zR`d{9OwZsI zxEQ#f{Bl=uQ3mh}ut#&svYmSgEUSbhdF4+lMg_^sD7$}#6n!m6YdWTYe~JWhz5Y)~ zh7?AjHIj0(rUGYzc<^_)0cp+)@VwhixBax{5XhrWeYZN95r__WA@lsFQ36><@`S}C z(53G#mXdZ@p$Nj_5v;@_v~Q(aF|S9H0D?^fnUsm2?e3`>CCA)3NL50H0T|#H#jm(7 zA02{R-~{*8<3|5x)Shaao*mO#d+8dVgEWG**;8fpWF+MDma!JwTQzZk?KLwWJjI6M zdWgFe}m-MZuO8co0n1CPrzSCCi+74AL^kjyc_gFwOcUA38et8{F+%C#KGqsAlZc^I{CKL zL_&aN#HDNVbHY_@xLEb4k;fB*6ZQC6T*uWg05}T+#zCSxrX56XY$7;OFO(ku<98!t zl^2zVE5_IF4C7$>!Ls50*l5_FUY(lmj*gB+qPvf#r`kWiH6D#Nzl^^)85tcR(tA30 z{@N%Y=*JhwLxTg*r}F7SD;66-P_7;?mORmz*DFcOGY5f4)B}X3AC$eZsLlsOq6o2F z)l3q?0^7g8GuNa#9xdUTG6BkL}HsDrD#P>sTkqK#|BrS>2YMu3FUBoUu%K*k2> z6-dh6;NvFvB)}QUzBmz~(V#zk_~;NmL;gkqVP&|ua3zF@q;#qa@(WinqCQY}@;nR< z%WDu=3u=P}@XkQK;M9Vrs09R4sFyJKZlD>;W&}bQT?KOJ0TzCr;pq`kE6NH%&^q1q zlf+l4;nk5#h2s?<;j9?U*pZf@{{U`%cDxMmhMc5Xdj2AU@-8hKNOTB`=%%n1i^|d6 zS!hJGMRkf3o!lI zP#~C@j4z-b$GpgZY4~aYP7oGp7sUa!_v@tnHLSsVpQZbE(O)1=e*l|CsB2*2v!~$85DJwqBgz&l0t+@Dv`tbA`}03!$y@}b!-x6(?M|D zOio4%BH5(cEO<(hC3Iacmn%RDS}L?0z?>>#dx!cRiMEf^Xub&KEUG0MMSNp}E1EeO zi=0&3Mtq3`rE49XniD7IFEEkNDo6-67)Esq%Hg`T4&Osv6BQmaA}E6+V|z#;D!dti zAOrlBz0Vf zb06zg)kazfx+RUMAM+NlRoq-M1=4&psEYaJ?}60(`!gB`bhUsU1?nPNJJTQu>S6QQE>5UU zSBag7+v1x?E{v#oi`Ql1MZJK6A%Q85okw5j)C7?gi5pbnE|4X73M2I1vxt)3+u4!$ zy4gH)I*Zz;ig*xQq+V?cmf9@XL6>-R*sybW9$1)Wl3_Zd2&d;i}ZMQetT-ku9nEu{sAF(v*<4r){ aV83w5SM){psO2!+JYg;SQl;7&@ENG+B|izCUF$1^_hj2(Mk@|J%x=j0FMAt#S{ z$t0N^kDZKn$BQIOqBcqtC2=P~5+wG$u{O5ue78v}nsN1MkSKIjSKa&7z2A4=e(!_d zFih|t-+1Tkx39nV8~o3>85TVk8Ot@>zhA?5w0C~{;qUOr`#Qt?p8Y-kV{vhZpC5ks z+qdxiHS``etvUa3EVcR{tEt>aTlxAI$%cAkt*b3QQMIkxwO;M>M4$b!%2^kBytJ6M zI(9a#j{JSaqTQ@8!b6Y4^P=VSE*D+C#Fow3dSSF1?>6wH<``J-`G$5%?r<*d_V*w6 z?Ka&0RkJg=(f3Dp%fpfUmd)S)q13wf$qsk>$LiR@qwa|=Zp(xAao4k4IJ&#%I-c9K z&XpH>CwsVshs7Z*Vj#G&X&p~2^T)FD&8a4C!=3biNLRMKK~EVOyx9mjr7Rn{yg z3RsQlUTfO%G!vvBe#uK$=Vm%XzF@{?aqgBiLoTH;cv9=)W}Y%Vep%`9ahc@{ctY8A zGTN5SU|uyFY+IVamXSqkHES2zdoGJ{#l%@Rt+-Xrnyv_EeFxq1CTn_#dr z-z0~mZr1{9>4Ey4`b09})87Mo)6+W+{RQg+ZLgFU*fZ4)(euK1uCWd9c4qPzwB49&JmbP!^@;jZruFrG z<(scFg^y#>;-aPx-?WBl8yn)-0ZdD~#hkQTc~qvQWL%TV7m9RmpUopM9 z(1o6F#q?g~3>Hh_ISYf2c1l>DNuaWqWndqBeE_ zCq2ZPu~2$NDN1A8?(6S{XD$cS(O^aix6)SgLBUzrX4qItl-B{=oYdH6gk;uU-_jiU zoTP55QZ8#Z?zP>eoW#dFo^nbQl4=0Z1KPr^l3U7kJe{26$kzveUQf9eFqh2ELd9#$ z8@(0TXUnjmX4P-ca)(bFB1+lg$alTXqRUn6`};+gyVME;uC8J;#Aa+hxe*j9La>qa z`w|O(To)c99?_0=osOqV?9wfn#R0BwouEDT=(P4{b%O(_bfC+_IBzp~0EogzZ9JTl z&Q!A@*Pd}YLsKy0HNbYKHPb@3c#|Q2|9NT zQ_WNW2A^*2I6Q>zeUAp51-BPR>YQ`i9KAtkXcB;ahW)Sf*aNLT?pTsGO zv7u}x$ZRvgOkyhi$MxRA<9=_wH(bWz_D#pz*-$uVn8M+SS`h}prZWh!`N+A3JnD`k^6t5C zqDBws@Yl$g$N@veW!|>}l&x6?)@g-y9jMFv&<+k3g;H3NVnD*@dd5wXZ|TqB!Ga^m zTnJ@I8c|b!_KM1#b?i8%v2*?PcN>N83eH{U8>eO8MQn0x?DY$CBQ69umeIPMw$f@= zH)8Q*HdiXw>WyYgX?Hr^Uazk=^<~q#-+g=M@ybp*U#_+KD#sZ(6Lz7VXN5cV+ z!;0u@WEf4wxZW%6a31dL9hrGi`indXs3Sn*5#QKGowSk!+rG*_tmI3>h%U%v)OF5l=>H6-nhTC zu}>RNdVQ8N=o4CAX=co)b$fkPV_4du!HCA|7yV~68V(!x*Ub>|c&&3EUOInrJRFcj z6UX*@ic(iH|Mls&j~3Uq5}85;#)V;z=B5cSzkb1Mzq)en#8}AhJ{qd8zojp`g_SEx z8%{y%cHx;r*N|h5?5Qz=C|Jy}zkvg-ffE?5dFaW*_o0i-iY@7l%9vzj^R% z^8hPTdJId(bva%3$+?-SG2Nw-Xyx43-@JmvGT^nE4V>C1xWK6OdW}BNU|g(_)_AnU zqctAk2VU>9@;cyEl&j6^XJ6fXiZ7)`8wfJ!&a_%>xTxtag-6XM6Ho2`E&kKGX%9Lf zvxeOs$F+B^{bFh;6m;4wMjgtHdaYK~TaA`Sem`89a)fJG?+A!LhoKQKG~h-0JAQ`D z!w!(X`Fpn)mSc1X2tg)M5-X%ua`-k`6ef=zX z>ZLu%SGYRePN&^g=;{?d{=>)L&#%Pdxl*;+Q8~BY@AG=xF1uv6Sp;5c$UYf4se9u6 zzdKnRdT%I7iI{bb^y_yJmf8Y8pA9t;#c%9)y#saolP{9~KCem<^PBjr=jBZoBQ2X4pkSH(H1faPCocbG0)xi#+xNLKn#Gy%rN3Y;(7f z84MBd-jV*uKz%D=85z)Y0>gvGf}lhlZ2yP2JDzNOIp1s${}NMyUt1EyB8UPvg3ReR zSfvM+g{1pGdoH5CTDcUR&L|m#?8f9{&~tSTY;0i*#L@BeW<>xMy9F|KNk|G0H^h$T zL;;*3`aU8jkr~jgT(~uTL1`gMUxX?DHy1|7*BQ1yd#1`&LBm1BK@gGNzAGTD`IEx> zO(gPjNL{jc89A?Pxp)j|4g}H^?YFbluD9EAF2S6dMOlVV@c@XHwF?TfP+F`Yo|81^FiKE=3)1ivlJQ1@$wx!q)D-sXr1&f=txE_$Eu7 zYlCvJ4{WqD5_g|(b|#X-rA`|pDf9Wh#Cyu&~X@l>QJ^^(LV*4sM#G;mpN$QRA zDsncM;B(Rv^)1_DQ1d;~EUjruuse=xOpDT)jkt!M^8}rMYT$ZCWb|8dhlp7Ov|z+C zQn^`4SLhQ|cOvOuT`?WM9(6Q9jC}Iwq(5|=ywoxW%&TBQFi&Y`v)1!@EA71}vMz>(v0?5un5&8e`YkA?1zdJrfW7SXr7Xuz_YXf{|0E2cQE#^i`o{* z@}J{;gFlai4~}*23P|w>-BC;bw}F?a4hW#DTB4e(~rsy>F9qNZjj3nJwydje~f z5tqVFKw0~%91H;Xci~)UomwDV)>6%mIHm!4MT7&$5D;~r3=}*@G(iuMD}9=lD_qka745aZp$IZgvDo>wQ;I}V4y5`e%Q zMJR(fOIKenWEgUcngt>fl(|E;{1uiAh8>#>7B97;9UGl0*Z^kY9{G77JdOJT`O?znpeyI3x--Bq92|Au)3`K8}Ay-11fJ7K!dE%Ip z8K;`gfJ2J0nM6JBFgf!3shpHE*eFmKz1WnApNCuvq(mtfhaB=FT$rFMMT^-6Vy~z-5V)bM-}1ab$zwXho(XPznF?I) zVy^CY0NG%S^cjrz3(|W+r9N?G?Q^gIXvEq64}f$y2i3j{u%BIdak&kTKC5LH0-;H(w;K(+_G|sEj3rNHDP^7IA=mpMW$xP@3d5}@1&>U7I zWhtPdfPq{R0&_soqKEhSdNt^0tQ&?~0M~>W!A$1-Nu;9?%Q%P4_hC0wh{lNPO}{~v zEfy3AKG^pJQn@frGt6S|_uxqY_#C+0B=?NWvItP6Dafx7Ekuz5H6eJO?*RiiET^g7 zgi;3SUmd_iQ;;(vsAYhPB8j@WD)t02dI32D2-h7;oE8NmD#m$HZ3!MbDS%^Qh5!hc zLrVcVf*ZPc(^}=+g0PO@j2vfnqI7_gi^-vFE%a#DSbItva3CG-SFI@6xRhnE5R4%M zIR-3ckJzCiY@lYdB_)#cNHc*Y4l>2q8t=Lj5w^cF&-C$GH*ArjgdjmTJJ?Parb7l)BN5 z%ER%I{zlc>MLM1BKTZnZkpd|A29fN(-I#xl1I)@*s~IJwaU3J7t%gJ%%zzs@nV!#I z-A{=~{H(~L{x}7xz=|@00>Vwz%7M7K$E2gFPO}ws#Rna3+#do zTf0V!v94Gw0)yo-V9=;R%N@fm%E(Fvfk)0LE(>&!lS$`|cAKG1C1=G2%7v-RWzU$F zDqDm~nZk4yDFwA;a|`jyWzj$i>otSN(X4VNqNeUrv2W7KuxYD=rK%ca7nu^P!8YZN zh^*hU8EQ3Xpd41;sv(=u1ExO93rwXgpay=pGmpECy`XE*+wDM4;)L1kMl9ac??Wd; z)H6MjsS0hW)kU?SiM!ikG()G&sqh&J1zpr*diafNcTiAhLRX>-PvIL3OVdzMrjHLO ld3%^=#Yy2>n_wf{tqg!OgsPp literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_marowak.aif b/sound/direct_sound_samples/cry_marowak.aif new file mode 100644 index 0000000000000000000000000000000000000000..279381bb56921c0fb3aacf00160126fe60b77ec1 GIT binary patch literal 7216 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 L_p(w4R``!26r`?km-#Jer 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_mawile.aif b/sound/direct_sound_samples/cry_mawile.aif new file mode 100644 index 0000000000000000000000000000000000000000..81b252b575e0b038942a08c555d70f3537cfbc49 GIT binary patch literal 5756 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 v=Zfs|0ppx9^m|@S62M_tpVZ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_medicham.aif b/sound/direct_sound_samples/cry_medicham.aif new file mode 100644 index 0000000000000000000000000000000000000000..dc85dd3b5973ac8397d2be1c3f5e652646fdd9cc GIT binary patch literal 8246 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 u@Nw<2gz`znmc@fADuRfK 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 O&wg4!#3dgFl=Hu}dZZoz literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_meowth.aif b/sound/direct_sound_samples/cry_meowth.aif new file mode 100644 index 0000000000000000000000000000000000000000..aaf3825d59b624e162f82ef66a6d904c18fda408 GIT binary patch literal 4796 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 OKjq2(-=F`#@Bc4`c}W=n literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_metang.aif b/sound/direct_sound_samples/cry_metang.aif new file mode 100644 index 0000000000000000000000000000000000000000..da544ce4d1265e31b02d53bcbce79215c1dd7787 GIT binary patch literal 9398 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 bSAKnOY^=P=@{jkQEkF7Gcb=E)sZ{?Bfb*8i literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_milotic.aif b/sound/direct_sound_samples/cry_milotic.aif new file mode 100644 index 0000000000000000000000000000000000000000..93a14161b66845fd3dee40ddb09ff9265c0696b0 GIT binary patch literal 19542 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 B5JUg~ literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_minun.aif b/sound/direct_sound_samples/cry_minun.aif new file mode 100644 index 0000000000000000000000000000000000000000..a55aa5631ac107230371f9eee838f0dac5c7c02f GIT binary patch literal 8004 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_moltres.aif b/sound/direct_sound_samples/cry_moltres.aif new file mode 100644 index 0000000000000000000000000000000000000000..2e038a3d7ee465ff1f64fa7ff8145320d1fdc573 GIT binary patch literal 11796 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 SLg)`QW)}irS1IUfIR6isslV|6 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_mr_mime.aif b/sound/direct_sound_samples/cry_mr_mime.aif new file mode 100644 index 0000000000000000000000000000000000000000..ff870dbc414f11c7bb9241d5f5c2abe6dd167567 GIT binary patch literal 9446 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 E51)o~hX4Qo literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_mudkip.aif b/sound/direct_sound_samples/cry_mudkip.aif new file mode 100644 index 0000000000000000000000000000000000000000..e8fa5c2121ff12fcb816853476d1ac5f4453ab00 GIT binary patch literal 3776 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_murkrow.aif b/sound/direct_sound_samples/cry_murkrow.aif new file mode 100644 index 0000000000000000000000000000000000000000..4beddff1effeeb0283a83476679cb636c3ec40b0 GIT binary patch literal 8370 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_natu.aif b/sound/direct_sound_samples/cry_natu.aif new file mode 100644 index 0000000000000000000000000000000000000000..e6e38d5cce656185284b311d4f1f0c1e4a78af60 GIT binary patch literal 5294 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 Mf8!W^^zEVl4MU(hQvd(} literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_nidoran_f.aif b/sound/direct_sound_samples/cry_nidoran_f.aif new file mode 100644 index 0000000000000000000000000000000000000000..b7c8a531790656137dbac8a774c31aecff83d009 GIT binary patch literal 4858 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 literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_nidoran_m.aif b/sound/direct_sound_samples/cry_nidoran_m.aif new file mode 100644 index 0000000000000000000000000000000000000000..08fc81c8b2e344885888e176d1b9c6830c2580c7 GIT binary patch literal 5216 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 Ir{R?U1G7~J761SM literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_nidorino.aif b/sound/direct_sound_samples/cry_nidorino.aif new file mode 100644 index 0000000000000000000000000000000000000000..9593513631831643d37646d28710fb4e5b57a503 GIT binary patch literal 6042 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 YIPmnmj3XKRo=~XqHGclxdHeP9f0wFxHUIzs literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_ninetales.aif b/sound/direct_sound_samples/cry_ninetales.aif new file mode 100644 index 0000000000000000000000000000000000000000..70c8cf528f1d7bea4de796b2c596c1bc9434a99f GIT binary patch literal 12174 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

$F6uOhh&;*3s<7!JmaGw?J?`@>!6 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 HW`_R-{mp|e literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_doduo.aif b/sound/direct_sound_samples/cry_doduo.aif new file mode 100644 index 0000000000000000000000000000000000000000..5700b91d92ac9e228335c6690750ffa340f93a73 GIT binary patch literal 9616 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 R1V{0i{M3Sp(L^EN{XcGRlXd_A literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dragonair.aif b/sound/direct_sound_samples/cry_dragonair.aif new file mode 100644 index 0000000000000000000000000000000000000000..38c3955ef43e33a61a1630de200db3995862427d GIT binary patch literal 8318 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 Ze2MX~oIgGOun=a%KOPjRPG^g({{x~nv4;Qv literal 0 HcmV?d00001 diff --git a/sound/direct_sound_samples/cry_dragonite.aif b/sound/direct_sound_samples/cry_dragonite.aif new file mode 100644 index 0000000000000000000000000000000000000000..d1e7b11cf3de0c9d85a63905db057db9ba4c914d GIT binary patch literal 9502 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