summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2018-12-02 12:59:23 -0500
committer GitHub <noreply@github.com>2018-12-02 12:59:23 -0500
commit70693512bf4cb86af3fd08217dca85bbd89ef949 (patch)
tree808e4c8d95b355eb07da3b073d77ee6c009665c2
parentbd14ee1e2b87c53f625e0668b42baa2ed2a652b1 (diff)
parent4951b23eecb4f133a133566f489242d89e70ba4a (diff)
Merge pull request #4363 from DavidHaywood/021218
seta2.cpp : make code more friendly for a line rendering approach, preparation for raster IRQ hookup
-rw-r--r--src/mame/drivers/seta2.cpp456
-rw-r--r--src/mame/drivers/ssv.cpp29
-rw-r--r--src/mame/includes/seta2.h14
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mame/video/seta2.cpp361
-rw-r--r--src/mame/video/ssv.cpp32
6 files changed, 368 insertions, 525 deletions
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp
index 7995dc7dc72..cf1194459fe 100644
--- a/src/mame/drivers/seta2.cpp
+++ b/src/mame/drivers/seta2.cpp
@@ -2345,130 +2345,6 @@ INPUT_PORTS_END
***************************************************************************/
-static const gfx_layout layout_4bpp_lo =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(1,4)+8,RGN_FRAC(1,4)+0,
- RGN_FRAC(0,4)+8,RGN_FRAC(0,4)+0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
- 8*8*2
-};
-
-static const gfx_layout layout_4bpp_hi =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4)+8,RGN_FRAC(3,4)+0,
- RGN_FRAC(2,4)+8,RGN_FRAC(2,4)+0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
- 8*8*2
-};
-
-static const gfx_layout layout_6bpp =
-{
- 8,8,
- RGN_FRAC(1,4),
- 6,
- {
- RGN_FRAC(2,4)+8,RGN_FRAC(2,4)+0,
- RGN_FRAC(1,4)+8,RGN_FRAC(1,4)+0,
- RGN_FRAC(0,4)+8,RGN_FRAC(0,4)+0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
- 8*8*2
-};
-
-static const gfx_layout layout_8bpp =
-{
- 8,8,
- RGN_FRAC(1,4),
- 8,
- { RGN_FRAC(3,4)+8,RGN_FRAC(3,4)+0,
- RGN_FRAC(2,4)+8,RGN_FRAC(2,4)+0,
- RGN_FRAC(1,4)+8,RGN_FRAC(1,4)+0,
- RGN_FRAC(0,4)+8,RGN_FRAC(0,4)+0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
- 8*8*2
-};
-
-static const gfx_layout layout_3bpp_lo =
-{
- 8,8,
- RGN_FRAC(1,4),
- 3,
- { RGN_FRAC(1,4)+0,
- RGN_FRAC(0,4)+8,RGN_FRAC(0,4)+0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
- 8*8*2
-};
-
-static const gfx_layout layout_2bpp_hi =
-{
- 8,8,
- RGN_FRAC(1,4),
- 2,
- { RGN_FRAC(2,4)+8,RGN_FRAC(2,4)+0 },
- { STEP8(0,1) },
- { STEP8(0,8*2) },
- 8*8*2
-};
-
-/* Tiles are 8bpp, but the hardware is additionally able to discard
- some bitplanes and use the low 4 bits only, or the high 4 bits only */
-static GFXDECODE_START( gfx_seta2 )
- GFXDECODE_ENTRY( "sprites", 0, layout_4bpp_lo, 0, 0x8000/16 )
- GFXDECODE_ENTRY( "sprites", 0, layout_4bpp_hi, 0, 0x8000/16 )
- GFXDECODE_ENTRY( "sprites", 0, layout_6bpp, 0, 0x8000/16 ) // 6bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, layout_8bpp, 0, 0x8000/16 ) // 8bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, layout_3bpp_lo, 0, 0x8000/16 ) // 3bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, layout_2bpp_hi, 0, 0x8000/16 ) // 2bpp, but 4bpp color granularity
-GFXDECODE_END
-
-/***************************************************************************
- Funcube series
-***************************************************************************/
-
-static const gfx_layout funcube_layout_4bpp_lo =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
-// { STEP4(7*8, -8) },
- { STEP4(0*8, 8) }, // needed by funcube3 text
- { STEP8(0, 1) },
- { STEP8(0, 8*8) },
- 8*8*8
-};
-
-static const gfx_layout funcube_layout_4bpp_hi =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(4*8, -8) },
- { STEP8(0, 1) },
- { STEP8(0, 8*8) },
- 8*8*8
-};
-
-static const gfx_layout funcube_layout_6bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 6,
- { STEP4(7*8, -8), STEP2(3*8, -8) },
- { STEP8(0, 1) },
- { STEP8(0, 8*8) },
- 8*8*8
-};
-
static const gfx_layout funcube_layout_8bpp =
{
8,8,
@@ -2480,78 +2356,14 @@ static const gfx_layout funcube_layout_8bpp =
8*8*8
};
-static const gfx_layout funcube_layout_3bpp_lo =
-{
- 8,8,
- RGN_FRAC(1,1),
- 3,
- { 7*8,6*8,5*8 },
- { STEP8(0, 1) },
- { STEP8(0, 8*8) },
- 8*8*8
-};
-
-static const gfx_layout funcube_layout_2bpp_hi =
-{
- 8,8,
- RGN_FRAC(1,1),
- 2,
- { STEP2(5*8, -8) },
- { STEP8(0, 1) },
- { STEP8(0, 8*8) },
- 8*8*8
-};
/* Tiles are 8bpp, but the hardware is additionally able to discard
some bitplanes and use the low 4 bits only, or the high 4 bits only */
-static GFXDECODE_START( gfx_funcube )
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_4bpp_lo, 0, 0x8000/16 )
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_4bpp_hi, 0, 0x8000/16 )
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_6bpp, 0, 0x8000/16 ) // 6bpp, but 4bpp color granularity
+static GFXDECODE_START( gfx_seta2 )
GFXDECODE_ENTRY( "sprites", 0, funcube_layout_8bpp, 0, 0x8000/16 ) // 8bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_3bpp_lo, 0, 0x8000/16 ) // 3bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_2bpp_hi, 0, 0x8000/16 ) // 2bpp, but 4bpp color granularity
GFXDECODE_END
/***************************************************************************
- Star Audition
-***************************************************************************/
-
-static const gfx_layout staraudi_layout_4bpp_lo =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 3*8, 2*8, 1*8, 0*8 }, // needed by staraudi
- { STEP8(0, 1) },
- { STEP8(0, 8*8) },
- 8*8*8
-};
-
-static const gfx_layout staraudi_layout_6bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 6,
- { 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 }, // needed by staraudi
- { STEP8(0, 1) },
- { STEP8(0, 8*8) },
- 8*8*8
-};
-
-/* Tiles are 8bpp, but the hardware is additionally able to discard
- some bitplanes and use the low 4 bits only, or the high 4 bits only */
-static GFXDECODE_START( gfx_staraudi )
- GFXDECODE_ENTRY( "sprites", 0, staraudi_layout_4bpp_lo, 0, 0x8000/16 )
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_4bpp_hi, 0, 0x8000/16 )
- GFXDECODE_ENTRY( "sprites", 0, staraudi_layout_6bpp, 0, 0x8000/16 ) // 6bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_8bpp, 0, 0x8000/16 ) // 8bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_3bpp_lo, 0, 0x8000/16 ) // 3bpp, but 4bpp color granularity
- GFXDECODE_ENTRY( "sprites", 0, funcube_layout_2bpp_hi, 0, 0x8000/16 ) // 2bpp, but 4bpp color granularity
-GFXDECODE_END
-
-
-/***************************************************************************
Machine Drivers
@@ -2636,9 +2448,7 @@ MACHINE_CONFIG_START(seta2_state::myangel)
// video hardware
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x00, 0xf0-1)
-
- MCFG_VIDEO_START_OVERRIDE(seta2_state,yoffset)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x10, 0x100-1)
MACHINE_CONFIG_END
@@ -2649,9 +2459,7 @@ MACHINE_CONFIG_START(seta2_state::myangel2)
// video hardware
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x00, 0xf0-1)
-
- MCFG_VIDEO_START_OVERRIDE(seta2_state,yoffset)
+ MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x10, 0x100-1)
MACHINE_CONFIG_END
@@ -2732,7 +2540,7 @@ MACHINE_CONFIG_START(staraudi_state::staraudi)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
MCFG_SCREEN_VISIBLE_AREA(0x10, 0x150-1, 0x100, 0x1f0-1)
- MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_staraudi)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_seta2)
MACHINE_CONFIG_END
@@ -2811,7 +2619,7 @@ MACHINE_CONFIG_START(funcube_state::funcube)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, seta2_state, screen_vblank))
MCFG_SCREEN_PALETTE("palette")
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_funcube)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_seta2)
MCFG_PALETTE_ADD("palette", 0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
@@ -2866,7 +2674,7 @@ MACHINE_CONFIG_START(seta2_state::namcostr)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, seta2_state, screen_vblank))
MCFG_SCREEN_PALETTE("palette")
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_funcube)
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_seta2)
MCFG_PALETTE_ADD("palette", 0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
@@ -3298,21 +3106,18 @@ ROM_START( grdians ) /* P-FG01-1 */
ROM_LOAD16_BYTE( "u5.bin", 0x100001, 0x080000, CRC(9c164a3b) SHA1(6d688c7af9e7e8e8d54b2e4dfbf41f59c79242eb) )
ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE) // Sprites
- ROM_LOAD( "u16.bin", 0x0000000, 0x400000, CRC(6a65f265) SHA1(6cad11f718f8bbcff464d41eb4717460769237ed) )
- ROM_LOAD( "u20.bin", 0x0600000, 0x200000, CRC(a7226ab7) SHA1(408580dd35c568ffef1ebbd87359e3ec1f867020) )
- ROM_CONTINUE( 0x0400000, 0x200000 )
-
- ROM_LOAD( "u15.bin", 0x0800000, 0x400000, CRC(01672dcd) SHA1(f61f60e3343cc5b6ccee391ee529966a141566db) )
- ROM_LOAD( "u19.bin", 0x0e00000, 0x200000, CRC(c0c998a0) SHA1(498fb1877527ed37412537f06a2c39ff0c60f146) )
- ROM_CONTINUE( 0x0c00000, 0x200000 )
-
- ROM_LOAD( "u18.bin", 0x1000000, 0x400000, CRC(967babf4) SHA1(42a6311576417c44aeaceb8ba6bb3cd7794e4882) )
- ROM_LOAD( "u22.bin", 0x1600000, 0x200000, CRC(6239997a) SHA1(87b6d6f30f152f625f82fd858c1290176c7e156e) )
- ROM_CONTINUE( 0x1400000, 0x200000 )
-
- ROM_LOAD( "u17.bin", 0x1800000, 0x400000, CRC(0fad0629) SHA1(1bdc8e7c5e39e83d327f14a672ec81b049112da6) )
- ROM_LOAD( "u21.bin", 0x1e00000, 0x200000, CRC(6f95e466) SHA1(28482fad16a3ac9302f152d81552e6f84a44f3e4) )
- ROM_CONTINUE( 0x1c00000, 0x200000 )
+ ROM_LOAD64_WORD( "u16.bin", 0x0000000, 0x400000, CRC(6a65f265) SHA1(6cad11f718f8bbcff464d41eb4717460769237ed) )
+ ROM_LOAD64_WORD( "u15.bin", 0x0000002, 0x400000, CRC(01672dcd) SHA1(f61f60e3343cc5b6ccee391ee529966a141566db) )
+ ROM_LOAD64_WORD( "u18.bin", 0x0000004, 0x400000, CRC(967babf4) SHA1(42a6311576417c44aeaceb8ba6bb3cd7794e4882) )
+ ROM_LOAD64_WORD( "u17.bin", 0x0000006, 0x400000, CRC(0fad0629) SHA1(1bdc8e7c5e39e83d327f14a672ec81b049112da6) )
+ ROM_LOAD64_WORD( "u20.bin", 0x1800000, 0x200000, CRC(a7226ab7) SHA1(408580dd35c568ffef1ebbd87359e3ec1f867020) )
+ ROM_CONTINUE( 0x1000000, 0x200000 )
+ ROM_LOAD64_WORD( "u19.bin", 0x1800002, 0x200000, CRC(c0c998a0) SHA1(498fb1877527ed37412537f06a2c39ff0c60f146) )
+ ROM_CONTINUE( 0x1000002, 0x200000 )
+ ROM_LOAD64_WORD( "u22.bin", 0x1800004, 0x200000, CRC(6239997a) SHA1(87b6d6f30f152f625f82fd858c1290176c7e156e) )
+ ROM_CONTINUE( 0x1000004, 0x200000 )
+ ROM_LOAD64_WORD( "u21.bin", 0x1800006, 0x200000, CRC(6f95e466) SHA1(28482fad16a3ac9302f152d81552e6f84a44f3e4) )
+ ROM_CONTINUE( 0x1000006, 0x200000 )
ROM_REGION( 0x100000, "x1snd", 0 ) // Samples
ROM_LOAD( "u32.bin", 0x000000, 0x100000, CRC(cf0f3017) SHA1(8376d3a674f71aec72f52c72758fbc53d9feb1a1) )
@@ -3389,17 +3194,17 @@ ROM_START( gundamex )
ROM_LOAD16_BYTE( "ka_002_003.u5", 0x100001, 0x080000, CRC(946185aa) SHA1(524911c4c510d6c3e17a7ab42c7077c2fffbf06b) )
ROM_LOAD16_WORD_SWAP( "ka-001-005.u77", 0x500000, 0x080000, CRC(f01d3d00) SHA1(ff12834e99a76261d619f10d186f4b329fb9cb7a) )
- ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE) // Sprites
- ROM_LOAD( "ka-001-009.u16", 0x0000000, 0x200000, CRC(997d8d93) SHA1(4cb4cdb7e8208af4b14483610d9d6aa5e13acd89) )
- ROM_LOAD( "ka-001-010.u18", 0x0200000, 0x200000, CRC(811b67ca) SHA1(c8cfae6f54c76d63bd625ff011c872ffb75fd2e2) )
- ROM_LOAD( "ka-001-011.u20", 0x0400000, 0x200000, CRC(08a72700) SHA1(fb8003aa02dd249c30a757cb43b516260b41c1bf) )
- ROM_LOAD( "ka-001-012.u15", 0x0800000, 0x200000, CRC(b789e4a8) SHA1(400b773f24d677a9d47466fdbbe68cb6efc1ad37) )
- ROM_LOAD( "ka-001-013.u17", 0x0a00000, 0x200000, CRC(d8a0201f) SHA1(fe8a2407c872adde8aec8e9340b00be4f00a2872) )
- ROM_LOAD( "ka-001-014.u19", 0x0c00000, 0x200000, CRC(7635e026) SHA1(116a3daab14a17faca85c4a956b356aaf0fc2276) )
- ROM_LOAD( "ka-001-006.u21", 0x1000000, 0x200000, CRC(6aac2f2f) SHA1(fac5478ca2941a93c57f670a058ff626e537bcde) )
- ROM_LOAD( "ka-001-007.u22", 0x1200000, 0x200000, CRC(588f9d63) SHA1(ed5148d09d02e3bc12c50c39c5c86e6356b2dd7a) )
- ROM_LOAD( "ka-001-008.u23", 0x1400000, 0x200000, CRC(db55a60a) SHA1(03d118c7284ca86219891c473e2a89489710ea27) )
- ROM_FILL( 0x1800000, 0x600000, 0x00 ) // 6bpp instead of 8bpp
+ ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE00) // Sprites
+ ROM_LOAD64_WORD( "ka-001-009.u16", 0x0000000, 0x200000, CRC(997d8d93) SHA1(4cb4cdb7e8208af4b14483610d9d6aa5e13acd89) )
+ ROM_LOAD64_WORD( "ka-001-012.u15", 0x0000002, 0x200000, CRC(b789e4a8) SHA1(400b773f24d677a9d47466fdbbe68cb6efc1ad37) )
+ ROM_LOAD64_WORD( "ka-001-006.u21", 0x0000004, 0x200000, CRC(6aac2f2f) SHA1(fac5478ca2941a93c57f670a058ff626e537bcde) )
+ ROM_LOAD64_WORD( "ka-001-010.u18", 0x0800000, 0x200000, CRC(811b67ca) SHA1(c8cfae6f54c76d63bd625ff011c872ffb75fd2e2) )
+ ROM_LOAD64_WORD( "ka-001-013.u17", 0x0800002, 0x200000, CRC(d8a0201f) SHA1(fe8a2407c872adde8aec8e9340b00be4f00a2872) )
+ ROM_LOAD64_WORD( "ka-001-007.u22", 0x0800004, 0x200000, CRC(588f9d63) SHA1(ed5148d09d02e3bc12c50c39c5c86e6356b2dd7a) )
+ ROM_LOAD64_WORD( "ka-001-011.u20", 0x1000000, 0x200000, CRC(08a72700) SHA1(fb8003aa02dd249c30a757cb43b516260b41c1bf) )
+ ROM_LOAD64_WORD( "ka-001-014.u19", 0x1000002, 0x200000, CRC(7635e026) SHA1(116a3daab14a17faca85c4a956b356aaf0fc2276) )
+ ROM_LOAD64_WORD( "ka-001-008.u23", 0x1000004, 0x200000, CRC(db55a60a) SHA1(03d118c7284ca86219891c473e2a89489710ea27) )
+
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
ROM_LOAD( "ka-001-015.u28", 0x000000, 0x200000, CRC(ada2843b) SHA1(09d06026031bc7558da511c3c0e29187ea0a0099) )
@@ -3430,14 +3235,13 @@ ROM_START( mj4simai )
ROM_LOAD16_BYTE( "hl.u4", 0x100000, 0x080000, CRC(226063b7) SHA1(1737baffc16ff7261f887911187ece96925fa6ff) )
ROM_LOAD16_BYTE( "hh.u5", 0x100001, 0x080000, CRC(23aaf8df) SHA1(b3d678afce4ddef32e48d690c6d07b723dd0c28f) )
- ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "cha-03.u16", 0x0000000, 0x400000, CRC(d367429a) SHA1(b32c215ef85c3d0a4c5550cef4f5c4c0e7030b7c) )
- ROM_LOAD( "cha-04.u18", 0x0400000, 0x400000, CRC(7f2008c3) SHA1(e45d863540eb2381f5d7660d64cdfef87c890768) )
- ROM_LOAD( "cha-05.u15", 0x0800000, 0x400000, CRC(e94ec40a) SHA1(2685dbc5680b5f76688c6b4fbe40ae682c525bfe) )
- ROM_LOAD( "cha-06.u17", 0x0c00000, 0x400000, CRC(5cb0b3a9) SHA1(92fb82d45b4c46326d5796981f812e20a8ddb4f2) )
- ROM_LOAD( "cha-01.u21", 0x1000000, 0x400000, CRC(35f47b37) SHA1(4a8eb088890272f2a069e2c3f00fadf6421f7b0e) )
- ROM_LOAD( "cha-02.u22", 0x1400000, 0x400000, CRC(f6346860) SHA1(4eebd3fa315b97964fa39b88224f9de7622ba881) )
- ROM_FILL( 0x1800000, 0x800000, 0x00 ) // 6bpp instead of 8bpp
+ ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE00 ) // Sprites
+ ROM_LOAD64_WORD( "cha-03.u16", 0x0000000, 0x400000, CRC(d367429a) SHA1(b32c215ef85c3d0a4c5550cef4f5c4c0e7030b7c) )
+ ROM_LOAD64_WORD( "cha-05.u15", 0x0000002, 0x400000, CRC(e94ec40a) SHA1(2685dbc5680b5f76688c6b4fbe40ae682c525bfe) )
+ ROM_LOAD64_WORD( "cha-01.u21", 0x0000004, 0x400000, CRC(35f47b37) SHA1(4a8eb088890272f2a069e2c3f00fadf6421f7b0e) )
+ ROM_LOAD64_WORD( "cha-04.u18", 0x1000000, 0x400000, CRC(7f2008c3) SHA1(e45d863540eb2381f5d7660d64cdfef87c890768) )
+ ROM_LOAD64_WORD( "cha-06.u17", 0x1000002, 0x400000, CRC(5cb0b3a9) SHA1(92fb82d45b4c46326d5796981f812e20a8ddb4f2) )
+ ROM_LOAD64_WORD( "cha-02.u22", 0x1000004, 0x400000, CRC(f6346860) SHA1(4eebd3fa315b97964fa39b88224f9de7622ba881) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "cha-07.u32", 0x000000, 0x400000, CRC(817519ee) SHA1(ed09740cdbf61a328f7b50eb569cf498fb749416) )
@@ -3523,14 +3327,14 @@ ROM_START( myangel )
ROM_LOAD16_BYTE( "kq1-tblo.u5", 0x100001, 0x080000, CRC(760cab15) SHA1(fa7ea85ec2ebfaab3111b8631ea6ea3d794d449c) )
ROM_REGION( 0x1000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "kq1-cg2.u20", 0x000000, 0x200000, CRC(80b4e8de) SHA1(c8685c4f4e3c0415ce0ec88e0288835e504cab00) )
- ROM_LOAD( "kq1-cg0.u16", 0x200000, 0x200000, CRC(f8ae9a05) SHA1(4f3b41386a48a1608aa96b911e6b74ca775260fb) )
- ROM_LOAD( "kq1-cg3.u19", 0x400000, 0x200000, CRC(9bdc35c9) SHA1(fd0a1eb3dd10705bce5462263667353632558b58) )
- ROM_LOAD( "kq1-cg1.u15", 0x600000, 0x200000, CRC(23bd7ea4) SHA1(e925bbadc33fc2586bb18283cf989ab35f28c1e9) )
- ROM_LOAD( "kq1-cg6.u22", 0x800000, 0x200000, CRC(b25acf12) SHA1(5cca35921f3b376c3cc36f5b009eb845db2e1897) )
- ROM_LOAD( "kq1-cg4.u18", 0xa00000, 0x200000, CRC(dca7f8f2) SHA1(20595c7940a28d01bdc6610b67aaaeac61ba92e2) )
- ROM_LOAD( "kq1-cg7.u21", 0xc00000, 0x200000, CRC(9f48382c) SHA1(80dfc33a55123b5d3cdb3ed97b43a527f0254d61) )
- ROM_LOAD( "kq1-cg5.u17", 0xe00000, 0x200000, CRC(a4bc4516) SHA1(0eb11fa54d16bba1b96f9dd943a68949a3bb9a2f) )
+ ROM_LOAD64_WORD( "kq1-cg2.u20", 0x000000, 0x200000, CRC(80b4e8de) SHA1(c8685c4f4e3c0415ce0ec88e0288835e504cab00) )
+ ROM_LOAD64_WORD( "kq1-cg3.u19", 0x000002, 0x200000, CRC(9bdc35c9) SHA1(fd0a1eb3dd10705bce5462263667353632558b58) )
+ ROM_LOAD64_WORD( "kq1-cg6.u22", 0x000004, 0x200000, CRC(b25acf12) SHA1(5cca35921f3b376c3cc36f5b009eb845db2e1897) )
+ ROM_LOAD64_WORD( "kq1-cg7.u21", 0x000006, 0x200000, CRC(9f48382c) SHA1(80dfc33a55123b5d3cdb3ed97b43a527f0254d61) )
+ ROM_LOAD64_WORD( "kq1-cg0.u16", 0x800000, 0x200000, CRC(f8ae9a05) SHA1(4f3b41386a48a1608aa96b911e6b74ca775260fb) )
+ ROM_LOAD64_WORD( "kq1-cg1.u15", 0x800002, 0x200000, CRC(23bd7ea4) SHA1(e925bbadc33fc2586bb18283cf989ab35f28c1e9) )
+ ROM_LOAD64_WORD( "kq1-cg4.u18", 0x800004, 0x200000, CRC(dca7f8f2) SHA1(20595c7940a28d01bdc6610b67aaaeac61ba92e2) )
+ ROM_LOAD64_WORD( "kq1-cg5.u17", 0x800006, 0x200000, CRC(a4bc4516) SHA1(0eb11fa54d16bba1b96f9dd943a68949a3bb9a2f) )
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
ROM_LOAD( "kq1-snd.u32", 0x000000, 0x200000, CRC(8ca1b449) SHA1(f54096fb5400843af4879135c96760485b6cb319) )
@@ -3559,14 +3363,14 @@ ROM_START( myangel2 )
ROM_LOAD16_BYTE( "kqs1o-tb.u5", 0x100001, 0x080000, CRC(b6168737) SHA1(4c3de877c0c1dca1c43ac737a0bf231335237d3a) )
ROM_REGION( 0x1800000, "sprites", 0 ) // Sprites
- ROM_LOAD( "kqs1-cg4.u20", 0x0000000, 0x200000, CRC(d1802241) SHA1(52c45a13d46f7ee8043e85b99d07b1765ca93dcc) )
- ROM_LOAD( "kqs1-cg0.u16", 0x0200000, 0x400000, CRC(c21a33a7) SHA1(bc6f479a8f4c716ba79a725f160ddeb95fdedbcb) )
- ROM_LOAD( "kqs1-cg5.u19", 0x0600000, 0x200000, CRC(d86cf19c) SHA1(da5a5b576ce107433605b24d8b9dcd0abd46bcde) )
- ROM_LOAD( "kqs1-cg1.u15", 0x0800000, 0x400000, CRC(dca799ba) SHA1(8379b11472c27b1945fe7fc274c7fedf756accba) )
- ROM_LOAD( "kqs1-cg6.u22", 0x0c00000, 0x200000, CRC(3f08886b) SHA1(054546ae44ffa5d0973f4ead080fe720a340e144) )
- ROM_LOAD( "kqs1-cg2.u18", 0x0e00000, 0x400000, CRC(f7f92c7e) SHA1(24a525a15fded0de6e382b346da6bd5e7b9eced5) )
- ROM_LOAD( "kqs1-cg7.u21", 0x1200000, 0x200000, CRC(2c977904) SHA1(2589447f2471cdc414266b34aff552044c680d93) )
- ROM_LOAD( "kqs1-cg3.u17", 0x1400000, 0x400000, CRC(de3b2191) SHA1(d7d6ea07b665cfd834747d3c0776b968ce03bc6a) )
+ ROM_LOAD64_WORD( "kqs1-cg4.u20", 0x0000000, 0x200000, CRC(d1802241) SHA1(52c45a13d46f7ee8043e85b99d07b1765ca93dcc) )
+ ROM_LOAD64_WORD( "kqs1-cg5.u19", 0x0000002, 0x200000, CRC(d86cf19c) SHA1(da5a5b576ce107433605b24d8b9dcd0abd46bcde) )
+ ROM_LOAD64_WORD( "kqs1-cg6.u22", 0x0000004, 0x200000, CRC(3f08886b) SHA1(054546ae44ffa5d0973f4ead080fe720a340e144) )
+ ROM_LOAD64_WORD( "kqs1-cg7.u21", 0x0000006, 0x200000, CRC(2c977904) SHA1(2589447f2471cdc414266b34aff552044c680d93) )
+ ROM_LOAD64_WORD( "kqs1-cg0.u16", 0x0800000, 0x400000, CRC(c21a33a7) SHA1(bc6f479a8f4c716ba79a725f160ddeb95fdedbcb) )
+ ROM_LOAD64_WORD( "kqs1-cg1.u15", 0x0800002, 0x400000, CRC(dca799ba) SHA1(8379b11472c27b1945fe7fc274c7fedf756accba) )
+ ROM_LOAD64_WORD( "kqs1-cg2.u18", 0x0800004, 0x400000, CRC(f7f92c7e) SHA1(24a525a15fded0de6e382b346da6bd5e7b9eced5) )
+ ROM_LOAD64_WORD( "kqs1-cg3.u17", 0x0800006, 0x400000, CRC(de3b2191) SHA1(d7d6ea07b665cfd834747d3c0776b968ce03bc6a) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "kqs1-snd.u32", 0x000000, 0x400000, CRC(792a6b49) SHA1(341b4e8f248b5032217733bada32e353c67e3888) )
@@ -3712,10 +3516,10 @@ ROM_START( pzlbowl )
ROM_LOAD16_BYTE( "kup-u07.i03", 0x000001, 0x080000, CRC(a0423a04) SHA1(9539023c5c2f2bf72ee3fb6105443ffd3d61e2f8) )
ROM_REGION( 0x1000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "kuc-u38.i00", 0x000000, 0x400000, CRC(3db24172) SHA1(89c39963e15c53b799994185d0c8b2e795478939) )
- ROM_LOAD( "kuc-u39.i00", 0x400000, 0x400000, CRC(9b26619b) SHA1(ea7a0bf46641d15353217b01e761d1a148bee4e7) )
- ROM_LOAD( "kuc-u40.i00", 0x800000, 0x400000, CRC(7e49a2cf) SHA1(d24683addbc54515c33fb620ac500e6702bd9e17) )
- ROM_LOAD( "kuc-u41.i00", 0xc00000, 0x400000, CRC(2febf19b) SHA1(8081ac590c0463529777b5e4817305a1a6f6ea41) )
+ ROM_LOAD64_WORD( "kuc-u38.i00", 0x000000, 0x400000, CRC(3db24172) SHA1(89c39963e15c53b799994185d0c8b2e795478939) )
+ ROM_LOAD64_WORD( "kuc-u39.i00", 0x000002, 0x400000, CRC(9b26619b) SHA1(ea7a0bf46641d15353217b01e761d1a148bee4e7) )
+ ROM_LOAD64_WORD( "kuc-u40.i00", 0x000004, 0x400000, CRC(7e49a2cf) SHA1(d24683addbc54515c33fb620ac500e6702bd9e17) )
+ ROM_LOAD64_WORD( "kuc-u41.i00", 0x000006, 0x400000, CRC(2febf19b) SHA1(8081ac590c0463529777b5e4817305a1a6f6ea41) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "kus-u18.i00", 0x000000, 0x400000, CRC(e2b1dfcf) SHA1(fb0b8be119531a1a27efa46ed7b86b05a37ed585) )
@@ -3798,11 +3602,11 @@ ROM_START( penbros ) // Genuine P0-142A PCB & original ROM labels
ROM_LOAD16_BYTE( "a-blast_jpn_u06.u06", 0x000000, 0x080000, CRC(7bbdffac) SHA1(d5766cb171b8d2e4c04a6bae37181fa5ada9d797) )
ROM_LOAD16_BYTE( "a-blast_jpn_u07.u07", 0x000001, 0x080000, CRC(d50cda5f) SHA1(fc66f55f2070b447c5db85c948ce40adc37512f7) )
- ROM_REGION( 0x1000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "a-blast_jpn_u38.u38", 0x000000, 0x400000, CRC(4247b39e) SHA1(f273931293beced312e02c870bf35e9cf0c91a8b) )
- ROM_LOAD( "a-blast_jpn_u39.u39", 0x400000, 0x400000, CRC(f9f07faf) SHA1(66fc4a9ad422fb384d2c775e43619137226898fc) )
- ROM_LOAD( "a-blast_jpn_u40.u40", 0x800000, 0x400000, CRC(dc9e0a96) SHA1(c2c8ccf9039ee0e179b08fdd2d37f29899349cda) )
- ROM_FILL( 0xc00000, 0x400000, 0x00 ) // 6bpp instead of 8bpp
+ ROM_REGION( 0x1000000, "sprites", ROMREGION_ERASE00 ) // Sprites
+ ROM_LOAD64_WORD( "a-blast_jpn_u38.u38", 0x000000, 0x400000, CRC(4247b39e) SHA1(f273931293beced312e02c870bf35e9cf0c91a8b) )
+ ROM_LOAD64_WORD( "a-blast_jpn_u39.u39", 0x000002, 0x400000, CRC(f9f07faf) SHA1(66fc4a9ad422fb384d2c775e43619137226898fc) )
+ ROM_LOAD64_WORD( "a-blast_jpn_u40.u40", 0x000004, 0x400000, CRC(dc9e0a96) SHA1(c2c8ccf9039ee0e179b08fdd2d37f29899349cda) )
+ // 6bpp instead of 8bpp
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
ROM_LOAD( "a-blast_jpn_u18.u18", 0x000000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
@@ -3814,10 +3618,10 @@ ROM_START( ablast ) // Genuine P0-142A PCB & original ROM labels
ROM_LOAD16_BYTE( "a-blast_twn_u07.u07", 0x000001, 0x080000, CRC(d4ddc16b) SHA1(63312ce9ec6dffb47aa6aed505f077f20713e5ac) )
ROM_REGION( 0x1000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "a-blast_twn_u38.u38", 0x000000, 0x400000, CRC(090923da) SHA1(c1eaa8847fe183819af040d97d0e6d1cd9928991) )
- ROM_LOAD( "a-blast_twn_u39.u39", 0x400000, 0x400000, CRC(6bb17d83) SHA1(b53d8cfc3833df937b92993f9eca17c805c5f58d) )
- ROM_LOAD( "a-blast_twn_u40.u40", 0x800000, 0x400000, CRC(db94847d) SHA1(fd2e29a45bb0acbd9e709256c7fc27bdd64a6634) )
- ROM_FILL( 0xc00000, 0x400000, 0x00 ) // 6bpp instead of 8bpp
+ ROM_LOAD64_WORD( "a-blast_twn_u38.u38", 0x000000, 0x400000, CRC(090923da) SHA1(c1eaa8847fe183819af040d97d0e6d1cd9928991) )
+ ROM_LOAD64_WORD( "a-blast_twn_u39.u39", 0x000002, 0x400000, CRC(6bb17d83) SHA1(b53d8cfc3833df937b92993f9eca17c805c5f58d) )
+ ROM_LOAD64_WORD( "a-blast_twn_u40.u40", 0x000004, 0x400000, CRC(db94847d) SHA1(fd2e29a45bb0acbd9e709256c7fc27bdd64a6634) )
+ // 6bpp instead of 8bpp
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
ROM_LOAD( "a-blast_twn_u18.u18", 0x000000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
@@ -3828,10 +3632,10 @@ ROM_START( ablastb ) // bootleg PCB with standard 68000 instead of TMP68301 and
ROM_LOAD16_WORD_SWAP( "1.bin", 0x000000, 0x100000, CRC(4adbd826) SHA1(004e3d0d5cb44c00283bc02f6d727e023690226d) )
ROM_REGION( 0x1000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "2.bin", 0x000000, 0x400000, CRC(090923da) SHA1(c1eaa8847fe183819af040d97d0e6d1cd9928991) )
- ROM_LOAD( "3.bin", 0x400000, 0x400000, CRC(6bb17d83) SHA1(b53d8cfc3833df937b92993f9eca17c805c5f58d) )
- ROM_LOAD( "4.bin", 0x800000, 0x400000, CRC(db94847d) SHA1(fd2e29a45bb0acbd9e709256c7fc27bdd64a6634) )
- ROM_FILL( 0xc00000, 0x400000, 0x00 ) // 6bpp instead of 8bpp
+ ROM_LOAD64_WORD( "2.bin", 0x000000, 0x400000, CRC(090923da) SHA1(c1eaa8847fe183819af040d97d0e6d1cd9928991) )
+ ROM_LOAD64_WORD( "3.bin", 0x000002, 0x400000, CRC(6bb17d83) SHA1(b53d8cfc3833df937b92993f9eca17c805c5f58d) )
+ ROM_LOAD64_WORD( "4.bin", 0x000004, 0x400000, CRC(db94847d) SHA1(fd2e29a45bb0acbd9e709256c7fc27bdd64a6634) )
+ // 6bpp instead of 8bpp
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples. ROM content matches the penbros' one, but there's no proper X1-010 on the PCB. Possibly one of the FPGAs acts as a substitute?
ROM_LOAD( "29f1610.bin", 0x000000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
@@ -3933,10 +3737,10 @@ ROM_START( reelquak )
ROM_LOAD16_BYTE( "rq_ver1.05.u3", 0x00001, 0x80000, CRC(8c78889e) SHA1(584ba123e9caafdbddc96a4d9b2b6f6994fa84b0) ) // Should be KF00x004, x = revision
ROM_REGION( 0x800000, "sprites", 0 ) // Sprites
- ROM_LOAD( "kf-001-005_t42.u16", 0x000000, 0x200000, CRC(25e07d5c) SHA1(dd0818611f39be25dc6f0c737da4e79c6c0f9659) )
- ROM_LOAD( "kf-001-006_t43.u15", 0x200000, 0x200000, CRC(67e2ecc4) SHA1(35cdaf7fcd29e0229da104baced41fa7620dba3d) )
- ROM_LOAD( "kf-001-007_t44.u18", 0x400000, 0x200000, CRC(9daec83d) SHA1(07de144898deac5058d05466f29682d7840323b7) )
- ROM_LOAD( "kf-001-008_t45.u17", 0x600000, 0x200000, CRC(f6ef6e41) SHA1(c3e838dd4dc340f44abdf45ec0b90de24f50dda9) )
+ ROM_LOAD64_WORD( "kf-001-005_t42.u16", 0x000000, 0x200000, CRC(25e07d5c) SHA1(dd0818611f39be25dc6f0c737da4e79c6c0f9659) )
+ ROM_LOAD64_WORD( "kf-001-006_t43.u15", 0x000002, 0x200000, CRC(67e2ecc4) SHA1(35cdaf7fcd29e0229da104baced41fa7620dba3d) )
+ ROM_LOAD64_WORD( "kf-001-007_t44.u18", 0x000004, 0x200000, CRC(9daec83d) SHA1(07de144898deac5058d05466f29682d7840323b7) )
+ ROM_LOAD64_WORD( "kf-001-008_t45.u17", 0x000006, 0x200000, CRC(f6ef6e41) SHA1(c3e838dd4dc340f44abdf45ec0b90de24f50dda9) )
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
ROM_LOAD( "kf-001-009_t46.u32", 0x000000, 0x200000, CRC(2a9641f9) SHA1(efb9df78f1877eddf29c4dae2461546adb9cea8f) )
@@ -4029,10 +3833,10 @@ ROM_START( endrichs )
ROM_LOAD16_BYTE( "kfp_u03_c12.u3", 0x00001, 0x80000, CRC(2baee8d1) SHA1(f86920382c54a259adb1dee253859561746d215a) )
ROM_REGION( 0x800000, "sprites", 0 ) // Sprites
- ROM_LOAD( "kfc-u16-c00.u16", 0x000000, 0x200000, CRC(cbfe5e0f) SHA1(6c7c8088c43231997ac47ce05cf43c78c1fdad47) )
- ROM_LOAD( "kfc-u15-c00.u15", 0x200000, 0x200000, CRC(98e4c36c) SHA1(651be122b78f225d38878ae90776f66989440590) )
- ROM_LOAD( "kfc-u18-c00.u18", 0x400000, 0x200000, CRC(561ac136) SHA1(96da493157405a5d3d72b8cc3004abd3fa3eadfa) )
- ROM_LOAD( "kfc-u17-c00.u17", 0x600000, 0x200000, CRC(34660029) SHA1(cf09b97422497d739f71e6ff8b9974fca0329928) )
+ ROM_LOAD64_WORD( "kfc-u16-c00.u16", 0x000000, 0x200000, CRC(cbfe5e0f) SHA1(6c7c8088c43231997ac47ce05cf43c78c1fdad47) )
+ ROM_LOAD64_WORD( "kfc-u15-c00.u15", 0x000002, 0x200000, CRC(98e4c36c) SHA1(651be122b78f225d38878ae90776f66989440590) )
+ ROM_LOAD64_WORD( "kfc-u18-c00.u18", 0x000004, 0x200000, CRC(561ac136) SHA1(96da493157405a5d3d72b8cc3004abd3fa3eadfa) )
+ ROM_LOAD64_WORD( "kfc-u17-c00.u17", 0x000006, 0x200000, CRC(34660029) SHA1(cf09b97422497d739f71e6ff8b9974fca0329928) )
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
ROM_LOAD( "kfs-u32-c00.u32", 0x000000, 0x200000, CRC(e9ffbecf) SHA1(3cc9ab3f4be1a305235603a68ca1e15797fb27cb) )
@@ -4344,10 +4148,10 @@ ROM_START( deerhunt ) /* Deer Hunting USA V4.3 (11/1/2000) - The "E05" breaks ve
ROM_LOAD16_BYTE( "as0907e05.u07", 0x000001, 0x100000, CRC(1731aa2a) SHA1(cffae7a99a7f960a62ef0c4454884df17a93c1a6) ) /* checksum 5D89 printed on label */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
- ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
- ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
- ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
+ ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
+ ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
+ ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
+ ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
@@ -4359,10 +4163,10 @@ ROM_START( deerhunta ) /* Deer Hunting USA V4.2 (xx/x/2000) */
ROM_LOAD16_BYTE( "as0907e04-v4_2.u07", 0x000001, 0x100000, CRC(83f02117) SHA1(70fc2291bc93af3902aae88688be6a8078f7a07e) ) /* checksum 595A printed on label */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
- ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
- ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
- ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
+ ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
+ ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
+ ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
+ ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
@@ -4374,10 +4178,10 @@ ROM_START( deerhuntb ) /* Deer Hunting USA V4.0 (6/15/2000) */
ROM_LOAD16_BYTE( "as0907e04.u07", 0x000001, 0x100000, CRC(19973d08) SHA1(da1cc02ce480a62ccaf94d0af1246a340f054b43) ) /* checksum 4C78 printed on label */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
- ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
- ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
- ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
+ ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
+ ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
+ ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
+ ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
@@ -4391,10 +4195,10 @@ ROM_START( deerhuntc ) /* These rom labels break label conventions but is correc
ROM_LOAD16_BYTE( "as0938e01.u07", 0x000001, 0x100000, CRC(c7657889) SHA1(4cc707c8abbc0862457375a9a910d3c338859193) ) /* SUM16 = 27D7 */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
- ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
- ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
- ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
+ ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
+ ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
+ ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
+ ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
@@ -4406,10 +4210,10 @@ ROM_START( deerhuntd ) /* Deer Hunting USA V2.x - No version number is printed t
ROM_LOAD16_BYTE( "as0907e02.u07", 0x000001, 0x100000, CRC(9de2b901) SHA1(d271bc54c41e30c0d9962eedd22f3ef2b7b8c9e5) ) /* Verified with two different sets of chips */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
- ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
- ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
- ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
+ ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
+ ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
+ ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
+ ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
@@ -4421,10 +4225,10 @@ ROM_START( deerhunte ) /* Deer Hunting USA V1.x - No version number is printed t
ROM_LOAD16_BYTE( "as0907e01.u07", 0x000001, 0x100000, CRC(ddeb0f97) SHA1(a2578071f3506d69057d2256685b969adc50d275) ) /* Verified with two different sets of chips */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
- ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
- ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
- ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
+ ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
+ ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
+ ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
+ ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
@@ -4436,10 +4240,10 @@ ROM_START( turkhunt ) /* V1.0 is currently the only known version */
ROM_LOAD16_BYTE( "asx907e01.u07", 0x000001, 0x100000, CRC(7c67b502) SHA1(6a0e8883a115dac4095d86897e7eca2a007a1c71) ) /* checksum AB40 printed on label */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "asx901m01.u38", 0x0000000, 0x800000, CRC(eabd3f44) SHA1(5a1ac986d11a8b019e18761cf4ea0a6f49fbdbfc) )
- ROM_LOAD( "asx902m01.u39", 0x0800000, 0x800000, CRC(c32130c8) SHA1(70d56ebed1f51657aaee02f95ac51589733e6eb7) )
- ROM_LOAD( "asx903m01.u40", 0x1000000, 0x800000, CRC(5f86c322) SHA1(5a72adb99eea176199f172384cb051e2b045ab94) )
- ROM_LOAD( "asx904m01.u41", 0x1800000, 0x800000, CRC(c77e0b66) SHA1(0eba30e62e4bd38c198fa6cb69fb94d002ded77a) )
+ ROM_LOAD64_WORD( "asx901m01.u38", 0x0000000, 0x800000, CRC(eabd3f44) SHA1(5a1ac986d11a8b019e18761cf4ea0a6f49fbdbfc) )
+ ROM_LOAD64_WORD( "asx902m01.u39", 0x0000002, 0x800000, CRC(c32130c8) SHA1(70d56ebed1f51657aaee02f95ac51589733e6eb7) )
+ ROM_LOAD64_WORD( "asx903m01.u40", 0x0000004, 0x800000, CRC(5f86c322) SHA1(5a72adb99eea176199f172384cb051e2b045ab94) )
+ ROM_LOAD64_WORD( "asx904m01.u41", 0x0000006, 0x800000, CRC(c77e0b66) SHA1(0eba30e62e4bd38c198fa6cb69fb94d002ded77a) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "asx905m01.u18", 0x000000, 0x400000, CRC(8d9dd9a9) SHA1(1fc2f3688d2c24c720dca7357bca6bf5f4016c53) )
@@ -4451,10 +4255,10 @@ ROM_START( wschamp ) /* Wing Shooting Championship V2.00 (01/23/2002) */
ROM_LOAD16_BYTE( "as1007e03.u07", 0x000001, 0x100000, CRC(572624f0) SHA1(0c2f67daa22f4edd66a2be990dc6cd999faff0fa) ) /* also commonly labeled as: WSC U7 Ver. 2.00 A48F */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
- ROM_LOAD( "as1002m01.u39", 0x0800000, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
- ROM_LOAD( "as1003m01.u40", 0x1000000, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
- ROM_LOAD( "as1004m01.u41", 0x1800000, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
+ ROM_LOAD64_WORD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
+ ROM_LOAD64_WORD( "as1002m01.u39", 0x0000002, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
+ ROM_LOAD64_WORD( "as1003m01.u40", 0x0000004, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
+ ROM_LOAD64_WORD( "as1004m01.u41", 0x0000006, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as1005m01.u18", 0x000000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
@@ -4466,10 +4270,10 @@ ROM_START( wschampa ) /* Wing Shooting Championship V1.01 */
ROM_LOAD16_BYTE( "as1007e02.u07", 0x000001, 0x100000, CRC(78ede6d9) SHA1(e6d10f52cd4c6bf97288df44911f23bb64fc012c) ) /* checksum 615E printed on label */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
- ROM_LOAD( "as1002m01.u39", 0x0800000, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
- ROM_LOAD( "as1003m01.u40", 0x1000000, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
- ROM_LOAD( "as1004m01.u41", 0x1800000, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
+ ROM_LOAD64_WORD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
+ ROM_LOAD64_WORD( "as1002m01.u39", 0x0000002, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
+ ROM_LOAD64_WORD( "as1003m01.u40", 0x0000004, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
+ ROM_LOAD64_WORD( "as1004m01.u41", 0x0000006, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as1005m01.u18", 0x000000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
@@ -4481,10 +4285,10 @@ ROM_START( wschampb ) /* Wing Shooting Championship V1.00, dumps match listed ch
ROM_LOAD16_BYTE( "as10u7.u07", 0x000001, 0x100000, CRC(cf23be7d) SHA1(b9130757466ff0d41d261b1c2435d36d2452df54) ) /* checksum 1537 & 10/26 16:00 hand written on label */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
- ROM_LOAD( "as1002m01.u39", 0x0800000, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
- ROM_LOAD( "as1003m01.u40", 0x1000000, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
- ROM_LOAD( "as1004m01.u41", 0x1800000, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
+ ROM_LOAD64_WORD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
+ ROM_LOAD64_WORD( "as1002m01.u39", 0x0000002, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
+ ROM_LOAD64_WORD( "as1003m01.u40", 0x0000004, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
+ ROM_LOAD64_WORD( "as1004m01.u41", 0x0000006, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as1005m01.u18", 0x000000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
@@ -4496,10 +4300,10 @@ ROM_START( trophyh ) /* Version 1.00 - v: Thu Mar 28 12:35:50 2002 JST-9 - on a
ROM_LOAD16_BYTE( "as1107e01.u07", 0x000001, 0x100000, CRC(19ee67cb) SHA1(e75ce66d3ff5aad46ba997c09d6514260e617f55) ) /* also commonly labeled as: Trophy U7 Ver. 1.00 CEEF */
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
- ROM_LOAD( "as1101m01.u38", 0x0000000, 0x800000, CRC(855ed675) SHA1(84ce229a9feb6331413253a5aed10b362e8102e5) )
- ROM_LOAD( "as1102m01.u39", 0x0800000, 0x800000, CRC(d186d271) SHA1(3c54438b35adfab8be91df0a633270d6db49beef) )
- ROM_LOAD( "as1103m01.u40", 0x1000000, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) )
- ROM_LOAD( "as1104m01.u41", 0x1800000, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) )
+ ROM_LOAD64_WORD( "as1101m01.u38", 0x0000000, 0x800000, CRC(855ed675) SHA1(84ce229a9feb6331413253a5aed10b362e8102e5) )
+ ROM_LOAD64_WORD( "as1102m01.u39", 0x0000002, 0x800000, CRC(d186d271) SHA1(3c54438b35adfab8be91df0a633270d6db49beef) )
+ ROM_LOAD64_WORD( "as1103m01.u40", 0x0000004, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) )
+ ROM_LOAD64_WORD( "as1104m01.u41", 0x0000006, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) )
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as1105m01.u18", 0x000000, 0x400000, CRC(633d0df8) SHA1(3401c424f5c207ef438a9269e0c0e7d482771fed) )
@@ -4527,10 +4331,10 @@ ROM_START( trophyht ) /* V1.00 Location Test - v: Tue Feb 26 18:18:43 2002 JST-9
ROM_LOAD( "lh28f016sat.u33", 0x1a00000, 0x200000, NO_DUMP )
ROM_LOAD( "lh28f016sat.u34", 0x1c00000, 0x200000, NO_DUMP )
ROM_LOAD( "lh28f016sat.u35", 0x1e00000, 0x200000, NO_DUMP )
- ROM_LOAD( "as1101m01.u38", 0x0000000, 0x800000, CRC(855ed675) SHA1(84ce229a9feb6331413253a5aed10b362e8102e5) ) /* Load these in until the flash ROMs are dumped */
- ROM_LOAD( "as1102m01.u39", 0x0800000, 0x800000, CRC(d186d271) SHA1(3c54438b35adfab8be91df0a633270d6db49beef) ) /* Load these in until the flash ROMs are dumped */
- ROM_LOAD( "as1103m01.u40", 0x1000000, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) ) /* Load these in until the flash ROMs are dumped */
- ROM_LOAD( "as1104m01.u41", 0x1800000, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) ) /* Load these in until the flash ROMs are dumped */
+ ROM_LOAD64_WORD( "as1101m01.u38", 0x0000000, 0x800000, CRC(855ed675) SHA1(84ce229a9feb6331413253a5aed10b362e8102e5) ) /* Load these in until the flash ROMs are dumped */
+ ROM_LOAD64_WORD( "as1102m01.u39", 0x0000002, 0x800000, CRC(d186d271) SHA1(3c54438b35adfab8be91df0a633270d6db49beef) ) /* Load these in until the flash ROMs are dumped */
+ ROM_LOAD64_WORD( "as1103m01.u40", 0x0000004, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) ) /* Load these in until the flash ROMs are dumped */
+ ROM_LOAD64_WORD( "as1104m01.u41", 0x0000006, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) ) /* Load these in until the flash ROMs are dumped */
ROM_REGION( 0x400000, "x1snd", 0 ) // Samples
ROM_LOAD( "as1105m01.u18", 0x000000, 0x400000, CRC(633d0df8) SHA1(3401c424f5c207ef438a9269e0c0e7d482771fed) ) /* unlabeled 27C322 with same data as AS1105M01 mask ROM */
@@ -4621,11 +4425,13 @@ ROM_START( telpacfl )
ROM_LOAD16_BYTE( "mp3_prgodd__u3_v1.0.u3", 0x000001, 0x080000, CRC(2a324139) SHA1(1812a7a8a2c4e222a1e5c7cb6d39cf7bf7f037db) )
ROM_REGION( 0x800000, "sprites", ROMREGION_ERASE00 ) // Sprites
- ROM_LOAD( "mp3_cg-0__u16_v1.0.u16", 0x000000, 0x200000, CRC(9d8453ba) SHA1(d97240ce68d6e64527930e919710764a7b669cdf) )
- ROM_LOAD( "mp3_cg-1__u15_v1.0.u15", 0x200000, 0x200000, CRC(8ab83f38) SHA1(5ebc682b80d0d97025a97824a899946712e7acd4) )
- ROM_LOAD( "mp3_cg-2__u21_v1.0.u21", 0x400000, 0x200000, BAD_DUMP CRC(54dc430b) SHA1(a2e55866249d01f6f2f2dd998421baf9fe0c6972) ) // physically damaged eprom
- ROM_FILL ( 0x400000, 0x200000, 0 ) // wipe out the bad rom
+ ROM_LOAD64_WORD( "mp3_cg-0__u16_v1.0.u16", 0x000000, 0x200000, CRC(9d8453ba) SHA1(d97240ce68d6e64527930e919710764a7b669cdf) )
+ ROM_LOAD64_WORD( "mp3_cg-1__u15_v1.0.u15", 0x000002, 0x200000, CRC(8ab83f38) SHA1(5ebc682b80d0d97025a97824a899946712e7acd4) )
+ ROM_REGION( 0x800000, "unused", ROMREGION_ERASE00 ) // Sprites
+ // not decoding the bad ROM is better than loading corrupt gfx data
+ ROM_LOAD64_WORD( "mp3_cg-2__u21_v1.0.u21", 0x000004, 0x200000, BAD_DUMP CRC(54dc430b) SHA1(a2e55866249d01f6f2f2dd998421baf9fe0c6972) ) // physically damaged eprom
+
ROM_REGION( 0x100000, "x1snd", 0 ) // Samples
ROM_LOAD( "mp3_sound0__u111_v1.0.u111", 0x000000, 0x080000, CRC(711c915e) SHA1(d654a0c158cf54aab5faca913583c5620388aa46) )
ROM_LOAD( "mp3_sound1__u112_v1.0.u112", 0x080000, 0x080000, CRC(27fd83cd) SHA1(d0261b2c5354ea17061e71bcea747d70efc18a49) )
diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp
index 8052a4ea59e..3da8c96d999 100644
--- a/src/mame/drivers/ssv.cpp
+++ b/src/mame/drivers/ssv.cpp
@@ -3212,6 +3212,34 @@ ROM_START( eaglshot )
ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
ROM_END
+ROM_START( eaglshotj )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* V60 Code */
+ ROM_LOAD16_BYTE( "sammygolf.u18", 0x000000, 0x080000, CRC(b6d6869c) SHA1(7528751fad783e9b0fd217d2fac2ab408814a583) ) // handwritten labels on prg ROMs, other ROMS had no labels.
+ ROM_LOAD16_BYTE( "sammygolf.u20", 0x000001, 0x080000, CRC(c8872e48) SHA1(c8e1e712d5fa380f8fc1447502f21d2ae592811a) )
+
+ ROM_REGION16_LE( 0xe00000, "gfxdata", ROMREGION_ERASEFF ) /* Sprites - Read by the CPU */
+ ROM_LOAD( "si003-01.u13", 0x0000000, 0x200000, CRC(d7df0d52) SHA1(d7b79a186f4272334c2297666c52f32c05787c29) )
+ ROM_LOAD( "si003-02.u12", 0x0200000, 0x200000, CRC(92b4d50d) SHA1(9dc2f2961b088824d8370ac83dff796345fe4158) )
+ ROM_LOAD( "si003-03.u11", 0x0400000, 0x200000, CRC(6ede4012) SHA1(6663990c6ee8e500cb8c51ad2102761ee0b3351d) )
+ ROM_LOAD( "si003-04.u10", 0x0600000, 0x200000, CRC(4c65d1a1) SHA1(165f16d08813d2c989ddce4bb23b3a3652003bd5) )
+ ROM_LOAD( "si003-05.u30", 0x0800000, 0x200000, CRC(daf52d56) SHA1(108419ef7d3716a3890b0d8bcbfddc1585daaae8) )
+ ROM_LOAD( "si003-06.u31", 0x0a00000, 0x200000, CRC(449f9ae5) SHA1(b3e664eb88d14d1e25a0cfc8dcccc8270ca778c9) )
+
+ ROM_REGION16_BE( 0x400000, "ensoniq.0", 0 ) /* Samples */
+ ROM_LOAD16_WORD_SWAP( "si003-07.u23", 0x000000, 0x200000, CRC(81679fd6) SHA1(ca3b07a87781278b5c7c85951728bbe5dfcbe042) )
+ ROM_LOAD16_WORD_SWAP( "si003-08.u24", 0x200000, 0x200000, CRC(d0122ba2) SHA1(96230fb690cf144cd873f7d51c0304736a698316) )
+
+ ROM_REGION16_BE( 0x400000, "ensoniq.1", 0 ) /* Samples */
+ ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
+
+ ROM_REGION16_BE( 0x400000, "ensoniq.2", 0 ) /* Samples */
+ ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
+
+ ROM_REGION16_BE( 0x400000, "ensoniq.3", 0 ) /* Samples */
+ ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
+ROM_END
+
+
/***************************************************************************
@@ -4742,6 +4770,7 @@ GAME( 1993, survartsj, survarts, survarts, survarts, ssv_state, init_survarts,
GAME( 1994, drifto94, 0, drifto94, drifto94, ssv_state, init_drifto94, ROT0, "Visco", "Drift Out '94 - The Hard Order (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1994, eaglshot, 0, eaglshot, eaglshot, ssv_state, init_eaglshot, ROT0, "Sammy", "Eagle Shot Golf (US)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, eaglshotj, eaglshot, eaglshot, eaglshot, ssv_state, init_eaglshot, ROT0, "Sammy", "Eagle Shot Golf (Japan, bootleg?)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // from a bootleg ROM board with no proper Seta / Sammy markings, possibly original ROM tho?
GAME( 1995, hypreact, 0, hypreact, hypreact, ssv_state, init_hypreact, ROT0, "Sammy", "Mahjong Hyper Reaction (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h
index d1856ea2ef5..c90ee1c4b0c 100644
--- a/src/mame/includes/seta2.h
+++ b/src/mame/includes/seta2.h
@@ -93,7 +93,6 @@ protected:
DECLARE_READ16_MEMBER(gundamex_eeprom_r);
DECLARE_WRITE16_MEMBER(gundamex_eeprom_w);
- DECLARE_VIDEO_START(yoffset);
DECLARE_VIDEO_START(xoffset);
DECLARE_VIDEO_START(xoffset1);
@@ -141,10 +140,21 @@ protected:
output_finder<11> m_lamps;
int m_xoffset;
- int m_yoffset;
int m_keyboard_row;
std::unique_ptr<uint16_t[]> m_buffered_spriteram;
+private:
+ void drawgfx_line(bitmap_ind16 &bitmap, const rectangle &cliprect, int gfx, const uint8_t* const addr, const uint32_t realcolor, int flipx, int flipy, int base_sx, int shadow, int realline, int line, int opaque);
+ inline void get_tile(uint16_t* spriteram, int is_16x16, int x, int y, int page, int& code, int& attr, int& flipx, int& flipy, int& color);
+
+ std::unique_ptr<uint32_t[]> m_realtilenumber;
+ gfx_element *m_spritegfx;
+
+ uint16_t m_rasterposition;
+ uint16_t m_rasterenabled;
+ TIMER_CALLBACK_MEMBER(raster_timer_done);
+ emu_timer *m_raster_timer;
+
};
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 96a0dc248da..c456efe20da 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -35822,6 +35822,7 @@ cairblad // (c) 1999 Sammy
drifto94 // (c) 1994 Visco
dynagear // (c) 1993 Sammy
eaglshot // (c) 1994 Sammy
+eaglshotj // (c) 1994 Sammy
gdfs // (c) 1995 Banpresto
hypreac2 // (c) 1997 Sammy
hypreact // (c) 1995 Sammy
diff --git a/src/mame/video/seta2.cpp b/src/mame/video/seta2.cpp
index 1ba670cc770..28e098a9226 100644
--- a/src/mame/video/seta2.cpp
+++ b/src/mame/video/seta2.cpp
@@ -56,10 +56,10 @@
Row case:
- 0.w fedc ba-- ---- ---- Number of columns
+ 0.w fedc ba-- ---- ---- Number of columns (local)
---- --98 7654 3210 X
- 2.w fedc ba-- ---- ---- Number of rows - 1
+ 2.w fedc ba-- ---- ---- Number of rows - 1 (local)
---- --98 7654 3210 Y
4.w f--- ---- ---- ---- Tile size: 8x8 (0) or 16x16 (1)
@@ -151,10 +151,20 @@ WRITE16_MEMBER(seta2_state::vregs_w)
case 0x30: // BLANK SCREEN (pzlbowl, myangel)
if (data & ~1) logerror("CPU #0 PC %06X: blank unknown bits %04X\n",m_maincpu->pc(),data);
break;
+
+ case 0x3c: // Raster IRQ related
+ //logerror("%s: Register 3c write (raster enable?) %04X (%04x)\n",machine().describe_context(),data, mem_mask);
+ COMBINE_DATA(&m_rasterenabled);
+ if (m_rasterenabled & 1) m_raster_timer->adjust(m_screen->time_until_pos((m_rasterposition&0x1ff)+0x80, 0), 0);
+ break;
+
+ case 0x3e: // Raster IRQ related
+ //logerror("%s: Register 3e write (raster position?) %04X (%04x)\n",machine().describe_context(),data, mem_mask);
+ COMBINE_DATA(&m_rasterposition);
+ break;
}
}
-
/***************************************************************************
@@ -163,75 +173,96 @@ WRITE16_MEMBER(seta2_state::vregs_w)
***************************************************************************/
-static void seta_drawgfx( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx,
- uint32_t code,uint32_t color,int flipx,int flipy,int x0,int y0,
- int shadow_depth, bool opaque)
+inline void seta2_state::drawgfx_line(bitmap_ind16 &bitmap, const rectangle &cliprect, int which_gfx, const uint8_t* const addr, const uint32_t realcolor, int flipx, int flipy, int base_sx, int use_shadow, int realline, int line, int opaque)
{
- const uint8_t *addr, *source;
- uint8_t pen;
- uint16_t *dest;
- int sx, x1, dx;
- int sy, y1, dy;
-
- addr = gfx->get_data(code % gfx->elements());
- color = gfx->granularity() * (color % gfx->colors());
-
- if ( flipx ) { x1 = x0-1; x0 += gfx->width()-1; dx = -1; }
- else { x1 = x0 + gfx->width(); dx = 1; }
-
- if ( flipy ) { y1 = y0-1; y0 += gfx->height()-1; dy = -1; }
- else { y1 = y0 + gfx->height(); dy = 1; }
-
-#define SETA_DRAWGFX(SETPIXELCOLOR) \
- for ( sy = y0; sy != y1; sy += dy ) \
- { \
- if ( sy >= cliprect.min_y && sy <= cliprect.max_y ) \
- { \
- source = addr; \
- dest = &bitmap.pix16(sy); \
- \
- for ( sx = x0; sx != x1; sx += dx ) \
- { \
- pen = *source++; \
- \
- if ( (pen || opaque) && sx >= cliprect.min_x && sx <= cliprect.max_x ) \
- SETPIXELCOLOR \
- } \
- } \
- \
- addr += gfx->rowbytes(); \
- }
-
- if (shadow_depth)
+ struct drawmodes
{
- int pen_shift = 15 - shadow_depth;
- int pen_mask = (1 << pen_shift) - 1;
- SETA_DRAWGFX( { dest[sx] = ((dest[sx] & pen_mask) | (pen << pen_shift)) & 0x7fff; } )
- }
- else
+ int gfx_mask;
+ int gfx_shift;
+ int shadow;
+ };
+
+ // this is the same logic as ssv.cpp, although this has more known cases, but also some bugs with the handling
+ static constexpr drawmodes BPP_MASK_TABLE[8] = {
+ { 0xff, 0, 4 }, // 0: ultrax, twineag2 text - is there a local / global mixup somewhere, or is this an 'invalid' setting that just enables all planes?
+ { 0x30, 4, 2 }, // 1: unverified case, mimic old driver behavior of only using lowest bit (myangel2 question bubble, myangel endgame)
+ { 0x07, 0, 3 }, // 2: unverified case, mimic old driver behavior of only using lowest bit (myangel "Graduate Tests")
+ { 0xff, 0, 0 }, // 3: unverified case, mimic old driver behavior of only using lowest bit (staraudi question bubble: pen %00011000 with shadow on!)
+ { 0x0f, 0, 3 }, // 4: eagle shot 4bpp birdie text
+ { 0xf0, 4, 4 }, // 5: eagle shot 4bpp japanese text
+ { 0x3f, 0, 5 }, // 6: common 6bpp case + keithlcy (logo), drifto94 (wheels) masking ) (myangel sliding blocks test)
+ { 0xff, 0, 8 }, // 7: common 8bpp case
+ };
+
+ int shadow = BPP_MASK_TABLE[(which_gfx & 0x0700)>>8].shadow;
+ int gfx_mask = BPP_MASK_TABLE[(which_gfx & 0x0700)>>8].gfx_mask;
+ int gfx_shift = BPP_MASK_TABLE[(which_gfx & 0x0700)>>8].gfx_shift;
+
+ if (!use_shadow)
+ shadow = 0;
+
+ const uint8_t* const source = flipy ? addr + (7 - line) * 8 : addr + line * 8;
+
+
+ uint16_t* dest = &bitmap.pix16(realline);
+
+ const int x0 = flipx ? (base_sx + 8 - 1) : (base_sx);
+ const int x1 = flipx ? (base_sx - 1) : (x0 + 8);
+ const int dx = flipx ? (-1) : (1);
+
+ int column = 0;
+ for (int sx = x0; sx != x1; sx += dx)
{
- SETA_DRAWGFX( { dest[sx] = (color + pen) & 0x7fff; } )
+ uint8_t pen = (source[column++] & gfx_mask) >> gfx_shift;
+
+ if (sx >= cliprect.min_x && sx <= cliprect.max_x)
+ {
+ if (pen || opaque)
+ {
+ if (!shadow)
+ {
+ dest[sx] = (realcolor + pen) & 0x7fff;
+ }
+ else
+ {
+ int pen_shift = 15 - shadow;
+ int pen_mask = (1 << pen_shift) - 1;
+ dest[sx] = ((dest[sx] & pen_mask) | (pen << pen_shift)) & 0x7fff;
+ }
+ }
+ }
}
}
-void seta2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
+inline void seta2_state::get_tile(uint16_t* spriteram, int is_16x16, int x, int y, int page, int& code, int& attr, int& flipx, int& flipy, int& color)
+{
+ uint16_t *s3 = &spriteram[2 * ((page * 0x2000 / 4) + ((y & 0x1f) << 6) + (x & 0x03f))];
+ attr = s3[0];
+ code = s3[1] + ((attr & 0x0007) << 16);
+ flipx = (attr & 0x0010);
+ flipy = (attr & 0x0008);
+ color = (attr & 0xffe0) >> 5;
+ if (is_16x16)
+ code &= ~3;
+}
+
+void seta2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// Sprites list
// When debugging, use m_spriteram here, and run mame -update_in_pause, i.e.:
// uint16_t *buffered_spriteram16 = m_spriteram;
uint16_t *buffered_spriteram16 = m_buffered_spriteram.get();
- uint16_t *s1 = buffered_spriteram16 + 0x3000/2;
- uint16_t *end = &buffered_spriteram16[m_spriteram.bytes()/2];
+ uint16_t *s1 = buffered_spriteram16 + 0x3000 / 2;
+ uint16_t *end = &buffered_spriteram16[m_spriteram.bytes() / 2];
-// for ( ; s1 < end; s1+=4 )
- for ( ; s1 < buffered_spriteram16 + 0x4000/2; s1+=4 ) // more reasonable (and it cures MAME lockup in e.g. funcube3 boot)
+ // for ( ; s1 < end; s1+=4 )
+ for (; s1 < buffered_spriteram16 + 0x4000 / 2; s1 += 4) // more reasonable (and it cures MAME lockup in e.g. funcube3 boot)
{
- gfx_element *gfx;
- int num = s1[0];
- int xoffs = s1[1];
- int yoffs = s1[2];
- int sprite = s1[3];
+ int num = s1[0];
+ int xoffs = s1[1];
+ int yoffs = s1[2];
+ int sprite = s1[3];
// Single-sprite address
uint16_t *s2 = &buffered_spriteram16[(sprite & 0x7fff) * 4];
@@ -240,92 +271,49 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
int global_sizex = xoffs & 0xfc00;
int global_sizey = yoffs & 0xfc00;
- bool opaque = num & 0x2000;
- int use_global_size = num & 0x1000;
- int use_shadow = num & 0x0800;
-
+ bool opaque = num & 0x2000;
+ int use_global_size = num & 0x1000;
+ int use_shadow = num & 0x0800;
+ int which_gfx = num & 0x0700;
xoffs &= 0x3ff;
yoffs &= 0x3ff;
- // Color depth
- int shadow_depth;
- switch (num & 0x0700)
- {
- default:
- popmessage("unknown gfxset %x",(num & 0x0700)>>8);
- shadow_depth = 0;
- gfx = m_gfxdecode->gfx(machine().rand()&3);
- break;
- case 0x0700: // 8bpp tiles (76543210)
- shadow_depth = 8; // ?
- gfx = m_gfxdecode->gfx(3);
- break;
- case 0x0600: // 6bpp tiles (--543210) (myangel sliding blocks test)
- shadow_depth = 5; // staraudi
- gfx = m_gfxdecode->gfx(2);
- break;
- case 0x0500: // 4bpp tiles (3210----)
- shadow_depth = 4; // ?
- gfx = m_gfxdecode->gfx(1);
- break;
- case 0x0400: // 4bpp tiles (----3210)
- shadow_depth = 3; // reelquak
- gfx = m_gfxdecode->gfx(0);
- break;
-// case 0x0300: // ??? (staraudi question bubble: pen %00011000 with shadow on!)
-// unknown
- case 0x0200: // 3bpp tiles? (-----210) (myangel "Graduate Tests")
- shadow_depth = 3; // ?
- gfx = m_gfxdecode->gfx(4);
- break;
- case 0x0100: // 2bpp tiles??? (--10----) (myangel2 question bubble, myangel endgame)
- shadow_depth = 2; // myangel2
- gfx = m_gfxdecode->gfx(5);
- break;
- case 0x0000: // no idea!
- shadow_depth = 4; // ?
- gfx = m_gfxdecode->gfx(0);
- break;
- }
- if (!use_shadow)
- shadow_depth = 0;
-
// Number of single-sprites
num = (num & 0x00ff) + 1;
- for( ; num > 0; num--,s2+=4 )
+ for (; num > 0; num--, s2 += 4)
{
if (s2 >= end) break;
-// "tilemap" sprite
-
if (sprite & 0x8000)
{
- rectangle clip;
- int dx, x, y;
- int flipx;
- int flipy;
- int sx = s2[0];
- int sy = s2[1];
- int scrollx = s2[2];
- int scrolly = s2[3];
- int tilesize = (scrollx & 0x8000) >> 15;
- int page = (scrollx & 0x7c00) >> 10;
-
- int width = use_global_size ? global_sizex : sx;
- int height = use_global_size ? global_sizey : sy;
+ // "floating tilemap" sprite
+ // the 'floating tilemap sprites' are just a window into the tilemap, the position of the sprite does not change the scroll values
+
+ int sx = s2[0];
+ int sy = s2[1];
+ int scrollx = s2[2];
+ int scrolly = s2[3];
+ int is_16x16 = (scrollx & 0x8000) >> 15;
+ int page = (scrollx & 0x7c00) >> 10;
+ int local_sizex = sx & 0xfc00;
+ int local_sizey = sy & 0xfc00;
+ sx &= 0x3ff;
+ sy &= 0x1ff;
+
+ int width = use_global_size ? global_sizex : local_sizex;
+ int height = use_global_size ? global_sizey : local_sizey;
+
height = ((height & 0xfc00) >> 10) + 1;
- width = ((width & 0xfc00) >> 10)/* + 1*/; // reelquak reels
+ width = ((width & 0xfc00) >> 10)/* + 1*/; // reelquak reels
if (!width)
continue;
- sx &= 0x3ff;
- sy &= 0x1ff;
-
scrollx += m_xoffset;
scrollx &= 0x3ff;
scrolly &= 0x1ff;
+ rectangle clip;
// sprite clipping region (x)
clip.min_x = (sx + xoffs) & 0x3ff;
clip.min_x = (clip.min_x & 0x1ff) - (clip.min_x & 0x200);
@@ -337,7 +325,7 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
if (clip.max_x > cliprect.max_x) clip.max_x = cliprect.max_x;
// sprite clipping region (y)
- clip.min_y = ((sy + yoffs) & 0x1ff) - m_yoffset;
+ clip.min_y = ((sy + yoffs) & 0x1ff);
clip.max_y = clip.min_y + height * 0x10 - 1;
if (clip.min_y > cliprect.max_y) continue;
@@ -345,68 +333,52 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
if (clip.min_y < cliprect.min_y) clip.min_y = cliprect.min_y;
if (clip.max_y > cliprect.max_y) clip.max_y = cliprect.max_y;
- dx = sx + (scrollx & 0x3ff) + xoffs + 0x10;
-
- // Draw the rows
- for (y = 0; y < (0x40 >> tilesize); y++)
+ for (int realline = clip.min_y; realline <= clip.max_y; realline++)
{
- int py = ((scrolly - (y+1) * (8 << tilesize) + 0x10) & 0x1ff) - 0x10 - m_yoffset;
-
- for (x = 0; x < 0x40; x++)
- {
- int px = ((dx + x * (8 << tilesize) + 0x10) & 0x3ff) - 0x10;
- int tx, ty;
- int attr, code, color;
- uint16_t *s3;
+ int sourceline = (realline - scrolly) & 0x1ff;
- s3 = &buffered_spriteram16[2 * ((page * 0x2000/4) + ((y & 0x1f) << 6) + (x & 0x03f))];
+ int y = sourceline >> (is_16x16 ? 4 : 3);
- attr = s3[0];
- code = s3[1] + ((attr & 0x0007) << 16);
- flipx = (attr & 0x0010);
- flipy = (attr & 0x0008);
- color = (attr & 0xffe0) >> 5;
+ for (int x = 0; x < 0x40; x++)
+ {
+ int code, attr, flipx, flipy, color;
+ get_tile(buffered_spriteram16, is_16x16, x, y ^ 0x1f, page, code, attr, flipx, flipy, color); // yes the tilemap in RAM is flipped?!
- if (tilesize) code &= ~3;
+ int line = is_16x16 ? (sourceline & 0x0f) : (sourceline & 0x07);
- for (ty = 0; ty <= tilesize; ty++)
+ int ty = (line >> 3) & 1;
+ line &= 0x7;
+ for (int tx = 0; tx <= is_16x16; tx++)
{
- for (tx = 0; tx <= tilesize; tx++)
- {
- int dst_x = (px + (flipx ? tilesize-tx : tx) * 8) & 0x3ff;
- int dst_y = (py + (flipy ? tilesize-ty : ty) * 8) & 0x1ff;
-
- dst_x = (dst_x & 0x1ff) - (dst_x & 0x200);
+ int dx = sx + (scrollx & 0x3ff) + xoffs + 0x10;
+ int px = ((dx + x * (8 << is_16x16) + 0x10) & 0x3ff) - 0x10;
+ int dst_x = (px + (flipx ? is_16x16 - tx : tx) * 8) & 0x3ff;
+ dst_x = (dst_x & 0x1ff) - (dst_x & 0x200);
- seta_drawgfx(bitmap, clip, gfx,
- code ^ tx ^ (ty<<1),
- color,
- flipx, flipy,
- dst_x, dst_y,
- shadow_depth, opaque );
+ if ((dst_x >= clip.min_x - 8) && (dst_x <= clip.max_x))
+ {
+ int realcode = code ^ tx ^ ((flipy ? is_16x16 - ty : ty) << 1);
+ drawgfx_line(bitmap, clip, which_gfx, m_spritegfx->get_data(m_realtilenumber[realcode]), color << 4, flipx, flipy, dst_x, use_shadow, realline, line, opaque);
}
}
-
}
}
}
else
-// "normal" sprite
{
- int sx = s2[0];
- int sy = s2[1];
- int attr = s2[2];
- int code = s2[3] + ((attr & 0x0007) << 16);
+ // "normal" sprite
+ int sx = s2[0];
+ int sy = s2[1];
+ int attr = s2[2];
+ int code = s2[3] + ((attr & 0x0007) << 16);
int flipx = (attr & 0x0010);
int flipy = (attr & 0x0008);
int color = (attr & 0xffe0) >> 5;
int sizex = use_global_size ? global_sizex : sx;
int sizey = use_global_size ? global_sizey : sy;
- int x,y;
- sizex = (1 << ((sizex & 0x0c00)>> 10))-1;
- sizey = (1 << ((sizey & 0x0c00)>> 10))-1;
-
+ sizex = (1 << ((sizex & 0x0c00) >> 10)) - 1;
+ sizey = (1 << ((sizey & 0x0c00) >> 10)) - 1;
sx += xoffs;
sy += yoffs;
@@ -414,30 +386,43 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
sx = (sx & 0x1ff) - (sx & 0x200);
sy &= 0x1ff;
- sy -= m_yoffset;
- code &= ~((sizex+1) * (sizey+1) - 1); // see myangel, myangel2 and grdians
+ int basecode = code &= ~((sizex + 1) * (sizey + 1) - 1); // see myangel, myangel2 and grdians
- for (y = 0; y <= sizey; y++)
+ int firstline = sy;
+ int endline = (sy + (sizey + 1) * 8) - 1;
+
+ int realfirstline = firstline;
+
+ if (firstline < cliprect.min_y) realfirstline = cliprect.min_y;
+ if (endline > cliprect.max_y) endline = cliprect.max_y;
+
+ for (int realline = realfirstline; realline <= endline; realline++)
{
- for (x = 0; x <= sizex; x++)
+ int line = realline - firstline;
+ int y = (line >> 3);
+ line &= 0x7;
+
+ for (int x = 0; x <= sizex; x++)
{
- seta_drawgfx(bitmap, cliprect, gfx,
- code++,
- color,
- flipx, flipy,
- sx + (flipx ? sizex-x : x) * 8, sy + (flipy ? sizey-y : y) * 8,
- shadow_depth, opaque );
+ int realcode = (basecode + (flipy ? sizey - y : y)*(sizex + 1)) + (flipx ? sizex - x : x);
+ drawgfx_line(bitmap, cliprect, which_gfx, m_spritegfx->get_data(m_realtilenumber[realcode]), color << 4, flipx, flipy, sx + x * 8, use_shadow, realline, line, opaque);
}
}
+
+
}
}
-
if (s1[0] & 0x8000) break; // end of list marker
} // sprite list
}
+TIMER_CALLBACK_MEMBER(seta2_state::raster_timer_done)
+{
+
+}
+
/***************************************************************************
@@ -454,7 +439,16 @@ void seta2_state::video_start()
m_buffered_spriteram = std::make_unique<uint16_t[]>(m_spriteram.bytes()/2);
m_xoffset = 0;
- m_yoffset = 0;
+
+ m_realtilenumber = std::make_unique<uint32_t[]>(0x80000);
+
+ m_spritegfx = m_gfxdecode->gfx(0);
+ for (int i = 0; i < 0x80000; i++)
+ {
+ m_realtilenumber[i] = i % m_spritegfx->elements();
+ }
+
+ m_raster_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seta2_state::raster_timer_done), this));
}
VIDEO_START_MEMBER(seta2_state,xoffset)
@@ -471,13 +465,6 @@ VIDEO_START_MEMBER(seta2_state,xoffset1)
m_xoffset = 0x1;
}
-VIDEO_START_MEMBER(seta2_state,yoffset)
-{
- video_start();
-
- m_yoffset = 0x10;
-}
-
uint32_t seta2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// Black or pen 0?
diff --git a/src/mame/video/ssv.cpp b/src/mame/video/ssv.cpp
index b0315477ebd..062274161d9 100644
--- a/src/mame/video/ssv.cpp
+++ b/src/mame/video/ssv.cpp
@@ -149,17 +149,27 @@ void ssv_state::drawgfx_line(bitmap_ind16 &bitmap, const rectangle &cliprect, in
if (realline >= cliprect.min_y && realline <= cliprect.max_y)
{
+ struct drawmodes
+ {
+ int gfx_mask;
+ int gfx_shift;
+ };
+
// comments at top suggest that each bit of 'gfx' enables 2 bitplanes, but ultrax case disagrees, also that would require 4 bits to cover all cases, and we only have 3
- static constexpr uint8_t BPP_MASK_TABLE[8] = {
- 0x3f, // 0: ultrax, twineag2 text - is there a local / global mixup somewhere, or is this an 'invalid' setting that just enables all planes?
- 0xff, // 1: unverified case, mimic old driver behavior of only using lowest bit
- 0x3f, // 2: unverified case, mimic old driver behavior of only using lowest bit
- 0xff, // 3: unverified case, mimic old driver behavior of only using lowest bit
- 0x0f, // 4: eagle shot 4bpp birdie text (there is probably a case for the other 4bpp? but that's only used for Japanese text and the supported set isn't Japanese)
- 0xff, // 5: unverified case, mimic old driver behavior of only using lowest bit
- 0x3f, // 6: common 6bpp case + keithlcy (logo), drifto94 (wheels) masking
- 0xff }; // 7: common 8bpp case
- const uint8_t gfxbppmask = BPP_MASK_TABLE[gfx & 0x07];
+ // see also seta2.cpp where the same logic is used
+ static constexpr drawmodes BPP_MASK_TABLE[8] = {
+ { 0x3f,0 }, // 0: ultrax, twineag2 text - is there a local / global mixup somewhere, or is this an 'invalid' setting that just enables all planes?
+ { 0xff,0 }, // 1: unverified case, mimic old driver behavior of only using lowest bit
+ { 0x3f,0 }, // 2: unverified case, mimic old driver behavior of only using lowest bit
+ { 0xff,0 }, // 3: unverified case, mimic old driver behavior of only using lowest bit
+ { 0x0f,0 }, // 4: eagle shot 4bpp birdie text
+ { 0xf0,4 }, // 5: eagle shot 4bpp Japanese text
+ { 0x3f,0 }, // 6: common 6bpp case + keithlcy (logo), drifto94 (wheels) masking
+ { 0xff,0 } // 7: common 8bpp case
+ };
+
+ const uint8_t gfxbppmask = BPP_MASK_TABLE[gfx & 0x07].gfx_mask;
+ const uint8_t gfxshift = BPP_MASK_TABLE[gfx & 0x07].gfx_shift;
uint16_t *dest = &bitmap.pix16(realline);
@@ -170,7 +180,7 @@ void ssv_state::drawgfx_line(bitmap_ind16 &bitmap, const rectangle &cliprect, in
int column = 0;
for (int sx = x0; sx != x1; sx += dx)
{
- const uint8_t pen = source[column] & gfxbppmask;
+ const uint8_t pen = (source[column] & gfxbppmask) >> gfxshift;
if (pen && sx >= cliprect.min_x && sx <= cliprect.max_x)
{