;Copyright (c) 1990-2012 by Neil Dodwell ;Released with permission from Neil Dodwell under GPLv2 ;See LICENSE file for full license text ;---------------------------------------------------Equates and definitions---- Inputport equ 63h Mapwidth equ 66 ;132/2 Maplength equ 60 ;6/2 Tablesize equ 32 ;size of each entry in spritetable Itempicsize equ 44 ;size of inventory slots Opsy equ 52 Opsx equ 60 Inventx equ 80 Inventy equ 58 Zoomx equ 8 Zoomy equ 132 Keypadx equ 36+112 Keypady equ 72 Diaryx equ 68+24 Diaryy equ 48+12 Symbolx equ 64 Symboly equ 56 Menux equ 80+40 Menuy equ 60 if foreign Undertextsizex equ 228 Undertextsizey equ 13 Undertimedysize equ 30 else Undertextsizex equ 180 Undertextsizey equ 10 Undertimedysize equ 24 endif Numchanges equ 250 Textunder equ 0 ;offsets for items in buffer segment Openinvlist equ textunder+(undertextsizex*undertextsizey) Ryaninvlist equ openinvlist+32 Pointerback equ ryaninvlist+60 Mapflags equ pointerback+(32*32) Startpal equ mapflags+(11*10*3) Endpal equ startpal+768 Maingamepal equ endpal+768 Spritetable equ maingamepal+768 Setlist equ spritetable+(32*tablesize) Freelist equ setlist+(128*5) Exlist equ freelist+(80*5) Peoplelist equ exlist+(100*5) Zoomspace equ peoplelist+(12*5) Printedlist equ zoomspace+(46*40) Listofchanges equ printedlist+(5*80) Undertimedtext equ listofchanges+(numchanges*4) Rainlist equ undertimedtext+(256*undertimedysize) Initialreelrouts equ rainlist+(6*64) Initialvars equ initialreelrouts+lenofreelrouts Lengthofbuffer equ initialvars+lengthofvars Flags equ 0 ;offsets of items in backdrop segment Blocks equ flags+192 Map equ 0 Lengthofmap equ map+(mapwidth*maplength) Intextdat equ 0 Intext equ intextdat+(38*2) Blocktextdat equ 0 Blocktext equ blocktextdat+(98*2) Settextdat equ 0 Settext equ settextdat+(130*2) Freetextdat equ 0 Freetext equ freetextdat+(82*2) Numexobjects equ 114 Exframeslen equ 30000 Extextlen equ 18000 Exframedata equ 0 Exframes equ exframedata+2080 Exdata equ exframes+exframeslen Extextdat equ exdata+(16*numexobjects) Extext equ extextdat+((numexobjects+2)*2) Lengthofextra equ extext+extextlen Framedata equ 0 Frames equ framedata+2080 Frframedata equ 0 Frframes equ frframedata+2080 Personframes equ 0 Persontxtdat equ personframes+24 Persontext equ persontxtdat+(1026*2) Pathdata equ 0 Reellist equ pathdata+(36*144) Lenofmapstore equ 22*8*20*8 Maplen equ mapwidth*maplength Freedatlen equ 16*80 Setdatlen equ 64*128 Textstart equ 66*2 ;-----------------------------------------------------------------Variables---- startvars db 0 progresspoints db 0 watchon db 0 shadeson db 0 secondcount db 0 minutecount db 30 hourcount db 19 zoomon db 1 location db 0 expos db 0 exframepos dw 0 extextpos dw 0 card1money dw 0 listpos dw 0 ryanpage db 0 watchingtime dw 0 reeltowatch dw -1 ;reel plays from here in mode 0 endwatchreel dw 0 ;and stops here. Mode set to 1 speedcount db 0 watchspeed db 0 reeltohold dw -1 ;if mode is 1 hold on this reel endofholdreel dw -1 ;if mode is 2 then play to end of watchmode db -1 ;hold reel. Set mode back to -1 destafterhold db 0 ;set walking destination. newsitem db 0 liftflag db 0 liftpath db 0 lockstatus db 1 doorpath db 0 counttoopen db 0 counttoclose db 0 rockstardead db 0 generaldead db 0 sartaindead db 0 aidedead db 0 beenmugged db 0 gunpassflag db 0 canmovealtar db 0 talkedtoattendant db 0 talkedtosparky db 0 talkedtoboss db 0 talkedtorecep db 0 cardpassflag db 0 madmanflag db 0 keeperflag db 0 lasttrigger db 0 mandead db 0 seed db 1,2,3 needtotravel db 0 throughdoor db 0 newobs db 0 ryanon db 255 combatcount db 0 lastweapon db -1 dreamnumber db 0 roomafterdream db 0 shakecounter db 48 lengthofvars equ $-startvars speechcount db 0 charshift dw 0 kerning db 0 brightness db 0 roomloaded db 0 didzoom db 0 linespacing dw 10 textaddressx dw 13 textaddressy dw 182 ;address on screen for text textlen db 0 lastxpos dw 0 icontop dw 0 iconleft dw 0 itemframe db 0 itemtotran db 0 roomad dw 0 oldsubject dw 0 withobject db 0 withtype db 0 lookcounter dw 0 command db 0 commandtype db 0 oldcommandtype db 0 objecttype db 0 getback db 0 invopen db 0 mainmode db 0 pickup db 0 lastinvpos db 0 examagain db 0 newtextline db 0 openedob db 0 openedtype db 0 oldmapadx dw 0 oldmapady dw 0 mapadx dw 0 mapady dw 0 mapoffsetx dw 104 mapoffsety dw 38 mapxstart dw 0 mapystart dw 0 mapxsize db 0 mapysize db 0 havedoneobs db 0 manisoffscreen db 0 rainspace db 0 facing db 0 leavedirection db 0 turntoface db 0 turndirection db 0 maintimer dw 0 introcount db 0 arrowad dw 0 currentkey db 0 oldkey db 0 useddirection db 0 currentkey2 db 0 timercount db 0 oldtimercount db 0 mapx db 0 mapy db 0 newscreen db 0 ryanx db 0 ryany db 0 lastflag db 0 lastflagex db 0 flagx db 0 flagy db 0 currentex db 0 currentfree db 0 currentframe dw 0 framesad dw 0 dataad dw 0 frsegment dw 0 objectx dw 0 objecty dw 0 offsetx dw 0 offsety dw 0 savesize dw 0 savesource dw 0 savex db 0 savey db 0 currentob db 0 priorityDep db 0 ; dep for deprecated, I leave a byte here to minimize changes to the generated code destpos db 0 reallocation db 0 ;----------;some rooms have more than one roomnum db 0 ;place in the Roomdata list, to ;account for different start points nowinnewroom db 0 ;this variable holds the rooms resetmanxy db 0 ;real value - ie:which file it's in newlocation db -1 ;if set then room is loaded at end of watch mode, or straight away if not in watch mode autolocation db -1 mustload db 0 answered db 0 saidno db 0 doorcheck1 db 0 doorcheck2 db 0 doorcheck3 db 0 doorcheck4 db 0 mousex dw 0 mousey dw 0 mousebutton dw 0 mousebutton1 dw 0 mousebutton2 dw 0 mousebutton3 dw 0 mousebutton4 dw 0 oldbutton dw 0 oldx dw 0 oldy dw 0 lastbutton dw 0 oldpointerx dw 0 oldpointery dw 0 delherex dw 0 delherey dw 0 pointerxs db 32 pointerys db 32 delxs db 0 delys db 0 pointerframe db 0 pointerpower db 0 auxpointerframe db 0 pointermode db 0 pointerspeed db 0 pointercount db 0 inmaparea db 0 reelpointer dw 0 slotdata db 0 thisslot db 0 slotflags db 0 takeoff dw 0 talkmode db 0 talkpos db 0 character db 0 persondata dw 0 talknum db 0 numberinroom db 0 currentcel db 0 oldselection db 0 stopwalking db 0 mouseon db 0 played dw 0 timer1 db 0 timer2 db 0 timer3 db 0 wholetimer dw 0 timer1to db 0 timer2to db 0 timer3to db 0 watchdump db 0 currentset dw 0 logonum db 0 oldlogonum db 0 newlogonum db 0 netseg dw 0 netpoint dw 0 keynum db 0 cursorstate db 0 pressed db 0 presspointer dw 0 graphicpress db 0 presscount db 0 keypadax dw 0 keypadcx dw 0 lightcount db 0 folderpage db 0 diarypage db 0 menucount db 0 symboltopx db 0 symboltopnum db 0 symboltopdir db 0 symbolbotx db 0 symbolbotnum db 0 symbolbotdir db 0 symboltolight db 0 symbol1 db 0 symbol2 db 0 symbol3 db 0 symbolnum db 0 dumpx dw 0 dumpy dw 0 walkandexam db 0 walkexamtype db 0 walkexamnum db 0 cursloc dw 0 curslocx dw 0 curslocy dw 0 curpos dw 0 monadx dw 0 monady dw 0 gotfrom dw 0 monsource dw 0 numtodo dw 0 timecount dw 0 counttotimed dw 0 timedseg dw 0 timedoffset dw 0 timedy db 0 timedx db 0 needtodumptimed db 0 ;recordpos dw 0 ;rechandle dw 0 handle dw 0 loadingorsave db 0 ;1 if load 2 if save currentslot db 0 cursorpos db 0 colourpos db 0 fadedirection db 0 numtofade db 0 fadecount db 0 addtogreen db 0 addtored db 0 addtoblue db 0 lastsoundreel dw 0 soundbuffer dw 0 soundbufferad dw 0 soundbufferpage db 0 soundtimes db 0 needsoundbuff db 0 oldint9seg dw -1 oldint9add dw -1 oldint8seg dw -1 oldint8add dw -1 oldsoundintseg dw 0 oldsoundintadd dw 0 soundbaseadd dw 0 dsp_status dw 0 dsp_write dw 0 dmaaddress db 0 soundint db 5 sounddmachannel db 1 sampleplaying db 255 testresult db 0 currentirq db 0 speechloaded db 0 speechlength dw 0 volume db 0 volumeto db 0 volumedirection db 0 volumecount db 0 playblock db 0 wongame db 0 lasthardkey db 0 bufferin dw 0 bufferout dw 0 extras dw 0 ;for allocated memory workspace dw 0 ;allocated mem for screen buffer mapstore dw 0 ;allocated mem for copy of room charset1 dw 0 ;allocated mem for normal charset tempcharset dw 0 ;monitor char set icons1 dw 0 ;allocated mem for on screen stuff icons2 dw 0 buffers dw 0 ;allocated mem for buffers mainsprites dw 0 ;allocated mem for Ryan sprites backdrop dw 0 mapdata dw 0 sounddata dw 0 sounddata2 dw 0 recordspace dw 0 freedat dw 0 setdat dw 0 reel1 dw -1 reel2 dw -1 reel3 dw -1 roomdesc dw -1 freedesc dw -1 setdesc dw -1 blockdesc dw -1 setframes dw -1 freeframes dw -1 people dw -1 reels dw -1 commandtext dw -1 puzzletext dw -1 traveltext dw -1 tempgraphics dw -1 tempgraphics2 dw -1 tempgraphics3 dw -1 tempsprites dw -1 textfile1 dw -1 textfile2 dw -1 textfile3 dw -1 blinkframe db 23 blinkcount db 0 reasseschanges db 0 ; if it's a 1 then obname will assume that pointerspath db 0 ;the command has changed. manspath db 0 ;ie. from "walk to" to "Examine" pointerfirstpath db 0 finaldest db 0 destination db 0 linestartx dw 0 linestarty dw 0 lineendx dw 0 lineendy dw 0 increment1 dw 0 increment2 dw 0 lineroutine db 0 linepointer db 0 linedirection db 0 linelength db 0 liftsoundcount db 0 emmhandle dw 0 emmpageframe dw 0 emmhardwarepage db 0 ch0emmpage dw 0 ch0offset dw 0 ch0blockstocopy dw 0 ch0playing db 0 ch0repeat db 0 ch0oldemmpage dw 0 ch0oldoffset dw 0 ch0oldblockstocopy dw 0 ch1playing db 255 ch1emmpage dw 0 ch1offset dw 0 ch1blockstocopy dw 0 ch1blocksplayed dw 0 soundbufferwrite dw 0 soundemmpage dw 0 speechemmpage dw 0 currentsample db -1 roomssample db 0 gameerror db 0 howmuchalloc dw 0