From 103a89ddeb513d9c690703df9ce7690baa754836 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 14 Nov 2022 18:25:41 +0100 Subject: - irem/m72.cpp: Added more PLDs to various sets, added main board BPROMs to most sets. [Porchy, The PLD Archive, Brian Troha, The Dumping Union] - nmk/quizdna.cpp, nmk/quizpanic.cpp: consolidated drivers in single files --- src/mame/acorn/ssfindo.cpp | 2 +- src/mame/irem/m72.cpp | 264 ++++++++++++++++++++++++------- src/mame/mame.lst | 2 +- src/mame/nmk/quizdna.cpp | 376 ++++++++++++++++++++++++++++++++++++-------- src/mame/nmk/quizdna.h | 63 -------- src/mame/nmk/quizdna_v.cpp | 200 ----------------------- src/mame/nmk/quizpani.cpp | 192 ++++++++++++++++++---- src/mame/nmk/quizpani.h | 51 ------ src/mame/nmk/quizpani_v.cpp | 91 ----------- 9 files changed, 687 insertions(+), 554 deletions(-) delete mode 100644 src/mame/nmk/quizdna.h delete mode 100644 src/mame/nmk/quizdna_v.cpp delete mode 100644 src/mame/nmk/quizpani.h delete mode 100644 src/mame/nmk/quizpani_v.cpp diff --git a/src/mame/acorn/ssfindo.cpp b/src/mame/acorn/ssfindo.cpp index c6f2b63029d..b61234bbd5d 100644 --- a/src/mame/acorn/ssfindo.cpp +++ b/src/mame/acorn/ssfindo.cpp @@ -71,7 +71,7 @@ Notes: =================================================================================================== -Pong Pong Car +Pang Pang Car Icarus, 1999 This game runs on hardware that is similar to that used on 'See See Find Out' diff --git a/src/mame/irem/m72.cpp b/src/mame/irem/m72.cpp index 64589351610..7d10acca662 100644 --- a/src/mame/irem/m72.cpp +++ b/src/mame/irem/m72.cpp @@ -2433,6 +2433,15 @@ ROM_START( bchopper ) ROM_REGION( 0x10000, "samples", 0 ) // samples ROM_LOAD( "mh_c-v0-b.ic44", 0x00000, 0x10000, CRC(d0c27e58) SHA1(fec76217cc0c04c723989c3ec127a2bd33d64c60) ) + + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced + ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced + ROM_LOAD( "mh-c-3f-.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END ROM_START( mrheli ) @@ -2469,6 +2478,15 @@ ROM_START( mrheli ) ROM_REGION( 0x10000, "samples", 0 ) // samples ROM_LOAD( "mh_c-v0-b.ic44", 0x00000, 0x10000, CRC(d0c27e58) SHA1(fec76217cc0c04c723989c3ec127a2bd33d64c60) ) + + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced + ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced + ROM_LOAD( "mh-c-3f-.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END /* @@ -2725,10 +2743,14 @@ ROM_START( imgfight ) ROM_LOAD( "if-c-v0.ic44", 0x00000, 0x10000, CRC(cb64a194) SHA1(940fad6b9147bccc8290e112f5973f8ea062b52f) ) ROM_LOAD( "if-c-v1.ic45", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) ) + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0600, "pals", 0 ) ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced - ROM_LOAD( "if-c-3f.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board + ROM_LOAD( "if-c-3f-.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END ROM_START( imgfightj ) @@ -2765,10 +2787,14 @@ ROM_START( imgfightj ) ROM_LOAD( "if-c-v0.ic44", 0x00000, 0x10000, CRC(cb64a194) SHA1(940fad6b9147bccc8290e112f5973f8ea062b52f) ) ROM_LOAD( "if-c-v1.ic45", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) ) + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0600, "pals", 0 ) ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced - ROM_LOAD( "if-c-3f.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board + ROM_LOAD( "if-c-3f-.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END ROM_START( imgfightb ) // mostly identical to imgfightj content-wise, it's a 4 PCB stack bootleg with flying wires @@ -2847,6 +2873,15 @@ ROM_START( loht ) ROM_REGION( 0x10000, "samples", 0 ) // samples ROM_LOAD( "tom_m44.ic44", 0x00000, 0x10000, CRC(3ed51d1f) SHA1(84f3aa17d640df91387e5f1f5b5971cf8dcd4e17) ) + + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced + ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced + ROM_LOAD( "tom-c-3f.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END /* @@ -2921,26 +2956,35 @@ ROM_START( lohtj ) ROM_REGION( 0x10000, "mcu", 0 ) // i8751 microcontroller ROM_LOAD( "tom_c-pr-.ic1", 0x00000, 0x01000, CRC(9fa9b496) SHA1(b529bcd7bf123894e11f2a8df8826932122e375a) ) // i8751 MCU labeled TOM C-PR- - ROM_REGION( 0x080000, "sprites", 0 ) + ROM_REGION( 0x080000, "sprites", 0 ) // same data as loht above, just mask ROMs without labels ROM_LOAD( "r200", 0x00000, 0x20000, CRC(0b83265f) SHA1(b31918d6442b79c9fe4f20410189788b050a994e) ) // sprites ROM_LOAD( "r210", 0x20000, 0x20000, CRC(8ec5f6f3) SHA1(210f2753f5eeb06396758d21ab1778d459add247) ) ROM_LOAD( "r220", 0x40000, 0x20000, CRC(a41d3bfd) SHA1(536fb7c0321dbbc1a8b73e9647fba9c53a253fcc) ) ROM_LOAD( "r230", 0x60000, 0x20000, CRC(9d81a25b) SHA1(a354537c2fbba85f06485aa8487d7583a7133357) ) - ROM_REGION( 0x040000, "gfx2", 0 ) + ROM_REGION( 0x040000, "gfx2", 0 ) // same data as loht above, just mask ROMs without labels ROM_LOAD( "r2a0.a0", 0x00000, 0x10000, CRC(3ca3e771) SHA1(be052e01c5429ee89057c9d408794f2c7744047c) ) // tiles #1 ROM_LOAD( "r2a1.a1", 0x10000, 0x10000, CRC(7a05ee2f) SHA1(7d1ca5db9a5a85610129e3bc6c640ade036fe7f9) ) ROM_LOAD( "r2a2.a2", 0x20000, 0x10000, CRC(79aa2335) SHA1(6b70c79d800a7b755aa7c9a368c4ea74029aaa1e) ) ROM_LOAD( "r2a3.a3", 0x30000, 0x10000, CRC(789e8b24) SHA1(e957cd25c3c155ca295ab1aea03d610f91562cfb) ) - ROM_REGION( 0x040000, "gfx3", 0 ) + ROM_REGION( 0x040000, "gfx3", 0 ) // same data as loht above, just mask ROMs without labels ROM_LOAD( "078.b0", 0x00000, 0x10000, CRC(44626bf6) SHA1(571ef74d42d30a272ff0fb33f830652b4a4bad29) ) // tiles #2 ROM_LOAD( "079.b1", 0x10000, 0x10000, CRC(464952cf) SHA1(6b99360b6ba1ed5a72c257f51291f9f7a1ddf363) ) ROM_LOAD( "080.b2", 0x20000, 0x10000, CRC(3db9b2c7) SHA1(02a318ffc459c494b7f40827eff5f89b41ac0426) ) ROM_LOAD( "081.b3", 0x30000, 0x10000, CRC(f01fe899) SHA1(c5ab967b7af55a757638bcdc9975f4b15064022d) ) - ROM_REGION( 0x10000, "samples", 0 ) // samples - ROM_LOAD( "082", 0x00000, 0x10000, CRC(3ed51d1f) SHA1(84f3aa17d640df91387e5f1f5b5971cf8dcd4e17) ) + ROM_REGION( 0x10000, "samples", 0 ) // same data as loht above, just mask ROM without label + ROM_LOAD( "082", 0x00000, 0x10000, CRC(3ed51d1f) SHA1(84f3aa17d640df91387e5f1f5b5971cf8dcd4e17) ) // samples + + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced + ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced + ROM_LOAD( "tom-c-3f.ic13", 0x0400, 0x0117, CRC(2d774e1e) SHA1(373c3cbfaf983961c17ebe96b5aff850f36cb30c) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END /* @@ -3022,7 +3066,6 @@ ROM_START( lohtb2 ) ROM_REGION( 0x040000, "gfx2", 0 ) ROM_LOAD( "loht-a19.bin", 0x00000, 0x10000, CRC(3ca3e771) SHA1(be052e01c5429ee89057c9d408794f2c7744047c) ) // tiles #1 -// ROM_LOAD( "loht-a20.bin", 0x10000, 0x10000, BAD_DUMP CRC(db2e3d77) SHA1(3f0758f74490b084321d8b2da29525dd1f19da09) ) ROM_LOAD( "loht-a20.bin", 0x10000, 0x10000, CRC(7a05ee2f) SHA1(7d1ca5db9a5a85610129e3bc6c640ade036fe7f9) ) ROM_LOAD( "loht-a18.bin", 0x20000, 0x10000, CRC(79aa2335) SHA1(6b70c79d800a7b755aa7c9a368c4ea74029aaa1e) ) ROM_LOAD( "loht-a21.bin", 0x30000, 0x10000, CRC(789e8b24) SHA1(e957cd25c3c155ca295ab1aea03d610f91562cfb) ) @@ -3400,6 +3443,15 @@ ROM_START( xmultiplm72 ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "t52.v0.ic44", 0x00000, 0x20000, CRC(2db1bd80) SHA1(657006d0642ec7fb949bb52821d78fe51a599415) ) + + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced + ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced + ROM_LOAD( "xm-c-3f-.ic13", 0x0400, 0x0117, CRC(f43e91e4) SHA1(37dd9b9436ad57232da7fd57040311ac140c1841) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END @@ -3436,10 +3488,14 @@ ROM_START( dbreedm72 ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "db_c-v0.ic44", 0x00000, 0x20000, CRC(312f7282) SHA1(742d56980b4618180e9a0e02051c5aec4d5cdae4) ) + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0600, "pals", 0 ) ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced - ROM_LOAD( "db-c-3f.ic13", 0x0400, 0x0117, CRC(7184d421) SHA1(3120ac2ca32e89d2f2abdb278a8c8cfa298aad75) ) // PAL16L8 - bruteforced - located on M72-C-A top board + ROM_LOAD( "db-c-3f-.ic13", 0x0400, 0x0117, CRC(7184d421) SHA1(3120ac2ca32e89d2f2abdb278a8c8cfa298aad75) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END ROM_START( dbreedjm72 ) @@ -3475,10 +3531,14 @@ ROM_START( dbreedjm72 ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "db_c-v0.ic44", 0x00000, 0x20000, CRC(312f7282) SHA1(742d56980b4618180e9a0e02051c5aec4d5cdae4) ) + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0600, "pals", 0 ) ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced - ROM_LOAD( "db-c-3f.ic13", 0x0400, 0x0117, CRC(7184d421) SHA1(3120ac2ca32e89d2f2abdb278a8c8cfa298aad75) ) // PAL16L8 - bruteforced - located on M72-C-A top board + ROM_LOAD( "db-c-3f-.ic13", 0x0400, 0x0117, CRC(7184d421) SHA1(3120ac2ca32e89d2f2abdb278a8c8cfa298aad75) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END @@ -3514,6 +3574,15 @@ ROM_START( dkgensanm72 ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "gen-vo.bin", 0x00000, 0x20000, CRC(d8595c66) SHA1(97920c9947fbac609fb901415e5471c6e4ca066c) ) + + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) // where you see gen=72= actual label reads GEN(72) + ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced + ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced + ROM_LOAD( "gen=m72=c-3f-b.ic13", 0x0400, 0x0117, CRC(028932a4) SHA1(04ec1fc874e7edb646777b301421953b26f49587) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END @@ -3550,10 +3619,14 @@ ROM_START( airduelm72 ) ROM_REGION( 0x20000, "samples", 0 ) ROM_LOAD( "ad-v0.ic44", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) ) + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0600, "pals", 0 ) ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced - ROM_LOAD( "ad-c-3f.ic13", 0x0400, 0x0117, CRC(9748fa38) SHA1(cc883dd801be03f2559c0dcd77580fe7d9546ed3) ) // PAL16L8 - bruteforced - located on M72-C-A top board + ROM_LOAD( "ad-c-3f-.ic13", 0x0400, 0x0117, CRC(9748fa38) SHA1(cc883dd801be03f2559c0dcd77580fe7d9546ed3) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END @@ -3590,14 +3663,18 @@ ROM_START( airdueljm72 ) ROM_REGION( 0x20000, "samples", 0 ) ROM_LOAD( "ad-v0.ic44", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) ) + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0600, "pals", 0 ) ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced - ROM_LOAD( "ad-c-3f.ic13", 0x0400, 0x0117, CRC(9748fa38) SHA1(cc883dd801be03f2559c0dcd77580fe7d9546ed3) ) // PAL16L8 - bruteforced - located on M72-C-A top board + ROM_LOAD( "ad-c-3f-.ic13", 0x0400, 0x0117, CRC(9748fa38) SHA1(cc883dd801be03f2559c0dcd77580fe7d9546ed3) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END -ROM_START( gallopa ) +ROM_START( gallopm72 ) ROM_REGION( 0x100000, "maincpu", 0 ) ROM_LOAD16_BYTE( "cc-c-h0.ic40", 0x00001, 0x20000, CRC(2217dcd0) SHA1(9485b6c3eec99e720439e69dcbe0e55798bbff1c) ) ROM_LOAD16_BYTE( "cc-c-l0.ic37", 0x00000, 0x20000, CRC(ff39d7fb) SHA1(fad95f76050fce04464268b5edff6622b2cb798f) ) @@ -3630,10 +3707,14 @@ ROM_START( gallopa ) ROM_REGION( 0x20000, "samples", 0 ) // samples - same data as the cosmccop/gallop sets ROM_LOAD( "cc-c-v0.ic44", 0x00000, 0x20000, CRC(6247bade) SHA1(4bc9f86acd09908c74b1ab0e7817c4ff1cad6f0b) ) // == cc-d-v0.ic14 + ROM_REGION( 0x0200, "proms", 0 ) // Located on M72-A-C CPU/Sound board + ROM_LOAD( "m72_a-8l-.ic66", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m72_a-9l-.ic75", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0600, "pals", 0 ) ROM_LOAD( "m72_a-3d-.ic11", 0x0000, 0x0117, CRC(8a3732ff) SHA1(6e3039e7dc424cbef7156312fa1ce67d7b082d30) ) // PAL16L8 - bruteforced ROM_LOAD( "m72_a-4d-.ic19", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // PAL16L8 - bruteforced - ROM_LOAD( "cc-c-3f.ic13", 0x0400, 0x0117, CRC(16ca7c50) SHA1(8291bb2fc12c374a970cdb7da6315b32a01cf3b8) ) // PAL16L8 - bruteforced - located on M72-C-A top board + ROM_LOAD( "cc-c-3f-.ic13", 0x0400, 0x0117, CRC(16ca7c50) SHA1(8291bb2fc12c374a970cdb7da6315b32a01cf3b8) ) // PAL16L8 - bruteforced - located on M72-C-A top board ROM_END @@ -3726,10 +3807,10 @@ ROM_START( hharry ) // where you see gen=81= actual label reads GEN(81) ROM_LOAD( "m81_a-9p-.ic74", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 ROM_REGION( 0x0800, "plds", 0 ) - ROM_LOAD( "m81_b-9h-.ic94", 0x0000, 0x0117, CRC(4bc1d393) SHA1(d9358a409b4568839ee6cea7241e37f557c3d3a9) ) // TIBPAL-16L8-25 - bruteforced - located on M81-B-B daughterboard - ROM_LOAD( "m81_a-5l-.ic28", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // TIBPAL-16L8-25 - bruteforced - ROM_LOAD( "m81_a-2h-.ic2", 0x0400, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced - ROM_LOAD( "gen=81=_a-7d-a.ic48", 0x0600, 0x0117, CRC(92fe9eff) SHA1(970f9ed9b2fc3289cded9cde2b68cce2106fae7d) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "m81_b-9h-.ic94", 0x0000, 0x0117, CRC(4bc1d393) SHA1(d9358a409b4568839ee6cea7241e37f557c3d3a9) ) // TIBPAL-16L8-25 - bruteforced - located on M81-B-B daughterboard + ROM_LOAD( "m81_a-5l-.ic28", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "m81_a-2h-.ic2", 0x0400, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "gen=81=_a-7d-a.ic48", 0x0600, 0x0117, CRC(92fe9eff) SHA1(970f9ed9b2fc3289cded9cde2b68cce2106fae7d) ) // TIBPAL-16L8-25 - bruteforced ROM_END @@ -3763,6 +3844,10 @@ ROM_START( dbreed ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "db_a-v0.rom", 0x00000, 0x20000, CRC(312f7282) SHA1(742d56980b4618180e9a0e02051c5aec4d5cdae4) ) + ROM_REGION( 0x0200, "proms", 0 ) // proms - located on M81-A-B mainboard + ROM_LOAD( "m81_a-9l-.ic72", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "m81_a-9p-.ic74", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x0800, "plds", 0 ) ROM_LOAD( "m81_b-9h-.ic94", 0x0000, 0x0117, CRC(4bc1d393) SHA1(d9358a409b4568839ee6cea7241e37f557c3d3a9) ) // TIBPAL-16L8-25 - bruteforced - located on M81-B-B daughterboard ROM_LOAD( "m81_a-5l-.ic28", 0x0200, 0x0117, CRC(56c29834) SHA1(a66c589845f9995c673325f1161c687eb90d68c1) ) // TIBPAL-16L8-25 - bruteforced @@ -3807,6 +3892,16 @@ ROM_START( majtitle ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "mt_vo.bin", 0x00000, 0x20000, CRC(eb24bb2c) SHA1(9fca04fba0249e8213dd164eb6829e1a5acbee65) ) + + ROM_REGION( 0x0200, "proms", 0 ) // proms - located on M82-B-B daughterboard + ROM_LOAD( "mt_b-6a-.ic37", 0x0000, 0x0100, NO_DUMP ) // TBP24S10 + ROM_LOAD( "mt_b-7c-.ic47", 0x0100, 0x0100, NO_DUMP ) // TBP24S10 + + ROM_REGION( 0x0800, "plds", 0 ) + ROM_LOAD( "mt_b-3q-.ic23", 0x0000, 0x0117, CRC(8c864543) SHA1(1167524b72a4d72898dcdc2561a9706f8683c888) ) // TIBPAL-16L8-25 - bruteforced - located on M82-B-B daughterboard + ROM_LOAD( "mt_a-2h-.ic5", 0x0200, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-5l-.ic31", 0x0400, 0x0117, CRC(e3064bfe) SHA1(c25b0d734be332042f86661d8743008c2a9d3a4e) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-7d-.ic43", 0x0600, 0x0117, CRC(d7ec1cc6) SHA1(94afb0098206777d68de5e6122114fdc76618931) ) // TIBPAL-16L8-25 - bruteforced ROM_END ROM_START( majtitlej ) @@ -3841,6 +3936,16 @@ ROM_START( majtitlej ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "mt_vo.bin", 0x00000, 0x20000, CRC(eb24bb2c) SHA1(9fca04fba0249e8213dd164eb6829e1a5acbee65) ) + + ROM_REGION( 0x0200, "proms", 0 ) // proms - located on M82-B-B daughterboard + ROM_LOAD( "mt_b-6a-.ic37", 0x0000, 0x0100, NO_DUMP ) // TBP24S10 + ROM_LOAD( "mt_b-7c-.ic47", 0x0100, 0x0100, NO_DUMP ) // TBP24S10 + + ROM_REGION( 0x0800, "plds", 0 ) + ROM_LOAD( "mt_a-2h-.ic5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-5l-.ic31", 0x0200, 0x0117, CRC(e3064bfe) SHA1(c25b0d734be332042f86661d8743008c2a9d3a4e) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-7d-.ic43", 0x0400, 0x0117, CRC(d7ec1cc6) SHA1(94afb0098206777d68de5e6122114fdc76618931) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_b-3q-.ic23", 0x0600, 0x0117, CRC(8c864543) SHA1(1167524b72a4d72898dcdc2561a9706f8683c888) ) // TIBPAL-16L8-25 - bruteforced - located on M82-B-B daughterboard ROM_END @@ -3876,6 +3981,11 @@ ROM_START( airduel ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "ad_=m82=_a-v0-d.ic12", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) ) + + ROM_REGION( 0x0600, "plds", 0 ) + ROM_LOAD( "mt_a-2h-.ic5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-5l-.ic31", 0x0200, 0x0117, CRC(e3064bfe) SHA1(c25b0d734be332042f86661d8743008c2a9d3a4e) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-7d-.ic43", 0x0400, 0x0117, CRC(d7ec1cc6) SHA1(94afb0098206777d68de5e6122114fdc76618931) ) // TIBPAL-16L8-25 - bruteforced ROM_END ROM_START( airduelu ) @@ -3910,6 +4020,11 @@ ROM_START( airduelu ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "r10-voice.ic12", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) ) + + ROM_REGION( 0x0600, "plds", 0 ) + ROM_LOAD( "mt_a-2h-.ic5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-5l-.ic31", 0x0200, 0x0117, CRC(e3064bfe) SHA1(c25b0d734be332042f86661d8743008c2a9d3a4e) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-7d-.ic43", 0x0400, 0x0117, CRC(d7ec1cc6) SHA1(94afb0098206777d68de5e6122114fdc76618931) ) // TIBPAL-16L8-25 - bruteforced ROM_END @@ -4014,6 +4129,12 @@ ROM_START( dkgensanm82 ) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "gen_=m84=_a-v0-d.ic12", 0x00000, 0x20000, CRC(d8595c66) SHA1(97920c9947fbac609fb901415e5471c6e4ca066c) ) + + ROM_REGION( 0x0800, "plds", 0 ) + ROM_LOAD( "mt_a-2h-.ic5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "mt_a-5l-.ic31", 0x0200, 0x0117, CRC(e3064bfe) SHA1(c25b0d734be332042f86661d8743008c2a9d3a4e) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "gen=m84=a-7d-d.ic43", 0x0400, 0x0117, CRC(a3ee35fe) SHA1(c6d448c245d7c7dde981c970ce70f7d0f43723ed) ) // TIBPAL-16L8-25 labeled GEN(M84)-A-7D-D - bruteforced + ROM_LOAD( "gen=m72=c-3f-b.ic23", 0x0600, 0x0117, CRC(028932a4) SHA1(04ec1fc874e7edb646777b301421953b26f49587) ) // TIBPAL-16L8-25 labeled GEN(M72)-C-3F-B - bruteforced - located on M82-B-B daughterboard ROM_END @@ -4053,8 +4174,8 @@ ROM_START( rtype2 ) ROM_LOAD( "rt2_a-vo.ic14", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) ) ROM_REGION( 0x0200, "proms", 0 ) // located on M84-B-A daughterboard - ROM_LOAD( "rt2_b-4n-.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) - ROM_LOAD( "rt2_b-4p-.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) + ROM_LOAD( "rt2_b-4n-.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "rt2_b-4p-.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 ROM_REGION( 0x0800, "plds", 0 ) ROM_LOAD( "rt2-a-2h-.5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced @@ -4095,8 +4216,8 @@ ROM_START( rtype2j ) ROM_LOAD( "rt2_a-vo.ic14", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) ) ROM_REGION( 0x0200, "proms", 0 ) // located on M84-B-A daughterboard - ROM_LOAD( "rt2_b-4n-.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) - ROM_LOAD( "rt2_b-4p-.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) + ROM_LOAD( "rt2_b-4n-.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "rt2_b-4p-.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 ROM_REGION( 0x0800, "plds", 0 ) ROM_LOAD( "rt2-a-2h-.5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced @@ -4137,8 +4258,8 @@ ROM_START( rtype2jc ) ROM_LOAD( "rt2_a-vo.ic14", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) ) ROM_REGION( 0x0200, "proms", 0 ) // located on M84-B-A daughterboard - ROM_LOAD( "rt2_b-4n-.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) - ROM_LOAD( "rt2_b-4p-.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) + ROM_LOAD( "rt2_b-4n-.bin", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "rt2_b-4p-.bin", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 ROM_REGION( 0x0800, "plds", 0 ) ROM_LOAD( "rt2-a-2h-.5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced @@ -4175,15 +4296,15 @@ ROM_START( hharryu ) // where you see gen=84= actual label reads GEN(84) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "gen=84=_a-v0-f.ic17", 0x00000, 0x20000, CRC(faaacaff) SHA1(ea3a3920255c07aa9c0a7e0191eae257a9f7f558) ) - ROM_REGION( 0x200, "proms", 0 ) // located on M84-C-A top board - NOT dumped from PCB, taken from bootleg - ROM_LOAD( "gen=84=_c-4n-.ic21", 0x0000, 0x0100, BAD_DUMP CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 - ROM_LOAD( "gen=84=_c-4p-.ic22", 0x0100, 0x0100, BAD_DUMP CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x200, "proms", 0 ) // located on M84-C-A top board + ROM_LOAD( "gen=84=_c-4n-.ic21", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "gen=84=_c-4p-.ic22", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 ROM_REGION( 0x0800, "plds", 0 ) - ROM_LOAD( "gen=84=_c-3a.ic8", 0x0000, 0x0117, CRC(c1e19913) SHA1(7292ea25df818fe25e00dc4f37b3338abf2caaa2) ) // TIBPAL-16L8-25 - bruteforced - located on M84-C-A top board - ROM_LOAD( "gen=84=_a-7d.ic45", 0x0200, 0x0117, CRC(79ef86f2) SHA1(69d3ead62e2c70f5831ec6915920da356c922dfb) ) // TIBPAL-16L8-25 - bruteforced - ROM_LOAD( "gen=84=_a-5l.ic33", 0x0400, 0x0117, CRC(579e257d) SHA1(bea2da60dc068fe16f469695f66786fe5406a823) ) // TIBPAL-16L8-25 - bruteforced - ROM_LOAD( "gen=84=_a-2h.ic5", 0x0600, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "m84-a-2h.ic5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "gen=84=_a-5l.ic33", 0x0200, 0x0117, CRC(579e257d) SHA1(bea2da60dc068fe16f469695f66786fe5406a823) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "gen=84=_a-7d.ic45", 0x0400, 0x0117, CRC(79ef86f2) SHA1(69d3ead62e2c70f5831ec6915920da356c922dfb) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "m84-c-3a.ic8", 0x0600, 0x0117, CRC(c1e19913) SHA1(7292ea25df818fe25e00dc4f37b3338abf2caaa2) ) // TIBPAL-16L8-25 - bruteforced - located on M84-C-A top board ROM_END ROM_START( dkgensan ) // where you see gen=84= actual label reads GEN(84) @@ -4213,9 +4334,15 @@ ROM_START( dkgensan ) // where you see gen=84= actual label reads GEN(84) ROM_REGION( 0x20000, "samples", 0 ) // samples ROM_LOAD( "gen-vo.bin", 0x00000, 0x20000, CRC(d8595c66) SHA1(97920c9947fbac609fb901415e5471c6e4ca066c) ) - ROM_REGION( 0x200, "proms", 0 ) // located on M84-C-A top board - NOT dumped from PCB, taken from bootleg - ROM_LOAD( "gen=84=_c-4n-.ic21", 0x0000, 0x0100, BAD_DUMP CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 - ROM_LOAD( "gen=84=_c-4p-.ic22", 0x0100, 0x0100, BAD_DUMP CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + ROM_REGION( 0x200, "proms", 0 ) // located on M84-C-A top board + ROM_LOAD( "gen=84=_c-4n-.ic21", 0x0000, 0x0100, CRC(b460c438) SHA1(00e20cf754b6fd5138ee4d2f6ec28dff9e292fe6) ) // TBP24S10 + ROM_LOAD( "gen=84=_c-4p-.ic22", 0x0100, 0x0100, CRC(a4f2c4bc) SHA1(f13b0a4b52dcc6704063b676f09d83dcba170133) ) // TBP24S10 + + ROM_REGION( 0x0800, "plds", 0 ) + ROM_LOAD( "m84-a-2h.ic5", 0x0000, 0x0117, CRC(21ede612) SHA1(5d05d3088f3d248db8948da175551ea29d7478b5) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "gen=84=_a-5l.ic33", 0x0200, 0x0117, CRC(579e257d) SHA1(bea2da60dc068fe16f469695f66786fe5406a823) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "gen=84=_a-7d.ic45", 0x0400, 0x0117, CRC(79ef86f2) SHA1(69d3ead62e2c70f5831ec6915920da356c922dfb) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "m84-c-3a.ic8", 0x0600, 0x0117, CRC(c1e19913) SHA1(7292ea25df818fe25e00dc4f37b3338abf2caaa2) ) // TIBPAL-16L8-25 - bruteforced - located on M84-C-A top board ROM_END ROM_START( hharryb ) @@ -4284,10 +4411,10 @@ ROM_START( cosmccop ) ROM_LOAD( "ken_b-4p-.ic24", 0x0100, 0x0100, CRC(526f10ca) SHA1(e0ecd4db0720a4a37489e4d725843a2fbf266ebf) ) // TBP24S10N ROM_REGION( 0x0800, "plds", 0 ) - ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "cc_d-7b-.ic45", 0x0600, 0x0117, CRC(75ff4517) SHA1(87ea8f44eaa7e317a066484b3cb5f20de1d80844) ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - located on M84-B-B top board + ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, CRC(a83807e9) SHA1(3875d9881789756870721cab41a198c5af67a446) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, CRC(c719b8a3) SHA1(dba75220c002ca4c75c578ed6c8c56dcfbb781ca) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "cc_d-7b-.ic45", 0x0400, 0x0117, CRC(75ff4517) SHA1(87ea8f44eaa7e317a066484b3cb5f20de1d80844) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, CRC(ad1a7942) SHA1(72c699de17e3d65081a5951581af90aadb4ba65b) ) // TIBPAL-16L8-25 - bruteforced - located on M84-B-B top board ROM_END @@ -4321,10 +4448,10 @@ ROM_START( gallop ) ROM_LOAD( "ken_b-4p-.ic24", 0x0100, 0x0100, CRC(526f10ca) SHA1(e0ecd4db0720a4a37489e4d725843a2fbf266ebf) ) // TBP24S10N ROM_REGION( 0x0800, "plds", 0 ) - ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "cc_d-7b-.ic45", 0x0600, 0x0117, CRC(75ff4517) SHA1(87ea8f44eaa7e317a066484b3cb5f20de1d80844) ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - located on M84-B-B top board + ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, CRC(a83807e9) SHA1(3875d9881789756870721cab41a198c5af67a446) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, CRC(c719b8a3) SHA1(dba75220c002ca4c75c578ed6c8c56dcfbb781ca) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "cc_d-7b-.ic45", 0x0400, 0x0117, CRC(75ff4517) SHA1(87ea8f44eaa7e317a066484b3cb5f20de1d80844) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, CRC(ad1a7942) SHA1(72c699de17e3d65081a5951581af90aadb4ba65b) ) // TIBPAL-16L8-25 - bruteforced - located on M84-B-B top board ROM_END @@ -4358,10 +4485,10 @@ ROM_START( ltswords ) ROM_LOAD( "ken_b-4p-.ic24", 0x0100, 0x0100, CRC(526f10ca) SHA1(e0ecd4db0720a4a37489e4d725843a2fbf266ebf) ) // TBP24S10N ROM_REGION( 0x0800, "plds", 0 ) - ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-7b-.ic45", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - located on M84-B-B top board + ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, CRC(a83807e9) SHA1(3875d9881789756870721cab41a198c5af67a446) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, CRC(c719b8a3) SHA1(dba75220c002ca4c75c578ed6c8c56dcfbb781ca) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-7b-.ic45", 0x0400, 0x0117, CRC(b0558dc5) SHA1(e95d9a8ddc49f99062439803c3359fca6fecf703) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, CRC(ad1a7942) SHA1(72c699de17e3d65081a5951581af90aadb4ba65b) ) // TIBPAL-16L8-25 - bruteforced - located on M84-B-B top board ROM_END ROM_START( kengo ) @@ -4394,10 +4521,10 @@ ROM_START( kengo ) ROM_LOAD( "ken_b-4p-.ic24", 0x0100, 0x0100, CRC(526f10ca) SHA1(e0ecd4db0720a4a37489e4d725843a2fbf266ebf) ) // TBP24S10N ROM_REGION( 0x0800, "plds", 0 ) - ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-7b-.ic45", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - located on M84-B-B top board + ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, CRC(a83807e9) SHA1(3875d9881789756870721cab41a198c5af67a446) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, CRC(c719b8a3) SHA1(dba75220c002ca4c75c578ed6c8c56dcfbb781ca) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-7b-.ic45", 0x0400, 0x0117, CRC(b0558dc5) SHA1(e95d9a8ddc49f99062439803c3359fca6fecf703) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, CRC(ad1a7942) SHA1(72c699de17e3d65081a5951581af90aadb4ba65b) ) // TIBPAL-16L8-25 - bruteforced - located on M84-B-B top board ROM_END ROM_START( kengoa ) @@ -4430,10 +4557,10 @@ ROM_START( kengoa ) ROM_LOAD( "ken_b-4p-.ic24", 0x0100, 0x0100, CRC(526f10ca) SHA1(e0ecd4db0720a4a37489e4d725843a2fbf266ebf) ) // TBP24S10N ROM_REGION( 0x0800, "plds", 0 ) - ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_d-7b-.ic45", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, NO_DUMP ) // TIBPAL-16L8-25 - located on M84-B-B top board + ROM_LOAD( "ken_d-2h-.ic5", 0x0000, 0x0117, CRC(a83807e9) SHA1(3875d9881789756870721cab41a198c5af67a446) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-5l-.ic33", 0x0200, 0x0117, CRC(c719b8a3) SHA1(dba75220c002ca4c75c578ed6c8c56dcfbb781ca) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_d-7b-.ic45", 0x0400, 0x0117, CRC(b0558dc5) SHA1(e95d9a8ddc49f99062439803c3359fca6fecf703) ) // TIBPAL-16L8-25 - bruteforced + ROM_LOAD( "ken_b-3a-.ic9", 0x0600, 0x0117, CRC(ad1a7942) SHA1(72c699de17e3d65081a5951581af90aadb4ba65b) ) // TIBPAL-16L8-25 - bruteforced - located on M84-B-B top board ROM_END @@ -4467,6 +4594,15 @@ ROM_START( poundfor ) ROM_REGION( 0x40000, "samples", 0 ) // samples ROM_LOAD( "ppa-v0.bin", 0x00000, 0x40000, CRC(03321664) SHA1(51f2b2b712385c1cd55fd069829efac01838d603) ) + + ROM_REGION( 0x0200, "proms", 0 ) // proms - located on M85-B daughterboard + ROM_LOAD( "m85_b-1f-.ic5", 0x0000, 0x0100, NO_DUMP ) // TBP24S10 + ROM_LOAD( "m85_b-3f-.ic12", 0x0100, 0x0100, NO_DUMP ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m85_a-5h-.5h", 0x0000, 0x0117, CRC(a7ce2e57) SHA1(7af157d0ffb3001c3066d4abb1e3f731744243cb) ) // PAL16L8 - bruteforced + ROM_LOAD( "m85_a-6j-.6j", 0x0200, 0x0117, CRC(733ed0f9) SHA1(863055a2b13825a900095b18aad3829faef0f79e) ) // PAL16L8 - bruteforced + ROM_LOAD( "m85_b-1a-.ic1", 0x0400, 0x0117, CRC(3cf26744) SHA1(b367e142b24695aa42d2a6634d66072aad925614) ) // PAL16L8 - bruteforced - located on M85-B daughterboard ROM_END ROM_START( poundforj ) @@ -4495,6 +4631,15 @@ ROM_START( poundforj ) ROM_REGION( 0x40000, "samples", 0 ) // samples ROM_LOAD( "ppa-v0.bin", 0x00000, 0x40000, CRC(03321664) SHA1(51f2b2b712385c1cd55fd069829efac01838d603) ) + + ROM_REGION( 0x0200, "proms", 0 ) // proms - located on M85-B daughterboard + ROM_LOAD( "m85_b-1f-.ic5", 0x0000, 0x0100, NO_DUMP ) // TBP24S10 + ROM_LOAD( "m85_b-3f-.ic12", 0x0100, 0x0100, NO_DUMP ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m85_a-5h-.5h", 0x0000, 0x0117, CRC(a7ce2e57) SHA1(7af157d0ffb3001c3066d4abb1e3f731744243cb) ) // PAL16L8 - bruteforced + ROM_LOAD( "m85_a-6j-.6j", 0x0200, 0x0117, CRC(733ed0f9) SHA1(863055a2b13825a900095b18aad3829faef0f79e) ) // PAL16L8 - bruteforced + ROM_LOAD( "m85_b-1a-.ic1", 0x0400, 0x0117, CRC(3cf26744) SHA1(b367e142b24695aa42d2a6634d66072aad925614) ) // PAL16L8 - bruteforced - located on M85-B daughterboard ROM_END ROM_START( poundforu ) @@ -4523,6 +4668,15 @@ ROM_START( poundforu ) ROM_REGION( 0x40000, "samples", 0 ) // samples ROM_LOAD( "ppa-v0.bin", 0x00000, 0x40000, CRC(03321664) SHA1(51f2b2b712385c1cd55fd069829efac01838d603) ) + + ROM_REGION( 0x0200, "proms", 0 ) // proms - located on M85-B daughterboard + ROM_LOAD( "m85_b-1f-.ic5", 0x0000, 0x0100, NO_DUMP ) // TBP24S10 + ROM_LOAD( "m85_b-3f-.ic12", 0x0100, 0x0100, NO_DUMP ) // TBP24S10 + + ROM_REGION( 0x0600, "pals", 0 ) + ROM_LOAD( "m85_a-5h-.5h", 0x0000, 0x0117, CRC(a7ce2e57) SHA1(7af157d0ffb3001c3066d4abb1e3f731744243cb) ) // PAL16L8 - bruteforced + ROM_LOAD( "m85_a-6j-.6j", 0x0200, 0x0117, CRC(733ed0f9) SHA1(863055a2b13825a900095b18aad3829faef0f79e) ) // PAL16L8 - bruteforced + ROM_LOAD( "m85_b-1a-.ic1", 0x0400, 0x0117, CRC(3cf26744) SHA1(b367e142b24695aa42d2a6634d66072aad925614) ) // PAL16L8 - bruteforced - located on M85-B daughterboard ROM_END // For i8751 protected games, each region uses unique internal MCU code. The MCU code provides checksum information @@ -4556,7 +4710,7 @@ GAME( 1989, xmultiplm72, xmultipl, m72_xmultipl, xmultipl, m72_state, init_m GAME( 1989, dbreedm72, dbreed, m72_dbreedw, dbreed, m72_state, init_dbreedm72, ROT0, "Irem", "Dragon Breed (World, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code GAME( 1989, dbreedjm72, dbreed, m72_dbreed, dbreed, m72_state, init_m72_8751, ROT0, "Irem", "Dragon Breed (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, gallopa, cosmccop, m72, gallop, m72_state, init_gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code +GAME( 1991, gallopm72, cosmccop, m72, gallop, m72_state, init_gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code GAME( 1990, airduelm72, airduel, m72_airduel, airduel, m72_state, init_m72_8751, ROT270, "Irem", "Air Duel (World, M72 hardware)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, airdueljm72, airduel, m72_airduel, airduel, m72_state, init_m72_8751, ROT270, "Irem", "Air Duel (Japan, M72 hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b41fa11cdd0..7ba124530d7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20758,7 +20758,7 @@ dkgensan // (c) 1990 (Japan) dkgensanm72 // (c) 1990 (Japan) dkgensanm82 // (c) 1990 (Japan) gallop // (c) 1991 (Japan) -gallopa // (c) 1991 (Japan) +gallopm72 // (c) 1991 (Japan) hharry // (c) 1990 (World) hharryu // (c) 1990 Irem America (US) hharryb // bootleg diff --git a/src/mame/nmk/quizdna.cpp b/src/mame/nmk/quizdna.cpp index 860e4a97582..e943a04c6ff 100644 --- a/src/mame/nmk/quizdna.cpp +++ b/src/mame/nmk/quizdna.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Uki +// copyright-holders: Uki + /***************************************************************************** Quiz DNA no Hanran (c) 1992 Face @@ -11,24 +12,266 @@ Quiz Gekiretsu Scramble (Gakuen Paradise 2) (c) 1993 Face *****************************************************************************/ #include "emu.h" -#include "quizdna.h" #include "cpu/z80/z80.h" #include "sound/okim6295.h" #include "sound/ymopn.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +namespace { + +class quizdna_state : public driver_device +{ +public: + quizdna_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_spriteram(*this, "spriteram"), + m_generic_paletteram_8(*this, "paletteram"), + m_banked_ram(*this, "banked_ram", 0x4000, ENDIANNESS_LITTLE), + m_fgctrl_rom(*this, "fgctrl"), + m_mainbank(*this, "mainbank") + { } + + void gakupara(machine_config &config); + void quizdna(machine_config &config); + void gekiretu(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void video_start() override; + +private: + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; + + required_shared_ptr m_spriteram; + required_shared_ptr m_generic_paletteram_8; + memory_share_creator m_banked_ram; + required_region_ptr m_fgctrl_rom; + required_memory_bank m_mainbank; + + tilemap_t *m_bg_tilemap = nullptr; + tilemap_t *m_fg_tilemap = nullptr; + uint8_t m_bg_xscroll[2]; + int8_t m_flipscreen = 0; + uint8_t m_video_enable = 0; + + // common + void bg_ram_w(offs_t offset, uint8_t data); + void fg_ram_w(offs_t offset, uint8_t data); + void bg_yscroll_w(uint8_t data); + void bg_xscroll_w(offs_t offset, uint8_t data); + void screen_ctrl_w(uint8_t data); + void paletteram_xBGR_RRRR_GGGG_BBBB_w(offs_t offset, uint8_t data); + void rombank_w(uint8_t data); + + // game specific + void gekiretu_rombank_w(uint8_t data); + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + void gakupara_io_map(address_map &map); + void gekiretu_io_map(address_map &map); + void gekiretu_map(address_map &map); + void quizdna_io_map(address_map &map); + void quizdna_map(address_map &map); +}; + + +// video + +TILE_GET_INFO_MEMBER(quizdna_state::get_bg_tile_info) +{ + int code = m_banked_ram[0x2000 + tile_index * 2] + m_banked_ram[0x2000 + tile_index * 2 + 1] * 0x100; + int const col = m_banked_ram[0x2000 + tile_index * 2 + 0x1000] & 0x7f; + + if (code > 0x7fff) + code &= 0x83ff; + + tileinfo.set(1, code, col, 0); +} + +TILE_GET_INFO_MEMBER(quizdna_state::get_fg_tile_info) +{ + int const x = tile_index & 0x1f; + int y = m_fgctrl_rom[(tile_index >> 5) & 0x1f] & 0x3f; + int code = y & 1; + + y >>= 1; + + int col = m_banked_ram[x * 2 + y * 0x40 + 1]; + code += (m_banked_ram[x * 2 + y * 0x40] + (col & 0x1f) * 0x100) * 2; + col >>= 5; + col = (col & 3) | ((col & 4) << 1); + + tileinfo.set(0, code, col, 0); +} + + +void quizdna_state::video_start() +{ + m_flipscreen = -1; + m_video_enable = 0; + m_bg_xscroll[0] = 0; + m_bg_xscroll[1] = 0; + + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizdna_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizdna_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + + m_fg_tilemap->set_transparent_pen(0); + + save_item(NAME(m_bg_xscroll)); + save_item(NAME(m_flipscreen)); + save_item(NAME(m_video_enable)); +} + +void quizdna_state::bg_ram_w(offs_t offset, uint8_t data) +{ + m_banked_ram[offset + 0x2000] = data; + + m_bg_tilemap->mark_tile_dirty((offset & 0xfff) / 2); +} + +void quizdna_state::fg_ram_w(offs_t offset, uint8_t data) +{ + int const offs = offset & 0xfff; + + m_banked_ram[offs] = data; + m_banked_ram[offs + 0x1000] = data; // mirror -#define MCLK 16000000 + for (int i = 0; i < 32; i++) + m_fg_tilemap->mark_tile_dirty(((offs/2) & 0x1f) + i * 0x20); +} + +void quizdna_state::bg_yscroll_w(uint8_t data) +{ + m_bg_tilemap->set_scrolldy(255 - data, 255 - data + 1); +} + +void quizdna_state::bg_xscroll_w(offs_t offset, uint8_t data) +{ + m_bg_xscroll[offset] = data; + int const x = ~(m_bg_xscroll[0] + m_bg_xscroll[1] * 0x100) & 0x1ff; + + m_bg_tilemap->set_scrolldx(x + 64, x - 64 + 10); +} + +void quizdna_state::screen_ctrl_w(uint8_t data) +{ + int const tmp = (data & 0x10) >> 4; + m_video_enable = data & 0x20; + + machine().bookkeeping().coin_counter_w(0, data & 1); + + if (m_flipscreen == tmp) + return; + + m_flipscreen = tmp; + + flip_screen_set(tmp); + m_fg_tilemap->set_scrolldx(64, -64 +16); +} + +void quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w(offs_t offset, uint8_t data) +{ + int const offs = offset & ~1; + + m_generic_paletteram_8[offset] = data; + + int const d0 = m_generic_paletteram_8[offs]; + int const d1 = m_generic_paletteram_8[offs+1]; + + int const r = ((d1 << 1) & 0x1e) | ((d1 >> 4) & 1); + int const g = ((d0 >> 3) & 0x1e) | ((d1 >> 5) & 1); + int const b = ((d0 << 1) & 0x1e) | ((d1 >> 6) & 1); + + m_palette->set_pen_color(offs / 2, pal5bit(r), pal5bit(g), pal5bit(b)); +} + +void quizdna_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + for (int offs = 0; offs < m_spriteram.bytes(); offs += 8) + { + int x = m_spriteram[offs + 3] * 0x100 + m_spriteram[offs + 2] + 64 - 8; + int y = (m_spriteram[offs + 1] & 1) * 0x100 + m_spriteram[offs + 0]; + int code = (m_spriteram[offs + 5] * 0x100 + m_spriteram[offs + 4]) & 0x3fff; + int col = m_spriteram[offs + 6]; + int const fx = col & 0x80; + int const fy = col & 0x40; + int const ysize = (m_spriteram[offs + 1] & 0xc0) >> 6; + int dy = 0x10; + col &= 0x1f; + + if (m_flipscreen) + { + x -= 7; + y += 1; + } + + x &= 0x1ff; + if (x > 0x1f0) + x -= 0x200; + + if (fy) + { + dy = -0x10; + y += 0x10 * ysize; + } + + if (code >= 0x2100) + code &= 0x20ff; + + for (int i = 0; i < ysize + 1; i++) + { + y &= 0x1ff; + + m_gfxdecode->gfx(2)->transpen(bitmap, cliprect, + code ^ i, + col, + fx, fy, + x, y, 0); + + y += dy; + } + } +} + +uint32_t quizdna_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + if (m_video_enable) + { + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap, cliprect); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + } + else + bitmap.fill(m_palette->black_pen(), cliprect); + return 0; +} + + +// machine void quizdna_state::rombank_w(uint8_t data) { - membank("mainbank")->set_entry(data & 0x3f); + m_mainbank->set_entry(data & 0x3f); } void quizdna_state::gekiretu_rombank_w(uint8_t data) { - membank("mainbank")->set_entry((data & 0x3f) ^ 0x0a); + m_mainbank->set_entry((data & 0x3f) ^ 0x0a); } /****************************************************************************/ @@ -36,11 +279,11 @@ void quizdna_state::gekiretu_rombank_w(uint8_t data) void quizdna_state::quizdna_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("mainbank"); + map(0x8000, 0xbfff).bankr(m_mainbank); map(0x8000, 0x9fff).w(FUNC(quizdna_state::fg_ram_w)); map(0xa000, 0xbfff).w(FUNC(quizdna_state::bg_ram_w)); map(0xc000, 0xdfff).ram(); - map(0xe000, 0xe1ff).ram().share("spriteram"); + map(0xe000, 0xe1ff).ram().share(m_spriteram); map(0xe200, 0xefff).ram(); map(0xf000, 0xffff).ram().w(FUNC(quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w)).share("paletteram"); } @@ -48,12 +291,12 @@ void quizdna_state::quizdna_map(address_map &map) void quizdna_state::gekiretu_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("mainbank"); + map(0x8000, 0xbfff).bankr(m_mainbank); map(0x8000, 0x9fff).w(FUNC(quizdna_state::fg_ram_w)); map(0xa000, 0xbfff).w(FUNC(quizdna_state::bg_ram_w)); map(0xc000, 0xdfff).ram(); map(0xe000, 0xefff).ram().w(FUNC(quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w)).share("paletteram"); - map(0xf000, 0xf1ff).ram().share("spriteram"); + map(0xf000, 0xf1ff).ram().share(m_spriteram); map(0xf200, 0xffff).ram(); } @@ -62,7 +305,7 @@ void quizdna_state::quizdna_io_map(address_map &map) map.global_mask(0xff); map(0x02, 0x03).w(FUNC(quizdna_state::bg_xscroll_w)); map(0x04, 0x04).w(FUNC(quizdna_state::bg_yscroll_w)); - map(0x05, 0x06).nopw(); /* unknown */ + map(0x05, 0x06).nopw(); // unknown map(0x80, 0x80).portr("P1"); map(0x81, 0x81).portr("P2"); map(0x90, 0x90).portr("SYSTEM"); @@ -78,7 +321,7 @@ void quizdna_state::gakupara_io_map(address_map &map) map.global_mask(0xff); map(0x00, 0x01).w(FUNC(quizdna_state::bg_xscroll_w)); map(0x02, 0x02).w(FUNC(quizdna_state::bg_yscroll_w)); - map(0x03, 0x04).nopw(); /* unknown */ + map(0x03, 0x04).nopw(); // unknown map(0x80, 0x80).portr("P1"); map(0x81, 0x81).portr("P2"); map(0x90, 0x90).portr("SYSTEM"); @@ -94,7 +337,7 @@ void quizdna_state::gekiretu_io_map(address_map &map) map.global_mask(0xff); map(0x02, 0x03).w(FUNC(quizdna_state::bg_xscroll_w)); map(0x04, 0x04).w(FUNC(quizdna_state::bg_yscroll_w)); - map(0x05, 0x06).nopw(); /* unknown */ + map(0x05, 0x06).nopw(); // unknown map(0x80, 0x80).portr("P1"); map(0x81, 0x81).portr("P2"); map(0x90, 0x90).portr("SYSTEM"); @@ -397,9 +640,9 @@ INPUT_PORTS_END static const gfx_layout fglayout = { - 16,8, /* 16*8 characters */ - 8192*2, /* 16384 characters */ - 1, /* 1 bit per pixel */ + 16,8, // 16*8 characters + 8192*2, // 16384 characters + 1, // 1 bit per pixel {0}, { STEP16(0,1) }, { STEP8(0,16) }, @@ -408,9 +651,9 @@ static const gfx_layout fglayout = static const gfx_layout bglayout = { - 8,8, /* 8*8 characters */ - 32768+1024, /* 32768+1024 characters */ - 4, /* 4 bits per pixel */ + 8,8, // 8*8 characters + 32768+1024, // 32768+1024 characters + 4, // 4 bits per pixel {0,1,2,3}, { STEP8(0,4) }, { STEP8(0,32) }, @@ -419,9 +662,9 @@ static const gfx_layout bglayout = static const gfx_layout objlayout = { - 16,16, /* 16*16 characters */ - 8192+256, /* 8192+256 characters */ - 4, /* 4 bits per pixel */ + 16,16, // 16*16 characters + 8192+256, // 8192+256 characters + 4, // 4 bits per pixel {0,1,2,3}, { STEP16(0,4) }, { STEP16(0,64) }, @@ -429,29 +672,32 @@ static const gfx_layout objlayout = }; static GFXDECODE_START( gfx_quizdna ) - GFXDECODE_ENTRY( "gfx1", 0x0000, fglayout, 0x7e0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0x0000, bglayout, 0x000, 128 ) - GFXDECODE_ENTRY( "gfx3", 0x0000, objlayout, 0x600, 32 ) + GFXDECODE_ENTRY( "fgtiles", 0x0000, fglayout, 0x7e0, 16 ) + GFXDECODE_ENTRY( "bgtiles", 0x0000, bglayout, 0x000, 128 ) + GFXDECODE_ENTRY( "sprites", 0x0000, objlayout, 0x600, 32 ) GFXDECODE_END void quizdna_state::machine_start() { - membank("mainbank")->configure_entries(0, 64, memregion("maincpu")->base() + 0x10000, 0x4000); + m_mainbank->configure_entry(0, m_banked_ram); + m_mainbank->configure_entries(1, 63, memregion("maincpu")->base() + 0x14000, 0x4000); } void quizdna_state::quizdna(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, MCLK/2); /* 8.000 MHz */ + static constexpr XTAL MCLK = 16_MHz_XTAL; + + // basic machine hardware + Z80(config, m_maincpu, MCLK / 2); // 8.000 MHz m_maincpu->set_addrmap(AS_PROGRAM, &quizdna_state::quizdna_map); m_maincpu->set_addrmap(AS_IO, &quizdna_state::quizdna_io_map); m_maincpu->set_vblank_int("screen", FUNC(quizdna_state::irq0_line_hold)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(64*8, 32*8); screen.set_visarea(8*8, 56*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(quizdna_state::screen_update)); @@ -460,11 +706,10 @@ void quizdna_state::quizdna(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_quizdna); PALETTE(config, m_palette).set_entries(2048); - - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); - ym2203_device &ymsnd(YM2203(config, "ymsnd", MCLK/4)); + ym2203_device &ymsnd(YM2203(config, "ymsnd", MCLK / 4)); ymsnd.port_a_read_callback().set_ioport("DSW3"); ymsnd.port_b_read_callback().set_ioport("DSW2"); ymsnd.add_route(0, "mono", 0.10); @@ -472,14 +717,14 @@ void quizdna_state::quizdna(machine_config &config) ymsnd.add_route(2, "mono", 0.10); ymsnd.add_route(3, "mono", 0.40); - OKIM6295(config, "oki", (MCLK/1024)*132, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); // clock frequency & pin 7 not verified + OKIM6295(config, "oki", (MCLK / 1024) * 132, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); // clock frequency & pin 7 not verified } void quizdna_state::gakupara(machine_config &config) { quizdna(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->set_addrmap(AS_IO, &quizdna_state::gakupara_io_map); } @@ -488,7 +733,7 @@ void quizdna_state::gekiretu(machine_config &config) { quizdna(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->set_addrmap(AS_PROGRAM, &quizdna_state::gekiretu_map); m_maincpu->set_addrmap(AS_IO, &quizdna_state::gekiretu_io_map); @@ -498,80 +743,83 @@ void quizdna_state::gekiretu(machine_config &config) /****************************************************************************/ ROM_START( quizdna ) - ROM_REGION( 0xd0000, "maincpu", 0 ) /* CPU */ + ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "quiz2-pr.28", 0x00000, 0x08000, CRC(a428ede4) SHA1(cdca3bd84b2ea421fb05502ea29e9eb605e574eb) ) - ROM_CONTINUE( 0x18000, 0x78000 ) /* banked */ - /* empty */ + ROM_CONTINUE( 0x18000, 0x78000 ) // banked + // empty - ROM_REGION( 0x40000, "gfx1", 0 ) /* fg */ + ROM_REGION( 0x40000, "fgtiles", 0 ) ROM_LOAD( "quiz2.102", 0x00000, 0x20000, CRC(62402ac9) SHA1(bf52d22b119d54410dad4949b0687bb0edf3e143) ) - /* empty */ + // empty - ROM_REGION( 0x108000, "gfx2", 0 ) /* bg */ + ROM_REGION( 0x108000, "bgtiles", 0 ) ROM_LOAD( "quiz2-bg.100", 0x000000, 0x100000, CRC(f1d0cac2) SHA1(26d25c1157d1916dfe4496c6cf119c4a9339e31c) ) - /* empty */ + // empty - ROM_REGION( 0x108000, "gfx3", 0 ) /* obj */ + ROM_REGION( 0x108000, "sprites", 0 ) ROM_LOAD( "quiz2-ob.98", 0x000000, 0x100000, CRC(682f19a6) SHA1(6b8e6e583f423cf8ef9095f2c300201db7d7b8b3) ) ROM_LOAD( "quiz2ob2.97", 0x100000, 0x008000, CRC(03736b1a) SHA1(bc42ac293260f58a8a138702d890f69aec99c05e) ) - ROM_REGION( 0x80000, "oki", 0 ) /* samples */ + ROM_REGION( 0x80000, "oki", 0 ) // samples ROM_LOAD( "quiz2-sn.32", 0x000000, 0x040000, CRC(1c044637) SHA1(dc749295e149f968495272f1a3ec27c6b719be8e) ) - ROM_REGION( 0x00020, "user1", 0 ) /* fg control */ + ROM_REGION( 0x00020, "fgctrl", 0 ) ROM_LOAD( "quiz2.148", 0x000000, 0x000020, CRC(91267e8a) SHA1(ae5bd8efea5322c4d9986d06680a781392f9a642) ) ROM_END ROM_START( gakupara ) - ROM_REGION( 0xd0000, "maincpu", 0 ) /* CPU */ + ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "u28.bin", 0x00000, 0x08000, CRC(72124bb8) SHA1(e734acff7e9d6b8c6a95c76860732320a2e3a828) ) - ROM_CONTINUE( 0x18000, 0x78000 ) /* banked */ - ROM_LOAD( "u29.bin", 0x90000, 0x40000, CRC(09f4948e) SHA1(21ccf5af6935cf40c0cf73fbee14bff3c4e1d23d) ) /* banked */ + ROM_CONTINUE( 0x18000, 0x78000 ) // banked + ROM_LOAD( "u29.bin", 0x90000, 0x40000, CRC(09f4948e) SHA1(21ccf5af6935cf40c0cf73fbee14bff3c4e1d23d) ) // banked - ROM_REGION( 0x40000, "gfx1", 0 ) /* fg */ + ROM_REGION( 0x40000, "fgtiles", 0 ) ROM_LOAD( "u102.bin", 0x00000, 0x20000, CRC(62402ac9) SHA1(bf52d22b119d54410dad4949b0687bb0edf3e143) ) ROM_LOAD( "u103.bin", 0x20000, 0x20000, CRC(38644251) SHA1(ebfdc43c38e1380709ed08575c346b2467ad1592) ) - ROM_REGION( 0x108000, "gfx2", 0 ) /* bg */ + ROM_REGION( 0x108000, "bgtiles", 0 ) ROM_LOAD( "u100.bin", 0x000000, 0x100000, CRC(f9d886ea) SHA1(d7763f54a165af720216b96e601a66fbc59e3568) ) ROM_LOAD( "u99.bin", 0x100000, 0x008000, CRC(ac224d0a) SHA1(f187c3b74bc18606d0fe638f6a829f71c109998d) ) - ROM_REGION( 0x108000, "gfx3", 0 ) /* obj */ + ROM_REGION( 0x108000, "sprites", 0 ) ROM_LOAD( "u98.bin", 0x000000, 0x100000, CRC(a6e8cb56) SHA1(2fc85c1769513cc7aa5e23afaf0c99c38de9b855) ) ROM_LOAD( "u97.bin", 0x100000, 0x008000, CRC(9dacd5c9) SHA1(e40211059e71408be3d67807463304f4d4ecae37) ) - ROM_REGION( 0x80000, "oki", 0 ) /* samples */ + ROM_REGION( 0x80000, "oki", 0 ) // samples ROM_LOAD( "u32.bin", 0x000000, 0x040000, CRC(eb03c535) SHA1(4d6c749ccab4681eee0a1fb243e9f3dbe61b9f94) ) - ROM_REGION( 0x00020, "user1", 0 ) /* fg control */ + ROM_REGION( 0x00020, "fgctrl", 0 ) ROM_LOAD( "u148.bin", 0x000000, 0x000020, CRC(971df9d2) SHA1(280f5b386922b9902ca9211c719642c2bd0ba899) ) ROM_END ROM_START( gekiretu ) - ROM_REGION( 0xd0000, "maincpu", 0 ) /* CPU */ + ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "quiz3-pr.28", 0x00000, 0x08000, CRC(a761e86f) SHA1(85331ef53598491e78c2d123b1ebd358aff46436) ) - ROM_CONTINUE( 0x18000, 0x78000 ) /* banked */ - /* empty */ + ROM_CONTINUE( 0x18000, 0x78000 ) // banked + // empty - ROM_REGION( 0x40000, "gfx1", 0 ) /* fg */ + ROM_REGION( 0x40000, "fgtiles", 0 ) ROM_LOAD( "quiz3.102", 0x00000, 0x20000, CRC(62402ac9) SHA1(bf52d22b119d54410dad4949b0687bb0edf3e143) ) - /* empty */ + // empty - ROM_REGION( 0x108000, "gfx2", 0 ) /* bg */ + ROM_REGION( 0x108000, "bgtiles", 0 ) ROM_LOAD( "quiz3-bg.100", 0x000000, 0x100000, CRC(cb9272fd) SHA1(cfc1ff93d1fdc7d144e161a77e534cea75d7f181) ) - /* empty */ + // empty - ROM_REGION( 0x108000, "gfx3", 0 ) /* obj */ + ROM_REGION( 0x108000, "sprites", 0 ) ROM_LOAD( "quiz3-ob.98", 0x000000, 0x100000, CRC(01bed020) SHA1(5cc56c8823ee5e538371debe1cbeb57c4976677b) ) - /* empty */ + // empty - ROM_REGION( 0x80000, "oki", 0 ) /* samples */ + ROM_REGION( 0x80000, "oki", 0 ) // samples ROM_LOAD( "quiz3-sn.32", 0x000000, 0x040000, CRC(36dca582) SHA1(2607602e942244cfaae931da2ad36da9a8f855f7) ) - ROM_REGION( 0x00020, "user1", 0 ) /* fg control */ + ROM_REGION( 0x00020, "fgctrl", 0 ) ROM_LOAD( "quiz3.148", 0x000000, 0x000020, CRC(91267e8a) SHA1(ae5bd8efea5322c4d9986d06680a781392f9a642) ) ROM_END +} // anonymous namespace + + GAME( 1991, gakupara, 0, gakupara, gakupara, quizdna_state, empty_init, ROT0, "NMK", "Quiz Gakuen Paradise (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, quizdna, 0, quizdna, quizdna, quizdna_state, empty_init, ROT0, "Face", "Quiz DNA no Hanran (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, gekiretu, 0, gekiretu, gekiretu, quizdna_state, empty_init, ROT0, "Face", "Quiz Gekiretsu Scramble (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/nmk/quizdna.h b/src/mame/nmk/quizdna.h deleted file mode 100644 index 433ba376586..00000000000 --- a/src/mame/nmk/quizdna.h +++ /dev/null @@ -1,63 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Uki - -#include "emupal.h" -#include "tilemap.h" - -class quizdna_state : public driver_device -{ -public: - quizdna_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_spriteram(*this, "spriteram"), - m_generic_paletteram_8(*this, "paletteram") { } - - void gakupara(machine_config &config); - void quizdna(machine_config &config); - void gekiretu(machine_config &config); - -private: - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; - - required_shared_ptr m_spriteram; - required_shared_ptr m_generic_paletteram_8; - - std::unique_ptr m_bg_ram; - std::unique_ptr m_fg_ram; - tilemap_t *m_bg_tilemap = nullptr; - tilemap_t *m_fg_tilemap = nullptr; - uint8_t m_bg_xscroll[2]; - int m_flipscreen = 0; - int m_video_enable = 0; - - // common - void bg_ram_w(offs_t offset, uint8_t data); - void fg_ram_w(offs_t offset, uint8_t data); - void bg_yscroll_w(uint8_t data); - void bg_xscroll_w(offs_t offset, uint8_t data); - void screen_ctrl_w(uint8_t data); - void paletteram_xBGR_RRRR_GGGG_BBBB_w(offs_t offset, uint8_t data); - void rombank_w(uint8_t data); - - // game specific - void gekiretu_rombank_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 video_start() override; - - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - void gakupara_io_map(address_map &map); - void gekiretu_io_map(address_map &map); - void gekiretu_map(address_map &map); - void quizdna_io_map(address_map &map); - void quizdna_map(address_map &map); -}; diff --git a/src/mame/nmk/quizdna_v.cpp b/src/mame/nmk/quizdna_v.cpp deleted file mode 100644 index e0d883f50d2..00000000000 --- a/src/mame/nmk/quizdna_v.cpp +++ /dev/null @@ -1,200 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Uki -/****************************************************************************** - -Quiz DNA no Hanran (c) 1992 Face -Quiz Gakuen Paradise (c) 1991 NMK -Quiz Gekiretsu Scramble (Gakuen Paradise 2) (c) 1993 Face - -Video hardware - driver by Uki - -******************************************************************************/ - -#include "emu.h" -#include "quizdna.h" - - -TILE_GET_INFO_MEMBER(quizdna_state::get_bg_tile_info) -{ - int code = m_bg_ram[tile_index*2] + m_bg_ram[tile_index*2+1]*0x100 ; - int col = m_bg_ram[tile_index*2+0x1000] & 0x7f; - - if (code>0x7fff) - code &= 0x83ff; - - tileinfo.set(1, code, col, 0); -} - -TILE_GET_INFO_MEMBER(quizdna_state::get_fg_tile_info) -{ - int code,col,x,y; - uint8_t *FG = memregion("user1")->base(); - - x = tile_index & 0x1f; - y = FG[(tile_index >> 5) & 0x1f] & 0x3f; - code = y & 1; - - y >>= 1; - - col = m_fg_ram[x*2 + y*0x40 + 1]; - code += (m_fg_ram[x*2 + y*0x40] + (col & 0x1f) * 0x100) * 2; - col >>= 5; - col = (col & 3) | ((col & 4) << 1); - - tileinfo.set(0, code, col, 0); -} - - -void quizdna_state::video_start() -{ - m_flipscreen = -1; - m_video_enable = 0; - m_bg_xscroll[0] = 0; - m_bg_xscroll[1] = 0; - - m_bg_ram = std::make_unique(0x2000); - m_fg_ram = std::make_unique(0x1000); - - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizdna_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizdna_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); - - m_fg_tilemap->set_transparent_pen(0); - - save_pointer(NAME(m_bg_ram), 0x2000); - save_pointer(NAME(m_fg_ram), 0x1000); - save_item(NAME(m_bg_xscroll)); - save_item(NAME(m_flipscreen)); - save_item(NAME(m_video_enable)); -} - -void quizdna_state::bg_ram_w(offs_t offset, uint8_t data) -{ - uint8_t *RAM = memregion("maincpu")->base(); - m_bg_ram[offset] = data; - RAM[0x12000+offset] = data; - - m_bg_tilemap->mark_tile_dirty((offset & 0xfff) / 2 ); -} - -void quizdna_state::fg_ram_w(offs_t offset, uint8_t data) -{ - int i; - int offs = offset & 0xfff; - uint8_t *RAM = memregion("maincpu")->base(); - - RAM[0x10000+offs] = data; - RAM[0x11000+offs] = data; /* mirror */ - m_fg_ram[offs] = data; - - for (i=0; i<32; i++) - m_fg_tilemap->mark_tile_dirty(((offs/2) & 0x1f) + i*0x20 ); -} - -void quizdna_state::bg_yscroll_w(uint8_t data) -{ - m_bg_tilemap->set_scrolldy(255-data, 255-data+1 ); -} - -void quizdna_state::bg_xscroll_w(offs_t offset, uint8_t data) -{ - int x; - m_bg_xscroll[offset] = data; - x = ~(m_bg_xscroll[0] + m_bg_xscroll[1]*0x100) & 0x1ff; - - m_bg_tilemap->set_scrolldx(x+64, x-64+10 ); -} - -void quizdna_state::screen_ctrl_w(uint8_t data) -{ - int tmp = (data & 0x10) >> 4; - m_video_enable = data & 0x20; - - machine().bookkeeping().coin_counter_w(0, data & 1); - - if (m_flipscreen == tmp) - return; - - m_flipscreen = tmp; - - flip_screen_set(tmp); - m_fg_tilemap->set_scrolldx(64, -64 +16); -} - -void quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w(offs_t offset, uint8_t data) -{ - int r,g,b,d0,d1; - int offs = offset & ~1; - - m_generic_paletteram_8[offset] = data; - - d0 = m_generic_paletteram_8[offs]; - d1 = m_generic_paletteram_8[offs+1]; - - r = ((d1 << 1) & 0x1e) | ((d1 >> 4) & 1); - g = ((d0 >> 3) & 0x1e) | ((d1 >> 5) & 1); - b = ((d0 << 1) & 0x1e) | ((d1 >> 6) & 1); - - m_palette->set_pen_color(offs/2,pal5bit(r),pal5bit(g),pal5bit(b)); -} - -void quizdna_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - for (int offs = 0; offs> 6; - int dy = 0x10; - col &= 0x1f; - - if (m_flipscreen) - { - x -= 7; - y += 1; - } - - x &= 0x1ff; - if (x>0x1f0) - x -= 0x200; - - if (fy) - { - dy = -0x10; - y += 0x10 * ysize; - } - - if (code >= 0x2100) - code &= 0x20ff; - - for (int i=0; igfx(2)->transpen(bitmap,cliprect, - code ^ i, - col, - fx,fy, - x,y,0); - - y += dy; - } - } -} - -uint32_t quizdna_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - if (m_video_enable) - { - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - draw_sprites(bitmap, cliprect); - m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - } - else - bitmap.fill(m_palette->black_pen(), cliprect); - return 0; -} diff --git a/src/mame/nmk/quizpani.cpp b/src/mame/nmk/quizpani.cpp index 64f24d4f3a2..f0ee8a9a4eb 100644 --- a/src/mame/nmk/quizpani.cpp +++ b/src/mame/nmk/quizpani.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:David Haywood, Pierpaolo Prazzoli +// copyright-holders: David Haywood, Pierpaolo Prazzoli + /************************************************************************* Quiz Panicuru Fantasy (c) 1993 NMK @@ -48,39 +49,171 @@ Stephh's notes (based on the games M68000 code and some tests) : *************************************************************************/ #include "emu.h" -#include "quizpani.h" #include "cpu/m68000/m68000.h" +#include "machine/nmk112.h" #include "sound/okim6295.h" + #include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +namespace { + +class quizpani_state : public driver_device +{ +public: + quizpani_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_scrollreg(*this, "scrollreg"), + m_bg_videoram(*this, "bg_videoram"), + m_txt_videoram(*this, "txt_videoram") + { } + + void quizpani(machine_config &config); + +protected: + virtual void video_start() override; + +private: + required_device m_maincpu; + required_device m_gfxdecode; + + required_shared_ptr m_scrollreg; + required_shared_ptr m_bg_videoram; + required_shared_ptr m_txt_videoram; + + tilemap_t *m_bg_tilemap = nullptr; + tilemap_t *m_txt_tilemap = nullptr; + uint8_t m_bgbank = 0; + uint8_t m_txtbank = 0; + + void bg_videoram_w(offs_t offset, uint16_t data); + void txt_videoram_w(offs_t offset, uint16_t data); + void tilesbank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + + TILEMAP_MAPPER_MEMBER(bg_scan); + TILE_GET_INFO_MEMBER(bg_tile_info); + TILE_GET_INFO_MEMBER(txt_tile_info); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map); +}; + + +// video + +TILEMAP_MAPPER_MEMBER(quizpani_state::bg_scan) +{ + // logical (col,row) -> memory offset + return (row & 0x0f) + ((col & 0xff) << 4) + ((row & 0x70) << 8); +} + +TILE_GET_INFO_MEMBER(quizpani_state::bg_tile_info) +{ + int const code = m_bg_videoram[tile_index]; + + tileinfo.set(1, + (code & 0xfff) + (0x1000 * m_bgbank), + code >> 12, + 0); +} + +TILE_GET_INFO_MEMBER(quizpani_state::txt_tile_info) +{ + int const code = m_txt_videoram[tile_index]; + + tileinfo.set(0, + (code & 0xfff) + (0x1000 * m_txtbank), + code >> 12, + 0); +} + +void quizpani_state::bg_videoram_w(offs_t offset, uint16_t data) +{ + m_bg_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); +} + +void quizpani_state::txt_videoram_w(offs_t offset, uint16_t data) +{ + m_txt_videoram[offset] = data; + m_txt_tilemap->mark_tile_dirty(offset); +} + +void quizpani_state::tilesbank_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + if (ACCESSING_BITS_0_7) + { + if (m_txtbank != (data & 0x30) >> 4) + { + m_txtbank = (data & 0x30) >> 4; + m_txt_tilemap->mark_all_dirty(); + } + + if (m_bgbank != (data & 3)) + { + m_bgbank = data & 3; + m_bg_tilemap->mark_all_dirty(); + } + } +} + +void quizpani_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpani_state::bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(quizpani_state::bg_scan)), 16, 16, 256, 32); + m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpani_state::txt_tile_info)), tilemap_mapper_delegate(*this, FUNC(quizpani_state::bg_scan)), 16, 16, 256, 32); + m_txt_tilemap->set_transparent_pen(15); + + save_item(NAME(m_bgbank)); + save_item(NAME(m_txtbank)); + m_bg_tilemap->set_scrolldx(64, 64); + m_txt_tilemap->set_scrolldx(64, 64); +} + +uint32_t quizpani_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->set_scrollx(0, m_scrollreg[0]); + m_bg_tilemap->set_scrolly(0, m_scrollreg[1]); + m_txt_tilemap->set_scrollx(0, m_scrollreg[2]); + m_txt_tilemap->set_scrolly(0, m_scrollreg[3]); + + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_txt_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} -void quizpani_state::quizpani_map(address_map &map) +// machine + +void quizpani_state::program_map(address_map &map) { map(0x000000, 0x07ffff).rom(); map(0x100000, 0x100001).portr("SYSTEM"); map(0x100002, 0x100003).portr("P1_P2"); map(0x100008, 0x100009).portr("DSW1"); map(0x10000a, 0x10000b).portr("DSW2"); - map(0x100014, 0x100015).nopw(); /* screen flipping? */ - map(0x100016, 0x100017).nopw(); /* IRQ enable? */ + map(0x100014, 0x100015).nopw(); // screen flipping? + map(0x100016, 0x100017).nopw(); // IRQ enable? map(0x100018, 0x100019).w(FUNC(quizpani_state::tilesbank_w)); map(0x104001, 0x104001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0x104020, 0x104027).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); map(0x108000, 0x1083ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); map(0x108400, 0x1085ff).nopw(); - map(0x10c000, 0x10c007).ram().share("scrollreg"); + map(0x10c000, 0x10c007).ram().share(m_scrollreg); map(0x10c008, 0x10c403).nopw(); - map(0x110000, 0x113fff).ram().w(FUNC(quizpani_state::bg_videoram_w)).share("bg_videoram"); - map(0x11c000, 0x11ffff).ram().w(FUNC(quizpani_state::txt_videoram_w)).share("txt_videoram"); + map(0x110000, 0x113fff).ram().w(FUNC(quizpani_state::bg_videoram_w)).share(m_bg_videoram); + map(0x11c000, 0x11ffff).ram().w(FUNC(quizpani_state::txt_videoram_w)).share(m_txt_videoram); map(0x180000, 0x18ffff).ram(); map(0x200000, 0x33ffff).rom(); } -/* verified from M68000 code */ +// verified from M68000 code static INPUT_PORTS_START( quizpani ) PORT_START("SYSTEM") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -94,7 +227,7 @@ static INPUT_PORTS_START( quizpani ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("P1_P2") - /* "Standard" buttons layout */ + // "Standard" buttons layout PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CONDITION("DSW1",0x0002,EQUALS,0x0002) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_CONDITION("DSW1",0x0002,EQUALS,0x0002) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_CONDITION("DSW1",0x0002,EQUALS,0x0002) @@ -111,7 +244,7 @@ static INPUT_PORTS_START( quizpani ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1",0x0002,EQUALS,0x0002) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1",0x0002,EQUALS,0x0002) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1",0x0002,EQUALS,0x0002) - /* "Alternate" buttons layout */ + // "Alternate" buttons layout PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* dup. B1 P1 */ PORT_CONDITION("DSW1",0x0002,EQUALS,0x0000) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* dup. B1 P1 */ PORT_CONDITION("DSW1",0x0002,EQUALS,0x0000) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* dup. B1 P1 */ PORT_CONDITION("DSW1",0x0002,EQUALS,0x0000) @@ -130,10 +263,10 @@ static INPUT_PORTS_START( quizpani ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1",0x0002,EQUALS,0x0000) PORT_START("DSW1") - PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) /* guess, but check code at 0x004d9c and write to 0x100014 */ + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) // guess, but check code at 0x004d9c and write to 0x100014 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, "Buttons Layout" ) /* check code at 0x005d80 */ + PORT_DIPNAME( 0x0002, 0x0002, "Buttons Layout" ) // check code at 0x005d80 PORT_DIPSETTING( 0x0002, DEF_STR( Standard ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Alternate ) ) PORT_DIPNAME( 0x0004, 0x0018, DEF_STR( Difficulty ) ) @@ -146,14 +279,14 @@ static INPUT_PORTS_START( quizpani ) PORT_DIPSETTING( 0x0020, "2" ) PORT_DIPSETTING( 0x0030, "3" ) PORT_DIPSETTING( 0x0010, "4" ) - PORT_DIPUNKNOWN( 0x0040, 0x0040 ) /* check code at 0x0083a6 - never called ? */ + PORT_DIPUNKNOWN( 0x0040, 0x0040 ) // check code at 0x0083a6 - never called ? PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0080, DEF_STR( On ) ) PORT_START("DSW2") PORT_DIPUNUSED( 0x0001, 0x0001 ) - PORT_DIPNAME( 0x0002, 0x0002, "Sounds/Music" ) /* check code at 0x003ab4 */ + PORT_DIPNAME( 0x0002, 0x0002, "Sounds/Music" ) // check code at 0x003ab4 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0002, DEF_STR( On ) ) PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coin_B ) ) @@ -177,15 +310,15 @@ static INPUT_PORTS_START( quizpani ) INPUT_PORTS_END static GFXDECODE_START( gfx_quizpani ) - GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x100, 16 ) /* Background */ - GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x000, 16 ) /* Text */ + GFXDECODE_ENTRY( "bgtiles", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x100, 16 ) + GFXDECODE_ENTRY( "text", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x000, 16 ) GFXDECODE_END void quizpani_state::quizpani(machine_config &config) { - M68000(config, m_maincpu, 10000000); - m_maincpu->set_addrmap(AS_PROGRAM, &quizpani_state::quizpani_map); + M68000(config, m_maincpu, 10'000'000); + m_maincpu->set_addrmap(AS_PROGRAM, &quizpani_state::program_map); m_maincpu->set_vblank_int("screen", FUNC(quizpani_state::irq4_line_hold)); m_maincpu->set_periodic_int(FUNC(quizpani_state::irq1_line_hold), attotime::from_hz(164)); // music tempo @@ -202,25 +335,25 @@ void quizpani_state::quizpani(machine_config &config) SPEAKER(config, "mono").front_center(); - OKIM6295(config, "oki", 16000000/4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); + OKIM6295(config, "oki", 16'000'000 / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); nmk112_device &nmk112(NMK112(config, "nmk112", 0)); nmk112.set_rom0_tag("oki"); } ROM_START( quizpani ) - ROM_REGION( 0x340000, "maincpu", 0 ) /* 68000 Code */ + ROM_REGION( 0x340000, "maincpu", 0 ) // 68000 ROM_LOAD16_WORD_SWAP( "93094-51.127", 0x000000, 0x080000, CRC(2b7a29d4) SHA1(f87b875e69410745ee46d5d94b6c28e5417afb0d) ) - /* No EVEN rom */ + // No even ROM ROM_LOAD16_BYTE( "93094-52.126", 0x200001, 0x080000, CRC(0617524e) SHA1(91ab5cb8a605c37c92632cf007ddb67172cc9863) ) - /* No EVEN rom */ + // No even ROM ROM_LOAD16_BYTE( "93094-53.125", 0x300001, 0x020000, CRC(7e0ab49c) SHA1(dd10f723ef74f3153e04b1a271b8761585799aa6) ) - ROM_REGION( 0x200000, "gfx1", 0 ) + ROM_REGION( 0x200000, "bgtiles", 0 ) ROM_LOAD( "93090-11.2", 0x000000, 0x100000, CRC(4b3ab155) SHA1(fc1210853ca262c42b927689cb8f04aca15de7d6) ) ROM_LOAD( "93090-12.1", 0x100000, 0x100000, CRC(3f2ebfa5) SHA1(1c935d566f3980483356264a9216f9bf298bb815) ) - ROM_REGION( 0x200000, "gfx2", 0 ) + ROM_REGION( 0x200000, "text", 0 ) ROM_LOAD( "93090-21.10", 0x000000, 0x100000, CRC(63754242) SHA1(3698b89d8515b45b9bc0fff87ca94ab5c2b3d53a) ) ROM_LOAD( "93090-22.9", 0x100000, 0x100000, CRC(93382cd3) SHA1(6527e92f696c21aae65d008bb237231eaba7a105) ) @@ -230,9 +363,12 @@ ROM_START( quizpani ) ROM_LOAD( "93090-4.56", 0x240000, 0x100000, CRC(ee370ed6) SHA1(9b1edfada5805014aa23d28d0c70227728b0e04f) ) ROM_REGION( 0x300, "proms", 0 ) - ROM_LOAD( "qz6.88", 0x000, 0x100, CRC(19dbbad2) SHA1(ebf7950d1869ca3bc1e72228505fbc17d095746a) ) /* unknown */ - ROM_LOAD( "qz7.99", 0x100, 0x100, CRC(1f802af1) SHA1(617bb7e5105ac202b5a8cf83c8c66178b91099e0) ) /* unknown */ - ROM_LOAD( "qz8.121", 0x200, 0x100, CRC(b4c19741) SHA1(a6d3686bad6ef2336463b89bc2d249003d9b4bcc) ) /* unknown */ + ROM_LOAD( "qz6.88", 0x000, 0x100, CRC(19dbbad2) SHA1(ebf7950d1869ca3bc1e72228505fbc17d095746a) ) // unknown + ROM_LOAD( "qz7.99", 0x100, 0x100, CRC(1f802af1) SHA1(617bb7e5105ac202b5a8cf83c8c66178b91099e0) ) // unknown + ROM_LOAD( "qz8.121", 0x200, 0x100, CRC(b4c19741) SHA1(a6d3686bad6ef2336463b89bc2d249003d9b4bcc) ) // unknown ROM_END +} // anonymous namespace + + GAME( 1993, quizpani, 0, quizpani, quizpani, quizpani_state, empty_init, ROT0, "NMK", "Quiz Panicuru Fantasy", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/nmk/quizpani.h b/src/mame/nmk/quizpani.h deleted file mode 100644 index 9564183a131..00000000000 --- a/src/mame/nmk/quizpani.h +++ /dev/null @@ -1,51 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood, Pierpaolo Prazzoli -#ifndef MAME_NMK_QUIZPANI_H -#define MAME_NMK_QUIZPANI_H - -#pragma once - -#include "machine/nmk112.h" - -#include "tilemap.h" - -class quizpani_state : public driver_device -{ -public: - quizpani_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_scrollreg(*this, "scrollreg"), - m_bg_videoram(*this, "bg_videoram"), - m_txt_videoram(*this, "txt_videoram") - { } - - required_device m_maincpu; - required_device m_gfxdecode; - - required_shared_ptr m_scrollreg; - required_shared_ptr m_bg_videoram; - required_shared_ptr m_txt_videoram; - - tilemap_t *m_bg_tilemap = nullptr; - tilemap_t *m_txt_tilemap = nullptr; - int m_bgbank = 0; - int m_txtbank = 0; - - void bg_videoram_w(offs_t offset, uint16_t data); - void txt_videoram_w(offs_t offset, uint16_t data); - void tilesbank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - - TILEMAP_MAPPER_MEMBER(bg_scan); - TILE_GET_INFO_MEMBER(bg_tile_info); - TILE_GET_INFO_MEMBER(txt_tile_info); - - virtual void video_start() override; - - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void quizpani(machine_config &config); - void quizpani_map(address_map &map); -}; - -#endif // MAME_NMK_QUIZPANI_H diff --git a/src/mame/nmk/quizpani_v.cpp b/src/mame/nmk/quizpani_v.cpp deleted file mode 100644 index 869603d95ec..00000000000 --- a/src/mame/nmk/quizpani_v.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood, Pierpaolo Prazzoli -/************************************************************************ - - Quiz Panicuru Fantasy video hardware - -************************************************************************/ - -#include "emu.h" -#include "quizpani.h" - - -TILEMAP_MAPPER_MEMBER(quizpani_state::bg_scan) -{ - /* logical (col,row) -> memory offset */ - return (row & 0x0f) + ((col & 0xff) << 4) + ((row & 0x70) << 8); -} - -TILE_GET_INFO_MEMBER(quizpani_state::bg_tile_info) -{ - int code = m_bg_videoram[tile_index]; - - tileinfo.set(1, - (code & 0xfff) + (0x1000 * m_bgbank), - code >> 12, - 0); -} - -TILE_GET_INFO_MEMBER(quizpani_state::txt_tile_info) -{ - int code = m_txt_videoram[tile_index]; - - tileinfo.set(0, - (code & 0xfff) + (0x1000 * m_txtbank), - code >> 12, - 0); -} - -void quizpani_state::bg_videoram_w(offs_t offset, uint16_t data) -{ - m_bg_videoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset); -} - -void quizpani_state::txt_videoram_w(offs_t offset, uint16_t data) -{ - m_txt_videoram[offset] = data; - m_txt_tilemap->mark_tile_dirty(offset); -} - -void quizpani_state::tilesbank_w(offs_t offset, uint16_t data, uint16_t mem_mask) -{ - if (ACCESSING_BITS_0_7) - { - if(m_txtbank != (data & 0x30)>>4) - { - m_txtbank = (data & 0x30)>>4; - m_txt_tilemap->mark_all_dirty(); - } - - if(m_bgbank != (data & 3)) - { - m_bgbank = data & 3; - m_bg_tilemap->mark_all_dirty(); - } - } -} - -void quizpani_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpani_state::bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(quizpani_state::bg_scan)), 16,16, 256,32); - m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpani_state::txt_tile_info)), tilemap_mapper_delegate(*this, FUNC(quizpani_state::bg_scan)), 16,16, 256,32); - m_txt_tilemap->set_transparent_pen(15); - - save_item(NAME(m_bgbank)); - save_item(NAME(m_txtbank)); - m_bg_tilemap->set_scrolldx(64,64); - m_txt_tilemap->set_scrolldx(64,64); -} - -uint32_t quizpani_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->set_scrollx(0, m_scrollreg[0]); - m_bg_tilemap->set_scrolly(0, m_scrollreg[1]); - m_txt_tilemap->set_scrollx(0, m_scrollreg[2]); - m_txt_tilemap->set_scrolly(0, m_scrollreg[3]); - - m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); - m_txt_tilemap->draw(screen, bitmap, cliprect, 0,0); - return 0; -} -- cgit v1.2.3