Converting Rally X PCB to New Rally X

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
Originally this thread started life as a wanted post, the original text at the bottom of this first post and first couple of posts are from that.

A few months passed and we started getting into mame hackery and homebrew so a revisit happened and a few hours later thanks to some awesome intervention from cmonkey we had an in-mame solution at least.

Although MAME already has a driver and ROM set for New Rally X, I wanted to play the game on original hardware, having both a full upright on loan and a cabaret version I bought I figured it would be nice to convert at least one board...... read on.....

------- ORIGINAL POST ------

Just putting this out there, they don't show up often but wondered if someone had a New Rally X PCB set or even a machine they wanted to part with now or in the future.

I don't think a Rally X can be converted but maybe someone might say yes.

RGP2015-01-04 19:31:01
 

cmonkey

Active member
vacBacker
Feedback
2 (100%)
Credits
1,626CR
MAME driver for Rally-X does seem to indicate that New Rally-X runs on the same hardware so I wouldn't be surprised if a rom+prom swap wasn't possible. I haven't studied it in great detail though so please don't take my word as gospel.
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
Given my new found hackery of MAME etc (thanks to cmonkey and the homebrew section) I decided to revisit this so I looked in the driver for Rally X and New Rally X

Rally X:

Code:
ROM_START( rallyx )

ROM_REGION( 0x10000, "maincpu", 0 )

ROM_LOAD( "1b",           0x0000, 0x1000, CRC(5882700d) SHA1(b6029e9730f1694894fe8b729ac0ba8d6712dea9) )

ROM_LOAD( "rallyxn.1e",   0x1000, 0x1000, CRC(ed1eba2b) SHA1(82d3a4b34b0ff5cfdb8ca7c18ad5c63d943b8484) )

ROM_LOAD( "rallyxn.1h",   0x2000, 0x1000, CRC(4f98dd1c) SHA1(8a20fadcea76802d1c412ba62086abb846ad54a8) )

ROM_LOAD( "rallyxn.1k",   0x3000, 0x1000, CRC(9aacccf0) SHA1(9b22079972c0f9970d62d62751db4783a87796d5) )

ROM_REGION( 0x1000, "gfx1", 0 )

ROM_LOAD( "8e",           0x0000, 0x1000, CRC(277c1de5) SHA1(30bc57263e8dad870c501c76bce6f42d69ab9e00) )

ROM_REGION( 0x0100, "gfx2", 0 )

ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  /* Prom type: IM5623    - dots */

ROM_REGION( 0x0160, "proms", 0 )

ROM_LOAD( "rx1-1.11n",    0x0000, 0x0020, CRC(c7865434) SHA1(70c1c9610ba6f1ead77f347e7132958958bccb31) )  /* Prom type: M3-7603-5 - palette */

ROM_LOAD( "rx1-7.8p",     0x0020, 0x0100, CRC(834d4fda) SHA1(617864d3df0917a513e8255ad8d96ae7a04da5a1) )  /* Prom type: IM5623    - lookup table */

ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  /* Prom type: N82S123N  - video layout (not used) */

ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  /* Prom type: M3-7603-5 - video timing (not used) */

ROM_REGION( 0x0200, "namco", 0 ) /* sound proms */

ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  /* Prom type: IM5623  */

ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  /* Prom type: IM5623 - not used */

ROM_END

New Rally X:

Code:
ROM_START( nrallyx )

ROM_REGION( 0x10000, "maincpu", 0 )

ROM_LOAD( "nrx_prg1.1d",  0x0000, 0x0800, CRC(ba7de9fc) SHA1(2133ca327589600bcbd796c213f034daa0457f72) )

ROM_CONTINUE(             0x1000, 0x0800 )

ROM_LOAD( "nrx_prg2.1e",  0x0800, 0x0800, CRC(eedfccae) SHA1(9fca8500f724864a2b73e38bd40cbaeef41617d7) )

ROM_CONTINUE(             0x1800, 0x0800 )

ROM_LOAD( "nrx_prg3.1k",  0x2000, 0x0800, CRC(b4d5d34a) SHA1(c533470aac040b3471d79fd6d35beb4fd4b5bb19) )

ROM_CONTINUE(             0x3000, 0x0800 )

ROM_LOAD( "nrx_prg4.1l",  0x2800, 0x0800, CRC(7da5496d) SHA1(ffac2c07dda57285673073266712fa2987e3b34f) )

ROM_CONTINUE(             0x3800, 0x0800 )

