diff options
-rw-r--r-- | asm/nakamura_debug_menu.s | 414 | ||||
-rw-r--r-- | include/menu_helpers.h | 3 | ||||
-rw-r--r-- | include/wild_encounter.h | 5 | ||||
-rw-r--r-- | src/debug/nakamura_debug_menu.c | 133 |
4 files changed, 140 insertions, 415 deletions
diff --git a/asm/nakamura_debug_menu.s b/asm/nakamura_debug_menu.s index d17caccb5..7a95bc953 100644 --- a/asm/nakamura_debug_menu.s +++ b/asm/nakamura_debug_menu.s @@ -5,420 +5,6 @@ .text - thumb_func_start debug_sub_815FD40 -debug_sub_815FD40: - push {r4, r5, r6, r7, lr} - add sp, sp, #0xfffffffc - mov r6, #0x0 - mov r4, sp - add r4, r4, #0x2 - mov r0, sp - add r1, r4, #0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r1, sp - mov r0, sp - ldrh r0, [r0] - sub r0, r0, #0x7 - strh r0, [r1] - ldrh r0, [r4] - sub r0, r0, #0x7 - strh r0, [r4] - mov r5, #0x0 - ldr r1, ._192 @ gMapHeader - ldr r0, [r1] - ldr r0, [r0, #0x4] - add r7, r4, #0 - cmp r6, r0 - bge ._190 @cond_branch -._199: - mov r4, #0x0 - ldr r0, [r1] - b ._191 -._193: - .align 2, 0 -._192: - .word gMapHeader -._198: - add r0, r4, #7 - add r1, r5, #7 - bl MapGridGetMetatileBehaviorAt - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_805759C - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x1 - bne ._196 @cond_branch - add r0, r6, #1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - mov r0, sp - mov r1, #0x0 - ldsh r0, [r0, r1] - cmp r0, r4 - bne ._196 @cond_branch - mov r1, #0x0 - ldsh r0, [r7, r1] - cmp r0, r5 - bne ._196 @cond_branch - add r0, r6, #0 - b ._197 -._196: - add r0, r4, #1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, ._200 @ gMapHeader - ldr r0, [r0] -._191: - ldr r0, [r0] - cmp r4, r0 - blt ._198 @cond_branch - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - ldr r1, ._200 @ gMapHeader - ldr r0, [r1] - ldr r0, [r0, #0x4] - cmp r5, r0 - blt ._199 @cond_branch -._190: - add r0, r6, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 -._197: - add sp, sp, #0x4 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._201: - .align 2, 0 -._200: - .word gMapHeader - - thumb_func_end debug_sub_815FD40 - - thumb_func_start debug_sub_815FDE4 -debug_sub_815FDE4: - push {lr} - ldr r0, ._205 @ gMain - ldrh r1, [r0, #0x2e] - mov r0, #0x1 - and r0, r0, r1 - cmp r0, #0 - bne ._202 @cond_branch - mov r0, #0x2 - and r0, r0, r1 - cmp r0, #0 - beq ._203 @cond_branch -._202: - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - bl CloseMenu - mov r0, #0x1 - b ._204 -._206: - .align 2, 0 -._205: - .word gMain -._203: - mov r0, #0x0 -._204: - pop {r1} - bx r1 - - thumb_func_end debug_sub_815FDE4 - - thumb_func_start debug_sub_815FE1C -debug_sub_815FE1C: - push {r4, r5, r6, r7, lr} - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0x13 - bl Menu_EraseWindowRect - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0x10 - mov r3, #0x13 - bl Menu_DrawStdWindowFrame - ldr r0, ._210 @ Str_843E58D - mov r1, #0x1 - mov r2, #0x1 - bl Menu_PrintText - ldr r6, ._210 + 4 @ gStringVar1 - mov r0, #0x0 - bl debug_sub_815FCB4 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x5 - mov r2, #0x3 - bl Menu_PrintText - mov r0, #0x1 - bl debug_sub_815FCB4 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x5 - mov r2, #0x5 - bl Menu_PrintText - mov r0, #0x2 - bl debug_sub_815FCB4 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0x5 - mov r2, #0x7 - bl Menu_PrintText - mov r0, #0x0 - bl debug_sub_8092344 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0xb - mov r2, #0x3 - bl Menu_PrintText - mov r0, #0x1 - bl debug_sub_8092344 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0xb - mov r2, #0x5 - bl Menu_PrintText - mov r0, #0x2 - bl debug_sub_8092344 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x5 - bl ConvertIntToDecimalStringN - add r0, r6, #0 - mov r1, #0xb - mov r2, #0x7 - bl Menu_PrintText - ldr r0, ._210 + 8 @ gSaveBlock1 - ldr r1, ._210 + 12 @ 0x2dd6 - add r0, r0, r1 - ldrh r0, [r0] - bl FeebasSeedRng - mov r0, #0x0 - bl debug_sub_815FCB4 - add r4, r0, #0 - mov r0, #0x1 - bl debug_sub_815FCB4 - add r5, r0, #0 - mov r0, #0x2 - bl debug_sub_815FCB4 - add r4, r4, r5 - add r0, r0, r4 - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 - mov r5, #0x0 -._209: - bl FeebasRandom - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r7, #0 - bl __umodsi3 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - cmp r1, #0 - bne ._207 @cond_branch - add r1, r7, #0 -._207: - sub r0, r1, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x2 - bls ._208 @cond_branch - add r0, r6, #0 - mov r2, #0x1 - mov r3, #0x4 - bl ConvertIntToDecimalStringN - add r0, r5, #0 - mov r1, #0x3 - bl __umodsi3 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r4, r0, #0x2 - add r4, r4, r0 - add r4, r4, #0x2 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - add r0, r5, #0 - mov r1, #0x3 - bl __udivsi3 - add r2, r0, #0 - lsl r2, r2, #0x19 - mov r0, #0xb0 - lsl r0, r0, #0x14 - add r2, r2, r0 - lsr r2, r2, #0x18 - add r0, r6, #0 - add r1, r4, #0 - bl Menu_PrintText - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -._208: - cmp r5, #0x6 - bne ._209 @cond_branch - ldr r4, ._210 + 4 @ gStringVar1 - bl debug_sub_815FD40 - add r1, r0, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r0, r4, #0 - mov r2, #0x1 - mov r3, #0x4 - bl ConvertIntToDecimalStringN - add r0, r4, #0 - mov r1, #0x2 - mov r2, #0x11 - bl Menu_PrintText - ldr r1, ._210 + 16 @ gMenuCallback - ldr r0, ._210 + 20 @ debug_sub_815FDE4 - str r0, [r1] - mov r0, #0x0 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._211: - .align 2, 0 -._210: - .word Str_843E58D - .word gStringVar1 - .word gSaveBlock1 - .word 0x2dd6 - .word gMenuCallback - .word debug_sub_815FDE4+1 - - thumb_func_end debug_sub_815FE1C - - thumb_func_start debug_sub_815FFDC -debug_sub_815FFDC: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r0, #0xe - mov r1, #0x0 - mov r2, #0x1d - mov r3, #0xd - bl Menu_DrawStdWindowFrame - mov r0, #0x0 - mov r1, #0xe - mov r2, #0x1d - mov r3, #0x13 - bl Menu_DrawStdWindowFrame - ldr r0, ._214 @ Str_843E5D4 - mov r1, #0x1 - mov r2, #0xf - bl Menu_PrintText - mov r5, #0x0 - ldr r0, ._214 + 4 @ _nakamuraStatic0 - mov r8, r0 -._216: - mov r0, #0x64 - add r1, r5, #0 - mul r1, r1, r0 - ldr r0, ._214 + 8 @ gPlayerParty - add r6, r1, r0 - add r0, r6, #0 - mov r1, #0xb - bl GetMonData - lsl r1, r5, #0x2 - mov r2, r8 - add r4, r1, r2 - strh r0, [r4] - lsl r0, r0, #0x10 - add r7, r1, #0 - cmp r0, #0 - beq ._212 @cond_branch - add r0, r6, #0 - mov r1, #0x38 - bl GetMonData - strb r0, [r4, #0x2] - add r0, r5, #0 - bl debug_sub_816009C - add r0, r5, #0 - bl debug_sub_81600D0 - add r0, r5, #0 - bl debug_sub_816013C - b ._213 -._215: - .align 2, 0 -._214: - .word Str_843E5D4 - .word _nakamuraStatic0 - .word gPlayerParty -._212: - mov r0, #0x1 - strb r0, [r4, #0x2] -._213: - mov r0, r8 - add r1, r7, r0 - mov r0, #0x0 - strb r0, [r1, #0x3] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x5 - bls ._216 @cond_branch - ldr r1, ._217 @ _nakamuraData4 - mov r0, #0x0 - strb r0, [r1] - mov r0, #0xf - mov r1, #0x1 - mov r2, #0xff - bl PrintTriangleCursorWithPalette - ldr r1, ._217 + 4 @ gMenuCallback - ldr r0, ._217 + 8 @ debug_sub_8160498 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 -._218: - .align 2, 0 -._217: - .word _nakamuraData4 - .word gMenuCallback - .word debug_sub_8160498+1 - - thumb_func_end debug_sub_815FFDC - thumb_func_start debug_sub_816009C debug_sub_816009C: push {lr} diff --git a/include/menu_helpers.h b/include/menu_helpers.h index a1c872c73..fb50ae724 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -50,5 +50,8 @@ void StartVerticalScrollIndicators(u8); void sub_80F98DC(u8); void PauseVerticalScrollIndicator(u8); void SetVerticalScrollIndicatorPriority(u8, u8); +#if DEBUG +void PrintTriangleCursorWithPalette(u8, u8, u8); +#endif // DEBUG #endif // GUARD_MENU_HELPERS_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index c9d7c3fa1..2846c12f5 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -35,5 +35,10 @@ void FishingWildEncounter(u8 rod); u16 GetLocalWildMon(bool8 *isWaterMon); u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); +#if DEBUG +u16 debug_sub_8092344(u8 arg0); +void FeebasSeedRng(u16 seed); +u16 FeebasRandom(void); +#endif // DEBUG #endif // GUARD_WILD_ENCOUNTER_H diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index d4614416c..5ceb0896f 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -1,12 +1,14 @@ #if DEBUG #include "global.h" #include "constants/items.h" +#include "constants/species.h" #include "random.h" #include "palette.h" #include "main.h" #include "string_util.h" #include "overworld.h" #include "fieldmap.h" +#include "field_player_avatar.h" #include "metatile_behavior.h" #include "start_menu.h" #include "party_menu.h" @@ -14,7 +16,9 @@ #include "secret_base.h" #include "roamer.h" #include "decoration_inventory.h" +#include "wild_encounter.h" #include "menu.h" +#include "menu_helpers.h" typedef bool8 (*MenuFunc)(void); @@ -29,7 +33,11 @@ EWRAM_DATA u16 _nakamuraData8 = 0; EWRAM_DATA u16 _nakamuraDataA = 0; EWRAM_DATA u16 _nakamuraDataC = 0; -__attribute__((unused)) static u8 _nakamuraStatic0[0x18]; +__attribute__((unused)) static struct { + u16 species; + u8 level; + u8 unk3; +} _nakamuraStatic0[PARTY_SIZE]; __attribute__((unused)) static u8 _nakamuraStatic18; __attribute__((unused)) static u8 gDebugFiller3000814[4]; @@ -46,6 +54,10 @@ bool8 debug_sub_815FBE8(void); bool8 debug_sub_815FC54(void); bool8 debug_sub_815FC94(void); bool8 debug_sub_815FE1C(void); +void debug_sub_816009C(u8); +void debug_sub_81600D0(u8); +void debug_sub_816013C(u8); +bool8 debug_sub_8160498(void); bool8 debug_sub_8160D98(void); const u8 Str_843E36C[] = _("Berries"); @@ -755,4 +767,123 @@ u16 debug_sub_815FCB4(u8 a0) return retval; } +u16 debug_sub_815FD40(void) +{ + u16 retval = 0; + s16 x; + s16 y; + u16 xx; + u16 yy; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + x -= 7; + y -= 7; + + for (yy = 0; yy < gMapHeader.mapData->height; yy++) + { + for (xx = 0; xx < gMapHeader.mapData->width; xx++) + { + if (sub_805759C(MapGridGetMetatileBehaviorAt(xx + 7, yy + 7)) == TRUE) + { + retval++; + if (x == xx && y == yy) + return retval; + } + } + } + return retval + 1; +} + +bool8 debug_sub_815FDE4(void) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + Menu_EraseWindowRect(0, 0, 29, 19); + CloseMenu(); + return TRUE; + } + + return FALSE; +} + +bool8 debug_sub_815FE1C(void) +{ + u16 r7; + u16 r5; + + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DrawStdWindowFrame(0, 0, 16, 19); + Menu_PrintText(Str_843E58D, 1, 1); + + ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FCB4(0), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 3); + + ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FCB4(1), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 5); + + ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FCB4(2), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 5, 7); + + ConvertIntToDecimalStringN(gStringVar1, debug_sub_8092344(0), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 3); + + ConvertIntToDecimalStringN(gStringVar1, debug_sub_8092344(1), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 5); + + ConvertIntToDecimalStringN(gStringVar1, debug_sub_8092344(2), STR_CONV_MODE_RIGHT_ALIGN, 5); + Menu_PrintText(gStringVar1, 11, 7); + + FeebasSeedRng(gSaveBlock1.easyChatPairs[0].unk2); + r7 = debug_sub_815FCB4(0) + debug_sub_815FCB4(1) + debug_sub_815FCB4(2); + r5 = 0; + + while (r5 != 6) + { + u16 r1 = FeebasRandom() % r7; + if (r1 == 0) + r1 = r7; + if (r1 == 0 || r1 > 3) + { + ConvertIntToDecimalStringN(gStringVar1, r1, STR_CONV_MODE_RIGHT_ALIGN, 4); + Menu_PrintText(gStringVar1, (r5 % 3) * 5 + 2, (r5 / 3) * 2 + 11); + r5++; + } + } + + ConvertIntToDecimalStringN(gStringVar1, debug_sub_815FD40(), STR_CONV_MODE_RIGHT_ALIGN, 4); + Menu_PrintText(gStringVar1, 2, 17); + + gMenuCallback = debug_sub_815FDE4; + + return FALSE; +} + +void debug_sub_815FFDC(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(14, 0, 29, 13); + Menu_DrawStdWindowFrame(0, 14, 29, 19); + Menu_PrintText(Str_843E5D4, 1, 15); + + for (i = 0; i < PARTY_SIZE; i++) + { + _nakamuraStatic0[i].species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + if (_nakamuraStatic0[i].species != SPECIES_NONE) + { + _nakamuraStatic0[i].level = GetMonData(gPlayerParty + i, MON_DATA_LEVEL); + debug_sub_816009C(i); + debug_sub_81600D0(i); + debug_sub_816013C(i); + } + else + _nakamuraStatic0[i].level = 1; + _nakamuraStatic0[i].unk3 = 0; + } + + _nakamuraData4 = 0; + PrintTriangleCursorWithPalette(15, 1, 0xFF); + gMenuCallback = debug_sub_8160498; +} + #endif // DEBUG |