New working clones

------------------
Umi de Poker / Marine Paradise (Japan, newer) [Ioannis Bampulas]
This commit is contained in:
Ivan Vangelista 2024-08-09 18:16:15 +02:00
parent 5c2a4a5520
commit 9ffb107e66
4 changed files with 119 additions and 78 deletions

View File

@ -32175,6 +32175,7 @@ twinbskt // (c) 1995 Recreativos Pasqual
@source:misc/umipoker.cpp
saiyukip //
umipoker //
umipokera //
@source:misc/unkgolf.cpp
unkgolf

View File

@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese, Roberto Fresca
// copyright-holders: Angelo Salese, Roberto Fresca
/***************************************************************************
Umi de Poker (c) 1997 World Station Co.,LTD
@ -42,11 +43,12 @@ class umipoker_state : public driver_device
public:
umipoker_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_vram(*this, "vram.%u", 0U)
, m_z80_wram(*this, "z80_wram")
, m_maincpu(*this, "maincpu")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
, m_vram(*this, "vram.%u", 0U)
, m_z80_wram(*this, "z80_wram")
, m_z80_rom(*this, "audiocpu")
{
}
@ -55,6 +57,20 @@ public:
protected:
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
void main_map(address_map &map);
private:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr_array<uint16_t, 4> m_vram;
required_shared_ptr<uint8_t> m_z80_wram;
required_region_ptr<uint8_t> m_z80_rom;
tilemap_t *m_tilemap[4]{};
uint16_t m_scrolly[4]{};
uint8_t z80_rom_readback_r(offs_t offset);
uint8_t z80_shared_ram_r(offs_t offset);
void z80_shared_ram_w(offs_t offset, uint8_t data);
@ -67,16 +83,6 @@ protected:
void audio_io_map(address_map &map);
void audio_map(address_map &map);
void umipoker_map(address_map &map);
required_shared_ptr_array<uint16_t, 4> m_vram;
required_shared_ptr<uint8_t> m_z80_wram;
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
tilemap_t *m_tilemap[4]{};
int m_scrolly[4]{};
};
class saiyukip_state : public umipoker_state
@ -97,7 +103,7 @@ private:
void lamps_w(uint16_t data);
void saiyu_counters_w(uint16_t data);
void saiyukip_map(address_map &map);
void main_map(address_map &map);
output_finder<6> m_lamps;
};
@ -105,21 +111,18 @@ private:
template<uint8_t Which>
TILE_GET_INFO_MEMBER(umipoker_state::get_tile_info)
{
int tile = m_vram[Which][tile_index*2+0];
int color = m_vram[Which][tile_index*2+1] & 0x3f;
int const tile = m_vram[Which][tile_index * 2 + 0];
int const color = m_vram[Which][tile_index * 2 + 1] & 0x3f;
tileinfo.set(0,
tile,
color,
0);
tileinfo.set(0, tile, color, 0);
}
void umipoker_state::video_start()
{
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8, 64,32);
m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8, 64,32);
m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 8,8, 64,32);
m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 8,8, 64,32);
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_tilemap[0]->set_transparent_pen(0);
m_tilemap[1]->set_transparent_pen(0);
@ -139,19 +142,17 @@ uint32_t umipoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
bitmap.fill(m_palette->black_pen(), cliprect);
m_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
m_tilemap[1]->draw(screen, bitmap, cliprect, 0,0);
m_tilemap[2]->draw(screen, bitmap, cliprect, 0,0);
m_tilemap[3]->draw(screen, bitmap, cliprect, 0,0);
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
m_tilemap[2]->draw(screen, bitmap, cliprect, 0, 0);
m_tilemap[3]->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}
uint8_t umipoker_state::z80_rom_readback_r(offs_t offset)
{
uint8_t *ROM = memregion("audiocpu")->base();
return ROM[offset];
return m_z80_rom[offset];
}
uint8_t umipoker_state::z80_shared_ram_r(offs_t offset)
@ -172,9 +173,9 @@ void umipoker_state::irq_ack_w(uint16_t data)
{
m_maincpu->set_input_line(6, CLEAR_LINE);
/* shouldn't happen */
if(data)
popmessage("%04x IRQ ACK, contact MAMEdev",data);
// shouldn't happen
if (data)
popmessage("%04x IRQ ACK, contact MAMEdev", data);
}
template<uint8_t Which>
@ -280,7 +281,7 @@ void saiyukip_state::saiyu_counters_w(uint16_t data)
}
void umipoker_state::umipoker_map(address_map &map)
void umipoker_state::main_map(address_map &map)
{
map.unmap_value_low();
map(0x000000, 0x03ffff).rom();
@ -308,9 +309,9 @@ void umipoker_state::umipoker_map(address_map &map)
map(0xe0002e, 0xe0002f).w(FUNC(umipoker_state::scrolly_w<3>));
}
void saiyukip_state::saiyukip_map(address_map &map)
void saiyukip_state::main_map(address_map &map)
{
umipoker_map(map);
umipoker_state::main_map(map);
map(0xe0000c, 0xe0000d).w(FUNC(saiyukip_state::lamps_w));
map(0xe00010, 0xe00011).w(FUNC(saiyukip_state::saiyu_counters_w));
}
@ -460,7 +461,7 @@ static INPUT_PORTS_START( umipoker )
PORT_DIPSETTING( 0x0030, "30000" )
PORT_DIPSETTING( 0x0038, "50000" )
PORT_DIPSETTING( 0x0000, "999999" )
PORT_DIPNAME( 0x0040, 0x0040, "Out Coin Counter" ) PORT_DIPLOCATION("DSW3:!7") /* Conditional to 'Hopper Sub-Board' (DSW4-3) */
PORT_DIPNAME( 0x0040, 0x0040, "Out Coin Counter" ) PORT_DIPLOCATION("DSW3:!7") // Conditional to 'Hopper Sub-Board' (DSW4-3)
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, "Credit Cut" ) PORT_DIPLOCATION("DSW3:!8")
@ -472,7 +473,7 @@ static INPUT_PORTS_START( umipoker )
PORT_DIPSETTING( 0x0100, "B Type" )
PORT_DIPSETTING( 0x0200, "C Type" )
PORT_DIPSETTING( 0x0300, "D Type" )
PORT_DIPNAME( 0x0400, 0x0400, "Hopper Sub-Board" ) PORT_DIPLOCATION("DSW4:!3") /* When off, allow set the 'Out Coin Counter' (DSW3-7) */
PORT_DIPNAME( 0x0400, 0x0400, "Hopper Sub-Board" ) PORT_DIPLOCATION("DSW4:!3") // When off, allow set the 'Out Coin Counter' (DSW3-7)
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0400, "Use" )
PORT_DIPNAME( 0x0800, 0x0000, "Title Type" ) PORT_DIPLOCATION("DSW4:!4")
@ -486,7 +487,7 @@ static INPUT_PORTS_START( umipoker )
PORT_DIPNAME( 0x4000, 0x4000, "Fever Initialize" ) PORT_DIPLOCATION("DSW4:!7")
PORT_DIPSETTING( 0x0000, "A Type" )
PORT_DIPSETTING( 0x4000, "B Type" )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:!8") /* Unmapped?... */
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:!8") // Unmapped?...
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
INPUT_PORTS_END
@ -601,10 +602,10 @@ static INPUT_PORTS_START( saiyukip )
PORT_DIPNAME( 0x1000, 0x1000, "Hopper" ) PORT_DIPLOCATION("DSW4:!5")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, "Medal Sub-Board" ) PORT_DIPLOCATION("DSW4:!6") /* When off, allow 'Out Counter' to be set */
PORT_DIPNAME( 0x2000, 0x2000, "Medal Sub-Board" ) PORT_DIPLOCATION("DSW4:!6") // When off, allow 'Out Counter' to be set
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, "Out Counter" ) PORT_DIPLOCATION("DSW4:!7") /* Conditional to 'Medal Sub-Board' */
PORT_DIPNAME( 0x4000, 0x4000, "Out Counter" ) PORT_DIPLOCATION("DSW4:!7") // Conditional to 'Medal Sub-Board'
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, "Credit Over Cut" ) PORT_DIPLOCATION("DSW4:!8")
@ -613,19 +614,8 @@ static INPUT_PORTS_START( saiyukip )
INPUT_PORTS_END
static const gfx_layout layout_8x8x4 =
{
8,8,
RGN_FRAC(1,4),
4,
{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
{ STEP8(0,1) },
{ STEP8(0,8) },
8*8
};
static GFXDECODE_START( gfx_umipoker )
GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0, 0x40)
GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_planar, 0, 0x40)
GFXDECODE_END
void saiyukip_state::machine_start()
@ -638,9 +628,9 @@ void saiyukip_state::machine_start()
// TODO: Verify clocks (XTALs are 14.3181 and 2.000MHz)
void umipoker_state::umipoker(machine_config &config)
{
/* basic machine hardware */
// basic machine hardware
M68000(config, m_maincpu, XTAL(14'318'181)); // TMP68HC000-16
m_maincpu->set_addrmap(AS_PROGRAM, &umipoker_state::umipoker_map);
m_maincpu->set_addrmap(AS_PROGRAM, &umipoker_state::main_map);
z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181) / 4)); // 3.579545MHz
audiocpu.set_addrmap(AS_PROGRAM, &umipoker_state::audio_map);
@ -648,7 +638,7 @@ void umipoker_state::umipoker(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
/* video hardware */
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@ -661,7 +651,7 @@ void umipoker_state::umipoker(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_umipoker);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x400);
/* sound hardware */
// sound hardware
SPEAKER(config, "mono").front_center();
ym3812_device &ym(YM3812(config, "ym", XTAL(14'318'181) / 4)); // 3.579545MHz
@ -675,7 +665,7 @@ void umipoker_state::umipoker(machine_config &config)
void saiyukip_state::saiyukip(machine_config &config)
{
umipoker(config);
m_maincpu->set_addrmap(AS_PROGRAM, &saiyukip_state::saiyukip_map);
m_maincpu->set_addrmap(AS_PROGRAM, &saiyukip_state::main_map);
}
@ -685,7 +675,30 @@ void saiyukip_state::saiyukip(machine_config &config)
***************************************************************************/
ROM_START( umipoker )
ROM_START( umipoker ) // W-ONE 1995-08 PCB
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD16_BYTE( "p0.u61", 0x000000, 0x020000, CRC(3a0c4a8b) SHA1(009cbbd4df68e31dc683a8cd3425e5f8b986fa92) )
ROM_LOAD16_BYTE( "p1.u60", 0x000001, 0x020000, CRC(44f475cb) SHA1(0c5044331dbcc617d200d052b4597dd4551fc95c) )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "sz.u8", 0x000000, 0x010000, CRC(d874ba1a) SHA1(13c06f3b67694d5d5194023c4f7b75aea8b57129) ) // second half 1-filled
ROM_REGION( 0x80000, "gfx1", 0 )
ROM_LOAD( "sg3.u39", 0x000000, 0x020000, CRC(ebd5f96d) SHA1(968c107ee17f1e92ffc2835e13803347881862f1) )
ROM_LOAD( "sg2.u40", 0x020000, 0x020000, CRC(eb31649b) SHA1(c0741d85537827e2396e81a1aa3005871dffad78) )
ROM_LOAD( "sg1.u41", 0x040000, 0x020000, CRC(7fcbfb17) SHA1(be2f308a8e8f0941c54125950702ddfbd8538733) )
ROM_LOAD( "sg0.u42", 0x060000, 0x020000, CRC(876f1f4f) SHA1(eca4c397be57812f2c34791736fee7c43925d927) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "sm.u17", 0x000000, 0x040000, CRC(99503aed) SHA1(011404fad01b3ced708a94143908be3e1d0194d3) ) // first half 1-filled
ROM_CONTINUE( 0x000000, 0x040000 )
ROM_REGION( 0x400, "plds", ROMREGION_ERASE00 )
ROM_LOAD( "gal16v8b.u11", 0x000, 0x117, NO_DUMP )
ROM_LOAD( "gal16v8b.u24", 0x200, 0x117, NO_DUMP )
ROM_END
ROM_START( umipokera )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD16_BYTE( "sp0.u61", 0x000000, 0x020000, CRC(866eaa02) SHA1(445afdfe010aad1102219a0dbd3a363a22294b4c) )
ROM_LOAD16_BYTE( "sp1.u60", 0x000001, 0x020000, CRC(8db08696) SHA1(2854d511a8fd30b023e2a2a00b25413f88205d82) )
@ -694,10 +707,10 @@ ROM_START( umipoker )
ROM_LOAD( "sz.u8", 0x000000, 0x010000, CRC(d874ba1a) SHA1(13c06f3b67694d5d5194023c4f7b75aea8b57129) ) // second half 1-filled
ROM_REGION( 0x80000, "gfx1", 0 )
ROM_LOAD( "sg0.u42", 0x000000, 0x020000, CRC(876f1f4f) SHA1(eca4c397be57812f2c34791736fee7c43925d927) )
ROM_LOAD( "sg1.u41", 0x020000, 0x020000, CRC(7fcbfb17) SHA1(be2f308a8e8f0941c54125950702ddfbd8538733) )
ROM_LOAD( "sg2.u40", 0x040000, 0x020000, CRC(eb31649b) SHA1(c0741d85537827e2396e81a1aa3005871dffad78) )
ROM_LOAD( "sg3.u39", 0x060000, 0x020000, CRC(ebd5f96d) SHA1(968c107ee17f1e92ffc2835e13803347881862f1) )
ROM_LOAD( "sg3.u39", 0x000000, 0x020000, CRC(ebd5f96d) SHA1(968c107ee17f1e92ffc2835e13803347881862f1) )
ROM_LOAD( "sg2.u40", 0x020000, 0x020000, CRC(eb31649b) SHA1(c0741d85537827e2396e81a1aa3005871dffad78) )
ROM_LOAD( "sg1.u41", 0x040000, 0x020000, CRC(7fcbfb17) SHA1(be2f308a8e8f0941c54125950702ddfbd8538733) )
ROM_LOAD( "sg0.u42", 0x060000, 0x020000, CRC(876f1f4f) SHA1(eca4c397be57812f2c34791736fee7c43925d927) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "sm.u17", 0x000000, 0x040000, CRC(99503aed) SHA1(011404fad01b3ced708a94143908be3e1d0194d3) ) // first half 1-filled
@ -713,23 +726,24 @@ ROM_START( saiyukip )
ROM_LOAD( "slz.u8", 0x000000, 0x010000, CRC(4f32ba1c) SHA1(8f1f8c0995bcd05d19120dd3b64b135908caf759) ) // second half 1-filled
ROM_REGION( 0x80000, "gfx1", 0 )
ROM_LOAD( "slg0.u42", 0x000000, 0x020000, CRC(49ba7ffd) SHA1(3bbb7656eafbd8c91c9054fca056c8fc3002ed13) )
ROM_LOAD( "slg1.u41", 0x020000, 0x020000, CRC(59b5f399) SHA1(2b999cebcc53b3b8fd38e3034a12434d82b6fad3) )
ROM_LOAD( "slg2.u40", 0x040000, 0x020000, CRC(fe6cd717) SHA1(65e59d88a30efd0cec642cda54e2bc38196f0231) )
ROM_LOAD( "slg3.u39", 0x060000, 0x020000, CRC(e99b2906) SHA1(77884d2dae2e7f7cf27103aa8bbd0eaa39628993) )
ROM_LOAD( "slg3.u39", 0x000000, 0x020000, CRC(e99b2906) SHA1(77884d2dae2e7f7cf27103aa8bbd0eaa39628993) )
ROM_LOAD( "slg2.u40", 0x020000, 0x020000, CRC(fe6cd717) SHA1(65e59d88a30efd0cec642cda54e2bc38196f0231) )
ROM_LOAD( "slg1.u41", 0x040000, 0x020000, CRC(59b5f399) SHA1(2b999cebcc53b3b8fd38e3034a12434d82b6fad3) )
ROM_LOAD( "slg0.u42", 0x060000, 0x020000, CRC(49ba7ffd) SHA1(3bbb7656eafbd8c91c9054fca056c8fc3002ed13) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "slm.u17", 0x000000, 0x040000, CRC(b50eb70b) SHA1(342fcb307844f4d0a02a85b2c61e73b5e8bacd44) ) // first half 1-filled
ROM_CONTINUE( 0x000000, 0x040000 )
ROM_END
} // Anonymous namespace
} // anonymous namespace
/******************************************
* Game Drivers *
******************************************/
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT
GAME( 1997, umipoker, 0, umipoker, umipoker, umipoker_state, empty_init, ROT0, "World Station Co.,LTD", "Umi de Poker / Marine Paradise (Japan)", MACHINE_SUPPORTS_SAVE ) // title screen is toggleable thru a dsw
GAMEL( 1998, saiyukip, 0, saiyukip, saiyukip, saiyukip_state, empty_init, ROT0, "World Station Co.,LTD", "Slot Poker Saiyuki (Japan)", MACHINE_SUPPORTS_SAVE, layout_saiyukip )
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT
GAME( 1997, umipoker, 0, umipoker, umipoker, umipoker_state, empty_init, ROT0, "World Station Co.,LTD", "Umi de Poker / Marine Paradise (Japan, newer)", MACHINE_SUPPORTS_SAVE ) // title screen is toggleable thru a dsw
GAME( 1997, umipokera, umipoker, umipoker, umipoker, umipoker_state, empty_init, ROT0, "World Station Co.,LTD", "Umi de Poker / Marine Paradise (Japan, older)", MACHINE_SUPPORTS_SAVE ) // title screen is toggleable thru a dsw
GAMEL( 1998, saiyukip, 0, saiyukip, saiyukip, saiyukip_state, empty_init, ROT0, "World Station Co.,LTD", "Slot Poker Saiyuki (Japan)", MACHINE_SUPPORTS_SAVE, layout_saiyukip )

