mirror of
https://gitlab.com/dk64_decomp/dk64.git
synced 2024-11-23 07:01:58 +00:00
29.6399%
This commit is contained in:
parent
51a04cff45
commit
110cde60b0
@ -112,7 +112,6 @@ int gameIsInMainMenuMode(void);
|
||||
int gameIsInAdventureMode(void);
|
||||
int gameIsInDKTheatreMode(void);
|
||||
int gameIsInQuitGameMode(void);
|
||||
void *func_80714CC0(void*, f32, f32, f32, f32);
|
||||
|
||||
// countSetFlags(startIndex, length, flagType);
|
||||
s32 func_80731AA8(s32 startIndex, s32 length, u8 flagType);
|
||||
@ -335,8 +334,11 @@ void func_80714A28(u16 arg0);
|
||||
void func_80714A38(u8 arg0);
|
||||
void func_80714A58(u16 arg0);
|
||||
void func_80714A68(s16 arg0, s16 arg1, s16 arg2, s16 arg3);
|
||||
void *func_80714B84(void *arg0, f32 arg1, s32 arg2, s32 arg3, u8 arg4);
|
||||
void *func_80714C08(void *arg0, f32 arg1, Actor *arg2, s32 arg3, u8 arg4);
|
||||
|
||||
Struct80717D84 *func_80714B84(void *arg0, f32 arg1, s32 arg2, s32 arg3, u8 arg4);
|
||||
Struct80717D84 *func_80714C08(void *arg0, f32 arg1, Actor *arg2, s32 arg3, u8 arg4);
|
||||
Struct80717D84 *func_80714CC0(void* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4);
|
||||
|
||||
void func_80715E38(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5);
|
||||
void func_807180F4(s32 arg0, s32 arg1);
|
||||
void func_80718124(f32 arg0, f32 arg1, f32 arg2, f32 arg3);
|
||||
@ -2056,6 +2058,6 @@ void alEvtqFlushType(ALEventQueue *evtq, s16 type);
|
||||
void alSeqpStop(ALSeqPlayer *seqp);
|
||||
|
||||
// TODO: Where is the best place to put this so it's available everywhere and doesn't conflict with internal libultra/gu stuff?
|
||||
#define ABS(d) ((d) > 0) ? (d) : -(d)
|
||||
#define ABS(d) (((d) > 0) ? (d) : -(d))
|
||||
|
||||
#endif
|
||||
|
@ -2354,16 +2354,31 @@ typedef struct {
|
||||
s16 unk16;
|
||||
} Struct80717D84_unk330;
|
||||
|
||||
typedef struct Struct80717D84 Struct80717D84;
|
||||
|
||||
typedef struct {
|
||||
u8 unk0[0x128 - 0x0];
|
||||
void *unk0;
|
||||
void *unk4;
|
||||
} Struct80717D84_unk0;
|
||||
|
||||
struct Struct80717D84 {
|
||||
Struct80717D84_unk0 unk0[4]; // TODO: How many?
|
||||
u8 unk20;
|
||||
u8 unk21[0x128 - 0x21];
|
||||
float unk128[2][4][4]; // TODO: How many?
|
||||
u8 unk1A8[0x32C - 0x1A8];
|
||||
u8 unk1A8[0x328 - 0x1A8];
|
||||
void *unk328;
|
||||
u8 unk32C;
|
||||
u8 unk32D[0x330 - 0x32D];
|
||||
Struct80717D84_unk330 *unk330;
|
||||
s32 unk334;
|
||||
s8 unk334;
|
||||
s8 unk335;
|
||||
s8 unk336;
|
||||
s8 unk337;
|
||||
Actor *unk338;
|
||||
s32 unk33C;
|
||||
s16 unk33C;
|
||||
s8 unk33E;
|
||||
s8 unk33F;
|
||||
f32 unk340; // X
|
||||
f32 unk344; // Y
|
||||
f32 unk348; // Z
|
||||
@ -2382,9 +2397,15 @@ typedef struct {
|
||||
};
|
||||
f32 unk360; // X
|
||||
f32 unk364; // Y
|
||||
u8 unk368[0x36D - 0x368];
|
||||
s16 unk368;
|
||||
u8 unk36A;
|
||||
u8 unk36B;
|
||||
u8 unk36C;
|
||||
u8 unk36D;
|
||||
u8 unk36E[0x384 - 0x36E];
|
||||
u8 unk36E;
|
||||
u8 unk36F;
|
||||
u8 unk370[0x380 - 0x370];
|
||||
s32 unk380;
|
||||
union {
|
||||
Struct80717D84_unk384 *unk384;
|
||||
Struct80717D84_unk384_f32 *unk384_f32;
|
||||
@ -2392,16 +2413,36 @@ typedef struct {
|
||||
Struct80717D84_unk384_80717100 *unk384_80717100;
|
||||
Struct80717D84_unk384_80717814 *unk384_80717814;
|
||||
};
|
||||
s32 unk388;
|
||||
s16 unk388;
|
||||
s8 unk38A;
|
||||
s8 unk38B;
|
||||
u16 unk38C;
|
||||
} Struct80717D84;
|
||||
u16 unk38E;
|
||||
u16 unk390;
|
||||
u16 unk392;
|
||||
u16 unk394;
|
||||
Struct80717D84 *unk398; // Prev?
|
||||
Struct80717D84 *unk39C; // Next?
|
||||
};
|
||||
|
||||
typedef struct Struct807FDB00 Struct807FDB00;
|
||||
typedef struct Struct807FDB00 Struct807FDB00;
|
||||
|
||||
struct Struct807FDB00 {
|
||||
s32 unk0;
|
||||
void *unk0;
|
||||
s32 unk4;
|
||||
u8 unk8[0x24 - 0x8];
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
u8 unkE;
|
||||
u8 unkF;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
u8 unk12;
|
||||
u8 unk13;
|
||||
u8 unk14[0x24 - 0x14];
|
||||
Struct807FDB00 *next;
|
||||
};
|
||||
|
||||
|
@ -1259,7 +1259,7 @@ us,.code,func_8070E34C,508,no
|
||||
us,.code,func_806E3E40,884,no
|
||||
us,.code,func_8064BE80,216,no
|
||||
us,.code,func_8062DAF4,124,yes
|
||||
us,.code,func_80714D08,916,no
|
||||
us,.code,func_80714D08,916,yes
|
||||
us,.code,func_8073BA60,176,no
|
||||
us,.code,func_8062B478,440,yes
|
||||
us,.code,func_80652E58,100,yes
|
||||
|
|
@ -90,7 +90,7 @@ us,.code,func_800324CC,124,yes
|
||||
us,.code,func_80032024,684,no
|
||||
us,.code,func_80029BB4,380,no
|
||||
us,.code,func_8002ACD4,124,no
|
||||
us,.code,func_8002C0C8,1212,no
|
||||
us,.code,func_8002C0C8,1212,yes
|
||||
us,.code,func_80027808,384,no
|
||||
us,.code,func_8002D7EC,192,yes
|
||||
us,.code,func_80024788,1140,no
|
||||
|
|
@ -1259,7 +1259,7 @@ us,.code,func_8070E34C,508,no
|
||||
us,.code,func_806E3E40,884,no
|
||||
us,.code,func_8064BE80,216,no
|
||||
us,.code,func_8062DAF4,124,yes
|
||||
us,.code,func_80714D08,916,no
|
||||
us,.code,func_80714D08,916,yes
|
||||
us,.code,func_8073BA60,176,no
|
||||
us,.code,func_8062B478,440,yes
|
||||
us,.code,func_80652E58,100,yes
|
||||
@ -3376,7 +3376,7 @@ us,.code,func_800324CC,124,yes
|
||||
us,.code,func_80032024,684,no
|
||||
us,.code,func_80029BB4,380,no
|
||||
us,.code,func_8002ACD4,124,no
|
||||
us,.code,func_8002C0C8,1212,no
|
||||
us,.code,func_8002C0C8,1212,yes
|
||||
us,.code,func_80027808,384,no
|
||||
us,.code,func_8002D7EC,192,yes
|
||||
us,.code,func_80024788,1140,no
|
||||
|
|
@ -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">29.6999%</text>
|
||||
<text x="110.5" y="14">29.6999%</text>
|
||||
<text x="111.5" y="15" fill="#010101" fill-opacity=".3">29.7743%</text>
|
||||
<text x="110.5" y="14">29.7743%</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@ -9,7 +9,7 @@
|
||||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||
<path fill="#c04200" d="M41 0h67v20H41z"/>
|
||||
<path fill="#c04900" d="M41 0h67v20H41z"/>
|
||||
<path fill="url(#b)" d="M0 0h108v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
@ -17,7 +17,7 @@
|
||||
<text x="20.5" y="14">menu</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="75.5" y="15" fill="#010101" fill-opacity=".3">17.1455%</text>
|
||||
<text x="74.5" y="14">17.1455%</text>
|
||||
<text x="75.5" y="15" fill="#010101" fill-opacity=".3">19.1238%</text>
|
||||
<text x="74.5" y="14">19.1238%</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@ -9,7 +9,7 @@
|
||||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h132v20H0z"/>
|
||||
<path fill="#c07100" d="M132 0h67v20H132z"/>
|
||||
<path fill="#c07200" d="M132 0h67v20H132z"/>
|
||||
<path fill="url(#b)" d="M0 0h199v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
@ -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">29.5108%</text>
|
||||
<text x="165.5" y="14">29.5108%</text>
|
||||
<text x="166.5" y="15" fill="#010101" fill-opacity=".3">29.6399%</text>
|
||||
<text x="165.5" y="14">29.6399%</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@ -88,5 +88,138 @@ void func_80030E58() {
|
||||
// Jumptable, 4200 bytes of code
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/boss/code_C920/func_80031AA0.s")
|
||||
|
||||
// Quite an interesting Actor + float function, quite big but doable, but might need some struct and array definitions
|
||||
// rodata, close, doable, stack
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/boss/code_C920/func_80032B08.s")
|
||||
|
||||
s32 func_80614644(Actor *, AnimationStateUnk0 *, f32); // extern
|
||||
extern s8 D_80035B28;
|
||||
extern s16 D_80035B2C;
|
||||
extern f32 D_80035B3C;
|
||||
extern s16 D_80035B74;
|
||||
extern f32 D_80036DC4;
|
||||
|
||||
extern s16 D_80035B00[];
|
||||
extern s16 D_80035B08[];
|
||||
extern s16 D_80035B10[];
|
||||
extern s16 D_80035B18[];
|
||||
extern s16 D_80035B20[];
|
||||
|
||||
typedef struct {
|
||||
Actor *unk0;
|
||||
s8 unk4;
|
||||
s8 unk5;
|
||||
} AAD_80032B08;
|
||||
|
||||
typedef struct {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
s8 unk8[0x12 - 0x8];
|
||||
s8 unk12;
|
||||
s8 unk13; // Unused
|
||||
s8 unk14;
|
||||
s8 unk15; // Unused
|
||||
s8 unk16; // Unused
|
||||
s8 unk17;
|
||||
} AAD_80032B08_2;
|
||||
|
||||
/*
|
||||
void func_80032B08(void) {
|
||||
AnimationStateUnk0 *temp_s0;
|
||||
s32 var_v0;
|
||||
AAD_80032B08 *aaD;
|
||||
AAD_80032B08_2 *aaD2; // sp30
|
||||
|
||||
aaD = current_actor_pointer->additional_actor_data;
|
||||
aaD2 = aaD->unk0->additional_data_pointer;
|
||||
temp_s0 = current_actor_pointer->animation_state->unk0;
|
||||
if (aaD->unk5 == 0) {
|
||||
D_80036DC4 = ((player_pointer->x_position - current_actor_pointer->x_position) * (player_pointer->x_position - current_actor_pointer->x_position)) + ((player_pointer->z_position - current_actor_pointer->z_position) * (player_pointer->z_position - current_actor_pointer->z_position));
|
||||
}
|
||||
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
|
||||
func_80613C48(current_actor_pointer, aaD->unk4 + 0x668, 0.0f, 0.0f);
|
||||
current_actor_pointer->draw_distance = 0xFA0;
|
||||
}
|
||||
if (D_80035B28 & (1 << aaD->unk4)) {
|
||||
current_actor_pointer->z_rotation = (s32)(aaD2->unk4 * 1024.0) - 0x400;
|
||||
current_actor_pointer->x_rotation = D_80035B2C;
|
||||
if (temp_s0 != NULL) {
|
||||
if (D_80035B3C != temp_s0->unk4) {
|
||||
func_80614644(current_actor_pointer, temp_s0, D_80035B3C);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
current_actor_pointer->z_rotation = 0;
|
||||
if (temp_s0 != NULL) {
|
||||
if (temp_s0->unk10 != aaD->unk4 + 0x66B) {
|
||||
func_80613C48(current_actor_pointer, aaD->unk4 + 0x66B, 0.0f, 0.0f);
|
||||
playSound(0x38D, 0x7D00, 63.0f, 1.0f, 0, 0);
|
||||
} else {
|
||||
func_80614644(current_actor_pointer, temp_s0, temp_s0->unk4 + 0.75f);
|
||||
}
|
||||
if (aaD->unk4 == 1) {
|
||||
if (temp_s0->unk4 > 24.0f) {
|
||||
temp_s0->unk4 = 24.0f;
|
||||
}
|
||||
if (temp_s0->unk4 > 15.0f) {
|
||||
current_actor_pointer->y_position -= 10.0f;
|
||||
}
|
||||
} else {
|
||||
if (temp_s0->unk4 > 37.0f) {
|
||||
temp_s0->unk4 = 37.0f;
|
||||
}
|
||||
if (temp_s0->unk4 > 26.0f) {
|
||||
current_actor_pointer->y_position -= 10.0f;
|
||||
}
|
||||
}
|
||||
if (current_actor_pointer->y_position < 0.0) {
|
||||
playSound(0x384, 0x7D00, 63.0f, 1.0f, 0, 0);
|
||||
func_806782C0(current_actor_pointer);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (aaD->unk5 == 0) {
|
||||
current_actor_pointer->noclip_byte = 0xC;
|
||||
if (aaD->unk4 == 0) {
|
||||
if (aaD2->unk17 == 1) {
|
||||
if (aaD->unk0->control_state == 0) {
|
||||
D_80035B74 = 0x28;
|
||||
}
|
||||
D_80035B74--;
|
||||
if (D_80035B74 < 0) {
|
||||
D_80035B74 = 0xA;
|
||||
func_806907F0(
|
||||
current_actor_pointer->x_position + D_80035B18[aaD2->unk14],
|
||||
current_actor_pointer->y_position + 270.0f,
|
||||
current_actor_pointer->z_position + D_80035B20[aaD2->unk14]
|
||||
);
|
||||
func_80690A28(0x2C, 1, 0.25f, player_pointer->x_position, player_pointer->y_position, player_pointer->z_position, 2400.0f, current_actor_pointer);
|
||||
}
|
||||
} else {
|
||||
D_80035B74 = 0;
|
||||
}
|
||||
}
|
||||
current_actor_pointer->x_position = D_80035B00[aaD2->unk14] + aaD->unk0->x_position;
|
||||
current_actor_pointer->z_position = D_80035B08[aaD2->unk14] + aaD->unk0->z_position;
|
||||
current_actor_pointer->y_rotation = D_80035B10[aaD2->unk14];
|
||||
} else {
|
||||
current_actor_pointer->noclip_byte = 1;
|
||||
var_v0 = aaD2->unk14 + 2;
|
||||
if (var_v0 >= 4) {
|
||||
var_v0 -= 4;
|
||||
}
|
||||
current_actor_pointer->x_position = D_80035B00[var_v0] + aaD->unk0->x_position;
|
||||
current_actor_pointer->z_position = D_80035B08[var_v0] + aaD->unk0->z_position;
|
||||
current_actor_pointer->y_rotation = D_80035B10[var_v0];
|
||||
current_actor_pointer->object_properties_bitfield |= 0x800000;
|
||||
current_actor_pointer->unk16A = 0x23;
|
||||
current_actor_pointer->unk16B = 0x23;
|
||||
current_actor_pointer->unk16C = 0x46;
|
||||
if (aaD2->unk12 != 1) {
|
||||
current_actor_pointer->object_properties_bitfield &= ~4;
|
||||
} else {
|
||||
current_actor_pointer->object_properties_bitfield |= 4;
|
||||
}
|
||||
}
|
||||
func_806319C4(current_actor_pointer, 0);
|
||||
}
|
||||
*/
|
||||
|
@ -79,7 +79,7 @@ extern f32 D_8075EA50;
|
||||
|
||||
extern Struct807FDB00 *D_807FDB00;
|
||||
extern Struct807FDB04 *D_807FDB04;
|
||||
extern s32 D_807FDB08;
|
||||
extern Struct80717D84 *D_807FDB08;
|
||||
extern u8 D_807FDB0C;
|
||||
extern u8 D_807FDB0D;
|
||||
extern u8 D_807FDB0E;
|
||||
@ -87,7 +87,7 @@ extern u8 D_807FDB0F;
|
||||
extern s32 D_807FDB10;
|
||||
extern void *D_807FDB14; // TODO: Function pointer
|
||||
extern u8 D_807FDB18;
|
||||
extern u16 D_807FDB1A;
|
||||
extern s16 D_807FDB1A;
|
||||
extern u8 D_807FDB1C;
|
||||
extern u8 D_807FDB1D;
|
||||
extern f32 D_807FDB20;
|
||||
@ -98,14 +98,14 @@ extern s32 D_807FDB30;
|
||||
extern u16 D_807FDB34;
|
||||
extern u16 D_807FDB36;
|
||||
extern s16 D_807FDB38;
|
||||
extern u16 D_807FDB3A;
|
||||
extern s16 D_807FDB3A;
|
||||
extern s16 D_807FDB3C;
|
||||
extern s16 D_807FDB3E;
|
||||
extern s16 D_807FDB40;
|
||||
extern s16 D_807FDB42;
|
||||
|
||||
u32 func_806119A0();
|
||||
void *func_80714D08(void*, f32, f32, f32, f32, s32, s32, s32, s32);
|
||||
Struct80717D84 *func_80714D08(void*, f32, f32, f32, f32, s32, s32, s32, u8);
|
||||
void func_80714A9C(void);
|
||||
void func_80718380(Struct80717D84 *arg0, s8 *arg1);
|
||||
int func_80717404(); // TODO: Signature
|
||||
@ -251,7 +251,7 @@ void func_80714A9C(void) {
|
||||
D_807FDB3A = 0x258;
|
||||
}
|
||||
|
||||
void *func_80714B84(void *arg0, f32 arg1, s32 arg2, s32 arg3, u8 arg4) {
|
||||
Struct80717D84 *func_80714B84(void *arg0, f32 arg1, s32 arg2, s32 arg3, u8 arg4) {
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
@ -260,7 +260,7 @@ void *func_80714B84(void *arg0, f32 arg1, s32 arg2, s32 arg3, u8 arg4) {
|
||||
return func_80714D08(arg0, arg1, sp3C, sp38, sp34, 0, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
void *func_80714C08(void *arg0, f32 arg1, Actor *arg2, s32 arg3, u8 arg4) {
|
||||
Struct80717D84 *func_80714C08(void *arg0, f32 arg1, Actor *arg2, s32 arg3, u8 arg4) {
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
@ -272,12 +272,124 @@ void *func_80714C08(void *arg0, f32 arg1, Actor *arg2, s32 arg3, u8 arg4) {
|
||||
return func_80714D08(arg0, arg1, sp3C, sp38, sp34, arg2, 0, arg3, arg4);
|
||||
}
|
||||
|
||||
void *func_80714CC0(void* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
Struct80717D84 *func_80714CC0(void* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
return func_80714D08(arg0, arg1, arg2, arg3, arg4, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// Doable, init for the 0x374 struct thing
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_80714D08.s")
|
||||
extern u8 D_80750AB4;
|
||||
extern Struct807FDB00 *D_807FDB00;
|
||||
extern u8 D_807FDB0C;
|
||||
extern u8 D_807FDB0D;
|
||||
extern u8 D_807FDB0E;
|
||||
extern u8 D_807FDB0F;
|
||||
extern u8 D_807FDB18;
|
||||
extern u8 D_807FDB1D;
|
||||
extern f32 D_807FDB20;
|
||||
extern f32 D_807FDB24;
|
||||
extern u8 D_807FDB28;
|
||||
extern u16 D_807FDB36;
|
||||
extern s16 D_807FDB3C;
|
||||
|
||||
void func_80714778(f32);
|
||||
|
||||
Struct80717D84 *func_80714D08(void *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5, s32 arg6, s32 arg7, u8 arg8) {
|
||||
Struct80717D84 *sp2C;
|
||||
s32 i;
|
||||
s32 var_v0;
|
||||
Struct807FDB00 *var_s0;
|
||||
Struct80717D84 *var_s0_2;
|
||||
|
||||
func_80714778(arg1);
|
||||
var_s0 = D_807FDB00;
|
||||
var_v0 = 0;
|
||||
while (!var_v0 && var_s0 != NULL) {
|
||||
if (arg0 == var_s0->unk0) {
|
||||
var_v0 = 1;
|
||||
} else {
|
||||
var_s0 = var_s0->next;
|
||||
}
|
||||
}
|
||||
if (var_v0 == 0) {
|
||||
func_80714A9C();
|
||||
return NULL;
|
||||
}
|
||||
sp2C = malloc(sizeof(Struct80717D84));
|
||||
if (D_807FDB04 != NULL) {
|
||||
D_807FDB08->unk39C = sp2C;
|
||||
sp2C->unk398 = D_807FDB08;
|
||||
} else {
|
||||
D_807FDB04 = sp2C;
|
||||
sp2C->unk398 = NULL;
|
||||
}
|
||||
D_807FDB08 = sp2C;
|
||||
if (D_807FDB1D != 0) {
|
||||
arg2 *= 4.0f;
|
||||
arg3 *= 4.0f;
|
||||
arg4 *= 4.0f;
|
||||
arg1 *= 4.0f;
|
||||
D_807FDB20 *= 4.0f;
|
||||
D_807FDB24 *= 4.0f;
|
||||
}
|
||||
sp2C->unk340 = arg2;
|
||||
sp2C->unk344 = arg3;
|
||||
sp2C->unk348 = arg4;
|
||||
if (D_807FDB28 != 0) {
|
||||
sp2C->unk360 = D_807FDB20;
|
||||
sp2C->unk364 = D_807FDB24;
|
||||
} else {
|
||||
sp2C->unk360 = arg1;
|
||||
sp2C->unk364 = arg1;
|
||||
}
|
||||
if (D_807FDB0F != 0) {
|
||||
sp2C->unk36A = D_807FDB0C;
|
||||
sp2C->unk36B = D_807FDB0D;
|
||||
sp2C->unk36C = D_807FDB0E;
|
||||
sp2C->unk36D = D_807FDB0F;
|
||||
} else {
|
||||
sp2C->unk36A = var_s0->unk10;
|
||||
sp2C->unk36B = var_s0->unk11;
|
||||
sp2C->unk36C = var_s0->unk12;
|
||||
sp2C->unk36D = var_s0->unk13;
|
||||
}
|
||||
sp2C->unk36E = D_807FDB18;
|
||||
sp2C->unk36F = D_807FDB1D;
|
||||
sp2C->unk368 = D_807FDB1A;
|
||||
sp2C->unk380 = var_s0->unk8 * var_s0->unk9;
|
||||
sp2C->unk334 = arg8;
|
||||
sp2C->unk338 = arg5;
|
||||
sp2C->unk33C = arg6;
|
||||
sp2C->unk33E = arg7;
|
||||
sp2C->unk34E = D_807FDB30;
|
||||
sp2C->unk350 = D_807FDB1C;
|
||||
sp2C->unk351 = 0;
|
||||
sp2C->unk354 = D_807FDB10;
|
||||
sp2C->unk358 = 0;
|
||||
sp2C->unk35C = D_807FDB2C;
|
||||
if (D_807FBB64 & 0x100) {
|
||||
sp2C->unk34C = 0x7D0;
|
||||
} else {
|
||||
sp2C->unk34C = D_807FDB3A;
|
||||
}
|
||||
sp2C->unk330 = var_s0;
|
||||
sp2C->unk39C = 0;
|
||||
sp2C->unk328 = D_807FDB14;
|
||||
sp2C->unk384 = 0;
|
||||
sp2C->unk388 = D_807FDB38;
|
||||
sp2C->unk38A = -1;
|
||||
sp2C->unk38C = D_807FDB36;
|
||||
sp2C->unk38E = D_807FDB3C;
|
||||
sp2C->unk390 = D_807FDB3E;
|
||||
sp2C->unk392 = D_807FDB40;
|
||||
sp2C->unk394 = D_807FDB42;
|
||||
for (i = 0; i < D_80750AB4; i++) {
|
||||
sp2C->unk0[i].unk0 = malloc(0x200);
|
||||
sp2C->unk0[i].unk4 = malloc(0x200);
|
||||
}
|
||||
sp2C->unk20 = D_80750AB4;
|
||||
func_8071509C(sp2C);
|
||||
func_80714A9C();
|
||||
return sp2C;
|
||||
}
|
||||
|
||||
// Doable, needs a struct array size 0x10 at Struct807FDB04->unk28
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_8071509C.s")
|
||||
|
@ -401,11 +401,6 @@ void func_8068588C(Actor *arg0, s16 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5
|
||||
func_806858E8(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
u8 unk0[0x338 - 0x0];
|
||||
Actor *unk338;
|
||||
} Struct806858E8;
|
||||
|
||||
void func_806858E8(Actor *arg0, s16 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s32 arg6) {
|
||||
if (arg0 != NULL) {
|
||||
if (arg1 != 0) {
|
||||
@ -414,7 +409,7 @@ void func_806858E8(Actor *arg0, s16 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5
|
||||
}
|
||||
func_8071498C(&func_80718080);
|
||||
func_80714950(arg6);
|
||||
((Struct806858E8*)func_80714CC0(&D_8071FFA0, arg2, arg3, arg4 + 5.0f, arg5))->unk338 = arg0;
|
||||
func_80714CC0(&D_8071FFA0, arg2, arg3, arg4 + 5.0f, arg5)->unk338 = arg0;
|
||||
}
|
||||
|
||||
extern s32 D_8071FFA0; // TODO: Datatype
|
||||
@ -468,9 +463,36 @@ void func_80685D84(Actor *arg0) {
|
||||
}
|
||||
}
|
||||
|
||||
// Returns struct from function call in a weird way... Doable once we figure out which struct is returned.
|
||||
// rodata
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_89250/func_80685E78.s")
|
||||
|
||||
extern s32 D_8071FED0; // TODO: Datatype
|
||||
extern f64 D_80759B08;
|
||||
extern f64 D_80759B10;
|
||||
|
||||
void func_807184F4(Struct80717D84 *arg0, s32 arg1);
|
||||
|
||||
/*
|
||||
void func_80685E78(Actor *arg0) {
|
||||
f32 sp28;
|
||||
ActorAnimationState *temp_v0;
|
||||
|
||||
temp_v0 = arg0->animation_state;
|
||||
if (temp_v0 != NULL) {
|
||||
sp28 = temp_v0->scale_y / D_80759B08;
|
||||
} else {
|
||||
sp28 = 1.0;
|
||||
}
|
||||
func_80714998(3);
|
||||
func_807149B8(1);
|
||||
func_807149FC(1);
|
||||
func_8071498C(&func_807184F4);
|
||||
func_80714A28(4);
|
||||
func_807149C8(0xC8, 0xFF, 0xFF, 0xC8);
|
||||
func_80714CC0(&D_8071FED0, sp28 * D_80759B10, arg0->x_position, arg0->unkAC, arg0->z_position)->unk338 = arg0;
|
||||
}
|
||||
*/
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_89250/func_80685F60.s")
|
||||
|
||||
extern s16 D_80753A08[];
|
||||
|
@ -5404,10 +5404,195 @@ void func_806DF670(s16 *arg0, s16 arg1, s16 arg2) {
|
||||
}
|
||||
}
|
||||
|
||||
// Surprisingly doable, quite large though
|
||||
// controlStateControl()
|
||||
// doable, stack regalloc
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806DF6D4.s")
|
||||
|
||||
/*
|
||||
u16 func_806DFF34(u16, s32 *);
|
||||
extern s32 D_80750FF0;
|
||||
extern f64 D_8075D0E0;
|
||||
extern f32 D_8075D0E8;
|
||||
|
||||
typedef struct {
|
||||
u16 unk0;
|
||||
s8 unk2;
|
||||
s8 unk3; // Used
|
||||
} Struct807ECDEC;
|
||||
|
||||
extern Struct807ECDEC *D_807ECDEC;
|
||||
|
||||
typedef struct {
|
||||
void (*unk0)(void); // Start Button Pressed Handler
|
||||
void (*unk4)(void); // Always Called (before input handlers)
|
||||
void (*unk8)(void); // A Button Pressed Handler
|
||||
void (*unkC)(void); // B Button Pressed Handler
|
||||
void (*unk10)(void); // Z Button Pressed Handler
|
||||
void (*unk14)(void); // A Button Released Handler
|
||||
void (*unk18)(void); // B Button Released Handler
|
||||
void (*unk1C)(void); // Z Button Released Handler
|
||||
void (*unk20)(void); // L Button Pressed Handler
|
||||
void (*unk24)(void); // R Button Pressed Handler
|
||||
void (*unk28)(void);
|
||||
void (*unk2C)(void); // R Button Released Handler
|
||||
void (*unk30)(void); // C-Up Pressed Handler
|
||||
void (*unk34)(void); // C-Left Pressed Handler
|
||||
void (*unk38)(void); // C-Right Pressed Handler
|
||||
void (*unk3C)(void); // C-Down Pressed Handler
|
||||
void (*unk40)(void); // Always Called (after input handlers)
|
||||
} ControlStateInputHandler;
|
||||
extern ControlStateInputHandler D_80751004[]; // TODO: rodata?
|
||||
|
||||
extern u16 D_807ECDF0;
|
||||
|
||||
s32 func_806DF6D4(s32 controlState) {
|
||||
ControlStateInputHandler *inputHandler;
|
||||
f32 temp_f18;
|
||||
f32 var_f14; // sp44
|
||||
f32 var_f2; // sp40
|
||||
f32 temp_f8;
|
||||
f32 var_f16; // sp38
|
||||
s16 var_t0;
|
||||
s32 var_a0;
|
||||
s32 oldControlState; // sp2C
|
||||
f32 temp_f12;
|
||||
|
||||
oldControlState = D_807FBB48->control_state;
|
||||
|
||||
// Read button inputs
|
||||
D_807FD610[cc_player_index].unk2A = func_806DFF34(D_807ECDEC->unk0, &D_80750FF0);
|
||||
D_807FD610[cc_player_index].unk2C = func_806DFF34(D_807ECDF0, &D_80750FF0);
|
||||
|
||||
// Buttons disabled?
|
||||
if (extra_player_info_pointer->unk1F4 & 0x20) {
|
||||
D_807FD610[cc_player_index].unk2A = 0;
|
||||
D_807FD610[cc_player_index].unk2C = 0;
|
||||
}
|
||||
|
||||
// Read joystick inputs and clamp between -80 and 80
|
||||
D_807ECDEC->unk2 = MIN(MAX(D_807ECDEC->unk2, -80), 80);
|
||||
D_807ECDEC->unk3 = MIN(MAX(D_807ECDEC->unk3, -80), 80);
|
||||
D_807FD610[cc_player_index].unk2E = D_807ECDEC->unk2;
|
||||
D_807FD610[cc_player_index].unk2F = D_807ECDEC->unk3;
|
||||
|
||||
// Joystick disabled?
|
||||
if (extra_player_info_pointer->unk1F4 & 0x20) {
|
||||
D_807FD610[cc_player_index].unk2E = 0;
|
||||
D_807FD610[cc_player_index].unk2F = 0;
|
||||
}
|
||||
// Joystick movement halved?
|
||||
if (extra_player_info_pointer->unk1F0 & 0x100) {
|
||||
D_807FD610[cc_player_index].unk2E *= 0.5;
|
||||
D_807FD610[cc_player_index].unk2F *= 0.5;
|
||||
}
|
||||
// Joystick inverted?
|
||||
if (extra_player_info_pointer->unk1F0 & 0x80) {
|
||||
D_807FD610[cc_player_index].unk2E = -D_807FD610[cc_player_index].unk2E;
|
||||
D_807FD610[cc_player_index].unk2F = -D_807FD610[cc_player_index].unk2F;
|
||||
}
|
||||
|
||||
// Compute absolute joystick magnitude
|
||||
D_807FD610[cc_player_index].unk30 = ABS(D_807FD610[cc_player_index].unk2E);
|
||||
D_807FD610[cc_player_index].unk31 = ABS(D_807FD610[cc_player_index].unk2F);
|
||||
|
||||
// Joystick deadzone
|
||||
if (D_807FD610[cc_player_index].unk30 < 5 && D_807FD610[cc_player_index].unk31 < 5) {
|
||||
D_807FD610[cc_player_index].unk2E = 0;
|
||||
D_807FD610[cc_player_index].unk30 = 0;
|
||||
D_807FD610[cc_player_index].unk2F = 0;
|
||||
D_807FD610[cc_player_index].unk31 = 0;
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk30 < 2) {
|
||||
D_807FD610[cc_player_index].unk2E = 0;
|
||||
D_807FD610[cc_player_index].unk30 = 0;
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk31 < 2) {
|
||||
D_807FD610[cc_player_index].unk2F = 0;
|
||||
D_807FD610[cc_player_index].unk31 = 0;
|
||||
}
|
||||
var_f14 = D_807FD610[cc_player_index].unk30 * D_807FD610[cc_player_index].unk30;
|
||||
var_f2 = D_807FD610[cc_player_index].unk31 * D_807FD610[cc_player_index].unk31;
|
||||
var_f16 = sqrtf(var_f14 + var_f2);
|
||||
if (var_f2 < var_f14) {
|
||||
temp_f12 = var_f14;
|
||||
var_f14 = var_f2;
|
||||
var_f2 = temp_f12;
|
||||
}
|
||||
if (var_f2 != 0.0f) {
|
||||
var_f16 *= (f32)(1.0 - ((var_f14 / var_f2) * D_8075D0E0));
|
||||
}
|
||||
if (var_f16 > 70.0f) {
|
||||
var_f16 = 70.0f;
|
||||
}
|
||||
temp_f8 = D_807FD610[cc_player_index].unk4;
|
||||
D_807FD610[cc_player_index].unk4 = var_f16;
|
||||
D_807FD610[cc_player_index].unkC = var_f16 - temp_f8;
|
||||
if (var_f16 != 0.0f) {
|
||||
D_807FD610[cc_player_index].unk0 = 0;
|
||||
D_807FD610[cc_player_index].unk8 = (var_f16 - 5.0f) / 65.0f;
|
||||
} else {
|
||||
D_807FD610[cc_player_index].unk0++;
|
||||
D_807FD610[cc_player_index].unk8 = 0.0f;
|
||||
}
|
||||
if (var_f16 != 0.0f) {
|
||||
var_t0 = (func_80611BB4(D_807FD610[cc_player_index].unk2E, -D_807FD610[cc_player_index].unk2F) * 4096.0f) / D_8075D0E8;
|
||||
D_807FD610[cc_player_index].unk28 = (character_change_array[cc_player_index].unk2C8 + var_t0);
|
||||
D_807FD610[cc_player_index].unk28 &= 0xFFF;
|
||||
} else {
|
||||
var_t0 = D_807FD610[cc_player_index].unk20[0];
|
||||
}
|
||||
for (var_a0 = 3; var_a0 != 0; var_a0--) {
|
||||
D_807FD610[cc_player_index].unk20[var_a0] = D_807FD610[cc_player_index].unk20[var_a0 - 1];
|
||||
D_807FD610[cc_player_index].unk10[var_a0] = D_807FD610[cc_player_index].unk10[var_a0 - 1];
|
||||
}
|
||||
D_807FD610[cc_player_index].unk20[var_a0] = var_t0;
|
||||
D_807FD610[cc_player_index].unk10[var_a0] = var_f16;
|
||||
|
||||
// Handle inputs for this control state
|
||||
inputHandler = &D_80751004[controlState];
|
||||
inputHandler->unk4();
|
||||
if (D_807FD610[cc_player_index].unk2A & START_BUTTON) {
|
||||
inputHandler->unk0();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & A_BUTTON) {
|
||||
inputHandler->unk8();
|
||||
} else {
|
||||
inputHandler->unk14();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & B_BUTTON) {
|
||||
inputHandler->unkC();
|
||||
} else {
|
||||
inputHandler->unk18();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & Z_TRIG) {
|
||||
inputHandler->unk10();
|
||||
} else {
|
||||
inputHandler->unk1C();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & R_TRIG) {
|
||||
inputHandler->unk24();
|
||||
} else {
|
||||
inputHandler->unk2C();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & L_TRIG) {
|
||||
inputHandler->unk20();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & U_CBUTTONS) {
|
||||
inputHandler->unk30();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & D_CBUTTONS) {
|
||||
inputHandler->unk3C();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & L_CBUTTONS) {
|
||||
inputHandler->unk34();
|
||||
}
|
||||
if (D_807FD610[cc_player_index].unk2A & R_CBUTTONS) {
|
||||
inputHandler->unk38();
|
||||
}
|
||||
inputHandler->unk40();
|
||||
return D_807FBB48->control_state - oldControlState;
|
||||
}
|
||||
*/
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_806DFF34.s")
|
||||
|
||||
/*
|
||||
|
@ -52,7 +52,7 @@ extern s8 menu_selection_available;
|
||||
extern f32 menu_icon_transition_scale;
|
||||
extern f32 DK_barrel_scale;
|
||||
|
||||
void func_80030894(MenuAdditionalActorData*,s32,u16,u8,f32,u8,u8); // Param 1 is ActorAdditionalData
|
||||
void func_80030894(MenuAdditionalActorData*,s32,u16,u16,f32,u8,u8); // Param 1 is ActorAdditionalData
|
||||
|
||||
void func_80027E10(void) {
|
||||
s32 phi_a0 = 1;
|
||||
@ -575,11 +575,89 @@ s32 func_8002AD50(s32 arg0) {
|
||||
// Displaylist stuff
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/menu/code_3E10/func_8002B708.s")
|
||||
|
||||
// Huge, fiddly struct negative offset stuff
|
||||
// Reasonably doable though
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/menu/code_3E10/func_8002C0C8.s")
|
||||
extern s16 D_8003386C[];
|
||||
extern f32 D_80033CDC;
|
||||
extern f32 D_80033CE0;
|
||||
extern f32 D_80033CE4;
|
||||
extern s8 D_80033FAD;
|
||||
extern s8 D_80033FAE;
|
||||
extern s8 D_80033FAF;
|
||||
extern s32 D_80720D5C;
|
||||
extern s32 D_80720D80;
|
||||
extern s32 D_807211AC;
|
||||
extern s8 D_8074451C;
|
||||
extern s16 D_80744544;
|
||||
|
||||
typedef struct {
|
||||
u8 unk0[0x17 - 0x0];
|
||||
u8 unk17;
|
||||
} AAD_8002C0C8;
|
||||
|
||||
typedef struct {
|
||||
Actor *unk0;
|
||||
s32 unk4;
|
||||
s8 unk8;
|
||||
} AAD_MultiplayerMenuKong;
|
||||
|
||||
void func_8002F8EC();
|
||||
|
||||
void func_8002C0C8(Actor *arg0, s32 arg1) {
|
||||
s32 var_s1;
|
||||
s32 i;
|
||||
AAD_8002C0C8 *temp_s6;
|
||||
AAD_MultiplayerMenuKong *temp_v1;
|
||||
|
||||
temp_s6 = arg0->additional_actor_data;
|
||||
func_8002F8EC();
|
||||
D_80033FAF = 1;
|
||||
var_s1 = 0x1D;
|
||||
for (i = 1; i < 5; i++) {
|
||||
if (isFlagSet(var_s1, 1) != 0) {
|
||||
D_80033FAF |= 1 << i;
|
||||
}
|
||||
var_s1 += 1;
|
||||
}
|
||||
if (D_80744544 & 1) {
|
||||
D_80033FAF |= 0x20;
|
||||
}
|
||||
D_80033FAE = 0;
|
||||
D_80033FAD = 0;
|
||||
if (D_8076A104 != 0) {
|
||||
if (D_8074451C >= 5) {
|
||||
D_8074451C = 0;
|
||||
}
|
||||
}
|
||||
temp_s6->unk17 = D_8074451C;
|
||||
for (i = 0; i < 4; i++) {
|
||||
Actor17C *temp;
|
||||
func_80677FA8(ACTOR_MAIN_MENU_MULTIPLAYER_KONG, D_8003386C[D_8076A0E4[i] & 0x7F]);
|
||||
temp = D_807FBB44->unk17C;
|
||||
temp->unk0_s16[0] = D_8003386C[D_8076A0E4[i] & 0x7F];
|
||||
D_807FBB44->control_state = i;
|
||||
D_807FBB44->control_state_progress = D_8076A0E4[i] & 0x7F;
|
||||
temp_v1 = D_807FBB44->additional_actor_data;
|
||||
temp_v1->unk0 = arg0;
|
||||
temp_v1->unk8 = 0;
|
||||
}
|
||||
func_80030894(temp_s6, &D_80720CF0, 0x122, 0xD2, 0.75f, 2, 0);
|
||||
func_80030894(temp_s6, &D_80720D14, 0x23, 0xD2, 0.75f, 2, 0);
|
||||
func_80030894(temp_s6, &D_80720C34, 0xA0, 0x7D, 0.75f, 2, 4);
|
||||
func_80030894(temp_s6, &D_80720D80, 0xA0, 0x10, 0.5f, 2, 0);
|
||||
func_80030894(temp_s6, &D_807211AC, 0xA0, 0xDC, 0.75f, 2, 0);
|
||||
func_80030894(temp_s6, &D_807211D0, 1, 1, D_80033CDC, 2, 0xF);
|
||||
func_80030894(temp_s6, &D_807211D0, 2, 2, D_80033CE0, 2, 0xF);
|
||||
func_80030894(temp_s6, &D_807211D0, 3, 3, D_80033CE4, 2, 0xF);
|
||||
func_80030894(temp_s6, &D_80720CF0, 0x122, 0xD2, 0.75f, 2, 0xB);
|
||||
func_80030894(temp_s6, &D_80720D14, 0x23, 0xD2, 0.75f, 2, 0xB);
|
||||
func_80030894(temp_s6, &D_80720C34, 0xA0, 0x16D, 0.75f, 2, 4);
|
||||
func_80030894(temp_s6, &D_80720D5C, 0xA0, 0xDC, 0.5f, 2, 0xB);
|
||||
func_80030894(temp_s6, &D_80720D80, 0xA0, 0x10, 0.5f, 2, 0x13);
|
||||
func_80030894(temp_s6, &D_80720CF0, 0x122, 0xD2, 0.75f, 2, 0xD);
|
||||
func_80030894(temp_s6, &D_80720D14, 0x23, 0xD2, 0.75f, 2, 0xD);
|
||||
func_80030894(temp_s6, &D_80720C34, 0xA0, 0x23F, 0.75f, 2, 4);
|
||||
func_80030894(temp_s6, &D_80720D5C, 0xA0, 0xDC, 0.5f, 2, 0xD);
|
||||
}
|
||||
|
||||
void func_8002FC1C(Actor*, MenuAdditionalActorData*, s32);
|
||||
|
||||
void func_8002C584(Actor *arg0, s32 arg1) {
|
||||
|
@ -29,3 +29,5 @@ D_80036A20 = 0x80036A20;
|
||||
|
||||
func_8071720C = 0x8071720C;
|
||||
func_8071AF30 = 0x8071AF30;
|
||||
|
||||
D_80035B10 = 0x80035B10;
|
||||
|
Loading…
Reference in New Issue
Block a user