Prince-of-Persia-Apple-II

A running-jumping-swordfighting game Jordan Mechner made on the Apple II from 1985-89
Log | Files | Refs | README | LICENSE

GAMEEQ.S (8352B)


      1  tr on
      2  lst off
      3 * gameeq
      4 *-------------------------------
      5 *
      6 *  Equates
      7 *
      8 *-------------------------------
      9 chtable1 = $6000
     10 chtable2 = $8400
     11 chtable3 = $0800
     12 chtable4 = $9600
     13 chtable5 = $a800
     14 chtable6 = $6000
     15 chtable7 = $9f00
     16 
     17 bgtable1 = $6000
     18 bgtable2 = $8400
     19 
     20 topctrl = $2000
     21 seqtable = $2800
     22 seqtab = $3000
     23 ctrl = $3a00
     24 coll = $4500
     25 gamebg = $4c00
     26 auto = $5400
     27 
     28 mobtables = $b600
     29 savedgame = $b6f0
     30 
     31 msys = $d400
     32 ctrlsubs = $d000
     33 specialk = $d900
     34 textline = $dfd8
     35 subs = $e000
     36 sound = $ea00
     37 mover = $ee00
     38 misc = $f900
     39 debugs = $fc00
     40 
     41 *-------------------------------
     42 *
     43 *  Jump tables
     44 *
     45 *-------------------------------
     46  dum mobtables
     47 
     48 trobspace = $20
     49 mobspace = $10
     50 maxsfx = $20
     51 
     52 trloc ds trobspace
     53 trscrn ds trobspace
     54 trdirec ds trobspace
     55 
     56 mobx ds mobspace
     57 moby ds mobspace
     58 mobscrn ds mobspace
     59 mobvel ds mobspace
     60 mobtype ds mobspace
     61 moblevel ds mobspace
     62 
     63 soundtable ds maxsfx
     64 
     65 trobcount ds 1
     66 
     67  dum savedgame
     68 
     69 SavLevel ds 1
     70 SavStrength ds 1
     71 SavMaxed ds 1
     72 SavTimer ds 2
     73  ds 1
     74 SavNextMsg ds 1
     75 
     76  dum topctrl
     77 
     78 start ds 3
     79 restart ds 3
     80 startresume ds 3
     81 initsystem ds 3
     82  ds 3
     83 
     84 docrosscut ds 3
     85 goattract ds 3
     86 
     87  dum ctrl
     88 
     89 PlayerCtrl ds 3
     90 checkfloor ds 3
     91 ShadCtrl ds 3
     92 rereadblocks ds 3
     93 checkpress ds 3
     94 
     95 DoImpale ds 3
     96 GenCtrl ds 3
     97 checkimpale ds 3
     98 
     99  dum auto
    100 
    101 AutoCtrl ds 3
    102 checkstrike ds 3
    103 checkstab ds 3
    104 AutoPlayback ds 3
    105 cutcheck ds 3
    106 
    107 cutguard ds 3
    108 addguard ds 3
    109 cut ds 3
    110 
    111  dum coll
    112 
    113 checkbarr ds 3
    114 collisions ds 3
    115 getfwddist ds 3
    116 checkcoll ds 3
    117 animchar ds 3
    118 
    119 checkslice ds 3
    120 checkslice2 ds 3
    121  ds 3
    122 checkgate ds 3
    123  ds 3
    124 
    125 enemycoll ds 3
    126 
    127  dum gamebg
    128 
    129 updatemeters ds 3
    130 DrawKidMeter ds 3
    131 DrawSword ds 3
    132 DrawKid ds 3
    133 DrawShad ds 3
    134 
    135 setupflame ds 3
    136 continuemsg ds 3
    137 addcharobj ds 3
    138 setobjindx ds 3
    139 printlevel ds 3
    140 
    141 DrawOppMeter ds 3
    142 flipdiskmsg ds 3
    143 timeleftmsg ds 3
    144 DrawGuard ds 3
    145 DrawGuard2 ds 3
    146 
    147 setupflask ds 3
    148 setupcomix ds 3
    149 psetupflame ds 3
    150 drawpost ds 3
    151 drawglass ds 3
    152 
    153 initlay ds 3
    154 twinkle ds 3
    155 flow ds 3
    156 pmask ds 3
    157 yellow ds 3
    158 
    159 setrecheck0 ds 3
    160 recheckyel ds 3
    161 
    162  dum specialk
    163 
    164 keys ds 3
    165 clrjstk ds 3
    166 zerosound ds 3
    167 addsound ds 3
    168 facejstk ds 3
    169 
    170 SaveSelect ds 3
    171 LoadSelect ds 3
    172 SaveDesel ds 3
    173 LoadDesel ds 3
    174 initinput ds 3
    175 
    176 demokeys ds 3
    177 listtorches ds 3
    178 burn ds 3
    179 getminleft ds 3
    180 keeptime ds 3
    181 
    182 shortentime ds 3
    183 cuesong ds 3
    184  ds 3
    185  ds 3
    186  ds 3
    187 
    188 dloop ds 3
    189 strobe ds 3
    190 
    191  dum mover
    192 
    193 animtrans ds 3
    194 trigspikes ds 3
    195 pushpp ds 3
    196 breakloose1 ds 3
    197 breakloose ds 3
    198 
    199 animmobs ds 3
    200 addmobs ds 3
    201 closeexit ds 3
    202 getspikes ds 3
    203 shakem ds 3
    204 
    205 trigslicer ds 3
    206 trigtorch ds 3
    207 getflameframe ds 3
    208 smashmirror ds 3
    209 jamspikes ds 3
    210 
    211 trigflask ds 3
    212 getflaskframe ds 3
    213 trigsword ds 3
    214 jampp ds 3
    215 
    216  dum ctrlsubs
    217 
    218 getframe ds 3
    219 getseq ds 3
    220 getbasex ds 3
    221 getblockx ds 3
    222 getblockxp ds 3
    223 
    224 getblocky ds 3
    225 getblockej ds 3
    226 addcharx ds 3
    227 getdist ds 3
    228 getdist1 ds 3
    229 
    230 getabovebeh ds 3
    231 rdblock ds 3
    232 rdblock1 ds 3
    233 setupsword ds 3
    234 getscrns ds 3
    235 
    236 addguardobj ds 3
    237 opjumpseq ds 3
    238 getedges ds 3
    239 indexchar ds 3
    240 quickfg ds 3
    241 
    242 cropchar ds 3
    243 getleft ds 3
    244 getright ds 3
    245 getup ds 3
    246 getdown ds 3
    247 
    248 cmpspace ds 3
    249 cmpbarr ds 3
    250 addkidobj ds 3
    251 addshadobj ds 3
    252 addreflobj ds 3
    253 
    254 LoadKid ds 3
    255 LoadShad ds 3
    256 SaveKid ds 3
    257 SaveShad ds 3
    258 setupchar ds 3
    259 
    260 GetFrameInfo ds 3
    261 indexblock ds 3
    262 markred ds 3
    263 markfred ds 3
    264 markwipe ds 3
    265 
    266 markmove ds 3
    267 markfloor ds 3
    268 unindex ds 3
    269 quickfloor ds 3
    270 unevenfloor ds 3
    271 
    272 markhalf ds 3
    273 addswordobj ds 3
    274 getblocky1 ds 3
    275 checkledge ds 3
    276 get2infront ds 3
    277 
    278 checkspikes ds 3
    279 rechargemeter ds 3
    280 addfcharx ds 3
    281 facedx ds 3
    282 jumpseq ds 3
    283 
    284 GetBaseBlock ds 3
    285 LoadKidwOp ds 3
    286 SaveKidwOp ds 3
    287 getopdist ds 3
    288 LoadShadwOp ds 3
    289 
    290 SaveShadwOp ds 3
    291 boostmeter ds 3
    292 getunderft ds 3
    293 getinfront ds 3
    294 getbehind ds 3
    295 
    296 getabove ds 3
    297 getaboveinf ds 3
    298 cmpwall ds 3
    299 
    300  dum subs
    301 
    302 addtorches ds 3
    303 doflashon ds 3
    304 PageFlip ds 3
    305 demo ds 3
    306 showtime ds 3
    307 
    308 doflashoff ds 3
    309 lrclse ds 3
    310  ds 3
    311  ds 3
    312  ds 3
    313 
    314 addslicers ds 3
    315 pause ds 3
    316  ds 3
    317 deadenemy ds 3
    318 playcut ds 3
    319 
    320 addlowersound ds 3
    321 RemoveObj ds 3
    322 addfall ds 3
    323 setinitials ds 3
    324 startkid ds 3
    325 
    326 startkid1 ds 3
    327 gravity ds 3
    328 initialguards ds 3
    329 mirappear ds 3
    330 crumble ds 3
    331 
    332  dum sound
    333 
    334 playback ds 3
    335 
    336  dum msys
    337 
    338 _minit ds 3
    339 _mplay ds 3
    340 
    341  dum seqtable
    342 
    343 Fdef ds 1200
    344 altset1 ds 200
    345 altset2 ds 450
    346 swordtab ds 192
    347 
    348  dum misc
    349 
    350 VanishChar ds 3
    351 movemusic ds 3
    352 moveauxlc ds 3
    353 firstguard ds 3
    354 markmeters ds 3
    355 
    356 potioneffect ds 3
    357 mouserescue ds 3
    358 StabChar ds 3
    359 unholy ds 3
    360 reflection ds 3
    361 
    362 MarkKidMeter ds 3
    363 MarkOppMeter ds 3
    364 bonesrise ds 3
    365 decstr ds 3
    366 DoSaveGame ds 3
    367 
    368 LoadLevelX ds 3
    369 checkalert ds 3
    370 dispversion ds 3
    371 
    372  dum debugs
    373 
    374 showpage ds 3
    375 debugkeys ds 3
    376  ds 3
    377 titlescreen ds 3
    378 
    379 *-------------------------------
    380 *
    381 *  Zero page
    382 *
    383 *-------------------------------
    384 locals = $e8
    385 
    386 *-------------------------------
    387 *  $40-e7: Game globals
    388 *-------------------------------
    389  dum $40
    390 
    391 Char ds $10
    392 Kid ds $10
    393 Shad ds $10
    394 FCharVars ds 12
    395 yellowflag ds 1
    396 timebomb ds 1
    397 justblocked ds 1
    398 gdtimer ds 1
    399 framepoint ds 2
    400 Fimage ds 1
    401 Fdx ds 1
    402 Fdy ds 1
    403 Fcheck ds 1
    404 exitopen ds 1
    405 collX ds 1
    406 lightning ds 1
    407 lightcolor ds 1
    408 offguard ds 1
    409 blockid ds 1
    410 blockx ds 1
    411 blocky ds 1
    412 infrontx ds 1
    413 behindx ds 1
    414 abovey ds 1
    415 tempblockx ds 1
    416 tempblocky ds 1
    417 tempscrn ds 1
    418 tempid ds 1
    419 numtrans ds 1
    420 tempnt ds 1
    421 redrawflg ds 1
    422 xdiff ds 2
    423 ydiff ds 2
    424 xdir ds 1
    425 ydir ds 1
    426 RNDseed ds 1
    427 invert ds 1
    428 PlayCount ds 1
    429 refract ds 1
    430 backtolife ds 1
    431 cutplan ds 1
    432 lastcmd ds 1
    433 distfallen ds 1
    434 cutscrn ds 1
    435 waitingtojump ds 1
    436 trigppabove ds 1
    437 direcpp ds 1
    438 blockaddr ds 2
    439 delay ds 1
    440 XCOORD ds 2
    441 savekidx ds 1
    442 mirrx ds 1
    443 dmirr ds 1
    444 barrdist ds 1
    445 barrcode ds 1
    446 imwidth ds 1
    447 imheight ds 1
    448 leadedge ds 1
    449 leftej ds 1
    450 rightej ds 1
    451 topej ds 1
    452 leftblock ds 1
    453 rightblock ds 1
    454 topblock ds 1
    455 bottomblock ds 1
    456 CDLeftEj ds 1
    457 CDRightEj ds 1
    458 endrange ds 1
    459 bufindex ds 1
    460 blockedge ds 1
    461 collideL ds 1
    462 collideR ds 1
    463 weightless ds 1
    464 cutorder ds 1
    465 AMtimer ds 1
    466 begrange ds 1
    467 scrn ds 1
    468 keybufptr ds 1
    469 VisScrn ds 1
    470 OppStrength ds 1
    471 jarabove ds 1
    472 KidStrength ds 1
    473 ChgKidStr ds 1
    474 MaxKidStr ds 1
    475 EnemyAlert ds 1
    476 ChgOppStr ds 1
    477 heroic ds 1
    478 clrF ds 1
    479 clrB ds 1
    480 clrU ds 1
    481 clrD ds 1
    482 clrbtn ds 1
    483 Fsword ds 1
    484 purpleflag ds 1 ;$da
    485 msgtimer ds 1
    486 MaxOppStr ds 1
    487 guardprog ds 1
    488 ManCtrl ds 1
    489 mergetimer ds 1
    490 lastpotion ds 1
    491 origstrength ds 1
    492 jmpaddr ds 2
    493 alertguard ds 1
    494 createshad ds 1
    495 stunned ds 1
    496 droppedout ds 1
    497 
    498 *-------------------------------
    499 *
    500 *  Page 2-3
    501 *
    502 *-------------------------------
    503  dum $212
    504 
    505 milestone ds 1
    506 GlassState ds 1
    507 redrawglass ds 1
    508 doortop ds 1
    509 GuardColor ds 1
    510 shadowaction ds 1
    511 skipmessage ds 1
    512 savezp ds 32
    513 MSset ds 1
    514 rjumpflag ds 1
    515 redherring ds 1
    516 
    517  dum $300
    518 
    519 MinLeft ds 1
    520 NextTimeMsg ds 1
    521 SecLeft ds 1
    522 BGset1 ds 1
    523 BGset2 ds 1
    524 CHset ds 1
    525 FrameCount ds 2
    526 SongCount ds 1
    527 PreRecPtr ds 1
    528 gotsword ds 1
    529 message ds 1
    530 SPEED ds 1
    531 nummob ds 1
    532 clrSEL ds 5
    533 clrDESEL ds 5
    534 vibes ds 1
    535 SongCue ds 1
    536 musicon ds 1
    537 redkidmeter ds 1
    538 NextLevel ds 1
    539 scrncolor ds 1
    540 redoppmeter ds 1
    541 timerequest ds 1
    542 
    543  dum $320
    544 
    545 CDthisframe ds $10
    546 CDlastframe ds $10
    547 CDbelow ds $10
    548 CDabove ds $10
    549 SNthisframe ds $10
    550 SNlastframe ds $10
    551 SNbelow ds $10
    552 SNabove ds 10
    553 BlockYthis ds 1
    554 BlockYlast ds 1
    555 
    556 Op ds $10
    557 
    558 keybuflen = 10
    559 keybuf ds keybuflen
    560 
    561 *-------------------------------
    562 *
    563 *  Character data
    564 *
    565 *-------------------------------
    566  dum Char
    567 CharPosn ds 1
    568 CharX ds 1
    569 CharY ds 1
    570 CharFace ds 1
    571 CharBlockX ds 1
    572 CharBlockY ds 1
    573 CharAction ds 1
    574 CharXVel ds 1
    575 CharYVel ds 1
    576 CharSeq ds 2
    577 CharScrn ds 1
    578 CharRepeat ds 1
    579 CharID ds 1
    580 CharSword ds 1
    581 CharLife ds 1
    582 
    583  dum Op
    584 OpPosn ds 1
    585 OpX ds 1
    586 OpY ds 1
    587 OpFace ds 1
    588 OpBlockX ds 1
    589 OpBlockY ds 1
    590 OpAction ds 1
    591 OpXVel ds 1
    592 OpYVel ds 1
    593 OpSeq ds 2
    594 OpScrn ds 1
    595 OpRepeat ds 1
    596 OpID ds 1
    597 OpSword ds 1
    598 OpLife ds 1
    599 
    600  dum Kid
    601 KidPosn ds 1
    602 KidX ds 1
    603 KidY ds 1
    604 KidFace ds 1
    605 KidBlockX ds 1
    606 KidBlockY ds 1
    607 KidAction ds 1
    608 KidXVel ds 1
    609 KidYVel ds 1
    610 KidSeq ds 2
    611 KidScrn ds 1
    612 KidRepeat ds 1
    613 KidID ds 1
    614 KidSword ds 1
    615 KidLife ds 1
    616 
    617  dum Shad
    618 ShadPosn ds 1
    619 ShadX ds 1
    620 ShadY ds 1
    621 ShadFace ds 1
    622 ShadBlockX ds 1
    623 ShadBlockY ds 1
    624 ShadAction ds 1
    625 ShadXVel ds 1
    626 ShadYVel ds 1
    627 ShadSeq ds 2
    628 ShadScrn ds 1
    629 ShadRepeat ds 1
    630 ShadID ds 1
    631 ShadSword ds 1
    632 ShadLife ds 1
    633 
    634  dum FCharVars
    635 FCharImage ds 1
    636 FCharX ds 2
    637 FCharY ds 1
    638 FCharFace ds 1
    639 FCharIndex ds 1
    640 FCharCU ds 1
    641 FCharCD ds 1
    642 FCharCL ds 1
    643 FCharCR ds 1
    644 FCharTable ds 1
    645 
    646  dend
    647 
    648 *-------------------------------
    649 *
    650 *  Misc. data
    651 *
    652 *-------------------------------
    653 Fcheckmark = %01000000
    654 Fthinmark = %00100000
    655 Ffootmark = %00011111
    656 
    657 floorheight = 15
    658 angle = 7
    659 VertDist = 11
    660 
    661 UseFastlay = 0
    662 UseLay = 1
    663 UseLayrsave = 2
    664 
    665 TypeKid = 0
    666 TypeShad = 1
    667 TypeGd = 2
    668 TypeSword = 3
    669 TypeReflect = 4
    670 TypeComix = 5
    671 TypeFF = $80
    672 
    673  lst off