ROM_REGION( 0x1000, "gfx1", 0 )

ROM_LOAD( "nrx_chg1.8e",  0x0000, 0x0800, CRC(1fff38a4) SHA1(5f6ccce2e0daad5915d017e8d067f187eb2ed41d) )

ROM_LOAD( "nrx_chg2.8d",  0x0800, 0x0800, CRC(85d9fffd) SHA1(12dff66d98a808b9dc952b2d87a56308b46a973e) )

ROM_REGION( 0x0100, "gfx2", 0 )

ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  /* Prom type: IM5623    - dots */

ROM_REGION( 0x0160, "proms", 0 )

ROM_LOAD( "nrx1-1.11n",   0x0000, 0x0020, CRC(a0a49017) SHA1(494c920a157e9f876d533c1b0146275a366c4989) )  /* Prom type: M3-7603-5 - palette */

ROM_LOAD( "nrx1-7.8p",    0x0020, 0x0100, CRC(4e46f485) SHA1(3f013aafba96a76d410f2db16d1d24d2fb257aaf) )  /* Prom type: IM5623    - lookup table */

ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  /* Prom type: N82S123N  - video layout (not used) */

ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  /* Prom type: M3-7603-5 - video timing (not used) */

ROM_REGION( 0x0200, "namco", 0 ) /* sound proms */

ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  /* Prom type: IM5623  */

ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  /* Prom type: IM5623 - not used */

ROM_END

It looks like the 11n, 8p, 4n, 4k, 2m, 3p, 8m can just be swapped - in fact, I copied them over and ran the Rally X driver and it worked still.

I'm stuck about the ROMs though.

Rally X has

4kb -> 1b

2kb -> 8e

4k -> 1e

4k -> 1h

4k -> 1k

New Rally X has

2k -> 8e

2k -> 8d

4k -> 1d

4k -> 1e

4k -> 1h

4k -> 1l

According to the driver the following memory map is present on Rally X

$0000-$0FFF "1B"

$1000-$1FFF "1E"

$2000-$2FFF "1H"

$3000-$3FFF "1K"

I get confused in the driver with ROM_REGION blocks as maincpu has 0x10000

It looks like you should be able to copy NRX/1D to RX/1B, NRX/1E to RX/1E, NRX/1K RX/1H and NRX/1L to RX/1K

However, if I do that I just get a ROM 1 error and the board resets.

Interesting....

Possibly shift this thread to tech section?
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
Funnily enough we had that conversation a bit back as I love New Rally X, i'm custodian of his RX cab and bought a Cabaret RX last year.

I wanted to convert the Cabaret RX to NRX but the boards are rarer than rocking horse droppings.
 

Equites

Chief Sheesher®
vacBacker
Feedback
34 (100%)
Credits
3,299CR
Rally X can be converted to run New Rally X (or is it the other way around?).

I know Mark Speath was selling a few PCBs that could be switched at the flick of a switch.
 

cmonkey

Active member
vacBacker
Feedback
2 (100%)
Credits
1,626CR
The memory map on New Rally X is a little different to Rally X so you need to do a bit of rom manipulating to get New Rally X to work on a Rally X board James.

That's what the ROM_CONTINUE stuff is all about in the driver. Taking for example rom 1d for New Rally X, the first half of that 4kb rom (0-$7ff) is loaded to addresses 0-$7ff but the second half is then mapped to $1000-$17ff rather than the $800-$fff that you might expect.

So to cure it you need to copy the second half of the some roms to the first half of some other roms and vice versa in the following fashion :-

first half of 1e to second half of 1d

second half of 1d to first half of 1e

first half of 1l to second half of 1k

second half of 1k to first half of 1l

You can give this a go yourself or if you get totally stuck drop me a PM or email and I'll send you altered roms.

Also, 8e on rallyx should be 4kb but you've put it down as 2kb, was that a typo or have you got a bad rom set?
 

cmonkey

Active member
vacBacker
Feedback
2 (100%)
Credits
1,626CR
Oh yeah, I forgot to mention, you also need to merge the 2 x 2kb gfx roms together from New Rally X. To do this append contents of 8d to the end of 8e.

This is tested and working on MAME but it should also work on hardware. (should being the operative word!)
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
Yep, after a secret phone call with the guru and some dd commands in the shell..

Screen_Shot_2015-01-04_at_19.11.49.png


Thanks to Ade for sitting through my keyboard rattling.

