brkthru.cpp, gunsmoke.cpp, bfm_adr2.cpp: used finders and other small cleanups

This commit is contained in:
Ivan Vangelista 2022-04-26 20:32:28 +02:00
parent 0343f06b29
commit fb30007f9e
11 changed files with 1162 additions and 1384 deletions

View File

@ -1556,8 +1556,6 @@ files {
MAME_DIR .. "src/mame/includes/fcrash.h", MAME_DIR .. "src/mame/includes/fcrash.h",
MAME_DIR .. "src/mame/drivers/gng.cpp", MAME_DIR .. "src/mame/drivers/gng.cpp",
MAME_DIR .. "src/mame/drivers/gunsmoke.cpp", MAME_DIR .. "src/mame/drivers/gunsmoke.cpp",
MAME_DIR .. "src/mame/includes/gunsmoke.h",
MAME_DIR .. "src/mame/video/gunsmoke.cpp",
MAME_DIR .. "src/mame/drivers/higemaru.cpp", MAME_DIR .. "src/mame/drivers/higemaru.cpp",
MAME_DIR .. "src/mame/includes/higemaru.h", MAME_DIR .. "src/mame/includes/higemaru.h",
MAME_DIR .. "src/mame/video/higemaru.cpp", MAME_DIR .. "src/mame/video/higemaru.cpp",
@ -1692,8 +1690,6 @@ files {
MAME_DIR .. "src/mame/includes/boogwing.h", MAME_DIR .. "src/mame/includes/boogwing.h",
MAME_DIR .. "src/mame/video/boogwing.cpp", MAME_DIR .. "src/mame/video/boogwing.cpp",
MAME_DIR .. "src/mame/drivers/brkthru.cpp", MAME_DIR .. "src/mame/drivers/brkthru.cpp",
MAME_DIR .. "src/mame/includes/brkthru.h",
MAME_DIR .. "src/mame/video/brkthru.cpp",
MAME_DIR .. "src/mame/drivers/btime.cpp", MAME_DIR .. "src/mame/drivers/btime.cpp",
MAME_DIR .. "src/mame/includes/btime.h", MAME_DIR .. "src/mame/includes/btime.h",
MAME_DIR .. "src/mame/machine/btime.cpp", MAME_DIR .. "src/mame/machine/btime.cpp",

View File

@ -1344,10 +1344,10 @@ ROM_START( m_tppokr )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "95750899.bin", 0x00000, 0x10000, CRC(639d1d62) SHA1(80620c14bf9f953588555510fc2e6e930140923f)) ROM_LOAD( "95750899.bin", 0x00000, 0x10000, CRC(639d1d62) SHA1(80620c14bf9f953588555510fc2e6e930140923f))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD( "tpk010.vid", 0x00000, 0x20000, CRC(ea4eddca) SHA1(5fb805d35376ec7ee8d58684e584621dbb2b2a9c)) ROM_LOAD( "tpk010.vid", 0x00000, 0x20000, CRC(ea4eddca) SHA1(5fb805d35376ec7ee8d58684e584621dbb2b2a9c))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD( "tpk011.chr", 0x00000, 0x20000, CRC(4dc23ad8) SHA1(8e8cc699412dbb092e16e14518f407353f477ee1)) ROM_LOAD( "tpk011.chr", 0x00000, 0x20000, CRC(4dc23ad8) SHA1(8e8cc699412dbb092e16e14518f407353f477ee1))
ROM_END ROM_END

View File

@ -2485,13 +2485,13 @@ ROM_START( quintoon )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750206.p1", 0x00000, 0x10000, CRC(05f4bfad) SHA1(22751573f3a51a9fd2d2a75a7d1b20d78112e0bb)) ROM_LOAD("95750206.p1", 0x00000, 0x10000, CRC(05f4bfad) SHA1(22751573f3a51a9fd2d2a75a7d1b20d78112e0bb))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22)) ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22))
ROM_REGION( 0x20000, "upd", 0 ) // using Dutch samples, need to check a UK Quintoon PCB ROM_REGION( 0x20000, "upd", 0 ) // using Dutch samples, need to check a UK Quintoon PCB
ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047)) ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047))
ROM_END ROM_END
@ -2501,13 +2501,13 @@ ROM_START( quintono )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750203.bin", 0x00000, 0x10000, CRC(037ef2d0) SHA1(6958624e29629a7639a80e8929b833a8b0201833)) ROM_LOAD("95750203.bin", 0x00000, 0x10000, CRC(037ef2d0) SHA1(6958624e29629a7639a80e8929b833a8b0201833))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22)) ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22))
ROM_REGION( 0x20000, "upd", 0 ) // using Dutch samples, need to check a UK Quintoon PCB ROM_REGION( 0x20000, "upd", 0 ) // using Dutch samples, need to check a UK Quintoon PCB
ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047)) ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047))
ROM_END ROM_END
@ -2517,13 +2517,13 @@ ROM_START( quintond )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95751206.bin", 0x00000, 0x10000, CRC(63def707) SHA1(d016df74f4f83cd72b16f9ccbe78cc382bf056c8)) ROM_LOAD("95751206.bin", 0x00000, 0x10000, CRC(63def707) SHA1(d016df74f4f83cd72b16f9ccbe78cc382bf056c8))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22)) ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22))
ROM_REGION( 0x20000, "upd", 0 ) // using Dutch samples, need to check a UK Quintoon PCB ROM_REGION( 0x20000, "upd", 0 ) // using Dutch samples, need to check a UK Quintoon PCB
ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047)) ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047))
ROM_END ROM_END
@ -2533,13 +2533,13 @@ ROM_START( qntoond )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750243.bin", 0x00000, 0x10000, CRC(36a8dcd1) SHA1(ab21301312fbb6609f850e1cf6bcda5a2b7f66f5)) ROM_LOAD("95750243.bin", 0x00000, 0x10000, CRC(36a8dcd1) SHA1(ab21301312fbb6609f850e1cf6bcda5a2b7f66f5))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770024.vid", 0x00000, 0x20000, CRC(5bc7ac55) SHA1(b54e9684f750b73c357d41b88ca8c527258e2a10)) ROM_LOAD("95770024.vid", 0x00000, 0x20000, CRC(5bc7ac55) SHA1(b54e9684f750b73c357d41b88ca8c527258e2a10))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770025.chr", 0x00000, 0x20000, CRC(f59748ea) SHA1(f0f7f914fdf72db8eb60717b95e7d027c0081339)) ROM_LOAD("95770025.chr", 0x00000, 0x20000, CRC(f59748ea) SHA1(f0f7f914fdf72db8eb60717b95e7d027c0081339))
ROM_END ROM_END
@ -2549,13 +2549,13 @@ ROM_START( qntoondo )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750136.bin", 0x00000, 0x10000, CRC(839ea01d) SHA1(d7f77dbaea4e87c3d782408eb50d10f44b6df5e2)) ROM_LOAD("95750136.bin", 0x00000, 0x10000, CRC(839ea01d) SHA1(d7f77dbaea4e87c3d782408eb50d10f44b6df5e2))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770024.vid", 0x00000, 0x20000, CRC(5bc7ac55) SHA1(b54e9684f750b73c357d41b88ca8c527258e2a10)) ROM_LOAD("95770024.vid", 0x00000, 0x20000, CRC(5bc7ac55) SHA1(b54e9684f750b73c357d41b88ca8c527258e2a10))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770025.chr", 0x00000, 0x20000, CRC(f59748ea) SHA1(f0f7f914fdf72db8eb60717b95e7d027c0081339)) ROM_LOAD("95770025.chr", 0x00000, 0x20000, CRC(f59748ea) SHA1(f0f7f914fdf72db8eb60717b95e7d027c0081339))
ROM_END ROM_END
@ -2565,13 +2565,13 @@ ROM_START( gldncrwn )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95752011.bin", 0x00000, 0x10000, CRC(54f7cca0) SHA1(835727d88113700a38060f880b4dfba2ded41487)) ROM_LOAD("95752011.bin", 0x00000, 0x10000, CRC(54f7cca0) SHA1(835727d88113700a38060f880b4dfba2ded41487))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770117.vid", 0x00000, 0x20000, CRC(598ba7cb) SHA1(ab518d7df24b0b453ec3fcddfc4db63e0391fde7)) ROM_LOAD("95770117.vid", 0x00000, 0x20000, CRC(598ba7cb) SHA1(ab518d7df24b0b453ec3fcddfc4db63e0391fde7))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95001039.snd", 0x00000, 0x20000, CRC(6af26157) SHA1(9b3a85f5dd760c4430e38e2844928b74aadc7e75)) ROM_LOAD("95001039.snd", 0x00000, 0x20000, CRC(6af26157) SHA1(9b3a85f5dd760c4430e38e2844928b74aadc7e75))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770118.ch1", 0x00000, 0x20000, CRC(9c9ac946) SHA1(9a571e7d00f6654242aface032c2fb186ef44aba)) ROM_LOAD("95770118.ch1", 0x00000, 0x20000, CRC(9c9ac946) SHA1(9a571e7d00f6654242aface032c2fb186ef44aba))
ROM_LOAD("95770119.ch2", 0x20000, 0x20000, CRC(9e0fdb2e) SHA1(05e8257285b0009df4fcc73e93490876358a8be8)) ROM_LOAD("95770119.ch2", 0x20000, 0x20000, CRC(9e0fdb2e) SHA1(05e8257285b0009df4fcc73e93490876358a8be8))
@ -2583,13 +2583,13 @@ ROM_START( gldncrwnhop )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95752007.gam", 0x00000, 0x10000, CRC(ba009ab7) SHA1(df58f5ff4e9fdf8db5931833b909fb0e4ba8e23d)) ROM_LOAD("95752007.gam", 0x00000, 0x10000, CRC(ba009ab7) SHA1(df58f5ff4e9fdf8db5931833b909fb0e4ba8e23d))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770146.vid", 0x00000, 0x20000, CRC(f3109cd5) SHA1(8da5207c07015d6f5a72397eaa6ab70800785f7f)) ROM_LOAD("95770146.vid", 0x00000, 0x20000, CRC(f3109cd5) SHA1(8da5207c07015d6f5a72397eaa6ab70800785f7f))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95770139.snd", 0x00000, 0x20000, CRC(e76ca414) SHA1(2c441e3369e374c033b5585e8f6a9c34a4c5ec0f)) ROM_LOAD("95770139.snd", 0x00000, 0x20000, CRC(e76ca414) SHA1(2c441e3369e374c033b5585e8f6a9c34a4c5ec0f))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770147.chr", 0x00000, 0x20000, CRC(5a4d2b79) SHA1(c2f2f39ef6816e0da1b2ff4b723612c671c6215f)) ROM_LOAD("95770147.chr", 0x00000, 0x20000, CRC(5a4d2b79) SHA1(c2f2f39ef6816e0da1b2ff4b723612c671c6215f))
ROM_REGION( 0x10, "proms", 0 ) ROM_REGION( 0x10, "proms", 0 )
@ -2603,13 +2603,13 @@ ROM_START( paradice )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750615.bin", 0x00000, 0x10000, CRC(f51192e5) SHA1(a1290e32bba698006e83fd8d6075202586232929)) ROM_LOAD("95750615.bin", 0x00000, 0x10000, CRC(f51192e5) SHA1(a1290e32bba698006e83fd8d6075202586232929))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770084.vid", 0x00000, 0x20000, CRC(8f27bd34) SHA1(fccf7283b5c952b74258ee6e5138c1ca89384e24)) ROM_LOAD("95770084.vid", 0x00000, 0x20000, CRC(8f27bd34) SHA1(fccf7283b5c952b74258ee6e5138c1ca89384e24))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95001037.snd", 0x00000, 0x20000, CRC(82f74276) SHA1(c51c3caeb7bf514ec7a1b452c8effc4c79186062)) ROM_LOAD("95001037.snd", 0x00000, 0x20000, CRC(82f74276) SHA1(c51c3caeb7bf514ec7a1b452c8effc4c79186062))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770085.ch1", 0x00000, 0x20000, CRC(4d1fb82f) SHA1(054f683d1d7c884911bd2d0f85aab4c59ddf9930)) ROM_LOAD("95770085.ch1", 0x00000, 0x20000, CRC(4d1fb82f) SHA1(054f683d1d7c884911bd2d0f85aab4c59ddf9930))
ROM_LOAD("95770086.ch2", 0x20000, 0x20000, CRC(7b566e11) SHA1(f34c82ad75a0f88204ac4ae83a00801215c46ca9)) ROM_LOAD("95770086.ch2", 0x20000, 0x20000, CRC(7b566e11) SHA1(f34c82ad75a0f88204ac4ae83a00801215c46ca9))
@ -2623,13 +2623,13 @@ ROM_START( pokio )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750278.bin", 0x00000, 0x10000, CRC(5124b24d) SHA1(9bc63891a8e9283c2baa64c264a5d6d1625d44b2)) ROM_LOAD("95750278.bin", 0x00000, 0x10000, CRC(5124b24d) SHA1(9bc63891a8e9283c2baa64c264a5d6d1625d44b2))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770044.vid", 0x00000, 0x20000, CRC(46d7a6d8) SHA1(01f58e735621661b57c61491b3769ae99e92476a)) ROM_LOAD("95770044.vid", 0x00000, 0x20000, CRC(46d7a6d8) SHA1(01f58e735621661b57c61491b3769ae99e92476a))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(98aaff76) SHA1(4a59cf83daf018d93f1ff7805e06309d2f3d7252)) ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(98aaff76) SHA1(4a59cf83daf018d93f1ff7805e06309d2f3d7252))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770045.chr", 0x00000, 0x20000, CRC(dd30da90) SHA1(b4f5a229d88613c0c7d43adf3f325c619abe38a3)) ROM_LOAD("95770045.chr", 0x00000, 0x20000, CRC(dd30da90) SHA1(b4f5a229d88613c0c7d43adf3f325c619abe38a3))
ROM_REGION( 0x10, "proms", 0 ) ROM_REGION( 0x10, "proms", 0 )
@ -2642,13 +2642,13 @@ ROM_START( pyramid )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750898.bin", 0x00000, 0x10000, CRC(3b0df16c) SHA1(9af599fe604f86c72986aa1610d74837852e023f)) ROM_LOAD("95750898.bin", 0x00000, 0x10000, CRC(3b0df16c) SHA1(9af599fe604f86c72986aa1610d74837852e023f))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770108.vid", 0x00000, 0x20000, CRC(216ff683) SHA1(227764771600ce88c5f36bed9878e6bb9988ae8f)) ROM_LOAD("95770108.vid", 0x00000, 0x20000, CRC(216ff683) SHA1(227764771600ce88c5f36bed9878e6bb9988ae8f))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95001038.snd", 0x00000, 0x20000, CRC(f885c42e) SHA1(4d79fc5ae4c58247740d78d81302bfbb43331c43)) ROM_LOAD("95001038.snd", 0x00000, 0x20000, CRC(f885c42e) SHA1(4d79fc5ae4c58247740d78d81302bfbb43331c43))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770106.ch1", 0x00000, 0x20000, CRC(a83c27ae) SHA1(f61ca3cdf19a933bae18c1b32a5fb0a2204dde78)) ROM_LOAD("95770106.ch1", 0x00000, 0x20000, CRC(a83c27ae) SHA1(f61ca3cdf19a933bae18c1b32a5fb0a2204dde78))
ROM_LOAD("95770107.ch2", 0x20000, 0x20000, CRC(52e59f64) SHA1(ea4828c2cfb72cd77c92c60560b4d5ee424f7dca)) ROM_LOAD("95770107.ch2", 0x20000, 0x20000, CRC(52e59f64) SHA1(ea4828c2cfb72cd77c92c60560b4d5ee424f7dca))
@ -2662,13 +2662,13 @@ ROM_START( slotsnl )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750368.bin", 0x00000, 0x10000, CRC(3a43048c) SHA1(13728e05b334cba90ea9cc51ea00c4384baa8614)) ROM_LOAD("95750368.bin", 0x00000, 0x10000, CRC(3a43048c) SHA1(13728e05b334cba90ea9cc51ea00c4384baa8614))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("video.vid", 0x00000, 0x20000, CRC(cc760208) SHA1(cc01b1e31335b26f2d0f3470d8624476b153655f)) ROM_LOAD("video.vid", 0x00000, 0x20000, CRC(cc760208) SHA1(cc01b1e31335b26f2d0f3470d8624476b153655f))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("95001029.snd", 0x00000, 0x20000, CRC(7749c724) SHA1(a87cce0c99e392f501bba44b3936a7059d682c9c)) ROM_LOAD("95001029.snd", 0x00000, 0x20000, CRC(7749c724) SHA1(a87cce0c99e392f501bba44b3936a7059d682c9c))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("charset.chr", 0x00000, 0x20000, CRC(ef4300b6) SHA1(a1f765f38c2f146651fc685ea6195af72465f559)) ROM_LOAD("charset.chr", 0x00000, 0x20000, CRC(ef4300b6) SHA1(a1f765f38c2f146651fc685ea6195af72465f559))
ROM_REGION( 0x10, "proms", 0 ) ROM_REGION( 0x10, "proms", 0 )
@ -2681,13 +2681,13 @@ ROM_START( sltblgtk )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95750943.bin", 0x00000, 0x10000, CRC(c9fb8153) SHA1(7c1d0660c15f05b1e0784d8322c62981fe8dc4c9)) ROM_LOAD("95750943.bin", 0x00000, 0x10000, CRC(c9fb8153) SHA1(7c1d0660c15f05b1e0784d8322c62981fe8dc4c9))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("adder121.bin", 0x00000, 0x20000, CRC(cedbbf28) SHA1(559ae341b55462feea771127394a54fc65266818)) ROM_LOAD("adder121.bin", 0x00000, 0x20000, CRC(cedbbf28) SHA1(559ae341b55462feea771127394a54fc65266818))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("sound029.bin", 0x00000, 0x20000, CRC(7749c724) SHA1(a87cce0c99e392f501bba44b3936a7059d682c9c)) ROM_LOAD("sound029.bin", 0x00000, 0x20000, CRC(7749c724) SHA1(a87cce0c99e392f501bba44b3936a7059d682c9c))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("chr122.bin", 0x00000, 0x20000, CRC(a1e3bdf4) SHA1(f0cabe08dee028e2014cbf0fc3fe0806cdfa60c6)) ROM_LOAD("chr122.bin", 0x00000, 0x20000, CRC(a1e3bdf4) SHA1(f0cabe08dee028e2014cbf0fc3fe0806cdfa60c6))
ROM_REGION( 0x10, "proms", 0 ) ROM_REGION( 0x10, "proms", 0 )
@ -2700,13 +2700,13 @@ ROM_START( sltblgp1 )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95752008.bin", 0x00000, 0x10000, CRC(3167d3b9) SHA1(a28563f65d55c4d47f3e7fdb41e050d8a733b9bd)) ROM_LOAD("95752008.bin", 0x00000, 0x10000, CRC(3167d3b9) SHA1(a28563f65d55c4d47f3e7fdb41e050d8a733b9bd))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("adder142.bin", 0x00000, 0x20000, CRC(a6f6356b) SHA1(b3d3063155ee3ea888273081f844279b6e33f7d9)) ROM_LOAD("adder142.bin", 0x00000, 0x20000, CRC(a6f6356b) SHA1(b3d3063155ee3ea888273081f844279b6e33f7d9))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("sound033.bin", 0x00000, 0x20000, CRC(bb1dfa55) SHA1(442454fccfe03e6f4c3353551cb7459e184a099d)) ROM_LOAD("sound033.bin", 0x00000, 0x20000, CRC(bb1dfa55) SHA1(442454fccfe03e6f4c3353551cb7459e184a099d))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("chr143.bin", 0x00000, 0x20000, CRC(a40e91e2) SHA1(87dc76963ea961fcfbe4f3e25df9162348d39d79)) ROM_LOAD("chr143.bin", 0x00000, 0x20000, CRC(a40e91e2) SHA1(87dc76963ea961fcfbe4f3e25df9162348d39d79))
ROM_REGION( 0x10, "proms", 0 ) ROM_REGION( 0x10, "proms", 0 )
@ -2719,13 +2719,13 @@ ROM_START( sltblgpo )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("95770938.bin", 0x00000, 0x10000, CRC(7e802634) SHA1(fecf86e632546649d5e647c42a248b39fc2cf982)) ROM_LOAD("95770938.bin", 0x00000, 0x10000, CRC(7e802634) SHA1(fecf86e632546649d5e647c42a248b39fc2cf982))
ROM_REGION( 0x20000, "adder2", 0 ) ROM_REGION( 0x20000, "adder2:cpu", 0 )
ROM_LOAD("95770120.chr", 0x00000, 0x20000, CRC(ad505138) SHA1(67ccd8dc30e76283247ab5a62b22337ebaff74cd)) ROM_LOAD("95770120.chr", 0x00000, 0x20000, CRC(ad505138) SHA1(67ccd8dc30e76283247ab5a62b22337ebaff74cd))
ROM_REGION( 0x20000, "upd", 0 ) ROM_REGION( 0x20000, "upd", 0 )
ROM_LOAD("sound033.bin", 0x00000, 0x20000, CRC(bb1dfa55) SHA1(442454fccfe03e6f4c3353551cb7459e184a099d)) ROM_LOAD("sound033.bin", 0x00000, 0x20000, CRC(bb1dfa55) SHA1(442454fccfe03e6f4c3353551cb7459e184a099d))
ROM_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF ) ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
ROM_LOAD("95770110.add", 0x00000, 0x20000, CRC(64b03284) SHA1(4b1c17b75e449c9762bb949d7cde0694a3aaabeb)) ROM_LOAD("95770110.add", 0x00000, 0x20000, CRC(64b03284) SHA1(4b1c17b75e449c9762bb949d7cde0694a3aaabeb))
ROM_REGION( 0x10, "proms", 0 ) ROM_REGION( 0x10, "proms", 0 )

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,7 @@
Gun.Smoke Gun.Smoke
Capcom Capcom
85113-A-1 main PCB + 85113-B-3 video PCB
driver by Paul Leaman driver by Paul Leaman
@ -77,18 +78,270 @@ Stephh's notes (based on the games Z80 code and some tests) :
// The DMA copies sprites to a video and halts the CPU for ~131us // The DMA copies sprites to a video and halts the CPU for ~131us
#include "emu.h" #include "emu.h"
#include "includes/gunsmoke.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h" #include "machine/gen_latch.h"
#include "sound/ymopn.h" #include "sound/ymopn.h"
#include "emupal.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
#include "tilemap.h"
/* Read/Write Handlers */ namespace {
uint8_t gunsmoke_state::gunsmoke_protection_r(offs_t offset) class gunsmoke_state : public driver_device
{
public:
gunsmoke_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"),
m_scrollx(*this, "scrollx"),
m_scrolly(*this, "scrolly"),
m_spriteram(*this, "spriteram"),
m_mainbank(*this, "mainbank"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
{ }
void gunsmoke(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
private:
// memory pointers
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
required_shared_ptr<uint8_t> m_scrollx;
required_shared_ptr<uint8_t> m_scrolly;
required_shared_ptr<uint8_t> m_spriteram;
required_memory_bank m_mainbank;
// devices
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
// video-related
tilemap_t *m_bg_tilemap = nullptr;
tilemap_t *m_fg_tilemap = nullptr;
uint8_t m_chon = 0U;
uint8_t m_objon = 0U;
uint8_t m_bgon = 0U;
uint8_t m_sprite3bank = 0U;
uint8_t protection_r(offs_t offset);
void videoram_w(offs_t offset, uint8_t data);
void colorram_w(offs_t offset, uint8_t data);
void c804_w(uint8_t data);
void d806_w(uint8_t data);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
void palette(palette_device &palette) const;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void main_map(address_map &map);
void sound_map(address_map &map);
};
// video
/***************************************************************************
Convert the color PROMs into a more useable format.
Gunsmoke has three 256x4 palette PROMs (one per gun) and a lot of
256x4 lookup table PROMs.
The palette PROMs are connected to the RGB output this way:
bit 3 -- 220 ohm resistor -- RED/GREEN/BLUE
-- 470 ohm resistor -- RED/GREEN/BLUE
-- 1 kohm resistor -- RED/GREEN/BLUE
bit 0 -- 2.2kohm resistor -- RED/GREEN/BLUE
***************************************************************************/
void gunsmoke_state::palette(palette_device &palette) const
{
const uint8_t *color_prom = memregion("proms")->base();
// create a lookup table for the palette
for (int i = 0; i < 0x100; i++)
{
int const r = pal4bit(color_prom[i + 0x000]);
int const g = pal4bit(color_prom[i + 0x100]);
int const b = pal4bit(color_prom[i + 0x200]);
palette.set_indirect_color(i, rgb_t(r, g, b));
}
// color_prom now points to the beginning of the lookup table
color_prom += 0x300;
// characters use colors 0x40-0x4f
for (int i = 0; i < 0x80; i++)
{
uint8_t const ctabentry = color_prom[i] | 0x40;
palette.set_pen_indirect(i, ctabentry);
}
// background tiles use colors 0-0x3f
for (int i = 0x100; i < 0x200; i++)
{
uint8_t const ctabentry = color_prom[i] | ((color_prom[i + 0x100] & 0x03) << 4);
palette.set_pen_indirect(i - 0x80, ctabentry);
}
// sprites use colors 0x80-0xff
for (int i = 0x300; i < 0x400; i++)
{
uint8_t const ctabentry = color_prom[i] | ((color_prom[i + 0x100] & 0x07) << 4) | 0x80;
palette.set_pen_indirect(i - 0x180, ctabentry);
}
}
void gunsmoke_state::videoram_w(offs_t offset, uint8_t data)
{
m_videoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
void gunsmoke_state::colorram_w(offs_t offset, uint8_t data)
{
m_colorram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
void gunsmoke_state::c804_w(uint8_t data)
{
// bits 0 and 1 are for coin counters
machine().bookkeeping().coin_counter_w(1, data & 0x01);
machine().bookkeeping().coin_counter_w(0, data & 0x02);
// bits 2 and 3 select the ROM bank
m_mainbank->set_entry((data & 0x0c) >> 2);
// bit 5 resets the sound CPU? - we ignore it
// bit 6 flips screen
flip_screen_set(data & 0x40);
// bit 7 enables characters?
m_chon = data & 0x80;
}
void gunsmoke_state::d806_w(uint8_t data)
{
// bits 0-2 select the sprite 3 bank
m_sprite3bank = data & 0x07;
// bit 4 enables bg 1?
m_bgon = data & 0x10;
// bit 5 enables sprites?
m_objon = data & 0x20;
}
TILE_GET_INFO_MEMBER(gunsmoke_state::get_bg_tile_info)
{
uint8_t *tilerom = memregion("bgtiles")->base();
int offs = tile_index * 2;
int attr = tilerom[offs + 1];
int code = tilerom[offs] + ((attr & 0x01) << 8);
int color = (attr & 0x3c) >> 2;
int flags = TILE_FLIPYX((attr & 0xc0) >> 6);
tileinfo.set(1, code, color, flags);
}
TILE_GET_INFO_MEMBER(gunsmoke_state::get_fg_tile_info)
{
int attr = m_colorram[tile_index];
int code = m_videoram[tile_index] + ((attr & 0xe0) << 2);
int color = attr & 0x1f;
tileinfo.group = color;
tileinfo.set(0, code, color, 0);
}
void gunsmoke_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 32, 32, 2048, 8);
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg_tilemap->set_scrolldx(128, 128);
m_bg_tilemap->set_scrolldy( 6, 6);
m_fg_tilemap->set_scrolldx(128, 128);
m_fg_tilemap->set_scrolldy( 6, 6);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x4f);
}
void gunsmoke_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
for (int offs = m_spriteram.bytes() - 32; offs >= 0; offs -= 32)
{
int attr = m_spriteram[offs + 1];
int bank = (attr & 0xc0) >> 6;
int code = m_spriteram[offs];
int color = attr & 0x0f;
int flipx = 0;
int flipy = attr & 0x10;
int sx = m_spriteram[offs + 3] - ((attr & 0x20) << 3);
int sy = m_spriteram[offs + 2];
if (bank == 3)
bank += m_sprite3bank;
code += 256 * bank;
if (flip_screen())
{
sx = 240 - sx;
sy = 240 - sy;
flipx = !flipx;
flipy = !flipy;
}
m_gfxdecode->gfx(2)->transpen(bitmap, cliprect, code, color, flipx, flipy, sx + 128, sy + 6, 0);
}
}
uint32_t gunsmoke_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_scrollx[0] + 256 * m_scrollx[1]);
m_bg_tilemap->set_scrolly(0, m_scrolly[0]);
if (m_bgon)
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
bitmap.fill(m_palette->black_pen(), cliprect);
if (m_objon)
draw_sprites(bitmap, cliprect);
if (m_chon)
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}
// machine
// Read/Write Handlers
uint8_t gunsmoke_state::protection_r(offs_t offset)
{ {
/* /*
The routine at 0x0e69 tries to read data starting at 0xc4c9. The routine at 0x0e69 tries to read data starting at 0xc4c9.
@ -105,32 +358,32 @@ uint8_t gunsmoke_state::gunsmoke_protection_r(offs_t offset)
arcade game. It's hard to tell without pulling the code apart. arcade game. It's hard to tell without pulling the code apart.
*/ */
static const uint8_t gunsmoke_fixed_data[] = { 0xff, 0x00, 0x00 }; static const uint8_t fixed_data[] = { 0xff, 0x00, 0x00 };
return gunsmoke_fixed_data[offset]; return fixed_data[offset];
} }
/* Memory Maps */ // Memory Maps
void gunsmoke_state::gunsmoke_map(address_map &map) void gunsmoke_state::main_map(address_map &map)
{ {
map(0x0000, 0x7fff).rom(); map(0x0000, 0x7fff).rom();
map(0x8000, 0xbfff).bankr("bank1"); map(0x8000, 0xbfff).bankr(m_mainbank);
map(0xc000, 0xc000).portr("SYSTEM"); map(0xc000, 0xc000).portr("SYSTEM");
map(0xc001, 0xc001).portr("P1"); map(0xc001, 0xc001).portr("P1");
map(0xc002, 0xc002).portr("P2"); map(0xc002, 0xc002).portr("P2");
map(0xc003, 0xc003).portr("DSW1"); map(0xc003, 0xc003).portr("DSW1");
map(0xc004, 0xc004).portr("DSW2"); map(0xc004, 0xc004).portr("DSW2");
map(0xc4c9, 0xc4cb).r(FUNC(gunsmoke_state::gunsmoke_protection_r)); map(0xc4c9, 0xc4cb).r(FUNC(gunsmoke_state::protection_r));
map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0xc804, 0xc804).w(FUNC(gunsmoke_state::gunsmoke_c804_w)); // ROM bank switch, screen flip map(0xc804, 0xc804).w(FUNC(gunsmoke_state::c804_w)); // ROM bank switch, screen flip
// 0xc806 DMA trigger (not emulated) // 0xc806 DMA trigger (not emulated)
map(0xd000, 0xd3ff).ram().w(FUNC(gunsmoke_state::gunsmoke_videoram_w)).share("videoram"); map(0xd000, 0xd3ff).ram().w(FUNC(gunsmoke_state::videoram_w)).share(m_videoram);
map(0xd400, 0xd7ff).ram().w(FUNC(gunsmoke_state::gunsmoke_colorram_w)).share("colorram"); map(0xd400, 0xd7ff).ram().w(FUNC(gunsmoke_state::colorram_w)).share(m_colorram);
map(0xd800, 0xd801).ram().share("scrollx"); map(0xd800, 0xd801).ram().share(m_scrollx);
map(0xd802, 0xd802).ram().share("scrolly"); map(0xd802, 0xd802).ram().share(m_scrolly);
map(0xd806, 0xd806).w(FUNC(gunsmoke_state::gunsmoke_d806_w)); // sprites and bg enable map(0xd806, 0xd806).w(FUNC(gunsmoke_state::d806_w)); // sprites and bg enable
map(0xe000, 0xefff).ram(); map(0xe000, 0xefff).ram();
map(0xf000, 0xffff).ram().share("spriteram"); map(0xf000, 0xffff).ram().share(m_spriteram);
} }
void gunsmoke_state::sound_map(address_map &map) void gunsmoke_state::sound_map(address_map &map)
@ -142,7 +395,7 @@ void gunsmoke_state::sound_map(address_map &map)
map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write)); map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write));
} }
/* Input Ports */ // Input Ports
static INPUT_PORTS_START( gunsmoke ) static INPUT_PORTS_START( gunsmoke )
PORT_START("SYSTEM") PORT_START("SYSTEM")
@ -234,24 +487,24 @@ static INPUT_PORTS_START( gunsmokeu )
PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x00, "5" )
INPUT_PORTS_END INPUT_PORTS_END
/* Graphics Layouts */ // Graphics Layouts
static const gfx_layout charlayout = static const gfx_layout charlayout =
{ {
8,8, /* 8*8 characters */ 8,8, // 8*8 characters
1024, /* 1024 characters */ 1024, // 1024 characters
2, /* 2 bits per pixel */ 2, // 2 bits per pixel
{ 4, 0 }, { 4, 0 },
{ 8+3, 8+2, 8+1, 8+0, 3, 2, 1, 0 }, { 8+3, 8+2, 8+1, 8+0, 3, 2, 1, 0 },
{ 7*16, 6*16, 5*16, 4*16, 3*16, 2*16, 1*16, 0*16 }, { 7*16, 6*16, 5*16, 4*16, 3*16, 2*16, 1*16, 0*16 },
16*8 /* every char takes 16 consecutive bytes */ 16*8 // every char takes 16 consecutive bytes
}; };
static const gfx_layout tilelayout = static const gfx_layout tilelayout =
{ {
32,32, /* 32*32 tiles */ 32,32, // 32*32 tiles
512, /* 512 tiles */ 512, // 512 tiles
4, /* 4 bits per pixel */ 4, // 4 bits per pixel
{ 512*256*8+4, 512*256*8+0, 4, 0 }, { 512*256*8+4, 512*256*8+0, 4, 0 },
{ 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3, { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3,
64*8+0, 64*8+1, 64*8+2, 64*8+3, 65*8+0, 65*8+1, 65*8+2, 65*8+3, 64*8+0, 64*8+1, 64*8+2, 64*8+3, 65*8+0, 65*8+1, 65*8+2, 65*8+3,
@ -261,37 +514,37 @@ static const gfx_layout tilelayout =
8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16, 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16,
16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16, 16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16,
24*16, 25*16, 26*16, 27*16, 28*16, 29*16, 30*16, 31*16 }, 24*16, 25*16, 26*16, 27*16, 28*16, 29*16, 30*16, 31*16 },
256*8 /* every tile takes 256 consecutive bytes */ 256*8 // every tile takes 256 consecutive bytes
}; };
static const gfx_layout spritelayout = static const gfx_layout spritelayout =
{ {
16,16, /* 16*16 sprites */ 16,16, // 16*16 sprites
2048, /* 2048 sprites */ 2048, // 2048 sprites
4, /* 4 bits per pixel */ 4, // 4 bits per pixel
{ 2048*64*8+4, 2048*64*8+0, 4, 0 }, { 2048*64*8+4, 2048*64*8+0, 4, 0 },
{ 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3, { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3,
32*8+0, 32*8+1, 32*8+2, 32*8+3, 33*8+0, 33*8+1, 33*8+2, 33*8+3 }, 32*8+0, 32*8+1, 32*8+2, 32*8+3, 33*8+0, 33*8+1, 33*8+2, 33*8+3 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 }, 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
64*8 /* every sprite takes 64 consecutive bytes */ 64*8 // every sprite takes 64 consecutive bytes
}; };
/* Graphics Decode Info */ // Graphics Decode Info
static GFXDECODE_START( gfx_gunsmoke ) static GFXDECODE_START( gfx_gunsmoke )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 ) GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 32 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 32*4, 16 ) GFXDECODE_ENTRY( "tiles", 0, tilelayout, 32*4, 16 )
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 32*4+16*16, 16 ) GFXDECODE_ENTRY( "sprites", 0, spritelayout, 32*4+16*16, 16 )
GFXDECODE_END GFXDECODE_END
/* Machine Driver */ // Machine Driver
void gunsmoke_state::machine_start() void gunsmoke_state::machine_start()
{ {
uint8_t *rombase = memregion("maincpu")->base(); uint8_t *rombase = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 4, &rombase[0x10000], 0x4000); m_mainbank->configure_entries(0, 4, &rombase[0x8000], 0x4000);
save_item(NAME(m_chon)); save_item(NAME(m_chon));
save_item(NAME(m_objon)); save_item(NAME(m_objon));
@ -309,350 +562,350 @@ void gunsmoke_state::machine_reset()
void gunsmoke_state::gunsmoke(machine_config &config) void gunsmoke_state::gunsmoke(machine_config &config)
{ {
/* basic machine hardware */ // basic machine hardware
Z80(config, m_maincpu, 3000000); // 3 MHz Verified on PCB by jotego Z80(config, m_maincpu, 12_MHz_XTAL / 4); // 3 MHz Verified on PCB by jotego
m_maincpu->set_addrmap(AS_PROGRAM, &gunsmoke_state::gunsmoke_map); m_maincpu->set_addrmap(AS_PROGRAM, &gunsmoke_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(gunsmoke_state::irq0_line_hold)); m_maincpu->set_vblank_int("screen", FUNC(gunsmoke_state::irq0_line_hold));
z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); // 3 MHz z80_device &audiocpu(Z80(config, "audiocpu", 12_MHz_XTAL / 4)); // 3 MHz, actually inside a 85H001 CAPCOM custom
audiocpu.set_addrmap(AS_PROGRAM, &gunsmoke_state::sound_map); audiocpu.set_addrmap(AS_PROGRAM, &gunsmoke_state::sound_map);
audiocpu.set_periodic_int(FUNC(gunsmoke_state::irq0_line_hold), attotime::from_ticks(384*262/4, 6000000)); audiocpu.set_periodic_int(FUNC(gunsmoke_state::irq0_line_hold), attotime::from_ticks(384*262/4, 12_MHz_XTAL / 2));
/* video hardware */ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(6000000, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_raw(12_MHz_XTAL / 2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259
screen.set_screen_update(FUNC(gunsmoke_state::screen_update_gunsmoke)); screen.set_screen_update(FUNC(gunsmoke_state::screen_update));
screen.set_palette(m_palette); screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gunsmoke); GFXDECODE(config, m_gfxdecode, m_palette, gfx_gunsmoke);
PALETTE(config, m_palette, FUNC(gunsmoke_state::gunsmoke_palette), 32*4 + 16*16 + 16*16, 256); PALETTE(config, m_palette, FUNC(gunsmoke_state::palette), 32*4 + 16*16 + 16*16, 256);
/* sound hardware */ // sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, "soundlatch"); GENERIC_LATCH_8(config, "soundlatch");
ym2203_device &ym1(YM2203(config, "ym1", 1500000)); ym2203_device &ym1(YM2203(config, "ym1", 12_MHz_XTAL / 8));
ym1.add_route(0, "mono", 0.22); ym1.add_route(0, "mono", 0.22);
ym1.add_route(1, "mono", 0.22); ym1.add_route(1, "mono", 0.22);
ym1.add_route(2, "mono", 0.22); ym1.add_route(2, "mono", 0.22);
ym1.add_route(3, "mono", 0.14); ym1.add_route(3, "mono", 0.14);
ym2203_device &ym2(YM2203(config, "ym2", 1500000)); ym2203_device &ym2(YM2203(config, "ym2", 12_MHz_XTAL / 8));
ym2.add_route(0, "mono", 0.22); ym2.add_route(0, "mono", 0.22);
ym2.add_route(1, "mono", 0.22); ym2.add_route(1, "mono", 0.22);
ym2.add_route(2, "mono", 0.22); ym2.add_route(2, "mono", 0.22);
ym2.add_route(3, "mono", 0.14); ym2.add_route(3, "mono", 0.14);
} }
/* ROMs */ // ROMs
ROM_START( gunsmoke ) ROM_START( gunsmoke )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "gs03.09n", 0x00000, 0x8000, CRC(40a06cef) SHA1(3e2a52d476298b7252f0adaefdb42090351e921c) ) /* Code 0000-7fff */ // gse_03 ? ROM_LOAD( "gs03.09n", 0x00000, 0x8000, CRC(40a06cef) SHA1(3e2a52d476298b7252f0adaefdb42090351e921c) ) // Code 0000-7fff // gse_03
ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */ ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */ ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) ) ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
ROM_REGION( 0x40000, "gfx2", 0 ) ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3
ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) ) ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) ) ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) ) ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) // 32x32 tiles planes 0-1
ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) ) ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) ) ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) ) ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 ) ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) // Sprites planes 2-3
ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) // Sprites planes 2-3
ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) // Sprites planes 2-3
ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) // Sprites planes 2-3
ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) // Sprites planes 0-1
ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) // Sprites planes 0-1
ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) // Sprites planes 0-1
ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) // Sprites planes 0-1
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ ROM_REGION( 0x8000, "bgtiles", 0 )
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) ) ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 ) ROM_REGION( 0x0a00, "proms", 0 )
ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) // red component
ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) // green component
ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) // blue component
ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) // char lookup table
ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) // tile lookup table
ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) // tile palette bank
ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) // sprite lookup table
ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) // sprite palette bank
ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used)
ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // priority? (not used)
ROM_END ROM_END
ROM_START( gunsmokeb ) ROM_START( gunsmokeb )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "3.ic85", 0x00000, 0x8000, CRC(ae6f4b75) SHA1(f4ee4f7a7d507ceaef9ce8165704fd80c8c1e8ba) ) /* Code 0000-7fff */ ROM_LOAD( "3.ic85", 0x00000, 0x8000, CRC(ae6f4b75) SHA1(f4ee4f7a7d507ceaef9ce8165704fd80c8c1e8ba) ) // Code 0000-7fff
ROM_LOAD( "4.ic86", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */ ROM_LOAD( "4.ic86", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
ROM_LOAD( "5.ic87", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */ ROM_LOAD( "5.ic87", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "2.ic41", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) ) ROM_LOAD( "2.ic41", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "1.ic39", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */ ROM_LOAD( "1.ic39", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
ROM_REGION( 0x40000, "gfx2", 0 ) ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD( "13.ic21", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */ ROM_LOAD( "13.ic21", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3
ROM_LOAD( "12.ic20", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) ) ROM_LOAD( "12.ic20", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
ROM_LOAD( "11.ic19", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) ) ROM_LOAD( "11.ic19", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
ROM_LOAD( "10.ic18", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) ) ROM_LOAD( "10.ic18", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
ROM_LOAD( "9.ic04", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */ ROM_LOAD( "9.ic04", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) // 32x32 tiles planes 0-1
ROM_LOAD( "8.ic03", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) ) ROM_LOAD( "8.ic03", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
ROM_LOAD( "7.ic02", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) ) ROM_LOAD( "7.ic02", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
ROM_LOAD( "6.ic01", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) ) ROM_LOAD( "6.ic01", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 ) ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "22.ic134", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */ ROM_LOAD( "22.ic134", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) // Sprites planes 2-3
ROM_LOAD( "21.ic133", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */ ROM_LOAD( "21.ic133", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) // Sprites planes 2-3
ROM_LOAD( "20.ic132", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */ ROM_LOAD( "20.ic132", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) // Sprites planes 2-3
ROM_LOAD( "19.ic131", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */ ROM_LOAD( "19.ic131", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) // Sprites planes 2-3
ROM_LOAD( "18.ic115", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */ ROM_LOAD( "18.ic115", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) // Sprites planes 0-1
ROM_LOAD( "17.ic114", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */ ROM_LOAD( "17.ic114", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) // Sprites planes 0-1
ROM_LOAD( "16.ic113", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */ ROM_LOAD( "16.ic113", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) // Sprites planes 0-1
ROM_LOAD( "15.ic112", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */ ROM_LOAD( "15.ic112", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) // Sprites planes 0-1
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ ROM_REGION( 0x8000, "bgtiles", 0 )
ROM_LOAD( "14.ic25", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) ) ROM_LOAD( "14.ic25", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
/* The names of the proms starting with "g-" do not yet reflect their position in the pcb layout of this bootleg. /* The names of the PROMs starting with "g-" do not yet reflect their position in the PCB layout of this bootleg.
As the ICs are not socketed, but directly soldered to the pcb, it is harder to identify which is which. As the ICs are not socketed, but directly soldered to the PCB, it is harder to identify which is which.
But it would be good to figure this out at some point, for the sake of documenting this specific board layout. */ But it would be good to figure this out at some point, for the sake of documenting this specific board layout. */
ROM_REGION( 0x0a00, "proms", 0 ) ROM_REGION( 0x0a00, "proms", 0 )
ROM_LOAD( "prom.ic3", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */ ROM_LOAD( "prom.ic3", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) // red component
ROM_LOAD( "prom.ic4", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */ ROM_LOAD( "prom.ic4", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) // green component
ROM_LOAD( "prom.ic5", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */ ROM_LOAD( "prom.ic5", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) // blue component
ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) // char lookup table
ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) // tile lookup table
ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) // tile palette bank
ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) // sprite lookup table
ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) // sprite palette bank
ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used)
ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // priority? (not used)
ROM_END ROM_END
ROM_START( gunsmokej ) ROM_START( gunsmokej )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "gsj_03.09n", 0x00000, 0x8000, CRC(b56b5df6) SHA1(0295a3ef491b6b8ee9c198fd08dddc29d88bbef6) ) /* Code 0000-7fff */ ROM_LOAD( "gsj_03.09n", 0x00000, 0x8000, CRC(b56b5df6) SHA1(0295a3ef491b6b8ee9c198fd08dddc29d88bbef6) ) // Code 0000-7fff
ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */ ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */ ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) ) ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
ROM_REGION( 0x40000, "gfx2", 0 ) ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3
ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) ) ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) ) ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) ) ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) // 32x32 tiles planes 0-1
ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) ) ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) ) ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) ) ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 ) ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) // Sprites planes 2-3
ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) // Sprites planes 2-3
ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) // Sprites planes 2-3
ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) // Sprites planes 2-3
ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) // Sprites planes 0-1
ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) // Sprites planes 0-1
ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) // Sprites planes 0-1
ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) // Sprites planes 0-1
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ ROM_REGION( 0x8000, "bgtiles", 0 )
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) ) ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 ) ROM_REGION( 0x0a00, "proms", 0 )
ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) // red component
ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) // green component
ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) // blue component
ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) // char lookup table
ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) // tile lookup table
ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) // tile palette bank
ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) // sprite lookup table
ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) // sprite palette bank
ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used)
ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // priority? (not used)
ROM_END ROM_END
ROM_START( gunsmokeu ) ROM_START( gunsmokeu )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "gsa_03.9n", 0x00000, 0x8000, CRC(51dc3f76) SHA1(2a188fee73c3662b665b56a825eb908b7b42dcd0) ) /* Code 0000-7fff */ ROM_LOAD( "gsa_03.9n", 0x00000, 0x8000, CRC(51dc3f76) SHA1(2a188fee73c3662b665b56a825eb908b7b42dcd0) ) // Code 0000-7fff
ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(5ecf31b8) SHA1(34ec9727330821a45b497c78c970a1a4f14ff4ee) ) /* Paged code */ ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(5ecf31b8) SHA1(34ec9727330821a45b497c78c970a1a4f14ff4ee) ) // Paged code
ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(1c9aca13) SHA1(eb92c373d2241aea4c59248e1b82717733105ac0) ) /* Paged code */ ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(1c9aca13) SHA1(eb92c373d2241aea4c59248e1b82717733105ac0) ) // Paged code
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) ) ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
ROM_REGION( 0x40000, "gfx2", 0 ) ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3
ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) ) ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) ) ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) ) ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) // 32x32 tiles planes 0-1
ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) ) ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) ) ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) ) ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 ) ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) // Sprites planes 2-3
ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) // Sprites planes 2-3
ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) // Sprites planes 2-3
ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) // Sprites planes 2-3
ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) // Sprites planes 0-1
ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) // Sprites planes 0-1
ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) // Sprites planes 0-1
ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) // Sprites planes 0-1
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ ROM_REGION( 0x8000, "bgtiles", 0 )
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) ) ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 ) ROM_REGION( 0x0a00, "proms", 0 )
ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) // red component
ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) // green component
ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) // blue component
ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) // char lookup table
ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) // tile lookup table
ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) // tile palette bank
ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) // sprite lookup table
ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) // sprite palette bank
ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used)
ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // priority? (not used)
ROM_END ROM_END
ROM_START( gunsmokeua ) ROM_START( gunsmokeua )
ROM_REGION( 0x20000, "maincpu", 0 ) // has a small extra piece of code at 0x2f00 and a jump to it at 0x297b, otherwise the same as gunsmokeub including the datecode, chip had an 'A' stamped on it, bugfix? ROM_REGION( 0x18000, "maincpu", 0 ) // has a small extra piece of code at 0x2f00 and a jump to it at 0x297b, otherwise the same as gunsmokeub including the datecode, chip had an 'A' stamped on it, bugfix?
ROM_LOAD( "gsr_03a.9n", 0x00000, 0x8000, CRC(2f6e6ad7) SHA1(e9e4a367c240a35a1ba2eeaec9458996f7926f16) ) /* Code 0000-7fff */ ROM_LOAD( "gsr_03a.9n", 0x00000, 0x8000, CRC(2f6e6ad7) SHA1(e9e4a367c240a35a1ba2eeaec9458996f7926f16) ) // Code 0000-7fff
ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */ ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */ ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) ) ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
ROM_REGION( 0x40000, "gfx2", 0 ) ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3
ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) ) ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) ) ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) ) ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) // 32x32 tiles planes 0-1
ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) ) ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) ) ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) ) ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 ) ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) // Sprites planes 2-3
ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) // Sprites planes 2-3
ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) // Sprites planes 2-3
ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) // Sprites planes 2-3
ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) // Sprites planes 0-1
ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) // Sprites planes 0-1
ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) // Sprites planes 0-1
ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) // Sprites planes 0-1
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ ROM_REGION( 0x8000, "bgtiles", 0 )
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) ) ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 ) ROM_REGION( 0x0a00, "proms", 0 )
ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) // red component
ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) // green component
ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) // blue component
ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) // char lookup table
ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) // tile lookup table
ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) // tile palette bank
ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) // sprite lookup table
ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) // sprite palette bank
ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used)
ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // priority? (not used)
ROM_END ROM_END
ROM_START( gunsmokeub ) ROM_START( gunsmokeub )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "gsr_03.9n", 0x00000, 0x8000, CRC(592f211b) SHA1(8de44b3cafa3d2ce9aba515cf3ec4bac0bcdeb5b) ) /* Code 0000-7fff */ ROM_LOAD( "gsr_03.9n", 0x00000, 0x8000, CRC(592f211b) SHA1(8de44b3cafa3d2ce9aba515cf3ec4bac0bcdeb5b) ) // Code 0000-7fff
ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */ ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */ ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) ) ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
ROM_REGION( 0x40000, "gfx2", 0 ) ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3
ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) ) ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) ) ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) ) ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) // 32x32 tiles planes 0-1
ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) ) ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) ) ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) ) ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 ) ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) // Sprites planes 2-3
ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) // Sprites planes 2-3
ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) // Sprites planes 2-3
ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) // Sprites planes 2-3
ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) // Sprites planes 0-1
ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) // Sprites planes 0-1
ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) // Sprites planes 0-1
ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) // Sprites planes 0-1
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */ ROM_REGION( 0x8000, "bgtiles", 0 )
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) ) ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 ) ROM_REGION( 0x0a00, "proms", 0 )
ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) // red component
ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) // green component
ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) // blue component
ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) // char lookup table
ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) // tile lookup table
ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) // tile palette bank
ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) // sprite lookup table
ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) // sprite palette bank
ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // video timing (not used)
ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // priority? (not used)
ROM_END ROM_END
ROM_START( gunsmokeg ) ROM_START( gunsmokeg )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD( "gsg03.09n", 0x00000, 0x8000, CRC(8ad2754e) SHA1(221309d4d76e49f9b80849630b2846fc2e3d72a1) ) // Code 0000-7fff ROM_LOAD( "gsg03.09n", 0x00000, 0x8000, CRC(8ad2754e) SHA1(221309d4d76e49f9b80849630b2846fc2e3d72a1) ) // Code 0000-7fff
ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) ) ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 ) ROM_REGION( 0x04000, "chars", 0 )
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) // Characters ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) // Characters
ROM_REGION( 0x40000, "gfx2", 0 ) ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3 ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) // 32x32 tiles planes 2-3
ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) ) ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) ) ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
@ -663,7 +916,7 @@ ROM_START( gunsmokeg )
ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) ) ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
ROM_LOAD( "gsg06.02a", 0x38000, 0x8000, CRC(5cb850a7) SHA1(5b4fec3fae4d1947778c832c41f757414652f34a) ) ROM_LOAD( "gsg06.02a", 0x38000, 0x8000, CRC(5cb850a7) SHA1(5b4fec3fae4d1947778c832c41f757414652f34a) )
ROM_REGION( 0x40000, "gfx3", 0 ) ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "gsg22.06n", 0x00000, 0x8000, CRC(96779c38) SHA1(83f5811b7674e39fac6d127bcf2741a5ba111ec1) ) // Sprites planes 2-3 ROM_LOAD( "gsg22.06n", 0x00000, 0x8000, CRC(96779c38) SHA1(83f5811b7674e39fac6d127bcf2741a5ba111ec1) ) // Sprites planes 2-3
ROM_LOAD( "gsg21.04n", 0x08000, 0x8000, CRC(6e8a02c7) SHA1(8db5792ded8c6360e5a07f96b7799eae7591d719) ) // Sprites planes 2-3 ROM_LOAD( "gsg21.04n", 0x08000, 0x8000, CRC(6e8a02c7) SHA1(8db5792ded8c6360e5a07f96b7799eae7591d719) ) // Sprites planes 2-3
ROM_LOAD( "gsg20.03n", 0x10000, 0x8000, CRC(139bf927) SHA1(f58bf8cffbc4e9e1a48c905d341f92a22df6cf37) ) // Sprites planes 2-3 ROM_LOAD( "gsg20.03n", 0x10000, 0x8000, CRC(139bf927) SHA1(f58bf8cffbc4e9e1a48c905d341f92a22df6cf37) ) // Sprites planes 2-3
@ -673,7 +926,7 @@ ROM_START( gunsmokeg )
ROM_LOAD( "gsg16.03l", 0x30000, 0x8000, CRC(6620103b) SHA1(ef1260c05c958c115f54ddaffa213d320508ff11) ) // Sprites planes 0-1 ROM_LOAD( "gsg16.03l", 0x30000, 0x8000, CRC(6620103b) SHA1(ef1260c05c958c115f54ddaffa213d320508ff11) ) // Sprites planes 0-1
ROM_LOAD( "gsg15.01l", 0x38000, 0x8000, CRC(ccc1c1b6) SHA1(feb480195bc4157d7be385b055bdd47505de6bc6) ) // Sprites planes 0-1 ROM_LOAD( "gsg15.01l", 0x38000, 0x8000, CRC(ccc1c1b6) SHA1(feb480195bc4157d7be385b055bdd47505de6bc6) ) // Sprites planes 0-1
ROM_REGION( 0x8000, "gfx4", 0 ) // Background tilemaps ROM_REGION( 0x8000, "bgtiles", 0 )
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) ) ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 ) ROM_REGION( 0x0a00, "proms", 0 )
@ -689,16 +942,19 @@ ROM_START( gunsmokeg )
ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // Priority? (not used) ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) // Priority? (not used)
ROM_END ROM_END
} // anonymous namespace
/* Game Drivers */ /* Game Drivers */
// at 0x7E50 in the first rom is 85113 (project ident code?) and the project codename 'Gunman' both stored as ASCII. // at 0x7E50 in the first ROM is 85113 (project ident code) and the project codename 'Gunman' both stored as ASCII.
// Following that at (stored as raw data) is the build date in yyyymmdd format. After that a ROM identification string(?) which I've // Following that at (stored as raw data) is the build date in yyyymmdd format. After that a ROM identification string(?) which I've
// left in the comment after each set. // left in the comment after each set.
// this information is not displayed onscreen // this information is not displayed onscreen
GAME( 1985, gunsmoke, 0, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "Capcom", "Gun.Smoke (World, 851115)", MACHINE_SUPPORTS_SAVE ) // GSE_03 GAME( 1985, gunsmoke, 0, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "Capcom", "Gun.Smoke (World, 851115)", MACHINE_SUPPORTS_SAVE ) // GSE_03
GAME( 1985, gunsmokeb, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "bootleg", "Gun.Smoke (World, 851115) (bootleg)", MACHINE_SUPPORTS_SAVE ) // based on above version, warning message patched out GAME( 1985, gunsmokeb, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "bootleg", "Gun.Smoke (World, 851115) (bootleg)", MACHINE_SUPPORTS_SAVE ) // based on above version, warning message patched out
GAME( 1985, gunsmokej, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "Capcom", "Gun.Smoke (Japan, 851115)", MACHINE_SUPPORTS_SAVE ) // GSJ_03 GAME( 1985, gunsmokej, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "Capcom", "Gun.Smoke (Japan, 851115)", MACHINE_SUPPORTS_SAVE ) // GSJ_03
GAME( 1986, gunsmokeu, gunsmoke, gunsmoke, gunsmokeu, gunsmoke_state, empty_init, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 860408)", MACHINE_SUPPORTS_SAVE ) // GSA_03 GAME( 1986, gunsmokeu, gunsmoke, gunsmoke, gunsmokeu, gunsmoke_state, empty_init, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 860408)", MACHINE_SUPPORTS_SAVE ) // GSA_03
GAME( 1985, gunsmokeua, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 1)", MACHINE_SUPPORTS_SAVE ) // GSR_03 (03A on the chip) GAME( 1985, gunsmokeua, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, empty_init, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 1)", MACHINE_SUPPORTS_SAVE ) // GSR_03 (03A on the chip)

