InterPhase (1990) ImageWorks
——————————————

what you will need
——————–
1. original game (i need a stabe link for this one )
2. an amiga or an amiga emulator (winuae)
3. an action replay cartridge or ar3 rom image for use with winuae
once u have all these set up we shall begin
our first task is to see what type of protection this game has so boot the orignal
up and play for a while ,notice anything pop up saying goto manual page XX line
Xx ect….? no? ok cool then i presume the protection is disc based so boot
up your copy of X-COPY and try and make a backup disk ,was
it succesfull?

oh dear alot of errors on this one looks like MFM
ok so reset the amiga with the original disc insid,you should see a cool loading
screen with a spinning cube like this

when you see this screen hit action replay and press D to see what part of the
memory we are at ,you should be around address point 800 ,so lets see where
it starts it cant be to far because we only have 800 bytes to look for so type
N 800 and hit enter untill the screen is filled then scroll up using the UP
arrow key untill you see some blank space like this

we have some blankspace with a few bits of jibberish then the main part starts
around 400 ,lets see what 400 seems to do type
FA 400 ;Find Address 400
almost right away we hav 2 address points

an LEA and a JMP ,ok so lets disable that jmp and see what effect it has on
the game
type
A 6F2 ;change the code of the jmp
JMP 80.S ;jump to 80 insted of 400
now lets put a mouse wait at address 80 type
A 80 ;press enter
BTST #6,BFE001 ;left mouse button
BNE 80 ;wait for left mouse button to be pressed
JMP 400 ;when pressed jump to 400
now exit action replay with X
you are back at the spinning cube screen but after a short while the disc activity
stops and the cube stops spinning ,this must mean the game has stopped loading
data ,ok enter action replay again and press D then press enter you will see
we are at out mouse wait , ok now is the time to save all the data to disk
insert a blank floppy and save all the data from address 400 upto 80000 i say
80000 because i done a scan of the memory and this is where it stops ,we probbily
dont need all that amount but best to be safe type
SM INT,400 80000
after a while it will say disk ok
at this point you can exit action replay and press the left mouse button and
the game should start
but we want it to start without the original disk restart the amiga with the
floppy still inside and enter action replay ,now lets load all that data back
into memory
type
LM INT,400 ;load the saved file into address 400
it will say loading from 400 to 80000
but before we execute lets take a look at 400
type
D 400
we get a BRA to 545A lets take alook at 545A type D 545A
scroll down some more you will notice a BRA 54FC lets look at that type D 54FC
hmm looks like a copy lock of some kind , lets remove this just incase i did
notice before the game starts it goes to track 0/1 and reads some data so lets
remove this

scroll down the copylock some more untill you come across this

5A46 seems to be checking for a magic number and thenext line is saying if equal
load the game so change that CMP.L to MOVE.L
type
A 54A6
then
MOVE.L #44C8345E,d0 ;press enter twice now letsstop the game loading the copylock
so where we had a BRA 54Fc before change that to BRA 5A46
type
A 548C
BRA 5A46
ok now save this back to disk
SM INT,400 80000
once this is done execute the code type
G 400 hmm you will notice the amiga CRASH not good but before it totaly resets
hit action replay again and execute the game again type G 400
and low and behold the game loads 😀

this isnt good for loading because we dont want everyone to have a action replay
or execute twice but dont worry we will fix this in the loading
now we must create a bootblock but not any simple one a little complicated one
the reaso nwhy its complicated is we can all code a botblock to load data from
disk to memory but when we want to load data from disk to memory below 10000
we have problerms because the amiga is still using this area (0-10000) and if
we load data from disk into this it overwrites the disk loading routine we are
using and the disk wont load and the amiga will crash there are a few ways around
this but since i want to continue loading the internal trackdisk loader of the
amiga we wont load any data into this address so this is why its complicated
we have 1 big file of data that needs to start loading at a low address of 400
way past 10000 and we cant do it the normal way ,the way we must do it is this
way
load the first part of the data up high out of range then load the main data
after 10000 and before we execute the game we must copy the first data from
the out of range point back to 400 + complicated eh? hehehe yah but fun
we are going to do this all from the bootblock so lets make one ,start at 10000
type N 10000 then on the first 3 dots tyoe DOS in capital letters
this is our bootblock header no lets code a bootblock loader
type A 1000C ;the point the bootblock code starts
now we want to move out entire bootblock code out of range from game data so
we can use it while the game is loading
so after A 1000c type

