code_8010F28 clean-up

This commit is contained in:
DizzyEggg 2025-02-21 11:01:54 +01:00
parent 13b49a48eb
commit aef4bcf76f
7 changed files with 210 additions and 440 deletions

View File

@ -1,365 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8011398
sub_8011398:
push {r4-r6,lr}
sub sp, 0x12C
ldr r5, _080113F4
ldr r0, [r5]
ldr r2, _080113F8
adds r1, r0, r2
ldr r1, [r1]
ldr r3, _080113FC
adds r0, r3
lsls r1, 5
ldr r0, [r0]
adds r6, r0, r1
add r4, sp, 0xCC
adds r0, r4, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r2, 0x3
str r2, [r4, 0x4]
movs r0, 0x7
strh r0, [r4, 0x8]
movs r1, 0x2
strh r1, [r4, 0xA]
movs r0, 0x15
strh r0, [r4, 0xC]
strh r1, [r4, 0xE]
strh r1, [r4, 0x10]
str r2, [r4, 0x1C]
str r2, [r4, 0x34]
str r2, [r4, 0x4C]
ldr r0, [r5]
ldr r2, _08011400
adds r1, r0, r2
movs r3, 0
ldrsh r1, [r1, r3]
subs r2, 0x4
adds r0, r2
movs r3, 0
ldrsh r0, [r0, r3]
subs r1, r0
cmp r1, 0x50
bgt _08011404
movs r0, 0x11
b _08011406
.align 2, 0
_080113F4: .4byte gUnknown_203B0E4
_080113F8: .4byte 0x00004a18
_080113FC: .4byte 0x00004014
_08011400: .4byte 0x00004dda
_08011404:
movs r0, 0x1
_08011406:
strh r0, [r4, 0xA]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0x1
bl xxx_call_save_unk_text_struct_800641C
movs r0, 0
bl sub_80073B8
ldr r1, _0801147C
ldr r2, [r6]
add r0, sp, 0x4
bl sprintfStatic
movs r0, 0
str r0, [sp]
movs r0, 0xC
movs r1, 0x2
add r2, sp, 0x4
movs r3, 0
bl PrintFormattedStringOnWindow
movs r0, 0
bl sub_80073E0
ldr r0, _08011480
ldr r1, [r0]
ldr r0, _08011484
adds r2, r1, r0
movs r3, 0x8
ldrsh r0, [r4, r3]
lsls r0, 3
subs r0, 0x5
str r0, [r2]
ldr r0, _08011488
adds r2, r1, r0
movs r3, 0xA
ldrsh r0, [r4, r3]
lsls r0, 3
adds r0, 0x5
str r0, [r2]
ldr r0, _0801148C
adds r2, r1, r0
movs r3, 0xC
ldrsh r0, [r4, r3]
lsls r0, 3
adds r0, 0xA
str r0, [r2]
ldr r0, _08011490
adds r1, r0
movs r2, 0xE
ldrsh r0, [r4, r2]
lsls r0, 3
adds r0, 0xA
str r0, [r1]
add sp, 0x12C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801147C: .4byte gUnknown_80D40FC
_08011480: .4byte gUnknown_203B0E4
_08011484: .4byte 0x00004ddc
_08011488: .4byte 0x00004de0
_0801148C: .4byte 0x00004de4
_08011490: .4byte 0x00004de8
thumb_func_end sub_8011398
thumb_func_start sub_8011494
sub_8011494:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC8
ldr r0, _08011610
ldr r2, [r0]
ldr r1, _08011614
adds r0, r2, r1
ldr r0, [r0]
ldr r3, _08011618
adds r1, r2, r3
lsls r0, 5
ldr r1, [r1]
adds r1, r0
mov r8, r1
ldr r0, _0801161C
adds r7, r2, r0
add r4, sp, 0x64
adds r0, r4, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r0, 0x6
str r0, [sp, 0x68]
add r1, sp, 0x6C
movs r0, 0x7
strh r0, [r1]
movs r2, 0x2
strh r2, [r1, 0x2]
add r1, sp, 0x70
movs r0, 0x15
strh r0, [r1]
mov r0, sp
adds r0, 0x72
strh r2, [r0]
add r0, sp, 0x74
strh r2, [r0]
add r5, sp, 0xC4
str r5, [sp, 0x78]
movs r1, 0x3
str r1, [sp, 0x80]
add r0, sp, 0x94
str r1, [r0, 0x4]
add r0, sp, 0xAC
str r1, [r0, 0x4]
add r0, sp, 0x4
adds r1, r4, 0
movs r2, 0x60
bl memcpy
movs r1, 0
mov r9, r1
movs r6, 0
mov r10, r5
_08011506:
mov r0, r8
adds r0, 0x8
adds r4, r0, r6
ldrb r0, [r4]
bl sub_800FFE8
lsls r0, 24
cmp r0, 0
beq _0801152A
ldr r0, _08011610
ldr r0, [r0]
ldr r2, _08011620
adds r0, r2
add r0, r9
ldrb r1, [r4]
strb r1, [r0]
movs r3, 0x1
add r9, r3
_0801152A:
adds r6, 0x1
cmp r6, 0x7
ble _08011506
ldr r5, _08011610
ldr r0, [r5]
ldr r1, _08011624
adds r0, r1
mov r2, r9
str r2, [r0]
movs r4, 0
movs r0, 0x1
mov r3, r10
strb r0, [r3]
add r0, sp, 0xC4
strb r4, [r0, 0x1]
movs r1, 0x12
strb r1, [r0, 0x2]
strb r4, [r0, 0x3]
strh r4, [r7, 0x18]
strh r2, [r7, 0x1A]
mov r0, r9
strh r0, [r7, 0x1C]
strh r4, [r7, 0x1E]
strh r4, [r7, 0x20]
strh r4, [r7, 0x4]
movs r0, 0x10
strh r0, [r7, 0x6]
str r4, [r7]
strh r4, [r7, 0xC]
strh r4, [r7, 0xE]
strh r4, [r7, 0x14]
strh r4, [r7, 0x16]
movs r0, 0x8
strh r0, [r7, 0x8]
strh r0, [r7, 0xA]
adds r0, r7, 0
adds r0, 0x28
bl sub_801317C
movs r1, 0x1C
ldrsh r0, [r7, r1]
movs r1, 0
bl sub_80095E4
adds r1, r0, 0
add r3, sp, 0x4
adds r2, r3, 0
adds r0, r1, 0x2
strh r0, [r2, 0xE]
strh r0, [r3, 0x10]
lsls r1, 3
adds r0, r7, 0
bl sub_80137B0
add r0, sp, 0x4
movs r1, 0x1
movs r2, 0x1
bl xxx_call_save_unk_text_struct_800641C
ldr r1, [r5]
ldr r2, _08011628
adds r0, r1, r2
str r4, [r0]
ldr r3, _0801162C
adds r0, r1, r3
str r4, [r0]
adds r2, 0x8
adds r0, r1, r2
str r4, [r0]
adds r3, 0x8
adds r1, r3
str r4, [r1]
movs r0, 0
bl sub_80073B8
ldr r2, _08011630
str r4, [sp]
movs r0, 0x10
movs r1, 0
movs r3, 0
bl PrintFormattedStringOnWindow
movs r6, 0
cmp r6, r9
bge _08011678
add r0, sp, 0x64
mov r8, r0
ldr r1, _08011634
mov r10, r1
_080115DC:
adds r0, r7, 0
adds r1, r6, 0
bl sub_8013800
adds r4, r0, 0
ldr r2, _08011610
ldr r0, [r2]
ldr r3, _08011620
adds r0, r3
adds r0, r6
ldrb r5, [r0]
ldr r0, _08011638
adds r1, r5, 0
bl sub_80101F8
cmp r5, 0
bne _08011640
str r5, [sp]
movs r0, 0xC
adds r1, r4, 0
ldr r2, _0801163C
movs r3, 0
bl PrintFormattedStringOnWindow
b _08011672
.align 2, 0
_08011610: .4byte gUnknown_203B0E4
_08011614: .4byte 0x00004a18
_08011618: .4byte 0x00004014
_0801161C: .4byte 0x00004dfc
_08011620: .4byte 0x00004dec
_08011624: .4byte 0x00004df8
_08011628: .4byte 0x00004ddc
_0801162C: .4byte 0x00004de0
_08011630: .4byte gUnknown_80D4104
_08011634: .4byte gFormatArgs
_08011638: .4byte gFormatBuffer_Items
_0801163C: .4byte gUnknown_80D4120
_08011640:
ldr r1, _08011690
ldr r0, [r1]
ldr r2, _08011694
adds r0, r2
ldrb r2, [r0]
adds r0, r5, 0
mov r1, r8
bl sub_80926F8
mov r3, r8
movs r1, 0x2
ldrsh r0, [r3, r1]
mov r2, r10
str r0, [r2]
movs r1, 0
ldrsh r0, [r3, r1]
str r0, [r2, 0x4]
movs r0, 0
str r0, [sp]
movs r0, 0xC
adds r1, r4, 0
ldr r2, _08011698
movs r3, 0
bl PrintFormattedStringOnWindow
_08011672:
adds r6, 0x1
cmp r6, r9
blt _080115DC
_08011678:
movs r0, 0
bl sub_80073E0
add sp, 0xC8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08011690: .4byte gUnknown_203B0E4
_08011694: .4byte 0x00004a2c
_08011698: .4byte gUnknown_80D4124
thumb_func_end sub_8011494
.align 2,0

