This commit is contained in:
Donkey Kong 2023-12-11 22:14:49 +10:30
parent 8437f5f531
commit 328c1a98fd
7 changed files with 189 additions and 14 deletions

View File

@ -536,7 +536,7 @@ segments:
- [0x21ABD00, rodata] # code_3840
- [0x21ABF20, .rodata, code_52B0]
- [0x21AC060, rodata] # code_6240
- [0x21AC350, rodata] # code_8520
- [0x21AC350, .rodata, code_8520]
- [0x21AC3D0, .rodata, code_9230]
- [0x21AC4C0, rodata] # code_9C60
- [0x21AC800, rodata] # code_C920

View File

@ -1915,10 +1915,10 @@ typedef struct global_asm_struct_12 {
} GlobalASMStruct12;
typedef struct {
u8 pad0[0x6 - 0x0];
u8 pad0[0x4 - 0x0];
s16 unk4;
s16 unk6;
u8 unk8;
u8 unk9;
s16 unk8;
union {
u8 unkA_u8[2];
u16 unkA_u16;

View File

@ -47,7 +47,7 @@ us,.boss,func_boss_80030EC4,3036,no
us,.boss,func_boss_8002531C,72,yes
us,.boss,func_boss_8002DCE0,156,yes
us,.boss,func_boss_80030888,140,yes
us,.boss,func_boss_8002C964,2252,no
us,.boss,func_boss_8002C964,2244,yes
us,.boss,func_boss_8002DD7C,136,yes
us,.boss,func_boss_80027BA8,2224,no
us,.boss,func_boss_8002E82C,396,yes

1 version section function length matching
47 us .boss func_boss_8002531C 72 yes
48 us .boss func_boss_8002DCE0 156 yes
49 us .boss func_boss_80030888 140 yes
50 us .boss func_boss_8002C964 2252 2244 no yes
51 us .boss func_boss_8002DD7C 136 yes
52 us .boss func_boss_80027BA8 2224 no
53 us .boss func_boss_8002E82C 396 yes

View File

@ -3928,7 +3928,7 @@ us,.boss,func_boss_80030EC4,3036,no
us,.boss,func_boss_8002531C,72,yes
us,.boss,func_boss_8002DCE0,156,yes
us,.boss,func_boss_80030888,140,yes
us,.boss,func_boss_8002C964,2252,no
us,.boss,func_boss_8002C964,2244,yes
us,.boss,func_boss_8002DD7C,136,yes
us,.boss,func_boss_80027BA8,2224,no
us,.boss,func_boss_8002E82C,396,yes

1 version section function length matching
3928 us .boss func_boss_8002531C 72 yes
3929 us .boss func_boss_8002DCE0 156 yes
3930 us .boss func_boss_80030888 140 yes
3931 us .boss func_boss_8002C964 2252 2244 no yes
3932 us .boss func_boss_8002DD7C 136 yes
3933 us .boss func_boss_80027BA8 2224 no
3934 us .boss func_boss_8002E82C 396 yes

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h38v20H0z"/>
<path fill="#c03c00" d="M38 0h67v20H38z"/>
<path fill="#c04800" 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">15.4977%</text>
<text x="71.5" y="14">15.4977%</text>
<text x="72.5" y="15" fill="#010101" fill-opacity=".3">18.6317%</text>
<text x="71.5" y="14">18.6317%</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="#c08100" d="M132 0h67v20H132z"/>
<path fill="#c08200" 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">33.6228%</text>
<text x="165.5" y="14">33.6228%</text>
<text x="166.5" y="15" fill="#010101" fill-opacity=".3">33.7595%</text>
<text x="165.5" y="14">33.7595%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -72,5 +72,180 @@ void func_boss_8002C8B4(void) {
current_actor_pointer);
}
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/boss/code_8520/func_boss_8002C964.s")
extern u8 D_global_asm_807FBB85;
extern u8 D_global_asm_807FBD70;
typedef struct {
s16 unk0;
s16 unk2;
s16 unk4;
} A178_8002C964;
void func_global_asm_8072AB74(s32, f32, f32, s32, f32);
void func_boss_8002C964(void) {
A178_8002C964 *a178;
f64 yScale;
a178 = current_actor_pointer->unk178;
func_global_asm_80729B00();
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
func_boss_8002C748(0);
func_boss_8002C748(1);
D_global_asm_807FDC98->unk30 = 2.5f;
D_global_asm_807FDC98->unk46 &= 0xFFF7;
D_global_asm_807FDC98->unk46 |= 0x200;
current_actor_pointer->object_properties_bitfield |= 0x400;
current_actor_pointer->unk132 = 4;
current_actor_pointer->control_state = 0x1E;
func_global_asm_807248B0(current_actor_pointer, 2.0 * current_actor_pointer->animation_state->scale[0]);
func_global_asm_806AD9AC();
}
if (((D_global_asm_807FBD70 == 9) || (D_global_asm_807FBB85 != 0)) && (current_actor_pointer->control_state != 0x37)) {
if (isFlagSet(0xF7, FLAG_TYPE_PERMANENT) != 0) {
func_global_asm_8067E278(0, 1);
current_actor_pointer->control_state = 0x40;
} else {
playCutscene(current_actor_pointer, 6, 1);
current_actor_pointer->y_velocity = 200.0f;
func_global_asm_8072D714(D_global_asm_807FBD6C, 0x2F7);
}
}
switch (current_actor_pointer->control_state) {
case 0x28:
switch (current_actor_pointer->control_state_progress) {
case 0:
playCutscene(current_actor_pointer, 8, 1);
func_global_asm_80614EBC(current_actor_pointer, 0);
func_global_asm_80613C48(current_actor_pointer, 0x589, 0.0f, 0.0f);
D_global_asm_807FDC90->unk2C = 0;
current_actor_pointer->control_state_progress = 1;
current_actor_pointer->noclip_byte = 1;
func_global_asm_806086CC(current_actor_pointer->x_position, current_actor_pointer->y_position, current_actor_pointer->z_position, 0x2FC, 0xFF, 0x7F, 0, 0, 0.0f, 0);
// fallthrough
case 1:
D_global_asm_807FDC90->unk2C += 8;
if (D_global_asm_807FDC90->unk2C >= 0x259) {
current_actor_pointer->control_state_progress = 2;
}
current_actor_pointer->y_position += 2.0f;
current_actor_pointer->y_rotation += D_global_asm_807FDC90->unk2C;
yScale = current_actor_pointer->animation_state->scale[1];
func_global_asm_807248B0(current_actor_pointer, ((0.3 - yScale) * 0.05) + yScale);
break;
case 2:
D_global_asm_807FDC90->unk2C -= 0x14;
if (D_global_asm_807FDC90->unk2C < 0) {
D_global_asm_807FDC90->unk2C = 0;
}
current_actor_pointer->y_rotation += D_global_asm_807FDC90->unk2C;
if (func_global_asm_80629148() != 0) {
current_actor_pointer->control_state_progress = 3;
current_actor_pointer->object_properties_bitfield &= ~4;
}
break;
case 3:
if (func_global_asm_80629148() != 0) {
current_actor_pointer->unk15E = 0xA;
D_global_asm_807FDC90->unk28 |= 0x8000;
current_actor_pointer->unk132 = 1;
current_actor_pointer->control_state = 0x23;
func_global_asm_8072B324(current_actor_pointer, D_global_asm_807FDC9C->unkD);
current_actor_pointer->noclip_byte = 0x24;
func_global_asm_80614EBC(current_actor_pointer, 0x2F4);
}
break;
}
break;
case 0x1E:
switch (current_actor_pointer->control_state_progress) {
case 0:
if (func_global_asm_80629148() != 0) {
D_global_asm_807FDC90->unk28 |= 0x8000;
current_actor_pointer->control_state_progress = 1;
}
break;
case 2:
if ((current_actor_pointer->y_position - current_actor_pointer->floor) > 300.0f) {
current_actor_pointer->y_position -= 10.0f;
} else {
D_global_asm_807FDC90->unk28 |= 0x8000;
current_actor_pointer->control_state_progress = 3;
}
break;
case 3:
if (func_global_asm_80629148() != 0) {
current_actor_pointer->control_state = 0x27;
current_actor_pointer->control_state_progress = 0;
func_global_asm_80626110(D_global_asm_807F5D10, 0, 0);
}
break;
}
break;
case 0x27:
current_actor_pointer->y_rotation = func_global_asm_806CC190(current_actor_pointer->y_rotation, func_global_asm_80665DE0(D_global_asm_807FDC94->x_position, D_global_asm_807FDC94->z_position, current_actor_pointer->x_position, current_actor_pointer->z_position), 8.0f);
switch (current_actor_pointer->control_state_progress) {
case 0:
func_boss_8002C5F4();
current_actor_pointer->control_state_progress = 1;
break;
case 1:
if ((func_global_asm_80726D7C(2) == 0) && (func_global_asm_80726D7C(3) == 0) && (func_global_asm_80726D7C(4) == 0)) {
current_actor_pointer->control_state_progress = 2;
D_global_asm_807FDC90->unk2C = 0x96;
D_global_asm_807FDC90->unk28 |= 0x8000;
current_actor_pointer->unk132 = 8;
func_global_asm_80614EBC(current_actor_pointer, 0x2FA);
}
if ((func_global_asm_8061CB50() == 0) && (((rand() >> 0xF) % 1000) >= 0x3E4)) {
func_global_asm_80614EBC(current_actor_pointer, 0x2FD);
current_actor_pointer->control_state_progress = 3;
}
break;
case 2:
if ((D_global_asm_807FDC90->unk2C != 0) && (D_global_asm_807FBD70 != 4)) {
D_global_asm_807FDC90->unk2C--;
} else {
if (D_global_asm_807FBD70 == 4) {
func_global_asm_80614EBC(current_actor_pointer, 0x2FC);
func_global_asm_8072D9D4();
a178->unk2 = 0x96;
a178->unk4 = 0x800;
current_actor_pointer->unkEE = current_actor_pointer->y_rotation;
if (current_actor_pointer->health == 1) {
current_actor_pointer->control_state = 0x28;
current_actor_pointer->control_state_progress = 0;
}
}
current_actor_pointer->unk132 = 4;
D_global_asm_807FDC90->unk28 |= 0x8000;
current_actor_pointer->control_state_progress = 0;
}
break;
case 4:
current_actor_pointer->control_state_progress = 1;
func_boss_8002C8B4();
break;
}
break;
case 0x23:
func_global_asm_8072AB74(0x23, D_global_asm_807FDC94->x_position, D_global_asm_807FDC94->z_position, 0, 0.0f);
break;
case 0x37:
func_global_asm_806AD260(0x2F7, 1, 0);
break;
}
if (a178->unk2 > 0) {
a178->unk0 = (a178->unk2) * func_global_asm_80612794(a178->unk4);
a178->unk4 += 0x32;
a178->unk2--;
current_actor_pointer->z_rotation = -a178->unk0;
current_actor_pointer->x_position = (func_global_asm_80612794(current_actor_pointer->unkEE) * a178->unk0) + D_global_asm_807FDC9C->unk4;
current_actor_pointer->z_position = (func_global_asm_80612790(current_actor_pointer->unkEE) * a178->unk0) + D_global_asm_807FDC9C->unk8;
current_actor_pointer->y_position = D_global_asm_807FDC9C->unk6 - sqrtf(0x1C390 - (a178->unk0 * a178->unk0));
}
if (D_global_asm_807FDC90->unk28 & 0x8000) {
func_boss_8002C7CC();
}
func_global_asm_806319C4(current_actor_pointer, 0);
}