Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1 | pmbaty | 1 | /* |
2 | SDLPoP, a port/conversion of the DOS game Prince of Persia. |
||
3 | Copyright (C) 2013-2018 Dávid Nagy |
||
4 | |||
5 | This program is free software: you can redistribute it and/or modify |
||
6 | it under the terms of the GNU General Public License as published by |
||
7 | the Free Software Foundation, either version 3 of the License, or |
||
8 | (at your option) any later version. |
||
9 | |||
10 | This program is distributed in the hope that it will be useful, |
||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
13 | GNU General Public License for more details. |
||
14 | |||
15 | You should have received a copy of the GNU General Public License |
||
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
||
17 | |||
18 | The authors of this program may be contacted at http://forum.princed.org |
||
19 | */ |
||
20 | |||
21 | #include "common.h" |
||
22 | |||
23 | #define SEQTBL_BASE 0x196E |
||
24 | #define SEQTBL_0 (seqtbl - SEQTBL_BASE) |
||
25 | |||
26 | // This expands a two-byte number into two comma-separated bytes, used for the JMP destinations |
||
27 | #define DW(data_word) (data_word) & 0x00FF, (((data_word) & 0xFF00) >> 8) |
||
28 | |||
29 | // Shorter notation for the sequence table instructions |
||
30 | #define act(action) SEQ_ACTION, action |
||
31 | #define jmp(dest) SEQ_JMP, DW(dest) |
||
32 | #define jmp_if_feather(dest) SEQ_JMP_IF_FEATHER, DW(dest) |
||
33 | #define dx(amount) SEQ_DX, (byte) amount |
||
34 | #define dy(amount) SEQ_DY, (byte) amount |
||
35 | #define snd(sound) SEQ_SOUND, sound |
||
36 | #define set_fall(x, y) SEQ_SET_FALL, (byte) x, (byte) y |
||
37 | |||
38 | // This splits the byte array into labeled "sections" that are packed tightly next to each other |
||
39 | // However, it only seems to work correctly in the Debug configuration... |
||
40 | //#define LABEL(label) }; const byte label##_eventual_ptr[] __attribute__ ((aligned(1))) = { |
||
41 | #define LABEL(label) // disable |
||
42 | //#define OFFSET(label) label - seqtbl + SEQTBL_BASE |
||
43 | |||
44 | // Labels |
||
45 | #define running SEQTBL_BASE // 0x196E |
||
46 | #define startrun 5 + running //SEQTBL_BASE + 5 // 0x1973 |
||
47 | #define runstt1 2 + startrun //SEQTBL_BASE + 7 // 0x1975 |
||
48 | #define runstt4 3 + runstt1 //SEQTBL_BASE + 10 // 0x1978 |
||
49 | #define runcyc1 9 + runstt4 //SEQTBL_BASE + 19 // 0x1981 |
||
50 | #define runcyc7 20 + runcyc1 //SEQTBL_BASE + 39 // 0x1995 |
||
51 | #define stand 11 + runcyc7 //SEQTBL_BASE + 50 // 0x19A0 |
||
52 | #define goalertstand 6 + stand //SEQTBL_BASE + 56 // 0x19A6 |
||
53 | #define alertstand 2 + goalertstand //SEQTBL_BASE + 58 // 0x19A8 |
||
54 | #define arise 4 + alertstand //SEQTBL_BASE + 62 // 0x19AC |
||
55 | #define guardengarde 21 + arise //SEQTBL_BASE + 83 // 0x19C1 |
||
56 | #define engarde 3 + guardengarde //SEQTBL_BASE + 86 // 0x19C4 |
||
57 | #define ready 14 + engarde //SEQTBL_BASE + 100 // 0x19D2 |
||
58 | #define ready_loop 6 + ready //SEQTBL_BASE + 106 // 0x19D8 |
||
59 | #define stabbed 4 + ready_loop //SEQTBL_BASE + 110 // 0x19DC |
||
60 | #define strikeadv 29 + stabbed //SEQTBL_BASE + 139 // 0x19F9 |
||
61 | #define strikeret 14 + strikeadv //SEQTBL_BASE + 153 // 0x1A07 |
||
62 | #define advance 12 + strikeret //SEQTBL_BASE + 165 // 0x1A13 |
||
63 | #define fastadvance 15 + advance //SEQTBL_BASE + 180 // 0x1A22 |
||
64 | #define retreat 12 + fastadvance //SEQTBL_BASE + 192 // 0x1A2E |
||
65 | #define strike 14 + retreat //SEQTBL_BASE + 206 // 0x1A3C |
||
66 | #define faststrike 6 + strike //SEQTBL_BASE + 212 // 0x1A42 |
||
67 | #define guy4 3 + faststrike //SEQTBL_BASE + 215 // 0x1A45 |
||
68 | #define guy7 5 + guy4 //SEQTBL_BASE + 220 // 0x1A4A |
||
69 | #define guy8 3 + guy7 //SEQTBL_BASE + 223 // 0x1A4D |
||
70 | #define blockedstrike 7 + guy8 //SEQTBL_BASE + 230 // 0x1A54 |
||
71 | #define blocktostrike 6 + blockedstrike //SEQTBL_BASE + 236 // 0x1A5A |
||
72 | #define readyblock 4 + blocktostrike //SEQTBL_BASE + 240 // 0x1A5E |
||
73 | #define blocking 1 + readyblock //SEQTBL_BASE + 241 // 0x1A5F |
||
74 | #define striketoblock 4 + blocking //SEQTBL_BASE + 245 // 0x1A63 |
||
75 | #define landengarde 5 + striketoblock //SEQTBL_BASE + 250 // 0x1A68 |
||
76 | #define bumpengfwd 6 + landengarde //SEQTBL_BASE + 256 // 0x1A6E |
||
77 | #define bumpengback 7 + bumpengfwd //SEQTBL_BASE + 263 // 0x1A75 |
||
78 | #define flee 7 + bumpengback //SEQTBL_BASE + 270 // 0x1A7C |
||
79 | #define turnengarde 7 + flee //SEQTBL_BASE + 277 // 0x1A83 |
||
80 | #define alertturn 8 + turnengarde //SEQTBL_BASE + 285 // 0x1A8B |
||
81 | #define standjump 8 + alertturn //SEQTBL_BASE + 293 // 0x1A93 |
||
82 | #define sjland 29 + standjump //SEQTBL_BASE + 322 // 0x1AB0 |
||
83 | #define runjump 29 + sjland //SEQTBL_BASE + 351 // 0x1ACD |
||
84 | #define rjlandrun 46 + runjump //SEQTBL_BASE + 397 // 0x1AFB |
||
85 | #define rdiveroll 9 + rjlandrun //SEQTBL_BASE + 406 // 0x1B04 |
||
86 | #define rdiveroll_crouch 18 + rdiveroll //SEQTBL_BASE + 424 // 0x1B16 |
||
87 | #define sdiveroll 4 + rdiveroll_crouch //SEQTBL_BASE + 428 // 0x1B1A |
||
88 | #define crawl 1 + sdiveroll //SEQTBL_BASE + 429 // 0x1B1B |
||
89 | #define crawl_crouch 14 + crawl //SEQTBL_BASE + 443 // 0x1B29 |
||
90 | #define turndraw 4 + crawl_crouch //SEQTBL_BASE + 447 // 0x1B2D |
||
91 | #define turn 12 + turndraw //SEQTBL_BASE + 459 // 0x1B39 |
||
92 | #define turnrun 26 + turn //SEQTBL_BASE + 485 // 0x1B53 |
||
93 | #define runturn 7 + turnrun //SEQTBL_BASE + 492 // 0x1B5A |
||
94 | #define fightfall 43 + runturn //SEQTBL_BASE + 535 // 0x1B85 |
||
95 | #define efightfall 28 + fightfall //SEQTBL_BASE + 563 // 0x1BA1 |
||
96 | #define efightfallfwd 30 + efightfall //SEQTBL_BASE + 593 // 0x1BBF |
||
97 | #define stepfall 28 + efightfallfwd //SEQTBL_BASE + 621 // 0x1BDB |
||
98 | #define fall1 9 + stepfall //SEQTBL_BASE + 630 // 0x1BE4 |
||
99 | #define patchfall 22 + fall1 //SEQTBL_BASE + 652 // 0x1BFA |
||
100 | #define stepfall2 7 + patchfall //SEQTBL_BASE + 659 // 0x1C01 |
||
101 | #define stepfloat 5 + stepfall2 //SEQTBL_BASE + 664 // 0x1C06 |
||
102 | #define jumpfall 22 + stepfloat //SEQTBL_BASE + 686 // 0x1C1C |
||
103 | #define rjumpfall 28 + jumpfall //SEQTBL_BASE + 714 // 0x1C38 |
||
104 | #define jumphangMed 28 + rjumpfall //SEQTBL_BASE + 742 // 0x1C54 |
||
105 | #define jumphangLong 21 + jumphangMed //SEQTBL_BASE + 763 // 0x1C69 |
||
106 | #define jumpbackhang 27 + jumphangLong //SEQTBL_BASE + 790 // 0x1C84 |
||
107 | #define hang 29 + jumpbackhang //SEQTBL_BASE + 819 // 0x1CA1 |
||
108 | #define hang1 3 + hang //SEQTBL_BASE + 822 // 0x1CA4 |
||
109 | #define hangstraight 45 + hang1 //SEQTBL_BASE + 867 // 0x1CD1 |
||
110 | #define hangstraight_loop 7 + hangstraight //SEQTBL_BASE + 874 // 0x1CD8 |
||
111 | #define climbfail 4 + hangstraight_loop //SEQTBL_BASE + 878 // 0x1CDC |
||
112 | #define climbdown 16 + climbfail //SEQTBL_BASE + 894 // 0x1CEC |
||
113 | #define climbup 24 + climbdown //SEQTBL_BASE + 918 // 0x1D04 |
||
114 | #define hangdrop 33 + climbup //SEQTBL_BASE + 951 // 0x1D25 |
||
115 | #define hangfall 17 + hangdrop //SEQTBL_BASE + 968 // 0x1D36 |
||
116 | #define freefall 19 + hangfall //SEQTBL_BASE + 987 // 0x1D49 |
||
117 | #define freefall_loop 2 + freefall //SEQTBL_BASE + 989 // 0x1D4B |
||
118 | #define runstop 4 + freefall_loop //SEQTBL_BASE + 993 // 0x1D4F |
||
119 | #define jumpup 25 + runstop //SEQTBL_BASE + 1018 // 0x1D68 |
||
120 | #define highjump 21 + jumpup //SEQTBL_BASE + 1039 // 0x1D7D |
||
121 | #define superhijump 30 + highjump //SEQTBL_BASE + 1069 // 0x1D9B |
||
122 | #define fallhang 91 + superhijump //SEQTBL_BASE + 1160 // 0x1DF6 |
||
123 | #define bump 6 + fallhang //SEQTBL_BASE + 1166 // 0x1DFC |
||
124 | #define bumpfall 10 + bump //SEQTBL_BASE + 1176 // 0x1E06 |
||
125 | #define bumpfloat 31 + bumpfall //SEQTBL_BASE + 1207 // 0x1E25 |
||
126 | #define hardbump 22 + bumpfloat //SEQTBL_BASE + 1229 // 0x1E3B |
||
127 | #define testfoot 30 + hardbump //SEQTBL_BASE + 1259 // 0x1E59 |
||
128 | #define stepback 31 + testfoot //SEQTBL_BASE + 1290 // 0x1E78 |
||
129 | #define step14 5 + stepback //SEQTBL_BASE + 1295 // 0x1E7D |
||
130 | #define step13 31 + step14 //SEQTBL_BASE + 1326 // 0x1E9C |
||
131 | #define step12 31 + step13 //SEQTBL_BASE + 1357 // 0x1EBB |
||
132 | #define step11 31 + step12 //SEQTBL_BASE + 1388 // 0x1EDA |
||
133 | #define step10 29 + step11 //SEQTBL_BASE + 1417 // 0x1EF7 |
||
134 | #define step10a 5 + step10 //SEQTBL_BASE + 1422 // 0x1EFC |
||
135 | #define step9 23 + step10a //SEQTBL_BASE + 1445 // 0x1F13 |
||
136 | #define step8 6 + step9 //SEQTBL_BASE + 1451 // 0x1F19 |
||
137 | #define step7 26 + step8 //SEQTBL_BASE + 1477 // 0x1F33 |
||
138 | #define step6 21 + step7 //SEQTBL_BASE + 1498 // 0x1F48 |
||
139 | #define step5 21 + step6 //SEQTBL_BASE + 1519 // 0x1F5D |
||
140 | #define step4 21 + step5 //SEQTBL_BASE + 1540 // 0x1F72 |
||
141 | #define step3 16 + step4 //SEQTBL_BASE + 1556 // 0x1F82 |
||
142 | #define step2 16 + step3 //SEQTBL_BASE + 1572 // 0x1F92 |
||
143 | #define step1 12 + step2 //SEQTBL_BASE + 1584 // 0x1F9E |
||
144 | #define stoop 9 + step1 //SEQTBL_BASE + 1593 // 0x1FA7 |
||
145 | #define stoop_crouch 8 + stoop //SEQTBL_BASE + 1601 // 0x1FAF |
||
146 | #define standup 4 + stoop_crouch //SEQTBL_BASE + 1605 // 0x1FB3 |
||
147 | #define pickupsword 23 + standup //SEQTBL_BASE + 1628 // 0x1FCA |
||
148 | #define resheathe 16 + pickupsword //SEQTBL_BASE + 1644 // 0x1FDA |
||
149 | #define fastsheathe 33 + resheathe //SEQTBL_BASE + 1677 // 0x1FFB |
||
150 | #define drinkpotion 14 + fastsheathe //SEQTBL_BASE + 1691 // 0x2009 |
||
151 | #define softland 34 + drinkpotion //SEQTBL_BASE + 1725 // 0x202B |
||
152 | #define softland_crouch 11 + softland //SEQTBL_BASE + 1736 // 0x2036 |
||
153 | #define landrun 4 + softland_crouch //SEQTBL_BASE + 1740 // 0x203A |
||
154 | #define medland 32 + landrun //SEQTBL_BASE + 1772 // 0x205A |
||
155 | #define hardland 66 + medland //SEQTBL_BASE + 1838 // 0x209C |
||
156 | #define hardland_dead 9 + hardland //SEQTBL_BASE + 1847 // 0x20A5 |
||
157 | #define stabkill 4 + hardland_dead //SEQTBL_BASE + 1851 // 0x20A9 |
||
158 | #define dropdead 5 + stabkill //SEQTBL_BASE + 1856 // 0x20AE |
||
159 | #define dropdead_dead 12 + dropdead //SEQTBL_BASE + 1868 // 0x20BA |
||
160 | #define impale 4 + dropdead_dead //SEQTBL_BASE + 1872 // 0x20BE |
||
161 | #define impale_dead 7 + impale //SEQTBL_BASE + 1879 // 0x20C5 |
||
162 | #define halve 4 + impale_dead //SEQTBL_BASE + 1883 // 0x20C9 |
||
163 | #define halve_dead 4 + halve //SEQTBL_BASE + 1887 // 0x20CD |
||
164 | #define crush 4 + halve_dead //SEQTBL_BASE + 1891 // 0x20D1 |
||
165 | #define deadfall 3 + crush //SEQTBL_BASE + 1894 // 0x20D4 |
||
166 | #define deadfall_loop 5 + deadfall //SEQTBL_BASE + 1899 // 0x20D9 |
||
167 | #define climbstairs 4 + deadfall_loop //SEQTBL_BASE + 1903 // 0x20DD |
||
168 | #define climbstairs_loop 81 + climbstairs //SEQTBL_BASE + 1984 // 0x212E |
||
169 | #define Vstand 4 + climbstairs_loop //SEQTBL_BASE + 1988 // 0x2132 |
||
170 | #define Vraise 4 + Vstand //SEQTBL_BASE + 1992 // 0x2136 |
||
171 | #define Vraise_loop 21 + Vraise //SEQTBL_BASE + 2013 // 0x214B |
||
172 | #define Vwalk 4 + Vraise_loop //SEQTBL_BASE + 2017 // 0x214F |
||
173 | #define Vwalk1 2 + Vwalk //SEQTBL_BASE + 2019 // 0x2151 |
||
174 | #define Vwalk2 3 + Vwalk1 //SEQTBL_BASE + 2022 // 0x2154 |
||
175 | #define Vstop 18 + Vwalk2 //SEQTBL_BASE + 2040 // 0x2166 |
||
176 | #define Vexit 7 + Vstop //SEQTBL_BASE + 2047 // 0x216D |
||
177 | #define Pstand 40 + Vexit //SEQTBL_BASE + 2087 // 0x2195 |
||
178 | #define Palert 4 + Pstand //SEQTBL_BASE + 2091 // 0x2199 |
||
179 | #define Pstepback 15 + Palert //SEQTBL_BASE + 2106 // 0x21A8 |
||
180 | #define Pstepback_loop 16 + Pstepback //SEQTBL_BASE + 2122 // 0x21B8 |
||
181 | #define Plie 4 + Pstepback_loop //SEQTBL_BASE + 2126 // 0x21BC |
||
182 | #define Pwaiting 4 + Plie //SEQTBL_BASE + 2130 // 0x21C0 |
||
183 | #define Pembrace 4 + Pwaiting //SEQTBL_BASE + 2134 // 0x21C4 |
||
184 | #define Pembrace_loop 30 + Pembrace //SEQTBL_BASE + 2164 // 0x21E2 |
||
185 | #define Pstroke 4 + Pembrace_loop //SEQTBL_BASE + 2168 // 0x21E6 |
||
186 | #define Prise 4 + Pstroke //SEQTBL_BASE + 2172 // 0x21EA |
||
187 | #define Prise_loop 14 + Prise //SEQTBL_BASE + 2186 // 0x21F8 |
||
188 | #define Pcrouch 4 + Prise_loop //SEQTBL_BASE + 2190 // 0x21FC |
||
189 | #define Pcrouch_loop 64 + Pcrouch //SEQTBL_BASE + 2254 // 0x223C |
||
190 | #define Pslump 4 + Pcrouch_loop //SEQTBL_BASE + 2258 // 0x2240 |
||
191 | #define Pslump_loop 1 + Pslump //SEQTBL_BASE + 2259 // 0x2241 |
||
192 | #define Mscurry 4 + Pslump_loop //SEQTBL_BASE + 2263 // 0x2245 |
||
193 | #define Mscurry1 2 + Mscurry //SEQTBL_BASE + 2265 // 0x2247 |
||
194 | #define Mstop 12 + Mscurry1 //SEQTBL_BASE + 2277 // 0x2253 |
||
195 | #define Mraise 4 + Mstop //SEQTBL_BASE + 2281 // 0x2257 |
||
196 | #define Mleave 4 + Mraise //SEQTBL_BASE + 2285 // 0x225B |
||
197 | #define Mclimb 19 + Mleave //SEQTBL_BASE + 2304 // 0x226E |
||
198 | #define Mclimb_loop 2 + Mclimb //SEQTBL_BASE + 2306 // 0x2270 |
||
199 | |||
200 | const word seqtbl_offsets[] = { |
||
201 | 0x0000, startrun, stand, standjump, |
||
202 | runjump, turn, runturn, stepfall, |
||
203 | jumphangMed, hang, climbup, hangdrop, |
||
204 | freefall, runstop, jumpup, fallhang, |
||
205 | jumpbackhang, softland, jumpfall, stepfall2, |
||
206 | medland, rjumpfall, hardland, hangfall, |
||
207 | jumphangLong, hangstraight, rdiveroll, sdiveroll, |
||
208 | highjump, step1, step2, step3, |
||
209 | step4, step5, step6, step7, |
||
210 | step8, step9, step10, step11, |
||
211 | step12, step13, step14, turnrun, |
||
212 | testfoot, bumpfall, hardbump, bump, |
||
213 | superhijump, standup, stoop, impale, |
||
214 | crush, deadfall, halve, engarde, |
||
215 | advance, retreat, strike, flee, |
||
216 | turnengarde, striketoblock, readyblock, landengarde, |
||
217 | bumpengfwd, bumpengback, blocktostrike, strikeadv, |
||
218 | climbdown, blockedstrike, climbstairs, dropdead, |
||
219 | stepback, climbfail, stabbed, faststrike, |
||
220 | strikeret, alertstand, drinkpotion, crawl, |
||
221 | alertturn, fightfall, efightfall, efightfallfwd, |
||
222 | running, stabkill, fastadvance, goalertstand, |
||
223 | arise, turndraw, guardengarde, pickupsword, |
||
224 | resheathe, fastsheathe, Pstand, Vstand, |
||
225 | Vwalk, Vstop, Palert, Pstepback, |
||
226 | Vexit, Mclimb, Vraise, Plie, |
||
227 | patchfall, Mscurry, Mstop, Mleave, |
||
228 | Pembrace, Pwaiting, Pstroke, Prise, |
||
229 | Pcrouch, Pslump, Mraise |
||
230 | }; |
||
231 | |||
232 | // data:196E |
||
233 | byte seqtbl[] = { |
||
234 | |||
235 | LABEL(running) // running |
||
236 | act(actions_1_run_jump), jmp(runcyc1), // goto running: frame 7 |
||
237 | |||
238 | LABEL(startrun) // startrun |
||
239 | act(actions_1_run_jump), LABEL(runstt1) frame_1_start_run, |
||
240 | frame_2_start_run, frame_3_start_run, LABEL(runstt4) frame_4_start_run, |
||
241 | dx(8), frame_5_start_run, |
||
242 | dx(3), frame_6_start_run, |
||
243 | dx(3), LABEL(runcyc1) frame_7_run, |
||
244 | dx(5), frame_8_run, |
||
245 | dx(1), snd(SND_FOOTSTEP), frame_9_run, |
||
246 | dx(2), frame_10_run, |
||
247 | dx(4), frame_11_run, |
||
248 | dx(5), frame_12_run, |
||
249 | dx(2), LABEL(runcyc7) snd(SND_FOOTSTEP), frame_13_run, |
||
250 | dx(3), frame_14_run, |
||
251 | dx(4), jmp(runcyc1), |
||
252 | |||
253 | LABEL(stand) // stand |
||
254 | act(actions_0_stand), frame_15_stand, |
||
255 | jmp(stand), // goto "stand" |
||
256 | |||
257 | LABEL(goalertstand) // alert stand |
||
258 | act(actions_1_run_jump), LABEL(alertstand) frame_166_stand_inactive, |
||
259 | jmp(alertstand), // goto "alertstand" |
||
260 | |||
261 | LABEL(arise) // arise (skeleton) |
||
262 | act(actions_5_bumped), dx(10), frame_177_spiked, |
||
263 | frame_177_spiked, |
||
264 | dx(-7), dy(-2), frame_178_chomped, |
||
265 | dx(5), dy(2), frame_166_stand_inactive, |
||
266 | dx(-1), jmp(ready), // goto "ready" |
||
267 | |||
268 | // guard engarde |
||
269 | LABEL(guardengarde) |
||
270 | jmp(ready), // goto "ready" |
||
271 | |||
272 | // engarde |
||
273 | LABEL(engarde) |
||
274 | act(actions_1_run_jump), |
||
275 | dx(2), frame_207_draw_1, |
||
276 | frame_208_draw_2, |
||
277 | dx(2), frame_209_draw_3, |
||
278 | dx(2), frame_210_draw_4, |
||
279 | dx(3), LABEL(ready) act(actions_1_run_jump), snd(SND_SILENT), frame_158_stand_with_sword, |
||
280 | frame_170_stand_with_sword, |
||
281 | LABEL(ready_loop) frame_171_stand_with_sword, |
||
282 | jmp(ready_loop), // goto ":loop" |
||
283 | |||
284 | LABEL(stabbed)// stabbed |
||
285 | act(actions_5_bumped), set_fall(-1, 0), frame_172_jumpfall_2, |
||
286 | dx(-1), dy(1), frame_173_jumpfall_3, |
||
287 | dx(-1), frame_174_jumpfall_4, |
||
288 | dx(-1), dy(2), // frame 175 is commented out in the Apple II source |
||
289 | dx(-2), dy(1), |
||
290 | dx(-5), dy(-4), |
||
291 | jmp(guy8), // goto "guy8" |
||
292 | |||
293 | // strike - advance |
||
294 | LABEL(strikeadv) |
||
295 | act(actions_1_run_jump), set_fall(1, 0), frame_155_guy_7, |
||
296 | dx(2), frame_165_walk_with_sword, |
||
297 | dx(-2), jmp(ready), // goto "ready" |
||
298 | |||
299 | LABEL(strikeret)// strike - retreat |
||
300 | act(actions_1_run_jump), set_fall(-1, 0), frame_155_guy_7, |
||
301 | frame_156_guy_8, |
||
302 | frame_157_walk_with_sword, |
||
303 | frame_158_stand_with_sword, |
||
304 | jmp(retreat), // goto "retreat" |
||
305 | |||
306 | LABEL(advance) // advance |
||
307 | act(actions_1_run_jump), set_fall(1, 0), |
||
308 | dx(2), frame_163_fighting, |
||
309 | dx(4), frame_164_fighting, |
||
310 | frame_165_walk_with_sword, |
||
311 | jmp(ready), // goto "ready" |
||
312 | |||
313 | LABEL(fastadvance) // fast advance |
||
314 | act(actions_1_run_jump), set_fall(1, 0), dx(6), frame_164_fighting, |
||
315 | frame_165_walk_with_sword, |
||
316 | jmp(ready), // goto "ready" |
||
317 | |||
318 | LABEL(retreat) // retreat |
||
319 | act(actions_1_run_jump), set_fall(-1, 0), dx(-3), frame_160_fighting, |
||
320 | dx(-2), frame_157_walk_with_sword, |
||
321 | jmp(ready), // goto "ready" |
||
322 | |||
323 | LABEL(strike) // strike |
||
324 | act(actions_1_run_jump), set_fall(-1, 0), frame_168_back, |
||
325 | LABEL(faststrike) act(actions_1_run_jump), frame_151_strike_1, |
||
326 | LABEL(guy4) act(actions_1_run_jump), frame_152_strike_2, |
||
327 | frame_153_strike_3, |
||
328 | frame_154_poking, |
||
329 | LABEL(guy7) act(actions_5_bumped), frame_155_guy_7, |
||
330 | LABEL(guy8) act(actions_1_run_jump), frame_156_guy_8, |
||
331 | frame_157_walk_with_sword, |
||
332 | jmp(ready), // goto "ready" |
||
333 | |||
334 | LABEL(blockedstrike)// blocked strike |
||
335 | act(actions_1_run_jump), frame_167_blocked, |
||
336 | jmp(guy7), // goto "guy7" |
||
337 | |||
338 | // block to strike |
||
339 | LABEL(blocktostrike)// "blocktostrike" |
||
340 | frame_162_block_to_strike, |
||
341 | jmp(guy4), // goto "guy4" |
||
342 | |||
343 | LABEL(readyblock) // ready block |
||
344 | frame_169_begin_block, |
||
345 | LABEL(blocking) frame_150_parry, |
||
346 | jmp(ready), // goto "ready" |
||
347 | |||
348 | LABEL(striketoblock) // strike to block |
||
349 | frame_159_fighting, |
||
350 | frame_160_fighting, |
||
351 | jmp(blocking), // goto "blocking" |
||
352 | |||
353 | LABEL(landengarde) // land en garde |
||
354 | act(actions_1_run_jump), SEQ_KNOCK_DOWN, jmp(ready), // goto "ready" |
||
355 | |||
356 | LABEL(bumpengfwd) // bump en garde (forward) |
||
357 | act(actions_5_bumped), dx(-8), jmp(ready), // goto "ready" |
||
358 | |||
359 | LABEL(bumpengback) // bump en garde (back) |
||
360 | act(actions_5_bumped), frame_160_fighting, |
||
361 | frame_157_walk_with_sword, |
||
362 | jmp(ready), // goto "ready" |
||
363 | |||
364 | LABEL(flee) // flee |
||
365 | act(actions_7_turn), dx(-8), jmp(turn), // goto "turn" |
||
366 | |||
367 | LABEL(turnengarde) // turn en garde |
||
368 | act(actions_5_bumped), SEQ_FLIP, dx(5), jmp(retreat), // goto "retreat" |
||
369 | |||
370 | LABEL(alertturn) // alert turn (for enemies) |
||
371 | act(actions_5_bumped), SEQ_FLIP, dx(18), jmp(goalertstand), // goto "goalertstand" |
||
372 | |||
373 | LABEL(standjump) // standing jump |
||
374 | act(actions_1_run_jump), frame_16_standing_jump_1, |
||
375 | frame_17_standing_jump_2, |
||
376 | dx(2), frame_18_standing_jump_3, |
||
377 | dx(2), frame_19_standing_jump_4, |
||
378 | dx(2), frame_20_standing_jump_5, |
||
379 | dx(2), frame_21_standing_jump_6, |
||
380 | dx(2), frame_22_standing_jump_7, |
||
381 | dx(7), frame_23_standing_jump_8, |
||
382 | dx(9), frame_24_standing_jump_9, |
||
383 | dx(5), dy(-6), /* "sjland" */ LABEL(sjland) frame_25_standing_jump_10, |
||
384 | dx(1), dy(6), frame_26_standing_jump_11, |
||
385 | dx(4), SEQ_KNOCK_DOWN, snd(SND_FOOTSTEP), frame_27_standing_jump_12, |
||
386 | dx(-3), frame_28_standing_jump_13, |
||
387 | dx(5), frame_29_standing_jump_14, |
||
388 | snd(SND_FOOTSTEP), frame_30_standing_jump_15, |
||
389 | frame_31_standing_jump_16, |
||
390 | frame_32_standing_jump_17, |
||
391 | frame_33_standing_jump_18, |
||
392 | dx(1), jmp(stand), // goto "stand" |
||
393 | |||
394 | LABEL(runjump) // running jump |
||
395 | act(actions_1_run_jump), snd(SND_FOOTSTEP), frame_34_start_run_jump_1, |
||
396 | dx(5), frame_35_start_run_jump_2, |
||
397 | dx(6), frame_36_start_run_jump_3, |
||
398 | dx(3), frame_37_start_run_jump_4, |
||
399 | dx(5), snd(SND_FOOTSTEP), frame_38_start_run_jump_5, |
||
400 | dx(7), frame_39_start_run_jump_6, |
||
401 | dx(12), dy(-3), frame_40_running_jump_1, |
||
402 | dx(8), dy(-9), frame_41_running_jump_2, |
||
403 | dx(8), dy(-2), frame_42_running_jump_3, |
||
404 | dx(4), dy(11), frame_43_running_jump_4, |
||
405 | dx(4), dy(3), /* "rjlandrun" */ LABEL(rjlandrun) frame_44_running_jump_5, |
||
406 | dx(5), SEQ_KNOCK_DOWN, snd(SND_FOOTSTEP), jmp(runcyc1), // goto "runcyc1" |
||
407 | |||
408 | LABEL(rdiveroll) // run dive roll |
||
409 | act(actions_1_run_jump), dx(1), frame_107_fall_land_1, |
||
410 | dx(2), dx(2), frame_108_fall_land_2, |
||
411 | dx(2), frame_109_crouch, |
||
412 | dx(2), frame_109_crouch, |
||
413 | dx(2), /* ":crouch" */ LABEL(rdiveroll_crouch) frame_109_crouch, |
||
414 | jmp(rdiveroll_crouch), // goto ":crouch" |
||
415 | |||
416 | LABEL(sdiveroll) |
||
417 | 0x00, // stand dive roll; not implemented |
||
418 | |||
419 | LABEL(crawl) // crawl |
||
420 | act(actions_1_run_jump), dx(1), frame_110_stand_up_from_crouch_1, |
||
421 | frame_111_stand_up_from_crouch_2, |
||
422 | dx(2), frame_112_stand_up_from_crouch_3, |
||
423 | dx(2), frame_108_fall_land_2, |
||
424 | dx(2), /* ":crouch" */ LABEL(crawl_crouch) frame_109_crouch, |
||
425 | jmp(crawl_crouch), // goto ":crouch" |
||
426 | |||
427 | LABEL(turndraw) // turn draw |
||
428 | act(actions_7_turn), SEQ_FLIP, dx(6), frame_45_turn, |
||
429 | dx(1), frame_46_turn, |
||
430 | jmp(engarde), // goto "engarde" |
||
431 | |||
432 | LABEL(turn) // turn |
||
433 | act(actions_7_turn), SEQ_FLIP, dx(6), frame_45_turn, |
||
434 | dx(1), frame_46_turn, |
||
435 | dx(2), frame_47_turn, |
||
436 | dx(-1), /* "finishturn" */ frame_48_turn, |
||
437 | dx(1), frame_49_turn, |
||
438 | dx(-2), frame_50_turn, |
||
439 | frame_51_turn, |
||
440 | frame_52_turn, |
||
441 | jmp(stand), // goto "stand" |
||
442 | |||
443 | LABEL(turnrun) // turnrun (from frame 48) |
||
444 | act(actions_1_run_jump), dx(-1), jmp(runstt1), // goto "runstt1" |
||
445 | |||
446 | LABEL(runturn) // runturn |
||
447 | act(actions_1_run_jump), dx(1), frame_53_runturn, |
||
448 | dx(1), snd(SND_FOOTSTEP), frame_54_runturn, |
||
449 | dx(8) ,frame_55_runturn, |
||
450 | snd(SND_FOOTSTEP), frame_56_runturn, |
||
451 | dx(7), frame_57_runturn, |
||
452 | dx(3), frame_58_runturn, |
||
453 | dx(1), frame_59_runturn, |
||
454 | frame_60_runturn, |
||
455 | dx(2), frame_61_runturn, |
||
456 | dx(-1), frame_62_runturn, |
||
457 | frame_63_runturn, |
||
458 | frame_64_runturn, |
||
459 | dx(-1), frame_65_runturn, |
||
460 | dx(-14), SEQ_FLIP, jmp(runcyc7), // goto "runcyc7" |
||
461 | |||
462 | LABEL(fightfall) // fightfall (backward) |
||
463 | act(actions_3_in_midair), dy(-1), frame_102_start_fall_1, |
||
464 | dx(-2), dy(6), frame_103_start_fall_2, |
||
465 | dx(-2), dy(9), frame_104_start_fall_3, |
||
466 | dx(-1), dy(12), frame_105_start_fall_4, |
||
467 | dx(-3), set_fall(0, 15), jmp(freefall), // goto "freefall" |
||
468 | |||
469 | LABEL(efightfall) // enemy fight fall |
||
470 | act(actions_3_in_midair), dy(-1), dx(-2), frame_102_start_fall_1, |
||
471 | dx(-3), dy(6), frame_103_start_fall_2, |
||
472 | dx(-3), dy(9), frame_104_start_fall_3, |
||
473 | dx(-2), dy(12), frame_105_start_fall_4, |
||
474 | dx(-3), set_fall(0, 15), jmp(freefall), // goto "freefall" |
||
475 | |||
476 | LABEL(efightfallfwd)// enemy fight fall forward |
||
477 | act(actions_3_in_midair), dx(1), dy(-1), frame_102_start_fall_1, |
||
478 | dx(2), dy(6), frame_103_start_fall_2, |
||
479 | dx(-1), dy(9), frame_104_start_fall_3, |
||
480 | dy(12), frame_105_start_fall_4, |
||
481 | dx(-2), set_fall(1, 15), jmp(freefall), // goto "freefall" |
||
482 | |||
483 | LABEL(stepfall) // stepfall |
||
484 | act(actions_3_in_midair), dx(1), dy(3), jmp_if_feather(stepfloat), // goto "stepfloat" |
||
485 | /* "fall1" */ LABEL(fall1) frame_102_start_fall_1, |
||
486 | dx(2), dy(6), frame_103_start_fall_2, |
||
487 | dx(-1), dy(9), frame_104_start_fall_3, |
||
488 | dy(12), frame_105_start_fall_4, |
||
489 | dx(-2), set_fall(1, 15), jmp(freefall), // goto "freefall" |
||
490 | |||
491 | LABEL(patchfall) // patchfall |
||
492 | dx(-1), dy(-3), jmp(fall1), // goto "fall1" |
||
493 | |||
494 | LABEL(stepfall2) // stepfall2 (from frame 12) |
||
495 | dx(1), jmp(stepfall), // goto "stepfall" |
||
496 | |||
497 | LABEL(stepfloat) // stepfloat |
||
498 | frame_102_start_fall_1, |
||
499 | dx(2), dy(3), frame_103_start_fall_2, |
||
500 | dx(-1), dy(4), frame_104_start_fall_3, |
||
501 | dy(5), frame_105_start_fall_4, |
||
502 | dx(-2), set_fall(1, 6), jmp(freefall), // goto "freefall" |
||
503 | |||
504 | LABEL(jumpfall) // jump fall (from standing jump) |
||
505 | act(actions_3_in_midair), dx(1), dy(3), frame_102_start_fall_1, |
||
506 | dx(2), dy(6), frame_103_start_fall_2, |
||
507 | dx(1), dy(9), frame_104_start_fall_3, |
||
508 | dx(2), dy(12), frame_105_start_fall_4, |
||
509 | set_fall(2, 15), jmp(freefall), // goto "freefall" |
||
510 | |||
511 | LABEL(rjumpfall) // running jump fall |
||
512 | act(actions_3_in_midair), dx(1), dy(3), frame_102_start_fall_1, |
||
513 | dx(3), dy(6), frame_103_start_fall_2, |
||
514 | dx(2), dy(9), frame_104_start_fall_3, |
||
515 | dx(3), dy(12), frame_105_start_fall_4, |
||
516 | set_fall(3, 15), jmp(freefall), // goto "freefall" |
||
517 | |||
518 | LABEL(jumphangMed) // jumphang (medium: DX = 0) |
||
519 | act(actions_1_run_jump), frame_67_start_jump_up_1, |
||
520 | frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, |
||
521 | frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, frame_76_jumphang, |
||
522 | frame_77_jumphang, |
||
523 | act(actions_2_hang_climb), frame_78_jumphang, frame_79_jumphang, frame_80_jumphang, |
||
524 | jmp(hang), // goto "hang" |
||
525 | |||
526 | LABEL(jumphangLong)// jumphang (long: DX = 4) |
||
527 | act(actions_1_run_jump), frame_67_start_jump_up_1, |
||
528 | frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, |
||
529 | frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, frame_76_jumphang, |
||
530 | frame_77_jumphang, |
||
531 | act(actions_2_hang_climb), dx(1), frame_78_jumphang, |
||
532 | dx(2), frame_79_jumphang, |
||
533 | dx(1), frame_80_jumphang, |
||
534 | jmp(hang), // goto "hang" |
||
535 | |||
536 | LABEL(jumpbackhang) // jumpbackhang |
||
537 | act(actions_1_run_jump), frame_67_start_jump_up_1, |
||
538 | frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, |
||
539 | frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, frame_76_jumphang, |
||
540 | dx(-1), frame_77_jumphang, |
||
541 | act(actions_2_hang_climb), dx(-2), frame_78_jumphang, |
||
542 | dx(-1), frame_79_jumphang, |
||
543 | dx(-1), frame_80_jumphang, |
||
544 | jmp(hang), // goto "hang" |
||
545 | |||
546 | LABEL(hang) // hang |
||
547 | act(actions_2_hang_climb), frame_91_hanging_5, |
||
548 | /* "hang1" */ LABEL(hang1) frame_90_hanging_4, frame_89_hanging_3, frame_88_hanging_2, |
||
549 | frame_87_hanging_1, frame_87_hanging_1, frame_87_hanging_1, frame_88_hanging_2, |
||
550 | frame_89_hanging_3, frame_90_hanging_4, frame_91_hanging_5, frame_92_hanging_6, |
||
551 | frame_93_hanging_7, frame_94_hanging_8, frame_95_hanging_9, frame_96_hanging_10, |
||
552 | frame_97_hanging_11, frame_98_hanging_12, frame_99_hanging_13, frame_97_hanging_11, |
||
553 | frame_96_hanging_10, frame_95_hanging_9, frame_94_hanging_8, frame_93_hanging_7, |
||
554 | frame_92_hanging_6, frame_91_hanging_5, frame_90_hanging_4, frame_89_hanging_3, |
||
555 | frame_88_hanging_2, frame_87_hanging_1, frame_88_hanging_2, frame_89_hanging_3, |
||
556 | frame_90_hanging_4, frame_91_hanging_5, frame_92_hanging_6, frame_93_hanging_7, |
||
557 | frame_94_hanging_8, frame_95_hanging_9, frame_96_hanging_10, frame_95_hanging_9, |
||
558 | frame_94_hanging_8, frame_93_hanging_7, frame_92_hanging_6, |
||
559 | jmp(hangdrop), // goto "hangdrop" |
||
560 | |||
561 | LABEL(hangstraight) // hangstraight |
||
562 | act(actions_6_hang_straight), frame_92_hanging_6, // Apple II source has a bump sound here |
||
563 | frame_93_hanging_7, frame_93_hanging_7, frame_92_hanging_6, frame_92_hanging_6, |
||
564 | /* ":loop" */ LABEL(hangstraight_loop) frame_91_hanging_5, |
||
565 | jmp(hangstraight_loop), // goto ":loop" |
||
566 | |||
567 | LABEL(climbfail) // climbfail |
||
568 | frame_135_climbing_1, frame_136_climbing_2, frame_137_climbing_3, frame_137_climbing_3, |
||
569 | frame_138_climbing_4, frame_138_climbing_4, frame_138_climbing_4, frame_138_climbing_4, |
||
570 | frame_137_climbing_3, frame_136_climbing_2, frame_135_climbing_1, |
||
571 | dx(-7), jmp(hangdrop), // goto "hangdrop" |
||
572 | |||
573 | LABEL(climbdown) // climbdown |
||
574 | act(actions_1_run_jump), frame_148_climbing_14, |
||
575 | frame_145_climbing_11, frame_144_climbing_10, frame_143_climbing_9, frame_142_climbing_8, |
||
576 | frame_141_climbing_7, |
||
577 | dx(-5), dy(63), SEQ_DOWN, act(actions_3_in_midair), frame_140_climbing_6, |
||
578 | frame_138_climbing_4, frame_136_climbing_2, |
||
579 | frame_91_hanging_5, |
||
580 | act(actions_2_hang_climb), jmp(hang1), // goto "hang1" |
||
581 | |||
582 | LABEL(climbup) // climbup |
||
583 | act(actions_1_run_jump), frame_135_climbing_1, |
||
584 | frame_136_climbing_2, frame_137_climbing_3, frame_138_climbing_4, |
||
585 | frame_139_climbing_5, frame_140_climbing_6, |
||
586 | dx(5), dy(-63), SEQ_UP, frame_141_climbing_7, |
||
587 | frame_142_climbing_8, frame_143_climbing_9, frame_144_climbing_10, frame_145_climbing_11, |
||
588 | frame_146_climbing_12, frame_147_climbing_13, frame_148_climbing_14, |
||
589 | act(actions_5_bumped), // to clear flags |
||
590 | frame_149_climbing_15, |
||
591 | act(actions_1_run_jump), frame_118_stand_up_from_crouch_9, frame_119_stand_up_from_crouch_10, |
||
592 | dx(1), jmp(stand), // goto "stand" |
||
593 | |||
594 | LABEL(hangdrop) // hangdrop |
||
595 | frame_81_hangdrop_1, frame_82_hangdrop_2, |
||
596 | act(actions_5_bumped), frame_83_hangdrop_3, |
||
597 | act(actions_1_run_jump), SEQ_KNOCK_DOWN, snd(SND_SILENT), |
||
598 | frame_84_hangdrop_4, frame_85_hangdrop_5, |
||
599 | dx(3), jmp(stand), // goto "stand" |
||
600 | |||
601 | LABEL(hangfall) // hangfall |
||
602 | act(actions_3_in_midair), frame_81_hangdrop_1, |
||
603 | dy(6), frame_81_hangdrop_1, |
||
604 | dy(9), frame_81_hangdrop_1, |
||
605 | dy(12), dx(2), set_fall(0, 12), jmp(freefall), // goto "freefall" |
||
606 | |||
607 | LABEL(freefall) // freefall |
||
608 | act(actions_4_in_freefall), /* ":loop" */ LABEL(freefall_loop) frame_106_fall, |
||
609 | jmp(freefall_loop), // goto :loop |
||
610 | |||
611 | LABEL(runstop) // runstop |
||
612 | act(actions_1_run_jump), frame_53_runturn, |
||
613 | dx(2), snd(SND_FOOTSTEP), frame_54_runturn, |
||
614 | dx(7), frame_55_runturn, |
||
615 | snd(SND_FOOTSTEP), frame_56_runturn, |
||
616 | dx(2), frame_49_turn, |
||
617 | dx(-2), frame_50_turn, |
||
618 | frame_51_turn, frame_52_turn, |
||
619 | jmp(stand), // goto "stand" |
||
620 | |||
621 | LABEL(jumpup) // jump up (and touch ceiling) |
||
622 | act(actions_1_run_jump), frame_67_start_jump_up_1, |
||
623 | frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, |
||
624 | frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, |
||
625 | frame_76_jumphang, frame_77_jumphang, frame_78_jumphang, |
||
626 | act(actions_0_stand), SEQ_KNOCK_UP, frame_79_jumphang, |
||
627 | jmp(hangdrop), // goto "hangdrop" |
||
628 | |||
629 | LABEL(highjump) // highjump (no ceiling above) |
||
630 | act(actions_1_run_jump), frame_67_start_jump_up_1, |
||
631 | frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, |
||
632 | frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, |
||
633 | frame_76_jumphang, frame_77_jumphang, frame_78_jumphang, frame_79_jumphang, |
||
634 | dy(-4), frame_79_jumphang, |
||
635 | dy(-2), frame_79_jumphang, |
||
636 | frame_79_jumphang, |
||
637 | dy(2), frame_79_jumphang, |
||
638 | dy(4), jmp(hangdrop), // goto "hangdrop" |
||
639 | |||
640 | LABEL(superhijump) // superhijump (when weightless) |
||
641 | frame_67_start_jump_up_1, frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, |
||
642 | frame_71_jumphang, frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, |
||
643 | frame_75_jumphang, frame_76_jumphang, |
||
644 | dy(-1), frame_77_jumphang, |
||
645 | dy(-3), frame_78_jumphang, |
||
646 | dy(-4), frame_79_jumphang, |
||
647 | dy(-10), frame_79_jumphang, |
||
648 | dy(-9), frame_79_jumphang, |
||
649 | dy(-8), frame_79_jumphang, |
||
650 | dy(-7), frame_79_jumphang, |
||
651 | dy(-6), frame_79_jumphang, |
||
652 | dy(-5), frame_79_jumphang, |
||
653 | dy(-4), frame_79_jumphang, |
||
654 | dy(-3), frame_79_jumphang, |
||
655 | dy(-2), frame_79_jumphang, |
||
656 | dy(-2), frame_79_jumphang, |
||
657 | dy(-1), frame_79_jumphang, |
||
658 | dy(-1), frame_79_jumphang, |
||
659 | dy(-1), frame_79_jumphang, |
||
660 | frame_79_jumphang, frame_79_jumphang, frame_79_jumphang, |
||
661 | dy(1), frame_79_jumphang, |
||
662 | dy(1), frame_79_jumphang, |
||
663 | dy(2), frame_79_jumphang, |
||
664 | dy(2), frame_79_jumphang, |
||
665 | dy(3), frame_79_jumphang, |
||
666 | dy(4), frame_79_jumphang, |
||
667 | dy(5), frame_79_jumphang, |
||
668 | dy(6), frame_79_jumphang, |
||
669 | set_fall(0, 6), jmp(freefall), // goto "freefall" |
||
670 | |||
671 | LABEL(fallhang) // fall hang |
||
672 | act(actions_3_in_midair), frame_80_jumphang, |
||
673 | jmp(hang), // goto "hang" |
||
674 | |||
675 | LABEL(bump) // bump |
||
676 | act(actions_5_bumped), dx(-4), frame_50_turn, |
||
677 | frame_51_turn, frame_52_turn, |
||
678 | jmp(stand), // goto "stand" |
||
679 | |||
680 | LABEL(bumpfall) // bumpfall |
||
681 | /* action is patched to 3_in_midair by FIX_WALLBUMP_TRIGGERS_TILE_BELOW */ |
||
682 | act(actions_5_bumped), dx(1), dy(3), jmp_if_feather(bumpfloat), |
||
683 | frame_102_start_fall_1, |
||
684 | dx(2), dy(6), frame_103_start_fall_2, |
||
685 | dx(-1), dy(9), frame_104_start_fall_3, |
||
686 | dy(12), frame_105_start_fall_4, |
||
687 | dx(-2), set_fall(0, 15), jmp(freefall), // goto "freefall" |
||
688 | |||
689 | LABEL(bumpfloat) // bumpfloat |
||
690 | frame_102_start_fall_1, |
||
691 | dx(2), dy(3), frame_103_start_fall_2, |
||
692 | dx(-1), dy(4), frame_104_start_fall_3, |
||
693 | dy(5), frame_105_start_fall_4, |
||
694 | dx(-2), set_fall(0, 6), jmp(freefall), // goto "freefall" |
||
695 | |||
696 | LABEL(hardbump) // hard bump |
||
697 | act(actions_5_bumped), dx(-1), dy(-4), frame_102_start_fall_1, |
||
698 | dx(-1), dy(3), dx(-3), dy(1), SEQ_KNOCK_DOWN, |
||
699 | dx(1), snd(SND_FOOTSTEP), frame_107_fall_land_1, |
||
700 | dx(2), frame_108_fall_land_2, |
||
701 | snd(SND_FOOTSTEP), frame_109_crouch, |
||
702 | jmp(standup), // goto "standup" |
||
703 | |||
704 | LABEL(testfoot) // test foot |
||
705 | frame_121_stepping_1, |
||
706 | dx(1), frame_122_stepping_2, |
||
707 | frame_123_stepping_3, |
||
708 | dx(2), frame_124_stepping_4, |
||
709 | dx(4), frame_125_stepping_5, |
||
710 | dx(3), frame_126_stepping_6, |
||
711 | dx(-4), frame_86_test_foot, |
||
712 | snd(SND_FOOTSTEP), SEQ_KNOCK_DOWN, dx(-4), frame_116_stand_up_from_crouch_7, |
||
713 | dx(-2), frame_117_stand_up_from_crouch_8, |
||
714 | frame_118_stand_up_from_crouch_9, |
||
715 | frame_119_stand_up_from_crouch_10, |
||
716 | jmp(stand), // goto "stand" |
||
717 | |||
718 | LABEL(stepback) // step back |
||
719 | dx(-5), jmp(stand), // goto "stand" |
||
720 | |||
721 | LABEL(step14) // step forward 14 pixels |
||
722 | act(actions_1_run_jump), frame_121_stepping_1, |
||
723 | dx(1), frame_122_stepping_2, |
||
724 | dx(1), frame_123_stepping_3, |
||
725 | dx(3), frame_124_stepping_4, |
||
726 | dx(4), frame_125_stepping_5, |
||
727 | dx(3), frame_126_stepping_6, |
||
728 | dx(-1), dx(3), frame_127_stepping_7, |
||
729 | frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, |
||
730 | frame_131_stepping_11, frame_132_stepping_12, |
||
731 | jmp(stand), // goto "stand" |
||
732 | |||
733 | LABEL(step13) // step forward 13 pixels |
||
734 | act(actions_1_run_jump), frame_121_stepping_1, |
||
735 | dx(1), frame_122_stepping_2, |
||
736 | dx(1), frame_123_stepping_3, |
||
737 | dx(3), frame_124_stepping_4, |
||
738 | dx(4), frame_125_stepping_5, |
||
739 | dx(3), frame_126_stepping_6, |
||
740 | dx(-1), dx(2), frame_127_stepping_7, |
||
741 | frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, |
||
742 | frame_131_stepping_11, frame_132_stepping_12, |
||
743 | jmp(stand), // goto "stand" |
||
744 | |||
745 | LABEL(step12) // step forward 12 pixels |
||
746 | act(actions_1_run_jump), frame_121_stepping_1, |
||
747 | dx(1), frame_122_stepping_2, |
||
748 | dx(1), frame_123_stepping_3, |
||
749 | dx(3), frame_124_stepping_4, |
||
750 | dx(4), frame_125_stepping_5, |
||
751 | dx(3), frame_126_stepping_6, |
||
752 | dx(-1), dx(1), frame_127_stepping_7, |
||
753 | frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, |
||
754 | frame_131_stepping_11, frame_132_stepping_12, |
||
755 | jmp(stand), // goto "stand" |
||
756 | |||
757 | LABEL(step11) // step forward 11 pixels (normal step) |
||
758 | act(actions_1_run_jump), frame_121_stepping_1, |
||
759 | dx(1), frame_122_stepping_2, |
||
760 | dx(1), frame_123_stepping_3, |
||
761 | dx(3), frame_124_stepping_4, |
||
762 | dx(4), frame_125_stepping_5, |
||
763 | dx(3), frame_126_stepping_6, |
||
764 | dx(-1), frame_127_stepping_7, |
||
765 | frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, |
||
766 | frame_131_stepping_11, frame_132_stepping_12, |
||
767 | jmp(stand), // goto "stand" |
||
768 | |||
769 | LABEL(step10) // step forward 10 pixels |
||
770 | act(actions_1_run_jump), frame_121_stepping_1, |
||
771 | dx(1), /* "step10a "*/ LABEL(step10a) frame_122_stepping_2, |
||
772 | dx(1), frame_123_stepping_3, |
||
773 | dx(3), frame_124_stepping_4, |
||
774 | dx(4), frame_125_stepping_5, |
||
775 | dx(3), frame_126_stepping_6, |
||
776 | dx(-)2, frame_128_stepping_8, |
||
777 | frame_129_stepping_9, frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, |
||
778 | jmp(stand), // goto "stand" |
||
779 | |||
780 | LABEL(step9) // step forward 9 pixels |
||
781 | act(actions_1_run_jump), frame_121_stepping_1, |
||
782 | jmp(step10a), // goto "step10a" |
||
783 | |||
784 | LABEL(step8) // step forward 8 pixels |
||
785 | act(actions_1_run_jump), frame_121_stepping_1, |
||
786 | dx(1), frame_122_stepping_2, |
||
787 | dx(1), frame_123_stepping_3, |
||
788 | dx(3), frame_124_stepping_4, |
||
789 | dx(4), frame_125_stepping_5, |
||
790 | dx(-1), frame_127_stepping_7, |
||
791 | frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, frame_131_stepping_11, |
||
792 | frame_132_stepping_12, |
||
793 | jmp(stand), // goto "stand" |
||
794 | |||
795 | LABEL(step7) // step forward 7 pixels |
||
796 | act(actions_1_run_jump), frame_121_stepping_1, |
||
797 | dx(1), frame_122_stepping_2, |
||
798 | dx(1), frame_123_stepping_3, |
||
799 | dx(3), frame_124_stepping_4, |
||
800 | dx(2), frame_129_stepping_9, |
||
801 | frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, |
||
802 | jmp(stand), // goto "stand" |
||
803 | |||
804 | LABEL(step6) // step forward 6 pixels |
||
805 | act(actions_1_run_jump), frame_121_stepping_1, |
||
806 | dx(1), frame_122_stepping_2, |
||
807 | dx(1), frame_123_stepping_3, |
||
808 | dx(2), frame_124_stepping_4, |
||
809 | dx(2), frame_129_stepping_9, |
||
810 | frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, |
||
811 | jmp(stand), // goto "stand" |
||
812 | |||
813 | LABEL(step5) // step forward 5 pixels |
||
814 | act(actions_1_run_jump), frame_121_stepping_1, |
||
815 | dx(1), frame_122_stepping_2, |
||
816 | dx(1), frame_123_stepping_3, |
||
817 | dx(2), frame_124_stepping_4, |
||
818 | dx(1), frame_129_stepping_9, |
||
819 | frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, |
||
820 | jmp(stand), // goto "stand" |
||
821 | |||
822 | LABEL(step4) // step forward 4 pixels |
||
823 | act(actions_1_run_jump), frame_121_stepping_1, |
||
824 | dx(1), frame_122_stepping_2, |
||
825 | dx(1), frame_123_stepping_3, |
||
826 | dx(2), frame_131_stepping_11, |
||
827 | frame_132_stepping_12, |
||
828 | jmp(stand), // goto "stand" |
||
829 | |||
830 | LABEL(step3) // step forward 3 pixels |
||
831 | act(actions_1_run_jump), frame_121_stepping_1, |
||
832 | dx(1), frame_122_stepping_2, |
||
833 | dx(1), frame_123_stepping_3, |
||
834 | dx(1), frame_131_stepping_11, |
||
835 | frame_132_stepping_12, |
||
836 | jmp(stand), // goto "stand" |
||
837 | |||
838 | LABEL(step2) // step forward 2 pixels |
||
839 | act(actions_1_run_jump), frame_121_stepping_1, |
||
840 | dx(1), frame_122_stepping_2, |
||
841 | dx(1), frame_132_stepping_12, |
||
842 | jmp(stand), // goto "stand" |
||
843 | |||
844 | LABEL(step1) // step forward 1 pixel |
||
845 | act(actions_1_run_jump), frame_121_stepping_1, |
||
846 | dx(1), frame_132_stepping_12, |
||
847 | jmp(stand), // goto "stand" |
||
848 | |||
849 | LABEL(stoop) // stoop |
||
850 | act(actions_1_run_jump), dx(1), frame_107_fall_land_1, |
||
851 | dx(2), frame_108_fall_land_2, |
||
852 | /* ":crouch" */ LABEL(stoop_crouch) frame_109_crouch, |
||
853 | jmp(stoop_crouch), // goto ":crouch |
||
854 | |||
855 | LABEL(standup) // stand up |
||
856 | act(actions_5_bumped), dx(1), frame_110_stand_up_from_crouch_1, |
||
857 | frame_111_stand_up_from_crouch_2, |
||
858 | dx(2), frame_112_stand_up_from_crouch_3, |
||
859 | frame_113_stand_up_from_crouch_4, |
||
860 | dx(1 /*patched to 0 by FIX_STAND_ON_THIN_AIR*/), frame_114_stand_up_from_crouch_5, |
||
861 | frame_115_stand_up_from_crouch_6, frame_116_stand_up_from_crouch_7, |
||
862 | dx(-4 /*patched to -3 by FIX_STAND_ON_THIN_AIR*/), frame_117_stand_up_from_crouch_8, |
||
863 | frame_118_stand_up_from_crouch_9, frame_119_stand_up_from_crouch_10, |
||
864 | jmp(stand), // goto "stand" |
||
865 | |||
866 | LABEL(pickupsword) // pick up sword |
||
867 | act(actions_1_run_jump), SEQ_GET_ITEM, 1, frame_229_found_sword, |
||
868 | frame_229_found_sword, frame_229_found_sword, frame_229_found_sword, frame_229_found_sword, |
||
869 | frame_229_found_sword, frame_230_sheathe, frame_231_sheathe, frame_232_sheathe, |
||
870 | jmp(resheathe), // goto "resheathe" |
||
871 | |||
872 | LABEL(resheathe) // resheathe |
||
873 | act(actions_1_run_jump), dx(-5), frame_233_sheathe, |
||
874 | frame_234_sheathe, frame_235_sheathe, frame_236_sheathe, frame_237_sheathe, |
||
875 | frame_238_sheathe, frame_239_sheathe, frame_240_sheathe, frame_133_sheathe, |
||
876 | frame_133_sheathe, frame_134_sheathe, frame_134_sheathe, frame_134_sheathe, |
||
877 | frame_48_turn, |
||
878 | dx(1), frame_49_turn, |
||
879 | dx(-2), act(actions_5_bumped), frame_50_turn, |
||
880 | act(actions_1_run_jump), frame_51_turn, |
||
881 | frame_52_turn, |
||
882 | jmp(stand), // goto "stand" |
||
883 | |||
884 | LABEL(fastsheathe) // fast sheathe |
||
885 | act(actions_1_run_jump), dx(-5), frame_234_sheathe, |
||
886 | frame_236_sheathe, frame_238_sheathe, frame_240_sheathe, frame_134_sheathe, |
||
887 | dx(-1), jmp(stand), // goto "stand" |
||
888 | |||
889 | LABEL(drinkpotion) // drink potion |
||
890 | act(actions_1_run_jump), dx(4), frame_191_drink, |
||
891 | frame_192_drink, frame_193_drink, frame_194_drink, frame_195_drink, |
||
892 | frame_196_drink, frame_197_drink, snd(SND_DRINK), |
||
893 | frame_198_drink, frame_199_drink, frame_200_drink, frame_201_drink, |
||
894 | frame_202_drink, frame_203_drink, frame_204_drink, frame_205_drink, |
||
895 | frame_205_drink, frame_205_drink, |
||
896 | SEQ_GET_ITEM, 1, frame_205_drink, |
||
897 | frame_205_drink, frame_201_drink, frame_198_drink, |
||
898 | dx(-4), jmp(stand), // goto "stand" |
||
899 | |||
900 | LABEL(softland)// soft land |
||
901 | act(actions_5_bumped), SEQ_KNOCK_DOWN, dx(1), frame_107_fall_land_1, |
||
902 | dx(2), frame_108_fall_land_2, |
||
903 | act(actions_1_run_jump), /* ":crouch" */ LABEL(softland_crouch) frame_109_crouch, |
||
904 | jmp(softland_crouch), // goto ":crouch" |
||
905 | |||
906 | LABEL(landrun) // land run |
||
907 | act(actions_1_run_jump), dy(-2), dx(1), frame_107_fall_land_1, |
||
908 | dx(2), frame_108_fall_land_2, |
||
909 | frame_109_crouch, |
||
910 | dx(1), frame_110_stand_up_from_crouch_1, |
||
911 | frame_111_stand_up_from_crouch_2, |
||
912 | dx(2), frame_112_stand_up_from_crouch_3, |
||
913 | frame_113_stand_up_from_crouch_4, |
||
914 | dx(1), dy(1), frame_114_stand_up_from_crouch_5, |
||
915 | dy(1), frame_115_stand_up_from_crouch_6, |
||
916 | dx(-2), jmp(runstt4), // goto "runstt4" |
||
917 | |||
918 | LABEL(medland) // medium land (1.5 - 2 stories) |
||
919 | act(actions_5_bumped), SEQ_KNOCK_DOWN, dy(-2), dx(1), dx(2), frame_108_fall_land_2, |
||
920 | frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, |
||
921 | frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, |
||
922 | frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, |
||
923 | frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, |
||
924 | frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, |
||
925 | frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, |
||
926 | frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, |
||
927 | frame_109_crouch, |
||
928 | dx(1), frame_110_stand_up_from_crouch_1, |
||
929 | frame_110_stand_up_from_crouch_1, frame_110_stand_up_from_crouch_1, frame_111_stand_up_from_crouch_2, |
||
930 | dx(2), frame_112_stand_up_from_crouch_3, |
||
931 | frame_113_stand_up_from_crouch_4, |
||
932 | dx(1), dy(1), frame_114_stand_up_from_crouch_5, |
||
933 | dy(1), frame_115_stand_up_from_crouch_6, |
||
934 | frame_116_stand_up_from_crouch_7, |
||
935 | dx(-4), frame_117_stand_up_from_crouch_8, |
||
936 | frame_118_stand_up_from_crouch_9, frame_119_stand_up_from_crouch_10, |
||
937 | jmp(stand), // goto "stand" |
||
938 | |||
939 | LABEL(hardland) // hard land (splat!; >2 stories) |
||
940 | act(actions_5_bumped), SEQ_KNOCK_DOWN, dy(-2), dx(3), frame_185_dead, |
||
941 | SEQ_DIE, /* ":dead" */ LABEL(hardland_dead) frame_185_dead, |
||
942 | jmp(hardland_dead), // goto ":dead" |
||
943 | |||
944 | LABEL(stabkill) // stabkill |
||
945 | act(actions_5_bumped), jmp(dropdead), // goto "dropdead" |
||
946 | |||
947 | LABEL(dropdead) // dropdead |
||
948 | act(actions_1_run_jump), SEQ_DIE, frame_179_collapse_1, |
||
949 | frame_180_collapse_2, frame_181_collapse_3, frame_182_collapse_4, |
||
950 | dx(1), frame_183_collapse_5, |
||
951 | dx(-4), /* ":dead" */ LABEL(dropdead_dead) frame_185_dead, |
||
952 | jmp(dropdead_dead), // goto ":dead" |
||
953 | |||
954 | LABEL(impale) // impale |
||
955 | act(actions_1_run_jump), SEQ_KNOCK_DOWN, dx(4), frame_177_spiked, |
||
956 | SEQ_DIE, /* ":dead" */ LABEL(impale_dead) frame_177_spiked, |
||
957 | jmp(impale_dead), // goto ":dead" |
||
958 | |||
959 | LABEL(halve) // halve |
||
960 | act(actions_1_run_jump), frame_178_chomped, |
||
961 | SEQ_DIE, /* ":dead" */ LABEL(halve_dead) frame_178_chomped, |
||
962 | jmp(halve_dead), // goto ":dead" |
||
963 | |||
964 | LABEL(crush) // crush |
||
965 | jmp(medland), // goto "medland" |
||
966 | |||
967 | LABEL(deadfall) // deadfall |
||
968 | set_fall(0, 0), act(actions_4_in_freefall), /* ":loop"*/ LABEL(deadfall_loop) frame_185_dead, |
||
969 | jmp(deadfall_loop), // goto ":loop" |
||
970 | |||
971 | LABEL(climbstairs) // climb stairs |
||
972 | act(actions_5_bumped), |
||
973 | dx(-5), dy(-1), snd(SND_FOOTSTEP), frame_217_exit_stairs_1, |
||
974 | frame_218_exit_stairs_2, frame_219_exit_stairs_3, |
||
975 | dx(1), frame_220_exit_stairs_4, |
||
976 | dx(-4), dy(-3), snd(SND_FOOTSTEP), frame_221_exit_stairs_5, |
||
977 | dx(-4), dy(-2), frame_222_exit_stairs_6, |
||
978 | dx(-2), dy(-3), frame_223_exit_stairs_7, |
||
979 | dx(-3), dy(-8), snd(SND_LEVEL), snd(SND_FOOTSTEP), frame_224_exit_stairs_8, |
||
980 | dx(-1), dy(-1), frame_225_exit_stairs_9, |
||
981 | dx(-3), dy(-4), frame_226_exit_stairs_10, |
||
982 | dx(-1), dy(-5), snd(SND_FOOTSTEP), frame_227_exit_stairs_11, |
||
983 | dx(-2), dy(-1), frame_228_exit_stairs_12, |
||
984 | frame_0, |
||
985 | snd(SND_FOOTSTEP), frame_0, frame_0, frame_0, // these footsteps are only heard when the music is off |
||
986 | snd(SND_FOOTSTEP), frame_0, frame_0, frame_0, |
||
987 | snd(SND_FOOTSTEP), frame_0, frame_0, frame_0, |
||
988 | snd(SND_FOOTSTEP), SEQ_END_LEVEL, /* ":loop" */ LABEL(climbstairs_loop) frame_0, |
||
989 | jmp(climbstairs_loop), // goto ":loop" |
||
990 | |||
991 | LABEL(Vstand) // Vizier: stand |
||
992 | alt2frame_54_Vstand, |
||
993 | jmp(Vstand), // goto "Vstand" |
||
994 | |||
995 | LABEL(Vraise) // Vizier: raise arms |
||
996 | 85, 67, 67, 67, // numbers refer to frames in the "alternate" frame sets |
||
997 | 67, 67, 67, 67, |
||
998 | 67, 67, 67, 68, |
||
999 | 69, 70, 71, 72, |
||
1000 | 73, 74, 75, 83, |
||
1001 | 84, /* ":loop" */ LABEL(Vraise_loop) 76, |
||
1002 | jmp(Vraise_loop), // goto ":loop" |
||
1003 | |||
1004 | LABEL(Vwalk) // Vizier: walk |
||
1005 | dx(1), /* "Vwalk1" */ LABEL(Vwalk1) 48, |
||
1006 | dx(2), /* "Vwalk2" */ LABEL(Vwalk2) 49, |
||
1007 | dx(6), 50, |
||
1008 | dx(1), 51, |
||
1009 | dx(-1), 52, |
||
1010 | dx(1), 53, |
||
1011 | dx(1), jmp(Vwalk1), // goto "Vwalk1" |
||
1012 | |||
1013 | LABEL(Vstop) // Vizier: stop |
||
1014 | dx(1), 55, |
||
1015 | 56, |
||
1016 | jmp(Vstand), |
||
1017 | |||
1018 | LABEL(Vexit) // Vizier: lower arms, turn & exit ("Vexit") |
||
1019 | 77, 78, 79, 80, |
||
1020 | 81, 82, |
||
1021 | dx(1), 54, |
||
1022 | 54, 54, 54, 54, |
||
1023 | 54, 57, 58, 59, |
||
1024 | 60, 61, |
||
1025 | dx(2), 62, |
||
1026 | dx(-1), 63, |
||
1027 | dx(-3), 64, |
||
1028 | 65, |
||
1029 | dx(-1), 66, |
||
1030 | SEQ_FLIP, dx(16), dx(3), jmp(Vwalk2), // goto "Vwalk2" |
||
1031 | |||
1032 | // Princess: stand |
||
1033 | LABEL(Pstand) 11, |
||
1034 | jmp(Pstand), // goto "Pstand" |
||
1035 | |||
1036 | LABEL(Palert) // Princess: alert |
||
1037 | 2, 3, 4, 5, |
||
1038 | 6, 7, 8, 9, |
||
1039 | SEQ_FLIP, dx(8), 11, |
||
1040 | jmp(Pstand), |
||
1041 | |||
1042 | LABEL(Pstepback) // Princess: step back |
||
1043 | SEQ_FLIP, dx(11), 12, |
||
1044 | dx(1), 13, |
||
1045 | dx(1), 14, |
||
1046 | dx(3), 15, |
||
1047 | dx(1), 16, |
||
1048 | /* ":loop" */ LABEL(Pstepback_loop) 17, |
||
1049 | jmp(Pstepback_loop), // goto ":loop" |
||
1050 | |||
1051 | LABEL(Plie) // Princess lying on cushions ("Plie") |
||
1052 | 19, |
||
1053 | jmp(Plie), // goto "Plie" |
||
1054 | |||
1055 | LABEL(Pwaiting) // Princess: waiting |
||
1056 | /* ":loop" */ 20, |
||
1057 | jmp(Pwaiting), // goto ":loop" |
||
1058 | |||
1059 | LABEL(Pembrace)// Princess: embrace |
||
1060 | 21, |
||
1061 | dx(1), 22, |
||
1062 | 23, 24, |
||
1063 | dx(1), 25, |
||
1064 | dx(-3), 26, |
||
1065 | dx(-2), 27, |
||
1066 | dx(-4), 28, |
||
1067 | dx(-3), 29, |
||
1068 | dx(-2), 30, |
||
1069 | dx(-3), 31, |
||
1070 | dx(-1), 32, |
||
1071 | /* ":loop" */ LABEL(Pembrace_loop) 33, |
||
1072 | jmp(Pembrace_loop), // goto ":loop" |
||
1073 | |||
1074 | LABEL(Pstroke) // Princess: stroke mouse |
||
1075 | /* ":loop" */ 37, |
||
1076 | jmp(Pstroke), // goto ":loop" |
||
1077 | |||
1078 | LABEL(Prise) // Princess: rise |
||
1079 | 37, 38, 39, 40, |
||
1080 | 41, 42, 43, 44, |
||
1081 | 45, 46, 47, |
||
1082 | SEQ_FLIP, dx(12), /* ":loop" */ LABEL(Prise_loop) 11, |
||
1083 | jmp(Prise_loop), // goto ":loop" |
||
1084 | |||
1085 | LABEL(Pcrouch) // Princess: crouch & stroke mouse |
||
1086 | 11, 11, |
||
1087 | SEQ_FLIP, dx(13), 47, |
||
1088 | 46, 45, 44, 43, |
||
1089 | 42, 41, 40, 39, |
||
1090 | 38, 37, |
||
1091 | 36, 36, 36, |
||
1092 | 35, 35, 35, |
||
1093 | 34, 34, 34, 34, 34, 34, 34, |
||
1094 | 35, 35, |
||
1095 | 36, 36, 36, |
||
1096 | 35, 35, 35, |
||
1097 | 34, 34, 34, 34, 34, 34, 34, |
||
1098 | 35, 35, |
||
1099 | 36, 36, 36, |
||
1100 | 35, 35, 35, |
||
1101 | 34, 34, 34, 34, 34, 34, 34, 34, 34, |
||
1102 | 35, 35, 35, |
||
1103 | /* ":loop" */ LABEL(Pcrouch_loop) 36, |
||
1104 | jmp(Pcrouch_loop), // goto ":loop" |
||
1105 | |||
1106 | LABEL(Pslump) // Princess: slump shoulders |
||
1107 | 1, /* ":loop" */ LABEL(Pslump_loop) 18, |
||
1108 | jmp(Pslump_loop), // goto ":loop" |
||
1109 | |||
1110 | LABEL(Mscurry) // Mouse: scurry |
||
1111 | act(actions_1_run_jump), /* "Mscurry1" */ LABEL(Mscurry1) frame_186_mouse_1, |
||
1112 | dx(5), frame_186_mouse_1, |
||
1113 | dx(3), frame_187_mouse_2, |
||
1114 | dx(4), jmp(Mscurry1), // goto "Mscurry1" |
||
1115 | |||
1116 | LABEL(Mstop) // Mouse: stop |
||
1117 | /* ":loop" */ frame_186_mouse_1, |
||
1118 | jmp(Mstop), // goto ":loop" |
||
1119 | |||
1120 | LABEL(Mraise) // Mouse: raise head |
||
1121 | /* ":loop" */ frame_188_mouse_stand, |
||
1122 | jmp(Mraise), // goto ":loop" |
||
1123 | |||
1124 | LABEL(Mleave) // Mouse: leave |
||
1125 | act(actions_0_stand), frame_186_mouse_1, |
||
1126 | frame_186_mouse_1, frame_186_mouse_1, frame_188_mouse_stand, frame_188_mouse_stand, |
||
1127 | frame_188_mouse_stand, frame_188_mouse_stand, frame_188_mouse_stand, frame_188_mouse_stand, |
||
1128 | frame_188_mouse_stand, frame_188_mouse_stand, |
||
1129 | SEQ_FLIP, dx(8), jmp(Mscurry1), // goto "Mscurry1" |
||
1130 | |||
1131 | LABEL(Mclimb) // Mouse: climb |
||
1132 | frame_186_mouse_1, frame_186_mouse_1, /* ":loop" */ LABEL(Mclimb_loop) frame_188_mouse_stand, |
||
1133 | jmp(Mclimb_loop) // goto ":loop" |
||
1134 | |||
1135 | }; |
||
1136 | |||
1137 | void apply_seqtbl_patches() { |
||
1138 | #ifdef FIX_WALL_BUMP_TRIGGERS_TILE_BELOW |
||
1139 | if (fix_wall_bump_triggers_tile_below) |
||
1140 | SEQTBL_0[bumpfall + 1] = actions_3_in_midair; // instead of actions_5_bumped |
||
1141 | #endif |
||
1142 | } |
||
1143 | |||
1144 | #ifdef CHECK_SEQTABLE_MATCHES_ORIGINAL |
||
1145 | |||
1146 | // unmodified original sequence table"Checking that the sequence table matches the original DOS version...\n"); |
||
1147 | int different = 0; |
||
1148 | |||
1149 | const byte* seq = seqtbl; |
||
1150 | const byte* original_seq = original_seqtbl; |
||
1151 | for(i = 0; i < COUNT(original_seqtbl); ++i) { |
||
1152 | if (seq[i] != original_seq[i]) { |
||
1153 | different = 1; |
||
1154 | printf("Seqtbl difference at index %d (%#x; shifted offset %#x): value is %d, should be %d\n" |
||
1155 | , i, i, i + SEQTBL_BASE, seqtbl[i], original_seqtbl[i]); |
||
1156 | } |
||
1157 | } |
||
1158 | for(i = 0; i < COUNT(original_seqtbl_offsets); ++i) { |
||
1159 | if (seqtbl_offsets[i] != original_seqtbl_offsets[i]) { |
||
1160 | different = 1; |
||
1161 | printf("Seqtbl offset difference at index %d: value is %#x, should be %#x\n" |
||
1162 | , i, seqtbl_offsets[i], original_seqtbl_offsets[i]); |
||
1163 | } |
||
1164 | } |
||
1165 | if (!different) printf("All good, no differences found!\n"); |
||
1166 | |||
1167 | |||
1168 | #endif // CHECK_SEQTABLE_MATCHES_ORIGINAL |
||
1169 | |||
1170 |