mirror of
https://github.com/holub/mame
synced 2025-05-21 05:08:54 +03:00
invqix.c: Minor doc update & minor whitespace clean up - NW
This commit is contained in:
parent
f7955f3188
commit
3ae8341d9c
@ -63,10 +63,13 @@ The other has the secondary label 351100210 with a serial number labeled:
|
|||||||
S/N: SIURxxxx (xxxx=number of PCB)
|
S/N: SIURxxxx (xxxx=number of PCB)
|
||||||
SPACE INVADERS U/R
|
SPACE INVADERS U/R
|
||||||
|
|
||||||
|
Both boards have the same program code and either can be set to Coin or Free Play
|
||||||
|
as well as Up Right, Cocktail or Flip Screen from the service menu.
|
||||||
|
|
||||||
Memory map:
|
Memory map:
|
||||||
000000-1fffff: program ROM
|
000000-1fffff: program ROM
|
||||||
200000-20ffff: Work RAM
|
200000-20ffff: Work RAM
|
||||||
400000-400003: OKIM9810
|
400000-400003: OKI M9810
|
||||||
600000-61ffff: VRAM
|
600000-61ffff: VRAM
|
||||||
620000-620005: video registers
|
620000-620005: video registers
|
||||||
|
|
||||||
@ -74,7 +77,7 @@ The other has the secondary label 351100210 with a serial number labeled:
|
|||||||
port 1: player 2 inputs
|
port 1: player 2 inputs
|
||||||
|
|
||||||
port 2 bit 3: must be "1" to avoid SERVICE ERROR
|
port 2 bit 3: must be "1" to avoid SERVICE ERROR
|
||||||
port 2 bit 6: FPGA chip select
|
port 2 bit 6: FPGA chip select
|
||||||
port 2 bit 7: FPGA clock in
|
port 2 bit 7: FPGA clock in
|
||||||
|
|
||||||
port 3 bit 0: FPGA status (1 for ready)
|
port 3 bit 0: FPGA status (1 for ready)
|
||||||
@ -128,7 +131,7 @@ public:
|
|||||||
DECLARE_READ8_MEMBER(porta_r);
|
DECLARE_READ8_MEMBER(porta_r);
|
||||||
DECLARE_READ8_MEMBER(portg_r);
|
DECLARE_READ8_MEMBER(portg_r);
|
||||||
|
|
||||||
DECLARE_WRITE16_MEMBER(vctl_w);
|
DECLARE_WRITE16_MEMBER(vctl_w);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// devices
|
// devices
|
||||||
@ -140,7 +143,7 @@ protected:
|
|||||||
virtual void video_start();
|
virtual void video_start();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UINT16 m_vctl; // 0000 for normal, 0001 for flip, 0100 when going to change (blank?)
|
UINT16 m_vctl; // 0000 for normal, 0001 for flip, 0100 when going to change (blank?)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -152,60 +155,60 @@ UINT32 invqix_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
{
|
{
|
||||||
int x,y;
|
int x,y;
|
||||||
|
|
||||||
// this means freeze or blank or something
|
// this means freeze or blank or something
|
||||||
if (m_vctl == 0x100)
|
if (m_vctl == 0x100)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_vctl == 0x0000)
|
if (m_vctl == 0x0000)
|
||||||
{
|
{
|
||||||
for(y=0;y<256;y++)
|
for(y=0;y<256;y++)
|
||||||
{
|
{
|
||||||
for(x=0;x<256;x++)
|
for(x=0;x<256;x++)
|
||||||
{
|
{
|
||||||
UINT8 r,g,b;
|
UINT8 r,g,b;
|
||||||
int pen_data;
|
int pen_data;
|
||||||
|
|
||||||
pen_data = (m_vram[(x+y*256)]);
|
pen_data = (m_vram[(x+y*256)]);
|
||||||
b = (pen_data & 0x001f);
|
b = (pen_data & 0x001f);
|
||||||
g = (pen_data & 0x03e0) >> 5;
|
g = (pen_data & 0x03e0) >> 5;
|
||||||
r = (pen_data & 0x7c00) >> 10;
|
r = (pen_data & 0x7c00) >> 10;
|
||||||
r = (r << 3) | (r & 0x7);
|
r = (r << 3) | (r & 0x7);
|
||||||
g = (g << 3) | (g & 0x7);
|
g = (g << 3) | (g & 0x7);
|
||||||
b = (b << 3) | (b & 0x7);
|
b = (b << 3) | (b & 0x7);
|
||||||
|
|
||||||
if(cliprect.contains(x, y))
|
if(cliprect.contains(x, y))
|
||||||
bitmap.pix32(y, x) = r << 16 | g << 8 | b;
|
bitmap.pix32(y, x) = r << 16 | g << 8 | b;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (m_vctl == 0x0001) // flip
|
else if (m_vctl == 0x0001) // flip
|
||||||
{
|
{
|
||||||
for(y=0;y<256;y++)
|
for(y=0;y<256;y++)
|
||||||
{
|
{
|
||||||
for(x=0;x<256;x++)
|
for(x=0;x<256;x++)
|
||||||
{
|
{
|
||||||
UINT8 r,g,b;
|
UINT8 r,g,b;
|
||||||
int pen_data;
|
int pen_data;
|
||||||
|
|
||||||
pen_data = (m_vram[(256-x)+((256-y)*256)]);
|
pen_data = (m_vram[(256-x)+((256-y)*256)]);
|
||||||
b = (pen_data & 0x001f);
|
b = (pen_data & 0x001f);
|
||||||
g = (pen_data & 0x03e0) >> 5;
|
g = (pen_data & 0x03e0) >> 5;
|
||||||
r = (pen_data & 0x7c00) >> 10;
|
r = (pen_data & 0x7c00) >> 10;
|
||||||
r = (r << 3) | (r & 0x7);
|
r = (r << 3) | (r & 0x7);
|
||||||
g = (g << 3) | (g & 0x7);
|
g = (g << 3) | (g & 0x7);
|
||||||
b = (b << 3) | (b & 0x7);
|
b = (b << 3) | (b & 0x7);
|
||||||
|
|
||||||
if(cliprect.contains(x, y))
|
if(cliprect.contains(x, y))
|
||||||
bitmap.pix32(y, x) = r << 16 | g << 8 | b;
|
bitmap.pix32(y, x) = r << 16 | g << 8 | b;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logerror("invqix: Unhandled vctl %04x\n", m_vctl);
|
logerror("invqix: Unhandled vctl %04x\n", m_vctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -252,7 +255,7 @@ READ8_MEMBER(invqix_state::portg_r)
|
|||||||
|
|
||||||
WRITE16_MEMBER(invqix_state::vctl_w)
|
WRITE16_MEMBER(invqix_state::vctl_w)
|
||||||
{
|
{
|
||||||
m_vctl = data;
|
m_vctl = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START(invqix_prg_map, AS_PROGRAM, 16, invqix_state)
|
static ADDRESS_MAP_START(invqix_prg_map, AS_PROGRAM, 16, invqix_state)
|
||||||
@ -262,7 +265,7 @@ static ADDRESS_MAP_START(invqix_prg_map, AS_PROGRAM, 16, invqix_state)
|
|||||||
AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write, 0xff00)
|
AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write, 0xff00)
|
||||||
AM_RANGE(0x400002, 0x400003) AM_DEVREAD8("oki", okim9810_device, read, 0xff00)
|
AM_RANGE(0x400002, 0x400003) AM_DEVREAD8("oki", okim9810_device, read, 0xff00)
|
||||||
AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram")
|
AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram")
|
||||||
AM_RANGE(0x620004, 0x620005) AM_WRITE(vctl_w)
|
AM_RANGE(0x620004, 0x620005) AM_WRITE(vctl_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START(invqix_io_map, AS_IO, 8, invqix_state)
|
static ADDRESS_MAP_START(invqix_io_map, AS_IO, 8, invqix_state)
|
||||||
|
Loading…
Reference in New Issue
Block a user