InterPhase (1990) ImageWorks
——————————————
what you will need
——————–
original game (i need a stabe link for this one )
an amiga or an amiga emulator (winuae)
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 ?