Decompile coordTriggerProxies
This commit is contained in:
parent
e7ce33c495
commit
b8ea4e57a0
|
@ -2282,7 +2282,7 @@ glabel var7f1adb00
|
|||
.PF0f0d2558:
|
||||
/* f0d2558: 24050001 */ li $a1,0x1
|
||||
/* f0d255c: 8de4001c */ lw $a0,0x1c($t7)
|
||||
/* f0d2560: 0fc22ac0 */ jal func0f08abd4
|
||||
/* f0d2560: 0fc22ac0 */ jal coordTriggerProxies
|
||||
/* f0d2564: 24840008 */ addiu $a0,$a0,0x8
|
||||
/* f0d2568: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
.PF0f0d256c:
|
||||
|
@ -3894,7 +3894,7 @@ glabel var7f1adb00
|
|||
.L0f0d1fb4:
|
||||
/* f0d1fb4: 24050001 */ addiu $a1,$zero,0x1
|
||||
/* f0d1fb8: 8f04001c */ lw $a0,0x1c($t8)
|
||||
/* f0d1fbc: 0fc22af5 */ jal func0f08abd4
|
||||
/* f0d1fbc: 0fc22af5 */ jal coordTriggerProxies
|
||||
/* f0d1fc0: 24840008 */ addiu $a0,$a0,8
|
||||
/* f0d1fc4: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
.L0f0d1fc8:
|
||||
|
@ -5525,7 +5525,7 @@ glabel var7f1adb00
|
|||
.NB0f0cf780:
|
||||
/* f0cf780: 24050001 */ addiu $a1,$zero,0x1
|
||||
/* f0cf784: 8dc4001c */ lw $a0,0x1c($t6)
|
||||
/* f0cf788: 0fc22507 */ jal func0f08abd4
|
||||
/* f0cf788: 0fc22507 */ jal coordTriggerProxies
|
||||
/* f0cf78c: 24840008 */ addiu $a0,$a0,0x8
|
||||
/* f0cf790: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
.NB0f0cf794:
|
||||
|
|
|
@ -10467,7 +10467,7 @@ bool chrDropItem(struct chrdata *chr, u32 modelnum, u32 weaponnum)
|
|||
if (weapon && weapon->base.prop) {
|
||||
modelSetScale(weapon->base.model, weapon->base.model->scale);
|
||||
propReparent(weapon->base.prop, chr->prop);
|
||||
weapon->unk62 = PALDOWN(720);
|
||||
weapon->timer240 = PALDOWN(720);
|
||||
propobjSetDropped(weapon->base.prop, DROPREASON_1);
|
||||
chr->hidden |= CHRHFLAG_00000001;
|
||||
|
||||
|
@ -22332,7 +22332,7 @@ void chrTickThrowGrenade(struct chrdata *chr)
|
|||
weapon = weaponprop->weapon;
|
||||
propobjSetDropped(weaponprop, DROPREASON_3);
|
||||
chr->hidden |= CHRHFLAG_00000001;
|
||||
weapon->unk62 = PALDOWN(240);
|
||||
weapon->timer240 = PALDOWN(240);
|
||||
}
|
||||
|
||||
frame2 = modelGetCurAnimFrame(model);
|
||||
|
@ -22360,7 +22360,7 @@ bool chrDetectDangerousObject(struct chrdata *chr, u8 flags)
|
|||
if (prop) {
|
||||
if ((flags & 1) && prop->weapon &&
|
||||
prop->weapon->weaponnum == WEAPON_GRENADE &&
|
||||
prop->weapon->unk62 < PALDOWN(480)) {
|
||||
prop->weapon->timer240 < PALDOWN(480)) {
|
||||
pass = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -332,8 +332,8 @@ void setupClearProxyMines(void)
|
|||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAYCOUNT(g_ProxyMines); i++) {
|
||||
g_ProxyMines[i] = NULL;
|
||||
for (i = 0; i < ARRAYCOUNT(g_Proxies); i++) {
|
||||
g_Proxies[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11257,11 +11257,11 @@ struct weaponobj *func0f09ee18(struct chrdata *chr, struct shorthand *hand, stru
|
|||
if (tmpthing != NULL) {
|
||||
thing = tmpthing;
|
||||
|
||||
thing->unk62 = func->activatetime60;
|
||||
// Note this timer is converted to 240 time immediately below
|
||||
thing->timer240 = func->activatetime60;
|
||||
|
||||
// Convert to 240 time
|
||||
if (thing->unk62 >= 2) {
|
||||
thing->unk62 = PALDOWN(thing->unk62 * 4);
|
||||
if (thing->timer240 >= 2) {
|
||||
thing->timer240 = PALDOWN(thing->timer240 * 4);
|
||||
}
|
||||
|
||||
if (thing->weaponnum == WEAPON_GRENADE || thing->weaponnum == WEAPON_NBOMB) {
|
||||
|
@ -12389,7 +12389,7 @@ void func0f09f974(s32 handnum, struct weaponfunc_shootprojectile *func)
|
|||
hand->rocket = obj;
|
||||
hand->firedrocket = false;
|
||||
|
||||
obj->unk62 = 1;
|
||||
obj->timer240 = 1;
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
obj->base.flags |= OBJFLAG_00800000;
|
||||
#endif
|
||||
|
@ -17104,7 +17104,7 @@ void currentPlayerLoseGun(struct prop *attackerprop)
|
|||
struct weaponobj *rocket = g_Vars.currentplayer->slayerrocket;
|
||||
|
||||
if (rocket && rocket->base.prop) {
|
||||
rocket->unk62 = 0;
|
||||
rocket->timer240 = 0;
|
||||
}
|
||||
|
||||
player->visionmode = VISIONMODE_NORMAL;
|
||||
|
|
|
@ -514,7 +514,7 @@ void aibotCreateSlayerRocket(struct chrdata *chr)
|
|||
|
||||
if (rocket->base.hidden & OBJHFLAG_AIRBORNE) {
|
||||
struct prop *target = chrGetTargetProp(chr);
|
||||
rocket->unk62 = -1;
|
||||
rocket->timer240 = -1;
|
||||
rocket->base.projectile->unk010 = 7.5;
|
||||
rocket->base.projectile->unk014 = b;
|
||||
rocket->base.projectile->unk018 = a;
|
||||
|
@ -526,7 +526,7 @@ void aibotCreateSlayerRocket(struct chrdata *chr)
|
|||
-1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1);
|
||||
|
||||
if (!func0f19a6d0(chr, &chr->prop->pos, &target->pos, chr->prop->rooms, target->rooms, rocket->base.projectile)) {
|
||||
rocket->unk62 = 0;
|
||||
rocket->timer240 = 0; // blow up rocket
|
||||
} else {
|
||||
func0f19a7d0(rocket->base.projectile->waypads[0], &rocket->base.projectile->pos);
|
||||
chr->aibot->unk044 = rocket->base.prop;
|
||||
|
|
|
@ -101,7 +101,7 @@ const char var7f1a9fd0[] = "kkg";
|
|||
const char var7f1a9fd4[] = "kkd";
|
||||
const char var7f1a9fd8[] = "kkp";
|
||||
|
||||
struct weaponobj *g_ProxyMines[30];
|
||||
struct weaponobj *g_Proxies[30];
|
||||
u32 var8009ce38;
|
||||
u32 var8009ce3c;
|
||||
s32 var8009ce40;
|
||||
|
@ -4638,7 +4638,7 @@ void func0f069c70(struct defaultobj *obj, bool arg1, bool arg2)
|
|||
|
||||
prop = obj->prop;
|
||||
func0f069630(prop, obj->nextcol, obj->floorcol);
|
||||
func0f08abd4(&obj->prop->pos, 0);
|
||||
coordTriggerProxies(&obj->prop->pos, false);
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
|
@ -67429,10 +67429,10 @@ struct weaponobj *weaponFindThrown(s32 weaponnum)
|
|||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08ab64
|
||||
/* f08ab64: 3c03800a */ lui $v1,%hi(g_ProxyMines)
|
||||
/* f08ab64: 3c03800a */ lui $v1,%hi(g_Proxies)
|
||||
/* f08ab68: 3c02800a */ lui $v0,%hi(var8009ce38)
|
||||
/* f08ab6c: 2442ce38 */ addiu $v0,$v0,%lo(var8009ce38)
|
||||
/* f08ab70: 2463cdc0 */ addiu $v1,$v1,%lo(g_ProxyMines)
|
||||
/* f08ab70: 2463cdc0 */ addiu $v1,$v1,%lo(g_Proxies)
|
||||
/* f08ab74: 8c6e0000 */ lw $t6,0x0($v1)
|
||||
.L0f08ab78:
|
||||
/* f08ab78: 55c00004 */ bnezl $t6,.L0f08ab8c
|
||||
|
@ -67449,10 +67449,10 @@ glabel func0f08ab64
|
|||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08ab9c
|
||||
/* f08ab9c: 3c03800a */ lui $v1,%hi(g_ProxyMines)
|
||||
/* f08ab9c: 3c03800a */ lui $v1,%hi(g_Proxies)
|
||||
/* f08aba0: 3c02800a */ lui $v0,%hi(var8009ce38)
|
||||
/* f08aba4: 2442ce38 */ addiu $v0,$v0,%lo(var8009ce38)
|
||||
/* f08aba8: 2463cdc0 */ addiu $v1,$v1,%lo(g_ProxyMines)
|
||||
/* f08aba8: 2463cdc0 */ addiu $v1,$v1,%lo(g_Proxies)
|
||||
/* f08abac: 8c6e0000 */ lw $t6,0x0($v1)
|
||||
.L0f08abb0:
|
||||
/* f08abb0: 548e0004 */ bnel $a0,$t6,.L0f08abc4
|
||||
|
@ -67467,71 +67467,35 @@ glabel func0f08ab9c
|
|||
/* f08abd0: 00000000 */ nop
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08abd4
|
||||
.late_rodata
|
||||
glabel var7f1aae88
|
||||
.word 0x47742400
|
||||
.text
|
||||
/* f08abd4: 27bdffe8 */ addiu $sp,$sp,-24
|
||||
/* f08abd8: f7b60010 */ sdc1 $f22,0x10($sp)
|
||||
/* f08abdc: 3c03800a */ lui $v1,%hi(g_ProxyMines)
|
||||
/* f08abe0: 3c017f1b */ lui $at,%hi(var7f1aae88)
|
||||
/* f08abe4: 3c0b800a */ lui $t3,%hi(var8009ce38)
|
||||
/* f08abe8: f7b40008 */ sdc1 $f20,0x8($sp)
|
||||
/* f08abec: 00803025 */ or $a2,$a0,$zero
|
||||
/* f08abf0: 00a03825 */ or $a3,$a1,$zero
|
||||
/* f08abf4: 256bce38 */ addiu $t3,$t3,%lo(var8009ce38)
|
||||
/* f08abf8: c436ae88 */ lwc1 $f22,%lo(var7f1aae88)($at)
|
||||
/* f08abfc: 2463cdc0 */ addiu $v1,$v1,%lo(g_ProxyMines)
|
||||
/* f08ac00: 240a001e */ addiu $t2,$zero,0x1e
|
||||
/* f08ac04: 2409000f */ addiu $t1,$zero,0xf
|
||||
/* f08ac08: 24080001 */ addiu $t0,$zero,0x1
|
||||
/* f08ac0c: 8c620000 */ lw $v0,0x0($v1)
|
||||
.L0f08ac10:
|
||||
/* f08ac10: 24630004 */ addiu $v1,$v1,0x4
|
||||
/* f08ac14: 10400020 */ beqz $v0,.L0f08ac98
|
||||
/* f08ac18: 00000000 */ nop
|
||||
/* f08ac1c: 844e0062 */ lh $t6,0x62($v0)
|
||||
/* f08ac20: 150e001d */ bne $t0,$t6,.L0f08ac98
|
||||
/* f08ac24: 00000000 */ nop
|
||||
/* f08ac28: 9044005c */ lbu $a0,0x5c($v0)
|
||||
/* f08ac2c: 4600b006 */ mov.s $f0,$f22
|
||||
/* f08ac30: c4cc0000 */ lwc1 $f12,0x0($a2)
|
||||
/* f08ac34: c4d00004 */ lwc1 $f16,0x4($a2)
|
||||
/* f08ac38: 15240002 */ bne $t1,$a0,.L0f08ac44
|
||||
/* f08ac3c: c4d40008 */ lwc1 $f20,0x8($a2)
|
||||
/* f08ac40: 4616b000 */ add.s $f0,$f22,$f22
|
||||
.L0f08ac44:
|
||||
/* f08ac44: 8c450014 */ lw $a1,0x14($v0)
|
||||
/* f08ac48: c4a40008 */ lwc1 $f4,0x8($a1)
|
||||
/* f08ac4c: c4a6000c */ lwc1 $f6,0xc($a1)
|
||||
/* f08ac50: c4a80010 */ lwc1 $f8,0x10($a1)
|
||||
/* f08ac54: 46046081 */ sub.s $f2,$f12,$f4
|
||||
/* f08ac58: 46068381 */ sub.s $f14,$f16,$f6
|
||||
/* f08ac5c: 46021282 */ mul.s $f10,$f2,$f2
|
||||
/* f08ac60: 4608a481 */ sub.s $f18,$f20,$f8
|
||||
/* f08ac64: 460e7102 */ mul.s $f4,$f14,$f14
|
||||
/* f08ac68: 46045180 */ add.s $f6,$f10,$f4
|
||||
/* f08ac6c: 46129202 */ mul.s $f8,$f18,$f18
|
||||
/* f08ac70: 46083280 */ add.s $f10,$f6,$f8
|
||||
/* f08ac74: 4600503c */ c.lt.s $f10,$f0
|
||||
/* f08ac78: 00000000 */ nop
|
||||
/* f08ac7c: 45000006 */ bc1f .L0f08ac98
|
||||
/* f08ac80: 00000000 */ nop
|
||||
/* f08ac84: 55440004 */ bnel $t2,$a0,.L0f08ac98
|
||||
/* f08ac88: a4400062 */ sh $zero,0x62($v0)
|
||||
/* f08ac8c: 14e80002 */ bne $a3,$t0,.L0f08ac98
|
||||
/* f08ac90: 00000000 */ nop
|
||||
/* f08ac94: a4400062 */ sh $zero,0x62($v0)
|
||||
.L0f08ac98:
|
||||
/* f08ac98: 546bffdd */ bnel $v1,$t3,.L0f08ac10
|
||||
/* f08ac9c: 8c620000 */ lw $v0,0x0($v1)
|
||||
/* f08aca0: d7b40008 */ ldc1 $f20,0x8($sp)
|
||||
/* f08aca4: d7b60010 */ ldc1 $f22,0x10($sp)
|
||||
/* f08aca8: 03e00008 */ jr $ra
|
||||
/* f08acac: 27bd0018 */ addiu $sp,$sp,0x18
|
||||
);
|
||||
void coordTriggerProxies(struct coord *pos, bool arg1)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAYCOUNT(g_Proxies); i++) {
|
||||
struct weaponobj *weapon = g_Proxies[i];
|
||||
|
||||
if (weapon && weapon->timer240 == 1) {
|
||||
f32 xdiff;
|
||||
f32 ydiff;
|
||||
f32 zdiff;
|
||||
f32 range = 250 * 250;
|
||||
|
||||
if (weapon->weaponnum == WEAPON_DRAGON) {
|
||||
range += range;
|
||||
}
|
||||
|
||||
xdiff = pos->x - weapon->base.prop->pos.x;
|
||||
ydiff = pos->y - weapon->base.prop->pos.y;
|
||||
zdiff = pos->z - weapon->base.prop->pos.z;
|
||||
|
||||
if (xdiff * xdiff + ydiff * ydiff + zdiff * zdiff < range) {
|
||||
if (weapon->weaponnum != WEAPON_GRENADE || arg1 == true) {
|
||||
weapon->timer240 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
GLOBAL_ASM(
|
||||
|
@ -67585,7 +67549,7 @@ glabel func0f08acb0
|
|||
/* f08ad64: 0fc0de6c */ jal chrCalculatePosition
|
||||
/* f08ad68: 02402825 */ or $a1,$s2,$zero
|
||||
/* f08ad6c: 02402025 */ or $a0,$s2,$zero
|
||||
/* f08ad70: 0fc22af5 */ jal func0f08abd4
|
||||
/* f08ad70: 0fc22af5 */ jal coordTriggerProxies
|
||||
/* f08ad74: 24050001 */ addiu $a1,$zero,0x1
|
||||
.L0f08ad78:
|
||||
/* f08ad78: 26310368 */ addiu $s1,$s1,0x368
|
||||
|
@ -67652,7 +67616,7 @@ glabel func0f08acb0
|
|||
/* f08959c: 0fc0dcb4 */ jal chrCalculatePosition
|
||||
/* f0895a0: 02402825 */ or $a1,$s2,$zero
|
||||
/* f0895a4: 02402025 */ or $a0,$s2,$zero
|
||||
/* f0895a8: 0fc22507 */ jal func0f08abd4
|
||||
/* f0895a8: 0fc22507 */ jal coordTriggerProxies
|
||||
/* f0895ac: 24050001 */ addiu $a1,$zero,0x1
|
||||
.NB0f0895b0:
|
||||
/* f0895b0: 26310368 */ addiu $s1,$s1,0x368
|
||||
|
|
|
@ -2997,10 +2997,10 @@ bool frIsAmmoWasted(void)
|
|||
g_FrData.proxyendtimer -= g_Vars.lvupdate240_60;
|
||||
|
||||
if (g_FrData.proxyendtimer <= 0) {
|
||||
// Timer has just hit zero - remove all mines
|
||||
for (i = 0; i < ARRAYCOUNT(g_ProxyMines); i++) {
|
||||
if (g_ProxyMines[i]) {
|
||||
g_ProxyMines[i]->unk62 = 0;
|
||||
// Timer has just hit zero - remove all proxy items
|
||||
for (i = 0; i < ARRAYCOUNT(g_Proxies); i++) {
|
||||
if (g_Proxies[i]) {
|
||||
g_Proxies[i]->timer240 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3472,7 +3472,7 @@ glabel var7f1b94e4
|
|||
/* f1a10b4: 14610003 */ bne $v1,$at,.PF0f1a10c4
|
||||
.PF0f1a10b8:
|
||||
/* f1a10b8: 26240008 */ addiu $a0,$s1,0x8
|
||||
/* f1a10bc: 0fc22ac0 */ jal func0f08abd4
|
||||
/* f1a10bc: 0fc22ac0 */ jal coordTriggerProxies
|
||||
/* f1a10c0: 24050001 */ li $a1,0x1
|
||||
.PF0f1a10c4:
|
||||
/* f1a10c4: 920a0043 */ lbu $t2,0x43($s0)
|
||||
|
@ -4572,7 +4572,7 @@ glabel var7f1b94e4
|
|||
/* f19ffa0: 14610003 */ bne $v1,$at,.L0f19ffb0
|
||||
.L0f19ffa4:
|
||||
/* f19ffa4: 26240008 */ addiu $a0,$s1,0x8
|
||||
/* f19ffa8: 0fc22af5 */ jal func0f08abd4
|
||||
/* f19ffa8: 0fc22af5 */ jal coordTriggerProxies
|
||||
/* f19ffac: 24050001 */ addiu $a1,$zero,0x1
|
||||
.L0f19ffb0:
|
||||
/* f19ffb0: 920a0043 */ lbu $t2,0x43($s0)
|
||||
|
@ -5685,7 +5685,7 @@ glabel var7f1b94e4
|
|||
/* f199fa8: 14610003 */ bne $v1,$at,.NB0f199fb8
|
||||
.NB0f199fac:
|
||||
/* f199fac: 26240008 */ addiu $a0,$s1,0x8
|
||||
/* f199fb0: 0fc22507 */ jal func0f08abd4
|
||||
/* f199fb0: 0fc22507 */ jal coordTriggerProxies
|
||||
/* f199fb4: 24050001 */ addiu $a1,$zero,0x1
|
||||
.NB0f199fb8:
|
||||
/* f199fb8: 920b0043 */ lbu $t3,0x43($s0)
|
||||
|
@ -6572,7 +6572,7 @@ glabel var7f1b94e4
|
|||
// switch (weaponnum2) {
|
||||
// case WEAPON_GRENADE:
|
||||
// case WEAPON_PROXIMITYMINE:
|
||||
// func0f08abd4(&prop->pos, 1);
|
||||
// coordTriggerProxies(&prop->pos, 1);
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
|
|
|
@ -108,7 +108,7 @@ extern struct var8009cda4 *var8009cda4;
|
|||
extern struct prop *var8009cda8;
|
||||
extern u32 var8009cdac;
|
||||
extern u32 var8009cdb0;
|
||||
extern struct weaponobj *g_ProxyMines[30];
|
||||
extern struct weaponobj *g_Proxies[30];
|
||||
extern s32 var8009ce40;
|
||||
extern s32 var8009ce44;
|
||||
extern s32 var8009ce48;
|
||||
|
|
|
@ -276,7 +276,7 @@ struct weaponobj *func0f08aa70(s32 weaponnum, struct prop *prop);
|
|||
struct weaponobj *weaponFindThrown(s32 weaponnum);
|
||||
u32 func0f08ab64(void);
|
||||
u32 func0f08ab9c(void);
|
||||
void func0f08abd4(struct coord *pos, u32 arg1);
|
||||
void coordTriggerProxies(struct coord *pos, bool arg1);
|
||||
void func0f08acb0(void);
|
||||
void propweaponSetDual(struct weaponobj *weapon1, struct weaponobj *weapon2);
|
||||
u32 func0f08adc8(void);
|
||||
|
|
|
@ -1740,12 +1740,11 @@ struct weaponobj { // objtype 0x08
|
|||
/*0x61*/ s8 dualweaponnum;
|
||||
|
||||
/**
|
||||
* Appears to have multiple uses:
|
||||
* Grenades = timer?
|
||||
* Proxy mines = timer240 (counts down)
|
||||
* CTC briefcase = team index
|
||||
* timer240 is used for activation of proxy Dragons, grenades and proxy
|
||||
* mines. It ticks down to 1 where it becomes active, and set to 0 when the
|
||||
* item should explode.
|
||||
*/
|
||||
/*0x62*/ s16 unk62;
|
||||
/*0x62*/ s16 timer240;
|
||||
|
||||
/*0x64*/ struct weaponobj *dualweapon; // other weapon when dual wielding
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue