mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +03:00
Plug and Play work (#6451)
* sh6578 sprite work (nw) * sh6578 masks fewer bits, fixes jewel master and some others (nw) * sprite fixes for sh6578 * new NOT WORKING clones ----- Fun 2 Learn Smart Fit Park (UK) [Sean Riddle, David Haywood] works as well as the Spanish set (mostly playable without sound) * new NOT WORKING ---- OPlayer Mobile Game Console (MGS03-white) (Family Sport 100-in-1) [Sean Riddle, David Haywood] (all games are actually playable, just need to get rid of the low battery indicator and remove some hacks) * notes about some other units (nw) * swap oplayer uppper address lines after discussion with sean (nw) new NOT WORKING --- Denver Game Console GMP-240C 150-in-1 [TeamEurope] some kind of VT? based system, enhanced chipset we don't support tho, bank write is unhandled by the looks of things (nw) * new WORKING machine ---- Technigame Super 4-in-1 Sports (PAL) [Sean Riddle, David Haywood]
This commit is contained in:
parent
c3d6be7a60
commit
2b0c7929a6
@ -123,6 +123,8 @@ ppu2c0x_device::ppu2c0x_device(const machine_config& mconfig, device_type type,
|
|||||||
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, internal_map),
|
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, internal_map),
|
||||||
m_cpu(*this, finder_base::DUMMY_TAG),
|
m_cpu(*this, finder_base::DUMMY_TAG),
|
||||||
m_scanline(0), // reset the scanline count
|
m_scanline(0), // reset the scanline count
|
||||||
|
m_videoram_addr_mask(0x3fff),
|
||||||
|
m_global_refresh_mask(0x7fff),
|
||||||
m_line_write_increment_large(32),
|
m_line_write_increment_large(32),
|
||||||
m_paletteram_in_ppuspace(false),
|
m_paletteram_in_ppuspace(false),
|
||||||
m_tile_page(0),
|
m_tile_page(0),
|
||||||
@ -803,6 +805,65 @@ void ppu2c0x_device::read_extra_sprite_bits(int sprite_index)
|
|||||||
// needed for some clones
|
// needed for some clones
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ppu2c0x_device::is_spritepixel_opaque(int pixel_data, int color)
|
||||||
|
{
|
||||||
|
if (pixel_data)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ppu2c0x_device::draw_sprite_pixel_low(bitmap_rgb32& bitmap, int pixel_data, int pixel, int sprite_xpos, int color, int sprite_index, uint8_t* line_priority)
|
||||||
|
{
|
||||||
|
if (is_spritepixel_opaque(pixel_data, color))
|
||||||
|
{
|
||||||
|
/* has the background (or another sprite) already been drawn here? */
|
||||||
|
if ((sprite_xpos + pixel) < VISIBLE_SCREEN_WIDTH)
|
||||||
|
{
|
||||||
|
if (!line_priority[sprite_xpos + pixel])
|
||||||
|
{
|
||||||
|
/* no, draw */
|
||||||
|
draw_sprite_pixel(sprite_xpos, color, pixel, pixel_data, bitmap);
|
||||||
|
}
|
||||||
|
/* indicate that a sprite was drawn at this location, even if it's not seen */
|
||||||
|
line_priority[sprite_xpos + pixel] |= 0x01;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set the "sprite 0 hit" flag if appropriate */
|
||||||
|
if (sprite_index == 0 && (pixel_data & 0x03) && ((sprite_xpos + pixel) < 255) && (line_priority[sprite_xpos + pixel] & 0x02))
|
||||||
|
m_regs[PPU_STATUS] |= PPU_STATUS_SPRITE0_HIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ppu2c0x_device::draw_sprite_pixel_high(bitmap_rgb32& bitmap, int pixel_data, int pixel, int sprite_xpos, int color, int sprite_index, uint8_t* line_priority)
|
||||||
|
{
|
||||||
|
if (is_spritepixel_opaque(pixel_data, color))
|
||||||
|
{
|
||||||
|
if ((sprite_xpos + pixel) < VISIBLE_SCREEN_WIDTH)
|
||||||
|
{
|
||||||
|
/* has another sprite been drawn here? */
|
||||||
|
if (!(line_priority[sprite_xpos + pixel] & 0x01))
|
||||||
|
{
|
||||||
|
/* no, draw */
|
||||||
|
draw_sprite_pixel(sprite_xpos, color, pixel, pixel_data, bitmap);
|
||||||
|
line_priority[sprite_xpos + pixel] |= 0x01;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set the "sprite 0 hit" flag if appropriate */
|
||||||
|
if (sprite_index == 0 && (pixel_data & 0x03) && ((sprite_xpos + pixel) < 255) && (line_priority[sprite_xpos + pixel] & 0x02))
|
||||||
|
m_regs[PPU_STATUS] |= PPU_STATUS_SPRITE0_HIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ppu2c0x_device::apply_sprite_pattern_page(int index1, int size)
|
||||||
|
{
|
||||||
|
if (size == 8)
|
||||||
|
index1 += ((m_sprite_page == 0) ? 0 : 0x1000);
|
||||||
|
|
||||||
|
return index1;
|
||||||
|
}
|
||||||
|
|
||||||
void ppu2c0x_device::draw_sprites(uint8_t* line_priority)
|
void ppu2c0x_device::draw_sprites(uint8_t* line_priority)
|
||||||
{
|
{
|
||||||
bitmap_rgb32& bitmap = *m_bitmap;
|
bitmap_rgb32& bitmap = *m_bitmap;
|
||||||
@ -881,8 +942,8 @@ void ppu2c0x_device::draw_sprites(uint8_t* line_priority)
|
|||||||
}
|
}
|
||||||
|
|
||||||
index1 = tile * 16;
|
index1 = tile * 16;
|
||||||
if (size == 8)
|
|
||||||
index1 += ((m_sprite_page == 0) ? 0 : 0x1000);
|
index1 = apply_sprite_pattern_page(index1, size);
|
||||||
|
|
||||||
read_sprite_plane_data(index1 + sprite_line);
|
read_sprite_plane_data(index1 + sprite_line);
|
||||||
|
|
||||||
@ -913,24 +974,7 @@ void ppu2c0x_device::draw_sprites(uint8_t* line_priority)
|
|||||||
/* is this pixel non-transparent? */
|
/* is this pixel non-transparent? */
|
||||||
if (sprite_xpos + pixel >= first_pixel)
|
if (sprite_xpos + pixel >= first_pixel)
|
||||||
{
|
{
|
||||||
if (pixel_data)
|
draw_sprite_pixel_low(bitmap, pixel_data, pixel, sprite_xpos, color, sprite_index, line_priority);
|
||||||
{
|
|
||||||
/* has the background (or another sprite) already been drawn here? */
|
|
||||||
if ((sprite_xpos + pixel) < VISIBLE_SCREEN_WIDTH)
|
|
||||||
{
|
|
||||||
if (!line_priority[sprite_xpos + pixel])
|
|
||||||
{
|
|
||||||
/* no, draw */
|
|
||||||
draw_sprite_pixel(sprite_xpos, color, pixel, pixel_data, bitmap);
|
|
||||||
}
|
|
||||||
/* indicate that a sprite was drawn at this location, even if it's not seen */
|
|
||||||
line_priority[sprite_xpos + pixel] |= 0x01;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set the "sprite 0 hit" flag if appropriate */
|
|
||||||
if (sprite_index == 0 && (pixel_data & 0x03) && ((sprite_xpos + pixel) < 255) && (line_priority[sprite_xpos + pixel] & 0x02))
|
|
||||||
m_regs[PPU_STATUS] |= PPU_STATUS_SPRITE0_HIT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -945,23 +989,7 @@ void ppu2c0x_device::draw_sprites(uint8_t* line_priority)
|
|||||||
/* is this pixel non-transparent? */
|
/* is this pixel non-transparent? */
|
||||||
if (sprite_xpos + pixel >= first_pixel)
|
if (sprite_xpos + pixel >= first_pixel)
|
||||||
{
|
{
|
||||||
if (pixel_data)
|
draw_sprite_pixel_high(bitmap, pixel_data, pixel, sprite_xpos, color, sprite_index, line_priority);
|
||||||
{
|
|
||||||
if ((sprite_xpos + pixel) < VISIBLE_SCREEN_WIDTH)
|
|
||||||
{
|
|
||||||
/* has another sprite been drawn here? */
|
|
||||||
if (!(line_priority[sprite_xpos + pixel] & 0x01))
|
|
||||||
{
|
|
||||||
/* no, draw */
|
|
||||||
draw_sprite_pixel(sprite_xpos, color, pixel, pixel_data, bitmap);
|
|
||||||
line_priority[sprite_xpos + pixel] |= 0x01;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set the "sprite 0 hit" flag if appropriate */
|
|
||||||
if (sprite_index == 0 && (pixel_data & 0x03) && ((sprite_xpos + pixel) < 255) && (line_priority[sprite_xpos + pixel] & 0x02))
|
|
||||||
m_regs[PPU_STATUS] |= PPU_STATUS_SPRITE0_HIT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1292,7 +1320,7 @@ void ppu2c0x_device::write(offs_t offset, uint8_t data)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* first write */
|
/* first write */
|
||||||
m_refresh_latch &= 0x7fe0;
|
m_refresh_latch &= (0xffe0 & m_global_refresh_mask);
|
||||||
m_refresh_latch |= (data & 0xf8) >> 3;
|
m_refresh_latch |= (data & 0xf8) >> 3;
|
||||||
|
|
||||||
m_x_fine = data & 7;
|
m_x_fine = data & 7;
|
||||||
@ -1306,7 +1334,7 @@ void ppu2c0x_device::write(offs_t offset, uint8_t data)
|
|||||||
if (m_toggle)
|
if (m_toggle)
|
||||||
{
|
{
|
||||||
/* second write */
|
/* second write */
|
||||||
m_refresh_latch &= 0x7f00;
|
m_refresh_latch &= (0xff00 & m_global_refresh_mask);
|
||||||
m_refresh_latch |= data;
|
m_refresh_latch |= data;
|
||||||
m_refresh_data = m_refresh_latch;
|
m_refresh_data = m_refresh_latch;
|
||||||
|
|
||||||
@ -1317,7 +1345,7 @@ void ppu2c0x_device::write(offs_t offset, uint8_t data)
|
|||||||
{
|
{
|
||||||
/* first write */
|
/* first write */
|
||||||
m_refresh_latch &= 0x00ff;
|
m_refresh_latch &= 0x00ff;
|
||||||
m_refresh_latch |= (data & 0x3f) << 8;
|
m_refresh_latch |= (data & (m_videoram_addr_mask >>8) ) << 8;
|
||||||
//logerror("vram addr write 1: %02x, %04x (scanline: %d)\n", data, m_refresh_latch, m_scanline);
|
//logerror("vram addr write 1: %02x, %04x (scanline: %d)\n", data, m_refresh_latch, m_scanline);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1326,7 +1354,7 @@ void ppu2c0x_device::write(offs_t offset, uint8_t data)
|
|||||||
|
|
||||||
case PPU_DATA: /* 7 */
|
case PPU_DATA: /* 7 */
|
||||||
{
|
{
|
||||||
int tempAddr = m_videomem_addr & 0x3fff;
|
int tempAddr = m_videomem_addr & m_videoram_addr_mask;
|
||||||
|
|
||||||
if (!m_latch.isnull())
|
if (!m_latch.isnull())
|
||||||
m_latch(tempAddr);
|
m_latch(tempAddr);
|
||||||
|
@ -91,8 +91,12 @@ public:
|
|||||||
virtual void read_sprite_plane_data(int address);
|
virtual void read_sprite_plane_data(int address);
|
||||||
virtual void make_sprite_pixel_data(uint8_t &pixel_data, int flipx);
|
virtual void make_sprite_pixel_data(uint8_t &pixel_data, int flipx);
|
||||||
virtual void draw_sprite_pixel(int sprite_xpos, int color, int pixel, uint8_t pixel_data, bitmap_rgb32 &bitmap);
|
virtual void draw_sprite_pixel(int sprite_xpos, int color, int pixel, uint8_t pixel_data, bitmap_rgb32 &bitmap);
|
||||||
|
virtual bool is_spritepixel_opaque(int pixel_data, int color);
|
||||||
|
virtual void draw_sprite_pixel_low(bitmap_rgb32& bitmap, int pixel_data, int pixel, int sprite_xpos, int color, int sprite_index, uint8_t* line_priority);
|
||||||
|
virtual void draw_sprite_pixel_high(bitmap_rgb32& bitmap, int pixel_data, int pixel, int sprite_xpos, int color, int sprite_index, uint8_t* line_priority);
|
||||||
virtual void read_extra_sprite_bits(int sprite_index);
|
virtual void read_extra_sprite_bits(int sprite_index);
|
||||||
|
|
||||||
|
virtual int apply_sprite_pattern_page(int index1, int size);
|
||||||
virtual void draw_sprites(uint8_t *line_priority);
|
virtual void draw_sprites(uint8_t *line_priority);
|
||||||
void render_scanline();
|
void render_scanline();
|
||||||
virtual void scanline_increment_fine_ycounter();
|
virtual void scanline_increment_fine_ycounter();
|
||||||
@ -189,6 +193,8 @@ protected:
|
|||||||
int m_scanline; /* scanline count */
|
int m_scanline; /* scanline count */
|
||||||
std::unique_ptr<uint8_t[]> m_spriteram; /* sprite ram */
|
std::unique_ptr<uint8_t[]> m_spriteram; /* sprite ram */
|
||||||
|
|
||||||
|
int m_videoram_addr_mask;
|
||||||
|
int m_global_refresh_mask;
|
||||||
int m_line_write_increment_large;
|
int m_line_write_increment_large;
|
||||||
bool m_paletteram_in_ppuspace; // sh6578 doesn't have the palette in PPU space, so various side-effects don't apply
|
bool m_paletteram_in_ppuspace; // sh6578 doesn't have the palette in PPU space, so various side-effects don't apply
|
||||||
std::vector<uint8_t> m_palette_ram; /* shouldn't be in main memory! */
|
std::vector<uint8_t> m_palette_ram; /* shouldn't be in main memory! */
|
||||||
|
@ -23,6 +23,8 @@ ppu_sh6578_device::ppu_sh6578_device(const machine_config& mconfig, device_type
|
|||||||
{
|
{
|
||||||
m_paletteram_in_ppuspace = false;
|
m_paletteram_in_ppuspace = false;
|
||||||
m_line_write_increment_large = 32;
|
m_line_write_increment_large = 32;
|
||||||
|
m_videoram_addr_mask = 0xffff;
|
||||||
|
m_global_refresh_mask = 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
ppu_sh6578_device::ppu_sh6578_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
|
ppu_sh6578_device::ppu_sh6578_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) :
|
||||||
@ -85,6 +87,11 @@ void ppu_sh6578_device::scanline_increment_fine_ycounter()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ppu_sh6578_device::draw_sprite_pixel(int sprite_xpos, int color, int pixel, uint8_t pixel_data, bitmap_rgb32& bitmap)
|
||||||
|
{
|
||||||
|
uint8_t palval = m_palette_ram[(pixel_data | color << 2)] & 0x3f;
|
||||||
|
bitmap.pix32(m_scanline, sprite_xpos + pixel) = this->pen(palval);
|
||||||
|
}
|
||||||
|
|
||||||
void ppu_sh6578_device::read_tile_plane_data(int address, int color)
|
void ppu_sh6578_device::read_tile_plane_data(int address, int color)
|
||||||
{
|
{
|
||||||
@ -134,7 +141,8 @@ void ppu_sh6578_device::draw_tile(uint8_t* line_priority, int color_byte, int co
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pen = back_pen;
|
uint8_t palval = m_palette_ram[0x0] & 0x3f;
|
||||||
|
pen = this->pen(palval);
|
||||||
}
|
}
|
||||||
|
|
||||||
*dest = pen;
|
*dest = pen;
|
||||||
@ -245,10 +253,24 @@ void ppu_sh6578_device::draw_background(uint8_t* line_priority)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ppu_sh6578_device::read_sprite_plane_data(int address)
|
||||||
|
{
|
||||||
|
m_planebuf[0] = readbyte((address + 0) & 0x3fff);
|
||||||
|
m_planebuf[1] = readbyte((address + 8) & 0x3fff);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ppu_sh6578_device::apply_sprite_pattern_page(int index1, int size)
|
||||||
|
{
|
||||||
|
index1 += (((m_colsel_pntstart >> 2) & 0x3) * 0x1000);
|
||||||
|
return index1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void ppu_sh6578_device::draw_sprites(uint8_t* line_priority)
|
void ppu_sh6578_device::draw_sprites(uint8_t* line_priority)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
void ppu_sh6578_device::write(offs_t offset, uint8_t data)
|
void ppu_sh6578_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
|
@ -35,9 +35,12 @@ private:
|
|||||||
void read_tile_plane_data(int address, int color) override;
|
void read_tile_plane_data(int address, int color) override;
|
||||||
void draw_tile(uint8_t* line_priority, int color_byte, int color_bits, int address, int start_x, pen_t back_pen, uint32_t*& dest, const pen_t* color_table) override;
|
void draw_tile(uint8_t* line_priority, int color_byte, int color_bits, int address, int start_x, pen_t back_pen, uint32_t*& dest, const pen_t* color_table) override;
|
||||||
|
|
||||||
virtual void draw_sprites(uint8_t* line_priority) override;
|
virtual void draw_sprite_pixel(int sprite_xpos, int color, int pixel, uint8_t pixel_data, bitmap_rgb32& bitmap) override;
|
||||||
|
//virtual void draw_sprites(uint8_t* line_priority) override;
|
||||||
virtual void draw_background(uint8_t* line_priority) override;
|
virtual void draw_background(uint8_t* line_priority) override;
|
||||||
|
virtual int apply_sprite_pattern_page(int index1, int size) override;
|
||||||
|
virtual void read_sprite_plane_data(int address) override;
|
||||||
|
|
||||||
uint8_t m_extplanebuf[2];
|
uint8_t m_extplanebuf[2];
|
||||||
uint8_t m_colsel_pntstart;
|
uint8_t m_colsel_pntstart;
|
||||||
};
|
};
|
||||||
|
@ -159,7 +159,7 @@ void nes_sh6578_state::bank_w(int bank, uint16_t offset, uint8_t data)
|
|||||||
|
|
||||||
WRITE8_MEMBER(nes_sh6578_state::sprite_dma_w)
|
WRITE8_MEMBER(nes_sh6578_state::sprite_dma_w)
|
||||||
{
|
{
|
||||||
// int source = (data & 7);
|
m_ppu->spriteram_dma(space, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(nes_sh6578_state::bankswitch_r)
|
READ8_MEMBER(nes_sh6578_state::bankswitch_r)
|
||||||
|
@ -2666,11 +2666,22 @@ ROM_START( mc_tv200 )
|
|||||||
ROM_LOAD( "s29gl064n90.bin", 0x00000, 0x800000, CRC(ae1905d2) SHA1(11582055713ba937c1ad32c4ada8683eebc1c83c) )
|
ROM_LOAD( "s29gl064n90.bin", 0x00000, 0x800000, CRC(ae1905d2) SHA1(11582055713ba937c1ad32c4ada8683eebc1c83c) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( techni4 )
|
||||||
|
ROM_REGION( 0x200000, "mainrom", 0 )
|
||||||
|
ROM_LOAD( "technigame.bin", 0x00000, 0x200000, CRC(3c96b1b1) SHA1(1acc81b26e740327bd6d9faa5a96ab027a48dd77) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
ROM_START( unkra200 ) // "Winbond 25Q64FVSIG 1324" SPI ROM
|
ROM_START( unkra200 ) // "Winbond 25Q64FVSIG 1324" SPI ROM
|
||||||
ROM_REGION( 0x800000, "mainrom", 0 )
|
ROM_REGION( 0x800000, "mainrom", 0 )
|
||||||
ROM_LOAD( "retro_machine_rom", 0x00000, 0x800000, CRC(0e824aa7) SHA1(957e98868559ecc22b3fa42c76692417b76bf132) )
|
ROM_LOAD( "retro_machine_rom", 0x00000, 0x800000, CRC(0e824aa7) SHA1(957e98868559ecc22b3fa42c76692417b76bf132) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( denv150 )
|
||||||
|
ROM_REGION( 0x1000000, "mainrom", 0 )
|
||||||
|
ROM_LOAD( "denver150in1.bin", 0x00000, 0x1000000, CRC(6b3819d7) SHA1(b0039945ce44a52ea224ab736d5f3c6980409b5d) ) // 2nd half is blank
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
ROM_START( ppgc200g )
|
ROM_START( ppgc200g )
|
||||||
ROM_REGION( 0x800000, "mainrom", 0 )
|
ROM_REGION( 0x800000, "mainrom", 0 )
|
||||||
ROM_LOAD( "m29dw641.u2", 0x00000, 0x800000, CRC(b16dc677) SHA1(c1984fde4caf9345d41d127db946d1c21ec43ae0) )
|
ROM_LOAD( "m29dw641.u2", 0x00000, 0x800000, CRC(b16dc677) SHA1(c1984fde4caf9345d41d127db946d1c21ec43ae0) )
|
||||||
@ -2782,13 +2793,27 @@ CONS( 200?, lxcmcyfz, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empt
|
|||||||
CONS( 200?, lxcmcydp, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Disney Princess", MACHINE_NOT_WORKING )
|
CONS( 200?, lxcmcydp, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Disney Princess", MACHINE_NOT_WORKING )
|
||||||
CONS( 2016, rtvgc300, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Retro TV Game Console - 300 Games", MACHINE_NOT_WORKING )
|
CONS( 2016, rtvgc300, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Retro TV Game Console - 300 Games", MACHINE_NOT_WORKING )
|
||||||
|
|
||||||
// Also Lexibook Compact Cyber Arcade - Cars
|
/* The following are also confirmed to be NES/VT derived units, most having a standard set of games with a handful of lazy graphic mods thrown in to fit the unit theme
|
||||||
// Lexibook Compact Cyber Arcade - Paw Patrol
|
|
||||||
// Lexibook Compact Cyber Arcade - Barbie
|
(handhekd units, use standard AAA batteries)
|
||||||
// Lexibook Compact Cyber Arcade - Finding Dory
|
Lexibook Compact Cyber Arcade - Cars
|
||||||
// Lexibook Compact Cyber Arcade - Marvel Ultimate Spiderman
|
Lexibook Compact Cyber Arcade - Paw Patrol
|
||||||
// Lexibook Compact Cyber Arcade - PJ Masks
|
Lexibook Compact Cyber Arcade - Barbie
|
||||||
// more?
|
Lexibook Compact Cyber Arcade - Finding Dory
|
||||||
|
Lexibook Compact Cyber Arcade - Marvel Ultimate Spiderman
|
||||||
|
Lexibook Compact Cyber Arcade - PJ Masks
|
||||||
|
|
||||||
|
(Handheld units, but different form factor to Compact Cyber Arcade, charged via USB)
|
||||||
|
Lexibook Console Colour - Minnie Mouse
|
||||||
|
Lexibook Console Colour - Disney's Planes
|
||||||
|
Lexibook Console Colour - Barbie
|
||||||
|
|
||||||
|
(units for use with TV)
|
||||||
|
Lexibook Retro TV Game Console (300 Games) - Cars
|
||||||
|
Lexibook Retro TV Game Console (300 Games) - Frozen
|
||||||
|
|
||||||
|
(more?)
|
||||||
|
*/
|
||||||
|
|
||||||
// intial code isn't valid? scrambled?
|
// intial code isn't valid? scrambled?
|
||||||
CONS( 201?, red5mam, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Red5", "Mini Arcade Machine (Red5)", MACHINE_NOT_WORKING )
|
CONS( 201?, red5mam, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Red5", "Mini Arcade Machine (Red5)", MACHINE_NOT_WORKING )
|
||||||
@ -2800,12 +2825,14 @@ CONS( 201?, red5mam, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty
|
|||||||
// some menu gfx broken, probably because this is a bad dump
|
// some menu gfx broken, probably because this is a bad dump
|
||||||
CONS( 2015, dgun2573, 0, 0, nes_vt_fp, nes_vt, nes_vt_hh_state, empty_init, "dreamGEAR", "My Arcade Gamer V Portable Gaming System (DGUN-2573)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
CONS( 2015, dgun2573, 0, 0, nes_vt_fp, nes_vt, nes_vt_hh_state, empty_init, "dreamGEAR", "My Arcade Gamer V Portable Gaming System (DGUN-2573)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||||
|
|
||||||
|
CONS( 201?, denv150, 0, 0, nes_vt_fp, nes_vt, nes_vt_hh_state, empty_init, "Denver", "Denver Game Console GMP-240C 150-in-1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
|
||||||
|
|
||||||
|
|
||||||
// CPU die is marked 'VH2009' There's also a 62256 RAM chip on the PCB, some scrambled opcodes
|
// CPU die is marked 'VH2009' There's also a 62256 RAM chip on the PCB, some scrambled opcodes
|
||||||
CONS( 200?, polmega, 0, 0, nes_vt_vh2009, nes_vt, nes_vt_vh2009_state, empty_init, "Polaroid", "Megamax GPD001SDG", MACHINE_NOT_WORKING )
|
CONS( 200?, polmega, 0, 0, nes_vt_vh2009, nes_vt, nes_vt_vh2009_state, empty_init, "Polaroid", "Megamax GPD001SDG", MACHINE_NOT_WORKING )
|
||||||
CONS( 200?, silv35, 0, 0, nes_vt_vh2009, nes_vt, nes_vt_vh2009_state, empty_init, "SilverLit", "35 in 1 Super Twins", MACHINE_NOT_WORKING )
|
CONS( 200?, silv35, 0, 0, nes_vt_vh2009, nes_vt, nes_vt_vh2009_state, empty_init, "SilverLit", "35 in 1 Super Twins", MACHINE_NOT_WORKING )
|
||||||
|
// die is marked as VH2009, as above, but no scrambled opcodes here
|
||||||
|
CONS( 201?, techni4, 0, 0, nes_vt_base_pal, nes_vt, nes_vt_state, empty_init, "Technigame", "Technigame Super 4-in-1 Sports (PAL)", MACHINE_IMPERFECT_GRAPHICS )
|
||||||
|
|
||||||
|
|
||||||
// same encryption as above, but seems like newer hardware (or the above aren't using most of the features)
|
// same encryption as above, but seems like newer hardware (or the above aren't using most of the features)
|
||||||
|
@ -28,9 +28,9 @@ protected:
|
|||||||
|
|
||||||
required_region_ptr<uint16_t> m_romregion;
|
required_region_ptr<uint16_t> m_romregion;
|
||||||
|
|
||||||
DECLARE_READ16_MEMBER(porta_r);
|
virtual DECLARE_READ16_MEMBER(porta_r);
|
||||||
DECLARE_READ16_MEMBER(portb_r);
|
virtual DECLARE_READ16_MEMBER(portb_r);
|
||||||
DECLARE_READ16_MEMBER(portc_r);
|
virtual DECLARE_READ16_MEMBER(portc_r);
|
||||||
|
|
||||||
virtual DECLARE_WRITE16_MEMBER(porta_w) override;
|
virtual DECLARE_WRITE16_MEMBER(porta_w) override;
|
||||||
virtual DECLARE_WRITE16_MEMBER(portb_w) override;
|
virtual DECLARE_WRITE16_MEMBER(portb_w) override;
|
||||||
@ -59,6 +59,24 @@ protected:
|
|||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class oplayer_100in1_state : public mywicodx_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
oplayer_100in1_state(const machine_config& mconfig, device_type type, const char* tag) :
|
||||||
|
mywicodx_state(mconfig, type, tag)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void init_oplayer();
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual DECLARE_READ16_MEMBER(porta_r) override;
|
||||||
|
virtual DECLARE_READ16_MEMBER(portb_r) override;
|
||||||
|
virtual DECLARE_READ16_MEMBER(portc_r) override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void zon32bit_state::device_post_load()
|
void zon32bit_state::device_post_load()
|
||||||
{
|
{
|
||||||
// load state can change the bank, so we must invalide cache
|
// load state can change the bank, so we must invalide cache
|
||||||
@ -227,6 +245,21 @@ WRITE16_MEMBER(zon32bit_state::portc_w)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
READ16_MEMBER(oplayer_100in1_state::portc_r)
|
||||||
|
{
|
||||||
|
return m_io_p3->read();
|
||||||
|
}
|
||||||
|
|
||||||
|
READ16_MEMBER(oplayer_100in1_state::portb_r)
|
||||||
|
{
|
||||||
|
return m_io_p2->read();
|
||||||
|
}
|
||||||
|
|
||||||
|
READ16_MEMBER(oplayer_100in1_state::porta_r)
|
||||||
|
{
|
||||||
|
return 0x0ff8 | (machine().rand()&1);
|
||||||
|
}
|
||||||
|
|
||||||
void zon32bit_state::mem_map_zon32bit(address_map &map)
|
void zon32bit_state::mem_map_zon32bit(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x000000, 0x3fffff).r(FUNC(zon32bit_state::z32_rom_r));
|
map(0x000000, 0x3fffff).r(FUNC(zon32bit_state::z32_rom_r));
|
||||||
@ -428,6 +461,120 @@ static INPUT_PORTS_START( zon32bit )
|
|||||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( oplayer )
|
||||||
|
PORT_START("P1")
|
||||||
|
PORT_DIPNAME( 0x0001, 0x0001, "P1" )
|
||||||
|
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
|
||||||
|
PORT_START("P2")
|
||||||
|
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
|
||||||
|
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
|
||||||
|
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
|
||||||
|
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
|
||||||
|
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 )
|
||||||
|
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 )
|
||||||
|
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 )
|
||||||
|
PORT_BIT( 0xff80, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||||
|
|
||||||
|
PORT_START("P3")
|
||||||
|
PORT_DIPNAME( 0x0001, 0x0001, "P3" )
|
||||||
|
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
void zon32bit_state::zon32bit(machine_config &config)
|
void zon32bit_state::zon32bit(machine_config &config)
|
||||||
{
|
{
|
||||||
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
|
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
|
||||||
@ -460,6 +607,72 @@ ROM_START( zon32bit )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Following pinout was used for dumping
|
||||||
|
|
||||||
|
+------------------+
|
||||||
|
VCC -|01 70|- VCC
|
||||||
|
A23 -|02 69|- A21
|
||||||
|
VCC -|03 68|- A22
|
||||||
|
A18 -|04 67|- A08
|
||||||
|
A24 -|05 66|- A09
|
||||||
|
A07 -|06 65|- A10
|
||||||
|
A06 -|07 64|- A11
|
||||||
|
A05 -|08 63|- A12
|
||||||
|
A04 -|09 62|- A13
|
||||||
|
A03 -|10 61|- A14
|
||||||
|
A02 -|11 60|- A15
|
||||||
|
A01 -|12 59|- A16
|
||||||
|
A00 -|13 58|- A17
|
||||||
|
NC -|14 57|- A20
|
||||||
|
NC -|15 56|- A19
|
||||||
|
/CE -|16 55|- VCC (/BYTE)
|
||||||
|
NC -|17 54|- NC
|
||||||
|
GND -|18 55LV512 53|- GND
|
||||||
|
NC -|19 52|- NC
|
||||||
|
NC -|20 51|- NC
|
||||||
|
NC -|21 50|- NC
|
||||||
|
NC -|22 49|- NC
|
||||||
|
NC -|23 48|- NC
|
||||||
|
/OE -|24 47|- NC
|
||||||
|
NC -|25 46|- NC
|
||||||
|
D08 -|26 45|- NC
|
||||||
|
D09 -|27 44|- D00
|
||||||
|
D10 -|28 43|- D01
|
||||||
|
D11 -|29 42|- D02
|
||||||
|
NC -|30 41|- D03
|
||||||
|
D12 -|31 40|- D04
|
||||||
|
D13 -|32 39|- D05
|
||||||
|
D14 -|33 38|- D06
|
||||||
|
D15 -|34 37|- D07
|
||||||
|
GND -|35 36|- VCC
|
||||||
|
+------------------+
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Sunplus QL8041C die
|
||||||
|
ROM_START( oplayer )
|
||||||
|
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
|
||||||
|
ROM_LOAD16_WORD_SWAP( "oplayer.bin", 0x0000000, 0x4000000, CRC(aa09c358) SHA1(df2855cdfdf2b693636cace8768e579b9d5bc657) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
void oplayer_100in1_state::init_oplayer()
|
||||||
|
{
|
||||||
|
// TODO: remove these hacks
|
||||||
|
uint16_t* rom = (uint16_t*)memregion("maincpu")->base();
|
||||||
|
// port a checks when starting a game in any given bank / starting the system
|
||||||
|
rom[0x0f851 + (0x0000000 / 2)] = 0xf165;
|
||||||
|
rom[0xaad1e + (0x1000000 / 2)] = 0xf165;
|
||||||
|
rom[0x47d2d + (0x2000000 / 2)] = 0xf165;
|
||||||
|
rom[0x1fb00 + (0x3000000 / 2)] = 0xf165;
|
||||||
|
// port a checks when exiting a game in any given bank
|
||||||
|
rom[0x7a506 + (0x0000000 / 2)] = 0xf165;
|
||||||
|
rom[0xad051 + (0x1000000 / 2)] = 0xf165;
|
||||||
|
rom[0xc351e + (0x3000000 / 2)] = 0xf165;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Box advertises this as '40 Games Included' but the cartridge, which was glued directly to the PCB, not removable, is a 41-in-1. Maybe some versions exist with a 40 game selection.
|
// Box advertises this as '40 Games Included' but the cartridge, which was glued directly to the PCB, not removable, is a 41-in-1. Maybe some versions exist with a 40 game selection.
|
||||||
CONS( 200?, zon32bit, 0, 0, zon32bit, zon32bit, zon32bit_state, empty_init, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 32-bit Gaming Console System (Family Sport 41-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
CONS( 200?, zon32bit, 0, 0, zon32bit, zon32bit, zon32bit_state, empty_init, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 32-bit Gaming Console System (Family Sport 41-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||||
// My Wico Deluxe was also available under the MiWi brand (exact model unknown, but it was a cart there instead of built in)
|
// My Wico Deluxe was also available under the MiWi brand (exact model unknown, but it was a cart there instead of built in)
|
||||||
@ -467,3 +680,4 @@ CONS( 200?, zon32bit, 0, 0, zon32bit, zon32bit, zon32bit_state, empty_init,
|
|||||||
// The Mi Guitar menu contains 24 games, but they're dupes, and just counting those would exclude the other Mi Fit and Mi Papacon menus (which also contain dupes)
|
// The Mi Guitar menu contains 24 games, but they're dupes, and just counting those would exclude the other Mi Fit and Mi Papacon menus (which also contain dupes)
|
||||||
CONS( 200?, mywicodx, 0, 0, zon32bit, zon32bit, mywicodx_state, empty_init, "<unknown>", "My Wico Deluxe (Family Sport 85-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
CONS( 200?, mywicodx, 0, 0, zon32bit, zon32bit, mywicodx_state, empty_init, "<unknown>", "My Wico Deluxe (Family Sport 85-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||||
|
|
||||||
|
CONS( 200?, oplayer, 0, 0, zon32bit, oplayer, oplayer_100in1_state, init_oplayer, "OPlayer", "OPlayer Mobile Game Console (MGS03-white) (Family Sport 100-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
@ -1287,12 +1287,22 @@ static INPUT_PORTS_START( paccon ) // for Test Mode hold buttons 1+2 until the s
|
|||||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ROM_START( smartfp )
|
ROM_START( smartfp )
|
||||||
//ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
|
//ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
|
||||||
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
|
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
|
||||||
|
|
||||||
ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
|
ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
|
||||||
ROM_LOAD16_WORD_SWAP("smartfitpark.bin", 0x000000, 0x800000, CRC(ada84507) SHA1(a3a80bf71fae62ebcbf939166a51d29c24504428))
|
ROM_LOAD16_WORD_SWAP("smartfitparkuk.bin", 0x000000, 0x800000, CRC(2072d7d0) SHA1(eaa4f254d6dee3a7eac64ae2204dd6291e4d27cc) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( smartfps )
|
||||||
|
//ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
|
||||||
|
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
|
||||||
|
|
||||||
|
ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
|
||||||
|
ROM_LOAD16_WORD_SWAP("smartfitpark.bin", 0x000000, 0x800000, CRC(ada84507) SHA1(a3a80bf71fae62ebcbf939166a51d29c24504428) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( gormiti )
|
ROM_START( gormiti )
|
||||||
@ -1591,8 +1601,9 @@ ROM_START( beambox )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
// the JAKKS ones of these seem to be known as 'Generalplus GPAC500' hardware?
|
// the JAKKS ones of these seem to be known as 'Generalplus GPAC500' hardware?
|
||||||
CONS(2009, smartfp, 0, 0, base, smartfp, gcm394_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
|
CONS(2009, smartfp, 0, 0, base, smartfp, gcm394_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park (UK)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
|
||||||
CONS(200?, tkmag220, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empty_init, "TaiKee", "Mini Arcade Games Console (Family Sport 220-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
CONS(2009, smartfps, smartfp, 0, base, smartfp, gcm394_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
|
||||||
|
CONS(200?, tkmag220, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empty_init, "TaiKee", "Mini Arcade Games Console (Family Sport 220-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||||
|
|
||||||
// die on this one is 'GCM420'
|
// die on this one is 'GCM420'
|
||||||
CONS(2013, gormiti, 0, 0, base, gormiti, gcm394_game_state, empty_init, "Giochi Preziosi", "Gormiti Game Arena (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
|
CONS(2013, gormiti, 0, 0, base, gormiti, gcm394_game_state, empty_init, "Giochi Preziosi", "Gormiti Game Arena (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
|
||||||
|
@ -31506,6 +31506,8 @@ mog_m320
|
|||||||
fapocket
|
fapocket
|
||||||
zdog
|
zdog
|
||||||
otrail
|
otrail
|
||||||
|
denv150
|
||||||
|
techni4
|
||||||
|
|
||||||
@source:vt1682.cpp
|
@source:vt1682.cpp
|
||||||
ii8in1
|
ii8in1
|
||||||
@ -37307,6 +37309,7 @@ lx_jg7415 //
|
|||||||
@source:spg2xx_zone_32bit.cpp
|
@source:spg2xx_zone_32bit.cpp
|
||||||
mywicodx //
|
mywicodx //
|
||||||
zon32bit // Zone 32-bit
|
zon32bit // Zone 32-bit
|
||||||
|
oplayer
|
||||||
|
|
||||||
@source:spiders.cpp
|
@source:spiders.cpp
|
||||||
spiders // (c) 1981 Sigma Ent. Inc.
|
spiders // (c) 1981 Sigma Ent. Inc.
|
||||||
@ -37891,6 +37894,7 @@ jak_tink
|
|||||||
jak_totm
|
jak_totm
|
||||||
jak_ths
|
jak_ths
|
||||||
smartfp // Smart Fit Park
|
smartfp // Smart Fit Park
|
||||||
|
smartfps
|
||||||
gormiti
|
gormiti
|
||||||
wlsair60 // Wireless Air 60
|
wlsair60 // Wireless Air 60
|
||||||
wrlshunt // Wireless: Hunting Video Game System
|
wrlshunt // Wireless: Hunting Video Game System
|
||||||
|
Loading…
Reference in New Issue
Block a user