summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/nakamura_debug_menu.s414
-rw-r--r--include/menu_helpers.h3
-rw-r--r--include/wild_encounter.h5
-rw-r--r--src/debug/nakamura_debug_menu.c133
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