Decompile setupCommandGetObject

This commit is contained in:
Ryan Dwyer
2020-02-17 22:00:15 +10:00
parent 741122919d
commit 737d1c5700
8 changed files with 100 additions and 122 deletions
+2 -2
View File
@@ -6169,8 +6169,8 @@ bool ai00df(void)
s32 a = func0f092098(tag);
if (a >= 0) {
u32 d = func0f092004(tag->unk06 + a);
func0f0b9bac(d, cmd[4] | (cmd[3] << 8), cmd[6] | (cmd[5] << 8));
u32 *ptr = setupGetPtrToCommandByIndex(tag->unk06 + a);
func0f0b9bac(ptr, cmd[4] | (cmd[3] << 8), cmd[6] | (cmd[5] << 8));
}
}
+19 -19
View File
@@ -2044,7 +2044,7 @@ glabel func0f00ddbc
/* f00de40: 860c0004 */ lh $t4,0x4($s0)
/* f00de44: afac00bc */ sw $t4,0xbc($sp)
/* f00de48: 860d00d0 */ lh $t5,0xd0($s0)
/* f00de4c: 0fc24801 */ jal func0f092004
/* f00de4c: 0fc24801 */ jal setupGetPtrToCommandByIndex
/* f00de50: 01a52021 */ addu $a0,$t5,$a1
/* f00de54: afa200b8 */ sw $v0,0xb8($sp)
/* f00de58: 0fc2486d */ jal func0f0921b4
@@ -2710,7 +2710,7 @@ glabel func0f00e368
/* f00e808: e612006c */ swc1 $f18,0x6c($s0)
/* f00e80c: 8e0c00bc */ lw $t4,0xbc($s0)
/* f00e810: 8fad01cc */ lw $t5,0x1cc($sp)
/* f00e814: 0fc24801 */ jal func0f092004
/* f00e814: 0fc24801 */ jal setupGetPtrToCommandByIndex
/* f00e818: 018d2021 */ addu $a0,$t4,$t5
/* f00e81c: ae0200bc */ sw $v0,0xbc($s0)
.L0f00e820:
@@ -3912,7 +3912,7 @@ glabel func0f00f174
/* f00f940: 51e00006 */ beqzl $t7,.L0f00f95c
/* f00f944: 26310004 */ addiu $s1,$s1,0x4
/* f00f948: 8e190064 */ lw $t9,0x64($s0)
/* f00f94c: 0fc24801 */ jal func0f092004
/* f00f94c: 0fc24801 */ jal setupGetPtrToCommandByIndex
/* f00f950: 03332021 */ addu $a0,$t9,$s3
/* f00f954: ae020064 */ sw $v0,0x64($s0)
/* f00f958: 26310004 */ addiu $s1,$s1,0x4
@@ -4401,7 +4401,7 @@ glabel func0f00f174
/* f0100a4: 1000007a */ beqz $zero,.L0f010290
/* f0100a8: ae400088 */ sw $zero,0x88($s2)
/* f0100ac: 864b0006 */ lh $t3,0x6($s2)
/* f0100b0: 0fc24908 */ jal func0f092420
/* f0100b0: 0fc24908 */ jal setupCommandGetObject
/* f0100b4: 01732021 */ addu $a0,$t3,$s3
/* f0100b8: 10400004 */ beqz $v0,.L0f0100cc
/* f0100bc: ae42000c */ sw $v0,0xc($s2)
@@ -4414,7 +4414,7 @@ glabel func0f00f174
/* f0100d4: 1000006e */ beqz $zero,.L0f010290
/* f0100d8: 00000000 */ sll $zero,$zero,0x0
/* f0100dc: 8e4e0004 */ lw $t6,0x4($s2)
/* f0100e0: 0fc24908 */ jal func0f092420
/* f0100e0: 0fc24908 */ jal setupCommandGetObject
/* f0100e4: 01d32021 */ addu $a0,$t6,$s3
/* f0100e8: 10400004 */ beqz $v0,.L0f0100fc
/* f0100ec: ae420024 */ sw $v0,0x24($s2)
@@ -4665,7 +4665,7 @@ glabel func0f00f174
/* f010474: 11c000f6 */ beqz $t6,.L0f010850
/* f010478: 00000000 */ sll $zero,$zero,0x0
/* f01047c: 86420006 */ lh $v0,0x6($s2)
/* f010480: 0fc24908 */ jal func0f092420
/* f010480: 0fc24908 */ jal setupCommandGetObject
/* f010484: 02622021 */ addu $a0,$s3,$v0
/* f010488: 104000f1 */ beqz $v0,.L0f010850
/* f01048c: 00408025 */ or $s0,$v0,$zero
@@ -4685,11 +4685,11 @@ glabel func0f00f174
/* f0104c4: 100000e2 */ beqz $zero,.L0f010850
/* f0104c8: 00000000 */ sll $zero,$zero,0x0
/* f0104cc: 864b0004 */ lh $t3,0x4($s2)
/* f0104d0: 0fc24801 */ jal func0f092004
/* f0104d0: 0fc24801 */ jal setupGetPtrToCommandByIndex
/* f0104d4: 01732021 */ addu $a0,$t3,$s3
/* f0104d8: 864c0006 */ lh $t4,0x6($s2)
/* f0104dc: 00408025 */ or $s0,$v0,$zero
/* f0104e0: 0fc24801 */ jal func0f092004
/* f0104e0: 0fc24801 */ jal setupGetPtrToCommandByIndex
/* f0104e4: 01932021 */ addu $a0,$t4,$s3
/* f0104e8: 120000d9 */ beqz $s0,.L0f010850
/* f0104ec: 00402825 */ or $a1,$v0,$zero
@@ -4707,10 +4707,10 @@ glabel func0f00f174
/* f01051c: 00000000 */ sll $zero,$zero,0x0
/* f010520: 8e420004 */ lw $v0,0x4($s2)
/* f010524: 8e510008 */ lw $s1,0x8($s2)
/* f010528: 0fc24908 */ jal func0f092420
/* f010528: 0fc24908 */ jal setupCommandGetObject
/* f01052c: 02622021 */ addu $a0,$s3,$v0
/* f010530: 00408025 */ or $s0,$v0,$zero
/* f010534: 0fc24908 */ jal func0f092420
/* f010534: 0fc24908 */ jal setupCommandGetObject
/* f010538: 02712021 */ addu $a0,$s3,$s1
/* f01053c: 120000c4 */ beqz $s0,.L0f010850
/* f010540: 00000000 */ sll $zero,$zero,0x0
@@ -4735,14 +4735,14 @@ glabel func0f00f174
/* f01058c: 8e4c000c */ lw $t4,0xc($s2)
/* f010590: 8e510008 */ lw $s1,0x8($s2)
/* f010594: 02622021 */ addu $a0,$s3,$v0
/* f010598: 0fc24908 */ jal func0f092420
/* f010598: 0fc24908 */ jal setupCommandGetObject
/* f01059c: afac00bc */ sw $t4,0xbc($sp)
/* f0105a0: 00408025 */ or $s0,$v0,$zero
/* f0105a4: 0fc24908 */ jal func0f092420
/* f0105a4: 0fc24908 */ jal setupCommandGetObject
/* f0105a8: 02712021 */ addu $a0,$s3,$s1
/* f0105ac: 8fad00bc */ lw $t5,0xbc($sp)
/* f0105b0: 00408825 */ or $s1,$v0,$zero
/* f0105b4: 0fc24908 */ jal func0f092420
/* f0105b4: 0fc24908 */ jal setupCommandGetObject
/* f0105b8: 026d2021 */ addu $a0,$s3,$t5
/* f0105bc: 120000a4 */ beqz $s0,.L0f010850
/* f0105c0: 00000000 */ sll $zero,$zero,0x0
@@ -4782,10 +4782,10 @@ glabel func0f00f174
/* f010648: ac78000c */ sw $t8,0xc($v1)
/* f01064c: 8e420004 */ lw $v0,0x4($s2)
/* f010650: 8e510008 */ lw $s1,0x8($s2)
/* f010654: 0fc24908 */ jal func0f092420
/* f010654: 0fc24908 */ jal setupCommandGetObject
/* f010658: 02622021 */ addu $a0,$s3,$v0
/* f01065c: 00408025 */ or $s0,$v0,$zero
/* f010660: 0fc24908 */ jal func0f092420
/* f010660: 0fc24908 */ jal setupCommandGetObject
/* f010664: 02712021 */ addu $a0,$s3,$s1
/* f010668: 12000079 */ beqz $s0,.L0f010850
/* f01066c: 00000000 */ sll $zero,$zero,0x0
@@ -4816,13 +4816,13 @@ glabel func0f00f174
/* f0106d0: 8e58000c */ lw $t8,0xc($s2)
/* f0106d4: 00008025 */ or $s0,$zero,$zero
/* f0106d8: 02622021 */ addu $a0,$s3,$v0
/* f0106dc: 0fc24908 */ jal func0f092420
/* f0106dc: 0fc24908 */ jal setupCommandGetObject
/* f0106e0: afb8008c */ sw $t8,0x8c($sp)
/* f0106e4: 8fb90090 */ lw $t9,0x90($sp)
/* f0106e8: 00403025 */ or $a2,$v0,$zero
/* f0106ec: 13200005 */ beqz $t9,.L0f010704
/* f0106f0: 02792021 */ addu $a0,$s3,$t9
/* f0106f4: 0fc24908 */ jal func0f092420
/* f0106f4: 0fc24908 */ jal setupCommandGetObject
/* f0106f8: afa20088 */ sw $v0,0x88($sp)
/* f0106fc: 8fa60088 */ lw $a2,0x88($sp)
/* f010700: 00408825 */ or $s1,$v0,$zero
@@ -4830,7 +4830,7 @@ glabel func0f00f174
/* f010704: 8fa2008c */ lw $v0,0x8c($sp)
/* f010708: 10400006 */ beqz $v0,.L0f010724
/* f01070c: 02622021 */ addu $a0,$s3,$v0
/* f010710: 0fc24908 */ jal func0f092420
/* f010710: 0fc24908 */ jal setupCommandGetObject
/* f010714: afa60088 */ sw $a2,0x88($sp)
/* f010718: 00408025 */ or $s0,$v0,$zero
/* f01071c: 8fa2008c */ lw $v0,0x8c($sp)
@@ -4897,7 +4897,7 @@ glabel func0f00f174
/* f0107fc: 10000014 */ beqz $zero,.L0f010850
/* f010800: 00000000 */ sll $zero,$zero,0x0
/* f010804: 8e420004 */ lw $v0,0x4($s2)
/* f010808: 0fc24908 */ jal func0f092420
/* f010808: 0fc24908 */ jal setupCommandGetObject
/* f01080c: 02622021 */ addu $a0,$s3,$v0
/* f010810: 1040000f */ beqz $v0,.L0f010850
/* f010814: 00408025 */ or $s0,$v0,$zero
+71 -93
View File
@@ -1183,67 +1183,6 @@ const u32 var7f1ab2fc[] = {0x7f091fe0};
const u32 var7f1ab300[] = {0x7f091fd8};
const u32 var7f1ab304[] = {0x7f091fe8};
const u32 var7f1ab308[] = {0x7f091ff0};
const u32 var7f1ab30c[] = {0x7f092460};
const u32 var7f1ab310[] = {0x7f092468};
const u32 var7f1ab314[] = {0x7f092460};
const u32 var7f1ab318[] = {0x7f092460};
const u32 var7f1ab31c[] = {0x7f092460};
const u32 var7f1ab320[] = {0x7f092460};
const u32 var7f1ab324[] = {0x7f092460};
const u32 var7f1ab328[] = {0x7f092460};
const u32 var7f1ab32c[] = {0x7f092468};
const u32 var7f1ab330[] = {0x7f092460};
const u32 var7f1ab334[] = {0x7f092460};
const u32 var7f1ab338[] = {0x7f092460};
const u32 var7f1ab33c[] = {0x7f092460};
const u32 var7f1ab340[] = {0x7f092468};
const u32 var7f1ab344[] = {0x7f092460};
const u32 var7f1ab348[] = {0x7f092470};
const u32 var7f1ab34c[] = {0x7f092460};
const u32 var7f1ab350[] = {0x7f092468};
const u32 var7f1ab354[] = {0x7f092468};
const u32 var7f1ab358[] = {0x7f092460};
const u32 var7f1ab35c[] = {0x7f092460};
const u32 var7f1ab360[] = {0x7f092468};
const u32 var7f1ab364[] = {0x7f092468};
const u32 var7f1ab368[] = {0x7f092468};
const u32 var7f1ab36c[] = {0x7f092468};
const u32 var7f1ab370[] = {0x7f092468};
const u32 var7f1ab374[] = {0x7f092468};
const u32 var7f1ab378[] = {0x7f092468};
const u32 var7f1ab37c[] = {0x7f092468};
const u32 var7f1ab380[] = {0x7f092468};
const u32 var7f1ab384[] = {0x7f092468};
const u32 var7f1ab388[] = {0x7f092468};
const u32 var7f1ab38c[] = {0x7f092468};
const u32 var7f1ab390[] = {0x7f092468};
const u32 var7f1ab394[] = {0x7f092468};
const u32 var7f1ab398[] = {0x7f092460};
const u32 var7f1ab39c[] = {0x7f092468};
const u32 var7f1ab3a0[] = {0x7f092468};
const u32 var7f1ab3a4[] = {0x7f092460};
const u32 var7f1ab3a8[] = {0x7f092460};
const u32 var7f1ab3ac[] = {0x7f092460};
const u32 var7f1ab3b0[] = {0x7f092460};
const u32 var7f1ab3b4[] = {0x7f092460};
const u32 var7f1ab3b8[] = {0x7f092468};
const u32 var7f1ab3bc[] = {0x7f092460};
const u32 var7f1ab3c0[] = {0x7f092468};
const u32 var7f1ab3c4[] = {0x7f092460};
const u32 var7f1ab3c8[] = {0x7f092460};
const u32 var7f1ab3cc[] = {0x7f092468};
const u32 var7f1ab3d0[] = {0x7f092468};
const u32 var7f1ab3d4[] = {0x7f092460};
const u32 var7f1ab3d8[] = {0x7f092470};
const u32 var7f1ab3dc[] = {0x7f092460};
const u32 var7f1ab3e0[] = {0x7f092460};
const u32 var7f1ab3e4[] = {0x7f092460};
const u32 var7f1ab3e8[] = {0x7f092468};
const u32 var7f1ab3ec[] = {0x7f092460};
const u32 var7f1ab3f0[] = {0x7f092470};
const u32 var7f1ab3f4[] = {0x7f092460};
const u32 var7f1ab3f8[] = {0x00000000};
const u32 var7f1ab3fc[] = {0x00000000};
GLOBAL_ASM(
glabel func0f066310
@@ -28208,7 +28147,7 @@ glabel func0f07e474
/* f07e590: 0fc24849 */ jal func0f092124
/* f07e594: ae0b0040 */ sw $t3,0x40($s0)
/* f07e598: 86030006 */ lh $v1,0x6($s0)
/* f07e59c: 0fc24908 */ jal func0f092420
/* f07e59c: 0fc24908 */ jal setupCommandGetObject
/* f07e5a0: 00432021 */ addu $a0,$v0,$v1
/* f07e5a4: 5040002b */ beqzl $v0,.L0f07e654
/* f07e5a8: 920e0003 */ lbu $t6,0x3($s0)
@@ -50116,7 +50055,7 @@ glabel setupGetCommandLength
);
GLOBAL_ASM(
glabel func0f092004
glabel setupGetPtrToCommandByIndex
/* f092004: 27bdffd8 */ addiu $sp,$sp,-40
/* f092008: afb10018 */ sw $s1,0x18($sp)
/* f09200c: afb30020 */ sw $s3,0x20($sp)
@@ -50426,36 +50365,75 @@ glabel func0f0923d4
/* f09241c: 00000000 */ sll $zero,$zero,0x0
);
GLOBAL_ASM(
glabel func0f092420
/* f092420: 27bdffe8 */ addiu $sp,$sp,-24
/* f092424: afbf0014 */ sw $ra,0x14($sp)
/* f092428: 0fc24801 */ jal func0f092004
/* f09242c: 00000000 */ sll $zero,$zero,0x0
/* f092430: 1040000f */ beqz $v0,.L0f092470
/* f092434: 00401825 */ or $v1,$v0,$zero
/* f092438: 904e0003 */ lbu $t6,0x3($v0)
/* f09243c: 25cfffff */ addiu $t7,$t6,-1
/* f092440: 2de1003b */ sltiu $at,$t7,0x3b
/* f092444: 1020000a */ beqz $at,.L0f092470
/* f092448: 000f7880 */ sll $t7,$t7,0x2
/* f09244c: 3c017f1b */ lui $at,%hi(var7f1ab30c)
/* f092450: 002f0821 */ addu $at,$at,$t7
/* f092454: 8c2fb30c */ lw $t7,%lo(var7f1ab30c)($at)
/* f092458: 01e00008 */ jr $t7
/* f09245c: 00000000 */ sll $zero,$zero,0x0
/* f092460: 10000004 */ beqz $zero,.L0f092474
/* f092464: 00601025 */ or $v0,$v1,$zero
/* f092468: 10000002 */ beqz $zero,.L0f092474
/* f09246c: 00001025 */ or $v0,$zero,$zero
.L0f092470:
/* f092470: 00601025 */ or $v0,$v1,$zero
.L0f092474:
/* f092474: 8fbf0014 */ lw $ra,0x14($sp)
/* f092478: 27bd0018 */ addiu $sp,$sp,0x18
/* f09247c: 03e00008 */ jr $ra
/* f092480: 00000000 */ sll $zero,$zero,0x0
);
struct defaultobj *setupCommandGetObject(u32 cmdindex)
{
u32 *cmd = setupGetPtrToCommandByIndex(cmdindex);
if (cmd) {
switch ((u8)cmd[0]) {
case OBJTYPE_DOOR:
case OBJTYPE_BASIC:
case OBJTYPE_KEY:
case OBJTYPE_05:
case OBJTYPE_CAMERA:
case OBJTYPE_07:
case OBJTYPE_WEAPON:
case OBJTYPE_SINGLEMONITOR:
case OBJTYPE_MULTIMONITOR:
case OBJTYPE_0C:
case OBJTYPE_AUTOGUN:
case OBJTYPE_DEBRIS:
case OBJTYPE_11:
case OBJTYPE_MULTIAMMOCRATE:
case OBJTYPE_SHIELD:
case OBJTYPE_24:
case OBJTYPE_TRUCK:
case OBJTYPE_HELI:
case OBJTYPE_29:
case OBJTYPE_GLASS:
case OBJTYPE_2B:
case OBJTYPE_2D:
case OBJTYPE_TINTEDGLASS:
case OBJTYPE_LIFT:
case OBJTYPE_HOVERBIKE:
case OBJTYPE_HOVERPROP:
case OBJTYPE_VENTFAN:
case OBJTYPE_HOVERCAR:
case OBJTYPE_CHOPPER:
case OBJTYPE_ESCALATOR:
return (struct defaultobj *)cmd;
case OBJTYPE_DOORSCALE:
case OBJTYPE_CHR:
case OBJTYPE_LINKGUNS:
case OBJTYPE_12:
case OBJTYPE_LINKOBJS:
case OBJTYPE_TAG:
case OBJTYPE_BEGINOBJECTIVE:
case OBJTYPE_ENDOBJECTIVE:
case OBJECTIVETYPE_DESTROYOBJ:
case OBJECTIVETYPE_COMPFLAGS:
case OBJECTIVETYPE_FAILFLAGS:
case OBJECTIVETYPE_COLLECTOBJ:
case OBJECTIVETYPE_THROWOBJ:
case OBJECTIVETYPE_HOLOGRAPH:
case OBJECTIVETYPE_1F:
case OBJECTIVETYPE_ENTERROOM:
case OBJECTIVETYPE_ATTACHOBJ:
case OBJTYPE_22:
case OBJTYPE_BRIEFING:
case OBJTYPE_RENAMEOBJ:
case OBJTYPE_26:
case OBJTYPE_2C:
case OBJTYPE_CAMERA2:
case OBJTYPE_LINKSCENERY:
case OBJTYPE_LINKPATHS:
case OBJTYPE_PADEFFECT:
return NULL;
}
}
return (struct defaultobj *)cmd;
}
GLOBAL_ASM(
glabel func0f092484
+3 -3
View File
@@ -3896,14 +3896,14 @@ void warpBondToPad(s16 pad)
g_WarpPadId = pad;
}
void func0f0b9bac(s32 arg0, s32 arg1, s32 arg2)
void func0f0b9bac(u32 *cmd, s32 arg1, s32 arg2)
{
setTickMode(TICKMODE_3);
var80070744 = 0;
releaseObj(5);
func0f0c1d20();
g_WarpPadId = -1;
var8009ddec = arg0;
var8009ddec = cmd;
var8009de08 = arg1;
var8009de0c = arg2;
}
@@ -3915,7 +3915,7 @@ void func0f0b9c1c(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5)
releaseObj(5);
func0f0c1d20();
g_WarpPadId = -1;
var8009ddec = 0;
var8009ddec = NULL;
var8009ddf0 = arg0;
var8009ddf4 = arg1;
var8009ddf8 = arg2;
+1 -1
View File
@@ -16833,7 +16833,7 @@ f32 var8009dddc = 0;
f32 var8009dde0 = 0;
f32 var8009dde4 = 0;
s16 g_WarpPadId = 0;
u32 var8009ddec = 0;
u32 *var8009ddec = NULL;
f32 var8009ddf0 = 0;
f32 var8009ddf4 = 0;
f32 var8009ddf8 = 0;
+2 -2
View File
@@ -340,7 +340,7 @@ u32 func0f091250(void);
u32 func0f0912dc(void);
u32 objSetPartVisible(struct defaultobj *obj, u32 arg1, u32 arg2);
s32 setupGetCommandLength(u32 *ptr);
u32 func0f092004(u32 arg0);
u32 *setupGetPtrToCommandByIndex(u32 cmdindex);
u32 func0f092098(struct tag *tag);
u32 func0f092124(void);
u32 func0f0921b4(s32 modelnum);
@@ -348,7 +348,7 @@ u32 func0f09220c(void);
u32 func0f092304(void);
u32 func0f09233c(void);
u32 func0f0923d4(void);
u32 func0f092420(void);
struct defaultobj *setupCommandGetObject(u32 cmdindex);
u32 func0f092484(void);
#endif
+1 -1
View File
@@ -93,7 +93,7 @@ void func0f0b9674(void);
void func0f0b9a20(void);
void func0f0b9afc(void);
void warpBondToPad(s16 pad_id);
void func0f0b9bac(s32 arg0, s32 arg1, s32 arg2);
void func0f0b9bac(u32 *cmd, s32 arg1, s32 arg2);
void func0f0b9c1c(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
void func0f0ba010(void);
void currentPlayerSetFadeColour(s32 r, s32 g, s32 b, f32 a);
+1 -1
View File
@@ -617,7 +617,7 @@ extern f32 var8009dddc;
extern f32 var8009dde0;
extern f32 var8009dde4;
extern s16 g_WarpPadId;
extern u32 var8009ddec;
extern u32 *var8009ddec;
extern f32 var8009ddf0;
extern f32 var8009ddf4;
extern f32 var8009ddf8;