mirror of
https://github.com/holub/mame
synced 2025-04-16 05:24:54 +03:00
brkthru.cpp, gunsmoke.cpp, bfm_adr2.cpp: used finders and other small cleanups
This commit is contained in:
parent
0343f06b29
commit
fb30007f9e
@ -1556,8 +1556,6 @@ files {
|
||||
MAME_DIR .. "src/mame/includes/fcrash.h",
|
||||
MAME_DIR .. "src/mame/drivers/gng.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/includes/higemaru.h",
|
||||
MAME_DIR .. "src/mame/video/higemaru.cpp",
|
||||
@ -1692,8 +1690,6 @@ files {
|
||||
MAME_DIR .. "src/mame/includes/boogwing.h",
|
||||
MAME_DIR .. "src/mame/video/boogwing.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/includes/btime.h",
|
||||
MAME_DIR .. "src/mame/machine/btime.cpp",
|
||||
|
@ -1344,10 +1344,10 @@ ROM_START( m_tppokr )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "tpk011.chr", 0x00000, 0x20000, CRC(4dc23ad8) SHA1(8e8cc699412dbb092e16e14518f407353f477ee1))
|
||||
ROM_END
|
||||
|
||||
|
@ -2485,13 +2485,13 @@ ROM_START( quintoon )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_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_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
|
||||
ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047))
|
||||
ROM_END
|
||||
|
||||
@ -2501,13 +2501,13 @@ ROM_START( quintono )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_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_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
|
||||
ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047))
|
||||
ROM_END
|
||||
|
||||
@ -2517,13 +2517,13 @@ ROM_START( quintond )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_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_REGION( 0x40000, "gfx1", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x40000, "adder2:tiles", ROMREGION_ERASEFF )
|
||||
ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047))
|
||||
ROM_END
|
||||
|
||||
@ -2533,13 +2533,13 @@ ROM_START( qntoond )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_END
|
||||
|
||||
@ -2549,13 +2549,13 @@ ROM_START( qntoondo )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_END
|
||||
|
||||
@ -2565,13 +2565,13 @@ ROM_START( gldncrwn )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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("95770119.ch2", 0x20000, 0x20000, CRC(9e0fdb2e) SHA1(05e8257285b0009df4fcc73e93490876358a8be8))
|
||||
|
||||
@ -2583,13 +2583,13 @@ ROM_START( gldncrwnhop )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_REGION( 0x10, "proms", 0 )
|
||||
@ -2603,13 +2603,13 @@ ROM_START( paradice )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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("95770086.ch2", 0x20000, 0x20000, CRC(7b566e11) SHA1(f34c82ad75a0f88204ac4ae83a00801215c46ca9))
|
||||
|
||||
@ -2623,13 +2623,13 @@ ROM_START( pokio )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_REGION( 0x10, "proms", 0 )
|
||||
@ -2642,13 +2642,13 @@ ROM_START( pyramid )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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("95770107.ch2", 0x20000, 0x20000, CRC(52e59f64) SHA1(ea4828c2cfb72cd77c92c60560b4d5ee424f7dca))
|
||||
|
||||
@ -2662,13 +2662,13 @@ ROM_START( slotsnl )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_REGION( 0x10, "proms", 0 )
|
||||
@ -2681,13 +2681,13 @@ ROM_START( sltblgtk )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_REGION( 0x10, "proms", 0 )
|
||||
@ -2700,13 +2700,13 @@ ROM_START( sltblgp1 )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_REGION( 0x10, "proms", 0 )
|
||||
@ -2719,13 +2719,13 @@ ROM_START( sltblgpo )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
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_REGION( 0x20000, "upd", 0 )
|
||||
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_REGION( 0x10, "proms", 0 )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,7 @@
|
||||
|
||||
Gun.Smoke
|
||||
Capcom
|
||||
85113-A-1 main PCB + 85113-B-3 video PCB
|
||||
|
||||
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
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/gunsmoke.h"
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/ymopn.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.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.
|
||||
@ -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.
|
||||
*/
|
||||
|
||||
static const uint8_t gunsmoke_fixed_data[] = { 0xff, 0x00, 0x00 };
|
||||
return gunsmoke_fixed_data[offset];
|
||||
static const uint8_t fixed_data[] = { 0xff, 0x00, 0x00 };
|
||||
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(0x8000, 0xbfff).bankr("bank1");
|
||||
map(0x8000, 0xbfff).bankr(m_mainbank);
|
||||
map(0xc000, 0xc000).portr("SYSTEM");
|
||||
map(0xc001, 0xc001).portr("P1");
|
||||
map(0xc002, 0xc002).portr("P2");
|
||||
map(0xc003, 0xc003).portr("DSW1");
|
||||
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(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)
|
||||
map(0xd000, 0xd3ff).ram().w(FUNC(gunsmoke_state::gunsmoke_videoram_w)).share("videoram");
|
||||
map(0xd400, 0xd7ff).ram().w(FUNC(gunsmoke_state::gunsmoke_colorram_w)).share("colorram");
|
||||
map(0xd800, 0xd801).ram().share("scrollx");
|
||||
map(0xd802, 0xd802).ram().share("scrolly");
|
||||
map(0xd806, 0xd806).w(FUNC(gunsmoke_state::gunsmoke_d806_w)); // sprites and bg enable
|
||||
map(0xd000, 0xd3ff).ram().w(FUNC(gunsmoke_state::videoram_w)).share(m_videoram);
|
||||
map(0xd400, 0xd7ff).ram().w(FUNC(gunsmoke_state::colorram_w)).share(m_colorram);
|
||||
map(0xd800, 0xd801).ram().share(m_scrollx);
|
||||
map(0xd802, 0xd802).ram().share(m_scrolly);
|
||||
map(0xd806, 0xd806).w(FUNC(gunsmoke_state::d806_w)); // sprites and bg enable
|
||||
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)
|
||||
@ -142,7 +395,7 @@ void gunsmoke_state::sound_map(address_map &map)
|
||||
map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write));
|
||||
}
|
||||
|
||||
/* Input Ports */
|
||||
// Input Ports
|
||||
|
||||
static INPUT_PORTS_START( gunsmoke )
|
||||
PORT_START("SYSTEM")
|
||||
@ -234,24 +487,24 @@ static INPUT_PORTS_START( gunsmokeu )
|
||||
PORT_DIPSETTING( 0x00, "5" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* Graphics Layouts */
|
||||
// Graphics Layouts
|
||||
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8,8, /* 8*8 characters */
|
||||
1024, /* 1024 characters */
|
||||
2, /* 2 bits per pixel */
|
||||
8,8, // 8*8 characters
|
||||
1024, // 1024 characters
|
||||
2, // 2 bits per pixel
|
||||
{ 4, 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 },
|
||||
16*8 /* every char takes 16 consecutive bytes */
|
||||
16*8 // every char takes 16 consecutive bytes
|
||||
};
|
||||
|
||||
static const gfx_layout tilelayout =
|
||||
{
|
||||
32,32, /* 32*32 tiles */
|
||||
512, /* 512 tiles */
|
||||
4, /* 4 bits per pixel */
|
||||
32,32, // 32*32 tiles
|
||||
512, // 512 tiles
|
||||
4, // 4 bits per pixel
|
||||
{ 512*256*8+4, 512*256*8+0, 4, 0 },
|
||||
{ 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,
|
||||
@ -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,
|
||||
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 },
|
||||
256*8 /* every tile takes 256 consecutive bytes */
|
||||
256*8 // every tile takes 256 consecutive bytes
|
||||
};
|
||||
|
||||
static const gfx_layout spritelayout =
|
||||
{
|
||||
16,16, /* 16*16 sprites */
|
||||
2048, /* 2048 sprites */
|
||||
4, /* 4 bits per pixel */
|
||||
16,16, // 16*16 sprites
|
||||
2048, // 2048 sprites
|
||||
4, // 4 bits per pixel
|
||||
{ 2048*64*8+4, 2048*64*8+0, 4, 0 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
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 )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 32*4, 16 )
|
||||
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 32*4+16*16, 16 )
|
||||
GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 32 )
|
||||
GFXDECODE_ENTRY( "tiles", 0, tilelayout, 32*4, 16 )
|
||||
GFXDECODE_ENTRY( "sprites", 0, spritelayout, 32*4+16*16, 16 )
|
||||
GFXDECODE_END
|
||||
|
||||
/* Machine Driver */
|
||||
// Machine Driver
|
||||
|
||||
void gunsmoke_state::machine_start()
|
||||
{
|
||||
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_objon));
|
||||
@ -309,350 +562,350 @@ void gunsmoke_state::machine_reset()
|
||||
|
||||
void gunsmoke_state::gunsmoke(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 3000000); // 3 MHz Verified on PCB by jotego
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gunsmoke_state::gunsmoke_map);
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL / 4); // 3 MHz Verified on PCB by jotego
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gunsmoke_state::main_map);
|
||||
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_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.set_raw(6000000, 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_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));
|
||||
screen.set_palette(m_palette);
|
||||
|
||||
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();
|
||||
|
||||
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(1, "mono", 0.22);
|
||||
ym1.add_route(2, "mono", 0.22);
|
||||
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(1, "mono", 0.22);
|
||||
ym2.add_route(2, "mono", 0.22);
|
||||
ym2.add_route(3, "mono", 0.14);
|
||||
}
|
||||
|
||||
/* ROMs */
|
||||
// ROMs
|
||||
|
||||
ROM_START( gunsmoke )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
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( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD( "gs03.09n", 0x00000, 0x8000, CRC(40a06cef) SHA1(3e2a52d476298b7252f0adaefdb42090351e921c) ) // Code 0000-7fff // gse_03
|
||||
ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
|
||||
ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
|
||||
ROM_REGION( 0x04000, "chars", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx2", 0 )
|
||||
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
|
||||
ROM_REGION( 0x40000, "tiles", 0 )
|
||||
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( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
|
||||
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( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
|
||||
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
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( "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( "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( "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_REGION( 0x40000, "sprites", 0 )
|
||||
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( "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( "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( "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_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
|
||||
ROM_REGION( 0x8000, "bgtiles", 0 )
|
||||
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
|
||||
|
||||
ROM_REGION( 0x0a00, "proms", 0 )
|
||||
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-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-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-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-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-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-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-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-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-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_END
|
||||
|
||||
ROM_START( gunsmokeb )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
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( "5.ic87", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD( "3.ic85", 0x00000, 0x8000, CRC(ae6f4b75) SHA1(f4ee4f7a7d507ceaef9ce8165704fd80c8c1e8ba) ) // Code 0000-7fff
|
||||
ROM_LOAD( "4.ic86", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
|
||||
ROM_LOAD( "5.ic87", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "2.ic41", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
ROM_LOAD( "1.ic39", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
|
||||
ROM_REGION( 0x04000, "chars", 0 )
|
||||
ROM_LOAD( "1.ic39", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx2", 0 )
|
||||
ROM_LOAD( "13.ic21", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
|
||||
ROM_REGION( 0x40000, "tiles", 0 )
|
||||
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( "11.ic19", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
|
||||
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( "8.ic03", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
|
||||
ROM_LOAD( "7.ic02", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
|
||||
ROM_LOAD( "6.ic01", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
|
||||
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( "7.ic02", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
|
||||
ROM_LOAD( "6.ic01", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
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( "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( "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( "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_REGION( 0x40000, "sprites", 0 )
|
||||
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( "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( "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( "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_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
|
||||
ROM_REGION( 0x8000, "bgtiles", 0 )
|
||||
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.
|
||||
As the ICs are not socketed, but directly soldered to the pcb, it is harder to identify which is which.
|
||||
/* 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.
|
||||
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_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.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-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-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-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( "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.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-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-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-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_END
|
||||
|
||||
ROM_START( gunsmokej )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
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( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD( "gsj_03.09n", 0x00000, 0x8000, CRC(b56b5df6) SHA1(0295a3ef491b6b8ee9c198fd08dddc29d88bbef6) ) // Code 0000-7fff
|
||||
ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
|
||||
ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
|
||||
ROM_REGION( 0x04000, "chars", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx2", 0 )
|
||||
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
|
||||
ROM_REGION( 0x40000, "tiles", 0 )
|
||||
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( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
|
||||
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( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
|
||||
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
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( "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( "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( "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_REGION( 0x40000, "sprites", 0 )
|
||||
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( "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( "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( "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_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
|
||||
ROM_REGION( 0x8000, "bgtiles", 0 )
|
||||
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
|
||||
|
||||
ROM_REGION( 0x0a00, "proms", 0 )
|
||||
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-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-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-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-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-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-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-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-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-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_END
|
||||
|
||||
ROM_START( gunsmokeu )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
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( "gs05.12n", 0x18000, 0x8000, CRC(1c9aca13) SHA1(eb92c373d2241aea4c59248e1b82717733105ac0) ) /* Paged code */
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD( "gsa_03.9n", 0x00000, 0x8000, CRC(51dc3f76) SHA1(2a188fee73c3662b665b56a825eb908b7b42dcd0) ) // Code 0000-7fff
|
||||
ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(5ecf31b8) SHA1(34ec9727330821a45b497c78c970a1a4f14ff4ee) ) // Paged code
|
||||
ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(1c9aca13) SHA1(eb92c373d2241aea4c59248e1b82717733105ac0) ) // Paged code
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
|
||||
ROM_REGION( 0x04000, "chars", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx2", 0 )
|
||||
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
|
||||
ROM_REGION( 0x40000, "tiles", 0 )
|
||||
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( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
|
||||
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( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
|
||||
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
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( "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( "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( "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_REGION( 0x40000, "sprites", 0 )
|
||||
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( "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( "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( "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_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
|
||||
ROM_REGION( 0x8000, "bgtiles", 0 )
|
||||
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
|
||||
|
||||
ROM_REGION( 0x0a00, "proms", 0 )
|
||||
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-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-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-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-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-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-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-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-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-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_END
|
||||
|
||||
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_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( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
|
||||
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( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
|
||||
ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
|
||||
ROM_REGION( 0x04000, "chars", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx2", 0 )
|
||||
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
|
||||
ROM_REGION( 0x40000, "tiles", 0 )
|
||||
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( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
|
||||
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( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
|
||||
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
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( "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( "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( "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_REGION( 0x40000, "sprites", 0 )
|
||||
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( "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( "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( "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_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
|
||||
ROM_REGION( 0x8000, "bgtiles", 0 )
|
||||
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
|
||||
|
||||
ROM_REGION( 0x0a00, "proms", 0 )
|
||||
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-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-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-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-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-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-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-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-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-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_END
|
||||
|
||||
ROM_START( gunsmokeub )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
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( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD( "gsr_03.9n", 0x00000, 0x8000, CRC(592f211b) SHA1(8de44b3cafa3d2ce9aba515cf3ec4bac0bcdeb5b) ) // Code 0000-7fff
|
||||
ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
|
||||
ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
|
||||
ROM_REGION( 0x04000, "chars", 0 )
|
||||
ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx2", 0 )
|
||||
ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
|
||||
ROM_REGION( 0x40000, "tiles", 0 )
|
||||
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( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
|
||||
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( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
|
||||
ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
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( "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( "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( "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_REGION( 0x40000, "sprites", 0 )
|
||||
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( "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( "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( "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_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
|
||||
ROM_REGION( 0x8000, "bgtiles", 0 )
|
||||
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
|
||||
|
||||
ROM_REGION( 0x0a00, "proms", 0 )
|
||||
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-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-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-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-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-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-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-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-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-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_END
|
||||
|
||||
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( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
|
||||
ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
|
||||
ROM_LOAD( "gs04.10n", 0x08000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) // Paged code
|
||||
ROM_LOAD( "gs05.12n", 0x10000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) // Paged code
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
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_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( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
|
||||
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( "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( "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
|
||||
@ -673,7 +926,7 @@ ROM_START( gunsmokeg )
|
||||
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_REGION( 0x8000, "gfx4", 0 ) // Background tilemaps
|
||||
ROM_REGION( 0x8000, "bgtiles", 0 )
|
||||
ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
|
||||
|
||||
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_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
/* 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
|
||||
// left in the comment after each set.
|
||||
|
||||
// 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, 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( 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)
|
||||
|
@ -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
|
@ -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
|
@ -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 | 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
|
||||
|
||||
______________________________________
|
||||
@ -93,124 +93,80 @@ E000-FFFF | R | D D D D D D D D | 8K ROM
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "video/bfm_adr2.h"
|
||||
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "machine/bfm_bd1.h" // vfd
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
|
||||
#ifdef MAME_DEBUG
|
||||
#define VERBOSE 1
|
||||
#else
|
||||
#define VERBOSE 0
|
||||
#endif
|
||||
// configurable logging
|
||||
#define LOG_CTRL (1U << 1)
|
||||
#define LOG_C001 (1U << 2)
|
||||
#define LOG_SERIAL (1U << 3)
|
||||
|
||||
#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 SL_ACCESS 0x01 // accessable Adder screen, 1=screen1 0=screen0
|
||||
#define LOGCTRL(...) LOGMASKED(LOG_CTRL, __VA_ARGS__)
|
||||
#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 !!!!
|
||||
//
|
||||
// characters are grouped by 64 (512 pixels)
|
||||
// there are max 128 of these groups
|
||||
|
||||
static GFXDECODE_START( gfx_adder2 )
|
||||
GFXDECODE_ENTRY( ":gfx1", 0, charlayout, 0, 16 )
|
||||
GFXDECODE_MEMBER( bfm_adder2_device::gfxinfo )
|
||||
GFXDECODE_DEVICE( "tiles", 0, gfx_8x8x4_packed_msb, 0, 16 )
|
||||
GFXDECODE_END
|
||||
|
||||
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 )
|
||||
: device_t(mconfig, BFM_ADDER2, tag, owner, clock)
|
||||
, device_gfx_interface(mconfig, *this, gfx_adder2, "palette")
|
||||
, m_cpu(*this, "adder2")
|
||||
, device_gfx_interface(mconfig, *this, gfxinfo, "palette")
|
||||
, 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 code, color, flags,x,y;
|
||||
|
||||
y = tile_index / 50;
|
||||
x = tile_index - (y*50);
|
||||
int y = tile_index / 50;
|
||||
int x = tile_index - (y * 50);
|
||||
|
||||
tile_index = y * 128 + (x * 2);
|
||||
|
||||
data = m_screen_ram[0][tile_index ]<<8;
|
||||
data |= m_screen_ram[0][tile_index + 1];
|
||||
short data = m_screen_ram[Which][tile_index] << 8;
|
||||
data |= m_screen_ram[Which][tile_index + 1];
|
||||
|
||||
code = data & 0x1FFF;
|
||||
color = 0;
|
||||
flags = ((data & 0x4000)?TILE_FLIPY:0) |
|
||||
((data & 0x2000)?TILE_FLIPX:0);
|
||||
int code = data & 0x1fff;
|
||||
int color = 0;
|
||||
int flags = ((data & 0x4000) ? TILE_FLIPY : 0) | ((data & 0x2000) ? TILE_FLIPX : 0);
|
||||
|
||||
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()
|
||||
{
|
||||
m_screen_page_reg = 0;
|
||||
m_c101 = 0;
|
||||
m_rx = 0;
|
||||
m_vbl_triggered = false;
|
||||
m_acia_triggered = false;
|
||||
m_data_from_sc2 = 0;
|
||||
m_data_to_sc2 = 0;
|
||||
m_screen_page_reg = 0;
|
||||
m_c101 = 0;
|
||||
m_vbl_triggered = false;
|
||||
m_acia_triggered = false;
|
||||
m_data_from_sc2 = 0;
|
||||
m_data_to_sc2 = 0;
|
||||
|
||||
{
|
||||
uint8_t *rom = machine().root_device().memregion("adder2")->base();
|
||||
|
||||
membank("bank2")->configure_entries(0, 4, &rom[0x00000], 0x08000);
|
||||
|
||||
membank("bank2")->set_entry(0&0x03);
|
||||
}
|
||||
m_rombank->configure_entries(0, 4, memregion("cpu")->base(), 0x08000);
|
||||
}
|
||||
|
||||
void bfm_adder2_device::device_start()
|
||||
@ -218,58 +174,52 @@ void bfm_adder2_device::device_start()
|
||||
if (!palette().device().started())
|
||||
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_c101));
|
||||
save_item(NAME(m_rx));
|
||||
save_item(NAME(m_vbl_triggered));
|
||||
save_item(NAME(m_acia_triggered));
|
||||
|
||||
save_item(NAME(m_data_from_sc2));
|
||||
save_item(NAME(m_data_to_sc2));
|
||||
|
||||
save_item(NAME(m_adder_ram));
|
||||
save_item(NAME(m_screen_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);
|
||||
|
||||
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(2,rgb_t(0x00,0xFF,0x00));
|
||||
palette().set_pen_color(3,rgb_t(0x00,0xFF,0xFF));
|
||||
palette().set_pen_color(4,rgb_t(0xFF,0x00,0x00));
|
||||
palette().set_pen_color(5,rgb_t(0xFF,0x00,0xFF));
|
||||
palette().set_pen_color(6,rgb_t(0xFF,0xFF,0x00));
|
||||
palette().set_pen_color(7,rgb_t(0xFF,0xFF,0xFF));
|
||||
palette().set_pen_color(8,rgb_t(0x80,0x80,0x80));
|
||||
palette().set_pen_color(9,rgb_t(0x00,0x00,0x80));
|
||||
palette().set_pen_color(10,rgb_t(0x00,0x80,0x00));
|
||||
palette().set_pen_color(11,rgb_t(0x00,0x80,0x80));
|
||||
palette().set_pen_color(12,rgb_t(0x80,0x00,0x00));
|
||||
palette().set_pen_color(13,rgb_t(0x80,0x00,0x80));
|
||||
palette().set_pen_color(14,rgb_t(0x80,0x80,0x00));
|
||||
palette().set_pen_color(15,rgb_t(0x80,0x80,0x80));
|
||||
palette().set_pen_color(0, rgb_t(0x00, 0x00, 0x00));
|
||||
palette().set_pen_color(1, rgb_t(0x00, 0x00, 0xff));
|
||||
palette().set_pen_color(2, rgb_t(0x00, 0xff, 0x00));
|
||||
palette().set_pen_color(3, rgb_t(0x00, 0xff, 0xff));
|
||||
palette().set_pen_color(4, rgb_t(0xff, 0x00, 0x00));
|
||||
palette().set_pen_color(5, rgb_t(0xff, 0x00, 0xff));
|
||||
palette().set_pen_color(6, rgb_t(0xff, 0xff, 0x00));
|
||||
palette().set_pen_color(7, rgb_t(0xff, 0xff, 0xff));
|
||||
palette().set_pen_color(8, rgb_t(0x80, 0x80, 0x80));
|
||||
palette().set_pen_color(9, rgb_t(0x00, 0x00, 0x80));
|
||||
palette().set_pen_color(10 ,rgb_t(0x00, 0x80, 0x00));
|
||||
palette().set_pen_color(11, rgb_t(0x00, 0x80, 0x80));
|
||||
palette().set_pen_color(12, rgb_t(0x80, 0x00, 0x00));
|
||||
palette().set_pen_color(13, rgb_t(0x80, 0x00, 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)
|
||||
m_tilemap1->draw(screen, bitmap, visible1, 0, 0);
|
||||
else
|
||||
m_tilemap0->draw(screen, bitmap, visible1, 0, 0);
|
||||
uint32_t bfm_adder2_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
const rectangle visible1(0, 400 - 1, 0, 280 - 1); //minx, maxx, miny, maxy
|
||||
|
||||
m_tilemap[BIT(m_screen_page_reg, 1)]->draw(screen, bitmap, visible1, 0, 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))
|
||||
{
|
||||
@ -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)
|
||||
{
|
||||
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 )
|
||||
{ // format xxxrrggb ////////////////////////////////////////////////////
|
||||
int pal;
|
||||
uint8_t r,g,b;
|
||||
if (offset > 102 && offset < 102 + 1 + 16)
|
||||
{ // format xxxrrggb
|
||||
int pal = offset - 102 - 1;
|
||||
|
||||
pal = offset-102-1;
|
||||
|
||||
r = ((data & 0x18)>>3) * 85; // 00011000b = 0x18
|
||||
g = ((data & 0x06)>>1) * 85; // 00000110b = 0x06
|
||||
b = ((data & 0x01) ) * 255;
|
||||
palette().set_pen_color(pal, rgb_t(r,g,b));
|
||||
uint8_t r = ((data & 0x18) >> 3) * 85; // 00011000b = 0x18
|
||||
uint8_t g = ((data & 0x06) >> 1) * 85; // 00000110b = 0x06
|
||||
uint8_t b = (data & 0x01) * 255;
|
||||
palette().set_pen_color(pal, rgb_t(r, g, b));
|
||||
}
|
||||
|
||||
if (m_screen_page_reg & SL_ACCESS)
|
||||
{
|
||||
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);
|
||||
}
|
||||
m_screen_ram[Which][offset] = data;
|
||||
m_tilemap[Which]->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;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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);
|
||||
LOGC001("c001 = %02X\n", data);
|
||||
|
||||
//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_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
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
uint8_t bfm_adder2_device::adder2_uart_ctrl_r()
|
||||
uint8_t bfm_adder2_device::uart_ctrl_r()
|
||||
{
|
||||
int status = 0;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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_sc2data = 0; // data
|
||||
m_data_to_sc2 = false; // data available for sc2 from adder
|
||||
m_adder2_data = 0; // data
|
||||
m_sc2data = 0; // data
|
||||
m_data_to_sc2 = false; // data available for sc2 from adder
|
||||
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;
|
||||
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;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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_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;
|
||||
|
||||
@ -429,86 +337,73 @@ uint8_t bfm_adder2_device::adder2_irq_r()
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void bfm_adder2_device::vid_uart_tx_w(uint8_t data)
|
||||
{
|
||||
m_data_from_sc2 = true; // set flag, data from scorpion2 board available
|
||||
m_sc2data = data; // store data
|
||||
m_data_from_sc2 = true; // set flag, data from scorpion2 board available
|
||||
m_sc2data = data; // store data
|
||||
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
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
|
||||
|
||||
//LOG_SERIAL(("radder: %02X(%c)\n",data, data ));
|
||||
LOGSERIAL("radder: %02X (%c)\n", data, data);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
uint8_t bfm_adder2_device::vid_uart_ctrl_r()
|
||||
{
|
||||
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
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// decode character data to a format which can be decoded by MAME //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
void bfm_adder2_device::adder2_decode_char_roms()
|
||||
void bfm_adder2_device::decode_char_roms() // decode character data to a format which can be decoded by MAME
|
||||
{
|
||||
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);
|
||||
|
||||
y = 0;
|
||||
int y = 0;
|
||||
|
||||
while ( y < 128 )
|
||||
while (y < 128)
|
||||
{
|
||||
x = 0;
|
||||
while ( x < 64 )
|
||||
int x = 0;
|
||||
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[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[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[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[7*256+0];*p++ = src[7*256+1];*p++ = src[7*256+2];*p++ = src[7*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[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[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[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];
|
||||
x++;
|
||||
}
|
||||
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, 0x7FFF).bankr("bank2"); // 8k paged ROM (4 pages)
|
||||
map(0x8000, 0x917F).rw(FUNC(bfm_adder2_device::screen_ram_r), FUNC(bfm_adder2_device::screen_ram_w));
|
||||
map(0x9180, 0x9FFF).rw(FUNC(bfm_adder2_device::normal_ram_r), FUNC(bfm_adder2_device::normal_ram_w));
|
||||
|
||||
map(0xC000, 0xC000).w(FUNC(bfm_adder2_device::adder2_rom_page_w)); // ROM page select
|
||||
map(0xC001, 0xC001).w(FUNC(bfm_adder2_device::adder2_c001_w)); // ??
|
||||
|
||||
map(0xC101, 0xC101).rw(FUNC(bfm_adder2_device::adder2_vbl_ctrl_r), FUNC(bfm_adder2_device::adder2_vbl_ctrl_w));
|
||||
map(0xC103, 0xC103).r(FUNC(bfm_adder2_device::adder2_irq_r)); // IRQ latch read
|
||||
|
||||
// MC6850 compatible uart connected to main (scorpion2) board ///////////////////////////////////////
|
||||
|
||||
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(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
|
||||
map(0x0000, 0x0000).w(FUNC(bfm_adder2_device::screen_page_w)); // screen access/display select
|
||||
map(0x0000, 0x7fff).bankr(m_rombank); // 8k paged ROM (4 pages)
|
||||
map(0x8000, 0x917f).view(m_screen_ram_view);
|
||||
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(0x9180, 0x9fff).ram();
|
||||
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::vbl_ctrl_r), FUNC(bfm_adder2_device::vbl_ctrl_w));
|
||||
map(0xc103, 0xc103).r(FUNC(bfm_adder2_device::irq_r));
|
||||
// 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(0xe000, 0xffff).rom().region("cpu", 0xe000);
|
||||
}
|
||||
|
||||
|
||||
@ -550,16 +439,16 @@ void bfm_adder2_device::adder2_memmap(address_map &map)
|
||||
|
||||
void bfm_adder2_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
M6809(config, m_cpu, ADDER_CLOCK/4); // adder2 board 6809 CPU at 2 Mhz
|
||||
m_cpu->set_addrmap(AS_PROGRAM, &bfm_adder2_device::adder2_memmap); // setup adder2 board memorymap
|
||||
M6809(config, m_cpu, 8_MHz_XTAL / 4); // 2 MHz
|
||||
m_cpu->set_addrmap(AS_PROGRAM, &bfm_adder2_device::prg_map);
|
||||
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
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_palette("palette");
|
||||
screen.set_screen_update(FUNC(bfm_adder2_device::update_screen));
|
||||
screen.screen_vblank().set(FUNC(bfm_adder2_device::adder2_vbl_w)); // board has a VBL IRQ
|
||||
screen.set_screen_update(FUNC(bfm_adder2_device::screen_update));
|
||||
screen.screen_vblank().set(FUNC(bfm_adder2_device::vbl_w));
|
||||
|
||||
PALETTE(config, "palette").set_entries(16);
|
||||
}
|
||||
|
@ -14,32 +14,11 @@ public:
|
||||
// construction/destruction
|
||||
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_ctrl_w(uint8_t data);
|
||||
uint8_t vid_uart_rx_r();
|
||||
uint8_t vid_uart_ctrl_r();
|
||||
|
||||
void adder2_decode_char_roms();
|
||||
|
||||
void adder2_memmap(address_map &map);
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
@ -47,28 +26,45 @@ protected:
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
|
||||
private:
|
||||
int m_screen_page_reg = 0; // access/display select
|
||||
int m_c101 = 0;
|
||||
int m_rx = 0;
|
||||
required_device<cpu_device> m_cpu;
|
||||
required_shared_ptr_array<uint8_t, 2> m_screen_ram; // paged display RAM
|
||||
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_acia_triggered = 0; // flag, ACIA receive IRQ
|
||||
|
||||
uint8_t m_adder_ram[0xE80]{}; // normal RAM
|
||||
uint8_t m_screen_ram[2][0x1180]{}; // paged display RAM
|
||||
|
||||
tilemap_t *m_tilemap0 = nullptr; // tilemap screen0
|
||||
tilemap_t *m_tilemap1 = nullptr; // tilemap screen1
|
||||
tilemap_t *m_tilemap[2]{};
|
||||
|
||||
bool m_data_from_sc2 = false;
|
||||
bool m_data_to_sc2 = false;
|
||||
|
||||
uint8_t m_adder2_data = 0;
|
||||
uint8_t m_data = 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);
|
||||
DECLARE_WRITE_LINE_MEMBER(adder2_vbl_w);
|
||||
template <uint8_t Which> void screen_ram_w(offs_t offset, uint8_t data);
|
||||
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
|
||||
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user