diff options
| author | Synray <31429825+Synray@users.noreply.github.com> | 2020-04-18 19:56:53 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-18 22:56:53 -0400 |
| commit | eefbe9afe1891ea27eb39315a3c87e87abef0828 (patch) | |
| tree | 754338c5f5fea1687d4bdb0b9b6025e3311d7b95 /src/code/code_800D2E30.c | |
| parent | 21750d5aee057f5352d945b7cad3c9394efe25b7 (diff) | |
Decompile code_800D2E30 and use struct in code_800A9F30 (#80)
* Match func_800AA000
* Match z_camera/func_800437F0
* Decompile code_800D2E30, use struct in 800A9F30
* Format
* Remove 'U' from literals
* Remove bss, cleanup z_camera
* Review changes, rename temp
* Move externs to variables.h
Diffstat (limited to 'src/code/code_800D2E30.c')
| -rw-r--r-- | src/code/code_800D2E30.c | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/code/code_800D2E30.c b/src/code/code_800D2E30.c new file mode 100644 index 000000000..e7e67f0a0 --- /dev/null +++ b/src/code/code_800D2E30.c @@ -0,0 +1,124 @@ +#include <ultra64.h> +#include <global.h> + +void func_800D2E30(UnkRumbleStruct* arg0) { + s32 i; + s32 unk_a3; + s32 index = -1; + UnkRumbleStruct* new_var; + + for (i = 0; i < 4; i++) { + arg0->rumbleEnable[i] = 0; + } + + if (arg0->unk_105 == 0) { + new_var = arg0; + if (D_8012DBB0 != 0) { + for (i = 0; i < 4; i++) { + gPadMgr.pakType[i] = 0; + } + } + D_8012DBB0 = new_var->unk_105; + return; + } + D_8012DBB0 = arg0->unk_105; + + if (arg0->unk_104 == 2) { + for (i = 0; i < 4; ++i) { + gPadMgr.pakType[i] = 0; + } + + for (i = 0; i < 0x40; i++) { + arg0->unk_C4[i] = 0; + arg0->unk_84[i] = 0; + arg0->unk_44[i] = 0; + arg0->unk_04[i] = 0; + } + arg0->unk_106 = arg0->unk_108 = arg0->unk_10A = arg0->unk_10B = arg0->unk_10C = arg0->unk_10D = 0; + arg0->unk_104 = 1; + } + if (arg0->unk_104 != 0) { + for (i = 0; i < 0x40; i++) { + + if (arg0->unk_04[i] != 0) { + if (arg0->unk_44[i] > 0) { + arg0->unk_44[i]--; + } else { + unk_a3 = arg0->unk_04[i] - arg0->unk_84[i]; + if (unk_a3 > 0) { + arg0->unk_04[i] = unk_a3; + } else { + arg0->unk_04[i] = 0; + } + } + + unk_a3 = arg0->unk_C4[i] + arg0->unk_04[i]; + arg0->unk_C4[i] = unk_a3; + if (index == -1) { + index = i; + arg0->rumbleEnable[0] = (unk_a3 >= 0x100); + } else { + + if (arg0->unk_04[index] < arg0->unk_04[i]) { + index = i; + arg0->rumbleEnable[0] = (unk_a3 >= 0x100); + } + } + } + } + if (arg0->unk_10A != 0) { + if (arg0->unk_10B > 0) { + arg0->unk_10B--; + } else { + unk_a3 = arg0->unk_10A - arg0->unk_10C; + if (unk_a3 > 0) { + arg0->unk_10A = unk_a3; + } else { + arg0->unk_10A = 0; + } + } + unk_a3 = arg0->unk_10D + arg0->unk_10A; + arg0->unk_10D = unk_a3; + arg0->rumbleEnable[0] = (unk_a3 >= 0x100); + } + if (arg0->unk_10A != 0) { + unk_a3 = arg0->unk_10A; + } else { + if (index == -1) { + unk_a3 = 0; + } else { + unk_a3 = arg0->unk_04[index]; + } + } + if (unk_a3 == 0) { + if ((++arg0->unk_108) >= 6) { + arg0->unk_106 = 0; + arg0->unk_108 = 5; + } + } else { + arg0->unk_108 = 0; + if ((++arg0->unk_106) >= 0x1C21) { + arg0->unk_104 = 0; + } + } + } else { + for (i = 0; i < 0x40; i++) { + arg0->unk_C4[i] = 0; + arg0->unk_84[i] = 0; + arg0->unk_44[i] = 0; + arg0->unk_04[i] = 0; + } + + arg0->unk_106 = arg0->unk_108 = arg0->unk_10A = arg0->unk_10B = arg0->unk_10C = arg0->unk_10D = 0; + } +} + +void func_800D3140(UnkRumbleStruct* arg0) { + bzero(arg0, sizeof(UnkRumbleStruct)); + arg0->unk_104 = 2; + arg0->unk_105 = 1; +} + +void func_800D3178(UnkRumbleStruct* arg0) { + bzero(arg0, sizeof(UnkRumbleStruct)); +} |
