Attempt to decompile acousticReset

This commit is contained in:
Ryan Dwyer 2021-01-04 15:07:44 +10:00
parent 3561f42f0a
commit e769524c34
7 changed files with 105 additions and 38 deletions

View File

@ -426,7 +426,7 @@ void coreLoadStage(s32 stagenum)
}
}
func0f0b6764();
acousticReset();
func0f0b65f8();
func0f001bdc();
setCurrentPlayerNum(0);

View File

@ -84,8 +84,8 @@ const char var7f1ad2f0[] = "Acoustic Reset -> Allocating %d bytes for %d roomaco
const char var7f1ad33c[] = "ACOUSTIC -> room %d bb %f %f\n";
const char var7f1ad360[] = "ACOUSTIC -> DGD: acousticReset room %d does not have a 3D bounding box => radata[room].roomvolume is bodged!\n";
const char var7f1ad3d0[] = "%s%sL2 -> Surface area bodged for room %d - using %f\n";
const u32 var7f1ad408[] = {0x00000000};
const u32 var7f1ad40c[] = {0x00000000};
const char var7f1ad408[] = "";
const char var7f1ad40c[] = "";
const u32 var7f1ad410[] = {0x3b808081};
const u32 var7f1ad414[] = {0x3d888889};
@ -314,7 +314,7 @@ void func0f0b65f8(void)
}
GLOBAL_ASM(
glabel func0f0b6764
glabel acousticReset
/* f0b6764: 3c0b800a */ lui $t3,%hi(g_Vars)
/* f0b6768: 256b9fc0 */ addiu $t3,$t3,%lo(g_Vars)
/* f0b676c: 8d6402bc */ lw $a0,0x2bc($t3)
@ -332,8 +332,8 @@ glabel func0f0b6764
/* f0b679c: 3c0b800a */ lui $t3,%hi(g_Vars)
/* f0b67a0: 256b9fc0 */ addiu $t3,$t3,%lo(g_Vars)
/* f0b67a4: 8d6302bc */ lw $v1,0x2bc($t3)
/* f0b67a8: 3c07800a */ lui $a3,%hi(var8009dd70)
/* f0b67ac: 24e7dd70 */ addiu $a3,$a3,%lo(var8009dd70)
/* f0b67a8: 3c07800a */ lui $a3,%hi(g_RoomAcousticData)
/* f0b67ac: 24e7dd70 */ addiu $a3,$a3,%lo(g_RoomAcousticData)
/* f0b67b0: ace20000 */ sw $v0,0x0($a3)
/* f0b67b4: 18600066 */ blez $v1,.L0f0b6950
/* f0b67b8: 00003025 */ or $a2,$zero,$zero
@ -487,6 +487,80 @@ glabel func0f0b6764
/* f0b69cc: 27bd0030 */ addiu $sp,$sp,0x30
);
// Mismatch: regalloc for range variable
//void acousticReset(void)
//{
// s32 i;
// s32 j;
// u32 size = ALIGN16(g_Vars.roomcount * sizeof(struct roomacousticdata));
// f32 range;
// f32 width;
// f32 height;
// f32 depth;
// f32 halfsurfacearea;
//
// osSyncPrintf("Acoustic Reset -> Allocating %d bytes for %d roomacousticdata structures\n", size, g_Vars.roomcount);
//
// g_RoomAcousticData = malloc(size, 4);
//
// for (i = 0; i < g_Vars.roomcount; i++) {
// bool allgood = true;
//
// g_RoomAcousticData[i].roomvolume = 1;
// g_RoomAcousticData[i].surfacearea = 1;
//
// for (j = 0; j < 3; j++) {
// osSyncPrintf("ACOUSTIC -> room %d bb %f %f\n", i, g_Rooms[i].bbmin[j], g_Rooms[i].bbmax[j]);
//
// range = g_Rooms[i].bbmax[j] - g_Rooms[i].bbmin[j];
//
// if (range > 0) {
// g_RoomAcousticData[i].roomvolume *= range / 100;
// } else {
// osSyncPrintf("ACOUSTIC -> DGD: acousticReset room %d does not have a 3D bounding box => radata[room].roomvolume is bodged!\n", i);
// allgood = false;
// }
// }
//
// if (allgood) {
// if (g_Rooms[i].bbmin[0] < g_Rooms[i].bbmax[0]) {
// width = g_Rooms[i].bbmax[0] - g_Rooms[i].bbmin[0];
// } else {
// width = -(g_Rooms[i].bbmax[0] - g_Rooms[i].bbmin[0]);
// }
//
// if (g_Rooms[i].bbmin[1] < g_Rooms[i].bbmax[1]) {
// height = g_Rooms[i].bbmax[1] - g_Rooms[i].bbmin[1];
// } else {
// height = -(g_Rooms[i].bbmax[1] - g_Rooms[i].bbmin[1]);
// }
//
// if (g_Rooms[i].bbmin[2] < g_Rooms[i].bbmax[2]) {
// depth = g_Rooms[i].bbmax[2] - g_Rooms[i].bbmin[2];
// } else {
// depth = -(g_Rooms[i].bbmax[2] - g_Rooms[i].bbmin[2]);
// }
//
// halfsurfacearea = width * height + width * depth + height * depth;
//
// g_RoomAcousticData[i].surfacearea = halfsurfacearea + halfsurfacearea;
// } else {
// osSyncPrintf("%s%sL2 -> Surface area bodged for room %d - using %f\n", "", "", i, 20000000);
// g_RoomAcousticData[i].surfacearea = 20000000;
// }
// }
//
// for (j = 0; j < g_Vars.roomcount; j++) {
// g_RoomAcousticData[j].unk08 = 0;
// g_RoomAcousticData[j].unk04 = g_RoomAcousticData[j].unk08;
// }
//
// for (j = 0; j < ARRAYCOUNT(var8009dd78); j++) {
// var8009dd78[j].unk00 = -1;
// var8009dd78[j].unk04 = 0;
// }
//}
GLOBAL_ASM(
glabel func0f0b69d0
/* f0b69d0: 27bdfd78 */ addiu $sp,$sp,-648

View File

@ -6782,21 +6782,21 @@ bool func0f15cd90(u32 room, struct screenbox *screen)
for (i = 0; i != 8; i++) {
if (i & 1) {
corner.x = g_Rooms[room].unk18.x;
corner.x = g_Rooms[room].bbmin[0];
} else {
corner.x = g_Rooms[room].unk24.x;
corner.x = g_Rooms[room].bbmax[0];
}
if (i & 2) {
corner.y = g_Rooms[room].unk18.y;
corner.y = g_Rooms[room].bbmin[1];
} else {
corner.y = g_Rooms[room].unk24.y;
corner.y = g_Rooms[room].bbmax[1];
}
if (i & 4) {
corner.z = g_Rooms[room].unk18.z;
corner.z = g_Rooms[room].bbmin[2];
} else {
corner.z = g_Rooms[room].unk24.z;
corner.z = g_Rooms[room].bbmax[2];
}
if (func0f15d08c(&corner, &roomscreenpos) == 0) {

View File

@ -14702,28 +14702,9 @@ u32 var8009dd60 = 0;
u32 var8009dd64 = 0;
u32 var8009dd68 = 0;
u32 var8009dd6c = 0;
u32 var8009dd70 = 0;
struct roomacousticdata *g_RoomAcousticData = NULL;
u32 var8009dd74 = 0;
u32 var8009dd78 = 0;
u32 var8009dd7c = 0;
u32 var8009dd80 = 0;
u32 var8009dd84 = 0;
u32 var8009dd88 = 0;
u32 var8009dd8c = 0;
u32 var8009dd90 = 0;
u32 var8009dd94 = 0;
u32 var8009dd98 = 0;
u32 var8009dd9c = 0;
u32 var8009dda0 = 0;
u32 var8009dda4 = 0;
u32 var8009dda8 = 0;
u32 var8009ddac = 0;
u32 var8009ddb0 = 0;
u32 var8009ddb4 = 0;
u32 var8009ddb8 = 0;
u32 var8009ddbc = 0;
u32 var8009ddc0 = 0;
u32 var8009ddc4 = 0;
struct var8009dd78 var8009dd78[10] = {0};
u16 *var8009ddc8 = NULL;
s32 var8009ddcc = 0;
s32 g_DefaultWeapons[2] = {0};

View File

@ -9,7 +9,7 @@ void func0f0b6534(s32 arg0);
void func0f0b656c(s32 arg0);
u32 func0f0b65a8(void);
void func0f0b65f8(void);
void func0f0b6764(void);
void acousticReset(void);
f32 func0f0b69d0(f32 arg0, struct coord *pos, s16 *rooms, struct prop *prop, s16 *spawnpads, s16 numspawnpads);
f32 func0f0b72a8(f32 arg0, struct coord *pos, s16 *rooms, struct prop *prop);
void func0f0b72dc(void);

View File

@ -579,8 +579,8 @@ extern u32 var8009dd40;
extern u32 var8009dd50;
extern u32 var8009dd60;
extern u32 var8009dd6c;
extern u32 var8009dd70;
extern u32 var8009dd78;
extern struct roomacousticdata *g_RoomAcousticData;
extern struct var8009dd78 var8009dd78[10];
extern u16 *var8009ddc8;
extern s32 var8009ddcc;
extern s32 g_DefaultWeapons[2];

View File

@ -3503,8 +3503,8 @@ struct room {
/*0x0e*/ s16 unk0e;
/*0x10*/ u32 unk10;
/*0x14*/ struct room14 *unk14;
/*0x18*/ struct coord unk18;
/*0x24*/ struct coord unk24;
/*0x18*/ f32 bbmin[3];
/*0x24*/ f32 bbmax[3];
/*0x30*/ u32 unk30;
/*0x34*/ u32 unk34;
/*0x38*/ u32 unk38;
@ -6792,4 +6792,16 @@ struct var8009cb08 {
u32 unk24;
};
struct roomacousticdata {
f32 surfacearea;
f32 unk04;
f32 unk08;
f32 roomvolume;
};
struct var8009dd78 {
s16 unk00;
f32 unk04;
};
#endif