News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

Converting a game to ROM - and LOTS of ROM files inside!

Started by FRAGKI-2012, 00:30, 28 March 13

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

tastefulmrship

#175
Quote from: Bryce on 08:58, 27 September 13
Bryce - Tastefulmrship's official Wiki uploader.
I'd do it myself, but I've got;

- A feck load of games to ROM-up!
- My 4th musicdisk (coding by ****, graphics by *********)
- Two game projects with ****
- Converting Pocoro & Shape Shifter to m/code.
- Fixing my teleport-coded JSW:TFF with the Cartographer fix. (ok, that's an easy one, but I have to prioritise)

As well as that, I've got TBs of pr0nography to download and peruse.
Basically, I'm at day 2 of a 4 day "rest" and I'm 0.1% into my scheduled workload. (SMART objectives? Feck that!)



EDIT: WRIGGLER is only 1 ROM, not 2! Ta! ^_^

Bryce

#176
Quote from: tastefulmrship on 11:04, 27 September 13
EDIT: WRIGGLER is only 1 ROM, not 2! Ta! ^_^

Oops, copy paste strikes again.

You say it as if I'm sitting around here with my thumb up my ass. I have other things to do too, but I thought the files would get lost and forgotten in the Forum.

Edit: I've also added a News Item to the main page to let others know about it too.

Bryce.

Axelay

#177
Ah well, I got a little nostalgic and converted some of the earliest games I had.   :)  So some ROMs nobody asked for:
|FINDERS Keepers, |SPEEDKING and Into |OBLIVION.


EDIT:  Three more ROMs. |HARVEY Headbanger, |SENTINEL and |ARKANOID

Bryce

#178
For those who (like me), intend wasting their entire weekend enjoying some serious gaming on their MegaFlash at the weekend. I've compiled the entire collection of (new and existing) ROM games onto a collection of DSKs and HFEs with CPC friendly filenames, ready for loading with the ROManager. Each zip file contains 6 DSK or HFE files with all currently available ROM Games. There are up to 10 ROMs/Games on each disk in alphabetical order (ie: ROM_Games_1.dsk contains Games starting with A and B). Have fun.

Bryce.

Edit: The 3 games from Axelay directly above are not included.

Edit 2: Axelays 3 new games have now been added to ROM_Games_6.dsk/hfe and to the Wiki.

TFM

Quote from: tastefulmrship on 20:52, 26 September 13
Next batch of ROMs...
(I can't be arsed creating lots of posts for this stuff... I'm just gonna fill this one instead!)


EDIT: Although it's nice to have my name against the ROMs done in the ROM List on CPCWiki, but wouldn't it be a better idea to have the bar command in the comments field, instead? Some of them are not easy to work out & none of them have an initialisation message.




1. |AHHH by CRL.


That batch doesn't work.

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Gryzor

53 FUCKING ROMs! This is amazeballs!


I've stickied the thread (and changed its title too).


Btw, isn't Axiens done by TFM?

mr_lou


tastefulmrship

Quote from: TFM on 17:04, 27 September 13
That batch doesn't work.
Ok, well it works fine on WinAPE (tested with 464 and 6128 ROMs). Maybe it's one of the few titles that needs to be run through the checksum patcher before it will work in a real CPC?!?!? Worth a try, huh?

TFM

Try to install a couple of ROMs more... maybe it works fine without other ROMs... dunno what's the problem (used WinCPC to test it). Good luck!



TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

tastefulmrship

#184
Quote from: TFM on 19:21, 27 September 13
Try to install a couple of ROMs more... maybe it works fine without other ROMs... dunno what's the problem (used WinCPC to test it). Good luck!
Here's a screenie from WinAPE with a few ROMs "plugged in".
Still works fine on WinAPE.



EDIT: Also tried it with no "other" ROMs installed. Still ok in this emulator. ANYONE ELSE GOT A PROBLEM WITH THIS? (especially on real hardware)

EDIT: ONE MAN AND HIS |DROID. Although I love the CPC music, I do wish they'd used the Rob Hubbard classic instead!

