mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
Add skeleton device for Video System C7-01 GGA
(nw) This has uncovered what might be a core bug: AM_SELECT does not work properly with masked handlers.
This commit is contained in:
parent
6ffb21f39b
commit
cd7babc775
@ -4107,6 +4107,8 @@ files {
|
||||
|
||||
createMAMEProjects(_target, _subtarget, "vsystem")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/video/vsystem_gga.cpp",
|
||||
MAME_DIR .. "src/mame/video/vsystem_gga.h",
|
||||
MAME_DIR .. "src/mame/video/vsystem_spr.cpp",
|
||||
MAME_DIR .. "src/mame/video/vsystem_spr.h",
|
||||
MAME_DIR .. "src/mame/video/vsystem_spr2.cpp",
|
||||
|
@ -67,6 +67,7 @@ Verification still needed for the other PCBs.
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2610intf.h"
|
||||
#include "sound/3812intf.h"
|
||||
#include "video/vsystem_gga.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
@ -144,6 +145,7 @@ static ADDRESS_MAP_START( pspikes_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
|
||||
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
|
||||
AM_RANGE(0xfff006, 0xfff007) AM_READWRITE8(pending_command_r, sound_command_w, 0x00ff)
|
||||
AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pspikesb_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
@ -161,6 +163,7 @@ static ADDRESS_MAP_START( pspikesb_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
|
||||
AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
|
||||
AM_RANGE(0xfff008, 0xfff009) AM_WRITE(pspikesb_oki_banking_w)
|
||||
AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( spikes91_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
@ -196,6 +199,7 @@ static ADDRESS_MAP_START( pspikesc_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0xfff004, 0xfff005) AM_WRITE(aerofgt_bg1scrolly_w)
|
||||
AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
|
||||
AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( karatblz_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
@ -217,6 +221,7 @@ static ADDRESS_MAP_START( karatblz_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff) AM_WRITE(aerofgt_bg1scrolly_w)
|
||||
AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w)
|
||||
AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w)
|
||||
AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( spinlbrk_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
@ -233,6 +238,7 @@ static ADDRESS_MAP_START( spinlbrk_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0xfff006, 0xfff007) AM_WRITE8(sound_command_w, 0x00ff)
|
||||
// AM_RANGE(0xfff008, 0xfff009) - read when analog inputs are enabled
|
||||
// AM_RANGE(0xfff00a, 0xfff00b) /
|
||||
AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( turbofrc_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
@ -255,6 +261,7 @@ static ADDRESS_MAP_START( turbofrc_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0x0ff008, 0x0ff00b) AM_WRITE(turbofrc_gfxbank_w)
|
||||
AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITENOP /* related to bg2 (written together with the scroll registers) */
|
||||
AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE8(sound_command_w, 0xff00)
|
||||
AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( aerofgtb_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
@ -274,6 +281,7 @@ static ADDRESS_MAP_START( aerofgtb_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w)
|
||||
AM_RANGE(0x0fe00e, 0x0fe00f) AM_WRITE8(sound_command_w, 0xff00)
|
||||
AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -322,8 +330,7 @@ static ADDRESS_MAP_START( aerfboot_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0x0fe00e, 0x0fe00f) AM_WRITE8(aerfboot_soundlatch_w, 0xff00)
|
||||
AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP
|
||||
AM_RANGE(0x0fe012, 0x0fe013) AM_WRITENOP
|
||||
AM_RANGE(0x0fe400, 0x0fe401) AM_WRITENOP
|
||||
AM_RANGE(0x0fe402, 0x0fe403) AM_WRITENOP
|
||||
AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
|
||||
AM_RANGE(0x100000, 0x107fff) AM_WRITENOP
|
||||
AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("spriteram3")
|
||||
@ -353,8 +360,7 @@ static ADDRESS_MAP_START( aerfboo2_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0x0fe01e, 0x0fe01f) AM_WRITE(aerfboo2_okim6295_banking_w)
|
||||
// AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP
|
||||
// AM_RANGE(0x0fe012, 0x0fe013) AM_WRITE(aerfboot_soundlatch_w)
|
||||
AM_RANGE(0x0fe400, 0x0fe401) AM_WRITENOP // data for a crtc?
|
||||
AM_RANGE(0x0fe402, 0x0fe403) AM_WRITENOP // address for a crtc?
|
||||
AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -372,6 +378,7 @@ static ADDRESS_MAP_START( wbbc97_map, AS_PROGRAM, 16, aerofgt_state )
|
||||
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
|
||||
AM_RANGE(0xfff006, 0xfff007) AM_READNOP AM_WRITE8(sound_command_w, 0x00ff)
|
||||
AM_RANGE(0xfff00e, 0xfff00f) AM_WRITE(wbbc97_bitmap_enable_w)
|
||||
AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, aerofgt_state )
|
||||
@ -1357,6 +1364,8 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
|
||||
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes)
|
||||
|
||||
/* sound hardware */
|
||||
@ -1397,6 +1406,8 @@ static MACHINE_CONFIG_START( spikes91, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes)
|
||||
|
||||
/* sound hardware */
|
||||
@ -1431,6 +1442,8 @@ static MACHINE_CONFIG_START( pspikesb, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes)
|
||||
|
||||
/* sound hardware */
|
||||
@ -1463,6 +1476,8 @@ static MACHINE_CONFIG_START( pspikesc, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
|
||||
@ -1505,6 +1520,8 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
|
||||
@ -1567,6 +1584,8 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
|
||||
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz)
|
||||
|
||||
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
|
||||
@ -1612,6 +1631,8 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state )
|
||||
MCFG_PALETTE_ADD_INIT_BLACK("palette", 1024) // doesn't fully initialize palette at start-up ...
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_PRITYPE(1)
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
|
||||
@ -1666,6 +1687,8 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
|
||||
@ -1720,6 +1743,8 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
|
||||
@ -1821,6 +1846,8 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc)
|
||||
|
||||
/* sound hardware */
|
||||
@ -1857,6 +1884,8 @@ static MACHINE_CONFIG_START( aerfboo2, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc)
|
||||
|
||||
/* sound hardware */
|
||||
@ -1891,6 +1920,8 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
|
||||
|
@ -33,6 +33,8 @@
|
||||
#include "sound/2610intf.h"
|
||||
#include "sound/okim6295.h"
|
||||
|
||||
#include "video/vsystem_gga.h"
|
||||
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
@ -85,6 +87,7 @@ static ADDRESS_MAP_START( f1gp_cpu1_map, AS_PROGRAM, 16, f1gp_state )
|
||||
AM_RANGE(0xfff002, 0xfff005) AM_WRITE(f1gp_fgscroll_w)
|
||||
AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0xfff008, 0xfff009) AM_READWRITE8(command_pending_r, sound_command_w, 0x00ff)
|
||||
AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
AM_RANGE(0xfff040, 0xfff05f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
|
||||
AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
|
||||
ADDRESS_MAP_END
|
||||
@ -181,7 +184,7 @@ static ADDRESS_MAP_START( f1gpb_cpu1_map, AS_PROGRAM, 16, f1gp_state )
|
||||
AM_RANGE(0xfff00e, 0xfff00f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
|
||||
AM_RANGE(0xfff00c, 0xfff00d) AM_WRITE(f1gpb_misc_w)
|
||||
AM_RANGE(0xfff010, 0xfff011) AM_WRITENOP
|
||||
AM_RANGE(0xfff020, 0xfff023) AM_RAM //?
|
||||
AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
|
||||
AM_RANGE(0xfff800, 0xfff809) AM_RAM AM_SHARE("rozregs")
|
||||
ADDRESS_MAP_END
|
||||
@ -421,6 +424,8 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_old_tile_callback )
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
|
||||
@ -482,6 +487,8 @@ static MACHINE_CONFIG_START( f1gpb, f1gp_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gpb)
|
||||
|
||||
/* sound hardware */
|
||||
@ -505,6 +512,7 @@ static MACHINE_CONFIG_DERIVED( f1gp2, f1gp )
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gp2)
|
||||
|
||||
MCFG_DEVICE_REMOVE("gga")
|
||||
MCFG_DEVICE_REMOVE("vsystem_spr_old")
|
||||
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
|
||||
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( f1gp_state, f1gp2_tile_callback )
|
||||
|
@ -86,6 +86,7 @@ with the following code:
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/msm5205.h"
|
||||
#include "sound/ym2413.h"
|
||||
#include "video/vsystem_gga.h"
|
||||
#include "speaker.h"
|
||||
|
||||
|
||||
@ -307,8 +308,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( nekkyoku_sub_io_map, AS_IO, 8, fromance_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w)
|
||||
AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w)
|
||||
AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
|
||||
AM_RANGE(0x12, 0x12) AM_READNOP // unknown
|
||||
AM_RANGE(0xe0, 0xe0) AM_WRITE(fromance_rombank_w)
|
||||
AM_RANGE(0xe1, 0xe1) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w)
|
||||
@ -321,8 +321,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( idolmj_sub_io_map, AS_IO, 8, fromance_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w)
|
||||
AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w)
|
||||
AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
|
||||
AM_RANGE(0x12, 0x12) AM_READNOP // unknown
|
||||
AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w)
|
||||
AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w)
|
||||
@ -335,8 +334,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( fromance_sub_io_map, AS_IO, 8, fromance_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w)
|
||||
AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w)
|
||||
AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
|
||||
AM_RANGE(0x12, 0x12) AM_READNOP // unknown
|
||||
AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w)
|
||||
AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w)
|
||||
@ -904,8 +902,6 @@ MACHINE_START_MEMBER(fromance_state,fromance)
|
||||
|
||||
MACHINE_RESET_MEMBER(fromance_state,fromance)
|
||||
{
|
||||
int i;
|
||||
|
||||
m_directionflag = 0;
|
||||
m_commanddata = 0;
|
||||
m_portselect = 0;
|
||||
@ -925,10 +921,6 @@ MACHINE_RESET_MEMBER(fromance_state,fromance)
|
||||
m_scrolly[1] = 0;
|
||||
m_gfxreg = 0;
|
||||
m_flipscreen = 0;
|
||||
m_crtc_register = 0;
|
||||
|
||||
for (i = 0; i < 0x10; i++)
|
||||
m_crtc_data[i] = 0;
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( nekkyoku, fromance_state )
|
||||
@ -956,6 +948,9 @@ static MACHINE_CONFIG_START( nekkyoku, fromance_state )
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromance)
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(fromance_state,nekkyoku)
|
||||
|
||||
/* sound hardware */
|
||||
@ -996,6 +991,9 @@ static MACHINE_CONFIG_START( idolmj, fromance_state )
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromance)
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(fromance_state,fromance)
|
||||
|
||||
/* sound hardware */
|
||||
@ -1036,6 +1034,9 @@ static MACHINE_CONFIG_START( fromance, fromance_state )
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromance)
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(fromance_state,fromance)
|
||||
|
||||
/* sound hardware */
|
||||
|
@ -40,6 +40,7 @@ Memo:
|
||||
#include "machine/nvram.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/msm5205.h"
|
||||
#include "video/vsystem_gga.h"
|
||||
#include "speaker.h"
|
||||
|
||||
|
||||
@ -227,8 +228,7 @@ static ADDRESS_MAP_START( ojankohs_io_map, AS_IO, 8, ojankohs_state )
|
||||
AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w)
|
||||
AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_device, data_r)
|
||||
AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
|
||||
AM_RANGE(0x10, 0x10) AM_WRITENOP // unknown
|
||||
AM_RANGE(0x11, 0x11) AM_WRITENOP // unknown
|
||||
AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ojankoy_io_map, AS_IO, 8, ojankohs_state )
|
||||
@ -253,8 +253,7 @@ static ADDRESS_MAP_START( ccasino_io_map, AS_IO, 8, ojankohs_state )
|
||||
AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_device, data_r)
|
||||
AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
|
||||
AM_RANGE(0x08, 0x0f) AM_WRITE(ccasino_palette_w) AM_SHARE("paletteram") // 16bit address access
|
||||
AM_RANGE(0x10, 0x10) AM_WRITENOP
|
||||
AM_RANGE(0x11, 0x11) AM_WRITENOP
|
||||
AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ojankoc_io_map, AS_IO, 8, ojankohs_state )
|
||||
@ -834,6 +833,8 @@ static MACHINE_CONFIG_START( ojankohs, ojankohs_state )
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ojankohs)
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankohs)
|
||||
|
||||
/* sound hardware */
|
||||
@ -913,6 +914,8 @@ static MACHINE_CONFIG_START( ccasino, ojankohs_state )
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ojankohs)
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankoy)
|
||||
|
||||
/* sound hardware */
|
||||
|
@ -296,8 +296,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( main_portmap, AS_IO, 8, pipedrm_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w)
|
||||
AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w)
|
||||
AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write)
|
||||
AM_RANGE(0x20, 0x20) AM_READ_PORT("P1") AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0x21, 0x21) AM_READ_PORT("P2") AM_WRITE(pipedrm_bankswitch_w)
|
||||
AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w)
|
||||
@ -596,8 +595,6 @@ MACHINE_START_MEMBER(pipedrm_state,pipedrm)
|
||||
|
||||
MACHINE_RESET_MEMBER(pipedrm_state,pipedrm)
|
||||
{
|
||||
int i;
|
||||
|
||||
m_pending_command = 0;
|
||||
m_sound_command = 0;
|
||||
|
||||
@ -612,10 +609,6 @@ MACHINE_RESET_MEMBER(pipedrm_state,pipedrm)
|
||||
m_scrolly[1] = 0;
|
||||
m_gfxreg = 0;
|
||||
m_flipscreen = 0;
|
||||
m_crtc_register = 0;
|
||||
|
||||
for (i = 0; i < 0x10; i++)
|
||||
m_crtc_data[i] = 0;
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( pipedrm, pipedrm_state )
|
||||
@ -646,6 +639,9 @@ static MACHINE_CONFIG_START( pipedrm, pipedrm_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w))
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
|
||||
MCFG_VSYSTEM_SPR2_SET_OFFSETS(-13, -6)
|
||||
@ -693,6 +689,9 @@ static MACHINE_CONFIG_START( hatris, pipedrm_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(pipedrm_state,hatris)
|
||||
|
||||
/* sound hardware */
|
||||
|
@ -133,7 +133,6 @@ void rpunch_state::machine_start()
|
||||
save_item(NAME(m_upd_rom_bank));
|
||||
save_item(NAME(m_sprite_xoffs));
|
||||
save_item(NAME(m_videoflags));
|
||||
save_item(NAME(m_crtc_register));
|
||||
save_item(NAME(m_bins));
|
||||
save_item(NAME(m_gins));
|
||||
}
|
||||
@ -248,7 +247,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, rpunch_state )
|
||||
AM_RANGE(0x080000, 0x083fff) AM_RAM_WRITE(rpunch_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(rpunch_scrollreg_w)
|
||||
AM_RANGE(0x0c0008, 0x0c0009) AM_WRITE(rpunch_crtc_data_w)
|
||||
AM_RANGE(0x0c0008, 0x0c0009) AM_SELECT(0x20) AM_WRITE(rpunch_gga_w)
|
||||
AM_RANGE(0x0c000c, 0x0c000d) AM_WRITE(rpunch_videoreg_w)
|
||||
AM_RANGE(0x0c000e, 0x0c000f) AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0x0c0010, 0x0c0013) AM_WRITE(rpunch_ins_w)
|
||||
@ -256,7 +255,6 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, rpunch_state )
|
||||
AM_RANGE(0x0c001a, 0x0c001b) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x0c001c, 0x0c001d) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x0c001e, 0x0c001f) AM_READ(sound_busy_r)
|
||||
AM_RANGE(0x0c0028, 0x0c0029) AM_WRITE(rpunch_crtc_register_w)
|
||||
AM_RANGE(0x0fc000, 0x0fffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -516,6 +514,9 @@ static MACHINE_CONFIG_START( rpunch, rpunch_state )
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(rpunch_state, rpunch_gga_data_w))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch)
|
||||
|
||||
/* sound hardware */
|
||||
@ -558,6 +559,9 @@ static MACHINE_CONFIG_START( svolleybl, rpunch_state )
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(rpunch_state, rpunch_gga_data_w))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch)
|
||||
|
||||
/* sound hardware */
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2608intf.h"
|
||||
#include "video/vsystem_gga.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
@ -58,7 +59,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, tail2nos_state )
|
||||
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0xfff008, 0xfff009) AM_READWRITE8(sound_semaphore_r,sound_command_w,0x00ff)
|
||||
// AM_RANGE(0xfff020, 0xfff023) V-System CRTC
|
||||
AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
// AM_RANGE(0xfff030, 0xfff031) link comms
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -263,6 +264,8 @@ static MACHINE_CONFIG_START( tail2nos, tail2nos_state )
|
||||
MCFG_K051316_WRAP(1)
|
||||
MCFG_K051316_CB(tail2nos_state, zoom_callback)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
|
@ -318,6 +318,7 @@ TODO:
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2610intf.h"
|
||||
#include "video/vsystem_gga.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
@ -371,9 +372,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, welltris_state )
|
||||
AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("EXTRA") /* P3+P4 Coin + Start Buttons */
|
||||
AM_RANGE(0xfff00c, 0xfff00d) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0xfff00c, 0xfff00d) AM_WRITENOP /* ?? */
|
||||
AM_RANGE(0xfff00e, 0xfff00f) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0xfff00e, 0xfff00f) AM_WRITENOP /* ?? */
|
||||
AM_RANGE(0xfff00c, 0xfff00f) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, welltris_state )
|
||||
@ -714,6 +714,8 @@ static MACHINE_CONFIG_START( welltris, welltris_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||
|
||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
|
||||
MCFG_VSYSTEM_SPR2_SET_PRITYPE(-1)
|
||||
|
@ -8,7 +8,9 @@
|
||||
and Bryan McPhail, Nicola Salmoria, Aaron Giles
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "sound/msm5205.h"
|
||||
#include "video/vsystem_gga.h"
|
||||
#include "video/vsystem_spr2.h"
|
||||
#include "screen.h"
|
||||
|
||||
@ -19,6 +21,7 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_gga(*this, "gga"),
|
||||
m_spr_old(*this, "vsystem_spr_old"),
|
||||
m_subcpu(*this, "sub"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
@ -31,6 +34,7 @@ public:
|
||||
optional_shared_ptr<uint8_t> m_videoram;
|
||||
optional_shared_ptr<uint8_t> m_spriteram;
|
||||
|
||||
required_device<vsystem_gga_device> m_gga;
|
||||
optional_device<vsystem_spr2_device> m_spr_old; // only used by pipe dream, split this state up and clean things...
|
||||
|
||||
/* video-related */
|
||||
@ -48,8 +52,6 @@ public:
|
||||
uint32_t m_scrolly_ofs;
|
||||
uint32_t m_scrollx_ofs;
|
||||
|
||||
uint8_t m_crtc_register;
|
||||
uint8_t m_crtc_data[0x10];
|
||||
emu_timer *m_crtc_timer;
|
||||
|
||||
/* misc */
|
||||
@ -80,8 +82,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(fromance_videoram_r);
|
||||
DECLARE_WRITE8_MEMBER(fromance_videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(fromance_scroll_w);
|
||||
DECLARE_WRITE8_MEMBER(fromance_crtc_data_w);
|
||||
DECLARE_WRITE8_MEMBER(fromance_crtc_register_w);
|
||||
DECLARE_WRITE8_MEMBER(fromance_gga_data_w);
|
||||
DECLARE_WRITE8_MEMBER(fromance_adpcm_reset_w);
|
||||
TILE_GET_INFO_MEMBER(get_fromance_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fromance_fg_tile_info);
|
||||
|
@ -1,6 +1,7 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Aaron Giles
|
||||
#include "sound/upd7759.h"
|
||||
#include "video/vsystem_gga.h"
|
||||
#include "screen.h"
|
||||
|
||||
class rpunch_state : public driver_device
|
||||
@ -14,6 +15,7 @@ public:
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_gga(*this, "gga"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_bitmapram(*this, "bitmapram"),
|
||||
m_spriteram(*this, "spriteram") { }
|
||||
@ -24,6 +26,7 @@ public:
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<vsystem_gga_device> m_gga;
|
||||
|
||||
required_shared_ptr<uint16_t> m_videoram;
|
||||
required_shared_ptr<uint16_t> m_bitmapram;
|
||||
@ -36,7 +39,6 @@ public:
|
||||
int m_sprite_palette;
|
||||
int m_sprite_xoffs;
|
||||
uint16_t m_videoflags;
|
||||
uint8_t m_crtc_register;
|
||||
uint8_t m_bins;
|
||||
uint8_t m_gins;
|
||||
tilemap_t *m_background[2];
|
||||
@ -48,8 +50,8 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(rpunch_videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(rpunch_videoreg_w);
|
||||
DECLARE_WRITE16_MEMBER(rpunch_scrollreg_w);
|
||||
DECLARE_WRITE16_MEMBER(rpunch_crtc_data_w);
|
||||
DECLARE_WRITE16_MEMBER(rpunch_crtc_register_w);
|
||||
DECLARE_WRITE16_MEMBER(rpunch_gga_w);
|
||||
DECLARE_WRITE8_MEMBER(rpunch_gga_data_w);
|
||||
DECLARE_WRITE16_MEMBER(rpunch_ins_w);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(hi_bits_r);
|
||||
DECLARE_WRITE8_MEMBER(upd_control_w);
|
||||
|
@ -82,8 +82,6 @@ void fromance_state::init_common( )
|
||||
save_item(NAME(m_flipscreen_old));
|
||||
save_item(NAME(m_scrollx_ofs));
|
||||
save_item(NAME(m_scrolly_ofs));
|
||||
save_item(NAME(m_crtc_register));
|
||||
save_item(NAME(m_crtc_data));
|
||||
save_pointer(NAME(m_local_paletteram.get()), 0x800 * 2);
|
||||
}
|
||||
|
||||
@ -263,7 +261,7 @@ TIMER_CALLBACK_MEMBER(fromance_state::crtc_interrupt_gen)
|
||||
// TODO: guesswork, looks fully programmable
|
||||
void fromance_state::crtc_refresh()
|
||||
{
|
||||
if(m_crtc_data[0] == 0) // sanity check
|
||||
if (m_gga->reg(0) == 0) // sanity check
|
||||
return;
|
||||
|
||||
rectangle visarea;
|
||||
@ -271,7 +269,7 @@ void fromance_state::crtc_refresh()
|
||||
|
||||
visarea.min_x = 0;
|
||||
visarea.min_y = 0;
|
||||
visarea.max_x = ((m_crtc_data[0]+1)*4) - 1;
|
||||
visarea.max_x = ((m_gga->reg(0)+1)*4) - 1;
|
||||
visarea.max_y = 240 - 1;
|
||||
|
||||
refresh = HZ_TO_ATTOSECONDS(60);
|
||||
@ -279,11 +277,9 @@ void fromance_state::crtc_refresh()
|
||||
m_screen->configure(512, 256, visarea, refresh);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fromance_state::fromance_crtc_data_w)
|
||||
WRITE8_MEMBER(fromance_state::fromance_gga_data_w)
|
||||
{
|
||||
m_crtc_data[m_crtc_register] = data;
|
||||
|
||||
switch (m_crtc_register)
|
||||
switch (offset)
|
||||
{
|
||||
case 0x00:
|
||||
crtc_refresh();
|
||||
@ -295,18 +291,12 @@ WRITE8_MEMBER(fromance_state::fromance_crtc_data_w)
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror("CRTC register %02X = %02X\n", m_crtc_register, data & 0xff);
|
||||
logerror("CRTC register %02X = %02X\n", offset, data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(fromance_state::fromance_crtc_register_w)
|
||||
{
|
||||
m_crtc_register = data & 0x0f;
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Main screen refresh
|
||||
|
@ -152,30 +152,26 @@ WRITE16_MEMBER(rpunch_state::rpunch_scrollreg_w)
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(rpunch_state::rpunch_crtc_data_w)
|
||||
WRITE16_MEMBER(rpunch_state::rpunch_gga_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
data &= 0xff;
|
||||
switch (m_crtc_register)
|
||||
{
|
||||
/* only register we know about.... */
|
||||
case 0x0b:
|
||||
m_crtc_timer->adjust(m_screen->time_until_vblank_start(), (data == 0xc0) ? 2 : 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror("CRTC register %02X = %02X\n", m_crtc_register, data & 0xff);
|
||||
break;
|
||||
}
|
||||
}
|
||||
m_gga->write(space, offset >> 4, data & 0xff);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(rpunch_state::rpunch_crtc_register_w)
|
||||
WRITE8_MEMBER(rpunch_state::rpunch_gga_data_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
m_crtc_register = data & 0xff;
|
||||
switch (offset)
|
||||
{
|
||||
/* only register we know about.... */
|
||||
case 0x0b:
|
||||
m_crtc_timer->adjust(m_screen->time_until_vblank_start(), (data == 0xc0) ? 2 : 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror("CRTC register %02X = %02X\n", offset, data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
69
src/mame/video/vsystem_gga.cpp
Normal file
69
src/mame/video/vsystem_gga.cpp
Normal file
@ -0,0 +1,69 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/******************************************************************************
|
||||
|
||||
Video System C7-01 GGA
|
||||
|
||||
Skeleton device.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "vsystem_gga.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// VIDEO SYSTEM GGA DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
// device type definition
|
||||
const device_type VSYSTEM_GGA = device_creator<vsystem_gga_device>;
|
||||
|
||||
//-------------------------------------------------
|
||||
// vsystem_gga_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
vsystem_gga_device::vsystem_gga_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, VSYSTEM_GGA, "Video System C7-01 GGA", tag, owner, clock, "vsystem_gga", __FILE__),
|
||||
device_video_interface(mconfig, *this, false),
|
||||
m_write_cb(*this)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void vsystem_gga_device::device_start()
|
||||
{
|
||||
m_write_cb.resolve();
|
||||
|
||||
m_address_latch = 0;
|
||||
for (u8 ® : m_regs)
|
||||
reg = 0;
|
||||
|
||||
save_item(NAME(m_address_latch));
|
||||
save_item(NAME(m_regs));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// write - register write handler
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(vsystem_gga_device::write)
|
||||
{
|
||||
if (offset & 1)
|
||||
{
|
||||
// address write
|
||||
m_address_latch = data & 0x0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
// data write
|
||||
m_regs[m_address_latch] = data;
|
||||
if (m_write_cb.isnull())
|
||||
logerror("Setting register $%02x = %02x\n", m_address_latch, data);
|
||||
else
|
||||
m_write_cb(m_address_latch, data, 0xff);
|
||||
}
|
||||
}
|
57
src/mame/video/vsystem_gga.h
Normal file
57
src/mame/video/vsystem_gga.h
Normal file
@ -0,0 +1,57 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/******************************************************************************
|
||||
|
||||
Video System C7-01 GGA
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef MAME_VIDEO_VSYSTEM_GGA_H
|
||||
#define MAME_VIDEO_VSYSTEM_GGA_H
|
||||
|
||||
//**************************************************************************
|
||||
// CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(_devcb) \
|
||||
devcb = &vsystem_gga_device::static_set_write_cb(*device, DEVCB_##_devcb);
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> vsystem_gga_device
|
||||
|
||||
class vsystem_gga_device : public device_t, public device_video_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
vsystem_gga_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
// static configuration
|
||||
template<class Obj> static devcb_base &static_set_write_cb(device_t &device, Obj &&object) { return downcast<vsystem_gga_device &>(device).m_write_cb.set_callback(std::forward<Obj>(object)); }
|
||||
|
||||
// memory handlers
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
|
||||
// temporary accessor
|
||||
u8 reg(u8 offset) const { return m_regs[offset]; }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
// internal state
|
||||
u8 m_address_latch;
|
||||
u8 m_regs[16];
|
||||
devcb_write8 m_write_cb;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
extern const device_type VSYSTEM_GGA;
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user