View File

@ -2,6 +2,7 @@
#define GUARD_CODE_8004AA0_H
#include "file_system.h"
#include "menu_input.h"
#include "structs/rgb.h"
#include "structs/axdata.h"
#include "structs/str_position.h"
@ -22,9 +23,10 @@ extern unkStruct_202EE8C gUnknown_202EE8C[32];
struct UnkStruct_4014Ptr
{
u8 fill0[4];
s32 unk0;
DungeonPos unk4;
u8 fill8[0x20-8];
u8 unk8[8];
u8 fill8[0x20-0x10];
};
struct UnkStruct_4014Ptr2
@ -48,7 +50,8 @@ struct UnkBgStruct
struct UnkStruct_4014Ptr2 *unk4014;
struct UnkStruct_4018 unk4018[32];
s32 unk4A18;
u8 pad4A1C[0x4A30-0x4A1C];
u8 pad4A1C[0x4A2c-0x4A1C];
u8 unk4A2C;
axdata unk4A30[8];
axdata unk4C10;
unkStruct_202EE8C unk4C4C[16];
@ -61,6 +64,9 @@ struct UnkBgStruct
s32 unk4DE0;
s32 unk4DE4;
s32 unk4DE8;
u8 unk4DEC[12];
s32 unk4DF8;
MenuInputStruct unk4DFC;
};
extern struct UnkBgStruct *gUnknown_203B0E4;

