diff --git a/src/files/setup/setupame.c b/src/files/setup/setupame.c index 95ffd672d..a9528f900 100644 --- a/src/files/setup/setupame.c +++ b/src/files/setup/setupame.c @@ -2390,33 +2390,33 @@ u8 func100b_lightswitch[] = { // Turning lights off set_stage_flag(STAGEFLAG_LIGHTS_OFF) - set_lights_state(0x0044, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0039, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003c, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003d, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003e, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003b, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0042, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003f, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003a, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0041, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0040, LIGHTOP_7, 0x00, 0x00, 0x00) + set_lights_state(0x0044, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0039, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003c, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003d, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003e, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003b, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0042, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003f, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003a, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0041, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0040, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) reloop(0x04) // Turning lights on label(0x06) unset_stage_flag(STAGEFLAG_LIGHTS_OFF) - set_lights_state(0x0044, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0039, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003c, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003d, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003e, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003b, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0042, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003f, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003a, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0041, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0040, LIGHTOP_6, 0x00, 0x00, 0x00) + set_lights_state(0x0044, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0039, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003c, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003d, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003e, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003b, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0042, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003f, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003a, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0041, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0040, LIGHTOP_TURNON, 0x00, 0x00, 0x00) endloop(0x04) endlist diff --git a/src/files/setup/setupark.c b/src/files/setup/setupark.c index b4da399cc..6f77c1bc0 100644 --- a/src/files/setup/setupark.c +++ b/src/files/setup/setupark.c @@ -2025,17 +2025,17 @@ u8 func040d_cass[] = { endloop(0x2a) label(0x20) - set_lights_state(0x0044, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0039, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003c, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003d, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003e, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003b, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0042, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003f, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003a, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0041, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0040, LIGHTOP_7, 0x00, 0x00, 0x00) + set_lights_state(0x0044, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0039, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003c, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003d, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003e, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003b, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0042, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003f, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003a, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0041, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0040, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) set_stage_flag(STAGEFLAG_TOP_LIGHTS_OFF) set_stage_flag(STAGEFLAG_TOP_GUARDS_ATTACKING) walk_to_pad(0x000f) @@ -2129,33 +2129,33 @@ u8 func100a_lightswitch[] = { label(0x20) play_sound(0x00ba, -1) if_stage_flag_eq(STAGEFLAG_TOP_LIGHTS_OFF, TRUE, /*goto*/ 0x00) - set_lights_state(0x0044, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0039, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003c, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003d, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003e, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003b, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0042, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003f, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x003a, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0041, LIGHTOP_7, 0x00, 0x00, 0x00) - set_lights_state(0x0040, LIGHTOP_7, 0x00, 0x00, 0x00) + set_lights_state(0x0044, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0039, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003c, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003d, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003e, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003b, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0042, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003f, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x003a, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0041, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) + set_lights_state(0x0040, LIGHTOP_TURNOFF, 0x00, 0x00, 0x00) set_stage_flag(STAGEFLAG_TOP_LIGHTS_OFF) reloop(0x1f) label(0x00) unset_stage_flag(STAGEFLAG_TOP_LIGHTS_OFF) - set_lights_state(0x0044, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0039, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003c, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003d, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003e, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003b, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0042, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003f, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x003a, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0041, LIGHTOP_6, 0x00, 0x00, 0x00) - set_lights_state(0x0040, LIGHTOP_6, 0x00, 0x00, 0x00) + set_lights_state(0x0044, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0039, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003c, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003d, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003e, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003b, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0042, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003f, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x003a, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0041, LIGHTOP_TURNON, 0x00, 0x00, 0x00) + set_lights_state(0x0040, LIGHTOP_TURNON, 0x00, 0x00, 0x00) endloop(0x1f) endlist diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index da303e728..504ba6e74 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -6175,11 +6175,11 @@ bool aiSetLights(void) if (roomnum >= 0) { switch (cmd[4]) { - case LIGHTOP_7: - func0f002b58(roomnum, false); + case LIGHTOP_TURNOFF: + roomSetLightsOn(roomnum, false); break; - case LIGHTOP_6: - func0f002b58(roomnum, true); + case LIGHTOP_TURNON: + roomSetLightsOn(roomnum, true); break; default: roomSetLighting(roomnum, cmd[4], cmd[5], cmd[6], cmd[7]); diff --git a/src/game/dlights.c b/src/game/dlights.c index 3d6e01cee..72a58e82b 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -117,8 +117,8 @@ glabel func0f00097c /* f000994: 000f7880 */ sll $t7,$t7,0x2 /* f000998: 01cfc021 */ addu $t8,$t6,$t7 /* f00099c: 9719000a */ lhu $t9,0xa($t8) -/* f0009a0: 3c0a800a */ lui $t2,%hi(var800a4cd8) -/* f0009a4: 8d4a4cd8 */ lw $t2,%lo(var800a4cd8)($t2) +/* f0009a0: 3c0a800a */ lui $t2,%hi(g_LightsFileData) +/* f0009a4: 8d4a4cd8 */ lw $t2,%lo(g_LightsFileData)($t2) /* f0009a8: 03254021 */ addu $t0,$t9,$a1 /* f0009ac: 00084900 */ sll $t1,$t0,0x4 /* f0009b0: 01284821 */ addu $t1,$t1,$t0 @@ -455,9 +455,9 @@ glabel func0f000dfc /* f000e14: 000f7880 */ sll $t7,$t7,0x2 /* f000e18: 01cfc021 */ addu $t8,$t6,$t7 /* f000e1c: 9719000a */ lhu $t9,0xa($t8) -/* f000e20: 3c09800a */ lui $t1,%hi(var800a4cd8) +/* f000e20: 3c09800a */ lui $t1,%hi(g_LightsFileData) /* f000e24: 44800000 */ mtc1 $zero,$f0 -/* f000e28: 8d294cd8 */ lw $t1,%lo(var800a4cd8)($t1) +/* f000e28: 8d294cd8 */ lw $t1,%lo(g_LightsFileData)($t1) /* f000e2c: 00194100 */ sll $t0,$t9,0x4 /* f000e30: 00055100 */ sll $t2,$a1,0x4 /* f000e34: 01194021 */ addu $t0,$t0,$t9 @@ -616,8 +616,8 @@ glabel func0f001000 /* f001040: 000f7880 */ sll $t7,$t7,0x2 /* f001044: 01cfc021 */ addu $t8,$t6,$t7 /* f001048: 9719000a */ lhu $t9,0xa($t8) -/* f00104c: 3c09800a */ lui $t1,%hi(var800a4cd8) -/* f001050: 8d294cd8 */ lw $t1,%lo(var800a4cd8)($t1) +/* f00104c: 3c09800a */ lui $t1,%hi(g_LightsFileData) +/* f001050: 8d294cd8 */ lw $t1,%lo(g_LightsFileData)($t1) /* f001054: 00194100 */ sll $t0,$t9,0x4 /* f001058: 00055100 */ sll $t2,$a1,0x4 /* f00105c: 01194021 */ addu $t0,$t0,$t9 @@ -1048,9 +1048,9 @@ glabel func0f0013c8 /* f001640: 01e7c021 */ addu $t8,$t7,$a3 /* f001644: 9719000a */ lhu $t9,0xa($t8) /* f001648: 81180008 */ lb $t8,0x8($t0) -/* f00164c: 3c0f800a */ lui $t7,%hi(var800a4cd8) +/* f00164c: 3c0f800a */ lui $t7,%hi(g_LightsFileData) /* f001650: 00197100 */ sll $t6,$t9,0x4 -/* f001654: 8def4cd8 */ lw $t7,%lo(var800a4cd8)($t7) +/* f001654: 8def4cd8 */ lw $t7,%lo(g_LightsFileData)($t7) /* f001658: 01d97021 */ addu $t6,$t6,$t9 /* f00165c: 000e7040 */ sll $t6,$t6,0x1 /* f001660: 1b000030 */ blez $t8,.L0f001724 @@ -1200,8 +1200,8 @@ glabel func0f001734 /* f00186c: 46009083 */ div.s $f2,$f18,$f0 /* f001870: c7a80094 */ lwc1 $f8,0x94($sp) /* f001874: 8fc90000 */ lw $t1,0x0($s8) -/* f001878: 3c0c800a */ lui $t4,%hi(var800a4cd8) -/* f00187c: 8d8c4cd8 */ lw $t4,%lo(var800a4cd8)($t4) +/* f001878: 3c0c800a */ lui $t4,%hi(g_LightsFileData) +/* f00187c: 8d8c4cd8 */ lw $t4,%lo(g_LightsFileData)($t4) /* f001880: 01371021 */ addu $v0,$t1,$s7 /* f001884: 00009825 */ or $s3,$zero,$zero /* f001888: 27b6008c */ addiu $s6,$sp,0x8c @@ -1352,9 +1352,9 @@ glabel roomSetFaultyLights /* f001aa4: 01d31021 */ addu $v0,$t6,$s3 /* f001aa8: 944f000a */ lhu $t7,0xa($v0) /* f001aac: 80430008 */ lb $v1,0x8($v0) -/* f001ab0: 3c19800a */ lui $t9,%hi(var800a4cd8) +/* f001ab0: 3c19800a */ lui $t9,%hi(g_LightsFileData) /* f001ab4: 000fc100 */ sll $t8,$t7,0x4 -/* f001ab8: 8f394cd8 */ lw $t9,%lo(var800a4cd8)($t9) +/* f001ab8: 8f394cd8 */ lw $t9,%lo(g_LightsFileData)($t9) /* f001abc: 030fc021 */ addu $t8,$t8,$t7 /* f001ac0: 0018c040 */ sll $t8,$t8,0x1 /* f001ac4: 00a0a825 */ or $s5,$a1,$zero @@ -2533,66 +2533,29 @@ glabel func0f002a98 /* f002b54: 27bd0028 */ addiu $sp,$sp,0x28 ); -GLOBAL_ASM( -glabel func0f002b58 -/* f002b58: 3c08800a */ lui $t0,%hi(g_Rooms) -/* f002b5c: 000418c0 */ sll $v1,$a0,0x3 -/* f002b60: 25084928 */ addiu $t0,$t0,%lo(g_Rooms) -/* f002b64: 00641821 */ addu $v1,$v1,$a0 -/* f002b68: 8d0e0000 */ lw $t6,0x0($t0) -/* f002b6c: 00031880 */ sll $v1,$v1,0x2 -/* f002b70: 00641823 */ subu $v1,$v1,$a0 -/* f002b74: 00031880 */ sll $v1,$v1,0x2 -/* f002b78: 01c33021 */ addu $a2,$t6,$v1 -/* f002b7c: 94cf000a */ lhu $t7,0xa($a2) -/* f002b80: 80c70008 */ lb $a3,0x8($a2) -/* f002b84: 3c19800a */ lui $t9,%hi(var800a4cd8) -/* f002b88: 000fc100 */ sll $t8,$t7,0x4 -/* f002b8c: 8f394cd8 */ lw $t9,%lo(var800a4cd8)($t9) -/* f002b90: 030fc021 */ addu $t8,$t8,$t7 -/* f002b94: 0018c040 */ sll $t8,$t8,0x1 -/* f002b98: 10e00014 */ beqz $a3,.L0f002bec -/* f002b9c: 03191021 */ addu $v0,$t8,$t9 -/* f002ba0: 18e00012 */ blez $a3,.L0f002bec -/* f002ba4: 00002025 */ or $a0,$zero,$zero -.L0f002ba8: -/* f002ba8: 94490004 */ lhu $t1,0x4($v0) -/* f002bac: 24840001 */ addiu $a0,$a0,0x1 -/* f002bb0: 00095e40 */ sll $t3,$t1,0x19 -/* f002bb4: 0563000b */ bgezl $t3,.L0f002be4 -/* f002bb8: 0087082a */ slt $at,$a0,$a3 -/* f002bbc: 904f0005 */ lbu $t7,0x5($v0) -/* f002bc0: 00056940 */ sll $t5,$a1,0x5 -/* f002bc4: 31ae0020 */ andi $t6,$t5,0x20 -/* f002bc8: 31f8ffdf */ andi $t8,$t7,0xffdf -/* f002bcc: 01d8c825 */ or $t9,$t6,$t8 -/* f002bd0: a0590005 */ sb $t9,0x5($v0) -/* f002bd4: 8d090000 */ lw $t1,0x0($t0) -/* f002bd8: 01233021 */ addu $a2,$t1,$v1 -/* f002bdc: 80c70008 */ lb $a3,0x8($a2) -/* f002be0: 0087082a */ slt $at,$a0,$a3 -.L0f002be4: -/* f002be4: 1420fff0 */ bnez $at,.L0f002ba8 -/* f002be8: 24420022 */ addiu $v0,$v0,0x22 -.L0f002bec: -/* f002bec: 50a00006 */ beqzl $a1,.L0f002c08 -/* f002bf0: 94cc0000 */ lhu $t4,0x0($a2) -/* f002bf4: 94ca0000 */ lhu $t2,0x0($a2) -/* f002bf8: 314bdfff */ andi $t3,$t2,0xdfff -/* f002bfc: 10000004 */ b .L0f002c10 -/* f002c00: a4cb0000 */ sh $t3,0x0($a2) -/* f002c04: 94cc0000 */ lhu $t4,0x0($a2) -.L0f002c08: -/* f002c08: 358d2000 */ ori $t5,$t4,0x2000 -/* f002c0c: a4cd0000 */ sh $t5,0x0($a2) -.L0f002c10: -/* f002c10: 8d0f0000 */ lw $t7,0x0($t0) -/* f002c14: 01e33021 */ addu $a2,$t7,$v1 -/* f002c18: 94ce0000 */ lhu $t6,0x0($a2) -/* f002c1c: 35d80100 */ ori $t8,$t6,0x100 -/* f002c20: 03e00008 */ jr $ra -/* f002c24: a4d80000 */ sh $t8,0x0($a2) -); +void roomSetLightsOn(s32 roomnum, s32 enable) +{ + struct light *light = (struct light *)&g_LightsFileData[g_Rooms[roomnum].lightindex * 0x22]; + s32 i; + + if (g_Rooms[roomnum].numlights) { + for (i = 0; i < g_Rooms[roomnum].numlights; i++) { + if (light->healthy) { + light->on = enable; + } + + light++; + } + } + + if (enable) { + g_Rooms[roomnum].flags &= ~ROOMFLAG_LIGHTSOFF; + } else { + g_Rooms[roomnum].flags |= ROOMFLAG_LIGHTSOFF; + } + + g_Rooms[roomnum].flags |= ROOMFLAG_0100; +} void roomSetLighting(s32 roomnum, s32 operation, u8 arg2, u8 arg3, u8 arg4) { @@ -2642,8 +2605,8 @@ glabel func0f002ef8 /* f002f20: afa500dc */ sw $a1,0xdc($sp) /* f002f24: 01d8c821 */ addu $t9,$t6,$t8 /* f002f28: 972a000a */ lhu $t2,0xa($t9) -/* f002f2c: 3c0f800a */ lui $t7,%hi(var800a4cd8) -/* f002f30: 8def4cd8 */ lw $t7,%lo(var800a4cd8)($t7) +/* f002f2c: 3c0f800a */ lui $t7,%hi(g_LightsFileData) +/* f002f30: 8def4cd8 */ lw $t7,%lo(g_LightsFileData)($t7) /* f002f34: 01456021 */ addu $t4,$t2,$a1 /* f002f38: 000c6900 */ sll $t5,$t4,0x4 /* f002f3c: 01ac6821 */ addu $t5,$t5,$t4 @@ -3010,11 +2973,11 @@ glabel func0f003444 /* f003480: 0000a025 */ or $s4,$zero,$zero /* f003484: 3c013f00 */ lui $at,0x3f00 /* f003488: 3c02800a */ lui $v0,%hi(g_Rooms) -/* f00348c: 3c16800a */ lui $s6,%hi(var800a4cd8) +/* f00348c: 3c16800a */ lui $s6,%hi(g_LightsFileData) /* f003490: 3c12800a */ lui $s2,%hi(g_Rooms) /* f003494: 4481a000 */ mtc1 $at,$f20 /* f003498: 26524928 */ addiu $s2,$s2,%lo(g_Rooms) -/* f00349c: 26d64cd8 */ addiu $s6,$s6,%lo(var800a4cd8) +/* f00349c: 26d64cd8 */ addiu $s6,$s6,%lo(g_LightsFileData) /* f0034a0: 8c424928 */ lw $v0,%lo(g_Rooms)($v0) /* f0034a4: 00009825 */ or $s3,$zero,$zero /* f0034a8: 24150022 */ addiu $s5,$zero,0x22 @@ -3114,11 +3077,11 @@ glabel func0f0035c0 /* f0035f8: 19c00040 */ blez $t6,.L0f0036fc /* f0035fc: 0000a025 */ or $s4,$zero,$zero /* f003600: 3c02800a */ lui $v0,%hi(g_Rooms) -/* f003604: 3c16800a */ lui $s6,%hi(var800a4cd8) +/* f003604: 3c16800a */ lui $s6,%hi(g_LightsFileData) /* f003608: 3c12800a */ lui $s2,%hi(g_Rooms) /* f00360c: 4480a000 */ mtc1 $zero,$f20 /* f003610: 26524928 */ addiu $s2,$s2,%lo(g_Rooms) -/* f003614: 26d64cd8 */ addiu $s6,$s6,%lo(var800a4cd8) +/* f003614: 26d64cd8 */ addiu $s6,$s6,%lo(g_LightsFileData) /* f003618: 8c424928 */ lw $v0,%lo(g_Rooms)($v0) /* f00361c: 00009825 */ or $s3,$zero,$zero /* f003620: 24150022 */ addiu $s5,$zero,0x22 @@ -3555,8 +3518,8 @@ glabel var7f1a7dd4 /* f003c10: 10800032 */ beqz $a0,.L0f003cdc /* f003c14: 00001825 */ or $v1,$zero,$zero /* f003c18: 9609000a */ lhu $t1,0xa($s0) -/* f003c1c: 3c0b800a */ lui $t3,%hi(var800a4cd8) -/* f003c20: 8d6b4cd8 */ lw $t3,%lo(var800a4cd8)($t3) +/* f003c1c: 3c0b800a */ lui $t3,%hi(g_LightsFileData) +/* f003c20: 8d6b4cd8 */ lw $t3,%lo(g_LightsFileData)($t3) /* f003c24: 00095100 */ sll $t2,$t1,0x4 /* f003c28: 01495021 */ addu $t2,$t2,$t1 /* f003c2c: 000a5040 */ sll $t2,$t2,0x1 @@ -3628,14 +3591,14 @@ glabel var7f1a7dd4 .L0f003d14: /* f003d14: c610005c */ lwc1 $f16,0x5c($s0) .L0f003d18: -/* f003d18: 3c0f800a */ lui $t7,%hi(var800a4cd8) +/* f003d18: 3c0f800a */ lui $t7,%hi(g_LightsFileData) /* f003d1c: 46100002 */ mul.s $f0,$f0,$f16 /* f003d20: 4600028d */ trunc.w.s $f10,$f0 /* f003d24: 440b5000 */ mfc1 $t3,$f10 /* f003d28: 00000000 */ nop /* f003d2c: a60b0050 */ sh $t3,0x50($s0) /* f003d30: 8e6c0000 */ lw $t4,0x0($s3) -/* f003d34: 8def4cd8 */ lw $t7,%lo(var800a4cd8)($t7) +/* f003d34: 8def4cd8 */ lw $t7,%lo(g_LightsFileData)($t7) /* f003d38: 01928021 */ addu $s0,$t4,$s2 /* f003d3c: 960d000a */ lhu $t5,0xa($s0) /* f003d40: 82040008 */ lb $a0,0x8($s0) diff --git a/src/game/game_13c510.c b/src/game/game_13c510.c index 0dc78ca7a..6678fd5d4 100644 --- a/src/game/game_13c510.c +++ b/src/game/game_13c510.c @@ -285,11 +285,11 @@ glabel func0f13c780 /* f13c818: 8fbf006c */ lw $ra,0x6c($sp) /* f13c81c: 84660012 */ lh $a2,0x12($v1) /* f13c820: 27b00138 */ addiu $s0,$sp,0x138 -/* f13c824: 3c0a800a */ lui $t2,%hi(var800a4cd8) +/* f13c824: 3c0a800a */ lui $t2,%hi(g_LightsFileData) /* f13c828: 10c002d4 */ beqz $a2,.L0f13d37c /* f13c82c: 3c0d800a */ lui $t5,%hi(var800a41a0) /* f13c830: 84620010 */ lh $v0,0x10($v1) -/* f13c834: 8d4a4cd8 */ lw $t2,%lo(var800a4cd8)($t2) +/* f13c834: 8d4a4cd8 */ lw $t2,%lo(g_LightsFileData)($t2) /* f13c838: 8dad41a0 */ lw $t5,%lo(var800a41a0)($t5) /* f13c83c: 00024900 */ sll $t1,$v0,0x4 /* f13c840: 01224821 */ addu $t1,$t1,$v0 @@ -1282,11 +1282,11 @@ glabel func0f13d568 /* f13d6a8: afa50140 */ sw $a1,0x140($sp) /* f13d6ac: 94ad0000 */ lhu $t5,0x0($a1) /* f13d6b0: 8fac0164 */ lw $t4,0x164($sp) -/* f13d6b4: 3c0f800a */ lui $t7,%hi(var800a4cd8) +/* f13d6b4: 3c0f800a */ lui $t7,%hi(g_LightsFileData) /* f13d6b8: 24010022 */ addiu $at,$zero,0x22 /* f13d6bc: 158d026d */ bne $t4,$t5,.L0f13e074 /* f13d6c0: 00005025 */ or $t2,$zero,$zero -/* f13d6c4: 8def4cd8 */ lw $t7,%lo(var800a4cd8)($t7) +/* f13d6c4: 8def4cd8 */ lw $t7,%lo(g_LightsFileData)($t7) /* f13d6c8: 3c0c800a */ lui $t4,%hi(var800a41a0) /* f13d6cc: 8d8c41a0 */ lw $t4,%lo(var800a41a0)($t4) /* f13d6d0: 00af8823 */ subu $s1,$a1,$t7 diff --git a/src/game/game_157db0.c b/src/game/game_157db0.c index 9c6f5e4ca..dd2d74721 100644 --- a/src/game/game_157db0.c +++ b/src/game/game_157db0.c @@ -4089,15 +4089,15 @@ glabel func0f15b534 /* f15b8a8: ac2e4cd4 */ sw $t6,%lo(g_PortalCommands)($at) .L0f15b8ac: /* f15b8ac: 8ca20010 */ lw $v0,0x10($a1) -/* f15b8b0: 3c01800a */ lui $at,%hi(var800a4cd8) +/* f15b8b0: 3c01800a */ lui $at,%hi(g_LightsFileData) /* f15b8b4: 14400004 */ bnez $v0,.L0f15b8c8 /* f15b8b8: 00447821 */ addu $t7,$v0,$a0 -/* f15b8bc: 3c01800a */ lui $at,%hi(var800a4cd8) +/* f15b8bc: 3c01800a */ lui $at,%hi(g_LightsFileData) /* f15b8c0: 10000003 */ b .L0f15b8d0 -/* f15b8c4: ac204cd8 */ sw $zero,%lo(var800a4cd8)($at) +/* f15b8c4: ac204cd8 */ sw $zero,%lo(g_LightsFileData)($at) .L0f15b8c8: /* f15b8c8: 01e7c021 */ addu $t8,$t7,$a3 -/* f15b8cc: ac384cd8 */ sw $t8,%lo(var800a4cd8)($at) +/* f15b8cc: ac384cd8 */ sw $t8,%lo(g_LightsFileData)($at) .L0f15b8d0: /* f15b8d0: 8ca20014 */ lw $v0,0x14($a1) /* f15b8d4: 3c01800a */ lui $at,%hi(var800a4cdc) @@ -4349,15 +4349,15 @@ glabel func0f15b534 /* f15b66c: ac2e4cd4 */ sw $t6,%lo(g_PortalCommands)($at) .L0f15b670: /* f15b670: 8ca20010 */ lw $v0,0x10($a1) -/* f15b674: 3c01800a */ lui $at,%hi(var800a4cd8) +/* f15b674: 3c01800a */ lui $at,%hi(g_LightsFileData) /* f15b678: 14400004 */ bnez $v0,.L0f15b68c /* f15b67c: 00447821 */ addu $t7,$v0,$a0 -/* f15b680: 3c01800a */ lui $at,%hi(var800a4cd8) +/* f15b680: 3c01800a */ lui $at,%hi(g_LightsFileData) /* f15b684: 10000003 */ b .L0f15b694 -/* f15b688: ac204cd8 */ sw $zero,%lo(var800a4cd8)($at) +/* f15b688: ac204cd8 */ sw $zero,%lo(g_LightsFileData)($at) .L0f15b68c: /* f15b68c: 01e7c021 */ addu $t8,$t7,$a3 -/* f15b690: ac384cd8 */ sw $t8,%lo(var800a4cd8)($at) +/* f15b690: ac384cd8 */ sw $t8,%lo(g_LightsFileData)($at) .L0f15b694: /* f15b694: 8ca20014 */ lw $v0,0x14($a1) /* f15b698: 3c01800a */ lui $at,%hi(var800a4cdc) diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 1cc0da2df..b067db081 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16403,7 +16403,7 @@ struct portal *g_Portals = NULL; u32 var800a4ccc = 0; u8 *var800a4cd0 = NULL; struct portalcmd *g_PortalCommands = NULL; -u32 var800a4cd8 = 0; +u8 *g_LightsFileData = NULL; u32 var800a4cdc = 0; u32 var800a4ce0 = 0; s16 var800a4ce4[2] = {0}; diff --git a/src/include/constants.h b/src/include/constants.h index 2c84b884b..6ad41948a 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -974,13 +974,13 @@ #define LANGUAGE_ENGLISH 0 #define LANGUAGE_JAPANESE 1 -#define LIGHTOP_1 1 -#define LIGHTOP_2 2 -#define LIGHTOP_3 3 -#define LIGHTOP_4 4 -#define LIGHTOP_5 5 -#define LIGHTOP_6 6 -#define LIGHTOP_7 7 +#define LIGHTOP_1 1 +#define LIGHTOP_2 2 +#define LIGHTOP_3 3 +#define LIGHTOP_4 4 +#define LIGHTOP_5 5 +#define LIGHTOP_TURNON 6 +#define LIGHTOP_TURNOFF 7 // These actions are assigned to chr->myaction #define MA_NONE 0 @@ -2407,6 +2407,8 @@ #define ROOMFLAG_DISABLED 0x0001 #define ROOMFLAG_VISIBLEBYPLAYER 0x0004 #define ROOMFLAG_VISIBLEBYAIBOT 0x0008 +#define ROOMFLAG_0100 0x0100 +#define ROOMFLAG_LIGHTSOFF 0x2000 #define ROOMFLAG_PLAYAMBIENTTRACK 0x4000 #define ROOMFLAG_OUTDOORS 0x8000 diff --git a/src/include/game/dlights.h b/src/include/game/dlights.h index edbf152cf..ef7dc0b67 100644 --- a/src/include/game/dlights.h +++ b/src/include/game/dlights.h @@ -31,7 +31,7 @@ u32 func0f0023b8(void); u32 func0f00259c(void); u32 func0f002844(void); u32 func0f002a98(void); -void func0f002b58(s32 roomthing, bool enable); +void roomSetLightsOn(s32 roomnum, s32 enable); void roomSetLighting(s32 roomnum, s32 operation, u8 arg2, u8 arg3, u8 arg4); u32 func0f002ef8(void); void func0f0033b0(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index e8d84f935..d2c911c8d 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -731,7 +731,7 @@ extern struct portal *g_Portals; extern u32 var800a4ccc; extern u8 *var800a4cd0; extern struct portalcmd *g_PortalCommands; -extern u32 var800a4cd8; +extern u8 *g_LightsFileData; extern u32 var800a4ce0; extern s16 var800a4ce4[2]; extern struct var800a4ce8 *var800a4ce8; diff --git a/src/include/types.h b/src/include/types.h index bbd9cce7b..e2f131a2b 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3381,7 +3381,8 @@ struct room { /*0x05*/ s8 unk05; /*0x06*/ u8 unk06; /*0x07*/ u8 unk07; - /*0x08*/ u32 unk08; + /*0x08*/ s8 numlights; + /*0x0a*/ u16 lightindex; // index of start of this room's lights in data file /*0x0c*/ u16 unk0c; /*0x0e*/ s16 unk0e; /*0x10*/ struct screenbox screenbox; @@ -6357,4 +6358,27 @@ struct var8009dbe0 { u32 unk44; }; +struct light { + /*0x00*/ u16 roomnum; + /*0x02*/ u16 unk02; + /*0x04*/ u8 unk04; + /*0x05*/ u8 unk05_00 : 1; + /*0x05*/ u8 healthy : 1; // just a guess based on context + /*0x05*/ u8 on : 1; + /*0x06*/ u16 unk06; + /*0x08*/ u16 unk08; + /*0x0a*/ s16 x1; + /*0x0c*/ s16 y1; + /*0x0e*/ s16 z1; + /*0x10*/ s16 x2; + /*0x12*/ s16 y2; + /*0x14*/ s16 z2; + /*0x16*/ s16 x3; + /*0x18*/ s16 y3; + /*0x1a*/ s16 z3; + /*0x1c*/ s16 x4; + /*0x1e*/ s16 y4; + /*0x20*/ s16 z4; +}; + #endif