LEA 10024(pc),a0 basicly this is saying move
data from 24 to 39c of the bootblock into address A0000 and execute it
LEA 1039c(pc),a4
LEA a0000,a2
MOVEA.L a2,a3
MOVE.B (a0)+,(a2)+
CMPA.L a0,a4
BNE 1001c
JMP (a3)

now we write the data to be executed type
A 10024 ;then type

MOVE.W #A,DFF180 Change screen colour to blue
MOVE.W #2,1C(A1) ?
MOVE.L #A0400,S2(A1) the memory address to read first segment of data to
is A0400
MOVE.L #10400,24(A1) Read 10400 (the amount of disk space to load)
MOVE.L #400,2C(A1) Read from 400 on the disk

right the next lone of code cant be written by action replay so we hex edit
it in so type
M 5004A and put these digits and letters in the first 8 spots
4E AE FE 38 hit enter now lets get back to coding the bootblock ,so far we have
written code for loading the first segment of data to address A0400 be cause
we can load it at just 400 the loader will crash
now lets code the second and biggest segment loader
type A 5004E

MOVE.W #2,1C(A1) ?
MOVE.L #10000,S2(A1) the memory address to read second segment of data
to is 10000
MOVE.L #84000,24(A1) Read 84000 (the amount of disk space to load)
MOVE.L #10000,2C(A1) Read from 10000 on the disk

once again we need to hex edit the next line do the same as above, type
M 50066 and put these digits and letters in the first 8 spots
4E AE FE 38 hit enter then type
A5006A
type

JMP A0100 once tracks are loaded jump to address
a0100

we are almost done we have the track loader done we just need to tell the
code to take control of the amiga stop using the memory lcation below 10000
because we want to put out first segment below this so the amiga wont crash
now lets code a way to do this lets start at 50124 because out main code starts
at 50024 and we tell the amiga to jump at A0100 so makes sense to put the code
at 50124
type

A 50124

MOVE.W #7FFF,DFF096 this part is taking over from
amiga
MOVE.W #7FFF,DFF09A
MOVE.W #7FFF,DFF09C
LEA 50146(PC),A0
MOVE.L A0,00000020
MOVE.W #2700,SR
LEA A0400,A0 this is the same as before moving memory
from one place to another ,in this case its moving the first segment of
data from up high to down low starting from 400 ,we do this here and now
because we cant just simply load data there fro mthe bootblock
LEA B0000,A4
LEA 400,A2
MOVEA.L A2,A3
CMPA.L A0,A4
BNE 5015E
JMP 400 jump to start the game

ok once this is done lets fix the bootblock cos chk has been changed ,type
BOOTCHK 10000 now lets put the game data on this disk
insert the floppy with the file INT on it and type
LM INT,10400
dum de dum after a long wait its done now put in another blank disk and lets
write all this data back type
WT 0 70 10000
once this is done try it out boot it up ,the screen should turn blue and after
loading the game should start
ENJOY!

trainer makers take note ,the main jump is at 400 memory to use can be anything
before this

?

0

Publication author

offline 20 hours

mus@shi9

0
Comments: 1160Publics: 2778Registration: 06-03-2017

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
Codetapper
19 years ago

Rather than assuming the Amiga has memory at $a0000 you should just call jsr AllocMem(a6) with the amount of memory you need and use that to load the game into. A (decent) crack should never require more memory than the original game did and certainly should not assume things about the Amiga!

0
Authorization
*
*

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Registration
*
*
*

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Password generation

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

0
Would love your thoughts, please comment.x
()
x