mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-07-30 15:53:34 -04:00
Attempt to decompile doorCreateSparks
This commit is contained in:
+53
-3
@@ -71278,7 +71278,7 @@ bool posIsInDrawDistance(struct coord *pos)
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08ea50
|
||||
glabel doorCreateSparks
|
||||
/* f08ea50: 27bdff18 */ addiu $sp,$sp,-232
|
||||
/* f08ea54: afb30050 */ sw $s3,0x50($sp)
|
||||
/* f08ea58: 00809825 */ or $s3,$a0,$zero
|
||||
@@ -71486,6 +71486,56 @@ glabel func0f08ea50
|
||||
/* f08ed70: 27bd00e8 */ addiu $sp,$sp,0xe8
|
||||
);
|
||||
|
||||
// Mismatch: float instructions are ordered differently
|
||||
//void doorCreateSparks(struct doorobj *door)
|
||||
//{
|
||||
// struct pad pad;
|
||||
// struct coord sp88;
|
||||
// struct coord sp7c;
|
||||
// struct coord sp70;
|
||||
// f32 height;
|
||||
// s32 i;
|
||||
//
|
||||
// padUnpack(door->base.pad, PADFIELD_POS | PADFIELD_UP | PADFIELD_NORMAL | PADFIELD_BBOX, &pad);
|
||||
// height = pad.bbox.ymax - pad.bbox.ymin;
|
||||
//
|
||||
// sp88.x = sp7c.x = pad.pos.x + pad.up.x * (pad.bbox.ymin + height * (1 - door->frac));
|
||||
// sp88.y = sp7c.y = pad.pos.y + pad.up.y * (pad.bbox.ymin + height * (1 - door->frac));
|
||||
// sp88.z = sp7c.z = pad.pos.z + pad.up.z * (pad.bbox.ymin + height * (1 - door->frac));
|
||||
//
|
||||
// sp88.x += pad.look.x * pad.bbox.zmax;
|
||||
// sp88.y += pad.look.y * pad.bbox.zmax;
|
||||
// sp88.z += pad.look.z * pad.bbox.zmax;
|
||||
//
|
||||
// sp7c.x += pad.look.x * pad.bbox.zmin;
|
||||
// sp7c.y += pad.look.y * pad.bbox.zmin;
|
||||
// sp7c.z += pad.look.z * pad.bbox.zmin;
|
||||
//
|
||||
// sp70.x = -pad.up.x;
|
||||
// sp70.y = -pad.up.y;
|
||||
// sp70.z = -pad.up.z;
|
||||
//
|
||||
// sparksCreate(door->base.prop->rooms[0], door->base.prop, &sp88, &sp70, &pad.up, SPARKTYPE_09);
|
||||
//
|
||||
// sparksCreate(door->base.prop->rooms[0], door->base.prop, &sp7c, &sp70, &pad.up, SPARKTYPE_09);
|
||||
//
|
||||
// if (random() % 2) {
|
||||
// sparksCreate(door->base.prop->rooms[0], door->base.prop, &sp88, &sp70, &pad.up, SPARKTYPE_0C);
|
||||
// } else {
|
||||
// sparksCreate(door->base.prop->rooms[0], door->base.prop, &sp88, &sp70, &pad.up, SPARKTYPE_0D);
|
||||
// }
|
||||
//
|
||||
// func0f0939f8(NULL, door->base.prop, func0f095200(), -1,
|
||||
// -1, 0, 0, 0, &sp88, -1, door->base.prop->rooms, -1, -1, -1, -1);
|
||||
//
|
||||
// func0f0939f8(NULL, door->base.prop, func0f095200(), -1,
|
||||
// -1, 0, 0, 0, &sp7c, -1, door->base.prop->rooms, -1, -1, -1, -1);
|
||||
//
|
||||
// for (i = 0; door->base.prop->rooms[i] != -1; i++) {
|
||||
// roomAdjustLighting(door->base.prop->rooms[i], 128, 200);
|
||||
// }
|
||||
//}
|
||||
|
||||
/**
|
||||
* Calculate/tick a door's frac (the amount it's open) without any consideration
|
||||
* for props which might be blocking the door. The new frac is written to the
|
||||
@@ -71526,7 +71576,7 @@ bool doorCalcIntendedFrac(struct doorobj *door)
|
||||
struct doorobj *loopdoor;
|
||||
|
||||
door->fracspeed = 0.0f;
|
||||
func0f08ea50(door);
|
||||
doorCreateSparks(door);
|
||||
|
||||
if (random() % 2) {
|
||||
dothething = true;
|
||||
@@ -71540,7 +71590,7 @@ bool doorCalcIntendedFrac(struct doorobj *door)
|
||||
while (loopdoor) {
|
||||
if (random() % 2 && loopdoor->mode != DOORMODE_IDLE) {
|
||||
loopdoor->fracspeed = 0.0f;
|
||||
func0f08ea50(loopdoor);
|
||||
doorCreateSparks(loopdoor);
|
||||
|
||||
if (dothething) {
|
||||
func0f0926bc(loopdoor->base.prop, 12, 0xffff);
|
||||
|
||||
@@ -3465,7 +3465,9 @@
|
||||
#define SPARKTYPE_04 0x04
|
||||
#define SPARKTYPE_09 0x09
|
||||
#define SPARKTYPE_0A 0x0a
|
||||
#define SPARKTYPE_0C 0x0c
|
||||
#define SPARKTYPE_0B 0x0b
|
||||
#define SPARKTYPE_0D 0x0d
|
||||
#define SPARKTYPE_0F 0x0f
|
||||
#define SPARKTYPE_16 0x16
|
||||
#define SPARKTYPE_17 0x17
|
||||
|
||||
@@ -328,7 +328,7 @@ f32 func0f08e6bc(struct prop *prop, f32 arg1);
|
||||
bool func0f08e794(struct coord *coord, f32 arg1);
|
||||
bool func0f08e8ac(struct prop *prop, struct coord *coord, f32 arg2, bool arg3);
|
||||
bool posIsInDrawDistance(struct coord *arg);
|
||||
void func0f08ea50(struct doorobj *door);
|
||||
void doorCreateSparks(struct doorobj *door);
|
||||
bool doorCalcIntendedFrac(struct doorobj *door);
|
||||
void doorsCalcFrac(struct doorobj *door);
|
||||
f32 func0f08f538(f32 x, f32 y);
|
||||
|
||||
Reference in New Issue
Block a user