the cutting room mirror

Arachnophobia (Amstrad CPC)

Based on the same-titled movie, Arachnophobia puts you on the role of a pest control officer with the goal killing the entire population of an invasive and lethal South American spider species across the United States.

Uncompiled Source Code#

A number of source code fragments can be found within the game's disks, mainly Disk A:

Disk A#

Track $00#

Sectors 6 and 8

push    de
;        ld   de,mask 
bcfon:
push    bc
ld  l,(ix)
ld  h,(ix+1)
ld  bc,(avdeb)
ld  b,0
add hl,bc
ld  bc,(nboct)
ld  b,0
and a
jp  z,sovfon
ex  de,hl
ldir
push    hl
pop de
jp  apldir
sovfon:
ldir
apldir:
pop bc
inc ix
inc ix
djnz    bcfon
pop de
ret
; ** proc de pause **
pause:
push    af
push    hl
push    de
tpbc:
push    bc
call    #bd0d
ld  a,l
pop bc
cp  b
jp  m,tpbc
ld  l,0
call    #bd10
pop de
pop hl
pop af
ret
; ** proc lang affiche 1 **
lang2:
; IX = text?_?
; DY = 1 ere ligne d'a

Track $01#

Sector 6

l
noadd:
add    hl,hl
djnz   div16
ld a,l
ret

u  #c000
mask:equ   #1000
ecr2:equ   #2

Sector 7

spr
call    dkload
call    dkclos

ld  hl,lasprv
ld  b,(hl)
ld  hl,titre
ld  de,buf
call    dkopen
ld  hl,spitre
call    dkload
call    dkclos
ld  hl,spitre
ld  (bssprv),hl
;
;** page 4 : bon code **

ld  hl,lasprv
ld  b,(hl)
ld  hl,pagef
ld  iy,ecr2
call    decomp

ld  a,(langue)
cp  4
jp  nz,pital4
ld  ix,txt4_4
ld  iy,tx4
jp  fpag4
pital4:
cp  3
jp  nz,pangl4
ld  ix,txt4_3
ld  iy,tx3
jp  fpag4
pangl4:
cp  2
jp  nz,pfr4
ld  ix,txt4_2
ld  iy,tx2
jp  fpag4
pfr4:
cp  1
jp  nz,pesp4
ld  ix,txt4_1
ld  iy,tx1
jp  f

Track $08#

Sector 1

#8800
ret
:* a0ðul\u le pr

Sector 2

tbarai:defb 13,4,11,5,1,14,9,7,6,3,2,6,1,5,0
defb    13,6,12,4,10,14,10,8,1,2,11,7,9,0,5
chaine:defm "win00.c+"
atitre:defm "atit.bin"
titre:defm  "titr.bin"
acode:defm  "acod.bin"
code:defm   "code.bin"
page2:defm  "page2.c+"
page3:defm  "page3.c+"
page4b:defm "pag4b.c+"
page4f:defm "pag4f.c+"
page5:defm  "page5.c+"
drapo:defm  "drapo.c+"
jeu:defm    "prgville.bin"
header:defw 0
lasprv:defb 8
lxy:defw    0
adrspr:defw 0
coul15:defb 0
dx:defw 0
dy:defw 0
bssprv:defw 0
avdeb:defb  0
nboct:defb  0
coda

Track $0C#

Sector 2

asdr:
ld  a,(hl)
and %10101010
or  c
ld  (hl),a
jp  asst
asgc:
ld  a,(hl)
and %01010101
or  c
ld  (hl),a
asst:
inc hl
inc de
djnz    asbcx
dec (ix+1)
ret z
inc iy
inc iy
jp  asbcy
; ** memorise le fond du sprite *
; ix = adresse 1er ligne ds table
; a = 0 si sauve dans masque
; b = nombre de lignes
fonsov:
push    de
;        ld   de,mask 
bcfon:
push    bc
ld  l,(ix)
ld  h,(ix+1)
ld  bc,(avdeb)
ld  b,0
add hl,bc
ld  bc,(nboct)
ld  b,0
and a
jp  z,sovfon
ex  de,hl
ldir
push    hl
pop de
jp  apl

Sector 4

