diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2020-11-14 17:44:04 -0600 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2020-11-14 17:44:04 -0600 |
commit | 3b75b10bbbc99fbbba573142a3f027c3c0492593 (patch) | |
tree | a1fef25e1f8be1e59d07a3fcd9d490175384497e /src | |
parent | 9237db777e49204e8f09ec6607caefedb469da05 (diff) |
more decomping and some data dumping
Diffstat (limited to 'src')
-rw-r--r-- | src/code_800D090.c | 65 | ||||
-rw-r--r-- | src/code_801D760.c | 28 | ||||
-rw-r--r-- | src/code_809D148.c | 42 |
3 files changed, 110 insertions, 25 deletions
diff --git a/src/code_800D090.c b/src/code_800D090.c new file mode 100644 index 0000000..1031a2d --- /dev/null +++ b/src/code_800D090.c @@ -0,0 +1,65 @@ +#include "global.h" + +extern void SoundBiasReset(void); +extern void SoundBiasSet(void); + +void Hang(void) +{ + while(1) + { + asm("swi 0x2"); + } +} + + +// Unused +void sub_800D098(void) +{ + u32 dispcnt_save; + u32 ie_store; + + while(REG_VCOUNT <= 159) + ; + + // Save DISPCNT and set to 0 + dispcnt_save = REG_DISPCNT; + REG_DISPCNT = 0; + + *(u16 *)BG_PLTT = 0xefff; + + while(REG_KEYINPUT != 0x3ff) // 0011 1111 1111 (all buttons) + ; + + + REG_IME = 0; + + // Save IE Register + ie_store = REG_IE; + REG_IE = INTR_FLAG_KEYPAD | INTR_FLAG_GAMEPAK; + + REG_KEYCNT = 0xC304; // TODO 1100 0011 0000 0100 + // Select: + // * Select button + // * L/R Button + // Enable IRQ + // Logical AND + // So do something when all buttons above are pressed + + REG_IME = 1; + + SoundBiasReset(); + asm("swi 0x3"); + SoundBiasSet(); + + REG_IME = 0; + + REG_IE = ie_store; // restore IE + REG_KEYCNT = 0; // reset KEYCNT + + REG_IME = 1; + + // Good after here + while(REG_VCOUNT <= 159){} + REG_DISPCNT = dispcnt_save; // restore DISPCNT + while(REG_KEYINPUT != 0x3ff){} // All buttons +} diff --git a/src/code_801D760.c b/src/code_801D760.c index e2e6617..c2266ec 100644 --- a/src/code_801D760.c +++ b/src/code_801D760.c @@ -1,26 +1,26 @@ #include "global.h" +extern u32 sub_801BF48(void); +extern void sub_801BF98(void); +extern void sub_801D208(u8); +extern u32 sub_801DCE8(void); +extern void sub_801DD50(void); +extern u32 sub_80217EC(void); +extern void sub_8021830(void); extern u32 sub_8022860(); extern void sub_8022908(); -extern void sub_801D208(u8); -extern void sub_8027168(); -extern u32 sub_80270A4(); -extern u32 sub_8025F68(); -extern u8 sub_802604C(); -extern void sub_8026058(); +extern u32 sub_80244E4(void); +extern void sub_802453C(void); extern u32 sub_8025354(void); extern u8 sub_802540C(void); extern void sub_8025418(void); -extern u32 sub_80244E4(void); -extern void sub_802453C(void); -extern u32 sub_801BF48(void); -extern void sub_801BF98(void); -extern u32 sub_80217EC(void); -extern void sub_8021830(void); +extern u32 sub_8025F68(); +extern u8 sub_802604C(); +extern void sub_8026058(); +extern void sub_8027168(); +extern u32 sub_80270A4(); extern u32 sub_802C898(void); extern void sub_802C8F4(void); -extern u32 sub_801DCE8(void); -extern void sub_801DD50(void); struct unk_203B250 { diff --git a/src/code_809D148.c b/src/code_809D148.c index 965ca12..5d3c908 100644 --- a/src/code_809D148.c +++ b/src/code_809D148.c @@ -18,6 +18,9 @@ struct unkStruct_20399E8 u32 unk30; u32 unk34; u32 unk38; + u32 unk3C; + u32 unk40; + u8 unk44; }; struct unkStruct_809D158 @@ -264,14 +267,31 @@ u32 sub_809D234(void) } // TODO regswap but matches otherwise -//u8 sub_809D248(struct unkStruct_809D158 *r0) -//{ -// u32 temp; -// u32 temp1; -// -// temp = gUnknown_20399E8.unk3C; -// temp1 = gUnknown_20399E8.unk40; -// r0->unk0 = temp; -// r0->unk4 = temp1; -// return gUnknown_20399E8.unk44; -//} +// Loads struct into R1... should be R3 +#ifndef NONMATCHING +NAKED +#endif +u8 sub_809D248(struct unkStruct_809D158 *r0) +{ +#ifdef NONMATCHING + u32 temp; + u32 temp1; + + temp = gUnknown_20399E8.unk3C; + temp1 = gUnknown_20399E8.unk40; + r0->unk0 = temp; + r0->unk4 = temp1; + return gUnknown_20399E8.unk44; +#else + asm_unified("\tldr r3, _0809D258\n" + "\tldr r1, [r3, 0x3C]\n" + "\tldr r2, [r3, 0x40]\n" + "\tstr r1, [r0]\n" + "\tstr r2, [r0, 0x4]\n" + "\tadds r3, 0x44\n" + "\tldrb r0, [r3]\n" + "\tbx lr\n" + "\t.align 2, 0\n" +"_0809D258: .4byte gUnknown_20399E8"); +#endif +} |