Decompile bullettailTick

This commit is contained in:
Ryan Dwyer 2020-06-28 16:51:57 +10:00
parent 80eef9c7fd
commit 25767b71a0
7 changed files with 44 additions and 96 deletions

View File

@ -4551,11 +4551,11 @@ bool propchrDoFireslotThing(struct prop *prop)
struct chrdata *chr = prop->chr;
if (chr->fireslot[0] >= 0) {
func0f0adbbc(&g_Fireslots[chr->fireslot[0]].unk04);
bullettailTick(&g_Fireslots[chr->fireslot[0]].bullettail);
}
if (chr->fireslot[1] >= 0) {
func0f0adbbc(&g_Fireslots[chr->fireslot[1]].unk04);
bullettailTick(&g_Fireslots[chr->fireslot[1]].bullettail);
}
if (chr->aibot && chr->aibot->unk058 > 0) {

View File

@ -17815,10 +17815,10 @@ glabel func0f041a74
/* f041b78: a058003f */ sb $t8,0x3f($v0)
.L0f041b7c:
/* f041b7c: 8e190348 */ lw $t9,0x348($s0)
/* f041b80: 0fc2b6ef */ jal func0f0adbbc
/* f041b80: 0fc2b6ef */ jal bullettailTick
/* f041b84: 8f240004 */ lw $a0,0x4($t9)
/* f041b88: 8e08034c */ lw $t0,0x34c($s0)
/* f041b8c: 0fc2b6ef */ jal func0f0adbbc
/* f041b8c: 0fc2b6ef */ jal bullettailTick
/* f041b90: 8d040004 */ lw $a0,0x4($t0)
/* f041b94: 10000027 */ b .L0f041c34
/* f041b98: 8fbf0024 */ lw $ra,0x24($sp)

View File

@ -2090,82 +2090,30 @@ glabel var7f1accf4
/* f0adbb8: 27bd0190 */ addiu $sp,$sp,0x190
);
GLOBAL_ASM(
glabel func0f0adbbc
/* f0adbbc: 27bdffe8 */ addiu $sp,$sp,-24
/* f0adbc0: afbf0014 */ sw $ra,0x14($sp)
/* f0adbc4: 80820000 */ lb $v0,0x0($a0)
/* f0adbc8: 0442003c */ bltzl $v0,.L0f0adcbc
/* f0adbcc: 8fbf0014 */ lw $ra,0x14($sp)
/* f0adbd0: 808e0001 */ lb $t6,0x1($a0)
/* f0adbd4: 2401fffe */ addiu $at,$zero,-2
/* f0adbd8: 244f0001 */ addiu $t7,$v0,0x1
/* f0adbdc: 15c10009 */ bne $t6,$at,.L0f0adc04
/* f0adbe0: 00000000 */ nop
/* f0adbe4: a08f0000 */ sb $t7,0x0($a0)
/* f0adbe8: 80980000 */ lb $t8,0x0($a0)
/* f0adbec: 2419ffff */ addiu $t9,$zero,-1
/* f0adbf0: 2b010002 */ slti $at,$t8,0x2
/* f0adbf4: 54200031 */ bnezl $at,.L0f0adcbc
/* f0adbf8: 8fbf0014 */ lw $ra,0x14($sp)
/* f0adbfc: 1000002e */ b .L0f0adcb8
/* f0adc00: a0990000 */ sb $t9,0x0($a0)
.L0f0adc04:
/* f0adc04: 3c02800a */ lui $v0,%hi(g_Vars)
/* f0adc08: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars)
/* f0adc0c: 8c480034 */ lw $t0,0x34($v0)
/* f0adc10: 29010009 */ slti $at,$t0,0x9
/* f0adc14: 10200008 */ beqz $at,.L0f0adc38
/* f0adc18: 00000000 */ nop
/* f0adc1c: c4840020 */ lwc1 $f4,0x20($a0)
/* f0adc20: c4460044 */ lwc1 $f6,0x44($v0)
/* f0adc24: c48a0028 */ lwc1 $f10,0x28($a0)
/* f0adc28: 46062202 */ mul.s $f8,$f4,$f6
/* f0adc2c: 46085400 */ add.s $f16,$f10,$f8
/* f0adc30: 10000019 */ b .L0f0adc98
/* f0adc34: e4900028 */ swc1 $f16,0x28($a0)
.L0f0adc38:
/* f0adc38: 0c004b70 */ jal random
/* f0adc3c: afa40018 */ sw $a0,0x18($sp)
/* f0adc40: 44829000 */ mtc1 $v0,$f18
/* f0adc44: 8fa40018 */ lw $a0,0x18($sp)
/* f0adc48: 04410005 */ bgez $v0,.L0f0adc60
/* f0adc4c: 46809120 */ cvt.s.w $f4,$f18
/* f0adc50: 3c014f80 */ lui $at,0x4f80
/* f0adc54: 44813000 */ mtc1 $at,$f6
/* f0adc58: 00000000 */ nop
/* f0adc5c: 46062100 */ add.s $f4,$f4,$f6
.L0f0adc60:
/* f0adc60: 3c012f80 */ lui $at,0x2f80
/* f0adc64: 44815000 */ mtc1 $at,$f10
/* f0adc68: 3c013f00 */ lui $at,0x3f00
/* f0adc6c: 44818000 */ mtc1 $at,$f16
/* f0adc70: 460a2202 */ mul.s $f8,$f4,$f10
/* f0adc74: 3c014000 */ lui $at,0x4000
/* f0adc78: 44813000 */ mtc1 $at,$f6
/* f0adc7c: c48a0020 */ lwc1 $f10,0x20($a0)
/* f0adc80: 46104482 */ mul.s $f18,$f8,$f16
/* f0adc84: c4900028 */ lwc1 $f16,0x28($a0)
/* f0adc88: 46123100 */ add.s $f4,$f6,$f18
/* f0adc8c: 46045202 */ mul.s $f8,$f10,$f4
/* f0adc90: 46088180 */ add.s $f6,$f16,$f8
/* f0adc94: e4860028 */ swc1 $f6,0x28($a0)
.L0f0adc98:
/* f0adc98: c4920028 */ lwc1 $f18,0x28($a0)
/* f0adc9c: c48a001c */ lwc1 $f10,0x1c($a0)
/* f0adca0: 2409ffff */ addiu $t1,$zero,-1
/* f0adca4: 4612503e */ c.le.s $f10,$f18
/* f0adca8: 00000000 */ nop
/* f0adcac: 45020003 */ bc1fl .L0f0adcbc
/* f0adcb0: 8fbf0014 */ lw $ra,0x14($sp)
/* f0adcb4: a0890000 */ sb $t1,0x0($a0)
.L0f0adcb8:
/* f0adcb8: 8fbf0014 */ lw $ra,0x14($sp)
.L0f0adcbc:
/* f0adcbc: 27bd0018 */ addiu $sp,$sp,0x18
/* f0adcc0: 03e00008 */ jr $ra
/* f0adcc4: 00000000 */ nop
);
void bullettailTick(struct bullettail *tail)
{
if (tail->age >= 0) {
if (tail->unk01 == -2) {
tail->age++;
if (tail->age > 1) {
tail->age = -1;
}
} else {
if (g_Vars.lvupdate240 <= 8) {
// Not lagging
tail->dist += tail->speed * g_Vars.lvupdate240f;
} else {
// Lagging
tail->dist += tail->speed * (2 + random() * (1.0f / U32_MAX) * 0.5f);
}
if (tail->dist >= tail->maxdist) {
tail->age = -1;
}
}
}
}
GLOBAL_ASM(
glabel func0f0adcc8

View File

@ -13910,7 +13910,7 @@ glabel func0f0c228c
/* f0c22a0: 3c04800a */ lui $a0,%hi(g_Vars+0x64)
/* f0c22a4: 008e2021 */ addu $a0,$a0,$t6
/* f0c22a8: 8c84a024 */ lw $a0,%lo(g_Vars+0x64)($a0)
/* f0c22ac: 0fc2b6ef */ jal func0f0adbbc
/* f0c22ac: 0fc2b6ef */ jal bullettailTick
/* f0c22b0: 24840814 */ addiu $a0,$a0,2068
/* f0c22b4: 0fc4a25f */ jal propGetPlayerNum
/* f0c22b8: 8fa40020 */ lw $a0,0x20($sp)
@ -13918,7 +13918,7 @@ glabel func0f0c228c
/* f0c22c0: 3c04800a */ lui $a0,%hi(g_Vars+0x64)
/* f0c22c4: 008f2021 */ addu $a0,$a0,$t7
/* f0c22c8: 8c84a024 */ lw $a0,%lo(g_Vars+0x64)($a0)
/* f0c22cc: 0fc2b6ef */ jal func0f0adbbc
/* f0c22cc: 0fc2b6ef */ jal bullettailTick
/* f0c22d0: 24840fb8 */ addiu $a0,$a0,4024
/* f0c22d4: 8fb80020 */ lw $t8,0x20($sp)
/* f0c22d8: 3c19800a */ lui $t9,%hi(g_Vars+0x314)
@ -13938,7 +13938,7 @@ glabel func0f0c228c
/* f0c2310: 25090004 */ addiu $t1,$t0,0x4
/* f0c2314: 254ad150 */ addiu $t2,$t2,%lo(g_Fireslots)
/* f0c2318: 012a2021 */ addu $a0,$t1,$t2
/* f0c231c: 0fc2b6ef */ jal func0f0adbbc
/* f0c231c: 0fc2b6ef */ jal bullettailTick
/* f0c2320: afa2001c */ sw $v0,0x1c($sp)
/* f0c2324: 8fa3001c */ lw $v1,0x1c($sp)
.L0f0c2328:
@ -13950,7 +13950,7 @@ glabel func0f0c228c
/* f0c233c: 01625823 */ subu $t3,$t3,$v0
/* f0c2340: 000b5900 */ sll $t3,$t3,0x4
/* f0c2344: 256c0004 */ addiu $t4,$t3,0x4
/* f0c2348: 0fc2b6ef */ jal func0f0adbbc
/* f0c2348: 0fc2b6ef */ jal bullettailTick
/* f0c234c: 018d2021 */ addu $a0,$t4,$t5
.L0f0c2350:
/* f0c2350: 8fbf0014 */ lw $ra,0x14($sp)

View File

@ -28122,12 +28122,12 @@ u32 func0f07e474(struct prop *prop)
if (obj->type == OBJTYPE_AUTOGUN) {
struct autogunobj *autogun = (struct autogunobj *)prop->obj;
if (autogun->unk9c) {
func0f0adbbc(autogun->unk9c);
if (autogun->bullettail) {
bullettailTick(autogun->bullettail);
}
} else if (obj->type == OBJTYPE_CHOPPER) {
struct chopperobj *chopper = (struct chopperobj *)prop->obj;
func0f0adbbc(chopper->fireslotthing->unk04);
bullettailTick(chopper->fireslotthing->bullettail);
} else if (obj->type == OBJTYPE_LIFT) {
liftTick(prop);
} else if (obj->type == OBJTYPE_ESCALATOR) {

View File

@ -7,7 +7,7 @@ u32 func0f0abe70(void);
u32 func0f0ac138(void);
u32 func0f0ac4b8(void);
u32 func0f0acb90(void);
void func0f0adbbc(struct fireslot04 *fireslot04);
void bullettailTick(struct bullettail *bullettail);
u32 func0f0adcc8(void);
u32 func0f0ade00(void);
u32 func0f0ae964(void);

View File

@ -1135,7 +1135,7 @@ struct autogunobj { // objtype 0d
/*0x90*/ u32 unk90;
/*0x94*/ u32 unk94;
/*0x98*/ u32 unk98;
/*0x9c*/ struct fireslot04 *unk9c;
/*0x9c*/ struct bullettail *bullettail;
/*0xa0*/ u32 unka0;
/*0xa4*/ u32 unka4;
/*0xa8*/ u8 autogun_type;
@ -3271,8 +3271,8 @@ struct room {
/*0x88*/ u32 unk88;
};
struct fireslot04 {
s8 unk00;
struct bullettail {
s8 age;
s8 unk01;
u32 unk04;
u32 unk08;
@ -3280,20 +3280,20 @@ struct fireslot04 {
u32 unk10;
u32 unk14;
u32 unk18;
f32 unk1c;
f32 unk20;
f32 maxdist;
f32 speed;
u32 unk24;
f32 unk28;
f32 dist;
};
struct fireslotthing {
/*0x00*/ u32 unk00;
/*0x04*/ struct fireslot04 *unk04;
/*0x04*/ struct bullettail *bullettail;
};
struct fireslot {
/*0x00*/ s32 unk00;
/*0x04*/ struct fireslot04 unk04;
/*0x04*/ struct bullettail bullettail;
};
struct menulayer {