This commit is contained in:
Donkey Kong 2024-10-02 10:57:29 -05:00
parent b4e732039a
commit b1eedb1d11
6 changed files with 417 additions and 10 deletions

View File

@ -41,7 +41,7 @@ us,.boss,func_boss_80024524,68,yes
us,.boss,func_boss_8002413C,452,no
us,.boss,func_boss_8002FEC0,180,yes
us,.boss,func_boss_80031AA0,4200,no
us,.boss,func_boss_8002EA7C,1668,no
us,.boss,func_boss_8002EA7C,1668,yes
us,.boss,func_boss_8003340C,152,yes
us,.boss,func_boss_80030EC4,3036,no
us,.boss,func_boss_8002531C,72,yes

1 version section function length matching
41 us .boss func_boss_8002413C 452 no
42 us .boss func_boss_8002FEC0 180 yes
43 us .boss func_boss_80031AA0 4200 no
44 us .boss func_boss_8002EA7C 1668 no yes
45 us .boss func_boss_8003340C 152 yes
46 us .boss func_boss_80030EC4 3036 no
47 us .boss func_boss_8002531C 72 yes

View File

@ -4235,7 +4235,7 @@ us,.boss,func_boss_80024524,68,yes
us,.boss,func_boss_8002413C,452,no
us,.boss,func_boss_8002FEC0,180,yes
us,.boss,func_boss_80031AA0,4200,no
us,.boss,func_boss_8002EA7C,1668,no
us,.boss,func_boss_8002EA7C,1668,yes
us,.boss,func_boss_8003340C,152,yes
us,.boss,func_boss_80030EC4,3036,no
us,.boss,func_boss_8002531C,72,yes

1 version section function length matching
4235 us .boss func_boss_8002413C 452 no
4236 us .boss func_boss_8002FEC0 180 yes
4237 us .boss func_boss_80031AA0 4200 no
4238 us .boss func_boss_8002EA7C 1668 no yes
4239 us .boss func_boss_8003340C 152 yes
4240 us .boss func_boss_80030EC4 3036 no
4241 us .boss func_boss_8002531C 72 yes

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h38v20H0z"/>
<path fill="#c05f00" d="M38 0h67v20H38z"/>
<path fill="#c06800" d="M38 0h67v20H38z"/>
<path fill="url(#b)" d="M0 0h105v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
@ -17,7 +17,7 @@
<text x="19.0" y="14">boss</text>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
<text x="72.5" y="15" fill="#010101" fill-opacity=".3">24.8441%</text>
<text x="71.5" y="14">24.8441%</text>
<text x="72.5" y="15" fill="#010101" fill-opacity=".3">27.1654%</text>
<text x="71.5" y="14">27.1654%</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="#c09a00" d="M132 0h67v20H132z"/>
<path fill="#c09b00" 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">40.1365%</text>
<text x="165.5" y="14">40.1365%</text>
<text x="166.5" y="15" fill="#010101" fill-opacity=".3">40.2377%</text>
<text x="165.5" y="14">40.2377%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -114,6 +114,260 @@ void func_boss_80027A30(Struct80027A30_arg0 *arg0, u8 *arg1) {
// Jumptable, 2224 bytes of code
#pragma GLOBAL_ASM("asm/nonmatchings/boss/KRoolGeneric/func_boss_80027BA8.s")
extern u8 D_global_asm_8076A0B1;
extern s8 D_global_asm_8076A0B3;
typedef struct BossUnkPaaD178 {
u8 pad0[0x4];
s16 unk4;
u8 pad6[0x8 - 0x6];
s16 unk8[6]; // Unsure of array size
u8 pad14;
u8 unk15;
u8 unk16;
u8 pad17;
u8 unk18[];
} BossUnkPaaD178;
typedef struct BossUnkPaaD17C {
u8 unk0;
} BossUnkPaaD17C;
/*
u8 func_boss_80027BA8(u8 *arg0, u16 arg1, f32 arg2) {
BossUnkPaaD178 *temp_s0;
PlayerAdditionalActorData *temp_v1;
u8 sp2F;
u8 sp2E;
s16 temp_a0;
s32 cutscene;
temp_v1 = player_pointer->PaaD;
temp_s0 = current_actor_pointer->unk178;
sp2E = FALSE;
sp2F = TRUE;
switch (current_actor_pointer->control_state) {
case 0x54:
sp2F = FALSE;
if (current_actor_pointer->control_state_progress) {
if (func_global_asm_80629148()) {
sp2F = TRUE;
}
} else {
func_global_asm_80629174();
sp2F = FALSE;
current_actor_pointer->control_state_progress = 1;
}
break;
case 0x5F:
playCutscene(current_actor_pointer, arg0[temp_s0->unk15++], 1);
break;
case 0x5E:
if (is_cutscene_active == 1) {
sp2F = TRUE;
func_global_asm_8061D4E4(temp_v1->unk104);
sp2F = TRUE;
}
D_global_asm_8076A0B3 = 0;
current_actor_pointer->object_properties_bitfield &= ~4;
D_global_asm_8076A0B1 |= 0x10;
temp_s0->unk15++;
temp_s0->unk4 = (arg0[temp_s0->unk15] * 0x1E);
break;
case 0x5D:
temp_s0->unk15++;
sp2F = TRUE;
func_global_asm_8072B324(current_actor_pointer, arg0[temp_s0->unk15]);
sp2F = TRUE;
break;
case 0x5C:
((BossUnkPaaD17C *)current_actor_pointer->unk17C)->unk0 = arg0[temp_s0->unk15++];
break;
case 0x5A:
sp2F = TRUE;
loadText(current_actor_pointer, arg0[temp_s0->unk15], arg0[temp_s0->unk15 + 1]);
sp2F = TRUE;
temp_s0->unk15 += 2;
break;
case 0x42:
block_16:
sp2F = sp2F;
func_global_asm_8072AB74(0x42U, D_global_asm_807FDC90->unkA, D_global_asm_807FDC90->unkE, arg1, arg2);
if (func_global_asm_8072D13C(current_actor_pointer->control_state, 0) == 0) {
default:
sp2F = FALSE;
}
break;
case 0x69:
D_global_asm_807FDC90->unk1A |= 0x20;
break;
case 0x6D:
break;
case 0x58:
current_actor_pointer->object_properties_bitfield |= 4;
break;
case 0x59:
current_actor_pointer->object_properties_bitfield &= ~4;
break;
case 0x51:
sp2F = TRUE;
playActorAnimation(current_actor_pointer, arg0[temp_s0->unk15 + 1] + (arg0[temp_s0->unk15] << 8));
sp2F = TRUE;
temp_s0->unk15 += 2;
break;
case 0x55:
sp2F = FALSE;
if (current_actor_pointer->control_state_progress == 0) {
temp_s0->unk8[0] = arg0[temp_s0->unk15 + 1] + (arg0[temp_s0->unk15] << 8);
temp_s0->unk15 += 2;
current_actor_pointer->control_state_progress = 1;
} else {
temp_s0->unk8[0]--;
if (temp_s0->unk8[0] == 0) {
sp2F = TRUE;
}
}
break;
case 0x23:
if (current_actor_pointer->control_state_progress == 0) {
temp_s0->unk15++;
temp_s0->unk8[0] = arg0[temp_s0->unk15];
current_actor_pointer->control_state_progress = 1;
sp2F = FALSE;
func_global_asm_8072B324(current_actor_pointer, D_global_asm_807FDC9C->unkD);
sp2F = sp2F;
} else {
sp2F = FALSE;
func_global_asm_8072AB74(0x23U, D_global_asm_807FDC90->unk4->x_position, D_global_asm_807FDC90->unk4->z_position, arg1, arg2);
sp2F = FALSE;
temp_s0->unk8[0]--;
if ((temp_s0->unk8[0] == 0) || (temp_v1->unk1F0 & 0x80000)) {
temp_v1->unk1F0 &= 0xFFF7FFFF;
sp2F = TRUE;
func_global_asm_8072B324(current_actor_pointer, D_global_asm_807FDC9C->unkC);
sp2F = TRUE;
}
}
break;
case 0x52:
if (!(current_actor_pointer->unk6A & 1)) {
sp2F = FALSE;
}
break;
case 0x53:
if (current_actor_pointer->control_state_progress == 0) {
sp2F = FALSE;
}
break;
case 0x4F:
temp_s0->unk16 = temp_s0->unk15;
break;
case 0x50:
temp_s0->unk15 = temp_s0->unk16;
break;
case 0x66:
if (D_global_asm_807FDC90->unk1A & 8) {
temp_s0->unk15 = temp_s0->unk16;
}
break;
case 0x63:
if (temp_s0->unk8[arg0[temp_s0->unk15]] != 0) {
temp_s0->unk8[arg0[temp_s0->unk15]]--;
sp2F = FALSE;
break;
}
temp_s0->unk15++;
break;
case 0x62:
temp_s0->unk8[arg0[temp_s0->unk15]] = arg0[temp_s0->unk15 + 1];
temp_s0->unk15 += 2;
sp2E = TRUE;
break;
case 0x64:
temp_s0->unk18[arg0[temp_s0->unk15]] = arg0[temp_s0->unk15 + 1];
temp_s0->unk15 += 2;
sp2E = TRUE;
break;
case 0x68:
D_global_asm_807FDC90->unk1A &= 0xFFEF;
sp2E = TRUE;
break;
case 0x65:
D_global_asm_807FDC90->unk2C = arg0[temp_s0->unk15]++;
sp2E = TRUE;
break;
case 0x67:
func_boss_80027950(temp_s0, arg0);
sp2F = FALSE;
current_actor_pointer->control_state = 0x42;
current_actor_pointer->control_state_progress = 0;
goto block_16;
case 0x4C:
func_boss_80027A30(temp_s0, arg0);
sp2F = FALSE;
current_actor_pointer->control_state = 0x42;
current_actor_pointer->control_state_progress = 0;
goto block_16;
case 0x4B:
D_global_asm_807FDC90->unk25++;
if (arg0[temp_s0->unk15 + 1] < D_global_asm_807FDC90->unk25) {
D_global_asm_807FDC90->unk25 = arg0[temp_s0->unk15];
}
temp_s0->unk15 += 2;
sp2F = FALSE;
current_actor_pointer->control_state = 0x42;
current_actor_pointer->control_state_progress = 0;
goto block_16;
case 0x41:
sp2F = FALSE;
D_global_asm_807FDC90->unk25 = arg0[temp_s0->unk15++];
current_actor_pointer->control_state = 0x42;
current_actor_pointer->control_state_progress = 0;
goto block_16;
case 0x49:
case 0x4A:
sp2F = FALSE;
switch (current_actor_pointer->control_state_progress) {
case 0:
current_actor_pointer->shadow_opacity -= 0xA;
if (current_actor_pointer->shadow_opacity < 0) {
current_actor_pointer->shadow_opacity = 0;
current_actor_pointer->control_state_progress += 1;
}
break;
case 1:
if (current_actor_pointer->control_state == 0x49) {
D_global_asm_807FDC90->unk25 = arg0[temp_s0->unk15++];
} else {
sp2F = FALSE;
func_boss_80027950(temp_s0, arg0);
}
sp2F = FALSE;
func_global_asm_8072D13C(0x49U, 0);
sp2F = FALSE;
current_actor_pointer->x_position = (f32) D_global_asm_807FDC90->unkA;
current_actor_pointer->z_position = (f32) D_global_asm_807FDC90->unkE;
current_actor_pointer->control_state_progress++;
break;
case 2:
current_actor_pointer->shadow_opacity += 0xA;
if (current_actor_pointer->shadow_opacity >= 0x100) {
current_actor_pointer->shadow_opacity = 0xFF;
sp2F = TRUE;
}
break;
}
break;
}
if (sp2F) {
current_actor_pointer->control_state = arg0[temp_s0->unk15++];
current_actor_pointer->control_state_progress = 0;
}
return sp2E;
}
*/
void func_boss_80028458(void) {
func_global_asm_805FF8F8();
}

View File

@ -85,5 +85,158 @@ void func_boss_8002EA14(void) {
func_global_asm_8072B324(current_actor_pointer, D_global_asm_807FDC9C->unkC + (sp1C->unk14 * 0xA) + 0xF);
}
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/boss/KRoolLanky/func_boss_8002EA7C.s")
u8 func_boss_80027BA8(u8 *, u16, f32);
u8 func_global_asm_8061CB98(u8);
s32 func_global_asm_8072881C(s32, s32 *);
void func_global_asm_8072A450(void);
extern u8 *D_boss_80035A80[4];
typedef struct KRoolLankyAAD178 {
Actor *unk0;
u8 pad4[0x14 - 0x4];
u8 unk14;
u8 unk15;
} KRoolLankyAAD178;
void func_boss_8002EA7C(void) {
KRoolLankyAAD178 *temp_t0;
u8 *sp28;
temp_t0 = current_actor_pointer->unk178;
sp28 = D_boss_80035A80[temp_t0->unk14];
initializeCharacterSpawnerActor();
func_boss_80028878(sp28);
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
current_actor_pointer->unk146_s16 = 1;
current_actor_pointer->control_state = 0x1E;
current_actor_pointer->control_state_progress = 0;
current_actor_pointer->unkCC = 1;
func_global_asm_80724CA4(2, 1);
func_boss_8002DC60();
current_actor_pointer->y_acceleration = 0.0f;
}
if ((player_pointer->control_state == 0x48) && !(D_global_asm_807FDC90->unk1A & 0x8000)) {
playCutscene(current_actor_pointer, 0, 1);
D_global_asm_807FDC90->unk1A |= 0x8000;
}
if ((func_global_asm_8061CB98(0) == 0) && ((func_global_asm_8061CB98(1) == 0)) && ((player_pointer->control_state != 0x67) || (current_actor_pointer->control_state != 0x42))) {
switch (current_actor_pointer->control_state) {
case 0x2B:
switch (current_actor_pointer->control_state_progress) {
case 0:
func_global_asm_8072B324(current_actor_pointer, 0);
playCutscene(player_pointer, 9, 1);
func_boss_8002E9B8(0x3F5, 0x679);
current_actor_pointer->control_state_progress += 1;
break;
case 2:
func_global_asm_8072B324(current_actor_pointer, D_global_asm_807FDC9C->unkD);
func_boss_8002E9B8(0x3F4, 0x678);
current_actor_pointer->control_state_progress += 1;
break;
case 3:
if (D_global_asm_807FBB70.unk1B != 0) {
current_actor_pointer->control_state = 0x31;
current_actor_pointer->control_state_progress = 0;
} else if (D_global_asm_807FBB70.unk200 == 2) {
func_boss_8002E7A0(NULL);
current_actor_pointer->control_state = 0x2C;
current_actor_pointer->control_state_progress = 0;
}
func_global_asm_8072AB74(0x23U, D_global_asm_807FDC94->x_position, D_global_asm_807FDC94->z_position, 0U, 0.0f);
break;
}
break;
case 0x2C:
if (current_actor_pointer->control_state_progress == 0) {
setAction(0x36, current_actor_pointer, 0U);
func_boss_8002EA14();
current_actor_pointer->control_state = 0x42;
current_actor_pointer->control_state_progress = 0;
}
break;
case 0x1E:
temp_t0->unk14 = 0U;
temp_t0->unk15 = 0U;
current_actor_pointer->control_state = sp28[temp_t0->unk15++];
current_actor_pointer->control_state_progress = 0;
break;
case 0x0:
switch (current_actor_pointer->control_state_progress) {
case 0:
func_boss_8002E9B8(0x3F5, 0x679);
current_actor_pointer->control_state_progress++;
break;
case 2:
func_boss_8002EA14();
current_actor_pointer->control_state = sp28[temp_t0->unk15++];
current_actor_pointer->control_state_progress = 0;
func_global_asm_8066EB40(player_pointer, player_pointer->ledge_info_pointer->unkC * 2);
func_global_asm_8066E5F8(player_pointer, 6, 1U);
func_global_asm_8066E5F8(player_pointer, 7, 1U);
func_global_asm_8066E5F8(player_pointer, 8, 1U);
func_global_asm_8066E5F8(player_pointer, 9, 1U);
func_global_asm_8066E5F8(player_pointer, 0xA, 1U);
func_global_asm_8066E5F8(player_pointer, 0xB, 1U);
break;
}
break;
case 0x31:
switch (current_actor_pointer->control_state_progress) {
case 0:
if (temp_t0->unk14 == 3) {
current_actor_pointer->control_state = 0x37;
current_actor_pointer->control_state_progress = 0;
} else {
playActorAnimation(current_actor_pointer, 0x3F2);
playActorAnimation(temp_t0->unk0, 0x3F1);
func_global_asm_8072B324(current_actor_pointer, 0);
current_actor_pointer->control_state_progress += 1;
}
break;
case 1:
func_global_asm_8072AB74(0U, 0.0f, 0.0f, 0x310U, 0.0f);
break;
case 2:
func_boss_8002E7A0(NULL);
func_boss_8002EA14();
temp_t0->unk15 = 0U;
temp_t0->unk14++;
sp28 = D_boss_80035A80[temp_t0->unk14];
current_actor_pointer->control_state = sp28[temp_t0->unk15++];
current_actor_pointer->control_state_progress = 0;
break;
}
break;
case 0x37:
switch (current_actor_pointer->control_state_progress) {
case 0:
deleteActor(temp_t0->unk0);
playActorAnimation(current_actor_pointer, 0);
playCutscene(current_actor_pointer, 5, 1);
current_actor_pointer->control_state_progress += 1;
break;
case 1:
if (func_global_asm_80629148() != 0) {
func_global_asm_805FF158(0U);
func_global_asm_805FF378(MAP_KROOL_FIGHT_TINY_PHASE, 0);
current_actor_pointer->control_state_progress += 1;
}
break;
}
break;
default:
func_boss_80027BA8(sp28, 0x10, 0.0f);
break;
}
} else if (current_actor_pointer->animation_state->unk64 == 0x406) {
func_global_asm_80614D00(current_actor_pointer, 0.0f, 0.0f);
}
func_global_asm_8072A450();
if (func_global_asm_8072881C(0, &D_global_asm_807FDC90->unk28) != 0) {
func_global_asm_8072881C(0x81, &D_global_asm_807FDC90->unk28);
}
renderActor(current_actor_pointer, 0U);
}