tbarai:defb    13,4,11,5,1,14,9,7,6,3,2,6,1,5,0
defb    13,6,12,4,10,14,10,8,1,2,11,7,9,0,5
chaine:defm "win00.c+"
atitre:defm "atit.bin"
titre:defm  "titr.bin"
aquit:defm  "aqui.bin"
quit:defm   "quit.bin"
pagef:defm  "pagef.c+"
jeu:defm    "prgville.bin"
chnutz:defm "chnutz.bin"
header:defw 0
lasprv:defb 8
lxy:defw    0
adrspr:defw 0
coul15:defb 0
dx:defw 0
dy:defw 0
bssprv:defw 0
avdeb:defb  0
nboct:defb  0
quiter:defb 1
passe:defb  0
degrad:defb 2,5,11,14,20,23,26
langue:equ  #41
ntown:equ   #42
ara

Track $1A#

Sector 4

a
ld  ix,infspr
ld  de,146
add ix,de
ld  l,(ix)
ld  h,(ix+1)
ld  (adrspr),hl
call    affspr
ld  a,177
ld  (dy),a
ld  ix,infspr
ld  de,148
add ix,de
ld  l,(ix)
ld  h,(ix+1)
ld  (adrspr),hl
call    affspr
ld  a,(langue)
cp  4
jp  nz,pitali
ld  ix,txt1_4
jp  fpag2
pitali:
cp  3
jp  nz,pangla
ld  ix,txt1_3
jp  fpag2
pangla:
cp  2
jp  nz,pfranc
ld  ix,txt1_2
jp  fpag2
pfranc:
cp  1
jp  nz,pespag
ld  ix,txt1_1
jp  fpag2
pespag:
ld  ix,txt1_0
fpag2:
ld  a,165
ld  (dy),a
call    lang2
ld  ix,speed
ld  a,7
ld  (dur

Track $23#

Sector 5

pter:defw  #c000
langue:equ  #a501
aramor:equ  #a502
hrdep:equ   #a504
squeue:equ  #bcaa
sampli:equ  #bcbc
stone:equ   #bcbf
scheck:equ  #bcad
q1:equ  #a400
necr:defb   1
lonfic:defw 0
palet:defb  0,2,9,11,6,8,3,13
defb    0,1,4,20,15,18,24,26
tbarai:defb 13,4,11,5,1,14,9,7,6,3,2,6,1,5,0
defb    13,6,12,4,10,14,10,8,1,2,11,7,9,0,5
chaine:defm "win00.c+"
atitre:defm "atit.bin"
titre:defm  "titr.bin"
acode:defm  "acod.bin"
code:defm   "code.bin"
page2:defm  "page2.c+"
page3:defm  "page3.c+"
page4b:defm "pag4b.c+

Track $24#

Sector 4

90
codarr:equ  #7400
buf:equ #8500
infspr:equ  #8400
table:equ   #8000
dotpos:equ  #bc1d
setink:equ  #bc32
dkopen:equ  #bc77
dkload:equ  #bc83
dkclos:equ  #bc7a
setmod:equ  #bc0e
getime:equ  #bd0d
putime:equ  #bd10
ssadrv:equ  #c000
pter:defw   #c000
langue:equ  #41
ntown:equ   #42
squeue:equ  #bcaa
sampli:equ  #bcbc
stone:equ   #bcbf
scheck:equ  #bcad
q1:equ  #a400
necr:defb   1
lonfic:defw 0
palet:defb  0,2,9,11,6,8,3,13
defb    0,1,4,20,15,18,24,26
atitre:defm "atit.bin"
titre:defm  "titr.bin"
jour1:defm  "j

Track $27#

Sector 6

org    #8e00
ent    #8e00
jp debprg
incm1:defw 0
queue1:defb    1,1,1
freq:defb  0,0,0,1
duree:defb 0,

Disk B#

Disk B also contains fragments, though they appear to be part of the same source section.

m:equ  #40
; ** variables **
deb
debug:equ  minmem
langue:equ debug+1
ntown:equ  langue+1
aramor:equ nto

setink:equ #bc32
setbor

vill.bin"
hous:defm  "prghouse.bin"
win:defm   "winhouse.bin"
sdxy:

Revisional Difference#

Two revisions of the game are known to exist, though the only difference seems to be that the newer one lacks the files BTITR.BIN (a duplicate of the copyright graphics on the title screen) and PRGAMSUD.BIN.

(Source: CPC-Power)