diff options
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 |
commit | 70693512bf4cb86af3fd08217dca85bbd89ef949 (patch) | |
tree | 808e4c8d95b355eb07da3b073d77ee6c009665c2 | |
parent | bd14ee1e2b87c53f625e0668b42baa2ed2a652b1 (diff) | |
parent | 4951b23eecb4f133a133566f489242d89e70ba4a (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.cpp | 456 | ||||
-rw-r--r-- | src/mame/drivers/ssv.cpp | 29 | ||||
-rw-r--r-- | src/mame/includes/seta2.h | 14 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 | ||||
-rw-r--r-- | src/mame/video/seta2.cpp | 361 | ||||
-rw-r--r-- | src/mame/video/ssv.cpp | 32 |
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) { |