mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
new WORKING machines --- Play TV SSX Snowboarder (and other misc / TV game work) (#4576)
New working machines --- Play TV SSX Snowboarder (NTSC) [Sean Riddle, Peter Wilhelmsen, David Haywood] Play TV Snowboarder (White) (NTSC) [Sean Riddle, Peter Wilhelmsen, David Haywood] Barbie Dance Party [Sean Riddle, Peter Wilhelmsen, David Haywood] Play TV Basketball [Sean Riddle, Peter Wilhelmsen, David Haywood] Machines promoted to working --- Play TV Snowboarder (Blue) (NTSC) [Sean Riddle, Peter Wilhelmsen, David Haywood] New clones marked as NOT_WORKING ---- Queen Bee (Ver. 114) [Cristiano-MDQ] Queen Bee (Israel, Ver. 100) [Cristiano-MDQ] Queen Bee (SA-101-HARD) [Cristiano-MDQ] New NOT_WORKING software list additions --- monon_color.xml: mechcycla Jī jiǎ xuànfēng-gédòu dàshī (set 2) [zhongtiao1] also refactored the spg110 stuff to be closer to spg2xx, which regresses things a bit for now due to differences, but only thing using it is the in-progress jak_capb emulation I'm working on. sharing the code doesn't seem practical due to all the subtle differences, so needs working out like this for now at least. (nw)
This commit is contained in:
parent
8b501687be
commit
d75ce57f3c
@ -58,7 +58,7 @@
|
||||
</software>
|
||||
|
||||
<software name="mechcycl"> <!-- 103 - Mech Cyclone: Fighting Masters -->
|
||||
<description>Jī jiǎ xuànfēng-gédòu dàshī</description>
|
||||
<description>Jī jiǎ xuànfēng-gédòu dàshī (set 1)</description>
|
||||
<year>2011</year>
|
||||
<publisher>M&D</publisher>
|
||||
<info name="alt_title" value="机甲旋风-格斗大师"/>
|
||||
@ -69,6 +69,18 @@
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mechcycla" cloneof="mechcycl"> <!-- 103 - Mech Cyclone: Fighting Masters -->
|
||||
<description>Jī jiǎ xuànfēng-gédòu dàshī (set 2)</description>
|
||||
<year>2011</year>
|
||||
<publisher>M&D</publisher>
|
||||
<info name="alt_title" value="机甲旋风-格斗大师"/>
|
||||
<part name="cart" interface="monon_color_cart">
|
||||
<dataarea name="rom" size="0x1000000">
|
||||
<rom name="103_alt.bin" size="0x0800000" crc="63bc84fb" sha1="e90e5a60f15d7ebfb83976ccb0183ecc723b5eb4" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="zinba"> <!-- 104 - Zinba! : The lost relics -->
|
||||
<description>Shén pò-shīluò de yíjī</description>
|
||||
<year>2011</year>
|
||||
|
@ -5,7 +5,9 @@
|
||||
SunPlus SPG110-series SoC peripheral emulation
|
||||
|
||||
0032xx looks like it could be the same as 003dxx on spg2xx
|
||||
but the video seems quite different?
|
||||
but the video seems to have differences, and data
|
||||
is fetched from private buffers filled by DMA instead of
|
||||
main space? tile attributes different? palette format different
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
@ -21,36 +23,136 @@ spg110_device::spg110_device(const machine_config &mconfig, device_type type, co
|
||||
m_cpu(*this, finder_base::DUMMY_TAG),
|
||||
m_palette(*this, "palette"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_bg_videoram(*this, "bg_videoram"),
|
||||
m_fg_videoram(*this, "fg_videoram"),
|
||||
m_bg_attrram(*this, "bg_attrram"),
|
||||
m_fg_attrram(*this, "fg_attrram"),
|
||||
m_palram(*this, "palram")
|
||||
{
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(spg110_device::bg_videoram_w)
|
||||
template<spg110_device::flipx_t FlipX>
|
||||
void spg110_device::blit(const rectangle &cliprect, uint32_t line, uint32_t xoff, uint32_t yoff, uint32_t attr, uint32_t ctrl, uint32_t bitmap_addr, uint16_t tile)
|
||||
{
|
||||
COMBINE_DATA(&m_bg_videoram[offset]);
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
address_space &space = m_cpu->space(AS_PROGRAM);
|
||||
|
||||
int32_t h = 8 << ((attr & PAGE_TILE_HEIGHT_MASK) >> PAGE_TILE_HEIGHT_SHIFT);
|
||||
int32_t w = 8 << ((attr & PAGE_TILE_WIDTH_MASK) >> PAGE_TILE_WIDTH_SHIFT);
|
||||
|
||||
uint32_t yflipmask = attr & TILE_Y_FLIP ? h - 1 : 0;
|
||||
|
||||
uint32_t nc = ((attr & 0x0003) + 1) << 1;
|
||||
|
||||
uint32_t palette_offset = (attr & 0x0f00) >> 4;
|
||||
|
||||
palette_offset >>= nc;
|
||||
palette_offset <<= nc;
|
||||
|
||||
uint32_t bits_per_row = nc * w / 16;
|
||||
uint32_t words_per_tile = bits_per_row * h;
|
||||
uint32_t m = bitmap_addr + words_per_tile * tile + bits_per_row * (line ^ yflipmask);
|
||||
uint32_t bits = 0;
|
||||
uint32_t nbits = 0;
|
||||
uint32_t y = line;
|
||||
|
||||
int yy = (yoff + y) & 0x1ff;
|
||||
if (yy >= 0x01c0)
|
||||
yy -= 0x0200;
|
||||
|
||||
if (yy > 240 || yy < 0)
|
||||
return;
|
||||
|
||||
int y_index = yy * 320;
|
||||
|
||||
for (int32_t x = FlipX ? (w - 1) : 0; FlipX ? x >= 0 : x < w; FlipX ? x-- : x++)
|
||||
{
|
||||
int xx = xoff + x;
|
||||
|
||||
bits <<= nc;
|
||||
|
||||
if (nbits < nc)
|
||||
{
|
||||
uint16_t b = space.read_word(m++ & 0x3fffff);
|
||||
//b = (b << 8) | (b >> 8);
|
||||
bits |= b << (nc - nbits);
|
||||
nbits += 16;
|
||||
}
|
||||
nbits -= nc;
|
||||
|
||||
uint32_t pal = palette_offset + (bits >> 16);
|
||||
bits &= 0xffff;
|
||||
|
||||
xx &= 0x01ff;
|
||||
if (xx >= 0x01c0)
|
||||
xx -= 0x0200;
|
||||
|
||||
if (xx >= 0 && xx < 320)
|
||||
{
|
||||
// TODO, this is completely wrong for this palette system
|
||||
int pix_index = xx + y_index;
|
||||
uint16_t rawpal = m_palram[pal];
|
||||
const pen_t *pens = m_palette->pens();
|
||||
uint32_t paldata = pens[pal];
|
||||
|
||||
if (!(rawpal & 0x8000))
|
||||
{
|
||||
m_screenbuf[pix_index] = paldata;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(spg110_device::fg_videoram_w)
|
||||
void spg110_device::blit_page(const rectangle &cliprect, uint32_t scanline, int depth, uint32_t bitmap_addr, uint16_t *regs)
|
||||
{
|
||||
COMBINE_DATA(&m_fg_videoram[offset]);
|
||||
m_fg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
uint32_t xscroll = regs[0];
|
||||
uint32_t yscroll = regs[1];
|
||||
uint32_t attr = regs[2];
|
||||
uint32_t ctrl = regs[3];
|
||||
uint32_t tilemap = regs[4];
|
||||
uint32_t palette_map = regs[5];
|
||||
address_space &space2 = this->space(0);
|
||||
|
||||
WRITE16_MEMBER(spg110_device::bg_attrram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_bg_attrram[offset]);
|
||||
m_bg_tilemap->mark_tile_dirty(offset/2);
|
||||
}
|
||||
if (!(ctrl & PAGE_ENABLE_MASK))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(spg110_device::fg_attrram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_fg_attrram[offset]);
|
||||
m_fg_tilemap->mark_tile_dirty(offset/2);
|
||||
if (((attr & PAGE_DEPTH_FLAG_MASK) >> PAGE_DEPTH_FLAG_SHIFT) != depth)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t tile_h = 8 << ((attr & PAGE_TILE_HEIGHT_MASK) >> PAGE_TILE_HEIGHT_SHIFT);
|
||||
uint32_t tile_w = 8 << ((attr & PAGE_TILE_WIDTH_MASK) >> PAGE_TILE_WIDTH_SHIFT);
|
||||
|
||||
uint32_t tile_count_x = 512 / tile_w;
|
||||
|
||||
uint32_t bitmap_y = (scanline + yscroll) & 0xff;
|
||||
uint32_t y0 = bitmap_y / tile_h;
|
||||
uint32_t tile_scanline = bitmap_y % tile_h;
|
||||
uint32_t tile_address = tile_count_x * y0;
|
||||
|
||||
for (uint32_t x0 = 0; x0 < tile_count_x; x0++, tile_address++)
|
||||
{
|
||||
uint32_t yy = ((tile_h * y0 - yscroll + 0x10) & 0xff) - 0x10;
|
||||
uint32_t xx = (tile_w * x0 - xscroll) & 0x1ff;
|
||||
uint16_t tile = (ctrl & PAGE_WALLPAPER_MASK) ? space2.read_word(tilemap*2) : space2.read_word((tilemap + tile_address)*2);
|
||||
uint16_t palette = 0;
|
||||
|
||||
if (!tile)
|
||||
continue;
|
||||
|
||||
palette = space2.read_word(palette_map + tile_address / 2);
|
||||
if (x0 & 1)
|
||||
palette = (palette & 0xff00) >> 8;
|
||||
else
|
||||
palette = (palette & 0x00ff);
|
||||
|
||||
|
||||
bool flip_x = 0;//(tileattr & TILE_X_FLIP);
|
||||
|
||||
if (flip_x)
|
||||
blit<FlipXOn>(cliprect, tile_scanline, xx, yy, attr, ctrl, bitmap_addr, tile);
|
||||
else
|
||||
blit<FlipXOff>(cliprect, tile_scanline, xx, yy, attr, ctrl, bitmap_addr, tile);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -166,18 +268,7 @@ WRITE16_MEMBER(spg110_device::spg110_3221_w)
|
||||
WRITE16_MEMBER(spg110_device::spg110_3223_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_3225_w) { }
|
||||
|
||||
WRITE16_MEMBER(spg110_device::spg110_bg_scrollx_w) { COMBINE_DATA(&m_bg_scrollx); }
|
||||
WRITE16_MEMBER(spg110_device::spg110_bg_scrolly_w) { COMBINE_DATA(&m_bg_scrolly); }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2012_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2013_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2014_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2015_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2016_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2017_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2018_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2019_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_201a_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_201b_w) { }
|
||||
|
||||
WRITE16_MEMBER(spg110_device::spg110_201c_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2020_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2042_w) { }
|
||||
@ -218,66 +309,44 @@ WRITE16_MEMBER(spg110_device::spg110_205d_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_205e_w) { }
|
||||
WRITE16_MEMBER(spg110_device::spg110_205f_w) { }
|
||||
|
||||
WRITE16_MEMBER(spg110_device::spg110_2061_w) { COMBINE_DATA(&m_2061_outer); }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2064_w) { COMBINE_DATA(&m_2064_outer); }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2067_w) { COMBINE_DATA(&m_2067_outer); }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2068_w) { COMBINE_DATA(&m_2068_outer); }
|
||||
WRITE16_MEMBER(spg110_device::dma_unk_2061_w) { COMBINE_DATA(&m_dma_unk_2061); }
|
||||
WRITE16_MEMBER(spg110_device::dma_dst_step_w) { COMBINE_DATA(&m_dma_dst_step); }
|
||||
WRITE16_MEMBER(spg110_device::dma_unk_2067_w) { COMBINE_DATA(&m_dma_unk_2067); }
|
||||
WRITE16_MEMBER(spg110_device::dma_src_step_w) { COMBINE_DATA(&m_dma_src_step); }
|
||||
|
||||
WRITE16_MEMBER(spg110_device::spg110_2060_w) { COMBINE_DATA(&m_2060_inner); }
|
||||
WRITE16_MEMBER(spg110_device::spg110_2066_w) { COMBINE_DATA(&m_2066_inner); }
|
||||
WRITE16_MEMBER(spg110_device::dma_dst_w) { COMBINE_DATA(&m_dma_dst); }
|
||||
WRITE16_MEMBER(spg110_device::dma_src_w) { COMBINE_DATA(&m_dma_src); }
|
||||
|
||||
|
||||
WRITE16_MEMBER(spg110_device::spg110_2062_w)
|
||||
WRITE16_MEMBER(spg110_device::dma_len_trigger_w)
|
||||
{
|
||||
// int length = (data - 1) & 0xff;
|
||||
int length = data & 0x1fff;
|
||||
|
||||
// this is presumably a counter that underflows to 0x1fff, because that's what the wait loop waits for?
|
||||
logerror("%s: trigger (%04x) with values (written outer) %04x %04x %04x %04x | (written inner) %04x (ram source?) %04x\n", machine().describe_context(), data, m_2061_outer, m_2064_outer, m_2067_outer, m_2068_outer, m_2060_inner, m_2066_inner);
|
||||
logerror("%s: (trigger len) %04x with values (unk) %04x (dststep) %04x (unk) %04x (src step) %04x | (dst) %04x (src) %04x\n", machine().describe_context(), data, m_dma_unk_2061, m_dma_dst_step, m_dma_unk_2067, m_dma_src_step, m_dma_dst, m_dma_src);
|
||||
|
||||
int source = m_2066_inner;
|
||||
int dest = m_2060_inner;
|
||||
if ((m_dma_unk_2061!=0x0000) || (m_dma_unk_2067 != 0x0000))
|
||||
fatalerror("unknown DMA params are not zero!\n");
|
||||
|
||||
int source = m_dma_src;
|
||||
int dest = m_dma_dst;
|
||||
|
||||
// maybe
|
||||
/*
|
||||
if (!(m_2068_outer & 1))
|
||||
{
|
||||
length = length * 4;
|
||||
}
|
||||
*/
|
||||
//logerror("[ ");
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
if (m_2068_outer & 1)
|
||||
{
|
||||
address_space &mem = m_cpu->space(AS_PROGRAM);
|
||||
uint16_t val = mem.read_word(m_2066_inner + i);
|
||||
address_space &mem = m_cpu->space(AS_PROGRAM);
|
||||
uint16_t val = mem.read_word(source);
|
||||
|
||||
this->space(0).write_word(dest * 2, val, 0xffff);
|
||||
}
|
||||
else // guess, it needs to clear layers somehow
|
||||
{
|
||||
// is there a fill mode to fill other values?
|
||||
this->space(0).write_word(dest * 2, 0x0000, 0xffff);
|
||||
}
|
||||
|
||||
source++;
|
||||
// m_2064_outer is usually 1, but sometimes 0x20/0x40
|
||||
dest+=m_2064_outer;
|
||||
|
||||
// logerror("%04x, ", val);
|
||||
this->space(0).write_word(dest * 2, val, 0xffff);
|
||||
|
||||
source+=m_dma_src_step;
|
||||
dest+=m_dma_dst_step;
|
||||
}
|
||||
// logerror(" ]\n");
|
||||
}
|
||||
|
||||
READ16_MEMBER(spg110_device::spg110_2062_r)
|
||||
READ16_MEMBER(spg110_device::dma_len_status_r)
|
||||
{
|
||||
return 0x1fff; // DMA related?
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER(spg110_device::spg110_2013_r) { return 0x0000; }
|
||||
READ16_MEMBER(spg110_device::spg110_2019_r) { return 0x0000; }
|
||||
READ16_MEMBER(spg110_device::spg110_2037_r) { return 0x0000; }
|
||||
READ16_MEMBER(spg110_device::spg110_2042_r) { return 0x0000; }
|
||||
|
||||
@ -308,24 +377,70 @@ WRITE16_MEMBER(spg110_device::spg110_310d_w) { }
|
||||
|
||||
READ16_MEMBER(spg110_device::spg110_310f_r) { return 0x0000; }
|
||||
|
||||
READ16_MEMBER(spg110_device::tmap0_regs_r) { return tmap0_regs[offset]; }
|
||||
READ16_MEMBER(spg110_device::tmap1_regs_r) { return tmap1_regs[offset]; }
|
||||
|
||||
void spg110_device::tilemap_write_regs(int which, uint16_t* regs, int regno, uint16_t data)
|
||||
{
|
||||
switch (regno)
|
||||
{
|
||||
case 0x0: // Page X scroll
|
||||
logerror("video_w: Page %d X Scroll = %04x\n", which, data & 0x01ff);
|
||||
regs[regno] = data & 0x01ff;
|
||||
break;
|
||||
|
||||
case 0x1: // Page Y scroll
|
||||
logerror("video_w: Page %d Y Scroll = %04x\n", which, data & 0x00ff);
|
||||
regs[regno] = data & 0x00ff;
|
||||
break;
|
||||
|
||||
case 0x2: // Page Attributes
|
||||
// 'depth' (aka z value) can't be depth here as it is on spg2xx, or the scores in attract will be behind the table, it really seems to be per attribute bit instead
|
||||
|
||||
logerror("video_w: Page %d Attributes = %04x (Depth:%d, Palette:%d, VSize:%d, HSize:%d, FlipY:%d, FlipX:%d, BPP:%d)\n", which, data
|
||||
, (data >> 12) & 3, (data >> 8) & 15, 8 << ((data >> 6) & 3), 8 << ((data >> 4) & 3), BIT(data, 3), BIT(data, 2), 2 * ((data & 3) + 1));
|
||||
regs[regno] = data;
|
||||
break;
|
||||
|
||||
case 0x3: // Page Control
|
||||
logerror("video_w: Page %d Control = %04x (Blend:%d, HiColor:%d, RowScroll:%d, Enable:%d, Wallpaper:%d, RegSet:%d, Bitmap:%d)\n", which, data
|
||||
, BIT(data, 8), BIT(data, 7), BIT(data, 4), BIT(data, 3), BIT(data, 2), BIT(data, 1), BIT(data, 0));
|
||||
regs[regno] = data;
|
||||
break;
|
||||
|
||||
case 0x4: // Page Tile Address
|
||||
logerror("video_w: Page %d Tile Address = %04x\n", which, data);
|
||||
regs[regno] = data;
|
||||
break;
|
||||
|
||||
case 0x5: // Page Attribute Address
|
||||
logerror("video_w: Page %d Attribute Address = %04x\n", which, data);
|
||||
regs[regno] = data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(spg110_device::tmap0_regs_w)
|
||||
{
|
||||
tilemap_write_regs(0, tmap0_regs,offset,data);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(spg110_device::tmap1_regs_w)
|
||||
{
|
||||
tilemap_write_regs(1, tmap1_regs,offset,data);
|
||||
}
|
||||
|
||||
void spg110_device::map(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x000fff).ram();
|
||||
|
||||
|
||||
// vregs are at 2000?
|
||||
map(0x002010, 0x002010).w(FUNC(spg110_device::spg110_bg_scrollx_w));
|
||||
map(0x002011, 0x002011).w(FUNC(spg110_device::spg110_bg_scrolly_w));
|
||||
map(0x002012, 0x002012).w(FUNC(spg110_device::spg110_2012_w));
|
||||
map(0x002013, 0x002013).rw(FUNC(spg110_device::spg110_2013_r),FUNC(spg110_device::spg110_2013_w));
|
||||
map(0x002014, 0x002014).w(FUNC(spg110_device::spg110_2014_w));
|
||||
map(0x002015, 0x002015).w(FUNC(spg110_device::spg110_2015_w));
|
||||
map(0x002016, 0x002016).w(FUNC(spg110_device::spg110_2016_w));
|
||||
map(0x002017, 0x002017).w(FUNC(spg110_device::spg110_2017_w));
|
||||
map(0x002018, 0x002018).w(FUNC(spg110_device::spg110_2018_w));
|
||||
map(0x002019, 0x002019).rw(FUNC(spg110_device::spg110_2019_r), FUNC(spg110_device::spg110_2019_w));
|
||||
map(0x00201a, 0x00201a).w(FUNC(spg110_device::spg110_201a_w));
|
||||
map(0x00201b, 0x00201b).w(FUNC(spg110_device::spg110_201b_w));
|
||||
map(0x002010, 0x002015).rw(FUNC(spg110_device::tmap0_regs_r), FUNC(spg110_device::tmap0_regs_w));
|
||||
map(0x002016, 0x00201b).rw(FUNC(spg110_device::tmap1_regs_r), FUNC(spg110_device::tmap1_regs_w));
|
||||
|
||||
map(0x00201c, 0x00201c).w(FUNC(spg110_device::spg110_201c_w));
|
||||
|
||||
map(0x002020, 0x002020).w(FUNC(spg110_device::spg110_2020_w));
|
||||
@ -372,14 +487,14 @@ void spg110_device::map(address_map &map)
|
||||
//map(0x002010, 0x00205f).ram();
|
||||
|
||||
// everything (dma? and interrupt flag?!)
|
||||
map(0x002060, 0x002060).w(FUNC(spg110_device::spg110_2060_w));
|
||||
map(0x002061, 0x002061).w(FUNC(spg110_device::spg110_2061_w));
|
||||
map(0x002062, 0x002062).rw(FUNC(spg110_device::spg110_2062_r),FUNC(spg110_device::spg110_2062_w));
|
||||
map(0x002060, 0x002060).w(FUNC(spg110_device::dma_dst_w));
|
||||
map(0x002061, 0x002061).w(FUNC(spg110_device::dma_unk_2061_w));
|
||||
map(0x002062, 0x002062).rw(FUNC(spg110_device::dma_len_status_r),FUNC(spg110_device::dma_len_trigger_w));
|
||||
map(0x002063, 0x002063).rw(FUNC(spg110_device::spg110_2063_r),FUNC(spg110_device::spg110_2063_w)); // this looks like interrupt stuff and is checked in the irq like an irq source, but why in the middle of what otherwise look like some kind of DMA?
|
||||
map(0x002064, 0x002064).w(FUNC(spg110_device::spg110_2064_w));
|
||||
map(0x002066, 0x002066).w(FUNC(spg110_device::spg110_2066_w));
|
||||
map(0x002067, 0x002067).w(FUNC(spg110_device::spg110_2067_w));
|
||||
map(0x002068, 0x002068).w(FUNC(spg110_device::spg110_2068_w));
|
||||
map(0x002064, 0x002064).w(FUNC(spg110_device::dma_dst_step_w));
|
||||
map(0x002066, 0x002066).w(FUNC(spg110_device::dma_src_w));
|
||||
map(0x002067, 0x002067).w(FUNC(spg110_device::dma_unk_2067_w));
|
||||
map(0x002068, 0x002068).w(FUNC(spg110_device::dma_src_step_w));
|
||||
|
||||
map(0x002200, 0x0022ff).ram(); // looks like per-pen brightness or similar? strange because palette isn't memory mapped here
|
||||
|
||||
@ -428,10 +543,7 @@ void spg110_device::map(address_map &map)
|
||||
void spg110_device::map_video(address_map &map)
|
||||
{
|
||||
// are these addresses hardcoded, or can they move (in which case tilemap system isn't really suitable)
|
||||
map(0x00000, 0x00fff).ram().w(FUNC(spg110_device::bg_videoram_w)).share("bg_videoram");
|
||||
map(0x01000, 0x017ff).ram().w(FUNC(spg110_device::bg_attrram_w)).share("bg_attrram");
|
||||
map(0x01800, 0x027ff).ram().w(FUNC(spg110_device::fg_videoram_w)).share("fg_videoram");
|
||||
map(0x02800, 0x02fff).ram().w(FUNC(spg110_device::fg_attrram_w)).share("fg_attrram");
|
||||
map(0x00000, 0x03fff).ram(); // 2fff?
|
||||
|
||||
map(0x04000, 0x04fff).ram(); // seems to be 3 blocks, almost certainly spritelist
|
||||
|
||||
@ -447,46 +559,17 @@ TIMER_CALLBACK_MEMBER(spg110_device::test_timer)
|
||||
}
|
||||
*/
|
||||
|
||||
TILE_GET_INFO_MEMBER(spg110_device::get_bg_tile_info)
|
||||
{
|
||||
int tileno = m_bg_videoram[tile_index];
|
||||
|
||||
int attr = m_bg_attrram[tile_index/2];
|
||||
if (tile_index&1) attr = (attr & 0xff00)>>8;
|
||||
else attr = attr & 0x00ff;
|
||||
|
||||
SET_TILE_INFO_MEMBER(3, tileno, 0, 0);
|
||||
tileinfo.category = (attr >> 4) & 0x0f; // very likely wrong, complete guess
|
||||
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(spg110_device::get_fg_tile_info)
|
||||
{
|
||||
int tileno = m_fg_videoram[tile_index];
|
||||
|
||||
int attr = m_fg_attrram[tile_index/2];
|
||||
if (tile_index&1) attr = (attr & 0xff00)>>8;
|
||||
else attr = attr & 0x00ff;
|
||||
|
||||
int pal = attr & 0x0f;
|
||||
|
||||
SET_TILE_INFO_MEMBER(0, tileno, pal, 0);
|
||||
tileinfo.category = (attr >> 4) & 0x0f; // very likely wrong, complete guess
|
||||
}
|
||||
|
||||
void spg110_device::device_start()
|
||||
{
|
||||
// m_test_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(spg110_device::test_timer), this));
|
||||
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spg110_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spg110_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
m_fg_tilemap->set_transparent_pen(0);
|
||||
|
||||
save_item(NAME(m_2068_outer));
|
||||
save_item(NAME(m_2064_outer));
|
||||
save_item(NAME(m_2061_outer));
|
||||
save_item(NAME(m_2067_outer));
|
||||
save_item(NAME(m_2060_inner));
|
||||
save_item(NAME(m_2066_inner));
|
||||
save_item(NAME(m_dma_src_step));
|
||||
save_item(NAME(m_dma_dst_step));
|
||||
save_item(NAME(m_dma_unk_2061));
|
||||
save_item(NAME(m_dma_unk_2067));
|
||||
save_item(NAME(m_dma_dst));
|
||||
save_item(NAME(m_dma_src));
|
||||
save_item(NAME(m_bg_scrollx));
|
||||
save_item(NAME(m_bg_scrolly));
|
||||
save_item(NAME(m_2036_scroll));
|
||||
@ -494,12 +577,12 @@ void spg110_device::device_start()
|
||||
|
||||
void spg110_device::device_reset()
|
||||
{
|
||||
m_2068_outer = 0;
|
||||
m_2064_outer = 0;
|
||||
m_2061_outer = 0;
|
||||
m_2067_outer = 0;
|
||||
m_2060_inner = 0;
|
||||
m_2066_inner = 0;
|
||||
m_dma_src_step = 0;
|
||||
m_dma_dst_step = 0;
|
||||
m_dma_unk_2061 = 0;
|
||||
m_dma_unk_2067 = 0;
|
||||
m_dma_dst = 0;
|
||||
m_dma_src = 0;
|
||||
m_bg_scrollx = 0;
|
||||
m_bg_scrolly = 0;
|
||||
m_2036_scroll = 0;
|
||||
@ -551,18 +634,30 @@ uint32_t spg110_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma
|
||||
m_palette->set_pen_color(index, r_real, g_real, b_real);
|
||||
}
|
||||
|
||||
m_bg_tilemap->set_scrollx(0, m_bg_scrollx);
|
||||
m_bg_tilemap->set_scrolly(0, m_bg_scrolly);
|
||||
memset(&m_screenbuf[320 * cliprect.min_y], 0, 4 * 320 * ((cliprect.max_y - cliprect.min_y) + 1));
|
||||
|
||||
m_fg_tilemap->set_scrollx(0, 8); // where does this come from?
|
||||
const uint32_t page1_addr = 0;//0x40 * m_video_regs[0x20];
|
||||
const uint32_t page2_addr = 0;//0x40 * m_video_regs[0x21];
|
||||
uint16_t *page1_regs = tmap0_regs;
|
||||
uint16_t *page2_regs = tmap1_regs;
|
||||
|
||||
// what is 2036 used for, also looks like scrolling, maybe some sprite offset? or zoom? (reference videos suggest maybe start logo text zooms?)
|
||||
|
||||
for (int pri = 0; pri < 0x10; pri++) // priority is probably not correct, this is just using a random tile attribute with single use case
|
||||
for (uint32_t scanline = (uint32_t)cliprect.min_y; scanline <= (uint32_t)cliprect.max_y; scanline++)
|
||||
{
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, pri, pri, 0);
|
||||
m_fg_tilemap->draw(screen, bitmap, cliprect, pri, pri, 0);
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
blit_page(cliprect, scanline, i, page2_addr, page2_regs);
|
||||
blit_page(cliprect, scanline, i, page1_addr, page1_regs);
|
||||
//blit_sprites(cliprect, scanline, i);
|
||||
}
|
||||
}
|
||||
|
||||
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
|
||||
{
|
||||
uint32_t *dest = &bitmap.pix32(y, cliprect.min_x);
|
||||
uint32_t *src = &m_screenbuf[cliprect.min_x + 320 * y];
|
||||
memcpy(dest, src, sizeof(uint32_t) * ((cliprect.max_x - cliprect.min_x) + 1));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -43,45 +43,37 @@ protected:
|
||||
address_space_config m_space_config;
|
||||
|
||||
private:
|
||||
enum
|
||||
{
|
||||
PAGE_ENABLE_MASK = 0x0008,
|
||||
PAGE_WALLPAPER_MASK = 0x0004,
|
||||
|
||||
PAGE_DEPTH_FLAG_MASK = 0x3000,
|
||||
PAGE_DEPTH_FLAG_SHIFT = 12,
|
||||
PAGE_TILE_HEIGHT_MASK = 0x00c0,
|
||||
PAGE_TILE_HEIGHT_SHIFT = 6,
|
||||
PAGE_TILE_WIDTH_MASK = 0x0030,
|
||||
PAGE_TILE_WIDTH_SHIFT = 4,
|
||||
|
||||
TILE_X_FLIP = 0x0004,
|
||||
TILE_Y_FLIP = 0x0008
|
||||
};
|
||||
|
||||
enum flipx_t : bool
|
||||
{
|
||||
FlipXOff = false,
|
||||
FlipXOn = true
|
||||
};
|
||||
|
||||
required_device<unsp_device> m_cpu;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_shared_ptr<uint16_t> m_bg_videoram;
|
||||
required_shared_ptr<uint16_t> m_fg_videoram;
|
||||
required_shared_ptr<uint16_t> m_bg_attrram;
|
||||
required_shared_ptr<uint16_t> m_fg_attrram;
|
||||
required_shared_ptr<uint16_t> m_palram;
|
||||
|
||||
tilemap_t *m_bg_tilemap;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
|
||||
//TIMER_CALLBACK_MEMBER(test_timer);
|
||||
//emu_timer *m_test_timer;
|
||||
|
||||
DECLARE_WRITE16_MEMBER(bg_videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(bg_attrram_w);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(fg_videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(fg_attrram_w);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
|
||||
|
||||
DECLARE_READ16_MEMBER(spg110_2013_r);
|
||||
DECLARE_READ16_MEMBER(spg110_2019_r);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(spg110_bg_scrollx_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_bg_scrolly_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2012_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2013_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2014_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2015_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2016_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2017_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2018_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2019_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_201a_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_201b_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_201c_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2020_w);
|
||||
|
||||
@ -128,16 +120,16 @@ private:
|
||||
DECLARE_READ16_MEMBER(spg110_2037_r);
|
||||
DECLARE_READ16_MEMBER(spg110_2042_r);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(spg110_2060_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2061_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2062_w);
|
||||
DECLARE_WRITE16_MEMBER(dma_dst_w);
|
||||
DECLARE_WRITE16_MEMBER(dma_unk_2061_w);
|
||||
DECLARE_WRITE16_MEMBER(dma_len_trigger_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2063_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2064_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2066_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2067_w);
|
||||
DECLARE_WRITE16_MEMBER(spg110_2068_w);
|
||||
DECLARE_WRITE16_MEMBER(dma_dst_step_w);
|
||||
DECLARE_WRITE16_MEMBER(dma_src_w);
|
||||
DECLARE_WRITE16_MEMBER(dma_unk_2067_w);
|
||||
DECLARE_WRITE16_MEMBER(dma_src_step_w);
|
||||
|
||||
DECLARE_READ16_MEMBER(spg110_2062_r);
|
||||
DECLARE_READ16_MEMBER(dma_len_status_r);
|
||||
DECLARE_READ16_MEMBER(spg110_2063_r);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(spg110_3200_w);
|
||||
@ -177,18 +169,32 @@ private:
|
||||
|
||||
DECLARE_READ16_MEMBER(spg110_310f_r);
|
||||
|
||||
DECLARE_READ16_MEMBER(tmap0_regs_r);
|
||||
DECLARE_READ16_MEMBER(tmap1_regs_r);
|
||||
DECLARE_WRITE16_MEMBER(tmap0_regs_w);
|
||||
DECLARE_WRITE16_MEMBER(tmap1_regs_w);
|
||||
|
||||
uint16_t m_2068_outer;
|
||||
uint16_t m_2064_outer;
|
||||
uint16_t m_2061_outer;
|
||||
uint16_t m_2067_outer;
|
||||
uint16_t tmap0_regs[0x6];
|
||||
uint16_t tmap1_regs[0x6];
|
||||
|
||||
uint16_t m_2060_inner;
|
||||
uint16_t m_2066_inner;
|
||||
uint16_t m_dma_src_step;
|
||||
uint16_t m_dma_dst_step;
|
||||
uint16_t m_dma_unk_2061;
|
||||
uint16_t m_dma_unk_2067;
|
||||
|
||||
uint16_t m_dma_dst;
|
||||
uint16_t m_dma_src;
|
||||
|
||||
uint16_t m_bg_scrollx;
|
||||
uint16_t m_bg_scrolly;
|
||||
uint16_t m_2036_scroll;
|
||||
|
||||
void tilemap_write_regs(int which, uint16_t* regs, int regno, uint16_t data);
|
||||
|
||||
template<flipx_t FlipX>
|
||||
void blit(const rectangle &cliprect, uint32_t line, uint32_t xoff, uint32_t yoff, uint32_t attr, uint32_t ctrl, uint32_t bitmap_addr, uint16_t tile);
|
||||
void blit_page(const rectangle &cliprect, uint32_t scanline, int depth, uint32_t bitmap_addr, uint16_t *regs);
|
||||
uint32_t m_screenbuf[320 * 240];
|
||||
};
|
||||
|
||||
DECLARE_DEVICE_TYPE(SPG110, spg110_device)
|
||||
|
@ -16,10 +16,7 @@
|
||||
Baseball 3 ? x16 48 4MB no ELAN EU3A14 (developed by FarSight Studios)
|
||||
Connectv Football ? x16 48 4MB no ELAN EU3A14 (developed by Medialink)
|
||||
Huntin’3 ? x16 48 4MB no Elan ? (developed by V-Tac Technology Co Ltd.)
|
||||
--------------
|
||||
Also on this hardware
|
||||
--------------
|
||||
Play TV Basketball 75029 x16 48 not dumped no ELAN EU3A14
|
||||
Play TV Basketball 75029 x16 48 4MB no ELAN EU3A14
|
||||
|
||||
In many ways this is similar to the rad_eu3a05.cpp hardware
|
||||
but the video system has changed, here the sprites are more traditional non-tile based, rather
|
||||
@ -1063,6 +1060,91 @@ static INPUT_PORTS_START( radica_hnt3p )
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( radica_bask )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_DIPNAME( 0x08, 0x08, "IN0" )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN1" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN2" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( radica_baskp )
|
||||
PORT_INCLUDE(radica_bask)
|
||||
|
||||
PORT_MODIFY("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( radica_bb3 )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
|
||||
@ -1389,6 +1471,16 @@ ROM_START( rad_hnt3p )
|
||||
ROM_LOAD( "huntin3.bin", 0x000000, 0x400000, CRC(c8e3e40b) SHA1(81eb16ac5ab6d93525fcfadbc6703b2811d7de7f) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_bask )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "basketball.bin", 0x000000, 0x400000, CRC(7d6ff53c) SHA1(1c75261d55e0107a3b8e8d4c1eb2854750f2d0e8) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_baskp )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "basketball.bin", 0x000000, 0x400000, CRC(7d6ff53c) SHA1(1c75261d55e0107a3b8e8d4c1eb2854750f2d0e8) )
|
||||
ROM_END
|
||||
|
||||
CONS( 2006, rad_gtg, 0, 0, radica_eu3a14_adc, rad_gtg, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios (licensed from Incredible Technologies)", "Golden Tee Golf: Home Edition", MACHINE_NOT_WORKING )
|
||||
|
||||
CONS( 2005, rad_rsg, 0, 0, radica_eu3a14, rad_rsg, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Play TV Real Swing Golf", MACHINE_NOT_WORKING )
|
||||
@ -1402,3 +1494,6 @@ CONS( 2005, rad_bb3p, rad_bb3, 0, radica_eu3a14p, radica_bb3p, radica_eu3a
|
||||
|
||||
CONS( 2005, rad_hnt3, 0, 0, radica_eu3a14, radica_hnt3, radica_eu3a14_state, init_rad_hnt3, "Radica / V-Tac Technology Co Ltd.", "Play TV Huntin' 3", MACHINE_NOT_WORKING )
|
||||
CONS( 2005, rad_hnt3p,rad_hnt3, 0, radica_eu3a14p, radica_hnt3p, radica_eu3a14_state, init_rad_hnt3, "Radica / V-Tac Technology Co Ltd.", "Connectv Huntin' 3", MACHINE_NOT_WORKING )
|
||||
|
||||
CONS( 2005, rad_bask, 0, 0, radica_eu3a14, radica_bask, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Play TV Basketball", MACHINE_NOT_WORKING )
|
||||
CONS( 2005, rad_baskp,rad_bask, 0, radica_eu3a14, radica_baskp, radica_eu3a14_state, init_rad_gtg, "Radica / FarSight Studios", "Connectv Basketball", MACHINE_NOT_WORKING )
|
||||
|
@ -116,6 +116,7 @@ public:
|
||||
void init_bishjan();
|
||||
void init_new2001();
|
||||
void init_queenbee();
|
||||
void init_queenbeeb();
|
||||
void init_humlan();
|
||||
void init_squeenb();
|
||||
void init_xtrain();
|
||||
@ -2710,6 +2711,33 @@ no ROM labels available
|
||||
***************************************************************************/
|
||||
|
||||
ROM_START( queenbee )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
|
||||
ROM_LOAD( "27c020 u21.bin", 0x00000, 0x40000, CRC(baec0241) SHA1(345cfee7bdb4f4c61caa828372a121f3917bb4eb) )
|
||||
ROM_FILL( 0x40000, 0x40000, 0xff )
|
||||
|
||||
ROM_REGION( 0x200000, "tilemap", 0 )
|
||||
ROM_LOAD32_BYTE( "27c4001 u25.bin", 0x000000, 0x80000, CRC(628ed650) SHA1(dadbc5f73f6a5773303d834a44d2eab836874cfe) )
|
||||
ROM_LOAD32_BYTE( "27c4001 u26.bin", 0x000001, 0x80000, CRC(27a169df) SHA1(d36989c300051a0c41752638ab5134a9b04c50a4) )
|
||||
ROM_LOAD32_BYTE( "27c4001 u27.bin", 0x000002, 0x80000, CRC(27e8c4b9) SHA1(b010b9dcadb357cf4e79d97ce84b86f792bd8ecf) )
|
||||
ROM_LOAD32_BYTE( "27c4001 u28.bin", 0x000003, 0x80000, CRC(7f139a04) SHA1(595a114806756e6f77a6fe20a13515b211ffdf2a) )
|
||||
|
||||
ROM_REGION( 0x80000, "samples", 0 )
|
||||
ROM_LOAD( "27c4001 u9.bin", 0x000000, 0x80000, CRC(c7cda990) SHA1(193144fe0c31fc8342bd44aa4899bf15f0bc399d) )
|
||||
ROM_END
|
||||
|
||||
void subsino2_state::init_queenbee()
|
||||
{
|
||||
uint16_t *rom = (uint16_t*)memregion("maincpu")->base();
|
||||
|
||||
// patch serial protection test (ERROR 093099 otherwise)
|
||||
rom[0x1cc6/2] = 0x4066;
|
||||
|
||||
// rts -> rte
|
||||
rom[0x3e6a/2] = 0x5670; // IRQ 8
|
||||
rom[0x3fbe/2] = 0x5670; // IRQ 0
|
||||
}
|
||||
|
||||
ROM_START( queenbeeb )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
|
||||
ROM_LOAD( "u21", 0x00000, 0x40000, CRC(23e0ad8f) SHA1(d913ebd249c471ab36aabe515a8b36bb3590c1ca) )
|
||||
ROM_FILL( 0x40000, 0x40000, 0xff )
|
||||
@ -2726,7 +2754,7 @@ ROM_START( queenbee )
|
||||
ROM_LOAD( "u9", 0x000000, 0x40000, NO_DUMP )
|
||||
ROM_END
|
||||
|
||||
void subsino2_state::init_queenbee()
|
||||
void subsino2_state::init_queenbeeb()
|
||||
{
|
||||
uint16_t *rom = (uint16_t*)memregion("maincpu")->base();
|
||||
|
||||
@ -2738,6 +2766,35 @@ void subsino2_state::init_queenbee()
|
||||
rom[0x3a56/2] = 0x5670; // IRQ 0
|
||||
}
|
||||
|
||||
// make sure these are really queenbee
|
||||
ROM_START( queenbeei )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
|
||||
ROM_LOAD( "u21 9ac9 v100", 0x00000, 0x40000, CRC(061b406f) SHA1(2a5433817e41610e9ba90302a6b9608f769176a0) )
|
||||
ROM_FILL( 0x40000, 0x40000, 0xff )
|
||||
|
||||
ROM_REGION( 0x200000, "tilemap", 0 )
|
||||
ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x80000, "samples", 0 )
|
||||
ROM_LOAD( "u9", 0x000000, 0x80000, NO_DUMP )
|
||||
ROM_END
|
||||
|
||||
ROM_START( queenbeesa )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 ) // H8/3044
|
||||
ROM_LOAD( "00b0 u21 1v101", 0x00000, 0x40000, CRC(19e31fd7) SHA1(01cf507958b0411d21dd660280f45668d7c5b9d9) )
|
||||
ROM_FILL( 0x40000, 0x40000, 0xff )
|
||||
|
||||
ROM_REGION( 0x200000, "tilemap", 0 )
|
||||
ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x80000, "samples", 0 )
|
||||
ROM_LOAD( "u9", 0x000000, 0x80000, NO_DUMP )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Humlan's Lyckohjul (Sweden, V402)
|
||||
@ -3255,15 +3312,29 @@ void subsino2_state::init_wtrnymph()
|
||||
rom[0xc2d7] = 0x18;
|
||||
}
|
||||
|
||||
GAME( 1996, mtrain, 0, mtrain, mtrain, subsino2_state, init_mtrain, ROT0, "Subsino", "Magic Train (Ver. 1.31)", 0 )
|
||||
GAME( 1996, wtrnymph, 0, mtrain, wtrnymph, subsino2_state, init_wtrnymph, ROT0, "Subsino", "Water-Nymph (Ver. 1.4)", 0 )
|
||||
GAME( 1998, expcard, 0, expcard, expcard, subsino2_state, init_expcard, ROT0, "American Alpha", "Express Card / Top Card (Ver. 1.5)", 0 )
|
||||
GAME( 1998, saklove, 0, saklove, saklove, subsino2_state, init_saklove, ROT0, "Subsino", "Ying Hua Lian 2.0 (China, Ver. 1.02)", 0 )
|
||||
GAME( 1999, xtrain, 0, xtrain, xtrain, subsino2_state, init_xtrain, ROT0, "Subsino", "X-Train (Ver. 1.3)", 0 )
|
||||
GAME( 1999, ptrain, 0, xtrain, xtrain, subsino2_state, init_ptrain, ROT0, "Subsino", "Panda Train (Novamatic 1.7)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1999, bishjan, 0, bishjan, bishjan, subsino2_state, init_bishjan, ROT0, "Subsino", "Bishou Jan (Japan, Ver. 203)", MACHINE_NO_SOUND )
|
||||
GAME( 2000, new2001, 0, new2001, new2001, subsino2_state, init_new2001, ROT0, "Subsino", "New 2001 (Italy, Ver. 200N)", MACHINE_NO_SOUND )
|
||||
GAME( 2006, xplan, 0, xplan, xplan, subsino2_state, init_xplan, ROT0, "Subsino", "X-Plan (Ver. 101)", 0 )
|
||||
GAME( 2001, queenbee, 0, humlan, humlan, subsino2_state, init_queenbee, ROT0, "Subsino", "Queen Bee (Brazil, Ver. 202)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues, only program ROM available
|
||||
GAME( 2001, humlan, queenbee, humlan, humlan, subsino2_state, init_humlan, ROT0, "Subsino (Truemax license)", "Humlan's Lyckohjul (Sweden, Ver. 402)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
|
||||
GAME( 2002, squeenb, 0, humlan, humlan, subsino2_state, init_squeenb, ROT0, "Subsino", "Super Queen Bee (Ver. 101)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
|
||||
GAME( 1996, mtrain, 0, mtrain, mtrain, subsino2_state, init_mtrain, ROT0, "Subsino", "Magic Train (Ver. 1.31)", 0 )
|
||||
|
||||
GAME( 1996, wtrnymph, 0, mtrain, wtrnymph, subsino2_state, init_wtrnymph, ROT0, "Subsino", "Water-Nymph (Ver. 1.4)", 0 )
|
||||
|
||||
GAME( 1998, expcard, 0, expcard, expcard, subsino2_state, init_expcard, ROT0, "Subsino (American Alpha license)", "Express Card / Top Card (Ver. 1.5)", 0 )
|
||||
|
||||
GAME( 1998, saklove, 0, saklove, saklove, subsino2_state, init_saklove, ROT0, "Subsino", "Ying Hua Lian 2.0 (China, Ver. 1.02)", 0 )
|
||||
|
||||
GAME( 1999, xtrain, 0, xtrain, xtrain, subsino2_state, init_xtrain, ROT0, "Subsino", "X-Train (Ver. 1.3)", 0 )
|
||||
|
||||
GAME( 1999, ptrain, 0, xtrain, xtrain, subsino2_state, init_ptrain, ROT0, "Subsino", "Panda Train (Novamatic 1.7)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1999, bishjan, 0, bishjan, bishjan, subsino2_state, init_bishjan, ROT0, "Subsino", "Bishou Jan (Japan, Ver. 203)", MACHINE_NO_SOUND )
|
||||
|
||||
GAME( 2000, new2001, 0, new2001, new2001, subsino2_state, init_new2001, ROT0, "Subsino", "New 2001 (Italy, Ver. 200N)", MACHINE_NO_SOUND )
|
||||
|
||||
GAME( 2006, xplan, 0, xplan, xplan, subsino2_state, init_xplan, ROT0, "Subsino", "X-Plan (Ver. 101)", 0 )
|
||||
|
||||
GAME( 2001, queenbee, 0, humlan, humlan, subsino2_state, init_queenbee, ROT0, "Subsino (American Alpha license)", "Queen Bee (Ver. 114)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
|
||||
GAME( 2001, queenbeeb,queenbee, humlan, humlan, subsino2_state, init_queenbeeb,ROT0, "Subsino", "Queen Bee (Brazil, Ver. 202)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues, only program ROM available
|
||||
GAME( 2001, queenbeei,queenbee, humlan, humlan, subsino2_state, empty_init, ROT0, "Subsino", "Queen Bee (Israel, Ver. 100)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues, only program ROM available
|
||||
GAME( 2001, queenbeesa,queenbee,humlan, humlan, subsino2_state, empty_init, ROT0, "Subsino", "Queen Bee (SA-101-HARD)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues, only program ROM available
|
||||
|
||||
GAME( 2001, humlan, queenbee, humlan, humlan, subsino2_state, init_humlan, ROT0, "Subsino (Truemax license)", "Humlan's Lyckohjul (Sweden, Ver. 402)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
|
||||
|
||||
GAME( 2002, squeenb, 0, humlan, humlan, subsino2_state, init_squeenb, ROT0, "Subsino", "Super Queen Bee (Ver. 101)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // severe timing issues
|
||||
|
@ -844,11 +844,13 @@ static INPUT_PORTS_START( rad_snow )
|
||||
PORT_INCLUDE(xavix)
|
||||
|
||||
PORT_MODIFY("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Go") // is this a button, or 'up' ?
|
||||
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Foward / Go")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Enter / Select")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
|
||||
|
||||
PORT_MODIFY("IN1")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( rad_snowp )
|
||||
@ -858,6 +860,19 @@ static INPUT_PORTS_START( rad_snowp )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( rad_bdp )
|
||||
PORT_INCLUDE(xavix)
|
||||
|
||||
PORT_MODIFY("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Purple / Up")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Red / Down")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Blue / Back")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pink / Select")
|
||||
|
||||
PORT_MODIFY("IN1")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( rad_ping )
|
||||
PORT_INCLUDE(xavix)
|
||||
|
||||
@ -1136,6 +1151,12 @@ void xavix_state::xavix_nv(machine_config &config)
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
|
||||
}
|
||||
|
||||
void xavix_state::xavixp_nv(machine_config &config)
|
||||
{
|
||||
xavixp(config);
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
|
||||
}
|
||||
|
||||
void xavix_state::xavix2000(machine_config &config)
|
||||
{
|
||||
xavix(config);
|
||||
@ -1413,6 +1434,25 @@ ROM_START( rad_mtrkp ) // rom was dumped from NTSC unit, assuming to be the same
|
||||
ROM_LOAD( "monstertruck.bin", 0x000000, 0x400000, CRC(dccda0a7) SHA1(7953cf29643672f8367639555b797c20bb533eab) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_ssx )
|
||||
ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
|
||||
ROM_LOAD("snowssx.bin", 0x000000, 0x400000, CRC(108e19a6) SHA1(3dfb18efb6331b96a53138a5ba29dae9cd966e90) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_ssxp )
|
||||
ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
|
||||
ROM_LOAD("snowssx.bin", 0x000000, 0x400000, CRC(108e19a6) SHA1(3dfb18efb6331b96a53138a5ba29dae9cd966e90) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_sbw )
|
||||
ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
|
||||
ROM_LOAD("snowbwhite.bin", 0x000000, 0x400000, CRC(640c1473) SHA1(d37d1484a5b14735b35afbca305dad7d178b08a2) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_bdp )
|
||||
ROM_REGION(0x800000, "bios", ROMREGION_ERASE00)
|
||||
ROM_LOAD("barbiepad.bin", 0x000000, 0x200000, CRC(48731512) SHA1(377d4e1c98cafcd9d5e1ee27943289d250a6e7a9) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_madf )
|
||||
ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
|
||||
@ -1555,15 +1595,25 @@ CONS( 2001, rad_bass, 0, 0, xavix, rad_bass, xavix_state,
|
||||
CONS( 2001, rad_bassp, rad_bass, 0, xavixp, rad_bassp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Bass Fishin' (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// there is another 'Snowboarder' with a white coloured board, it appears to be a newer game closer to 'SSX Snowboarder' but without the SSX license.
|
||||
CONS( 2001, rad_snow, 0, 0, xavix, rad_snow, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Snowboarder (Blue) (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
|
||||
CONS( 2001, rad_snowp, rad_snow, 0, xavixp, rad_snowp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Snowboarder (Blue) (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
|
||||
CONS( 2001, rad_snow, 0, 0, xavix_nv, rad_snow, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Snowboarder (Blue) (NTSC)", MACHINE_IMPERFECT_SOUND )
|
||||
CONS( 2001, rad_snowp, rad_snow, 0, xavixp_nv, rad_snowp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Snowboarder (Blue) (PAL)", MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
CONS( 2003, rad_madf, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / SSD Company LTD", "EA Sports Madden Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // no Play TV branding, USA only release?
|
||||
CONS( 2003, rad_madf, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / Electronics Arts / SSD Company LTD", "EA Sports Madden Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // no Play TV branding, USA only release?
|
||||
|
||||
CONS( 200?, rad_fb, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / SSD Company LTD", "Play TV Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // USA only release? doesn't change logo for PAL.
|
||||
|
||||
CONS( 200?, rad_rh, 0, 0, xavix, rad_rh, xavix_state, init_xavix, "Radica / Fisher-Price / SSD Company LTD", "Play TV Rescue Heroes (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
CONS( 2004, rad_ssx, 0, 0, xavix, rad_snow, xavix_state, init_xavix, "Radica / Electronics Arts / SSD Company LTD", "Play TV SSX Snowboarder (NTSC)", MACHINE_IMPERFECT_SOUND )
|
||||
CONS( 2004, rad_ssxp, rad_ssx, 0, xavixp, rad_snowp,xavix_state, init_xavix, "Radica / Electronics Arts / SSD Company LTD", "ConnecTV SSX Snowboarder (PAL)", MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
// basically a reissue of SSX but without the license
|
||||
CONS( 2006, rad_sbw, 0, 0, xavix, rad_snow, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Snowboarder (White) (NTSC)", MACHINE_IMPERFECT_SOUND )
|
||||
// doesn't exist with ConnecTV branding?
|
||||
|
||||
CONS( 2002, rad_bdp, 0, 0, xavix, rad_bdp, xavix_state, init_xavix, "Radica / Mattel / SSD Company LTD", "Barbie Dance Party", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
|
||||
|
||||
CONS( 2000, epo_epp, 0, 0, xavix, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Excite Ping Pong (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
|
||||
// Excite Ping Pong 2 is from 2003, and there's a 3rd game from 2006 also
|
||||
|
||||
|
@ -105,9 +105,12 @@ public:
|
||||
{ }
|
||||
|
||||
void xavix(machine_config &config);
|
||||
void xavixp(machine_config &config);
|
||||
void xavix2000(machine_config &config);
|
||||
void xavix_nv(machine_config &config);
|
||||
|
||||
void xavixp(machine_config &config);
|
||||
void xavixp_nv(machine_config &config);
|
||||
|
||||
void xavix2000(machine_config &config);
|
||||
void xavix2000_nv(machine_config &config);
|
||||
|
||||
void xavix2002(machine_config &config);
|
||||
|
@ -33107,6 +33107,8 @@ rad_bb3
|
||||
rad_bb3p
|
||||
rad_hnt3
|
||||
rad_hnt3p
|
||||
rad_bask
|
||||
rad_baskp
|
||||
|
||||
@source:rad_eu3a05.cpp
|
||||
rad_sinv
|
||||
@ -36295,7 +36297,10 @@ humlan // (c) 2001 Subsino & Truemax
|
||||
mtrain // (c) 1996 Subsino
|
||||
new2001 // (c) 2000 Subsino
|
||||
ptrain // (c) 1999 Subsino
|
||||
queenbee // (c) 2001 Subsino
|
||||
queenbee // (c) 2001 American Alpha
|
||||
queenbeeb // (c) 2001 Subsino
|
||||
queenbeei // (c) 2001 Subsino
|
||||
queenbeesa // (c) 2001 Subsino
|
||||
saklove // (c) 1998 Subsino
|
||||
squeenb // (c) 2002 Subsino
|
||||
wtrnymph // (c) 1996 Subsino
|
||||
@ -39803,6 +39808,10 @@ epo_sdb //
|
||||
epo_guru //
|
||||
epo_dmon //
|
||||
rad_rh //
|
||||
rad_ssx //
|
||||
rad_ssxp //
|
||||
rad_sbw //
|
||||
rad_bdp //
|
||||
has_wamg //
|
||||
ekara //
|
||||
ekaraa //
|
||||
|
Loading…
Reference in New Issue
Block a user