start splitting dungeon menu files

This commit is contained in:
DizzyEggg 2025-03-01 20:31:56 +01:00
parent 208d9308fb
commit 7ad89f101d
9 changed files with 1867 additions and 1719 deletions

View File

@ -6,66 +6,7 @@
.text
thumb_func_start sub_80637BC
sub_80637BC:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r2, 0
ldr r0, _080637E0
lsls r1, 2
adds r1, r0
ldrh r1, [r1]
adds r0, r4, 0
bl SetMonsterActionFields
strb r5, [r4, 0x4]
ldr r0, _080637E4
ldr r0, [r0]
strb r0, [r4, 0xC]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080637E0: .4byte gUnknown_202EE44
_080637E4: .4byte gUnknown_202F2D8
thumb_func_end sub_80637BC
thumb_func_start sub_80637E8
sub_80637E8:
push {lr}
adds r3, r0, 0
ldr r0, _08063828
ldr r1, [r0]
ldrb r0, [r3, 0x4]
lsls r0, 2
ldr r2, _0806382C
adds r1, r2
adds r1, r0
ldr r0, [r1]
ldr r0, [r0, 0x70]
ldrb r1, [r3, 0xC]
lsls r1, 3
adds r1, r0, r1
ldr r2, _08063830
adds r2, r1
mov r12, r2
ldrb r2, [r2]
movs r1, 0x2
orrs r1, r2
mov r2, r12
strb r1, [r2]
movs r1, 0x8C
lsls r1, 1
adds r0, r1
ldrb r1, [r3, 0xC]
movs r2, 0x4
bl sub_8063834
pop {r0}
bx r0
.align 2, 0
_08063828: .4byte gDungeon
_0806382C: .4byte 0x0001357c
_08063830: .4byte 0x00000119
thumb_func_end sub_80637E8
thumb_func_start sub_8063834
sub_8063834:
@ -1115,7 +1056,7 @@ _08064058:
_0806406E:
movs r1, 0x18
ldrsh r0, [r4, r1]
bl sub_8044F3C
bl CanSubMenuItemBeChosen
lsls r0, 24
cmp r0, 0
beq _08064098
@ -1488,7 +1429,7 @@ _08064340:
pop {r0}
bx r0
.align 2, 0
_08064350: .4byte gUnknown_202EE6C
_08064350: .4byte gDungeonSubMenuItemsCount
_08064354: .4byte gUnknown_202F2D8
thumb_func_end sub_8064310
@ -1682,7 +1623,7 @@ _080644CC: .4byte gRealInputs
_080644D0:
movs r2, 0x18
ldrsh r0, [r5, r2]
bl sub_8044F3C
bl CanSubMenuItemBeChosen
lsls r0, 24
cmp r0, 0
beq _0806450C
@ -1820,7 +1761,7 @@ sub_80645D4:
pop {r0}
bx r0
.align 2, 0
_080645F4: .4byte gUnknown_202EE6C
_080645F4: .4byte gDungeonSubMenuItemsCount
thumb_func_end sub_80645D4
thumb_func_start sub_80645F8
@ -2209,7 +2150,7 @@ _08064910: .4byte gRealInputs
_08064914:
movs r2, 0x18
ldrsh r0, [r5, r2]
bl sub_8044F3C
bl CanSubMenuItemBeChosen
lsls r0, 24
cmp r0, 0
beq _08064950
@ -2353,7 +2294,7 @@ sub_8064A18:
pop {r0}
bx r0
.align 2, 0
_08064A38: .4byte gUnknown_202EE6C
_08064A38: .4byte gDungeonSubMenuItemsCount
thumb_func_end sub_8064A18
thumb_func_start sub_8064A3C

16
include/dungeon_main.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef GUARD_DUNGEON_MAIN_H
#define GUARD_DUNGEON_MAIN_H
#include "structs/str_text.h"
void DungeonHandlePlayerInput(void);
void sub_805E804(void);
void sub_805EE30(void);
void sub_805EFB4(Entity *a0, bool8 a1);
void sub_805F02C(void);
ActionContainer *GetLeaderActionContainer(void);
u16 GetLeaderActionId(void);
bool8 sub_805FBE8(u8 *a0);
void CreateDungeonMenuSubWindow(Window *mainWindow, s32 subWindowX);
#endif

View File

