Various Namco hardwares update/cleanups (#4147)

* Various Namco hardwares update/cleanups
namcofl.cpp : Confirmed XTALs, Remove unnecessary defines
namconb1.cpp : Correct sprite lags, Remove unnecessary defines, Add screen raw params
reference(nebulray) - https://youtu.be/mAB66HhZNIM
namcos1.cpp : Convert pointer into required_region_ptr, Reduce duplicate
namcos2.cpp : Remove unnecessary bankrw, Add screen raw params, Fix some namings, Remove MACHINE_START_MEMBER and MACHINE_RESET_MEMBER, Reduce unnecessary VIDEO_START_MEMBER
namcos21*.cpp : Fix namings, Remove some unuseds, MACHINE_START_MEMBER and MACHINE_RESET_MEMBER
namco_c116.cpp : Convert internal palette into device_palette_interface
namco_c123tmap.cpp : Internalize gfxdecode(Gfx layout is shared at all hardwares - 8bit data bus for ROM), Mask region, Implement tilemap disable bit
namco_c169roz.cpp : Internalize gfxdecode(Gfx layout is shared at all hardwares - 8bit data bus for ROM), Mask region
namco_c355spr.cpp : Remove unnecessary device, Allow double and triple buffered sprites
namcos2_roz.cpp : Remove unnecessary device, Internalize gfxdecode(8bit data bus for ROM)
namcos2_sprite.cpp : Remove unnecessary device

* namco_c355spr.cpp : struct'd sprite infos, Fix sprite lags
This commit is contained in:
cam900 2018-10-17 10:48:18 +09:00 committed by R. Belmont
parent 56e559e0ae
commit ac8c6c6c57
29 changed files with 946 additions and 1075 deletions

View File

@ -137,7 +137,7 @@ better notes (complete chip lists) for each board still needed
#include "video/namco_c355spr.h"
#include "machine/namcos21_dsp_c67.h"
#include "video/namcos21_3d.h"
#include "emupal.h"
#define NAMCOS21_NUM_COLORS 0x8000
@ -653,7 +653,7 @@ MACHINE_CONFIG_START(gal3_state::gal3)
MCFG_PALETTE_FORMAT(XBRG)
NAMCO_C355SPR(config, m_c355spr[0], 0);
m_c355spr[0]->set_palette_tag("palette_1");
m_c355spr[0]->set_screen("lscreen");
m_c355spr[0]->set_gfxdecode_tag("gfxdecode_1");
m_c355spr[0]->set_is_namcofl(false);
m_c355spr[0]->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
@ -684,7 +684,7 @@ MACHINE_CONFIG_START(gal3_state::gal3)
MCFG_PALETTE_FORMAT(XBRG)
NAMCO_C355SPR(config, m_c355spr[1], 0);
m_c355spr[1]->set_palette_tag("palette_2");
m_c355spr[1]->set_screen("rscreen");
m_c355spr[1]->set_gfxdecode_tag("gfxdecode_2");
m_c355spr[1]->set_is_namcofl(false);
m_c355spr[1]->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());

View File

