the cutting room mirror

Back to the Future Part II (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?

Cheat Mode#

Type headbutt during the scrolling credits and wait until the credits begin to roll for the second time. You should see "HILLBERT" replaced with "HEADBUTT", followed by a message confirming correct code entry. You can now skip levels by pressing ESC.

Unused Text#

Present at 0x264F9 on Disk 2:

hello this is a test

Present at 0x87A58 on Disk 3:

FOR OUTRUN EUROPA, IN A SHOP NEAR YOU SOON...

The game does tell you to look out for Back to the Future Part III instead.

Uncompiled Source Code#

A whole lot of uncompiled source code scattered all over disk 2 and the end of disk 3.

call cas_in_close           ;close it
.less
ld hl,&c000
ld de,here
ld bc,end_here-here
ldir
pop bc
ld (length+1),bc
jp this_place
.this_place
;; ** RESTORE DATA WHICH WOULD HAVE BEEN OVERWRITTEN BY 

FIRMWARE **
;; !!EXAMPLE!!
ld bc,&7fc4
out (c),c
ld hl,&4000
ld d,l
ld e,l
ld bc,&0040
ldir
ld de,&a700
ld b,&c0-&a7
ldir
ld bc,&7fc0
out (c),c
ld hl,&100
.address ld de,0
.length ld bc,0
ldir
.stack ld sp,0              ;old stack back and...

.stack ld sp,0              ;old stack back and...
ret                         ;...exit to program!!
.length defw 0
.filename
defb "BTTF2.XXX"
.end_filename
.end_here
dress
nolist
write"loader"
let mode=0                          ;screLE!!
ld bc,&7fc4
out (c),c
ld hl,&4000
ld d,l
ld e,l
ld bc,&0040
ldir
ld de,&a700
ld b,&c0-&a7
ldir
ld bc,&7fc0
out (c),c
ld bc,&7fc1
out (c),c
ld hl,(length-here+&c000)
ld bc,&7fc0
out (c),c
ld c,l
ld b,h
ld hl,&100
.address ld de,0

.stack ld sp,0              ;old stack back and...
ret                         ;...exit to program!!
.length defw 0
.length2 defw 0
.filename
defb "BTTF2.XXX"
.end_filename
.end_here
write"loader"
let mode=0                          ;scree+&4000)
ldir
ld hl,(length2-here+&4000)
ld bc,&7fc0
out (c),c
.marker ld a,0
or a
jp z,end_it
ld c,l
ld b,h
ld hl,&8000
ldir
.end_it
ld bc,&7fc4
out (c),c

    ;turn of disc error messages
ld a,&c9
ld (txt_output),a           ;prevent printing of text 

characters
                            ;don't get error messages 

corrupting screen
;; ** LOAD FILE USING FIRMWARE **
ld b,end_filename-filename  ;length of filename
ld hl,filename-here+&c000              ;address of 

filename in memory
ld e,l
ld d,h
call cas_in_open            ;open file
push bc
ld hl,&100                      ;HL = load address, BC 

= length of file
call cas_in_direct          ;r

       ;...exit to program!!
.filename
defb "BTTF2.XXX"
.end_filename
.end_here
let mode=0                          ;screth+1),bc
jp this_place
.this_place
;; ** RESTORE DATA WHICH WOULD HAVE BEEN OVERWRITTEN BY 

FIRMWARE **
;; !!EXAMPLE!!
ld bc,&7fc4
out (c),c
ld hl,&4000
ld d,l
ld e,l
ld bc,&0040
ldir
ld de,&a700
ld b,&c0-&a7
ldir
ld bc,&7fc0
out (c),c
ld hl,&100
.address ld de,0
.length ld bc,0
ldir
.stack ld sp,0              ;old stack back and...

BTTF2.XXX
de=0                          ;scre
isable       ;disable lower rom
;; ** INITIALISE DISK ROM FOR LOADING/SAVING **
ld c,7                      ;disk rom
ld de,&0040                 ;lowest useable byte of 

memory
ld hl,&b0ff                 ;highest useable byte of 

memory
call kl_init_back           ;initialise disk rom
xor a                       ;select drive (A)
ld (&ac00),a
ld a,&ff
ld (&be78),a                ;turn of disc error 

messages
ld a,&c9
ld (txt_output),a           ;prevent printing of text 

characters

BTTF2.XXX
d_here
let mode=0                          ;scre
 OF **
;; ** FIRMWARE **
.here
ld (stack+1),sp             ;save stack used by program
ld sp,&c000                 ;new stack used by firmware 

and load routines
;; ** SAVE DATA OVERWRITTEN BY FIRMWARE **
;; !!EXAMPLE!!
ld hl,(&ae72)
ld (address+1),hl
ld hl,(&ae74)
ld (end_filename-3),hl
ld a,(&ae76)
ld (end_filename-1),a
ld hl,&8000
ld a,(&ae73)
cp &80
jp nz,next
ld hl,&4000
.next
ld (addr+1),hl
ld bc,&7fc4
out (c),c
ld hl,&0000
ld de,&4000
ld bc,&0040
ldir
ld hl, OF **
;; ** FIRMWARE **
ld (stack+1),sp             ;save stack used by program
ld sp,&c000                 ;new stack used by firmware 

and load routines
;; ** SAVE DATA OVERWRITTEN BY FIRMWARE **
;; !!EXAMPLE!!
ld hl,(&ae72)
ld (address+1),hl
ld hl,(&ae74)
ld (end_filename-3),hl
ld a,(&ae76)
ld (end_filename-1),a
ld a,&80
ld a,(&ae73)
cp &80
jr nz,next
ld a,&40
.next
ld (addr+2),a
ld bc,&7fc4
out (c),c
ld hl,&0000
ld de,&4000
ld bc,&0040
ldir
ld hl,&a800
ld b,,c
.stack ld sp,0              ;old stack back and...
ret                         ;...exit to program!!
.length defw 0
.length2 defw 0
.filename
defb "BTTF2.XXX"
.end_filename
.end_here
write"loader"
let mode=0                          ;scree+&4000)
ldir
ld hl,(length2-here+&4000)
ld bc,&7fc0
out (c),c
.marker ld a,0
or a
jp z,end_it
ld c,l
ld b,h
ld hl,&8000
ldir
.end_it
ld bc,&7fc4
out (c),c
ld hl,&4000+&1900+&40
.addr ld de,&8000
ld bc,&1700
ldir
ld bc,&7fc0
out (c)
BTTF2   DAT