We just reached 30,000 articles on this wiki! 🥳
If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Back to the Future Part II (Amstrad CPC)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Back to the Future Part II

Developer: Probe Software
Publisher: Image Works
Platform: Amstrad CPC
Released in EU: 1989


SourceIcon.png This game has uncompiled source code.
TextIcon.png This game has unused text.
LevelSelectIcon.png This game has a hidden level select.


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.

BttF2CPCCheat.png

Unused Text

The string

hello this is a test

is present at 0x264F9 on disk 2. On disk 3, the string

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

is present at 0x87A58. 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