mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-14 05:30:53 +00:00
564 lines
9.3 KiB
NASM
564 lines
9.3 KiB
NASM
;Copyright (c) 1990-2011 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
|
|
priority db 0
|
|
|
|
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
|
|
|