diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 3949de2c5..e098761e4 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -13669,76 +13669,26 @@ bool ai01ce(void) /** * @cmd 01cf */ -GLOBAL_ASM( -glabel ai01cf -/* f05f3b8: 3c02800a */ lui $v0,%hi(g_Vars) -/* f05f3bc: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f05f3c0: 8c4e0434 */ lw $t6,0x434($v0) -/* f05f3c4: 8c4f0438 */ lw $t7,0x438($v0) -/* f05f3c8: 27bdffc0 */ addiu $sp,$sp,-64 -/* f05f3cc: afbf001c */ sw $ra,0x1c($sp) -/* f05f3d0: 01cf1821 */ addu $v1,$t6,$t7 -/* f05f3d4: 90650002 */ lbu $a1,0x2($v1) -/* f05f3d8: afa3003c */ sw $v1,0x3c($sp) -/* f05f3dc: 0fc126d1 */ jal chrFindById -/* f05f3e0: 8c440424 */ lw $a0,0x424($v0) -/* f05f3e4: 3c198007 */ lui $t9,%hi(var80069868) -/* f05f3e8: 27399868 */ addiu $t9,$t9,%lo(var80069868) -/* f05f3ec: 8f210000 */ lw $at,0x0($t9) -/* f05f3f0: 8fa3003c */ lw $v1,0x3c($sp) -/* f05f3f4: 27b8002c */ addiu $t8,$sp,0x2c -/* f05f3f8: af010000 */ sw $at,0x0($t8) -/* f05f3fc: 8f210008 */ lw $at,0x8($t9) -/* f05f400: 8f2a0004 */ lw $t2,0x4($t9) -/* f05f404: 3c0c8007 */ lui $t4,%hi(var80069874) -/* f05f408: 258c9874 */ addiu $t4,$t4,%lo(var80069874) -/* f05f40c: af010008 */ sw $at,0x8($t8) -/* f05f410: af0a0004 */ sw $t2,0x4($t8) -/* f05f414: 8d810000 */ lw $at,0x0($t4) -/* f05f418: 27ab0020 */ addiu $t3,$sp,0x20 -/* f05f41c: 8d8f0004 */ lw $t7,0x4($t4) -/* f05f420: ad610000 */ sw $at,0x0($t3) -/* f05f424: 8d810008 */ lw $at,0x8($t4) -/* f05f428: 00402025 */ or $a0,$v0,$zero -/* f05f42c: ad6f0004 */ sw $t7,0x4($t3) -/* f05f430: 10400019 */ beqz $v0,.L0f05f498 -/* f05f434: ad610008 */ sw $at,0x8($t3) -/* f05f438: 8c490170 */ lw $t1,0x170($v0) -/* f05f43c: 11200016 */ beqz $t1,.L0f05f498 -/* f05f440: 00000000 */ sll $zero,$zero,0x0 -/* f05f444: 90680003 */ lbu $t0,0x3($v1) -/* f05f448: 24060001 */ addiu $a2,$zero,0x1 -/* f05f44c: 00002825 */ or $a1,$zero,$zero -/* f05f450: 1100000f */ beqz $t0,.L0f05f490 -/* f05f454: 00000000 */ sll $zero,$zero,0x0 -/* f05f458: 00002825 */ or $a1,$zero,$zero -/* f05f45c: 0fc0fe12 */ jal chrSetFiring -/* f05f460: afa20038 */ sw $v0,0x38($sp) -/* f05f464: 27b8002c */ addiu $t8,$sp,0x2c -/* f05f468: 27b90020 */ addiu $t9,$sp,0x20 -/* f05f46c: 8fa40038 */ lw $a0,0x38($sp) -/* f05f470: afb90014 */ sw $t9,0x14($sp) -/* f05f474: afb80010 */ sw $t8,0x10($sp) -/* f05f478: 00002825 */ or $a1,$zero,$zero -/* f05f47c: 24060001 */ addiu $a2,$zero,0x1 -/* f05f480: 0fc0f8a7 */ jal func0f03e29c -/* f05f484: 00003825 */ or $a3,$zero,$zero -/* f05f488: 10000003 */ beqz $zero,.L0f05f498 -/* f05f48c: 00000000 */ sll $zero,$zero,0x0 -.L0f05f490: -/* f05f490: 0fc0fe12 */ jal chrSetFiring -/* f05f494: 00003025 */ or $a2,$zero,$zero -.L0f05f498: -/* f05f498: 3c03800a */ lui $v1,%hi(g_Vars) -/* f05f49c: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f05f4a0: 8c6a0438 */ lw $t2,0x438($v1) -/* f05f4a4: 8fbf001c */ lw $ra,0x1c($sp) -/* f05f4a8: 27bd0040 */ addiu $sp,$sp,0x40 -/* f05f4ac: 254e0004 */ addiu $t6,$t2,0x4 -/* f05f4b0: ac6e0438 */ sw $t6,0x438($v1) -/* f05f4b4: 03e00008 */ jr $ra -/* f05f4b8: 00001025 */ or $v0,$zero,$zero -); +bool aiChrSetFiringInCutscene(void) +{ + u8 *cmd = g_Vars.ailist + g_Vars.aioffset; + struct chrdata *chr = chrFindById(g_Vars.chrdata, cmd[2]); + struct coord sp2c = var80069868; + struct coord sp20 = var80069874; + + if (chr && chr->weapons_held[0]) { + if (cmd[3]) { + chrSetFiring(chr, 0, true); + func0f03e29c(chr, 0, 1, 0, &sp2c, &sp20); + } else { + chrSetFiring(chr, 0, false); + } + } + + g_Vars.aioffset += 4; + + return false; +} /** * @cmd 01d0 diff --git a/src/game/data/data_0083d0.c b/src/game/data/data_0083d0.c index 4987b91ed..ecab03533 100644 --- a/src/game/data/data_0083d0.c +++ b/src/game/data/data_0083d0.c @@ -6682,7 +6682,7 @@ bool (*g_CommandPointers[])(void) = { /*0x01cc*/ ai01cc, /*0x01cd*/ ai01cd, /*0x01ce*/ ai01ce, - /*0x01cf*/ ai01cf, + /*0x01cf*/ aiChrSetFiringInCutscene, /*0x01d0*/ aiSetPortalFlag, /*0x01d1*/ aiSetObjPartVisible, /*0x01d2*/ aiChrEmitSparks, @@ -7203,12 +7203,8 @@ u16 special_animations[] = { u32 var80069860 = 0x00000000; u32 var80069864 = 0x00000000; -u32 var80069868 = 0x00000000; -u32 var8006986c = 0x00000000; -u32 var80069870 = 0x00000000; -u32 var80069874 = 0x00000000; -u32 var80069878 = 0x00000000; -u32 var8006987c = 0x00000000; +struct coord var80069868 = {0, 0, 0}; +struct coord var80069874 = {0, 0, 0}; u32 var80069880 = 0x3f800000; u32 var80069884 = 0x00000001; u32 var80069888 = 0x01010101; diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index 906f05933..487aa23df 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -290,7 +290,7 @@ u32 func0f03dff4(void); void func0f03e094(struct chrdata *chr); u32 func0f03e0e4(void); u32 func0f03e1a8(void); -u32 func0f03e29c(void); +void func0f03e29c(struct chrdata *chr, s32 arg1, s32 arg2, s32 arg3, struct coord *arg4, struct coord *arg5); f32 func0f03e45c(struct chrdata *chr); void func0f03e538(struct chrdata *chr, f32 arg1); f32 func0f03e578(struct chrdata *chr); diff --git a/src/include/game/chr/chraicommands.h b/src/include/game/chr/chraicommands.h index 9b532c0b1..399f922af 100644 --- a/src/include/game/chr/chraicommands.h +++ b/src/include/game/chr/chraicommands.h @@ -426,7 +426,7 @@ /*0x01cc*/ bool ai01cc(void); /*0x01cd*/ bool ai01cd(void); /*0x01ce*/ bool ai01ce(void); -/*0x01cf*/ bool ai01cf(void); +/*0x01cf*/ bool aiChrSetFiringInCutscene(void); /*0x01d0*/ bool aiSetPortalFlag(void); /*0x01d1*/ bool aiSetObjPartVisible(void); /*0x01d2*/ bool aiChrEmitSparks(void); diff --git a/src/include/game/data/data_0083d0.h b/src/include/game/data/data_0083d0.h index 75c910480..54d136e35 100644 --- a/src/include/game/data/data_0083d0.h +++ b/src/include/game/data/data_0083d0.h @@ -231,8 +231,8 @@ extern u32 var80069780; extern u32 var8006978c; extern u16 special_animations[]; extern u32 var80069860; -extern u32 var80069868; -extern u32 var80069874; +extern struct coord var80069868; +extern struct coord var80069874; extern u32 var800698c0; extern u32 var800698d8; extern u32 var800698dc;