diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 716daf966..a38b60067 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -13845,33 +13845,16 @@ glabel ai01cf /** * @cmd 01d0 */ -GLOBAL_ASM( -glabel ai01d0 -/* f05f4bc: 3c06800a */ lui $a2,%hi(g_Vars) -/* f05f4c0: 24c69fc0 */ addiu $a2,$a2,%lo(g_Vars) -/* f05f4c4: 8cce0434 */ lw $t6,0x434($a2) -/* f05f4c8: 8ccf0438 */ lw $t7,0x438($a2) -/* f05f4cc: 3c0b800a */ lui $t3,0x800a -/* f05f4d0: 8d6b4cc8 */ lw $t3,0x4cc8($t3) -/* f05f4d4: 01cf1821 */ addu $v1,$t6,$t7 -/* f05f4d8: 90780002 */ lbu $t8,0x2($v1) -/* f05f4dc: 90680003 */ lbu $t0,0x3($v1) -/* f05f4e0: 906e0004 */ lbu $t6,0x4($v1) -/* f05f4e4: 0018ca00 */ sll $t9,$t8,0x8 -/* f05f4e8: 03282025 */ or $a0,$t9,$t0 -/* f05f4ec: 00044c00 */ sll $t1,$a0,0x10 -/* f05f4f0: 00095403 */ sra $t2,$t1,0x10 -/* f05f4f4: 000a60c0 */ sll $t4,$t2,0x3 -/* f05f4f8: 016c2821 */ addu $a1,$t3,$t4 -/* f05f4fc: 90ad0006 */ lbu $t5,0x6($a1) -/* f05f500: 00001025 */ or $v0,$zero,$zero -/* f05f504: 01ae7825 */ or $t7,$t5,$t6 -/* f05f508: a0af0006 */ sb $t7,0x6($a1) -/* f05f50c: 8cd80438 */ lw $t8,0x438($a2) -/* f05f510: 27190005 */ addiu $t9,$t8,0x5 -/* f05f514: 03e00008 */ jr $ra -/* f05f518: acd90438 */ sw $t9,0x438($a2) -); +bool aiSetPortalFlag(void) +{ + u8 *cmd = g_Vars.ailist + g_Vars.aioffset; + s16 portalnum = cmd[3] | (cmd[2] << 8); + + g_Portals[portalnum].flags |= cmd[4]; + g_Vars.aioffset += 5; + + return false; +} /** * @cmd 01d1 diff --git a/src/game/game_000920.c b/src/game/game_000920.c index 6c58d9195..dc9c53b3f 100644 --- a/src/game/game_000920.c +++ b/src/game/game_000920.c @@ -1483,8 +1483,8 @@ glabel func0f001c0c /* f001c3c: 3c018006 */ lui $at,0x8006 /* f001c40: 0fc008ee */ jal func0f0023b8 /* f001c44: ac201440 */ sw $zero,0x1440($at) -/* f001c48: 3c17800a */ lui $s7,%hi(var800a4cc8) -/* f001c4c: 26f74cc8 */ addiu $s7,$s7,%lo(var800a4cc8) +/* f001c48: 3c17800a */ lui $s7,%hi(g_Portals) +/* f001c4c: 26f74cc8 */ addiu $s7,$s7,%lo(g_Portals) /* f001c50: 8ee30000 */ lw $v1,0x0($s7) /* f001c54: 3c10800a */ lui $s0,%hi(var8009cadc) /* f001c58: 2610cadc */ addiu $s0,$s0,%lo(var8009cadc) diff --git a/src/game/game_157db0.c b/src/game/game_157db0.c index 6de89ad6c..63c5c7b98 100644 --- a/src/game/game_157db0.c +++ b/src/game/game_157db0.c @@ -4386,8 +4386,8 @@ glabel func0f15b908 /* f15bb50: 00000000 */ sll $zero,$zero,0x0 /* f15bb54: 3c0e800a */ lui $t6,0x800a /* f15bb58: 8dce4920 */ lw $t6,0x4920($t6) -/* f15bb5c: 3c17800a */ lui $s7,%hi(var800a4cc8) -/* f15bb60: 26f74cc8 */ addiu $s7,$s7,%lo(var800a4cc8) +/* f15bb5c: 3c17800a */ lui $s7,%hi(g_Portals) +/* f15bb60: 26f74cc8 */ addiu $s7,$s7,%lo(g_Portals) /* f15bb64: 15c00324 */ bnez $t6,.L0f15c7f8 /* f15bb68: 24050004 */ addiu $a1,$zero,0x4 /* f15bb6c: 8ef00000 */ lw $s0,0x0($s7) @@ -11300,9 +11300,9 @@ glabel func0f161c08 /* f161c48: 846c000e */ lh $t4,0xe($v1) /* f161c4c: 8d6b4ce0 */ lw $t3,0x4ce0($t3) /* f161c50: 3c08800a */ lui $t0,0x800a -/* f161c54: 3c0a800a */ lui $t2,%hi(var800a4cc8) +/* f161c54: 3c0a800a */ lui $t2,%hi(g_Portals) /* f161c58: 000c6840 */ sll $t5,$t4,0x1 -/* f161c5c: 254a4cc8 */ addiu $t2,$t2,%lo(var800a4cc8) +/* f161c5c: 254a4cc8 */ addiu $t2,$t2,%lo(g_Portals) /* f161c60: 8d084ccc */ lw $t0,0x4ccc($t0) /* f161c64: c4e20008 */ lwc1 $f2,0x8($a3) /* f161c68: c4ec0000 */ lwc1 $f12,0x0($a3) @@ -12000,14 +12000,14 @@ glabel func0f1625ec /* f162628: 100001a6 */ beqz $zero,.L0f162cc4 /* f16262c: 00801025 */ or $v0,$a0,$zero .L0f162630: -/* f162630: 3c17800a */ lui $s7,%hi(var800a4cc8) +/* f162630: 3c17800a */ lui $s7,%hi(g_Portals) /* f162634: 3c15800a */ lui $s5,%hi(var800a65c0) /* f162638: 3c14800a */ lui $s4,%hi(g_RoomPtrs) /* f16263c: 3c138008 */ lui $s3,%hi(var8007fcac) /* f162640: 2673fcac */ addiu $s3,$s3,%lo(var8007fcac) /* f162644: 26944928 */ addiu $s4,$s4,%lo(g_RoomPtrs) /* f162648: 26b565c0 */ addiu $s5,$s5,%lo(var800a65c0) -/* f16264c: 26f74cc8 */ addiu $s7,$s7,%lo(var800a4cc8) +/* f16264c: 26f74cc8 */ addiu $s7,$s7,%lo(g_Portals) /* f162650: 24160001 */ addiu $s6,$zero,0x1 .L0f162654: /* f162654: 92040000 */ lbu $a0,0x0($s0) @@ -13350,8 +13350,8 @@ GLOBAL_ASM( glabel func0f16397c /* f16397c: 27bdff88 */ addiu $sp,$sp,-120 /* f163980: afb70030 */ sw $s7,0x30($sp) -/* f163984: 3c17800a */ lui $s7,%hi(var800a4cc8) -/* f163988: 26f74cc8 */ addiu $s7,$s7,%lo(var800a4cc8) +/* f163984: 3c17800a */ lui $s7,%hi(g_Portals) +/* f163988: 26f74cc8 */ addiu $s7,$s7,%lo(g_Portals) /* f16398c: afb00014 */ sw $s0,0x14($sp) /* f163990: 8eea0000 */ lw $t2,0x0($s7) /* f163994: 3c108008 */ lui $s0,%hi(var8007fc38) @@ -14211,10 +14211,10 @@ glabel func0f1645a8 /* f1645dc: 00c08825 */ or $s1,$a2,$zero /* f1645e0: 1920002c */ blez $t1,.L0f164694 /* f1645e4: 00001825 */ or $v1,$zero,$zero -/* f1645e8: 3c0d800a */ lui $t5,%hi(var800a4cc8) +/* f1645e8: 3c0d800a */ lui $t5,%hi(g_Portals) /* f1645ec: 3c0c800a */ lui $t4,%hi(var800a4ce0) /* f1645f0: 258c4ce0 */ addiu $t4,$t4,%lo(var800a4ce0) -/* f1645f4: 25ad4cc8 */ addiu $t5,$t5,%lo(var800a4cc8) +/* f1645f4: 25ad4cc8 */ addiu $t5,$t5,%lo(g_Portals) /* f1645f8: 00002825 */ or $a1,$zero,$zero /* f1645fc: 8518000e */ lh $t8,0xe($t0) .L0f164600: @@ -14444,10 +14444,10 @@ glabel func0f1648cc /* f164904: 00002825 */ or $a1,$zero,$zero /* f164908: 19000047 */ blez $t0,.L0f164a28 /* f16490c: 00005025 */ or $t2,$zero,$zero -/* f164910: 3c11800a */ lui $s1,%hi(var800a4cc8) +/* f164910: 3c11800a */ lui $s1,%hi(g_Portals) /* f164914: 3c10800a */ lui $s0,%hi(var800a4ce0) /* f164918: 26104ce0 */ addiu $s0,$s0,%lo(var800a4ce0) -/* f16491c: 26314cc8 */ addiu $s1,$s1,%lo(var800a4cc8) +/* f16491c: 26314cc8 */ addiu $s1,$s1,%lo(g_Portals) /* f164920: 2412000c */ addiu $s2,$zero,0xc .L0f164924: /* f164924: 84ef000e */ lh $t7,0xe($a3) @@ -14552,8 +14552,8 @@ glabel func0f1648cc GLOBAL_ASM( glabel func0f164a88 -/* f164a88: 3c06800a */ lui $a2,%hi(var800a4cc8) -/* f164a8c: 24c64cc8 */ addiu $a2,$a2,%lo(var800a4cc8) +/* f164a88: 3c06800a */ lui $a2,%hi(g_Portals) +/* f164a8c: 24c64cc8 */ addiu $a2,$a2,%lo(g_Portals) /* f164a90: 8cce0000 */ lw $t6,0x0($a2) /* f164a94: 000418c0 */ sll $v1,$a0,0x3 /* f164a98: 01c32821 */ addu $a1,$t6,$v1 @@ -14838,8 +14838,8 @@ GLOBAL_ASM( glabel func0f164e8c /* f164e8c: 27bdffb8 */ addiu $sp,$sp,-72 /* f164e90: afb6003c */ sw $s6,0x3c($sp) -/* f164e94: 3c16800a */ lui $s6,%hi(var800a4cc8) -/* f164e98: 26d64cc8 */ addiu $s6,$s6,%lo(var800a4cc8) +/* f164e94: 3c16800a */ lui $s6,%hi(g_Portals) +/* f164e98: 26d64cc8 */ addiu $s6,$s6,%lo(g_Portals) /* f164e9c: 8ece0000 */ lw $t6,0x0($s6) /* f164ea0: afbf0044 */ sw $ra,0x44($sp) /* f164ea4: afb70040 */ sw $s7,0x40($sp) @@ -15019,7 +15019,7 @@ glabel func0f1650d0 /* f1650fc: afa600b8 */ sw $a2,0xb8($sp) /* f165100: c4840000 */ lwc1 $f4,0x0($a0) /* f165104: 2401ffff */ addiu $at,$zero,-1 -/* f165108: 3c14800a */ lui $s4,%hi(var800a4cc8) +/* f165108: 3c14800a */ lui $s4,%hi(g_Portals) /* f16510c: e7a4009c */ swc1 $f4,0x9c($sp) /* f165110: c4860004 */ lwc1 $f6,0x4($a0) /* f165114: 00e0b825 */ or $s7,$a3,$zero @@ -15030,7 +15030,7 @@ glabel func0f1650d0 /* f165128: 00c09825 */ or $s3,$a2,$zero /* f16512c: e7a800a4 */ swc1 $f8,0xa4($sp) /* f165130: c4aa0000 */ lwc1 $f10,0x0($a1) -/* f165134: 26944cc8 */ addiu $s4,$s4,%lo(var800a4cc8) +/* f165134: 26944cc8 */ addiu $s4,$s4,%lo(g_Portals) /* f165138: 8fb900b8 */ lw $t9,0xb8($sp) /* f16513c: e7aa0090 */ swc1 $f10,0x90($sp) /* f165140: c4b00004 */ lwc1 $f16,0x4($a1) @@ -15201,8 +15201,8 @@ glabel func0f165360 /* f16537c: 3c017f1b */ lui $at,%hi(var7f1b76d0) /* f165380: c42d76d0 */ lwc1 $f13,%lo(var7f1b76d0)($at) /* f165384: c50c000c */ lwc1 $f12,0xc($t0) -/* f165388: 3c08800a */ lui $t0,%hi(var800a4cc8) -/* f16538c: 25084cc8 */ addiu $t0,$t0,%lo(var800a4cc8) +/* f165388: 3c08800a */ lui $t0,%hi(g_Portals) +/* f16538c: 25084cc8 */ addiu $t0,$t0,%lo(g_Portals) /* f165390: 8d080000 */ lw $t0,0x0($t0) /* f165394: 000448c0 */ sll $t1,$a0,0x3 /* f165398: 01284820 */ add $t1,$t1,$t0 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 6439ebde3..61919859d 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -22928,7 +22928,7 @@ u32 var800a4cb8 = 0; u32 var800a4cbc = 0; u32 var800a4cc0 = 0; u32 var800a4cc4 = 0; -u32 var800a4cc8 = 0; +struct portal *g_Portals = NULL; u32 var800a4ccc = 0; u32 var800a4cd0 = 0; u32 var800a4cd4 = 0; diff --git a/src/include/game/chr/chraicommands.h b/src/include/game/chr/chraicommands.h index 192ad5ad8..b58bc9d46 100644 --- a/src/include/game/chr/chraicommands.h +++ b/src/include/game/chr/chraicommands.h @@ -427,7 +427,7 @@ /*0x01cd*/ bool ai01cd(void); /*0x01ce*/ bool ai01ce(void); /*0x01cf*/ bool ai01cf(void); -/*0x01d0*/ bool ai01d0(void); +/*0x01d0*/ bool aiSetPortalFlag(void); /*0x01d1*/ bool aiSetObjPartVisible(void); /*0x01d2*/ bool aiChrEmitSparks(void); /*0x01d3*/ bool aiSetDrCarollImages(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 430c50c66..e460f5425 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -749,7 +749,7 @@ extern u32 var800a4bf0; extern u32 var800a4bf8; extern u32 var800a4cc0; extern u32 var800a4cc4; -extern u32 var800a4cc8; +extern struct portal *g_Portals; extern u32 var800a4ccc; extern u32 var800a4cd0; extern u32 var800a4cd4; diff --git a/src/include/types.h b/src/include/types.h index aa0f4c7b4..43dfa9363 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4578,4 +4578,10 @@ struct scenariodata { }; }; +struct portal { + u32 unk00; + u16 unk04; + u8 flags; +}; + #endif diff --git a/src/library/library_16110.c b/src/library/library_16110.c index 809f8ec3e..298305389 100644 --- a/src/library/library_16110.c +++ b/src/library/library_16110.c @@ -2336,7 +2336,7 @@ glabel func00018148 /* 181e8: 240100ff */ addiu $at,$zero,0xff /* 181ec: 312a00ff */ andi $t2,$t1,0xff /* 181f0: 15410010 */ bne $t2,$at,.L00018234 -/* 181f4: 3c14800a */ lui $s4,%hi(var800a4cc8) +/* 181f4: 3c14800a */ lui $s4,%hi(g_Portals) /* 181f8: 3c038008 */ lui $v1,0x8008 /* 181fc: 8c63fc40 */ lw $v1,-0x3c0($v1) /* 18200: 3c0b800a */ lui $t3,0x800a @@ -2355,7 +2355,7 @@ glabel func00018148 /* 1822c: 3c018006 */ lui $at,0x8006 /* 18230: a020ef20 */ sb $zero,-0x10e0($at) .L00018234: -/* 18234: 26944cc8 */ addiu $s4,$s4,%lo(var800a4cc8) +/* 18234: 26944cc8 */ addiu $s4,$s4,%lo(g_Portals) /* 18238: 87b5009c */ lh $s5,0x9c($sp) .L0001823c: /* 1823c: a7a4007c */ sh $a0,0x7c($sp) diff --git a/src/setup/setup_000000.c b/src/setup/setup_000000.c index 88cda5af4..d6a5be74a 100644 --- a/src/setup/setup_000000.c +++ b/src/setup/setup_000000.c @@ -14599,7 +14599,7 @@ bool (*g_CommandPointers[])(void) = { /*0x01cd*/ ai01cd, /*0x01ce*/ ai01ce, /*0x01cf*/ ai01cf, - /*0x01d0*/ ai01d0, + /*0x01d0*/ aiSetPortalFlag, /*0x01d1*/ aiSetObjPartVisible, /*0x01d2*/ aiChrEmitSparks, /*0x01d3*/ aiSetDrCarollImages,