Document Goldenrod tunnel switch puzzle

This commit is contained in:
abaresk 2023-08-24 04:26:56 +00:00
parent 418d7712a6
commit 1622cb5f2a
7 changed files with 284 additions and 236 deletions

View File

@ -547,11 +547,11 @@ ov01_022074A8: ; 0x022074A8
.short SPRITE_HERO_2, MMODEL_HERO_2, 0x060 | (7 << 10)
.short SPRITE_HEROINE_2, MMODEL_HEROINE_2, 0x060 | (7 << 10)
.short SPRITE_ITAKO_, MMODEL_ITAKO_, 0x000 | (3 << 10)
.short SPRITE_BABYBOY1_3, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_BABYBOY1_4, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_GATE_RIGHT, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_GATE_LEFT, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_BABYBOY1_5, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_BABYBOY1_6, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_BABYBOY1_7, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_GATE_TOP, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_GATE_BOTTOM, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_BABYBOY1_8, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_BABYBOY1_9, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)
.short SPRITE_BABYBOY1_10, MMODEL_BABYBOY1, 0x1E4 | (63 << 10)

View File

@ -138,8 +138,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_4",
"ovid": "SPRITE_BABYBOY1_4",
"id": "obj_D37R0104_gate0_left",
"ovid": "SPRITE_GATE_LEFT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -155,8 +155,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_3",
"ovid": "SPRITE_BABYBOY1_3",
"id": "obj_D37R0104_gate0_right",
"ovid": "SPRITE_GATE_RIGHT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -172,8 +172,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_4_2",
"ovid": "SPRITE_BABYBOY1_4",
"id": "obj_D37R0104_gate1_left",
"ovid": "SPRITE_GATE_LEFT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -189,8 +189,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_3_2",
"ovid": "SPRITE_BABYBOY1_3",
"id": "obj_D37R0104_gate1_right",
"ovid": "SPRITE_GATE_RIGHT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -206,8 +206,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_6",
"ovid": "SPRITE_BABYBOY1_6",
"id": "obj_D37R0104_gate2_top",
"ovid": "SPRITE_GATE_TOP",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -223,8 +223,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_7",
"ovid": "SPRITE_BABYBOY1_7",
"id": "obj_D37R0104_gate2_bottom",
"ovid": "SPRITE_GATE_BOTTOM",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -240,8 +240,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_6_2",
"ovid": "SPRITE_BABYBOY1_6",
"id": "obj_D37R0104_gate3_top",
"ovid": "SPRITE_GATE_TOP",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -257,8 +257,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_7_2",
"ovid": "SPRITE_BABYBOY1_7",
"id": "obj_D37R0104_gate3_bottom",
"ovid": "SPRITE_GATE_BOTTOM",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -274,8 +274,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_4_3",
"ovid": "SPRITE_BABYBOY1_4",
"id": "obj_D37R0104_gate4_left",
"ovid": "SPRITE_GATE_LEFT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -291,8 +291,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_3_3",
"ovid": "SPRITE_BABYBOY1_3",
"id": "obj_D37R0104_gate4_right",
"ovid": "SPRITE_GATE_RIGHT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -308,8 +308,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_4_4",
"ovid": "SPRITE_BABYBOY1_4",
"id": "obj_D37R0104_gate5_left",
"ovid": "SPRITE_GATE_LEFT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -325,8 +325,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_3_4",
"ovid": "SPRITE_BABYBOY1_3",
"id": "obj_D37R0104_gate5_right",
"ovid": "SPRITE_GATE_RIGHT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -342,8 +342,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_4_5",
"ovid": "SPRITE_BABYBOY1_4",
"id": "obj_D37R0104_gate6_left",
"ovid": "SPRITE_GATE_LEFT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -359,8 +359,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_3_5",
"ovid": "SPRITE_BABYBOY1_3",
"id": "obj_D37R0104_gate6_right",
"ovid": "SPRITE_GATE_RIGHT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -376,8 +376,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_6_3",
"ovid": "SPRITE_BABYBOY1_6",
"id": "obj_D37R0104_gate7_top",
"ovid": "SPRITE_GATE_TOP",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -393,8 +393,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_7_3",
"ovid": "SPRITE_BABYBOY1_7",
"id": "obj_D37R0104_gate7_bottom",
"ovid": "SPRITE_GATE_BOTTOM",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -410,8 +410,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_6_4",
"ovid": "SPRITE_BABYBOY1_6",
"id": "obj_D37R0104_gate8_top",
"ovid": "SPRITE_GATE_TOP",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -427,8 +427,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_7_4",
"ovid": "SPRITE_BABYBOY1_7",
"id": "obj_D37R0104_gate8_bottom",
"ovid": "SPRITE_GATE_BOTTOM",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -444,8 +444,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_6_5",
"ovid": "SPRITE_BABYBOY1_6",
"id": "obj_D37R0104_gate9_top",
"ovid": "SPRITE_GATE_TOP",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -461,8 +461,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_7_5",
"ovid": "SPRITE_BABYBOY1_7",
"id": "obj_D37R0104_gate9_bottom",
"ovid": "SPRITE_GATE_BOTTOM",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -478,8 +478,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_4_6",
"ovid": "SPRITE_BABYBOY1_4",
"id": "obj_D37R0104_purplegate_left",
"ovid": "SPRITE_GATE_LEFT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",
@ -495,8 +495,8 @@
"z": 0
},
{
"id": "obj_D37R0104_babyboy1_3_6",
"ovid": "SPRITE_BABYBOY1_3",
"id": "obj_D37R0104_purplegate_right",
"ovid": "SPRITE_GATE_RIGHT",
"mvt": 0,
"type": 0,
"flag": "FLAG_NOTHING",

View File

@ -15,28 +15,28 @@
#define obj_D37R0104_rocketw 3
#define obj_D37R0104_thief 4
#define obj_D37R0104_thief_2 5
#define obj_D37R0104_babyboy1_4 6
#define obj_D37R0104_babyboy1_3 7
#define obj_D37R0104_babyboy1_4_2 8
#define obj_D37R0104_babyboy1_3_2 9
#define obj_D37R0104_babyboy1_6 10
#define obj_D37R0104_babyboy1_7 11
#define obj_D37R0104_babyboy1_6_2 12
#define obj_D37R0104_babyboy1_7_2 13
#define obj_D37R0104_babyboy1_4_3 14
#define obj_D37R0104_babyboy1_3_3 15
#define obj_D37R0104_babyboy1_4_4 16
#define obj_D37R0104_babyboy1_3_4 17
#define obj_D37R0104_babyboy1_4_5 18
#define obj_D37R0104_babyboy1_3_5 19
#define obj_D37R0104_babyboy1_6_3 20
#define obj_D37R0104_babyboy1_7_3 21
#define obj_D37R0104_babyboy1_6_4 22
#define obj_D37R0104_babyboy1_7_4 23
#define obj_D37R0104_babyboy1_6_5 24
#define obj_D37R0104_babyboy1_7_5 25
#define obj_D37R0104_babyboy1_4_6 26
#define obj_D37R0104_babyboy1_3_6 27
#define obj_D37R0104_gate0_left 6
#define obj_D37R0104_gate0_right 7
#define obj_D37R0104_gate1_left 8
#define obj_D37R0104_gate1_right 9
#define obj_D37R0104_gate2_top 10
#define obj_D37R0104_gate2_bottom 11
#define obj_D37R0104_gate3_top 12
#define obj_D37R0104_gate3_bottom 13
#define obj_D37R0104_gate4_left 14
#define obj_D37R0104_gate4_right 15
#define obj_D37R0104_gate5_left 16
#define obj_D37R0104_gate5_right 17
#define obj_D37R0104_gate6_left 18
#define obj_D37R0104_gate6_right 19
#define obj_D37R0104_gate7_top 20
#define obj_D37R0104_gate7_bottom 21
#define obj_D37R0104_gate8_top 22
#define obj_D37R0104_gate8_bottom 23
#define obj_D37R0104_gate9_top 24
#define obj_D37R0104_gate9_bottom 25
#define obj_D37R0104_purplegate_left 26
#define obj_D37R0104_purplegate_right 27
#define obj_D37R0104_gsrivel 28
#define obj_D37R0104_stop 29
#define obj_D37R0104_stop_2 30
@ -47,4 +47,7 @@
#define obj_D37R0104_monstarball 35
#define obj_D37R0104_monstarball_2 36
#define GATE_OPEN 0
#define GATE_CLOSED 1
#endif //SCR_SEQ_D37R0104_H_

View File

@ -1,3 +1,27 @@
; Goldenrod Tunnel B2F
; Puzzle:
; When you hit a red, green, or blue switch, any gate bordering a room of that
; color will open if closed, or close if open.
; Gate diagram:
; - Each gate has an index
; - The room color is noted by a lowercase letter {r,g,b,p}
;
; [ ]--0--[ ]-----[ ]--1--[ ]
; | | | |
; | g 2 b 3 r |
; | | | |
; [ ]--4--[ ]--5--[ ]--6--[ ]-----[ ]
; | | | |
; | b 7 r 8 g 9 p
; | | | |
; [ ]-----[ ]-----[ ]-----[ ]
; There are temp variables indicating whether each gate is open or closed. The
; temp variable corresponds to the gate's index, (e.g. gate 2 uses
; VAR_TEMP_x4002).
#include "constants/scrcmd.h"
#include "fielddata/script/scr_seq/event_D37R0104.h"
#include "msgdata/msg/msg_0119_D37R0104.h"
@ -20,16 +44,16 @@ scr_seq_D37R0104_006:
goto_if_ne _0033
clearflag FLAG_HIDE_ROCKET_TAKEOVER_1
_0033:
setvar VAR_TEMP_x4000, 0
setvar VAR_TEMP_x4001, 0
setvar VAR_TEMP_x4002, 1
setvar VAR_TEMP_x4003, 0
setvar VAR_TEMP_x4004, 0
setvar VAR_TEMP_x4005, 0
setvar VAR_TEMP_x4006, 0
setvar VAR_TEMP_x4007, 0
setvar VAR_TEMP_x4008, 0
setvar VAR_TEMP_x4009, 1
setvar VAR_TEMP_x4000, GATE_OPEN
setvar VAR_TEMP_x4001, GATE_OPEN
setvar VAR_TEMP_x4002, GATE_CLOSED
setvar VAR_TEMP_x4003, GATE_OPEN
setvar VAR_TEMP_x4004, GATE_OPEN
setvar VAR_TEMP_x4005, GATE_OPEN
setvar VAR_TEMP_x4006, GATE_OPEN
setvar VAR_TEMP_x4007, GATE_OPEN
setvar VAR_TEMP_x4008, GATE_OPEN
setvar VAR_TEMP_x4009, GATE_CLOSED
end
scr_seq_D37R0104_005:
@ -39,269 +63,290 @@ scr_seq_D37R0104_005:
scrcmd_375 obj_D37R0104_stop_4
scrcmd_375 obj_D37R0104_stop_5
scrcmd_375 obj_D37R0104_stop_6
goto_if_set FLAG_UNK_09B, _0096
goto_if_set FLAG_OPENED_GOLDENROD_PURPLE_GATE, _open_purple_gate
end
_0096:
move_person_facing obj_D37R0104_babyboy1_4_6, 18, 0, 14, DIR_NORTH
move_person_facing obj_D37R0104_babyboy1_3_6, 24, 0, 14, DIR_NORTH
_open_purple_gate:
move_person_facing obj_D37R0104_purplegate_left, 18, 0, 14, DIR_NORTH
move_person_facing obj_D37R0104_purplegate_right, 24, 0, 14, DIR_NORTH
move_person_facing obj_D37R0104_stop_6, 24, 0, 14, DIR_NORTH
end
; Press the red switch.
scr_seq_D37R0104_002:
scrcmd_609
lockall
play_se SEQ_SE_GS_ZUKAN06
compare VAR_TEMP_x4001, 0
compare VAR_TEMP_x4001, GATE_OPEN
goto_if_ne _00F5
apply_movement obj_D37R0104_babyboy1_4_2, _05CC
apply_movement obj_D37R0104_babyboy1_3_2, _05D4
apply_movement obj_D37R0104_gate1_left, _05CC
apply_movement obj_D37R0104_gate1_right, _05D4
apply_movement obj_D37R0104_stop_2, _060C
setvar VAR_TEMP_x4001, 1
setvar VAR_TEMP_x4001, GATE_CLOSED
goto _0113
_00F5:
apply_movement obj_D37R0104_babyboy1_4_2, _05DC
apply_movement obj_D37R0104_babyboy1_3_2, _05E4
apply_movement obj_D37R0104_gate1_left, _05DC
apply_movement obj_D37R0104_gate1_right, _05E4
apply_movement obj_D37R0104_stop_2, _0614
setvar VAR_TEMP_x4001, 0
setvar VAR_TEMP_x4001, GATE_OPEN
; fallthrough
_0113:
compare VAR_TEMP_x4003, 0
compare VAR_TEMP_x4003, GATE_OPEN
goto_if_ne _013C
apply_movement obj_D37R0104_babyboy1_6_2, _05EC
apply_movement obj_D37R0104_babyboy1_7_2, _05F4
setvar VAR_TEMP_x4003, 1
apply_movement obj_D37R0104_gate3_top, _05EC
apply_movement obj_D37R0104_gate3_bottom, _05F4
setvar VAR_TEMP_x4003, GATE_CLOSED
goto _0152
_013C:
apply_movement obj_D37R0104_babyboy1_6_2, _05FC
apply_movement obj_D37R0104_babyboy1_7_2, _0604
setvar VAR_TEMP_x4003, 0
apply_movement obj_D37R0104_gate3_top, _05FC
apply_movement obj_D37R0104_gate3_bottom, _0604
setvar VAR_TEMP_x4003, GATE_OPEN
; fallthrough
_0152:
compare VAR_TEMP_x4005, 0
compare VAR_TEMP_x4005, GATE_OPEN
goto_if_ne _0183
apply_movement obj_D37R0104_babyboy1_4_4, _05CC
apply_movement obj_D37R0104_babyboy1_3_4, _05D4
apply_movement obj_D37R0104_gate5_left, _05CC
apply_movement obj_D37R0104_gate5_right, _05D4
apply_movement obj_D37R0104_stop_4, _060C
setvar VAR_TEMP_x4005, 1
setvar VAR_TEMP_x4005, GATE_CLOSED
goto _01A1
_0183:
apply_movement obj_D37R0104_babyboy1_4_4, _05DC
apply_movement obj_D37R0104_babyboy1_3_4, _05E4
apply_movement obj_D37R0104_gate5_left, _05DC
apply_movement obj_D37R0104_gate5_right, _05E4
apply_movement obj_D37R0104_stop_4, _0614
setvar VAR_TEMP_x4005, 0
setvar VAR_TEMP_x4005, GATE_OPEN
; fallthrough
_01A1:
compare VAR_TEMP_x4006, 0
compare VAR_TEMP_x4006, GATE_OPEN
goto_if_ne _01D2
apply_movement obj_D37R0104_babyboy1_4_5, _05CC
apply_movement obj_D37R0104_babyboy1_3_5, _05D4
apply_movement obj_D37R0104_gate6_left, _05CC
apply_movement obj_D37R0104_gate6_right, _05D4
apply_movement obj_D37R0104_stop_5, _060C
setvar VAR_TEMP_x4006, 1
setvar VAR_TEMP_x4006, GATE_CLOSED
goto _01F0
_01D2:
apply_movement obj_D37R0104_babyboy1_4_5, _05DC
apply_movement obj_D37R0104_babyboy1_3_5, _05E4
apply_movement obj_D37R0104_gate6_left, _05DC
apply_movement obj_D37R0104_gate6_right, _05E4
apply_movement obj_D37R0104_stop_5, _0614
setvar VAR_TEMP_x4006, 0
setvar VAR_TEMP_x4006, GATE_OPEN
; fallthrough
_01F0:
compare VAR_TEMP_x4007, 0
compare VAR_TEMP_x4007, GATE_OPEN
goto_if_ne _0219
apply_movement obj_D37R0104_babyboy1_6_3, _05EC
apply_movement obj_D37R0104_babyboy1_7_3, _05F4
setvar VAR_TEMP_x4007, 1
apply_movement obj_D37R0104_gate7_top, _05EC
apply_movement obj_D37R0104_gate7_bottom, _05F4
setvar VAR_TEMP_x4007, GATE_CLOSED
goto _022F
_0219:
apply_movement obj_D37R0104_babyboy1_6_3, _05FC
apply_movement obj_D37R0104_babyboy1_7_3, _0604
setvar VAR_TEMP_x4007, 0
_022F:
compare VAR_TEMP_x4008, 0
goto_if_ne _0258
apply_movement obj_D37R0104_babyboy1_6_4, _05EC
apply_movement obj_D37R0104_babyboy1_7_4, _05F4
setvar VAR_TEMP_x4008, 1
goto _026E
apply_movement obj_D37R0104_gate7_top, _05FC
apply_movement obj_D37R0104_gate7_bottom, _0604
setvar VAR_TEMP_x4007, GATE_OPEN
; fallthrough
_022F:
compare VAR_TEMP_x4008, GATE_OPEN
goto_if_ne _0258
apply_movement obj_D37R0104_gate8_top, _05EC
apply_movement obj_D37R0104_gate8_bottom, _05F4
setvar VAR_TEMP_x4008, GATE_CLOSED
goto _026E
_0258:
apply_movement obj_D37R0104_babyboy1_6_4, _05FC
apply_movement obj_D37R0104_babyboy1_7_4, _0604
setvar VAR_TEMP_x4008, 0
apply_movement obj_D37R0104_gate8_top, _05FC
apply_movement obj_D37R0104_gate8_bottom, _0604
setvar VAR_TEMP_x4008, GATE_OPEN
; fallthrough
_026E:
wait_movement
releaseall
end
; Press the green switch.
scr_seq_D37R0104_001:
scrcmd_609
lockall
play_se SEQ_SE_GS_ZUKAN06
compare VAR_TEMP_x4000, 0
compare VAR_TEMP_x4000, GATE_OPEN
goto_if_ne _02AD
apply_movement obj_D37R0104_babyboy1_4, _05CC
apply_movement obj_D37R0104_babyboy1_3, _05D4
apply_movement obj_D37R0104_gate0_left, _05CC
apply_movement obj_D37R0104_gate0_right, _05D4
apply_movement obj_D37R0104_stop_3, _060C
setvar VAR_TEMP_x4000, 1
setvar VAR_TEMP_x4000, GATE_CLOSED
goto _02CB
_02AD:
apply_movement obj_D37R0104_babyboy1_4, _05DC
apply_movement obj_D37R0104_babyboy1_3, _05E4
apply_movement obj_D37R0104_gate0_left, _05DC
apply_movement obj_D37R0104_gate0_right, _05E4
apply_movement obj_D37R0104_stop_3, _0614
setvar VAR_TEMP_x4000, 0
setvar VAR_TEMP_x4000, GATE_OPEN
; fallthrough
_02CB:
compare VAR_TEMP_x4002, 0
compare VAR_TEMP_x4002, GATE_OPEN
goto_if_ne _02F4
apply_movement obj_D37R0104_babyboy1_6, _05EC
apply_movement obj_D37R0104_babyboy1_7, _05F4
setvar VAR_TEMP_x4002, 1
apply_movement obj_D37R0104_gate2_top, _05EC
apply_movement obj_D37R0104_gate2_bottom, _05F4
setvar VAR_TEMP_x4002, GATE_CLOSED
goto _030A
_02F4:
apply_movement obj_D37R0104_babyboy1_6, _05FC
apply_movement obj_D37R0104_babyboy1_7, _0604
setvar VAR_TEMP_x4002, 0
apply_movement obj_D37R0104_gate2_top, _05FC
apply_movement obj_D37R0104_gate2_bottom, _0604
setvar VAR_TEMP_x4002, GATE_OPEN
; fallthrough
_030A:
compare VAR_TEMP_x4004, 0
compare VAR_TEMP_x4004, GATE_OPEN
goto_if_ne _033B
apply_movement obj_D37R0104_babyboy1_4_3, _05CC
apply_movement obj_D37R0104_babyboy1_3_3, _05D4
apply_movement obj_D37R0104_gate4_left, _05CC
apply_movement obj_D37R0104_gate4_right, _05D4
apply_movement obj_D37R0104_stop, _060C
setvar VAR_TEMP_x4004, 1
setvar VAR_TEMP_x4004, GATE_CLOSED
goto _0359
_033B:
apply_movement obj_D37R0104_babyboy1_4_3, _05DC
apply_movement obj_D37R0104_babyboy1_3_3, _05E4
apply_movement obj_D37R0104_gate4_left, _05DC
apply_movement obj_D37R0104_gate4_right, _05E4
apply_movement obj_D37R0104_stop, _0614
setvar VAR_TEMP_x4004, 0
setvar VAR_TEMP_x4004, GATE_OPEN
; fallthrough
_0359:
compare VAR_TEMP_x4006, 0
compare VAR_TEMP_x4006, GATE_OPEN
goto_if_ne _038A
apply_movement obj_D37R0104_babyboy1_4_5, _05CC
apply_movement obj_D37R0104_babyboy1_3_5, _05D4
apply_movement obj_D37R0104_gate6_left, _05CC
apply_movement obj_D37R0104_gate6_right, _05D4
apply_movement obj_D37R0104_stop_5, _060C
setvar VAR_TEMP_x4006, 1
setvar VAR_TEMP_x4006, GATE_CLOSED
goto _03A8
_038A:
apply_movement obj_D37R0104_babyboy1_4_5, _05DC
apply_movement obj_D37R0104_babyboy1_3_5, _05E4
apply_movement obj_D37R0104_gate6_left, _05DC
apply_movement obj_D37R0104_gate6_right, _05E4
apply_movement obj_D37R0104_stop_5, _0614
setvar VAR_TEMP_x4006, 0
setvar VAR_TEMP_x4006, GATE_OPEN
; fallthrough
_03A8:
compare VAR_TEMP_x4008, 0
compare VAR_TEMP_x4008, GATE_OPEN
goto_if_ne _03D1
apply_movement obj_D37R0104_babyboy1_6_4, _05EC
apply_movement obj_D37R0104_babyboy1_7_4, _05F4
setvar VAR_TEMP_x4008, 1
apply_movement obj_D37R0104_gate8_top, _05EC
apply_movement obj_D37R0104_gate8_bottom, _05F4
setvar VAR_TEMP_x4008, GATE_CLOSED
goto _03E7
_03D1:
apply_movement obj_D37R0104_babyboy1_6_4, _05FC
apply_movement obj_D37R0104_babyboy1_7_4, _0604
setvar VAR_TEMP_x4008, 0
_03E7:
compare VAR_TEMP_x4009, 0
goto_if_ne _0410
apply_movement obj_D37R0104_babyboy1_6_5, _05EC
apply_movement obj_D37R0104_babyboy1_7_5, _05F4
setvar VAR_TEMP_x4009, 1
goto _0426
apply_movement obj_D37R0104_gate8_top, _05FC
apply_movement obj_D37R0104_gate8_bottom, _0604
setvar VAR_TEMP_x4008, GATE_OPEN
; fallthrough
_03E7:
compare VAR_TEMP_x4009, GATE_OPEN
goto_if_ne _0410
apply_movement obj_D37R0104_gate9_top, _05EC
apply_movement obj_D37R0104_gate9_bottom, _05F4
setvar VAR_TEMP_x4009, GATE_CLOSED
goto _0426
_0410:
apply_movement obj_D37R0104_babyboy1_6_5, _05FC
apply_movement obj_D37R0104_babyboy1_7_5, _0604
setvar VAR_TEMP_x4009, 0
apply_movement obj_D37R0104_gate9_top, _05FC
apply_movement obj_D37R0104_gate9_bottom, _0604
setvar VAR_TEMP_x4009, GATE_OPEN
; fallthrough
_0426:
wait_movement
releaseall
end
; Press the blue switch.
scr_seq_D37R0104_000:
scrcmd_609
lockall
play_se SEQ_SE_GS_ZUKAN06
compare VAR_TEMP_x4002, 0
compare VAR_TEMP_x4002, GATE_OPEN
goto_if_ne _045D
apply_movement obj_D37R0104_babyboy1_6, _05EC
apply_movement obj_D37R0104_babyboy1_7, _05F4
setvar VAR_TEMP_x4002, 1
apply_movement obj_D37R0104_gate2_top, _05EC
apply_movement obj_D37R0104_gate2_bottom, _05F4
setvar VAR_TEMP_x4002, GATE_CLOSED
goto _0473
_045D:
apply_movement obj_D37R0104_babyboy1_6, _05FC
apply_movement obj_D37R0104_babyboy1_7, _0604
setvar VAR_TEMP_x4002, 0
apply_movement obj_D37R0104_gate2_top, _05FC
apply_movement obj_D37R0104_gate2_bottom, _0604
setvar VAR_TEMP_x4002, GATE_OPEN
; fallthrough
_0473:
compare VAR_TEMP_x4003, 0
compare VAR_TEMP_x4003, GATE_OPEN
goto_if_ne _049C
apply_movement obj_D37R0104_babyboy1_6_2, _05EC
apply_movement obj_D37R0104_babyboy1_7_2, _05F4
setvar VAR_TEMP_x4003, 1
apply_movement obj_D37R0104_gate3_top, _05EC
apply_movement obj_D37R0104_gate3_bottom, _05F4
setvar VAR_TEMP_x4003, GATE_CLOSED
goto _04B2
_049C:
apply_movement obj_D37R0104_babyboy1_6_2, _05FC
apply_movement obj_D37R0104_babyboy1_7_2, _0604
setvar VAR_TEMP_x4003, 0
apply_movement obj_D37R0104_gate3_top, _05FC
apply_movement obj_D37R0104_gate3_bottom, _0604
setvar VAR_TEMP_x4003, GATE_OPEN
; fallthrough
_04B2:
compare VAR_TEMP_x4004, 0
compare VAR_TEMP_x4004, GATE_OPEN
goto_if_ne _04E3
apply_movement obj_D37R0104_babyboy1_4_3, _05CC
apply_movement obj_D37R0104_babyboy1_3_3, _05D4
apply_movement obj_D37R0104_gate4_left, _05CC
apply_movement obj_D37R0104_gate4_right, _05D4
apply_movement obj_D37R0104_stop, _060C
setvar VAR_TEMP_x4004, 1
setvar VAR_TEMP_x4004, GATE_CLOSED
goto _0501
_04E3:
apply_movement obj_D37R0104_babyboy1_4_3, _05DC
apply_movement obj_D37R0104_babyboy1_3_3, _05E4
apply_movement obj_D37R0104_gate4_left, _05DC
apply_movement obj_D37R0104_gate4_right, _05E4
apply_movement obj_D37R0104_stop, _0614
setvar VAR_TEMP_x4004, 0
setvar VAR_TEMP_x4004, GATE_OPEN
; fallthrough
_0501:
compare VAR_TEMP_x4005, 0
compare VAR_TEMP_x4005, GATE_OPEN
goto_if_ne _0532
apply_movement obj_D37R0104_babyboy1_4_4, _05CC
apply_movement obj_D37R0104_babyboy1_3_4, _05D4
apply_movement obj_D37R0104_gate5_left, _05CC
apply_movement obj_D37R0104_gate5_right, _05D4
apply_movement obj_D37R0104_stop_4, _060C
setvar VAR_TEMP_x4005, 1
setvar VAR_TEMP_x4005, GATE_CLOSED
goto _0550
_0532:
apply_movement obj_D37R0104_babyboy1_4_4, _05DC
apply_movement obj_D37R0104_babyboy1_3_4, _05E4
apply_movement obj_D37R0104_gate5_left, _05DC
apply_movement obj_D37R0104_gate5_right, _05E4
apply_movement obj_D37R0104_stop_4, _0614
setvar VAR_TEMP_x4005, 0
_0550:
compare VAR_TEMP_x4007, 0
goto_if_ne _0579
apply_movement obj_D37R0104_babyboy1_6_3, _05EC
apply_movement obj_D37R0104_babyboy1_7_3, _05F4
setvar VAR_TEMP_x4007, 1
goto _058F
setvar VAR_TEMP_x4005, GATE_OPEN
; fallthrough
_0550:
compare VAR_TEMP_x4007, GATE_OPEN
goto_if_ne _0579
apply_movement obj_D37R0104_gate7_top, _05EC
apply_movement obj_D37R0104_gate7_bottom, _05F4
setvar VAR_TEMP_x4007, GATE_CLOSED
goto _058F
_0579:
apply_movement obj_D37R0104_babyboy1_6_3, _05FC
apply_movement obj_D37R0104_babyboy1_7_3, _0604
setvar VAR_TEMP_x4007, 0
apply_movement obj_D37R0104_gate7_top, _05FC
apply_movement obj_D37R0104_gate7_bottom, _0604
setvar VAR_TEMP_x4007, GATE_OPEN
; fallthrough
_058F:
wait_movement
releaseall
end
; Press the purple switch.
scr_seq_D37R0104_003:
goto_if_set FLAG_UNK_09B, _05CA
goto_if_set FLAG_OPENED_GOLDENROD_PURPLE_GATE, _05CA
scrcmd_609
lockall
play_se SEQ_SE_GS_ZUKAN06
apply_movement obj_D37R0104_babyboy1_4_6, _05DC
apply_movement obj_D37R0104_babyboy1_3_6, _05E4
apply_movement obj_D37R0104_purplegate_left, _05DC
apply_movement obj_D37R0104_purplegate_right, _05E4
apply_movement obj_D37R0104_stop_6, _0614
wait_movement
setflag FLAG_UNK_09B
setflag FLAG_OPENED_GOLDENROD_PURPLE_GATE
releaseall
end

