summaryrefslogtreecommitdiff
path: root/src/code_800C9CC.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/code_800C9CC.c')
-rw-r--r--src/code_800C9CC.c237
1 files changed, 237 insertions, 0 deletions
diff --git a/src/code_800C9CC.c b/src/code_800C9CC.c
new file mode 100644
index 0000000..27445f0
--- /dev/null
+++ b/src/code_800C9CC.c
@@ -0,0 +1,237 @@
+#include "global.h"
+#include "input.h"
+
+struct unkStruct_809CC88
+{
+ u16 padding;
+ u16 unk2;
+ u16 unk4;
+ u16 unk6;
+};
+
+extern u16 gUnknown_203B0BC;
+extern u8 gUnknown_202D6B8;
+extern u8 gUnknown_202D6B9;
+extern u16 gUnknown_202D7FA;
+
+extern struct unkStruct_809CC88 gUnknown_202D698;
+extern struct unkStruct_809CC88 gUnknown_202D6A0;
+extern struct unkStruct_809CC88 gUnknown_202D6A8;
+extern struct unkStruct_809CC88 gUnknown_202D6B0;
+
+void ReadKeyInput(struct UnkInputStruct1 *r0)
+{
+ u16 keyInput = REG_KEYINPUT ^ KEYS_MASK;
+ r0->unk0 = 0;
+
+ if((keyInput & DPAD_UP) != 0)
+ {
+ r0->unk0 = DPAD_UP;
+ }
+
+ if((keyInput & DPAD_DOWN) != 0)
+ {
+ r0->unk0 |= DPAD_DOWN;
+ }
+
+ if((keyInput & DPAD_LEFT) != 0)
+ {
+ r0->unk0 |= DPAD_LEFT;
+ }
+
+ if((keyInput & DPAD_RIGHT) != 0)
+ {
+ r0->unk0 |= DPAD_RIGHT;
+ }
+
+ if((keyInput & A_BUTTON) != 0)
+ {
+ r0->unk0 |= A_BUTTON;
+ }
+
+ if((keyInput & B_BUTTON) != 0)
+ {
+ r0->unk0 |= B_BUTTON;
+ }
+
+ if((keyInput & START_BUTTON) != 0)
+ {
+ r0->unk0 |= START_BUTTON;
+ }
+
+ if((keyInput & SELECT_BUTTON) != 0)
+ {
+ r0->unk0 |= SELECT_BUTTON;
+ }
+
+ if((keyInput & R_BUTTON) != 0)
+ {
+ r0->unk0 |= R_BUTTON;
+ }
+
+ if((keyInput & L_BUTTON) != 0)
+ {
+ r0->unk0 |= L_BUTTON;
+ }
+ gUnknown_203B0BC = keyInput;
+}
+
+void sub_800CC44(s32 r0, s32 r1)
+{
+ u32 preload1;
+ u8 preload2;
+ u8 preload3;
+
+ if(r0 < 0)
+ {
+ r0 = 0;
+ }
+ else
+ {
+ if(r0 > 0x10)
+ {
+ r0 = 0x10;
+ }
+ }
+ if(r1 < 0)
+ {
+ r1 = 0;
+ }
+ else
+ {
+ if(r1 > 0x10)
+ {
+ r1 = 0x10;
+ }
+ }
+ gUnknown_202D6B8 = r0;
+ gUnknown_202D6B9 = r1;
+
+ // Forcing the correct loads
+ preload1 = gUnknown_202D7FA;
+ preload2 = gUnknown_202D6B8;
+ preload3 = gUnknown_202D6B9;
+
+ gUnknown_202D7FA = (gUnknown_202D6B9 << 8) | gUnknown_202D6B8;
+
+}
+
+void sub_800CC88(u32 r0, u32 r1)
+{
+ gUnknown_202D698.unk4 = r0;
+ gUnknown_202D698.unk6 = r1;
+}
+
+void sub_800CC94(u32 r0, u32 r1)
+{
+ gUnknown_202D6A0.unk4 = r0;
+ gUnknown_202D6A0.unk6 = r1;
+}
+
+void sub_800CCA0(u32 r0, u32 r1)
+{
+ gUnknown_202D6A8.unk4 = r0;
+ gUnknown_202D6A8.unk6 = r1;
+}
+
+void sub_800CCAC(u32 r0, u32 r1)
+{
+ gUnknown_202D6B0.unk4 = r0;
+ gUnknown_202D6B0.unk6 = r1;
+}
+
+void sub_800CCB8(s32 r0, u32 r1, u32 r2)
+{
+ if(r0 == 1)
+ {
+ goto _0800CCD4;
+ }
+ if(r0 <= 1)
+ {
+ goto _0800CCCA;
+ }
+ if(r0 == 2)
+ {
+ goto _0800CCDE;
+ }
+ if(r0 == 3)
+ {
+ goto _0800CCE8;
+ }
+
+ _0800CCCA:
+ sub_800CC88(r1, r2);
+ return;
+ _0800CCD4:
+ sub_800CC94(r1, r2);
+ return;
+ _0800CCDE:
+ sub_800CCA0(r1, r2);
+ return;
+ _0800CCE8:
+ sub_800CCAC(r1, r2);
+}
+
+void sub_800CCF4(s32 r0, u32 r1)
+{
+ if(r0 == 1)
+ {
+ goto _0800CD10;
+ }
+ if(r0 <= 1)
+ {
+ goto _0800CD06;
+ }
+ if(r0 == 2)
+ {
+ goto _0800CD18;
+ }
+ if(r0 == 3)
+ {
+ goto _0800CD20;
+ }
+
+ _0800CD06:
+ gUnknown_202D698.unk4 = r1;
+ return;
+ _0800CD10:
+ gUnknown_202D6A0.unk4 = r1;
+ return;
+ _0800CD18:
+ gUnknown_202D6A8.unk4 = r1;
+ return;
+ _0800CD20:
+ gUnknown_202D6B0.unk4 = r1;
+}
+
+void sub_800CD2C(s32 r0, u32 r1)
+{
+ if(r0 == 1)
+ {
+ goto _0800CD48;
+ }
+ if(r0 <= 1)
+ {
+ goto _0800CD3E;
+ }
+ if(r0 == 2)
+ {
+ goto _0800CD50;
+ }
+ if(r0 == 3)
+ {
+ goto _0800CD58;
+ }
+
+ _0800CD3E:
+ gUnknown_202D698.unk6 = r1;
+ return;
+ _0800CD48:
+ gUnknown_202D6A0.unk6 = r1;
+ return;
+ _0800CD50:
+ gUnknown_202D6A8.unk6 = r1;
+ return;
+ _0800CD58:
+ gUnknown_202D6B0.unk6 = r1;
+}