Hi all.
I'm currently trying to add to Mame a new game called "Space Ship" from Sega. Game is a clone of Cinematronic's Space Wars. Probably Sega bought a license to Cinematronic. As far as I known, I own the only known cabinet. I finished to dump all bipolar PROMs today. Check this message.
PCB is extremely closed to a CCPU with some differences in : - one CCPU PROM content (it does not affect CCPU behavior) - chips used to store program code : SEGA uses 8 chips of 1024 x 4 bits (Cinematronic uses 2 chips of 8 bits).
There are also some minor (but real) differences in game. play.
Here is my question : CCPU uses a 16 bits wide data bus. For example, in spacewar, Cinematrinics uses two 8 bits-wide chips. In spacewar's ROM settings, the ROM_LOAD16_BYTE macro is used twice so that 1 file is loaded at even addresses and an other file is loaded at odd addresses.
But for Space Ship, for the same kind of result, Sega uses eight 4 bits-wide chips. It means that : - high nibble of even bytes are stored in file #1 - low nibble of even bytes are stored in file #2 - high nibble of odd bytes are stored in file #3 - low nibble of odd bytes are stored in file #4 There are file #5 to file #8 used for the 2nd part of the address space.
How can I used a mix of ROM_LOAD_NIB_HIGH and ROM_LOAD16_BYTE ? What I need is : - "ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(1)" - "ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(1)"
There is no "ROM_LOAD_xxxx" macro that fits Sega's design for memory layout.
What should I do ? a) use directly macro ROMX_LOAD() with the correct arguments ? b) create 2 new macros in romload.h ? c) merge PROM dumps to have 8 bits dumps (but it's not accurate and does not match the real hardware)
Thanks for your help.
Regards,
Fab
|