Decompile splat0f149274

This commit is contained in:
Ryan Dwyer
2022-07-02 14:39:58 +10:00
parent 28ad7273e0
commit b0aa73d89a
2 changed files with 178 additions and 427 deletions
+177 -425
View File
@@ -21,7 +21,7 @@ u32 var8007f8a0 = 0x3e19999a;
u32 var8007f8a4 = 0x40400000;
f32 var8007f8a8 = 12;
u32 var8007f8ac = 0x00000008;
u32 var8007f8b0 = 0x43340000;
f32 g_SplatMaxDistance = 180;
u32 var8007f8b4 = 0x40a00000;
u32 var8007f8b8 = 0x42480000;
@@ -185,7 +185,7 @@ s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct shotdata *arg3, st
func0f177164(&shotdata->unk0c, &shotdata->unk0c, 406, "splat.c");
#endif
if (func0f149274(arg1, prop, shotdata, dist, arg6, arg7, arg8, arg9, arg10)) {
if (splat0f149274(arg1, prop, shotdata, dist, arg6, arg7, arg8, arg9, arg10)) {
numdropped++;
}
}
@@ -203,435 +203,187 @@ s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct shotdata *arg3, st
#endif
}
const char var7f1b5fe0[] = "Splat : Out of range\n";
struct splatdata {
struct coord unk00;
struct coord unk0c;
struct coord unk18;
struct coord gunpos;
s32 unk30;
struct prop *prop34;
struct prop *prop38;
struct chrdata *chr;
s32 unk40;
s32 unk44;
s32 unk48;
s32 unk4c;
f32 unk50;
s32 unk54;
s32 unk58;
};
void func0f14986c(struct splatdata *splatdata);
#if VERSION == VERSION_JPN_FINAL
void func0f149250jf(void);
const char var7f1b5fe0[] = "Splat : Out of range\n";
#else
GLOBAL_ASM(
glabel func0f149274
.late_rodata
glabel var7f1b6030
.word 0x497423f0
.text
/* f149274: 27bdfa18 */ addiu $sp,$sp,-1512
/* f149278: afbf001c */ sw $ra,0x1c($sp)
/* f14927c: e7ac05e8 */ swc1 $f12,0x5e8($sp)
/* f149280: afa505ec */ sw $a1,0x5ec($sp)
/* f149284: afa705f4 */ sw $a3,0x5f4($sp)
/* f149288: afa00500 */ sw $zero,0x500($sp)
/* f14928c: afa004ec */ sw $zero,0x4ec($sp)
/* f149290: 27a200a0 */ addiu $v0,$sp,0xa0
/* f149294: 27a400ac */ addiu $a0,$sp,0xac
/* f149298: 00c01825 */ or $v1,$a2,$zero
.L0f14929c:
/* f14929c: c4640000 */ lwc1 $f4,0x0($v1)
/* f1492a0: 24420004 */ addiu $v0,$v0,0x4
/* f1492a4: 0044082b */ sltu $at,$v0,$a0
/* f1492a8: e444fffc */ swc1 $f4,-0x4($v0)
/* f1492ac: c466000c */ lwc1 $f6,0xc($v1)
/* f1492b0: 24630004 */ addiu $v1,$v1,0x4
/* f1492b4: e4460008 */ swc1 $f6,0x8($v0)
/* f1492b8: c4680018 */ lwc1 $f8,0x18($v1)
/* f1492bc: e4480018 */ swc1 $f8,0x18($v0)
/* f1492c0: c46a0024 */ lwc1 $f10,0x24($v1)
/* f1492c4: 1420fff5 */ bnez $at,.L0f14929c
/* f1492c8: e44a0024 */ swc1 $f10,0x24($v0)
/* f1492cc: 240e0001 */ addiu $t6,$zero,0x1
/* f1492d0: 3c018008 */ lui $at,%hi(var8007f8b0)
/* f1492d4: afae00d8 */ sw $t6,0xd8($sp)
/* f1492d8: c420f8b0 */ lwc1 $f0,%lo(var8007f8b0)($at)
/* f1492dc: 27a200a0 */ addiu $v0,$sp,0xa0
/* f1492e0: 27a30514 */ addiu $v1,$sp,0x514
/* f1492e4: 27a40520 */ addiu $a0,$sp,0x520
/* f1492e8: c44e0028 */ lwc1 $f14,0x28($v0)
/* f1492ec: 24630004 */ addiu $v1,$v1,0x4
/* f1492f0: 0064082b */ sltu $at,$v1,$a0
/* f1492f4: 46007482 */ mul.s $f18,$f14,$f0
/* f1492f8: 5020000b */ beqzl $at,.L0f149328
/* f1492fc: c450001c */ lwc1 $f16,0x1c($v0)
.L0f149300:
/* f149300: c450001c */ lwc1 $f16,0x1c($v0)
/* f149304: c44e002c */ lwc1 $f14,0x2c($v0)
/* f149308: 24630004 */ addiu $v1,$v1,0x4
/* f14930c: 46109400 */ add.s $f16,$f18,$f16
/* f149310: 46007482 */ mul.s $f18,$f14,$f0
/* f149314: 0064082b */ sltu $at,$v1,$a0
/* f149318: 24420004 */ addiu $v0,$v0,0x4
/* f14931c: 1420fff8 */ bnez $at,.L0f149300
/* f149320: e470fff8 */ swc1 $f16,-0x8($v1)
/* f149324: c450001c */ lwc1 $f16,0x1c($v0)
.L0f149328:
/* f149328: 24420004 */ addiu $v0,$v0,0x4
/* f14932c: 46109400 */ add.s $f16,$f18,$f16
/* f149330: e470fffc */ swc1 $f16,-0x4($v1)
/* f149334: 8faf05ec */ lw $t7,0x5ec($sp)
/* f149338: 27a500bc */ addiu $a1,$sp,0xbc
/* f14933c: 27a70530 */ addiu $a3,$sp,0x530
/* f149340: afa00010 */ sw $zero,0x10($sp)
/* f149344: afa00014 */ sw $zero,0x14($sp)
/* f149348: 25e40008 */ addiu $a0,$t7,0x8
/* f14934c: 0c006052 */ jal portal00018148
/* f149350: 25e60028 */ addiu $a2,$t7,0x28
/* f149354: 27b80540 */ addiu $t8,$sp,0x540
/* f149358: 2419001f */ addiu $t9,$zero,0x1f
/* f14935c: afb90014 */ sw $t9,0x14($sp)
/* f149360: afb80010 */ sw $t8,0x10($sp)
/* f149364: 27a400bc */ addiu $a0,$sp,0xbc
/* f149368: 27a50514 */ addiu $a1,$sp,0x514
/* f14936c: 27a60530 */ addiu $a2,$sp,0x530
/* f149370: 0c006052 */ jal portal00018148
/* f149374: 27a70520 */ addiu $a3,$sp,0x520
/* f149378: 87a80540 */ lh $t0,0x540($sp)
/* f14937c: 2401ffff */ addiu $at,$zero,-1
/* f149380: 27a30540 */ addiu $v1,$sp,0x540
/* f149384: 51010086 */ beql $t0,$at,.L0f1495a0
/* f149388: 8fb904ec */ lw $t9,0x4ec($sp)
/* f14938c: 84660000 */ lh $a2,0x0($v1)
/* f149390: 27a400bc */ addiu $a0,$sp,0xbc
.L0f149394:
/* f149394: 27a50514 */ addiu $a1,$sp,0x514
/* f149398: 27a705b0 */ addiu $a3,$sp,0x5b0
/* f14939c: 0fc58548 */ jal func0f161520
/* f1493a0: afa30034 */ sw $v1,0x34($sp)
/* f1493a4: 10400078 */ beqz $v0,.L0f149588
/* f1493a8: 8fa30034 */ lw $v1,0x34($sp)
/* f1493ac: c7a00514 */ lwc1 $f0,0x514($sp)
/* f1493b0: c7b000bc */ lwc1 $f16,0xbc($sp)
/* f1493b4: c7aa05b0 */ lwc1 $f10,0x5b0($sp)
/* f1493b8: 4600803e */ c.le.s $f16,$f0
/* f1493bc: 00000000 */ nop
/* f1493c0: 4502000a */ bc1fl .L0f1493ec
/* f1493c4: 4610003e */ c.le.s $f0,$f16
/* f1493c8: 4600503e */ c.le.s $f10,$f0
/* f1493cc: 00000000 */ nop
/* f1493d0: 45020006 */ bc1fl .L0f1493ec
/* f1493d4: 4610003e */ c.le.s $f0,$f16
/* f1493d8: 460a803e */ c.le.s $f16,$f10
/* f1493dc: 00000000 */ nop
/* f1493e0: 4503000e */ bc1tl .L0f14941c
/* f1493e4: c7a20518 */ lwc1 $f2,0x518($sp)
/* f1493e8: 4610003e */ c.le.s $f0,$f16
.L0f1493ec:
/* f1493ec: c7b205b0 */ lwc1 $f18,0x5b0($sp)
/* f1493f0: 45020066 */ bc1fl .L0f14958c
/* f1493f4: 84660002 */ lh $a2,0x2($v1)
/* f1493f8: 4612003e */ c.le.s $f0,$f18
/* f1493fc: 00000000 */ nop
/* f149400: 45020062 */ bc1fl .L0f14958c
/* f149404: 84660002 */ lh $a2,0x2($v1)
/* f149408: 4610903e */ c.le.s $f18,$f16
/* f14940c: 00000000 */ nop
/* f149410: 4502005e */ bc1fl .L0f14958c
/* f149414: 84660002 */ lh $a2,0x2($v1)
/* f149418: c7a20518 */ lwc1 $f2,0x518($sp)
.L0f14941c:
/* f14941c: c7ae00c0 */ lwc1 $f14,0xc0($sp)
/* f149420: c7a405b4 */ lwc1 $f4,0x5b4($sp)
/* f149424: 4602703e */ c.le.s $f14,$f2
/* f149428: 00000000 */ nop
/* f14942c: 4502000a */ bc1fl .L0f149458
/* f149430: 460e103e */ c.le.s $f2,$f14
/* f149434: 4602203e */ c.le.s $f4,$f2
/* f149438: 00000000 */ nop
/* f14943c: 45020006 */ bc1fl .L0f149458
/* f149440: 460e103e */ c.le.s $f2,$f14
/* f149444: 4604703e */ c.le.s $f14,$f4
/* f149448: 00000000 */ nop
/* f14944c: 4503000e */ bc1tl .L0f149488
/* f149450: c7a000c4 */ lwc1 $f0,0xc4($sp)
/* f149454: 460e103e */ c.le.s $f2,$f14
.L0f149458:
/* f149458: c7a605b4 */ lwc1 $f6,0x5b4($sp)
/* f14945c: 4502004b */ bc1fl .L0f14958c
/* f149460: 84660002 */ lh $a2,0x2($v1)
/* f149464: 4606103e */ c.le.s $f2,$f6
/* f149468: 00000000 */ nop
/* f14946c: 45020047 */ bc1fl .L0f14958c
/* f149470: 84660002 */ lh $a2,0x2($v1)
/* f149474: 460e303e */ c.le.s $f6,$f14
/* f149478: 00000000 */ nop
/* f14947c: 45020043 */ bc1fl .L0f14958c
/* f149480: 84660002 */ lh $a2,0x2($v1)
/* f149484: c7a000c4 */ lwc1 $f0,0xc4($sp)
.L0f149488:
/* f149488: c7ac051c */ lwc1 $f12,0x51c($sp)
/* f14948c: c7a805b8 */ lwc1 $f8,0x5b8($sp)
/* f149490: 460c003e */ c.le.s $f0,$f12
/* f149494: 00000000 */ nop
/* f149498: 4502000a */ bc1fl .L0f1494c4
/* f14949c: 4600603e */ c.le.s $f12,$f0
/* f1494a0: 460c403e */ c.le.s $f8,$f12
/* f1494a4: 00000000 */ nop
/* f1494a8: 45020006 */ bc1fl .L0f1494c4
/* f1494ac: 4600603e */ c.le.s $f12,$f0
/* f1494b0: 4608003e */ c.le.s $f0,$f8
/* f1494b4: 00000000 */ nop
/* f1494b8: 4503000e */ bc1tl .L0f1494f4
/* f1494bc: c7b205b0 */ lwc1 $f18,0x5b0($sp)
/* f1494c0: 4600603e */ c.le.s $f12,$f0
.L0f1494c4:
/* f1494c4: c7aa05b8 */ lwc1 $f10,0x5b8($sp)
/* f1494c8: 45020030 */ bc1fl .L0f14958c
/* f1494cc: 84660002 */ lh $a2,0x2($v1)
/* f1494d0: 460a603e */ c.le.s $f12,$f10
/* f1494d4: 00000000 */ nop
/* f1494d8: 4502002c */ bc1fl .L0f14958c
/* f1494dc: 84660002 */ lh $a2,0x2($v1)
/* f1494e0: 4600503e */ c.le.s $f10,$f0
/* f1494e4: 00000000 */ nop
/* f1494e8: 45020028 */ bc1fl .L0f14958c
/* f1494ec: 84660002 */ lh $a2,0x2($v1)
/* f1494f0: c7b205b0 */ lwc1 $f18,0x5b0($sp)
.L0f1494f4:
/* f1494f4: c7a405b4 */ lwc1 $f4,0x5b4($sp)
/* f1494f8: c7a605b8 */ lwc1 $f6,0x5b8($sp)
/* f1494fc: 46128032 */ c.eq.s $f16,$f18
/* f149500: 00000000 */ nop
/* f149504: 4502000a */ bc1fl .L0f149530
/* f149508: 846a0000 */ lh $t2,0x0($v1)
/* f14950c: 46047032 */ c.eq.s $f14,$f4
/* f149510: 00000000 */ nop
/* f149514: 45020006 */ bc1fl .L0f149530
/* f149518: 846a0000 */ lh $t2,0x0($v1)
/* f14951c: 46060032 */ c.eq.s $f0,$f6
/* f149520: 00000000 */ nop
/* f149524: 45030019 */ bc1tl .L0f14958c
/* f149528: 84660002 */ lh $a2,0x2($v1)
/* f14952c: 846a0000 */ lh $t2,0x0($v1)
.L0f149530:
/* f149530: 27ac05b0 */ addiu $t4,$sp,0x5b0
/* f149534: 258f0030 */ addiu $t7,$t4,0x30
/* f149538: 27ab0580 */ addiu $t3,$sp,0x580
/* f14953c: afaa0500 */ sw $t2,0x500($sp)
.L0f149540:
/* f149540: 8d810000 */ lw $at,0x0($t4)
/* f149544: 258c000c */ addiu $t4,$t4,0xc
/* f149548: 256b000c */ addiu $t3,$t3,0xc
/* f14954c: ad61fff4 */ sw $at,-0xc($t3)
/* f149550: 8d81fff8 */ lw $at,-0x8($t4)
/* f149554: ad61fff8 */ sw $at,-0x8($t3)
/* f149558: 8d81fffc */ lw $at,-0x4($t4)
/* f14955c: 158ffff8 */ bne $t4,$t7,.L0f149540
/* f149560: ad61fffc */ sw $at,-0x4($t3)
/* f149564: c7a005b0 */ lwc1 $f0,0x5b0($sp)
/* f149568: c7a205b4 */ lwc1 $f2,0x5b4($sp)
/* f14956c: c7ac05b8 */ lwc1 $f12,0x5b8($sp)
/* f149570: 24180001 */ addiu $t8,$zero,0x1
/* f149574: afb804ec */ sw $t8,0x4ec($sp)
/* f149578: e7a00514 */ swc1 $f0,0x514($sp)
/* f14957c: e7a20518 */ swc1 $f2,0x518($sp)
/* f149580: 10000006 */ b .L0f14959c
/* f149584: e7ac051c */ swc1 $f12,0x51c($sp)
.L0f149588:
/* f149588: 84660002 */ lh $a2,0x2($v1)
.L0f14958c:
/* f14958c: 2401ffff */ addiu $at,$zero,-1
/* f149590: 24630002 */ addiu $v1,$v1,0x2
/* f149594: 54c1ff7f */ bnel $a2,$at,.L0f149394
/* f149598: 27a400bc */ addiu $a0,$sp,0xbc
.L0f14959c:
/* f14959c: 8fb904ec */ lw $t9,0x4ec($sp)
.L0f1495a0:
/* f1495a0: 27a400bc */ addiu $a0,$sp,0xbc
/* f1495a4: 3c017f1b */ lui $at,%hi(var7f1b6030)
/* f1495a8: 13200019 */ beqz $t9,.L0f149610
/* f1495ac: 00000000 */ nop
/* f1495b0: 0fc5dd18 */ jal coordsGetDistance
/* f1495b4: 27a50580 */ addiu $a1,$sp,0x580
/* f1495b8: 3c018008 */ lui $at,%hi(var8007f8b0)
/* f1495bc: c428f8b0 */ lwc1 $f8,%lo(var8007f8b0)($at)
/* f1495c0: 46000306 */ mov.s $f12,$f0
/* f1495c4: 27a805b0 */ addiu $t0,$sp,0x5b0
/* f1495c8: 4608003c */ c.lt.s $f0,$f8
/* f1495cc: 27a905bc */ addiu $t1,$sp,0x5bc
/* f1495d0: 4500000d */ bc1f .L0f149608
/* f1495d4: 00000000 */ nop
/* f1495d8: 87ae05dc */ lh $t6,0x5dc($sp)
/* f1495dc: 8faa0500 */ lw $t2,0x500($sp)
/* f1495e0: afa8050c */ sw $t0,0x50c($sp)
/* f1495e4: 39cd0002 */ xori $t5,$t6,0x2
/* f1495e8: 2dad0001 */ sltiu $t5,$t5,0x1
/* f1495ec: afa80508 */ sw $t0,0x508($sp)
/* f1495f0: afa90504 */ sw $t1,0x504($sp)
/* f1495f4: afa005e0 */ sw $zero,0x5e0($sp)
/* f1495f8: afa004fc */ sw $zero,0x4fc($sp)
/* f1495fc: afad04f0 */ sw $t5,0x4f0($sp)
/* f149600: 10000004 */ b .L0f149614
/* f149604: afaa04f8 */ sw $t2,0x4f8($sp)
.L0f149608:
/* f149608: 10000002 */ b .L0f149614
/* f14960c: afa004ec */ sw $zero,0x4ec($sp)
.L0f149610:
/* f149610: c42c6030 */ lwc1 $f12,%lo(var7f1b6030)($at)
.L0f149614:
/* f149614: 8faf05fc */ lw $t7,0x5fc($sp)
/* f149618: 3c018008 */ lui $at,%hi(var8007f8b0)
/* f14961c: c7aa05f4 */ lwc1 $f10,0x5f4($sp)
/* f149620: 55e0005c */ bnezl $t7,.L0f149794
/* f149624: 8fae04ec */ lw $t6,0x4ec($sp)
/* f149628: c420f8b0 */ lwc1 $f0,%lo(var8007f8b0)($at)
/* f14962c: 4600603c */ c.lt.s $f12,$f0
/* f149630: 00000000 */ nop
/* f149634: 45020004 */ bc1fl .L0f149648
/* f149638: 46000086 */ mov.s $f2,$f0
/* f14963c: 10000002 */ b .L0f149648
/* f149640: 46006086 */ mov.s $f2,$f12
/* f149644: 46000086 */ mov.s $f2,$f0
.L0f149648:
/* f149648: 460a1080 */ add.s $f2,$f2,$f10
/* f14964c: 27a200a0 */ addiu $v0,$sp,0xa0
/* f149650: 27a304b0 */ addiu $v1,$sp,0x4b0
/* f149654: e7a200d4 */ swc1 $f2,0xd4($sp)
.L0f149658:
/* f149658: 24420068 */ addiu $v0,$v0,0x68
/* f14965c: ac40ffd8 */ sw $zero,-0x28($v0)
/* f149660: ac40ffdc */ sw $zero,-0x24($v0)
/* f149664: 1443fffc */ bne $v0,$v1,.L0f149658
/* f149668: ac40ffe0 */ sw $zero,-0x20($v0)
/* f14966c: 3c02800a */ lui $v0,%hi(g_Vars)
/* f149670: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars)
/* f149674: 8c43034c */ lw $v1,0x34c($v0)
/* f149678: 8c450348 */ lw $a1,0x348($v0)
/* f14967c: 2463fffc */ addiu $v1,$v1,-4
/* f149680: 0065082b */ sltu $at,$v1,$a1
/* f149684: 14200016 */ bnez $at,.L0f1496e0
/* f149688: 00000000 */ nop
/* f14968c: 8c640000 */ lw $a0,0x0($v1)
.L0f149690:
/* f149690: 50800010 */ beqzl $a0,.L0f1496d4
/* f149694: 2463fffc */ addiu $v1,$v1,-4
/* f149698: 90820000 */ lbu $v0,0x0($a0)
/* f14969c: 24010001 */ addiu $at,$zero,0x1
/* f1496a0: 10410005 */ beq $v0,$at,.L0f1496b8
/* f1496a4: 24010002 */ addiu $at,$zero,0x2
/* f1496a8: 10410003 */ beq $v0,$at,.L0f1496b8
/* f1496ac: 24010004 */ addiu $at,$zero,0x4
/* f1496b0: 54410008 */ bnel $v0,$at,.L0f1496d4
/* f1496b4: 2463fffc */ addiu $v1,$v1,-4
.L0f1496b8:
/* f1496b8: 27a500a0 */ addiu $a1,$sp,0xa0
/* f1496bc: 0fc21780 */ jal func0f085e00
/* f1496c0: afa305e4 */ sw $v1,0x5e4($sp)
/* f1496c4: 3c05800a */ lui $a1,%hi(g_Vars+0x348)
/* f1496c8: 8fa305e4 */ lw $v1,0x5e4($sp)
/* f1496cc: 8ca5a308 */ lw $a1,%lo(g_Vars+0x348)($a1)
/* f1496d0: 2463fffc */ addiu $v1,$v1,-4
.L0f1496d4:
/* f1496d4: 0065082b */ sltu $at,$v1,$a1
/* f1496d8: 5020ffed */ beqzl $at,.L0f149690
/* f1496dc: 8c640000 */ lw $a0,0x0($v1)
.L0f1496e0:
/* f1496e0: 3c06800b */ lui $a2,%hi(g_Textures)
/* f1496e4: 3c058008 */ lui $a1,%hi(g_SurfaceTypes)
/* f1496e8: 24a54458 */ addiu $a1,$a1,%lo(g_SurfaceTypes)
/* f1496ec: 24c6abc0 */ addiu $a2,$a2,%lo(g_Textures)
/* f1496f0: 27a200a0 */ addiu $v0,$sp,0xa0
/* f1496f4: 27a704b0 */ addiu $a3,$sp,0x4b0
/* f1496f8: 8c4c0040 */ lw $t4,0x40($v0)
.L0f1496fc:
/* f1496fc: 2444003c */ addiu $a0,$v0,0x3c
/* f149700: 24420068 */ addiu $v0,$v0,0x68
/* f149704: 11800020 */ beqz $t4,.L0f149788
/* f149708: 00000000 */ nop
/* f14970c: 8483003a */ lh $v1,0x3a($a0)
/* f149710: 0460000d */ bltz $v1,.L0f149748
/* f149714: 28610daf */ slti $at,$v1,_numtextures
/* f149718: 5020000c */ beqzl $at,.L0f14974c
/* f14971c: 248c0010 */ addiu $t4,$a0,0x10
/* f149720: 8ccb0000 */ lw $t3,0x0($a2)
/* f149724: 0003c0c0 */ sll $t8,$v1,0x3
/* f149728: 0178c821 */ addu $t9,$t3,$t8
/* f14972c: 93280000 */ lbu $t0,0x0($t9)
/* f149730: 3109000f */ andi $t1,$t0,0xf
/* f149734: 00095080 */ sll $t2,$t1,0x2
/* f149738: 00aa7021 */ addu $t6,$a1,$t2
/* f14973c: 8dcd0000 */ lw $t5,0x0($t6)
/* f149740: 85af000a */ lh $t7,0xa($t5)
/* f149744: 11e00010 */ beqz $t7,.L0f149788
.L0f149748:
/* f149748: 248c0010 */ addiu $t4,$a0,0x10
.L0f14974c:
/* f14974c: 248b0050 */ addiu $t3,$a0,0x50
/* f149750: 2498001c */ addiu $t8,$a0,0x1c
/* f149754: afac050c */ sw $t4,0x50c($sp)
/* f149758: afab0508 */ sw $t3,0x508($sp)
/* f14975c: afb80504 */ sw $t8,0x504($sp)
/* f149760: 8c990004 */ lw $t9,0x4($a0)
/* f149764: 24090001 */ addiu $t1,$zero,0x1
/* f149768: 240a0001 */ addiu $t2,$zero,0x1
/* f14976c: afb905e0 */ sw $t9,0x5e0($sp)
/* f149770: 80880043 */ lb $t0,0x43($a0)
/* f149774: afa904f8 */ sw $t1,0x4f8($sp)
/* f149778: afa004f0 */ sw $zero,0x4f0($sp)
/* f14977c: afaa04ec */ sw $t2,0x4ec($sp)
/* f149780: 10000003 */ b .L0f149790
/* f149784: afa804fc */ sw $t0,0x4fc($sp)
.L0f149788:
/* f149788: 5447ffdc */ bnel $v0,$a3,.L0f1496fc
/* f14978c: 8c4c0040 */ lw $t4,0x40($v0)
.L0f149790:
/* f149790: 8fae04ec */ lw $t6,0x4ec($sp)
.L0f149794:
/* f149794: 27a3003c */ addiu $v1,$sp,0x3c
/* f149798: 8fa4050c */ lw $a0,0x50c($sp)
/* f14979c: 11c0002d */ beqz $t6,.L0f149854
/* f1497a0: 00001025 */ or $v0,$zero,$zero
/* f1497a4: 27a200a0 */ addiu $v0,$sp,0xa0
/* f1497a8: 8fa50508 */ lw $a1,0x508($sp)
/* f1497ac: 8fa60504 */ lw $a2,0x504($sp)
/* f1497b0: 27a70048 */ addiu $a3,$sp,0x48
.L0f1497b4:
/* f1497b4: c4920000 */ lwc1 $f18,0x0($a0)
/* f1497b8: c446001c */ lwc1 $f6,0x1c($v0)
/* f1497bc: 24630004 */ addiu $v1,$v1,0x4
/* f1497c0: e472fffc */ swc1 $f18,-0x4($v1)
/* f1497c4: c4a40000 */ lwc1 $f4,0x0($a1)
/* f1497c8: e4660020 */ swc1 $f6,0x20($v1)
/* f1497cc: 24420004 */ addiu $v0,$v0,0x4
/* f1497d0: e4640008 */ swc1 $f4,0x8($v1)
/* f1497d4: c4c80000 */ lwc1 $f8,0x0($a2)
/* f1497d8: 24840004 */ addiu $a0,$a0,0x4
/* f1497dc: 24a50004 */ addiu $a1,$a1,4
/* f1497e0: 24c60004 */ addiu $a2,$a2,0x4
/* f1497e4: 1467fff3 */ bne $v1,$a3,.L0f1497b4
/* f1497e8: e4680014 */ swc1 $f8,0x14($v1)
/* f1497ec: 8fad05ec */ lw $t5,0x5ec($sp)
/* f1497f0: 8faf05e0 */ lw $t7,0x5e0($sp)
/* f1497f4: 8fac0604 */ lw $t4,0x604($sp)
/* f1497f8: 8fab04fc */ lw $t3,0x4fc($sp)
/* f1497fc: 8fb804f8 */ lw $t8,0x4f8($sp)
/* f149800: 8fb905f8 */ lw $t9,0x5f8($sp)
/* f149804: 8fa80600 */ lw $t0,0x600($sp)
/* f149808: c7aa05e8 */ lwc1 $f10,0x5e8($sp)
/* f14980c: 8fa905fc */ lw $t1,0x5fc($sp)
/* f149810: 8faa0608 */ lw $t2,0x608($sp)
/* f149814: 8fae04f0 */ lw $t6,0x4f0($sp)
/* f149818: 27a4003c */ addiu $a0,$sp,0x3c
/* f14981c: afad0074 */ sw $t5,0x74($sp)
/* f149820: afaf0070 */ sw $t7,0x70($sp)
/* f149824: afac0078 */ sw $t4,0x78($sp)
/* f149828: afab007c */ sw $t3,0x7c($sp)
/* f14982c: afb80080 */ sw $t8,0x80($sp)
/* f149830: afb90084 */ sw $t9,0x84($sp)
/* f149834: afa80090 */ sw $t0,0x90($sp)
/* f149838: e7aa008c */ swc1 $f10,0x8c($sp)
/* f14983c: afa9006c */ sw $t1,0x6c($sp)
/* f149840: afaa0094 */ sw $t2,0x94($sp)
/* f149844: 0fc5261b */ jal func0f14986c
/* f149848: afae0088 */ sw $t6,0x88($sp)
/* f14984c: 10000001 */ b .L0f149854
/* f149850: 24020001 */ addiu $v0,$zero,0x1
.L0f149854:
/* f149854: 8fbf001c */ lw $ra,0x1c($sp)
/* f149858: 27bd05e8 */ addiu $sp,$sp,0x5e8
/* f14985c: 03e00008 */ jr $ra
/* f149860: 00000000 */ nop
);
bool splat0f149274(f32 arg0, struct prop *prop, struct shotdata *shotdata, f32 arg3, s32 arg4, s32 arg5, s32 arg6, struct chrdata *chr, s32 arg8)
{
struct prop **propptr;
struct prop *hitprop;
struct hitthing hitthing;
struct hitthing besthitthing;
s16 rooms[32];
s16 gunrooms[8];
s16 endrooms[8];
struct coord endpos;
s32 i;
struct coord *sp50c;
struct coord *hitpos;
struct coord *sp504;
s32 bestroom = 0;
s32 sp4fc;
s32 sp4f8;
f32 spraydistance;
s32 sp4f0;
bool hasresult = false;
struct shotdata stackshotdata;
for (i = 0; i < 3; i++) {
stackshotdata.unk00.f[i] = shotdata->unk00.f[i];
stackshotdata.unk0c.f[i] = shotdata->unk0c.f[i];
stackshotdata.gunpos.f[i] = shotdata->gunpos.f[i];
stackshotdata.dir.f[i] = shotdata->dir.f[i];
}
stackshotdata.unk38 = 1;
for (i = 0; i < 3; i++) {
endpos.f[i] = stackshotdata.gunpos.f[i] + stackshotdata.dir.f[i] * g_SplatMaxDistance;
}
portal00018148(&prop->pos, &stackshotdata.gunpos, prop->rooms, &gunrooms, NULL, 0);
portal00018148(&stackshotdata.gunpos, &endpos, &gunrooms, &endrooms, rooms, ARRAYCOUNT(rooms) - 1);
for (i = 0; rooms[i] != -1; i++) {
if (func0f161520(&stackshotdata.gunpos, &endpos, rooms[i], &hitthing)
&& ((stackshotdata.gunpos.x <= endpos.x && hitthing.unk00.x <= endpos.x && stackshotdata.gunpos.x <= hitthing.unk00.x) || (endpos.x <= stackshotdata.gunpos.x && endpos.x <= hitthing.unk00.x && hitthing.unk00.x <= stackshotdata.gunpos.x))
&& ((stackshotdata.gunpos.y <= endpos.y && hitthing.unk00.y <= endpos.y && stackshotdata.gunpos.y <= hitthing.unk00.y) || (endpos.y <= stackshotdata.gunpos.y && endpos.y <= hitthing.unk00.y && hitthing.unk00.y <= stackshotdata.gunpos.y))
&& ((stackshotdata.gunpos.z <= endpos.z && hitthing.unk00.z <= endpos.z && stackshotdata.gunpos.z <= hitthing.unk00.z) || (endpos.z <= stackshotdata.gunpos.z && endpos.z <= hitthing.unk00.z && hitthing.unk00.z <= stackshotdata.gunpos.z))) {
if (stackshotdata.gunpos.x != hitthing.unk00.x || stackshotdata.gunpos.y != hitthing.unk00.y || stackshotdata.gunpos.z != hitthing.unk00.z) {
bestroom = rooms[i];
besthitthing = hitthing;
endpos.x = hitthing.unk00.x;
endpos.y = hitthing.unk00.y;
endpos.z = hitthing.unk00.z;
hasresult = true;
break;
}
}
}
if (hasresult) {
spraydistance = coordsGetDistance(&stackshotdata.gunpos, &besthitthing.unk00);
if (spraydistance < g_SplatMaxDistance) {
sp50c = &hitthing.unk00;
hitpos = &hitthing.unk00;
sp504 = &hitthing.unk0c;
hitprop = NULL;
sp4fc = 0;
sp4f8 = bestroom;
sp4f0 = hitthing.unk2c == 2;
} else {
osSyncPrintf("Splat : Out of range\n");
hasresult = false;
}
} else {
spraydistance = 999999.0f;
}
if (arg5 == 0) {
stackshotdata.unk34 = (spraydistance < g_SplatMaxDistance ? spraydistance : g_SplatMaxDistance);
stackshotdata.unk34 += arg3;
for (i = 0; i < ARRAYCOUNT(stackshotdata.hits); i++) {
stackshotdata.hits[i].prop = NULL;
stackshotdata.hits[i].hitpart = 0;
stackshotdata.hits[i].node = NULL;
}
propptr = g_Vars.endonscreenprops - 1;
while (propptr >= g_Vars.onscreenprops) {
struct prop *prop = *propptr;
if (prop) {
if (prop->type == PROPTYPE_OBJ || prop->type == PROPTYPE_DOOR || prop->type == PROPTYPE_WEAPON) {
func0f085e00(prop, &stackshotdata);
if (1);
}
}
propptr--;
}
for (i = 0; i < ARRAYCOUNT(stackshotdata.hits); i++) {
struct hit *hit = &stackshotdata.hits[i];
if (hit->prop && (hit->hitthing.texturenum < 0
|| hit->hitthing.texturenum >= NUM_TEXTURES
|| g_SurfaceTypes[g_Textures[hit->hitthing.texturenum].surfacetype]->numwallhittexes != 0)) {
sp50c = &hit->hitthing.unk00;
hitpos = &hit->pos;
sp504 = &hit->hitthing.unk0c;
hitprop = hit->prop;
sp4fc = (s8)hit->mtxindex;
sp4f8 = 1;
sp4f0 = 0;
hasresult = true;
break;
}
}
}
if (hasresult) {
struct splatdata splatdata;
u32 stack;
for (i = 0; i < 3; i++) {
splatdata.unk00.f[i] = sp50c->f[i];
splatdata.unk0c.f[i] = hitpos->f[i];
splatdata.gunpos.f[i] = stackshotdata.gunpos.f[i];
splatdata.unk18.f[i] = sp504->f[i];
}
splatdata.prop38 = prop;
splatdata.prop34 = hitprop;
splatdata.chr = chr;
splatdata.unk40 = sp4fc;
splatdata.unk44 = sp4f8;
splatdata.unk48 = arg4;
splatdata.unk54 = arg6;
splatdata.unk50 = arg0;
splatdata.unk30 = arg5;
splatdata.unk58 = arg8;
splatdata.unk4c = sp4f0;
func0f14986c(&splatdata);
return true;
}
if (hitthing.unk00.x);
if (hitthing.unk00.y);
if (hitthing.unk00.z);
return false;
}
#endif
#if VERSION == VERSION_JPN_FINAL
void func0f149268jf(void)
void func0f149260jf(void)
{
// empty
}
+1 -2
View File
@@ -7,9 +7,8 @@
void splatTickChr(struct prop *prop);
void splatsCreateForChrHit(struct prop *prop, struct shotdata *arg1, struct coord *arg2, struct coord *arg3, s32 arg4, s32 arg5, struct chrdata *arg6);
s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct shotdata *arg3, struct coord *arg4, struct coord *arg5, s32 arg6, s32 arg7, s32 arg8, struct chrdata *arg9, s32 arg10);
bool func0f149274(f32 arg0, struct prop *prop, struct shotdata *arg2, f32 arg3, s32 arg4, s32 arg5, s32 arg6, struct chrdata *arg7, s32 arg8);
bool splat0f149274(f32 arg0, struct prop *prop, struct shotdata *arg2, f32 arg3, s32 arg4, s32 arg5, s32 arg6, struct chrdata *arg7, s32 arg8);
void splatsTick(void);
u32 func0f14986c(void);
void splatResetChr(struct chrdata *chr);
void pheadInit2(void);