R-Type was written in 1987 by Keith A Goodyer for Activion (Electric Dreams label) which gave him only 21 days to write the port, by using the ZX Spectrum version (written by Bob Pape).
He used the PDS system written by Foo Katan, probably the world first IDE editor, cross assembler, linker and debugger development. it was running on a PC (ms-dos) with extra hardware that
allowed to send the compilted code directly onto the target hardware. It eventually supported development for Z80, 6502 and 68K.
Here is the method he used :
Given the extream time limits i was given to the port this is basic strategy that I took to do the port... (I hope i remember all this correctly).
The spectrum had its ROM in the lower 16K, and the 48K of RAM above it. So I configured the Amstrad to locate the MODE 1 screen in the lower 16K, and loaded the spectrum version in the top 48K (As it would be located on a spectrum - and ran it). I then went through the code line by line, modifying anything that 'plotted' pixels on the screen to something that would plot the equivalent pixels on on Arnolds screen.
As the spectrum screen is 'Attribute Based' I continued to used all of Bobs 'Colour' code, and the whole 768 bytes of the spectrum colour attribute screen is running on the Amstrad version. When ever there was a 'Byte' write to the spectrum screen, I would use a look up table to indexed by the byte and the value of the corresponding spectrum colour attribute to extract the two bytes required to produce the correct pixels on the CPC screen. Then all I had to do was port the control (Sinclair/Kempston) to CPC stuck, and the Sound and the job was done. A few days with DJL to add the 'Protection' and the job was done.
Now the sad news... about 5 years ago, I had a massive leak in my roof, and all my records (including the source code) was destroyed.
Now some Trivia: At the time I had a 464, 664 and a 6128 - I took the final masters down to Activision, and it would not run on their 6128. It tuned out that at some point in time, Amstrad had made a small revision to the design that meant that a the interrupt would fire just before a frame fly back pulse, where on previous versions it would occur just after. The net effect was that when my code was waiting for the frame fly back pulse to occur, the interrupt would trigger just before it, go off do some processing, and by the time it had finished the processing and returend to the main code loop, had missed the pulse - and locked up.
A R-Type remake by Fano (code), TotO (graphics) et iXien(sound) is going to be available very soon, you can actually read Fano's interview on Push'N'Pop.
I let you check differences between the screenshot of the original R-Type and its remake (first screen of the Youtube video)..