This commit is contained in:
Donkey Kong 2024-04-27 19:16:00 +09:30
parent aefebdb520
commit 9bbec0761d
8 changed files with 238 additions and 31 deletions

View File

@ -2150,7 +2150,7 @@ u8 func_global_asm_806FD894(s16 arg0);
void func_global_asm_80712574(void);
void func_global_asm_806A0330(void);
s16 func_global_asm_80632630(s32 arg0, f32 x, f32 y, f32 z, f32 arg4, u8 arg5);
void func_global_asm_80686E40(f32, f32, f32, s32);
void func_global_asm_80686E40(f32 x, f32 y, f32 z, s32 arg3);
void func_global_asm_80651BE0(s16 arg0, u8 arg1, u8 arg2);
void func_global_asm_8062AC68(void *);
void func_global_asm_80657CB0(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 *arg4, f32 *arg5, f32 *arg6);

View File

@ -75,7 +75,7 @@ us,asm,func_global_asm_807009F4,240,no
us,asm,func_global_asm_80661398,80,yes
us,asm,func_global_asm_80714660,8,yes
us,asm,func_global_asm_8070D568,236,yes
us,asm,func_global_asm_806CDD24,1104,no
us,asm,func_global_asm_806CDD24,1104,yes
us,asm,func_global_asm_80676220,56,yes
us,asm,func_global_asm_806E9A5C,112,yes
us,asm,func_global_asm_806CC190,244,yes

1 version section function length matching
75 us asm func_global_asm_80661398 80 yes
76 us asm func_global_asm_80714660 8 yes
77 us asm func_global_asm_8070D568 236 yes
78 us asm func_global_asm_806CDD24 1104 no yes
79 us asm func_global_asm_80676220 56 yes
80 us asm func_global_asm_806E9A5C 112 yes
81 us asm func_global_asm_806CC190 244 yes

View File

@ -75,7 +75,7 @@ us,asm,func_global_asm_807009F4,240,no
us,asm,func_global_asm_80661398,80,yes
us,asm,func_global_asm_80714660,8,yes
us,asm,func_global_asm_8070D568,236,yes
us,asm,func_global_asm_806CDD24,1104,no
us,asm,func_global_asm_806CDD24,1104,yes
us,asm,func_global_asm_80676220,56,yes
us,asm,func_global_asm_806E9A5C,112,yes
us,asm,func_global_asm_806CC190,244,yes

1 version section function length matching
75 us asm func_global_asm_80661398 80 yes
76 us asm func_global_asm_80714660 8 yes
77 us asm func_global_asm_8070D568 236 yes
78 us asm func_global_asm_806CDD24 1104 no yes
79 us asm func_global_asm_80676220 56 yes
80 us asm func_global_asm_806E9A5C 112 yes
81 us asm func_global_asm_806CC190 244 yes

View File

