diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-01-04 13:40:33 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-04 13:40:33 -0600 |
commit | 469212f7ee42d04e3160d357ed1f088f12edd391 (patch) | |
tree | ea53fd58f6dc9a42e38c3a7a78d6b7baa760a520 /src/code_800C9CC.c | |
parent | 87cd9885a9f8b38a76ab6add4a634e2a8a4837ee (diff) |
CPU and GPU Reg Funcs Decomp (#16)
* decomp/doc cpu funcs and gpu reg funcs
* use Cpu32 macro funcs
* address review comments
* decomp SetBGOBJEnableFlags
Diffstat (limited to 'src/code_800C9CC.c')
-rw-r--r-- | src/code_800C9CC.c | 172 |
1 files changed, 65 insertions, 107 deletions
diff --git a/src/code_800C9CC.c b/src/code_800C9CC.c index ddc49c6..28ce10a 100644 --- a/src/code_800C9CC.c +++ b/src/code_800C9CC.c @@ -1,23 +1,17 @@ #include "global.h" #include "input.h" - -struct unkStruct_809CC88 -{ - u16 padding; - u16 unk2; - u16 unk4; - u16 unk6; -}; +#include "bg.h" extern u16 gRawKeyInput; extern u8 gUnknown_202D6B8; extern u8 gUnknown_202D6B9; extern u16 gUnknown_202D7FA; +extern u8 gUnknown_202D7FE; -extern struct unkStruct_809CC88 gUnknown_202D698; -extern struct unkStruct_809CC88 gUnknown_202D6A0; -extern struct unkStruct_809CC88 gUnknown_202D6A8; -extern struct unkStruct_809CC88 gUnknown_202D6B0; +extern struct BGControlStruct gUnknown_202D698; +extern struct BGControlStruct gUnknown_202D6A0; +extern struct BGControlStruct gUnknown_202D6A8; +extern struct BGControlStruct gUnknown_202D6B0; void ReadKeyInput(struct Inputs *r0) { @@ -97,122 +91,86 @@ void sub_800CC44(s32 r0, s32 r1) } -void sub_800CC88(u32 r0, u32 r1) +void SetBG0RegOffsets(s32 xoffset, s32 yoffset) { - gUnknown_202D698.unk4 = r0; - gUnknown_202D698.unk6 = r1; + gUnknown_202D698.hofs = xoffset; + gUnknown_202D698.vofs = yoffset; } -void sub_800CC94(u32 r0, u32 r1) +void SetBG1RegOffsets(s32 xoffset, s32 yoffset) { - gUnknown_202D6A0.unk4 = r0; - gUnknown_202D6A0.unk6 = r1; + gUnknown_202D6A0.hofs = xoffset; + gUnknown_202D6A0.vofs = yoffset; } -void sub_800CCA0(u32 r0, u32 r1) +void SetBG2RegOffsets(s32 xoffset, s32 yoffset) { - gUnknown_202D6A8.unk4 = r0; - gUnknown_202D6A8.unk6 = r1; + gUnknown_202D6A8.hofs = xoffset; + gUnknown_202D6A8.vofs = yoffset; } -void sub_800CCAC(u32 r0, u32 r1) +void SetBG3RegOffsets(s32 xoffset, s32 yoffset) { - gUnknown_202D6B0.unk4 = r0; - gUnknown_202D6B0.unk6 = r1; + gUnknown_202D6B0.hofs = xoffset; + gUnknown_202D6B0.vofs = yoffset; } -void sub_800CCB8(s32 r0, u32 r1, u32 r2) +void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset) { - if(r0 == 1) - { - goto _0800CCD4; - } - if(r0 <= 1) - { - goto _0800CCCA; - } - if(r0 == 2) - { - goto _0800CCDE; + switch (reg) { + default: + case 0: return SetBG0RegOffsets(xoffset, yoffset); + case 1: return SetBG1RegOffsets(xoffset, yoffset); + case 2: return SetBG2RegOffsets(xoffset, yoffset); + case 3: return SetBG3RegOffsets(xoffset, yoffset); } - 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) +void SetBGRegXOffset(s32 reg, s32 offset) { - if(r0 == 1) - { - goto _0800CD10; - } - if(r0 <= 1) - { - goto _0800CD06; + switch (reg) { + default: + case 0: + gUnknown_202D698.hofs = offset; + break; + case 1: + gUnknown_202D6A0.hofs = offset; + break; + case 2: + gUnknown_202D6A8.hofs = offset; + break; + case 3: + gUnknown_202D6B0.hofs = offset; + break; } - 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) +void SetBGRegYOffset(s32 reg, s32 offset) { - if(r0 == 1) - { - goto _0800CD48; - } - if(r0 <= 1) - { - goto _0800CD3E; - } - if(r0 == 2) - { - goto _0800CD50; - } - if(r0 == 3) - { - goto _0800CD58; + switch (reg) { + default: + case 0: + gUnknown_202D698.vofs = offset; + break; + case 1: + gUnknown_202D6A0.vofs = offset; + break; + case 2: + gUnknown_202D6A8.vofs = offset; + break; + case 3: + gUnknown_202D6B0.vofs = offset; + break; } +} - _0800CD3E: - gUnknown_202D698.unk6 = r1; - return; - _0800CD48: - gUnknown_202D6A0.unk6 = r1; - return; - _0800CD50: - gUnknown_202D6A8.unk6 = r1; - return; - _0800CD58: - gUnknown_202D6B0.unk6 = r1; +void sub_800CD64(s32 r0, u8 r1) +{ + gUnknown_202D7FE = r1; + gUnknown_202D6A8.unk2 = r0 ? 0x8000 : 0; +} + +void SetBGOBJEnableFlags(u32 mask) +{ + REG_DISPCNT = (REG_DISPCNT & 0xe0ff) | (~(mask << 8) & (DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON)); } |