sub_8040150

This commit is contained in:
DizzyEggg 2025-03-05 19:05:37 +01:00
parent 91d397caea
commit 7e2702c699
3 changed files with 54 additions and 96 deletions

View File

@ -5,100 +5,6 @@
.text
thumb_func_start sub_8040150
sub_8040150:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
mov r9, r0
movs r0, 0
ldr r2, _080401EC
_08040164:
movs r4, 0
lsls r1, r0, 3
adds r3, r0, 0x1
mov r8, r3
subs r1, r0
lsls r0, r1, 7
ldr r3, _080401F0
adds r6, r0, r3
lsls r5, r1, 2
_08040176:
ldr r0, [r2]
adds r0, r6
lsls r1, r4, 5
adds r0, r1
movs r1, 0x20
str r2, [sp]
bl CpuClear
ldr r2, [sp]
ldr r0, [r2]
adds r1, r4, r5
ldr r3, _080401F4
adds r0, r3
adds r0, r1
movs r7, 0
strb r7, [r0]
adds r4, 0x1
cmp r4, 0x1B
ble _08040176
mov r0, r8
cmp r0, 0xF
ble _08040164
mov r0, r9
cmp r0, 0
bne _080401B0
ldr r1, _080401F8
movs r0, 0x64
strh r0, [r1]
strh r0, [r1, 0x2]
_080401B0:
ldr r3, _080401EC
ldr r0, [r3]
ldr r2, _080401FC
adds r1, r0, r2
str r7, [r1]
ldr r1, _08040200
adds r0, r1
movs r2, 0x1
strb r2, [r0]
ldr r0, [r3]
ldr r3, _08040204
adds r0, r3
strb r7, [r0]
ldr r0, _08040208
strb r2, [r0]
ldr r1, _0804020C
ldr r0, _08040210
str r0, [r1]
ldr r0, _08040214
strb r2, [r0]
bl sub_8040238
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080401EC: .4byte gDungeon
_080401F0: .4byte 0x0001822c
_080401F4: .4byte 0x0001ba2c
_080401F8: .4byte gUnknown_203B410
_080401FC: .4byte 0x0001bdcc
_08040200: .4byte 0x0001bdd0
_08040204: .4byte 0x0001bdd2
_08040208: .4byte gUnknown_202EE00
_0804020C: .4byte gUnknown_202EE08
_08040210: .4byte 0x06001700
_08040214: .4byte gUnknown_202EE01
thumb_func_end sub_8040150
thumb_func_start sub_8040218
sub_8040218:
push {lr}

View File

@ -332,6 +332,25 @@ typedef struct unkDungeon57C
#define UNK12A18_ARR_COUNT 29
#define UNK12A18_ARR_COUNT_2 9
struct UnkDungeonGlobal_1822C_Sub
{
u8 fill0[0x20];
};
#define UNK1822C_ARR_COUNT 16
#define UNK1822C_ARR_COUNT_2 28
struct UnkDungeonGlobal_1822C
{
struct UnkDungeonGlobal_1822C_Sub unk1822C[UNK1822C_ARR_COUNT][UNK1822C_ARR_COUNT_2];
u8 unk1BA2C[UNK1822C_ARR_COUNT][UNK1822C_ARR_COUNT_2];
u8 fillUnk[0x1e0];
s32 unk1BDCC;
u8 unk1BDD0;
u8 fill1BDD1;
u8 unk1BDD2;
};
// size: 0x1CEDC
typedef struct Dungeon
{
@ -447,8 +466,8 @@ typedef struct Dungeon
/* 0x17B44 */ OpenedFile *sprites[MONSTER_MAX];
/* 0x181E4 */ OpenedFile *paletFile;
/* 0x181E8 */ UnkDungeonGlobal_unk181E8_sub unk181e8;
u8 fill18220[0x1BDD4 - 0x1822C];
struct UnkStructDungeon1BDD4 unk1BDD4;
/* 0x1822C */ struct UnkDungeonGlobal_1822C unk1822C;
/* 0x1BDD4 */ struct UnkStructDungeon1BDD4 unk1BDD4;
/* 0x1BE14 */ struct MessageLogString messageLogStrings[MESSAGE_LOG_STRINGS_COUNT];
/* 0x1C570 */ DungeonLocation unk1C570;
/* 0x1C574 */ FloorProperties unk1C574;

View File

@ -9,6 +9,8 @@
#include "dungeon_music.h"
#include "file_system.h"
#include "play_time.h"
#include "cpu.h"
#include "dungeon.h"
extern s32 gUnknown_80F6568[];
extern u8 gUnknown_202EE01;
@ -81,3 +83,34 @@ void sub_8040130(void)
{
gUnknown_202EE04 = OpenFileAndGetFileDataPtr(&gUnknown_80F6604, &gDungeonFileArchive);
}
extern DungeonPos gUnknown_203B410;
extern u8 gUnknown_202EE00;
extern void *gUnknown_202EE08;
void sub_8040238(void);
void sub_8040150(bool8 a0)
{
s32 i, j;
for (i = 0; i < UNK1822C_ARR_COUNT; i++) {
for (j = 0; j < UNK1822C_ARR_COUNT_2; j++) {
CpuClear(&gDungeon->unk1822C.unk1822C[i][j], sizeof(struct UnkDungeonGlobal_1822C_Sub));
gDungeon->unk1822C.unk1BA2C[i][j] = 0;
}
}
if (!a0) {
gUnknown_203B410.x = 100;
gUnknown_203B410.y = 100;
}
gDungeon->unk1822C.unk1BDCC = 0;
gDungeon->unk1822C.unk1BDD0 = 1;
gDungeon->unk1822C.unk1BDD2 = 0;
gUnknown_202EE00 = 1;
gUnknown_202EE08 = (void *) VRAM + 0x1700;
gUnknown_202EE01 = 1;
sub_8040238();
}