View File

@ -172,7 +172,7 @@
#define FLAG_UNK_098 0x98
#define FLAG_MET_PASSERBY_BOY 0x99
#define FLAG_UNK_09A 0x9A
#define FLAG_UNK_09B 0x9B
#define FLAG_OPENED_GOLDENROD_PURPLE_GATE 0x9B
#define FLAG_GOT_POKEGEAR 0x9C
#define FLAG_UNK_09D 0x9D
#define FLAG_UNK_09E 0x9E

View File

@ -202,7 +202,7 @@
#define MAP_T25R0502 198
#define MAP_D37R0102 199
#define MAP_D37R0103 200
#define MAP_D37R0104 201
#define MAP_D37R0104 201 // Goldenrod Tunnel B2F
#define MAP_D37R0105 202
#define MAP_T25R0401 203
#define MAP_T25R0301 204

View File

@ -122,11 +122,11 @@
#define SPRITE_LADDERHERO 248
#define SPRITE_LADDERHEROINE 249
#define SPRITE_ITAKO_ 250
#define SPRITE_BABYBOY1_3 251
#define SPRITE_BABYBOY1_4 252
#define SPRITE_GATE_RIGHT 251
#define SPRITE_GATE_LEFT 252
#define SPRITE_BABYBOY1_5 253
#define SPRITE_BABYBOY1_6 254
#define SPRITE_BABYBOY1_7 255
#define SPRITE_GATE_TOP 254
#define SPRITE_GATE_BOTTOM 255
#define SPRITE_BABYBOY1_8 256
#define SPRITE_BABYBOY1_9 257
#define SPRITE_RHERO 258