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 |