This commit is contained in:
Donkey Kong 2024-05-01 01:48:12 +09:30
parent e78e7219fe
commit 22ebf3347e
13 changed files with 413 additions and 60 deletions

View File

@ -510,7 +510,7 @@ void func_global_asm_806A7BDC(void);
void func_global_asm_806A7EF0(void);
void func_global_asm_806A8070(void);
s32 func_global_asm_8070943C(void);
s32 func_global_asm_80709344(s32 arg0);
Gfx *func_global_asm_80709344(Gfx *dl);
void func_global_asm_80709464(u8 playerIndex);
void func_global_asm_80698FEC(void);
void func_global_asm_8069900C(void);

View File

@ -48,8 +48,16 @@ typedef struct {
// Finally!!!
typedef struct {
f32 unk0;
f32 unk4;
union {
f32 unk0;
s32 unk0_s32;
s32 *unk0_s32_ptr;
};
union {
f32 unk4;
s32 unk4_s32;
s32 *unk4_s32_ptr;
};
f32 unk8;
} Struct807F5FD4_unk0;
@ -287,6 +295,7 @@ typedef struct {
s16 unk2;
s16 unk4;
s16 unk6;
// Note: This is correctly sized, if you get references to unk8, use unk1C[1].unk0 instead
} AnimationStateUnk1C;
// TODO: Fill this in properly
@ -379,7 +388,10 @@ typedef struct {
};
f32 unkC; // Used
f32 unk10; // Used
f32 unk14; // Used
union {
f32 unk14; // Used
s32 unk14_s32; // Used // TODO: We might have another aaD situation here...
};
s32 unk18;
s32 unk1C;
s32 unk20;

View File

@ -3016,7 +3016,7 @@ us,asm,func_global_asm_80642BF0,136,yes
us,asm,func_global_asm_80737A4C,40,yes
us,asm,func_global_asm_80666AF8,656,no
us,asm,func_global_asm_8072E320,556,yes
us,asm,func_global_asm_806C6BC8,1496,no
us,asm,func_global_asm_806C6BC8,1492,yes
us,asm,func_global_asm_805FF2F4,132,yes
us,asm,func_global_asm_8062D1E0,140,no
us,asm,func_global_asm_8060131C,132,yes

1 version section function length matching
3016 us asm func_global_asm_80737A4C 40 yes
3017 us asm func_global_asm_80666AF8 656 no
3018 us asm func_global_asm_8072E320 556 yes
3019 us asm func_global_asm_806C6BC8 1496 1492 no yes
3020 us asm func_global_asm_805FF2F4 132 yes
3021 us asm func_global_asm_8062D1E0 140 no
3022 us asm func_global_asm_8060131C 132 yes

View File

@ -3016,7 +3016,7 @@ us,asm,func_global_asm_80642BF0,136,yes
us,asm,func_global_asm_80737A4C,40,yes
us,asm,func_global_asm_80666AF8,656,no
us,asm,func_global_asm_8072E320,556,yes
us,asm,func_global_asm_806C6BC8,1496,no
us,asm,func_global_asm_806C6BC8,1492,yes
us,asm,func_global_asm_805FF2F4,132,yes
us,asm,func_global_asm_8062D1E0,140,no
us,asm,func_global_asm_8060131C,132,yes

1 version section function length matching
3016 us asm func_global_asm_80737A4C 40 yes
3017 us asm func_global_asm_80666AF8 656 no
3018 us asm func_global_asm_8072E320 556 yes
3019 us asm func_global_asm_806C6BC8 1496 1492 no yes
3020 us asm func_global_asm_805FF2F4 132 yes
3021 us asm func_global_asm_8062D1E0 140 no
3022 us asm func_global_asm_8060131C 132 yes

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h77v20H0z"/>
<path fill="#c09000" d="M77 0h67v20H77z"/>
<path fill="#c09100" 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">37.5681%</text>
<text x="110.5" y="14">37.5681%</text>
<text x="111.5" y="15" fill="#010101" fill-opacity=".3">37.6896%</text>
<text x="110.5" y="14">37.6896%</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">37.9498%</text>
<text x="165.5" y="14">37.9498%</text>
<text x="166.5" y="15" fill="#010101" fill-opacity=".3">38.0406%</text>
<text x="165.5" y="14">38.0406%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -7,7 +7,7 @@ s32 func_global_asm_807085D0(s32, PlayerProgress *, CharacterProgress *, void *)
extern s8 D_global_asm_80744504;
s16 func_global_asm_80708DA4(s32 arg0, s16 arg1, CharacterChange* arg2);
Gfx *func_global_asm_80708DA4(Gfx *dl, s16 arg1, CharacterChange* arg2);
typedef struct global_asm_struct_21 {
f32 unk0;
@ -75,7 +75,7 @@ void func_global_asm_80708C24(s32 arg0, CharacterChange *arg1, PlayerProgress *a
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_10D2D0/func_global_asm_80708DA4.s")
/*
s16 func_global_asm_80708DA4(s32 arg0, s16 arg1, CharacterChange* arg2) {
Gfx *func_global_asm_80708DA4(Gfx *dl, s16 arg1, CharacterChange* arg2) {
CharacterProgress *sp38;
PlayerProgress *sp28;
s32 temp_a0;
@ -87,10 +87,10 @@ s16 func_global_asm_80708DA4(s32 arg0, s16 arg1, CharacterChange* arg2) {
temp_a0 = cc_number_of_players == 1;
var_t0 = arg2->unk2E4;
temp = arg2->unk2E2;
if (temp_a0 == 0) {
if (!temp_a0) {
var_t0 = 0;
}
if (temp_a0 == 0) {
if (!temp_a0) {
func_global_asm_80708C24(arg1, arg2, sp28, sp38);
arg2->unk2E2 &= 0xFFEA;
}
@ -146,14 +146,14 @@ s16 func_global_asm_80708DA4(s32 arg0, s16 arg1, CharacterChange* arg2) {
}
if (func_global_asm_805FCA64() || (arg2->unk2E2 & 0x80)) {
if (arg2->unk2E4 != 0 || arg2->unk2E2 != 0) {
arg0 = func_global_asm_807085D0(arg0, sp28, sp38, arg2);
dl = func_global_asm_807085D0(dl, sp28, sp38, arg2);
}
}
return arg0;
return dl;
}
*/
s32 func_global_asm_80709344(s32 arg0) {
Gfx *func_global_asm_80709344(Gfx *dl) {
s16 i;
for (i = 0; i < cc_number_of_players; i++) {
if (character_change_array[i].does_player_exist) {
@ -162,11 +162,11 @@ s32 func_global_asm_80709344(s32 arg0) {
|| character_change_array[i].unk2E2)
&& (D_global_asm_80744504 == 0))
|| (character_change_array[i].unk2E2 & 0x10))) {
arg0 = func_global_asm_80708DA4(arg0, i, &character_change_array[i]);
dl = func_global_asm_80708DA4(dl, i, &character_change_array[i]);
}
}
}
return arg0;
return dl;
}
// Segments per melon

View File

@ -1532,6 +1532,7 @@ void func_global_asm_8064A194(s32 arg0, s16 arg1, s32 arg2, s32 arg3) {
func_global_asm_806418E8(*var_v0_2, 0xA, 0);
}
// 64 bit stuff
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_478F0/func_global_asm_8064A258.s")
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_478F0/func_global_asm_8064A804.s")

View File

@ -29,9 +29,134 @@ u8 func_global_asm_8067B450(void) {
}
*/
// Jumptable
// Jumptable, close, regalloc
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_80150/func_global_asm_8067B4C8.s")
void func_global_asm_80613CA8(Actor*, s32, f32, f32);
extern s32 D_global_asm_8071FBC8; // TODO: Type
extern u8 D_global_asm_807FBDC4;
typedef struct {
Actor *unk0;
f32 unk4;
f32 unk8;
f32 unkC;
f32 unk10;
u8 unk14;
u8 unk15;
} AAD_8067B4C8;
typedef struct {
u8 unk0[0xB0 - 0x0];
f32 unkB0;
f32 unkB4;
f32 unkB8;
} AAD_8067B4C8_2;
/*
void func_global_asm_8067B4C8(void) {
s32 i;
AAD_8067B4C8 *aaD;
AAD_8067B4C8_2 *aaD2;
aaD = current_actor_pointer->additional_actor_data;
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
current_actor_pointer->animation_state->unk1C = malloc(2 * sizeof(AnimationStateUnk1C));
// 1
current_actor_pointer->animation_state->unk1C[0].unk0 = 0x7F;
current_actor_pointer->animation_state->unk1C[0].unk1 = 2;
current_actor_pointer->animation_state->unk1C[0].unk2 = (u32)((current_actor_pointer->unk124->unk0 * 65536.0f) / 360.0f);
current_actor_pointer->animation_state->unk1C[0].unk4 = 0;
current_actor_pointer->animation_state->unk1C[0].unk6 = 0;
// 2
current_actor_pointer->animation_state->unk1C[1].unk0 = 0;
aaD->unk4 = current_actor_pointer->unk124->unk4;
aaD->unk8 = current_actor_pointer->unk124->unk8;
aaD->unkC = current_actor_pointer->unk124->unkC;
aaD->unk10 = current_actor_pointer->unk124->unk10;
aaD->unk15 = current_actor_pointer->unk124->unk14_s32;
if ((current_actor_pointer->unk124->unk18 == 1) && (func_global_asm_8067B450(current_actor_pointer) == 0)) {
current_actor_pointer->control_state = 0x14;
current_actor_pointer->noclip_byte = 1;
current_actor_pointer->object_properties_bitfield &= 0xFFFF7FFF;
current_actor_pointer->shadow_opacity = 0;
}
if (current_map == MAP_DK_ISLES_OVERWORLD) {
current_actor_pointer->object_properties_bitfield |= 0x400;
}
if (current_map == MAP_CASTLE_KING_KUT_OUT) {
current_actor_pointer->draw_distance = 0x226;
}
}
if (D_global_asm_807FBB70.unk200 == 4) {
aaD->unk0 = D_global_asm_807FBB70.unk1FC;
current_actor_pointer->control_state = 1;
aaD->unk14 = 0xA;
current_actor_pointer->noclip_byte = 1;
aaD->unk0->y_rotation = current_actor_pointer->y_rotation;
playCutscene(NULL, aaD->unk15, 1);
}
switch (current_actor_pointer->control_state) {
case 1:
aaD->unk14--;
if (aaD->unk14 == 6) {
func_global_asm_80614D00(current_actor_pointer, 1.0f, 0.0f);
func_global_asm_80613CA8(current_actor_pointer, 0x346, 0, 0);
}
if (aaD->unk14 == 0) {
current_actor_pointer->control_state = 2;
}
break;
case 2:
func_global_asm_80679200(aaD->unk0, current_actor_pointer, 0x40, 1, 0, NULL);
aaD2 = aaD->unk0->additional_actor_data;
aaD2->unkB0 = aaD->unk8;
aaD2->unkB4 = aaD->unkC;
aaD2->unkB8 = aaD->unk10;
func_global_asm_8067AAB8(current_actor_pointer, aaD->unk0, current_actor_pointer->y_rotation, 0.0f, aaD->unk4);
func_global_asm_80679290(current_actor_pointer, current_actor_pointer, 0x800, 2, 0, 0, 0xA);
func_global_asm_80714998(2);
func_global_asm_807149B8(1);
func_global_asm_80714C08(&D_global_asm_8071FBC8, 2.0f, current_actor_pointer, 1, 2);
playSoundAtPosition(current_actor_pointer->x_position, current_actor_pointer->y_position, current_actor_pointer->z_position, 0x17, 0xFF, 0x7F, 0x19, 0x1E, 0.3f, 0);
current_actor_pointer->control_state++;
aaD->unk14 = 4;
break;
case 3:
aaD->unk14--;
if (aaD->unk14 == 0) {
current_actor_pointer->control_state = 0;
}
break;
case 20:
for (i = 0; i < D_global_asm_807FBB70.unk254; i++) {
if (D_global_asm_807FBB70.unk258[i] == 1) {
current_actor_pointer->unk0 = 2;
current_actor_pointer->control_state = 0x15;
}
}
if (func_global_asm_8067B450(current_actor_pointer) != 0) {
current_actor_pointer->shadow_opacity = 0xFF;
current_actor_pointer->object_properties_bitfield |= 0x8000;
current_actor_pointer->control_state = 0;
}
break;
case 21:
// TODO: Hmm
current_actor_pointer->unk0 = current_actor_pointer->unk0 + 0xA;
if (current_actor_pointer->shadow_opacity >= 0xF1) {
current_actor_pointer->object_properties_bitfield |= 0x8000;
current_actor_pointer->control_state = 0;
}
break;
}
renderActor(current_actor_pointer, 0);
}
*/
void func_global_asm_8067BA3C(void) {
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
current_actor_pointer->draw_distance = 2000;

View File

@ -553,8 +553,86 @@ void func_global_asm_80686340(void) {
func_global_asm_80714A28(4);
}
// close, float regalloc, stack, other minor stuff
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_89250/func_global_asm_80686390.s")
s32 func_global_asm_8068613C(void); // TODO: Signature
extern s32 D_global_asm_8071FBF4;
/*
void func_global_asm_80686390(Actor *arg0, f32 arg1, f32 x, f32 y, f32 z) {
f32 scale;
s32 sp34;
f64 sp28;
ActorAnimationState *temp_v0;
f32 temp_f0_2;
f32 temp_f10;
f32 temp_f2;
f32 temp_f2_2;
f32 var_f0;
f32 var_f12;
s32 temp_t6;
if (arg0 != NULL) {
temp_v0 = arg0->animation_state;
if (temp_v0 != NULL) {
scale = temp_v0->scale[1] / 0.15;
} else {
scale = 1.0;
}
if (arg0->unk6A & 4) {
if ((arg0->y_velocity > -10.0f) || (arg0->unk6A & arg0->unk6C & 1)) {
var_f0 = 0.0f;
} else {
var_f0 = arg0->unkA0 - arg0->y_position;
}
temp_f2 = (arg0->unkAC - arg0->floor) * 2.0f;
if (var_f0 < temp_f2) {
var_f12 = var_f0;
} else {
var_f12 = temp_f2;
}
if (var_f12 < 0.0f) {
var_f0 = 0.0f;
} else {
if (var_f0 < temp_f2) {
var_f12 = var_f0;
} else {
var_f12 = temp_f2;
}
var_f0 = var_f12;
}
if ((arg0->unk58 == ACTOR_PROJECTILE_ORANGE) || (arg0->unk58 == ACTOR_PROJECTILE_LIME)) {
playSoundAtActorPosition(arg0, 0x2C7, 0xFF, 0x7F, 1);
} else if (var_f0 < 10.0f) {
playSoundAtActorPosition(arg0, 0x10, (var_f0 * 25.5), 0x7F, 1);
} else if (var_f0 < 20.0f) {
playSoundAtActorPosition(arg0, 0xF, 0xFF, 0x7F, 1);
} else {
func_global_asm_8068613C();
}
}
} else {
scale = arg1;
}
func_global_asm_80686340();
sp28 = scale;
drawSpriteAtPosition(&D_global_asm_8071FBF4, sp28 * 0.3, x, y, z);
func_global_asm_80686340();
func_global_asm_8071496C(2);
sp34 = rand();
temp_f2_2 = sp28 * 0.05;
temp_t6 = (u8)(30.0f * scale);
temp_f0_2 = (u8)(15.0f * scale);
temp_f10 = (rand() >> 0xF) % temp_t6;
drawSpriteAtPosition(&D_global_asm_8071FBF4, temp_f2_2, (((sp34 >> 0xF) % temp_t6) + x) - temp_f0_2, y, (temp_f10 + z) - temp_f0_2);
func_global_asm_80686340();
func_global_asm_8071496C(4);
sp34 = rand();
drawSpriteAtPosition(&D_global_asm_8071FBF4, temp_f2_2, (((sp34 >> 0xF) % temp_t6) + x) - temp_f0_2, y, (((rand() >> 0xF) % temp_t6) + z) - temp_f0_2);
}
*/
void func_global_asm_8068696C(Actor *actor) {
s32 i;
for (i = 0; i < 0x10; i++) {

View File

@ -80,6 +80,7 @@ void func_global_asm_806B3420(void) {
renderActor(current_actor_pointer, 0);
}
// close
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_B7490/func_global_asm_806B3680.s")
s32 func_global_asm_8072AB74(u8, f32, f32, s32, f32);
@ -95,30 +96,31 @@ extern f32 D_global_asm_8075B5D8;
extern s32 D_global_asm_8075B5DC;
void func_global_asm_8066E9EC(Actor*, s32, f32);
u8 func_global_asm_8072D13C(u8 arg0, s32 arg1);
/*
void func_global_asm_806B3680(void) {
f32 var_f14;
f32 var_f12;
f32 sp54;
f32 dx;
f32 dz;
f32 scale;
f32 sp54;
f32 dy;
s32 *sp44;
s16 i;
var_f14 = current_actor_pointer->animation_state->scale_y * 800.0f;
scale = current_actor_pointer->animation_state->scale_y * 800.0f;
sp54 = D_global_asm_8075B5C4;
if (current_map == MAP_CASTLE_KING_KUT_OUT) {
if (!(player_pointer->unk6A & 4)) {
var_f14 = 0.0f;
scale = 0.0f;
sp54 = D_global_asm_8075B5C8;
} else {
var_f14 = var_f14 * 0.75;
scale = scale * 0.75;
sp54 = D_global_asm_8075B5CC;
}
}
var_f14 = var_f14 * var_f14;
scale = scale * scale;
initializeCharacterSpawnerActor();
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
current_actor_pointer->unk64 |= 4;
@ -131,7 +133,7 @@ void func_global_asm_806B3680(void) {
dx = D_global_asm_807FDC94->x_position - current_actor_pointer->x_position;
dy = D_global_asm_807FDC94->y_position - current_actor_pointer->y_position;
dz = D_global_asm_807FDC94->z_position - current_actor_pointer->z_position;
if (((dx * dx) + (dy * dy) + (dz * dz)) < var_f14) {
if (((dx * dx) + (dy * dy) + (dz * dz)) < scale) {
current_actor_pointer->control_state = 0x27;
current_actor_pointer->control_state_progress = 0;
}
@ -156,19 +158,18 @@ void func_global_asm_806B3680(void) {
case 0:
playSoundAtActorPosition(current_actor_pointer, 0x1C2, 0xFF, 0x7F, 0);
D_global_asm_807FDC90->unk30 = 2.0 * current_actor_pointer->animation_state->scale_y;
current_actor_pointer->control_state_progress += 1;
current_actor_pointer->control_state_progress++;
// fallthrough
case 1:
// i = 0;
if (current_actor_pointer->animation_state->scale_y < D_global_asm_807FDC90->unk30) {
func_global_asm_807248B0(current_actor_pointer, current_actor_pointer->animation_state->scale_y * D_global_asm_8075B5D0);
} else {
sp44 = &D_global_asm_8071ABDC;
for (i = 0; i < 0xC; i++) {
for (i = 0; i != 0xC; i++) {
func_global_asm_807149B8(1);
func_global_asm_807149FC(2);
func_global_asm_80714950(i + 0x0B020000);
func_global_asm_8071498C(sp44);
func_global_asm_8071498C(func_global_asm_8071ABDC);
func_global_asm_80714998(1);
drawSpriteAtPosition(&D_global_asm_8072073C, 2.0 * current_actor_pointer->animation_state->scale_y, current_actor_pointer->x_position, current_actor_pointer->y_position, current_actor_pointer->z_position);
}
@ -178,7 +179,7 @@ void func_global_asm_806B3680(void) {
func_global_asm_8066E9EC(current_actor_pointer, 1, current_actor_pointer->ledge_info_pointer->unkC * sp54);
func_global_asm_8066EB40(current_actor_pointer, current_actor_pointer->ledge_info_pointer->unkC * sp54);
current_actor_pointer->object_properties_bitfield &= ~4;
current_actor_pointer->control_state_progress += 1;
current_actor_pointer->control_state_progress++;
}
break;
case 5:
@ -186,18 +187,19 @@ void func_global_asm_806B3680(void) {
break;
default:
current_actor_pointer->control_state_progress++;
break;
}
}
break;
case 2:
case 3:
var_f12 = MIN(D_global_asm_807FDC90->unkC, current_actor_pointer->unkAC - current_actor_pointer->unk15E);
func_global_asm_8072A920(var_f12, current_actor_pointer->control_state, 0, D_global_asm_807FDC90->unkA, var_f12, D_global_asm_807FDC90->unkE, 0x1E, D_global_asm_8075B5DC, 100.0f, 0x2040);
func_global_asm_8072A920(current_actor_pointer->control_state, 0, D_global_asm_807FDC90->unkA, var_f12, D_global_asm_807FDC90->unkE, 0x1E, D_global_asm_8075B5DC, 100.0f, 0x2040);
break;
}
if ((current_actor_pointer->control_state == 2) || (current_actor_pointer->control_state == 3)) {
func_global_asm_8072D13C(current_actor_pointer->control_state, 1);
switch (current_actor_pointer->control_state) {
case 2:
case 3:
func_global_asm_8072D13C(current_actor_pointer->control_state, 1);
}
renderActor(current_actor_pointer, 0);
}
@ -380,8 +382,6 @@ void func_global_asm_806B4958(void) {
extern f32 D_global_asm_807502EC;
u8 func_global_asm_8072D13C(u8 arg0, s32 arg1);
void func_global_asm_806B49B0(u8 arg0, s16 arg1, s16 arg2) {
Actor178 *a178;
s32 pad2;

View File

@ -140,18 +140,13 @@ void func_global_asm_806C6BA0(void) {
func_global_asm_806C6884(0xA, 0x14, 0x240);
}
// Jumptable
#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_CB230/func_global_asm_806C6BC8.s")
extern u8 D_global_asm_807FBD70;
/*
void func_global_asm_806C6BC8(void) {
u32 *temp;
f32 sp54;
f32 sp50;
f32 sp4C;
f32 sp48;
f32 x;
f32 y;
f32 z;
initializeCharacterSpawnerActor();
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
@ -173,32 +168,31 @@ void func_global_asm_806C6BC8(void) {
current_actor_pointer->object_properties_bitfield &= ~0x400;
}
func_global_asm_8072881C(0, &D_global_asm_807FDC90->unk28);
temp = current_actor_pointer->unk0;
switch (current_actor_pointer->control_state) {
case 0:
if (D_global_asm_807FDC90->unk2C != 0) {
sp54 = ((f32)D_global_asm_807FDC90->unk2C / D_global_asm_807FDC90->unk2E);
getBonePosition(current_actor_pointer, 2, &sp50, &sp4C, &sp48);
getBonePosition(current_actor_pointer, 2, &x, &y, &z);
func_global_asm_807248B0(player_pointer, (sp54 * 0.13) + 0.02);
player_pointer->x_position += ((sp50 - player_pointer->x_position) * 0.05);
player_pointer->y_position += ((sp4C - player_pointer->y_position) * 0.05);
player_pointer->z_position += ((sp48 - player_pointer->z_position) * 0.05);
player_pointer->x_position += (x - player_pointer->x_position) * 0.05;
player_pointer->y_position += (y - player_pointer->y_position) * 0.05;
player_pointer->z_position += (z - player_pointer->z_position) * 0.05;
D_global_asm_807FDC90->unk2C--;
if (D_global_asm_807FDC90->unk2C == 0) {
func_global_asm_805FF9AC(player_pointer->x_position, player_pointer->z_position, 0x33, 0, 0, 1);
func_global_asm_805FF9AC(0x33, 0, 0, 1);
}
}
break;
case 39:
if (D_global_asm_807FDC90->unk2E != 0) {
*temp += 2;
current_actor_pointer->y_position += 2.0f;
D_global_asm_807FDC90->unk2E--;
func_global_asm_807248B0(
current_actor_pointer,
D_global_asm_807FDC90->unk30 + ((0.01 - D_global_asm_807FDC90->unk30) * ((f64)D_global_asm_807FDC90->unk2E / 150.0))
);
} else {
*temp = 2;
current_actor_pointer->control_state = 2;
current_actor_pointer->control_state_progress = 0;
}
break;
@ -208,12 +202,12 @@ void func_global_asm_806C6BC8(void) {
func_global_asm_80614D00(current_actor_pointer, 0.0f, 0.0f);
current_actor_pointer->control_state = 0;
current_actor_pointer->control_state_progress = 0;
playCutscene(current_actor_pointer, 0x18, 1);
D_global_asm_807FDC90->unk2C = func_global_asm_8061CC30() - 0x1E;
func_global_asm_8061CC30();
D_global_asm_807FDC90->unk2C = playCutscene(current_actor_pointer, 0x18, 1) - 0x1E;
D_global_asm_807FDC90->unk2E = D_global_asm_807FDC90->unk2C;
current_actor_pointer->noclip_byte = 1;
} else {
switch (*temp) {
switch (current_actor_pointer->control_state_progress) {
case 5:
func_global_asm_8072B324(current_actor_pointer, D_global_asm_807FDC9C->unkC);
current_actor_pointer->control_state_progress = 0;
@ -243,7 +237,7 @@ void func_global_asm_806C6BC8(void) {
func_global_asm_8072DC7C(5);
break;
case 2:
*temp = 0x3B;
current_actor_pointer->control_state = 0x3B;
break;
}
}
@ -251,4 +245,3 @@ void func_global_asm_806C6BC8(void) {
}
renderActor(current_actor_pointer, 0);
}
*/

View File

@ -466,8 +466,152 @@ Gfx *func_race_80026EE4(Gfx *dl, Actor *arg1) {
return func_race_8002CAC8(dl, arg1, arg1->RaaD);
}
// close
#pragma GLOBAL_ASM("asm/nonmatchings/race/code_0/func_race_80026F04.s")
s32 func_global_asm_806F4DC0(s32, f32, u8, f32, f32, f32, f32);
f32 func_race_8002D2C0(void *);
extern u8 D_global_asm_807FBD70;
typedef struct {
u8 unk0[0x26 - 0x0];
u8 unk26; // Used
u8 unk27;
u8 unk28; // Used
u8 unk29; // Used
u8 unk2A; // Used
u8 unk2B;
u8 unk2C;
u8 unk2D;
u8 unk2E;
u8 unk2F;
Actor *unk30; // Used
u8 unk34; // Used
u8 unk35; // Used
} AAD_80026F04;
typedef struct {
u8 unk0; // Used
u8 unk1;
s16 unk2; // Used
u8 unk4[0x20 - 0x4];
f32 unk20; // Used
f32 unk24; // Used
u8 unk28[0x39 - 0x28];
u8 unk39; // Used
} A178_80026F04;
/*
void func_race_80026F04(void) {
f32 temp_f0;
A178_80026F04 *a178;
f32 x;
f32 y;
f32 z;
f32 var_f12;
s16 var_s0;
s32 i;
u16 temp_a0;
AAD_80026F04 *aaD;
s32 temp;
aaD = current_actor_pointer->additional_actor_data;
a178 = current_actor_pointer->unk178;
if (!(current_actor_pointer->object_properties_bitfield & 0x10)) {
Struct807F5FD4_unk0 *temp7F5unk0 = &D_global_asm_807F5FD4->unk0;
temp = (temp7F5unk0[a178->unk0].unk4_s32 - temp7F5unk0[a178->unk0].unk0_s32) / 12;
aaD->unk2A = 3;
current_actor_pointer->noclip_byte = 0x3C;
a178->unk2 = func_race_8002578C(temp, 0);
func_race_80026354(a178, aaD, 1);
if ((gameIsInDKTVMode()) || (isFlagSet(0x12, FLAG_TYPE_TEMPORARY))) {
setAction(0x4B, current_actor_pointer, aaD->unk28);
} else {
func_global_asm_806F397C(player_pointer, current_actor_pointer, 0, 0x4B);
}
func_global_asm_8066EA90(current_actor_pointer, 2);
func_race_80026CA8();
}
if ((D_global_asm_807FBD70 == 5) && (a178->unk39 == 0)) {
if (aaD->unk34 == 2) {
func_global_asm_8072DB68(3);
}
a178->unk39 = 0x1E;
}
if (aaD->unk35 == 0) {
if (aaD->unk34 == 1) {
func_global_asm_806F8BC4(0xB, 1, 0);
aaD->unk35++;
} else if (aaD->unk34 == 5) {
func_global_asm_806F8D58(0xB, 0);
aaD->unk35++;
}
}
if (aaD->unk34 == 1) {
Actor *tempActor = aaD->unk30;
RaceAdditionalActorData *tempRaaD = tempActor->RaaD;
temp_a0 = tempRaaD->unk1C;
if ((temp_a0 == 8) || (temp_a0 == 0x13)) {
playSoundAtPosition(current_actor_pointer->x_position, current_actor_pointer->y_position, current_actor_pointer->z_position, 0x187, 0xFF, 0x7F, 0, 0, 0.3f, 0);
}
func_race_80026D2C(aaD->unk26 * 1.5);
} else if (aaD->unk34 < 5) {
var_s0 = 0;
if (aaD->unk26 != 0) {
temp_f0 = func_race_8002D2C0(aaD);
if (temp_f0 != 0.0f) {
func_race_80026004(a178, 0x1E, (1.5f * temp_f0) + 1.5f);
}
aaD->unk26 = 0;
}
if (a178->unk39 != 0) {
if (a178->unk39 > 10.0f) {
var_s0 = (a178->unk39 - 10.0f) * 204.8f;
a178->unk20 = func_global_asm_80612794(var_s0) * 300.0f;
a178->unk24 = func_global_asm_80612794(var_s0 * 2) * 300.0f;
} else {
a178->unk20 = 0.0f;
a178->unk24 = 0.0f;
}
}
func_race_80026354(a178, aaD, 1);
current_actor_pointer->y_position += 20.0f * func_global_asm_80612794(var_s0 * 0.5f);
func_race_80026D2C(current_actor_pointer->unkB8);
} else if (aaD->unk34 == 5) {
current_actor_pointer->object_properties_bitfield &= ~4;
current_actor_pointer->unkB8 = 0.0f;
for (i = 0; i != 2; i++) {
if (current_actor_pointer->unk6E[i] != -1) {
func_global_asm_80605314(current_actor_pointer, i);
}
}
}
if (aaD->unk29 != 0) {
func_race_80026B20(aaD);
}
if (aaD->unk34 < 5) {
if (aaD->unk34 == 2) {
var_f12 = 10.0f;
} else {
var_f12 = -200.0f;
}
x = current_actor_pointer->x_position;
y = current_actor_pointer->y_position + var_f12;
z = current_actor_pointer->z_position;
func_global_asm_806F4D70(aaD->unk28, x, y, z, 12.0f);
func_global_asm_806F4DC0(0, y, aaD->unk28, (x + current_actor_pointer->unk88) * 0.5, y, (z + current_actor_pointer->unk90) * 0.5, 12.0f);
}
if (current_actor_pointer->object_properties_bitfield & 4) {
func_global_asm_8068ECF4(1, 0xC8);
func_global_asm_8068ECF4(2, 0xC8);
}
renderActor(current_actor_pointer, 0);
if ((aaD->unk34 > 0) && (aaD->unk34 < 5)) {
addActorToTextOverlayRenderArray(func_race_80026EE4, current_actor_pointer, 3);
}
}
*/
void func_race_800274C0(void) {
AAD_race_800274C0 *sp4C;
Actor178 *sp48;