It seems not all the PROMs are needed for this but definitely something that controls the colour side, I tried this again with the original PROMs but the new ROMs and it boots fine and the game plays but the colours are wrong.

I'm going to try this on real hardware hopefully in the next week, simple enough to burn 4 EPROMs, if the code boots fine, who can burn some PROMs for me?
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
Needs 2 PROMs only by the looks of things.

nrx1-11.11n (32 bytes)

nrx1-7.8p (256 bytes)

All the others seem to match.

I'll try the modified ROMs first though but if it works this'll fix the other bit.

RGP2015-01-04 19:40:09
 

cmonkey

Active member
vacBacker
Feedback
2 (100%)
Credits
1,626CR
Try it on hardware first before getting new PROMs programmed. You might find that the differences between the PROMs are negligible on hardware.

As I said on the phone dude, I much prefer the CHARANGING STAGE of Rally X to the boring CHALLENGING STAGE of New Rally X
smiley36.gif
(although I do prefer the music from NRX)
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
Sure, i've no intention of doing PROMs until i've tried the EPROMs on hardware.

You can always change 0282-0285 in the 1K ROM to 525241
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
For anyone interested, here's how I did the rom half swapping - I called Ade to ask what he used but couldn't manipulate the GUI quick enough as i'm a keyboardist.

Swapping the ROM halves in shell:

Code:
$ dd if=nrx_prg1.1d bs=2048 of=1d-lo count=1

$ dd if=nrx_prg1.1d bs=2048 of=1d-hi count=1 iseek=1

$ dd if=nrx_prg2.1e bs=2048 of=1e-lo count=1

$ dd if=nrx_prg2.1e bs=2048 of=1e-hi count=1 iseek=1

$ cat 1d-lo 1e-lo >1b

$ cat 1d-hi 1e-hi >1e

I repeated the steps for 1K and 1L creating 1H and 1K

Then finally the graphics ROMs

Code:
$ cat nrx_chg1.8e nrx_chg2.8d >8e

Copied the files into the rallyx decompressed ROM folder along with the PROMs and ran the rallyx driver and it works.

Adrian encouraged me to MD5 check the new files along the way and we compared checksums:

Code:
1B: ce3687

1E: ccc01c

1H: beb2c7

1K: 4a7434

8E: 6f879d

Only using the first 6 digits, its enough.
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
..... I guess I should look for a few bytes of free rom space to fix the freeplay mode as well ....

Dip Switches are at $A100 and its 7 and 8 which need to be on (or 1 and 2) depending on how its viewed from the code.

Theory goes that if I look for something referencing $A100 and checking those bits then i'm part way to it.

RGP2015-01-04 19:58:48
 

SCUBAking

Newbie
Credits
25CR
The memory map on New Rally X is a little different to Rally X so you need to do a bit of rom manipulating to get New Rally X to work on a Rally X board James.

That's what the ROM_CONTINUE stuff is all about in the driver. Taking for example rom 1d for New Rally X, the first half of that 4kb rom (0-$7ff) is loaded to addresses 0-$7ff but the second half is then mapped to $1000-$17ff rather than the $800-$fff that you might expect.

So to cure it you need to copy the second half of the some roms to the first half of some other roms and vice versa in the following fashion :-

first half of 1e to second half of 1d

second half of 1d to first half of 1e

first half of 1l to second half of 1k

second half of 1k to first half of 1l

You can give this a go yourself or if you get totally stuck drop me a PM or email and I'll send you altered roms.

Also, 8e on rallyx should be 4kb but you've put it down as 2kb, was that a typo or have you got a bad rom set?
Sorry for the necros bump, and my ignorance, but it looks to me like 1/2 of each of these roms is being ignored and the same half is being used twice?

1711569887936.png
 

SCUBAking

Newbie
Credits
25CR
Update - per @Jamesv833 he helped me understand.
These instructions are saying to replace not add these together.

replace first half of 1e over top the second half of 1d

I was reading HIGH1E concatenated to LOW1D

I will report back with testing tonight after I teach on real hardware.
 

SCUBAking

Newbie
Credits
25CR
For those trying to follow the files I added to get correct hashes:

1B = 1D high + 1E high
1E = 1D low + 1E low
1H = 1K high + 1L high
1K = 1K low + 1L high
8e = 8e (2kb) + 8d (2kb)

All these files are already built and available in nrallyxb.zip (New Rally X (bootleg?) romset, but I wanted to do it myself and understand the process.
Thanks!
 
Top