the cutting room mirror

Firetrap (Amstrad CPC)

This page contains no introduction.
What makes this game notable or what is it about? Are you a bad enough dude to save this article?

Source Code Fragments#

A moderate amount of code was left inside the disk version of the game. The addresses below are from a dump of the original disk.

Track 6, Sector 0, AF9:

MVFL.2  INC HL
    INC HL
    INC HL
    DJNZ    MVFL.1
    RET

ZIBBO   EQU 274

NEW_FLAME   LD  A,(NUM_FLAM)
    CP  4
    RET Z
    LD  A,(HEIGHT)
    OR  A
    CP  #60
    RET NC
    CALL    RND
    OR  A
    CP  220
FOZZIE  EQU $-1
    RET C
    CALL    RND
    AND 7
    LD  (ZIBBO),A
    ADD A,A
    ADD A,A
    ADD A,A
    ADD A,8
    LD  C,A
    CALL    RND
    AND 32
    LD  B,A
;   PUSH    BC
;   LD  A,8
;   ADD A,B
;   LD  B,A
;   CALL    MAP_FIND
;   POP BC
;   RET NZ
    LD  A,(MAP_COUNT)
    LD  L,A
    LD  A,3
    SUB L
    ADD A,A
    ADD A,A
    ADD A,A
    ADD A,B
    LD  B,A
    LD  A,(ZIBBO)
    LD  HL,ZIBBER
KERMIT  EQU $-2
    ADD A,L
    LD  L,A
    LD  A,(HL)
    ADD A,B
    LD  B,A
    PUSH    BC
    XOR A
    CALL    MAP_FIND
    POP BC
    RET NZ
    LD  HL,FLAMES
    LD  D,4
NEWF.1  LD  A,(HL)
    OR  A
    JR  NZ,NEWF.2
    LD  (HL),20
    INC HL
    LD  (HL),C
    INC HL
    LD  A,B
    SUB 16
    LD  B,A
    LD  (HL),B
    LD  HL,NUM_FLAM
    INC (HL)
    RET
NEWF.2  INC HL
    INC HL
    INC HL
    DEC D
    JP  NZ,NEWF.1
    RET

FLAME_DO    LD  A,15
    LD  (SPMASK),A
    EXX
    LD  HL,FLAME_STR
    EXX
    LD  HL,FLAMES
    LD  D,4
FLOD.1  LD  A,(HL)
    OR  A
    JR  Z,FLOD.2
    EXX
    PUSH    HL
    EXX
    PUSH    HL
    PUSH    DE
    LD  A,(HL)
    XOR 1
    LD  (HL),A
    INC HL
    LD  C,(HL)
    INC HL
    LD  B,(HL)
    CALL    SP_DRAW
    POP DE
    POP HL
    EXX
    POP HL
    EXX
FLOD.2  EXX
    INC H
    EXX
    INC HL
    INC HL
    INC HL
    DEC D
    JP  NZ,FLOD.1
    RET

WIPE_FLAME  LD  DE,FLAME_

Track 7, Sector 0, 0:

    LD  A,4
    LD  HL,FLAMES+9
FLIP.1  PUSH    AF
    PUSH    HL
    LD  A,(HL)
    OR  A
    JR  Z,FLIP.2
    PUSH    DE
    INC HL
    LD  C,(HL)
    INC HL
    LD  B,(HL)
    CALL    SP_WIPE
    POP DE
FLIP.2  DEC D
    POP HL
    DEC HL
    DEC HL
    DEC HL
    POP AF
    DEC A
    JP  NZ,FLIP:

Track 8, Sector 0, 145:

-ball from flames

FALLERS2    CALL    RND
    OR  A
    CP  220
    RET C
    CALL    RND
    AND 3
    LD  HL,FLAMES
    LD  D,A
    ADD A,A
    ADD A,D
    ADD A,L
    LD  L,A
    LD  A,(HL)
    OR  A
    RET Z
    INC HL
    LD  C,(HL)
    INC C
    INC C
    INC HL
    LD  B,(HL)
    LD  HL,SPRITE_DAT+9
    LD  E,5
FAL.2A  LD  A,(HL)
    INC A
    JR  Z,FAL.3A
    INC HL
    INC HL
    INC HL
    DEC E
    JP  NZ,FAL.2A
    RET
FAL.3A  SET 7,C
    LD  (HL),C
    INC HL
    LD  (HL),B
    INC HL
    LD  (HL),11 ; fire-ball code
    RET

BIGGY   EQU 278
BIG_STORE   DEFS    256

