summaryrefslogtreecommitdiff
path: root/src/code_8003DC40.c
diff options
context:
space:
mode:
authorTyler McGavran <tyler.taggerung@gmail.com>2021-11-23 04:47:54 -0500
committerGitHub <noreply@github.com>2021-11-23 01:47:54 -0800
commita2dc62ccf8856863da8d0f2f95a8b75986f63c3a (patch)
tree0f9bb2b0ae2f783fd81dc07d6f29729c7afa2e97 /src/code_8003DC40.c
parentbed14f61c389675e11f5364b5c00c9a73f043106 (diff)
Jump Table Related Disassembly (#60)
* Part 1, Commit 1 of 24 audio/effects Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 2 of 24 audio/external Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 3 of 24 audio/heap Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 4 of 24 audio/port_eu Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 5 of 24 audio/seqplayer Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 6 of 24 code_80005FD0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 7 of 24 code_8001C4D0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 8 of 24 code_80027D00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 9 of 24 code_800393C0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 10 of 24 code_8003DC40 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 11 of 24 code_800431B0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 12 of 24 code_80057C60 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 13 of 24 code_8006E9C0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 14 of 24 code_80071F00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 15 of 24 code_80086E70 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 16 of 24 code_8008C1D0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 17 of 24 code_80091750 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 18 of 24 code_800AF9B0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 19 of 24 code_8028DF00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 20 of 24 code_80290C20 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 21 of 24 code_802B0210 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 22 of 24 code_actors Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 23 of 24 memory Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 24 of 24 os/__osException Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 1 of 20 audio/effects.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 2 of 20 audio/external.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 3 of 24 audio/heap.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 4 of 20 audio/port_eu.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 5 of 20 audio/seqplayer.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 6 of 20 code_80005FD0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 7 of 20 code_8001C4D0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 8 of 20 code_80027D00.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 9 of 20 code_8003DC40.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 10 of 20 code_800431B0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 11 of 20 code_80057C60.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 12 of 20 code_8006E9C0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 13 of 20 code_80071F00.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 14 of 20 code_80086E70.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 15 of 20 code_80091750.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 16 of 20 code_800AF9B0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 17 of 20 code_80290C20.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 18 of 20 code_802B0210.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 19 of 20 code_80296A50.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 20 of 20 memory.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 1 of 4 code_8008C1D0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 2 of 4 code_8028DF00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 3 of 4 math_util Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 4 of 4 crash_screen Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Recreated disassemblies with a context file Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
Diffstat (limited to 'src/code_8003DC40.c')
-rw-r--r--src/code_8003DC40.c60
1 files changed, 53 insertions, 7 deletions
diff --git a/src/code_8003DC40.c b/src/code_8003DC40.c
index dae20a944..312aef32f 100644
--- a/src/code_8003DC40.c
+++ b/src/code_8003DC40.c
@@ -240,15 +240,61 @@ GLOBAL_ASM("asm/non_matchings/code_8003DC40/func_8003F138.s")
#endif
#ifdef MIPS_TO_C
-//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
-/*
-Failed to decompile function func_8003F46C:
+//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
+? func_8002A5F4(void *, f32, ?, f32); /* extern */
+? func_8003E048(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
+? func_8003E37C(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
+? func_8003E6EC(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
+? func_8003E9EC(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
+? func_8003EE2C(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
+? func_8003F138(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
+u16 gCurrentCourseId; /* unable to generate initializer */
-Unable to determine jump table for jr instruction at func_8003F46C.s line 77.
+void func_8003F46C(Player *arg0, void *arg1, s32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7, f32 *arg6, f32 *arg7) {
+ u16 temp_t9;
-There must be a read of a variable in the same block as
-the instruction, which has a name starting with "jtbl"/"jpt_".
-*/
+ arg1->unk0 = -arg0->unk_140;
+ arg1->unk4 = -arg0->unk_144;
+ arg1->unk8 = -arg0->unk_148;
+ if ((arg0->unk_144 < 0.0f) && ((arg0->unk_0CA & 2) == 0)) {
+ *arg7 += arg1->unk0 * arg0->unk_124 * 1.0f;
+ *arg6 += arg1->unk4 * arg0->unk_124 * 1.0f;
+ *arg7 += arg1->unk8 * arg0->unk_124 * 1.0f;
+ func_8002A5F4(arg1, *arg6, 0x3F99999A, 0.0f);
+ arg0->kartHopJerk = 0.0f;
+ arg0->kartHopAcceleration = 0.0f;
+ arg0->kartHopVelocity = 0.0f;
+ return;
+ }
+ temp_t9 = gCurrentCourseId;
+ switch (temp_t9) {
+ case 0:
+ func_8003E048(arg0, arg1, arg6, arg7, arg6, arg7);
+ break;
+ case 1:
+ case 6:
+ func_8003E37C(arg0, arg1, arg6, arg7, arg6, arg7);
+ break;
+ case 2:
+ func_8003E6EC(arg0, arg1, arg6, arg7, arg6, arg7);
+ break;
+ case 8:
+ func_8003E9EC(arg0, arg1, arg6, arg7, arg6, arg7);
+ break;
+ case 14:
+ func_8003EE2C(arg0, arg1, arg6, arg7, arg6, arg7);
+ break;
+ case 18:
+ func_8003F138(arg0, arg1, arg6, arg7, arg6, arg7);
+ break;
+ default:
+ func_8003E048(arg0, arg1, arg6, arg7, arg6, arg7);
+ break;
+ }
+ if (arg0->unk_0BC & 0x10000) {
+ arg0->unk_DAC = 0.5f;
+ }
+}
#else
GLOBAL_ASM("asm/non_matchings/code_8003DC40/func_8003F46C.s")
#endif