Decompile gasReleaseFromPos

This commit is contained in:
Ryan Dwyer
2021-05-29 12:56:27 +10:00
parent f34ef0ac3c
commit 96a5c2981c
9 changed files with 54 additions and 74 deletions
+7 -7
View File
@@ -208,10 +208,10 @@ void setupInit(void)
g_AlarmSpeakerWeight = 64;
var800698e4 = 0;
var800698e8 = 0;
var800698ec[0] = 0;
var800698ec[1] = 0;
var800698ec[2] = 0;
g_GasReleased = false;
g_GasPos.x = 0;
g_GasPos.y = 0;
g_GasPos.z = 0;
var800698f8 = 0;
var800698fc = 0;
var80069900 = 0;
@@ -2823,7 +2823,7 @@ void setupLoadFiles(s32 stagenum)
total += setupCountCommandType(OBJTYPE_TINTEDGLASS);
total += setupCountCommandType(OBJTYPE_SAFE);
total += setupCountCommandType(OBJTYPE_29);
total += setupCountCommandType(OBJTYPE_24);
total += setupCountCommandType(OBJTYPE_GASBOTTLE);
total += setupCountCommandType(OBJTYPE_ALARM);
total += setupCountCommandType(OBJTYPE_AMMOCRATE);
total += setupCountCommandType(OBJTYPE_MULTIAMMOCRATE);
@@ -3182,7 +3182,7 @@ void setupParseObjects(s32 stagenum)
case OBJTYPE_ALARM:
case OBJTYPE_AMMOCRATE:
case OBJTYPE_DEBRIS:
case OBJTYPE_24:
case OBJTYPE_GASBOTTLE:
case OBJTYPE_29:
case OBJTYPE_SAFE:
if (withobjs && (obj->flags2 & diffflag) == 0) {
@@ -3496,7 +3496,7 @@ void setupParseObjects(s32 stagenum)
case OBJTYPE_DEBRIS:
case OBJTYPE_MULTIAMMOCRATE:
case OBJTYPE_SHIELD:
case OBJTYPE_24:
case OBJTYPE_GASBOTTLE:
case OBJTYPE_29:
case OBJTYPE_GLASS:
case OBJTYPE_SAFE:
+1 -1
View File
@@ -28,7 +28,7 @@ void func0f015010(void)
case OBJTYPE_HAT:
case OBJTYPE_MULTIAMMOCRATE:
case OBJTYPE_SHIELD:
case OBJTYPE_24:
case OBJTYPE_GASBOTTLE:
case OBJTYPE_TRUCK:
case OBJTYPE_HELI:
case OBJTYPE_29:
+4 -4
View File
@@ -30,10 +30,10 @@ u32 setupGetCommandLength(u32 *cmd)
case OBJTYPE_GLASS: return 24;
case OBJTYPE_TINTEDGLASS: return 26;
case OBJTYPE_SAFE: return 23;
case OBJTYPE_24: return 23;
case OBJTYPE_GASBOTTLE: return 23;
case OBJTYPE_KEY: return 24;
case OBJTYPE_ALARM: return 23;
case OBJTYPE_CCTV: return 49;
case OBJTYPE_CCTV: return 49;
case OBJTYPE_AMMOCRATE: return 24;
case OBJTYPE_WEAPON: return 26;
case OBJTYPE_SINGLEMONITOR: return 53;
@@ -66,7 +66,7 @@ u32 setupGetCommandLength(u32 *cmd)
case OBJTYPE_TRUCK: return 34;
case OBJTYPE_HELI: return 35;
case OBJTYPE_TANK: return 32;
case OBJTYPE_CAMERAPOS: return 7;
case OBJTYPE_CAMERAPOS: return 7;
case OBJTYPE_LIFT: return 37;
case OBJTYPE_CONDITIONALSCENERY: return 5;
case OBJTYPE_BLOCKEDPATH: return 4;
@@ -328,7 +328,7 @@ struct defaultobj *setupCommandGetObject(u32 cmdindex)
case OBJTYPE_HAT:
case OBJTYPE_MULTIAMMOCRATE:
case OBJTYPE_SHIELD:
case OBJTYPE_24:
case OBJTYPE_GASBOTTLE:
case OBJTYPE_TRUCK:
case OBJTYPE_HELI:
case OBJTYPE_29:
+1 -1
View File
@@ -1111,7 +1111,7 @@ u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr)
case OBJTYPE_TAG:
case OBJTYPE_22:
case OBJTYPE_BRIEFING:
case OBJTYPE_24:
case OBJTYPE_GASBOTTLE:
case OBJTYPE_RENAMEOBJ:
case OBJTYPE_PADLOCKEDDOOR:
case OBJTYPE_TRUCK:
+34 -57
View File
@@ -105,7 +105,7 @@ const char var7f1a9fd4[] = "kkd";
const char var7f1a9fd8[] = "kkp";
struct weaponobj *g_Proxies[30];
u32 var8009ce38;
f32 var8009ce38;
u32 var8009ce3c;
s32 var8009ce40;
s32 var8009ce44;
@@ -126,8 +126,8 @@ struct audiohandle *g_AlarmAudioHandle = NULL;
f32 g_AlarmSpeakerWeight = 64;
f32 g_AlarmSpeakerDirection = 1;
f32 var800698e4 = 0;
s32 var800698e8 = 0;
f32 var800698ec[3] = {0};
bool g_GasReleased = false;
struct coord g_GasPos = {0};
u32 var800698f8 = 0x00000000;
f32 var800698fc = 0;
struct audiohandle *var80069900 = NULL;
@@ -57496,7 +57496,7 @@ bool func0f085158(struct defaultobj *obj)
case OBJTYPE_HANGINGMONITORS:
case OBJTYPE_AUTOGUN:
case OBJTYPE_DEBRIS:
case OBJTYPE_24:
case OBJTYPE_GASBOTTLE:
case OBJTYPE_29:
case OBJTYPE_GLASS:
case OBJTYPE_SAFE:
@@ -57587,7 +57587,7 @@ void objDamage(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weapon
obj->hidden |= (playernum << 28) & 0xf0000000;
#endif
if (obj->type == OBJTYPE_24 && func0f0687b8(obj) == 1) {
if (obj->type == OBJTYPE_GASBOTTLE && func0f0687b8(obj) == 1) {
return;
}
@@ -57787,9 +57787,9 @@ void objDamage(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weapon
tvscreenSetCmdlist(&monitor->screens[2], g_TvCmdlist14);
tvscreenSetCmdlist(&monitor->screens[3], g_TvCmdlist14);
}
} else if (obj->type == OBJTYPE_24) {
} else if (obj->type == OBJTYPE_GASBOTTLE) {
if (func0f0687b8(obj) == 1) {
func0f09044c(&obj->prop->pos);
gasReleaseFromPos(&obj->prop->pos);
}
} else if (obj->type == OBJTYPE_SHIELD) {
struct shieldobj *shield = (struct shieldobj *) obj;
@@ -70573,48 +70573,25 @@ bool alarmIsActive(void)
return g_AlarmTimer > 0;
}
GLOBAL_ASM(
glabel func0f09044c
/* f09044c: 44802000 */ mtc1 $zero,$f4
/* f090450: 240e0001 */ addiu $t6,$zero,0x1
/* f090454: 3c018007 */ lui $at,%hi(var800698e8)
/* f090458: ac2e98e8 */ sw $t6,%lo(var800698e8)($at)
/* f09045c: 27bdffe8 */ addiu $sp,$sp,-24
/* f090460: 3c018007 */ lui $at,%hi(var800698fc)
/* f090464: afbf0014 */ sw $ra,0x14($sp)
/* f090468: e42498fc */ swc1 $f4,%lo(var800698fc)($at)
/* f09046c: c4860000 */ lwc1 $f6,0x0($a0)
/* f090470: 3c028007 */ lui $v0,%hi(var800698ec)
/* f090474: 244298ec */ addiu $v0,$v0,%lo(var800698ec)
/* f090478: e4460000 */ swc1 $f6,0x0($v0)
/* f09047c: c4880004 */ lwc1 $f8,0x4($a0)
/* f090480: e4480004 */ swc1 $f8,0x4($v0)
/* f090484: c48a0008 */ lwc1 $f10,0x8($a0)
/* f090488: 0c003a61 */ jal mainGetStageNum
/* f09048c: e44a0008 */ swc1 $f10,0x8($v0)
/* f090490: 24010020 */ addiu $at,$zero,0x20
/* f090494: 14410007 */ bne $v0,$at,.L0f0904b4
/* f090498: 3c0142f0 */ lui $at,0x42f0
/* f09049c: 44818000 */ mtc1 $at,$f16
/* f0904a0: 3c01800a */ lui $at,%hi(var8009ce38)
/* f0904a4: e430ce38 */ swc1 $f16,%lo(var8009ce38)($at)
/* f0904a8: 3c01800a */ lui $at,%hi(var8009ce3c)
/* f0904ac: 10000008 */ b .L0f0904d0
/* f0904b0: ac20ce3c */ sw $zero,%lo(var8009ce3c)($at)
.L0f0904b4:
/* f0904b4: 3c014561 */ lui $at,0x4561
/* f0904b8: 44819000 */ mtc1 $at,$f18
/* f0904bc: 3c01800a */ lui $at,%hi(var8009ce38)
/* f0904c0: 240f0001 */ addiu $t7,$zero,0x1
/* f0904c4: e432ce38 */ swc1 $f18,%lo(var8009ce38)($at)
/* f0904c8: 3c01800a */ lui $at,%hi(var8009ce3c)
/* f0904cc: ac2fce3c */ sw $t7,%lo(var8009ce3c)($at)
.L0f0904d0:
/* f0904d0: 8fbf0014 */ lw $ra,0x14($sp)
/* f0904d4: 27bd0018 */ addiu $sp,$sp,0x18
/* f0904d8: 03e00008 */ jr $ra
/* f0904dc: 00000000 */ nop
);
void gasReleaseFromPos(struct coord *pos)
{
g_GasReleased = true;
var800698fc = 0;
g_GasPos.x = pos->x;
g_GasPos.y = pos->y;
g_GasPos.z = pos->z;
// Gas objects don't exist in PD, so this stage number might have carried
// over from GoldenEye.
if (mainGetStageNum() == STAGE_MP_G5BUILDING) {
var8009ce38 = 120;
var8009ce3c = false;
} else {
var8009ce38 = 3600;
var8009ce3c = true;
}
}
void func0f0904e0(void)
{
@@ -70635,8 +70612,8 @@ glabel func0f09054c
glabel var7f1ab19c
.word 0x453b8000
.text
/* f09054c: 3c028007 */ lui $v0,%hi(var800698e8)
/* f090550: 244298e8 */ addiu $v0,$v0,%lo(var800698e8)
/* f09054c: 3c028007 */ lui $v0,%hi(g_GasReleased)
/* f090550: 244298e8 */ addiu $v0,$v0,%lo(g_GasReleased)
/* f090554: 8c4e0000 */ lw $t6,0x0($v0)
/* f090558: 27bdffb0 */ addiu $sp,$sp,-80
/* f09055c: 44808000 */ mtc1 $zero,$f16
@@ -70779,8 +70756,8 @@ glabel var7f1ab19c
.L0f090774:
/* f090774: 3c048007 */ lui $a0,%hi(var80069900)
/* f090778: 8c849900 */ lw $a0,%lo(var80069900)($a0)
/* f09077c: 3c058007 */ lui $a1,%hi(var800698ec)
/* f090780: 24a598ec */ addiu $a1,$a1,%lo(var800698ec)
/* f09077c: 3c058007 */ lui $a1,%hi(g_GasPos)
/* f090780: 24a598ec */ addiu $a1,$a1,%lo(g_GasPos)
/* f090784: 1080001c */ beqz $a0,.L0f0907f8
/* f090788: 3c0643c8 */ lui $a2,0x43c8
/* f09078c: 3c017f1b */ lui $at,%hi(var7f1ab19c)
@@ -70825,8 +70802,8 @@ glabel func0f09054c
glabel var7f1ab19c
.word 0x453b8000
.text
/* f09054c: 3c028007 */ lui $v0,%hi(var800698e8)
/* f090550: 244298e8 */ addiu $v0,$v0,%lo(var800698e8)
/* f09054c: 3c028007 */ lui $v0,%hi(g_GasReleased)
/* f090550: 244298e8 */ addiu $v0,$v0,%lo(g_GasReleased)
/* f090554: 8c4e0000 */ lw $t6,0x0($v0)
/* f090558: 27bdffb0 */ addiu $sp,$sp,-80
/* f09055c: 44808000 */ mtc1 $zero,$f16
@@ -70969,8 +70946,8 @@ glabel var7f1ab19c
.L0f090774:
/* f090774: 3c048007 */ lui $a0,%hi(var80069900)
/* f090778: 8c849900 */ lw $a0,%lo(var80069900)($a0)
/* f09077c: 3c058007 */ lui $a1,%hi(var800698ec)
/* f090780: 24a598ec */ addiu $a1,$a1,%lo(var800698ec)
/* f09077c: 3c058007 */ lui $a1,%hi(g_GasPos)
/* f090780: 24a598ec */ addiu $a1,$a1,%lo(g_GasPos)
/* f090784: 1080001c */ beqz $a0,.L0f0907f8
/* f090788: 3c0643c8 */ lui $a2,0x43c8
/* f09078c: 3c017f1b */ lui $at,%hi(var7f1ab19c)
+1 -1
View File
@@ -3013,7 +3013,7 @@
#define OBJECTIVETYPE_ATTACHOBJ 0x21
#define OBJTYPE_22 0x22
#define OBJTYPE_BRIEFING 0x23
#define OBJTYPE_24 0x24
#define OBJTYPE_GASBOTTLE 0x24
#define OBJTYPE_RENAMEOBJ 0x25
#define OBJTYPE_PADLOCKEDDOOR 0x26
#define OBJTYPE_TRUCK 0x27
+2 -2
View File
@@ -227,8 +227,8 @@ extern s32 g_AlarmTimer;
extern struct audiohandle *g_AlarmAudioHandle;
extern f32 g_AlarmSpeakerWeight;
extern f32 var800698e4;
extern s32 var800698e8;
extern f32 var800698ec[3];
extern bool g_GasReleased;
extern struct coord g_GasPos;
extern u32 var800698f8;
extern f32 var800698fc;
extern struct audiohandle *var80069900;
+1 -1
View File
@@ -340,7 +340,7 @@ bool posIsInFrontOfDoor(struct coord *pos, struct doorobj *door);
void doorsChooseSwingDirection(struct prop *chrprop, struct doorobj *door);
bool propdoorInteract(struct prop *doorprop);
void alarmStopAudio(void);
void func0f09044c(struct coord *pos);
void gasReleaseFromPos(struct coord *pos);
void func0f0904e0(void);
bool func0f090520(void);
void func0f09054c(void);
+3
View File
@@ -127,6 +127,9 @@
#define briefing(value, text) \
0x23, value, text, 0,
#define gasbottle(scale, model, pad, flags, flags2, flags3, maxdamage) \
_generic_object(0x24, scale, model, pad, flags, flags2, flags3, maxdamage),
#define rename_object(objoffset, weapon, text, text2, text3, text4, text5) \
0x25, objoffset, weapon, text, text2, text3, text4, text5, 0, 0,