mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-26 00:15:48 -05:00
sub_803E214
This commit is contained in:
parent
3c5cc45ed9
commit
af3cacd131
|
|
@ -6,365 +6,6 @@
|
|||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_803DF60
|
||||
sub_803DF60:
|
||||
push {r4-r7,lr}
|
||||
ldr r0, _0803DFF8
|
||||
ldr r1, _0803DFFC
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
adds r7, r0, 0
|
||||
ldr r0, [r7, 0x4]
|
||||
ldr r5, [r0]
|
||||
ldm r5!, {r4}
|
||||
ldr r6, _0803E000
|
||||
cmp r4, 0
|
||||
beq _0803DF8C
|
||||
_0803DF78:
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x20
|
||||
bl CpuCopy
|
||||
adds r6, 0x20
|
||||
adds r5, 0x20
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bne _0803DF78
|
||||
_0803DF8C:
|
||||
adds r0, r7, 0
|
||||
bl CloseFile
|
||||
ldr r0, _0803E004
|
||||
ldr r1, _0803DFFC
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
adds r7, r0, 0
|
||||
ldr r5, [r7, 0x4]
|
||||
ldm r5!, {r4}
|
||||
ldr r6, _0803E008
|
||||
cmp r4, 0
|
||||
beq _0803DFBA
|
||||
_0803DFA6:
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x20
|
||||
bl CpuCopy
|
||||
adds r6, 0x20
|
||||
adds r5, 0x20
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bne _0803DFA6
|
||||
_0803DFBA:
|
||||
adds r0, r7, 0
|
||||
bl CloseFile
|
||||
ldr r0, _0803E00C
|
||||
ldr r4, _0803DFFC
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
ldr r1, _0803E010
|
||||
str r0, [r1]
|
||||
ldr r0, _0803E014
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
ldr r1, _0803E018
|
||||
str r0, [r1]
|
||||
ldr r0, _0803E01C
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
ldr r1, _0803E020
|
||||
str r0, [r1]
|
||||
ldr r0, _0803E024
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
ldr r1, _0803E028
|
||||
str r0, [r1]
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803DFF8: .4byte gUnknown_80F61A8
|
||||
_0803DFFC: .4byte gDungeonFileArchive
|
||||
_0803E000: .4byte 0x06013400
|
||||
_0803E004: .4byte gUnknown_80F61B0
|
||||
_0803E008: .4byte 0x06014000
|
||||
_0803E00C: .4byte gUnknown_80F61B8
|
||||
_0803E010: .4byte gUnknown_202EC94
|
||||
_0803E014: .4byte gUnknown_80F61C4
|
||||
_0803E018: .4byte gUnknown_202EC98
|
||||
_0803E01C: .4byte gUnknown_80F61CC
|
||||
_0803E020: .4byte gUnknown_202EC9C
|
||||
_0803E024: .4byte gUnknown_80F61D4
|
||||
_0803E028: .4byte gUnknown_202ECA0
|
||||
thumb_func_end sub_803DF60
|
||||
|
||||
thumb_func_start sub_803E02C
|
||||
sub_803E02C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0xC
|
||||
bl sub_803E13C
|
||||
mov r1, sp
|
||||
ldr r0, _0803E118
|
||||
ldm r0!, {r2,r3}
|
||||
stm r1!, {r2,r3}
|
||||
ldr r1, _0803E11C
|
||||
mov r0, sp
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
adds r7, r0, 0
|
||||
ldr r0, [r7, 0x4]
|
||||
ldr r5, [r0]
|
||||
ldm r5!, {r4}
|
||||
ldr r6, _0803E120
|
||||
cmp r4, 0
|
||||
beq _0803E06C
|
||||
_0803E058:
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x20
|
||||
bl CpuCopy
|
||||
adds r6, 0x20
|
||||
adds r5, 0x20
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bne _0803E058
|
||||
_0803E06C:
|
||||
ldr r0, _0803E124
|
||||
ldr r1, [r7, 0x4]
|
||||
ldr r1, [r1, 0x4]
|
||||
movs r2, 0x80
|
||||
bl CpuCopy
|
||||
adds r0, r7, 0
|
||||
bl CloseFile
|
||||
movs r6, 0x80
|
||||
lsls r6, 2
|
||||
movs r4, 0
|
||||
ldr r0, _0803E128
|
||||
mov r9, r0
|
||||
ldr r1, _0803E12C
|
||||
mov r12, r1
|
||||
movs r7, 0
|
||||
ldr r2, _0803E130
|
||||
mov r8, r2
|
||||
_0803E092:
|
||||
mov r3, r12
|
||||
ldrh r0, [r3]
|
||||
lsls r5, r0, 12
|
||||
adds r2, r7, 0
|
||||
movs r3, 0x8
|
||||
_0803E09C:
|
||||
mov r0, r9
|
||||
ldr r1, [r0]
|
||||
add r1, r8
|
||||
adds r1, r2
|
||||
adds r0, r5, 0
|
||||
orrs r0, r6
|
||||
strh r0, [r1]
|
||||
adds r6, 0x1
|
||||
adds r2, 0x2
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bge _0803E09C
|
||||
movs r1, 0x2
|
||||
add r12, r1
|
||||
adds r7, 0x12
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x1C
|
||||
ble _0803E092
|
||||
movs r4, 0
|
||||
ldr r5, _0803E128
|
||||
ldr r3, _0803E134
|
||||
movs r2, 0xC0
|
||||
lsls r2, 8
|
||||
_0803E0CA:
|
||||
ldr r0, [r5]
|
||||
lsls r1, r4, 1
|
||||
adds r0, r3
|
||||
adds r0, r1
|
||||
strh r2, [r0]
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x8
|
||||
ble _0803E0CA
|
||||
movs r4, 0
|
||||
ldr r2, _0803E128
|
||||
movs r6, 0xBE
|
||||
lsls r6, 1
|
||||
ldr r5, _0803E138
|
||||
movs r3, 0xBF
|
||||
lsls r3, 1
|
||||
_0803E0E8:
|
||||
ldr r0, [r2]
|
||||
lsls r1, r4, 2
|
||||
adds r0, r1
|
||||
adds r0, r6
|
||||
strb r4, [r0]
|
||||
ldr r0, [r2]
|
||||
adds r0, r1
|
||||
adds r0, r5
|
||||
strb r4, [r0]
|
||||
ldr r0, [r2]
|
||||
adds r0, r1
|
||||
adds r0, r3
|
||||
strb r4, [r0]
|
||||
adds r4, 0x1
|
||||
cmp r4, 0xFF
|
||||
ble _0803E0E8
|
||||
add sp, 0xC
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803E118: .4byte gUnknown_80F61DC
|
||||
_0803E11C: .4byte gDungeonFileArchive
|
||||
_0803E120: .4byte 0x0600c000
|
||||
_0803E124: .4byte gUnknown_202ECA4
|
||||
_0803E128: .4byte gDungeon
|
||||
_0803E12C: .4byte gUnknown_80F5F70
|
||||
_0803E130: .4byte 0x00012a18
|
||||
_0803E134: .4byte 0x00013554
|
||||
_0803E138: .4byte 0x0000017d
|
||||
thumb_func_end sub_803E02C
|
||||
|
||||
thumb_func_start sub_803E13C
|
||||
sub_803E13C:
|
||||
push {r4,r5,lr}
|
||||
bl SetWindowBGColor
|
||||
ldr r0, _0803E170
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xB]
|
||||
ldr r5, _0803E174
|
||||
cmp r0, 0
|
||||
beq _0803E154
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
adds r5, r0
|
||||
_0803E154:
|
||||
movs r4, 0
|
||||
_0803E156:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0xF0
|
||||
adds r1, r5, 0
|
||||
bl SetBGPaletteBufferColorArray
|
||||
adds r5, 0x4
|
||||
adds r4, 0x1
|
||||
cmp r4, 0xF
|
||||
ble _0803E156
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803E170: .4byte gGameOptionsRef
|
||||
_0803E174: .4byte gFontPalette
|
||||
thumb_func_end sub_803E13C
|
||||
|
||||
thumb_func_start sub_803E178
|
||||
sub_803E178:
|
||||
push {r4,lr}
|
||||
bl sub_8043D10
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
bne _0803E1E0
|
||||
ldr r0, _0803E1AC
|
||||
ldr r2, [r0]
|
||||
ldr r3, _0803E1B0
|
||||
adds r1, r2, r3
|
||||
ldrb r1, [r1]
|
||||
adds r3, r0, 0
|
||||
cmp r1, 0x15
|
||||
bne _0803E1BC
|
||||
ldr r1, _0803E1B4
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0803E1BC
|
||||
ldr r3, _0803E1B8
|
||||
adds r1, r2, r3
|
||||
movs r0, 0x1C
|
||||
strh r0, [r1]
|
||||
b _0803E204
|
||||
.align 2, 0
|
||||
_0803E1AC: .4byte gDungeon
|
||||
_0803E1B0: .4byte 0x00000644
|
||||
_0803E1B4: .4byte 0x000037fe
|
||||
_0803E1B8: .4byte 0x00003a12
|
||||
_0803E1BC:
|
||||
ldr r4, [r3]
|
||||
ldr r1, _0803E1D8
|
||||
adds r0, r4, r1
|
||||
ldrb r0, [r0]
|
||||
bl IsStairDirectionUp
|
||||
lsls r0, 24
|
||||
movs r1, 0x16
|
||||
cmp r0, 0
|
||||
beq _0803E1D2
|
||||
movs r1, 0x17
|
||||
_0803E1D2:
|
||||
ldr r2, _0803E1DC
|
||||
adds r0, r4, r2
|
||||
b _0803E202
|
||||
.align 2, 0
|
||||
_0803E1D8: .4byte 0x00000644
|
||||
_0803E1DC: .4byte 0x00003a12
|
||||
_0803E1E0:
|
||||
cmp r0, 0x1
|
||||
bne _0803E1F8
|
||||
ldr r0, _0803E1F0
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0803E1F4
|
||||
adds r0, r3
|
||||
movs r1, 0x6
|
||||
b _0803E202
|
||||
.align 2, 0
|
||||
_0803E1F0: .4byte gDungeon
|
||||
_0803E1F4: .4byte 0x00003a12
|
||||
_0803E1F8:
|
||||
ldr r0, _0803E20C
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0803E210
|
||||
adds r0, r1
|
||||
movs r1, 0x18
|
||||
_0803E202:
|
||||
strh r1, [r0]
|
||||
_0803E204:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803E20C: .4byte gDungeon
|
||||
_0803E210: .4byte 0x00003a12
|
||||
thumb_func_end sub_803E178
|
||||
|
||||
thumb_func_start sub_803E214
|
||||
sub_803E214:
|
||||
push {lr}
|
||||
ldr r0, _0803E23C
|
||||
ldr r0, [r0]
|
||||
bl CloseFile
|
||||
ldr r0, _0803E240
|
||||
ldr r0, [r0]
|
||||
bl CloseFile
|
||||
ldr r0, _0803E244
|
||||
ldr r0, [r0]
|
||||
bl CloseFile
|
||||
ldr r0, _0803E248
|
||||
ldr r0, [r0]
|
||||
bl CloseFile
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803E23C: .4byte gUnknown_202EC94
|
||||
_0803E240: .4byte gUnknown_202EC98
|
||||
_0803E244: .4byte gUnknown_202EC9C
|
||||
_0803E248: .4byte gUnknown_202ECA0
|
||||
thumb_func_end sub_803E214
|
||||
|
||||
thumb_func_start nullsub_56
|
||||
nullsub_56:
|
||||
bx lr
|
||||
thumb_func_end nullsub_56
|
||||
|
||||
thumb_func_start sub_803E250
|
||||
sub_803E250:
|
||||
push {r4-r7,lr}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#include "dungeon_random.h"
|
||||
#include "bg_palette_buffer.h"
|
||||
#include "code_800D090.h"
|
||||
#include "game_options.h"
|
||||
#include "constants/dungeon.h"
|
||||
|
||||
extern void sub_80901D8(DungeonLocation *param_1,DungeonLocation *param_2);
|
||||
extern s32 sub_80902C8(u8 dungeon);
|
||||
|
|
@ -15,14 +17,30 @@ extern u32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0);
|
|||
extern void sub_808E9C4(UnkDungeonGlobal_unk1CD98 *r0, s16 r1);
|
||||
extern u8 GetBodySize(s16 index);
|
||||
extern bool8 sub_80848EC(void);
|
||||
extern u8 sub_8043D10(void);
|
||||
extern const u8 *GetDungeonName2(u8 dungeon);
|
||||
extern void sub_8008DC8(s32 r0, s32 r1, u16 r2, u16 r3);
|
||||
|
||||
extern const char gUnknown_80F4D8C[]; // "mapparam"
|
||||
extern const char gUnknown_80F60F8[]; // "banrpal"
|
||||
extern const char gUnknown_80F6100[]; // "banfont"
|
||||
extern const char gUnknown_80F6108[];
|
||||
extern const char gUnknown_80F610C[];
|
||||
extern const char gUnknown_80F6110[];
|
||||
extern const char gUnknown_80F6118[];
|
||||
extern const char gUnknown_80F61A8[];
|
||||
extern const u32 gUnknown_80F6120[];
|
||||
|
||||
extern struct FileArchive gDungeonFileArchive;
|
||||
extern OpenedFile *gDungeonNameBannerPalette;
|
||||
extern OpenedFile *gDungeonNameBannerFontFile;
|
||||
extern OpenedFile *gUnknown_202ECA0;
|
||||
extern OpenedFile *gUnknown_202EC9C;
|
||||
extern OpenedFile *gUnknown_202EC98;
|
||||
extern OpenedFile *gUnknown_202EC94;
|
||||
extern s32 gDungeonNameBannerFont;
|
||||
extern u8 gUnknown_20274A5;
|
||||
extern u8 gFontPalette[];
|
||||
|
||||
struct UnkDungeonFileData
|
||||
{
|
||||
|
|
@ -41,6 +59,19 @@ struct UnkDataFileStruct
|
|||
u16 **unk10;
|
||||
};
|
||||
|
||||
struct UnkStruct_sub_803DC6C
|
||||
{
|
||||
u8 *unk0;
|
||||
u16 unk4;
|
||||
u8 unk6;
|
||||
};
|
||||
|
||||
s32 sub_803DC14(const u8 *dungName, s32 strWidth, s32 a2);
|
||||
s32 CalcStringWidth(const u8 *dungName);
|
||||
s32 sub_803DC6C(u32 chr, s32 strWidth, s32 a2);
|
||||
struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr);
|
||||
void sub_803DD30(u8 *a0, u32 *a1);
|
||||
|
||||
// TODO https://decomp.me/scratch/nXUH3
|
||||
/*
|
||||
void sub_803D4D0(void)
|
||||
|
|
@ -511,19 +542,6 @@ s32 sub_803DA20(s32 species)
|
|||
return 1;
|
||||
}
|
||||
|
||||
extern const u8 *GetDungeonName2(u8 dungeon);
|
||||
extern void sub_8008DC8(s32 r0, s32 r1, u16 r2, u16 r3);
|
||||
|
||||
extern const char gUnknown_80F6108[];
|
||||
extern const char gUnknown_80F610C[];
|
||||
extern const char gUnknown_80F6110[];
|
||||
extern const char gUnknown_80F6118[];
|
||||
|
||||
extern u8 gUnknown_20274A5;
|
||||
|
||||
s32 sub_803DC14(const u8 *dungName, s32 strWidth, s32 a2);
|
||||
s32 CalcStringWidth(const u8 *dungName);
|
||||
|
||||
void ShowDungeonNameBanner(void)
|
||||
{
|
||||
u8 text[100];
|
||||
|
|
@ -574,8 +592,6 @@ void ShowDungeonNameBanner(void)
|
|||
sub_803E46C(2);
|
||||
}
|
||||
|
||||
s32 sub_803DC6C(u32 chr, s32 strWidth, s32 a2);
|
||||
|
||||
s32 sub_803DC14(const u8 *dungName, s32 strWidth, s32 a2)
|
||||
{
|
||||
while (*dungName != '\0') {
|
||||
|
|
@ -601,18 +617,6 @@ s32 sub_803DC14(const u8 *dungName, s32 strWidth, s32 a2)
|
|||
return a2;
|
||||
}
|
||||
|
||||
struct UnkStruct_sub_803DC6C
|
||||
{
|
||||
u8 *unk0;
|
||||
u16 unk4;
|
||||
u8 unk6;
|
||||
};
|
||||
|
||||
struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr);
|
||||
void sub_803DD30(u8 *a0, u32 *a1);
|
||||
|
||||
extern const u32 gUnknown_80F6120[];
|
||||
|
||||
s32 sub_803DC6C(u32 chr, s32 strWidth, s32 a2)
|
||||
{
|
||||
u32 *spPtr;
|
||||
|
|
@ -787,3 +791,301 @@ struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr)
|
|||
return ret;
|
||||
};
|
||||
|
||||
/*
|
||||
I'm leaving this as it is, because I'm not sure how to generate the ldmia asm instruction. Maybe once the file's data format is better understood.
|
||||
struct FileSub_803DF60Struct
|
||||
{
|
||||
s32 count;
|
||||
void *unkPtr;
|
||||
};
|
||||
|
||||
struct OpenedFile_sub_803DF60
|
||||
{
|
||||
File *file;
|
||||
struct FileSub_803DF60Struct **strPtr;
|
||||
};
|
||||
|
||||
void sub_803DF60(void)
|
||||
{
|
||||
s32 i;
|
||||
struct OpenedFile_sub_803DF60 *file = (void*) OpenFileAndGetFileDataPtr(gUnknown_80F61A8, &gDungeonFileArchive);
|
||||
struct FileSub_803DF60Struct r5 = **file->strPtr;
|
||||
|
||||
for (i = 0; i < r5.count; i++) {
|
||||
CpuCopy((void *)VRAM + 0x13400 + i * 0x20, r5.unkPtr + i * 0x20, 0x20);
|
||||
}
|
||||
|
||||
CloseFile(file);
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
NAKED void sub_803DF60(void)
|
||||
{
|
||||
asm_unified(" push {r4-r7,lr}\n"
|
||||
" ldr r0, _0803DFF8\n"
|
||||
" ldr r1, _0803DFFC\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" adds r7, r0, 0\n"
|
||||
" ldr r0, [r7, 0x4]\n"
|
||||
" ldr r5, [r0]\n"
|
||||
" ldm r5!, {r4}\n"
|
||||
" ldr r6, _0803E000\n"
|
||||
" cmp r4, 0\n"
|
||||
" beq _0803DF8C\n"
|
||||
"_0803DF78:\n"
|
||||
" adds r0, r6, 0\n"
|
||||
" adds r1, r5, 0\n"
|
||||
" movs r2, 0x20\n"
|
||||
" bl CpuCopy\n"
|
||||
" adds r6, 0x20\n"
|
||||
" adds r5, 0x20\n"
|
||||
" subs r4, 0x1\n"
|
||||
" cmp r4, 0\n"
|
||||
" bne _0803DF78\n"
|
||||
"_0803DF8C:\n"
|
||||
" adds r0, r7, 0\n"
|
||||
" bl CloseFile\n"
|
||||
" ldr r0, _0803E004\n"
|
||||
" ldr r1, _0803DFFC\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" adds r7, r0, 0\n"
|
||||
" ldr r5, [r7, 0x4]\n"
|
||||
" ldm r5!, {r4}\n"
|
||||
" ldr r6, _0803E008\n"
|
||||
" cmp r4, 0\n"
|
||||
" beq _0803DFBA\n"
|
||||
"_0803DFA6:\n"
|
||||
" adds r0, r6, 0\n"
|
||||
" adds r1, r5, 0\n"
|
||||
" movs r2, 0x20\n"
|
||||
" bl CpuCopy\n"
|
||||
" adds r6, 0x20\n"
|
||||
" adds r5, 0x20\n"
|
||||
" subs r4, 0x1\n"
|
||||
" cmp r4, 0\n"
|
||||
" bne _0803DFA6\n"
|
||||
"_0803DFBA:\n"
|
||||
" adds r0, r7, 0\n"
|
||||
" bl CloseFile\n"
|
||||
" ldr r0, _0803E00C\n"
|
||||
" ldr r4, _0803DFFC\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" ldr r1, _0803E010\n"
|
||||
" str r0, [r1]\n"
|
||||
" ldr r0, _0803E014\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" ldr r1, _0803E018\n"
|
||||
" str r0, [r1]\n"
|
||||
" ldr r0, _0803E01C\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" ldr r1, _0803E020\n"
|
||||
" str r0, [r1]\n"
|
||||
" ldr r0, _0803E024\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" ldr r1, _0803E028\n"
|
||||
" str r0, [r1]\n"
|
||||
" pop {r4-r7}\n"
|
||||
" pop {r0}\n"
|
||||
" bx r0\n"
|
||||
" .align 2, 0\n"
|
||||
"_0803DFF8: .4byte gUnknown_80F61A8\n"
|
||||
"_0803DFFC: .4byte gDungeonFileArchive\n"
|
||||
"_0803E000: .4byte 0x06013400\n"
|
||||
"_0803E004: .4byte gUnknown_80F61B0\n"
|
||||
"_0803E008: .4byte 0x06014000\n"
|
||||
"_0803E00C: .4byte gUnknown_80F61B8\n"
|
||||
"_0803E010: .4byte gUnknown_202EC94\n"
|
||||
"_0803E014: .4byte gUnknown_80F61C4\n"
|
||||
"_0803E018: .4byte gUnknown_202EC98\n"
|
||||
"_0803E01C: .4byte gUnknown_80F61CC\n"
|
||||
"_0803E020: .4byte gUnknown_202EC9C\n"
|
||||
"_0803E024: .4byte gUnknown_80F61D4\n"
|
||||
"_0803E028: .4byte gUnknown_202ECA0\n");
|
||||
}
|
||||
|
||||
NAKED void sub_803E02C(void)
|
||||
{
|
||||
asm_unified( "push {r4-r7,lr}\n"
|
||||
" mov r7, r9\n"
|
||||
" mov r6, r8\n"
|
||||
" push {r6,r7}\n"
|
||||
" sub sp, 0xC\n"
|
||||
" bl sub_803E13C\n"
|
||||
" mov r1, sp\n"
|
||||
" ldr r0, _0803E118\n"
|
||||
" ldm r0!, {r2,r3}\n"
|
||||
" stm r1!, {r2,r3}\n"
|
||||
" ldr r1, _0803E11C\n"
|
||||
" mov r0, sp\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" adds r7, r0, 0\n"
|
||||
" ldr r0, [r7, 0x4]\n"
|
||||
" ldr r5, [r0]\n"
|
||||
" ldm r5!, {r4}\n"
|
||||
" ldr r6, _0803E120\n"
|
||||
" cmp r4, 0\n"
|
||||
" beq _0803E06C\n"
|
||||
"_0803E058:\n"
|
||||
" adds r0, r6, 0\n"
|
||||
" adds r1, r5, 0\n"
|
||||
" movs r2, 0x20\n"
|
||||
" bl CpuCopy\n"
|
||||
" adds r6, 0x20\n"
|
||||
" adds r5, 0x20\n"
|
||||
" subs r4, 0x1\n"
|
||||
" cmp r4, 0\n"
|
||||
" bne _0803E058\n"
|
||||
"_0803E06C:\n"
|
||||
" ldr r0, _0803E124\n"
|
||||
" ldr r1, [r7, 0x4]\n"
|
||||
" ldr r1, [r1, 0x4]\n"
|
||||
" movs r2, 0x80\n"
|
||||
" bl CpuCopy\n"
|
||||
" adds r0, r7, 0\n"
|
||||
" bl CloseFile\n"
|
||||
" movs r6, 0x80\n"
|
||||
" lsls r6, 2\n"
|
||||
" movs r4, 0\n"
|
||||
" ldr r0, _0803E128\n"
|
||||
" mov r9, r0\n"
|
||||
" ldr r1, _0803E12C\n"
|
||||
" mov r12, r1\n"
|
||||
" movs r7, 0\n"
|
||||
" ldr r2, _0803E130\n"
|
||||
" mov r8, r2\n"
|
||||
"_0803E092:\n"
|
||||
" mov r3, r12\n"
|
||||
" ldrh r0, [r3]\n"
|
||||
" lsls r5, r0, 12\n"
|
||||
" adds r2, r7, 0\n"
|
||||
" movs r3, 0x8\n"
|
||||
"_0803E09C:\n"
|
||||
" mov r0, r9\n"
|
||||
" ldr r1, [r0]\n"
|
||||
" add r1, r8\n"
|
||||
" adds r1, r2\n"
|
||||
" adds r0, r5, 0\n"
|
||||
" orrs r0, r6\n"
|
||||
" strh r0, [r1]\n"
|
||||
" adds r6, 0x1\n"
|
||||
" adds r2, 0x2\n"
|
||||
" subs r3, 0x1\n"
|
||||
" cmp r3, 0\n"
|
||||
" bge _0803E09C\n"
|
||||
" movs r1, 0x2\n"
|
||||
" add r12, r1\n"
|
||||
" adds r7, 0x12\n"
|
||||
" adds r4, 0x1\n"
|
||||
" cmp r4, 0x1C\n"
|
||||
" ble _0803E092\n"
|
||||
" movs r4, 0\n"
|
||||
" ldr r5, _0803E128\n"
|
||||
" ldr r3, _0803E134\n"
|
||||
" movs r2, 0xC0\n"
|
||||
" lsls r2, 8\n"
|
||||
"_0803E0CA:\n"
|
||||
" ldr r0, [r5]\n"
|
||||
" lsls r1, r4, 1\n"
|
||||
" adds r0, r3\n"
|
||||
" adds r0, r1\n"
|
||||
" strh r2, [r0]\n"
|
||||
" adds r4, 0x1\n"
|
||||
" cmp r4, 0x8\n"
|
||||
" ble _0803E0CA\n"
|
||||
" movs r4, 0\n"
|
||||
" ldr r2, _0803E128\n"
|
||||
" movs r6, 0xBE\n"
|
||||
" lsls r6, 1\n"
|
||||
" ldr r5, _0803E138\n"
|
||||
" movs r3, 0xBF\n"
|
||||
" lsls r3, 1\n"
|
||||
"_0803E0E8:\n"
|
||||
" ldr r0, [r2]\n"
|
||||
" lsls r1, r4, 2\n"
|
||||
" adds r0, r1\n"
|
||||
" adds r0, r6\n"
|
||||
" strb r4, [r0]\n"
|
||||
" ldr r0, [r2]\n"
|
||||
" adds r0, r1\n"
|
||||
" adds r0, r5\n"
|
||||
" strb r4, [r0]\n"
|
||||
" ldr r0, [r2]\n"
|
||||
" adds r0, r1\n"
|
||||
" adds r0, r3\n"
|
||||
" strb r4, [r0]\n"
|
||||
" adds r4, 0x1\n"
|
||||
" cmp r4, 0xFF\n"
|
||||
" ble _0803E0E8\n"
|
||||
" add sp, 0xC\n"
|
||||
" pop {r3,r4}\n"
|
||||
" mov r8, r3\n"
|
||||
" mov r9, r4\n"
|
||||
" pop {r4-r7}\n"
|
||||
" pop {r0}\n"
|
||||
" bx r0\n"
|
||||
" .align 2, 0\n"
|
||||
"_0803E118: .4byte gUnknown_80F61DC\n"
|
||||
"_0803E11C: .4byte gDungeonFileArchive\n"
|
||||
"_0803E120: .4byte 0x0600c000\n"
|
||||
"_0803E124: .4byte gUnknown_202ECA4\n"
|
||||
"_0803E128: .4byte gDungeon\n"
|
||||
"_0803E12C: .4byte gUnknown_80F5F70\n"
|
||||
"_0803E130: .4byte 0x00012a18\n"
|
||||
"_0803E134: .4byte 0x00013554\n"
|
||||
"_0803E138: .4byte 0x0000017d\n");
|
||||
}
|
||||
|
||||
void sub_803E13C(void)
|
||||
{
|
||||
s32 i;
|
||||
u8 *pal;
|
||||
|
||||
SetWindowBGColor();
|
||||
if (gGameOptionsRef->playerGender != 0)
|
||||
pal = gFontPalette + 256;
|
||||
else
|
||||
pal = gFontPalette;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
SetBGPaletteBufferColorArray(240 + i, pal);
|
||||
pal += 4;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_803E178(void)
|
||||
{
|
||||
s32 val = sub_8043D10();
|
||||
|
||||
if (val == 0) {
|
||||
if (gDungeon->dungeonLocation.id == DUNGEON_METEOR_CAVE && !gDungeon->deoxysDefeat) {
|
||||
gDungeon->unk3A12 = 28;
|
||||
}
|
||||
else {
|
||||
gDungeon->unk3A12 = (IsStairDirectionUp(gDungeon->dungeonLocation.id) != FALSE) ? 23 : 22;
|
||||
}
|
||||
}
|
||||
else if (val == 1) {
|
||||
gDungeon->unk3A12 = 6;
|
||||
}
|
||||
else {
|
||||
gDungeon->unk3A12 = 24;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_803E214(void)
|
||||
{
|
||||
CloseFile(gUnknown_202EC94);
|
||||
CloseFile(gUnknown_202EC98);
|
||||
CloseFile(gUnknown_202EC9C);
|
||||
CloseFile(gUnknown_202ECA0);
|
||||
}
|
||||
|
||||
void nullsub_56(void) {}
|
||||
|
||||
// sub_803E250 left, but it seems to be sprite related, and I'd rather not deal with it now lol
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user