@ -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">36.8712%</text>
<text x="110.5" y="14">36.8712%</text>
<text x="111.5" y="15" fill="#010101" fill-opacity=".3">36.9609%</text>
<text x="110.5" y="14">36.9609%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h132v20H0z"/>
<path fill="#c08e00" d="M132 0h67v20H132z"/>
<path fill="#c08f00" 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">37.0830%</text>
<text x="165.5" y="14">37.0830%</text>
<text x="166.5" y="15" fill="#010101" fill-opacity=".3">37.1500%</text>
<text x="165.5" y="14">37.1500%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -2201,14 +2201,14 @@ void func_global_asm_8071E3EC(Struct80717D84 *arg0, s8 *arg1) {
if (arg0->unk384 == NULL) {
arg0->unk384 = malloc(0xC);
var_v1 = arg0->unk384;
var_v1[0] = 0.0f;
var_v1[1] = 0.0f;
var_v1[0] = 0;
var_v1[1] = 0;
var_v1[2] = func_global_asm_806531B8(arg0->unk340, arg0->unk344, arg0->unk348, 0);
}
var_v1 = arg0->unk384;
if (var_v1[1] == 0.0) {
temp = D_global_asm_8075EA58;
var_v1[0] = var_v1[0] + 30.0;
var_v1[0] += 30.0;
if (temp < var_v1[0]) {
var_v1[0] = 300.0f;
var_v1[1] = 1.0f;

View File

@ -101,13 +101,13 @@ int func_global_asm_806FF75C(); // TODO: Signature
f32 func_global_asm_806CD898(f32 currentSpeed, f32 desiredSpeed, f32 boostAmount); // boostSpeed
s32 handleInputsForControlState(s32 arg0);
u8 func_global_asm_806CDD24(Actor *arg0, f32 arg1, f32 arg2, s32 arg3);
s32 func_global_asm_806CDD24(Actor *arg0, f32 arg1, f32 arg2, s32 arg3);
void func_global_asm_806D0468(Actor *arg0, u8 arg1);
void func_global_asm_806CD424(s16, f32, f32); // TODO: Is this signature correct?
void func_global_asm_80718BF4(void);
void func_global_asm_806CEFBC(Struct806CEFBC*); // TODO: Proper signature, just for function pointer
void func_global_asm_806CF138(Struct806CF138 *arg0);
s32 func_global_asm_806CD9A0(Actor*, f32, f32, s16, s16);
s16 func_global_asm_806CD9A0(Actor*, f32, f32, s16, s16);
void func_global_asm_80613A50(Actor*, s32);
void func_global_asm_806C9DE0(void) {
@ -876,8 +876,124 @@ s16 func_global_asm_806CD988(Actor *arg0) {
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_global_asm_806CD9A0.s")
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CEAE0/func_global_asm_806CDD24.s")
s32 func_global_asm_806CDD24(Actor *arg0, f32 arg1, f32 arg2, s32 arg3) {
s16 var_v1;
u8 pad[4];
s16 sp2E;
s16 sp2C;
f32 var_f0;
var_v1 = arg0->control_state;
sp2E = extra_player_info_pointer->unk4C;
sp2C = func_global_asm_806CD9A0(arg0, arg1, arg2, extra_player_info_pointer->unk4C, D_global_asm_807FD584);
if (sp2C != 6) {
arg0->y_velocity = 0.0f;
}
if (sp2E < 0) {
func_global_asm_806D03BC();
}
if (sp2E != sp2C) {
switch (sp2C) {
case 0:
if (extra_player_info_pointer->unk1F0 & 0x100) {
playActorAnimation(arg0, 0x1AD);
} else {
playAnimation(arg0, 9);
}
func_global_asm_80614D00(arg0, 1.0f, 0.0f);
var_v1 = 0xC;
break;
case 1:
if (extra_player_info_pointer->unk1F0 & 0x100) {
playActorAnimation(arg0, 0x1AD);
} else {
playActorAnimation(arg0, 0x13);
}
func_global_asm_80614D00(arg0, 1.0f, 0.0f);
var_v1 = 0xC;
break;
case 2:
playAnimation(arg0, 0x87);
func_global_asm_80614D00(arg0, 1.0f, 0.0f);
var_v1 = 0xC;
break;
case 3:
if (extra_player_info_pointer->unk1F0 & 0x100) {
playActorAnimation(arg0, 0x76);
func_global_asm_80613C48(arg0, 0x2AC, 0.0f, 6.0f);
} else {
func_global_asm_80613AF8(arg0, 2, 0.0f, 6.0f);
playAnimation(arg0, 1);
}
switch (sp2E) {
case 4:
case 5:
func_global_asm_80613A50(arg0, 2);
break;
}
var_v1 = 0xD;
break;
case 4:
playAnimation(arg0, 2);
func_global_asm_80613AF8(arg0, 3, 0.0f, 6.0f);
if (sp2E == 3) {
switch (current_character_index[cc_player_index]) {
case 0:
case 1:
case 2:
case 3:
func_global_asm_80613A50(arg0, 4);
break;
}
}
if (sp2E == 5) {
func_global_asm_80613A50(arg0, 2);
}
var_v1 = 0xD;
break;
case 5:
playAnimation(arg0, 3);
func_global_asm_80613AF8(arg0, 4, 0.0f, 6.0f);
if ((sp2E == 3) || (sp2E == 4)) {
func_global_asm_80613A50(arg0, 4);
}
var_v1 = 0xD;
break;
case 6:
playAnimation(arg0, 0x1B);
func_global_asm_80614D90(arg0);
var_v1 = 0x1E;
current_actor_pointer->unk9C = current_actor_pointer->y_position;
break;
}
extra_player_info_pointer->unk4C = sp2C;
}
if (extra_player_info_pointer->unk4C >= 3) {
if (extra_player_info_pointer->unk26 == 0x64) {
var_f0 = arg0->unkB8;
} else {
var_f0 = extra_player_info_pointer->unk4;
}
var_f0 *= 0.025;
if (extra_player_info_pointer->unk4C == 5) {
var_f0 *= 0.6;
}
if (var_f0 > 1.25f) {
var_f0 = var_f0 - ((var_f0 - 1.25f) * 0.4);
}
if (arg0->animation_state->unk0->unk24 != 0.0f) {
if (extra_player_info_pointer->unk26 == 0x64) {
func_global_asm_80614D00(arg0, var_f0, 2.0f);
} else {
if (var_f0 < 0.5) {
var_f0 = 0.5f;
}
func_global_asm_80614D00(arg0, var_f0, 10.0f);
}
}
}
return var_v1;
}
u32 func_global_asm_806CE174(Actor *actor, f32 arg1, f32 arg2, s32 arg3) {
s16 sp36;

View File

@ -19,6 +19,8 @@ extern Struct807FD740 D_global_asm_807FD740[];
extern s32 D_global_asm_807FD780[];
void func_global_asm_806F5270(void);
void func_global_asm_806F54E0(u8, s32, u8);
void func_global_asm_806A5DF0(s16, f32, f32, f32, s32, s32, s32, s32);
void func_global_asm_806F4750(void) {
func_global_asm_806F5270();
@ -210,8 +212,6 @@ struct globalASMStruct36 {
extern GlobalASMStruct36 *D_global_asm_807FD730;
extern u8 D_global_asm_807FD738;
void func_global_asm_806F54E0(u8, s32, u8);
void func_global_asm_806F5378(void) {
GlobalASMStruct36 *next;
GlobalASMStruct36 *current;
@ -279,15 +279,109 @@ void func_global_asm_806F5498(void) {
}
}
// Jumptable
// Jumptable, very close
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F9450/func_global_asm_806F54E0.s")
void func_menu_80029EF8(Actor *arg0, s32 arg1);
/*
void func_global_asm_806F54E0(u8 playerIndex, s32 actorBehaviourIndex, u8 arg2) {
CharacterProgress *temp_v0_2;
s32 sp28;
u8 sp27;
PlayerProgress *temp_v1;
s8 *temp_v0;
s32 i;
sp27 = 0;
// Self modifying code
if (D_global_asm_807FBB64 & 0x10000000) {
if (actorBehaviourIndex != 0x56) {
temp_v0 = ((s32*)&func_menu_80029EF8) + 0xA8;
*temp_v0 -= 1;
return;
}
}
if (current_map != MAP_SNIDES_HQ) {
sp28 = func_global_asm_806F544C(D_global_asm_80753EFC[func_global_asm_806F4E74(actorBehaviourIndex) - 2].unkC, actorBehaviourIndex, arg2);
switch (actorBehaviourIndex) {
case 0xDD:
case 0xDE:
case 0xDF:
case 0xE0:
case 0xE1:
setFlag(func_global_asm_807319D8(0x1D5, getLevelIndex(D_global_asm_8076A0AB, 1), current_character_index[playerIndex]), 1, 0);
// fallthrough
case 0x74:
case 0x288:
changeCollectableCount(sp28, playerIndex, 1);
sp27 = 1;
break;
case 0x91:
case 0x15D:
case 0x15E:
case 0x15F:
case 0x160:
if (cc_number_of_players == 1) {
playSound(0x331, 0x7FFF, 63.0f, 1.0f, 5, 0);
}
// fallthrough
case 0xA:
case 0xD:
case 0x16:
case 0x1E:
case 0x1F:
setFlag(0x18B, TRUE, FLAG_TYPE_PERMANENT);
changeCollectableCount(sp28, playerIndex, 1);
break;
case 0x1C:
case 0x1D:
case 0x23:
case 0x24:
case 0x27:
setFlag(0x18C, TRUE, FLAG_TYPE_PERMANENT);
// fallthrough
case 0x98:
case 0xEC:
case 0x1D2:
changeCollectableCount(sp28, playerIndex, 1);
break;
case 0x56:
setFlag(0x173, 1, 0);
changeCollectableCount(sp28, playerIndex, 1);
break;
case 0xB7:
for (i = 0; i < 5; i++) {
D_global_asm_807FC950[playerIndex].character_progress[i].coins += 5;
}
func_global_asm_806F5498();
break;
case 0x8E:
changeCollectableCount(sp28, playerIndex, 0x96);
break;
case 0x57:
func_global_asm_806C9974(playerIndex, 1);
break;
case 0x13C:
sp27 = 1;
break;
case 0x18D:
sp27 = 1;
break;
}
if (sp27 != 0) {
func_global_asm_8060DEC8();
}
}
}
*/
void func_global_asm_806F58A0(u8 arg0, s16 arg1, Actor *arg2) {
s32 var_s0;
s32 i;
f32 sp7C;
f32 sp78;
f32 sp74;
f32 x;
f32 y;
f32 z;
f32 sp70;
f32 sp6C;
f32 sp68;
@ -296,7 +390,7 @@ void func_global_asm_806F58A0(u8 arg0, s16 arg1, Actor *arg2) {
s16 var_s2;
if (cc_number_of_players == 1) {
func_global_asm_806357F8(arg1, &sp7C, &sp78, &sp74, &sp70, &sp6C, &sp68, &sp64, &sp60, 1);
func_global_asm_806357F8(arg1, &x, &y, &z, &sp70, &sp6C, &sp68, &sp64, &sp60, 1);
}
switch (arg2->unk58) {
@ -325,7 +419,7 @@ void func_global_asm_806F58A0(u8 arg0, s16 arg1, Actor *arg2) {
var_s0 = 0;
for (i = 0; i != 5; i++) {
if (cc_number_of_players == 1) {
func_global_asm_806F50C8(func_global_asm_80632630(var_s2, sp7C, sp78, sp74, 0.0f, 0), var_s2, var_s0, 1, 0, 1);
func_global_asm_806F50C8(func_global_asm_80632630(var_s2, x, y, z, 0.0f, 0), var_s2, var_s0, 1, 0, 1);
} else {
func_global_asm_806F54E0(arg0, var_s2, 0);
}
@ -335,9 +429,9 @@ void func_global_asm_806F58A0(u8 arg0, s16 arg1, Actor *arg2) {
void func_global_asm_806F5A48(u8 arg0, s16 arg1, Actor *arg2, u16 arg3) {
s32 i;
f32 sp90;
f32 sp8C;
f32 sp88;
f32 x;
f32 y;
f32 z;
f32 sp84;
f32 sp80;
f32 sp7C;
@ -347,7 +441,7 @@ void func_global_asm_806F5A48(u8 arg0, s16 arg1, Actor *arg2, u16 arg3) {
s16 var_s2;
if (cc_number_of_players == 1) {
func_global_asm_806357F8(arg1, &sp90, &sp8C, &sp88, &sp84, &sp80, &sp7C, &sp78, &sp74, 1);
func_global_asm_806357F8(arg1, &x, &y, &z, &sp84, &sp80, &sp7C, &sp78, &sp74, 1);
}
switch (arg2->unk58) {
case 3:
@ -373,7 +467,7 @@ void func_global_asm_806F5A48(u8 arg0, s16 arg1, Actor *arg2, u16 arg3) {
var_s0 = 0;
for (i = 0; i != 5; i++) {
if (cc_number_of_players == 1) {
func_global_asm_806F50C8(func_global_asm_80632630(var_s2, sp90, sp8C, sp88, 0.0f, 0), var_s2, var_s0, 1, (u8)(arg3 == 0x11 ? 1 : 0), 1);
func_global_asm_806F50C8(func_global_asm_80632630(var_s2, x, y, z, 0.0f, 0), var_s2, var_s0, 1, (u8)(arg3 == 0x11 ? 1 : 0), 1);
} else {
func_global_asm_806F54E0(arg0, var_s2, (u8)(arg3 == 0x11 ? 1 : 0));
}
@ -473,9 +567,6 @@ void func_global_asm_806F5FE8(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s32 arg4)
}
}
void func_global_asm_80686E40(f32, f32, f32, s32);
void func_global_asm_806A5DF0(s16, f32, f32, f32, s32, s32, s32, s32);
void func_global_asm_806F603C(void) {
s32 i;