@ -483,34 +483,8 @@ static const gfx_layout obj_layout =
16*128
};
static const gfx_layout tile_layout =
{
8,8,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{ 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
{ 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64 },
8*64
};
static const gfx_layout roz_layout =
{
16,16,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{ 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8,8*8,9*8,10*8,11*8,12*8,13*8,14*8,15*8 },
{
0*128,1*128,2*128,3*128,4*128,5*128,6*128,7*128,8*128,9*128,10*128,11*128,12*128,13*128,14*128,15*128
},
16*128
};
static GFXDECODE_START( gfx_namcofl )
GFXDECODE_ENTRY( NAMCOFL_TILEGFXREGION, 0, tile_layout, 0x1000, 0x08 )
GFXDECODE_ENTRY( NAMCOFL_SPRITEGFXREGION, 0, obj_layout, 0x0000, 0x10 )
GFXDECODE_ENTRY( NAMCOFL_ROTGFXREGION, 0, roz_layout, 0x1800, 0x08 )
GFXDECODE_ENTRY( "sprite", 0, obj_layout, 0x0000, 0x10 )
GFXDECODE_END
@ -580,10 +554,10 @@ MACHINE_RESET_MEMBER(namcofl_state,namcofl)
MACHINE_CONFIG_START(namcofl_state::namcofl)
MCFG_DEVICE_ADD("maincpu", I960, 20000000) // i80960KA-20 == 20 MHz part
MCFG_DEVICE_ADD("maincpu", I960, 80_MHz_XTAL/4) // i80960KA-20 == 20 MHz part
MCFG_DEVICE_PROGRAM_MAP(namcofl_mem)
MCFG_DEVICE_ADD("mcu", NAMCO_C75, 48384000/3)
MCFG_DEVICE_ADD("mcu", NAMCO_C75, 48.384_MHz_XTAL/3)
MCFG_DEVICE_PROGRAM_MAP(namcoc75_am)
MCFG_DEVICE_IO_MAP(namcoc75_io)
/* TODO: irq generation for these */
@ -600,22 +574,19 @@ MACHINE_CONFIG_START(namcofl_state::namcofl)
MCFG_SCREEN_SIZE(NAMCOFL_HTOTAL, NAMCOFL_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCOFL_HBSTART-1, 0, NAMCOFL_VBSTART-1)
MCFG_SCREEN_UPDATE_DRIVER(namcofl_state, screen_update_namcofl)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_PALETTE(m_c116)
MCFG_PALETTE_ADD("palette", 8192)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcofl)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_c116, gfx_namcofl)
NAMCO_C169ROZ(config, m_c169roz, 0);
m_c169roz->set_gfxdecode_tag("gfxdecode");
m_c169roz->set_palette(m_c116);
m_c169roz->set_is_namcofl(true);
m_c169roz->set_ram_words(0x20000/2);
m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&namcofl_state::RozCB, this));
m_c169roz->set_maskregion_tag(NAMCOFL_ROTMASKREGION);
m_c169roz->set_gfxregion(NAMCOFL_ROTGFX);
m_c169roz->set_color_base(0x1800);
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_palette_tag("palette");
m_c355spr->set_screen(m_screen);
m_c355spr->set_gfxdecode_tag("gfxdecode");
m_c355spr->set_is_namcofl(true);
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namcofl_state::FLobjcode2tile, this));
@ -623,19 +594,17 @@ MACHINE_CONFIG_START(namcofl_state::namcofl)
m_c355spr->set_gfxregion(NAMCOFL_SPRITEGFX);
NAMCO_C123TMAP(config, m_c123tmap, 0);
m_c123tmap->set_gfxdecode_tag("gfxdecode");
m_c123tmap->set_palette(m_c116);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcofl_state::TilemapCB, this));
m_c123tmap->set_maskregion_tag(NAMCOFL_TILEMASKREGION);
m_c123tmap->set_gfxregion(NAMCOFL_TILEGFX);
m_c123tmap->set_color_base(0x1000);
NAMCO_C116(config, m_c116, 0);
m_c116->set_palette(m_palette);
MCFG_VIDEO_START_OVERRIDE(namcofl_state,namcofl)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_DEVICE_ADD("c352", C352, 48384000/2, 288)
MCFG_DEVICE_ADD("c352", C352, 48.384_MHz_XTAL/2, 288)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
//MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) // Second DAC not present.
@ -656,26 +625,26 @@ ROM_START( speedrcr )
ROM_REGION16_LE( 0x80000, "c75data", 0 ) // C75 data
ROM_LOAD("se1_spr.21l", 0x000000, 0x80000, CRC(850a27ac) SHA1(7d5db840ec67659a1f2e69a62cdb03ce6ee0b47b) )
ROM_REGION( 0x200000, NAMCOFL_ROTGFXREGION, 0 ) // "RCHAR" (roz characters)
ROM_REGION( 0x200000, "c169roz", 0 ) // "RCHAR" (roz characters)
ROM_LOAD("se1_rch0.19j", 0x000000, 0x100000, CRC(a0827288) SHA1(13691ef4d402a6dc91851de4f82cfbdf96d417cb) )
ROM_LOAD("se1_rch1.18j", 0x100000, 0x100000, CRC(af7609ad) SHA1(b16041f0eb47d7566011d9d762a3083411dc422e) )
ROM_REGION( 0x400000, NAMCOFL_TILEGFXREGION, 0 ) // "SCHAR" (regular BG characters)
ROM_REGION( 0x400000, "c123tmap", 0 ) // "SCHAR" (regular BG characters)
ROM_LOAD("se1_sch0.21p", 0x000000, 0x100000, CRC(7b5cfad0) SHA1(5a0355e37eb191bc0cf8b6b7c3d0274560b9bbd5) )
ROM_LOAD("se1_sch1.20p", 0x100000, 0x100000, CRC(5086e0d3) SHA1(0aa7d11f4f9a75117e69cc77f1b73a68d9007aef) )
ROM_LOAD("se1_sch2.19p", 0x200000, 0x100000, CRC(e59a731e) SHA1(3fed72e9bb485d4d689ab51490360c4c6f1dc5cb) )
ROM_LOAD("se1_sch3.18p", 0x300000, 0x100000, CRC(f817027a) SHA1(71745476f496c60d89c8563b3e46bc85eebc79ce) )
ROM_REGION( 0x800000, NAMCOFL_SPRITEGFXREGION, 0 ) // OBJ
ROM_REGION( 0x800000, "sprite", 0 ) // OBJ
ROM_LOAD16_BYTE("se1obj0l.ic1", 0x000001, 0x200000, CRC(17585218) SHA1(3332afa9bd194ac37b8d6f352507c523a0f2e2b3) )
ROM_LOAD16_BYTE("se1obj0u.ic2", 0x000000, 0x200000, CRC(d14b1236) SHA1(e5447732ef3acec88fb7a00e0deca3e71a40ae65) )
ROM_LOAD16_BYTE("se1obj1l.ic3", 0x400001, 0x200000, CRC(c4809fd5) SHA1(e0b80fccc17c83fb9d08f7f1cf2cd2f0f3a510b4) )
ROM_LOAD16_BYTE("se1obj1u.ic4", 0x400000, 0x200000, CRC(0beefa56) SHA1(012fb7b330dbf851ab2217da0a0e7136ddc3d23f) )
ROM_REGION( 0x100000, NAMCOFL_ROTMASKREGION, 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_REGION( 0x100000, "c169roz:mask", 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_LOAD("se1_rsh.14k", 0x000000, 0x100000, CRC(7aa5a962) SHA1(ff936dfcfcc4ee1f5f2232df62def76ff99e671e) )
ROM_REGION( 0x100000, NAMCOFL_TILEMASKREGION, 0 ) // "SSHAPE" (mask for other tiles?)
ROM_REGION( 0x100000, "c123tmap:mask", 0 ) // "SSHAPE" (mask for other tiles?)
ROM_LOAD("se1_ssh.18u", 0x000000, 0x100000, CRC(7a8e0bda) SHA1(f6a508d90274d0205fec0c46f5f783a2715c0c6e) )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
@ -705,26 +674,26 @@ ROM_START( finalapr )
ROM_REGION16_LE( 0x80000, "c75data", 0 ) // C75 data
ROM_LOAD("flr1spr.21l", 0x000000, 0x20000, CRC(69bb0f5e) SHA1(6831d618de42a165e508ad37db594d3aa290c530) )
ROM_REGION( 0x200000, NAMCOFL_ROTGFXREGION, 0 ) // "RCHAR" (roz characters)
ROM_REGION( 0x200000, "c169roz", 0 ) // "RCHAR" (roz characters)
ROM_LOAD("flr1rch0.19j", 0x000000, 0x100000, CRC(f413f50d) SHA1(cdd8073dda4feaea78e3b94520cf20a9799fd04d) )
ROM_LOAD("flr1rch1.18j", 0x100000, 0x100000, CRC(4654d519) SHA1(f8bb473013cdca48dd98df0de2f78c300c156e91) )
ROM_REGION( 0x400000, NAMCOFL_TILEGFXREGION, 0 ) // "SCHAR" (regular BG characters)
ROM_REGION( 0x400000, "c123tmap", 0 ) // "SCHAR" (regular BG characters)
ROM_LOAD("flr1sch0.21p", 0x000000, 0x100000, CRC(7169efca) SHA1(66c7aa1b50b236b4700b07be0dca7aebdabedb8c) )
ROM_LOAD("flr1sch1.20p", 0x100000, 0x100000, CRC(aa233a02) SHA1(0011329f585658d90f820daf0ba08ce2735bddfc) )
ROM_LOAD("flr1sch2.19p", 0x200000, 0x100000, CRC(9b6b7abd) SHA1(5cdec70db1b46bc5d0866ca155b520157fef3adf) )
ROM_LOAD("flr1sch3.18p", 0x300000, 0x100000, CRC(50a14f54) SHA1(ab9c2f2e11f006a9dc7e5aedd5788d7d67166d36) )
ROM_REGION( 0x800000, NAMCOFL_SPRITEGFXREGION, 0 ) // OBJ
ROM_REGION( 0x800000, "sprite", 0 ) // OBJ
ROM_LOAD16_BYTE("flr1obj0l.ic1", 0x000001, 0x200000, CRC(364a902c) SHA1(4a1ea48eee86d410e36096cc100b4c9a5a645034) )
ROM_LOAD16_BYTE("flr1obj0u.ic2", 0x000000, 0x200000, CRC(a5c7b80e) SHA1(4e0e863cfdd8c051c3c4594bb21e11fb93c28f0c) )
ROM_LOAD16_BYTE("flr1obj1l.ic3", 0x400001, 0x200000, CRC(51fd8de7) SHA1(b1571c45e8c33d746716fd790c704a3361d02bdc) )
ROM_LOAD16_BYTE("flr1obj1u.ic4", 0x400000, 0x200000, CRC(1737aa3c) SHA1(8eaf0dc5d60a270d2c1626f54f5edbddbb0a59c8) )
ROM_REGION( 0x80000, NAMCOFL_ROTMASKREGION, 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_REGION( 0x80000, "c169roz:mask", 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_LOAD("flr1rsh.14k", 0x000000, 0x080000, CRC(037c0983) SHA1(c48574a8ad125cedfaf2538c5ff824e121204629) )
ROM_REGION( 0x80000, NAMCOFL_TILEMASKREGION, 0 ) // "SSHAPE" (mask for other tiles?)
ROM_REGION( 0x80000, "c123tmap:mask", 0 ) // "SSHAPE" (mask for other tiles?)
ROM_LOAD("flr1ssh.18u", 0x000000, 0x080000, CRC(f70cb2bf) SHA1(dbddda822287783a43415172b81d0382a8ac43d8) )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
@ -744,26 +713,26 @@ ROM_START( finalapro )
ROM_REGION16_LE( 0x80000, "c75data", 0 ) // C75 data
ROM_LOAD("flr1spr.21l", 0x000000, 0x20000, CRC(69bb0f5e) SHA1(6831d618de42a165e508ad37db594d3aa290c530) )
ROM_REGION( 0x200000, NAMCOFL_ROTGFXREGION, 0 ) // "RCHAR" (roz characters)
ROM_REGION( 0x200000, "c169roz", 0 ) // "RCHAR" (roz characters)
ROM_LOAD("flr1rch0.19j", 0x000000, 0x100000, CRC(f413f50d) SHA1(cdd8073dda4feaea78e3b94520cf20a9799fd04d) )
ROM_LOAD("flr1rch1.18j", 0x100000, 0x100000, CRC(4654d519) SHA1(f8bb473013cdca48dd98df0de2f78c300c156e91) )
ROM_REGION( 0x400000, NAMCOFL_TILEGFXREGION, 0 ) // "SCHAR" (regular BG characters)
ROM_REGION( 0x400000, "c123tmap", 0 ) // "SCHAR" (regular BG characters)
ROM_LOAD("flr1sch0.21p", 0x000000, 0x100000, CRC(7169efca) SHA1(66c7aa1b50b236b4700b07be0dca7aebdabedb8c) )
ROM_LOAD("flr1sch1.20p", 0x100000, 0x100000, CRC(aa233a02) SHA1(0011329f585658d90f820daf0ba08ce2735bddfc) )
ROM_LOAD("flr1sch2.19p", 0x200000, 0x100000, CRC(9b6b7abd) SHA1(5cdec70db1b46bc5d0866ca155b520157fef3adf) )
ROM_LOAD("flr1sch3.18p", 0x300000, 0x100000, CRC(50a14f54) SHA1(ab9c2f2e11f006a9dc7e5aedd5788d7d67166d36) )
ROM_REGION( 0x800000, NAMCOFL_SPRITEGFXREGION, 0 ) // OBJ
ROM_REGION( 0x800000, "sprite", 0 ) // OBJ
ROM_LOAD16_BYTE("flr1obj0l.ic1", 0x000001, 0x200000, CRC(364a902c) SHA1(4a1ea48eee86d410e36096cc100b4c9a5a645034) )
ROM_LOAD16_BYTE("flr1obj0u.ic2", 0x000000, 0x200000, CRC(a5c7b80e) SHA1(4e0e863cfdd8c051c3c4594bb21e11fb93c28f0c) )
ROM_LOAD16_BYTE("flr1obj1l.ic3", 0x400001, 0x200000, CRC(51fd8de7) SHA1(b1571c45e8c33d746716fd790c704a3361d02bdc) )
ROM_LOAD16_BYTE("flr1obj1u.ic4", 0x400000, 0x200000, CRC(1737aa3c) SHA1(8eaf0dc5d60a270d2c1626f54f5edbddbb0a59c8) )
ROM_REGION( 0x80000, NAMCOFL_ROTMASKREGION, 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_REGION( 0x80000, "c169roz:mask", 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_LOAD("flr1rsh.14k", 0x000000, 0x080000, CRC(037c0983) SHA1(c48574a8ad125cedfaf2538c5ff824e121204629) )
ROM_REGION( 0x80000, NAMCOFL_TILEMASKREGION, 0 ) // "SSHAPE" (mask for other tiles?)
ROM_REGION( 0x80000, "c123tmap:mask", 0 ) // "SSHAPE" (mask for other tiles?)
ROM_LOAD("flr1ssh.18u", 0x000000, 0x080000, CRC(f70cb2bf) SHA1(dbddda822287783a43415172b81d0382a8ac43d8) )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
@ -784,26 +753,26 @@ ROM_START( finalaprj )
ROM_REGION16_LE( 0x80000, "c75data", 0 ) // C75 data
ROM_LOAD("flr1spr.21l", 0x000000, 0x20000, CRC(69bb0f5e) SHA1(6831d618de42a165e508ad37db594d3aa290c530) )
ROM_REGION( 0x200000, NAMCOFL_ROTGFXREGION, 0 ) // "RCHAR" (roz characters)
ROM_REGION( 0x200000, "c169roz", 0 ) // "RCHAR" (roz characters)
ROM_LOAD("flr1rch0.19j", 0x000000, 0x100000, CRC(f413f50d) SHA1(cdd8073dda4feaea78e3b94520cf20a9799fd04d) )
ROM_LOAD("flr1rch1.18j", 0x100000, 0x100000, CRC(4654d519) SHA1(f8bb473013cdca48dd98df0de2f78c300c156e91) )
ROM_REGION( 0x400000, NAMCOFL_TILEGFXREGION, 0 ) // "SCHAR" (regular BG characters)
ROM_REGION( 0x400000, "c123tmap", 0 ) // "SCHAR" (regular BG characters)
ROM_LOAD("flr1sch0.21p", 0x000000, 0x100000, CRC(7169efca) SHA1(66c7aa1b50b236b4700b07be0dca7aebdabedb8c) )
ROM_LOAD("flr1sch1.20p", 0x100000, 0x100000, CRC(aa233a02) SHA1(0011329f585658d90f820daf0ba08ce2735bddfc) )
ROM_LOAD("flr1sch2.19p", 0x200000, 0x100000, CRC(9b6b7abd) SHA1(5cdec70db1b46bc5d0866ca155b520157fef3adf) )
ROM_LOAD("flr1sch3.18p", 0x300000, 0x100000, CRC(50a14f54) SHA1(ab9c2f2e11f006a9dc7e5aedd5788d7d67166d36) )
ROM_REGION( 0x800000, NAMCOFL_SPRITEGFXREGION, 0 ) // OBJ
ROM_REGION( 0x800000, "sprite", 0 ) // OBJ
ROM_LOAD16_BYTE("flr1obj0l.ic1", 0x000001, 0x200000, CRC(364a902c) SHA1(4a1ea48eee86d410e36096cc100b4c9a5a645034) )
ROM_LOAD16_BYTE("flr1obj0u.ic2", 0x000000, 0x200000, CRC(a5c7b80e) SHA1(4e0e863cfdd8c051c3c4594bb21e11fb93c28f0c) )
ROM_LOAD16_BYTE("flr1obj1l.ic3", 0x400001, 0x200000, CRC(51fd8de7) SHA1(b1571c45e8c33d746716fd790c704a3361d02bdc) )
ROM_LOAD16_BYTE("flr1obj1u.ic4", 0x400000, 0x200000, CRC(1737aa3c) SHA1(8eaf0dc5d60a270d2c1626f54f5edbddbb0a59c8) )
ROM_REGION( 0x80000, NAMCOFL_ROTMASKREGION, 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_REGION( 0x80000, "c169roz:mask", 0 ) // "RSHAPE" (roz mask like NB-1?)
ROM_LOAD("flr1rsh.14k", 0x000000, 0x080000, CRC(037c0983) SHA1(c48574a8ad125cedfaf2538c5ff824e121204629) )
ROM_REGION( 0x80000, NAMCOFL_TILEMASKREGION, 0 ) // "SSHAPE" (mask for other tiles?)
ROM_REGION( 0x80000, "c123tmap:mask", 0 ) // "SSHAPE" (mask for other tiles?)
ROM_LOAD("flr1ssh.18u", 0x000000, 0x080000, CRC(f70cb2bf) SHA1(dbddda822287783a43415172b81d0382a8ac43d8) )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples

View File

@ -301,7 +301,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::scantimer)
int scanline = param;
// Handle VBLANK
if (scanline == NAMCONB1_VBSTART)
if (scanline == 224)
{
if (m_vbl_irq_level != 0)
m_maincpu->set_input_line(m_vbl_irq_level, ASSERT_LINE);
@ -1019,40 +1019,9 @@ static const gfx_layout obj_layout =
16*128
}; /* obj_layout */
static const gfx_layout tile_layout =
{
8,8,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{ 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
{ 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64 },
8*64
}; /* tile_layout */
static const gfx_layout roz_layout =
{
16,16,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{ 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8,8*8,9*8,10*8,11*8,12*8,13*8,14*8,15*8 },
{
0*128,1*128,2*128,3*128,4*128,5*128,6*128,7*128,8*128,9*128,10*128,11*128,12*128,13*128,14*128,15*128
},
16*128
}; /* roz_layout */
static GFXDECODE_START( gfx_namconb1 )
GFXDECODE_ENTRY( NAMCONB1_TILEGFXREGION, 0, tile_layout, 0x1000, 0x10 )
GFXDECODE_ENTRY( NAMCONB1_SPRITEGFXREGION, 0, obj_layout, 0x0000, 0x10 )
GFXDECODE_END /* gfxdecodeinfo */
static GFXDECODE_START( gfx_namconb2 )
GFXDECODE_ENTRY( NAMCONB1_TILEGFXREGION, 0, tile_layout, 0x1000, 0x08 )
GFXDECODE_ENTRY( NAMCONB1_SPRITEGFXREGION, 0, obj_layout, 0x0000, 0x10 )
GFXDECODE_ENTRY( NAMCONB1_ROTGFXREGION, 0, roz_layout, 0x1800, 0x08 )
GFXDECODE_END /* gfxdecodeinfo2 */
GFXDECODE_ENTRY( "sprite", 0, obj_layout, 0x0000, 0x10 )
GFXDECODE_END /* gfx_namconb1 */
/***************************************************************/
@ -1084,33 +1053,30 @@ MACHINE_CONFIG_START(namconb1_state::namconb1)
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_irq2", namconb1_state, mcu_irq2_cb, attotime::from_hz(60))
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcu_adc", namconb1_state, mcu_adc_cb, attotime::from_hz(60))
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7)
MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, NAMCONB1_HBSTART-1, 0, NAMCONB1_VBSTART-1)
MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb1)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK/8, 384, 0, 288, 264, 0, 224);
m_screen->set_screen_update(FUNC(namconb1_state::screen_update_namconb1));
m_screen->screen_vblank().set(m_c355spr, FUNC(namco_c355spr_device::vblank));
m_screen->set_palette(m_c116);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namconb1)
MCFG_PALETTE_ADD("palette", 0x2000)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_c116, gfx_namconb1)
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_palette_tag("palette");
m_c355spr->set_screen(m_screen);
m_c355spr->set_gfxdecode_tag("gfxdecode");
m_c355spr->set_is_namcofl(false);
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namconb1_state::NB1objcode2tile, this));
m_c355spr->set_palxor(0x0);
m_c355spr->set_buffer(2); // triple buffered
m_c355spr->set_gfxregion(NAMCONB1_SPRITEGFX);
NAMCO_C123TMAP(config, m_c123tmap, 0);
m_c123tmap->set_gfxdecode_tag("gfxdecode");
m_c123tmap->set_palette(m_c116);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namconb1_state::NB1TilemapCB, this));
m_c123tmap->set_maskregion_tag(NAMCONB1_TILEMASKREGION);
m_c123tmap->set_gfxregion(NAMCONB1_TILEGFX);
m_c123tmap->set_color_base(0x1000);
NAMCO_C116(config, m_c116, 0);
m_c116->set_palette(m_palette);
m_c116->enable_shadows();
MCFG_VIDEO_START_OVERRIDE(namconb1_state,namconb1)
@ -1128,17 +1094,13 @@ MACHINE_CONFIG_START(namconb1_state::namconb2)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(namconb2_am)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb2)
MCFG_DEVICE_REPLACE("gfxdecode", GFXDECODE, "palette", gfx_namconb2)
m_screen->set_screen_update(FUNC(namconb1_state::screen_update_namconb2));
NAMCO_C169ROZ(config, m_c169roz, 0);
m_c169roz->set_gfxdecode_tag("gfxdecode");
m_c169roz->set_palette(m_c116);
m_c169roz->set_is_namcofl(false);
m_c169roz->set_ram_words(0x20000/2);
m_c169roz->set_maskregion_tag(NAMCONB1_ROTMASKREGION);
m_c169roz->set_gfxregion(NAMCONB1_ROTGFX);
m_c169roz->set_color_base(0x1800);
MACHINE_CONFIG_END
@ -1181,19 +1143,19 @@ ROM_START( ptblank ) /* World set using 4Mb sound data rom (verified) */
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "gn1-voi0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) )
ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x800000, "sprite", 0 )
ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "gn1-chr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) )
ROM_LOAD( "gn1-chr1.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) )
ROM_LOAD( "gn1-chr2.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) )
ROM_LOAD( "gn1-chr3.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "gn1-sha0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) )
ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
@ -1212,19 +1174,19 @@ ROM_START( ptblanka ) /* World set using non standard ROM labels (NR is Namco's
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "nr4_spr0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) ) // == gn1-voi0.5j
ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x800000, "sprite", 0 )
ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "nr5_spr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) ) // == gn1_chr0.8j
ROM_LOAD( "nr6_spr0.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) ) // == gn1_chr1.8j
ROM_LOAD( "nr7_spr0.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) ) // == gn1_chr2.10j
ROM_LOAD( "nr8_spr0.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) ) // == gn1_chr3.11j
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "nr9_spr0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) ) // == gn1-sha0.5m
ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
@ -1243,19 +1205,19 @@ ROM_START( gunbuletw ) /* World set using 4Mb sound data rom (verified) */
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "gn1-voi0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) )
ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x800000, "sprite", 0 )
ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "gn1-chr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) )
ROM_LOAD( "gn1-chr1.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) )
ROM_LOAD( "gn1-chr2.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) )
ROM_LOAD( "gn1-chr3.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "gn1-sha0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) )
ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
@ -1274,19 +1236,19 @@ ROM_START( gunbuletj ) /* Japanese set using 1Mb sound data rom (verified) */
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "gn1-voi0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) )
ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x800000, "sprite", 0 )
ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "gn1-chr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) )
ROM_LOAD( "gn1-chr1.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) )
ROM_LOAD( "gn1-chr2.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) )
ROM_LOAD( "gn1-chr3.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "gn1-sha0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) )
ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
@ -1304,7 +1266,7 @@ ROM_START( nebulray )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "nr1-voi0", 0, 0x200000, CRC(332d5e26) SHA1(9daddac3fbe0709e25ed8e0b456bac15bfae20d7) )
ROM_REGION( 0x1000000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x1000000, "sprite", 0 )
ROM_LOAD16_BYTE( "nr1obj0u", 0x000000, 0x200000, CRC(fb82a881) SHA1(c9fa0728a37376a5c85bff1f6e8400c13ce15769) )
ROM_LOAD16_BYTE( "nr1obj0l", 0x000001, 0x200000, CRC(0e99ef46) SHA1(450fe61e448270b633f312361bd5ca89bb9684dd) )
ROM_LOAD16_BYTE( "nr1obj1u", 0x400000, 0x200000, CRC(49d9dbd7) SHA1(2dbd842c192d65888f931cdb5c9387127b1ab632) )
@ -1314,13 +1276,13 @@ ROM_START( nebulray )
ROM_LOAD16_BYTE( "nr1obj3u", 0xc00000, 0x200000, CRC(d5918c9e) SHA1(530781fb44d7bbf01669bb265b658cb60e27bcd7) )
ROM_LOAD16_BYTE( "nr1obj3l", 0xc00001, 0x200000, CRC(c90d13ae) SHA1(675f7b8b3325aac91b2bae1cbebe274a65aedc43) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "nr1-chr0", 0x000000, 0x100000,CRC(8d5b54ea) SHA1(616d5729f474da91da19a8246066280652da998c) )
ROM_LOAD( "nr1-chr1", 0x100000, 0x100000,CRC(cd21630c) SHA1(9974c0eb1051ca52f001e6631264a1936bb50620) )
ROM_LOAD( "nr1-chr2", 0x200000, 0x100000,CRC(70a11023) SHA1(bead486a86bd96c6fdfd2ea4d4d37c38bbe9bfbb) )
ROM_LOAD( "nr1-chr3", 0x300000, 0x100000,CRC(8f4b1d51) SHA1(b48fb2c8ccd9105a5b48be44dd3fe4309769efa4) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "nr1-sha0", 0, 0x80000,CRC(ca667e13) SHA1(685032603224cb81bcb85361921477caec570d5e) )
ROM_REGION( 0x20, "proms", 0 ) /* custom key data? */
@ -1338,7 +1300,7 @@ ROM_START( nebulrayj )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "nr1-voi0", 0, 0x200000, CRC(332d5e26) SHA1(9daddac3fbe0709e25ed8e0b456bac15bfae20d7) )
ROM_REGION( 0x1000000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x1000000, "sprite", 0 )
ROM_LOAD16_BYTE( "nr1obj0u", 0x000000, 0x200000, CRC(fb82a881) SHA1(c9fa0728a37376a5c85bff1f6e8400c13ce15769) )
ROM_LOAD16_BYTE( "nr1obj0l", 0x000001, 0x200000, CRC(0e99ef46) SHA1(450fe61e448270b633f312361bd5ca89bb9684dd) )
ROM_LOAD16_BYTE( "nr1obj1u", 0x400000, 0x200000, CRC(49d9dbd7) SHA1(2dbd842c192d65888f931cdb5c9387127b1ab632) )
@ -1348,13 +1310,13 @@ ROM_START( nebulrayj )
ROM_LOAD16_BYTE( "nr1obj3u", 0xc00000, 0x200000, CRC(d5918c9e) SHA1(530781fb44d7bbf01669bb265b658cb60e27bcd7) )
ROM_LOAD16_BYTE( "nr1obj3l", 0xc00001, 0x200000, CRC(c90d13ae) SHA1(675f7b8b3325aac91b2bae1cbebe274a65aedc43) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "nr1-chr0", 0x000000, 0x100000,CRC(8d5b54ea) SHA1(616d5729f474da91da19a8246066280652da998c) )
ROM_LOAD( "nr1-chr1", 0x100000, 0x100000,CRC(cd21630c) SHA1(9974c0eb1051ca52f001e6631264a1936bb50620) )
ROM_LOAD( "nr1-chr2", 0x200000, 0x100000,CRC(70a11023) SHA1(bead486a86bd96c6fdfd2ea4d4d37c38bbe9bfbb) )
ROM_LOAD( "nr1-chr3", 0x300000, 0x100000,CRC(8f4b1d51) SHA1(b48fb2c8ccd9105a5b48be44dd3fe4309769efa4) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "nr1-sha0", 0, 0x80000,CRC(ca667e13) SHA1(685032603224cb81bcb85361921477caec570d5e) )
ROM_REGION( 0x20, "proms", 0 ) /* custom key data? */
@ -1372,17 +1334,17 @@ ROM_START( gslgr94u )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "gse-voi0.bin", 0, 0x200000, CRC(d3480574) SHA1(0c468ed060769b36b7e41cf4919cb6d8691d64f6) )
ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x400000, "sprite", 0 )
ROM_LOAD16_BYTE( "gseobj0l.bin", 0x000001, 0x200000, CRC(531520ca) SHA1(2a1a5282549c6f7a37d5fb8c0b342edb9dc45315) )
ROM_LOAD16_BYTE( "gseobj0u.bin", 0x000000, 0x200000, CRC(fcc1283c) SHA1(fb44ed742f362e6737412cabf3f67d9506456a9e) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "gse-chr0.bin", 0x000000, 0x100000, CRC(9314085d) SHA1(150e8ea908861337f9be2749aa7f9e1d52570586) )
ROM_LOAD( "gse-chr1.bin", 0x100000, 0x100000, CRC(c128a887) SHA1(4faf78064dd48ec50684a7dc8d120f8c5985bf2a) )
ROM_LOAD( "gse-chr2.bin", 0x200000, 0x100000, CRC(48f0a311) SHA1(e39adcce835542e64ca87f6019d4a85fcbe388c2) )
ROM_LOAD( "gse-chr3.bin", 0x300000, 0x100000, CRC(adbd1f88) SHA1(3c7bb1a9a398412bd3c98cadf8ce63a16e2bfed5) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "gse-sha0.bin", 0, 0x80000, CRC(6b2beabb) SHA1(815f7aef44735584edd4a9ca7e672471d07f225e) )
ROM_END
@ -1397,19 +1359,19 @@ ROM_START( gslgr94j )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "gs4voi0.5j", 0, 0x200000, CRC(c3053a90) SHA1(e76799b33b2457421255b03786bc24266d59c7dd) )
ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x800000, "sprite", 0 )
ROM_LOAD16_BYTE( "gs4obj0l.bin", 0x000001, 0x200000, CRC(3b499da0) SHA1(91ad5f68dbda64dd07e1133eb09ee69da3da3103) )
ROM_LOAD16_BYTE( "gs4obj0u.bin", 0x000000, 0x200000, CRC(80016b50) SHA1(9f7604c196835d31894ba4db1de43d7d2614da84) )
ROM_LOAD16_BYTE( "gs4obj1l.bin", 0x400001, 0x200000, CRC(1f4847a7) SHA1(908e419e42fa8bd786cc3bc96d5ccb3a47c8e2dc) )
ROM_LOAD16_BYTE( "gs4obj1u.bin", 0x400000, 0x200000, CRC(49bc48cd) SHA1(6bcc41546f3bd609e3aa962e5ce3bf5bc6b9229a) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "gs4chr0.8j", 0x000000, 0x100000, CRC(8c6c682e) SHA1(ecf21035d5af28299c9cdb98d5d811b4d52857b8) )
ROM_LOAD( "gs4chr1.9j", 0x100000, 0x100000, CRC(523989f7) SHA1(fae0e2f58e9a8d0ddc7297b567579849e24e0a40) )
ROM_LOAD( "gs4chr2.10j", 0x200000, 0x100000, CRC(37569559) SHA1(ce31673f51c6302f4fb4e4c377e6693a40874f81) )
ROM_LOAD( "gs4chr3.11j", 0x300000, 0x100000, CRC(73ca58f6) SHA1(44bdc943fb10dc53279662cd528169a27d57e478) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "gs4sha0.5m", 0, 0x80000, CRC(40e7e6a5) SHA1(70af76b6034e0d6e1b96bf54c973ab411e5907ab) )
ROM_END
@ -1549,17 +1511,17 @@ ROM_START( gslugrsj )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "gs1voi-0.5j", 0, 0x200000, CRC(6f8262aa) SHA1(beea98d9f8b927a572eb0bfcf678e9d6e40fc68d) )
ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x400000, "sprite", 0 )
ROM_LOAD16_BYTE( "gs1obj-0.ic1", 0x000001, 0x200000, CRC(9a55238f) SHA1(fc3fd4b8b6322bbe343edbcad7815b597562266b) )
ROM_LOAD16_BYTE( "gs1obj-1.ic2", 0x000000, 0x200000, CRC(31c66f76) SHA1(8903e6586dff6f34a6ffca2d7c75343c0a5bff56) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "gs1chr-0.8j", 0x000000, 0x100000, CRC(e7ced86a) SHA1(de90c2e3870b317431d3910f581660681b46ff9d) )
ROM_LOAD( "gs1chr-1.9j", 0x100000, 0x100000, CRC(1fe46749) SHA1(f4c0ea666d52cb1c8b1da93e7486ade5eae336cc) )
ROM_LOAD( "gs1chr-2.10j", 0x200000, 0x100000, CRC(f53afa20) SHA1(5c317e276ca2355e9737c1e8114dccbb5e11058a) )
ROM_LOAD( "gs1chr-3.11j", 0x300000, 0x100000, CRC(b149d7da) SHA1(d50c6258db0ccdd69b563e880d1711aae811fbe3) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "gs1sha-0.5m", 0, 0x80000, CRC(8a2832fe) SHA1(a1f54754fb01bbbc87274b1a0a4127fa9296ad1a) )
ROM_END
@ -1575,17 +1537,17 @@ ROM_START( sws95 )
ROM_LOAD( "ss51voi0.bin", 0, 0x200000, CRC(2740ec72) SHA1(9694a7378ea72771d2b1d43db6d74ed347ba27d3) )
ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x400000, "sprite", 0 )
ROM_LOAD16_BYTE( "ss51ob0l.bin", 0x000001, 0x200000, CRC(e0395694) SHA1(e52045a7af4c4b0f9935695cfc5ff729bf9bd7c1) )
ROM_LOAD16_BYTE( "ss51ob0u.bin", 0x000000, 0x200000, CRC(b0745ca0) SHA1(579ea7fd7b9a181fd9d08c50c6c5941264aa0b6d) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "ss51chr0.bin", 0x000000, 0x100000, CRC(86dd3280) SHA1(07ba6d3edc5c38bf82ddaf8f6de7ef0f5d0788b2) )
ROM_LOAD( "ss51chr1.bin", 0x100000, 0x100000, CRC(2ba0fb9e) SHA1(39ceddad7bc0073b361eb776762002a9fc61b337) )
ROM_LOAD( "ss51chr2.bin", 0x200000, 0x100000, CRC(ca0e6c1a) SHA1(1221cd30894e97e2f7d456509c7b6732ec3d06a5) )
ROM_LOAD( "ss51chr3.bin", 0x300000, 0x100000, CRC(73ca58f6) SHA1(44bdc943fb10dc53279662cd528169a27d57e478) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "ss51sha0.bin", 0, 0x80000, CRC(3bf4d081) SHA1(7b07b86f753ea6bcd90eb7d152c12884a6fe785a) )
ROM_END
@ -1600,17 +1562,17 @@ ROM_START( sws96 )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "ss61voi0.bin", 0, 0x200000, CRC(2740ec72) SHA1(9694a7378ea72771d2b1d43db6d74ed347ba27d3) )
ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x400000, "sprite", 0 )
ROM_LOAD16_BYTE( "ss61ob0l.bin", 0x000001, 0x200000, CRC(579b19d4) SHA1(7f18097c683d2b1c532f54ee514dd499f5965165) )
ROM_LOAD16_BYTE( "ss61ob0u.bin", 0x000000, 0x200000, CRC(a69bbd9e) SHA1(8f4c44e2caa31d25433a04c19c51904ec9461e2f) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "ss61chr0.bin", 0x000000, 0x100000, CRC(9d2ae07b) SHA1(7d268f6c7d8145c913f80049369ae3106d69e939) )
ROM_LOAD( "ss61chr1.bin", 0x100000, 0x100000, CRC(4dc75da6) SHA1(a29932b4fb39648e2c02df668f46cafb80c53619) )
ROM_LOAD( "ss61chr2.bin", 0x200000, 0x100000, CRC(1240704b) SHA1(a24281681053cc6649f00ec5a31c7249101eaee1) )
ROM_LOAD( "ss61chr3.bin", 0x300000, 0x100000, CRC(066581d4) SHA1(999cd478d9da452bb57793cd276c6c0d87e2825e) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "ss61sha0.bin", 0, 0x80000, CRC(fceaa19c) SHA1(c9303a755ac7af19c4804a264d1a09d987f39e74) )
ROM_END
@ -1625,17 +1587,17 @@ ROM_START( sws97 )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "ss71voi0.bin", 0, 0x200000, CRC(2740ec72) SHA1(9694a7378ea72771d2b1d43db6d74ed347ba27d3) )
ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x400000, "sprite", 0 )
ROM_LOAD16_BYTE( "ss71ob0l.bin", 0x000001, 0x200000, CRC(9559ad44) SHA1(fd56a8620f6958cc090f783d74cb38bba46d2423) )
ROM_LOAD16_BYTE( "ss71ob0u.bin", 0x000000, 0x200000, CRC(4df4a722) SHA1(07eb94628ceeb7cbce2d39d479f33c37583a346a) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "ss71chr0.bin", 0x000000, 0x100000, CRC(bd606356) SHA1(a62c55600e46f8821db0b84d79fc2588742ad7ad) )
ROM_LOAD( "ss71chr1.bin", 0x100000, 0x100000, CRC(4dc75da6) SHA1(a29932b4fb39648e2c02df668f46cafb80c53619) )
ROM_LOAD( "ss71chr2.bin", 0x200000, 0x100000, CRC(1240704b) SHA1(a24281681053cc6649f00ec5a31c7249101eaee1) )
ROM_LOAD( "ss71chr3.bin", 0x300000, 0x100000, CRC(066581d4) SHA1(999cd478d9da452bb57793cd276c6c0d87e2825e) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "ss71sha0.bin", 0, 0x80000, CRC(be8c2758) SHA1(0a1b6c03cdaec6103ae8483b67faf3840234f825) )
ROM_END
@ -1650,19 +1612,19 @@ ROM_START( vshoot )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "vsjvoi-0.5j", 0, 0x200000, CRC(0528c9ed) SHA1(52b67978fdeb97b77065575774a7ddeb49fe1d81) )
ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x800000, "sprite", 0 )
ROM_LOAD16_BYTE( "vsjobj0l.ic1", 0x000001, 0x200000, CRC(e134faa7) SHA1(a844c8a5bd6d8907f9e5c7ba9e2ee8e9a886cd1e) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
ROM_LOAD16_BYTE( "vsjobj0u.ic2", 0x000000, 0x200000, CRC(974d0714) SHA1(976050eaf82d4b66e13c1c579e5521eb867527fb) )
ROM_LOAD16_BYTE( "vsjobj1l.ic3", 0x400001, 0x200000, CRC(ba46f967) SHA1(ddfb0ac7fba7369869e4df9a66d465a662eba2e6) )
ROM_LOAD16_BYTE( "vsjobj1u.ic4", 0x400000, 0x200000, CRC(09da7e9c) SHA1(e98e07a886a4fe369748fc97f3cee6a4bb668385) )
ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x400000, "c123tmap", 0 )
ROM_LOAD( "vsjchr-0.8j", 0x000000, 0x100000, CRC(2af8ba7c) SHA1(74f5a382425974a9b2167bb01672dd13dea882f5) )
ROM_LOAD( "vsjchr-1.9j", 0x100000, 0x100000, CRC(b789d53e) SHA1(48b4cf956f9025e3c2b6f59b317596dfe0b6b142) )
ROM_LOAD( "vsjchr-2.10j", 0x200000, 0x100000, CRC(7ef80758) SHA1(c7e6d14f0823607dfd8a13ea6f164ffa85b5563e) )
ROM_LOAD( "vsjchr-3.11j", 0x300000, 0x100000, CRC(73ca58f6) SHA1(44bdc943fb10dc53279662cd528169a27d57e478) )
ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x80000, "c123tmap:mask", 0 )
ROM_LOAD( "vsjsha-0.5m", 0, 0x80000, CRC(78335ea4) SHA1(d4b9f179b1b456a866354ea308664c036de6414d) )
ROM_END
@ -1835,13 +1797,13 @@ ROM_START( outfxies )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "ou1voi0.6n", 0, 0x200000, CRC(2d8fb271) SHA1(bde9d45979728f5a2cd8ec89f5f81bf16b694cc2) )
ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x200000, "c123tmap:mask", 0 )
ROM_LOAD( "ou1shas.12s", 0, 0x200000,CRC(9bcb0397) SHA1(54a32b6394d0e6f51bfd281f8a4bafce6ddf6246) )
ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 )
ROM_REGION( 0x200000, "c169roz:mask", 0 )
ROM_LOAD( "ou1shar.18s", 0, 0x200000, CRC(fbb48194) SHA1(2d3ec5bc519fad2b755018f83fadfe0cba13c292) )
ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x2000000, "sprite", 0 )
ROM_LOAD16_BYTE( "ou1obj0l.4c", 0x0000001, 0x200000, CRC(1b4f7184) SHA1(a05d67842fce92f321d1fdd3bd30aa3427775a0c) )
ROM_LOAD16_BYTE( "ou1obj0u.8c", 0x0000000, 0x200000, CRC(d0a69794) SHA1(07d449e54e9971abeb9cd5bb7b372270fafa8bac) )
ROM_LOAD16_BYTE( "ou1obj1l.4b", 0x0400001, 0x200000, CRC(48a93e84) SHA1(6935ec161a12237d4cec732d42070f381c23b47c) )
@ -1853,12 +1815,12 @@ ROM_START( outfxies )
ROM_LOAD16_BYTE( "ou1obj4l.6b", 0x1000001, 0x200000, CRC(99a5f9d7) SHA1(b0f46f4ac357918137031a19c36a56a47b7aefd6) )
ROM_LOAD16_BYTE( "ou1obj4u.9b", 0x1000000, 0x200000, CRC(70ecaabb) SHA1(521c6849526fb271e6447f6c4f5bfa081f96b91e) )
ROM_REGION( 0x600000, NAMCONB1_ROTGFXREGION, 0 )
ROM_REGION( 0x600000, "c169roz", 0 )
ROM_LOAD( "ou1-rot0.3d", 0x000000, 0x200000, CRC(a50c67c8) SHA1(432b8451eb9eaa3078134fce1e5e2d58a8b64be3) )
ROM_LOAD( "ou1-rot1.3c", 0x200000, 0x200000, CRC(14866780) SHA1(4a54151fada4dfba7232e53e40623e5697eeb7db) )
ROM_LOAD( "ou1-rot2.3b", 0x400000, 0x200000, CRC(55ccf3af) SHA1(d98489aaa840cbffb21c47609961c1163b0336f3) )
ROM_REGION( 0x200000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x200000, "c123tmap", 0 )
ROM_LOAD( "ou1-scr0.1d", 0x000000, 0x200000, CRC(b3b3f2e9) SHA1(541bd7e9ba12aff4ec4033bd9c6bb19476acb3c4) )
ROM_REGION32_BE( 0x100000, "data", 0 )
@ -1877,13 +1839,13 @@ ROM_START( outfxiesj )
ROM_REGION( 0x1000000, "c352", 0 ) // Samples
ROM_LOAD( "ou1voi0.6n", 0, 0x200000, CRC(2d8fb271) SHA1(bde9d45979728f5a2cd8ec89f5f81bf16b694cc2) )
ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x200000, "c123tmap:mask", 0 )
ROM_LOAD( "ou1shas.12s", 0, 0x200000,CRC(9bcb0397) SHA1(54a32b6394d0e6f51bfd281f8a4bafce6ddf6246) )
ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 )
ROM_REGION( 0x200000, "c169roz:mask", 0 )
ROM_LOAD( "ou1shar.18s", 0, 0x200000, CRC(fbb48194) SHA1(2d3ec5bc519fad2b755018f83fadfe0cba13c292) )
ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x2000000, "sprite", 0 )
ROM_LOAD16_BYTE( "ou1obj0l.4c", 0x0000001, 0x200000, CRC(1b4f7184) SHA1(a05d67842fce92f321d1fdd3bd30aa3427775a0c) )
ROM_LOAD16_BYTE( "ou1obj0u.8c", 0x0000000, 0x200000, CRC(d0a69794) SHA1(07d449e54e9971abeb9cd5bb7b372270fafa8bac) )
ROM_LOAD16_BYTE( "ou1obj1l.4b", 0x0400001, 0x200000, CRC(48a93e84) SHA1(6935ec161a12237d4cec732d42070f381c23b47c) )
@ -1895,12 +1857,12 @@ ROM_START( outfxiesj )
ROM_LOAD16_BYTE( "ou1obj4l.6b", 0x1000001, 0x200000, CRC(99a5f9d7) SHA1(b0f46f4ac357918137031a19c36a56a47b7aefd6) )
ROM_LOAD16_BYTE( "ou1obj4u.9b", 0x1000000, 0x200000, CRC(70ecaabb) SHA1(521c6849526fb271e6447f6c4f5bfa081f96b91e) )
ROM_REGION( 0x600000, NAMCONB1_ROTGFXREGION, 0 )
ROM_REGION( 0x600000, "c169roz", 0 )
ROM_LOAD( "ou1-rot0.3d", 0x000000, 0x200000, CRC(a50c67c8) SHA1(432b8451eb9eaa3078134fce1e5e2d58a8b64be3) )
ROM_LOAD( "ou1-rot1.3c", 0x200000, 0x200000, CRC(14866780) SHA1(4a54151fada4dfba7232e53e40623e5697eeb7db) )
ROM_LOAD( "ou1-rot2.3b", 0x400000, 0x200000, CRC(55ccf3af) SHA1(d98489aaa840cbffb21c47609961c1163b0336f3) )
ROM_REGION( 0x200000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x200000, "c123tmap", 0 )
ROM_LOAD( "ou1-scr0.1d", 0x000000, 0x200000, CRC(b3b3f2e9) SHA1(541bd7e9ba12aff4ec4033bd9c6bb19476acb3c4) )
ROM_REGION32_BE( 0x100000, "data", 0 )
@ -1923,13 +1885,13 @@ ROM_START( machbrkr ) /* Defaults to Asia / 4 Player cabinet */
ROM_LOAD( "mb1_voi1.6p", 0x800000, 0x200000, CRC(7e1c2603) SHA1(533098a54fb897931f1d75be9e69a5c047e4c446) )
ROM_RELOAD( 0xc00000, 0x200000)
ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x200000, "c123tmap:mask", 0 )
ROM_LOAD( "mb1_shas.12s", 0, 0x100000, CRC(c51c614b) SHA1(519ecad2e4543c05ec35a727f4c875ab006291af) )
ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 )
ROM_REGION( 0x200000, "c169roz:mask", 0 )
ROM_LOAD( "mb1_shar.18s", 0, 0x080000, CRC(d9329b10) SHA1(149c8804c07350f47af36bc7902371f1dfbed272) )
ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x2000000, "sprite", 0 )
ROM_LOAD16_BYTE( "mb1obj0l.4c", 0x0000001, 0x200000, CRC(056e6b1c) SHA1(44e49de80c925c8fbe04bf9328a77a50a305a5a7) )
ROM_LOAD16_BYTE( "mb1obj0u.8c", 0x0000000, 0x200000, CRC(e19b1714) SHA1(ff43bf3c8e8698934c4057c7b4c72db73929e2af) )
ROM_LOAD16_BYTE( "mb1obj1l.4b", 0x0400001, 0x200000, CRC(af69f7f1) SHA1(414544ec1a9aaffb751beaf63d937ce78d0cf9c6) )
@ -1941,11 +1903,11 @@ ROM_START( machbrkr ) /* Defaults to Asia / 4 Player cabinet */
ROM_LOAD16_BYTE( "mb1obj4l.6b", 0x1000001, 0x200000, CRC(a650b05e) SHA1(b247699433c7bf4b6ae990fc06255cfd48a248dd) )
ROM_LOAD16_BYTE( "mb1obj4u.9b", 0x1000000, 0x200000, CRC(6d0c37e9) SHA1(3a3feb74b890e0a933dcc791e5eee1fb4bdcbb69) )
ROM_REGION( 0x400000, NAMCONB1_ROTGFXREGION, 0 )
ROM_REGION( 0x400000, "c169roz", 0 )
ROM_LOAD( "mb1_rot0.3d", 0x000000, 0x200000, CRC(bc353630) SHA1(2bbddda632298899716394ddcfe51412576ca74a) )
ROM_LOAD( "mb1_rot1.3c", 0x200000, 0x200000, CRC(cf7688cb) SHA1(29a040ce2c4e3bf671cff1a7a1ade06103db236a) )
ROM_REGION( 0x600000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x600000, "c123tmap", 0 )
ROM_LOAD( "mb1_scr0.1d", 0x000000, 0x200000, CRC(c678d5f3) SHA1(98d1523bef50d444be9485c4e7f6932cccbea191) )
ROM_LOAD( "mb1_scr1.1c", 0x200000, 0x200000, CRC(fb2b1939) SHA1(bf9d7b93205e7012aa86693f3d2ba8f4d729bc97) )
ROM_LOAD( "mb1_scr2.1b", 0x400000, 0x200000, CRC(0e6097a5) SHA1(b6c64b3e34ba913138b6b7c3d99d2be4f3ceda08) )
@ -1969,13 +1931,13 @@ ROM_START( machbrkrj )
ROM_LOAD( "mb1_voi1.6p", 0x800000, 0x200000, CRC(7e1c2603) SHA1(533098a54fb897931f1d75be9e69a5c047e4c446) )
ROM_RELOAD( 0xc00000, 0x200000)
ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 )
ROM_REGION( 0x200000, "c123tmap:mask", 0 )
ROM_LOAD( "mb1_shas.12s", 0, 0x100000, CRC(c51c614b) SHA1(519ecad2e4543c05ec35a727f4c875ab006291af) )
ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 )
ROM_REGION( 0x200000, "c169roz:mask", 0 )
ROM_LOAD( "mb1_shar.18s", 0, 0x080000, CRC(d9329b10) SHA1(149c8804c07350f47af36bc7902371f1dfbed272) )
ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 )
ROM_REGION( 0x2000000, "sprite", 0 )
ROM_LOAD16_BYTE( "mb1obj0l.4c", 0x0000001, 0x200000, CRC(056e6b1c) SHA1(44e49de80c925c8fbe04bf9328a77a50a305a5a7) )
ROM_LOAD16_BYTE( "mb1obj0u.8c", 0x0000000, 0x200000, CRC(e19b1714) SHA1(ff43bf3c8e8698934c4057c7b4c72db73929e2af) )
ROM_LOAD16_BYTE( "mb1obj1l.4b", 0x0400001, 0x200000, CRC(af69f7f1) SHA1(414544ec1a9aaffb751beaf63d937ce78d0cf9c6) )
@ -1987,11 +1949,11 @@ ROM_START( machbrkrj )
ROM_LOAD16_BYTE( "mb1obj4l.6b", 0x1000001, 0x200000, CRC(a650b05e) SHA1(b247699433c7bf4b6ae990fc06255cfd48a248dd) )
ROM_LOAD16_BYTE( "mb1obj4u.9b", 0x1000000, 0x200000, CRC(6d0c37e9) SHA1(3a3feb74b890e0a933dcc791e5eee1fb4bdcbb69) )
ROM_REGION( 0x400000, NAMCONB1_ROTGFXREGION, 0 )
ROM_REGION( 0x400000, "c169roz", 0 )
ROM_LOAD( "mb1_rot0.3d", 0x000000, 0x200000, CRC(bc353630) SHA1(2bbddda632298899716394ddcfe51412576ca74a) )
ROM_LOAD( "mb1_rot1.3c", 0x200000, 0x200000, CRC(cf7688cb) SHA1(29a040ce2c4e3bf671cff1a7a1ade06103db236a) )
ROM_REGION( 0x600000, NAMCONB1_TILEGFXREGION, 0 )
ROM_REGION( 0x600000, "c123tmap", 0 )
ROM_LOAD( "mb1_scr0.1d", 0x000000, 0x200000, CRC(c678d5f3) SHA1(98d1523bef50d444be9485c4e7f6932cccbea191) )
ROM_LOAD( "mb1_scr1.1c", 0x200000, 0x200000, CRC(fb2b1939) SHA1(bf9d7b93205e7012aa86693f3d2ba8f4d729bc97) )
ROM_LOAD( "mb1_scr2.1b", 0x400000, 0x200000, CRC(0e6097a5) SHA1(b6c64b3e34ba913138b6b7c3d99d2be4f3ceda08) )

View File

@ -1065,15 +1065,12 @@ MACHINE_CONFIG_START(namcos1_state::ns1)
MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 9+8*8, 9+44*8, 264, 2*8, 30*8)
MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos1_state, screen_vblank))
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_PALETTE(m_c116)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos1)
MCFG_PALETTE_ADD("palette", 0x2000)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_c116, gfx_namcos1)
NAMCO_C116(config, m_c116, 0);
m_c116->set_palette(m_palette);
m_c116->enable_shadows();
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@ -1148,7 +1145,7 @@ ROM_START( shadowld )
ROM_LOAD( "yd_voi-1.bin", 0x20000, 0x20000, CRC(7809035c) SHA1(d1d12db8f1d2c25545ccb92c0a2f2af2d0267161) ) // yd1.v1 + yd1.v4
ROM_LOAD( "yd_voi-2.bin", 0x40000, 0x20000, CRC(73bffc16) SHA1(a927e503bf8650e6b638d5c357cb48586cfa025b) ) // yd1.v2 + yd1.v5
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "yd_chr-8.bin", 0x00000, 0x20000, CRC(0c8e69d0) SHA1(cedf12db2d9b14396cc8a15ccb025b96c92e190d) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1194,7 +1191,7 @@ ROM_START( youkaidk2 )
ROM_LOAD( "yd_voi-1.bin", 0x20000, 0x20000, CRC(7809035c) SHA1(d1d12db8f1d2c25545ccb92c0a2f2af2d0267161) ) // yd1.v1 + yd1.v4
ROM_LOAD( "yd_voi-2.bin", 0x40000, 0x20000, CRC(73bffc16) SHA1(a927e503bf8650e6b638d5c357cb48586cfa025b) ) // yd1.v2 + yd1.v5
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "yd_chr-8.bin", 0x00000, 0x20000, CRC(0c8e69d0) SHA1(cedf12db2d9b14396cc8a15ccb025b96c92e190d) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1239,7 +1236,7 @@ ROM_START( youkaidk1 )
ROM_LOAD( "yd_voi-1.bin", 0x20000, 0x20000, CRC(7809035c) SHA1(d1d12db8f1d2c25545ccb92c0a2f2af2d0267161) ) // yd1.v1 + yd1.v4
ROM_LOAD( "yd_voi-2.bin", 0x40000, 0x20000, CRC(73bffc16) SHA1(a927e503bf8650e6b638d5c357cb48586cfa025b) ) // yd1.v2 + yd1.v5
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "yd_chr-8.bin", 0x00000, 0x20000, CRC(0c8e69d0) SHA1(cedf12db2d9b14396cc8a15ccb025b96c92e190d) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1286,7 +1283,7 @@ ROM_START( dspirit )
ROM_LOAD( "ds_voi-3.bin", 0x60000, 0x20000, CRC(13e84c7e) SHA1(6ad0eb50eb3312f614a891ae8d66faca6b48d204) )
ROM_LOAD( "ds_voi-4.bin", 0x80000, 0x20000, CRC(34fbb8cd) SHA1(3f56f136e9d54d45924802f7149bfbc319e0933a) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "ds_chr-8.bin", 0x00000, 0x20000, CRC(946eb242) SHA1(6964fff430fe306c575ff07e4c054c70aa7d96ca) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1333,7 +1330,7 @@ ROM_START( dspirit2 )
ROM_LOAD( "ds_voi-3.bin", 0x60000, 0x20000, CRC(13e84c7e) SHA1(6ad0eb50eb3312f614a891ae8d66faca6b48d204) )
ROM_LOAD( "ds_voi-4.bin", 0x80000, 0x20000, CRC(34fbb8cd) SHA1(3f56f136e9d54d45924802f7149bfbc319e0933a) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "ds_chr-8.bin", 0x00000, 0x20000, CRC(946eb242) SHA1(6964fff430fe306c575ff07e4c054c70aa7d96ca) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1380,7 +1377,7 @@ ROM_START( dspirit1 )
ROM_LOAD( "ds_voi-3.bin", 0x60000, 0x20000, CRC(13e84c7e) SHA1(6ad0eb50eb3312f614a891ae8d66faca6b48d204) )
ROM_LOAD( "ds_voi-4.bin", 0x80000, 0x20000, CRC(34fbb8cd) SHA1(3f56f136e9d54d45924802f7149bfbc319e0933a) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "ds_chr-8.bin", 0x00000, 0x20000, CRC(946eb242) SHA1(6964fff430fe306c575ff07e4c054c70aa7d96ca) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1426,7 +1423,7 @@ ROM_START( blazer )
ROM_LOAD( "bz_voi-3.bin", 0x60000, 0x20000, CRC(26cfc510) SHA1(749680eaf3072db5331cc76a21cd022c50f95647) )
ROM_LOAD( "bz_voi-4.bin", 0x80000, 0x20000, CRC(d206b1bd) SHA1(32702fa67339ab337a2a70946e3861420a07b11b) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "bz_chr-8.bin", 0x00000, 0x20000, CRC(db28bfca) SHA1(510dd204da389db7eb5d9ce34dc0daf60bad1219) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1468,7 +1465,7 @@ ROM_START( quester )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "qs1_v0.bin", 0x00000, 0x10000, CRC(6a2f3038) SHA1(00870da9b7f65536ff052c32da2d553f8c6b994b) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "qs1_c8.bin", 0x00000, 0x10000, CRC(06730d54) SHA1(53d79c27e2f1b192b1de781b6b5024eb1e8126ad) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1501,7 +1498,7 @@ ROM_START( questers )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "qs1_v0.bin", 0x00000, 0x10000, CRC(6a2f3038) SHA1(00870da9b7f65536ff052c32da2d553f8c6b994b) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "qs1_c8.bin", 0x00000, 0x10000, CRC(06730d54) SHA1(53d79c27e2f1b192b1de781b6b5024eb1e8126ad) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1535,7 +1532,7 @@ ROM_START( pacmania )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "pn2_v0.bin", 0x00000, 0x10000, CRC(1ad5788f) SHA1(f6b1ccdcc3db11c0ab83e3ff24e772cd2b491468) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "pn2_c8.bin", 0x00000, 0x10000, CRC(f3afd65d) SHA1(51daefd8685b49c464130b9e7d93e31cfdda724e) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1571,7 +1568,7 @@ ROM_START( pacmaniao )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "pac-mania_111187.voice0", 0x00000, 0x10000, CRC(1ad5788f) SHA1(f6b1ccdcc3db11c0ab83e3ff24e772cd2b491468) ) // identical to world version
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "pn1_c8.bin", 0x00000, 0x10000, CRC(f3afd65d) SHA1(51daefd8685b49c464130b9e7d93e31cfdda724e) ) // same as the Japanese version
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1607,7 +1604,7 @@ ROM_START( pacmaniaj )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "pn1_v0.bin", 0x00000, 0x10000, CRC(e2689f79) SHA1(b88e3435f2932901cc0a3b379b31a764bb9b2e2b) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "pn1_c8.bin", 0x00000, 0x10000, CRC(f3afd65d) SHA1(51daefd8685b49c464130b9e7d93e31cfdda724e) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1648,7 +1645,7 @@ ROM_START( galaga88 )
ROM_LOAD_HS( "g81_v4.bin", 0x80000, 0x10000, CRC(ac0279a7) SHA1(8d25292eec9953516fc5d25a94e30acc8159b360) )
ROM_LOAD_HS( "g81_v5.bin", 0xa0000, 0x10000, CRC(014ddba1) SHA1(26590b77a0c386dc076a8f8eccf6244c7e5a1e10) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "g8_chr-8.bin", 0x00000, 0x20000, CRC(3862ed0a) SHA1(4cae42bbfa434c7dce63fdceaa569fcb28768420) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1693,7 +1690,7 @@ ROM_START( galaga88j )
ROM_LOAD_HS( "g81_v4.bin", 0x80000, 0x10000, CRC(ac0279a7) SHA1(8d25292eec9953516fc5d25a94e30acc8159b360) )
ROM_LOAD_HS( "g81_v5.bin", 0xa0000, 0x10000, CRC(014ddba1) SHA1(26590b77a0c386dc076a8f8eccf6244c7e5a1e10) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "g8_chr-8.bin", 0x00000, 0x20000, CRC(3862ed0a) SHA1(4cae42bbfa434c7dce63fdceaa569fcb28768420) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1738,7 +1735,7 @@ ROM_START( galaga88a )
ROM_LOAD_HS( "g81_v4.bin", 0x80000, 0x10000, CRC(ac0279a7) SHA1(8d25292eec9953516fc5d25a94e30acc8159b360) ) // 12-11-87
ROM_LOAD_HS( "g81_v5.bin", 0xa0000, 0x10000, CRC(014ddba1) SHA1(26590b77a0c386dc076a8f8eccf6244c7e5a1e10) ) // 12-11-87
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "g8_chr-8.bin", 0x00000, 0x20000, CRC(3862ed0a) SHA1(4cae42bbfa434c7dce63fdceaa569fcb28768420) ) // 12-11-87
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1746,7 +1743,7 @@ ROM_START( galaga88a )
ROM_LOAD( "g8_chr-1.bin", 0x20000, 0x20000, CRC(3dc0f93f) SHA1(0db9f37cf6e06013b402df23e615b0ab0d32b9ee) ) // 12-11-87
ROM_LOAD( "g8_chr-2.bin", 0x40000, 0x20000, CRC(dbf26f1f) SHA1(e52723647a8fe6db0b9c5e11c02486b20a549506) ) // 12-11-87
ROM_LOAD( "g8_chr-3.bin", 0x60000, 0x20000, CRC(f5d6cac5) SHA1(3d098b8219de4a7729ec95547eebff17c9b505b9) ) // 12-11-87
ROM_LOAD( "g8chr-7.m8", 0xe0000, 0x20000, CRC(5f655016) SHA1(f6f1fa26dad363f1b50995fd1c52db0671365d83) ) // 10-27-87 (present, but not used by this version? possibly leftover from earlier development)
ROM_LOAD( "g8chr-7.m8", 0xe0000, 0x20000, CRC(5f655016) SHA1(f6f1fa26dad363f1b50995fd1c52db0671365d83) ) // 10-27-87 (present, but not used by this version? possibly leftover from earlier development)
ROM_REGION( 0x100000, "gfx3", 0 ) /* sprites */
ROM_LOAD( "g8_obj-0.bin", 0x00000, 0x20000, CRC(d7112e3f) SHA1(476f9e1b636b257e517fc789508dac923d05ef67) ) // 12-11-87
@ -1781,7 +1778,7 @@ ROM_START( ws )
ROM_LOAD_HS( "ws1_voi0.bin", 0x00000, 0x10000, CRC(f6949199) SHA1(ef596b02060f8e58eac37765663dd16377244391) )
ROM_LOAD( "ws_voi-1.bin", 0x20000, 0x20000, CRC(210e2af9) SHA1(f8a1f8c6b9fbb8a9b3f298674600c1fbb9c5840e) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "ws_chr-8.bin", 0x00000, 0x20000, CRC(d1897b9b) SHA1(29906614b879e5623b49bc925e80006aee3997b9) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1822,7 +1819,7 @@ ROM_START( berabohm )
ROM_LOAD( "bm_voi-1.bin", 0x20000, 0x20000, CRC(be9ce0a8) SHA1(a211216125615cb14e515317f56976c4ebe13f5f) )
ROM_LOAD_HS( "bm1_v2.bin", 0x40000, 0x10000, CRC(41225d04) SHA1(a670c5ce63ff1d2ed94aa5ea17cb2c91eb768f14) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "bm_chr-8.bin", 0x00000, 0x20000, CRC(92860e95) SHA1(d8c8d5aed956c876809f287700f33bc70a1b58a3) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1866,7 +1863,7 @@ ROM_START( berabohmb )
ROM_LOAD( "bm_voi-1.bin", 0x20000, 0x20000, CRC(be9ce0a8) SHA1(a211216125615cb14e515317f56976c4ebe13f5f) )
ROM_LOAD_HS( "bm1_v2.bin", 0x40000, 0x10000, CRC(41225d04) SHA1(a670c5ce63ff1d2ed94aa5ea17cb2c91eb768f14) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "bm_chr-8.bin", 0x00000, 0x20000, CRC(92860e95) SHA1(d8c8d5aed956c876809f287700f33bc70a1b58a3) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1911,7 +1908,7 @@ ROM_START( mmaze )
ROM_LOAD( "mm_voi-0.bin", 0x00000, 0x20000, CRC(ee974cff) SHA1(f211c461a36dae9ce5ee614aaaabf92556181a85) )
ROM_LOAD( "mm_voi-1.bin", 0x20000, 0x20000, CRC(d09b5830) SHA1(954be797e30f7d126b4fc2b04f190bfd7dc23bff) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "mm_chr-8.bin", 0x00000, 0x20000, CRC(a3784dfe) SHA1(7bcd71e0c675cd16587b61c23b470abb8ba434d3) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1954,7 +1951,7 @@ ROM_START( mmaze2 )
ROM_LOAD( "mm_voi-0.bin", 0x00000, 0x20000, CRC(ee974cff) SHA1(f211c461a36dae9ce5ee614aaaabf92556181a85) )
ROM_LOAD( "mm_voi-1.bin", 0x20000, 0x20000, CRC(d09b5830) SHA1(954be797e30f7d126b4fc2b04f190bfd7dc23bff) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "mm_chr-8.bin", 0x00000, 0x20000, CRC(a3784dfe) SHA1(7bcd71e0c675cd16587b61c23b470abb8ba434d3) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -1996,7 +1993,7 @@ ROM_START( bakutotu )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "bk1_v0.bin", 0x00000, 0x10000, CRC(008e290e) SHA1(87ac7291088f0d6a7179b1a5f3567a72dc92177c) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "bk_chr-8.bin", 0x00000, 0x20000, CRC(6c8d4029) SHA1(2eb6fd89ffaecfa53f9adcdebbe8f550199d067f) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2041,7 +2038,7 @@ ROM_START( wldcourt )
ROM_LOAD_HS( "wc1_voi0.bin", 0x00000, 0x10000, CRC(b57919f7) SHA1(5305c479513943a5d92988a63ad1671744e944b5) )
ROM_LOAD( "wc1_voi1.bin", 0x20000, 0x20000, CRC(97974b4b) SHA1(1e4d10ce28cabc01f1f233a0edc05e20874e0285) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "wc1_chr8.bin", 0x00000, 0x20000, CRC(23e1c399) SHA1(2d22da5c68c0924767f18fb19576cb76a016ae8e) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2204,7 +2201,7 @@ ROM_START( splatter )
ROM_LOAD( "sh_voi-2.bin", 0x40000, 0x20000, CRC(25ea75b6) SHA1(aafebbdddf4a2924d9e5a850ffb6861cb5c4a769) )
ROM_LOAD( "sh_voi-3.bin", 0x60000, 0x20000, CRC(5eebcdb4) SHA1(973e95a49cb1dda14e4c61580501c997fc7bc015) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "sh_chr-8.bin", 0x00000, 0x20000, CRC(321f483b) SHA1(84d75367d2e3ae210ecd17c163b336f609628a91) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2250,7 +2247,7 @@ ROM_START( splatter2 )
ROM_LOAD( "sh_voi-2.bin", 0x40000, 0x20000, CRC(25ea75b6) SHA1(aafebbdddf4a2924d9e5a850ffb6861cb5c4a769) )
ROM_LOAD( "sh_voi-3.bin", 0x60000, 0x20000, CRC(5eebcdb4) SHA1(973e95a49cb1dda14e4c61580501c997fc7bc015) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "sh_chr-8.bin", 0x00000, 0x20000, CRC(321f483b) SHA1(84d75367d2e3ae210ecd17c163b336f609628a91) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2296,7 +2293,7 @@ ROM_START( splatterj )
ROM_LOAD( "sh_voi-2.bin", 0x40000, 0x20000, CRC(25ea75b6) SHA1(aafebbdddf4a2924d9e5a850ffb6861cb5c4a769) )
ROM_LOAD( "sh_voi-3.bin", 0x60000, 0x20000, CRC(5eebcdb4) SHA1(973e95a49cb1dda14e4c61580501c997fc7bc015) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "sh_chr-8.bin", 0x00000, 0x20000, CRC(321f483b) SHA1(84d75367d2e3ae210ecd17c163b336f609628a91) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2340,7 +2337,7 @@ ROM_START( faceoff )
ROM_LOAD_HS( "fo1_v0.bin", 0x00000, 0x10000, CRC(e6edf63e) SHA1(095f7fa93233e4b4f25e728868c212170be48550) )
ROM_LOAD_HS( "fo1_v1.bin", 0x20000, 0x10000, CRC(132a5d90) SHA1(d5ceae68d7aea7cdde43600453f9724f35834519) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "fo1_c8.bin", 0x00000, 0x10000, CRC(d397216c) SHA1(baa3747bf3e12246e2629eaf0abdb3df05e423bd) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2378,7 +2375,7 @@ ROM_START( rompers )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD( "rp_voi-0.bin", 0x00000, 0x20000, CRC(11caef7e) SHA1(c6470cbbc6402872794e0a4e822a5d08ca2448ef) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "rp1_chr8.bin", 0x00000, 0x10000, CRC(69cfe46a) SHA1(01c5af1b7fc337ec06a5afabd87b9a6a7dcf3503) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2418,7 +2415,7 @@ ROM_START( romperso )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD( "rp_voi-0.bin", 0x00000, 0x20000, CRC(11caef7e) SHA1(c6470cbbc6402872794e0a4e822a5d08ca2448ef) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "rp1_chr8.bin", 0x00000, 0x10000, CRC(69cfe46a) SHA1(01c5af1b7fc337ec06a5afabd87b9a6a7dcf3503) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2461,7 +2458,7 @@ ROM_START( blastoff )
ROM_LOAD( "bo_voi-1.bin", 0x20000, 0x20000, CRC(0308b18e) SHA1(7196abdf36d660089d739e3f3a362648768a6127) )
ROM_LOAD( "bo_voi-2.bin", 0x40000, 0x20000, CRC(88cab230) SHA1(659c4efeb8aa24f8b32509ee563407ed1e17d564) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "bo_chr-8.bin", 0x00000, 0x20000, CRC(e8b5f2d4) SHA1(70dd2898dcfed5f43f6c50f852660f24a9d7ec9d) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2504,7 +2501,7 @@ ROM_START( ws89 )
ROM_LOAD_HS( "ws1_voi0.bin", 0x00000, 0x10000, CRC(f6949199) SHA1(ef596b02060f8e58eac37765663dd16377244391) )
ROM_LOAD( "ws_voi-1.bin", 0x20000, 0x20000, CRC(210e2af9) SHA1(f8a1f8c6b9fbb8a9b3f298674600c1fbb9c5840e) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "ws_chr-8.bin", 0x00000, 0x20000, CRC(d1897b9b) SHA1(29906614b879e5623b49bc925e80006aee3997b9) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2543,7 +2540,7 @@ ROM_START( dangseed )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD( "dr_voi-0.bin", 0x00000, 0x20000, CRC(de4fdc0e) SHA1(b5e952aaf5a81a2b4ff1c7cae141d50360545770) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "dr_chr-8.bin", 0x00000, 0x20000, CRC(0fbaa10e) SHA1(18ea77544678d889aded927a96a11bc04ad42fa6) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2584,7 +2581,7 @@ ROM_START( ws90 )
ROM_LOAD_HS( "ws1_voi0.bin", 0x00000, 0x10000, CRC(f6949199) SHA1(ef596b02060f8e58eac37765663dd16377244391) )
ROM_LOAD( "ws_voi-1.bin", 0x20000, 0x20000, CRC(210e2af9) SHA1(f8a1f8c6b9fbb8a9b3f298674600c1fbb9c5840e) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "ws_chr-8.bin", 0x00000, 0x20000, CRC(d1897b9b) SHA1(29906614b879e5623b49bc925e80006aee3997b9) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2625,7 +2622,7 @@ ROM_START( pistoldm )
ROM_LOAD( "pd_voi-1.bin", 0x20000, 0x20000, CRC(2871c494) SHA1(9ac0dc559c22ac5083025c32f28e353b04348155) )
ROM_LOAD( "pd_voi-2.bin", 0x40000, 0x20000, CRC(e783f0c4) SHA1(6a43f22226d1637d507c8194244058e8d96f8692) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "pd_chr-8.bin", 0x00000, 0x20000, CRC(a5f516db) SHA1(262c3a99cfa3061b58331d8ed254b49a06bfdd9f) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2666,7 +2663,7 @@ ROM_START( boxyboy )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "sb1_voi0.bin", 0x00000, 0x10000, CRC(63d9cedf) SHA1(117767c6b25325bf3005756d74196da56008498c) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "sb1_chr8.bin", 0x00000, 0x10000, CRC(5692b297) SHA1(ed20a0f4ce80674d01cd2a30571ffeff9f9066fd) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2699,7 +2696,7 @@ ROM_START( soukobdx )
ROM_REGION( 0xc0000, "voice", 0 ) /* MCU external ROM */
ROM_LOAD_HS( "sb1_voi0.bin", 0x00000, 0x10000, CRC(63d9cedf) SHA1(117767c6b25325bf3005756d74196da56008498c) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "sb1_chr8.bin", 0x00000, 0x10000, CRC(5692b297) SHA1(ed20a0f4ce80674d01cd2a30571ffeff9f9066fd) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2732,7 +2729,7 @@ ROM_START( puzlclub )
ROM_REGION( 0xc0000, "voice", ROMREGION_ERASEFF ) /* MCU external ROM */
/* no voices */
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "pc1-c8.bin", 0x00000, 0x20000, CRC(4e196bcd) SHA1(2e27538bbbebeda32353c0c02f98d52f0d1994f9) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2772,7 +2769,7 @@ ROM_START( tankfrce )
ROM_LOAD( "tf1_voi0.bin", 0x00000, 0x20000, CRC(f542676a) SHA1(38d54db0807c58152bd120c393bf63b68754e8ff) )
ROM_LOAD( "tf1_voi1.bin", 0x20000, 0x20000, CRC(615d09cd) SHA1(0aecf7ca6b65ddfcdcf74f8d412169ec800ba3a3) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "tf1_chr8.bin", 0x00000, 0x20000, CRC(7d53b31e) SHA1(7e4b5fc92f7956477392f1e14c6edfc0cada2be0) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2810,7 +2807,7 @@ ROM_START( tankfrce4 )
ROM_LOAD( "tf1_voi0.bin", 0x00000, 0x20000, CRC(f542676a) SHA1(38d54db0807c58152bd120c393bf63b68754e8ff) )
ROM_LOAD( "tf1_voi1.bin", 0x20000, 0x20000, CRC(615d09cd) SHA1(0aecf7ca6b65ddfcdcf74f8d412169ec800ba3a3) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "tf1_chr8.bin", 0x00000, 0x20000, CRC(7d53b31e) SHA1(7e4b5fc92f7956477392f1e14c6edfc0cada2be0) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */
@ -2848,7 +2845,7 @@ ROM_START( tankfrcej )
ROM_LOAD( "tf1_voi0.bin", 0x00000, 0x20000, CRC(f542676a) SHA1(38d54db0807c58152bd120c393bf63b68754e8ff) )
ROM_LOAD( "tf1_voi1.bin", 0x20000, 0x20000, CRC(615d09cd) SHA1(0aecf7ca6b65ddfcdcf74f8d412169ec800ba3a3) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* character mask */
ROM_REGION( 0x20000, "tmap_mask", 0 ) /* character mask */
ROM_LOAD( "tf1_chr8.bin", 0x00000, 0x20000, CRC(7d53b31e) SHA1(7e4b5fc92f7956477392f1e14c6edfc0cada2be0) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* characters */

File diff suppressed because it is too large Load Diff

View File

@ -316,7 +316,7 @@ public:
m_palette(*this, "palette"),
m_screen(*this, "screen"),
m_audiobank(*this, "audiobank"),
m_mpDualPortRAM(*this,"mpdualportram"),
m_dpram(*this, "dpram"),
m_gpu_intc(*this, "gpu_intc"),
m_namcos21_3d(*this, "namcos21_3d"),
m_namcos21_dsp(*this, "namcos21dsp")
@ -339,7 +339,7 @@ private:
required_device<palette_device> m_palette;
required_device<screen_device> m_screen;
required_memory_bank m_audiobank;
required_shared_ptr<uint8_t> m_mpDualPortRAM;
required_shared_ptr<uint8_t> m_dpram;
required_device<namco_c148_device> m_gpu_intc;
required_device<namcos21_3d_device> m_namcos21_3d;
required_device<namcos21_dsp_device> m_namcos21_dsp;
@ -351,13 +351,13 @@ private:
uint16_t m_winrun_color;
uint16_t m_winrun_gpu_register[0x10/2];
DECLARE_READ16_MEMBER(namcos21_video_enable_r);
DECLARE_WRITE16_MEMBER(namcos21_video_enable_w);
DECLARE_READ16_MEMBER(video_enable_r);
DECLARE_WRITE16_MEMBER(video_enable_w);
DECLARE_READ16_MEMBER(namcos2_68k_dualportram_word_r);
DECLARE_WRITE16_MEMBER(namcos2_68k_dualportram_word_w);
DECLARE_READ8_MEMBER(namcos2_dualportram_byte_r);
DECLARE_WRITE8_MEMBER(namcos2_dualportram_byte_w);
DECLARE_READ16_MEMBER(dpram_word_r);
DECLARE_WRITE16_MEMBER(dpram_word_w);
DECLARE_READ8_MEMBER(dpram_byte_r);
DECLARE_WRITE8_MEMBER(dpram_byte_w);
DECLARE_READ16_MEMBER(winrun_gpu_color_r);
DECLARE_WRITE16_MEMBER(winrun_gpu_color_w);
@ -366,10 +366,10 @@ private:
DECLARE_WRITE16_MEMBER(winrun_gpu_videoram_w);
DECLARE_READ16_MEMBER(winrun_gpu_videoram_r);
DECLARE_WRITE8_MEMBER( namcos2_68k_eeprom_w );
DECLARE_READ8_MEMBER( namcos2_68k_eeprom_r );
DECLARE_WRITE8_MEMBER(eeprom_w);
DECLARE_READ8_MEMBER(eeprom_r);
DECLARE_WRITE8_MEMBER( namcos2_sound_bankselect_w );
DECLARE_WRITE8_MEMBER(sound_bankselect_w);
DECLARE_WRITE8_MEMBER(sound_reset_w);
DECLARE_WRITE8_MEMBER(system_reset_w);
@ -379,17 +379,14 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER(screen_scanline);
DECLARE_MACHINE_START(namcos21);
DECLARE_MACHINE_RESET(namcos21);
virtual void machine_start() override;
virtual void machine_reset() override;
uint32_t screen_update_namcos21(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_winrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_driveyes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void winrun_bitmap_draw(bitmap_ind16 &bitmap, const rectangle &cliprect);
void configure_c65_namcos21(machine_config &config);
void configure_c68_namcos21(machine_config &config);
void winrun_master_map(address_map &map);
void winrun_slave_map(address_map &map);
@ -475,7 +472,7 @@ void namcos21_state::winrun_bitmap_draw(bitmap_ind16 &bitmap, const rectangle &c
}
uint32_t namcos21_state::screen_update_winrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t namcos21_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0xff, cliprect );
@ -490,17 +487,17 @@ uint32_t namcos21_state::screen_update_winrun(screen_device &screen, bitmap_ind1
READ16_MEMBER(namcos21_state::namcos21_video_enable_r)
READ16_MEMBER(namcos21_state::video_enable_r)
{
return m_video_enable;
}
WRITE16_MEMBER(namcos21_state::namcos21_video_enable_w)
WRITE16_MEMBER(namcos21_state::video_enable_w)
{
COMBINE_DATA( &m_video_enable ); /* 0x40 = enable */
if( m_video_enable!=0 && m_video_enable!=0x40 )
{
logerror( "unexpected namcos21_video_enable_w=0x%x\n", m_video_enable );
logerror( "unexpected video_enable_w=0x%x\n", m_video_enable );
}
}
@ -508,27 +505,27 @@ WRITE16_MEMBER(namcos21_state::namcos21_video_enable_w)
/* dual port ram memory handlers */
READ16_MEMBER(namcos21_state::namcos2_68k_dualportram_word_r)
READ16_MEMBER(namcos21_state::dpram_word_r)
{
return m_mpDualPortRAM[offset];
return m_dpram[offset];
}
WRITE16_MEMBER(namcos21_state::namcos2_68k_dualportram_word_w)
WRITE16_MEMBER(namcos21_state::dpram_word_w)
{
if( ACCESSING_BITS_0_7 )
{
m_mpDualPortRAM[offset] = data&0xff;
m_dpram[offset] = data&0xff;
}
}
READ8_MEMBER(namcos21_state::namcos2_dualportram_byte_r)
READ8_MEMBER(namcos21_state::dpram_byte_r)
{
return m_mpDualPortRAM[offset];
return m_dpram[offset];
}
WRITE8_MEMBER(namcos21_state::namcos2_dualportram_byte_w)
WRITE8_MEMBER(namcos21_state::dpram_byte_w)
{
m_mpDualPortRAM[offset] = data;
m_dpram[offset] = data;
}
/******************************************************************************/
@ -537,7 +534,7 @@ void namcos21_state::winrun_master_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */
map(0x180000, 0x183fff).rw(FUNC(namcos21_state::namcos2_68k_eeprom_r), FUNC(namcos21_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
map(0x180000, 0x183fff).rw(FUNC(namcos21_state::eeprom_r), FUNC(namcos21_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
// DSP Related
@ -552,7 +549,7 @@ void namcos21_state::winrun_master_map(address_map &map)
map(0x600000, 0x60ffff).ram().share("gpu_comram");
map(0x800000, 0x87ffff).rom().region("data", 0);
map(0x900000, 0x90ffff).ram().share("sharedram");
map(0xa00000, 0xa00fff).rw(FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w));
map(0xa00000, 0xa00fff).rw(FUNC(namcos21_state::dpram_word_r), FUNC(namcos21_state::dpram_word_w));
map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
}
@ -565,7 +562,7 @@ void namcos21_state::winrun_slave_map(address_map &map)
map(0x600000, 0x60ffff).ram().share("gpu_comram");
map(0x800000, 0x87ffff).rom().region("data", 0);
map(0x900000, 0x90ffff).ram().share("sharedram");
map(0xa00000, 0xa00fff).rw(FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w));
map(0xa00000, 0xa00fff).rw(FUNC(namcos21_state::dpram_word_r), FUNC(namcos21_state::dpram_word_w));
map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
}
@ -597,12 +594,12 @@ void namcos21_state::sound_map(address_map &map)
map(0x3000, 0x3003).nopw(); /* ? */
map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x5000, 0x6fff).rw(m_c140, FUNC(c140_device::c140_r), FUNC(c140_device::c140_w));
map(0x7000, 0x77ff).rw(FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)).share("mpdualportram");
map(0x7800, 0x7fff).rw(FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)); /* mirror */
map(0x7000, 0x77ff).rw(FUNC(namcos21_state::dpram_byte_r), FUNC(namcos21_state::dpram_byte_w)).share("dpram");
map(0x7800, 0x7fff).rw(FUNC(namcos21_state::dpram_byte_r), FUNC(namcos21_state::dpram_byte_w)); /* mirror */
map(0x8000, 0x9fff).ram();
map(0xa000, 0xbfff).nopw(); /* amplifier enable on 1st write */
map(0xc000, 0xffff).nopw(); /* avoid debug log noise; games write frequently to 0xe000 */
map(0xc000, 0xc001).w(FUNC(namcos21_state::namcos2_sound_bankselect_w));
map(0xc000, 0xc001).w(FUNC(namcos21_state::sound_bankselect_w));
map(0xd001, 0xd001).nopw(); /* watchdog */
map(0xd000, 0xffff).rom().region("audiocpu", 0x01000);
}
@ -631,8 +628,8 @@ void namcos21_state::configure_c65_namcos21(machine_config &config)
m_c65->an5_in_cb().set_ioport("AN5");
m_c65->an6_in_cb().set_ioport("AN6");
m_c65->an7_in_cb().set_ioport("AN7");
m_c65->dp_in_callback().set(FUNC(namcos21_state::namcos2_dualportram_byte_r));
m_c65->dp_out_callback().set(FUNC(namcos21_state::namcos2_dualportram_byte_w));
m_c65->dp_in_callback().set(FUNC(namcos21_state::dpram_byte_r));
m_c65->dp_out_callback().set(FUNC(namcos21_state::dpram_byte_w));
}
/*************************************************************/
@ -765,7 +762,7 @@ static INPUT_PORTS_START( winrungp )
PORT_DIPSETTING( 0x00, "4M" )
INPUT_PORTS_END
WRITE8_MEMBER( namcos21_state::namcos2_sound_bankselect_w )
WRITE8_MEMBER( namcos21_state::sound_bankselect_w )
{
m_audiobank->set_entry(data>>4);
}
@ -799,22 +796,20 @@ void namcos21_state::reset_all_subcpus(int state)
m_c65->ext_reset(state);
}
WRITE8_MEMBER(namcos21_state::namcos2_68k_eeprom_w)
WRITE8_MEMBER(namcos21_state::eeprom_w)
{
m_eeprom[offset] = data;
}
READ8_MEMBER(namcos21_state::namcos2_68k_eeprom_r)
READ8_MEMBER(namcos21_state::eeprom_r)
{
return m_eeprom[offset];
}
MACHINE_RESET_MEMBER(namcos21_state, namcos21)
void namcos21_state::machine_reset()
{
address_space &audio_space = m_audiocpu->space(AS_PROGRAM);
/* Initialise the bank select in the sound CPU */
namcos2_sound_bankselect_w(audio_space, 0, 0); /* Page in bank 0 */
m_audiobank->set_entry(0); /* Page in bank 0 */
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE );
@ -824,7 +819,7 @@ MACHINE_RESET_MEMBER(namcos21_state, namcos21)
MACHINE_START_MEMBER(namcos21_state,namcos21)
void namcos21_state::machine_start()
{
m_eeprom = std::make_unique<uint8_t[]>(0x2000);
subdevice<nvram_device>("nvram")->set_base(m_eeprom.get(), 0x2000);
@ -833,7 +828,6 @@ MACHINE_START_MEMBER(namcos21_state,namcos21)
for (int i = 0; i < 0x10; i++)
m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000);
m_audiobank->set_entry(0);
}
TIMER_DEVICE_CALLBACK_MEMBER(namcos21_state::screen_scanline)
@ -892,13 +886,11 @@ MACHINE_CONFIG_START(namcos21_state::winrun)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
MCFG_MACHINE_START_OVERRIDE(namcos21_state,namcos21)
MCFG_MACHINE_RESET_OVERRIDE(namcos21_state,namcos21)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS_NAMCO480I
MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update_winrun)
MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", NAMCOS21_NUM_COLORS)

View File

@ -269,6 +269,7 @@ Namco System 21 Video Hardware
#include "video/namcos21_3d.h"
#include "sound/c140.h"
#include "sound/ym2151.h"
#include "emupal.h"
// TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
#define MCFG_SCREEN_RAW_PARAMS_NAMCO480I \
@ -295,7 +296,7 @@ public:
m_palette(*this, "palette"),
m_screen(*this, "screen"),
m_audiobank(*this, "audiobank"),
m_mpDualPortRAM(*this,"mpdualportram"),
m_dpram(*this, "dpram"),
m_namcos21_3d(*this, "namcos21_3d"),
m_namcos21_dsp_c67(*this, "namcos21dsp_c67")
{ }
@ -322,24 +323,24 @@ private:
required_device<palette_device> m_palette;
required_device<screen_device> m_screen;
required_memory_bank m_audiobank;
required_shared_ptr<uint8_t> m_mpDualPortRAM;
required_shared_ptr<uint8_t> m_dpram;
required_device<namcos21_3d_device> m_namcos21_3d;
required_device<namcos21_dsp_c67_device> m_namcos21_dsp_c67;
uint16_t m_video_enable;
DECLARE_READ16_MEMBER(namcos21_video_enable_r);
DECLARE_WRITE16_MEMBER(namcos21_video_enable_w);
DECLARE_READ16_MEMBER(video_enable_r);
DECLARE_WRITE16_MEMBER(video_enable_w);
DECLARE_READ16_MEMBER(namcos2_68k_dualportram_word_r);
DECLARE_WRITE16_MEMBER(namcos2_68k_dualportram_word_w);
DECLARE_READ8_MEMBER(namcos2_dualportram_byte_r);
DECLARE_WRITE8_MEMBER(namcos2_dualportram_byte_w);
DECLARE_READ16_MEMBER(dpram_word_r);
DECLARE_WRITE16_MEMBER(dpram_word_w);
DECLARE_READ8_MEMBER(dpram_byte_r);
DECLARE_WRITE8_MEMBER(dpram_byte_w);
DECLARE_WRITE8_MEMBER( namcos2_68k_eeprom_w );
DECLARE_READ8_MEMBER( namcos2_68k_eeprom_r );
DECLARE_WRITE8_MEMBER(eeprom_w);
DECLARE_READ8_MEMBER(eeprom_r);
DECLARE_WRITE8_MEMBER( namcos2_sound_bankselect_w );
DECLARE_WRITE8_MEMBER(sound_bankselect_w);
DECLARE_WRITE8_MEMBER(sound_reset_w);
DECLARE_WRITE8_MEMBER(system_reset_w);
@ -351,10 +352,10 @@ private:
DECLARE_WRITE_LINE_MEMBER(yield_hack);
DECLARE_MACHINE_START(namcos21);
DECLARE_MACHINE_RESET(namcos21);
virtual void machine_start() override;
virtual void machine_reset() override;
uint32_t screen_update_namcos21(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void configure_c68_namcos21(machine_config &config);
@ -366,7 +367,7 @@ private:
};
uint32_t namcos21_c67_state::screen_update_namcos21(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t namcos21_c67_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
//uint8_t *videoram = m_gpu_videoram.get();
int pivot = 3;
@ -390,17 +391,17 @@ uint32_t namcos21_c67_state::screen_update_namcos21(screen_device &screen, bitma
return 0;
}
READ16_MEMBER(namcos21_c67_state::namcos21_video_enable_r)
READ16_MEMBER(namcos21_c67_state::video_enable_r)
{
return m_video_enable;
}
WRITE16_MEMBER(namcos21_c67_state::namcos21_video_enable_w)
WRITE16_MEMBER(namcos21_c67_state::video_enable_w)
{
COMBINE_DATA( &m_video_enable ); /* 0x40 = enable */
if( m_video_enable!=0 && m_video_enable!=0x40 )
{
logerror( "unexpected namcos21_video_enable_w=0x%x\n", m_video_enable );
logerror( "unexpected video_enable_w=0x%x\n", m_video_enable );
}
}
@ -408,27 +409,27 @@ WRITE16_MEMBER(namcos21_c67_state::namcos21_video_enable_w)
/* dual port ram memory handlers */
READ16_MEMBER(namcos21_c67_state::namcos2_68k_dualportram_word_r)
READ16_MEMBER(namcos21_c67_state::dpram_word_r)
{
return m_mpDualPortRAM[offset];
return m_dpram[offset];
}
WRITE16_MEMBER(namcos21_c67_state::namcos2_68k_dualportram_word_w)
WRITE16_MEMBER(namcos21_c67_state::dpram_word_w)
{
if( ACCESSING_BITS_0_7 )
{
m_mpDualPortRAM[offset] = data&0xff;
m_dpram[offset] = data&0xff;
}
}
READ8_MEMBER(namcos21_c67_state::namcos2_dualportram_byte_r)
READ8_MEMBER(namcos21_c67_state::dpram_byte_r)
{
return m_mpDualPortRAM[offset];
return m_dpram[offset];
}
WRITE8_MEMBER(namcos21_c67_state::namcos2_dualportram_byte_w)
WRITE8_MEMBER(namcos21_c67_state::dpram_byte_w)
{
m_mpDualPortRAM[offset] = data;
m_dpram[offset] = data;
}
/******************************************************************************/
@ -448,10 +449,10 @@ void namcos21_c67_state::common_map(address_map &map)
map(0x720000, 0x720007).rw(m_c355spr, FUNC(namco_c355spr_device::position_r), FUNC(namco_c355spr_device::position_w));
map(0x740000, 0x74ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x750000, 0x75ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext");
map(0x760000, 0x760001).rw(FUNC(namcos21_c67_state::namcos21_video_enable_r), FUNC(namcos21_c67_state::namcos21_video_enable_w));
map(0x760000, 0x760001).rw(FUNC(namcos21_c67_state::video_enable_r), FUNC(namcos21_c67_state::video_enable_w));
map(0x800000, 0x8fffff).rom().region("data", 0);
map(0x900000, 0x90ffff).ram().share("sharedram");
map(0xa00000, 0xa00fff).rw(FUNC(namcos21_c67_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_c67_state::namcos2_68k_dualportram_word_w));
map(0xa00000, 0xa00fff).rw(FUNC(namcos21_c67_state::dpram_word_r), FUNC(namcos21_c67_state::dpram_word_w));
map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
map(0xc00000, 0xcfffff).rom().mirror(0x100000).region("edata", 0);
@ -462,7 +463,7 @@ void namcos21_c67_state::master_map(address_map &map)
common_map(map);
map(0x000000, 0x0fffff).rom();
map(0x100000, 0x10ffff).ram(); /* private work RAM */
map(0x180000, 0x183fff).rw(FUNC(namcos21_c67_state::namcos2_68k_eeprom_r), FUNC(namcos21_c67_state::namcos2_68k_eeprom_w)).umask16(0x00ff);
map(0x180000, 0x183fff).rw(FUNC(namcos21_c67_state::eeprom_r), FUNC(namcos21_c67_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
map(0x200000, 0x20ffff).rw(m_namcos21_dsp_c67, FUNC(namcos21_dsp_c67_device::dspram16_r), FUNC(namcos21_dsp_c67_device::dspram16_hack_w));
}
@ -486,12 +487,12 @@ void namcos21_c67_state::sound_map(address_map &map)
map(0x3000, 0x3003).nopw(); /* ? */
map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x5000, 0x6fff).rw(m_c140, FUNC(c140_device::c140_r), FUNC(c140_device::c140_w));
map(0x7000, 0x77ff).rw(FUNC(namcos21_c67_state::namcos2_dualportram_byte_r), FUNC(namcos21_c67_state::namcos2_dualportram_byte_w)).share("mpdualportram");
map(0x7800, 0x7fff).rw(FUNC(namcos21_c67_state::namcos2_dualportram_byte_r), FUNC(namcos21_c67_state::namcos2_dualportram_byte_w)); /* mirror */
map(0x7000, 0x77ff).rw(FUNC(namcos21_c67_state::dpram_byte_r), FUNC(namcos21_c67_state::dpram_byte_w)).share("dpram");
map(0x7800, 0x7fff).rw(FUNC(namcos21_c67_state::dpram_byte_r), FUNC(namcos21_c67_state::dpram_byte_w)); /* mirror */
map(0x8000, 0x9fff).ram();
map(0xa000, 0xbfff).nopw(); /* amplifier enable on 1st write */
map(0xc000, 0xffff).nopw(); /* avoid debug log noise; games write frequently to 0xe000 */
map(0xc000, 0xc001).w(FUNC(namcos21_c67_state::namcos2_sound_bankselect_w));
map(0xc000, 0xc001).w(FUNC(namcos21_c67_state::sound_bankselect_w));
map(0xd001, 0xd001).nopw(); /* watchdog */
map(0xd000, 0xffff).rom().region("audiocpu", 0x01000);
}
@ -519,8 +520,8 @@ void namcos21_c67_state::configure_c68_namcos21(machine_config &config)
m_c68->an5_in_cb().set_ioport("AN5");
m_c68->an6_in_cb().set_ioport("AN6");
m_c68->an7_in_cb().set_ioport("AN7");
m_c68->dp_in_callback().set(FUNC(namcos21_c67_state::namcos2_dualportram_byte_r));
m_c68->dp_out_callback().set(FUNC(namcos21_c67_state::namcos2_dualportram_byte_w));
m_c68->dp_in_callback().set(FUNC(namcos21_c67_state::dpram_byte_r));
m_c68->dp_out_callback().set(FUNC(namcos21_c67_state::dpram_byte_w));
}
/*************************************************************/
@ -709,7 +710,7 @@ static GFXDECODE_START( gfx_namcos21 )
GFXDECODE_END
WRITE8_MEMBER( namcos21_c67_state::namcos2_sound_bankselect_w )
WRITE8_MEMBER( namcos21_c67_state::sound_bankselect_w )
{
m_audiobank->set_entry(data>>4);
}
@ -750,22 +751,20 @@ void namcos21_c67_state::reset_all_subcpus(int state)
m_namcos21_dsp_c67->reset_dsps(state);
}
WRITE8_MEMBER(namcos21_c67_state::namcos2_68k_eeprom_w)
WRITE8_MEMBER(namcos21_c67_state::eeprom_w)
{
m_eeprom[offset] = data;
}
READ8_MEMBER(namcos21_c67_state::namcos2_68k_eeprom_r)
READ8_MEMBER(namcos21_c67_state::eeprom_r)
{
return m_eeprom[offset];
}
MACHINE_RESET_MEMBER(namcos21_c67_state, namcos21)
void namcos21_c67_state::machine_reset()
{
address_space &audio_space = m_audiocpu->space(AS_PROGRAM);
/* Initialise the bank select in the sound CPU */
namcos2_sound_bankselect_w(audio_space, 0, 0); /* Page in bank 0 */
m_audiobank->set_entry(0); /* Page in bank 0 */
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE );
@ -775,7 +774,7 @@ MACHINE_RESET_MEMBER(namcos21_c67_state, namcos21)
MACHINE_START_MEMBER(namcos21_c67_state,namcos21)
void namcos21_c67_state::machine_start()
{
m_eeprom = std::make_unique<uint8_t[]>(0x2000);
subdevice<nvram_device>("nvram")->set_base(m_eeprom.get(), 0x2000);
@ -784,8 +783,6 @@ MACHINE_START_MEMBER(namcos21_c67_state,namcos21)
for (int i = 0; i < 0x10; i++)
m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000);
m_audiobank->set_entry(0);
}
TIMER_DEVICE_CALLBACK_MEMBER(namcos21_c67_state::screen_scanline)
@ -833,13 +830,11 @@ MACHINE_CONFIG_START(namcos21_c67_state::namcos21)
MCFG_QUANTUM_TIME(attotime::from_hz(12000))
MCFG_MACHINE_START_OVERRIDE(namcos21_c67_state,namcos21)
MCFG_MACHINE_RESET_OVERRIDE(namcos21_c67_state,namcos21)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS_NAMCO480I
MCFG_SCREEN_UPDATE_DRIVER(namcos21_c67_state, screen_update_namcos21)
MCFG_SCREEN_UPDATE_DRIVER(namcos21_c67_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
NAMCOS21_3D(config, m_namcos21_3d, 0);
@ -855,7 +850,7 @@ MACHINE_CONFIG_START(namcos21_c67_state::namcos21)
MCFG_PALETTE_FORMAT(XBRG)
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_palette_tag("palette");
m_c355spr->set_screen(m_screen);
m_c355spr->set_gfxdecode_tag("gfxdecode");
m_c355spr->set_is_namcofl(false);
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());

View File

@ -46,6 +46,7 @@ Driver's Eyes works,
#include "video/namcos21_3d.h"
#include "sound/ym2151.h"
#include "sound/c140.h"
#include "emupal.h"
// TODO: basic parameters to get 60.606060 Hz, x2 is for interlace
#define MCFG_SCREEN_RAW_PARAMS_NAMCO480I \
@ -88,24 +89,24 @@ private:
required_device<palette_device> m_palette;
required_device<screen_device> m_screen;
required_memory_bank m_audiobank;
required_shared_ptr<uint8_t> m_mpDualPortRAM;
required_shared_ptr<uint8_t> m_dpram;
required_device<namcos21_3d_device> m_namcos21_3d;
required_device<namcos21_dsp_device> m_namcos21_dsp;
uint16_t m_video_enable;
DECLARE_READ16_MEMBER(namcos21_video_enable_r);
DECLARE_WRITE16_MEMBER(namcos21_video_enable_w);
DECLARE_READ16_MEMBER(video_enable_r);
DECLARE_WRITE16_MEMBER(video_enable_w);
DECLARE_READ16_MEMBER(namcos2_68k_dualportram_word_r);
DECLARE_WRITE16_MEMBER(namcos2_68k_dualportram_word_w);
DECLARE_READ8_MEMBER(namcos2_dualportram_byte_r);
DECLARE_WRITE8_MEMBER(namcos2_dualportram_byte_w);
DECLARE_READ16_MEMBER(dpram_word_r);
DECLARE_WRITE16_MEMBER(dpram_word_w);
DECLARE_READ8_MEMBER(dpram_byte_r);
DECLARE_WRITE8_MEMBER(dpram_byte_w);
DECLARE_WRITE8_MEMBER( namcos2_68k_eeprom_w );
DECLARE_READ8_MEMBER( namcos2_68k_eeprom_r );
DECLARE_WRITE8_MEMBER(eeprom_w);
DECLARE_READ8_MEMBER(eeprom_r);
DECLARE_WRITE8_MEMBER( namcos2_sound_bankselect_w );
DECLARE_WRITE8_MEMBER(sound_bankselect_w);
DECLARE_WRITE8_MEMBER(sound_reset_w);
DECLARE_WRITE8_MEMBER(system_reset_w);
@ -115,7 +116,7 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER(screen_scanline);
uint32_t screen_update_driveyes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void configure_c68_namcos21(machine_config &config);
@ -144,7 +145,7 @@ namco_de_pcbstack_device::namco_de_pcbstack_device(const machine_config &mconfig
m_palette(*this, "palette"),
m_screen(*this, "screen"),
m_audiobank(*this, "audiobank"),
m_mpDualPortRAM(*this, "mpdualportram"),
m_dpram(*this, "dpram"),
m_namcos21_3d(*this, "namcos21_3d"),
m_namcos21_dsp(*this, "namcos21dsp")
{}
@ -208,7 +209,7 @@ MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS_NAMCO480I
MCFG_SCREEN_UPDATE_DRIVER(namco_de_pcbstack_device, screen_update_driveyes)
MCFG_SCREEN_UPDATE_DRIVER(namco_de_pcbstack_device, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos21)
@ -222,7 +223,7 @@ MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig)
m_namcos21_3d->set_framebuffer_size(496,480);
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_palette_tag("palette");
m_c355spr->set_screen(m_screen);
m_c355spr->set_gfxdecode_tag("gfxdecode");
m_c355spr->set_is_namcofl(false);
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
@ -243,7 +244,7 @@ MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig)
MACHINE_CONFIG_END
uint32_t namco_de_pcbstack_device::screen_update_driveyes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t namco_de_pcbstack_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
//uint8_t *videoram = m_gpu_videoram.get();
int pivot = 3;
@ -271,17 +272,17 @@ uint32_t namco_de_pcbstack_device::screen_update_driveyes(screen_device &screen,
}
READ16_MEMBER(namco_de_pcbstack_device::namcos21_video_enable_r)
READ16_MEMBER(namco_de_pcbstack_device::video_enable_r)
{
return m_video_enable;
}
WRITE16_MEMBER(namco_de_pcbstack_device::namcos21_video_enable_w)
WRITE16_MEMBER(namco_de_pcbstack_device::video_enable_w)
{
COMBINE_DATA( &m_video_enable ); /* 0x40 = enable */
if( m_video_enable!=0 && m_video_enable!=0x40 )
{
logerror( "unexpected namcos21_video_enable_w=0x%x\n", m_video_enable );
logerror( "unexpected video_enable_w=0x%x\n", m_video_enable );
}
}
@ -289,27 +290,27 @@ WRITE16_MEMBER(namco_de_pcbstack_device::namcos21_video_enable_w)
/* dual port ram memory handlers */
READ16_MEMBER(namco_de_pcbstack_device::namcos2_68k_dualportram_word_r)
READ16_MEMBER(namco_de_pcbstack_device::dpram_word_r)
{
return m_mpDualPortRAM[offset];
return m_dpram[offset];
}
WRITE16_MEMBER(namco_de_pcbstack_device::namcos2_68k_dualportram_word_w)
WRITE16_MEMBER(namco_de_pcbstack_device::dpram_word_w)
{
if( ACCESSING_BITS_0_7 )
{
m_mpDualPortRAM[offset] = data&0xff;
m_dpram[offset] = data&0xff;
}
}
READ8_MEMBER(namco_de_pcbstack_device::namcos2_dualportram_byte_r)
READ8_MEMBER(namco_de_pcbstack_device::dpram_byte_r)
{
return m_mpDualPortRAM[offset];
return m_dpram[offset];
}
WRITE8_MEMBER(namco_de_pcbstack_device::namcos2_dualportram_byte_w)
WRITE8_MEMBER(namco_de_pcbstack_device::dpram_byte_w)
{
m_mpDualPortRAM[offset] = data;
m_dpram[offset] = data;
}
/*************************************************************/
@ -322,12 +323,12 @@ void namco_de_pcbstack_device::sound_map(address_map &map)
map(0x3000, 0x3003).nopw(); /* ? */
map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x5000, 0x6fff).rw(m_c140, FUNC(c140_device::c140_r), FUNC(c140_device::c140_w));
map(0x7000, 0x77ff).rw(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_r), FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_w)).share("mpdualportram");
map(0x7800, 0x7fff).rw(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_r), FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_w)); /* mirror */
map(0x7000, 0x77ff).rw(FUNC(namco_de_pcbstack_device::dpram_byte_r), FUNC(namco_de_pcbstack_device::dpram_byte_w)).share("dpram");
map(0x7800, 0x7fff).rw(FUNC(namco_de_pcbstack_device::dpram_byte_r), FUNC(namco_de_pcbstack_device::dpram_byte_w)); /* mirror */
map(0x8000, 0x9fff).ram();
map(0xa000, 0xbfff).nopw(); /* amplifier enable on 1st write */
map(0xc000, 0xffff).nopw(); /* avoid debug log noise; games write frequently to 0xe000 */
map(0xc000, 0xc001).w(FUNC(namco_de_pcbstack_device::namcos2_sound_bankselect_w));
map(0xc000, 0xc001).w(FUNC(namco_de_pcbstack_device::sound_bankselect_w));
map(0xd001, 0xd001).nopw(); /* watchdog */
map(0xd000, 0xffff).rom().region("audiocpu", 0x01000);
}
@ -355,8 +356,8 @@ void namco_de_pcbstack_device::configure_c68_namcos21(machine_config &config)
m_c68->an5_in_cb().set_ioport("AN5");
m_c68->an6_in_cb().set_ioport("AN6");
m_c68->an7_in_cb().set_ioport("AN7");
m_c68->dp_in_callback().set(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_r));
m_c68->dp_out_callback().set(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_w));
m_c68->dp_in_callback().set(FUNC(namco_de_pcbstack_device::dpram_byte_r));
m_c68->dp_out_callback().set(FUNC(namco_de_pcbstack_device::dpram_byte_w));
}
/*************************************************************/
@ -370,10 +371,10 @@ void namco_de_pcbstack_device::driveyes_common_map(address_map &map)
map(0x720000, 0x720007).rw(m_c355spr, FUNC(namco_c355spr_device::position_r), FUNC(namco_c355spr_device::position_w));
map(0x740000, 0x74ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x750000, 0x75ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext");
map(0x760000, 0x760001).rw(FUNC(namco_de_pcbstack_device::namcos21_video_enable_r), FUNC(namco_de_pcbstack_device::namcos21_video_enable_w));
map(0x760000, 0x760001).rw(FUNC(namco_de_pcbstack_device::video_enable_r), FUNC(namco_de_pcbstack_device::video_enable_w));
map(0x800000, 0x8fffff).rom().region("data", 0);
map(0x900000, 0x90ffff).ram().share("sharedram");
map(0xa00000, 0xa00fff).rw(FUNC(namco_de_pcbstack_device::namcos2_68k_dualportram_word_r), FUNC(namco_de_pcbstack_device::namcos2_68k_dualportram_word_w));
map(0xa00000, 0xa00fff).rw(FUNC(namco_de_pcbstack_device::dpram_word_r), FUNC(namco_de_pcbstack_device::dpram_word_w));
map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map));
}
@ -383,7 +384,7 @@ void namco_de_pcbstack_device::driveyes_master_map(address_map &map)
driveyes_common_map(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* private work RAM */
map(0x180000, 0x183fff).rw(FUNC(namco_de_pcbstack_device::namcos2_68k_eeprom_r), FUNC(namco_de_pcbstack_device::namcos2_68k_eeprom_w)).umask16(0x00ff);
map(0x180000, 0x183fff).rw(FUNC(namco_de_pcbstack_device::eeprom_r), FUNC(namco_de_pcbstack_device::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
// DSP related
@ -403,7 +404,7 @@ void namco_de_pcbstack_device::driveyes_slave_map(address_map &map)
map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
}
WRITE8_MEMBER( namco_de_pcbstack_device::namcos2_sound_bankselect_w )
WRITE8_MEMBER( namco_de_pcbstack_device::sound_bankselect_w )
{
m_audiobank->set_entry(data>>4);
}
@ -437,12 +438,12 @@ void namco_de_pcbstack_device::reset_all_subcpus(int state)
m_c68->ext_reset(state);
}
WRITE8_MEMBER(namco_de_pcbstack_device::namcos2_68k_eeprom_w)
WRITE8_MEMBER(namco_de_pcbstack_device::eeprom_w)
{
m_eeprom[offset] = data;
}
READ8_MEMBER(namco_de_pcbstack_device::namcos2_68k_eeprom_r)
READ8_MEMBER(namco_de_pcbstack_device::eeprom_r)
{
return m_eeprom[offset];
}
@ -477,22 +478,16 @@ void namco_de_pcbstack_device::device_start()
m_eeprom = std::make_unique<uint8_t[]>(0x2000);
subdevice<nvram_device>("nvram")->set_base(m_eeprom.get(), 0x2000);
if (m_audiobank)
{
uint32_t max = memregion("audiocpu")->bytes() / 0x4000;
for (int i = 0; i < 0x10; i++)
m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000);
uint32_t max = memregion("audiocpu")->bytes() / 0x4000;
for (int i = 0; i < 0x10; i++)
m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000);
m_audiobank->set_entry(0);
}
}
void namco_de_pcbstack_device::device_reset()
{
address_space &audio_space = m_audiocpu->space(AS_PROGRAM);
/* Initialise the bank select in the sound CPU */
namcos2_sound_bankselect_w(audio_space, 0, 0); /* Page in bank 0 */
m_audiobank->set_entry(0); /* Page in bank 0 */
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE );

View File

@ -7,21 +7,14 @@
#include "video/namco_c116.h"
#include "video/namco_c169roz.h"
#include "video/namco_c355spr.h"
#include "emupal.h"
#define NAMCOFL_HTOTAL (288) /* wrong */
#define NAMCOFL_HBSTART (288)
#define NAMCOFL_VTOTAL (262) /* needs to be checked */
#define NAMCOFL_VBSTART (224)
#define NAMCOFL_TILEMASKREGION "tilemask"
#define NAMCOFL_TILEGFXREGION "tile"
#define NAMCOFL_SPRITEGFXREGION "sprite"
#define NAMCOFL_ROTMASKREGION "rotmask"
#define NAMCOFL_ROTGFXREGION "rot"
#define NAMCOFL_TILEGFX 0
#define NAMCOFL_SPRITEGFX 1
#define NAMCOFL_ROTGFX 2
#define NAMCOFL_SPRITEGFX 0
class namcofl_state : public driver_device
{
@ -29,7 +22,6 @@ public:
namcofl_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_palette(*this, "palette"),
m_c116(*this, "c116"),
m_screen(*this, "screen"),
m_c123tmap(*this, "c123tmap"),
@ -52,7 +44,6 @@ public:
private:
required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
required_device<namco_c116_device> m_c116;
required_device<screen_device> m_screen;
required_device<namco_c123tmap_device> m_c123tmap;

View File

@ -14,20 +14,7 @@
#include "video/namco_c123tmap.h"
#include "video/namco_c169roz.h"
#define NAMCONB1_HTOTAL (288) /* wrong */
#define NAMCONB1_HBSTART (288)
#define NAMCONB1_VTOTAL (262) /* needs to be checked */
#define NAMCONB1_VBSTART (224)
#define NAMCONB1_TILEMASKREGION "tilemask"
#define NAMCONB1_TILEGFXREGION "tile"
#define NAMCONB1_SPRITEGFXREGION "sprite"
#define NAMCONB1_ROTMASKREGION "rotmask"
#define NAMCONB1_ROTGFXREGION "rot"
#define NAMCONB1_TILEGFX 0
#define NAMCONB1_SPRITEGFX 1
#define NAMCONB1_ROTGFX 2
#define NAMCONB1_SPRITEGFX 0
@ -38,7 +25,6 @@ public:
driver_device(mconfig, type, tag),
m_gametype(0),
m_maincpu(*this, "maincpu"),
m_palette(*this, "palette"),
m_c116(*this, "c116"),
m_c123tmap(*this, "c123tmap"),
m_c355spr(*this, "c355spr"),
@ -96,7 +82,6 @@ private:
};
required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
required_device<namco_c116_device> m_c116;
required_device<namco_c123tmap_device> m_c123tmap;
required_device<namco_c355spr_device> m_c355spr;

View File

@ -6,7 +6,6 @@
#include "sound/namco.h"
#include "video/namco_c116.h"
#include "machine/74157.h"
#include "emupal.h"
class namcos1_state : public driver_device
{
@ -22,12 +21,12 @@ public:
m_dac0(*this, "dac0"),
m_dac1(*this, "dac1"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_videoram(*this, "videoram"),
m_spriteram(*this, "spriteram"),
m_playfield_control(*this, "pfcontrol"),
m_triram(*this, "triram"),
m_rom(*this, "user1"),
m_tilemap_maskdata(*this, "tmap_mask"),
m_soundbank(*this, "soundbank"),
m_mcubank(*this, "mcubank"),
m_io_dipsw(*this, "DIPSW"),
@ -70,13 +69,13 @@ private:
required_device<dac_8bit_r2r_device> m_dac0;
required_device<dac_8bit_r2r_device> m_dac1;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<uint8_t> m_playfield_control;
required_shared_ptr<uint8_t> m_triram;
required_region_ptr<uint8_t> m_rom;
required_region_ptr<uint8_t> m_tilemap_maskdata;
required_memory_bank m_soundbank;
required_memory_bank m_mcubank;
@ -102,7 +101,6 @@ private:
int m_strobe_count;
int m_stored_input[2];
tilemap_t *m_bg_tilemap[6];
uint8_t *m_tilemap_maskdata;
int m_copy_sprites;
uint8_t m_drawmode_table[16];
@ -135,12 +133,7 @@ private:
virtual void video_start() override;
void driver_init() override;
TILE_GET_INFO_MEMBER(bg_get_info0);
TILE_GET_INFO_MEMBER(bg_get_info1);
TILE_GET_INFO_MEMBER(bg_get_info2);
TILE_GET_INFO_MEMBER(bg_get_info3);
TILE_GET_INFO_MEMBER(fg_get_info4);
TILE_GET_INFO_MEMBER(fg_get_info5);
template <int Offset> TILE_GET_INFO_MEMBER(get_tile_info);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@ -152,6 +145,4 @@ private:
void sound_map(address_map &map);
void sub_map(address_map &map);
void virtual_map(address_map &map);
inline void get_tile_info(tile_data &tileinfo,int tile_index,uint8_t *info_vram);
};

View File

@ -25,7 +25,6 @@
#include "video/namco_c123tmap.h"
#include "video/namcos2_sprite.h"
#include "video/namcos2_roz.h"
#include "emupal.h"
#include "screen.h"
/*********************************************/
@ -53,7 +52,6 @@ public:
m_sci(*this, "sci"),
m_c169roz(*this, "c169roz"),
m_c355spr(*this, "c355spr"),
m_palette(*this, "palette"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_audiobank(*this, "audiobank"),
@ -163,22 +161,21 @@ enum
int m_gametype;
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_slave;
optional_device<cpu_device> m_audiocpu;
required_device<cpu_device> m_slave;
required_device<cpu_device> m_audiocpu;
optional_device<namcoc65_device> m_c65;
optional_device<namcoc68_device> m_c68;
optional_device<c140_device> m_c140;
optional_device<namco_c116_device> m_c116;
optional_device<namco_c123tmap_device> m_c123tmap;
optional_device<namco_c148_device> m_master_intc;
optional_device<namco_c148_device> m_slave_intc;
optional_device<namco_c139_device> m_sci;
required_device<c140_device> m_c140;
required_device<namco_c116_device> m_c116;
required_device<namco_c123tmap_device> m_c123tmap;
required_device<namco_c148_device> m_master_intc;
required_device<namco_c148_device> m_slave_intc;
required_device<namco_c139_device> m_sci;
optional_device<namco_c169roz_device> m_c169roz;
optional_device<namco_c355spr_device> m_c355spr;
required_device<palette_device> m_palette;
optional_device<gfxdecode_device> m_gfxdecode;
optional_device<screen_device> m_screen;
optional_memory_bank m_audiobank;
required_device<screen_device> m_screen;
required_memory_bank m_audiobank;
std::unique_ptr<uint8_t[]> m_eeprom;
@ -187,18 +184,16 @@ enum
DECLARE_READ8_MEMBER(dpram_byte_r);
DECLARE_WRITE8_MEMBER(dpram_byte_w);
DECLARE_WRITE8_MEMBER( namcos2_68k_eeprom_w );
DECLARE_READ8_MEMBER( namcos2_68k_eeprom_r );
DECLARE_WRITE8_MEMBER(eeprom_w);
DECLARE_READ8_MEMBER(eeprom_r);
DECLARE_WRITE8_MEMBER( namcos2_sound_bankselect_w );
DECLARE_WRITE8_MEMBER(sound_bankselect_w);
DECLARE_WRITE8_MEMBER(sound_reset_w);
DECLARE_WRITE8_MEMBER(system_reset_w);
void reset_all_subcpus(int state);
virtual void video_start() override;
void video_start_finallap();
void video_start_finalap2();
void video_start_luckywld();
void video_start_metlhawk();
void video_start_sgunner();
@ -214,8 +209,8 @@ enum
DECLARE_READ16_MEMBER( gfx_ctrl_r );
DECLARE_WRITE16_MEMBER( gfx_ctrl_w );
DECLARE_MACHINE_START(namcos2);
DECLARE_MACHINE_RESET(namcos2);
virtual void machine_start() override;
virtual void machine_reset() override;
void create_shadow_table();
void apply_clip( rectangle &clip, const rectangle &cliprect );
@ -282,16 +277,4 @@ enum
#define NAMCOS2_C148_SERIRQ 6 /* 0x1cc000 */
#define NAMCOS2_C148_VBLANKIRQ 7 /* 0x1ce000 */
/**************************************************************/
/* MASTER CPU RAM MEMORY */
/**************************************************************/
#define NAMCOS2_68K_MASTER_RAM "bank3"
/**************************************************************/
/* SLAVE CPU RAM MEMORY */
/**************************************************************/
#define NAMCOS2_68K_SLAVE_RAM "bank4"
#endif // MAME_INCLUDES_NAMCOS2_H

View File

@ -71,28 +71,24 @@ READ16_MEMBER( namcos2_state::namcos2_finallap_prot_r )
// S2 copy
MACHINE_START_MEMBER(namcos2_state,namcos2)
void namcos2_state::machine_start()
{
m_eeprom = std::make_unique<uint8_t[]>(0x2000);
subdevice<nvram_device>("nvram")->set_base(m_eeprom.get(), 0x2000);
if (m_audiobank)
{
uint32_t max = memregion("audiocpu")->bytes() / 0x4000;
for (int i = 0; i < 0x10; i++)
m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000);
uint32_t max = memregion("audiocpu")->bytes() / 0x4000;
for (int i = 0; i < 0x10; i++)
m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000);
m_audiobank->set_entry(0);
}
}
MACHINE_RESET_MEMBER(namcos2_state, namcos2)
void namcos2_state::machine_reset()
{
// address_space &space = m_maincpu->space(AS_PROGRAM);
address_space &audio_space = m_audiocpu->space(AS_PROGRAM);
// address_space &audio_space = m_audiocpu->space(AS_PROGRAM);
/* Initialise the bank select in the sound CPU */
namcos2_sound_bankselect_w(audio_space, 0, 0); /* Page in bank 0 */
m_audiobank->set_entry(0); /* Page in bank 0 */
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE );
@ -145,12 +141,12 @@ WRITE8_MEMBER(namcos2_state::system_reset_w)
/* EEPROM Load/Save and read/write handling */
/*************************************************************/
WRITE8_MEMBER( namcos2_state::namcos2_68k_eeprom_w )
WRITE8_MEMBER( namcos2_state::eeprom_w )
{
m_eeprom[offset] = data;
}
READ8_MEMBER( namcos2_state::namcos2_68k_eeprom_r )
READ8_MEMBER( namcos2_state::eeprom_r )
{
return m_eeprom[offset];
}
@ -397,7 +393,7 @@ WRITE16_MEMBER( namcos2_state::namcos2_68k_key_w )
/* Sound sub-system */
/**************************************************************/
WRITE8_MEMBER( namcos2_state::namcos2_sound_bankselect_w )
WRITE8_MEMBER( namcos2_state::sound_bankselect_w )
{
m_audiobank->set_entry(data>>4);
}

View File

@ -68,6 +68,8 @@ i960 CPU, needs to write its clip and raster values byteswapped.
#include "emu.h"
#include "video/namco_c116.h"
#include <algorithm>
DEFINE_DEVICE_TYPE(NAMCO_C116, namco_c116_device, "namco_c116", "Namco C116 Video Controller")
//-------------------------------------------------
@ -75,9 +77,10 @@ DEFINE_DEVICE_TYPE(NAMCO_C116, namco_c116_device, "namco_c116", "Namco C116 Vide
//-------------------------------------------------
namco_c116_device::namco_c116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, NAMCO_C116, tag, owner, clock),
device_gfx_interface(mconfig, *this),
device_video_interface(mconfig, *this)
: device_t(mconfig, NAMCO_C116, tag, owner, clock)
, device_palette_interface(mconfig, *this)
, device_video_interface(mconfig, *this)
, m_enable_shadows(false)
{
}
@ -91,7 +94,7 @@ void namco_c116_device::device_start()
m_ram_r.resize(0x2000);
m_ram_g.resize(0x2000);
m_ram_b.resize(0x2000);
memset(m_regs, 0, sizeof(m_regs));
std::fill(std::begin(m_regs), std::end(m_regs), 0);
save_item(NAME(m_ram_r));
save_item(NAME(m_ram_g));
@ -175,5 +178,5 @@ WRITE8_MEMBER(namco_c116_device::write)
}
int color = ((offset & 0x6000) >> 2) | (offset & 0x7ff);
RAM[color] = data;
palette().set_pen_color(color,m_ram_r[color],m_ram_g[color],m_ram_b[color]);
set_pen_color(color,m_ram_r[color],m_ram_g[color],m_ram_b[color]);
}

