diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2020-12-17 13:17:58 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-17 13:17:58 -0600 |
commit | 096de8d9b2ffd90c52e790296bfd7c5436d45ca3 (patch) | |
tree | 9c5af2e04dea05221c71946a5dfc06471f77801d /src/code_800C9CC.c | |
parent | bc504264f1e54b3c1e482710c592e5549828bfe1 (diff) | |
parent | f90f3affeb9b0a66aa7df68f5fdecd692033faf9 (diff) |
Merge pull request #12 from SethBarberee/master
Merge work from SethBarberee/pmd-red into pret.
Diffstat (limited to 'src/code_800C9CC.c')
-rw-r--r-- | src/code_800C9CC.c | 237 |
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; +} |