EDIT: Even though I am already 90% through converting this, ralferoo has already converted it... and it doesn't yet appear in the ROM list.

EDIT: Ok, 6 bottles of red in 2 days is seriously impairing my ability to remember how to convert this stuff... thankfully THE |PRIZE isn't too difficult to do and so is attached below! ^_^

EDIT: Right, I'm taking a little "time-out" now and enjoying some CPC demo awesomeness! Type |SUGARLUMPS, press ENTER, put your feet up and let your CPC chill you out! (Goes well with a nice Merlot, by the way!)

EDIT: This may be the Spanish red talking, but I'm dang fecking proud of this one! |URIDIUM for your pleasure, sirs. No offence to Steve Turner, but J.Dave Rogers just top-trumped you with your OWN music! Booyakasha!

EDIT: It was lucky I did so much work on the Hewson titles back in the day (ie last year)... here's a reworked Exomizer original pack of AIR TRAFFIC CONTROL. |ATC does the dirty deed, here!

00WReX

Three "simple to convert" games from me...
I have updated the wiki rom list with these.
Tested on WinCPC & a real CPC6128.
Very simple conversions as I mentioned, but I have never converted a game to ROM before, so gotta start somewhere.

CPC Invaders (|CPCINVADERS to start)
Space Hawks (|HAWKS to start)
ZblastSD (|ZBLAST to start)

Cheers,
Shane
[attachurl=2]
[attachurl=3]
[attachurl=4]
The CPC in Australia...
Awa - CPCWiki

ralferoo

Quote from: tastefulmrship on 19:50, 27 September 13
EDIT: Right, I'm taking a little "time-out" now and enjoying some CPC demo awesomeness! Type |SUGARLUMPS, press ENTER, put your feet up and let your CPC chill you out! (Goes well with a nice Merlot, by the way!)
Thanks! But there is an "official" ROM that's built automatically if you use the source release at ralferoo/sugarlumps · GitHub
Doesn't look like I ever made that public though (as in it was in the github but I never released the image), so here's the official one. It'll be almost immeasurably quicker too as it decompresses directly from ROM. ;)

tastefulmrship

#187
Today's feast of bytes;

|RALLY2 to play Loriciels' RALLY 2.
|GPDRIVER to play Britannia's GRAND PRIX DRIVER.



EDIT: There were more, but I'm too fecking tired... I might finish them tomorrow!

00WReX

Quote from: tastefulmrship on 18:52, 28 September 13
Today's feast of bytes;

|RALLY2 to play Loriciels' RALLY 2.
|GPDRIVER to play Britannia's GRAND PRIX DRIVER.


EDIT: There were more, but I'm too fecking tired... I might finish them tomorrow!