View File

@ -13,13 +13,16 @@
class namco_c116_device :
public device_t,
public device_gfx_interface,
public device_palette_interface,
public device_video_interface
{
public:
//construction/destruction
namco_c116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
void enable_shadows() { m_enable_shadows = true; }
//read/write handlers
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@ -31,12 +34,17 @@ protected:
// device-level overrides
virtual void device_start() override;
// device_palette_interface overrides
virtual uint32_t palette_entries() const override { return 0x2000; }
virtual bool palette_shadows_enabled() const override { return m_enable_shadows; }
private:
// internal state
std::vector<uint8_t> m_ram_r;
std::vector<uint8_t> m_ram_g;
std::vector<uint8_t> m_ram_b;
uint16_t m_regs[8];
bool m_enable_shadows; // are shadows enabled?
};
DECLARE_DEVICE_TYPE(NAMCO_C116, namco_c116_device)

View File

@ -17,30 +17,44 @@
#include "emu.h"
#include "namco_c123tmap.h"
static const gfx_layout layout =
{
8,8,
RGN_FRAC(1,1),
8,
{ STEP8(0,1) },
{ STEP8(0,8) },
{ STEP8(0,8*8) },
8*8*8
};
GFXDECODE_START( namco_c123tmap_device::gfxinfo )
GFXDECODE_DEVICE( DEVICE_SELF, 0, layout, 0, 32 )
GFXDECODE_END
DEFINE_DEVICE_TYPE(NAMCO_C123TMAP, namco_c123tmap_device, "namco_c123tmap", "Namco C123 (4x + 2x Tilemaps)")
namco_c123tmap_device::namco_c123tmap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, NAMCO_C123TMAP, tag, owner, clock),
m_gfxdecode(*this, finder_base::DUMMY_TAG),
m_maskregion(*this, finder_base::DUMMY_TAG)
device_gfx_interface(mconfig, *this, gfxinfo),
m_color_base(0),
m_mask(*this, "mask")
{
}
void namco_c123tmap_device::device_start()
{
m_tilemapinfo.maskBaseAddr = m_maskregion->base();
m_tilemapinfo.videoram = std::make_unique<uint16_t[]>(0x10000);
/* four scrolling tilemaps */
m_tilemapinfo.tmap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x0000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemapinfo.tmap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x1000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemapinfo.tmap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x2000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemapinfo.tmap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x3000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemapinfo.tmap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x0000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemapinfo.tmap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x1000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemapinfo.tmap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x2000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemapinfo.tmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x3000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
/* two non-scrolling tilemaps */
m_tilemapinfo.tmap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x4008>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28);
m_tilemapinfo.tmap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x4408>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28);
m_tilemapinfo.tmap[4] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x4008>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28);
m_tilemapinfo.tmap[5] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x4408>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28);
/* define offsets for scrolling */
for (int i = 0; i < 4; i++)
@ -51,7 +65,6 @@ void namco_c123tmap_device::device_start()
m_tilemapinfo.tmap[i]->set_scrolldy(-24, 224 + 24);
}
save_item(NAME(m_tilemapinfo.control));
save_pointer(NAME(m_tilemapinfo.videoram), 0x10000);
}
@ -72,19 +85,19 @@ TILE_GET_INFO_MEMBER(namco_c123tmap_device::get_tile_info)
const uint16_t *vram = &m_tilemapinfo.videoram[Offset];
int tile, mask;
m_tilemapinfo.cb(vram[tile_index], &tile, &mask);
tileinfo.mask_data = m_tilemapinfo.maskBaseAddr + mask * 8;
SET_TILE_INFO_MEMBER(m_tilemapinfo.gfxbank, tile, 0, 0);
tileinfo.mask_data = m_mask + mask * 8;
SET_TILE_INFO_MEMBER(0, tile, 0, 0);
} /* get_tile_info */
void namco_c123tmap_device::draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri)
{
for (int i = 0; i < 6; i++)
{
/* note: priority is only in range 0..7, but Point Blank uses 0xf to hide a layer */
if ((m_tilemapinfo.control[0x20 / 2 + i] & 0xf) == pri)
// bit 3 : disable layer
if ((m_tilemapinfo.control[0x20 / 2 + i] & 0x7) == pri)
{
int color = m_tilemapinfo.control[0x30 / 2 + i] & 0x07;
m_tilemapinfo.tmap[i]->set_palette_offset(color * 256);
m_tilemapinfo.tmap[i]->set_palette_offset(color * 256 + m_color_base);
m_tilemapinfo.tmap[i]->draw(screen, bitmap, cliprect, 0, 0);
}
}
@ -137,6 +150,10 @@ void namco_c123tmap_device::set_tilemap_control(int offset, uint16_t newword)
}
}
}
else if (offset <= 0x2a / 2)
{
m_tilemapinfo.tmap[offset & 7]->enable(BIT(~newword, 3));
}
newword &= 0x1ff;
if (m_tilemapinfo.control[0x02 / 2] & 0x8000)
{

View File

@ -7,17 +7,14 @@
#pragma once
#include "screen.h"
#include "emupal.h"
class namco_c123tmap_device : public device_t
class namco_c123tmap_device : public device_t, public device_gfx_interface
{
public:
// construction/destruction
namco_c123tmap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); }
template <typename T> void set_maskregion_tag(T &&tag) { m_maskregion.set_tag(std::forward<T>(tag)); }
void set_gfxregion(int region) { m_tilemapinfo.gfxbank = region; }
void set_color_base(int color) { m_color_base = color; }
typedef delegate<void(uint16_t, int*, int*)> c123_tilemap_delegate;
void set_tile_callback(c123_tilemap_delegate tilemap_cb) { m_tilemapinfo.cb = tilemap_cb; }
@ -56,15 +53,14 @@ private:
*/
tilemap_t *tmap[6];
std::unique_ptr<uint16_t[]> videoram;
int gfxbank;
uint8_t *maskBaseAddr;
c123_tilemap_delegate cb;
};
info m_tilemapinfo;
DECLARE_GFXDECODE_MEMBER(gfxinfo);
required_device<gfxdecode_device> m_gfxdecode;
required_memory_region m_maskregion;
int m_color_base;
required_region_ptr<uint8_t> m_mask;
};
// device type definition

