| To install to HD:
| 1. Run the installer on disc 1
| 2. Copy the disc 1 image as !Haunted.F1018701
| 3. Replace the contents of !Haunted.!Run with:
|  ADFBootFloppy F1018701
IF "<Haunt$Loaded>"<>"" THEN Error You can't run two copies of Haunted House at once
IF "<Obey$Dir>"="@" THEN Set Obey$Dir ADFS::Haunted.$.!Haunted
IfThere <Obey$Dir>.F1018701 THEN ADFMount <Obey$Dir>.F1018701
IconSprites <Obey$Dir>.!Sprites
Set File$Type_230 Ghostly
Set Haunt$Dir <Obey$Dir>
Set Alias$@RunType_230 <Haunt$Dir>.!Run %%*0
UnSet Haunt$File
IF "%0"<>"" THEN Set Haunt$File %0
Set HauntData$Dir <Haunt$Dir>
Set Def1$Path <Obey$Dir>.
Set Disc1$dir <Def1$Path>
HideCommandWindow
IF ADFFS$OSVersion>=&50000 THEN ADFEmulateRISCOS 3.71
WimpSlot -min 1328K -max 1328K
IF ADFFS$CPUID>=&A10 THEN GOARM3JIT 0
<Obey$Dir>.zappa
| Prevent vectors being taken over
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 22C E3A00009 EA00001D Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 2C0 EF00003B E1A00000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 404 0A00058F E1A00000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 418 EF000020 EF020020 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 41C E3A00009 E8FD8000 Volkstad

| Fix FileV vector code
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 7F4 E3300000 EA000000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 7FC 13300002 E92D4000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 800 13300003 E51FE010 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 804 13300004 E13E0000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 808 13300007 08BD8000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 80C 13300008 E50F001C Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 818 0A00048A E1A00000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 834 092D8000 18BD8000 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 838 E1B0F00E EF020008 Volkstad
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 83C E1A00000 E50FE04C Volkstad

| Fix issues in the BASIC code: pause correctly, don't nag about BPP, regulate blackbird speed, quit correctly, load file via variable
| PAGE=&7F000
Set Key$0 HIMEM=&134000:PAGE=&48000|MLOAD "|<Haunt$Dir>.!RunImage"|M110|M230SYS&20023,"Haunt$File",,-1,0TO,,A%|M240IF A%<0 THEN|M250DIM file% -A%+1|M260SYS&20023,"Haunt$File",file%,-A%+1,0TO,,A%:file%?A%=13|M270|M280E$=$file%|M

| Use SpriteOp instead of direct screen access in getdata/putdata
Set Key$1 3440PROCA(x%,y%)|M9610A%=x%:B%=y%|M11380PROCA(mx%,my%)|M11670PROCA(mx%,my%)|M20190PROCA(dx%,dy%):D%=Dhi%+1:CALLgetdata|M20560PROCA(dx%,dy%):D%=Dhi%+1:CALLgetdata|M20710PROCA(dx%,dy%):D%=Dhi%+1:CALLgetdata|M

| Use SpriteOp in getdata @ D9EC
Set Key$2 201P%=&D9F0:[OPT2:MOV R4,R0:MOV R5,R1:ADD R6,R4,#96<<xshift:ADD R7,R5,R3,LSL#yshift:MOV R3,#0:MOV R2,#&134000:ADD R1,R2,#4:MOV R0,#16+256:STMIA R1!,{R4,R5}:SWI "XOS_SpriteOp":LDMFD R13!,{R0-R12,PC}:]|M

| Use SpriteOp in putdata @ DAB0
Set Key$3 202P%=&DAB4:[OPT2:MOV R0,#19:SWI "OS_Byte":MOV R5,#0:MOV R2,#&134000:ADD R1,R2,#4:MOV R0,#256:ADD R0,R0,#34:LDMIA R1!,{R3,R4}:SWI "XOS_SpriteOp":LDMFD R13!,{R0-R12,PC}:]|M

| Initialise Sprite area @ 134000
Set Key$4 33580DEFPROCA(Lx%,Ly%):A%=Lx%+Ofx%:B%=Ly%+Ofy%:ENDPROC|M33505A%=&134000:!A%=&41:A%!12=128*1024:A%!16=0:A%!20=16:A%!24=16:SYS "XOS_SpriteOp",9+256,A%+12|M3180=t1%+t2%+8|M4940ENDPROC|M18425WAIT|M18575WAIT|M33570QUIT|M

| Bugfix: Use local ColourTrans table
Set Key$5 4511LOCAL trans%,A%|M4512SYS"ColourTrans_SelectTable",sprite%,"dr"+STR$anim%,-1,-1,0 TO,,,,A%:DIM trans% A%:SYS"ColourTrans_SelectTable",sprite%,"dr"+STR$anim%,-1,-1,trans%|M

| Increase the size of sprite% to handle 32bit MODEs
Set Key$6 33431Z%=spriteF%-sprite%:spriteF%-=Z%:compsprites-=Z%:compwk-=Z%:DIM sprite% 250*1024|M24845!sprite%=250*1024|M24750DIM mag% 256*1024|M24760!mag%=256*1024|M*UnSet Key$*|MRUN|F|M

ECHO <21>
FX 225,1
<Haunt$Dir>.Ghoule

FX 21,0
FX 138,0,128
FX 138,0,129
FX 138,0,130
FX 138,0,131
FX 138,0,132
FX 138,0,133
FX 138,0,134
BASIC
IF ADFFS$CPUID>=&A10 THEN GOARM3JIT
IF ADFFS$OSVersion>=&50000 THEN ADFEmulateRISCOS
UnSet Haunt$Loaded
UnSet Haunt$Dir
UnSet HauntData$Dir
UnSet Def1$Path
UnSet Disc1$dir