Added to the Wiki ROM GAME list (thought I'd give Bryce a break  ;) )
ROM List - CPCWiki

Cheers,
Shane
The CPC in Australia...
Awa - CPCWiki

tastefulmrship

#189
Quote from: 00WReX on 00:53, 29 September 13
Added to the Wiki ROM GAME list (thought I'd give Bryce a break  ;) )
ROM List - CPCWiki
Mwahahahahahaha! I will get you ALL doing my dirty work! ^_^
(Thanks, though!)




And here's a little something something I'm proud to post - |SNOOKER loads and plays (the horrible) ALEX HIGGINS WORLD SNOOKER, but it does display the brilliant loading screen of the late, great man himself. Press any key to actually "play" the game.
(* No offense to Chris Hunt)

Secondly, here's |MOONBUGGY by Anirog Software. I always loved this game, but it's even better when you switch on TURBO MODE in WinAPE. Fecking insane! ^_^

Also, I've just completed |AIRWOLF, however I've noticed that the "copyright" notice stays on the screen during play (behind the lives counter). It doesn't look too bad, but it looks obvious. I might redo it if people think it looks shyte, but I've had to delete all my working files due to the .dsk file having an error! (Oh, and it's another press any key to play job!)

|LOOM loads up this preview version (and only existing as far as CPCPower is concerned) of their Connect 4 clone. Nice music as ever from the Arkos crew. ^_^

|DRAGONSGOLD is the next one. Such a difficult game to convert. 16000 bytes in size, 16384 available for the ROM image. Yawn!

(Sorry... I just have to...) Now, FU-KING IN LAS VEGAS! (Hahahahahahaha! Sometimes I just make myself laugh so much I die a little inside!) |FUKUNG to run this horrid platformer!

00WReX

Ahh, nice one...Moon Buggy is one of my favourites, great game.

Added both all three
Alex Higgins World Snooker.rom
Moon Buggy.rom
Airwolf.rom
Dragon's Gold.rom
Fu-Kung In Las Vegas.rom

to the Wiki list.

ROM List - CPCWiki

Cheers,
Shane
The CPC in Australia...
Awa - CPCWiki

Axelay

So, I've done a little experiment to try and do a two ROM game.  I thought for fun I'd do one of the games I got with the 464, which was Highway Encounter.  (funnily enough, one of the others was Moon Buggy!  :) )  The version of the game on CPC-Power by Nich Campbell was already packed into a single file with the loading screen, making it an easy test case, so I just made sure the game was still over 16k without the load screen, which it was, and produced the attached two ROMs for Highway Encounter.  Use |HIGHWAY to start.


I have taken the approach of searching through all the ROMs to find the second, and aborting back to BASIC if it's not found, but I have a couple of questions if anyone can answer them.


Firstly, I only search up to &fb as I read that ROMs &fc-&fd are off limits because of how those addresses are dealt with, and also on this thread I think I saw mention of the maximum number of ROMs being 252.  Is that a reference to 0,7,&fc,&fd, or maybe to &fc up, or can &fe-&ff be used and I need to add a check for that theoretical possibility?


Secondly, in the case of returning to BASIC after not finding the second ROM, I've used the SCF before the final RET as was used on the initialisation routine, but is that needed, or is it only required for the initialisation routine?


Also, I've preserved all the registers I use just because I dont know if they need to be preserved or not.  Is that required?  Is there any documentation I can read online about the conditions for making an RSX that plays nice with the OS?


I'm attaching the ROM boot code in case it's useful to anyone, or if there's glaring issues that anyone can spot!  I havent had a chance to try them on anything except an emulator just yet.


Work_Space equ &a410
Work_Offset equ &c000-Work_Space

KL_CURR_SELECTION equ &B912 ; KL_CURR_SELECTION (A = ROM select address for our rom)
KL_ROM_SELECT equ &b90f ; C = required ROM, C returns previous ROM, B returns ROM enable states
KL_U_ROM_DISABLE equ &b903 ; disable upper ROM

; ---------------------------------------------------------------------------
ORG  &C000
write direct "b:HIGHWAY1.ROM"
NOLIST
; ---------------------------------------------------------------------------
; ROM Header
rom_type
    DEFB 1                          ; Background ROM

rom_version
    DEFB 0,0,1                      ; Version 0.0.1

; ---------------------------------------------------------------------------
rsx_names
    DEFW rsx_name_table

; ---------------------------------------------------------------------------
    JP   initialize_rom             ; Called by the firmware during system initialization
    JP   run_game                   ; Launch the game

rsx_name_table
    DEFB " Highway Encounter" , " "+&80                  ; Use a name that basic can not run
    DEFB "HIGHWA","Y" + &80            ; RSX for launch the game (|GAME)
    DEFB 0                          ; End of RSXs name table

; ---------------------------------------------------------------------------
; Show initialization text and telling the firmware everything OK
; ENTRIES:
;;     DE: Pointer to the lowest RAM address that we can use.
;;     HL: Pointer to the highest RAM address that we can use.
; EXITS:
;     Carry true.
;;     DE: Pointer to the new lowest RAM address that we can use.
;;     HL: Pointer to the new highest RAM address that we can use.
;     A, BC and the other flags corrupt.
;     All others registers preserved.
; ---------------------------------------------------------------------------
initialize_rom
    SCF                             ; Signal to the firmware everything was correct
    RET

; ---------------------------------------------------------------------------
; RSX '|GAME' launch the game
; ---------------------------------------------------------------------------
run_game
    push hl
    push de
    push bc
    push af

; copy down patch code
    ld hl,FindROM
    ld de,Work_Space
    ld bc,FindROMEnd-FindROM
    ldir
; go find the ROM
    call Work_Space ; if routine returns, ROM 2 was not found
    LD   HL,fail_message
    CALL show_message
; exit ROM and return to BASIC
    pop af
    pop bc
    pop de
    pop hl
    SCF                             ; Signal to the firmware everything was correct
    RET

; ---------------------------------------------------------------------------
; Print a string finished in $FF using the firmware
; ENTRIES:
;;    HL : Pointer to the string
; ---------------------------------------------------------------------------
show_message
    LD   A,(HL)
.loop_show_message
    CALL &BB5A                      ; TXT_OUTPUT
    INC  HL
    LD   A,(HL)
    CP   &FF
    JR   NZ,loop_show_message
    RET

fail_message
    DEFB "Highway Encounter ROM 2 not found",&FF

.FindROM
    ; Get the ROM number
    CALL KL_CURR_SELECTION
    ld (Work_Space+&80),a ; store current ROM in &a490
    inc a
    ld c,a ; start checking from first ROM after the boot ROM
.FindROMLoop
    push bc
    call KL_ROM_SELECT ; select ROM defined by C
    ld bc,FindROMEnd-SearchText
    ld de,SearchText-FindROM+Work_Space ; Start of search string after code moved to RAM
    ld hl,&c001 ; position of ROM 2 label
.FindTextLoop
    ld a,(de)
    inc de
    cpi
    jr nz,TextNotMatched
      jp pe,FindTextLoop-FindROM+Work_Space ; if not end of string, keep matching chars
;
; have reached end of string, and all chars matched, so ROM has been found
    pop bc ; get ROM number back in c, if required
; copy this code block to main RAM
    ld hl,&c000+FindROMEnd-SearchText+1 ; beginning of data in second rom
    ld de,&7302
    ld bc,11082
    ldir
    ld a,(Work_Space+&80) ; get boot ROM number back
    ld c,a
    call KL_ROM_SELECT ; select ROM defined by C
    ld hl,Highway1 ; start of data in boot block to copy down
    ld de,&4302
    ld bc,&3000
    ldir
; disable the upper ROM, no longer required
    call KL_U_ROM_DISABLE
; remove return address and saved registers, not returning to ROM boot routine
    pop hl ; return address
    pop af
    pop bc
    pop de
    pop hl
; go to start of game depacker
    jp &9d00
;
.TextNotMatched
    pop bc
    inc c
    ld a,&fb ; &fc-&fd unusable?
    cp a,c
    jr nc,FindROMLoop
; if c reached ROM &fc, have not found second ROM, exit back to BASIC
    ld a,(Work_Space+&80) ; get boot ROM number back
    ld c,a
    call KL_ROM_SELECT ; select ROM defined by C
    ret

.SearchText
    text "Highway Encounter ROM 2"

.FindROMEnd

; data
    read "highway_1.asm"

; ---------------------------------------------------------------------------
; Pad the rom with zeros until the 16 KBs
;    DEFS $0-$                       ; in pasmo
;    ORG  $10000                    ; in vasm
defs &f1f
list
; ---------------------------------------------------------------------------
.RomEnd



and here's the simple code from the second ROM:
; ---------------------------------------------------------------------------
ORG  &C000
write direct "b:HIGHWAY2.ROM"
NOLIST
; ---------------------------------------------------------------------------
; ROM Header
.rom_type
    DEFB 2                          ; Extension Foreground ROM

; search tag
    text "Highway Encounter ROM 2"

.Data2_Start
; data
    read "highway_2.asm"

; fill rom to end
    defs &149e
list
; ---------------------------------------------------------------------------
.RomEnd



EDIT: corrected error in the source of the boot ROM. Removed faulty Highway Encounter ROM.  See my post on page 15 for updated version.

ralferoo

Quote from: Axelay on 14:18, 29 September 13
Firstly, I only search up to &fb as I read that ROMs &fc-&fd are off limits because of how those addresses are dealt with, and also on this thread I think I saw mention of the maximum number of ROMs being 252.  Is that a reference to 0,7,&fc,&fd, or maybe to &fc up, or can &fe-&ff be used and I need to add a check for that theoretical possibility?
Yes, the maximum is 252. If you wrote directly to &DFxx, you could use the remaining 4 slots, but the issue is that the firmware uses this convention for most of the ROM related functions:
Quote
&00 to &FB-- select the given upper ROM, enable the upper ROM and disable the lower ROM
&FC - no change to the ROM selection, enable the upper and lower ROMs
&FD - no change to the ROM selection, enable the upper ROM and disable the lower ROM
&FE - no change to the ROM selection, disable the upper ROM and enable the lower ROM
&FF - no change to the ROM selection, disable the upper and lower ROMs

redbox

Quote from: Axelay on 14:18, 29 September 13
I have taken the approach of searching through all the ROMs to find the second, and aborting back to BASIC if it's not found

That's so cool, you've made my day  :)

tastefulmrship

#194
Ok, here's today's ROM. (I'm starting at a new school today & haven't got time to play around with ROM imaging until I get home).
GAME OF |DRAGONS, the ropey but pretty Amsoft platformer.

Ah, go on then... have |JAMMIN as well as a "bonus".

Bryce

At this rate my HxC is starting to gather dust and my MegaFlash is overheating. I need to look at making a 128 ROM version :D

Can someone take a look at doing AgentXII. Was one of my favourite games and the music wasn'T bad either :)

Bryce.

mr_lou

Quote from: Bryce on 08:23, 30 September 13At this rate my HxC is starting to gather dust and my MegaFlash is overheating. I need to look at making a 128 ROM version :D

At this rate it looks more like you have to look into making one with 252 slots.  :D

Bryce

Without making the mistake of offering yet another new project. It would be rather easy to add parallel Flash ICs to the MegaFlash. This wouldn't give you 252 ROMs all at the same time, but you could have multiple banks of 32 ROMs that you could select manually with DIP switches.

btw: I've updated the Wiki page again with the ROMs from Axelay and Tastefulmrship that hadn't been added yet, so I think the list is complete at the moment (until tastefulmrship logs on that is).

Bryce.

mr_lou

Quote from: Bryce on 09:23, 30 September 13Without making the mistake of offering yet another new project.

What are you talking about?  :) Why would it be a mistake to offer such a project?  :)