View File

@ -19,32 +19,44 @@
#include "emu.h"
#include "namco_c169roz.h"
static const gfx_layout layout =
{
16,16,
RGN_FRAC(1,1),
8,
{ STEP8(0,1) },
{ STEP16(0,8) },
{ STEP16(0,8*16) },
16*128
};
GFXDECODE_START( namco_c169roz_device::gfxinfo )
GFXDECODE_DEVICE( DEVICE_SELF, 0, layout, 0, 32 )
GFXDECODE_END
DEFINE_DEVICE_TYPE(NAMCO_C169ROZ, namco_c169roz_device, "namco_c169roz", "Namco C169 (ROZ)")
namco_c169roz_device::namco_c169roz_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, NAMCO_C169ROZ, tag, owner, clock),
m_gfx_region(0),
m_mask(nullptr),
device_gfx_interface(mconfig, *this, gfxinfo),
m_color_base(0),
m_is_namcofl(false),
m_gfxdecode(*this, finder_base::DUMMY_TAG),
m_maskregion(*this, finder_base::DUMMY_TAG)
m_mask(*this, "mask")
{
}
void namco_c169roz_device::device_start()
{
m_mask = m_maskregion->base();
m_videoram.resize(m_ramsize);
std::fill(std::begin(m_videoram), std::end(m_videoram), 0x0000);
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode,
m_tilemap[0] = &machine().tilemap().create(*this,
tilemap_get_info_delegate(FUNC(namco_c169roz_device::get_info<0>), this),
tilemap_mapper_delegate(FUNC(namco_c169roz_device::mapper), this),
16, 16,
256, 256);
m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode,
m_tilemap[1] = &machine().tilemap().create(*this,
tilemap_get_info_delegate(FUNC(namco_c169roz_device::get_info<1>), this),
tilemap_mapper_delegate(FUNC(namco_c169roz_device::mapper), this),
16, 16,
@ -73,7 +85,7 @@ TILE_GET_INFO_MEMBER(namco_c169roz_device::get_info)
m_c169_cb(m_videoram[tile_index&(m_ramsize-1)] & 0x3fff, &tile, &mask, Which); // need to mask with ramsize because the nb1/fl games have twice as much RAM, presumably the tilemaps mirror in ns2?
tileinfo.mask_data = m_mask + 32 * mask;
SET_TILE_INFO_MEMBER(m_gfx_region, tile, 0/*color*/, 0/*flag*/);
SET_TILE_INFO_MEMBER(0, tile, 0/*color*/, 0/*flag*/);
}
TILEMAP_MAPPER_MEMBER( namco_c169roz_device::mapper )
@ -160,7 +172,7 @@ void namco_c169roz_device::draw_helper(screen_device &screen, bitmap_ind16 &bitm
uint32_t xpos = (((cx >> 16) & size_mask) + params.left) & 0xfff;
uint32_t ypos = (((cy >> 16) & size_mask) + params.top) & 0xfff;
if (flagsbitmap.pix(ypos, xpos) & TILEMAP_PIXEL_LAYER0)
*dest = srcbitmap.pix(ypos, xpos) + params.color;
*dest = srcbitmap.pix(ypos, xpos) + params.color + m_color_base;
cx += params.incxx;
cy += params.incxy;
x++;
@ -173,7 +185,7 @@ void namco_c169roz_device::draw_helper(screen_device &screen, bitmap_ind16 &bitm
}
else
{
tmap.set_palette_offset(params.color);
tmap.set_palette_offset(m_color_base + params.color);
tmap.draw_roz(
screen,
bitmap,

View File

@ -7,17 +7,15 @@
#pragma once
class namco_c169roz_device : public device_t
class namco_c169roz_device : public device_t, public device_gfx_interface
{
public:
// construction/destruction
namco_c169roz_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); }
void set_is_namcofl(bool state) { m_is_namcofl = state; }
void set_ram_words(uint32_t size) { m_ramsize = size; }
template <typename T> void set_maskregion_tag(T &&tag) { m_maskregion.set_tag(std::forward<T>(tag)); }
void set_gfxregion(int region) { m_gfx_region = region; }
void set_color_base(int color) { m_color_base = color; }
DECLARE_READ16_MEMBER( control_r );
DECLARE_WRITE16_MEMBER( control_w );
@ -56,15 +54,14 @@ private:
tilemap_t *m_tilemap[ROZ_TILEMAP_COUNT];
uint16_t m_control[0x20/2];
std::vector<uint16_t> m_videoram;
int m_gfx_region;
uint8_t *m_mask;
int m_color_base;
DECLARE_GFXDECODE_MEMBER(gfxinfo);
uint32_t m_ramsize;
// per-game hacks
bool m_is_namcofl;
required_device<gfxdecode_device> m_gfxdecode;
required_memory_region m_maskregion;
required_region_ptr<uint8_t> m_mask;
};
// device type definition

View File

@ -19,11 +19,12 @@ DEFINE_DEVICE_TYPE(NAMCO_C355SPR, namco_c355spr_device, "namco_c355spr", "Namco
namco_c355spr_device::namco_c355spr_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, NAMCO_C355SPR, tag, owner, clock),
device_video_interface(mconfig, *this),
m_gfx_region(0),
m_palxor(0),
m_is_namcofl(false),
m_gfxdecode(*this, finder_base::DUMMY_TAG),
m_palette(*this, finder_base::DUMMY_TAG)
m_buffer(0),
m_gfxdecode(*this, finder_base::DUMMY_TAG)
{
}
@ -39,10 +40,11 @@ void namco_c355spr_device::zdrawgfxzoom(
if (!scalex || !scaley) return;
if (dest_bmp.bpp() == 16)
{
if( gfx )
if (gfx)
{
int shadow_offset = (m_palette->shadows_enabled())?m_palette->entries():0;
const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
device_palette_interface &palette = m_gfxdecode->palette();
int shadow_offset = (palette.shadows_enabled())?palette.entries():0;
const pen_t *pal = &palette.pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const uint8_t *source_base = gfx->get_data(code % gfx->elements());
int sprite_screen_height = (scaley*gfx->height()+0x8000)>>16;
int sprite_screen_width = (scalex*gfx->width()+0x8000)>>16;
@ -58,7 +60,7 @@ void namco_c355spr_device::zdrawgfxzoom(
int x_index_base;
int y_index;
if( flipx )
if (flipx)
{
x_index_base = (sprite_screen_width-1)*dx;
dx = -dx;
@ -68,7 +70,7 @@ void namco_c355spr_device::zdrawgfxzoom(
x_index_base = 0;
}
if( flipy )
if (flipy)
{
y_index = (sprite_screen_height-1)*dy;
dy = -dy;
@ -78,51 +80,51 @@ void namco_c355spr_device::zdrawgfxzoom(
y_index = 0;
}
if( sx < clip.min_x)
if (sx < clip.min_x)
{ /* clip left */
int pixels = clip.min_x-sx;
sx += pixels;
x_index_base += pixels*dx;
}
if( sy < clip.min_y )
if (sy < clip.min_y)
{ /* clip top */
int pixels = clip.min_y-sy;
sy += pixels;
y_index += pixels*dy;
}
if( ex > clip.max_x+1 )
if (ex > clip.max_x+1)
{ /* clip right */
int pixels = ex-clip.max_x-1;
ex -= pixels;
}
if( ey > clip.max_y+1 )
if (ey > clip.max_y+1)
{ /* clip bottom */
int pixels = ey-clip.max_y-1;
ey -= pixels;
}
if( ex>sx )
if (ex>sx)
{ /* skip if inner loop doesn't draw anything */
int y;
bitmap_ind8 &priority_bitmap = screen.priority();
if( priority_bitmap.valid() )
if (priority_bitmap.valid())
{
for( y=sy; y<ey; y++ )
for (y = sy; y < ey; y++)
{
const uint8_t *source = source_base + (y_index>>16) * gfx->rowbytes();
uint16_t *dest = &dest_bmp.pix16(y);
uint8_t *pri = &priority_bitmap.pix8(y);
int x, x_index = x_index_base;
if( m_palxor )
if (m_palxor)
{
for( x=sx; x<ex; x++ )
for (x = sx; x < ex; x++)
{
int c = source[x_index>>16];
if( c != 0xff )
if (c != 0xff)
{
if( pri[x]<=zpos )
if (pri[x] <= zpos)
{
switch( c )
switch (c)
{
case 0:
dest[x] = 0x4000|(dest[x]&0x1fff);
@ -143,14 +145,14 @@ void namco_c355spr_device::zdrawgfxzoom(
}
else
{
for( x=sx; x<ex; x++ )
for (x = sx; x < ex; x++)
{
int c = source[x_index>>16];
if( c != 0xff )
if (c != 0xff)
{
if( pri[x]<=zpos )
if (pri[x] <= zpos )
{
if( color == 0xf && c==0xfe && shadow_offset )
if (color == 0xf && c == 0xfe && shadow_offset)
{
dest[x] |= shadow_offset;
}
@ -184,11 +186,15 @@ void namco_c355spr_device::zdrawgfxzoom(
void namco_c355spr_device::device_start()
{
//m_spriteram.resize(m_ramsize);
std::fill(std::begin(m_spriteram), std::end(m_spriteram), 0x0000); // needed for Nebulas Ray
std::fill(std::begin(m_position), std::end(m_position), 0x0000);
for (int i = 0; i < 2; i++)
{
m_spritelist[i] = auto_alloc_array(machine(), struct c355_sprite, 0x100);
m_sprite_end[i] = m_spritelist[i];
m_spriteram[i].resize(0x20000/2, 0);
save_item(NAME(m_spriteram[i]), i);
}
save_item(NAME(m_spriteram));
save_item(NAME(m_position));
}
@ -216,17 +222,15 @@ READ16_MEMBER( namco_c355spr_device::position_r )
* 0x10000 sprite attr (page1)
* 0x14000 sprite list (page1)
*/
template<class _BitmapClass>
void namco_c355spr_device::draw_sprite(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, const uint16_t *pSource, int pri, int zpos )
void namco_c355spr_device::get_single_sprite(const uint16_t *pSource, struct c355_sprite *sprite_ptr)
{
uint16_t *spriteram16 = m_spriteram;
uint16_t *spriteram16 = &m_spriteram[std::max(0, m_buffer - 1)][0];
unsigned screen_height_remaining, screen_width_remaining;
unsigned source_height_remaining, source_width_remaining;
int hpos,vpos;
uint16_t hsize,vsize;
uint16_t palette;
uint16_t linkno;
uint16_t offset;
uint16_t format;
int tile_index;
int num_cols,num_rows;
@ -239,7 +243,6 @@ void namco_c355spr_device::draw_sprite(screen_device &screen, _BitmapClass &bitm
int tile_screen_height;
const uint16_t *spriteformat16 = &spriteram16[0x4000/2];
const uint16_t *spritetile16 = &spriteram16[0x8000/2];
int color;
const uint16_t *pWinAttr;
rectangle clip;
int xscroll, yscroll;
@ -250,34 +253,35 @@ void namco_c355spr_device::draw_sprite(screen_device &screen, _BitmapClass &bitm
* ------------xxxx palette select
*/
palette = pSource[6];
if( pri != ((palette>>4)&0xf) )
{
return;
}
sprite_ptr->pri = ((palette>>4)&0xf);
linkno = pSource[0]; /* LINKNO */
offset = pSource[1]; /* OFFSET */
hpos = pSource[2]; /* HPOS 0x000..0x7ff (signed) */
vpos = pSource[3]; /* VPOS 0x000..0x7ff (signed) */
hsize = pSource[4]; /* HSIZE max 0x3ff pixels */
vsize = pSource[5]; /* VSIZE max 0x3ff pixels */
linkno = pSource[0]; /* LINKNO */
sprite_ptr->offset = pSource[1]; /* OFFSET */
hpos = pSource[2]; /* HPOS 0x000..0x7ff (signed) */
vpos = pSource[3]; /* VPOS 0x000..0x7ff (signed) */
hsize = pSource[4]; /* HSIZE max 0x3ff pixels */
vsize = pSource[5]; /* VSIZE max 0x3ff pixels */
/* pSource[6] contains priority/palette */
/* pSource[7] is used in Lucky & Wild, possibly for sprite-road priority */
if( linkno*4>=0x4000/2 ) return; /* avoid garbage memory reads */
if (linkno*4>=0x4000/2) /* avoid garbage memory reads */
{
sprite_ptr->disable = true;
return;
}
xscroll = (int16_t)m_position[1];
yscroll = (int16_t)m_position[0];
// xscroll &= 0x3ff; if( xscroll & 0x200 ) xscroll |= ~0x3ff;
xscroll &= 0x1ff; if( xscroll & 0x100 ) xscroll |= ~0x1ff;
yscroll &= 0x1ff; if( yscroll & 0x100 ) yscroll |= ~0x1ff;
// xscroll &= 0x3ff; if (xscroll & 0x200 ) xscroll |= ~0x3ff;
xscroll &= 0x1ff; if (xscroll & 0x100 ) xscroll |= ~0x1ff;
yscroll &= 0x1ff; if (yscroll & 0x100 ) yscroll |= ~0x1ff;
if( bitmap.width() > 384 )
if (screen().height() > 384)
{ /* Medium Resolution: System21 adjust */
xscroll = (int16_t)m_position[1];
xscroll &= 0x3ff; if( xscroll & 0x200 ) xscroll |= ~0x3ff;
if( yscroll<0 )
xscroll &= 0x3ff; if (xscroll & 0x200) xscroll |= ~0x3ff;
if (yscroll<0)
{ /* solvalou */
yscroll += 0x20;
}
@ -299,9 +303,9 @@ void namco_c355spr_device::draw_sprite(screen_device &screen, _BitmapClass &bitm
vpos -= yscroll;
pWinAttr = &spriteram16[0x2400/2+((palette>>8)&0xf)*4];
clip.set(pWinAttr[0] - xscroll, pWinAttr[1] - xscroll, pWinAttr[2] - yscroll, pWinAttr[3] - yscroll);
clip &= cliprect;
hpos&=0x7ff; if( hpos&0x400 ) hpos |= ~0x7ff; /* sign extend */
vpos&=0x7ff; if( vpos&0x400 ) vpos |= ~0x7ff; /* sign extend */
sprite_ptr->clip = clip;
hpos&=0x7ff; if (hpos&0x400 ) hpos |= ~0x7ff; /* sign extend */
vpos&=0x7ff; if (vpos&0x400 ) vpos |= ~0x7ff; /* sign extend */
tile_index = spriteformat16[linkno*4+0];
format = spriteformat16[linkno*4+1];
@ -310,13 +314,17 @@ void namco_c355spr_device::draw_sprite(screen_device &screen, _BitmapClass &bitm
num_cols = (format>>4)&0xf;
num_rows = (format)&0xf;
if( num_cols == 0 ) num_cols = 0x10;
if (num_cols == 0) num_cols = 0x10;
flipx = (hsize&0x8000)?1:0;
hsize &= 0x3ff;//0x1ff;
if( hsize == 0 ) return;
if (hsize == 0)
{
sprite_ptr->disable = true;
return;
}
zoomx = (hsize<<16)/(num_cols*16);
dx = (dx*zoomx+0x8000)>>16;
if( flipx )
if (flipx)
{
hpos += dx;
}
@ -325,13 +333,17 @@ void namco_c355spr_device::draw_sprite(screen_device &screen, _BitmapClass &bitm
hpos -= dx;
}
if( num_rows == 0 ) num_rows = 0x10;
if (num_rows == 0) num_rows = 0x10;
flipy = (vsize&0x8000)?1:0;
vsize &= 0x3ff;
if( vsize == 0 ) return;
if (vsize == 0)
{
sprite_ptr->disable = true;
return;
}
zoomy = (vsize<<16)/(num_rows*16);
dy = (dy*zoomy+0x8000)>>16;
if( flipy )
if (flipy)
{
vpos += dy;
}
@ -340,52 +352,52 @@ void namco_c355spr_device::draw_sprite(screen_device &screen, _BitmapClass &bitm
vpos -= dy;
}
color = (palette&0xf)^m_palxor;
sprite_ptr->flipx = flipx;
sprite_ptr->flipy = flipy;
sprite_ptr->size = num_rows * num_cols;
sprite_ptr->color = (palette&0xf)^m_palxor;
source_height_remaining = num_rows*16;
screen_height_remaining = vsize;
sy = vpos;
for( row=0; row<num_rows; row++ )
int ind = 0;
for (row = 0; row < num_rows; row++)
{
tile_screen_height = 16*screen_height_remaining/source_height_remaining;
zoomy = (screen_height_remaining<<16)/source_height_remaining;
if( flipy )
if (flipy)
{
sy -= tile_screen_height;
}
source_width_remaining = num_cols*16;
screen_width_remaining = hsize;
sx = hpos;
for( col=0; col<num_cols; col++ )
for (col = 0; col < num_cols; col++)
{
tile_screen_width = 16*screen_width_remaining/source_width_remaining;
zoomx = (screen_width_remaining<<16)/source_width_remaining;
if( flipx )
if (flipx)
{
sx -= tile_screen_width;
}
tile = spritetile16[tile_index++];
if( (tile&0x8000)==0 )
sprite_ptr->tile[ind] = tile;
if ((tile&0x8000)==0)
{
zdrawgfxzoom(
screen,
bitmap,
clip,
m_gfxdecode->gfx(m_gfx_region),
m_code2tile(tile) + offset,
color,
flipx,flipy,
sx,sy,
zoomx, zoomy, zpos );
sprite_ptr->x[ind] = sx;
sprite_ptr->y[ind] = sy;
sprite_ptr->zoomx[ind] = zoomx;
sprite_ptr->zoomy[ind] = zoomy;
}
if( !flipx )
if (!flipx)
{
sx += tile_screen_width;
}
screen_width_remaining -= tile_screen_width;
source_width_remaining -= 16;
ind++;
} /* next col */
if( !flipy )
if (!flipy)
{
sy += tile_screen_height;
}
@ -400,51 +412,144 @@ int namco_c355spr_device::default_code2tile(int code)
return code;
}
template<class _BitmapClass>
void namco_c355spr_device::draw_list(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int pri, const uint16_t *pSpriteList16, const uint16_t *pSpriteTable)
void namco_c355spr_device::get_list(int no, const uint16_t *pSpriteList16, const uint16_t *pSpriteTable)
{
int i;
/* draw the sprites */
for( i=0; i<256; i++ )
struct c355_sprite *sprite_ptr = m_spritelist[no];
for (int i = 0; i < 256; i++)
{
sprite_ptr->disable = false;
uint16_t which = pSpriteList16[i];
draw_sprite(screen, bitmap, cliprect, &pSpriteTable[(which&0xff)*8], pri, i );
if( which&0x100 ) break;
get_single_sprite(&pSpriteTable[(which&0xff)*8], sprite_ptr);
sprite_ptr++;
if (which&0x100) break;
}
m_sprite_end[no] = sprite_ptr;
}
void namco_c355spr_device::get_sprites()
{
int buffer = std::max(0, m_buffer - 1);
// int offs = spriteram16[0x18000/2]; /* end-of-sprite-list */
// if (offs == 0) // boot
// TODO: solvalou service mode wants 0x14000/2 & 0x00000/2
get_list(0, &m_spriteram[buffer][0x02000/2], &m_spriteram[buffer][0x00000/2]);
// else
get_list(1, &m_spriteram[buffer][0x14000/2], &m_spriteram[buffer][0x10000/2]);
}
void namco_c355spr_device::draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri)
{
// int offs = spriteram16[0x18000/2]; /* end-of-sprite-list */
if (pri == 0)
{
screen.priority().fill(0, cliprect);
if (m_buffer == 0) // not buffered sprites
get_sprites();
}
// if (offs == 0) // boot
// TODO: solvalou service mode wants 0x14000/2 & 0x00000/2
draw_list(screen, bitmap, cliprect, pri, &m_spriteram[0x02000/2], &m_spriteram[0x00000/2]);
// else
draw_list(screen, bitmap, cliprect, pri, &m_spriteram[0x14000/2], &m_spriteram[0x10000/2]);
for (int no = 0; no < 2; no++)
{
//if (offs == no)
{
int i = 0;
struct c355_sprite *sprite_ptr = m_spritelist[no];
while (sprite_ptr != m_sprite_end[no])
{
if ((sprite_ptr->pri == pri) && (sprite_ptr->disable == false))
{
rectangle clip = sprite_ptr->clip;
clip &= cliprect;
for (int ind = 0; ind < sprite_ptr->size; ind++)
{
if ((sprite_ptr->tile[ind] & 0x8000) == 0)
{
zdrawgfxzoom(
screen,
bitmap,
clip,
m_gfxdecode->gfx(m_gfx_region),
m_code2tile(sprite_ptr->tile[ind]) + sprite_ptr->offset,
sprite_ptr->color,
sprite_ptr->flipx, sprite_ptr->flipy,
sprite_ptr->x[ind], sprite_ptr->y[ind],
sprite_ptr->zoomx[ind], sprite_ptr->zoomy[ind], i);
}
}
}
i++;
sprite_ptr++;
}
}
}
}
void namco_c355spr_device::draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri)
{
// int offs = spriteram16[0x18000/2]; /* end-of-sprite-list */
if (pri == 0)
{
screen.priority().fill(0, cliprect);
if (m_buffer == 0) // not buffered sprites
get_sprites();
}
// if (offs == 0) // boot
draw_list(screen, bitmap, cliprect, pri, &m_spriteram[0x02000/2], &m_spriteram[0x00000/2]);
// else
draw_list(screen, bitmap, cliprect, pri, &m_spriteram[0x14000/2], &m_spriteram[0x10000/2]);
for (int no = 0; no < 2; no++)
{
//if (offs == no)
{
int i = 0;
struct c355_sprite *sprite_ptr = m_spritelist[no];
while (sprite_ptr != m_sprite_end[no])
{
if (sprite_ptr->pri == pri)
{
sprite_ptr->clip &= cliprect;
for (int ind = 0; ind < sprite_ptr->size; ind++)
{
if ((sprite_ptr->tile[ind] & 0x8000) == 0)
{
zdrawgfxzoom(
screen,
bitmap,
sprite_ptr->clip,
m_gfxdecode->gfx(m_gfx_region),
m_code2tile(sprite_ptr->tile[ind]) + sprite_ptr->offset,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
sprite_ptr->x[ind],sprite_ptr->y[ind],
sprite_ptr->zoomx[ind], sprite_ptr->zoomy[ind], i );
}
}
}
sprite_ptr++;
}
}
}
}
WRITE16_MEMBER( namco_c355spr_device::spriteram_w )
{
COMBINE_DATA(&m_spriteram[offset]);
COMBINE_DATA(&m_spriteram[0][offset]);
}
READ16_MEMBER( namco_c355spr_device::spriteram_r )
{
return m_spriteram[offset];
return m_spriteram[0][offset];
}
WRITE_LINE_MEMBER( namco_c355spr_device::vblank )
{
if (state)
{
if (m_buffer > 0)
get_sprites();
if (m_buffer > 1)
std::copy(m_spriteram[0].begin(), m_spriteram[0].end(), m_spriteram[1].begin());
}
}

View File

@ -7,25 +7,25 @@
#pragma once
#include "screen.h"
#include "emupal.h"
class namco_c355spr_device : public device_t
class namco_c355spr_device : public device_t, public device_video_interface
{
public:
// construction/destruction
namco_c355spr_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); }
template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); }
void set_is_namcofl(bool state) { m_is_namcofl = state; }
//void set_ram_words(uint32_t size) { m_ramsize = size; }
void set_palxor(int palxor) { m_palxor = palxor; }
void set_gfxregion(int region) { m_gfx_region = region; }
void set_buffer(int buffer) { m_buffer = buffer; }
DECLARE_READ16_MEMBER( spriteram_r );
DECLARE_WRITE16_MEMBER( spriteram_w );
DECLARE_READ16_MEMBER( position_r );
DECLARE_WRITE16_MEMBER( position_w );
DECLARE_WRITE_LINE_MEMBER( vblank );
typedef delegate<int (int)> c355_obj_code2tile_delegate;
void set_tile_callback(c355_obj_code2tile_delegate cb)
@ -46,6 +46,20 @@ protected:
private:
struct c355_sprite
{
int disable;
int size;
rectangle clip;
int offset;
int color;
int flipx,flipy;
int tile[16*16];
int x[16*16],y[16*16];
int zoomx[16*16],zoomy[16*16];
int pri;
};
// general
void zdrawgfxzoom(screen_device &screen, bitmap_ind16 &dest_bmp, const rectangle &clip, gfx_element *gfx, uint32_t code, uint32_t color, int flipx, int flipy, int sx, int sy, int scalex, int scaley, int zpos);
void zdrawgfxzoom(screen_device &screen, bitmap_rgb32 &dest_bmp, const rectangle &clip, gfx_element *gfx, uint32_t code, uint32_t color, int flipx, int flipy, int sx, int sy, int scalex, int scaley, int zpos);
@ -55,23 +69,24 @@ private:
int default_code2tile(int code);
// C355 Motion Object internals
template<class _BitmapClass>
void draw_sprite(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, const uint16_t *pSource, int pri, int zpos);
template<class _BitmapClass>
void draw_list(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int pri, const uint16_t *pSpriteList16, const uint16_t *pSpriteTable);
void get_single_sprite(const uint16_t *pSource, struct c355_sprite *sprite_ptr);
void get_list(int no, const uint16_t *pSpriteList16, const uint16_t *pSpriteTable);
void get_sprites();
struct c355_sprite *m_spritelist[2];
const struct c355_sprite *m_sprite_end[2];
c355_obj_code2tile_delegate m_code2tile;
int m_gfx_region;
int m_palxor;
uint16_t m_position[4];
uint16_t m_spriteram[0x20000/2];
std::vector<uint16_t> m_spriteram[2];
//std::vector<uint16_t> m_spriteram;
bool m_is_namcofl;
//uint32_t m_ramsize;
int m_buffer;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
};
// device type definition

View File

@ -62,7 +62,7 @@ uint32_t namcofl_state::screen_update_namcofl(screen_device &screen, bitmap_ind1
{
int pri;
bitmap.fill(m_palette->black_pen(), cliprect );
bitmap.fill(m_c116->black_pen(), cliprect );
for( pri=0; pri<16; pri++ )
{

View File

@ -123,7 +123,7 @@ uint32_t namconb1_state::screen_update_namconb1(screen_device &screen, bitmap_in
/* intersect with master clip rectangle */
clip &= cliprect;
bitmap.fill(m_palette->black_pen(), cliprect );
bitmap.fill(m_c116->black_pen(), cliprect );
video_update_common( screen, bitmap, clip, 0 );
@ -163,7 +163,7 @@ uint32_t namconb1_state::screen_update_namconb2(screen_device &screen, bitmap_in
/* intersect with master clip rectangle */
clip &= cliprect;
bitmap.fill(m_palette->black_pen(), cliprect );
bitmap.fill(m_c116->black_pen(), cliprect );
if( memcmp(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank))!=0 )
{

View File

@ -53,46 +53,18 @@ Namco System 1 Video Hardware
***************************************************************************/
inline void namcos1_state::get_tile_info(tile_data &tileinfo,int tile_index,uint8_t *info_vram)
template <int Offset>
TILE_GET_INFO_MEMBER(namcos1_state::get_tile_info)
{
int code;
tile_index <<= 1;
code = info_vram[tile_index + 1] + ((info_vram[tile_index] & 0x3f) << 8);
tile_index += Offset;
code = m_videoram[tile_index + 1] + ((m_videoram[tile_index] & 0x3f) << 8);
SET_TILE_INFO_MEMBER(0,code,0,0);
tileinfo.mask_data = &m_tilemap_maskdata[code << 3];
}
TILE_GET_INFO_MEMBER(namcos1_state::bg_get_info0)
{
get_tile_info(tileinfo,tile_index,&m_videoram[0x0000]);
}
TILE_GET_INFO_MEMBER(namcos1_state::bg_get_info1)
{
get_tile_info(tileinfo,tile_index,&m_videoram[0x2000]);
}
TILE_GET_INFO_MEMBER(namcos1_state::bg_get_info2)
{
get_tile_info(tileinfo,tile_index,&m_videoram[0x4000]);
}
TILE_GET_INFO_MEMBER(namcos1_state::bg_get_info3)
{
get_tile_info(tileinfo,tile_index,&m_videoram[0x6000]);
}
TILE_GET_INFO_MEMBER(namcos1_state::fg_get_info4)
{
get_tile_info(tileinfo,tile_index,&m_videoram[0x7010]);
}
TILE_GET_INFO_MEMBER(namcos1_state::fg_get_info5)
{
get_tile_info(tileinfo,tile_index,&m_videoram[0x7810]);
}
/***************************************************************************
@ -105,15 +77,13 @@ void namcos1_state::video_start()
{
int i;
m_tilemap_maskdata = (uint8_t *)memregion("gfx1")->base();
/* initialize playfields */
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::bg_get_info0),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::bg_get_info1),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::bg_get_info2),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::bg_get_info3),this),TILEMAP_SCAN_ROWS,8,8,64,32);
m_bg_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::fg_get_info4),this),TILEMAP_SCAN_ROWS,8,8,36,28);
m_bg_tilemap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::fg_get_info5),this),TILEMAP_SCAN_ROWS,8,8,36,28);
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::get_tile_info<0x0000>),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::get_tile_info<0x2000>),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::get_tile_info<0x4000>),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::get_tile_info<0x6000>),this),TILEMAP_SCAN_ROWS,8,8,64,32);
m_bg_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::get_tile_info<0x7010>),this),TILEMAP_SCAN_ROWS,8,8,36,28);
m_bg_tilemap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos1_state::get_tile_info<0x7810>),this),TILEMAP_SCAN_ROWS,8,8,36,28);
for (i = 0; i < 4; i++)
{
@ -135,10 +105,10 @@ void namcos1_state::video_start()
/* all palette entries are not affected by shadow sprites... */
for (i = 0;i < 0x2000;i++)
m_palette->shadow_table()[i] = i;
m_c116->shadow_table()[i] = i;
/* ... except for tilemap colors */
for (i = 0x0800;i < 0x1000;i++)
m_palette->shadow_table()[i] = i + 0x0800;
m_c116->shadow_table()[i] = i + 0x0800;
memset(m_playfield_control, 0, sizeof(m_playfield_control));
m_copy_sprites = 0;
@ -292,7 +262,7 @@ uint32_t namcos1_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
flip_screen_set(m_spriteram[0x0ff6] & 1);
/* background color */
bitmap.fill(m_palette->black_pen(), cliprect);
bitmap.fill(m_c116->black_pen(), cliprect);
/* berabohm uses asymmetrical visibility windows to iris on the character */
i = m_c116->get_reg(0) - 1; // min x

View File

@ -61,7 +61,7 @@ void namcos2_state::create_shadow_table()
/* set table for sprite color == 0x0f */
for (int i = 0; i < 16 * 256; i++)
{
m_palette->shadow_table()[i] = i + 0x2000;
m_c116->shadow_table()[i] = i + 0x2000;
}
}
@ -87,7 +87,7 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
rectangle clip;
int pri;
bitmap.fill(m_palette->black_pen(), cliprect);
bitmap.fill(m_c116->black_pen(), cliprect);
apply_clip(clip, cliprect);
/* HACK: enable ROZ layer only if it has priority > 0 */
@ -114,22 +114,12 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
/**************************************************************************/
void namcos2_state::video_start_finallap()
{
create_shadow_table();
}
void namcos2_state::video_start_finalap2()
{
create_shadow_table();
}
uint32_t namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rectangle clip;
int pri;
bitmap.fill(m_palette->black_pen(), cliprect);
bitmap.fill(m_c116->black_pen(), cliprect);
apply_clip(clip, cliprect);
for (pri = 0; pri < 16; pri++)
@ -171,7 +161,7 @@ uint32_t namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind
rectangle clip;
int pri;
bitmap.fill(m_palette->black_pen(), cliprect);
bitmap.fill(m_c116->black_pen(), cliprect);
apply_clip(clip, cliprect);
for (pri = 0; pri < 16; pri++)
@ -201,7 +191,7 @@ uint32_t namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind1
rectangle clip;
int pri;
bitmap.fill(m_palette->black_pen(), cliprect);
bitmap.fill(m_c116->black_pen(), cliprect);
apply_clip(clip, cliprect);
for (pri = 0; pri < 8; pri++)
@ -230,7 +220,7 @@ uint32_t namcos2_state::screen_update_metlhawk(screen_device &screen, bitmap_ind
rectangle clip;
int pri;
bitmap.fill(m_palette->black_pen(), cliprect);
bitmap.fill(m_c116->black_pen(), cliprect);
apply_clip(clip, cliprect);
for (pri = 0; pri < 16; pri++)

View File

@ -17,20 +17,34 @@
#include "emu.h"
#include "namcos2_roz.h"
static const gfx_layout layout =
{
8,8,
RGN_FRAC(1,1),
8,
{ STEP8(0,1) },
{ STEP8(0,8) },
{ STEP8(0,8*8) },
8*8*8
};
GFXDECODE_START( namcos2_roz_device::gfxinfo )
GFXDECODE_DEVICE( DEVICE_SELF, 0, layout, 0, 16 )
GFXDECODE_END
DEFINE_DEVICE_TYPE(NAMCOS2_ROZ, namcos2_roz_device, "namcos2_roz", "Namco Sysem 2 ROZ (C102)")
namcos2_roz_device::namcos2_roz_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, NAMCOS2_ROZ, tag, owner, clock),
device_gfx_interface(mconfig, *this, gfxinfo),
m_rozram(*this, finder_base::DUMMY_TAG),
m_roz_ctrl(*this, finder_base::DUMMY_TAG),
m_gfxdecode(*this, finder_base::DUMMY_TAG),
m_palette(*this, finder_base::DUMMY_TAG)
m_roz_ctrl(*this, finder_base::DUMMY_TAG)
{
}
void namcos2_roz_device::device_start()
{
m_tilemap_roz = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_roz_device::roz_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 256, 256);
m_tilemap_roz = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namcos2_roz_device::roz_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 256, 256);
m_tilemap_roz->set_transparent_pen(0xff);
}
@ -38,7 +52,7 @@ void namcos2_roz_device::device_start()
TILE_GET_INFO_MEMBER(namcos2_roz_device::roz_tile_info)
{
int tile = m_rozram[tile_index];
SET_TILE_INFO_MEMBER(3, tile, 0/*color*/, 0);
SET_TILE_INFO_MEMBER(0, tile, 0/*color*/, 0);
}
struct roz_param

