diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-04-09 11:14:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-09 11:14:37 -0700 |
commit | 84c5825c8ecc9804313ec3b1a8dcc0271ee4c2cc (patch) | |
tree | c90f705e43f2b1728ed1e0400312b7d6c5c81c21 /src | |
parent | 562dcc4bcdc14d5b6c0bb2a638410156945cdd41 (diff) | |
parent | 91f869d1e6ed1ef12ad4b2255d3762e3b1b51429 (diff) |
Merge pull request #589 from PikalaxALT/unk_debug_menu_3
Unk Debug Menu 3 and Start Menu Debug
Diffstat (limited to 'src')
72 files changed, 2766 insertions, 5703 deletions
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 9a1d0842b..55d500950 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -611,7 +611,7 @@ static void sub_80E0620(u8 taskId) // } // } -__attribute__((naked)) +NAKED static void sub_80E079C(struct Task *task) { asm(".syntax unified\n\ diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 4a48d1ecf..7babb3a19 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -690,7 +690,7 @@ void sub_80DC4F4(u8 taskId) task->func = sub_80DC5F4; } #else -__attribute__((naked)) +NAKED void sub_80DC4F4(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c index b4e18eb51..be033ae6d 100644 --- a/src/battle/anim/shadow_minimize.c +++ b/src/battle/anim/shadow_minimize.c @@ -129,7 +129,7 @@ void sub_80D0614(struct Task* task, u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_80D0614(struct Task* task, u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c index 6e0d0321b..8e3f0a8b7 100644 --- a/src/battle/anim/unused_9.c +++ b/src/battle/anim/unused_9.c @@ -45,7 +45,7 @@ void sub_80CFE2C(struct Sprite* sprite) } } #else -__attribute__((naked)) +NAKED void sub_80CFE2C(struct Sprite* sprite) { asm(".syntax unified\n\ diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c index 2700bfd27..a7e1883f3 100644 --- a/src/battle/anim/water.c +++ b/src/battle/anim/water.c @@ -51,7 +51,7 @@ static void sub_80D3874(struct Sprite *sprite) } } -__attribute__((naked)) +NAKED void sub_80D38BC(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 096bd878f..005dee32d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -4470,7 +4470,7 @@ void sub_8012324(void) } } */ -__attribute__((naked)) +NAKED void sub_8012324(void) { asm(".syntax unified\n\ @@ -6839,7 +6839,7 @@ void HandleAction_UseItem(void) gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } #else -__attribute__((naked)) +NAKED void HandleAction_UseItem(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 8f5ea7cae..6646d6bae 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -2850,7 +2850,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } } #else -__attribute__((naked)) +NAKED void SetMoveEffect(bool8 primary, u8 certainArg) { asm(".syntax unified\n\ @@ -5694,7 +5694,7 @@ static void atk24(void) } #else -__attribute__((naked)) +NAKED static void atk24(void) { asm(".syntax unified\n\ @@ -6484,7 +6484,7 @@ static void atk48_playstatchangeanimation(void) } #else -__attribute__((naked)) +NAKED static void atk48_playstatchangeanimation(void) { asm(".syntax unified\n\ @@ -6892,7 +6892,7 @@ static void atk49_moveend(void) } while (effect == 0) } #else -__attribute__((naked)) +NAKED void atk49_moveend(void) { asm(".syntax unified\n\ @@ -8498,7 +8498,7 @@ static void atk50_openpartyscreen(void) } */ -__attribute__((naked)) +NAKED static void atk50_openpartyscreen(void) { asm(".syntax unified\n\ @@ -9965,7 +9965,7 @@ static void atk5D_getmoneyreward(void) gBattlescriptCurrInstr += 1; } #else -__attribute__((naked)) +NAKED static void atk5D_getmoneyreward(void) { asm(".syntax unified\n\ @@ -10508,7 +10508,7 @@ static void atk6C_drawlvlupbox(void) } #else -__attribute__((naked)) +NAKED static void atk6C_drawlvlupbox(void) { asm(".syntax unified\n\ @@ -12631,7 +12631,7 @@ static void atk9D_mimicattackcopy(void) } #if DEBUG -__attribute__((naked)) +NAKED static void atk9E_metronome(void) { asm("\ @@ -12834,7 +12834,7 @@ static void atk9E_metronome(void) } #else -__attribute__((naked)) +NAKED static void atk9E_metronome(void) { asm(".syntax unified\n\ @@ -13097,7 +13097,7 @@ static void atkA6_settypetorandomresistance(void) } #else -__attribute__((naked)) +NAKED static void atkA6_settypetorandomresistance(void) { asm(".syntax unified\n\ @@ -13997,7 +13997,7 @@ static void atkC0_recoverbasedonsunlight(void) } } -__attribute__((naked)) +NAKED static void atkC1_hiddenpowercalc(void) { asm(".syntax unified\n\ @@ -14231,7 +14231,7 @@ static void atkC4_trydobeatup(void) } } #else -__attribute__((naked)) +NAKED static void atkC4_trydobeatup(void) { asm(".syntax unified\n\ @@ -14655,7 +14655,7 @@ static void atkD2_tryswapitems(void) } #else -__attribute__((naked)) +NAKED static void atkD2_tryswapitems(void) { asm(".syntax unified\n\ @@ -15210,7 +15210,7 @@ static void atkDE_asistattackselect(void) } #else -__attribute__((naked)) +NAKED static void atkDE_asistattackselect(void) { asm(".syntax unified\n\ @@ -15875,7 +15875,7 @@ static void atkF2_displaydexinfo(void) } } -__attribute__((naked)) +NAKED void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0) { asm(".syntax unified\n\ diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 134f6c18b..447909091 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -1008,7 +1008,7 @@ static void BattleAICmd_is_most_powerful_move(void) gAIScriptPtr += 1; } #else -__attribute__((naked)) +NAKED static void BattleAICmd_is_most_powerful_move(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_ai_switch_items.c b/src/battle/battle_ai_switch_items.c index e01c7b729..4dd7614bf 100755 --- a/src/battle/battle_ai_switch_items.c +++ b/src/battle/battle_ai_switch_items.c @@ -107,7 +107,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard } #else -__attribute__((naked)) +NAKED static bool8 ShouldSwitchIfWonderGuard(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index a3360096a..2f57bcd97 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -2528,7 +2528,7 @@ s8 BattleAnimAdjustPanning(s8 a) //_0807706E } */ -__attribute__((naked)) +NAKED s8 BattleAnimAdjustPanning(s8 a) { asm(".syntax unified\n\ diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 583690c27..d6e7ed4a7 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1438,7 +1438,7 @@ void OpponentHandlecmd19(void) } #if DEBUG -__attribute__((naked)) +NAKED void OpponentHandlecmd20(void) { asm("\ @@ -1812,7 +1812,7 @@ void OpponentHandlecmd20(void) } } #else -__attribute__((naked)) +NAKED void OpponentHandlecmd20(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 50ab1eb7e..881ec72fc 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -1459,7 +1459,7 @@ void sub_802DB6C(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_802DB6C(u8 taskId) { asm_unified("push {r4-r7,lr}\n\ diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index bd954ae8d..b7c0dce4e 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -539,7 +539,7 @@ void sub_8043740(s16 a, u16 *b, u8 c) asm(""::"r"(r9)); } #else -__attribute__((naked)) +NAKED void sub_8043740(s16 a, u16 *b, u8 c) { asm(".syntax unified\n\ @@ -1123,7 +1123,7 @@ void sub_80440EC(u8 a, s16 b, u8 c) } } #else -__attribute__((naked)) +NAKED void sub_80440EC(u8 a, s16 b, u8 c) { asm(".syntax unified\n\ @@ -1380,7 +1380,7 @@ void sub_8044338(u8 a, struct Pokemon *pkmn) } } #else -__attribute__((naked)) +NAKED void sub_8044338(u8 a, struct Pokemon *pkmn) { asm(".syntax unified\n\ @@ -1925,7 +1925,7 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) return taskId; } #else -__attribute__((naked)) +NAKED u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) { asm(".syntax unified\n\ diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 4fb236294..94454e45c 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -107,7 +107,7 @@ u8 sub_80C86A0(const u8 *string) return language; } #else -__attribute__((naked)) u8 sub_80C86A0(const u8 *string) +NAKED u8 sub_80C86A0(const u8 *string) { asm_unified("\tpush {r4,r5,lr}\n" "\tadds r4, r0, 0\n" diff --git a/src/battle_tower.c b/src/battle_tower.c index 8c44b71a3..8659f202f 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -514,7 +514,7 @@ bool8 sub_81346F4(void) // } // } -__attribute__((naked)) +NAKED void sub_81347F8(void) { asm(".syntax unified\n\ @@ -906,7 +906,7 @@ void SetEReaderTrainerGfxId(void) // gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; // } -__attribute__((naked)) +NAKED void sub_8134AC0(struct BattleTowerRecord *record) { asm(".syntax unified\n\ diff --git a/src/berry.c b/src/berry.c index 9313c458b..16b5b2b22 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1085,7 +1085,7 @@ extern u8 gUnknown_Debug_839B6CE[]; static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); -void debug_sub_80C2C18(u8 *name, u8 holdEffect, u8 holdEffectParam) +void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam) { s32 i; diff --git a/src/berry_blender.c b/src/berry_blender.c index 5d40ea321..cde189738 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -3276,7 +3276,7 @@ static bool8 Blender_PrintBlendingRanking(void) // debug menu goes here -void unref_sub_80524BC(void) +void debug_sub_80524BC(void) { ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/contest.c b/src/contest.c index 031cf768f..f7436c51c 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3891,7 +3891,7 @@ void sub_80B0748(u8 taskId) #undef i } #else -__attribute__((naked)) +NAKED void sub_80B0748(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/contest_effect.c b/src/contest_effect.c index 2932d8e6e..a5615851f 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -646,7 +646,7 @@ static void ContestEffect_BetterIfSameType(void) } } #else -__attribute__((naked)) void ContestEffect_BetterIfSameType(void) +NAKED void ContestEffect_BetterIfSameType(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n" diff --git a/src/contest_painting.c b/src/contest_painting.c index e90391469..28dd3def7 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -104,7 +104,7 @@ static void VBlankCB_ContestPainting(void); void sub_8106B90(); //should be static static void sub_8107090(u8 arg0, u8 arg1); -__attribute__((naked)) +NAKED void sub_8106630(u32 arg0) { asm(".syntax unified\n\ @@ -364,7 +364,7 @@ static void sub_8106AC4(u16 species, u8 arg1) } } #else -__attribute__((naked)) +NAKED static void sub_8106AC4(u16 arg0, u8 arg2) { asm(".syntax unified\n\ @@ -497,7 +497,7 @@ void sub_8106B90(u8 a[][8][8][4], u16 b[], u16 c[][8][8][8]) } } #else -__attribute__((naked)) +NAKED void sub_8106B90() { asm(".syntax unified\n\ diff --git a/src/daycare.c b/src/daycare.c index e26db531f..a77b6c5f5 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -592,7 +592,7 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP } } #else -__attribute__((naked)) +NAKED void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1119,7 +1119,7 @@ static bool8 _ShouldEggHatch(struct DayCare *daycare) return FALSE; } #else -__attribute__((naked)) +NAKED static bool8 _ShouldEggHatch(struct DayCare *daycare) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1398,7 +1398,7 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) } } #else -__attribute__((naked)) +NAKED static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c index c93ef74cd..24e0fa51b 100644 --- a/src/de_rom_8040FE0.c +++ b/src/de_rom_8040FE0.c @@ -89,7 +89,7 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) } #else -__attribute__((naked)) +NAKED void de_sub_8041024(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/debug/ereader_debug_menu.c b/src/debug/ereader_debug_menu.c new file mode 100644 index 000000000..aaffca383 --- /dev/null +++ b/src/debug/ereader_debug_menu.c @@ -0,0 +1,362 @@ +#include "global.h" +#include "debug.h" +#include "constants/species.h" +#include "constants/items.h" +#include "string_util.h" +#include "new_game.h" +#include "load_save.h" +#include "start_menu.h" +#include "mystery_event_script.h" +#include "berry.h" +#include "mail_data.h" + +const u8 Str_842E238[] = _("タマゴ"); + +#if DEBUG + +extern u8 gUnknown_Debug_845DAE1[]; +extern u8 gUnknown_Debug_845DAE1End[]; + +size_t debug_sub_813C404(u8 * dest) +{ + size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; + memcpy(dest, gUnknown_Debug_845DAE1, size); + debug_sub_812620C(dest, gUnknown_Debug_845DAE1); + return size; +} + +extern u8 gUnknown_Debug_845E3E0[]; +extern u8 gUnknown_Debug_845E3E0End[]; + +size_t debug_sub_813C430(u8 * dest) +{ + size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; + memcpy(dest, gUnknown_Debug_845E3E0, size); + debug_sub_812620C(dest, gUnknown_Debug_845E3E0); + return size; +} + +extern u8 gUnknown_Debug_845E422[]; +extern u8 gUnknown_Debug_845E422End[]; + +size_t debug_sub_813C45C(u8 * dest) +{ + size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; + memcpy(dest, gUnknown_Debug_845E422, size); + debug_sub_812620C(dest, gUnknown_Debug_845E422); + return size; +} + +extern u8 gUnknown_Debug_845E402[]; +extern u8 gUnknown_Debug_845E402End[]; + +size_t debug_sub_813C488(u8 * dest) +{ + size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; + memcpy(dest, gUnknown_Debug_845E402, size); + debug_sub_812620C(dest, gUnknown_Debug_845E402); + return size; +} + +extern u8 gUnknown_Debug_845E606[]; +extern u8 gUnknown_Debug_845E606End[]; + +size_t debug_sub_813C4B4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606; + memcpy(dest, gUnknown_Debug_845E606, size); + return size; +} + +extern u8 gUnknown_Debug_845E619[]; +extern u8 gUnknown_Debug_845E619End[]; + +size_t debug_sub_813C4D4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; + memcpy(dest, gUnknown_Debug_845E619, size); + debug_sub_81261B4(dest, gUnknown_Debug_845E619); + return size; +} + +extern u8 gUnknown_Debug_845E712[]; +extern u8 gUnknown_Debug_845E712End[]; + +size_t debug_sub_813C500(u8 * dest) +{ + size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; + memcpy(dest, gUnknown_Debug_845E712, size); + debug_sub_812620C(dest, gUnknown_Debug_845E712); + return size; +} + +extern u8 gUnknown_Debug_845E797[]; +extern u8 gUnknown_Debug_845E797End[]; +extern u8 gUnknown_Debug_845E7B5[]; + +size_t debug_sub_813C52C(u8 * dest, u16 itemId) +{ + u8 * ptr; + size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797; + memcpy(dest, gUnknown_Debug_845E797, size); + ptr = gUnknown_Debug_845E7B5 - gUnknown_Debug_845E797 + dest; + ptr += 3; + ptr[0] = itemId; + ptr[1] = itemId >> 8; + debug_sub_812620C(dest, gUnknown_Debug_845E797); + return size; +} + +size_t debug_sub_813C580(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POTION); +} + +size_t debug_sub_813C58C(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POKE_BALL); +} + +size_t debug_sub_813C598(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_CHERI_BERRY); +} + +size_t debug_sub_813C5A4(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); +} + +extern u8 gUnknown_Debug_845DDB2[]; +extern u8 gUnknown_Debug_845DDB2End[]; +extern u8 gUnknown_Debug_845DDD6[]; + +const u8 Str_842E23C[] = _("ガイブ"); + +size_t debug_sub_813C5B4(u8 * dest) +{ + u8 * saveBerry = (u8 *)&gSaveBlock1.enigmaBerry; + u8 * berry = (u8 *)(dest - gUnknown_Debug_845DDB2 + gUnknown_Debug_845DDD6); + size_t size = gUnknown_Debug_845DDB2End - gUnknown_Debug_845DDB2; + int i; + + debug_sub_80C2C18(Str_842E23C, 0, 0); + + for (i = 0; i < 0x1000; i++) + dest[i] = 0; + + for (i = 0; i < size; i++) + dest[i] = gUnknown_Debug_845DDB2[i]; + + for (i = 0; i < sizeof(struct EnigmaBerry); i++) + berry[i] = saveBerry[i]; + + ClearEnigmaBerries(); + debug_sub_81261B4(dest, gUnknown_Debug_845DDB2); + return size; +} + +const u8 Str_842E240[] = _("ENGLISH"); +const u8 Str_842E248[] = _("TOURNAMENT"); + +void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId) +{ + u32 _itemId; + ZeroMonData(mon); + CreateMon(mon, species, level, 32, FALSE, 0, TRUE, 9999); + SetMonData(mon, MON_DATA_OT_NAME, Str_842E240); + SetMonData(mon, MON_DATA_NICKNAME, Str_842E248); + _itemId = itemId; + SetMonData(mon, MON_DATA_HELD_ITEM, &_itemId); +} + +void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail) +{ + u16 itemId; + ClearMailStruct(mail); + itemId = GetMonData(mon, MON_DATA_HELD_ITEM); + if (ItemIsMail(itemId)) + { + u8 * name = mail->playerName; + u8 * id = mail->trainerId; + u8 nameBuf[8]; + int i; + + for (i = 0; i < 9; i++) + mail->words[i] = i + 1; + + GetMonData(mon, MON_DATA_OT_NAME, nameBuf); + StringCopyN(name, nameBuf, OT_NAME_LENGTH + 1); + + write_word_to_mem(GetMonData(mon, MON_DATA_OT_ID), id); + + mail->species = SpeciesToMailSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_PERSONALITY)); + mail->itemId = itemId; + + } +} + +extern u8 gUnknown_Debug_845E443[]; +extern u8 gUnknown_Debug_845E443End[]; +extern u8 gUnknown_Debug_845E467[]; +extern u8 gUnknown_Debug_845E4CB[]; + +size_t debug_sub_813C740(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + u8 dataBuffer[11]; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); + dataBuffer[0] = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); + dataBuffer[0] = 3; + SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer); + dataBuffer[0] = 255; + SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); + + StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1); + SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); + + dataBuffer[0] = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + return size; +} + +size_t debug_sub_813C810(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +size_t debug_sub_813C888(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + mon->box.checksum = 0; + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +void debug_sub_813C904(void) +{ + debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW); + debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND); + debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY); +} + +extern u8 gUnknown_Debug_845E4EF[]; +extern u8 gUnknown_Debug_845E4EFEnd[]; +extern u8 gUnknown_Debug_845E506[]; + +const u8 Str_842E253[] = _(" そら カードイー"); + +size_t debug_sub_813C93C(u8 * dest) +{ + u8 * src = gUnknown_Debug_845E4EF; + size_t size = gUnknown_Debug_845E4EFEnd - src; + struct BattleTowerEReaderTrainer ereaderTrainer; + + memcpy(dest, src, size); + SavePlayerParty(); + debug_sub_813C904(); + debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999); + LoadPlayerParty(); + + memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer)); + + return size; +} + +const u8 Str_842E25E[] = _("ポケコッコ"); +const u8 Str_842E264[] = _("ticket"); +const u8 Str_842E26B[] = _("{PKMN}"); +const u8 Str_842E26E[] = _("wrong {PKMN}"); +const u8 Str_842E277[] = _("ribbon"); +const u8 Str_842E27E[] = _("DEX"); +const u8 Str_842E282[] = _("message"); +const u8 Str_842E28A[] = _("egg"); +const u8 Str_842E28E[] = _("RAM seed"); +const u8 Str_842E297[] = _("trainer"); +const u8 Str_842E29F[] = _("clock"); +const u8 Str_842E2A5[] = _("item"); +const u8 Str_842E2AA[] = _("goods"); +const u8 Str_842E2B0[] = _("potion"); +const u8 Str_842E2B7[] = _("ball"); +const u8 Str_842E2BC[] = _("cheri berry"); +const u8 Str_842E2C8[] = _("TM01"); + +const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { + {Str_842E264, debug_sub_813C404}, + {Str_842E26B, debug_sub_813C810}, + {Str_842E26E, debug_sub_813C888}, + {Str_842E277, debug_sub_813C430}, + {Str_842E27E, debug_sub_813C488}, + {Str_842E282, debug_sub_813C45C}, + {Str_842E28A, debug_sub_813C740}, + {Str_842E28E, debug_sub_813C5B4}, + {Str_842E297, debug_sub_813C93C}, + {Str_842E29F, debug_sub_813C4B4}, + {Str_842E2A5, debug_sub_813C4D4}, + {Str_842E2AA, debug_sub_813C500}, + {Str_842E2B0, debug_sub_813C580}, + {Str_842E2B7, debug_sub_813C58C}, + {Str_842E2BC, debug_sub_813C598}, + {Str_842E2C8, debug_sub_813C5A4} +}; + +extern u8 gUnknown_Debug_845E306[]; + +const u8 gUnknown_Debug_842E350 = 16; + +u8 *const gUnknown_Debug_842E354[] = { + gUnknown_Debug_845DAE1, + gUnknown_Debug_845DDB2, + gUnknown_Debug_845E306, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E402, + gUnknown_Debug_845E402, + gUnknown_Debug_845E422, + gUnknown_Debug_845E422, + gUnknown_Debug_845E443 +}; + +#endif // DEBUG diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 7a66ded57..c936af864 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -76,7 +76,7 @@ const struct MenuAction gMatsudaDebugMenuActions[] = {gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems}, }; -u8 unref_sub_80A9B28(void) +u8 InitMatsudaDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 17, 18); diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 3880c7b7b..f40d5556a 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -1335,7 +1335,7 @@ static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) return 0; // PBLOCK_CLR_UNKNOWN } #else -__attribute__((naked)) +NAKED static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) { asm("\tpush\t{r4, r5, r6, r7, lr}\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 340ef2f17..549842c6a 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -2,6 +2,8 @@ #include "global.h" #include "constants/songs.h" +#include "constants/moves.h" +#include "constants/items.h" #include "battle.h" #include "debug.h" #include "link.h" @@ -16,12 +18,67 @@ #include "task.h" #include "text.h" #include "trade.h" - -// berry_blender.c -extern void unref_sub_80524BC(void); +#include "start_menu.h" +#include "string_util.h" +#include "new_game.h" +#include "script.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "credits.h" +#include "event_data.h" +#include "berry.h" +#include "pokedex.h" +#include "mori_debug_menu.h" +#include "cable_club.h" +#include "field_fadetransition.h" +#include "wild_encounter.h" +#include "battle_setup.h" +#include "safari_zone.h" +#include "fldeff_cut.h" +#include "fldeff_flash.h" +#include "rom6.h" +#include "fldeff_strength.h" +#include "pokemon_menu.h" +#include "fldeff_secretpower.h" +#include "data2.h" +#include "item.h" +#include "reset_rtc_screen.h" +#include "pokeblock.h" +#include "ewram.h" +#include "gba/flash_internal.h" +#include "gba/m4a_internal.h" +#include "berry_blender.h" void debug_sub_8076BB4(u8); -void debug_sub_8077CF4(); +void debug_sub_8077CF4(u8 x, u8 y); +u8 DebugMenu_807706C(void); +u8 DebugMenu_807709C(void); +void DebugMenu_807719C(void); +void DebugMenu_80771EC(void); +void DebugMenu_8077238(void); +u8 DebugMenu_8077D78(const struct MenuAction *menuActions); +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount); +u8 DebugMenu_8077C14(void); +bool8 DebugMenu_8077DB4(void); +void DebugMenu_8077EAC(void); +void DebugMenu_8077F40(u8 taskId); +void DebugMenu_8077F7C(u8 taskId); +void DebugMenu_8077FFC(u8 taskId); +void DebugMenu_807806C(u8 taskId); +void DebugMenu_8078A14(u8 taskId); +void DebugMenu_8078AA4(u8 taskId); +void DebugMenu_8078B38(u8 taskId); +bool8 DebugMenu_8078C80(void); +bool8 DebugMenu_8078CA8(void); +bool8 DebugMenu_8078CE4(void); +bool8 DebugMenu_8078D30(void); +bool8 DebugMenu_8078D7C(void); +bool8 DebugMenu_8078DA4(void); +bool8 DebugMenu_8078DF0(void); +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078F68(u8 taskId); +void DebugMenu_8079020(u8 taskId); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -280,12 +337,12 @@ const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; -__attribute__((unused)) static u8 gUnknown_030006B8[4]; -__attribute__((unused)) static u8 gUnknown_030006BC[4]; -__attribute__((unused)) static u8 gUnknown_030006C0; -__attribute__((unused)) static u8 gUnknown_030006C1; -static const u8 *gUnknown_030006C4; -__attribute__((unused)) static u8 gUnknown_030006C8; +static u8 gUnknown_030006B8; +UNUSED static const s32 * gUnknown_030006BC; +static u8 gUnknown_030006C0; +static u8 gUnknown_030006C1; +static const u8 * gUnknown_030006C4; +static u8 gUnknown_030006C8; void debug_sub_8076AC8(u8 a) { @@ -402,7 +459,7 @@ u8 DebugMenu_8076CD4(void) u8 DebugMenu_8076CD8(void) { - SetMainCallback2(unref_sub_80524BC); + SetMainCallback2(debug_sub_80524BC); return 0; } @@ -485,5567 +542,2207 @@ void DebugMenu_8076D6C(u8 taskId) } } -__attribute__((naked)) -u8 DebugMenu_8076E18() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._67 @ DebugMenu_8076D6C\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._68:\n" - " .align 2, 0\n" - "._67:\n" - " .word DebugMenu_8076D6C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076E30() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._73 @ gTasks\n" - " add r4, r0, r1\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._69 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._70 @cond_branch\n" - " cmp r1, #0\n" - " beq ._71 @cond_branch\n" - " b ._86\n" - "._74:\n" - " .align 2, 0\n" - "._73:\n" - " .word gTasks+0x8\n" - "._70:\n" - " cmp r1, #0x2\n" - " beq ._75 @cond_branch\n" - " b ._86\n" - "._71:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._78 @ Str_839BD5A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " b ._77\n" - "._79:\n" - " .align 2, 0\n" - "._78:\n" - " .word Str_839BD5A\n" - "._69:\n" - " ldr r0, ._82 @ gMain\n" - " ldrh r2, [r0, #0x2e]\n" - " and r1, r1, r2\n" - " cmp r1, #0\n" - " beq ._80 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " bl sub_813B79C\n" - " ldr r0, ._82 + 4 @ Str_839BD7D\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - "._77:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._86\n" - "._83:\n" - " .align 2, 0\n" - "._82:\n" - " .word gMain\n" - " .word Str_839BD7D\n" - "._80:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - " b ._86\n" - "._75:\n" - " ldr r0, ._87 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - "._86:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8076EDC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._89 @ DebugMenu_8076E30\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._90:\n" - " .align 2, 0\n" - "._89:\n" - " .word DebugMenu_8076E30+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076EF4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " add r3, r4, #0\n" - " bl Menu_PrintItems\n" - " mov r5, #0x0\n" - " add r4, r4, #0x4\n" - "._92:\n" - " lsl r0, r5, #0x3\n" - " add r0, r0, r4\n" - " ldr r1, [r0]\n" - " mov r0, #0x1\n" - " and r1, r1, r0\n" - " mov r0, #0xb6\n" - " cmp r1, #0\n" - " bne ._91 @cond_branch\n" - " mov r0, #0xb5\n" - "._91:\n" - " lsl r2, r5, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0xa\n" - " bl sub_8071F60\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x7\n" - " bls ._92 @cond_branch\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._94:\n" - " .align 2, 0\n" - "._93:\n" - " .word gUnknown_Debug_839BDC4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076F60() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._97 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " bne ._96 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl debug_sub_8076B68\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " b ._97\n" - "._96:\n" - " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n" - " lsl r2, r2, #0x18\n" - " asr r2, r2, #0x15\n" - " add r0, r3, #4\n" - " add r0, r2, r0\n" - " ldrb r4, [r0]\n" - " ldr r0, ._100 + 4 @ gSaveBlock2\n" - " mov r1, #0x1\n" - " and r1, r1, r4\n" - " strb r1, [r0, #0x8]\n" - " add r2, r2, r3\n" - " ldr r1, [r2]\n" - " bl StringCopy\n" - " mov r0, #0x80\n" - " and r4, r4, r0\n" - " cmp r4, #0\n" - " bne ._98 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8057508\n" - " b ._99\n" - "._101:\n" - " .align 2, 0\n" - "._100:\n" - " .word gUnknown_Debug_839BDC4\n" - " .word gSaveBlock2\n" - "._98:\n" - " mov r0, #0x1\n" - " bl debug_sub_8057508\n" - "._99:\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " ldr r0, ._102 @ debug_sub_8058C00\n" - " bl SetMainCallback2\n" - "._97:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._103:\n" - " .align 2, 0\n" - "._102:\n" - " .word debug_sub_8058C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8076FEC() -{ - asm( - " push {lr}\n" - " bl DebugMenu_8076EF4\n" - " ldr r0, ._104 @ DebugMenu_8076F60\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._105:\n" - " .align 2, 0\n" - "._104:\n" - " .word DebugMenu_8076F60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077004() -{ - asm( - " ldr r2, ._106 @ gUnknown_030006C4\n" - " ldr r0, ._106 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " bx lr\n" - "._107:\n" - " .align 2, 0\n" - "._106:\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C1 \n" - " .word gUnknown_Debug_839BB64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077020() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._109 @ gMenuCallback\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._108 @cond_branch\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._108:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._110:\n" - " .align 2, 0\n" - "._109:\n" - " .word gMenuCallback\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077048() -{ - asm( - " push {lr}\n" - " ldr r0, ._111 @ gMenuCallback\n" - " ldr r1, ._111 + 4 @ DebugMenu_807706C\n" - " str r1, [r0]\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._111 + 8 @ DebugMenu_8077020\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._112:\n" - " .align 2, 0\n" - "._111:\n" - " .word gMenuCallback\n" - " .word DebugMenu_807706C+1\n" - " .word DebugMenu_8077020+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807706C() -{ - asm( - " push {lr}\n" - " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n" - " bl InitMenuWindow\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - " bl DebugMenu_80771EC\n" - " bl DebugMenu_8077238\n" - " ldr r1, ._113 + 4 @ gMenuCallback\n" - " ldr r0, ._113 + 8 @ DebugMenu_807709C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._114:\n" - " .align 2, 0\n" - "._113:\n" - " .word gWindowTemplate_81E6CE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_807709C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807709C() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._120 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._115 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._115:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._116 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._116:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._117 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._120 + 8 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._118 @cond_branch\n" - " mov r0, #0x7\n" - " b ._119\n" - "._121:\n" - " .align 2, 0\n" - "._120:\n" - " .word gMain\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C1 \n" - "._118:\n" - " sub r0, r0, #0x1\n" - "._119:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._117:\n" - " ldr r0, ._125 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._122 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._125 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x7\n" - " bne ._123 @cond_branch\n" - " mov r0, #0x0\n" - " b ._124\n" - "._126:\n" - " .align 2, 0\n" - "._125:\n" - " .word gMain\n" - " .word gUnknown_030006C1 \n" - "._123:\n" - " add r0, r0, #0x1\n" - "._124:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._122:\n" - " ldr r0, ._129 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._127 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n" - " ldr r0, ._129 + 8 @ gUnknown_030006C0\n" - " ldrb r2, [r0]\n" - " ldr r0, ._129 + 12 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " add r0, r0, r2\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._132\n" - "._130:\n" - " .align 2, 0\n" - "._129:\n" - " .word gMain\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C4 \n" - "._127:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._131 @cond_branch\n" - " mov r0, #0x0\n" - " b ._132\n" - "._131:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._132:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807719C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._133 @ gDebug0x839B9BC\n" - " ldr r0, ._133 + 4 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItemsReordered\n" - " ldr r4, ._133 + 8 @ gUnknown_030006C0\n" - " ldrb r0, [r4]\n" - " str r0, [sp]\n" - " mov r0, #0xd\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " strb r0, [r4]\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C0 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80771EC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._135 @ gStringVar4\n" - " ldr r1, ._135 + 4 @ Str_839BE04\n" - " bl StringCopy\n" - " ldr r4, ._135 + 8 @ gSaveBlock1\n" - " mov r1, #0x4\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r1, #0x5\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0x13\n" - " mov r1, #0xc\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._135 @ gStringVar4\n" - " mov r1, #0x14\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._136:\n" - " .align 2, 0\n" - "._135:\n" - " .word gStringVar4\n" - " .word Str_839BE04\n" - " .word gSaveBlock1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077238() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffe8\n" - " ldr r1, ._139 @ Str_839BE07\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " add r0, sp, #0x4\n" - " mov r9, r0\n" - " ldr r1, ._139 + 4 @ Str_839BE09\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " add r1, sp, #0x8\n" - " mov sl, r1\n" - " ldr r1, ._139 + 8 @ Str_839BE0C\n" - " mov r0, sl\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " mov r2, #0x0\n" - " str r2, [sp, #0x14]\n" - " add r4, sp, #0x10\n" - " mov r6, sp\n" - " add r6, r6, #0x12\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl PlayerGetDestCoords\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r6, r2]\n" - " bl MapGridGetZCoordAt\n" - " mov r8, r0\n" - " mov r0, r8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r4]\n" - " ldrh r0, [r6]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r6]\n" - " ldr r7, ._139 + 12 @ gStringVar4\n" - " add r0, r7, #0\n" - " mov r1, sp\n" - " bl StringCopy\n" - " add r5, sp, #0xc\n" - " mov r2, #0x0\n" - " ldsh r1, [r4, r2]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, r9\n" - " bl StringAppend\n" - " mov r0, #0x0\n" - " ldsh r1, [r6, r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, sl\n" - " bl StringAppend\n" - " add r0, r5, #0\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " ldrb r0, [r7]\n" - " cmp r0, #0xff\n" - " beq ._137 @cond_branch\n" - " add r1, r7, #0\n" - "._138:\n" - " ldr r0, [sp, #0x14]\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._138 @cond_branch\n" - "._137:\n" - " mov r0, #0x1c\n" - " ldr r1, [sp, #0x14]\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._139 + 12 @ gStringVar4\n" - " mov r1, #0x1d\n" - " ldr r2, [sp, #0x14]\n" - " sub r1, r1, r2\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x18\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word Str_839BE07\n" - " .word Str_839BE09\n" - " .word Str_839BE0C\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Exit() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSogabe() -{ - asm( - " push {lr}\n" - " bl unref_sub_814A414\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTamada() -{ - asm( - " push {lr}\n" - " bl debug_sub_8075C30\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKagaya() -{ - asm( - " push {lr}\n" - " bl InitKagayaDebugMenu_A\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMatsuda() -{ - asm( - " push {lr}\n" - " bl unref_sub_80A9B28\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNohara() -{ - asm( - " push {lr}\n" - " bl InitNoharaDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWatanabe() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._141 @ InitWatanabeDebugMenu\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word InitWatanabeDebugMenu+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EndSequenceDemo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._143 @ sub_81439D0\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._144:\n" - " .align 2, 0\n" - "._143:\n" - " .word sub_81439D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HallOfFame() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl GameClear\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSizeComparison() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSizeComparison\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennNationalDex() -{ - asm( - " push {lr}\n" - " bl IsNationalPokedexEnabled\n" - " cmp r0, #0\n" - " beq ._145 @cond_branch\n" - " bl DisableNationalPokedex\n" - " b ._146\n" - "._145:\n" - " bl EnableNationalPokedex\n" - "._146:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077434() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x4\n" - " bhi ._165 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._149 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._150:\n" - " .align 2, 0\n" - "._149:\n" - " .word ._148\n" - "._148:\n" - " .word ._151\n" - " .word ._152\n" - " .word ._153\n" - " .word ._154\n" - " .word ._155\n" - "._151:\n" - " ldr r0, ._157 @ Str_839BE0F\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0x0\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word Str_839BE0F\n" - "._152:\n" - " ldr r0, ._160 @ Str_839BE12\n" - " mov r1, #0x2\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0x0\n" - " b ._159\n" - "._161:\n" - " .align 2, 0\n" - "._160:\n" - " .word Str_839BE12\n" - "._153:\n" - " ldr r0, ._163 @ Str_839BE16\n" - " mov r1, #0x3\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0x0\n" - " b ._162\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word Str_839BE16\n" - "._154:\n" - " ldr r0, ._166 @ Str_839BE1A\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0xff\n" - "._162:\n" - " mov r2, #0xff\n" - "._159:\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word Str_839BE1A\n" - "._155:\n" - " ldr r0, ._168 @ Str_839BE1E\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - "._165:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._169:\n" - " .align 2, 0\n" - "._168:\n" - " .word Str_839BE1E\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_807750C() -{ - asm( - " push {lr}\n" - " ldr r0, ._170 @ gUnknown_Debug_839BE24\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._171:\n" - " .align 2, 0\n" - "._170:\n" - " .word gUnknown_Debug_839BE24\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetRamBerry() -{ - asm( - " push {lr}\n" - " ldr r0, ._172 @ gUnknown_Debug_839BE24\n" - " mov r1, #0xc\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._172 + 4 @ gMenuCallback\n" - " ldr r0, ._172 + 8 @ DebugMenu_807750C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._173:\n" - " .align 2, 0\n" - "._172:\n" - " .word gUnknown_Debug_839BE24\n" - " .word gMenuCallback\n" - " .word DebugMenu_807750C+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleBGM() -{ - asm( - " push {lr}\n" - " ldr r2, ._175 @ gDisableMusic\n" - " mov r1, #0x0\n" - " ldrb r0, [r2]\n" - " cmp r0, #0\n" - " bne ._174 @cond_branch\n" - " mov r1, #0x1\n" - "._174:\n" - " strb r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._176:\n" - " .align 2, 0\n" - "._175:\n" - " .word gDisableMusic\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleForDebug() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitBattleForDebug\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_NationalDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._178 @ 0x181\n" - "._177:\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r4, r5\n" - " bls ._177 @cond_branch\n" - " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._179:\n" - " .align 2, 0\n" - "._178:\n" - " .word 0x181\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_HoennDex() -{ - asm( - " push {r4, r5, lr}\n" - " mov r5, #0x0\n" - "._180:\n" - " add r5, r5, #0x1\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " add r0, r5, #0\n" - " bl HoennToNationalOrder\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r5, #0xc9\n" - " bls ._180 @cond_branch\n" - " ldr r1, ._181 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gUnknown_03005CE8\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CreatePKMN() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitCreatePokemon\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPokemonGraphics() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeePokemonGraphics\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenSeeTrainers() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeeTrainers\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMori() -{ - asm( - " push {lr}\n" - " bl InitMoriDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTomomichi() -{ - asm( - " push {lr}\n" - " bl InitTomomichiDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenAoki() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenTaya() -{ - asm( - " push {lr}\n" - " bl InitTayaDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenNakamura() -{ - asm( - " push {lr}\n" - " bl InitNakamuraDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenIwasawa() -{ - asm( - " push {lr}\n" - " bl debug_sub_8138CC4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Teleport() -{ - asm( - " push {lr}\n" - " bl Overworld_SetWarpDestToLastHealLoc\n" - " bl sub_8080E88\n" - " bl ScriptContext2_Enable\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_EditPKMN() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl NakaGenderTest\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80776B4() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._183 @ Str_839BE4C\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " lsl r3, r4, #0x1\n" - " lsl r5, r4, #0x19\n" - " lsr r5, r5, #0x18\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x19\n" - " add r1, r5, #0\n" - " mov r2, #0x1d\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._183 + 4 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " ASR r0, r4\n" - " mov r1, #0x1\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, sp\n" - " mov r1, #0x19\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word Str_839BE4C\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077704() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xffffffec\n" - " ldr r1, ._185 @ Str_839BE53\n" - " mov r0, sp\n" - " mov r2, #0x11\n" - " bl memcpy\n" - " mov r0, #0x13\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " mov r0, sp\n" - " mov r1, #0x15\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " ldr r2, ._185 + 4 @ gUnknown_030006C8\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x13\n" - " ldrh r0, [r0]\n" - " lsr r0, r0, #0x8\n" - " mov r1, #0xf\n" - " and r0, r0, r1\n" - " strb r0, [r2]\n" - " mov r0, #0x0\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x1\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x2\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x3\n" - " bl DebugMenu_80776B4\n" - " add sp, sp, #0x14\n" - " pop {r0}\n" - " bx r0\n" - "._186:\n" - " .align 2, 0\n" - "._185:\n" - " .word Str_839BE53\n" - " .word gUnknown_030006C8 \n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_8077760() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r2, ._190 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " add r5, r2, #0\n" - " cmp r0, #0\n" - " beq ._187 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._190 + 4 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._188 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._189\n" - "._191:\n" - " .align 2, 0\n" - "._190:\n" - " .word gMain\n" - " .word gUnknown_030006B8 \n" - "._188:\n" - " mov r0, #0x3\n" - "._189:\n" - " strb r0, [r1]\n" - "._187:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._192 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._195 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3\n" - " beq ._193 @cond_branch\n" - " add r0, r0, #0x1\n" - " b ._194\n" - "._196:\n" - " .align 2, 0\n" - "._195:\n" - " .word gUnknown_030006B8 \n" - "._193:\n" - " mov r0, #0x0\n" - "._194:\n" - " strb r0, [r1]\n" - "._192:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._197 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._201 @ gUnknown_030006C8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " LSL r1, r0\n" - " ldrb r0, [r4]\n" - " eor r1, r1, r0\n" - " strb r1, [r4]\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_80776B4\n" - "._197:\n" - " ldrh r2, [r5, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._198 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._199 @cond_branch\n" - "._198:\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x13\n" - " ldrh r0, [r2]\n" - " ldr r1, ._201 + 4 @ 0xf0ff\n" - " and r1, r1, r0\n" - " ldr r0, ._201 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x8\n" - " add r1, r1, r0\n" - " strh r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._200\n" - "._202:\n" - " .align 2, 0\n" - "._201:\n" - " .word gUnknown_030006C8 \n" - " .word 0xf0ff\n" - "._199:\n" - " mov r0, #0x0\n" - "._200:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SwitchBG() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " bl DebugMenu_8077704\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x6\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x14\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._203 @ gMenuCallback\n" - " ldr r0, ._203 + 4 @ DebugMenu_8077760\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._204:\n" - " .align 2, 0\n" - "._203:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077760+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807786C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._205 @ Str_839BE64\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " mov r0, #0x19\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " lsl r0, r4, #0x1\n" - " add r0, r0, r4\n" - " add r0, r0, sp\n" - " mov r1, #0x1a\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word Str_839BE64\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80778A8() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._211 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._207 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n" - " ldrb r0, [r2]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strb r0, [r2]\n" - " ldrb r0, [r2]\n" - " bl DebugMenu_807786C\n" - "._207:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._208 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - "._208:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._210\n" - "._212:\n" - " .align 2, 0\n" - "._211:\n" - " .word gMain\n" - " .word sWildEncountersDisabled\n" - "._209:\n" - " mov r0, #0x0\n" - "._210:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ControlEncounter() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._213 @ sWildEncountersDisabled\n" - " ldrb r0, [r0]\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._213 + 4 @ gMenuCallback\n" - " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word sWildEncountersDisabled\n" - " .word gMenuCallback\n" - " .word DebugMenu_80778A8+1\n" - "\n" - ); -} - -__attribute__((naked)) +u8 DebugMenu_8076E18(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076D6C, 10); + return 0; +} + +void DebugMenu_8076E30(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839BD5A, 2, 15); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + sub_813B79C(); + Menu_PrintText(Str_839BD7D, 2, 15); + PlaySE(SE_PINPON); + data[0]++; + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + } +} + +u8 DebugMenu_8076EDC(void) +{ + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076E30, 10); + return 0; +} + +const u8 Str_839BD90[] = _("ジュンイチ"); +const u8 Str_839BD96[] = _("ダイゴロウ"); +const u8 Str_839BD9C[] = _("テツジ"); +const u8 Str_839BDA0[] = _("バレンシア"); +const u8 Str_839BDA6[] = _("ハルコマチ"); +const u8 Str_839BDAC[] = _("RAYMOND"); +const u8 Str_839BDB4[] = _("TIFFANY"); +const u8 Str_839BDBC[] = _("くまxちえ"); + +const struct { + const u8 * text; + u32 flags; +} gUnknown_Debug_839BDC4[] = { + {Str_839BD90, 0x0}, + {Str_839BD96, 0x0}, + {Str_839BDA0, 0x1}, + {Str_839BDA6, 0x1}, + {Str_839BDAC, 0x80}, + {Str_839BDB4, 0x81}, + {Str_839BD9C, 0x0}, + {Str_839BDBC, 0x1} +}; + +void DebugMenu_8076EF4(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 11, 17); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4); + for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++) + { + sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); + } + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); +} + +void DebugMenu_8076F60(u8 taskId) +{ + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (input) + { + case -2: + break; + case -1: + Menu_EraseScreen(); + debug_sub_8076B68(); + DestroyTask(taskId); + break; + default: + { + u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags; + gSaveBlock2.playerGender = flags & 1; + StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text); + if ((flags & 0x80) == 0) + debug_sub_8057508(FALSE); + else + debug_sub_8057508(TRUE); + DestroyTask(taskId); + SetMainCallback2(debug_sub_8058C00); + break; + } + } +} + +void DebugMenu_8076FEC(void) +{ + DebugMenu_8076EF4(); + CreateTask(DebugMenu_8076F60, 10); +} + +void DebugMenu_8077004(void) +{ + gUnknown_030006C4 = gUnknown_Debug_839BB64 + gUnknown_030006C1 * 8; +} + +void DebugMenu_8077020(u8 taskId) +{ + if (gMenuCallback() == TRUE) + DestroyTask(taskId); +} + +void DebugMenu_8077048(void) +{ + gMenuCallback = DebugMenu_807706C; + ScriptContext2_Enable(); + CreateTask(DebugMenu_8077020, 80); +} + +u8 DebugMenu_807706C(void) +{ + InitMenuWindow(&gWindowTemplate_81E6CE4); + DebugMenu_8077004(); + DebugMenu_807719C(); + DebugMenu_80771EC(); + DebugMenu_8077238(); + gMenuCallback = DebugMenu_807709C; + return FALSE; +} + +u8 DebugMenu_807709C(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(+1); + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 0) + gUnknown_030006C1 = 7; + else + gUnknown_030006C1--; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 7) + gUnknown_030006C1 = 0; + else + gUnknown_030006C1++; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return gDebug0x839B9BC[gUnknown_030006C4[gUnknown_030006C0]].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +void DebugMenu_807719C(void) +{ + Menu_DrawStdWindowFrame(0, 0, 14, 17); + Menu_PrintItemsReordered(1, 1, 8, gDebug0x839B9BC, gUnknown_030006C4); + gUnknown_030006C0 = InitMenu(0, 1, 1, 8, gUnknown_030006C0, 13); +} + +const u8 Str_839BE04[] = _("ID"); + +void DebugMenu_80771EC(void) +{ + u8 * buf = gStringVar4; + buf = StringCopy(buf, Str_839BE04); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapGroup, STR_CONV_MODE_RIGHT_ALIGN, 3); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapNum, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_DrawStdWindowFrame(19, 12, 29, 15); + Menu_PrintText(gStringVar4, 20, 13); +} + +void DebugMenu_8077238(void) +{ + u8 sp00[] = _("X"); + u8 sp04[] = _(" Y"); + u8 sp08[] = _(" H"); + u8 sp0c[4]; + + s16 x; + s16 y; + u8 z; + u16 sp14 = 0; + + PlayerGetDestCoords(&x, &y); + z = MapGridGetZCoordAt(x, y); + x -= 7; + y -= 7; + + StringCopy(gStringVar4, sp00); + ConvertIntToDecimalStringN(sp0c, x, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp04); + ConvertIntToDecimalStringN(sp0c, y, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp08); + ConvertIntToDecimalStringN(sp0c, z, STR_CONV_MODE_LEFT_ALIGN, 2); + StringAppend(gStringVar4, sp0c); + + for (sp14 = 0; gStringVar4[sp14] != EOS; sp14++) + ; + + Menu_DrawStdWindowFrame(28 - sp14, 16, 29, 19); + Menu_PrintText(gStringVar4, 29 - sp14, 17); +} + +u8 DebugMenu_Exit(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenSogabe(void) +{ + return InitSogabeDebugMenu(); +} + +u8 DebugMenu_OpenTamada(void) +{ + return debug_sub_8075C30(); +} + +u8 DebugMenu_OpenKagaya(void) +{ + return InitKagayaDebugMenu_A(); +} + +u8 DebugMenu_OpenMatsuda(void) +{ + return InitMatsudaDebugMenu(); +} + +u8 DebugMenu_OpenNohara(void) +{ + return InitNoharaDebugMenu(); +} + +u8 DebugMenu_OpenWatanabe(void) +{ + CloseMenu(); + SetMainCallback2(InitWatanabeDebugMenu); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_EndSequenceDemo(void) +{ + CloseMenu(); + SetMainCallback2(sub_81439D0); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HallOfFame(void) +{ + CloseMenu(); + GameClear(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSizeComparison(void) +{ + CloseMenu(); + InitSizeComparison(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_HoennNationalDex(void) +{ + if (IsNationalPokedexEnabled()) + DisableNationalPokedex(); + else + EnableNationalPokedex(); + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE0F[] = _("HP"); +const u8 Str_839BE12[] = _("PAR"); +const u8 Str_839BE16[] = _("SLP"); +const u8 Str_839BE1A[] = _("PSN"); +const u8 Str_839BE1E[] = _("ウマイ"); + +u8 DebugMenu_8077434(void) +{ + switch (Menu_GetCursorPos()) + { + case 0: + debug_sub_80C2C18(Str_839BE0F, 1, 4); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0, 0xff, 0xff); + break; + case 1: + debug_sub_80C2C18(Str_839BE12, 2, 0); + debug_sub_80C2D24(0xff, 0xff, 0, 0xff, 0xff, 0xff); + break; + case 2: + debug_sub_80C2C18(Str_839BE16, 3, 0); + debug_sub_80C2D24(0xff, 0, 0xff, 0xff, 0xff, 0xff); + break; + case 3: + debug_sub_80C2C18(Str_839BE1A, 4, 0); + debug_sub_80C2D24(0, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + case 4: + debug_sub_80C2C18(Str_839BE1E, 4, 0); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + } + CloseMenu(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BE24[] = { + {Str_839BE0F, DebugMenu_8077434}, + {Str_839BE12, DebugMenu_8077434}, + {Str_839BE16, DebugMenu_8077434}, + {Str_839BE1A, DebugMenu_8077434}, + {Str_839BE1E, DebugMenu_8077434} +}; + +u8 DebugMenu_807750C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BE24); +} + +u8 DebugMenu_SetRamBerry(void) +{ + DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, ARRAY_COUNT(gUnknown_Debug_839BE24)); + gMenuCallback = DebugMenu_807750C; + return FALSE; +} + +u8 DebugMenu_ToggleBGM(void) +{ + gDisableMusic = gDisableMusic ? FALSE : TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_BattleForDebug(void) +{ + CloseMenu(); + InitBattleForDebug(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_NationalDex(void) +{ + u16 i; + + for (i = 0; i < 386; i++) + { + GetSetPokedexFlag(i + 1, 2); + GetSetPokedexFlag(i + 1, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_HoennDex(void) +{ + u16 i; + + for (i = 0; i < 202; i++) + { + u16 nati = HoennToNationalOrder(i + 1); + GetSetPokedexFlag(nati, 2); + GetSetPokedexFlag(nati, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_CreatePKMN(void) +{ + CloseMenu(); + InitCreatePokemon(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_ViewPokemonGraphics(void) +{ + CloseMenu(); + InitSeePokemonGraphics(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenSeeTrainers(void) +{ + CloseMenu(); + InitSeeTrainers(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenMori(void) +{ + return InitMoriDebugMenu(); +} + +u8 DebugMenu_OpenTomomichi(void) +{ + return InitTomomichiDebugWindow(); +} + +u8 DebugMenu_OpenAoki(void) +{ + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_OpenTaya(void) +{ + return InitTayaDebugWindow(); +} + +u8 DebugMenu_OpenNakamura(void) +{ + return InitNakamuraDebugMenu(); +} + +u8 DebugMenu_OpenIwasawa(void) +{ + return debug_sub_8138CC4(); +} + +u8 DebugMenu_Teleport(void) +{ + Overworld_SetWarpDestToLastHealLoc(); + sub_8080E88(); + ScriptContext2_Enable(); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_EditPKMN(void) +{ + Menu_EraseScreen(); + NakaGenderTest(); + return FALSE; +} + +void DebugMenu_80776B4(u8 bgNum) +{ + u8 sp00[] = __("OFF$" + "ON$"); + Menu_BlankWindowRect(25, bgNum * 2, 29, bgNum * 2 + 1); + Menu_PrintText(sp00 + 4 * ((gUnknown_030006C8 >> bgNum) & 1), 25, bgNum * 2); +} + +void DebugMenu_8077704(void) +{ + u8 sp00[] = _("BG0\n" + "BG1\n" + "BG2\n" + "BG3\n"); + Menu_BlankWindowRect(19, 0, 29, 8); + Menu_PrintText(sp00, 21, 0); + gUnknown_030006C8 = (REG_DISPCNT >> 8) & 0x0F; + DebugMenu_80776B4(0); + DebugMenu_80776B4(1); + DebugMenu_80776B4(2); + DebugMenu_80776B4(3); +} + +u8 DebugMenu_8077760(void) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + if (gUnknown_030006B8 != 0) + gUnknown_030006B8--; + else + gUnknown_030006B8 = 3; + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(+1); + if (gUnknown_030006B8 != 3) + gUnknown_030006B8++; + else + gUnknown_030006B8 = 0; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gUnknown_030006C8 ^= (1 << Menu_GetCursorPos()); + DebugMenu_80776B4(Menu_GetCursorPos()); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = (REG_DISPCNT & 0xF0FF) + (gUnknown_030006C8 << 8); + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_SwitchBG(void) +{ + Menu_EraseScreen(); + DebugMenu_8077704(); + InitMenu(0, 20, 0, 4, 0, 6); + gMenuCallback = DebugMenu_8077760; + return FALSE; +} + +void DebugMenu_807786C(u8 a0) +{ + u8 sp00[] = __("ON$" + "OFF$"); + + Menu_DrawStdWindowFrame(25, 0, 29, 3); + Menu_PrintText(sp00 + 3 * a0, 26, 1); +} + +u8 DebugMenu_80778A8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gWildEncountersDisabled ^= 1; + DebugMenu_807786C(gWildEncountersDisabled); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ControlEncounter(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(gWildEncountersDisabled); + gMenuCallback = DebugMenu_80778A8; + return FALSE; +} + u8 DebugMenu_UseHM() { - asm( - " ldr r1, ._215 @ gMenuCallback\n" - " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " bx lr\n" - "._216:\n" - " .align 2, 0\n" - "._215:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077934() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._218 @ gSaveBlock1\n" - " mov r2, #0x1\n" - "._217:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._217 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._219:\n" - " .align 2, 0\n" - "._218:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077954() -{ - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._222 @ gSaveBlock1\n" - " mov r2, #0x0\n" - "._221:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._221 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._223:\n" - " .align 2, 0\n" - "._222:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077974() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._226 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl IsRematchTrainerIn\n" - " cmp r0, #0\n" - " beq ._224 @cond_branch\n" - " ldr r0, ._226 + 4 @ gStringVar1\n" - " ldr r1, ._226 + 8 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._225\n" - "._227:\n" - " .align 2, 0\n" - "._226:\n" - " .word gSaveBlock1\n" - " .word gStringVar1\n" - " .word Str_839BE8D\n" - "._224:\n" - " ldr r0, ._230 @ gStringVar1\n" - " ldr r1, ._230 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._225:\n" - " ldr r1, ._230 + 8 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl DoesSomeoneWantRematchIn\n" - " cmp r0, #0\n" - " beq ._228 @cond_branch\n" - " ldr r0, ._230 + 12 @ gStringVar2\n" - " ldr r1, ._230 + 16 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._229\n" - "._231:\n" - " .align 2, 0\n" - "._230:\n" - " .word gStringVar1\n" - " .word Str_839BE90\n" - " .word gSaveBlock1\n" - " .word gStringVar2\n" - " .word Str_839BE8D\n" - "._228:\n" - " ldr r0, ._232 @ gStringVar2\n" - " ldr r1, ._232 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._229:\n" - " ldr r0, ._232 + 8 @ Str_839BE6B\n" - " bl sub_8071F40\n" - " ldr r1, ._232 + 12 @ gMenuCallback\n" - " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._233:\n" - " .align 2, 0\n" - "._232:\n" - " .word gStringVar2\n" - " .word Str_839BE90\n" - " .word Str_839BE6B\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A20() -{ - asm( - " push {lr}\n" - " ldr r0, ._234 @ gSaveBlock1\n" - " ldr r1, ._234 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0xff\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._235:\n" - " .align 2, 0\n" - "._234:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A40() -{ - asm( - " push {lr}\n" - " ldr r0, ._236 @ gSaveBlock1\n" - " ldr r1, ._236 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._237:\n" - " .align 2, 0\n" - "._236:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A60() -{ - asm( - " push {lr}\n" - " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._239:\n" - " .align 2, 0\n" - "._238:\n" - " .word gUnknown_Debug_839BEE4\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_RematchTrainers() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n" - " mov r1, #0xd\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._240 + 4 @ gMenuCallback\n" - " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._241:\n" - " .align 2, 0\n" - "._240:\n" - " .word gUnknown_Debug_839BEE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077A60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077A9C() -{ - asm( - " push {lr}\n" - " ldr r1, ._242 @ gNumSafariBalls\n" - " mov r0, #0x1e\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._243:\n" - " .align 2, 0\n" - "._242:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AB4() -{ - asm( - " push {lr}\n" - " ldr r1, ._244 @ gNumSafariBalls\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._245:\n" - " .align 2, 0\n" - "._244:\n" - " .word gNumSafariBalls\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077ACC() -{ - asm( - " push {lr}\n" - " ldr r1, ._246 @ gSafariZoneStepCounter\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x1\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._247:\n" - " .align 2, 0\n" - "._246:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077AE8() -{ - asm( - " push {lr}\n" - " ldr r1, ._248 @ gSafariZoneStepCounter\n" - " mov r0, #0x1\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._249:\n" - " .align 2, 0\n" - "._248:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B00() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl unref_sub_80C853C\n" - " cmp r0, #0\n" - " beq ._250 @cond_branch\n" - " ldr r0, ._252 @ Str_839BF14\n" - " bl sub_8071F40\n" - " b ._251\n" - "._253:\n" - " .align 2, 0\n" - "._252:\n" - " .word Str_839BF14\n" - "._250:\n" - " ldr r0, ._254 @ Str_839BF1F\n" - " bl sub_8071F40\n" - "._251:\n" - " ldr r1, ._254 + 4 @ gMenuCallback\n" - " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._255:\n" - " .align 2, 0\n" - "._254:\n" - " .word Str_839BF1F\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077B3C() -{ - asm( - " push {lr}\n" - " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._257:\n" - " .align 2, 0\n" - "._256:\n" - " .word gUnknown_Debug_839BF6C\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_Safari() -{ - asm( - " push {lr}\n" - " bl GetSafariZoneFlag\n" - " cmp r0, #0\n" - " beq ._258 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n" - " mov r1, #0xe\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r0, ._260 + 4 @ gStringVar1\n" - " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n" - " ldrh r1, [r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._260 + 12 @ Str_839BF0C\n" - " bl sub_8071F40\n" - " ldr r1, ._260 + 16 @ gMenuCallback\n" - " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n" - " str r0, [r1]\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x0\n" - " b ._259\n" - "._261:\n" - " .align 2, 0\n" - "._260:\n" - " .word gUnknown_Debug_839BF6C\n" - " .word gStringVar1\n" - " .word gSafariZoneStepCounter\n" - " .word Str_839BF0C\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077B3C+1\n" - "._258:\n" - " bl CloseMenu\n" - " mov r0, #0x16\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - "._259:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BB4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80AFEE4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BC0() -{ - asm( - " push {lr}\n" - " bl debug_sub_8122080\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BCC() -{ - asm( - " push {lr}\n" - " bl debug_sub_8120968\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BD8() -{ - asm( - " push {lr}\n" - " bl debug_sub_8130318\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BE4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80986AC\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077BF4() -{ - asm( - " push {lr}\n" - " bl debug_sub_80D93F4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C00() -{ - asm( - " push {lr}\n" - " ldr r0, ._262 @ gUnknown_Debug_839BF94\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._263:\n" - " .align 2, 0\n" - "._262:\n" - " .word gUnknown_Debug_839BF94\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C14() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._264 @ gUnknown_Debug_839BF94\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._264 + 4 @ gMenuCallback\n" - " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._265:\n" - " .align 2, 0\n" - "._264:\n" - " .word gUnknown_Debug_839BF94\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C00+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077C3C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov sl, r0\n" - " add r7, r1, #0\n" - " ldr r0, ._271 @ gUnknown_030006BC\n" - " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" - " str r1, [r0]\n" - " mov r1, #0x0\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " mov r3, #0x0\n" - " mov r8, r0\n" + gMenuCallback = DebugMenu_8077C14; + return FALSE; +} + +u8 DebugMenu_8077934(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 1; + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_8077954(void) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" + "さいせんじょうたいトレーナー:{STR_VAR_2}"); +const u8 Str_839BE8D[] = _("いる"); +const u8 Str_839BE90[] = _("いない"); + +bool8 DebugMenu_8077974(void) +{ + Menu_EraseScreen(); + if (IsRematchTrainerIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar1, Str_839BE8D); + else + StringCopy(gStringVar1, Str_839BE90); + if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar2, Str_839BE8D); + else + StringCopy(gStringVar2, Str_839BE90); + sub_8071F40(Str_839BE6B); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +bool8 DebugMenu_8077A20(void) +{ + gSaveBlock1.trainerRematchStepCounter = 255; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077A40(void) +{ + gSaveBlock1.trainerRematchStepCounter = 0; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BE94[] = _("Max num of steps"); +const u8 Str_839BEA5[] = _("Clear num of steps"); +const u8 Str_839BEB8[] = _("See trainers"); +const u8 Str_839BEC5[] = _("Flag all clear"); +const u8 Str_839BED4[] = _("Flag all set"); + +const struct MenuAction gUnknown_Debug_839BEE4[] = { + {Str_839BEB8, DebugMenu_8077974}, + {Str_839BE94, DebugMenu_8077A20}, + {Str_839BEA5, DebugMenu_8077A40}, + {Str_839BED4, DebugMenu_8077934}, + {Str_839BEC5, DebugMenu_8077954} +}; + +u8 DebugMenu_8077A60(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BEE4); +} + +u8 DebugMenu_RematchTrainers(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, ARRAY_COUNT(gUnknown_Debug_839BEE4)); + gMenuCallback = DebugMenu_8077A60; + return FALSE; +} + +bool8 DebugMenu_8077A9C(void) +{ + gNumSafariBalls = 30; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AB4(void) +{ + gNumSafariBalls = 1; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077ACC(void) +{ + gSafariZoneStepCounter = 500; + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077AE8(void) +{ + gSafariZoneStepCounter = 1; + CloseMenu(); + return TRUE; +} + +const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ"); +const u8 Str_839BF14[] = _("{STR_VAR_1}\n" + "のこり {STR_VAR_2}ほ"); +const u8 Str_839BF1F[] = _("めのまえには\n" + "キューブが ありません!"); + +bool8 DebugMenu_8077B00(void) +{ + Menu_EraseScreen(); + if (debug_sub_80C853C()) + sub_8071F40(Str_839BF14); + else + sub_8071F40(Str_839BF1F); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; +} + +const u8 Str_839BF33[] = _("ほすうをのこり1にする"); +const u8 Str_839BF3F[] = _("ボールをのこり1にする"); +const u8 Str_839BF4B[] = _("キューブおきば"); +const u8 Str_839BF53[] = _("ボールをのこり30に"); +const u8 Str_839BF5E[] = _("ほすうをのこり500に"); + +const struct MenuAction gUnknown_Debug_839BF6C[] = { + {Str_839BF4B, DebugMenu_8077B00}, + {Str_839BF5E, DebugMenu_8077ACC}, + {Str_839BF33, DebugMenu_8077AE8}, + {Str_839BF53, DebugMenu_8077A9C}, + {Str_839BF3F, DebugMenu_8077AB4} +}; + +bool8 DebugMenu_8077B3C(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF6C); +} + +u8 DebugMenu_Safari(void) +{ + if (!GetSafariZoneFlag()) + { + CloseMenu(); + PlaySE(SE_BOO); + return TRUE; + } + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, ARRAY_COUNT(gUnknown_Debug_839BF6C)); + ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_8071F40(Str_839BF0C); + gMenuCallback = DebugMenu_8077B3C; + ScriptContext2_Enable(); + return FALSE; +} + +bool8 DebugMenu_8077BB4(void) +{ + debug_sub_80AFEE4(); + return TRUE; +} + +bool8 DebugMenu_8077BC0(void) +{ + debug_sub_8122080(); + return TRUE; +} + +bool8 DebugMenu_8077BCC(void) +{ + debug_sub_8120968(); + return TRUE; +} + +bool8 DebugMenu_8077BD8(void) +{ + debug_sub_8130318(); + return TRUE; +} + +bool8 DebugMenu_8077BE4(void) +{ + debug_sub_80986AC(); + CloseMenu(); + return TRUE; +} + +bool8 DebugMenu_8077BF4(void) +{ + debug_sub_80D93F4(); + return TRUE; +} + +const struct MenuAction gUnknown_Debug_839BF94[] = { + {gMoveNames[MOVE_CUT], DebugMenu_8077BB4}, + {gMoveNames[MOVE_FLASH], DebugMenu_8077BC0}, + {gMoveNames[MOVE_ROCK_SMASH], DebugMenu_8077BCC}, + {gMoveNames[MOVE_STRENGTH], DebugMenu_8077BD8}, + {gMoveNames[MOVE_SURF], debug_sub_80B0770}, + {gMoveNames[MOVE_FLY], debug_sub_80B07B0}, + {gMoveNames[MOVE_WATERFALL], DebugMenu_8077BE4}, + {gMoveNames[MOVE_DIVE], debug_sub_80B0800}, + {gMoveNames[MOVE_SECRET_POWER], DebugMenu_8077BF4} +}; + +bool8 DebugMenu_8077C00(void) +{ + return DebugMenu_8077D78(gUnknown_Debug_839BF94); +} + +u8 DebugMenu_8077C14(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF94, 10, ARRAY_COUNT(gUnknown_Debug_839BF94)); + gMenuCallback = DebugMenu_8077C00; + return FALSE; +} + +const u8 Str_839BFDC[] = _(" じかん ふん びょう"); + +const s32 gUnknown_Debug_839BFE8[] = { + 99, 10, 2, 23, + 99, 10, 2, 26 +}; + +#ifdef NONMATCHING +void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + // Register allocation swap + // Intended: r7 = a1, r6 = gUnknown_030006BC[2] + // Observed: r6 = a1, r7 = gUnknown_030006BC[2] + + int i; + + gUnknown_030006BC = gUnknown_Debug_839BFE8; + *a1++ = CHAR_SPACE; + *a1++ = CHAR_SPACE; + + for (i = 0; i < 2; i++, gUnknown_030006BC += 4) + { + u32 r5 = 0; + int r2; + int r4; + for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10) + r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2; + if (gUnknown_030006BC[0] < r5) + r5 = gUnknown_030006BC[0]; + a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]); + } + a1[0] = a0[29] - 'A' + CHAR_A; + if (a1[0] > 0xf6) + a1[0] = 0xf6; + a1[1] = EOS; +} +#else +NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, sl\n" + "\tmov\tr6, r9\n" + "\tmov\tr5, r8\n" + "\tpush\t{r5, r6, r7}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tmov\tsl, r0\n" + "\tadd\tr7, r1, #0\n" + "\tldr\tr0, ._271 @ gUnknown_030006BC\n" + "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" + "\tstr\tr1, [r0]\n" + "\tmov\tr1, #0x0\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tmov\tr3, #0x0\n" + "\tmov\tr8, r0\n" "._269:\n" - " mov r5, #0x0\n" - " ldr r1, ._271 @ gUnknown_030006BC\n" - " ldr r0, [r1]\n" - " ldr r2, [r0, #0x4]\n" - " mov r4, #0x0\n" - " ldr r1, [r0, #0x8]\n" - " add r3, r3, #0x1\n" - " mov r9, r3\n" - " cmp r5, r1\n" - " bge ._266 @cond_branch\n" - " add r3, r0, #0\n" - " add r6, r1, #0\n" + "\tmov\tr5, #0x0\n" + "\tldr\tr1, ._271 @ gUnknown_030006BC\n" + "\tldr\tr0, [r1]\n" + "\tldr\tr2, [r0, #0x4]\n" + "\tmov\tr4, #0x0\n" + "\tldr\tr1, [r0, #0x8]\n" + "\tadd\tr3, r3, #0x1\n" + "\tmov\tr9, r3\n" + "\tcmp\tr5, r1\n" + "\tbge\t._266\t@cond_branch\n" + "\tadd\tr3, r0, #0\n" + "\tadd\tr6, r1, #0\n" "._267:\n" - " ldr r0, [r3, #0xc]\n" - " add r0, r0, r4\n" - " add r0, r0, sl\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x30\n" - " mul r0, r0, r2\n" - " add r5, r5, r0\n" - " add r4, r4, #0x1\n" - " add r0, r2, #0\n" - " mov r1, #0xa\n" - " str r3, [sp]\n" - " bl __divsi3\n" - " add r2, r0, #0\n" - " ldr r3, [sp]\n" - " cmp r4, r6\n" - " blt ._267 @cond_branch\n" + "\tldr\tr0, [r3, #0xc]\n" + "\tadd\tr0, r0, r4\n" + "\tadd r0, r0, sl\n" + "\tldrb\tr0, [r0]\n" + "\tsub\tr0, r0, #0x30\n" + "\tmul\tr0, r0, r2\n" + "\tadd\tr5, r5, r0\n" + "\tadd\tr4, r4, #0x1\n" + "\tadd\tr0, r2, #0\n" + "\tmov\tr1, #0xa\n" + "\tstr\tr3, [sp]\n" + "\tbl\t__divsi3\n" + "\tadd\tr2, r0, #0\n" + "\tldr\tr3, [sp]\n" + "\tcmp\tr4, r6\n" + "\tblt\t._267\t@cond_branch\n" "._266:\n" - " mov r0, r8\n" - " ldr r1, [r0]\n" - " ldr r0, [r1]\n" - " cmp r0, r5\n" - " bcs ._268 @cond_branch\n" - " add r5, r0, #0\n" + "\tmov\tr0, r8\n" + "\tldr\tr1, [r0]\n" + "\tldr\tr0, [r1]\n" + "\tcmp\tr0, r5\n" + "\tbcs\t._268\t@cond_branch\n" + "\tadd\tr5, r0, #0\n" "._268:\n" - " ldrb r3, [r1, #0x8]\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " mov r2, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r7, r0, #0\n" - " mov r3, r9\n" - " mov r1, r8\n" - " ldr r0, [r1]\n" - " add r0, r0, #0x10\n" - " str r0, [r1]\n" - " cmp r3, #0x1\n" - " ble ._269 @cond_branch\n" - " mov r1, sl\n" - " ldrb r0, [r1, #0x1d]\n" - " add r0, r0, #0x7a\n" - " strb r0, [r7]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xf6\n" - " bls ._270 @cond_branch\n" - " mov r0, #0xf6\n" - " strb r0, [r7]\n" + "\tldrb\tr3, [r1, #0x8]\n" + "\tadd\tr0, r7, #0\n" + "\tadd\tr1, r5, #0\n" + "\tmov\tr2, #0x2\n" + "\tbl\tConvertIntToDecimalStringN\n" + "\tadd\tr7, r0, #0\n" + "\tmov\tr3, r9\n" + "\tmov\tr1, r8\n" + "\tldr\tr0, [r1]\n" + "\tadd\tr0, r0, #0x10\n" + "\tstr\tr0, [r1]\n" + "\tcmp\tr3, #0x1\n" + "\tble\t._269\t@cond_branch\n" + "\tmov\tr1, sl\n" + "\tldrb\tr0, [r1, #0x1d]\n" + "\tadd\tr0, r0, #0x7a\n" + "\tstrb\tr0, [r7]\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tcmp\tr0, #0xf6\n" + "\tbls\t._270\t@cond_branch\n" + "\tmov\tr0, #0xf6\n" + "\tstrb\tr0, [r7]\n" "._270:\n" - " mov r0, #0xff\n" - " strb r0, [r7, #0x1]\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r7, #0x1]\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r3, r4, r5}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tmov\tsl, r5\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" "._272:\n" - " .align 2, 0\n" + "\t.align\t2, 0\n" "._271:\n" - " .word gUnknown_030006BC \n" - " .word gUnknown_Debug_839BFE8\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8077CF4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r0, ._273 @ BuildDateTime\n" - " ldr r6, ._273 + 4 @ gStringVar4\n" - " add r1, r6, #0\n" - " bl DebugMenu_8077C3C\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._274:\n" - " .align 2, 0\n" - "._273:\n" - " .word BuildDateTime\n" - " .word gStringVar4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D24() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r6, r0, #0\n" - " add r4, r1, #0\n" - " add r5, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " bl Menu_EraseScreen\n" - " lsl r3, r5, #0x1\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " add r2, r5, #0\n" - " add r3, r6, #0\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " sub r4, r4, #0x1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " str r4, [sp, #0x4]\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " add r3, r5, #0\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077D78() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r4, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._275 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " beq ._276 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._278 @ gMenuCallback\n" - " lsl r1, r4, #0x3\n" - " add r1, r1, r5\n" - " ldr r1, [r1, #0x4]\n" - " str r1, [r0]\n" - "._275:\n" - " mov r0, #0x0\n" - " b ._277\n" - "._279:\n" - " .align 2, 0\n" - "._278:\n" - " .word gMenuCallback\n" - "._276:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._277:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DB4() -{ - asm( - " push {lr}\n" - " ldr r0, ._282 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._280 @cond_branch\n" - " mov r0, #0x0\n" - " b ._281\n" - "._283:\n" - " .align 2, 0\n" - "._282:\n" - " .word gMain\n" - "._280:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._281:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077DD8() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " add r1, r3, #0\n" - " mov r0, #0x80\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._284 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " b ._285\n" - "._284:\n" - " mov r0, #0x40\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._286 @cond_branch\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " b ._287\n" - "._286:\n" - " mov r0, #0x20\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._288 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0xa\n" - "._285:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r5\n" - " bge ._293 @cond_branch\n" - " strh r2, [r4]\n" - " b ._293\n" - "._288:\n" - " mov r0, #0x10\n" - " and r1, r1, r0\n" - " cmp r1, #0\n" - " bne ._291 @cond_branch\n" - " mov r0, #0x0\n" - " b ._292\n" - "._291:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0xa\n" - "._287:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r2\n" - " ble ._293 @cond_branch\n" - " strh r5, [r4]\n" - "._293:\n" - " mov r0, #0x1\n" - "._292:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077E40() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " ldr r0, ._297 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._294 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._295 @cond_branch\n" - "._294:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._302\n" - "._298:\n" - " .align 2, 0\n" - "._297:\n" - " .word gMain\n" - "._295:\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._299 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " cmp r4, #0\n" - " beq ._300 @cond_branch\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x0\n" - " b ._302\n" - "._300:\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x1\n" - " b ._302\n" - "._299:\n" - " add r0, r4, #0\n" - "._302:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) + "\t.word\tgUnknown_030006BC \n" + "\t.word\tgUnknown_Debug_839BFE8\n"); +} +#endif + +void debug_sub_8077CF4(u8 x, u8 y) +{ + DebugMenu_8077C3C(BuildDateTime, gStringVar4); + Menu_PrintText(gStringVar4, x, y); +} + +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount) +{ + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, width, 2 * itemCount + 1); + Menu_PrintItems(1, 1, itemCount, menuAction); + InitMenu(0, 1, 1, itemCount, 0, width - 1); +} + +u8 DebugMenu_8077D78(const struct MenuAction *menuActions) +{ + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + Menu_EraseScreen(); + gMenuCallback = menuActions[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } +} + +bool8 DebugMenu_8077DB4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +bool32 DebugMenu_8077DD8(s16 * a0, s32 a1, s32 a2, u16 a3) +{ + if (a3 & DPAD_DOWN) + { + *a0 -= 1; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_UP) + { + *a0 += 1; + if (*a0 > a2) + *a0 = a1; + } + else if (a3 & DPAD_LEFT) + { + *a0 -= 10; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_RIGHT) + { + *a0 += 10; + if (*a0 > a2) + *a0 = a1; + } + else + return FALSE; + return TRUE; +} + +int DebugMenu_8077E40(int flag) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return -1; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (flag) + { + DebugMenu_807786C(1); + return 0; + } + else + { + DebugMenu_807786C(0); + return 1; + } + } + return flag; +} + u8 DebugMenu_MakeItems() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl DebugMenu_8077EAC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EAC() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._303 @ DebugMenu_8077F40\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._303 + 4 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0xa]\n" - " strh r1, [r0, #0xc]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._304:\n" - " .align 2, 0\n" - "._303:\n" - " .word DebugMenu_8077F40+1\n" - " .word gTasks\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077EE0() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r6, r6, #0x10\n" - " lsr r6, r6, #0x10\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r5, ._305 @ gStringVar1\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " bl ItemId_GetName\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x12\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._306:\n" - " .align 2, 0\n" - "._305:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F40() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r0, ._307 @ gTasks\n" - " add r4, r4, r0\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._307 + 4 @ gDebug0x839C008\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n" - " str r0, [r4]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._308:\n" - " .align 2, 0\n" - "._307:\n" - " .word gTasks\n" - " .word gDebug0x839C008\n" - " .word DebugMenu_8077F7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077F7C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._311 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r3, ._311 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._309 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._311 + 8 @ Str_839C014\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n" - " str r0, [r4]\n" - " b ._317\n" - "._312:\n" - " .align 2, 0\n" - "._311:\n" - " .word gTasks\n" - " .word gMain\n" - " .word Str_839C014\n" - " .word DebugMenu_8077FFC+1\n" - "._309:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._313 @cond_branch\n" - " ldr r0, ._315 @ DebugMenu_807806C\n" - " str r0, [r4]\n" - " b ._317\n" - "._316:\n" - " .align 2, 0\n" - "._315:\n" - " .word DebugMenu_807806C+1\n" - "._313:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xa\n" - " mov r2, #0xae\n" - " lsl r2, r2, #0x1\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x1\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._317 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._317:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8077FFC() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._321 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r2, ._321 + 4 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._318 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl AddBagItem\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._320 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._320\n" - "._322:\n" - " .align 2, 0\n" - "._321:\n" - " .word gTasks\n" - " .word gMain\n" - "._318:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._323 @cond_branch\n" - "._320:\n" - " ldr r0, ._325 @ DebugMenu_8077F40\n" - " str r0, [r4]\n" - " b ._327\n" - "._326:\n" - " .align 2, 0\n" - "._325:\n" - " .word DebugMenu_8077F40+1\n" - "._323:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x1\n" - " mov r2, #0x63\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._327 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._327:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807806C() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl DebugMenu_8077048\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807808C() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff4\n" - " add r4, r0, #0\n" - " sub r0, r4, #1\n" - " cmp r0, #0xc\n" - " bls ._328 @cond_branch\n" - " mov r4, #0x1\n" - "._328:\n" - " lsl r1, r4, #0x5\n" - " ldr r0, ._331 @ gSaveBlock1\n" - " add r5, r1, r0\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._331 + 4 @ Str_839C01E\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " ldrh r1, [r5, #0x8]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x4\n" - " bl Menu_PrintText\n" - " add r4, r5, #0\n" - " add r4, r4, #0xb\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._329 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - " b ._330\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gSaveBlock1+0x2ddc\n" - " .word Str_839C01E\n" - "._329:\n" - " ldr r0, ._335 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - "._330:\n" - " add r4, r5, #0\n" - " add r4, r4, #0x16\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._333 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - " b ._334\n" - "._336:\n" - " .align 2, 0\n" - "._335:\n" - " .word Str_839C04D\n" - "._333:\n" - " ldr r0, ._337 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - "._334:\n" - " ldrb r1, [r5, #0xa]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " ldr r1, [r5]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x8\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xc\n" - " bl Menu_PrintText\n" - " add sp, sp, #0xc\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._338:\n" - " .align 2, 0\n" - "._337:\n" - " .word Str_839C04D\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807817C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._340 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._339 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - "._339:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._341:\n" - " .align 2, 0\n" - "._340:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80781A8() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._344 @ gTasks\n" - " add r5, r1, r0\n" - " ldrh r1, [r5, #0x8]\n" - " mov r2, #0x8\n" - " ldsh r0, [r5, r2]\n" - " cmp r0, #0\n" - " bne ._342 @cond_branch\n" - " add r0, r1, #1\n" - " strh r0, [r5, #0x8]\n" - " b ._343\n" - "._345:\n" - " .align 2, 0\n" - "._344:\n" - " .word gTasks\n" - "._342:\n" - " ldr r2, ._348 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._346 @cond_branch\n" - " mov r1, #0x8\n" - " ldsh r0, [r5, r1]\n" - " bl DebugMenu_807808C\n" - " ldr r0, ._348 + 4 @ DebugMenu_807817C\n" - " str r0, [r5]\n" - " b ._350\n" - "._349:\n" - " .align 2, 0\n" - "._348:\n" - " .word gMain\n" - " .word DebugMenu_807817C+1\n" - "._346:\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " ldrh r1, [r2, #0x30]\n" - " mov r3, #0xc0\n" - " and r3, r3, r1\n" - " mov r1, #0x1\n" - " mov r2, #0xd\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0\n" - " beq ._350 @cond_branch\n" - "._343:\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._351 @ gStringVar1\n" - " mov r2, #0x8\n" - " ldsh r1, [r5, r2]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - "._350:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._352:\n" - " .align 2, 0\n" - "._351:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ViewPortraits() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._353 @ DebugMenu_80781A8\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._354:\n" - " .align 2, 0\n" - "._353:\n" - " .word DebugMenu_80781A8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078254() -{ - asm( - " push {lr}\n" - " bl DebugMenu_807808C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_AllBadges() -{ - asm( - " push {lr}\n" - " ldr r0, ._355 @ 0x807\n" - " bl FlagSet\n" - " ldr r0, ._355 + 4 @ 0x808\n" - " bl FlagSet\n" - " ldr r0, ._355 + 8 @ 0x809\n" - " bl FlagSet\n" - " ldr r0, ._355 + 12 @ 0x80a\n" - " bl FlagSet\n" - " ldr r0, ._355 + 16 @ 0x80b\n" - " bl FlagSet\n" - " ldr r0, ._355 + 20 @ 0x80c\n" - " bl FlagSet\n" - " ldr r0, ._355 + 24 @ 0x80d\n" - " bl FlagSet\n" - " ldr r0, ._355 + 28 @ 0x80e\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._356:\n" - " .align 2, 0\n" - "._355:\n" - " .word 0x807\n" - " .word 0x808\n" - " .word 0x809\n" - " .word 0x80a\n" - " .word 0x80b\n" - " .word 0x80c\n" - " .word 0x80d\n" - " .word 0x80e\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_TimeRecords() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._357 @ debug_sub_806F9E4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._358:\n" - " .align 2, 0\n" - "._357:\n" - " .word debug_sub_806F9E4+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_SetTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl debug_sub_806F99C\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80782EC() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._359 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._359 + 4 @ Str_839C053\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._360:\n" - " .align 2, 0\n" - "._359:\n" - " .word gStringVar1\n" - " .word Str_839C053\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078310() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._364 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._361 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._362 @cond_branch\n" - " b ._375\n" - "._365:\n" - " .align 2, 0\n" - "._364:\n" - " .word gTasks+0x8\n" - "._361:\n" - " ldr r0, ._367 @ 0x4024\n" - " bl VarGet\n" - " strh r0, [r4, #0x2]\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._375\n" - "._368:\n" - " .align 2, 0\n" - "._367:\n" - " .word 0x4024\n" - "._362:\n" - " ldr r3, ._371 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._369 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " ldr r0, ._371 + 4 @ 0x4024\n" - " bl GetVarPointer\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " b ._370\n" - "._372:\n" - " .align 2, 0\n" - "._371:\n" - " .word gMain\n" - " .word 0x4024\n" - "._369:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._373 @cond_branch\n" - "._370:\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._375\n" - "._373:\n" - " add r0, r4, #2\n" - " ldr r2, ._376 @ 0xffff\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._375 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - "._375:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._377:\n" - " .align 2, 0\n" - "._376:\n" - " .word 0xffff\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MiragaIslandRND() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._378 @ DebugMenu_8078310\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._379:\n" - " .align 2, 0\n" - "._378:\n" - " .word DebugMenu_8078310+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80783C8() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._383 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._382 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._383 + 4 @ 0x804\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._381 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " b ._382\n" - "._384:\n" - " .align 2, 0\n" - "._383:\n" - " .word gMain\n" - " .word 0x804\n" - "._381:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - "._382:\n" - " ldr r0, ._388 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._385 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._386 @cond_branch\n" - "._385:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._387\n" - "._389:\n" - " .align 2, 0\n" - "._388:\n" - " .word gMain\n" - "._386:\n" - " mov r0, #0x0\n" - "._387:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_ToggleClearFlag() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._390 @ 0x804\n" - " bl FlagGet\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._390 + 4 @ gMenuCallback\n" - " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._391:\n" - " .align 2, 0\n" - "._390:\n" - " .word 0x804\n" - " .word gMenuCallback\n" - " .word DebugMenu_80783C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078464() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._396 @ 0x82a\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._392 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._393 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._394 @cond_branch\n" - " b ._401\n" - "._397:\n" - " .align 2, 0\n" - "._396:\n" - " .word 0x82a\n" - "._393:\n" - " cmp r1, #0x1\n" - " beq ._398 @cond_branch\n" - " b ._401\n" - "._392:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " b ._401\n" - "._398:\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._401\n" - "._394:\n" - " mov r0, #0x1\n" - " b ._402\n" - "._401:\n" - " mov r0, #0x0\n" - "._402:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenWeatherEvents() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._404 @ 0x82a\n" - " bl FlagGet\n" - " mov r1, #0x0\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._403 @cond_branch\n" - " mov r1, #0x1\n" - "._403:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._404 + 4 @ gMenuCallback\n" - " ldr r0, ._404 + 8 @ DebugMenu_8078464\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._405:\n" - " .align 2, 0\n" - "._404:\n" - " .word 0x82a\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078464+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80784E8() -{ - asm( - " push {lr}\n" - " bl IsMysteryGiftEnabled\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._406 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._407 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._408 @cond_branch\n" - " b ._413\n" - "._407:\n" - " cmp r1, #0x1\n" - " beq ._410 @cond_branch\n" - " b ._413\n" - "._406:\n" - " bl DisableMysteryGift\n" - " b ._413\n" - "._410:\n" - " bl EnableMysteryGift\n" - " b ._413\n" - "._408:\n" - " mov r0, #0x1\n" - " b ._414\n" - "._413:\n" - " mov r0, #0x0\n" - "._414:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMysteryEvent() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl IsMysteryGiftEnabled\n" - " mov r1, #0x0\n" - " cmp r0, #0\n" - " bne ._415 @cond_branch\n" - " mov r1, #0x1\n" - "._415:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._416 @ gMenuCallback\n" - " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._417:\n" - " .align 2, 0\n" - "._416:\n" - " .word gMenuCallback\n" - " .word DebugMenu_80784E8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078550() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " lsl r0, r6, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl GetGameStat\n" - " add r7, r0, #0\n" - " ldr r0, ._420 @ gStringVar1\n" - " add r1, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._420 + 4 @ gStringVar2\n" - " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n" - " lsl r4, r6, #0x3\n" - " add r1, r5, #4\n" - " add r1, r4, r1\n" - " ldr r1, [r1]\n" - " bl StringCopy\n" - " add r4, r4, r5\n" - " ldr r0, [r4]\n" - " cmp r0, #0\n" - " bne ._418 @cond_branch\n" - " ldr r0, ._420 + 12 @ gStringVar3\n" - " ldr r1, ._420 + 16 @ Str_839C085\n" - " bl StringCopy\n" - " b ._423\n" - "._421:\n" - " .align 2, 0\n" - "._420:\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gUnknown_Debug_839C26C\n" - " .word gStringVar3\n" - " .word Str_839C085\n" - "._418:\n" - " cmp r6, #0x1\n" - " beq ._422 @cond_branch\n" - " ldr r0, ._424 @ gStringVar3\n" - " add r1, r7, #0\n" - " mov r2, #0x1\n" - " mov r3, #0xa\n" - " bl ConvertIntToDecimalStringN\n" - " b ._423\n" - "._425:\n" - " .align 2, 0\n" - "._424:\n" - " .word gStringVar3\n" - "._422:\n" - " ldr r4, ._426 @ gStringVar3\n" - " lsr r1, r7, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r6, #0xf0\n" - " strb r6, [r4, #0x3]\n" - " add r0, r4, #4\n" - " lsr r1, r7, #0x8\n" - " mov r5, #0xff\n" - " and r1, r1, r5\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " strb r6, [r4, #0x6]\n" - " add r4, r4, #0x7\n" - " and r7, r7, r5\n" - " add r0, r4, #0\n" - " add r1, r7, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - "._423:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._426 + 4 @ Str_839C07C\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._427:\n" - " .align 2, 0\n" - "._426:\n" - " .word gStringVar3\n" - " .word Str_839C07C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807860C() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._432 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._428 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._429 @cond_branch\n" - " cmp r0, #0\n" - " beq ._430 @cond_branch\n" - " b ._447\n" - "._433:\n" - " .align 2, 0\n" - "._432:\n" - " .word gTasks+0x8\n" - "._429:\n" - " cmp r0, #0x2\n" - " beq ._434 @cond_branch\n" - " b ._447\n" - "._430:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - "._441:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._447\n" - "._428:\n" - " ldr r3, ._439 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._437 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4]\n" - " mov r0, #0x1\n" - " b ._438\n" - "._440:\n" - " .align 2, 0\n" - "._439:\n" - " .word gMain\n" - "._437:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " bne ._441 @cond_branch\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._442 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0x32\n" - " bne ._446 @cond_branch\n" - " strh r2, [r4, #0x2]\n" - " b ._446\n" - "._442:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._447 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bge ._446 @cond_branch\n" - " mov r0, #0x31\n" - " strh r0, [r4, #0x2]\n" - "._446:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - " b ._447\n" - "._434:\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._447:\n" - " mov r0, #0x0\n" - "._438:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786C0() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807860C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80786D0() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " ldr r1, ._450 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " sub r1, r0, #1\n" - " add r0, r2, #0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._449:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._451:\n" - " .align 2, 0\n" - "._450:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078714() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " ldr r1, ._454 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " add r0, r2, #0\n" - " mov r1, #0x0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._453:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._455:\n" - " .align 2, 0\n" - "._454:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078758() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " add r0, r4, #0\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078774() -{ - asm( - " push {lr}\n" - " ldr r0, ._456 @ DebugMenu_80786C0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._457:\n" - " .align 2, 0\n" - "._456:\n" - " .word DebugMenu_80786C0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078788() -{ - asm( - " push {lr}\n" - " ldr r0, ._458 @ DebugMenu_80786D0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._459:\n" - " .align 2, 0\n" - "._458:\n" - " .word DebugMenu_80786D0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_807879C() -{ - asm( - " push {lr}\n" - " ldr r0, ._460 @ DebugMenu_8078714\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._461:\n" - " .align 2, 0\n" - "._460:\n" - " .word DebugMenu_8078714+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787B0() -{ - asm( - " push {lr}\n" - " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._463:\n" - " .align 2, 0\n" - "._462:\n" - " .word gUnknown_Debug_839C3FC\n" - "\n" - ); -} - -__attribute__((naked)) + CloseMenu(); + DebugMenu_8077EAC(); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8077EAC(void) +{ + u8 taskId = CreateTask(DebugMenu_8077F40, 80); + Menu_EraseScreen(); + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 1; +} + +void DebugMenu_8077EE0(u16 itemId, u16 quantity) +{ + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, itemId, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); + Menu_PrintText(ItemId_GetName(itemId), 8, 17); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 18, 17); +} + +const u8 gDebug0x839C008[] = _("Which item?"); + +void DebugMenu_8077F40(u8 taskId) +{ + struct Task *task = gTasks + taskId; + Menu_DisplayDialogueFrame(); + Menu_PrintText(gDebug0x839C008, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077F7C; +} + +const u8 Str_839C014[] = _("How many?"); + +void DebugMenu_8077F7C(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C014, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077FFC; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_807806C; + } + else if (DebugMenu_8077DD8(task->data + 1, 1, ITEM_15C, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_8077FFC(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + if (AddBagItem(task->data[1], task->data[2]) == TRUE) + PlaySE(SE_SELECT); + task->func = DebugMenu_8077F40; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_8077F40; + } + else if (DebugMenu_8077DD8(task->data + 2, 1, 99, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } +} + +void DebugMenu_807806C(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + DebugMenu_8077048(); +} + +const u8 Str_839C01E[] = _("にがおえ ばんごう\n" + "ポケモンナンバー\n" + "ポケモンめい\n" + "ブリーダーめい\n" + "しゅるい\n" + "こせいらんすう"); +const u8 Str_839C04D[] = _("データなし"); + +void DebugMenu_807808C(u32 a0) +{ + u8 strbuf[11]; + struct ContestWinner *winner; + + if (a0 == 0 || a0 > 13) + a0 = 1; + winner = gSaveBlock1.contestWinners + a0 - 1; + + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 19, 17); + Menu_PrintText(Str_839C01E, 2, 2); + + ConvertIntToDecimalStringN(strbuf, a0, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 2); + + ConvertIntToDecimalStringN(strbuf, winner->species, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 4); + + if (StringLength(winner->nickname) <= 11) + Menu_PrintText(winner->nickname, 11, 6); + else + Menu_PrintText(Str_839C04D, 11, 6); + + if (StringLength(winner->trainerName) <= 11) + Menu_PrintText(winner->trainerName, 11, 8); + else + Menu_PrintText(Str_839C04D, 11, 8); + + ConvertIntToDecimalStringN(strbuf, winner->contestCategory, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 10); + + ConvertIntToHexStringN(strbuf, winner->personality, STR_CONV_MODE_LEADING_ZEROS, 8); + Menu_PrintText(strbuf, 11, 12); +} + +void DebugMenu_807817C(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } +} + +void DebugMenu_80781A8(u8 taskId) +{ + struct Task *task = gTasks + taskId; + + if (task->data[0] == 0) + task->data[0]++; + else if (gMain.newKeys & A_BUTTON) + { + DebugMenu_807808C(task->data[0]); + task->func = DebugMenu_807817C; + return; + } + else if (!DebugMenu_8077DD8(task->data + 0, 1, 13, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN))) + return; + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, task->data[0], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +u8 DebugMenu_ViewPortraits(void) +{ + CloseMenu(); + CreateTask(DebugMenu_80781A8, 80); + ScriptContext2_Enable(); + return TRUE; +} + +void DebugMenu_8078254(u32 a0) +{ + DebugMenu_807808C(a0); +} + +u8 DebugMenu_AllBadges(void) +{ + FlagSet(FLAG_BADGE01_GET); + FlagSet(FLAG_BADGE02_GET); + FlagSet(FLAG_BADGE03_GET); + FlagSet(FLAG_BADGE04_GET); + FlagSet(FLAG_BADGE05_GET); + FlagSet(FLAG_BADGE06_GET); + FlagSet(FLAG_BADGE07_GET); + FlagSet(FLAG_BADGE08_GET); + CloseMenu(); + return TRUE; +} + +u8 DebugMenu_TimeRecords(void) +{ + CloseMenu(); + CreateTask(debug_sub_806F9E4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_SetTime(void) +{ + CloseMenu(); + debug_sub_806F99C(); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C053[] = _("Miracle Island emerged\n" + "Random numbers:{STR_VAR_1}"); + +void DebugMenu_80782EC(u16 rnums) +{ + ConvertIntToHexStringN(gStringVar1, rnums, STR_CONV_MODE_LEFT_ALIGN, 4); + sub_8071F40(Str_839C053); +} + +void DebugMenu_8078310(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = VarGet(VAR_MIRAGE_RND_H); + DebugMenu_80782EC(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + *GetVarPointer(VAR_MIRAGE_RND_H) = data[1]; + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 0xFFFF, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_80782EC(data[1]); + break; + } +} + +u8 DebugMenu_MiragaIslandRND(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078310, 80); + ScriptContext2_Enable(); + return TRUE; +} + +bool8 DebugMenu_80783C8(void) +{ + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (!FlagGet(FLAG_SYS_GAME_CLEAR)) + { + FlagSet(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(0); + } + else + { + FlagClear(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(1); + } + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_ToggleClearFlag(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_GAME_CLEAR) ^ 1); + gMenuCallback = DebugMenu_80783C8; + return FALSE; +} + +bool8 DebugMenu_8078464(void) +{ + switch (DebugMenu_8077E40(FlagGet(FLAG_SYS_WEATHER_CTRL))) + { + case 0: + FlagClear(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case 1: + FlagSet(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenWeatherEvents(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_WEATHER_CTRL) ? FALSE : TRUE); + gMenuCallback = DebugMenu_8078464; + return FALSE; +} + +bool8 DebugMenu_80784E8(void) +{ + switch (DebugMenu_8077E40(IsMysteryGiftEnabled())) + { + case 0: + DisableMysteryGift(); + return FALSE; + case 1: + EnableMysteryGift(); + return FALSE; + case -1: + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_OpenMysteryEvent(void) +{ + Menu_EraseScreen(); + DebugMenu_807786C(IsMysteryGiftEnabled() ? FALSE : TRUE); + gMenuCallback = DebugMenu_80784E8; + return FALSE; +} + +const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n" + "{STR_VAR_3}"); +const u8 Str_839C085[] = _("みしよう データ"); +const u8 Str_839C08E[] = _("Confirmation"); +const u8 Str_839C09B[] = _("Max-1 set"); +const u8 Str_839C0A5[] = _("Zero clear"); +const u8 Str_839C0B0[] = _("レポート"); +const u8 Str_839C0B5[] = _("クリア じかん"); +const u8 Str_839C0BD[] = _("りゅうこう さくせい"); +const u8 Str_839C0C8[] = _("きのみを うえたかいすう"); +const u8 Str_839C0D5[] = _("じてんしゃこうかん"); +const u8 Str_839C0DF[] = _("ほすう"); +const u8 Str_839C0E3[] = _("インタビュー"); +const u8 Str_839C0EA[] = _("バトル"); +const u8 Str_839C0EE[] = _("やせいバトル"); +const u8 Str_839C0F5[] = _("トレーナーバトル"); +const u8 Str_839C0FE[] = _("でんどういり"); +const u8 Str_839C105[] = _("ポケモンほかく"); +const u8 Str_839C10D[] = _("つった かいすう"); +const u8 Str_839C116[] = _("タマゴかえった"); +const u8 Str_839C11E[] = _("しんかした"); +const u8 Str_839C124[] = _("ポケセン かいふく"); +const u8 Str_839C12E[] = _("じたく かいふく"); +const u8 Str_839C137[] = _("サファリ りよう"); +const u8 Str_839C140[] = _("ひでん:いあいぎり"); +const u8 Str_839C14A[] = _("ひでん:いわくだき"); +const u8 Str_839C154[] = _("きち ひっこし"); +const u8 Str_839C15C[] = _("つうしんこうかん"); +const u8 Str_839C165[] = _("つうしんたいせん"); +const u8 Str_839C16E[] = _("つうしん かち"); +const u8 Str_839C176[] = _("つうしん まけ"); +const u8 Str_839C17E[] = _("つうしん ひきわけ"); +const u8 Str_839C188[] = _("わざ:はねる"); +const u8 Str_839C18F[] = _("わざ:わるあがき"); +const u8 Str_839C198[] = _("スロットおおあたりかいすう"); +const u8 Str_839C1A6[] = _("ルーレット れんしょう"); +const u8 Str_839C1B2[] = _("バトルタワー"); +const u8 Str_839C1B9[] = _("バトルタワーかち"); +const u8 Str_839C1C2[] = _("バトルタワーれんしょう"); +const u8 Str_839C1CE[] = _("ポロックさくせい"); +const u8 Str_839C1D7[] = _("つうしんでポロックつくった"); +const u8 Str_839C1E5[] = _("つうしんコンテストかち"); +const u8 Str_839C1F1[] = _("CPUコンテストさんか"); +const u8 Str_839C1FD[] = _("CPUコンテストかち"); +const u8 Str_839C208[] = _("かいもの"); +const u8 Str_839C20D[] = _("ダウジングマシン"); +const u8 Str_839C216[] = _("あめふり"); +const u8 Str_839C21B[] = _("ずかんをみた"); +const u8 Str_839C222[] = _("リボン もらった"); +const u8 Str_839C22B[] = _("だんさ とびおり"); +const u8 Str_839C234[] = _("TVを みた"); +const u8 Str_839C23B[] = _("とけいを みた"); +const u8 Str_839C243[] = _("くじが あたった"); +const u8 Str_839C24C[] = _("ポケモンあずけた"); +const u8 Str_839C255[] = _("ロープウェイりよう"); +const u8 Str_839C25F[] = _("おんせん はいった"); + +const struct { + u32 maxVal; + const u8 * name; +} gUnknown_Debug_839C26C[] = { + {0xFFFFFF, Str_839C0B0}, + {65485627, Str_839C0B5}, + {0xFFFFFF, Str_839C0BD}, + {0xFFFFFF, Str_839C0C8}, + {0xFFFFFF, Str_839C0D5}, + {0xFFFFFF, Str_839C0DF}, + {0xFFFFFF, Str_839C0E3}, + {0xFFFFFF, Str_839C0EA}, + {0xFFFFFF, Str_839C0EE}, + {0xFFFFFF, Str_839C0F5}, + {999, Str_839C0FE}, + {0xFFFFFF, Str_839C105}, + {0xFFFFFF, Str_839C10D}, + {0xFFFFFF, Str_839C116}, + {0xFFFFFF, Str_839C11E}, + {0xFFFFFF, Str_839C124}, + {0xFFFFFF, Str_839C12E}, + {0xFFFFFF, Str_839C137}, + {0xFFFFFF, Str_839C140}, + {0xFFFFFF, Str_839C14A}, + {0xFFFFFF, Str_839C154}, + {0xFFFFFF, Str_839C15C}, + {0xFFFFFF, Str_839C165}, + {9999, Str_839C16E}, + {9999, Str_839C176}, + {9999, Str_839C17E}, + {0xFFFFFF, Str_839C188}, + {0xFFFFFF, Str_839C18F}, + {0xFFFFFF, Str_839C198}, + {0xFFFFFF, Str_839C1A6}, + {0xFFFFFF, Str_839C1B2}, + {0x0, Str_839C1B9}, + {0x0, Str_839C1C2}, + {0xFFFFFF, Str_839C1CE}, + {0xFFFFFF, Str_839C1D7}, + {0xFFFFFF, Str_839C1E5}, + {0xFFFFFF, Str_839C1F1}, + {0xFFFFFF, Str_839C1FD}, + {0xFFFFFF, Str_839C208}, + {0xFFFFFF, Str_839C20D}, + {0xFFFFFF, Str_839C216}, + {0xFFFFFF, Str_839C21B}, + {0xFFFFFF, Str_839C222}, + {0xFFFFFF, Str_839C22B}, + {0xFFFFFF, Str_839C234}, + {0xFFFFFF, Str_839C23B}, + {0xFFFFFF, Str_839C243}, + {0xFFFFFF, Str_839C24C}, + {0xFFFFFF, Str_839C255}, + {0xFFFFFF, Str_839C25F} +}; + +void DebugMenu_8078550(u16 gameStat) +{ + u32 value = GetGameStat(gameStat); + + ConvertIntToDecimalStringN(gStringVar1, gameStat, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gUnknown_Debug_839C26C[gameStat].name); + if (gUnknown_Debug_839C26C[gameStat].maxVal == 0) + StringCopy(gStringVar3, Str_839C085); + else if (gameStat != GAME_STAT_FIRST_HOF_PLAY_TIME) + ConvertIntToDecimalStringN(gStringVar3, value, STR_CONV_MODE_RIGHT_ALIGN, 10); + else + { + ConvertIntToDecimalStringN(gStringVar3, value >> 16, STR_CONV_MODE_RIGHT_ALIGN, 3); + gStringVar3[3] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 4, (value >> 8) & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + gStringVar3[6] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 7, value & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + } + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C07C, 2, 15); +} + +bool32 DebugMenu_807860C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078550(data[1]); + data[0]++; + return FALSE; + case 1: + if (gMain.newKeys & A_BUTTON) + { + data[0]--; + return TRUE; + } + if (gMain.newKeys & B_BUTTON) + { + data[0]++; + return FALSE; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + data[1]++; + if (data[1] == NUM_GAME_STATS) + data[1] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + data[1]--; + if (data[1] < 0) + data[1] = NUM_GAME_STATS - 1; + } + else + return FALSE; + DebugMenu_8078550(data[1]); + return FALSE; + case 2: + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + return FALSE; + } + return FALSE; +} + +void DebugMenu_80786C0(u8 taskId) +{ + DebugMenu_807860C(taskId); +} + +void DebugMenu_80786D0(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, gUnknown_Debug_839C26C[gameStat].maxVal - 1); + PlaySE(SE_PIN); + } + } +} + +void DebugMenu_8078714(u8 taskId) +{ + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, 0); + PlaySE(SE_PIN); + } + } +} + +bool8 DebugMenu_8078758(TaskFunc func) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(func, 80); + return TRUE; +} + +bool8 DebugMenu_8078774(void) +{ + return DebugMenu_8078758(DebugMenu_80786C0); +} + +bool8 DebugMenu_8078788(void) +{ + return DebugMenu_8078758(DebugMenu_80786D0); +} + +bool8 DebugMenu_807879C() +{ + return DebugMenu_8078758(DebugMenu_8078714); +} + +const struct MenuAction gUnknown_Debug_839C3FC[] = { + {Str_839C08E, DebugMenu_8078774}, + {Str_839C09B, DebugMenu_8078788}, + {Str_839C0A5, DebugMenu_807879C} +}; + +bool8 DebugMenu_80787B0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C3FC); +} + u8 DebugMenu_OpenLegendsRecord() { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n" - " mov r1, #0xc\n" - " mov r2, #0x3\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._464 + 4 @ gMenuCallback\n" - " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._465:\n" - " .align 2, 0\n" - "._464:\n" - " .word gUnknown_Debug_839C3FC\n" - " .word gMenuCallback\n" - " .word DebugMenu_80787B0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80787EC() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r5, sp\n" - " add r5, r5, #0x2\n" - " mov r0, sp\n" - " add r1, r5, #0\n" - " bl GetXYCoordsOneStepInFrontOfPlayer\n" - " ldr r4, ._466 @ gSpecialVar_Result\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileBehaviorAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 4 @ gStringVar1\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileIdAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 8 @ gStringVar2\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetZCoordAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 12 @ gStringVar3\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._466 + 16 @ gStringVar4\n" - " ldr r1, ._466 + 20 @ Str_839C414\n" - " bl StringExpandPlaceholders\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._467:\n" - " .align 2, 0\n" - "._466:\n" - " .word gSpecialVar_Result\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gStringVar3\n" - " .word gStringVar4\n" - " .word Str_839C414\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078880() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._472 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._468 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._469 @cond_branch\n" - " cmp r0, #0\n" - " beq ._470 @cond_branch\n" - " b ._480\n" - "._473:\n" - " .align 2, 0\n" - "._472:\n" - " .word gTasks\n" - "._469:\n" - " cmp r0, #0x2\n" - " beq ._474 @cond_branch\n" - " b ._480\n" - "._470:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._476\n" - "._468:\n" - " ldr r0, ._478 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._476:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._480\n" - "._479:\n" - " .align 2, 0\n" - "._478:\n" - " .word gStringVar4\n" - "._474:\n" - " ldr r0, ._481 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._480 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._480:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._482:\n" - " .align 2, 0\n" - "._481:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_CellInfo() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._483 @ DebugMenu_8078880\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl DebugMenu_80787EC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._484:\n" - " .align 2, 0\n" - "._483:\n" - " .word DebugMenu_8078880+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenBerryInfo() -{ - asm( - " push {r4, lr}\n" - " bl DebugOpenBerryInfo\n" - " add r4, r0, #0\n" - " cmp r4, #0\n" - " bne ._485 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._486\n" - "._485:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._487 @ gMenuCallback\n" - " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - "._486:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._488:\n" - " .align 2, 0\n" - "._487:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078950() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._489 @ Str_839C42E\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word Str_839C42E\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078968() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bne ._491 @cond_branch\n" - " ldr r0, ._493 @ gStringVar1\n" - " mov r1, #0x32\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " b ._492\n" - "._494:\n" - " .align 2, 0\n" - "._493:\n" - " .word gStringVar1\n" - "._491:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x64\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - "._492:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._496:\n" - " .align 2, 0\n" - "._495:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789A4() -{ - asm( - " push {r4, lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r4, ._497 @ gStringVar1\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._498:\n" - " .align 2, 0\n" - "._497:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_80789CC() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._499 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r0, ._499 + 4 @ gSaveBlock2\n" - " ldr r1, ._499 + 8 @ 0x55c\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r5, #0x2]\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r5]\n" - " bl DebugMenu_8078968\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._500:\n" - " .align 2, 0\n" - "._499:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078A14() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r4, r1, #0x3\n" - " ldr r5, ._504 @ gTasks\n" - " add r2, r4, r5\n" - " ldr r0, ._504 + 4 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0xc0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._501 @cond_branch\n" - " mov r1, #0x0\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " cmp r0, #0\n" - " bne ._502 @cond_branch\n" - " mov r1, #0x1\n" - "._502:\n" - " strh r1, [r2]\n" - " ldrh r0, [r2]\n" - " bl DebugMenu_8078968\n" - " b ._510\n" - "._505:\n" - " .align 2, 0\n" - "._504:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._501:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._506 @cond_branch\n" - " ldr r1, ._508 @ gSaveBlock2\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " lsl r0, r0, #0x1\n" - " ldr r3, ._508 + 4 @ 0x55c\n" - " add r1, r1, r3\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r2, #0x2]\n" - " ldrh r0, [r2, #0x2]\n" - " bl DebugMenu_80789A4\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n" - " b ._507\n" - "._509:\n" - " .align 2, 0\n" - "._508:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078AA4+1\n" - "._506:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._510 @cond_branch\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._511 @ DebugMenu_8078B38\n" - "._507:\n" - " str r1, [r0]\n" - "._510:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._512:\n" - " .align 2, 0\n" - "._511:\n" - " .word DebugMenu_8078B38+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078AA4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r7, ._515 @ gTasks\n" - " add r4, r5, r7\n" - " add r0, r4, #2\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x3\n" - " ldr r6, ._515 + 4 @ gMain\n" - " ldrh r3, [r6, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._513 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80789A4\n" - " b ._521\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._513:\n" - " ldrh r1, [r6, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._517 @cond_branch\n" - " ldr r1, ._519 @ gSaveBlock2\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, ._519 + 4 @ 0x55c\n" - " add r1, r1, r2\n" - " add r0, r0, r1\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n" - " b ._518\n" - "._520:\n" - " .align 2, 0\n" - "._519:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078B38+1\n" - "._517:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._521 @cond_branch\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r4]\n" - " bl DebugMenu_8078968\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._522 @ DebugMenu_8078A14\n" - "._518:\n" - " str r1, [r0]\n" - "._521:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._523:\n" - " .align 2, 0\n" - "._522:\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B38() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_BattleTowerStages() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._524 @ DebugMenu_80789CC\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._525:\n" - " .align 2, 0\n" - "._524:\n" - " .word DebugMenu_80789CC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B70() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._526 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._526 + 4 @ Str_839C438\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._527:\n" - " .align 2, 0\n" - "._526:\n" - " .word gStringVar1\n" - " .word Str_839C438\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078B94() -{ - asm( - " push {r4, r5, lr}\n" - " mov r3, #0x0\n" - " ldr r1, ._531 @ gUnknown_Debug_839C444\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._529 @cond_branch\n" - " ldr r5, ._531 + 4 @ gSaveBlock1\n" - " add r4, r1, #0\n" - "._530:\n" - " lsl r0, r3, #0x3\n" - " add r2, r0, r5\n" - " add r0, r0, r4\n" - " ldr r1, [r0, #0x4]\n" - " ldr r0, [r0]\n" - " str r0, [r2]\n" - " str r1, [r2, #0x4]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0x27\n" - " bhi ._529 @cond_branch\n" - " lsl r0, r3, #0x3\n" - " add r0, r0, r4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._530 @cond_branch\n" - "._529:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._532:\n" - " .align 2, 0\n" - "._531:\n" - " .word gUnknown_Debug_839C444\n" - " .word gSaveBlock1+0x7f8\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078BD4() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._536 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._533 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._534 @cond_branch\n" - " b ._545\n" - "._537:\n" - " .align 2, 0\n" - "._536:\n" - " .word gTasks+0x8\n" - "._533:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._545\n" - "._534:\n" - " ldr r2, ._541 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._539 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " bl DebugMenu_8078B94\n" - " b ._545\n" - "._542:\n" - " .align 2, 0\n" - "._541:\n" - " .word gMain\n" - "._539:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._543 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._545\n" - "._543:\n" - " add r0, r4, #2\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x0\n" - " mov r2, #0x4\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._545 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - "._545:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C3FC, 12, ARRAY_COUNT(gUnknown_Debug_839C3FC)); + gMenuCallback = DebugMenu_80787B0; + return FALSE; +} + +const u8 Str_839C414[] = _("ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" + "CODE:{STR_VAR_2}"); + +void DebugMenu_80787EC(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + gSpecialVar_Result = MapGridGetMetatileBehaviorAt(x, y); + ConvertIntToHexStringN(gStringVar1, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetMetatileIdAt(x, y); + ConvertIntToHexStringN(gStringVar2, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetZCoordAt(x, y); + ConvertIntToHexStringN(gStringVar3, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + StringExpandPlaceholders(gStringVar4, Str_839C414); +} + +void DebugMenu_8078880(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gStringVar4, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_CellInfo(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078880, 80); + DebugMenu_80787EC(); + ScriptContext2_Enable(); + return TRUE; +} + +u8 DebugMenu_OpenBerryInfo(void) +{ + const u8 * berryInfo = DebugOpenBerryInfo(); + if (berryInfo != NULL) + { + Menu_DrawStdWindowFrame(0, 0, 19, 19); + Menu_PrintText(berryInfo, 1, 1); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; + } + CloseMenu(); + return TRUE; +} + +const u8 Str_839C42E[] = _("レベル ステージ"); + +void DebugMenu_8078950(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C42E, 4, 15); +} + +void DebugMenu_8078968(u16 flag) +{ + if (flag == 0) + ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEADING_ZEROS, 3); + else + ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEADING_ZEROS, 3); + Menu_PrintText(gStringVar1, 4, 17); +} + +void DebugMenu_80789A4(u16 value) +{ + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 4); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_80789CC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + data[0] = 0; + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[0]; + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; +} + +void DebugMenu_8078A14(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (gMain.newKeys & (DPAD_UP | DPAD_DOWN)) + { + data[0] = data[0] == 0 ? 1 : 0; + DebugMenu_8078968(data[0]); + } + else if (gMain.newKeys & A_BUTTON) + { + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[data[0]]; + DebugMenu_80789A4(data[1]); + gTasks[taskId].func = DebugMenu_8078AA4; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8078B38; + } +} + +void DebugMenu_8078AA4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (DebugMenu_8077DD8(data + 1, 0, 2000, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_80789A4(data[1]); + } + else if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.battleTower.curStreakChallengesNum[data[0]] = data[1]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8078B38; + } + else if (gMain.newKeys & B_BUTTON) + { + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; + } +} + +void DebugMenu_8078B38(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_BattleTowerStages(void) +{ + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(DebugMenu_80789CC, 80); + return TRUE; +} + +const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}"); + +void DebugMenu_8078B70(u16 value) +{ + ConvertIntToHexStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); + sub_8071F40(Str_839C438); +} + +const struct Pokeblock gUnknown_Debug_839C444[] = { + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {} +}; + +void DebugMenu_8078B94(void) +{ + u8 i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.pokeblocks); i++) + { + if (gUnknown_Debug_839C444[i].color == 0) + break; + gSaveBlock1.pokeblocks[i] = gUnknown_Debug_839C444[i]; + } +} + +void DebugMenu_8078BD4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078B70(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + DebugMenu_8078B94(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 4, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8078B70(data[1]); + } + break; + } +} + u8 DebugMenu_CheckPKBLCK() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._546 @ DebugMenu_8078BD4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._547:\n" - " .align 2, 0\n" - "._546:\n" - " .word DebugMenu_8078BD4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078C80() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._548 @ Str_839C5A4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._548 + 4 @ gMenuCallback\n" - " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._549:\n" - " .align 2, 0\n" - "._548:\n" - " .word Str_839C5A4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CA8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CA8() -{ - asm( - " push {lr}\n" - " ldr r0, ._552 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._550 @cond_branch\n" - " ldr r1, ._552 + 4 @ gMenuCallback\n" - " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " b ._555\n" - "._553:\n" - " .align 2, 0\n" - "._552:\n" - " .word gMain\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CE4+1\n" - "._550:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._554 @cond_branch\n" - " mov r0, #0x0\n" - " b ._555\n" - "._554:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._555:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078CE4() -{ - asm( - " push {lr}\n" - " ldr r1, ._558 @ \n" - " mov r2, #0x80\n" - " lsl r2, r2, #0xa\n" - " mov r0, #0x0\n" - " bl DebugMenu_8078E40\n" - " cmp r0, #0x1\n" - " bne ._556 @cond_branch\n" - " ldr r0, ._558 + 4 @ \n" - " ldr r1, ._558 + 8 @ \n" - " bl StringCopy\n" - " b ._557\n" - "._559:\n" - " .align 2, 0\n" - "._558:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5CC\n" - "._556:\n" - " ldr r0, ._560 @ gStringVar4\n" - " ldr r1, ._560 + 4 @ Str_839C5DF\n" - " bl StringCopy\n" - "._557:\n" - " ldr r1, ._560 + 8 @ gMenuCallback\n" - " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._561:\n" - " .align 2, 0\n" - "._560:\n" - " .word gStringVar4\n" - " .word Str_839C5DF\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D30() -{ - asm( - " push {r4, r5, r6, lr}\n" - " ldr r5, ._563 @ \n" - " mov r4, #0x0\n" - " mov r6, #0x80\n" - " lsl r6, r6, #0x5\n" - "._562:\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E68\n" - " add r5, r5, r6\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x1f\n" - " bls ._562 @cond_branch\n" - " ldr r0, ._563 + 4 @ \n" - " ldr r1, ._563 + 8 @ \n" - " bl StringCopy\n" - " ldr r1, ._563 + 12 @ \n" - " ldr r0, ._563 + 16 @ \n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5D6\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078D7C() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._565 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._565 + 4 @ gMenuCallback\n" - " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gStringVar4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DA4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DA4() -{ - asm( - " push {lr}\n" - " ldr r0, ._569 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._567 @cond_branch\n" - " mov r0, #0x0\n" - " b ._568\n" - "._570:\n" - " .align 2, 0\n" - "._569:\n" - " .word gMain\n" - "._567:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._568:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_MeTooBackupMan() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._571 @ gUnknown_Debug_839C594\n" - " mov r1, #0xc\n" - " mov r2, #0x2\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._571 + 4 @ gMenuCallback\n" - " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._572:\n" - " .align 2, 0\n" - "._571:\n" - " .word gUnknown_Debug_839C594\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DF0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078DF0() -{ - asm( - " push {lr}\n" - " ldr r0, ._573 @ gUnknown_Debug_839C594\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._574:\n" - " .align 2, 0\n" - "._573:\n" - " .word gUnknown_Debug_839C594\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E04() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r1, #0\n" - " add r5, r2, #0\n" - " b ._575\n" - "._577:\n" - " ldr r0, ._579 @ 0xfffff000\n" - " add r5, r5, r0\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " add r6, r6, r0\n" - " add r0, r4, #1\n" - "._575:\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " cmp r0, #0\n" - " bne ._576 @cond_branch\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " cmp r5, r0\n" - " bhi ._577 @cond_branch\n" - " mov r0, #0x1\n" - " b ._578\n" - "._580:\n" - " .align 2, 0\n" - "._579:\n" - " .word 0xfffff000\n" - "._576:\n" - " mov r0, #0x0\n" - "._578:\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E40() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " add r6, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl m4aSoundVSyncOff\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E04\n" - " add r4, r0, #0\n" - " bl m4aSoundVSyncOn\n" - " add r0, r4, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E68() -{ - asm( - " push {r4, lr}\n" - " add r4, r1, #0\n" - " add r3, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl ReadFlash\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078E80() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " mov r0, #0x2\n" - " mov r1, #0xf\n" - " mov r2, #0x16\n" - " mov r3, #0x10\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r1, [r0, #0x4]\n" - " mov r0, #0xd0\n" - " mov r2, #0xf\n" - " bl sub_8071F60\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._582:\n" - " .align 2, 0\n" - "._581:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078EB0() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " ldr r4, ._583 @ gStringVar1\n" - " mov r0, #0x2\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x5\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x4\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x6\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._584:\n" - " .align 2, 0\n" - "._583:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F1C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._585 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r1, ._585 + 4 @ gSaveBlock2\n" - " ldrh r0, [r1, #0xe]\n" - " strh r0, [r5, #0x2]\n" - " ldrb r0, [r1, #0x10]\n" - " strh r0, [r5, #0x4]\n" - " ldrb r0, [r1, #0x11]\n" - " strh r0, [r5, #0x6]\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078EB0\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078E80\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._586:\n" - " .align 2, 0\n" - "._585:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word DebugMenu_8078F68+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8078F68() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r6, ._589 @ gTasks\n" - " add r4, r5, r6\n" - " ldr r3, ._589 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._587 @cond_branch\n" - " ldr r1, ._589 + 8 @ gSaveBlock2\n" - " ldrh r0, [r4, #0x2]\n" - " strh r0, [r1, #0xe]\n" - " ldrh r0, [r4, #0x4]\n" - " strb r0, [r1, #0x10]\n" - " ldrh r0, [r4, #0x6]\n" - " strb r0, [r1, #0x11]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " b ._588\n" - "._590:\n" - " .align 2, 0\n" - "._589:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - " .word gSaveBlock2\n" - "._587:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._591 @cond_branch\n" - "._588:\n" - " add r0, r6, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._593 @ DebugMenu_8079020\n" - " str r1, [r0]\n" - " b ._601\n" - "._594:\n" - " .align 2, 0\n" - "._593:\n" - " .word DebugMenu_8079020+1\n" - "._591:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._595 @cond_branch\n" - " ldrh r1, [r4]\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0\n" - " beq ._601 @cond_branch\n" - " sub r0, r1, #1\n" - " b ._597\n" - "._595:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._598 @cond_branch\n" - " ldrh r0, [r4]\n" - " cmp r0, #0x1\n" - " bhi ._601 @cond_branch\n" - " add r0, r0, #0x1\n" - "._597:\n" - " strh r0, [r4]\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078E80\n" - " b ._601\n" - "._598:\n" - " mov r0, #0x0\n" - " ldsh r2, [r4, r0]\n" - " lsl r2, r2, #0x3\n" - " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n" - " add r2, r2, r0\n" - " ldrb r0, [r2, #0x5]\n" - " lsl r0, r0, #0x1\n" - " add r0, r4, r0\n" - " ldrh r1, [r2]\n" - " ldrh r2, [r2, #0x2]\n" - " ldrh r3, [r3, #0x30]\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._601 @cond_branch\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078EB0\n" - "._601:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._603:\n" - " .align 2, 0\n" - "._602:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079020() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_PTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._604 @ DebugMenu_8078F1C\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._605:\n" - " .align 2, 0\n" - "._604:\n" - " .word DebugMenu_8078F1C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079058() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._610 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r0, #0x8\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._606 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._607 @cond_branch\n" - " cmp r1, #0\n" - " beq ._608 @cond_branch\n" - " b ._620\n" - "._611:\n" - " .align 2, 0\n" - "._610:\n" - " .word gTasks\n" - "._607:\n" - " cmp r1, #0x2\n" - " beq ._612 @cond_branch\n" - " b ._620\n" - "._608:\n" - " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n" - " str r1, [r0]\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._614\n" - "._616:\n" - " .align 2, 0\n" - "._615:\n" - " .word gUnknown_Debug_03004BD0\n" - "._606:\n" - " ldr r0, ._618 @ gDebug0x839C60C\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x14\n" - " mov r1, #0x8\n" - " mov r2, #0x1\n" - " bl DisplayYesNoMenu\n" - "._614:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._620\n" - "._619:\n" - " .align 2, 0\n" - "._618:\n" - " .word gDebug0x839C60C\n" - "._612:\n" - " bl Menu_ProcessInputNoWrap_\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._620 @cond_branch\n" - " cmp r1, #0\n" - " bne ._621 @cond_branch\n" - " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x1\n" - " b ._622\n" - "._624:\n" - " .align 2, 0\n" - "._623:\n" - " .word gUnknown_Debug_03004BD0\n" - "._621:\n" - " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x0\n" - "._622:\n" - " str r0, [r1]\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._620:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._626:\n" - " .align 2, 0\n" - "._625:\n" - " .word gUnknown_Debug_03004BD0\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenMurakawa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._627 @ DebugMenu_8079058\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._628:\n" - " .align 2, 0\n" - "._627:\n" - " .word DebugMenu_8079058+1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_8079110() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._633 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._629 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._630 @cond_branch\n" - " cmp r0, #0\n" - " beq ._631 @cond_branch\n" - " b ._642\n" - "._634:\n" - " .align 2, 0\n" - "._633:\n" - " .word gTasks\n" - "._630:\n" - " cmp r0, #0x2\n" - " beq ._635 @cond_branch\n" - " b ._642\n" - "._631:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._637\n" - "._629:\n" - " ldr r0, ._639 @ Str_839C61A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - "._637:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._642\n" - "._640:\n" - " .align 2, 0\n" - "._639:\n" - " .word Str_839C61A\n" - "._635:\n" - " bl Menu_UpdateWindowText\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " ldr r0, ._643 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._642:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._644:\n" - " .align 2, 0\n" - "._643:\n" - " .word gMain\n" - "\n" - ); -} - -__attribute__((naked)) -u8 DebugMenu_OpenKiwa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._645 @ DebugMenu_8079110\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " pop {r1}\n" - " bx r1\n" - "._646:\n" - " .align 2, 0\n" - "._645:\n" - " .word DebugMenu_8079110+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_8078BD4, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C574[] = _("write to flash"); +const u8 Str_839C583[] = _("read from flash"); + +const struct MenuAction gUnknown_Debug_839C594[] = { + {Str_839C574, DebugMenu_8078C80}, + {Str_839C583, DebugMenu_8078D30} +}; + +const u8 Str_839C5A4[] = _("Press A, begin to write\n" + "Press B, cancel"); + +bool8 DebugMenu_8078C80(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C5A4, 2, 15); + gMenuCallback = DebugMenu_8078CA8; + return FALSE; +} + +bool8 DebugMenu_8078CA8(void) +{ + if (gMain.newKeys & A_BUTTON) + { + gMenuCallback = DebugMenu_8078CE4; + return FALSE; + } + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +const u8 Str_839C5CC[] =_("かきこみ せいこう"); +const u8 Str_839C5D6[] =_("よみこみせいこう"); +const u8 Str_839C5DF[] =_("かきこみ しっぱい"); +const u8 Str_839C5E9[] =_("よみこみ しっぱい"); + +bool8 DebugMenu_8078CE4(void) +{ + if (DebugMenu_8078E40(0, gSharedMem, 0x20000) == TRUE) + StringCopy(gStringVar4, Str_839C5CC); + else + StringCopy(gStringVar4, Str_839C5DF); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D30(void) +{ + u8 * data = gSharedMem; + u8 i; + + for (i = 0; i < 32; i++) + { + DebugMenu_8078E68(i, data, 0x1000); + data += 0x1000; + } + StringCopy(gStringVar4, Str_839C5D6); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; +} + +bool8 DebugMenu_8078D7C(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 2, 15); + gMenuCallback = DebugMenu_8078DA4; + return FALSE; +} + +bool8 DebugMenu_8078DA4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_MeTooBackupMan(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C594, 12, ARRAY_COUNT(gUnknown_Debug_839C594)); + gMenuCallback = DebugMenu_8078DF0; + return FALSE; +} + +bool8 DebugMenu_8078DF0() +{ + return DebugMenu_8077D78(gUnknown_Debug_839C594); +} + +bool32 DebugMenu_8078E04(u16 a0, u8 * a1, u32 a2) +{ + while (1) + { + if (ProgramFlashSectorAndVerify(a0, a1)) + return FALSE; + if (a2 <= 0x1000) + break; + a2 -= 0x1000; + a1 += 0x1000; + a0++; + } + return TRUE; +} + +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2) +{ + bool32 result; + m4aSoundVSyncOff(); + result = DebugMenu_8078E04(a0, a1, a2); + m4aSoundVSyncOn(); + return result; +} + +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2) +{ + ReadFlash(a0, 0, a1, a2); +} + +struct GameTimeDebugMenuStruct { + u16 unk0; + u16 unk2; + u8 unk4; + u8 unk5; +}; + +const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = { + {0, 999, 2, 1}, + {0, 59, 6, 2}, + {0, 59, 9, 3} +}; + +void DebugMenu_8078E80(s16 * a0) +{ + Menu_BlankWindowRect(2, 15, 22, 16); + sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].unk4, 15); +} + +void DebugMenu_8078EB0(s16 * a0) +{ + ConvertIntToDecimalStringN(gStringVar1, a0[1], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 2, 17); + sub_8071F60(0xf0, 5, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[2], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 6, 17); + sub_8071F60(0xf0, 8, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[3], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_8078F1C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + data[0] = 0; + data[1] = gSaveBlock2.playTimeHours; + data[2] = gSaveBlock2.playTimeMinutes; + data[3] = gSaveBlock2.playTimeSeconds; + + Menu_DisplayDialogueFrame(); + DebugMenu_8078EB0(data); + DebugMenu_8078E80(data); + gTasks[taskId].func = DebugMenu_8078F68; +} + +void DebugMenu_8078F68(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.playTimeHours = data[1]; + gSaveBlock2.playTimeMinutes = data[2]; + gSaveBlock2.playTimeSeconds = data[3]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & DPAD_LEFT) + { + if ((u16)data[0] > 0) + { + data[0]--; + DebugMenu_8078E80(data); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if ((u16)data[0] < 2) + { + data[0]++; + DebugMenu_8078E80(data); + } + } + else + { + const struct GameTimeDebugMenuStruct *r2 = gUnknown_Debug_839C5F4 + data[0]; + if (DebugMenu_8077DD8(data + r2->unk5, r2->unk0, r2->unk2, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_8078EB0(data); + } +} + +void DebugMenu_8079020(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_PTime(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078F1C, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 gDebug0x839C60C[] = _("Set FLASH ERR"); + +void DebugMenu_8079058(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + gUnknown_Debug_03004BD0 = 0; + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gDebug0x839C60C, 4, 15); + DisplayYesNoMenu(20, 8, 1); + gTasks[taskId].data[0]++; + break; + case 2: + switch (Menu_ProcessInputNoWrap_()) + { + case -2: + return; + case 0: + gUnknown_Debug_03004BD0 = 1; + break; + default: + gUnknown_Debug_03004BD0 = 0; + break; + } + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +u8 DebugMenu_OpenMurakawa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079058, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C61A[] = _("abcde; abcde: ABCDE; ABCDE:\p" + "Tableaux des verbes du 2{SUPER_E} groupe.\p" + "La1{SUPER_RE} chose à apprendre c’est de lire.\p" + "Tableaux des verbes du 1{SUPER_ER} groupe.\p" + "“あいうえおかきくけコさしすせそたちつてとな”\n" + "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p" + "をんゃゅょアイウエオカキクケサシスルレロワ,"); + +void DebugMenu_8079110(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + MenuPrintMessage(Str_839C61A, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_OpenKiwa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079110, 80); + ScriptContext2_Enable(); + // return TRUE; } #endif diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index 3d4637746..40df600fa 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -4161,7 +4161,7 @@ static void PicTest_Redraw(u8 a0) } } #else -__attribute__((naked)) void PicTest_Redraw(u8 a0) +NAKED void PicTest_Redraw(u8 a0) { asm("\tpush\t{r4, r5, r6, r7, lr}\n" "\tmov\tr7, r8\n" diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index ef3e0e66c..787e456d2 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -30,7 +30,7 @@ const struct MenuAction gUnknown_0842C29C[] = { {UnknownString_8thRound, sub_814A4B8} }; -int unref_sub_814A414(void) +int InitSogabeDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 16, 18); diff --git a/src/decoration.c b/src/decoration.c index 477414993..b00a51ef0 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1856,7 +1856,7 @@ void sub_80FECE0(u8 decoCat) sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1); } #elif GERMAN -__attribute__((naked)) +NAKED void sub_80FECE0(u8 decoCat) { asm(".syntax unified\n\ @@ -2575,7 +2575,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) return TRUE; } #else -__attribute__((naked)) +NAKED bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) { asm(".syntax unified\n" @@ -4036,7 +4036,7 @@ void sub_8101460(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_8101460(u8 taskId) { asm(".syntax unified\n" diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index ed6a97ba2..01290daba 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2133,7 +2133,7 @@ u16 sub_80EAE88(u8 group) } #if GERMAN -__attribute__((naked)) +NAKED void sub_80EAECC(void) { asm(".syntax unified\n\ diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 5bba69f86..43dfa6864 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -317,7 +317,7 @@ static bool8 sub_8042ABC(void* a, u8 b) } #else -__attribute__((naked)) +NAKED static bool8 sub_8042ABC(void* a, u8 b) { asm(".syntax unified\n\ diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 155ce33f5..3fb611433 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8145,7 +8145,7 @@ void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) } } #else -__attribute__((naked)) +NAKED void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/evolution_scene.c b/src/evolution_scene.c index a3a5dbcec..4fdbeb60f 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -1511,7 +1511,7 @@ void unref_sub_8113B50(u8 *a, u8 *b) #undef sp4 } */ -__attribute__((naked)) +NAKED void unref_sub_8113B50() { asm(".syntax unified\n\ @@ -2436,7 +2436,7 @@ void sub_811430C(u32 a, u32 b) sEvoInfo.unk90C4[b][a] = r7 * 16; } -__attribute__((naked)) +NAKED void unref_sub_81143CC() { asm(".syntax unified\n\ @@ -3688,7 +3688,7 @@ void sub_8114DF0(u32 a, u8 b) } } -__attribute__((naked)) +NAKED void sub_8114E48() { asm(".syntax unified\n\ diff --git a/src/field_effect.c b/src/field_effect.c index f85bc520e..ae0acf1a0 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -601,7 +601,7 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) gPlttBufferFaded[i] = RGB(curRed, curGreen, curBlue); } #else -__attribute__((naked)) +NAKED void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { asm(".syntax unified\n" @@ -676,7 +676,7 @@ void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) ".syntax divided"); } -__attribute__((naked)) +NAKED void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { asm(".syntax unified\n" @@ -2607,7 +2607,7 @@ bool8 sub_8088708(struct Task *task) return FALSE; } #else -__attribute__((naked)) +NAKED bool8 sub_8088708(struct Task *task) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index bc4a1770e..216f39d62 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1024,7 +1024,7 @@ static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) } } #else -__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +NAKED static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r8\n" @@ -1496,7 +1496,7 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) } } #else -__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +NAKED static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) { asm_unified("\tpush {r4-r7,lr}\n" "\tadds r6, r0, 0\n" diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index a7087be0f..4a4122641 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -512,7 +512,7 @@ void sub_80810DC(void) #if DEBUG -__attribute__((naked)) +NAKED void debug_sub_80888D8() { asm("\ diff --git a/src/field_specials.c b/src/field_specials.c index 715086f00..eff623548 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1172,7 +1172,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) return flag; } #else -__attribute__((naked)) +NAKED bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1630,7 +1630,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) return flag; } #else -__attribute__((naked)) +NAKED bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/field_tasks.c b/src/field_tasks.c index ce5fc6c0e..e4f1aadf2 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -213,7 +213,7 @@ void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 } } #else -__attribute__((naked)) +NAKED void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/item.c b/src/item.c index 41cbb7a1e..e6294884b 100644 --- a/src/item.c +++ b/src/item.c @@ -239,7 +239,7 @@ bool8 AddBagItem(u16 itemId, u16 count) return TRUE; } //#else -//__attribute__((naked)) +//NAKED //bool8 AddBagItem(u16 itemId, u16 count) //{ // asm(".syntax unified\n\ diff --git a/src/item_menu.c b/src/item_menu.c index 981f42282..a5748cdab 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1278,7 +1278,7 @@ static void sub_80A4548(u16 a, int b, int c, int d) } } #else -__attribute__((naked)) +NAKED static void sub_80A4548(u16 a, int b, int c, int d) { asm(".syntax unified\n\ @@ -2102,7 +2102,7 @@ static void sub_80A5414(u8 taskId) } } #else -__attribute__((naked)) +NAKED static void sub_80A5414(u8 taskId) { asm(".syntax unified\n\ @@ -2337,7 +2337,7 @@ _080A55FA:\n\ } #endif -__attribute__((naked)) +NAKED static void sub_80A5600(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/item_use.c b/src/item_use.c index a14abbe3e..19c298850 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -439,7 +439,7 @@ void sub_80C9720(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_80C9720(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/mauville_man.c b/src/mauville_man.c index a68d5071d..088085851 100644 --- a/src/mauville_man.c +++ b/src/mauville_man.c @@ -557,7 +557,7 @@ static const u16 gUnknown_083E53C8[][2] = {0x15, 0}, }; -__attribute__((naked)) +NAKED static void sub_80F7DC0(void) { asm(".syntax unified\n\ diff --git a/src/menu.c b/src/menu.c index 86e20d0eb..9abcf66d1 100644 --- a/src/menu.c +++ b/src/menu.c @@ -581,20 +581,20 @@ u8 Menu_GetColumnXCoord(u8 column) return gMenu.columnXCoords[column]; } -void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[]) +void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const void * menuItems) { u8 i; for (i = 0; i < menuItemCount; i++) - Menu_PrintText(menuItems[i].text, left, top + 2 * i); + Menu_PrintText(((const struct MenuAction *)menuItems)[i].text, left, top + 2 * i); } -void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const void * menuItems, const u8 *order) { u8 i; for (i = 0; i < menuItemCount; i++) - Menu_PrintText(menuItems[order[i]].text, left, top + 2 * i); + Menu_PrintText(((const struct MenuAction *)menuItems)[order[i]].text, left, top + 2 * i); } void InitYesNoMenu(u8 left, u8 top, u8 a3) @@ -644,7 +644,7 @@ int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width - 1, height + top - 1); } #elif GERMAN -__attribute__((naked)) +NAKED int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { asm(".syntax unified\n\ diff --git a/src/menu_cursor.c b/src/menu_cursor.c index f2eb31f16..32578d1a4 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -236,7 +236,7 @@ void sub_814A958(u8 a) SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7); } #else -__attribute__((naked)) +NAKED void sub_814A958(u8 a1) { asm(".syntax unified\n\ @@ -419,7 +419,7 @@ _0814AAB8: .4byte gUnknown_0203A3D1\n\ } #endif #elif GERMAN -__attribute__((naked)) +NAKED void sub_814A958(u8 a1) { asm(".syntax unified\n\ diff --git a/src/money.c b/src/money.c index 3b7268dbc..1081d5063 100644 --- a/src/money.c +++ b/src/money.c @@ -176,7 +176,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) #endif } -__attribute__((naked)) +NAKED void Draw10000Sprite(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 56801ff53..1ea177f2e 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -15,6 +15,7 @@ #include "text.h" #include "title_screen.h" #include "ewram.h" +#include "debug.h" static EWRAM_DATA u8 gUnknown_02039338 = 0; @@ -347,8 +348,6 @@ static const u8 Str_843DA84[] = _("LR: select A: send。"); static const u8 Str_843DA98[] = _("sending。。。"); static const u8 Str_843DAA3[] = _("completed。"); -extern const struct {const u8 *text; void (*func)();} gUnknown_Debug_842E2D0[]; -extern const u8 gUnknown_Debug_842E350; void debug_sub_815D1D8(); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 6fcad66ac..58f7f8627 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -114,8 +114,9 @@ static void SetWord(u8 *ptr, u32 val) ptr[3] = val >> 24; } -bool8 unref_sub_81261B4(u8 *a1, int a2) +bool8 debug_sub_81261B4(u8 *a1, const u8 * _a2) { + int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12)) { int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; @@ -128,8 +129,9 @@ bool8 unref_sub_81261B4(u8 *a1, int a2) return FALSE; } -bool8 unref_sub_812620C(u8 *a1, int a2) +bool8 debug_sub_812620C(u8 *a1, const u8 * _a2) { + int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12)) { int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; diff --git a/src/option_menu.c b/src/option_menu.c index a2d32ffb6..8a46e48d9 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -463,7 +463,7 @@ static void FrameType_DrawChoices(u8 selection) Menu_PrintText(text, 18, 15); } #elif GERMAN -__attribute__((naked)) +NAKED static void FrameType_DrawChoices(u8 selection) { asm(".syntax unified\n\ diff --git a/src/party_menu.c b/src/party_menu.c index 9caaa05b9..b9d3796f1 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1007,7 +1007,7 @@ void sub_806B908(void) ewram1B000.unk261 = 2; } #else -__attribute__((naked)) +NAKED void sub_806B908(void) { asm(".syntax unified\n\ @@ -1326,7 +1326,7 @@ u16 HandleDefaultPartyMenuInput(u8 taskId) return gMain.newAndRepeatedKeys; } #else -__attribute__((naked)) +NAKED u16 HandleDefaultPartyMenuInput(u8 taskId) { asm(".syntax unified\n\ @@ -1810,7 +1810,7 @@ void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 dire } #else -__attribute__((naked)) +NAKED void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) { asm(".syntax unified\n\ @@ -2408,7 +2408,7 @@ void sub_806CF04(void) gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C; } #else -__attribute__((naked)) +NAKED void sub_806CF04(void) { asm(".syntax unified\n\ @@ -2986,7 +2986,7 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]); } #else -__attribute__((naked)) +NAKED void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) { asm(".syntax unified\n\ @@ -3172,7 +3172,7 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex) } } #else -__attribute__((naked)) +NAKED void SetHeldItemIconVisibility(u8 a, u8 monIndex) { asm(".syntax unified\n\ @@ -5111,7 +5111,7 @@ u8 GetItemEffectType(u16 item) } } #else -__attribute__((naked)) +NAKED u8 GetItemEffectType(u16 item) { asm(".syntax unified\n\ diff --git a/src/pokedex.c b/src/pokedex.c index d90b73178..61f2bfbba 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3522,7 +3522,7 @@ static void sub_8090584(u8 a, u16 b) } } #else -__attribute__((naked)) +NAKED static void sub_8090584(u8 a, u16 b) { asm(".syntax unified\n\ @@ -3666,7 +3666,7 @@ static void sub_8090644(u8 a, u16 b) } } #else -__attribute__((naked)) +NAKED static void sub_8090644(u8 a, u16 b) { asm(".syntax unified\n\ @@ -5120,7 +5120,7 @@ void sub_8092810(u8 a, u8 b, u8 c, u8 d) } } #else -__attribute__((naked)) +NAKED void sub_8092810(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 1ea8bc205..770b69813 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -405,7 +405,7 @@ void ResetPokemonStorageSystem(void) } #if DEBUG -__attribute__((naked)) +NAKED void debug_sub_80A3904(void) { asm("\ diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 0331abf3e..0905c185b 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -1564,7 +1564,7 @@ const struct SpriteTemplate gSpriteTemplate_83B6DDC = { 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -__attribute__((naked)) void sub_80980D4(void) +NAKED void sub_80980D4(void) { asm_unified("\tpush {r4,r5,lr}\n" "\tsub sp, 0x28\n" diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index 2f9f79a54..2383ac46c 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -519,7 +519,7 @@ void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) } } #else -__attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) +NAKED void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -808,7 +808,7 @@ void sub_809A14C(u16 *vdest) } } #else -__attribute__((naked)) void sub_809A14C(u16 *vdest) +NAKED void sub_809A14C(u16 *vdest) { asm_unified("\tpush {r4-r6,lr}\n" "\tadds r2, r0, 0\n" @@ -2214,7 +2214,7 @@ u8 sub_809C464(void) return r9; } #else -__attribute__((naked)) u8 sub_809C464(void) +NAKED u8 sub_809C464(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r9\n" @@ -2584,7 +2584,7 @@ u8 sub_809C664(void) return r8; } #else -__attribute__((naked)) u8 sub_809C664(void) +NAKED u8 sub_809C664(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 75ddb52d0..f8f075296 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1227,7 +1227,7 @@ static void sub_809E83C(u8 taskId, s8 b) sub_80A2078(taskId); } -__attribute__((naked)) +NAKED static void sub_809E8F0(/*u8 taskId, s8 direction, u8 *c*/) { asm(".syntax unified\n\ @@ -1766,7 +1766,7 @@ static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) } } #else -__attribute__((naked)) +NAKED static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) { asm(".syntax unified\n\ @@ -1897,7 +1897,7 @@ s8 sub_809F284(s8 a) } } #else -__attribute__((naked)) +NAKED s8 sub_809F284(s8 a) { asm(".syntax unified\n\ @@ -2316,7 +2316,7 @@ u8 sub_809FA30(void) // vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80; // vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81; // } -__attribute__((naked)) +NAKED void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ @@ -2840,7 +2840,7 @@ static void sub_80A057C(u16 move) } } #else -__attribute__((naked)) +NAKED static void sub_80A057C(u16 move) { asm(".syntax unified\n\ @@ -3463,7 +3463,7 @@ static void DrawSummaryScreenNavigationDots(void) DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE056), 16); } #else -__attribute__((naked)) +NAKED static void DrawSummaryScreenNavigationDots(void) { asm(".syntax unified\n\ @@ -3646,7 +3646,7 @@ _080A1044: .4byte 0x0600e056\n\ } #endif // NONMATCHING -__attribute__((naked)) +NAKED void sub_80A1048(u8 taskId) { asm(".syntax unified\n\ @@ -4049,7 +4049,7 @@ static void sub_80A12D0(s8 a) // DestroyTask(taskId); // } // } -__attribute__((naked)) +NAKED static void sub_80A1334(u8 taskId) { asm(".syntax unified\n\ @@ -4245,7 +4245,7 @@ static void sub_80A1488(s8 a, u8 b) gTasks[taskId].data[3] = b; } -__attribute__((naked)) +NAKED static void sub_80A1500(u8 taskId) { asm(".syntax unified\n\ @@ -4487,7 +4487,7 @@ static void sub_80A16CC(u8 a) } } #else -__attribute__((naked)) +NAKED static void sub_80A16CC(u8 a) { asm(".syntax unified\n\ @@ -4884,7 +4884,7 @@ void sub_80A1D18(void) StartSpriteAnim(&gSprites[ewram1A000[29]], statusAndPkrs2); } #else -__attribute__((naked)) +NAKED void sub_80A1D18(void) { asm(".syntax unified\n\ diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 55cf05790..8684f2155 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -1793,7 +1793,7 @@ label2: } #else #if DEBUG -__attribute__((naked)) +NAKED void sub_80ED858() { asm("\ @@ -2216,7 +2216,7 @@ void sub_80ED858() .word 0xfbd"); } #else -__attribute__((naked)) +NAKED void sub_80ED858() { asm_unified("push {r4,r5,lr}\n\ @@ -3277,7 +3277,7 @@ bool8 sub_80EEA0C() { } } #else -__attribute__((naked)) +NAKED bool8 sub_80EEA0C() { asm_unified( "push {r4,lr}\n\ @@ -3969,7 +3969,7 @@ void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) } } #else -__attribute__((naked)) +NAKED void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) { asm(".syntax unified\n\ @@ -4713,7 +4713,7 @@ bool8 sub_80F02A0(void) return TRUE; } #else -__attribute__((naked)) +NAKED bool8 sub_80F02A0(void) { asm(".syntax unified\n\ diff --git a/src/record_mixing.c b/src/record_mixing.c index a2660bf82..0eb13899e 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -635,7 +635,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) SeedRng(sp40); } #else -__attribute__((naked)) +NAKED void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) { asm(".syntax unified\n\ diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 69f655a65..f5e8fa99a 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -923,7 +923,7 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) return 1; } #else -__attribute__((naked)) +NAKED static int RotatingGate_CanRotate(u8 a, int puzzleType) { asm(".syntax unified\n\ diff --git a/src/roulette.c b/src/roulette.c index 5e7517d79..b278521b1 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -2733,7 +2733,7 @@ void sub_811952C(struct Sprite *sprite) sprite->callback = sub_8118CEC; } #else -__attribute__((naked)) +NAKED void sub_811952C(struct Sprite *sprite) { asm_unified("push {r4-r7,lr}\n" diff --git a/src/safari_zone.c b/src/safari_zone.c index f371b08b3..7cc8e16a0 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -236,7 +236,7 @@ static void DecrementFeederStepCounters(void) } } -bool8 unref_sub_80C853C(void) +bool32 debug_sub_80C853C(void) { SafariZoneGetPokeblockNameInFeeder(); diff --git a/src/save.c b/src/save.c index 0b7a3dd79..0df83200a 100644 --- a/src/save.c +++ b/src/save.c @@ -927,3 +927,6 @@ u8 unref_sub_8126080(u8 sector, u8 *data) ReadFlash(sector, 0, data, sizeof(struct SaveSector)); return 1; } + +asm(".section .rodata\n" + "\t.align 2"); diff --git a/src/script_menu.c b/src/script_menu.c index 9d901a03c..615004be3 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -930,7 +930,7 @@ void ScriptMenu_CreatePCMenu(void) StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); } #elif GERMAN -__attribute__((naked)) +NAKED void ScriptMenu_CreatePCMenu(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/secret_base.c b/src/secret_base.c index 210d49835..3c4028dca 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -694,7 +694,7 @@ void sub_80BC300(void) } } #else -__attribute__((naked)) +NAKED void sub_80BC300(void) { asm(".syntax unified\n\ diff --git a/src/shop.c b/src/shop.c index 42cda5e2e..96b417b68 100644 --- a/src/shop.c +++ b/src/shop.c @@ -811,7 +811,7 @@ static void Shop_MoveItemListUp(void) } } #else -__attribute__((naked)) +NAKED static void Shop_MoveItemListUp(void) { asm(".syntax unified\n\ @@ -950,7 +950,7 @@ static void Shop_MoveItemListDown(void) } } #else -__attribute__((naked)) +NAKED static void Shop_MoveItemListDown(void) { asm(".syntax unified\n\ diff --git a/src/starter_choose.c b/src/starter_choose.c index 418488774..ff8c706b8 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -548,7 +548,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) REG_WIN0V = WIN_RANGE(labelTop, labelBottom); } #elif GERMAN -__attribute__((naked)) +NAKED static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) { asm(".syntax unified\n\ diff --git a/src/title_screen.c b/src/title_screen.c index a1c8e081d..30ba7191e 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -437,7 +437,7 @@ static void CreatePressStartBanner(s16 x, s16 y) } } #elif GERMAN -__attribute__((naked)) +NAKED static void CreatePressStartBanner(s16 x, s16 y) { asm(".syntax unified\n\ diff --git a/src/trade.c b/src/trade.c index a05bddee4..3245ec5b0 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1492,7 +1492,7 @@ static void sub_8048B0C(u8 a0) #pragma pop_macro("BLOCKSIZE") #else asm(".include \"constants/gba_constants.inc\""); -__attribute__((naked)) +NAKED static void sub_8048B0C(u8 a0) { asm_unified("\tpush {r4-r7,lr}\n" @@ -2488,7 +2488,7 @@ static void sub_8049ED4(u8 a0) } } #else -__attribute__((naked)) +NAKED static void sub_8049ED4(u8 a0) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3055,7 +3055,7 @@ static void sub_804A41C(u8 whichParty) } } #else -__attribute__((naked)) +NAKED static void sub_804A41C(u8 whichParty) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3250,7 +3250,7 @@ static void sub_804A6DC(u8 whichParty) } } #else -__attribute__((naked)) +NAKED static void sub_804A6DC(u8 whichParty) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3561,7 +3561,7 @@ static void sub_804ACF4(u8 who) } } #else -static __attribute__((naked)) void sub_804ACF4(u8 who) +static NAKED void sub_804ACF4(u8 who) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r9\n" @@ -3869,7 +3869,7 @@ static void sub_804B1BC(void) } } #else -__attribute__((naked)) static void sub_804B1BC(void) +NAKED static void sub_804B1BC(void) { asm_unified("\tpush {lr}\n" "\tldr r1, _0804B1FC @ =REG_BG1VOFS\n" @@ -4113,7 +4113,7 @@ static void sub_804B41C(void) UpdatePaletteFade(); } #else -static __attribute__((naked)) void sub_804B41C(void) +static NAKED void sub_804B41C(void) { asm_unified("\tpush {r4-r6,lr}\n" "\tsub sp, 0x4\n" diff --git a/src/trainer_card.c b/src/trainer_card.c index 8d16aa9bf..599479f16 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -864,7 +864,7 @@ bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) } */ -__attribute__((naked)) +NAKED bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { asm(".syntax unified\n\ @@ -1028,7 +1028,7 @@ bool8 TrainerCard_SwitchToNewSide(struct Task *task) return TRUE; } -__attribute__((naked)) +NAKED bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task) { asm(".syntax unified\n\ @@ -2435,7 +2435,7 @@ void sub_80C01D4(void) } } #else -__attribute__((naked)) +NAKED void sub_80C01D4(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/unk_text_8095904.c b/src/unk_text_8095904.c index 4b190bdaa..df0a35e7c 100644 --- a/src/unk_text_8095904.c +++ b/src/unk_text_8095904.c @@ -64,7 +64,7 @@ void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *b } } #else -__attribute__((naked)) void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer) +NAKED void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 8ea93aab8..8205f4f70 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -697,7 +697,7 @@ static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2) } } #else -__attribute__((naked)) +NAKED static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2) { asm_unified("\tpush {r4,lr}\n" diff --git a/src/util.c b/src/util.c index 582b9f806..2e76cf4de 100644 --- a/src/util.c +++ b/src/util.c @@ -231,7 +231,7 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) #else -__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) +NAKED void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { asm("\n" " .syntax unified\n" @@ -490,7 +490,7 @@ int CountTrailingZeroBits(u32 value) return 0; } -u16 CalcCRC16(u8 *data, int length) +u16 CalcCRC16(const u8 *data, int length) { u16 i, j; u16 crc = 0x1121; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index ddad43a56..7e5dac594 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -3698,7 +3698,7 @@ const u16 gRoute119WaterTileData[] = extern u16 gSpecialVar_Result; extern u8 S_RepelWoreOff[]; -EWRAM_DATA u8 sWildEncountersDisabled = 0; +EWRAM_DATA u8 gWildEncountersDisabled = 0; EWRAM_DATA static u32 sFeebasRngValue = 0; #define NUM_FEEBAS_SPOTS 6 @@ -3712,7 +3712,7 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate); void DisableWildEncounters(bool8 disabled) { - sWildEncountersDisabled = disabled; + gWildEncountersDisabled = disabled; } static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section) @@ -4110,7 +4110,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) u16 headerNum; struct Roamer *roamer; - if (sWildEncountersDisabled == TRUE) + if (gWildEncountersDisabled == TRUE) return 0; else { |