- /* 
- SDLPoP, a port/conversion of the DOS game Prince of Persia. 
- Copyright (C) 2013-2018  Dávid Nagy 
-   
- This program is free software: you can redistribute it and/or modify 
- it under the terms of the GNU General Public License as published by 
- the Free Software Foundation, either version 3 of the License, or 
- (at your option) any later version. 
-   
- This program is distributed in the hope that it will be useful, 
- but WITHOUT ANY WARRANTY; without even the implied warranty of 
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
- GNU General Public License for more details. 
-   
- You should have received a copy of the GNU General Public License 
- along with this program.  If not, see <http://www.gnu.org/licenses/>. 
-   
- The authors of this program may be contacted at http://forum.princed.org 
- */ 
-   
- #include "common.h" 
-   
- #define SEQTBL_BASE 0x196E 
- #define SEQTBL_0 (seqtbl - SEQTBL_BASE) 
-   
- // This expands a two-byte number into two comma-separated bytes, used for the JMP destinations 
- #define DW(data_word) (data_word) & 0x00FF, (((data_word) & 0xFF00) >> 8) 
-   
- // Shorter notation for the sequence table instructions 
- #define act(action) SEQ_ACTION, action 
- #define jmp(dest) SEQ_JMP, DW(dest) 
- #define jmp_if_feather(dest) SEQ_JMP_IF_FEATHER, DW(dest) 
- #define dx(amount) SEQ_DX, (byte) amount 
- #define dy(amount) SEQ_DY, (byte) amount 
- #define snd(sound) SEQ_SOUND, sound 
- #define set_fall(x, y) SEQ_SET_FALL, (byte) x, (byte) y 
-   
- // This splits the byte array into labeled "sections" that are packed tightly next to each other 
- // However, it only seems to work correctly in the Debug configuration... 
- //#define LABEL(label) }; const byte label##_eventual_ptr[] __attribute__ ((aligned(1))) = { 
- #define LABEL(label) // disable 
- //#define OFFSET(label) label - seqtbl + SEQTBL_BASE 
-   
- // Labels 
- #define running             SEQTBL_BASE                                   // 0x196E 
- #define startrun            5  + running            //SEQTBL_BASE + 5     // 0x1973 
- #define runstt1             2  + startrun           //SEQTBL_BASE + 7     // 0x1975 
- #define runstt4             3  + runstt1            //SEQTBL_BASE + 10    // 0x1978 
- #define runcyc1             9  + runstt4            //SEQTBL_BASE + 19    // 0x1981 
- #define runcyc7             20 + runcyc1            //SEQTBL_BASE + 39    // 0x1995 
- #define stand               11 + runcyc7            //SEQTBL_BASE + 50    // 0x19A0 
- #define goalertstand        6  + stand              //SEQTBL_BASE + 56    // 0x19A6 
- #define alertstand          2  + goalertstand       //SEQTBL_BASE + 58    // 0x19A8 
- #define arise               4  + alertstand         //SEQTBL_BASE + 62    // 0x19AC 
- #define guardengarde        21 + arise              //SEQTBL_BASE + 83    // 0x19C1 
- #define engarde             3  + guardengarde       //SEQTBL_BASE + 86    // 0x19C4 
- #define ready               14 + engarde            //SEQTBL_BASE + 100   // 0x19D2 
- #define ready_loop          6  + ready              //SEQTBL_BASE + 106   // 0x19D8 
- #define stabbed             4  + ready_loop         //SEQTBL_BASE + 110   // 0x19DC 
- #define strikeadv           29 + stabbed            //SEQTBL_BASE + 139   // 0x19F9 
- #define strikeret           14 + strikeadv          //SEQTBL_BASE + 153   // 0x1A07 
- #define advance             12 + strikeret          //SEQTBL_BASE + 165   // 0x1A13 
- #define fastadvance         15 + advance            //SEQTBL_BASE + 180   // 0x1A22 
- #define retreat             12 + fastadvance        //SEQTBL_BASE + 192   // 0x1A2E 
- #define strike              14 + retreat            //SEQTBL_BASE + 206   // 0x1A3C 
- #define faststrike          6  + strike             //SEQTBL_BASE + 212   // 0x1A42 
- #define guy4                3  + faststrike         //SEQTBL_BASE + 215   // 0x1A45 
- #define guy7                5  + guy4               //SEQTBL_BASE + 220   // 0x1A4A 
- #define guy8                3  + guy7               //SEQTBL_BASE + 223   // 0x1A4D 
- #define blockedstrike       7  + guy8               //SEQTBL_BASE + 230   // 0x1A54 
- #define blocktostrike       6  + blockedstrike      //SEQTBL_BASE + 236   // 0x1A5A 
- #define readyblock          4  + blocktostrike      //SEQTBL_BASE + 240   // 0x1A5E 
- #define blocking            1  + readyblock         //SEQTBL_BASE + 241   // 0x1A5F 
- #define striketoblock       4  + blocking           //SEQTBL_BASE + 245   // 0x1A63 
- #define landengarde         5  + striketoblock      //SEQTBL_BASE + 250   // 0x1A68 
- #define bumpengfwd          6  + landengarde        //SEQTBL_BASE + 256   // 0x1A6E 
- #define bumpengback         7  + bumpengfwd         //SEQTBL_BASE + 263   // 0x1A75 
- #define flee                7  + bumpengback        //SEQTBL_BASE + 270   // 0x1A7C 
- #define turnengarde         7  + flee               //SEQTBL_BASE + 277   // 0x1A83 
- #define alertturn           8  + turnengarde        //SEQTBL_BASE + 285   // 0x1A8B 
- #define standjump           8  + alertturn          //SEQTBL_BASE + 293   // 0x1A93 
- #define sjland              29 + standjump          //SEQTBL_BASE + 322   // 0x1AB0 
- #define runjump             29 + sjland             //SEQTBL_BASE + 351   // 0x1ACD 
- #define rjlandrun           46 + runjump            //SEQTBL_BASE + 397   // 0x1AFB 
- #define rdiveroll           9  + rjlandrun          //SEQTBL_BASE + 406   // 0x1B04 
- #define rdiveroll_crouch    18 + rdiveroll          //SEQTBL_BASE + 424   // 0x1B16 
- #define sdiveroll           4  + rdiveroll_crouch   //SEQTBL_BASE + 428   // 0x1B1A 
- #define crawl               1  + sdiveroll          //SEQTBL_BASE + 429   // 0x1B1B 
- #define crawl_crouch        14 + crawl              //SEQTBL_BASE + 443   // 0x1B29 
- #define turndraw            4  + crawl_crouch       //SEQTBL_BASE + 447   // 0x1B2D 
- #define turn                12 + turndraw           //SEQTBL_BASE + 459   // 0x1B39 
- #define turnrun             26 + turn               //SEQTBL_BASE + 485   // 0x1B53 
- #define runturn             7  + turnrun            //SEQTBL_BASE + 492   // 0x1B5A 
- #define fightfall           43 + runturn            //SEQTBL_BASE + 535   // 0x1B85 
- #define efightfall          28 + fightfall          //SEQTBL_BASE + 563   // 0x1BA1 
- #define efightfallfwd       30 + efightfall         //SEQTBL_BASE + 593   // 0x1BBF 
- #define stepfall            28 + efightfallfwd      //SEQTBL_BASE + 621   // 0x1BDB 
- #define fall1               9  + stepfall           //SEQTBL_BASE + 630   // 0x1BE4 
- #define patchfall           22 + fall1              //SEQTBL_BASE + 652   // 0x1BFA 
- #define stepfall2           7  + patchfall          //SEQTBL_BASE + 659   // 0x1C01 
- #define stepfloat           5  + stepfall2          //SEQTBL_BASE + 664   // 0x1C06 
- #define jumpfall            22 + stepfloat          //SEQTBL_BASE + 686   // 0x1C1C 
- #define rjumpfall           28 + jumpfall           //SEQTBL_BASE + 714   // 0x1C38 
- #define jumphangMed         28 + rjumpfall          //SEQTBL_BASE + 742   // 0x1C54 
- #define jumphangLong        21 + jumphangMed        //SEQTBL_BASE + 763   // 0x1C69 
- #define jumpbackhang        27 + jumphangLong       //SEQTBL_BASE + 790   // 0x1C84 
- #define hang                29 + jumpbackhang       //SEQTBL_BASE + 819   // 0x1CA1 
- #define hang1               3  + hang               //SEQTBL_BASE + 822   // 0x1CA4 
- #define hangstraight        45 + hang1              //SEQTBL_BASE + 867   // 0x1CD1 
- #define hangstraight_loop   7  + hangstraight       //SEQTBL_BASE + 874   // 0x1CD8 
- #define climbfail           4  + hangstraight_loop  //SEQTBL_BASE + 878   // 0x1CDC 
- #define climbdown           16 + climbfail          //SEQTBL_BASE + 894   // 0x1CEC 
- #define climbup             24 + climbdown          //SEQTBL_BASE + 918   // 0x1D04 
- #define hangdrop            33 + climbup            //SEQTBL_BASE + 951   // 0x1D25 
- #define hangfall            17 + hangdrop           //SEQTBL_BASE + 968   // 0x1D36 
- #define freefall            19 + hangfall           //SEQTBL_BASE + 987   // 0x1D49 
- #define freefall_loop       2  + freefall           //SEQTBL_BASE + 989   // 0x1D4B 
- #define runstop             4  + freefall_loop      //SEQTBL_BASE + 993   // 0x1D4F 
- #define jumpup              25 + runstop            //SEQTBL_BASE + 1018  // 0x1D68 
- #define highjump            21 + jumpup             //SEQTBL_BASE + 1039  // 0x1D7D 
- #define superhijump         30 + highjump           //SEQTBL_BASE + 1069  // 0x1D9B 
- #define fallhang            91 + superhijump        //SEQTBL_BASE + 1160  // 0x1DF6 
- #define bump                6  + fallhang           //SEQTBL_BASE + 1166  // 0x1DFC 
- #define bumpfall            10 + bump               //SEQTBL_BASE + 1176  // 0x1E06 
- #define bumpfloat           31 + bumpfall           //SEQTBL_BASE + 1207  // 0x1E25 
- #define hardbump            22 + bumpfloat          //SEQTBL_BASE + 1229  // 0x1E3B 
- #define testfoot            30 + hardbump           //SEQTBL_BASE + 1259  // 0x1E59 
- #define stepback            31 + testfoot           //SEQTBL_BASE + 1290  // 0x1E78 
- #define step14              5  + stepback           //SEQTBL_BASE + 1295  // 0x1E7D 
- #define step13              31 + step14             //SEQTBL_BASE + 1326  // 0x1E9C 
- #define step12              31 + step13             //SEQTBL_BASE + 1357  // 0x1EBB 
- #define step11              31 + step12             //SEQTBL_BASE + 1388  // 0x1EDA 
- #define step10              29 + step11             //SEQTBL_BASE + 1417  // 0x1EF7 
- #define step10a             5  + step10             //SEQTBL_BASE + 1422  // 0x1EFC 
- #define step9               23 + step10a            //SEQTBL_BASE + 1445  // 0x1F13 
- #define step8               6  + step9              //SEQTBL_BASE + 1451  // 0x1F19 
- #define step7               26 + step8              //SEQTBL_BASE + 1477  // 0x1F33 
- #define step6               21 + step7              //SEQTBL_BASE + 1498  // 0x1F48 
- #define step5               21 + step6              //SEQTBL_BASE + 1519  // 0x1F5D 
- #define step4               21 + step5              //SEQTBL_BASE + 1540  // 0x1F72 
- #define step3               16 + step4              //SEQTBL_BASE + 1556  // 0x1F82 
- #define step2               16 + step3              //SEQTBL_BASE + 1572  // 0x1F92 
- #define step1               12 + step2              //SEQTBL_BASE + 1584  // 0x1F9E 
- #define stoop               9  + step1              //SEQTBL_BASE + 1593  // 0x1FA7 
- #define stoop_crouch        8  + stoop              //SEQTBL_BASE + 1601  // 0x1FAF 
- #define standup             4  + stoop_crouch       //SEQTBL_BASE + 1605  // 0x1FB3 
- #define pickupsword         23 + standup            //SEQTBL_BASE + 1628  // 0x1FCA 
- #define resheathe           16 + pickupsword        //SEQTBL_BASE + 1644  // 0x1FDA 
- #define fastsheathe         33 + resheathe          //SEQTBL_BASE + 1677  // 0x1FFB 
- #define drinkpotion         14 + fastsheathe        //SEQTBL_BASE + 1691  // 0x2009 
- #define softland            34 + drinkpotion        //SEQTBL_BASE + 1725  // 0x202B 
- #define softland_crouch     11 + softland           //SEQTBL_BASE + 1736  // 0x2036 
- #define landrun             4  + softland_crouch    //SEQTBL_BASE + 1740  // 0x203A 
- #define medland             32 + landrun            //SEQTBL_BASE + 1772  // 0x205A 
- #define hardland            66 + medland            //SEQTBL_BASE + 1838  // 0x209C 
- #define hardland_dead       9  + hardland           //SEQTBL_BASE + 1847  // 0x20A5 
- #define stabkill            4  + hardland_dead      //SEQTBL_BASE + 1851  // 0x20A9 
- #define dropdead            5  + stabkill           //SEQTBL_BASE + 1856  // 0x20AE 
- #define dropdead_dead       12 + dropdead           //SEQTBL_BASE + 1868  // 0x20BA 
- #define impale              4  + dropdead_dead      //SEQTBL_BASE + 1872  // 0x20BE 
- #define impale_dead         7  + impale             //SEQTBL_BASE + 1879  // 0x20C5 
- #define halve               4  + impale_dead        //SEQTBL_BASE + 1883  // 0x20C9 
- #define halve_dead          4  + halve              //SEQTBL_BASE + 1887  // 0x20CD 
- #define crush               4  + halve_dead         //SEQTBL_BASE + 1891  // 0x20D1 
- #define deadfall            3  + crush              //SEQTBL_BASE + 1894  // 0x20D4 
- #define deadfall_loop       5  + deadfall           //SEQTBL_BASE + 1899  // 0x20D9 
- #define climbstairs         4  + deadfall_loop      //SEQTBL_BASE + 1903  // 0x20DD 
- #define climbstairs_loop    81 + climbstairs        //SEQTBL_BASE + 1984  // 0x212E 
- #define Vstand              4  + climbstairs_loop   //SEQTBL_BASE + 1988  // 0x2132 
- #define Vraise              4  + Vstand             //SEQTBL_BASE + 1992  // 0x2136 
- #define Vraise_loop         21 + Vraise             //SEQTBL_BASE + 2013  // 0x214B 
- #define Vwalk               4  + Vraise_loop        //SEQTBL_BASE + 2017  // 0x214F 
- #define Vwalk1              2  + Vwalk              //SEQTBL_BASE + 2019  // 0x2151 
- #define Vwalk2              3  + Vwalk1             //SEQTBL_BASE + 2022  // 0x2154 
- #define Vstop               18 + Vwalk2             //SEQTBL_BASE + 2040  // 0x2166 
- #define Vexit               7  + Vstop              //SEQTBL_BASE + 2047  // 0x216D 
- #define Pstand              40 + Vexit              //SEQTBL_BASE + 2087  // 0x2195 
- #define Palert              4  + Pstand             //SEQTBL_BASE + 2091  // 0x2199 
- #define Pstepback           15 + Palert             //SEQTBL_BASE + 2106  // 0x21A8 
- #define Pstepback_loop      16 + Pstepback          //SEQTBL_BASE + 2122  // 0x21B8 
- #define Plie                4  + Pstepback_loop     //SEQTBL_BASE + 2126  // 0x21BC 
- #define Pwaiting            4  + Plie               //SEQTBL_BASE + 2130  // 0x21C0 
- #define Pembrace            4  + Pwaiting           //SEQTBL_BASE + 2134  // 0x21C4 
- #define Pembrace_loop       30 + Pembrace           //SEQTBL_BASE + 2164  // 0x21E2 
- #define Pstroke             4  + Pembrace_loop      //SEQTBL_BASE + 2168  // 0x21E6 
- #define Prise               4  + Pstroke            //SEQTBL_BASE + 2172  // 0x21EA 
- #define Prise_loop          14 + Prise              //SEQTBL_BASE + 2186  // 0x21F8 
- #define Pcrouch             4  + Prise_loop         //SEQTBL_BASE + 2190  // 0x21FC 
- #define Pcrouch_loop        64 + Pcrouch            //SEQTBL_BASE + 2254  // 0x223C 
- #define Pslump              4  + Pcrouch_loop       //SEQTBL_BASE + 2258  // 0x2240 
- #define Pslump_loop         1  + Pslump             //SEQTBL_BASE + 2259  // 0x2241 
- #define Mscurry             4  + Pslump_loop        //SEQTBL_BASE + 2263  // 0x2245 
- #define Mscurry1            2  + Mscurry            //SEQTBL_BASE + 2265  // 0x2247 
- #define Mstop               12 + Mscurry1           //SEQTBL_BASE + 2277  // 0x2253 
- #define Mraise              4  + Mstop              //SEQTBL_BASE + 2281  // 0x2257 
- #define Mleave              4  + Mraise             //SEQTBL_BASE + 2285  // 0x225B 
- #define Mclimb              19 + Mleave             //SEQTBL_BASE + 2304  // 0x226E 
- #define Mclimb_loop         2  + Mclimb             //SEQTBL_BASE + 2306  // 0x2270 
-   
- const word seqtbl_offsets[] = { 
-         0x0000,         startrun,       stand,          standjump, 
-         runjump,        turn,           runturn,        stepfall, 
-         jumphangMed,    hang,           climbup,        hangdrop, 
-         freefall,       runstop,        jumpup,         fallhang, 
-         jumpbackhang,   softland,       jumpfall,       stepfall2, 
-         medland,        rjumpfall,      hardland,       hangfall, 
-         jumphangLong,   hangstraight,   rdiveroll,      sdiveroll, 
-         highjump,       step1,          step2,          step3, 
-         step4,          step5,          step6,          step7, 
-         step8,          step9,          step10,         step11, 
-         step12,         step13,         step14,         turnrun, 
-         testfoot,       bumpfall,       hardbump,       bump, 
-         superhijump,    standup,        stoop,          impale, 
-         crush,          deadfall,       halve,          engarde, 
-         advance,        retreat,        strike,         flee, 
-         turnengarde,    striketoblock,  readyblock,     landengarde, 
-         bumpengfwd,     bumpengback,    blocktostrike,  strikeadv, 
-         climbdown,      blockedstrike,  climbstairs,    dropdead, 
-         stepback,       climbfail,      stabbed,        faststrike, 
-         strikeret,      alertstand,     drinkpotion,    crawl, 
-         alertturn,      fightfall,      efightfall,     efightfallfwd, 
-         running,        stabkill,       fastadvance,    goalertstand, 
-         arise,          turndraw,       guardengarde,   pickupsword, 
-         resheathe,      fastsheathe,    Pstand,         Vstand, 
-         Vwalk,          Vstop,          Palert,         Pstepback, 
-         Vexit,          Mclimb,         Vraise,         Plie, 
-         patchfall,      Mscurry,        Mstop,          Mleave, 
-         Pembrace,       Pwaiting,       Pstroke,        Prise, 
-         Pcrouch,        Pslump,         Mraise 
- }; 
-   
- // data:196E 
- byte seqtbl[] = { 
-   
-         LABEL(running) // running 
-         act(actions_1_run_jump), jmp(runcyc1), // goto running: frame 7 
-   
-         LABEL(startrun) // startrun 
-         act(actions_1_run_jump), LABEL(runstt1) frame_1_start_run, 
-         frame_2_start_run, frame_3_start_run, LABEL(runstt4) frame_4_start_run, 
-         dx(8), frame_5_start_run, 
-         dx(3), frame_6_start_run, 
-         dx(3), LABEL(runcyc1) frame_7_run, 
-         dx(5), frame_8_run, 
-         dx(1), snd(SND_FOOTSTEP), frame_9_run, 
-         dx(2), frame_10_run, 
-         dx(4), frame_11_run, 
-         dx(5), frame_12_run, 
-         dx(2), LABEL(runcyc7) snd(SND_FOOTSTEP), frame_13_run, 
-         dx(3), frame_14_run, 
-         dx(4), jmp(runcyc1), 
-   
-         LABEL(stand) // stand 
-         act(actions_0_stand), frame_15_stand, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(goalertstand) // alert stand 
-         act(actions_1_run_jump), LABEL(alertstand) frame_166_stand_inactive, 
-         jmp(alertstand), // goto "alertstand" 
-   
-         LABEL(arise) // arise (skeleton) 
-         act(actions_5_bumped), dx(10), frame_177_spiked, 
-         frame_177_spiked, 
-         dx(-7), dy(-2), frame_178_chomped, 
-         dx(5), dy(2), frame_166_stand_inactive, 
-         dx(-1), jmp(ready), // goto "ready" 
-   
-         // guard engarde 
-         LABEL(guardengarde) 
-         jmp(ready), // goto "ready" 
-   
-         // engarde 
-         LABEL(engarde) 
-         act(actions_1_run_jump), 
-         dx(2), frame_207_draw_1, 
-         frame_208_draw_2, 
-         dx(2), frame_209_draw_3, 
-         dx(2), frame_210_draw_4, 
-         dx(3), LABEL(ready) act(actions_1_run_jump), snd(SND_SILENT), frame_158_stand_with_sword, 
-         frame_170_stand_with_sword, 
-         LABEL(ready_loop) frame_171_stand_with_sword, 
-         jmp(ready_loop), // goto ":loop" 
-   
-         LABEL(stabbed)// stabbed 
-         act(actions_5_bumped), set_fall(-1, 0), frame_172_jumpfall_2, 
-         dx(-1), dy(1), frame_173_jumpfall_3, 
-         dx(-1), frame_174_jumpfall_4, 
-         dx(-1), dy(2), // frame 175 is commented out in the Apple II source 
-         dx(-2), dy(1), 
-         dx(-5), dy(-4), 
-         jmp(guy8), // goto "guy8" 
-   
-         // strike - advance 
-         LABEL(strikeadv) 
-         act(actions_1_run_jump), set_fall(1, 0), frame_155_guy_7, 
-         dx(2), frame_165_walk_with_sword, 
-         dx(-2), jmp(ready), // goto "ready" 
-   
-         LABEL(strikeret)// strike - retreat 
-         act(actions_1_run_jump), set_fall(-1, 0), frame_155_guy_7, 
-         frame_156_guy_8, 
-         frame_157_walk_with_sword, 
-         frame_158_stand_with_sword, 
-         jmp(retreat), // goto "retreat" 
-   
-         LABEL(advance) // advance 
-         act(actions_1_run_jump), set_fall(1, 0), 
-         dx(2), frame_163_fighting, 
-         dx(4), frame_164_fighting, 
-         frame_165_walk_with_sword, 
-         jmp(ready), // goto "ready" 
-   
-         LABEL(fastadvance) // fast advance 
-         act(actions_1_run_jump), set_fall(1, 0), dx(6), frame_164_fighting, 
-         frame_165_walk_with_sword, 
-         jmp(ready), // goto "ready" 
-   
-         LABEL(retreat) // retreat 
-         act(actions_1_run_jump), set_fall(-1, 0), dx(-3), frame_160_fighting, 
-         dx(-2), frame_157_walk_with_sword, 
-         jmp(ready), // goto "ready" 
-   
-         LABEL(strike) // strike 
-         act(actions_1_run_jump), set_fall(-1, 0), frame_168_back, 
-         LABEL(faststrike) act(actions_1_run_jump), frame_151_strike_1, 
-         LABEL(guy4) act(actions_1_run_jump), frame_152_strike_2, 
-         frame_153_strike_3, 
-         frame_154_poking, 
-         LABEL(guy7) act(actions_5_bumped), frame_155_guy_7, 
-         LABEL(guy8) act(actions_1_run_jump), frame_156_guy_8, 
-         frame_157_walk_with_sword, 
-         jmp(ready), // goto "ready" 
-   
-         LABEL(blockedstrike)// blocked strike 
-         act(actions_1_run_jump), frame_167_blocked, 
-         jmp(guy7), // goto "guy7" 
-   
-         // block to strike 
-         LABEL(blocktostrike)// "blocktostrike" 
-         frame_162_block_to_strike, 
-         jmp(guy4), // goto "guy4" 
-   
-         LABEL(readyblock) // ready block 
-         frame_169_begin_block, 
-         LABEL(blocking) frame_150_parry, 
-         jmp(ready), // goto "ready" 
-   
-         LABEL(striketoblock) // strike to block 
-         frame_159_fighting, 
-         frame_160_fighting, 
-         jmp(blocking), // goto "blocking" 
-   
-         LABEL(landengarde) // land en garde 
-         act(actions_1_run_jump), SEQ_KNOCK_DOWN, jmp(ready), // goto "ready" 
-   
-         LABEL(bumpengfwd) // bump en garde (forward) 
-         act(actions_5_bumped), dx(-8), jmp(ready), // goto "ready" 
-   
-         LABEL(bumpengback) // bump en garde (back) 
-         act(actions_5_bumped), frame_160_fighting, 
-         frame_157_walk_with_sword, 
-         jmp(ready), // goto "ready" 
-   
-         LABEL(flee) // flee 
-         act(actions_7_turn), dx(-8), jmp(turn), // goto "turn" 
-   
-         LABEL(turnengarde) // turn en garde 
-         act(actions_5_bumped), SEQ_FLIP, dx(5), jmp(retreat), // goto "retreat" 
-   
-         LABEL(alertturn) // alert turn (for enemies) 
-         act(actions_5_bumped), SEQ_FLIP, dx(18), jmp(goalertstand), // goto "goalertstand" 
-   
-         LABEL(standjump) // standing jump 
-         act(actions_1_run_jump), frame_16_standing_jump_1, 
-         frame_17_standing_jump_2, 
-         dx(2), frame_18_standing_jump_3, 
-         dx(2), frame_19_standing_jump_4, 
-         dx(2), frame_20_standing_jump_5, 
-         dx(2), frame_21_standing_jump_6, 
-         dx(2), frame_22_standing_jump_7, 
-         dx(7), frame_23_standing_jump_8, 
-         dx(9), frame_24_standing_jump_9, 
-         dx(5), dy(-6), /* "sjland" */ LABEL(sjland) frame_25_standing_jump_10, 
-         dx(1), dy(6), frame_26_standing_jump_11, 
-         dx(4), SEQ_KNOCK_DOWN, snd(SND_FOOTSTEP), frame_27_standing_jump_12, 
-         dx(-3), frame_28_standing_jump_13, 
-         dx(5), frame_29_standing_jump_14, 
-         snd(SND_FOOTSTEP), frame_30_standing_jump_15, 
-         frame_31_standing_jump_16, 
-         frame_32_standing_jump_17, 
-         frame_33_standing_jump_18, 
-         dx(1), jmp(stand), // goto "stand" 
-   
-         LABEL(runjump) // running jump 
-         act(actions_1_run_jump), snd(SND_FOOTSTEP), frame_34_start_run_jump_1, 
-         dx(5), frame_35_start_run_jump_2, 
-         dx(6), frame_36_start_run_jump_3, 
-         dx(3), frame_37_start_run_jump_4, 
-         dx(5), snd(SND_FOOTSTEP), frame_38_start_run_jump_5, 
-         dx(7), frame_39_start_run_jump_6, 
-         dx(12), dy(-3), frame_40_running_jump_1, 
-         dx(8), dy(-9), frame_41_running_jump_2, 
-         dx(8), dy(-2), frame_42_running_jump_3, 
-         dx(4), dy(11), frame_43_running_jump_4, 
-         dx(4), dy(3), /* "rjlandrun" */ LABEL(rjlandrun) frame_44_running_jump_5, 
-         dx(5), SEQ_KNOCK_DOWN, snd(SND_FOOTSTEP), jmp(runcyc1), // goto "runcyc1" 
-   
-         LABEL(rdiveroll) // run dive roll 
-         act(actions_1_run_jump), dx(1), frame_107_fall_land_1, 
-         dx(2), dx(2), frame_108_fall_land_2, 
-         dx(2), frame_109_crouch, 
-         dx(2), frame_109_crouch, 
-         dx(2), /* ":crouch" */ LABEL(rdiveroll_crouch) frame_109_crouch, 
-         jmp(rdiveroll_crouch), // goto ":crouch" 
-   
-         LABEL(sdiveroll) 
-         0x00, // stand dive roll; not implemented 
-   
-         LABEL(crawl) // crawl 
-         act(actions_1_run_jump), dx(1), frame_110_stand_up_from_crouch_1, 
-         frame_111_stand_up_from_crouch_2, 
-         dx(2), frame_112_stand_up_from_crouch_3, 
-         dx(2), frame_108_fall_land_2, 
-         dx(2), /* ":crouch" */ LABEL(crawl_crouch) frame_109_crouch, 
-         jmp(crawl_crouch), // goto ":crouch" 
-   
-         LABEL(turndraw) // turn draw 
-         act(actions_7_turn), SEQ_FLIP, dx(6), frame_45_turn, 
-         dx(1), frame_46_turn, 
-         jmp(engarde), // goto "engarde" 
-   
-         LABEL(turn) // turn 
-         act(actions_7_turn), SEQ_FLIP, dx(6), frame_45_turn, 
-         dx(1), frame_46_turn, 
-         dx(2), frame_47_turn, 
-         dx(-1), /* "finishturn" */ frame_48_turn, 
-         dx(1), frame_49_turn, 
-         dx(-2), frame_50_turn, 
-         frame_51_turn, 
-         frame_52_turn, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(turnrun) // turnrun (from frame 48) 
-         act(actions_1_run_jump), dx(-1), jmp(runstt1), // goto "runstt1" 
-   
-         LABEL(runturn) // runturn 
-         act(actions_1_run_jump), dx(1), frame_53_runturn, 
-         dx(1), snd(SND_FOOTSTEP), frame_54_runturn, 
-         dx(8) ,frame_55_runturn, 
-         snd(SND_FOOTSTEP), frame_56_runturn, 
-         dx(7), frame_57_runturn, 
-         dx(3), frame_58_runturn, 
-         dx(1), frame_59_runturn, 
-         frame_60_runturn, 
-         dx(2), frame_61_runturn, 
-         dx(-1), frame_62_runturn, 
-         frame_63_runturn, 
-         frame_64_runturn, 
-         dx(-1), frame_65_runturn, 
-         dx(-14), SEQ_FLIP, jmp(runcyc7), // goto "runcyc7" 
-   
-         LABEL(fightfall) // fightfall (backward) 
-         act(actions_3_in_midair), dy(-1), frame_102_start_fall_1, 
-         dx(-2), dy(6), frame_103_start_fall_2, 
-         dx(-2), dy(9), frame_104_start_fall_3, 
-         dx(-1), dy(12), frame_105_start_fall_4, 
-         dx(-3), set_fall(0, 15), jmp(freefall), // goto "freefall" 
-   
-         LABEL(efightfall) // enemy fight fall 
-         act(actions_3_in_midair), dy(-1), dx(-2), frame_102_start_fall_1, 
-         dx(-3), dy(6), frame_103_start_fall_2, 
-         dx(-3), dy(9), frame_104_start_fall_3, 
-         dx(-2), dy(12), frame_105_start_fall_4, 
-         dx(-3), set_fall(0, 15), jmp(freefall), // goto "freefall" 
-   
-         LABEL(efightfallfwd)// enemy fight fall forward 
-         act(actions_3_in_midair), dx(1), dy(-1), frame_102_start_fall_1, 
-         dx(2), dy(6), frame_103_start_fall_2, 
-         dx(-1), dy(9), frame_104_start_fall_3, 
-         dy(12), frame_105_start_fall_4, 
-         dx(-2), set_fall(1, 15), jmp(freefall), // goto "freefall" 
-   
-         LABEL(stepfall) // stepfall 
-         act(actions_3_in_midair), dx(1), dy(3), jmp_if_feather(stepfloat), // goto "stepfloat" 
-         /* "fall1" */ LABEL(fall1) frame_102_start_fall_1, 
-         dx(2), dy(6), frame_103_start_fall_2, 
-         dx(-1), dy(9), frame_104_start_fall_3, 
-         dy(12), frame_105_start_fall_4, 
-         dx(-2), set_fall(1, 15), jmp(freefall), // goto "freefall" 
-   
-         LABEL(patchfall) // patchfall 
-         dx(-1), dy(-3), jmp(fall1), // goto "fall1" 
-   
-         LABEL(stepfall2) // stepfall2 (from frame 12) 
-         dx(1), jmp(stepfall), // goto "stepfall" 
-   
-         LABEL(stepfloat) // stepfloat 
-         frame_102_start_fall_1, 
-         dx(2), dy(3), frame_103_start_fall_2, 
-         dx(-1), dy(4), frame_104_start_fall_3, 
-         dy(5), frame_105_start_fall_4, 
-         dx(-2), set_fall(1, 6), jmp(freefall), // goto "freefall" 
-   
-         LABEL(jumpfall) // jump fall (from standing jump) 
-         act(actions_3_in_midair), dx(1), dy(3), frame_102_start_fall_1, 
-         dx(2), dy(6), frame_103_start_fall_2, 
-         dx(1), dy(9), frame_104_start_fall_3, 
-         dx(2), dy(12), frame_105_start_fall_4, 
-         set_fall(2, 15), jmp(freefall), // goto "freefall" 
-   
-         LABEL(rjumpfall) // running jump fall 
-         act(actions_3_in_midair), dx(1), dy(3), frame_102_start_fall_1, 
-         dx(3), dy(6), frame_103_start_fall_2, 
-         dx(2), dy(9), frame_104_start_fall_3, 
-         dx(3), dy(12), frame_105_start_fall_4, 
-         set_fall(3, 15), jmp(freefall), // goto "freefall" 
-   
-         LABEL(jumphangMed) // jumphang (medium: DX = 0) 
-         act(actions_1_run_jump), frame_67_start_jump_up_1, 
-         frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, 
-         frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, frame_76_jumphang, 
-         frame_77_jumphang, 
-         act(actions_2_hang_climb), frame_78_jumphang, frame_79_jumphang, frame_80_jumphang, 
-         jmp(hang), // goto "hang" 
-   
-         LABEL(jumphangLong)// jumphang (long: DX = 4) 
-         act(actions_1_run_jump), frame_67_start_jump_up_1, 
-         frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, 
-         frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, frame_76_jumphang, 
-         frame_77_jumphang, 
-         act(actions_2_hang_climb), dx(1), frame_78_jumphang, 
-         dx(2), frame_79_jumphang, 
-         dx(1), frame_80_jumphang, 
-         jmp(hang), // goto "hang" 
-   
-         LABEL(jumpbackhang) // jumpbackhang 
-         act(actions_1_run_jump), frame_67_start_jump_up_1, 
-         frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, 
-         frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, frame_76_jumphang, 
-         dx(-1), frame_77_jumphang, 
-         act(actions_2_hang_climb), dx(-2), frame_78_jumphang, 
-         dx(-1), frame_79_jumphang, 
-         dx(-1), frame_80_jumphang, 
-         jmp(hang), // goto "hang" 
-   
-         LABEL(hang) // hang 
-         act(actions_2_hang_climb), frame_91_hanging_5, 
-         /* "hang1" */ LABEL(hang1) frame_90_hanging_4, frame_89_hanging_3, frame_88_hanging_2, 
-         frame_87_hanging_1, frame_87_hanging_1, frame_87_hanging_1, frame_88_hanging_2, 
-         frame_89_hanging_3, frame_90_hanging_4, frame_91_hanging_5, frame_92_hanging_6, 
-         frame_93_hanging_7, frame_94_hanging_8, frame_95_hanging_9, frame_96_hanging_10, 
-         frame_97_hanging_11, frame_98_hanging_12, frame_99_hanging_13, frame_97_hanging_11, 
-         frame_96_hanging_10, frame_95_hanging_9, frame_94_hanging_8, frame_93_hanging_7, 
-         frame_92_hanging_6, frame_91_hanging_5, frame_90_hanging_4, frame_89_hanging_3, 
-         frame_88_hanging_2, frame_87_hanging_1, frame_88_hanging_2, frame_89_hanging_3, 
-         frame_90_hanging_4, frame_91_hanging_5, frame_92_hanging_6, frame_93_hanging_7, 
-         frame_94_hanging_8, frame_95_hanging_9, frame_96_hanging_10, frame_95_hanging_9, 
-         frame_94_hanging_8, frame_93_hanging_7, frame_92_hanging_6, 
-         jmp(hangdrop), // goto "hangdrop" 
-   
-         LABEL(hangstraight) // hangstraight 
-         act(actions_6_hang_straight), frame_92_hanging_6, // Apple II source has a bump sound here 
-         frame_93_hanging_7, frame_93_hanging_7, frame_92_hanging_6, frame_92_hanging_6, 
-         /* ":loop" */ LABEL(hangstraight_loop) frame_91_hanging_5, 
-         jmp(hangstraight_loop), // goto ":loop" 
-   
-         LABEL(climbfail) // climbfail 
-         frame_135_climbing_1, frame_136_climbing_2, frame_137_climbing_3, frame_137_climbing_3, 
-         frame_138_climbing_4, frame_138_climbing_4, frame_138_climbing_4, frame_138_climbing_4, 
-         frame_137_climbing_3, frame_136_climbing_2, frame_135_climbing_1, 
-         dx(-7), jmp(hangdrop), // goto "hangdrop" 
-   
-         LABEL(climbdown) // climbdown 
-         act(actions_1_run_jump), frame_148_climbing_14, 
-         frame_145_climbing_11, frame_144_climbing_10, frame_143_climbing_9, frame_142_climbing_8, 
-         frame_141_climbing_7, 
-         dx(-5), dy(63), SEQ_DOWN, act(actions_3_in_midair), frame_140_climbing_6, 
-         frame_138_climbing_4, frame_136_climbing_2, 
-         frame_91_hanging_5, 
-         act(actions_2_hang_climb), jmp(hang1), // goto "hang1" 
-   
-         LABEL(climbup) // climbup 
-         act(actions_1_run_jump), frame_135_climbing_1, 
-         frame_136_climbing_2, frame_137_climbing_3, frame_138_climbing_4, 
-         frame_139_climbing_5, frame_140_climbing_6, 
-         dx(5), dy(-63), SEQ_UP, frame_141_climbing_7, 
-         frame_142_climbing_8, frame_143_climbing_9, frame_144_climbing_10, frame_145_climbing_11, 
-         frame_146_climbing_12, frame_147_climbing_13, frame_148_climbing_14, 
-         act(actions_5_bumped), // to clear flags 
-         frame_149_climbing_15, 
-         act(actions_1_run_jump), frame_118_stand_up_from_crouch_9, frame_119_stand_up_from_crouch_10, 
-         dx(1), jmp(stand), // goto "stand" 
-   
-         LABEL(hangdrop) // hangdrop 
-         frame_81_hangdrop_1, frame_82_hangdrop_2, 
-         act(actions_5_bumped), frame_83_hangdrop_3, 
-         act(actions_1_run_jump), SEQ_KNOCK_DOWN, snd(SND_SILENT), 
-         frame_84_hangdrop_4, frame_85_hangdrop_5, 
-         dx(3), jmp(stand), // goto "stand" 
-   
-         LABEL(hangfall) // hangfall 
-         act(actions_3_in_midair), frame_81_hangdrop_1, 
-         dy(6), frame_81_hangdrop_1, 
-         dy(9), frame_81_hangdrop_1, 
-         dy(12), dx(2), set_fall(0, 12), jmp(freefall), // goto "freefall" 
-   
-         LABEL(freefall) // freefall 
-         act(actions_4_in_freefall), /* ":loop" */ LABEL(freefall_loop) frame_106_fall, 
-         jmp(freefall_loop), // goto :loop 
-   
-         LABEL(runstop) // runstop 
-         act(actions_1_run_jump), frame_53_runturn, 
-         dx(2), snd(SND_FOOTSTEP), frame_54_runturn, 
-         dx(7), frame_55_runturn, 
-         snd(SND_FOOTSTEP), frame_56_runturn, 
-         dx(2), frame_49_turn, 
-         dx(-2), frame_50_turn, 
-         frame_51_turn, frame_52_turn, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(jumpup) // jump up (and touch ceiling) 
-         act(actions_1_run_jump), frame_67_start_jump_up_1, 
-         frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, 
-         frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, 
-         frame_76_jumphang, frame_77_jumphang, frame_78_jumphang, 
-         act(actions_0_stand), SEQ_KNOCK_UP, frame_79_jumphang, 
-         jmp(hangdrop), // goto "hangdrop" 
-   
-         LABEL(highjump) // highjump (no ceiling above) 
-         act(actions_1_run_jump), frame_67_start_jump_up_1, 
-         frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, frame_71_jumphang, 
-         frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, frame_75_jumphang, 
-         frame_76_jumphang, frame_77_jumphang, frame_78_jumphang, frame_79_jumphang, 
-         dy(-4), frame_79_jumphang, 
-         dy(-2), frame_79_jumphang, 
-         frame_79_jumphang, 
-         dy(2), frame_79_jumphang, 
-         dy(4), jmp(hangdrop), // goto "hangdrop" 
-   
-         LABEL(superhijump) // superhijump (when weightless) 
-         frame_67_start_jump_up_1, frame_68_start_jump_up_2, frame_69_start_jump_up_3, frame_70_jumphang, 
-         frame_71_jumphang, frame_72_jumphang, frame_73_jumphang, frame_74_jumphang, 
-         frame_75_jumphang, frame_76_jumphang, 
-         dy(-1), frame_77_jumphang, 
-         dy(-3), frame_78_jumphang, 
-         dy(-4), frame_79_jumphang, 
-         dy(-10), frame_79_jumphang, 
-         dy(-9), frame_79_jumphang, 
-         dy(-8), frame_79_jumphang, 
-         dy(-7), frame_79_jumphang, 
-         dy(-6), frame_79_jumphang, 
-         dy(-5), frame_79_jumphang, 
-         dy(-4), frame_79_jumphang, 
-         dy(-3), frame_79_jumphang, 
-         dy(-2), frame_79_jumphang, 
-         dy(-2), frame_79_jumphang, 
-         dy(-1), frame_79_jumphang, 
-         dy(-1), frame_79_jumphang, 
-         dy(-1), frame_79_jumphang, 
-         frame_79_jumphang, frame_79_jumphang, frame_79_jumphang, 
-         dy(1), frame_79_jumphang, 
-         dy(1), frame_79_jumphang, 
-         dy(2), frame_79_jumphang, 
-         dy(2), frame_79_jumphang, 
-         dy(3), frame_79_jumphang, 
-         dy(4), frame_79_jumphang, 
-         dy(5), frame_79_jumphang, 
-         dy(6), frame_79_jumphang, 
-         set_fall(0, 6), jmp(freefall), // goto "freefall" 
-   
-         LABEL(fallhang) // fall hang 
-         act(actions_3_in_midair), frame_80_jumphang, 
-         jmp(hang), // goto "hang" 
-   
-         LABEL(bump) // bump 
-         act(actions_5_bumped), dx(-4), frame_50_turn, 
-         frame_51_turn, frame_52_turn, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(bumpfall) // bumpfall 
-         /* action is patched to 3_in_midair by FIX_WALLBUMP_TRIGGERS_TILE_BELOW */ 
-         act(actions_5_bumped), dx(1), dy(3), jmp_if_feather(bumpfloat), 
-         frame_102_start_fall_1, 
-         dx(2), dy(6), frame_103_start_fall_2, 
-         dx(-1), dy(9), frame_104_start_fall_3, 
-         dy(12), frame_105_start_fall_4, 
-         dx(-2), set_fall(0, 15), jmp(freefall), // goto "freefall" 
-   
-         LABEL(bumpfloat) // bumpfloat 
-         frame_102_start_fall_1, 
-         dx(2), dy(3), frame_103_start_fall_2, 
-         dx(-1), dy(4), frame_104_start_fall_3, 
-         dy(5), frame_105_start_fall_4, 
-         dx(-2), set_fall(0, 6), jmp(freefall), // goto "freefall" 
-   
-         LABEL(hardbump) // hard bump 
-         act(actions_5_bumped), dx(-1), dy(-4), frame_102_start_fall_1, 
-         dx(-1), dy(3), dx(-3), dy(1), SEQ_KNOCK_DOWN, 
-         dx(1), snd(SND_FOOTSTEP), frame_107_fall_land_1, 
-         dx(2), frame_108_fall_land_2, 
-         snd(SND_FOOTSTEP), frame_109_crouch, 
-         jmp(standup), // goto "standup" 
-   
-         LABEL(testfoot) // test foot 
-         frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         frame_123_stepping_3, 
-         dx(2), frame_124_stepping_4, 
-         dx(4), frame_125_stepping_5, 
-         dx(3), frame_126_stepping_6, 
-         dx(-4), frame_86_test_foot, 
-         snd(SND_FOOTSTEP), SEQ_KNOCK_DOWN, dx(-4), frame_116_stand_up_from_crouch_7, 
-         dx(-2), frame_117_stand_up_from_crouch_8, 
-         frame_118_stand_up_from_crouch_9, 
-         frame_119_stand_up_from_crouch_10, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(stepback) // step back 
-         dx(-5), jmp(stand), // goto "stand" 
-   
-         LABEL(step14) // step forward 14 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(3), frame_124_stepping_4, 
-         dx(4), frame_125_stepping_5, 
-         dx(3), frame_126_stepping_6, 
-         dx(-1), dx(3), frame_127_stepping_7, 
-         frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, 
-         frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step13) // step forward 13 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(3), frame_124_stepping_4, 
-         dx(4), frame_125_stepping_5, 
-         dx(3), frame_126_stepping_6, 
-         dx(-1), dx(2), frame_127_stepping_7, 
-         frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, 
-         frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step12) // step forward 12 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(3), frame_124_stepping_4, 
-         dx(4), frame_125_stepping_5, 
-         dx(3), frame_126_stepping_6, 
-         dx(-1), dx(1), frame_127_stepping_7, 
-         frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, 
-         frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step11) // step forward 11 pixels (normal step) 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(3), frame_124_stepping_4, 
-         dx(4), frame_125_stepping_5, 
-         dx(3), frame_126_stepping_6, 
-         dx(-1), frame_127_stepping_7, 
-         frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, 
-         frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step10) // step forward 10 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), /* "step10a "*/ LABEL(step10a) frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(3), frame_124_stepping_4, 
-         dx(4), frame_125_stepping_5, 
-         dx(3), frame_126_stepping_6, 
-         dx(-)2, frame_128_stepping_8, 
-         frame_129_stepping_9, frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step9) // step forward 9 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         jmp(step10a), // goto "step10a" 
-   
-         LABEL(step8) // step forward 8 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(3), frame_124_stepping_4, 
-         dx(4), frame_125_stepping_5, 
-         dx(-1), frame_127_stepping_7, 
-         frame_128_stepping_8, frame_129_stepping_9, frame_130_stepping_10, frame_131_stepping_11, 
-         frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step7) // step forward 7 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(3), frame_124_stepping_4, 
-         dx(2), frame_129_stepping_9, 
-         frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step6) // step forward 6 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(2), frame_124_stepping_4, 
-         dx(2), frame_129_stepping_9, 
-         frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step5) // step forward 5 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(2), frame_124_stepping_4, 
-         dx(1), frame_129_stepping_9, 
-         frame_130_stepping_10, frame_131_stepping_11, frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step4) // step forward 4 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(2), frame_131_stepping_11, 
-         frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step3) // step forward 3 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_123_stepping_3, 
-         dx(1), frame_131_stepping_11, 
-         frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step2) // step forward 2 pixels 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_122_stepping_2, 
-         dx(1), frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(step1) // step forward 1 pixel 
-         act(actions_1_run_jump), frame_121_stepping_1, 
-         dx(1), frame_132_stepping_12, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(stoop) // stoop 
-         act(actions_1_run_jump), dx(1), frame_107_fall_land_1, 
-         dx(2), frame_108_fall_land_2, 
-         /* ":crouch" */ LABEL(stoop_crouch) frame_109_crouch, 
-         jmp(stoop_crouch), // goto ":crouch 
-   
-         LABEL(standup) // stand up 
-         act(actions_5_bumped), dx(1), frame_110_stand_up_from_crouch_1, 
-         frame_111_stand_up_from_crouch_2, 
-         dx(2), frame_112_stand_up_from_crouch_3, 
-         frame_113_stand_up_from_crouch_4, 
-         dx(1 /*patched to 0 by FIX_STAND_ON_THIN_AIR*/), frame_114_stand_up_from_crouch_5, 
-         frame_115_stand_up_from_crouch_6, frame_116_stand_up_from_crouch_7, 
-         dx(-4 /*patched to -3 by FIX_STAND_ON_THIN_AIR*/), frame_117_stand_up_from_crouch_8, 
-         frame_118_stand_up_from_crouch_9, frame_119_stand_up_from_crouch_10, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(pickupsword) // pick up sword 
-         act(actions_1_run_jump), SEQ_GET_ITEM, 1, frame_229_found_sword, 
-         frame_229_found_sword, frame_229_found_sword, frame_229_found_sword, frame_229_found_sword, 
-         frame_229_found_sword, frame_230_sheathe, frame_231_sheathe, frame_232_sheathe, 
-         jmp(resheathe), // goto "resheathe" 
-   
-         LABEL(resheathe) // resheathe 
-         act(actions_1_run_jump), dx(-5), frame_233_sheathe, 
-         frame_234_sheathe, frame_235_sheathe, frame_236_sheathe, frame_237_sheathe, 
-         frame_238_sheathe, frame_239_sheathe, frame_240_sheathe, frame_133_sheathe, 
-         frame_133_sheathe, frame_134_sheathe, frame_134_sheathe, frame_134_sheathe, 
-         frame_48_turn, 
-         dx(1), frame_49_turn, 
-         dx(-2), act(actions_5_bumped), frame_50_turn, 
-         act(actions_1_run_jump), frame_51_turn, 
-         frame_52_turn, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(fastsheathe) // fast sheathe 
-         act(actions_1_run_jump), dx(-5), frame_234_sheathe, 
-         frame_236_sheathe, frame_238_sheathe, frame_240_sheathe, frame_134_sheathe, 
-         dx(-1), jmp(stand), // goto "stand" 
-   
-         LABEL(drinkpotion) // drink potion 
-         act(actions_1_run_jump), dx(4), frame_191_drink, 
-         frame_192_drink, frame_193_drink, frame_194_drink, frame_195_drink, 
-         frame_196_drink, frame_197_drink, snd(SND_DRINK), 
-         frame_198_drink, frame_199_drink, frame_200_drink, frame_201_drink, 
-         frame_202_drink, frame_203_drink, frame_204_drink, frame_205_drink, 
-         frame_205_drink, frame_205_drink, 
-         SEQ_GET_ITEM, 1, frame_205_drink, 
-         frame_205_drink, frame_201_drink, frame_198_drink, 
-         dx(-4), jmp(stand), // goto "stand" 
-   
-         LABEL(softland)// soft land 
-         act(actions_5_bumped), SEQ_KNOCK_DOWN, dx(1), frame_107_fall_land_1, 
-         dx(2), frame_108_fall_land_2, 
-         act(actions_1_run_jump), /* ":crouch" */ LABEL(softland_crouch) frame_109_crouch, 
-         jmp(softland_crouch), // goto ":crouch" 
-   
-         LABEL(landrun) // land run 
-         act(actions_1_run_jump), dy(-2), dx(1), frame_107_fall_land_1, 
-         dx(2), frame_108_fall_land_2, 
-         frame_109_crouch, 
-         dx(1), frame_110_stand_up_from_crouch_1, 
-         frame_111_stand_up_from_crouch_2, 
-         dx(2), frame_112_stand_up_from_crouch_3, 
-         frame_113_stand_up_from_crouch_4, 
-         dx(1), dy(1), frame_114_stand_up_from_crouch_5, 
-         dy(1), frame_115_stand_up_from_crouch_6, 
-         dx(-2), jmp(runstt4), // goto "runstt4" 
-   
-         LABEL(medland) // medium land (1.5 - 2 stories) 
-         act(actions_5_bumped), SEQ_KNOCK_DOWN, dy(-2), dx(1), dx(2), frame_108_fall_land_2, 
-         frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, 
-         frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, 
-         frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, 
-         frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, 
-         frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, 
-         frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, 
-         frame_109_crouch, frame_109_crouch, frame_109_crouch, frame_109_crouch, 
-         frame_109_crouch, 
-         dx(1), frame_110_stand_up_from_crouch_1, 
-         frame_110_stand_up_from_crouch_1, frame_110_stand_up_from_crouch_1, frame_111_stand_up_from_crouch_2, 
-         dx(2), frame_112_stand_up_from_crouch_3, 
-         frame_113_stand_up_from_crouch_4, 
-         dx(1), dy(1), frame_114_stand_up_from_crouch_5, 
-         dy(1), frame_115_stand_up_from_crouch_6, 
-         frame_116_stand_up_from_crouch_7, 
-         dx(-4), frame_117_stand_up_from_crouch_8, 
-         frame_118_stand_up_from_crouch_9, frame_119_stand_up_from_crouch_10, 
-         jmp(stand), // goto "stand" 
-   
-         LABEL(hardland) // hard land (splat!; >2 stories) 
-         act(actions_5_bumped), SEQ_KNOCK_DOWN, dy(-2), dx(3), frame_185_dead, 
-         SEQ_DIE, /* ":dead" */ LABEL(hardland_dead) frame_185_dead, 
-         jmp(hardland_dead), // goto ":dead" 
-   
-         LABEL(stabkill) // stabkill 
-         act(actions_5_bumped), jmp(dropdead), // goto "dropdead" 
-   
-         LABEL(dropdead) // dropdead 
-         act(actions_1_run_jump), SEQ_DIE, frame_179_collapse_1, 
-         frame_180_collapse_2, frame_181_collapse_3, frame_182_collapse_4, 
-         dx(1), frame_183_collapse_5, 
-         dx(-4), /* ":dead" */ LABEL(dropdead_dead) frame_185_dead, 
-         jmp(dropdead_dead), // goto ":dead" 
-   
-         LABEL(impale) // impale 
-         act(actions_1_run_jump), SEQ_KNOCK_DOWN, dx(4), frame_177_spiked, 
-         SEQ_DIE, /* ":dead" */ LABEL(impale_dead) frame_177_spiked, 
-         jmp(impale_dead), // goto ":dead" 
-   
-         LABEL(halve) // halve 
-         act(actions_1_run_jump), frame_178_chomped, 
-         SEQ_DIE, /* ":dead" */ LABEL(halve_dead) frame_178_chomped, 
-         jmp(halve_dead), // goto ":dead" 
-   
-         LABEL(crush) // crush 
-         jmp(medland), // goto "medland" 
-   
-         LABEL(deadfall) // deadfall 
-         set_fall(0, 0), act(actions_4_in_freefall), /* ":loop"*/ LABEL(deadfall_loop) frame_185_dead, 
-         jmp(deadfall_loop), // goto ":loop" 
-   
-         LABEL(climbstairs) // climb stairs 
-         act(actions_5_bumped), 
-         dx(-5), dy(-1), snd(SND_FOOTSTEP), frame_217_exit_stairs_1, 
-         frame_218_exit_stairs_2, frame_219_exit_stairs_3, 
-         dx(1), frame_220_exit_stairs_4, 
-         dx(-4), dy(-3), snd(SND_FOOTSTEP), frame_221_exit_stairs_5, 
-         dx(-4), dy(-2), frame_222_exit_stairs_6, 
-         dx(-2), dy(-3), frame_223_exit_stairs_7, 
-         dx(-3), dy(-8), snd(SND_LEVEL), snd(SND_FOOTSTEP), frame_224_exit_stairs_8, 
-         dx(-1), dy(-1), frame_225_exit_stairs_9, 
-         dx(-3), dy(-4), frame_226_exit_stairs_10, 
-         dx(-1), dy(-5), snd(SND_FOOTSTEP), frame_227_exit_stairs_11, 
-         dx(-2), dy(-1), frame_228_exit_stairs_12, 
-         frame_0, 
-         snd(SND_FOOTSTEP), frame_0, frame_0, frame_0, // these footsteps are only heard when the music is off 
-         snd(SND_FOOTSTEP), frame_0, frame_0, frame_0, 
-         snd(SND_FOOTSTEP), frame_0, frame_0, frame_0, 
-         snd(SND_FOOTSTEP), SEQ_END_LEVEL, /* ":loop" */ LABEL(climbstairs_loop) frame_0, 
-         jmp(climbstairs_loop), // goto ":loop" 
-   
-         LABEL(Vstand) // Vizier: stand 
-         alt2frame_54_Vstand, 
-         jmp(Vstand), // goto "Vstand" 
-   
-         LABEL(Vraise) // Vizier: raise arms 
-         85, 67, 67, 67, // numbers refer to frames in the "alternate" frame sets 
-         67, 67, 67, 67, 
-         67, 67, 67, 68, 
-         69, 70, 71, 72, 
-         73, 74, 75, 83, 
-         84, /* ":loop" */ LABEL(Vraise_loop) 76, 
-         jmp(Vraise_loop), // goto ":loop" 
-   
-         LABEL(Vwalk) // Vizier: walk 
-         dx(1), /* "Vwalk1" */ LABEL(Vwalk1) 48, 
-         dx(2), /* "Vwalk2" */ LABEL(Vwalk2) 49, 
-         dx(6), 50, 
-         dx(1), 51, 
-         dx(-1), 52, 
-         dx(1), 53, 
-         dx(1), jmp(Vwalk1), // goto "Vwalk1" 
-   
-         LABEL(Vstop) // Vizier: stop 
-         dx(1), 55, 
-         56, 
-         jmp(Vstand), 
-   
-         LABEL(Vexit) // Vizier: lower arms, turn & exit ("Vexit") 
-         77, 78, 79, 80, 
-         81, 82, 
-         dx(1), 54, 
-         54, 54, 54, 54, 
-         54, 57, 58, 59, 
-         60, 61, 
-         dx(2), 62, 
-         dx(-1), 63, 
-         dx(-3), 64, 
-         65, 
-         dx(-1), 66, 
-         SEQ_FLIP, dx(16), dx(3), jmp(Vwalk2), // goto "Vwalk2" 
-   
-         // Princess: stand 
-         LABEL(Pstand) 11, 
-         jmp(Pstand), // goto "Pstand" 
-   
-         LABEL(Palert) // Princess: alert 
-         2, 3, 4, 5, 
-         6, 7, 8, 9, 
-         SEQ_FLIP, dx(8), 11, 
-         jmp(Pstand), 
-   
-         LABEL(Pstepback) // Princess: step back 
-         SEQ_FLIP, dx(11), 12, 
-         dx(1), 13, 
-         dx(1), 14, 
-         dx(3), 15, 
-         dx(1), 16, 
-         /* ":loop" */ LABEL(Pstepback_loop) 17, 
-         jmp(Pstepback_loop), // goto ":loop" 
-   
-         LABEL(Plie) // Princess lying on cushions ("Plie") 
-         19, 
-         jmp(Plie), // goto "Plie" 
-   
-         LABEL(Pwaiting) // Princess: waiting 
-         /* ":loop" */ 20, 
-         jmp(Pwaiting), // goto ":loop" 
-   
-         LABEL(Pembrace)// Princess: embrace 
-         21, 
-         dx(1), 22, 
-         23, 24, 
-         dx(1), 25, 
-         dx(-3), 26, 
-         dx(-2), 27, 
-         dx(-4), 28, 
-         dx(-3), 29, 
-         dx(-2), 30, 
-         dx(-3), 31, 
-         dx(-1), 32, 
-         /* ":loop" */ LABEL(Pembrace_loop) 33, 
-         jmp(Pembrace_loop), // goto ":loop" 
-   
-         LABEL(Pstroke) // Princess: stroke mouse 
-         /* ":loop" */ 37, 
-         jmp(Pstroke), // goto ":loop" 
-   
-         LABEL(Prise) // Princess: rise 
-         37, 38, 39, 40, 
-         41, 42, 43, 44, 
-         45, 46, 47, 
-         SEQ_FLIP, dx(12), /* ":loop" */ LABEL(Prise_loop) 11, 
-         jmp(Prise_loop), // goto ":loop" 
-   
-         LABEL(Pcrouch) // Princess: crouch & stroke mouse 
-         11, 11, 
-         SEQ_FLIP, dx(13), 47, 
-         46, 45, 44, 43, 
-         42, 41, 40, 39, 
-         38, 37, 
-         36, 36, 36, 
-         35, 35, 35, 
-         34, 34, 34, 34, 34, 34, 34, 
-         35, 35, 
-         36, 36, 36, 
-         35, 35, 35, 
-         34, 34, 34, 34, 34, 34, 34, 
-         35, 35, 
-         36, 36, 36, 
-         35, 35, 35, 
-         34, 34, 34, 34, 34, 34, 34, 34, 34, 
-         35, 35, 35, 
-         /* ":loop" */ LABEL(Pcrouch_loop) 36, 
-         jmp(Pcrouch_loop), // goto ":loop" 
-   
-         LABEL(Pslump) // Princess: slump shoulders 
-         1, /* ":loop" */ LABEL(Pslump_loop) 18, 
-         jmp(Pslump_loop), // goto ":loop" 
-   
-         LABEL(Mscurry) // Mouse: scurry 
-         act(actions_1_run_jump), /* "Mscurry1" */ LABEL(Mscurry1) frame_186_mouse_1, 
-         dx(5), frame_186_mouse_1, 
-         dx(3), frame_187_mouse_2, 
-         dx(4), jmp(Mscurry1), // goto "Mscurry1" 
-   
-         LABEL(Mstop) // Mouse: stop 
-         /* ":loop" */ frame_186_mouse_1, 
-         jmp(Mstop), // goto ":loop" 
-   
-         LABEL(Mraise) // Mouse: raise head 
-         /* ":loop" */ frame_188_mouse_stand, 
-         jmp(Mraise), // goto ":loop" 
-   
-         LABEL(Mleave) // Mouse: leave 
-         act(actions_0_stand), frame_186_mouse_1, 
-         frame_186_mouse_1, frame_186_mouse_1, frame_188_mouse_stand, frame_188_mouse_stand, 
-         frame_188_mouse_stand, frame_188_mouse_stand, frame_188_mouse_stand, frame_188_mouse_stand, 
-         frame_188_mouse_stand, frame_188_mouse_stand, 
-         SEQ_FLIP, dx(8), jmp(Mscurry1), // goto "Mscurry1" 
-   
-         LABEL(Mclimb) // Mouse: climb 
-         frame_186_mouse_1, frame_186_mouse_1, /* ":loop" */ LABEL(Mclimb_loop) frame_188_mouse_stand, 
-         jmp(Mclimb_loop) // goto ":loop" 
-   
- }; 
-   
- void apply_seqtbl_patches() { 
- #ifdef FIX_WALL_BUMP_TRIGGERS_TILE_BELOW 
-         if (fix_wall_bump_triggers_tile_below) 
-                 SEQTBL_0[bumpfall + 1] = actions_3_in_midair; // instead of actions_5_bumped 
- #endif 
- } 
-   
- #ifdef CHECK_SEQTABLE_MATCHES_ORIGINAL 
-   
- // unmodified original sequence table"Checking that the sequence table matches the original DOS version...\n"); 
-         int different = 0; 
-         int i; 
-         const byte* seq = seqtbl; 
-         const byte* original_seq = original_seqtbl; 
-         for(i = 0; i < COUNT(original_seqtbl); ++i) { 
-                 if (seq[i] != original_seq[i]) { 
-                         different = 1; 
-                         printf("Seqtbl difference at index %d (%#x; shifted offset %#x): value is %d, should be %d\n" 
-                                 , i, i, i + SEQTBL_BASE, seqtbl[i], original_seqtbl[i]); 
-                 } 
-         } 
-         for(i = 0; i < COUNT(original_seqtbl_offsets); ++i) { 
-                 if (seqtbl_offsets[i] != original_seqtbl_offsets[i]) { 
-                         different = 1; 
-                         printf("Seqtbl offset difference at index %d: value is %#x, should be %#x\n" 
-                                 , i, seqtbl_offsets[i], original_seqtbl_offsets[i]); 
-                 } 
-         } 
-         if (!- different ) printf("All good, no differences found!\n");
 
- } 
-   
- #endif // CHECK_SEQTABLE_MATCHES_ORIGINAL 
-