BIG_FALL    LD  A,(BIGGY)

Track 9, Sector 0, 10B:

    OR  A
    JP  Z,POP.1
    LD  B,6
    LD  HL,PARA_DAT
PARM.1A LD  A,(HL)
    CP  255
    JR  Z,PARM.2A
    INC HL
    LD  A,(HL)
    SUB A,8
    LD  (HL),A
    DEC HL
PARM.2A INC HL
    INC HL
    DJNZ    PARM.1A
POP.1   LD  B,3
    LD  HL,SHEEP
MVSH.1A LD  A,(HL)
    OR  A
    JR  Z,MVSH.2A
    INC HL
    INC HL
    LD  A,(HL)
    SUB 8
    OR  A
    CP  9
    JR  NC,MVSH.3A
    DEC HL
    DEC HL
    LD  (HL),0
    JP  MVSH.2A
MVSH.3A LD  (HL),A
    DEC HL
    DEC HL
MVSH.2A INC HL
    INC HL
    INC HL
    DJNZ    MVSH.1A
    LD  B,4
    LD  HL,FLAMES
MVFL.1A LD  A,(HL)
    OR  A
    JR  Z,MVFL.2A
    INC HL
    INC HL
    LD  A,(HL)
    SUB 8
    OR  A
    CP  9
    JR  NC,MVFL.3A
    DEC HL
    DEC HL
    LD  (HL),0
    JP  MVFL.2A
MVFL.3A LD  (HL),A
    DEC HL
    DEC HL
MVFL.2A INC HL
    INC HL
    INC HL
    DJNZ    MVFL.1A
    LD  B,8
    LD  HL,SPRITE_DAT
MV.1A   LD  A,(HL)
    INC A
    JR  Z,MV.2A
    INC HL
    LD  A,(HL)
    SUB 8
    LD  (HL),A
    DEC HL
MV.2A   INC HL
    INC HL
    INC HL
    DJNZ    MV.1A
    LD  A,(HEIGHT)
    DEC A
    LD  (HEIGHT),A
    LD  HL,(OFFSET)
    LD  DE,80
    ADD HL,DE
    LD  A,H
    AND 7
    LD  H,A
    LD  (OFFSET),HL
    CALL    STAT_LINE
    JP  BO

Track 9, Sector 0, 5E4:

    AND 3
    LD  (MAP_COUNT),A
    OR  A
    LD  HL,(MAP_ADD)
    JR  NZ,$3
    LD  DE,48
    JR  $1
$3  LD  DE,56
$1  OR  A
    JR  NZ,$2
    EXX
    LD  HL,(MAP_ADD)
    LD  DE,8
    SBC HL,DE
    LD  (MAP_ADD),HL
    EXX
$2  DEC A
    AND 3
    ADD A,A
    ADD A,A
    LD  (PLUSTIP),A
    LD  BC,#B808
    LD  HL,(MAP_ADD)
    OR  A
    SBC HL,DE
    PUSH    BC
    LD  B,8
BOTTOM.2    LD  A,(HL)
    EXX
    LD  DE,BLOCKS
    LD  H,0
    LD  L,A
    ADD HL,HL
    ADD HL,HL
    ADD HL,HL
    ADD HL,HL
    ADD HL,DE
    LD  DE,0
PLUSTIP EQU $-2
    ADD HL,DE
    EX  HL,DE
    POP BC
    PUSH    BC
    LD  A,4
    CALL    PSTRING3
    POP BC
    LD  A,C
    ADD A,8
    LD  C,A
    PUSH    BC
    EXX
    INC HL
    DJNZ    BOTTOM.2
    POP BC
    LD  HL,CHARDATA-32*16
    LD  (BANK),HL
    LD  A,(MAP_COUNT)
    OR  A
    JR  NZ,BOT.3
    LD  HL,(MAP_ADD)
    LD  DE,8
    OR  A
    SBC HL,DE
    LD  B,E
    LD  IX,MAP_GRAFIX

Track 9, Sector 0, B20:

BC
    LD  A,8
    ADD A,B
    LD  B,A
    POP AF
    DEC A
    JP  NZ,LOG.1
    POP BC
    LD  A,C
    ADD A,32
    LD  C,A
    PUSH    BC
    LD  A,8
    ADD A,B
    LD  B,A
    CALL    PSPEC
    POP BC
    PUSH    BC
    LD  A,B
    ADD A,16
    LD  B,A
    CALL    PSPEC
    POP BC
    PUSH    BC
    LD  A,B
    ADD A,24
    LD:

(Source: CPC Power)