This commit is contained in:
Donkey Kong 2023-02-28 01:16:15 +10:30
parent 4724bff684
commit 18eaeffde7
38 changed files with 327 additions and 136 deletions

View File

@ -25,9 +25,13 @@ u8 func_806EB0C0(s16 arg0, Actor *actor, u8 playerIndex);
void func_8067B238(Actor *destination, Actor *source, f32 scale);
void func_80684900(u8);
f32 func_80612794(s16);
void func_80614E78(Actor*, s32);
void func_80629174(void);
// Heap stuff???
void func_8061130C(void *);
// TODO: Signatures are suspect
s32 func_80659470(s32); // Returns index into object model2 array
s32 func_80659544(s32);

View File

@ -79,7 +79,9 @@ struct ledge_info_8c {
s32 unk18;
s32 unk1C;
s32 unk20;
s32 unk24;
s16 unk24;
u8 unk26; // Used
u8 unk27; // Used
LedgeInfo8C *next;
};

View File

@ -174,12 +174,15 @@ typedef struct Temp10Big {
extern Temp10Big D_8075C410[];
typedef struct DKTVExtraData {
s32 unk0;
s32 unk4;
s32 unk8;
s16 unkC;
u8 map;
u8 exit;
f32 startingXPosition; // 0x00
f32 startingYPosition; // 0x04
f32 startingZPosition; // 0x08
s16 startingYRotation; // 0x0C
u8 map; // 0x0E
u8 exit; // 0x0F
u8 characterIndex; // 0x10
u8 unk11; // 0x11
CharacterProgress characterProgress; // 0x12
} DKTVExtraData;
extern DKTVExtraData D_807ECE20;

View File

@ -12,7 +12,7 @@ us,.code,func_8071D0F0,368,no
us,.code,func_8073726C,560,no
us,.code,func_80651BC0,32,yes
us,.code,func_8071B8EC,552,no
us,.code,func_8060B430,108,no
us,.code,func_8060B430,108,yes
us,.code,func_8060042C,40,yes
us,.code,func_8066EB40,16,yes
us,.code,func_806EDFF8,52,yes
@ -560,7 +560,7 @@ us,.code,func_80635588,84,yes
us,.code,func_80653684,384,yes
us,.code,func_80687474,120,yes
us,.code,func_806D2C54,88,yes
us,.code,func_80636380,188,no
us,.code,func_80636380,188,yes
us,.code,func_8062D0CC,220,no
us,.code,func_806019B8,88,no
us,.code,func_806F9CD0,188,no
@ -1480,7 +1480,7 @@ us,.code,func_8065E634,488,no
us,.code,func_806D6B00,1036,yes
us,.code,func_806789E4,288,no
us,.code,func_80633DC0,2472,no
us,.code,func_8060B4D4,136,no
us,.code,func_8060B4D4,136,yes
us,.code,func_8066B8C8,92,no
us,.code,func_8070D380,76,yes
us,.code,func_806A1008,180,no
@ -1553,7 +1553,7 @@ us,.code,func_806A10BC,112,no
us,.code,func_805FC98C,216,no
us,.code,func_8065F614,100,yes
us,.code,func_806EBDAC,24,yes
us,.code,func_8060B110,48,no
us,.code,func_8060B110,36,yes
us,.code,func_80636210,180,no
us,.code,func_8064C3E8,348,no
us,.code,func_8072D9D4,140,yes
@ -2487,7 +2487,7 @@ us,.code,func_80634768,332,no
us,.code,func_806EB178,28,yes
us,.code,func_806DF1A0,224,yes
us,.code,func_80712830,276,yes
us,.code,func_806E208C,180,no
us,.code,func_806E208C,180,yes
us,.code,func_8071F8E4,412,no
us,.code,func_8064199C,92,no
us,.code,func_80737924,108,no
@ -2605,7 +2605,7 @@ us,.code,func_806732A8,124,no
us,.code,func_8070CA70,68,yes
us,.code,func_806EEA5C,156,yes
us,.code,func_806C71F0,8,yes
us,.code,func_806752D4,172,no
us,.code,func_806752D4,172,yes
us,.code,func_8064E428,100,no
us,.code,func_806ECBD4,116,yes
us,.code,func_806D1238,56,yes

1 version section function length matching
12 us .code func_8073726C 560 no
13 us .code func_80651BC0 32 yes
14 us .code func_8071B8EC 552 no
15 us .code func_8060B430 108 no yes
16 us .code func_8060042C 40 yes
17 us .code func_8066EB40 16 yes
18 us .code func_806EDFF8 52 yes
560 us .code func_80653684 384 yes
561 us .code func_80687474 120 yes
562 us .code func_806D2C54 88 yes
563 us .code func_80636380 188 no yes
564 us .code func_8062D0CC 220 no
565 us .code func_806019B8 88 no
566 us .code func_806F9CD0 188 no
1480 us .code func_806D6B00 1036 yes
1481 us .code func_806789E4 288 no
1482 us .code func_80633DC0 2472 no
1483 us .code func_8060B4D4 136 no yes
1484 us .code func_8066B8C8 92 no
1485 us .code func_8070D380 76 yes
1486 us .code func_806A1008 180 no
1553 us .code func_805FC98C 216 no
1554 us .code func_8065F614 100 yes
1555 us .code func_806EBDAC 24 yes
1556 us .code func_8060B110 48 36 no yes
1557 us .code func_80636210 180 no
1558 us .code func_8064C3E8 348 no
1559 us .code func_8072D9D4 140 yes
2487 us .code func_806EB178 28 yes
2488 us .code func_806DF1A0 224 yes
2489 us .code func_80712830 276 yes
2490 us .code func_806E208C 180 no yes
2491 us .code func_8071F8E4 412 no
2492 us .code func_8064199C 92 no
2493 us .code func_80737924 108 no
2605 us .code func_8070CA70 68 yes
2606 us .code func_806EEA5C 156 yes
2607 us .code func_806C71F0 8 yes
2608 us .code func_806752D4 172 no yes
2609 us .code func_8064E428 100 no
2610 us .code func_806ECBD4 116 yes
2611 us .code func_806D1238 56 yes

View File

@ -12,7 +12,7 @@ us,.code,func_8071D0F0,368,no
us,.code,func_8073726C,560,no
us,.code,func_80651BC0,32,yes
us,.code,func_8071B8EC,552,no
us,.code,func_8060B430,108,no
us,.code,func_8060B430,108,yes
us,.code,func_8060042C,40,yes
us,.code,func_8066EB40,16,yes
us,.code,func_806EDFF8,52,yes
@ -560,7 +560,7 @@ us,.code,func_80635588,84,yes
us,.code,func_80653684,384,yes
us,.code,func_80687474,120,yes
us,.code,func_806D2C54,88,yes
us,.code,func_80636380,188,no
us,.code,func_80636380,188,yes
us,.code,func_8062D0CC,220,no
us,.code,func_806019B8,88,no
us,.code,func_806F9CD0,188,no
@ -1480,7 +1480,7 @@ us,.code,func_8065E634,488,no
us,.code,func_806D6B00,1036,yes
us,.code,func_806789E4,288,no
us,.code,func_80633DC0,2472,no
us,.code,func_8060B4D4,136,no
us,.code,func_8060B4D4,136,yes
us,.code,func_8066B8C8,92,no
us,.code,func_8070D380,76,yes
us,.code,func_806A1008,180,no
@ -1553,7 +1553,7 @@ us,.code,func_806A10BC,112,no
us,.code,func_805FC98C,216,no
us,.code,func_8065F614,100,yes
us,.code,func_806EBDAC,24,yes
us,.code,func_8060B110,48,no
us,.code,func_8060B110,36,yes
us,.code,func_80636210,180,no
us,.code,func_8064C3E8,348,no
us,.code,func_8072D9D4,140,yes
@ -2487,7 +2487,7 @@ us,.code,func_80634768,332,no
us,.code,func_806EB178,28,yes
us,.code,func_806DF1A0,224,yes
us,.code,func_80712830,276,yes
us,.code,func_806E208C,180,no
us,.code,func_806E208C,180,yes
us,.code,func_8071F8E4,412,no
us,.code,func_8064199C,92,no
us,.code,func_80737924,108,no
@ -2605,7 +2605,7 @@ us,.code,func_806732A8,124,no
us,.code,func_8070CA70,68,yes
us,.code,func_806EEA5C,156,yes
us,.code,func_806C71F0,8,yes
us,.code,func_806752D4,172,no
us,.code,func_806752D4,172,yes
us,.code,func_8064E428,100,no
us,.code,func_806ECBD4,116,yes
us,.code,func_806D1238,56,yes

1 version section function length matching
12 us .code func_8073726C 560 no
13 us .code func_80651BC0 32 yes
14 us .code func_8071B8EC 552 no
15 us .code func_8060B430 108 no yes
16 us .code func_8060042C 40 yes
17 us .code func_8066EB40 16 yes
18 us .code func_806EDFF8 52 yes
560 us .code func_80653684 384 yes
561 us .code func_80687474 120 yes
562 us .code func_806D2C54 88 yes
563 us .code func_80636380 188 no yes
564 us .code func_8062D0CC 220 no
565 us .code func_806019B8 88 no
566 us .code func_806F9CD0 188 no
1480 us .code func_806D6B00 1036 yes
1481 us .code func_806789E4 288 no
1482 us .code func_80633DC0 2472 no
1483 us .code func_8060B4D4 136 no yes
1484 us .code func_8066B8C8 92 no
1485 us .code func_8070D380 76 yes
1486 us .code func_806A1008 180 no
1553 us .code func_805FC98C 216 no
1554 us .code func_8065F614 100 yes
1555 us .code func_806EBDAC 24 yes
1556 us .code func_8060B110 48 36 no yes
1557 us .code func_80636210 180 no
1558 us .code func_8064C3E8 348 no
1559 us .code func_8072D9D4 140 yes
2487 us .code func_806EB178 28 yes
2488 us .code func_806DF1A0 224 yes
2489 us .code func_80712830 276 yes
2490 us .code func_806E208C 180 no yes
2491 us .code func_8071F8E4 412 no
2492 us .code func_8064199C 92 no
2493 us .code func_80737924 108 no
2605 us .code func_8070CA70 68 yes
2606 us .code func_806EEA5C 156 yes
2607 us .code func_806C71F0 8 yes
2608 us .code func_806752D4 172 no yes
2609 us .code func_8064E428 100 no
2610 us .code func_806ECBD4 116 yes
2611 us .code func_806D1238 56 yes

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h77v20H0z"/>
<path fill="#e04600" d="M77 0h67v20H77z"/>
<path fill="#e04700" d="M77 0h67v20H77z"/>
<path fill="url(#b)" d="M0 0h144v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
@ -17,7 +17,7 @@
<text x="38.5" y="14">global_asm</text>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
<text x="111.5" y="15" fill="#010101" fill-opacity=".3">15.7057%</text>
<text x="110.5" y="14">15.7057%</text>
<text x="111.5" y="15" fill="#010101" fill-opacity=".3">15.7733%</text>
<text x="110.5" y="14">15.7733%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -17,7 +17,7 @@
<text x="66.0" y="14">Donkey Kong 64 (US)</text>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
<text x="166.5" y="15" fill="#010101" fill-opacity=".3">16.3004%</text>
<text x="165.5" y="14">16.3004%</text>
<text x="166.5" y="15" fill="#010101" fill-opacity=".3">16.3509%</text>
<text x="165.5" y="14">16.3509%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -14,8 +14,6 @@ void func_80714C08(void*, f32, Actor*, s32, s32);
#pragma GLOBAL_ASM("asm/nonmatchings/boss/code_6240/func_8002A240.s")
f32 func_80612794(s16);
/*
// TODO: Pretty close, missing some float instructions near the bottom though
void func_8002A240(void) {

View File

@ -13,8 +13,6 @@ void func_8002C520(s16, s16, s16);
void func_807271F4(s32, s16, s16, s16, s16, s32, s32);
f32 func_80612794(s16);
void func_8002C520(s16 arg0, s16 arg1, s16 arg2) {
func_807271F4(arg0,
current_actor_pointer->x_position + (func_80612794(arg2) * arg1),

View File

@ -3,7 +3,6 @@
#include "variables.h"
void func_80613CA8(Actor*, s16, f32, f32);
f32 func_80612794(s16);
void func_8002FB7C(u8);
extern u16 D_807FBB34;

View File

@ -5,7 +5,6 @@
s16 func_80665DE0(f32, f32, f32, f32);
void func_8061C464(s32, Actor*, s32, s32, s32, s32, s32, s32, s32, s32, f32);
void func_806086CC(f32, f32, f32, s32, s32, s32, s32, s32, f32, s32);
f32 func_80612794(s16);
void func_8063DA40(s32, s16);
extern s32 D_807F5D10;

View File

@ -6,28 +6,27 @@ extern s16 D_807463A0;
extern void *D_807463A8; // DKTV Inputs - Camera + Stick
extern s16 D_807463AC;
extern s16 D_807463B0;
extern s16 D_807463B4;
extern u16 D_807463B4;
typedef struct {
s16 button;
s8 stick_x; /* -80 <= stick_x <= 80 */
s8 stick_y; /* -80 <= stick_y <= 80 */
} DKTV_OSContPad;
extern u8 D_807ECE30;
extern void *D_807ECE90; // DKTV Inputs - Buttons
extern void *D_807ECE94;
extern s16 *D_807ECE98;
extern u16 *D_807ECE94;
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_10130/func_8060B430.s")
extern DKTV_OSContPad *D_807ECE98;
/*
// Very doable, datatype nonsense
void func_8060B430(void *arg0, void *arg1) {
void *temp_a1;
arg0->unk7C = arg1->unk0;
temp_a1 = arg1 + 0x12;
arg0->unk80 = arg1->unk4;
arg0->unk84 = temp_a1->unk-A;
arg0->unkE6 = temp_a1->unk-6;
memcpy(&D_807FC950->character_progress[temp_a1->unk-2], temp_a1, 0x5E);
void func_8060B430(Actor *arg0, DKTVExtraData *arg1) {
arg0->x_position = arg1->startingXPosition;
arg0->y_position = arg1->startingYPosition;
arg0->z_position = arg1->startingZPosition;
arg0->y_rotation = arg1->startingYRotation;
memcpy(&D_807FC950->character_progress[arg1->characterIndex], &arg1->characterProgress, sizeof(CharacterProgress));
}
*/
s16 func_8060B49C(s32 arg0, s32 arg1) {
is_autowalking = 2;
@ -35,27 +34,22 @@ s16 func_8060B49C(s32 arg0, s32 arg1) {
return D_807463B0;
}
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_10130/func_8060B4D4.s")
/*
// Very doable, datatype nonsense
void func_8060B4D4(void *arg0) {
void func_8060B4D4(OSContPad *arg0) {
if (D_807463AC < (D_807463B0 - 1)) {
arg0->unk2 = D_807ECE98->unk2;
arg0->unk3 = D_807ECE98->unk3;
if (D_807ECE98->unk0 & 0x8000) {
D_807463B4 = *D_807ECE94;
D_807ECE94 += 2;
arg0->stick_x = D_807ECE98->stick_x;
arg0->stick_y = D_807ECE98->stick_y;
if (D_807ECE98->button & 0x8000) {
D_807463B4 = D_807ECE94[0];
D_807ECE94++;
}
arg0->unk0 = D_807463B4 & 0xEFFF;
arg0->button = D_807463B4 & 0xEFFF;
}
}
*/
void func_8060B55C(s16 *arg0) {
void func_8060B55C(u16 *arg0) {
if (D_807463AC < (D_807463B0 - 1)) {
*arg0 = *D_807ECE98 & 0x7FFF;
D_807ECE98 += 2;
*arg0 = D_807ECE98->button & 0x7FFF;
D_807ECE98++;
D_807463AC++;
return;
}
@ -96,7 +90,7 @@ void func_8060B5C0(u8 *file) {
file += size;
// Read the extra data
memcpy(&D_807ECE20, file, 0x70);
memcpy(&D_807ECE20, file, sizeof(DKTVExtraData));
// TODO: This is dumb, fix it
//[3:01 PM] I***: They wouldn't have written that right?

View File

@ -64,7 +64,6 @@ void func_8072A7DC(void) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_12E800/func_8072A86C.s")
f32 func_80612794(s16);
void func_8072AB74(u8, f32, f32, u16, f32);
/*

View File

@ -2,6 +2,8 @@
#include "functions.h"
#include "variables.h"
// TODO: Hmmm, could this file be managing the heap?
// It would explain the negative struct offsets
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_15050/func_80610350.s")
@ -50,6 +52,7 @@ s32 func_806111BC(s32 arg0, s32 arg1) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_15050/func_806111F8.s")
// Used in resolveActorCollisions(), param 1 appears to be the a pointer to the struct ActorCollision
// TODO: Also used in tons more places, not always with that struct
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_15050/func_8061130C.s")
// Negative struct offset, odd

View File

@ -59,11 +59,13 @@ f32 func_8062A850(void) {
}
*/
// Rotating a bunch of matrices
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_2F550/func_8062A944.s")
// Matrix, loop
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_2F550/func_8062AC68.s")
// Copying matrices?
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_2F550/func_8062AD28.s")
typedef struct {

View File

@ -3,7 +3,6 @@
#include "variables.h"
void func_806306D0(Chunk14 *current);
void func_8061130C(Chunk14*);
extern Chunk14 *D_807F5FF0;
extern Chunk14 *D_807F5FF4;
@ -395,7 +394,6 @@ Chunk14 *func_80630890(Chunk14 *arg0, f32 arg1, f32 arg2, f32 arg3, Chunk14 **ar
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_35000/func_806319C4.s")
/*
f32 func_80612794(s16);
s32 func_8063162C(Actor *, s16 *);
s32 func_806317D4(Actor *, s16 *, f32, f32, f32);

View File

@ -354,33 +354,43 @@ void func_80636014(s32 arg0, u8 arg1, u8 arg2) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_36880/func_806362C4.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_36880/func_80636380.s")
// TODO: Any overlap with documented structs?
typedef struct {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
u8 unk20;
u8 unk21;
s16 unk22;
s32 unk24;
s32 unk28;
s32 unk2C;
s32 unk30;
s32 unk34;
} Struct80636380;
/*
// TODO: Which struct is this?
void func_80636380(s32 arg0, void *arg1) {
s32 temp_a0;
s32 temp_a0_2;
s32 temp_s1;
void *phi_s0;
s32 phi_s1;
void func_80636380(s32 arg0, Struct80636380 *arg1) {
Struct80636380 *phi_s0;
s32 i;
phi_s0 = arg1;
phi_s1 = 0;
if (arg1->unk20 > 0) {
do {
temp_a0 = phi_s0->unk24;
if (temp_a0 != 0) {
func_8066B434(temp_a0, 0xA69, 7);
}
temp_a0_2 = phi_s0->unk34;
if (temp_a0_2 != 0) {
func_8066B434(temp_a0_2, 0xA6A, 7);
}
temp_s1 = phi_s1 + 1;
phi_s0 += 4;
phi_s1 = temp_s1;
} while (temp_s1 < arg1->unk20);
i = 0;
while (i < arg1->unk20) {
if (phi_s0->unk24 != 0) {
func_8066B434(phi_s0->unk24, 0xA69, 7);
}
if (phi_s0->unk34 != 0) {
func_8066B434(phi_s0->unk34, 0xA6A, 7);
}
// TODO: Not good at all.
// I think arg1 is an array of pointers
((s32)phi_s0) += 4;
i++;
}
func_8066B434(arg0, 0xA6E, 7);
func_8061134C(arg1->unk1C);
@ -388,7 +398,6 @@ void func_80636380(s32 arg0, void *arg1) {
func_8061134C(arg1->unk14);
func_8061134C(arg1->unk18);
}
*/
typedef struct struct_807F6160 Struct807F6160;

View File

@ -276,7 +276,6 @@ void func_805FF660(u8 arg0) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_3C10/func_805FF670.s")
f32 func_80612794(s16);
void func_806A5DF0(s32, f32, f32, f32, s32, s32, s32, s32);
void func_806F8BC4(s32, s32, s32);

View File

@ -1161,7 +1161,6 @@ u8 func_8064F1C4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_42630/func_8064F210.s")
/*
f32 func_80612794(s16);
extern f32 D_807F621C;
extern f32 D_807F6224;
extern f32 D_807F622C;

View File

@ -94,7 +94,7 @@ void func_806594C8(s32 arg0) {
}
if (phi_a0) {
*phi_v1 = phi_a0->unk8;
func_8061130C(phi_a0, arg0);
func_8061130C(phi_a0);
}
}

View File

@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern u16 D_80748300;
extern s16 D_80748300;
extern f32 D_80758CA0;
extern f32 D_80758CA4;
@ -152,6 +152,82 @@ void func_8065A6F8(u16 arg0) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_5E2F0/func_8065A708.s")
typedef struct {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
f32 unk10;
f32 unk14;
f32 unk18;
f32 unk1C;
f32 unk20;
f32 unk24;
f32 unk28;
f32 unk2C;
s16 unk30;
s16 unk32;
s16 unk34;
s8 unk36;
s8 unk37;
s8 unk38;
s8 unk39;
s16 unk3A;
} Struct807F7500;
extern Struct807F7500 D_807F7500[];
extern f32 D_807F7ED0;
extern f32 D_807F7ED4;
extern f32 D_807F7ED8;
extern f32 D_807F7EDC;
extern f32 D_807F7EE0;
extern f32 D_807F7EE4;
// TODO: I think I messed up the order of the writes
// Either that or it's doing some weird struct copy in one line?
// Or... We get rid of temp_v0 (shudder)
// Or... We fix rodata
// Or... float tuples in the struct?
/*
void func_8065A708(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA) {
Struct807F7500 *temp_v0;
if (D_80748300 != 0x10) {
temp_v0 = &D_807F7500[D_80748300];
temp_v0->unk34 = D_807F7EFE;
temp_v0->unk3A = D_807F7EF8;
temp_v0->unk30 = D_807F7EFA;
temp_v0->unk32 = D_807F7EFC;
temp_v0->unk8 = D_807F7EE8;
temp_v0->unk0 = D_807F7EE4;
temp_v0->unk18 = arg0;
temp_v0->unk1C = arg1;
temp_v0->unkC = D_807F7EDC;
temp_v0->unk4 = D_807F7ED8;
temp_v0->unk39 = arg7;
D_80748300++;
temp_v0->unk10 = D_807F7EE0;
temp_v0->unk20 = arg2;
temp_v0->unk24 = arg3;
temp_v0->unk28 = arg4;
temp_v0->unk2C = arg5;
temp_v0->unk14 = arg6;
temp_v0->unk36 = arg8;
temp_v0->unk37 = arg9;
temp_v0->unk38 = argA;
D_807F7ED8 = D_807F7ECC;
D_807F7EDC = D_807F7ED0;
D_807F7EF8 = 0;
D_807F7EFA = -1;
D_807F7EFC = 0x2BC;
D_807F7EFE = 0x258;
D_807F7EE0 = D_807F7ED4;
D_807F7EE4 = 25.0f;
D_807F7EE8 = 65.0f;
}
}
*/
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_5E2F0/func_8065A884.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_5E2F0/func_8065BAA0.s")

View File

@ -377,11 +377,6 @@ u8 func_8066F274(Actor *arg0, s16 *arg1, s16 *arg2, s8 *arg3) {
arg0->unk64 &= ~0x100;
}
return sp23 != 0 || sp22 != 0;
// var_v1 = ;
// if (var_v1 == 0) {
// var_v1 = ;
// }
// return var_v1 & 0xFF;
}
void func_8066F400(Actor *arg0) {

View File

@ -11,8 +11,65 @@
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_79890/func_80675234.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_79890/func_806752D4.s")
/*
f32 func_80675234(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) {
f32 temp_f0;
f32 temp_f14;
f32 temp_f2;
f32 temp_f2_2;
f32 var_f12;
temp_f0 = arg0 - arg3;
temp_f2 = arg1 - arg4;
temp_f14 = arg2 - arg5;
temp_f2_2 = sqrtf((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f14 * temp_f14)) - arg6;
var_f12 = temp_f2_2;
if (temp_f2_2 < 0.0) {
var_f12 = 0.0f;
}
return var_f12 / 8.0f;
}
*/
typedef struct Struct_806752D4 Struct806752D4;
struct Struct_806752D4 {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
Struct806752D4 *next;
};
extern Struct806752D4 *D_807FB620;
extern Struct806752D4 *D_807FB624;
extern s32 D_807FB628;
void func_806752D4(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5, s32 arg6) {
Struct806752D4 *temp_v0;
temp_v0 = malloc(sizeof(Struct806752D4));
temp_v0->unk0 = arg1;
temp_v0->unk4 = arg2;
temp_v0->unk8 = arg3;
temp_v0->unkC = arg4;
temp_v0->unk10 = arg5;
temp_v0->unk14 = arg6;
temp_v0->unk18 = arg0;
temp_v0->next = NULL;
if (D_807FB620 != NULL) {
D_807FB624->next = temp_v0;
} else {
D_807FB620 = temp_v0;
}
D_807FB624 = temp_v0;
D_807FB628++;
}
// Doable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_79890/func_80675380.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_79890/func_80675478.s")

View File

@ -5,11 +5,75 @@
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_7BBD0/func_80676ED0.s")
extern s8 D_807FB5FD;
extern u8 D_807FB5FF;
extern s8 D_807FB600;
extern u16 D_807FBB34;
/*
// TODO: Painfully close, only difference is it's using 0x50 on the stack instead of 0x54 for a variable
u8 func_80676ED0(Actor *arg0, s16 *arg1, s16 *arg2) {
LedgeInfo *sp7C;
LedgeInfo *temp_s2;
s32 sp74;
s32 sp70;
s32 sp6C;
s32 sp68;
s32 i;
LedgeInfo8C *var_s0;
Actor *temp_s7;
u8 var_s3;
u8 sp5A;
sp5A = 0;
var_s3 = 0;
if (!(arg0->object_properties_bitfield & 0x10)) {
return 0;
}
sp7C = arg0->ledge_info_pointer;
sp74 = sp7C->unk0;
sp70 = sp7C->unk4;
sp6C = sp7C->unk8;
sp68 = sp7C->unkC;
D_807FB600 = 0;
i = 0;
while (i < D_807FBB34) {
temp_s7 = D_807FB930[i].unk0;
temp_s2 = temp_s7->ledge_info_pointer;
if (!(temp_s7->object_properties_bitfield & 0x2000) && (sp7C != temp_s2) && (temp_s7->noclip_byte != 1) && (temp_s7->object_properties_bitfield & 0x10) && (func_80674ADC(sp74, sp70, sp6C, sp68, temp_s2->unk0, temp_s2->unk4, temp_s2->unk8, temp_s2->unkC) != 0)) {
var_s0 = sp7C->unk8C;
D_807FB5FF = 0;
if (temp_s7->unk64 & 0x20) {
D_807FB5FD = 0;
} else {
D_807FB5FD = 1;
}
while ((var_s0 != NULL) && (D_807FB5FF == 0)) {
if ((var_s0->unk26 != 0) && !(var_s0->unk27 & 2)) {
var_s3 |= func_80673708(var_s0->unk10, var_s0->unk14, var_s0->unk18, var_s0->unk1C, temp_s2->unkA4, temp_s2->unkA8, arg1, arg2);
}
var_s0 = var_s0->next;
}
if (temp_s7->unk64 & 0x20) {
arg0->unkFC |= var_s3;
}
if (D_807FB5FF != 0) {
sp5A |= func_80677148(arg0, temp_s7);
}
}
i++;
}
return sp5A;
}
*/
// Actor* arg0
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_7BBD0/func_80677148.s")
// guMtxL2F, memcpy, object_timer, struct->unk88
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_7BBD0/func_8067760C.s")
// Bleh matrix nonsense
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_7BBD0/func_806776A0.s")
typedef struct {

View File

@ -30,7 +30,6 @@ void func_80732354(s32, s32, s32, s32);
void func_80605314(Actor*, u8);
void func_8062D26C(Actor*);
void func_806783BC();
void func_8061130C(void *);
void func_806136B4();
void func_8066E21C(LedgeInfo*);
// void func_80679200(s32, Actor *, s32, s32, s32, s32);
@ -574,6 +573,7 @@ ActorCollision *func_80679490(Actor * arg0, s32 arg1, u8 arg2, s32 arg3, s32 arg
return temp_v0;
}
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_7CA80/func_806794EC.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_7CA80/func_80679DC4.s")

View File

@ -2,7 +2,6 @@
#include "functions.h"
#include "variables.h"
f32 func_80612794(s32);
void func_8065D254(Actor*, s32, s32, s32, s32, s32, s32, s32, s32, s32, f32);
void func_80665564(Actor*, f32);
void func_8067AAB8(Actor* arg0, s32 arg1, s16 arg2, f32 arg3, s16 arg4);

View File

@ -114,6 +114,7 @@ void func_8068B9B4(void) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_8F4B0/func_8068BA2C.s")
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_8F4B0/func_8068BBF8.s")
typedef struct {

View File

@ -24,7 +24,6 @@ s32 func_806A80C0(s8 arg0) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_ACDC0/func_806A9124.s")
void func_8061130C(s32);
void func_8061134C(s32);
extern s32 *D_807FC7E8;
@ -34,7 +33,7 @@ typedef struct TempStruct807FC7F0 {
} TempStruct807FC7F0;
typedef struct TempStruct807FC7F8 {
s8 unk0;
s8 unk0;
s8 unk1;
s8 unk2;
s8 unk3;
@ -49,8 +48,7 @@ extern TempStruct807FC7F8 D_807FC7F8;
// TODO: Regalloc, something iffy with global_properties_bitfield set
void func_806A9124(void) {
s32 temp_t8;
s32 var_s0;
s32 var_s0_2;
s32 i;
temp_t8 = global_properties_bitfield | 0x40;
global_properties_bitfield = temp_t8;
@ -62,12 +60,12 @@ void func_806A9124(void) {
D_807FC7F0.unk4 = 0;
D_807FC7F8.unk0 = 0;
D_807FC7F8.unk1 = 0;
for (var_s0 = 0; var_s0 < 27; var_s0++) {
func_8061134C(D_807FC7E0[var_s0]);
for (i = 0; i < 27; i++) {
func_8061134C(D_807FC7E0[i]);
}
func_8061134C(D_807FC7E0);
for (var_s0 = 0; var_s0 < 9; var_s0++) {
func_8061134C(D_807FC7E8[var_s0]);
for (i = 0; i < 9; i++) {
func_8061134C(D_807FC7E8[i]);
}
func_8061134C(D_807FC7E8);
}

View File

@ -14,13 +14,12 @@ s32 func_8072D714(s32, s32);
s32 func_8072DE44(s32);
s32 func_8072DEA8(s32, s32, s32);
extern f64 D_8075AE10;
extern f32 D_8075AE18;
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_B1F60/func_806AD260.s")
extern f64 D_8075AE10;
void func_806AD54C(void) {
f32 dx, dz;
Actor *klaptrap;

View File

@ -5,7 +5,6 @@
// Doable, big, interesting
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_C1E70/func_806BD170.s")
f32 func_80612794(s16);
void func_80677FA8(s32, s32);
extern s8 D_80750660;
extern s8 D_807506A4;

View File

@ -13,7 +13,6 @@ extern f32 D_8075C39C;
void func_80604CBC(Actor*, s32, s32, s32, s32, s32, f32, s32);
void func_8072A920(s32, s16, f32, f32, f32, s32, f32, f32, u16);
f32 func_80612794(s16);
void func_8072B324(Actor*, s32);
/*

View File

@ -6,7 +6,6 @@ extern u8 D_80750AB4;
extern u8 D_80750AB8;
extern u8 D_80750AC0;
f32 func_80612794(s16);
void func_80689114(s16, f32, f32, f32, s32, f32, Actor *);
void func_806C9C80(s32, s32, s32);
void func_80614D00(Actor*, f32, f32);

View File

@ -709,7 +709,6 @@ s16 func_806CC284(s16 arg0, s16 arg1, f32 arg2) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806CC364.s")
f32 func_80612794(s16);
extern s16 D_80753A3C[];
extern s16 D_80753A4C[];
@ -754,7 +753,6 @@ extern s16 D_80753A2C[];
void func_80665160(Actor *, s16, s16);
void func_806653C0(Actor *, f32, f32);
void func_80665564(Actor*, f32);
f32 func_80612794(s16);
/*
// TODO: WIP, might need some more temp variables or split apart float operations into separate lines
@ -890,6 +888,7 @@ void func_806CCB94(void) {
// jumptable :(
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806CCC10.s")
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806CCC54.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806CD424.s")
@ -1482,6 +1481,7 @@ void func_806D0A54(Actor *arg0, s32 arg1, s32 arg2) {
}
}
// TODO: Doable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806D0A84.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806D0DE4.s")
@ -5245,20 +5245,12 @@ void func_806E1F8C(void) {
}
}
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806E208C.s")
/*
// TODO: Struct size 0x306?
// TODO: Is this the correct start offset for the struct? Might be earlier in memory
extern void D_807FCA6A[];
void func_806E208C(void) {
if ((D_807FD610[cc_player_index].unk2C & A_BUTTON) && D_807FCA6A[cc_player_index]->unk0 >= 2 && current_map != MAP_AZTEC_BEETLE_RACE) {
if ((D_807FD610[cc_player_index].unk2C & A_BUTTON) && D_807FC950[cc_player_index].character_progress[3].moves >= 2 && current_map != MAP_AZTEC_BEETLE_RACE) {
func_806EB0C0(9, NULL, cc_player_index);
extra_player_info_pointer->unk58 = D_80767CC0 - 0x1E;
}
}
*/
void func_806E2140(void) {
if ((D_807FD610[cc_player_index].unk2C & A_BUTTON)) {
@ -5517,8 +5509,6 @@ void func_806E382C(void) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806E384C.s")
// TODO: This signature probably is not correct
//f32 func_80612794(f32, f32, s16, s16, s16 *);
extern f32 D_8075D214;
/*

View File

@ -7,7 +7,6 @@ void func_80687474(Actor*, f32);
void func_80614D48(Actor*, f32, f32);
void func_806CA2AC();
extern void func_80614D00(Actor*, f32, f32);
void func_80614E78(Actor*, s32);
extern s32 D_807FD6F0[];
void func_806CD424(s16, f32, f32);
extern void (*action_initiation_function_list[])(void);

View File

@ -60,6 +60,7 @@ void func_806F0C18(Actor *arg0) {
}
*/
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F0D68.s")
void func_806F1048(Actor *arg0) {
@ -84,6 +85,7 @@ void func_806F1048(Actor *arg0) {
func_806C8D20(current_actor_pointer);
}
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F10E8.s")
extern s32 D_807FBB68;
@ -359,6 +361,7 @@ void func_806F3DC8(u16 *arg0, s16 *arg1, u8 *arg2, u16 arg3) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F3E0C.s")
// Autowalk file arg0
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F4528.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F56F0/func_806F46B0.s")

View File

@ -77,4 +77,16 @@ void func_8060AC34(GlobalASMStruct12* arg0) {
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F600/func_8060AC7C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F600/func_8060B110.s")
typedef struct {
u16 unk0;
s8 unk2;
s8 unk3;
} Struct807ECD58;
extern Struct807ECD58 D_807ECD58;
void func_8060B110(Struct807ECD58 *arg0) {
D_807ECD58.unk0 = arg0->unk0;
D_807ECD58.unk2 = arg0->unk2;
D_807ECD58.unk3 = arg0->unk3;
}

View File

@ -5,8 +5,6 @@
// jumptable, can't auto decompile
#pragma GLOBAL_ASM("asm/nonmatchings/minecart/code_25F0/func_800265F0.s")
f32 func_80612794(s16);
typedef struct MinecartStruct0 {
s32 unk0;
s32 unk4;

View File

@ -180,7 +180,6 @@ void func_80026050(RaceStruct6 *arg0, RaceStruct6 *arg1, s32 arg2) {
/*
f32 func_8000AC60(f32, f32);
f32 func_80612794(s16);
f32 func_80665E48(f32, f32, f32, f32);
extern f64 D_8002FDD8;
extern f64 D_8002FDE0;
@ -553,8 +552,6 @@ void func_8002D754(Actor *arg0) {
#pragma GLOBAL_ASM("asm/nonmatchings/race/code_0/func_8002D778.s")
f32 func_80612794(s16, void *, Actor **);
void func_8002DA68(RaceStruct3 *arg0) {
f32 temp_f2;
s16 temp_v1;
@ -573,7 +570,7 @@ void func_8002DA68(RaceStruct3 *arg0) {
}
arg0->unk2 &= 0xFFF;
temp_f2 = (((func_80612794(arg0->unk2, arg0, &current_actor_pointer) + 1.0f) * 1.5) + 1.0) * arg0->unk4;
temp_f2 = (((func_80612794(arg0->unk2) + 1.0f) * 1.5) + 1.0) * arg0->unk4;
current_actor_pointer->animation_state->scale_x = \
current_actor_pointer->animation_state->scale_y = \
current_actor_pointer->animation_state->scale_z = temp_f2;