View File

@ -7,10 +7,9 @@
#pragma once
#include "screen.h"
#include "emupal.h"
class namcos2_roz_device : public device_t
class namcos2_roz_device : public device_t, public device_gfx_interface
{
public:
// construction/destruction
@ -18,8 +17,6 @@ public:
template <typename T> void set_rozram_tag(T &&tag) { m_rozram.set_tag(std::forward<T>(tag)); }
template <typename T> void set_rozctrl_tag(T &&tag) { m_roz_ctrl.set_tag(std::forward<T>(tag)); }
template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); }
template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); }
DECLARE_WRITE16_MEMBER( rozram_word_w );
@ -39,8 +36,7 @@ private:
required_shared_ptr<uint16_t> m_rozram;
required_shared_ptr<uint16_t> m_roz_ctrl;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
DECLARE_GFXDECODE_MEMBER(gfxinfo);
};
// device type definition

View File

@ -26,7 +26,6 @@ DEFINE_DEVICE_TYPE(NAMCOS2_SPRITE, namcos2_sprite_device, "namcos2_sprite", "Nam
namcos2_sprite_device::namcos2_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, NAMCOS2_SPRITE, tag, owner, clock),
m_gfxdecode(*this, finder_base::DUMMY_TAG),
m_palette(*this, finder_base::DUMMY_TAG),
m_spriteram(*this, finder_base::DUMMY_TAG)
{
}
@ -50,8 +49,9 @@ void namcos2_sprite_device::zdrawgfxzoom(
{
if( gfx )
{
int shadow_offset = (m_palette->shadows_enabled())?m_palette->entries():0;
const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
device_palette_interface &palette = m_gfxdecode->palette();
int shadow_offset = (palette.shadows_enabled())?palette.entries():0;
const pen_t *pal = &palette.pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const uint8_t *source_base = gfx->get_data(code % gfx->elements());
int sprite_screen_height = (scaley*gfx->height()+0x8000)>>16;
int sprite_screen_width = (scalex*gfx->width()+0x8000)>>16;
@ -343,7 +343,7 @@ void namcos2_sprite_device::draw_sprites_metalhawk(screen_device &screen, bitmap
int scaley = (sizey<<16)/(bBigSprite?0x20:0x10);
/* swap xy */
int rgn = (flags&0x01) ? 3 : 0;
int rgn = (flags&0x01);
gfx_element *gfx = m_gfxdecode->gfx(rgn);

View File

@ -15,7 +15,6 @@ public:
// construction/destruction
namcos2_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); }
template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); }
template <typename T> void set_spriteram_tag(T &&tag) { m_spriteram.set_tag(std::forward<T>(tag)); }
@ -32,7 +31,6 @@ private:
void zdrawgfxzoom(screen_device &screen, bitmap_rgb32 &dest_bmp, const rectangle &clip, gfx_element *gfx, uint32_t code, uint32_t color, int flipx, int flipy, int sx, int sy, int scalex, int scaley, int zpos);
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr<uint16_t> m_spriteram;
};