1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
SeafoamIslands4Script: ; 4658d (11:658d)
call EnableAutoTextBoxDrawing
ld hl, wFlags_0xcd60
bit 7, [hl]
res 7, [hl]
jr z, .asm_465dc
ld hl, Seafoam4HolesCoords
call CheckBoulderCoords
ret nc
EventFlagAddress hl, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
ld a, [wCoordIndex]
cp $1
jr nz, .asm_465b8
SetEventReuseHL EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
ld a, HS_SEAFOAM_ISLANDS_4_BOULDER_1
ld [wObjectToHide], a
ld a, HS_SEAFOAM_ISLANDS_5_BOULDER_1
ld [wObjectToShow], a
jr .asm_465c4
.asm_465b8
SetEventAfterBranchReuseHL EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
ld a, HS_SEAFOAM_ISLANDS_4_BOULDER_2
ld [wObjectToHide], a
ld a, HS_SEAFOAM_ISLANDS_5_BOULDER_2
ld [wObjectToShow], a
.asm_465c4
ld a, [wObjectToHide]
ld [wMissableObjectIndex], a
predef HideObject
ld a, [wObjectToShow]
ld [wMissableObjectIndex], a
predef ShowObject
jr .asm_465ed
.asm_465dc
ld a, $a2
ld [wDungeonWarpDestinationMap], a
ld hl, Seafoam4HolesCoords
call IsPlayerOnDungeonWarp
ld a, [wd732]
bit 4, a
ret nz
.asm_465ed
ld hl, SeafoamIslands4ScriptPointers
ld a, [W_SEAFOAMISLANDS4CURSCRIPT]
jp CallFunctionInTable
Seafoam4HolesCoords: ; 465f6 (11:65f6)
db $10,$03
db $10,$06
db $ff
SeafoamIslands4ScriptPointers: ; 465fb (11:65fb)
dw SeafoamIslands4Script0
dw SeafoamIslands4Script1
dw SeafoamIslands4Script2
dw SeafoamIslands4Script3
SeafoamIslands4Script0: ; 46603 (11:6603)
CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
ret z
ld a, [W_YCOORD]
cp $8
ret nz
ld a, [W_XCOORD]
cp $f
ret nz
ld hl, wSimulatedJoypadStatesEnd
ld de, RLEMovement46632
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld hl, W_FLAGS_D733
set 2, [hl]
ld a, $1
ld [W_SEAFOAMISLANDS4CURSCRIPT], a
ret
RLEMovement46632: ; 46632 (11:6632)
db D_DOWN,6
db D_RIGHT,5
db D_DOWN,3
db $ff
SeafoamIslands4Script1: ; 46639 (11:6639)
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
ld a, $0
ld [W_SEAFOAMISLANDS4CURSCRIPT], a
ret
SeafoamIslands4Script2: ; 46644 (11:6644)
CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
ret z
ld a, [W_XCOORD]
cp $12
jr z, .asm_4665e
cp $13
ld a, $0
jr nz, .asm_4667b
ld de, RLEData_4667f
jr .asm_46661
.asm_4665e
ld de, RLEData_46688
.asm_46661
ld hl, wSimulatedJoypadStatesEnd
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
xor a
ld [wSpriteStateData2 + $06], a
ld hl, wd730
set 7, [hl]
ld hl, W_FLAGS_D733
set 2, [hl]
ld a, $3
.asm_4667b
ld [W_SEAFOAMISLANDS4CURSCRIPT], a
ret
RLEData_4667f: ; 4667f (11:667f)
db D_DOWN,$06
db D_RIGHT,$02
db D_DOWN,$04
db D_LEFT,$01
db $FF
RLEData_46688: ; 46688 (11:6688)
db D_DOWN,$06
db D_RIGHT,$02
db D_DOWN,$04
db $FF
SeafoamIslands4Script3: ; 4668f (11:668f)
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
ld a, $0
ld [W_SEAFOAMISLANDS4CURSCRIPT], a
ret
SeafoamIslands4TextPointers: ; 4669a (11:669a)
dw BoulderText
dw BoulderText
dw BoulderText
dw BoulderText
dw BoulderText
dw BoulderText
|