Quote from: Bryce on 09:23, 30 September 13It would be rather easy to add parallel Flash ICs to the MegaFlash. This wouldn't give you 252 ROMs all at the same time, but you could have multiple banks of 32 ROMs that you could select manually with DIP switches.

Not a bad idea. Personally, I would wait for the 252-slot version though, and hope that it would be relatively easy to replace the 32-slot version with the 252-slot version without sending my CPC to the "shop".  :)

Bryce

Well the difference and problems associated with these solutions are as follows:

Although the CPC can technically (electronically) accept 252 ROMs, the RAM couldn't handle it. Each ROM takes up a little bit of RAM to record its RSX and ROM position/number. If I made a 252 Slot Mega-MegaFlash, electronically it would work fine, but as soon as you have installed about 64 ROMs most of them wouldn't run any more due to lack of RAM.
My solution would be to make a switchable system, where the CPC only sees 32 ROMs, but you would have multiple banks of 32. So you could have a Utilities Bank, several Gaming Banks, a FutureOS Bank, a SymbOS Bank etc. The DIP switches would decide which bank the CPC sees when you start the computer. This way the CPCs RAM stays relatively free. You'd have all the ROMs installed all the time, but you could only swap banks when the CPC is turned off. It also wouldn't be limited to 252 ROMs, you could do this endlessly. And no, you wouldn't need to send me your CPC, the new circuit would plug into the MegaFlash where the Flash IC is currently installed. All the signals I'd need are present in that socket :)

Bryce.

Powered by SMFPacks Menu Editor Mod