View File

@ -1,77 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Phil Stroffolino
/***************************************************************************
Break Thru
***************************************************************************/
#ifndef MAME_INCLUDES_BRKTRHU_H
#define MAME_INCLUDES_BRKTRHU_H
#pragma once
#include "machine/gen_latch.h"
#include "emupal.h"
#include "tilemap.h"
class brkthru_state : public driver_device
{
public:
brkthru_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_fg_videoram(*this, "fg_videoram"),
m_videoram(*this, "videoram"),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch")
{ }
void brkthru(machine_config &config);
void darwin(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
void init_brkthru();
private:
/* memory pointers */
required_shared_ptr<uint8_t> m_fg_videoram;
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_spriteram;
/* video-related */
tilemap_t *m_fg_tilemap = nullptr;
tilemap_t *m_bg_tilemap = nullptr;
int m_bgscroll = 0;
int m_bgbasecolor = 0;
int m_flipscreen = 0;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
uint8_t m_nmi_mask = 0U;
void brkthru_1803_w(uint8_t data);
void darwin_0803_w(uint8_t data);
void brkthru_bgram_w(offs_t offset, uint8_t data);
void brkthru_fgram_w(offs_t offset, uint8_t data);
void brkthru_1800_w(offs_t offset, uint8_t data);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
void brkthru_palette(palette_device &palette) const;
uint32_t screen_update_brkthru(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int prio );
void brkthru_map(address_map &map);
void darwin_map(address_map &map);
void sound_map(address_map &map);
};
#endif // MAME_INCLUDES_BRKTRHU_H

View File

@ -1,68 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/*************************************************************************
Gun.Smoke
*************************************************************************/
#ifndef MAME_INCLUDES_GUNSMOKE_H
#define MAME_INCLUDES_GUNSMOKE_H
#pragma once
#include "emupal.h"
#include "tilemap.h"
class gunsmoke_state : public driver_device
{
public:
gunsmoke_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"),
m_scrollx(*this, "scrollx"),
m_scrolly(*this, "scrolly"),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
{ }
void gunsmoke(machine_config &config);
private:
/* memory pointers */
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
required_shared_ptr<uint8_t> m_scrollx;
required_shared_ptr<uint8_t> m_scrolly;
required_shared_ptr<uint8_t> m_spriteram;
/* video-related */
tilemap_t *m_bg_tilemap = nullptr;
tilemap_t *m_fg_tilemap = nullptr;
uint8_t m_chon = 0U;
uint8_t m_objon = 0U;
uint8_t m_bgon = 0U;
uint8_t m_sprite3bank = 0U;
uint8_t gunsmoke_protection_r(offs_t offset);
void gunsmoke_videoram_w(offs_t offset, uint8_t data);
void gunsmoke_colorram_w(offs_t offset, uint8_t data);
void gunsmoke_c804_w(uint8_t data);
void gunsmoke_d806_w(uint8_t data);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
void gunsmoke_palette(palette_device &palette) const;
uint32_t screen_update_gunsmoke(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
void gunsmoke_map(address_map &map);
void sound_map(address_map &map);
};
#endif // MAME_INCLUDES_GUNSMOKE_H

View File

@ -34,7 +34,7 @@ A000-BFFF |R/W| D D D D D D D D | ?window into character RAM/ROM?
-----------+---+-----------------+----------------------------------------- -----------+---+-----------------+-----------------------------------------
C000-DFFF |?/W| D D D D D D D D | I/O registers C000-DFFF |?/W| D D D D D D D D | I/O registers
C000 | W | ? ? ? ? ? ? D D | program ROM page select C000 | W | ? ? ? ? ? ? D D | program ROM page select
controls what portion of the eprom is controls what portion of the EPROM is
mapped at 0000 - 7FFFF mapped at 0000 - 7FFFF
______________________________________ ______________________________________
@ -93,124 +93,80 @@ E000-FFFF | R | D D D D D D D D | 8K ROM
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
#include "video/bfm_adr2.h" #include "video/bfm_adr2.h"
#include "cpu/m6809/m6809.h" #include "cpu/m6809/m6809.h"
#include "machine/bfm_bd1.h" // vfd #include "machine/bfm_bd1.h" // vfd
#include "emupal.h" #include "emupal.h"
#include "screen.h" #include "screen.h"
#ifdef MAME_DEBUG // configurable logging
#define VERBOSE 1 #define LOG_CTRL (1U << 1)
#else #define LOG_C001 (1U << 2)
#define VERBOSE 0 #define LOG_SERIAL (1U << 3)
#endif
#define LOG_CTRL(x) do { if (VERBOSE) logerror x; } while (0) //#define VERBOSE (LOG_GENERAL | LOG_CTRL | LOG_C001 | LOG_SERIAL)
// local vars ///////////////////////////////////////////////////////////// #include "logmacro.h"
#define SL_DISPLAY 0x02 // displayed Adder screen, 1=screen1 0=screen0 #define LOGCTRL(...) LOGMASKED(LOG_CTRL, __VA_ARGS__)
#define SL_ACCESS 0x01 // accessable Adder screen, 1=screen1 0=screen0 #define LOGC001(...) LOGMASKED(LOG_C001, __VA_ARGS__)
#define LOGSERIAL(...) LOGMASKED(LOG_SERIAL, __VA_ARGS__)
#define ADDER_CLOCK (XTAL(8'000'000))
static const gfx_layout charlayout =
{
8,8, // 8 * 8 characters
8192, // 8192 characters
4, // 4 bits per pixel
{ 0,1,2,3 },
{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
{ 0*8*4, 1*8*4, 2*8*4, 3*8*4, 4*8*4, 5*8*4, 6*8*4, 7*8*4 },
8*8*4
};
// this is a strange beast !!!! // this is a strange beast !!!!
// //
// characters are grouped by 64 (512 pixels) // characters are grouped by 64 (512 pixels)
// there are max 128 of these groups // there are max 128 of these groups
static GFXDECODE_START( gfx_adder2 ) GFXDECODE_MEMBER( bfm_adder2_device::gfxinfo )
GFXDECODE_ENTRY( ":gfx1", 0, charlayout, 0, 16 ) GFXDECODE_DEVICE( "tiles", 0, gfx_8x8x4_packed_msb, 0, 16 )
GFXDECODE_END GFXDECODE_END
DEFINE_DEVICE_TYPE(BFM_ADDER2, bfm_adder2_device, "bfm_adder2", "BFM ADDER2") DEFINE_DEVICE_TYPE(BFM_ADDER2, bfm_adder2_device, "bfm_adder2", "BFM ADDER2")
bfm_adder2_device::bfm_adder2_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ) bfm_adder2_device::bfm_adder2_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock )
: device_t(mconfig, BFM_ADDER2, tag, owner, clock) : device_t(mconfig, BFM_ADDER2, tag, owner, clock)
, device_gfx_interface(mconfig, *this, gfx_adder2, "palette") , device_gfx_interface(mconfig, *this, gfxinfo, "palette")
, m_cpu(*this, "adder2") , m_cpu(*this, "cpu")
, m_screen_ram(*this, "screen_ram%u", 0U)
, m_screen_ram_view(*this, "screen_ram_view")
, m_rombank(*this, "rombank")
{ {
} }
///////////////////////////////////////////////////////////////////////////
TILE_GET_INFO_MEMBER( bfm_adder2_device::get_tile0_info ) template <uint8_t Which>
TILE_GET_INFO_MEMBER(bfm_adder2_device::get_tile_info)
{ {
short data; int y = tile_index / 50;
int code, color, flags,x,y; int x = tile_index - (y * 50);
y = tile_index / 50;
x = tile_index - (y*50);
tile_index = y * 128 + (x * 2); tile_index = y * 128 + (x * 2);
data = m_screen_ram[0][tile_index ]<<8; short data = m_screen_ram[Which][tile_index] << 8;
data |= m_screen_ram[0][tile_index + 1]; data |= m_screen_ram[Which][tile_index + 1];
code = data & 0x1FFF; int code = data & 0x1fff;
color = 0; int color = 0;
flags = ((data & 0x4000)?TILE_FLIPY:0) | int flags = ((data & 0x4000) ? TILE_FLIPY : 0) | ((data & 0x2000) ? TILE_FLIPX : 0);
((data & 0x2000)?TILE_FLIPX:0);
tileinfo.set(0, code, color, flags); tileinfo.set(0, code, color, flags);
} }
///////////////////////////////////////////////////////////////////////////
TILE_GET_INFO_MEMBER( bfm_adder2_device::get_tile1_info )
{
short data;
int code, color, flags,x,y;
y = tile_index / 50;
x = tile_index - (y*50);
tile_index = y * 128 + (x * 2);
data = m_screen_ram[1][tile_index ]<<8;
data |= m_screen_ram[1][tile_index + 1];
code = data & 0x1FFF;
color = 0;
flags = ((data & 0x4000)?TILE_FLIPY:0) |
((data & 0x2000)?TILE_FLIPX:0);
tileinfo.set(0, code, color, flags);
}
// video initialisation ///////////////////////////////////////////////////
void bfm_adder2_device::device_reset() void bfm_adder2_device::device_reset()
{ {
m_screen_page_reg = 0; m_screen_page_reg = 0;
m_c101 = 0; m_c101 = 0;
m_rx = 0; m_vbl_triggered = false;
m_vbl_triggered = false; m_acia_triggered = false;
m_acia_triggered = false; m_data_from_sc2 = 0;
m_data_from_sc2 = 0; m_data_to_sc2 = 0;
m_data_to_sc2 = 0;
{ m_rombank->configure_entries(0, 4, memregion("cpu")->base(), 0x08000);
uint8_t *rom = machine().root_device().memregion("adder2")->base();
membank("bank2")->configure_entries(0, 4, &rom[0x00000], 0x08000);
membank("bank2")->set_entry(0&0x03);
}
} }
void bfm_adder2_device::device_start() void bfm_adder2_device::device_start()
@ -218,58 +174,52 @@ void bfm_adder2_device::device_start()
if (!palette().device().started()) if (!palette().device().started())
throw device_missing_dependencies(); throw device_missing_dependencies();
adder2_decode_char_roms(); m_screen_ram_view.select(0);
decode_char_roms();
save_item(NAME(m_screen_page_reg)); save_item(NAME(m_screen_page_reg));
save_item(NAME(m_c101)); save_item(NAME(m_c101));
save_item(NAME(m_rx));
save_item(NAME(m_vbl_triggered)); save_item(NAME(m_vbl_triggered));
save_item(NAME(m_acia_triggered)); save_item(NAME(m_acia_triggered));
save_item(NAME(m_data_from_sc2)); save_item(NAME(m_data_from_sc2));
save_item(NAME(m_data_to_sc2)); save_item(NAME(m_data_to_sc2));
save_item(NAME(m_adder_ram)); m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(bfm_adder2_device::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 50, 35);
save_item(NAME(m_screen_ram));
m_tilemap0 = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(bfm_adder2_device::get_tile0_info)), TILEMAP_SCAN_ROWS, 8, 8, 50, 35); m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(bfm_adder2_device::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 50, 35);
m_tilemap1 = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(bfm_adder2_device::get_tile1_info)), TILEMAP_SCAN_ROWS, 8, 8, 50, 35); palette().set_pen_color(0, rgb_t(0x00, 0x00, 0x00));
palette().set_pen_color(1, rgb_t(0x00, 0x00, 0xff));
palette().set_pen_color(0,rgb_t(0x00,0x00,0x00)); palette().set_pen_color(2, rgb_t(0x00, 0xff, 0x00));
palette().set_pen_color(1,rgb_t(0x00,0x00,0xFF)); palette().set_pen_color(3, rgb_t(0x00, 0xff, 0xff));
palette().set_pen_color(2,rgb_t(0x00,0xFF,0x00)); palette().set_pen_color(4, rgb_t(0xff, 0x00, 0x00));
palette().set_pen_color(3,rgb_t(0x00,0xFF,0xFF)); palette().set_pen_color(5, rgb_t(0xff, 0x00, 0xff));
palette().set_pen_color(4,rgb_t(0xFF,0x00,0x00)); palette().set_pen_color(6, rgb_t(0xff, 0xff, 0x00));
palette().set_pen_color(5,rgb_t(0xFF,0x00,0xFF)); palette().set_pen_color(7, rgb_t(0xff, 0xff, 0xff));
palette().set_pen_color(6,rgb_t(0xFF,0xFF,0x00)); palette().set_pen_color(8, rgb_t(0x80, 0x80, 0x80));
palette().set_pen_color(7,rgb_t(0xFF,0xFF,0xFF)); palette().set_pen_color(9, rgb_t(0x00, 0x00, 0x80));
palette().set_pen_color(8,rgb_t(0x80,0x80,0x80)); palette().set_pen_color(10 ,rgb_t(0x00, 0x80, 0x00));
palette().set_pen_color(9,rgb_t(0x00,0x00,0x80)); palette().set_pen_color(11, rgb_t(0x00, 0x80, 0x80));
palette().set_pen_color(10,rgb_t(0x00,0x80,0x00)); palette().set_pen_color(12, rgb_t(0x80, 0x00, 0x00));
palette().set_pen_color(11,rgb_t(0x00,0x80,0x80)); palette().set_pen_color(13, rgb_t(0x80, 0x00, 0x80));
palette().set_pen_color(12,rgb_t(0x80,0x00,0x00)); palette().set_pen_color(14, rgb_t(0x80, 0x80, 0x00));
palette().set_pen_color(13,rgb_t(0x80,0x00,0x80)); palette().set_pen_color(15, rgb_t(0x80, 0x80, 0x80));
palette().set_pen_color(14,rgb_t(0x80,0x80,0x00));
palette().set_pen_color(15,rgb_t(0x80,0x80,0x80));
} }
// video update ///////////////////////////////////////////////////////////
uint32_t bfm_adder2_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
const rectangle visible1(0, 400-1, 0, 280-1); //minx,maxx, miny,maxy
if (m_screen_page_reg & SL_DISPLAY) uint32_t bfm_adder2_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
m_tilemap1->draw(screen, bitmap, visible1, 0, 0); {
else const rectangle visible1(0, 400 - 1, 0, 280 - 1); //minx, maxx, miny, maxy
m_tilemap0->draw(screen, bitmap, visible1, 0, 0);
m_tilemap[BIT(m_screen_page_reg, 1)]->draw(screen, bitmap, visible1, 0, 0);
return 0; return 0;
} }
///////////////////////////////////////////////////////////////////////////
WRITE_LINE_MEMBER(bfm_adder2_device::adder2_vbl_w) WRITE_LINE_MEMBER(bfm_adder2_device::vbl_w)
{ {
if (state && BIT(m_c101, 0)) if (state && BIT(m_c101, 0))
{ {
@ -278,147 +228,105 @@ WRITE_LINE_MEMBER(bfm_adder2_device::adder2_vbl_w)
} }
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::screen_ram_r(offs_t offset)
{
return m_screen_page_reg & SL_ACCESS ? m_screen_ram[1][offset]:m_screen_ram[0][offset];
}
///////////////////////////////////////////////////////////////////////////
template <uint8_t Which>
void bfm_adder2_device::screen_ram_w(offs_t offset, uint8_t data) void bfm_adder2_device::screen_ram_w(offs_t offset, uint8_t data)
{ {
int dirty_off = (offset>>7)*50 + ((offset & 0x7F)>>1); int dirty_off = (offset >> 7) * 50 + ((offset & 0x7f) >> 1);
if ( offset > 102 && offset < 102+1+16 ) if (offset > 102 && offset < 102 + 1 + 16)
{ // format xxxrrggb //////////////////////////////////////////////////// { // format xxxrrggb
int pal; int pal = offset - 102 - 1;
uint8_t r,g,b;
pal = offset-102-1; uint8_t r = ((data & 0x18) >> 3) * 85; // 00011000b = 0x18
uint8_t g = ((data & 0x06) >> 1) * 85; // 00000110b = 0x06
r = ((data & 0x18)>>3) * 85; // 00011000b = 0x18 uint8_t b = (data & 0x01) * 255;
g = ((data & 0x06)>>1) * 85; // 00000110b = 0x06 palette().set_pen_color(pal, rgb_t(r, g, b));
b = ((data & 0x01) ) * 255;
palette().set_pen_color(pal, rgb_t(r,g,b));
} }
if (m_screen_page_reg & SL_ACCESS) m_screen_ram[Which][offset] = data;
{ m_tilemap[Which]->mark_tile_dirty(dirty_off);
m_screen_ram[1][offset] = data;
m_tilemap1->mark_tile_dirty(dirty_off);
}
else
{
m_screen_ram[0][offset] = data;
m_tilemap0->mark_tile_dirty(dirty_off);
}
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::normal_ram_r(offs_t offset) void bfm_adder2_device::rom_page_w(uint8_t data)
{ {
return m_adder_ram[offset]; m_rombank->set_entry(data & 0x03);
} }
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::normal_ram_w(offs_t offset, uint8_t data) void bfm_adder2_device::c001_w(uint8_t data)
{ {
m_adder_ram[offset] = data; LOGC001("c001 = %02X\n", data);
}
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_rom_page_w(uint8_t data)
{
membank("bank2")->set_entry(data&0x03);
}
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_c001_w(uint8_t data)
{
logerror("c101 = %02X\n",data);
//m_screen_page_reg = 0; //m_screen_page_reg = 0;
} }
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_screen_page_w(uint8_t data) void bfm_adder2_device::screen_page_w(uint8_t data)
{ {
m_screen_page_reg = data; m_screen_page_reg = data;
m_screen_ram_view.select(BIT(m_screen_page_reg, 0));
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::adder2_vbl_ctrl_r() uint8_t bfm_adder2_device::vbl_ctrl_r()
{ {
m_vbl_triggered = false; // clear VBL start IRQ m_vbl_triggered = false; // clear VBL start IRQ
return m_c101; return m_c101;
} }
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_vbl_ctrl_w(uint8_t data) void bfm_adder2_device::vbl_ctrl_w(uint8_t data)
{ {
m_c101 = data; m_c101 = data;
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::adder2_uart_ctrl_r() uint8_t bfm_adder2_device::uart_ctrl_r()
{ {
int status = 0; int status = 0;
if (m_data_from_sc2) status |= 0x01; // receive buffer full if (m_data_from_sc2) status |= 0x01; // receive buffer full
if (!m_data_to_sc2 ) status |= 0x02; // transmit buffer empty if (!m_data_to_sc2) status |= 0x02; // transmit buffer empty
return status; return status;
} }
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_uart_ctrl_w(uint8_t data) void bfm_adder2_device::uart_ctrl_w(uint8_t data)
{ {
m_data_from_sc2 = false; // data available for adder from sc2 m_data_from_sc2 = false; // data available for adder from sc2
m_sc2data = 0; // data m_sc2data = 0; // data
m_data_to_sc2 = false; // data available for sc2 from adder m_data_to_sc2 = false; // data available for sc2 from adder
m_adder2_data = 0; // data m_data = 0; // data
LOG_CTRL(("adder2 uart ctrl:%02X\n", data)); LOGCTRL("adder2 uart ctrl: %02X\n", data);
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::adder2_uart_rx_r() uint8_t bfm_adder2_device::uart_rx_r()
{ {
int data = m_sc2data; int data = m_sc2data;
m_data_from_sc2 = false; // clr flag, data from scorpion2 board available m_data_from_sc2 = false; // clr flag, data from scorpion2 board available
LOG_CTRL(("rsc2:%02X (%c)\n",data, data )); LOGCTRL("rsc2: %02X (%c)\n", data, data);
return data; return data;
} }
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_uart_tx_w(uint8_t data) void bfm_adder2_device::uart_tx_w(uint8_t data)
{ {
m_data_to_sc2 = true; // set flag, data from adder available m_data_to_sc2 = true; // set flag, data from adder available
m_adder2_data = data; // store data m_data = data; // store data
LOG_CTRL(("ssc2 %02X(%c)\n",data, data )); LOGCTRL("ssc2: %02X (%c)\n", data, data);
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::adder2_irq_r() uint8_t bfm_adder2_device::irq_r()
{ {
int status = 0; int status = 0;
@ -429,86 +337,73 @@ uint8_t bfm_adder2_device::adder2_irq_r()
} }
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::vid_uart_tx_w(uint8_t data) void bfm_adder2_device::vid_uart_tx_w(uint8_t data)
{ {
m_data_from_sc2 = true; // set flag, data from scorpion2 board available m_data_from_sc2 = true; // set flag, data from scorpion2 board available
m_sc2data = data; // store data m_sc2data = data; // store data
m_acia_triggered = true; // set flag, acia IRQ triggered m_acia_triggered = true; // set flag, acia IRQ triggered
m_cpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE ); m_cpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
//LOG_SERIAL(("sadder %02X (%c)\n",data, data )); LOGSERIAL("sadder: %02X (%c)\n", data, data);
} }
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::vid_uart_ctrl_w(uint8_t data) void bfm_adder2_device::vid_uart_ctrl_w(uint8_t data)
{ {
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::vid_uart_rx_r() uint8_t bfm_adder2_device::vid_uart_rx_r()
{ {
uint8_t data = m_adder2_data; uint8_t data = m_data;
m_data_to_sc2 = false; // clr flag, data from adder available m_data_to_sc2 = false; // clr flag, data from adder available
//LOG_SERIAL(("radder: %02X(%c)\n",data, data )); LOGSERIAL("radder: %02X (%c)\n", data, data);
return data; return data;
} }
///////////////////////////////////////////////////////////////////////////
uint8_t bfm_adder2_device::vid_uart_ctrl_r() uint8_t bfm_adder2_device::vid_uart_ctrl_r()
{ {
int status = 0; int status = 0;
if (m_data_to_sc2 ) status |= 0x01; // receive buffer full if (m_data_to_sc2) status |= 0x01; // receive buffer full
if (!m_data_from_sc2) status |= 0x02; // transmit buffer empty if (!m_data_from_sc2) status |= 0x02; // transmit buffer empty
return status; return status;
} }
//////////////////////////////////////////////////////////////////// void bfm_adder2_device::decode_char_roms() // decode character data to a format which can be decoded by MAME
// //
// decode character data to a format which can be decoded by MAME //
// //
////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_decode_char_roms()
{ {
uint8_t *p = machine().root_device().memregion("gfx1")->base(); uint8_t *p = memregion("tiles")->base();
if ( p ) if (p)
{ {
std::vector<uint8_t> s( 0x40000 ); std::vector<uint8_t> s(0x40000);
{ {
int x, y;
memcpy(&s[0], p, 0x40000); memcpy(&s[0], p, 0x40000);
y = 0; int y = 0;
while ( y < 128 ) while (y < 128)
{ {
x = 0; int x = 0;
while ( x < 64 ) while (x < 64)
{ {
uint8_t *src = &s[(y*256*8)+(x*4)]; uint8_t *src = &s[(y * 256 * 8) + (x * 4)];
*p++ = src[0*256+0];*p++ = src[0*256+1];*p++ = src[0*256+2];*p++ = src[0*256+3]; *p++ = src[0 * 256 + 0]; *p++ = src[0 * 256 + 1]; *p++ = src[0 * 256 + 2]; *p++ = src[0 * 256 + 3];
*p++ = src[1*256+0];*p++ = src[1*256+1];*p++ = src[1*256+2];*p++ = src[1*256+3]; *p++ = src[1 * 256 + 0]; *p++ = src[1 * 256 + 1]; *p++ = src[1 * 256 + 2]; *p++ = src[1 * 256 + 3];
*p++ = src[2*256+0];*p++ = src[2*256+1];*p++ = src[2*256+2];*p++ = src[2*256+3]; *p++ = src[2 * 256 + 0]; *p++ = src[2 * 256 + 1]; *p++ = src[2 * 256 + 2]; *p++ = src[2 * 256 + 3];
*p++ = src[3*256+0];*p++ = src[3*256+1];*p++ = src[3*256+2];*p++ = src[3*256+3]; *p++ = src[3 * 256 + 0]; *p++ = src[3 * 256 + 1]; *p++ = src[3 * 256 + 2]; *p++ = src[3 * 256 + 3];
*p++ = src[4*256+0];*p++ = src[4*256+1];*p++ = src[4*256+2];*p++ = src[4*256+3]; *p++ = src[4 * 256 + 0]; *p++ = src[4 * 256 + 1]; *p++ = src[4 * 256 + 2]; *p++ = src[4 * 256 + 3];
*p++ = src[5*256+0];*p++ = src[5*256+1];*p++ = src[5*256+2];*p++ = src[5*256+3]; *p++ = src[5 * 256 + 0]; *p++ = src[5 * 256 + 1]; *p++ = src[5 * 256 + 2]; *p++ = src[5 * 256 + 3];
*p++ = src[6*256+0];*p++ = src[6*256+1];*p++ = src[6*256+2];*p++ = src[6*256+3]; *p++ = src[6 * 256 + 0]; *p++ = src[6 * 256 + 1]; *p++ = src[6 * 256 + 2]; *p++ = src[6 * 256 + 3];
*p++ = src[7*256+0];*p++ = src[7*256+1];*p++ = src[7*256+2];*p++ = src[7*256+3]; *p++ = src[7 * 256 + 0]; *p++ = src[7 * 256 + 1]; *p++ = src[7 * 256 + 2]; *p++ = src[7 * 256 + 3];
x++; x++;
} }
y++; y++;
@ -517,30 +412,24 @@ void bfm_adder2_device::adder2_decode_char_roms()
} }
} }
///////////////////////////////////////////////////////////////////////////
// adder2 board memorymap /////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
void bfm_adder2_device::adder2_memmap(address_map &map) void bfm_adder2_device::prg_map(address_map &map)
{ {
map(0x0000, 0x0000).w(FUNC(bfm_adder2_device::adder2_screen_page_w)); // screen access/display select map(0x0000, 0x0000).w(FUNC(bfm_adder2_device::screen_page_w)); // screen access/display select
map(0x0000, 0x7FFF).bankr("bank2"); // 8k paged ROM (4 pages) map(0x0000, 0x7fff).bankr(m_rombank); // 8k paged ROM (4 pages)
map(0x8000, 0x917F).rw(FUNC(bfm_adder2_device::screen_ram_r), FUNC(bfm_adder2_device::screen_ram_w)); map(0x8000, 0x917f).view(m_screen_ram_view);
map(0x9180, 0x9FFF).rw(FUNC(bfm_adder2_device::normal_ram_r), FUNC(bfm_adder2_device::normal_ram_w)); m_screen_ram_view[0](0x8000, 0x917f).ram().w(FUNC(bfm_adder2_device::screen_ram_w<0>)).share(m_screen_ram[0]);
m_screen_ram_view[1](0x8000, 0x917f).ram().w(FUNC(bfm_adder2_device::screen_ram_w<1>)).share(m_screen_ram[1]);
map(0xC000, 0xC000).w(FUNC(bfm_adder2_device::adder2_rom_page_w)); // ROM page select map(0x9180, 0x9fff).ram();
map(0xC001, 0xC001).w(FUNC(bfm_adder2_device::adder2_c001_w)); // ?? map(0xc000, 0xc000).w(FUNC(bfm_adder2_device::rom_page_w));
map(0xc001, 0xc001).w(FUNC(bfm_adder2_device::c001_w)); // ??
map(0xC101, 0xC101).rw(FUNC(bfm_adder2_device::adder2_vbl_ctrl_r), FUNC(bfm_adder2_device::adder2_vbl_ctrl_w)); map(0xc101, 0xc101).rw(FUNC(bfm_adder2_device::vbl_ctrl_r), FUNC(bfm_adder2_device::vbl_ctrl_w));
map(0xC103, 0xC103).r(FUNC(bfm_adder2_device::adder2_irq_r)); // IRQ latch read map(0xc103, 0xc103).r(FUNC(bfm_adder2_device::irq_r));
// MC6850 compatible uart connected to main (scorpion2) board
// MC6850 compatible uart connected to main (scorpion2) board /////////////////////////////////////// map(0xc200, 0xc200).rw(FUNC(bfm_adder2_device::uart_ctrl_r), FUNC(bfm_adder2_device::uart_ctrl_w)); // 6850 compatible uart control reg
map(0xc201, 0xc201).rw(FUNC(bfm_adder2_device::uart_rx_r), FUNC(bfm_adder2_device::uart_tx_w)); // 6850 compatible uart data reg
map(0xC200, 0xC200).rw(FUNC(bfm_adder2_device::adder2_uart_ctrl_r), FUNC(bfm_adder2_device::adder2_uart_ctrl_w)); // 6850 compatible uart control reg map(0xe000, 0xffff).rom().region("cpu", 0xe000);
map(0xC201, 0xC201).rw(FUNC(bfm_adder2_device::adder2_uart_rx_r), FUNC(bfm_adder2_device::adder2_uart_tx_w)); // 6850 compatible uart data reg
map(0xE000, 0xFFFF).rom().region(":adder2", 0xE000); // 8k ROM
} }
@ -550,16 +439,16 @@ void bfm_adder2_device::adder2_memmap(address_map &map)
void bfm_adder2_device::device_add_mconfig(machine_config &config) void bfm_adder2_device::device_add_mconfig(machine_config &config)
{ {
M6809(config, m_cpu, ADDER_CLOCK/4); // adder2 board 6809 CPU at 2 Mhz M6809(config, m_cpu, 8_MHz_XTAL / 4); // 2 MHz
m_cpu->set_addrmap(AS_PROGRAM, &bfm_adder2_device::adder2_memmap); // setup adder2 board memorymap m_cpu->set_addrmap(AS_PROGRAM, &bfm_adder2_device::prg_map);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_size(400, 280); screen.set_size(400, 280);
screen.set_visarea(0, 400-1, 0, 280-1); screen.set_visarea_full();
screen.set_refresh_hz(50); screen.set_refresh_hz(50);
screen.set_palette("palette"); screen.set_palette("palette");
screen.set_screen_update(FUNC(bfm_adder2_device::update_screen)); screen.set_screen_update(FUNC(bfm_adder2_device::screen_update));
screen.screen_vblank().set(FUNC(bfm_adder2_device::adder2_vbl_w)); // board has a VBL IRQ screen.screen_vblank().set(FUNC(bfm_adder2_device::vbl_w));
PALETTE(config, "palette").set_entries(16); PALETTE(config, "palette").set_entries(16);
} }

View File

@ -14,32 +14,11 @@ public:
// construction/destruction // construction/destruction
bfm_adder2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); bfm_adder2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
TILE_GET_INFO_MEMBER( get_tile0_info );
TILE_GET_INFO_MEMBER( get_tile1_info );
uint8_t screen_ram_r(offs_t offset);
void screen_ram_w(offs_t offset, uint8_t data);
uint8_t normal_ram_r(offs_t offset);
void normal_ram_w(offs_t offset, uint8_t data);
void adder2_rom_page_w(uint8_t data);
void adder2_c001_w(uint8_t data);
void adder2_screen_page_w(uint8_t data);
uint8_t adder2_vbl_ctrl_r();
void adder2_vbl_ctrl_w(uint8_t data);
uint8_t adder2_uart_ctrl_r();
void adder2_uart_ctrl_w(uint8_t data);
uint8_t adder2_uart_rx_r();
void adder2_uart_tx_w(uint8_t data);
uint8_t adder2_irq_r();
void vid_uart_tx_w(uint8_t data); void vid_uart_tx_w(uint8_t data);
void vid_uart_ctrl_w(uint8_t data); void vid_uart_ctrl_w(uint8_t data);
uint8_t vid_uart_rx_r(); uint8_t vid_uart_rx_r();
uint8_t vid_uart_ctrl_r(); uint8_t vid_uart_ctrl_r();
void adder2_decode_char_roms();
void adder2_memmap(address_map &map);
protected: protected:
// device-level overrides // device-level overrides
virtual void device_start() override; virtual void device_start() override;
@ -47,28 +26,45 @@ protected:
virtual void device_add_mconfig(machine_config &config) override; virtual void device_add_mconfig(machine_config &config) override;
private: private:
int m_screen_page_reg = 0; // access/display select required_device<cpu_device> m_cpu;
int m_c101 = 0; required_shared_ptr_array<uint8_t, 2> m_screen_ram; // paged display RAM
int m_rx = 0; memory_view m_screen_ram_view;
required_memory_bank m_rombank;
uint8_t m_screen_page_reg = 0; // access/display select
uint8_t m_c101 = 0;
bool m_vbl_triggered = 0; // flag, VBL IRQ triggered bool m_vbl_triggered = 0; // flag, VBL IRQ triggered
bool m_acia_triggered = 0; // flag, ACIA receive IRQ bool m_acia_triggered = 0; // flag, ACIA receive IRQ
uint8_t m_adder_ram[0xE80]{}; // normal RAM tilemap_t *m_tilemap[2]{};
uint8_t m_screen_ram[2][0x1180]{}; // paged display RAM
tilemap_t *m_tilemap0 = nullptr; // tilemap screen0
tilemap_t *m_tilemap1 = nullptr; // tilemap screen1
bool m_data_from_sc2 = false; bool m_data_from_sc2 = false;
bool m_data_to_sc2 = false; bool m_data_to_sc2 = false;
uint8_t m_adder2_data = 0; uint8_t m_data = 0;
uint8_t m_sc2data = 0; uint8_t m_sc2data = 0;
optional_device<cpu_device> m_cpu; DECLARE_GFXDECODE_MEMBER(gfxinfo);
template <uint8_t Which> TILE_GET_INFO_MEMBER(get_tile_info);
uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); template <uint8_t Which> void screen_ram_w(offs_t offset, uint8_t data);
DECLARE_WRITE_LINE_MEMBER(adder2_vbl_w); void rom_page_w(uint8_t data);
void c001_w(uint8_t data);
void screen_page_w(uint8_t data);
uint8_t vbl_ctrl_r();
void vbl_ctrl_w(uint8_t data);
uint8_t uart_ctrl_r();
void uart_ctrl_w(uint8_t data);
uint8_t uart_rx_r();
void uart_tx_w(uint8_t data);
uint8_t irq_r();
void decode_char_roms();
void prg_map(address_map &map);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(vbl_w);
}; };
// device type definition // device type definition

View File

@ -1,264 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Phil Stroffolino
/***************************************************************************
video/brkthru.c
***************************************************************************/
#include "emu.h"
#include "includes/brkthru.h"
/***************************************************************************
Convert the color PROMs into a more useable format.
Break Thru has one 256x8 and one 256x4 palette PROMs.
I don't know for sure how the palette PROMs are connected to the RGB
output, but it's probably the usual:
bit 7 -- 220 ohm resistor -- GREEN
-- 470 ohm resistor -- GREEN
-- 1 kohm resistor -- GREEN
-- 2.2kohm resistor -- GREEN
-- 220 ohm resistor -- RED
-- 470 ohm resistor -- RED
-- 1 kohm resistor -- RED
bit 0 -- 2.2kohm resistor -- RED
bit 3 -- 220 ohm resistor -- BLUE
-- 470 ohm resistor -- BLUE
-- 1 kohm resistor -- BLUE
bit 0 -- 2.2kohm resistor -- BLUE
***************************************************************************/
void brkthru_state::brkthru_palette(palette_device &palette) const
{
uint8_t const *color_prom = memregion("proms")->base();
for (int i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, bit3;
bit0 = (color_prom[0] >> 0) & 0x01;
bit1 = (color_prom[0] >> 1) & 0x01;
bit2 = (color_prom[0] >> 2) & 0x01;
bit3 = (color_prom[0] >> 3) & 0x01;
int const r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
bit0 = (color_prom[0] >> 4) & 0x01;
bit1 = (color_prom[0] >> 5) & 0x01;
bit2 = (color_prom[0] >> 6) & 0x01;
bit3 = (color_prom[0] >> 7) & 0x01;
int const g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
int const b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
}
/***************************************************************************
Start the video hardware emulation.
***************************************************************************/
TILE_GET_INFO_MEMBER(brkthru_state::get_bg_tile_info)
{
/* BG RAM format
0 1
---- -c-- ---- ---- = Color
---- --xx xxxx xxxx = Code
*/
int code = (m_videoram[tile_index * 2] | ((m_videoram[tile_index * 2 + 1]) << 8)) & 0x3ff;
int region = 1 + (code >> 7);
int colour = m_bgbasecolor + ((m_videoram[tile_index * 2 + 1] & 0x04) >> 2);
tileinfo.set(region, code & 0x7f, colour,0);
}
void brkthru_state::brkthru_bgram_w(offs_t offset, uint8_t data)
{
m_videoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset / 2);
}
TILE_GET_INFO_MEMBER(brkthru_state::get_fg_tile_info)
{
uint8_t code = m_fg_videoram[tile_index];
tileinfo.set(0, code, 0, 0);
}
void brkthru_state::brkthru_fgram_w(offs_t offset, uint8_t data)
{
m_fg_videoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
void brkthru_state::video_start()
{
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(brkthru_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(brkthru_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 16);
m_fg_tilemap->set_transparent_pen(0);
m_bg_tilemap->set_transparent_pen(0);
}
void brkthru_state::brkthru_1800_w(offs_t offset, uint8_t data)
{
if (offset == 0) /* low 8 bits of scroll */
m_bgscroll = (m_bgscroll & 0x100) | data;
else if (offset == 1)
{
/* bit 0-2 = ROM bank select */
membank("bank1")->set_entry(data & 0x07);
/* bit 3-5 = background tiles color code */
if (((data & 0x38) >> 2) != m_bgbasecolor)
{
m_bgbasecolor = (data & 0x38) >> 2;
m_bg_tilemap->mark_all_dirty();
}
/* bit 6 = screen flip */
if (m_flipscreen != (data & 0x40))
{
m_flipscreen = data & 0x40;
m_bg_tilemap->set_flip(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
m_fg_tilemap->set_flip(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
}
/* bit 7 = high bit of scroll */
m_bgscroll = (m_bgscroll & 0xff) | ((data & 0x80) << 1);
}
}
#if 0
void brkthru_state::show_register( bitmap_ind16 &bitmap, int x, int y, uint32_t data )
{
char buf[5];
sprintf(buf, "%04X", data);
ui_draw_text(y, x, buf);
}
#endif
void brkthru_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int prio )
{
int offs;
/* Draw the sprites. Note that it is important to draw them exactly in this */
/* order, to have the correct priorities. */
/* Sprite RAM format
0 1 2 3
ccc- ---- ---- ---- ---- ---- ---- ---- = Color
---d ---- ---- ---- ---- ---- ---- ---- = Double Size
---- p--- ---- ---- ---- ---- ---- ---- = Priority
---- -bb- ---- ---- ---- ---- ---- ---- = Bank
---- ---e ---- ---- ---- ---- ---- ---- = Enable/Disable
---- ---- ssss ssss ---- ---- ---- ---- = Sprite code
---- ---- ---- ---- yyyy yyyy ---- ---- = Y position
---- ---- ---- ---- ---- ---- xxxx xxxx = X position
*/
for (offs = 0;offs < m_spriteram.bytes(); offs += 4)
{
if ((m_spriteram[offs] & 0x09) == prio) /* Enable && Low Priority */
{
int sx, sy, code, color;
sx = 240 - m_spriteram[offs + 3];
if (sx < -7)
sx += 256;
sy = 240 - m_spriteram[offs + 2];
code = m_spriteram[offs + 1] + 128 * (m_spriteram[offs] & 0x06);
color = (m_spriteram[offs] & 0xe0) >> 5;
if (m_flipscreen)
{
sx = 240 - sx;
sy = 240 - sy;
}
if (m_spriteram[offs] & 0x10) /* double height */
{
m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
code & ~1,
color,
m_flipscreen, m_flipscreen,
sx, m_flipscreen ? sy + 16 : sy - 16,0);
m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
code | 1,
color,
m_flipscreen, m_flipscreen,
sx,sy,0);
/* redraw with wraparound */
m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
code & ~1,
color,
m_flipscreen, m_flipscreen,
sx,(m_flipscreen ? sy + 16 : sy - 16) + 256,0);
m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
code | 1,
color,
m_flipscreen, m_flipscreen,
sx,sy + 256,0);
}
else
{
m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
code,
color,
m_flipscreen, m_flipscreen,
sx,sy,0);
/* redraw with wraparound */
m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
code,
color,
m_flipscreen, m_flipscreen,
sx,sy + 256,0);
}
}
}
}
uint32_t brkthru_state::screen_update_brkthru(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_bgscroll);
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
/* low priority sprites */
draw_sprites(bitmap, cliprect, 0x01);
/* draw background over low priority sprites */
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
/* high priority sprites */
draw_sprites(bitmap, cliprect, 0x09);
/* fg layer */
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
/* show_register(bitmap, 8, 8, (uint32_t)m_flipscreen); */
return 0;
}

View File

@ -1,189 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Paul Leaman
#include "emu.h"
#include "includes/gunsmoke.h"
/***************************************************************************
Convert the color PROMs into a more useable format.
Gunsmoke has three 256x4 palette PROMs (one per gun) and a lot ;-) of
256x4 lookup table PROMs.
The palette PROMs are connected to the RGB output this way:
bit 3 -- 220 ohm resistor -- RED/GREEN/BLUE
-- 470 ohm resistor -- RED/GREEN/BLUE
-- 1 kohm resistor -- RED/GREEN/BLUE
bit 0 -- 2.2kohm resistor -- RED/GREEN/BLUE
***************************************************************************/
void gunsmoke_state::gunsmoke_palette(palette_device &palette) const
{
const uint8_t *color_prom = memregion("proms")->base();
// create a lookup table for the palette
for (int i = 0; i < 0x100; i++)
{
int const r = pal4bit(color_prom[i + 0x000]);
int const g = pal4bit(color_prom[i + 0x100]);
int const b = pal4bit(color_prom[i + 0x200]);
palette.set_indirect_color(i, rgb_t(r, g, b));
}
// color_prom now points to the beginning of the lookup table
color_prom += 0x300;
// characters use colors 0x40-0x4f
for (int i = 0; i < 0x80; i++)
{
uint8_t const ctabentry = color_prom[i] | 0x40;
palette.set_pen_indirect(i, ctabentry);
}
// background tiles use colors 0-0x3f
for (int i = 0x100; i < 0x200; i++)
{
uint8_t const ctabentry = color_prom[i] | ((color_prom[i + 0x100] & 0x03) << 4);
palette.set_pen_indirect(i - 0x80, ctabentry);
}
// sprites use colors 0x80-0xff
for (int i = 0x300; i < 0x400; i++)
{
uint8_t const ctabentry = color_prom[i] | ((color_prom[i + 0x100] & 0x07) << 4) | 0x80;
palette.set_pen_indirect(i - 0x180, ctabentry);
}
}
void gunsmoke_state::gunsmoke_videoram_w(offs_t offset, uint8_t data)
{
m_videoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
void gunsmoke_state::gunsmoke_colorram_w(offs_t offset, uint8_t data)
{
m_colorram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
void gunsmoke_state::gunsmoke_c804_w(uint8_t data)
{
/* bits 0 and 1 are for coin counters */
machine().bookkeeping().coin_counter_w(1, data & 0x01);
machine().bookkeeping().coin_counter_w(0, data & 0x02);
/* bits 2 and 3 select the ROM bank */
membank("bank1")->set_entry((data & 0x0c) >> 2);
/* bit 5 resets the sound CPU? - we ignore it */
/* bit 6 flips screen */
flip_screen_set(data & 0x40);
/* bit 7 enables characters? */
m_chon = data & 0x80;
}
void gunsmoke_state::gunsmoke_d806_w(uint8_t data)
{
/* bits 0-2 select the sprite 3 bank */
m_sprite3bank = data & 0x07;
/* bit 4 enables bg 1? */
m_bgon = data & 0x10;
/* bit 5 enables sprites? */
m_objon = data & 0x20;
}
TILE_GET_INFO_MEMBER(gunsmoke_state::get_bg_tile_info)
{
uint8_t *tilerom = memregion("gfx4")->base();
int offs = tile_index * 2;
int attr = tilerom[offs + 1];
int code = tilerom[offs] + ((attr & 0x01) << 8);
int color = (attr & 0x3c) >> 2;
int flags = TILE_FLIPYX((attr & 0xc0) >> 6);
tileinfo.set(1, code, color, flags);
}
TILE_GET_INFO_MEMBER(gunsmoke_state::get_fg_tile_info)
{
int attr = m_colorram[tile_index];
int code = m_videoram[tile_index] + ((attr & 0xe0) << 2);
int color = attr & 0x1f;
tileinfo.group = color;
tileinfo.set(0, code, color, 0);
}
void gunsmoke_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 32, 32, 2048, 8);
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg_tilemap->set_scrolldx(128, 128);
m_bg_tilemap->set_scrolldy( 6, 6);
m_fg_tilemap->set_scrolldx(128, 128);
m_fg_tilemap->set_scrolldy( 6, 6);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x4f);
}
void gunsmoke_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
uint8_t *spriteram = m_spriteram;
int offs;
for (offs = m_spriteram.bytes() - 32; offs >= 0; offs -= 32)
{
int attr = spriteram[offs + 1];
int bank = (attr & 0xc0) >> 6;
int code = spriteram[offs];
int color = attr & 0x0f;
int flipx = 0;
int flipy = attr & 0x10;
int sx = spriteram[offs + 3] - ((attr & 0x20) << 3);
int sy = spriteram[offs + 2];
if (bank == 3)
bank += m_sprite3bank;
code += 256 * bank;
if (flip_screen())
{
sx = 240 - sx;
sy = 240 - sy;
flipx = !flipx;
flipy = !flipy;
}
m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx+128, sy+6, 0);
}
}
uint32_t gunsmoke_state::screen_update_gunsmoke(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_scrollx[0] + 256 * m_scrollx[1]);
m_bg_tilemap->set_scrolly(0, m_scrolly[0]);
if (m_bgon)
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
bitmap.fill(m_palette->black_pen(), cliprect);
if (m_objon)
draw_sprites(bitmap, cliprect);
if (m_chon)
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}