summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/gamate.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/gamate.c')
-rw-r--r--src/mess/drivers/gamate.c164
1 files changed, 81 insertions, 83 deletions
diff --git a/src/mess/drivers/gamate.c b/src/mess/drivers/gamate.c
index cf48dbf80df..4ef0a94ab4a 100644
--- a/src/mess/drivers/gamate.c
+++ b/src/mess/drivers/gamate.c
@@ -2,7 +2,7 @@
PeT mess@utanet.at 2007, 2014
Peter Wilhelmsen peter.wilhelmsen@gmail.com
Morten Shearman Kirkegaard morten+gamate@afdelingp.dk
- Juan FĂ©lix Mateos vectrex@hackermesh.org
+ Juan F??lix Mateos vectrex@hackermesh.org
******************************************************************************/
#include "emu.h"
@@ -18,7 +18,7 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_cart(*this, "cartslot")
-// , m_gfxdecode(*this, "gfxdecode")
+// , m_gfxdecode(*this, "gfxdecode")
, m_io_joy(*this, "JOY")
, m_palette(*this, "palette")
, m_bios(*this, "bios")
@@ -47,14 +47,14 @@ private:
struct
{
- UINT8 reg[8];
- struct {
- bool write;
- bool page2; // else page1
+ UINT8 reg[8];
+ struct {
+ bool write;
+ bool page2; // else page1
UINT8 ypos, xpos/*tennis*/;
- UINT8 data[2][0x100][0x20];
- } bitmap;
- UINT8 x, y;
+ UINT8 data[2][0x100][0x20];
+ } bitmap;
+ UINT8 x, y;
bool y_increment;
} video;
@@ -68,7 +68,7 @@ private:
required_device<cpu_device> m_maincpu;
required_device<generic_slot_device> m_cart;
-// required_device<gfxdecode_device> m_gfxdecode;
+// required_device<gfxdecode_device> m_gfxdecode;
required_ioport m_io_joy;
required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_bios;
@@ -113,27 +113,27 @@ READ8_MEMBER( gamate_state::protection_r ) { return 1; }
WRITE8_MEMBER( gamate_state::gamate_video_w )
{
- video.reg[offset]=data;
- switch (offset) {
- case 1: video.bitmap.write=data&0xc0; // more addressing mode
+ video.reg[offset]=data;
+ switch (offset) {
+ case 1: video.bitmap.write=data&0xc0; // more addressing mode
video.y_increment=data&0x40;
break;
case 2: video.bitmap.xpos=data;break; // at least 7 bits
case 3: video.bitmap.ypos=data;break; // at least 7 bits
- case 4: video.bitmap.page2=data&0x80;video.x=data&0x7f;break;
- case 5: video.y=data;break;
- case 7:
- if (video.bitmap.write) {
- if (video.x<ARRAY_LENGTH(video.bitmap.data[0][0]) /*&& video.y<ARRAY_LENGTH(video.bitmap.data[0])*/)
- video.bitmap.data[video.bitmap.page2][video.y][video.x]=data;
- else
- logerror("%.6f %04x video bitmap x %x invalid\n",machine().time().as_double(), m_maincpu->pc(), video.x);
- } else {
- video.bitmap.data[0][video.y][video.x&(ARRAY_LENGTH(video.bitmap.data[0][0])-1)]=data;
- }
- if (video.y_increment) video.y++;
+ case 4: video.bitmap.page2=data&0x80;video.x=data&0x7f;break;
+ case 5: video.y=data;break;
+ case 7:
+ if (video.bitmap.write) {
+ if (video.x<ARRAY_LENGTH(video.bitmap.data[0][0]) /*&& video.y<ARRAY_LENGTH(video.bitmap.data[0])*/)
+ video.bitmap.data[video.bitmap.page2][video.y][video.x]=data;
+ else
+ logerror("%.6f %04x video bitmap x %x invalid\n",machine().time().as_double(), m_maincpu->pc(), video.x);
+ } else {
+ video.bitmap.data[0][video.y][video.x&(ARRAY_LENGTH(video.bitmap.data[0][0])-1)]=data;
+ }
+ if (video.y_increment) video.y++;
else video.x++;
- }
+ }
}
WRITE8_MEMBER( gamate_state::cart_bankswitchmulti_w )
@@ -149,54 +149,54 @@ WRITE8_MEMBER( gamate_state::cart_bankswitch_w )
READ8_MEMBER( gamate_state::gamate_video_r )
{
if (offset!=6) return 0;
- UINT8 data=0;
- if (video.bitmap.write) {
- if (video.x<ARRAY_LENGTH(video.bitmap.data[0][0]) /*&& video.y<ARRAY_LENGTH(video.bitmap.data[0])*/)
- data=video.bitmap.data[video.bitmap.page2][video.y][video.x];
- else
- logerror("%.6f video bitmap x %x invalid\n",machine().time().as_double(),video.x);
- } else {
- data=video.bitmap.data[0][video.y][video.x&(ARRAY_LENGTH(video.bitmap.data[0][0])-1)];
- }
- if (m_maincpu->pc()<0xf000)
- logerror("%.6f video read %04x %02x\n",machine().time().as_double(),offset, data);
- return data;
+ UINT8 data=0;
+ if (video.bitmap.write) {
+ if (video.x<ARRAY_LENGTH(video.bitmap.data[0][0]) /*&& video.y<ARRAY_LENGTH(video.bitmap.data[0])*/)
+ data=video.bitmap.data[video.bitmap.page2][video.y][video.x];
+ else
+ logerror("%.6f video bitmap x %x invalid\n",machine().time().as_double(),video.x);
+ } else {
+ data=video.bitmap.data[0][video.y][video.x&(ARRAY_LENGTH(video.bitmap.data[0][0])-1)];
+ }
+ if (m_maincpu->pc()<0xf000)
+ logerror("%.6f video read %04x %02x\n",machine().time().as_double(),offset, data);
+ return data;
}
WRITE8_MEMBER( gamate_state::gamate_audio_w )
{
- logerror("%.6f %04x audio write %04x %02x\n",machine().time().as_double(),m_maincpu->pc(),offset,data);
+ logerror("%.6f %04x audio write %04x %02x\n",machine().time().as_double(),m_maincpu->pc(),offset,data);
}
READ8_MEMBER( gamate_state::gamate_audio_r )
{
- logerror("%.6f %04x audio read %04x \n",machine().time().as_double(),m_maincpu->pc(),offset);
+ logerror("%.6f %04x audio read %04x \n",machine().time().as_double(),m_maincpu->pc(),offset);
return 0;
}
READ8_MEMBER( gamate_state::gamate_pad_r )
{
- UINT8 data=m_io_joy->read();
- return data;
+ UINT8 data=m_io_joy->read();
+ return data;
}
static ADDRESS_MAP_START( gamate_mem, AS_PROGRAM, 8, gamate_state )
- AM_RANGE(0x0000, 0x03ff) AM_RAM
- AM_RANGE(0x4000, 0x400d) AM_READWRITE(gamate_audio_r, gamate_audio_w)
- AM_RANGE(0x4400, 0x4400) AM_READ(gamate_pad_r)
- AM_RANGE(0x5000, 0x5007) AM_READWRITE(gamate_video_r, gamate_video_w)
- AM_RANGE(0x5a00, 0x5a00) AM_READ(protection_r)
+ AM_RANGE(0x0000, 0x03ff) AM_RAM
+ AM_RANGE(0x4000, 0x400d) AM_READWRITE(gamate_audio_r, gamate_audio_w)
+ AM_RANGE(0x4400, 0x4400) AM_READ(gamate_pad_r)
+ AM_RANGE(0x5000, 0x5007) AM_READWRITE(gamate_video_r, gamate_video_w)
+ AM_RANGE(0x5a00, 0x5a00) AM_READ(protection_r)
- AM_RANGE(0x6000, 0x9fff) AM_READ_BANK("bankmulti")
- AM_RANGE(0xa000, 0xdfff) AM_READ_BANK("bank")
+ AM_RANGE(0x6000, 0x9fff) AM_READ_BANK("bankmulti")
+ AM_RANGE(0xa000, 0xdfff) AM_READ_BANK("bank")
AM_RANGE(0x6000, 0x6002) AM_READWRITE(gamate_cart_protection_r, gamate_cart_protection_w)
-// AM_RANGE(0x6000, 0xdfff) AM_READWRITE(gamate_cart_r, gamate_cart_w)
+// AM_RANGE(0x6000, 0xdfff) AM_READWRITE(gamate_cart_r, gamate_cart_w)
AM_RANGE(0x8000, 0x8000) AM_WRITE(cart_bankswitchmulti_w)
AM_RANGE(0xc000, 0xc000) AM_WRITE(cart_bankswitch_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_SHARE("bios")
+ AM_RANGE(0xf000, 0xffff) AM_ROM AM_SHARE("bios")
ADDRESS_MAP_END
@@ -215,16 +215,16 @@ INPUT_PORTS_END
#ifdef UNUSED_CODE
static const struct gfx_layout gamate_charlayout =
{
- 4, /* width of object */
- 1, /* height of object */
- 256,/* 256 characters */
- 2, /* bits per pixel */
- { 0,1 }, /* no bitplanes */
- /* x offsets */
- { 0,2,4,6 },
- /* y offsets */
- { 0 },
- 8*1 /* size of 1 object in bits */
+ 4, /* width of object */
+ 1, /* height of object */
+ 256,/* 256 characters */
+ 2, /* bits per pixel */
+ { 0,1 }, /* no bitplanes */
+ /* x offsets */
+ { 0,2,4,6 },
+ /* y offsets */
+ { 0 },
+ 8*1 /* size of 1 object in bits */
};
static const unsigned short gamate_palette[4] =
@@ -233,17 +233,17 @@ static const unsigned short gamate_palette[4] =
};
static GFXDECODE_START( gamate_charlayout )
- GFXDECODE_ENTRY( "gfx1", 0x0000, gamate_charlayout, 0, 0x100 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, gamate_charlayout, 0, 0x100 )
GFXDECODE_END
#endif
/* palette in red, green, blue tribles */
static const unsigned char gamate_colors[4][3] =
{
- { 255,255,255 },
- { 0xa0, 0xa0, 0xa0 },
- { 0x60, 0x60, 0x60 },
- { 0, 0, 0 }
+ { 255,255,255 },
+ { 0xa0, 0xa0, 0xa0 },
+ { 0x60, 0x60, 0x60 },
+ { 0, 0, 0 }
};
PALETTE_INIT_MEMBER(gamate_state, gamate)
@@ -274,22 +274,22 @@ static void BlitPlane(UINT16* line, UINT8 plane1, UINT8 plane2)
UINT32 gamate_state::screen_update_gamate(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int x, y, j;
- for (y=0;y<152;y++) {
- for (x=-(video.bitmap.xpos&7), j=0;x<160;x+=8, j++) {
- UINT8 d1=video.bitmap.data[0][(y+video.bitmap.ypos)&0xff][(j+video.bitmap.xpos/8)&0x1f];
- UINT8 d2=video.bitmap.data[1][(y+video.bitmap.ypos)&0xff][(j+video.bitmap.xpos/8)&0x1f];
- BlitPlane(&bitmap.pix16(y, x+4), d1, d2);
- BlitPlane(&bitmap.pix16(y, x), d1>>4, d2>>4);
- }
- }
- return 0;
+ int x, y, j;
+ for (y=0;y<152;y++) {
+ for (x=-(video.bitmap.xpos&7), j=0;x<160;x+=8, j++) {
+ UINT8 d1=video.bitmap.data[0][(y+video.bitmap.ypos)&0xff][(j+video.bitmap.xpos/8)&0x1f];
+ UINT8 d2=video.bitmap.data[1][(y+video.bitmap.ypos)&0xff][(j+video.bitmap.xpos/8)&0x1f];
+ BlitPlane(&bitmap.pix16(y, x+4), d1, d2);
+ BlitPlane(&bitmap.pix16(y, x), d1>>4, d2>>4);
+ }
+ }
+ return 0;
}
DRIVER_INIT_MEMBER(gamate_state,gamate)
{
memset(&video, 0, sizeof(video));/* memset(m_ram, 0, sizeof(m_ram));*/
- UINT8 *gfx=memregion("gfx1")->base(); for (int i=0; i<256; i++) gfx[i]=i;
+ UINT8 *gfx=memregion("gfx1")->base(); for (int i=0; i<256; i++) gfx[i]=i;
timer1 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gamate_state::gamate_timer),this));
timer2 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gamate_state::gamate_timer2),this));
}
@@ -298,7 +298,7 @@ DRIVER_INIT_MEMBER(gamate_state,gamate)
void gamate_state::machine_start()
{
if (m_cart->exists()) {
-// m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r));
+// m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r));
membank("bankmulti")->set_base(m_cart->get_rom_base());
membank("bank")->set_base(m_cart->get_rom_base()+0x4000); // bankswitched games in reality no offset
}
@@ -355,9 +355,9 @@ static MACHINE_CONFIG_START( gamate, gamate_state )
MCFG_SCREEN_UPDATE_DRIVER(gamate_state, screen_update_gamate)
MCFG_SCREEN_PALETTE("palette")
-// MCFG_GFXDECODE_ADD("gfxdecode", "palette", gamate )
+// MCFG_GFXDECODE_ADD("gfxdecode", "palette", gamate )
MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(gamate_colors))
-// MCFG_PALETTE_INDIRECT_ENTRIES(4)
+// MCFG_PALETTE_INDIRECT_ENTRIES(4)
MCFG_PALETTE_INIT_OWNER(gamate_state, gamate)
MCFG_DEFAULT_LAYOUT(layout_lcd)
@@ -371,11 +371,9 @@ MACHINE_CONFIG_END
ROM_START(gamate)
ROM_REGION(0x10000,"maincpu", 0)
ROM_LOAD("gamate_bios_umc.bin", 0xf000, 0x1000, CRC(07090415) SHA1(ea449dc607601f9a68d855ad6ab53800d2e99297) )
- ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
CONS( 19??, gamate, 0, 0, gamate, gamate, gamate_state, gamate, "Bit Corp", "Gamate", GAME_NO_SOUND)
-
-