View File

@ -90,9 +90,7 @@ SECTIONS {
src/code_800F034.o(.text);
src/code_800F958.o(.text);
asm/code_800F990.o(.text);
src/code_8010EF0.o(.text);
src/code_8010F28.o(.text);
asm/code_8010F28.o(.text);
src/code_80118A4.o(.text);
src/debug.o(.text);
src/save.o(.text);

View File

@ -1,37 +0,0 @@
#include "global.h"
#include "code_8004AA0.h"
#include "text.h"
EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL;
EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct
EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = { // Exact location of this variable is unknown. Find a better place for it once more code is decompiled.
[0] = {
.unk4 = 3,
.pos = {2, 10},
.unkC = 26,
.unkE = 9,
.unk10 = 9,
},
[1] = {
.unk4 = 3,
.pos = {23, 6},
.unkC = 5,
.unkE = 3,
.unk10 = 3,
},
[2] = {
.unk4 = 3,
},
[3] = {
.unk4 = 3,
},
};
void sub_8010EF0(void)
{
CloseFile(gUnknown_203B0E4->unk0[4]);
CloseFile(gUnknown_203B0E4->unk0[2]);
CloseFile(gUnknown_203B0E4->unk0[3]);
CloseFile(gUnknown_203B0E4->unk0[0]);
CloseFile(gUnknown_203B0E4->unk0[1]);
}

View File

@ -5,6 +5,45 @@
#include "text.h"
#include "code_8009804.h"
#include "bg_palette_buffer.h"
#include "string_format.h"
#include "code_800D090.h"
#include "friend_area.h"
#include "bg_control.h"
#include "code_800558C.h"
#include "game_options.h"
#include "play_time.h"
#include "code_80118A4.h"
#include "code_800C9CC.h"
extern void sub_800CB20(void);
extern void xxx_call_update_bg_sound_input(void);
extern bool8 sub_800FFE8(u8);
extern void sub_80101F8(u8 *, u8);
EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL;
EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct
EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = {
[0] = {
.unk4 = 3,
.pos = {2, 10},
.unkC = 26,
.unkE = 9,
.unk10 = 9,
},
[1] = {
.unk4 = 3,
.pos = {23, 6},
.unkC = 5,
.unkE = 3,
.unk10 = 3,
},
[2] = {
.unk4 = 3,
},
[3] = {
.unk4 = 3,
},
};
static inline bool8 CheckAxFlag8000(axdata *ptr)
{
@ -17,6 +56,19 @@ static inline bool8 ResetFlags(axdata *ptr)
}
extern const DungeonPos gUnknown_80D40C4[];
extern const u8 gUnknown_80D40FC[];
extern const u8 gUnknown_80D4104[];
extern const u8 gUnknown_80D4120[];
extern const u8 gUnknown_80D4124[];
void sub_8010EF0(void)
{
CloseFile(gUnknown_203B0E4->unk0[4]);
CloseFile(gUnknown_203B0E4->unk0[2]);
CloseFile(gUnknown_203B0E4->unk0[3]);
CloseFile(gUnknown_203B0E4->unk0[0]);
CloseFile(gUnknown_203B0E4->unk0[1]);
}
void sub_8010F28(void)
{
@ -169,3 +221,151 @@ void sub_8011300(void)
}
}
}
void sub_8011398(void)
{
u8 txt[200];
s32 id = gUnknown_203B0E4->unk4A18;
struct UnkStruct_4014Ptr *r6 = &gUnknown_203B0E4->unk4014->array[id];
UnkTextStruct3 spTxtStruct = {0};
spTxtStruct.a0[0].unk4 = 3;
spTxtStruct.a0[0].pos.x = 7;
spTxtStruct.a0[0].pos.y = 2;
spTxtStruct.a0[0].unkC = 21;
spTxtStruct.a0[0].unkE = 2;
spTxtStruct.a0[0].unk10 = 2;
spTxtStruct.a0[1].unk4 = 3;
spTxtStruct.a0[2].unk4 = 3;
spTxtStruct.a0[3].unk4 = 3;
if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y <= 80) {
spTxtStruct.a0[0].pos.y = 17;
}
else {
spTxtStruct.a0[0].pos.y = 1;
}
xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE);
sub_80073B8(0);
sprintfStatic(txt, gUnknown_80D40FC, r6->unk0);
PrintFormattedStringOnWindow(12, 2, txt, 0, '\0');
sub_80073E0(0);
gUnknown_203B0E4->unk4DDC = (spTxtStruct.a0[0].pos.x * 8) - 5;
gUnknown_203B0E4->unk4DE0 = (spTxtStruct.a0[0].pos.y * 8) + 5;
gUnknown_203B0E4->unk4DE4 = (spTxtStruct.a0[0].unkC * 8) + 10;
gUnknown_203B0E4->unk4DE8 = (spTxtStruct.a0[0].unkE * 8) + 10;
}
void sub_8011494(void)
{
s32 i, count, var;
s32 id = gUnknown_203B0E4->unk4A18;
struct UnkStruct_4014Ptr *r8 = &gUnknown_203B0E4->unk4014->array[id];
MenuInputStruct *menuInput = &gUnknown_203B0E4->unk4DFC;
UnkTextStruct2_sub2 subTxt;
UnkTextStruct3 spTxtStruct = {
.a0 = {
[0] = {
.unk4 = 6,
.pos = {7, 2},
.unkC = 21,
.unkE = 2,
.unk10 = 2,
.unk14 = &subTxt,
},
[1] = {
.unk4 = 3,
},
[2] = {
.unk4 = 3,
},
[3] = {
.unk4 = 3,
},
}
};
count = 0;
for (i = 0; i < 8; i++) {
if (sub_800FFE8(r8->unk8[i])) {
gUnknown_203B0E4->unk4DEC[count] = r8->unk8[i];
count++;
}
}
gUnknown_203B0E4->unk4DF8 = count;
subTxt.f0 = 1;
subTxt.f1 = 0;
subTxt.f2 = 18;
subTxt.f3 = 0;
menuInput->menuIndex = 0;
menuInput->unk1A = count;
menuInput->unk1C = count;
menuInput->unk1E = 0;
menuInput->unk20 = 0;
menuInput->unk4 = 0;
menuInput->unk6 = 16;
menuInput->unk0 = 0;
menuInput->unkC = 0;
menuInput->unkE = 0;
menuInput->unk14.x = 0;
menuInput->unk14.y = 0;
menuInput->unk8.x = 8;
menuInput->unk8.y = 8;
sub_801317C(&menuInput->unk28);
var = sub_80095E4(menuInput->unk1C, 0);
spTxtStruct.a0[0].unk10 = spTxtStruct.a0[0].unkE = var + 2;
sub_80137B0(menuInput, var * 8);
xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE);
gUnknown_203B0E4->unk4DDC = 0;
gUnknown_203B0E4->unk4DE0 = 0;
gUnknown_203B0E4->unk4DE4 = 0;
gUnknown_203B0E4->unk4DE8 = 0;
sub_80073B8(0);
PrintFormattedStringOnWindow(16, 0, gUnknown_80D4104, 0, '\0');
for (i = 0; i < count; i++) {
unkStruct_8092638 unkFriendAreaStruct;
s32 r4 = sub_8013800(menuInput, i);
u8 r5 = gUnknown_203B0E4->unk4DEC[i];
sub_80101F8(gFormatBuffer_Items[0], r5);
if (r5 == 0) {
PrintFormattedStringOnWindow(12, r4, gUnknown_80D4120, 0, '\0');
}
else {
sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); // TODO FIX R8
gFormatArgs[0] = unkFriendAreaStruct.unk2;
gFormatArgs[1] = unkFriendAreaStruct.numPokemon;
PrintFormattedStringOnWindow(12, r4, gUnknown_80D4124, 0, '\0');
}
}
sub_80073E0(0);
}
void sub_801169C(void)
{
SetBG2RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y);
SetBG3RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y);
sub_8010F28();
sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL);
sub_8005838(NULL, 0);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
sub_80060EC();
IncrementPlayTime(gPlayTimeRef);
sub_800CB20();
LoadBufferedInputs();
CopySpritesToOam();
sub_8005304();
TransferBGPaletteBuffer();
xxx_call_update_bg_vram();
sub_8009908();
xxx_call_update_bg_sound_input();
sub_8011860();
ResetSprites(FALSE);
}