View File

@ -23,6 +23,10 @@ KB89C67 (YM2413 clone)
3.579545 MHz XTAL (near KB89C67)
K-665 sound chip (Oki M6295 clone)
2x 8-DIP banks
TODO:
- everything. Currently stops with 'BK RAM ERROR'.
*/
@ -59,7 +63,8 @@ public:
whtm68k_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode")
m_gfxdecode(*this, "gfxdecode"),
m_txtram(*this, "txtram")
{ }
void unkwht(machine_config &config) ATTR_COLD;
@ -70,7 +75,12 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_shared_ptr<uint16_t> m_txtram;
tilemap_t *m_txt_tilemap = nullptr;
TILE_GET_INFO_MEMBER(get_txt_tile_info);
void txtram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void main_program_map(address_map &map) ATTR_COLD;
@ -81,20 +91,35 @@ private:
void whtm68k_state::video_start()
{
m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(whtm68k_state::get_txt_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
}
// TODO: wrong, just to show something
TILE_GET_INFO_MEMBER(whtm68k_state::get_txt_tile_info)
{
int const tile = m_txtram[tile_index] & 0xfff;
tileinfo.set(0, tile, 0, 0);
}
uint32_t whtm68k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(rgb_t::black(), cliprect);
m_txt_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}
void whtm68k_state::txtram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
COMBINE_DATA(&m_txtram[offset]);
m_txt_tilemap->mark_tile_dirty(offset);
}
void whtm68k_state::main_program_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0xd00000, 0xd03fff).ram();
map(0xd00000, 0xd03fff).ram().w(FUNC(whtm68k_state::txtram_w)).share(m_txtram);
map(0xd10000, 0xd13fff).ram();
map(0xd20000, 0xd23fff).ram();
map(0xe00000, 0xe03fff).ram();
@ -111,7 +136,7 @@ void whtm68k_state::audio_io_map(address_map &map)
map(0x8000, 0x803f).ram(); // ??
map(0xa000, 0xa000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
// some kind of latch with the main CPU or inputs? Returning rand activates the sound chips.
//map(0xb000, 0xb000).lr8(NAME([this] () -> uint8_t { return machine().rand(); }));
map(0xb000, 0xb000).nopr();//lr8(NAME([this] () -> uint8_t { return machine().rand(); }));
map(0xc000, 0xc001).w("ym", FUNC(ym2413_device::write));
}
@ -191,7 +216,7 @@ void whtm68k_state::unkwht(machine_config &config)
// basic machine hardware
M68000(config, m_maincpu, 24_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &whtm68k_state::main_program_map);
//m_maincpu->set_vblank_int("screen", FUNC(whtm68k_state::irq2_line_hold));
m_maincpu->set_vblank_int("screen", FUNC(whtm68k_state::irq2_line_hold));
i80c32_device &audiocpu(I80C32(config, "audiocpu", 12_MHz_XTAL));
audiocpu.set_addrmap(AS_PROGRAM, &whtm68k_state::audio_program_map);
@ -241,7 +266,7 @@ ROM_START( unkwht )
ROM_REGION( 0x60000, "tiles", 0 )
ROM_LOAD( "chs_v1.u50", 0x00000, 0x20000, CRC(dde0d62b) SHA1(bbf0d7dadbeec9036c20a4dfd64a8276c4ff1664) )
ROM_LOAD( "chs_v2.u54", 0x20000, 0x20000, CRC(347db59c) SHA1(532d5621ea45fe569e37612f99fed46e6b6fe377) ) // the u53 socket is between u50 and u53 on PCB
ROM_LOAD( "chs_v2.u54", 0x20000, 0x20000, CRC(347db59c) SHA1(532d5621ea45fe569e37612f99fed46e6b6fe377) ) // the u54 socket is between u50 and u53 on PCB
ROM_LOAD( "chs_v3.u53", 0x40000, 0x20000, CRC(36353ce4) SHA1(427c9b946398a38afae850c199438808eee96d80) )
ROM_REGION( 0x40000, "oki", 0 )

View File

@ -2,9 +2,10 @@
// copyright-holders:Nicola Salmoria, Lee Taylor
/***************************************************************************
Universal board numbers (found on the schematics)
Universal board numbers (found on the schematics / pics)
Cosmic Alien - 7910
No Man's Land - 8003
Magical Spot - 8013
Magical Spot II - 8013
Devil Zone - 8022