mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
Basic M6502 hook-up in Royal Gum [David Haywood]
Moved Miracle Derby inside homedata.c driver [David Haywood]
This commit is contained in:
parent
6d1884e511
commit
00d405a975
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1862,7 +1862,6 @@ src/mame/drivers/miniboy7.c svneol=native#text/plain
|
||||
src/mame/drivers/minivadr.c svneol=native#text/plain
|
||||
src/mame/drivers/mirage.c svneol=native#text/plain
|
||||
src/mame/drivers/mirax.c svneol=native#text/plain
|
||||
src/mame/drivers/mirderby.c svneol=native#text/plain
|
||||
src/mame/drivers/missb2.c svneol=native#text/plain
|
||||
src/mame/drivers/missile.c svneol=native#text/plain
|
||||
src/mame/drivers/mitchell.c svneol=native#text/plain
|
||||
|
@ -611,7 +611,7 @@ ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( pteacher_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(pteacher_videoram_w) AM_BASE_MEMBER(homedata_state, videoram)
|
||||
AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_BASE_MEMBER(homedata_state, videoram)
|
||||
AM_RANGE(0x4000, 0x5eff) AM_RAM
|
||||
AM_RANGE(0x5f00, 0x5fff) AM_RAM
|
||||
AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
|
||||
@ -1440,8 +1440,159 @@ static MACHINE_DRIVER_START( lemnangl )
|
||||
MDRV_VIDEO_START(lemnangl)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static INPUT_PORTS_START( mirderby )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( cpu0_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_RAM // videoram
|
||||
AM_RANGE(0x4000, 0x5fff) AM_RAM
|
||||
AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
|
||||
AM_RANGE(0x7000, 0x77ff) AM_RAM
|
||||
//0x7ff0 onward is the blitter
|
||||
AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static UINT8 prot_data;
|
||||
|
||||
static READ8_HANDLER( mirderby_prot_r )
|
||||
{
|
||||
prot_data&=0x7f;
|
||||
return prot_data++;
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( mirderby_prot_w )
|
||||
{
|
||||
prot_data = data;
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_BASE_MEMBER(homedata_state, videoram)
|
||||
AM_RANGE(0x4000, 0x5fff) AM_RAM
|
||||
AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
|
||||
AM_RANGE(0x7000, 0x77ff) AM_RAM
|
||||
AM_RANGE(0x7800, 0x7800) AM_READWRITE(mirderby_prot_r, mirderby_prot_w) // protection check? (or sound comms?)
|
||||
AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const gfx_layout mirderbychar_layout =
|
||||
{
|
||||
8,8,
|
||||
RGN_FRAC(1,1),
|
||||
4,
|
||||
{ 0, 1, 2, 3 },
|
||||
{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
|
||||
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
|
||||
32*8
|
||||
};
|
||||
|
||||
static GFXDECODE_START( mirderby )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, mirderbychar_layout, 0x0000, 0x10 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, mirderbychar_layout, 0x0000, 0x10 )
|
||||
GFXDECODE_END
|
||||
|
||||
/* Miracle Derby - Ascot
|
||||
|
||||
- has the same GX61A01 custom (blitter?) as homedata.c and a 'similar' CPU setup (this has more CPUs)
|
||||
and similar board / rom numbering (X**-)
|
||||
|
||||
The drivers can probably be merged later, although the current per-game handling of the blitter in
|
||||
homedata.c should be looked at.
|
||||
|
||||
|
||||
|
||||
Notes from Stefan Lindberg:
|
||||
|
||||
Eprom "x70_a04.5g" had wires attached to it, pin 2 and 16 was joined and pin 1,32,31,30 was joined, i
|
||||
removed them and read the eprom as the type it was (D27c1000D).
|
||||
|
||||
Measured frequencies:
|
||||
MBL68B09E = 2mhz
|
||||
MBL68B09E = 2mhz
|
||||
z80 = 4mhz
|
||||
YM2203 = 2mhz
|
||||
|
||||
See included PCB pics.
|
||||
|
||||
|
||||
|
||||
Roms:
|
||||
|
||||
Name Size CRC32 Chip Type
|
||||
---------------------------------------------------------------------------------
|
||||
x70a07.8l 256 0x7d4c9712 82s129
|
||||
x70a08.7l 256 0xc4e77174 82s129
|
||||
x70a09.6l 256 0xd0187957 82s129
|
||||
x70_a03.8g 32768 0x4e298b2d 27c256
|
||||
x70_a04.5g 131072 0x14392fdb D27c1000D
|
||||
x70_a11.1g 32768 0xb394eef7 27c256
|
||||
x70_b02.12e 32768 0x76c9bb6f 27c256
|
||||
x70_c01.14e 65536 0xd79d072d 27c512
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/* clocks are 16mhz and 9mhz */
|
||||
|
||||
static MACHINE_DRIVER_START( mirderby )
|
||||
|
||||
/* driver data */
|
||||
MDRV_DRIVER_DATA(homedata_state)
|
||||
|
||||
MDRV_CPU_ADD("maincpu", M6809, 16000000/8) /* 2 Mhz */
|
||||
MDRV_CPU_PROGRAM_MAP(cpu2_map)
|
||||
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD("cpu0", Z80, 16000000/4) /* 4 Mhz */
|
||||
MDRV_CPU_FLAGS(CPU_DISABLE)
|
||||
MDRV_CPU_PROGRAM_MAP(cpu0_map)
|
||||
|
||||
MDRV_CPU_ADD("cpu1", M6809, 16000000/8) /* 2 Mhz */
|
||||
MDRV_CPU_PROGRAM_MAP(cpu1_map)
|
||||
MDRV_CPU_FLAGS(CPU_DISABLE)
|
||||
//MDRV_CPU_VBLANK_INT("screen", mirderby_irq)
|
||||
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(6000))
|
||||
|
||||
/* video hardware */
|
||||
MDRV_SCREEN_ADD("screen", RASTER)
|
||||
MDRV_SCREEN_REFRESH_RATE(59)
|
||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
MDRV_SCREEN_SIZE(64*8, 32*8)
|
||||
MDRV_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
|
||||
|
||||
MDRV_GFXDECODE(mirderby)
|
||||
MDRV_PALETTE_LENGTH(0x8000)
|
||||
|
||||
MDRV_PALETTE_INIT(mirderby)
|
||||
MDRV_VIDEO_START(mirderby)
|
||||
MDRV_VIDEO_UPDATE(mirderby)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MDRV_SOUND_ADD("ymsnd", YM2203, 2000000)
|
||||
MDRV_SOUND_ROUTE(0, "mono", 0.25)
|
||||
MDRV_SOUND_ROUTE(1, "mono", 0.25)
|
||||
MDRV_SOUND_ROUTE(2, "mono", 0.25)
|
||||
MDRV_SOUND_ROUTE(3, "mono", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
|
||||
@ -1865,6 +2016,30 @@ ROM_START( mjprivat )
|
||||
ROM_LOAD( "311b03.12e", 0x0000, 0x40000, CRC(5722c341) SHA1(694e63261d91da48c0ed14a44fbc6c9c74b055d9) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( mirderby )
|
||||
ROM_REGION( 0x8000, "cpu0", 0 ) /* Z80 Code */
|
||||
ROM_LOAD( "x70_a11.1g", 0x2000, 0x6000, CRC(b394eef7) SHA1(a646596d09b90eda44aaf8ccbf8f3fccfd3d5dad) ) // first 0x6000 bytes are blank!
|
||||
ROM_CONTINUE(0x0000, 0x2000) // main z80 code is here
|
||||
|
||||
ROM_REGION( 0x10000, "cpu1", 0 ) /* M6809 code */
|
||||
ROM_LOAD( "x70_c01.14e", 0x00000, 0x10000, CRC(d79d072d) SHA1(8e189931de9c4eb520c1ec2d0898d8eaba0f01b5) )
|
||||
|
||||
ROM_REGION( 0x10000, "maincpu", 0 ) /* M6809 code */
|
||||
ROM_LOAD( "x70_b02.12e", 0x8000, 0x8000, CRC(76c9bb6f) SHA1(dd8893f3082d33d366247295e9531f8879c219c5) )
|
||||
|
||||
ROM_REGION( 0x8000, "gfx1", 0 ) // horse gfx
|
||||
ROM_LOAD( "x70_a03.8g", 0x0000, 0x8000, CRC(4e298b2d) SHA1(ae78327d1f30c8d19ef772b82803dab4d6b7b919))
|
||||
|
||||
ROM_REGION( 0x20000, "gfx2", 0 ) // fonts etc.
|
||||
ROM_LOAD( "x70_a04.5g", 0x0000, 0x20000, CRC(14392fdb) SHA1(dafdce473b2d2ebbdbf49fbd12f85c1ad69b2877) )
|
||||
|
||||
ROM_REGION( 0x300, "proms", 0 ) /* colours */
|
||||
ROM_LOAD( "x70a07.8l", 0x000, 0x100, CRC(7d4c9712) SHA1(fe2a89841fdf5e4fd6cd41478ad2f29d28bed54d) )
|
||||
ROM_LOAD( "x70a08.7l", 0x100, 0x100, CRC(c4e77174) SHA1(ada238ded69f01b4daeb0159a2c5c422977bb95e) )
|
||||
ROM_LOAD( "x70a09.6l", 0x200, 0x100, CRC(d0187957) SHA1(6b36c1bccad24708cfa2fc78da08313f9bcfdbc0) )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
static DRIVER_INIT( jogakuen )
|
||||
{
|
||||
@ -1894,6 +2069,12 @@ static DRIVER_INIT( battlcry )
|
||||
state->priority = 1; /* priority and initial value for bank write */
|
||||
}
|
||||
|
||||
static DRIVER_INIT( mirderby )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
GAME( 1987, hourouki, 0, mrokumei, mjhokite, 0, ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, 0, ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, mjhokite, 0, mrokumei, mjhokite, 0, ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)", GAME_SUPPORTS_SAVE )
|
||||
@ -1912,3 +2093,5 @@ GAME( 1990, lemnangl, 0, lemnangl, pteacher, 0, ROT0, "Home Data", "Mah
|
||||
GAME( 1991, mjprivat, 0, lemnangl, pteacher, 0, ROT0, "Matoba", "Mahjong Private (Japan)", GAME_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1991?,mjikaga, 0, lemnangl, mjikaga, mjikaga, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1988, mirderby, 0, mirderby, mirderby, mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", GAME_NO_SOUND|GAME_NOT_WORKING )
|
||||
|
@ -1,213 +0,0 @@
|
||||
/* Miracle Derby - Ascot
|
||||
|
||||
- has the same GX61A01 custom (blitter?) as homedata.c and a 'similar' CPU setup (this has more CPUs)
|
||||
and similar board / rom numbering (X**-)
|
||||
|
||||
The drivers can probably be merged later, although the current per-game handling of the blitter in
|
||||
homedata.c should be looked at.
|
||||
|
||||
|
||||
|
||||
Notes from Stefan Lindberg:
|
||||
|
||||
Eprom "x70_a04.5g" had wires attached to it, pin 2 and 16 was joined and pin 1,32,31,30 was joined, i
|
||||
removed them and read the eprom as the type it was (D27c1000D).
|
||||
|
||||
Measured frequencies:
|
||||
MBL68B09E = 2mhz
|
||||
MBL68B09E = 2mhz
|
||||
z80 = 4mhz
|
||||
YM2203 = 2mhz
|
||||
|
||||
See included PCB pics.
|
||||
|
||||
|
||||
|
||||
Roms:
|
||||
|
||||
Name Size CRC32 Chip Type
|
||||
---------------------------------------------------------------------------------
|
||||
x70a07.8l 256 0x7d4c9712 82s129
|
||||
x70a08.7l 256 0xc4e77174 82s129
|
||||
x70a09.6l 256 0xd0187957 82s129
|
||||
x70_a03.8g 32768 0x4e298b2d 27c256
|
||||
x70_a04.5g 131072 0x14392fdb D27c1000D
|
||||
x70_a11.1g 32768 0xb394eef7 27c256
|
||||
x70_b02.12e 32768 0x76c9bb6f 27c256
|
||||
x70_c01.14e 65536 0xd79d072d 27c512
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/* clocks are 16mhz and 9mhz */
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "sound/2203intf.h"
|
||||
|
||||
static VIDEO_START(mirderby)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static VIDEO_UPDATE(mirderby)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( cpu0_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_RAM // videoram
|
||||
AM_RANGE(0x4000, 0x5fff) AM_RAM
|
||||
AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
|
||||
AM_RANGE(0x7000, 0x77ff) AM_RAM
|
||||
//0x7ff0 onward is the blitter
|
||||
AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static UINT8 prot_data;
|
||||
|
||||
static READ8_HANDLER( mirderby_prot_r )
|
||||
{
|
||||
prot_data&=0x7f;
|
||||
return prot_data++;
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( mirderby_prot_w )
|
||||
{
|
||||
prot_data = data;
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_RAM // videoram
|
||||
AM_RANGE(0x4000, 0x5fff) AM_RAM
|
||||
AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
|
||||
AM_RANGE(0x7000, 0x77ff) AM_RAM
|
||||
AM_RANGE(0x7800, 0x7800) AM_READWRITE(mirderby_prot_r, mirderby_prot_w) // protection check?
|
||||
AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
static PALETTE_INIT( mirderby )
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 0x100; i++)
|
||||
{
|
||||
int r,g,b;
|
||||
r = color_prom[0x000+i];
|
||||
g = color_prom[0x100+i];
|
||||
b = color_prom[0x200+i];
|
||||
|
||||
palette_set_color_rgb(machine,i,pal4bit(r),pal4bit(g),pal4bit(b));
|
||||
}
|
||||
}
|
||||
|
||||
static const gfx_layout char_layout =
|
||||
{
|
||||
8,8,
|
||||
RGN_FRAC(1,1),
|
||||
4,
|
||||
{ 0, 1, 2, 3 },
|
||||
{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
|
||||
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
|
||||
32*8
|
||||
};
|
||||
|
||||
static GFXDECODE_START( mirderby )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, char_layout, 0x0000, 0x10 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, char_layout, 0x0000, 0x10 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
static INTERRUPT_GEN( mirderby_irq )
|
||||
{
|
||||
cpu_set_input_line(device, M6809_FIRQ_LINE, HOLD_LINE);
|
||||
}
|
||||
|
||||
static MACHINE_DRIVER_START( mirderby )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD("cpu0", Z80, 16000000/4) /* 4 Mhz */
|
||||
MDRV_CPU_FLAGS(CPU_DISABLE)
|
||||
MDRV_CPU_PROGRAM_MAP(cpu0_map)
|
||||
|
||||
MDRV_CPU_ADD("cpu1", M6809, 16000000/8) /* 2 Mhz */
|
||||
MDRV_CPU_PROGRAM_MAP(cpu1_map)
|
||||
MDRV_CPU_FLAGS(CPU_DISABLE)
|
||||
MDRV_CPU_VBLANK_INT("screen", mirderby_irq)
|
||||
|
||||
MDRV_CPU_ADD("cpu2", M6809, 16000000/8) /* 2 Mhz */
|
||||
MDRV_CPU_PROGRAM_MAP(cpu2_map)
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(6000))
|
||||
|
||||
/* video hardware */
|
||||
MDRV_SCREEN_ADD("screen", RASTER)
|
||||
MDRV_SCREEN_REFRESH_RATE(59)
|
||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
MDRV_SCREEN_SIZE(64*8, 32*8)
|
||||
MDRV_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
|
||||
|
||||
MDRV_GFXDECODE(mirderby)
|
||||
MDRV_PALETTE_LENGTH(0x100)
|
||||
|
||||
MDRV_PALETTE_INIT(mirderby)
|
||||
MDRV_VIDEO_START(mirderby)
|
||||
MDRV_VIDEO_UPDATE(mirderby)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MDRV_SOUND_ADD("ymsnd", YM2203, 2000000)
|
||||
MDRV_SOUND_ROUTE(0, "mono", 0.25)
|
||||
MDRV_SOUND_ROUTE(1, "mono", 0.25)
|
||||
MDRV_SOUND_ROUTE(2, "mono", 0.25)
|
||||
MDRV_SOUND_ROUTE(3, "mono", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( mirderby )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
ROM_START( mirderby )
|
||||
ROM_REGION( 0x8000, "cpu0", 0 ) /* Z80 Code */
|
||||
ROM_LOAD( "x70_a11.1g", 0x2000, 0x6000, CRC(b394eef7) SHA1(a646596d09b90eda44aaf8ccbf8f3fccfd3d5dad) ) // first 0x6000 bytes are blank!
|
||||
ROM_CONTINUE(0x0000, 0x2000) // main z80 code is here
|
||||
|
||||
ROM_REGION( 0x10000, "cpu1", 0 ) /* M6809 code */
|
||||
ROM_LOAD( "x70_c01.14e", 0x00000, 0x10000, CRC(d79d072d) SHA1(8e189931de9c4eb520c1ec2d0898d8eaba0f01b5) )
|
||||
|
||||
ROM_REGION( 0x10000, "cpu2", 0 ) /* M6809 code */
|
||||
ROM_LOAD( "x70_b02.12e", 0x8000, 0x8000, CRC(76c9bb6f) SHA1(dd8893f3082d33d366247295e9531f8879c219c5) )
|
||||
|
||||
ROM_REGION( 0x8000, "gfx1", 0 ) // horse gfx
|
||||
ROM_LOAD( "x70_a03.8g", 0x0000, 0x8000, CRC(4e298b2d) SHA1(ae78327d1f30c8d19ef772b82803dab4d6b7b919))
|
||||
|
||||
ROM_REGION( 0x20000, "gfx2", 0 ) // fonts etc.
|
||||
ROM_LOAD( "x70_a04.5g", 0x0000, 0x20000, CRC(14392fdb) SHA1(dafdce473b2d2ebbdbf49fbd12f85c1ad69b2877) )
|
||||
|
||||
ROM_REGION( 0x300, "proms", 0 ) /* colours */
|
||||
ROM_LOAD( "x70a07.8l", 0x000, 0x100, CRC(7d4c9712) SHA1(fe2a89841fdf5e4fd6cd41478ad2f29d28bed54d) )
|
||||
ROM_LOAD( "x70a08.7l", 0x100, 0x100, CRC(c4e77174) SHA1(ada238ded69f01b4daeb0159a2c5c422977bb95e) )
|
||||
ROM_LOAD( "x70a09.6l", 0x200, 0x100, CRC(d0187957) SHA1(6b36c1bccad24708cfa2fc78da08313f9bcfdbc0) )
|
||||
ROM_END
|
||||
|
||||
static DRIVER_INIT( mirderby )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GAME( 1988, mirderby, 0, mirderby, mirderby, mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", GAME_NO_SOUND|GAME_NOT_WORKING )
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
Royal Gum
|
||||
|
||||
Unknown CPU (either Z80 or Z180)
|
||||
Unknown CPU (either Z80 or Z180) - or at least rgum.u47 looks z80 related
|
||||
rgum.u5 is for a 6502?
|
||||
|
||||
Big Black Box in the middle of the PCB (for encryption, or containing roms?)
|
||||
|
||||
@ -10,9 +11,22 @@ Big Black Box in the middle of the PCB (for encryption, or containing roms?)
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m6502/m6502.h"
|
||||
|
||||
static READ8_HANDLER( unk_r )
|
||||
{
|
||||
return mame_rand(space->machine);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( rgum_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x0000, 0x01ff) AM_RAM
|
||||
|
||||
AM_RANGE(0x3000, 0x3000) AM_READ(unk_r)
|
||||
|
||||
AM_RANGE(0x4000, 0x47ff) AM_RAM
|
||||
AM_RANGE(0x5000, 0x57ff) AM_RAM
|
||||
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -48,9 +62,9 @@ static VIDEO_UPDATE(royalgum)
|
||||
|
||||
static MACHINE_DRIVER_START( rgum )
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD("maincpu", Z80,8000000) /* ? MHz */
|
||||
MDRV_CPU_ADD("maincpu", M6502,8000000) /* ? MHz */
|
||||
MDRV_CPU_PROGRAM_MAP(rgum_map)
|
||||
// MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
|
||||
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
|
||||
|
||||
/* video hardware */
|
||||
MDRV_SCREEN_ADD("screen", RASTER)
|
||||
@ -71,10 +85,10 @@ MACHINE_DRIVER_END
|
||||
|
||||
|
||||
ROM_START( rgum )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
ROM_REGION( 0x20000, "z80cpu", 0 )
|
||||
ROM_LOAD( "rgum.u47", 0x00000, 0x20000, CRC(fe410eb9) SHA1(25180ba336269279f251be5483c210a581d27197) ) // encrypted.. 2nd half empty
|
||||
|
||||
ROM_REGION( 0x10000, "data", 0 )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "rgum.u5", 0x00000, 0x10000, CRC(9d2d1681) SHA1(1c1da0d970ea2cf58f7961417ab6986cc667da5c) ) // plaintext in here, but firt half is empty
|
||||
|
||||
ROM_REGION( 0x10000, "unk", 0 )
|
||||
|
@ -44,7 +44,6 @@ public:
|
||||
|
||||
WRITE8_HANDLER( mrokumei_videoram_w );
|
||||
WRITE8_HANDLER( reikaids_videoram_w );
|
||||
WRITE8_HANDLER( pteacher_videoram_w );
|
||||
WRITE8_HANDLER( reikaids_gfx_bank_w );
|
||||
WRITE8_HANDLER( pteacher_gfx_bank_w );
|
||||
WRITE8_HANDLER( homedata_blitter_param_w );
|
||||
@ -58,12 +57,15 @@ WRITE8_HANDLER( pteacher_blitter_start_w );
|
||||
PALETTE_INIT( mrokumei );
|
||||
PALETTE_INIT( reikaids );
|
||||
PALETTE_INIT( pteacher );
|
||||
PALETTE_INIT( mirderby );
|
||||
|
||||
VIDEO_START( mrokumei );
|
||||
VIDEO_START( reikaids );
|
||||
VIDEO_START( pteacher );
|
||||
VIDEO_START( lemnangl );
|
||||
VIDEO_START( mirderby );
|
||||
VIDEO_UPDATE( mrokumei );
|
||||
VIDEO_UPDATE( reikaids );
|
||||
VIDEO_UPDATE( pteacher );
|
||||
VIDEO_UPDATE( mirderby );
|
||||
VIDEO_EOF( homedata );
|
||||
|
@ -1578,7 +1578,6 @@ $(MAMEOBJ)/misc.a: \
|
||||
$(DRIVERS)/miniboy7.o \
|
||||
$(DRIVERS)/mirage.o \
|
||||
$(DRIVERS)/mirax.o \
|
||||
$(DRIVERS)/mirderby.o \
|
||||
$(DRIVERS)/mole.o \
|
||||
$(DRIVERS)/mosaic.o $(VIDEO)/mosaic.o \
|
||||
$(DRIVERS)/mrjong.o $(VIDEO)/mrjong.o \
|
||||
|
@ -289,7 +289,7 @@ static void pteacher_handleblit( const address_space *space, int rom_base )
|
||||
if ((addr & 0x2080) == 0)
|
||||
{
|
||||
addr = ((addr & 0xc000) >> 2) | ((addr & 0x1f00) >> 1) | (addr & 0x7f);
|
||||
pteacher_videoram_w(space, addr, data);
|
||||
mrokumei_videoram_w(space, addr, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -379,7 +379,20 @@ PALETTE_INIT( pteacher )
|
||||
}
|
||||
}
|
||||
|
||||
PALETTE_INIT( mirderby )
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 0x100; i++)
|
||||
{
|
||||
int r,g,b;
|
||||
r = color_prom[0x000+i];
|
||||
g = color_prom[0x100+i];
|
||||
b = color_prom[0x200+i];
|
||||
|
||||
palette_set_color_rgb(machine,i,pal4bit(r),pal4bit(g),pal4bit(b));
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
@ -577,6 +590,53 @@ static TILE_GET_INFO( lemnangl_get_info1_1 )
|
||||
}
|
||||
|
||||
|
||||
INLINE void mirderby_info0( running_machine *machine, tile_data *tileinfo, int tile_index, int page, int gfxbank )
|
||||
{
|
||||
homedata_state *state = (homedata_state *)machine->driver_data;
|
||||
int addr = tile_index * 2 + 0x2000 * page;
|
||||
int attr = state->videoram[addr];
|
||||
int code = state->videoram[addr + 1] + ((attr & 0x03) << 8) + 0x400;// + (gfxbank << 10);
|
||||
int color = (attr >> 2) + (gfxbank << 6);
|
||||
|
||||
SET_TILE_INFO( 0, code, color, state->flipscreen );
|
||||
}
|
||||
INLINE void mirderby_info1( running_machine *machine, tile_data *tileinfo, int tile_index, int page, int gfxbank )
|
||||
{
|
||||
homedata_state *state = (homedata_state *)machine->driver_data;
|
||||
int addr = tile_index * 2 + 0x1000 + 0x2000 * page;
|
||||
int attr = state->videoram[addr];
|
||||
int code = state->videoram[addr + 1] + ((attr & 0x07) << 8) + 0x400;//(gfxbank << 11);
|
||||
int color = (attr >> 3) + ((gfxbank & 3) << 6);
|
||||
|
||||
SET_TILE_INFO( 1, code, color, state->flipscreen );
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( mirderby_get_info0_0 )
|
||||
{
|
||||
// homedata_state *state = (homedata_state *)machine->driver_data;
|
||||
mirderby_info0( machine, tileinfo, tile_index, 0, 0);// state->blitter_bank & 0x03 );
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( mirderby_get_info1_0 )
|
||||
{
|
||||
// homedata_state *state = (homedata_state *)machine->driver_data;
|
||||
mirderby_info0( machine, tileinfo, tile_index, 1, 0);// state->blitter_bank & 0x03 );
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( mirderby_get_info0_1 )
|
||||
{
|
||||
// homedata_state *state = (homedata_state *)machine->driver_data;
|
||||
mirderby_info1( machine, tileinfo, tile_index, 0, 0);//(state->blitter_bank & 0x38) >> 3 );
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( mirderby_get_info1_1 )
|
||||
{
|
||||
// homedata_state *state = (homedata_state *)machine->driver_data;
|
||||
mirderby_info1( machine, tileinfo, tile_index, 1, 0);//(state->blitter_bank & 0x38) >> 3 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Start the video hardware emulation.
|
||||
@ -641,7 +701,17 @@ VIDEO_START( lemnangl )
|
||||
tilemap_set_transparent_pen(state->bg_tilemap[1][1], 0x0f);
|
||||
}
|
||||
|
||||
VIDEO_START( mirderby )
|
||||
{
|
||||
homedata_state *state = (homedata_state *)machine->driver_data;
|
||||
state->bg_tilemap[0][0] = tilemap_create( machine, mirderby_get_info0_0, tilemap_scan_rows, 8, 8, 64, 32 );
|
||||
state->bg_tilemap[0][1] = tilemap_create( machine, mirderby_get_info0_1, tilemap_scan_rows, 8, 8, 64, 32 );
|
||||
state->bg_tilemap[1][0] = tilemap_create( machine, mirderby_get_info1_0, tilemap_scan_rows, 8, 8, 64, 32 );
|
||||
state->bg_tilemap[1][1] = tilemap_create( machine, mirderby_get_info1_1, tilemap_scan_rows, 8, 8, 64, 32 );
|
||||
|
||||
tilemap_set_transparent_pen(state->bg_tilemap[0][1], 0);
|
||||
tilemap_set_transparent_pen(state->bg_tilemap[1][1], 0);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
@ -663,12 +733,6 @@ WRITE8_HANDLER( reikaids_videoram_w )
|
||||
tilemap_mark_tile_dirty(state->bg_tilemap[(offset & 0x2000) >> 13][offset & 3], (offset & 0xffc) >> 2);
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( pteacher_videoram_w )
|
||||
{
|
||||
homedata_state *state = (homedata_state *)space->machine->driver_data;
|
||||
state->videoram[offset] = data;
|
||||
tilemap_mark_tile_dirty(state->bg_tilemap[(offset & 0x2000) >> 13][(offset & 0x1000) >> 12], (offset & 0xffe) >> 1);
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( reikaids_gfx_bank_w )
|
||||
{
|
||||
@ -979,6 +1043,11 @@ VIDEO_UPDATE( pteacher )
|
||||
return 0;
|
||||
}
|
||||
|
||||
VIDEO_UPDATE( mirderby )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
VIDEO_EOF( homedata )
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user