View File

@ -1,18 +1,10 @@
#include <stdarg.h>
#include <stdio.h>
#include "global.h"
#include "bg_palette_buffer.h"
#include "code_8004AA0.h"
#include "code_800558C.h"
#include "code_8009804.h"
#include "code_800C9CC.h"
#include "code_80118A4.h"
#include "music.h"
#include "constants/bg_music.h"
#include "play_time.h"
#include "bg_control.h"
#include "config.h"
#include "game_options.h"
#include "sprite.h"
#include "event_flag.h"
#include "file_system.h"
@ -24,33 +16,9 @@ EWRAM_DATA s16 gUnknown_202DE20 = {0};
EWRAM_DATA s16 gUnknown_202DE22 = {0};
EWRAM_DATA s16 gUnknown_202DE24 = {0};
extern void xxx_call_update_bg_vram(void);
extern bool8 sub_80111C4();
extern void sub_8010F28();
void sub_801169C(void)
{
SetBG2RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y);
SetBG3RegOffsets(gUnknown_203B0E4->unk4DD4.x, gUnknown_203B0E4->unk4DD4.y);
sub_8010F28();
sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL);
sub_8005838(NULL, 0);
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
sub_80060EC();
IncrementPlayTime(gPlayTimeRef);
sub_800CB20();
LoadBufferedInputs();
CopySpritesToOam();
sub_8005304();
TransferBGPaletteBuffer();
xxx_call_update_bg_vram();
sub_8009908();
xxx_call_update_bg_sound_input();
sub_8011860();
ResetSprites(FALSE);
}
void sub_8011760(void)
{
if (sub_80023E4(13))

View File

@ -15,7 +15,7 @@
.include "src/cpu.o"
.include "src/code_800DAC0.o"
.include "src/code_800ED38.o"
.include "src/code_8010EF0.o"
.include "src/code_8010F28.o"
.include "src/debug.o"
.include "src/save.o"
.include "src/save_read.o"