through debug_sub_815FFDC

This commit is contained in:
PikalaxALT 2018-04-02 08:48:16 -04:00
parent d43e750b88
commit a61e8646af
4 changed files with 140 additions and 415 deletions

View File

@ -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}

View File

@ -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

View File

@ -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

View File

@ -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