summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-11-14 17:44:04 -0600
committerSeth Barberee <seth.barberee@gmail.com>2020-11-14 17:44:04 -0600
commit3b75b10bbbc99fbbba573142a3f027c3c0492593 (patch)
treea1fef25e1f8be1e59d07a3fcd9d490175384497e /src
parent9237db777e49204e8f09ec6607caefedb469da05 (diff)
more decomping and some data dumping
Diffstat (limited to 'src')
-rw-r--r--src/code_800D090.c65
-rw-r--r--src/code_801D760.c28
-rw-r--r--src/code_809D148.c42
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
+}