mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
signs of life.. (nw)
This commit is contained in:
parent
6d3c6279cc
commit
af46243d26
@ -12,6 +12,11 @@
|
|||||||
TMS34010FNL-40
|
TMS34010FNL-40
|
||||||
TMP82C55AP-2
|
TMP82C55AP-2
|
||||||
|
|
||||||
|
Bt478KPJ35 Palette / RAMDAC
|
||||||
|
|
||||||
|
Actel A1010A-PL68C (custom blitter maybe?)
|
||||||
|
|
||||||
|
|
||||||
Sub / Sound board:
|
Sub / Sound board:
|
||||||
|
|
||||||
ST Z8430AB1
|
ST Z8430AB1
|
||||||
@ -30,7 +35,7 @@
|
|||||||
#include "cpu/tms34010/tms34010.h"
|
#include "cpu/tms34010/tms34010.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
|
#include "video/ramdac.h"
|
||||||
|
|
||||||
class megaphx_state : public driver_device
|
class megaphx_state : public driver_device
|
||||||
{
|
{
|
||||||
@ -38,24 +43,63 @@ public:
|
|||||||
megaphx_state(const machine_config &mconfig, device_type type, const char *tag)
|
megaphx_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_mainram(*this, "mainram")
|
m_mainram(*this, "mainram"),
|
||||||
|
m_vram(*this, "vram")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_shared_ptr<UINT16> m_mainram;
|
required_shared_ptr<UINT16> m_mainram;
|
||||||
|
required_shared_ptr<UINT16> m_vram;
|
||||||
|
|
||||||
|
|
||||||
DECLARE_DRIVER_INIT(megaphx);
|
DECLARE_DRIVER_INIT(megaphx);
|
||||||
DECLARE_MACHINE_RESET(megaphx);
|
DECLARE_MACHINE_RESET(megaphx);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_READ16_MEMBER(megaphx_60004_r);
|
||||||
|
DECLARE_READ16_MEMBER(megaphx_50002_r);
|
||||||
|
|
||||||
|
DECLARE_READ16_MEMBER(tms_host_r);
|
||||||
|
DECLARE_WRITE16_MEMBER(tms_host_w);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
READ16_MEMBER(megaphx_state::megaphx_60004_r)
|
||||||
|
{
|
||||||
|
return rand();
|
||||||
|
}
|
||||||
|
|
||||||
|
READ16_MEMBER(megaphx_state::megaphx_50002_r)
|
||||||
|
{
|
||||||
|
return rand();
|
||||||
|
}
|
||||||
|
|
||||||
|
READ16_MEMBER(megaphx_state::tms_host_r)
|
||||||
|
{
|
||||||
|
return tms34010_host_r(machine().device("tms"), offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WRITE16_MEMBER(megaphx_state::tms_host_w)
|
||||||
|
{
|
||||||
|
tms34010_host_w(machine().device("tms"), offset, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( megaphx_68k_map, AS_PROGRAM, 16, megaphx_state )
|
static ADDRESS_MAP_START( megaphx_68k_map, AS_PROGRAM, 16, megaphx_state )
|
||||||
// AM_RANGE(0x000000, 0x0000ff) AM_ROM
|
// AM_RANGE(0x000000, 0x0000ff) AM_ROM
|
||||||
AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("mainram")
|
AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("mainram")
|
||||||
|
|
||||||
AM_RANGE(0x040000, 0x040007) AM_WRITENOP
|
AM_RANGE(0x040000, 0x040007) AM_READWRITE(tms_host_r, tms_host_w)
|
||||||
AM_RANGE(0x060004, 0x060005) AM_READNOP
|
|
||||||
|
AM_RANGE(0x050002, 0x050003) AM_READ(megaphx_50002_r)
|
||||||
|
// AM_RANGE(0x050000, 0x050001) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff)
|
||||||
|
// AM_RANGE(0x050002, 0x050003) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff)
|
||||||
|
// AM_RANGE(0x050006, 0x050007) AM_DEVWRITE8("ramdac",ramdac_device,index_r_w,0x00ff)
|
||||||
|
|
||||||
|
AM_RANGE(0x060004, 0x060005) AM_READ(megaphx_60004_r)
|
||||||
AM_RANGE(0x060006, 0x060007) AM_WRITENOP
|
AM_RANGE(0x060006, 0x060007) AM_WRITENOP
|
||||||
|
|
||||||
|
|
||||||
@ -65,7 +109,13 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( megaphx_tms_map, AS_PROGRAM, 16, megaphx_state )
|
static ADDRESS_MAP_START( megaphx_tms_map, AS_PROGRAM, 16, megaphx_state )
|
||||||
AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user0", 0)
|
|
||||||
|
AM_RANGE(0x00000000, 0x001fffff) AM_RAM // vram?
|
||||||
|
AM_RANGE(0x00100000, 0x002fffff) AM_RAM AM_SHARE("vram") // vram?
|
||||||
|
AM_RANGE(0x00300000, 0x003fffff) AM_RAM
|
||||||
|
AM_RANGE(0x04000000, 0x040000ff) AM_WRITENOP
|
||||||
|
AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w)
|
||||||
|
AM_RANGE(0xffc00000, 0xffffffff) AM_RAM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, megaphx_state )
|
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, megaphx_state )
|
||||||
@ -82,6 +132,23 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static void megaphx_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
|
static void megaphx_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
|
||||||
{
|
{
|
||||||
|
megaphx_state *state = screen.machine().driver_data<megaphx_state>();
|
||||||
|
|
||||||
|
UINT16 *vram = &state->m_vram[(params->rowaddr << 8) & 0x1ff00];
|
||||||
|
UINT32 *dest = &bitmap.pix32(scanline);
|
||||||
|
|
||||||
|
const pen_t *paldata = screen.machine().pens;
|
||||||
|
|
||||||
|
int coladdr = params->coladdr;
|
||||||
|
int x;
|
||||||
|
|
||||||
|
for (x = params->heblnk; x < params->hsblnk; x += 2)
|
||||||
|
{
|
||||||
|
UINT16 pixels = vram[coladdr++ & 0xff];
|
||||||
|
dest[x + 0] = paldata[pixels & 0xff];
|
||||||
|
dest[x + 1] = paldata[pixels >> 8];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void megaphx_to_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg)
|
static void megaphx_to_shiftreg(address_space &space, UINT32 address, UINT16 *shiftreg)
|
||||||
@ -96,15 +163,24 @@ MACHINE_RESET_MEMBER(megaphx_state,megaphx)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void m68k_gen_int(device_t *device, int state)
|
||||||
|
{
|
||||||
|
megaphx_state *drvstate = device->machine().driver_data<megaphx_state>();
|
||||||
|
if (state) drvstate->m_maincpu->set_input_line(4, ASSERT_LINE);
|
||||||
|
else drvstate->m_maincpu->set_input_line(4, CLEAR_LINE);
|
||||||
|
// printf("interrupt %d\n", state);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const tms34010_config tms_config_megaphx =
|
static const tms34010_config tms_config_megaphx =
|
||||||
{
|
{
|
||||||
FALSE, /* halt on reset */
|
TRUE, /* halt on reset */
|
||||||
"screen", /* the screen operated on */
|
"screen", /* the screen operated on */
|
||||||
XTAL_40MHz/6, /* pixel clock */
|
XTAL_40MHz/6, /* pixel clock */
|
||||||
1, /* pixels per clock */
|
1, /* pixels per clock */
|
||||||
NULL, /* scanline callback (indexed16) */
|
NULL, /* scanline callback (indexed16) */
|
||||||
megaphx_scanline, /* scanline callback (rgb32) */
|
megaphx_scanline, /* scanline callback (rgb32) */
|
||||||
NULL, /* generate interrupt */
|
m68k_gen_int, /* generate interrupt */
|
||||||
megaphx_to_shiftreg, /* write to shiftreg function */
|
megaphx_to_shiftreg, /* write to shiftreg function */
|
||||||
megaphx_from_shiftreg /* read from shiftreg function */
|
megaphx_from_shiftreg /* read from shiftreg function */
|
||||||
};
|
};
|
||||||
@ -114,6 +190,16 @@ static const tms34010_config tms_config_megaphx =
|
|||||||
static INPUT_PORTS_START( megaphx )
|
static INPUT_PORTS_START( megaphx )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
static ADDRESS_MAP_START( ramdac_map, AS_0, 8, megaphx_state )
|
||||||
|
AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w)
|
||||||
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
static RAMDAC_INTERFACE( ramdac_intf )
|
||||||
|
{
|
||||||
|
1
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( megaphx, megaphx_state )
|
static MACHINE_CONFIG_START( megaphx, megaphx_state )
|
||||||
|
|
||||||
MCFG_CPU_ADD("maincpu", M68000, 8000000) // ?? can't read xtal due to reflections, CPU is an 8Mhz part
|
MCFG_CPU_ADD("maincpu", M68000, 8000000) // ?? can't read xtal due to reflections, CPU is an 8Mhz part
|
||||||
@ -121,10 +207,9 @@ static MACHINE_CONFIG_START( megaphx, megaphx_state )
|
|||||||
// MCFG_CPU_VBLANK_INT_DRIVER("screen", megaphx_state, irq6_line_hold)
|
// MCFG_CPU_VBLANK_INT_DRIVER("screen", megaphx_state, irq6_line_hold)
|
||||||
|
|
||||||
|
|
||||||
MCFG_CPU_ADD("tmscpu", TMS34010, XTAL_40MHz)
|
MCFG_CPU_ADD("tms", TMS34010, XTAL_40MHz)
|
||||||
MCFG_CPU_CONFIG(tms_config_megaphx)
|
MCFG_CPU_CONFIG(tms_config_megaphx)
|
||||||
MCFG_CPU_PROGRAM_MAP(megaphx_tms_map)
|
MCFG_CPU_PROGRAM_MAP(megaphx_tms_map)
|
||||||
MCFG_DEVICE_DISABLE()
|
|
||||||
|
|
||||||
MCFG_CPU_ADD("audiocpu", Z80, 4000000) // unk freq
|
MCFG_CPU_ADD("audiocpu", Z80, 4000000) // unk freq
|
||||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||||
@ -137,7 +222,12 @@ static MACHINE_CONFIG_START( megaphx, megaphx_state )
|
|||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/6, 424, 0, 320, 262, 0, 240)
|
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/6, 424, 0, 320, 262, 0, 240)
|
||||||
MCFG_SCREEN_UPDATE_DEVICE("tmscpu", tms34010_device, tms340x0_rgb32)
|
MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_rgb32)
|
||||||
|
|
||||||
|
MCFG_PALETTE_LENGTH(256)
|
||||||
|
|
||||||
|
MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
DRIVER_INIT_MEMBER(megaphx_state,megaphx)
|
DRIVER_INIT_MEMBER(megaphx_state,megaphx)
|
||||||
@ -160,8 +250,6 @@ ROM_START( megaphx )
|
|||||||
ROM_LOAD16_BYTE( "mph4.u36", 0x880001, 0x20000, CRC(c8e0725e) SHA1(b3af315b9a94a692e81e0dbfd4035036c2af4f50) )
|
ROM_LOAD16_BYTE( "mph4.u36", 0x880001, 0x20000, CRC(c8e0725e) SHA1(b3af315b9a94a692e81e0dbfd4035036c2af4f50) )
|
||||||
ROM_LOAD16_BYTE( "mph5.u25", 0x880000, 0x20000, CRC(c95ccb69) SHA1(9d14cbfafd943f6ff461a7f373170a35e36eb695) )
|
ROM_LOAD16_BYTE( "mph5.u25", 0x880000, 0x20000, CRC(c95ccb69) SHA1(9d14cbfafd943f6ff461a7f373170a35e36eb695) )
|
||||||
|
|
||||||
ROM_REGION16_LE( 0x100000, "user0", ROMREGION_ERASE00 )
|
|
||||||
|
|
||||||
ROM_REGION( 0x200000, "user2", 0 )
|
ROM_REGION( 0x200000, "user2", 0 )
|
||||||
ROM_LOAD( "sonido_mph1.u39", 0x000000, 0x20000, CRC(f5e65557) SHA1(5ae759c2bcef96fbda42f088c02b6dec208030f3) )
|
ROM_LOAD( "sonido_mph1.u39", 0x000000, 0x20000, CRC(f5e65557) SHA1(5ae759c2bcef96fbda42f088c02b6dec208030f3) )
|
||||||
ROM_LOAD( "sonido_mph2.u38", 0x000000, 0x20000, CRC(7444d0f9) SHA1(9739b48993bccea5530533b67808d13d6155ffe3) )
|
ROM_LOAD( "sonido_mph2.u38", 0x000000, 0x20000, CRC(7444d0f9) SHA1(9739b48993bccea5530533b67808d13d6155ffe3) )
|
||||||
|
Loading…
Reference in New Issue
Block a user