@ -226,7 +226,8 @@ SECTIONS {
src/move_actions.o(.text);
src/status_actions.o(.text);
src/move_checks.o(.text);
src/code_805D8C8_1.o(.text);
src/dungeon_main.o(.text);
src/code_805D8C8_2.o(.text);
asm/code_805D8C8.o(.text);
src/code_8066D04.o(.text);
src/code_805D8C8.o(.text);

View File

@ -23,7 +23,7 @@ typedef struct unkStr_80F7C54
EWRAM_DATA unkStruct_202EE44 gUnknown_202EE44[10] = {0};
extern s32 gUnknown_202EE6C;
extern s32 gDungeonSubMenuItemsCount;
extern const ItemText gActions[];
extern u16 gUnknown_80F6964[NUM_ITEM_CATEGORIES];
@ -159,7 +159,7 @@ void sub_8044E24(Entity *entity,int index,u32 unused)
}
// Similar to sub_8044BA8
u8 *sub_8044EC8(s32 param_1)
u8 *GetDungeonSubMenuItemString(s32 param_1)
{
u16 uVar1;
u32 uVar3;
@ -185,7 +185,7 @@ u8 *sub_8044EC8(s32 param_1)
}
}
bool8 sub_8044F3C(s32 param_1)
bool8 CanSubMenuItemBeChosen(s32 param_1)
{
if(param_1 < 0)
return FALSE;
@ -197,17 +197,17 @@ void sub_8044F5C(u16 param_1, u8 param_2)
{
int index;
if (gUnknown_202EE6C < 10) {
for(index = 0; index < gUnknown_202EE6C; index++)
if (gDungeonSubMenuItemsCount < 10) {
for(index = 0; index < gDungeonSubMenuItemsCount; index++)
{
if (gUnknown_202EE44[index].unk0 == param_1) {
return;
}
}
gUnknown_202EE44[gUnknown_202EE6C].unk0 = param_1;
gUnknown_202EE44[gUnknown_202EE6C].unk2 = param_2;
gUnknown_202EE44[gUnknown_202EE6C].unk3 = TRUE;
gUnknown_202EE6C++;
gUnknown_202EE44[gDungeonSubMenuItemsCount].unk0 = param_1;
gUnknown_202EE44[gDungeonSubMenuItemsCount].unk2 = param_2;
gUnknown_202EE44[gDungeonSubMenuItemsCount].unk3 = TRUE;
gDungeonSubMenuItemsCount++;
}
}
@ -215,7 +215,7 @@ s32 sub_8044FB4(u16 param_1)
{
int index;
for(index = 0; index < gUnknown_202EE6C; index++)
for(index = 0; index < gDungeonSubMenuItemsCount; index++)
{
if (gUnknown_202EE44[index].unk0 == param_1) {
return index;
@ -228,7 +228,7 @@ void sub_8044FF0(u16 param_1)
{
int index;
for(index = 0; index < gUnknown_202EE6C; index++)
for(index = 0; index < gDungeonSubMenuItemsCount; index++)
{
if (gUnknown_202EE44[index].unk0 == param_1) {
gUnknown_202EE44[index].unk3 = FALSE;
@ -269,8 +269,8 @@ void sub_8045064(void)
unkStruct_202EE44 *jPtr;
unkStruct_202EE44 temp;
for (i = 0; i < gUnknown_202EE6C; i++) {
for (j = i + 1; j < gUnknown_202EE6C; j++) {
for (i = 0; i < gDungeonSubMenuItemsCount; i++) {
for (j = i + 1; j < gDungeonSubMenuItemsCount; j++) {
iPtr = &gUnknown_202EE44[i];
jPtr = &gUnknown_202EE44[j];
if ((s32)gUnknown_80F7C54[iPtr->unk0].unk0 > (s32)gUnknown_80F7C54[jPtr->unk0].unk0) {

File diff suppressed because it is too large Load Diff

View File

@ -76,7 +76,7 @@ extern const u8 *const gMonCringing;
extern const u8 *const gMonParalyzed;
extern const u8 *const gUnknown_80FC690;
extern s32 gUnknown_202EE6C;
extern s32 gDungeonSubMenuItemsCount;
extern u32 gUnknown_202F208;
extern void sub_8071DA4(Entity *);
@ -901,7 +901,7 @@ extern void sub_80684C4(void);
void sub_8045064(void);
extern void PlayDungeonCursorSE(u8 param_1);
extern void sub_8068344(void);
bool8 sub_8044F3C(s32 param_1);
bool8 CanSubMenuItemBeChosen(s32 param_1);
void sub_8068310(s32 a0, PokemonStruct1 **a1);
void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4);
extern void DungeonShowWindows(Windows *a0, u8 a1);
@ -1124,7 +1124,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3)
r10 = gDungeonMenu.menuIndex;
arrId = gUnknown_202F30C + r10;
gUnknown_202EE6C = 0;
gDungeonSubMenuItemsCount = 0;
sub_8044F5C(0x29, 0);
sub_8044F5C(0x2A, 0);
sub_8044F5C(0x40, 0);
@ -1158,7 +1158,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3)
}
if ((gRealInputs.pressed & A_BUTTON) || gDungeonMenu.unk28.a_button) {
if (sub_8044F3C(gDungeonMenu.menuIndex)) {
if (CanSubMenuItemBeChosen(gDungeonMenu.menuIndex)) {
PlayDungeonConfirmationSE();
r7 = 1;
break;

1748
src/dungeon_main.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -136,7 +136,7 @@ gUnknown_202EE3A: /* 202EE3A (sub_8060E38 - sub_8065DBC) */
gUnknown_202EE44: /* 202EE44 (sub_8044EC8 - sub_80647F0) */
.space 0x28
gUnknown_202EE6C: /* 202EE6C (sub_8044F5C - sub_8067A80) */
gDungeonSubMenuItemsCount: /* 202EE6C (sub_8044F5C - sub_8067A80) */
.space 0x4
gUnknown_202EE70: /* 202EE70 (sub_804513C - sub_80828E0) */
@ -148,7 +148,8 @@ gUnknown_202EE76: /* 202EE76 (sub_804513C - sub_8082A08) */
.include "src/dungeon_generation.o"
.include "src/dungeon_message.o"
.include "src/dungeon_move.o"
.include "src/code_805D8C8_1.o"
.include "src/dungeon_main.o"
.include "src/code_805D8C8_2.o"
gUnknown_202F268: /* 202F268 (sub_8062500) */
.space 0x8

View File

@ -114,7 +114,8 @@
.include "src/dungeon_map_access.o"
.include "src/dungeon_message.o"
.include "src/dungeon_move.o"
.include "src/code_805D8C8_1.o"
.include "src/dungeon_main.o"
.include "src/code_805D8C8_2.o"
.include "src/dungeon_ai_items.o"
.include "src/code_807CD9C.o"
.include "src/dungeon_leader.o"