Merge remote-tracking branch 'refs/remotes/mamedev/master'

This commit is contained in:
Ariane Fugmann 2016-06-22 23:57:58 +02:00
commit 8c325ebe68
164 changed files with 5404 additions and 3233 deletions

View File

@ -12327,6 +12327,32 @@
</dataarea>
</part>
</software>
<software name="v_sharkt" supported="no">
<description>Game Boy Advance Video - Shark Tale (USA, Rev. 6)</description>
<year>2004?</year>
<publisher>Nintendo</publisher>
<info name="serial" value="AGB-MSAE-USA"/>
<part name="cart" interface="gba_cart">
<feature name="slot" value="gba_3dmatrix" />
<dataarea name="rom" size="67108864">
<rom name="sharkstale-msae.bin" size="67108864" crc="d2cf417a" sha1="9bc5b60793b8a6de3b80eb2c213cd125e1fa468e" offset="000000" />
</dataarea>
</part>
</software>
<software name="v_sharkta" cloneof="v_sharkt" supported="no">
<description>Game Boy Advance Video - Shark Tale (USA, Rev. 5)</description>
<year>2004?</year>
<publisher>Nintendo</publisher>
<info name="serial" value="AGB-MSAE-USA"/>
<part name="cart" interface="gba_cart">
<feature name="slot" value="gba_3dmatrix" />
<dataarea name="rom" size="67108864">
<rom name="shark tale (agb-msae-usa).bin" size="67108864" crc="01468820" sha1="6128a476edb10e6839ac5bd2697e83b9b7a9b234" offset="0" />
</dataarea>
</part>
</software>
<software name="v_shrek" supported="no">
<description>Game Boy Advance Video - Shrek (USA)</description>
@ -12353,29 +12379,16 @@
</dataarea>
</part>
</software>
<software name="v_sharkt" supported="no">
<description>Game Boy Advance Video - Shark Tale (USA, Rev. 6)</description>
<software name="v_2shrst" supported="no">
<description>Game Boy Advance Video - Shrek + Shark Tale (USA)</description>
<year>2004?</year>
<publisher>Nintendo</publisher>
<info name="serial" value="AGB-MSAE-USA"/>
<info name="serial" value="AGB-MSTE-USA"/>
<part name="cart" interface="gba_cart">
<feature name="slot" value="gba_3dmatrix" />
<dataarea name="rom" size="67108864">
<rom name="sharkstale-msae.bin" size="67108864" crc="d2cf417a" sha1="9bc5b60793b8a6de3b80eb2c213cd125e1fa468e" offset="000000" />
</dataarea>
</part>
</software>
<software name="v_sharkta" cloneof="v_sharkt" supported="no">
<description>Game Boy Advance Video - Shark Tale (USA, Rev. 5)</description>
<year>2004?</year>
<publisher>Nintendo</publisher>
<info name="serial" value="AGB-MSAE-USA"/>
<part name="cart" interface="gba_cart">
<feature name="slot" value="gba_3dmatrix" />
<dataarea name="rom" size="67108864">
<rom name="shark tale (agb-msae-usa).bin" size="67108864" crc="01468820" sha1="6128a476edb10e6839ac5bd2697e83b9b7a9b234" offset="0" />
<rom name="shrekshark21-mste.bin" size="67108864" crc="aadb3e3d" sha1="f23390b7a62c605fbce6730addc29d381488e076" offset="000000" />
</dataarea>
</part>
</software>

View File

@ -30407,10 +30407,10 @@ Notice that these are not working on real hardware due to bugged code with VDP i
</software>
<software name="yangji">
<description>Yang Jia Jiang - Yang Warrior Family (Chi)</description>
<description>Yi Men Ying Lie - Yang Jia Jiang (Chi)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="楊家將"/>
<info name="alt_title" value="一門英烈 楊家將"/>
<part name="cart" interface="megadriv_cart">
<dataarea name="rom" width="16" endianness="big" size="2097152">
<rom name="yang jia jiang - yang warrior family (chi) (unl).bin" size="2097152" crc="6604a79e" sha1="6fcc3102fc22b42049e6eae9a1c30c8a7f022d14" offset="0x000000"/>
@ -30571,7 +30571,7 @@ Notice that these are not working on real hardware due to bugged code with VDP i
<description>Zhuo Gui Da Shi - Ghost Hunter (Chi)</description>
<year>1994</year>
<publisher>Senchi Technology</publisher>
<info name="alt_title" value="Zool - Ninja of the &quot;Nth&quot; Dimension (Box)"/>
<info name="alt_title" value="抓鬼大師"/>
<part name="cart" interface="megadriv_cart">
<dataarea name="rom" width="16" endianness="big" size="524288">
<rom name="zhuo gui da shi - ghost hunter (chi) (unl).bin" size="524288" crc="76c62a8b" sha1="3424892e913c20754d2e340c6e79476a9eb6761b" offset="0x000000"/>
@ -30800,9 +30800,10 @@ Notice that these are not working on real hardware due to bugged code with VDP i
</software>
<software name="chinf3">
<description>Chinese Fighter III (Chi)</description>
<description>Tenchi wo Kurau III - Sanguo Wai Chuan - Chinese Fighter (Chi)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="天地を喰らうⅢ三国外伝"/>
<part name="cart" interface="megadriv_cart">
<feature name="slot" value="rom_chinf3"/>
<dataarea name="rom" width="16" endianness="big" size="2097152">
@ -31288,9 +31289,10 @@ Notice that these are not working on real hardware due to bugged code with VDP i
<!-- Are these unprotected versions legit? or were they hacked to work with emus? -->
<software name="chinf3a" cloneof="chinf3">
<description>Chinese Fighter III (Chi, Unprotected?)</description>
<description>Tenchi wo Kurau III - Sanguo Wai Chuan - Chinese Fighter (Chi, Unprotected?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="天地を喰らうⅢ三国外伝"/>
<part name="cart" interface="megadriv_cart">
<dataarea name="rom" width="16" endianness="big" size="2097152">
<rom name="chinese fighter iii (unl, alt).bin" size="2097152" crc="6f98247d" sha1="cc212b1564dc7c73ffdc55f9fde3269a83fee399" offset="0x000000"/>

View File

@ -4,7 +4,7 @@
<!-- redump.org US PS1 discs (1719 of 1719), based on 'Sony - PlayStation (20160515 00-54-32).dat'
These CHDs have been converted from redump.org disc images.
These CHDs have been converted from redump.org disc images.
(Madden NFL 96 (USA) (Beta))*
(Twisted Metal 2 (USA) (Beta))*
@ -22698,18 +22698,20 @@ Furthermore, for an overview of US PS1 discs that have not been dumped and added
<info name="serial" value="SLUS-00423, SLUS-00584"/>
<sharedfeat name="compatibility" value="NTSC-U"/>
<part name="cdrom1" interface="psx_cdrom">
<feature name="part_id" value="Super Street Fighter II &amp; Super Street Fighter II Turbo"/>
<diskarea name="cdrom">
<disk name="street fighter collection (usa) (disc 1) (v1.1)" sha1="9eaab12a032b7e9d6a05f342752f1de8fe4d27b3"/>
</diskarea>
</part>
<part name="cdrom2" interface="psx_cdrom">
<feature name="part_id" value="Super Street Fighter Alpha 2 Gold"/>
<diskarea name="cdrom">
<disk name="street fighter collection (usa) (disc 2) (v1.1)" sha1="b42293238b6b2dd5ebc9dc990bdc08ab6e6ec8c4"/>
</diskarea>
</part>
</software>
<software name="sfcolla" cloneof="sfcoll"> <!-- Tracks 01 & 72 differ from v1.1! -->
<software name="sfcolla" cloneof="sfcoll"> <!-- Tracks 01 & 72 differ from v1.1! -->
<!-- Original images (Redump)
<rom name="street fighter collection (usa) (disc 1) (v1.0).cue" size="10211" crc="2be12124" sha1="6b70efeade397d03ffe0482da1a109385887832f" />
<rom name="street fighter collection (usa) (disc 1) (v1.0) (track 01).bin" size="54705168" crc="b366deb0" sha1="da079bc675c21502e43ef5599df5a7984b499f47" />
@ -22795,11 +22797,13 @@ Furthermore, for an overview of US PS1 discs that have not been dumped and added
<info name="serial" value="SLUS-00423, SLUS-00584"/>
<sharedfeat name="compatibility" value="NTSC-U"/>
<part name="cdrom1" interface="psx_cdrom">
<feature name="part_id" value="Super Street Fighter II &amp; Super Street Fighter II Turbo"/>
<diskarea name="cdrom">
<disk name="street fighter collection (usa) (disc 1) (v1.0)" sha1="52532f13a35f9077b7e02d53f3feeb843727bd1e"/>
</diskarea>
</part>
<part name="cdrom2" interface="psx_cdrom">
<feature name="part_id" value="Super Street Fighter Alpha 2 Gold"/>
<diskarea name="cdrom">
<disk name="street fighter collection (usa) (disc 2) (v1.0)" sha1="273e82b4b9615803ba62babc5825639f1614bea6"/>
</diskarea>
@ -35747,100 +35751,140 @@ TODO: Check if these match the corresponding redump dumps.
-->
<software name="intcdv1m">
<description>Interactive CD Sampler Disc - Volume 01 (M Rated)</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 1.bin" size="690918816" crc="78449608" sha1="65b45f282b1762590440fbaabac75809a6cbef63"/>
<rom name="interactive cd sampler volume 1.cue" size="1759" crc="451bdd86" sha1="2b28ae23bb2c85d3edf4fa38ac17dbc6c13f8481"/>
-->
<description>Interactive CD Sampler Disc - Volume 01 (USA, M Rated)</description>
<year>1995</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 1 (M Rated)" sha1="de4924cbd635e0a11b33c03e6560e28790b09257"/>
<disk name="interactive cd sampler disc - volume 1 (m rated)" sha1="de4924cbd635e0a11b33c03e6560e28790b09257"/>
</diskarea>
</part>
</software>
<software name="intcdv4">
<description>Interactive CD Sampler Disc - Volume 04</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 4.bin" size="692118336" crc="a86f1ae5" sha1="3d66101541737d5167f6604b5709181317acbfb8"/>
<rom name="interactive cd sampler volume 4.cue" size="223" crc="d6b84c58" sha1="e2c383fc8b5c26ee92619d1adac760af0e48e634"/>
-->
<description>Interactive CD Sampler Disc - Volume 04 (USA)</description>
<year>1997</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 4" sha1="c558a684a28ccf6afe0d3fc166814539c75863f7"/>
<disk name="interactive cd sampler disc - volume 4" sha1="c558a684a28ccf6afe0d3fc166814539c75863f7"/>
</diskarea>
</part>
</software>
<software name="intcdv5">
<description>Interactive CD Sampler Disc - Volume 05</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 5 (pbpx-95003).bin" size="508638816" crc="b5c82748" sha1="1f194024c3d9c772ed5a1e9dbdf5ff409c806fbb"/>
<rom name="interactive cd sampler volume 5 (pbpx-95003).cue" size="428" crc="1cd96880" sha1="75e7d01603849b1cf1d57d37b5600a9bce1d03f4"/>
-->
<description>Interactive CD Sampler Disc - Volume 05 (USA)</description>
<year>1997</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="PBPX-95003"/>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 5" sha1="f1ce1f4a942af852ee67f98c7d2a3c148d835abb"/>
<disk name="interactive cd sampler disc - volume 5" sha1="f1ce1f4a942af852ee67f98c7d2a3c148d835abb"/>
</diskarea>
</part>
</software>
<software name="intcdv6">
<description>Interactive CD Sampler Disc - Volume 06</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 6 (pbpx-95004).bin" size="640614240" crc="db7b1f0f" sha1="2d25bce6b5d7218aa6dceff58badf26ccf5aeb39"/>
<rom name="interactive cd sampler volume 6 (pbpx-95004).cue" size="300" crc="1184abe8" sha1="194b4412dfcb2a4088a62c516616a1609512d14a"/>
-->
<description>Interactive CD Sampler Disc - Volume 06 (USA)</description>
<year>1998</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="PBPX-95004"/>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 6" sha1="78f9e8b125f440e626d1ccc1f3a5a5f5a3a1cb11"/>
<disk name="interactive cd sampler disc - volume 6" sha1="78f9e8b125f440e626d1ccc1f3a5a5f5a3a1cb11"/>
</diskarea>
</part>
</software>
<software name="intcdv7">
<description>Interactive CD Sampler Disc - Volume 07</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 7.bin" size="733160736" crc="ce24e9a1" sha1="7c549f0187da1c1f870973da8492d4d237070326"/>
<rom name="interactive cd sampler volume 7.cue" size="415" crc="69fba598" sha1="7eb50623c569f453e83b413a7988d95e55a8c58c"/>
-->
<description>Interactive CD Sampler Disc - Volume 07 (USA)</description>
<year>1998</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 7" sha1="73e8215a98da98d9f2d1468c62354b46af77fa56"/>
<disk name="interactive cd sampler disc - volume 7" sha1="73e8215a98da98d9f2d1468c62354b46af77fa56"/>
</diskarea>
</part>
</software>
<software name="intcdv8">
<description>Interactive CD Sampler Disc - Volume 08</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 8.bin" size="725135712" crc="ef9b3cee" sha1="d465f074dfb8344d55f4da2a4b5358981d5b6541"/>
<rom name="interactive cd sampler volume 8.cue" size="287" crc="e40136d8" sha1="8bea452b452528c2b429ec5cdc8de20da26e4611"/>
-->
<description>Interactive CD Sampler Disc - Volume 08 (USA)</description>
<year>1998</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 8" sha1="8145f022b1f44d2ed7140386acf5b293834fc6c8"/>
<disk name="interactive cd sampler disc - volume 8" sha1="8145f022b1f44d2ed7140386acf5b293834fc6c8"/>
</diskarea>
</part>
</software>
<software name="intcdv9">
<description>Interactive CD Sampler Disc - Volume 09</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 9.bin" size="732615072" crc="473314a1" sha1="ab797ae8e3d6fd0b477c70b609211944be477bb1"/>
<rom name="interactive cd sampler volume 9.cue" size="351" crc="dad567a7" sha1="995ec02b8abea297e6822b1ee1619b7e779800af"/>
-->
<description>Interactive CD Sampler Disc - Volume 09 (USA)</description>
<year>1998</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 9" sha1="4b504a4ce093c255b40f4cc2cf3fb59b4216f501"/>
<disk name="interactive cd sampler disc - volume 9" sha1="4b504a4ce093c255b40f4cc2cf3fb59b4216f501"/>
</diskarea>
</part>
</software>
<software name="intcdv10">
<description>Interactive CD Sampler Disc - Volume 10</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 10 [pbpx-95011].bin" size="736747536" crc="2af7ed86" sha1="6839c7bb06ab0765a2aef7e67be5a2fbba52d62d"/>
<rom name="interactive cd sampler volume 10 [pbpx-95011].cue" size="429" crc="65f15b6e" sha1="91e2d2d576c488d17e125bf554e7207453f4eb4b"/>
-->
<description>Interactive CD Sampler Disc - Volume 10 (USA)</description>
<year>1999</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="PBPX-95011"/>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 10" sha1="960319d09f9ca10663f06068a2ff134f343d22ad"/>
<disk name="interactive cd sampler disc - volume 10" sha1="960319d09f9ca10663f06068a2ff134f343d22ad"/>
</diskarea>
</part>
</software>
<software name="intcdv11">
<description>Interactive CD Sampler Disc - Volume 11</description>
<!-- Unknown source
<rom name="interactive cd sampler volume 11 [scus-94463].bin" size="504059472" crc="0be789aa" sha1="0a0b125094f344d5552a840485021a2beda58aad"/>
<rom name="interactive cd sampler volume 11 [scus-94463].cue" size="301" crc="9948530c" sha1="95c782d5dca37dfd43b8c754e3a6903f2e665860"/>
-->
<description>Interactive CD Sampler Disc - Volume 11 (USA)</description>
<year>1999</year>
<publisher>SCEA</publisher>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94463"/>
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="Interactive CD Sampler Disc - Volume 11" sha1="0506aa051708f32f8470a19b7d6c8538ecedecc1"/>
<disk name="interactive cd sampler disc - volume 11" sha1="0506aa051708f32f8470a19b7d6c8538ecedecc1"/>
</diskarea>
</part>
</software>
@ -55879,6 +55923,10 @@ TODO: Check if these match the corresponding redump dumps.
<!-- corrupt text -->
<software name="firebugs" supported="partial">
<!-- Unknown source
<rom name="Firebugs (E).bin" size="608048448" crc="82b8ccd3" sha1="52bec5d0fa3bc954f4168806838a6723bcce265d"/>
<rom name="Firebugs (E).cue" size="908" crc="f17332da" sha1="e0f9f781a3c5e19a33dc25fc9b9c7529eab87031"/>
-->
<description>Firebugs (Euro)</description>
<year>2002</year>
<publisher>Sony</publisher>
@ -55893,6 +55941,10 @@ TODO: Check if these match the corresponding redump dumps.
<!-- boot ok -->
<software name="terracon" supported="yes">
<!-- Unknown source
<rom name="Terracon_PAL.bin" size="622536768" crc="4ceb0a37" sha1="40f1dfc3cc8c47f3288283907c231c43c2fbe940"/>
<rom name="Terracon_PAL.cue" size="1187" crc="3b2098b7" sha1="7f9780eeeedc8eac693b2c18c5a6e58202bc97b3"/>
-->
<description>Terracon (Euro)</description>
<year>2000</year>
<publisher>Sony</publisher>
@ -55954,8 +56006,8 @@ A few comments on these:
<software name="bublbob2" >
<!-- Original images
<rom name="bb2.bin" size="62620864" crc="1c2c9f63" sha1=""/>
<rom name="bb2.cue" size="69" crc="096e5077" sha1=""/>
<rom name="bb2.bin" size="62620864" crc="1c2c9f63" sha1="2d9cf9e34057c93fe1d40940428c463a7224444e"/>
<rom name="bb2.cue" size="69" crc="096e5077" sha1="a56c5425f32b5ead296ecd4d3b1ac909d8144972"/>
-->
<description>Bubble Bobble II (Prototype)</description>
<year>1995</year>
@ -56464,7 +56516,7 @@ A few comments on these:
-->
<description>Torc - Legend of the Ogre Crown (Prototype)</description>
<year>19??</year>
<publisher>Head Games</publisher> <!-- Head Games were actually the developer, but I was unable to dig any info about actual publishing deals -->
<publisher>Head Games</publisher> <!-- Head Games were actually the developer, but I was unable to dig any info about actual publishing deals -->
<part name="cdrom" interface="psx_cdrom">
<diskarea name="cdrom">
<disk name="torc - legend of the ogre crown (prototype)" sha1="0c27726e8957a2054c9c4fe38b8859ef4c4929c9" />

View File

@ -176,9 +176,9 @@ float GetRoundCornerFactor(float2 coord, float2 bounds, float radiusAmount, floa
smoothAmount = min(smoothAmount, radiusAmount);
float range = min(bounds.x, bounds.y);
float amountMinimum = range > 0.0f ? 1.0f / range : 0.0f;
float amountMinimum = 1.0f / range;
float radius = range * max(radiusAmount, amountMinimum);
float smooth = 1.0f / (range * max(smoothAmount, amountMinimum * 3.0f));
float smooth = 1.0f / (range * max(smoothAmount, amountMinimum * 2.0f));
// compute box
float box = roundBox(bounds * (coord * 2.0f), bounds, radius);

View File

@ -67,7 +67,7 @@ struct PS_INPUT
//-----------------------------------------------------------------------------
static const float PI = 3.1415927f;
static const float PHI = 1.618034f;
static const float HalfPI = PI * 0.5f;
//-----------------------------------------------------------------------------
// Scanline & Shadowmask Vertex Shader
@ -259,7 +259,7 @@ float4 ps_main(PS_INPUT Input) : COLOR
ScanlineCoord *= SourceDims.y * ScanlineScale * PI;
float ScanlineCoordJitter = ScanlineOffset * PHI;
float ScanlineCoordJitter = ScanlineOffset * HalfPI;
float ScanlineSine = sin(ScanlineCoord + ScanlineCoordJitter);
float ScanlineWide = ScanlineHeight + ScanlineVariation * max(1.0f, ScanlineHeight) * (1.0f - ColorBrightness);
float ScanlineAmount = pow(ScanlineSine * ScanlineSine, ScanlineWide);

View File

@ -82,9 +82,9 @@ float GetRoundCornerFactor(float2 coord, float2 bounds, float radiusAmount, floa
smoothAmount = min(smoothAmount, radiusAmount);
float range = min(bounds.x, bounds.y);
float amountMinimum = range > 0.0f ? 1.0f / range : 0.0f;
float amountMinimum = 1.0f / range;
float radius = range * max(radiusAmount, amountMinimum);
float smooth = 1.0f / (range * max(smoothAmount, amountMinimum * 3.0f));
float smooth = 1.0f / (range * max(smoothAmount, amountMinimum * 2.0f));
// compute box
float box = roundBox(bounds * (coord * 2.0f), bounds, radius);

View File

@ -329,7 +329,7 @@ function cheat.startplugin()
index = index - #cheats
if index == 2 then
for num, cheat in pairs(cheats) do
if cheat.script and cheat.script.off then
if cheat.enabled and cheat.script.off then
cheat.script.off()
end
cheat.enabled = false
@ -340,7 +340,7 @@ function cheat.startplugin()
end
elseif index == 3 then
for num, cheat in pairs(cheats) do
if cheat.script and cheat.script.off then
if cheat.enabled and cheat.script.off then
cheat.script.off()
end
end

View File

@ -40,6 +40,15 @@ function cheatfind.startplugin()
return ram
end
-- return table of share regions
function cheat.getshares()
local shares = {}
for tag, share in pairs(manager:machine():memory().shares) do
shares[tag] = share
end
return shares
end
-- save data block
function cheat.save(space, start, size)
local data = { block = "", start = start, size = size, space = space }
@ -274,6 +283,10 @@ function cheatfind.startplugin()
for tag, ram in pairs(space_table) do
devtable[#devtable + 1] = { tag = tag, space = ram.dev, ram = {{ offset = 0, size = ram.size }} }
end
space_table = cheat.getshares()
for tag, share in pairs(space_table) do
devtable[#devtable + 1] = { tag = tag, space = share, ram = {{ offset = 0, size = share.size }} }
end
end
emu.register_start(start)

View File

@ -2378,6 +2378,7 @@ end
if (CPUS["MB86901"]~=null) then
files {
MAME_DIR .. "src/devices/cpu/sparc/mb86901.cpp",
MAME_DIR .. "src/devices/cpu/sparc/sparcdasm.h",
MAME_DIR .. "src/devices/cpu/sparc/sparcdefs.h",
MAME_DIR .. "src/devices/cpu/sparc/sparc.h",
}

View File

@ -165,6 +165,7 @@ links {
includedirs {
MAME_DIR .. "src/osd",
MAME_DIR .. "src/devices",
MAME_DIR .. "src/emu",
MAME_DIR .. "src/lib/util",
MAME_DIR .. "3rdparty",
@ -779,7 +780,7 @@ if _OPTIONS["targetos"] == "macosx" then
MAME_DIR .. "src/tools/aueffectutil.mm",
}
configuration { }
configuration { }
strip()
end

View File

@ -3269,8 +3269,10 @@ files {
MAME_DIR .. "src/mame/includes/raiden2.h",
MAME_DIR .. "src/mame/machine/r2crypt.cpp",
MAME_DIR .. "src/mame/machine/r2crypt.h",
MAME_DIR .. "src/mame/machine/raiden2cop.cpp",
MAME_DIR .. "src/mame/machine/raiden2cop.h",
MAME_DIR .. "src/mame/machine/seibucop/seibucop.cpp",
MAME_DIR .. "src/mame/machine/seibucop/seibucop_dma.hxx",
MAME_DIR .. "src/mame/machine/seibucop/seibucop_cmd.hxx",
MAME_DIR .. "src/mame/machine/seibucop/seibucop.h",
MAME_DIR .. "src/mame/drivers/r2dx_v33.cpp",
MAME_DIR .. "src/mame/drivers/seibuspi.cpp",
MAME_DIR .. "src/mame/includes/seibuspi.h",

View File

@ -81,9 +81,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( newbrain_fdc_io, AS_IO, 8, newbrain_fdc_t )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xd1)
AM_RANGE(0x00, 0x01) AM_MIRROR(0x1e) AM_DEVICE(UPD765_TAG, upd765a_device, map)
AM_RANGE(0x20, 0x20) AM_MIRROR(0x1f) AM_WRITE(fdc_auxiliary_w)
AM_RANGE(0x40, 0x40) AM_MIRROR(0x1f) AM_READ(fdc_control_r)
AM_RANGE(0x00, 0x01) AM_MIRROR(0x10) AM_DEVICE(UPD765_TAG, upd765a_device, map)
AM_RANGE(0x20, 0x20) AM_MIRROR(0x11) AM_WRITE(fdc_auxiliary_w)
AM_RANGE(0x40, 0x40) AM_MIRROR(0x11) AM_READ(fdc_control_r)
ADDRESS_MAP_END

View File

@ -52,9 +52,16 @@ const device_type V35 = &device_creator<v35_device>;
v25_common_device::v25_common_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, bool is_16bit, offs_t fetch_xor, UINT8 prefetch_size, UINT8 prefetch_cycles, UINT32 chip_type)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
, m_program_config("program", ENDIANNESS_LITTLE, is_16bit ? 16 : 8, 20, 0)
, m_io_config("io", ENDIANNESS_LITTLE, is_16bit ? 16 : 8, 16+1, 0)
, m_io_config("io", ENDIANNESS_LITTLE, is_16bit ? 16 : 8, 16, 0)
, m_fetch_xor(fetch_xor)
, m_PCK(8)
, m_pt_in(*this)
, m_p0_in(*this)
, m_p1_in(*this)
, m_p2_in(*this)
, m_p0_out(*this)
, m_p1_out(*this)
, m_p2_out(*this)
, m_prefetch_size(prefetch_size)
, m_prefetch_cycles(prefetch_cycles)
, m_chip_type(chip_type)
@ -501,6 +508,15 @@ void v25_common_device::device_start()
m_direct = &m_program->direct();
m_io = &space(AS_IO);
m_pt_in.resolve_safe(0xff);
m_p0_in.resolve_safe(0xff);
m_p1_in.resolve_safe(0xff);
m_p2_in.resolve_safe(0xff);
m_p0_out.resolve_safe();
m_p1_out.resolve_safe();
m_p2_out.resolve_safe();
state_add( V25_PC, "PC", m_debugger_temp).callimport().callexport().formatstr("%05X");
state_add( V25_IP, "IP", m_ip).formatstr("%04X");
state_add( V25_SP, "SP", m_debugger_temp).callimport().callexport().formatstr("%04X");

View File

@ -10,11 +10,6 @@
#define NEC_INPUT_LINE_INTP2 12
#define NEC_INPUT_LINE_POLL 20
#define V25_PORT_P0 0x10000
#define V25_PORT_P1 0x10002
#define V25_PORT_P2 0x10004
#define V25_PORT_PT 0x10006
enum
{
V25_PC=0,
@ -28,6 +23,28 @@ enum
v25_common_device::set_decryption_table(*device, _table);
#define MCFG_V25_PORT_PT_READ_CB(_devcb) \
devcb = &v25_common_device::set_pt_in_cb(*device, DEVCB_##_devcb);
#define MCFG_V25_PORT_P0_READ_CB(_devcb) \
devcb = &v25_common_device::set_p0_in_cb(*device, DEVCB_##_devcb);
#define MCFG_V25_PORT_P1_READ_CB(_devcb) \
devcb = &v25_common_device::set_p1_in_cb(*device, DEVCB_##_devcb);
#define MCFG_V25_PORT_P2_READ_CB(_devcb) \
devcb = &v25_common_device::set_p2_in_cb(*device, DEVCB_##_devcb);
#define MCFG_V25_PORT_P0_WRITE_CB(_devcb) \
devcb = &v25_common_device::set_p0_out_cb(*device, DEVCB_##_devcb);
#define MCFG_V25_PORT_P1_WRITE_CB(_devcb) \
devcb = &v25_common_device::set_p1_out_cb(*device, DEVCB_##_devcb);
#define MCFG_V25_PORT_P2_WRITE_CB(_devcb) \
devcb = &v25_common_device::set_p2_out_cb(*device, DEVCB_##_devcb);
class v25_common_device : public cpu_device
{
public:
@ -36,6 +53,15 @@ public:
// static configuration helpers
static void set_decryption_table(device_t &device, const UINT8 *decryption_table) { downcast<v25_common_device &>(device).m_v25v35_decryptiontable = decryption_table; }
template<class _Object> static devcb_base & set_pt_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_pt_in.set_callback(object); }
template<class _Object> static devcb_base & set_p0_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p0_in.set_callback(object); }
template<class _Object> static devcb_base & set_p1_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p1_in.set_callback(object); }
template<class _Object> static devcb_base & set_p2_in_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p2_in.set_callback(object); }
template<class _Object> static devcb_base & set_p0_out_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p0_out.set_callback(object); }
template<class _Object> static devcb_base & set_p1_out_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p1_out.set_callback(object); }
template<class _Object> static devcb_base & set_p2_out_cb(device_t &device, _Object object) { return downcast<v25_common_device &>(device).m_p2_out.set_callback(object); }
TIMER_CALLBACK_MEMBER(v25_timer_callback);
@ -118,6 +144,16 @@ union internalram
address_space *m_io;
int m_icount;
/* callbacks */
devcb_read8 m_pt_in;
devcb_read8 m_p0_in;
devcb_read8 m_p1_in;
devcb_read8 m_p2_in;
devcb_write8 m_p0_out;
devcb_write8 m_p1_out;
devcb_write8 m_p2_out;
UINT8 m_prefetch_size;
UINT8 m_prefetch_cycles;
INT8 m_prefetch_count;

View File

@ -25,21 +25,21 @@ UINT8 v25_common_device::read_sfr(unsigned o)
switch(o)
{
case 0x00: /* P0 */
ret = m_io->read_byte(V25_PORT_P0);
ret = m_p0_in();
break;
case 0x08: /* P1 */
/* P1 is combined with the interrupt lines */
ret = ((m_io->read_byte(V25_PORT_P1) & 0xF0)
ret = ((m_p1_in() & 0xF0)
| (m_nmi_state ? 0x00 : 0x01)
| (m_intp_state[0] ? 0x00 : 0x02)
| (m_intp_state[1] ? 0x00 : 0x04)
| (m_intp_state[2] ? 0x00 : 0x08));
break;
case 0x10: /* P2 */
ret = m_io->read_byte(V25_PORT_P2);
ret = m_p2_in();
break;
case 0x38: /* PT */
ret = m_io->read_byte(V25_PORT_PT);
ret = m_pt_in();
break;
case 0x4C: /* EXIC0 */
ret = read_irqcontrol(INTP0, m_priority_intp);
@ -169,14 +169,14 @@ void v25_common_device::write_sfr(unsigned o, UINT8 d)
switch(o)
{
case 0x00: /* P0 */
m_io->write_byte(V25_PORT_P0, d);
m_p0_out(d);
break;
case 0x08: /* P1 */
/* only the upper four bits of P1 can be used as output */
m_io->write_byte(V25_PORT_P1, d & 0xF0);
m_p1_out(d & 0xF0);
break;
case 0x10: /* P2 */
m_io->write_byte(V25_PORT_P2, d);
m_p2_out(d);
break;
case 0x4C: /* EXIC0 */
write_irqcontrol(INTP0, d);

View File

@ -24,8 +24,6 @@
#define SPARCV8 (0)
CPU_DISASSEMBLE( sparc );
const device_type MB86901 = &device_creator<mb86901_device>;
const int mb86901_device::WINDOW_COUNT = 7;
@ -37,6 +35,7 @@ const int mb86901_device::WINDOW_COUNT = 7;
mb86901_device::mb86901_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: cpu_device(mconfig, MB86901, "Fujitsu MB86901", tag, owner, clock, "mb86901", __FILE__)
, m_program_config("program", ENDIANNESS_BIG, 32, 32)
, m_dasm(7)
{
}
@ -166,7 +165,7 @@ void mb86901_device::device_stop()
void mb86901_device::device_reset()
{
m_queued_tt = 0;
m_queued_priority = 0;
m_queued_priority = SPARC_NO_TRAP;
m_asi = 0;
MAE = false;
HOLD_BUS = false;
@ -351,8 +350,8 @@ UINT32 mb86901_device::disasm_max_opcode_bytes() const
offs_t mb86901_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
{
extern CPU_DISASSEMBLE( sparc );
return CPU_DISASSEMBLE_NAME(sparc)(this, buffer, pc, oprom, opram, options);
UINT32 op = *reinterpret_cast<const UINT32 *>(oprom);
return m_dasm.dasm(buffer, pc, BIG_ENDIANIZE_INT32(op));
}
@ -551,7 +550,7 @@ bool mb86901_device::execute_group2(UINT32 op)
{
UINT32 result = arg1 - arg2;
TEST_ICC_NZ(result);
if ((arg1 & 0x80000000) == (arg2 & 0x80000000) && (arg2 & 0x80000000) != (result & 0x80000000))
if ((arg1 & 0x80000000) != (arg2 & 0x80000000) && (arg2 & 0x80000000) != (result & 0x80000000))
SET_ICC_V_FLAG;
if (result > arg1)
SET_ICC_C_FLAG;
@ -613,10 +612,10 @@ bool mb86901_device::execute_group2(UINT32 op)
case 28: // subxcc
{
UINT32 c = (ICC_C_SET ? 1 : 0);
UINT32 argt = arg2 - c;
UINT32 argt = arg2 + c;
UINT32 result = arg1 - argt;
TEST_ICC_NZ(result);
if (((arg1 & 0x80000000) == (argt & 0x80000000) && (arg1 & 0x80000000) != (result & 0x80000000)) || (c != 0 && arg2 == 0x80000000))
if (((arg1 & 0x80000000) != (argt & 0x80000000) && (arg1 & 0x80000000) != (result & 0x80000000)) || (c != 0 && arg2 == 0x80000000))
SET_ICC_V_FLAG;
if (result > arg1 || (result == arg1 && arg2 != 0))
SET_ICC_C_FLAG;
@ -877,6 +876,7 @@ bool mb86901_device::execute_group2(UINT32 op)
else
{
m_tbr = (arg1 ^ arg2) & 0xfffff000;
printf("wr (%08x ^ %08x) & 0xfffff000 (%08x),tbr", arg1, arg2, m_tbr);
}
break;
case 52: // FPop1
@ -1111,7 +1111,7 @@ void mb86901_device::execute_group3(UINT32 op)
write_word(m_data_asi, ADDRESS, RDREG);
if (MAE || HOLD_BUS)
break;
write_word(m_data_asi, ADDRESS, REG(RD+1));
write_word(m_data_asi, ADDRESS+4, REG(RD+1));
break;
case 9: // ldsb
{
@ -1352,6 +1352,7 @@ bool mb86901_device::execute_ticc(UINT32 op)
{
bool trap_taken = evaluate_condition(op);
printf("ticc @ %x\n", PC);
if (trap_taken)
{
UINT32 arg2 = USEIMM ? SIMM7 : RS2REG;
@ -1410,11 +1411,8 @@ void mb86901_device::trap(UINT8 type, UINT8 tt_override)
bool mb86901_device::invoke_queued_traps()
{
if (m_queued_priority > 0)
if (m_queued_priority != SPARC_NO_TRAP)
{
m_queued_priority = 0;
m_queued_tt = 0;
m_et = false;
m_ps = m_s;
m_s = true;
@ -1430,6 +1428,9 @@ bool mb86901_device::invoke_queued_traps()
PC = m_tbr;
nPC = m_tbr + 4;
m_queued_priority = SPARC_NO_TRAP;
m_queued_tt = 0;
return true;
}
@ -1472,6 +1473,7 @@ void mb86901_device::execute_run()
switch (OP2)
{
case 0: // unimp
printf("unimp @ %x\n", PC);
break;
case 2: // branch on integer condition codes
update_npc = execute_bicc(op);
@ -1480,12 +1482,14 @@ void mb86901_device::execute_run()
SET_RDREG(IMM22);
break;
case 6: // branch on floating-point condition codes
printf("fbfcc @ %x\n", PC);
break;
#if SPARCV8
case 7: // branch on coprocessor condition codes, SPARCv8
break;
#endif
default:
printf("unknown %08x @ %x\n", op, PC);
break;
}
break;

View File

@ -4,11 +4,14 @@
SPARC v7 emulator
*/
#pragma once
#ifndef __SPARC_H__
#define __SPARC_H__
#pragma once
#include "sparcdasm.h"
#define SPARC_NO_TRAP 256
#define SPARC_RESET 0
#define SPARC_INSTRUCTION_ACCESS_EXCEPTION 1
#define SPARC_ILLEGAL_INSTRUCTION 2
@ -37,6 +40,10 @@
#define SPARC_INT15 31
#define SPARC_TRAP_INSTRUCTION 128
// TODO: when there are more SPARC CPUs, move setter to a base class
#define MCFG_SPARC_ADD_ASI_DESC(desc) \
mb86901_device::add_asi_desc(*device, desc);
class mb86901_device : public cpu_device
{
public:
@ -73,7 +80,11 @@ public:
void hold_bus() { m_hold_bus = true; }
void release_bus() { m_hold_bus = false; }
template<typename T> static void add_asi_desc(device_t &device, const T &desc) { return downcast<mb86901_device &>(device).add_asi_desc(desc); }
protected:
template<typename T> void add_asi_desc(const T &desc) { m_dasm.add_asi_desc(desc); }
bool invoke_queued_traps();
bool check_main_traps(UINT32 op, bool privileged, UINT32 alignment, UINT8 registeralign, bool noimmediate);
@ -132,15 +143,16 @@ protected:
UINT8 m_asi;
// other internal states
UINT8 m_trap_priorities[256];
UINT8 m_queued_tt;
UINT8 m_queued_priority;
UINT32 m_trap_priorities[256];
UINT32 m_queued_tt;
UINT32 m_queued_priority;
bool m_mae;
bool m_hold_bus;
int m_icount;
// debugger helpers
UINT32 m_dbgregs[24];
sparc_disassembler m_dasm;
// address spaces
address_space *m_program;
@ -189,6 +201,4 @@ enum
SPARC_R96, SPARC_R97, SPARC_R98, SPARC_R99, SPARC_R100, SPARC_R101, SPARC_R102, SPARC_R103, SPARC_R104, SPARC_R105, SPARC_R106, SPARC_R107, SPARC_R108, SPARC_R109, SPARC_R110, SPARC_R111
};
CPU_DISASSEMBLE( sparc );
#endif /* __SPARC_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,225 @@
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz, Vas Crabb
/*
SPARC disassembler
*/
#ifndef MAME_DEVICES_CPU_SPARC_SPARC_DASM_H
#define MAME_DEVICES_CPU_SPARC_SPARC_DASM_H
#pragma once
#include <map>
class sparc_disassembler
{
public:
struct asi_desc
{
const char *name = nullptr;
const char *desc = nullptr;
};
typedef std::map<UINT8, asi_desc> asi_desc_map;
struct state_reg_desc
{
bool reserved = false;
const char *read_name = nullptr;
const char *write_name = nullptr;
};
typedef std::map<UINT8, state_reg_desc> state_reg_desc_map;
struct prftch_desc
{
const char *name = nullptr;
};
typedef std::map<UINT8, prftch_desc> prftch_desc_map;
sparc_disassembler(unsigned version);
void enable_vis1();
void enable_vis2();
template <typename T> void add_state_reg_desc(const T &desc)
{
for (const auto &it : desc)
{
auto ins = m_state_reg_desc.insert(it);
if (!ins.second)
{
ins.first->second.reserved = it.second.reserved;
if (it.second.read_name)
ins.first->second.read_name = it.second.read_name;
if (it.second.write_name)
ins.first->second.write_name = it.second.write_name;
}
}
}
template <typename T> void add_asi_desc(const T &desc)
{
// TODO: support ranges
for (const auto &it : desc)
{
auto ins = m_asi_desc.insert(it);
if (!ins.second)
{
if (it.second.name)
ins.first->second.name = it.second.name;
if (it.second.desc)
ins.first->second.desc = it.second.desc;
}
}
}
template <typename T> void add_prftch_desc(const T &desc)
{
for (const auto &it : desc)
{
auto ins = m_prftch_desc.insert(it);
if (!ins.second)
{
if (it.second.name)
ins.first->second.name = it.second.name;
}
}
}
offs_t dasm(char *buf, offs_t pc, UINT32 op) const;
private:
struct branch_desc
{
INT32 (*get_disp)(UINT32 op);
int disp_width;
bool use_pred, use_cc;
const char *reg_cc[4];
const char *mnemonic[16];
};
struct int_op_desc
{
bool hex_imm;
const char *mnemonic;
};
typedef std::map<UINT8, int_op_desc> int_op_desc_map;
struct fpop1_desc
{
bool three_op = true;
bool rs1_shift = false;
bool rs2_shift = false;
bool rd_shift = false;
const char *mnemonic = nullptr;
};
typedef std::map<UINT16, fpop1_desc> fpop1_desc_map;
struct fpop2_desc
{
bool int_rs1 = false;
bool shift = false;
const char *mnemonic = nullptr;
};
typedef std::map<UINT16, fpop2_desc> fpop2_desc_map;
struct ldst_desc
{
bool rd_first = false;
bool alternate = false;
char rd_alt_reg = '\0';
bool rd_shift = false;
const char *mnemonic = nullptr;
const char *g0_synth = nullptr;
};
typedef std::map<UINT8, ldst_desc> ldst_desc_map;
struct vis_op_desc
{
enum arg { X, I, Fs, Fd };
arg rs1 = X;
arg rs2 = X;
arg rd = X;
bool collapse = false;
const char *mnemonic = nullptr;
};
typedef std::map<UINT16, vis_op_desc> vis_op_desc_map;
offs_t dasm_invalid(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_branch(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_shift(char *buf, offs_t pc, UINT32 op, const char *mnemonic, const char *mnemonicx, const char *mnemonicx0) const;
offs_t dasm_read_state_reg(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_write_state_reg(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_move_cond(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_move_reg_cond(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_fpop1(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_fpop2(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_impdep1(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_jmpl(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_return(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_tcc(char *buf, offs_t pc, UINT32 op) const;
offs_t dasm_ldst(char *buf, offs_t pc, UINT32 op) const;
void dasm_address(char *&output, UINT32 op) const;
void dasm_asi(char *&output, UINT32 op) const;
void dasm_asi_comment(char *&output, UINT32 op) const;
void dasm_vis_arg(char *&output, bool &args, vis_op_desc::arg fmt, UINT32 reg) const;
UINT32 freg(UINT32 val, bool shift) const;
template <typename T> void add_int_op_desc(const T &desc);
template <typename T> void add_fpop1_desc(const T &desc);
template <typename T> void add_fpop2_desc(const T &desc);
template <typename T> void add_ldst_desc(const T &desc);
template <typename T> void add_vis_op_desc(const T &desc);
void pad_op_field(char *buf, char *&output) const;
ATTR_PRINTF(2, 3) static void print(char *&output, const char *fmt, ...);
static const char * const REG_NAMES[32];
static const branch_desc EMPTY_BRANCH_DESC;
static const branch_desc BPCC_DESC;
static const branch_desc BICC_DESC;
static const branch_desc BPR_DESC;
static const branch_desc FBPFCC_DESC;
static const branch_desc FBFCC_DESC;
static const branch_desc CBCCC_DESC;
static const int_op_desc_map::value_type V7_INT_OP_DESC[];
static const int_op_desc_map::value_type V8_INT_OP_DESC[];
static const int_op_desc_map::value_type V9_INT_OP_DESC[];
static const state_reg_desc_map::value_type V9_STATE_REG_DESC[];
static const char * const MOVCC_CC_NAMES[8];
static const char * const MOVCC_COND_NAMES[32];
static const char * const MOVE_INT_COND_MNEMONICS[8];
static const char * const V9_PRIV_REG_NAMES[32];
static const fpop1_desc_map::value_type V7_FPOP1_DESC[];
static const fpop1_desc_map::value_type V9_FPOP1_DESC[];
static const fpop2_desc_map::value_type V7_FPOP2_DESC[];
static const fpop2_desc_map::value_type V9_FPOP2_DESC[];
static const ldst_desc_map::value_type V7_LDST_DESC[];
static const ldst_desc_map::value_type V9_LDST_DESC[];
static const asi_desc_map::value_type V9_ASI_DESC[];
static const prftch_desc_map::value_type V9_PRFTCH_DESC[];
static const vis_op_desc_map::value_type VIS1_OP_DESC[];
static const state_reg_desc_map::value_type VIS1_STATE_REG_DESC[];
static const asi_desc_map::value_type VIS1_ASI_DESC[];
static const vis_op_desc_map::value_type VIS2_OP_DESC[];
unsigned m_version;
int m_op_field_width;
branch_desc m_branch_desc[8];
int_op_desc_map m_int_op_desc;
state_reg_desc_map m_state_reg_desc;
fpop1_desc_map m_fpop1_desc;
fpop2_desc_map m_fpop2_desc;
ldst_desc_map m_ldst_desc;
asi_desc_map m_asi_desc;
prftch_desc_map m_prftch_desc;
vis_op_desc_map m_vis_op_desc;
};
CPU_DISASSEMBLE( sparcv7 );
CPU_DISASSEMBLE( sparcv8 );
CPU_DISASSEMBLE( sparcv9 );
#endif // MAME_DEVICES_CPU_SPARC_SPARC_DASM_H

View File

@ -83,20 +83,39 @@
#define OP2 ((op >> 22) & 7)
#define OP3 ((op >> 19) & 63)
#define OPF ((op >> 5) & 0x1ff)
#define OPC ((op >> 5) & 0x1ff)
#define OPFLOW ((op >> 5) & 0x3f)
#define DISP30 (op << 2)
#define DISP22 (((INT32)(op << 10)) >> 8)
#define DISP30 (INT32(op << 2))
#define DISP22 (INT32(op << 10) >> 8)
#define DISP19 (INT32(op << 13) >> 11)
#define DISP16 (INT32(((op << 10) & 0xc0000000) | ((op << 16) & 0x3fff0000)) >> 14)
#define IMM22 (op << 10)
#define CONST22 (op & 0x3fffff)
#define SIMM13 (((INT32)(op << 19)) >> 19)
#define SIMM13 (INT32(op << 19) >> 19)
#define SIMM11 (INT32(op << 21) >> 21)
#define SIMM10 (INT32(op << 22) >> 22)
#define IMM7 (op & 0x7f)
#define SIMM7 (((INT32)(op << 25)) >> 25)
#define OPIMM (op & 0x00002000)
#define SIMM7 (INT32(op << 25) >> 25)
#define SIMM8 (INT32(op << 24) >> 24)
#define SHCNT32 (op & 31)
#define SHCNT64 (op & 63)
#define USEIMM ((op >> 13) & 1)
#define USEEXT ((op >> 12) & 1)
#define COND ((op >> 25) & 15)
#define RCOND ((op >> 10) & 7)
#define MOVCOND ((op >> 14) & 15)
#define PRED ((op >> 19) & 1)
#define ANNUL ((op >> 29) & 1)
#define ASI ((op >> 5) & 0xff)
#define BRCC ((op >> 20) & 3)
#define MOVCC (((op >> 11) & 3) | ((op >> 16) & 4))
#define OPFCC ((op >> 11) & 7)
#define TCCCC ((op >> 11) & 3)
#define ASI ((op >> 5) & 255)
#define MMASK (op & 15)
#define CMASK ((op >> 4) & 7)
#define RD ((op >> 25) & 31)
#define RS1 ((op >> 14) & 31)
@ -107,7 +126,7 @@
#define RS1REG *m_regs[RS1]
#define RS2REG *m_regs[RS2]
#define SET_RDREG(x) if(RD) { RDREG = x; }
#define ADDRESS (OPIMM ? (RS1REG + SIMM13) : (RS1REG + RS2REG))
#define ADDRESS (USEIMM ? (RS1REG + SIMM13) : (RS1REG + RS2REG))
#define PC m_pc
#define nPC m_npc

View File

@ -285,7 +285,7 @@ void t11_device::device_start()
state_add( T11_R5, "R5", m_reg[5].w.l).formatstr("%04X");
state_add(STATE_GENPC, "curpc", m_reg[7].w.l).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_psw.b.l).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_psw.b.l).formatstr("%8s").noshow();
state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc.w.l).noshow();
m_icountptr = &m_icount;

View File

@ -290,7 +290,7 @@ void t11_device::mark(UINT16 op)
{
m_icount -= 36;
SP = SP + 2 * (op & 0x3f);
SP = PC + 2 * (op & 0x3f);
PC = REGW(5);
REGW(5) = POP();
}

View File

@ -131,8 +131,6 @@ Table 3-2. TMS32025/26 Memory Blocks
#define P_IN(A) (m_io->read_word((A)<<1))
#define P_OUT(A,V) (m_io->write_word(((A)<<1),(V)))
#define S_IN(A) (m_io->read_word((A)<<1))
#define S_OUT(A,V) (m_io->write_word(((A)<<1),(V)))
#define M_RDOP(A) ((m_pgmmap[(A) >> 7]) ? (m_pgmmap[(A) >> 7][(A) & 0x7f]) : m_direct->read_word((A)<<1))
#define M_RDOP_ARG(A) ((m_pgmmap[(A) >> 7]) ? (m_pgmmap[(A) >> 7][(A) & 0x7f]) : m_direct->read_word((A)<<1))
@ -212,7 +210,13 @@ tms32025_device::tms32025_device(const machine_config &mconfig, const char *tag,
: cpu_device(mconfig, TMS32025, "TMS32025", tag, owner, clock, "tms32025", __FILE__)
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
, m_data_config("data", ENDIANNESS_BIG, 16, 16, -1)
, m_io_config("io", ENDIANNESS_BIG, 16, 16+1, -1)
, m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
, m_bio_in(*this)
, m_hold_in(*this)
, m_hold_ack_out(*this)
, m_xf_out(*this)
, m_dr_in(*this)
, m_dx_out(*this)
{
}
@ -221,7 +225,13 @@ tms32025_device::tms32025_device(const machine_config &mconfig, device_type type
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
, m_program_config("program", ENDIANNESS_BIG, 16, 16, -1)
, m_data_config("data", ENDIANNESS_BIG, 16, 16, -1)
, m_io_config("io", ENDIANNESS_BIG, 16, 16+1, -1)
, m_io_config("io", ENDIANNESS_BIG, 16, 16, -1)
, m_bio_in(*this)
, m_hold_in(*this)
, m_hold_ack_out(*this)
, m_xf_out(*this)
, m_dr_in(*this)
, m_dx_out(*this)
{
}
@ -674,7 +684,7 @@ void tms32025_device::bgz()
}
void tms32025_device::bioz()
{
if (S_IN(TMS32025_BIO) != CLEAR_LINE) SET_PC(M_RDOP_ARG(m_PC));
if (m_bio_in() != CLEAR_LINE) SET_PC(M_RDOP_ARG(m_PC));
else m_PC++ ;
MODIFY_AR_ARP();
}
@ -1276,7 +1286,7 @@ void tms32025_device::rtxm() /** Serial port stuff */
void tms32025_device::rxf()
{
CLR1(XF_FLAG);
S_OUT(TMS32025_XF,CLEAR_LINE);
m_xf_out(CLEAR_LINE);
}
void tms32025_device::sach()
{
@ -1485,7 +1495,7 @@ void tms32025_device::subt()
void tms32025_device::sxf()
{
SET1(XF_FLAG);
S_OUT(TMS32025_XF,ASSERT_LINE);
m_xf_out(ASSERT_LINE);
}
void tms32025_device::tblr()
{
@ -1639,6 +1649,13 @@ void tms32025_device::device_start()
m_data = &space(AS_DATA);
m_io = &space(AS_IO);
m_bio_in.resolve_safe(0xffff);
m_hold_in.resolve_safe(0xffff);
m_hold_ack_out.resolve_safe();
m_xf_out.resolve_safe();
m_dr_in.resolve_safe(0xffff);
m_dx_out.resolve_safe();
m_PREVPC = 0;
m_PFC = 0;
m_STR0 = 0;
@ -1846,7 +1863,7 @@ void tms32025_device::device_reset()
m_RPTC = 0; /* Reset repeat counter to 0 */
m_IFR = 0; /* IRQ pending flags */
S_OUT(TMS32025_XF,ASSERT_LINE); /* XF flag is high. Must set the pin */
m_xf_out(ASSERT_LINE); /* XF flag is high. Must set the pin */
/* Set the internal memory mapped registers */
GREG = 0;
@ -1941,7 +1958,7 @@ int tms32025_device::process_IRQs()
}
if ((m_IFR & 0x10) && (IMR & 0x10)) { /* Serial port receive IRQ (internal) */
// logerror("TMS32025: Active RINT (Serial receive)\n");
DRR = S_IN(TMS32025_DR);
DRR = m_dr_in();
SET_PC(0x001A);
m_idle = 0;
m_IFR &= (~0x10);
@ -1950,7 +1967,7 @@ int tms32025_device::process_IRQs()
}
if ((m_IFR & 0x20) && (IMR & 0x20)) { /* Serial port transmit IRQ (internal) */
// logerror("TMS32025: Active XINT (Serial transmit)\n");
S_OUT(TMS32025_DX,DXR);
m_dx_out(DXR);
SET_PC(0x001C);
m_idle = 0;
m_IFR &= (~0x20);
@ -2005,9 +2022,9 @@ again:
void tms32025_device::execute_run()
{
/**** Respond to external hold signal */
if (S_IN(TMS32025_HOLD) == ASSERT_LINE) {
if (m_hold_in() == ASSERT_LINE) {
if (m_hold == 0) {
S_OUT(TMS32025_HOLDA,ASSERT_LINE); /* Hold-Ack (active low) */
m_hold_ack_out(ASSERT_LINE); /* Hold-Ack (active low) */
}
m_hold = 1;
if (HM) {
@ -2021,7 +2038,7 @@ void tms32025_device::execute_run()
}
else {
if (m_hold == 1) {
S_OUT(TMS32025_HOLDA,CLEAR_LINE); /* Hold-Ack (active low) */
m_hold_ack_out(CLEAR_LINE); /* Hold-Ack (active low) */
process_timer(3);
}
m_hold = 0;

View File

@ -23,17 +23,25 @@
#define __TMS32025_H__
#define MCFG_TMS32025_BIO_IN_CB(_devcb) \
devcb = &tms32025_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */
#define MCFG_TMS32025_HOLD_IN_CB(_devcb) \
devcb = &tms32025_device::set_hold_in_cb(*device, DEVCB_##_devcb); /* HOLD input */
#define TMS32025_BIO 0x10000 /* BIO input */
#define TMS32025_HOLD 0x10001 /* HOLD input */
#define TMS32025_HOLDA 0x10001 /* HOLD Acknowledge output */
#define TMS32025_XF 0x10002 /* XF output */
#define TMS32025_DR 0x10003 /* Serial Data Receive input */
#define TMS32025_DX 0x10003 /* Serial Data Transmit output */
#define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \
devcb = &tms32025_device::set_hold_ack_out_cb(*device, DEVCB_##_devcb); /* HOLD Acknowledge output */
#define MCFG_TMS32025_XF_OUT_CB(_devcb) \
devcb = &tms32025_device::set_xf_out_cb(*device, DEVCB_##_devcb); /* XF output */
#define MCFG_TMS32025_DR_IN_CB(_devcb) \
devcb = &tms32025_device::set_dr_in_cb(*device, DEVCB_##_devcb); /* Serial Data Receive input */
#define MCFG_TMS32025_DX_OUT_CB(_devcb) \
devcb = &tms32025_device::set_dx_out_cb(*device, DEVCB_##_devcb); /* Serial Data Transmit output */
/****************************************************************************
* Interrupt constants
*/
@ -75,6 +83,14 @@ public:
// construction/destruction
tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
tms32025_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// static configuration helpers
template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); }
template<class _Object> static devcb_base & set_hold_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_in.set_callback(object); }
template<class _Object> static devcb_base & set_hold_ack_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_ack_out.set_callback(object); }
template<class _Object> static devcb_base & set_xf_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_xf_out.set_callback(object); }
template<class _Object> static devcb_base & set_dr_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dr_in.set_callback(object); }
template<class _Object> static devcb_base & set_dx_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dx_out.set_callback(object); }
protected:
// device-level overrides
@ -119,6 +135,13 @@ private:
static const tms32025_opcode s_opcode_CE_subset[256];
static const tms32025_opcode s_opcode_Dx_subset[8];
devcb_read16 m_bio_in;
devcb_read16 m_hold_in;
devcb_write16 m_hold_ack_out;
devcb_write16 m_xf_out;
devcb_read16 m_dr_in;
devcb_write16 m_dx_out;
/******************** CPU Internal Registers *******************/
UINT16 m_PREVPC; /* previous program counter */

View File

@ -17,7 +17,7 @@ const device_type TMS57002 = &device_creator<tms57002_device>;
// Can't use a DEVICE_ADDRESS_MAP, not yet anyway
static ADDRESS_MAP_START(internal_pgm, AS_PROGRAM, 32, tms57002_device)
AM_RANGE(0x000, 0x3ff) AM_RAM
AM_RANGE(0x00, 0xff) AM_RAM
ADDRESS_MAP_END
tms57002_device::tms57002_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)

View File

@ -43,7 +43,7 @@
ti990_10_device::ti990_10_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: cpu_device(mconfig, TI990_10, "TI990/10 CPU", tag, owner, clock, "ti990_10_cpu", __FILE__),
m_program_config("program", ENDIANNESS_BIG, 16, 16),
m_program_config("program", ENDIANNESS_BIG, 16, 21),
m_io_config("cru", ENDIANNESS_BIG, 8, 12),
m_prgspace(nullptr),
m_cru(nullptr)

View File

@ -526,14 +526,10 @@ UINT32 intelfsh_device::read_full(UINT32 address)
switch( m_bits )
{
case 8:
{
data = m_data[address];
}
data = m_data[address];
break;
case 16:
{
data = m_data[address*2+1] | (m_data[address*2] << 8);
}
data = (m_data[address*2] << 8) | m_data[address*2+1];
break;
}
break;
@ -605,14 +601,10 @@ UINT32 intelfsh_device::read_full(UINT32 address)
switch( m_bits )
{
case 8:
{
data = m_data[address];
}
data = m_data[address];
break;
case 16:
{
data = m_data[address*2+1] | (m_data[address*2] << 8);
}
data = (m_data[address*2] << 8) | m_data[address*2+1];
break;
}
}
@ -927,7 +919,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
break;
case 16:
m_data[address*2] = data >> 8;
m_data[address] = data;
m_data[address*2+1] = data;
break;
default:
logerror( "FM_WRITEPART1 not supported when m_bits == %d\n", m_bits );
@ -947,7 +939,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
break;
case 16:
m_data[address*2] = data >> 8;
m_data[address] = data;
m_data[address*2+1] = data;
break;
default:
logerror( "FM_WRITEPAGEATMEL not supported when m_bits == %d\n", m_bits );
@ -1010,7 +1002,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
}
// clear the block containing the current address to all 0xffffs
memset(&m_data[2*base], 0xff, size);
memset(&m_data[base], 0xff, size);
m_timer->adjust( attotime::from_msec( duration ) );
}

View File

@ -7,7 +7,7 @@
**************************************************************************/
#include "zeus2.h"
#define LOG_REGS 0
#define LOG_REGS 1
/*************************************
* Constructor
@ -22,7 +22,7 @@ const device_type ZEUS2 = &device_creator<zeus2_device>;
zeus2_device::zeus2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, ZEUS2, "Midway Zeus2", tag, owner, clock, "zeus2", __FILE__),
m_vblank(*this), m_irq(*this)
m_vblank(*this), m_irq(*this), m_ieee754_float(0)
{
}
@ -69,7 +69,9 @@ void zeus2_device::device_start()
/* allocate memory for "wave" RAM */
waveram[0] = auto_alloc_array(machine(), UINT32, WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8/4);
waveram[1] = auto_alloc_array(machine(), UINT32, WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12/4);
//waveram[1] = auto_alloc_array(machine(), UINT32, WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12/4);
m_frameColor = std::make_unique<UINT32[]>(WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2);
m_frameDepth = std::make_unique<UINT16[]>(WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2);
/* initialize polygon engine */
poly = auto_alloc(machine(), zeus2_renderer(this));
@ -87,8 +89,11 @@ void zeus2_device::device_start()
/* save states */
save_pointer(NAME(waveram[0]), WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8 / sizeof(waveram[0][0]));
save_pointer(NAME(waveram[1]), WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12 / sizeof(waveram[1][0]));
save_pointer(NAME(m_zeusbase), sizeof(m_zeusbase[0])*0x80);
//save_pointer(NAME(waveram[1]), WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12 / sizeof(waveram[1][0]));
save_pointer(m_frameColor.get(), "m_frameColor", sizeof(m_frameColor[0]) * WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2);
save_pointer(m_frameDepth.get(), "m_frameDepth", sizeof(m_frameDepth[0]) * WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2);
save_pointer(NAME(m_zeusbase), sizeof(m_zeusbase[0]) * 0x80);
save_pointer(NAME(m_renderRegs), sizeof(m_renderRegs[0]) * 0x80);
save_item(NAME(zeus_fifo));
save_item(NAME(zeus_fifo_words));
save_item(NAME(zeus_cliprect.min_x));
@ -104,12 +109,13 @@ void zeus2_device::device_start()
void zeus2_device::device_reset()
{
memset(m_zeusbase, 0, sizeof(m_zeusbase));
memset(m_zeusbase, 0, sizeof(m_zeusbase[0]) * 0x80);
memset(m_renderRegs, 0, sizeof(m_renderRegs[0]) * 0x80);
zbase = 2.0f;
m_yScale = 0;
m_yScale = 1;
yoffs = 0;
texel_width = 256;
zeus_renderbase = waveram[1];
zeus_fifo_words = 0;
m_fill_color = 0;
m_fill_depth = 0;
@ -177,6 +183,10 @@ void zeus2_device::device_stop()
UINT32 zeus2_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// Wait until configuration is completed before transfering anything
if (m_zeusbase[0x30] == 0)
return 0;
int x, y;
poly->wait();
@ -187,17 +197,15 @@ if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase -= 1.0f; popmessage("Z
/* normal update case */
if (!machine().input().code_pressed(KEYCODE_W))
{
const void *base = waveram1_ptr_from_expanded_addr(m_zeusbase[0x38] >> m_yScale);
int xoffs = screen.visible_area().min_x;
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
UINT32 *colorptr = &m_frameColor[frame_addr_from_xy(0, y, false)];
UINT32 *dest = &bitmap.pix32(y);
UINT32 bufY = y >> m_yScale;
UINT32 bufOffsX = (m_yScale && (y & 1)) ? 0x200 : 0;
for (x = cliprect.min_x; x <= cliprect.max_x; x++) {
UINT32 bufX = x - xoffs + bufOffsX;
dest[x] = WAVERAM_READPIX(base, bufY, bufX);
UINT32 bufX = x - xoffs;
//dest[x] = WAVERAM_READPIX(base, y, x - xoffs);
dest[x] = colorptr[bufX];
}
}
}
@ -205,7 +213,7 @@ if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase -= 1.0f; popmessage("Z
/* waveram drawing case */
else
{
const UINT64 *base;
const void *base;
if (machine().input().code_pressed(KEYCODE_DOWN)) yoffs += machine().input().code_pressed(KEYCODE_LSHIFT) ? 0x40 : 1;
if (machine().input().code_pressed(KEYCODE_UP)) yoffs -= machine().input().code_pressed(KEYCODE_LSHIFT) ? 0x40 : 1;
@ -213,10 +221,10 @@ if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase -= 1.0f; popmessage("Z
if (machine().input().code_pressed(KEYCODE_RIGHT) && texel_width < 512) { texel_width <<= 1; while (machine().input().code_pressed(KEYCODE_RIGHT)) ; }
if (yoffs < 0) yoffs = 0;
if (0)
base = (const UINT64 *)waveram0_ptr_from_expanded_addr(yoffs << 16);
if (1)
base = waveram0_ptr_from_expanded_addr(yoffs << 16);
else
base = (const UINT64 *)waveram1_ptr_from_expanded_addr(yoffs << 16);
base = (void *)&m_frameColor[yoffs << 6];
int xoffs = screen.visible_area().min_x;
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
@ -224,16 +232,16 @@ if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase -= 1.0f; popmessage("Z
UINT32 *dest = &bitmap.pix32(y);
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
{
if (0) {
UINT8 tex = get_texel_8bit(base, y, x, texel_width);
if (1) {
UINT8 tex = get_texel_8bit((UINT64 *)base, y, x, texel_width);
dest[x] = (tex << 16) | (tex << 8) | tex;
}
else {
dest[x] = WAVERAM_READPIX(base, y, x - xoffs);
dest[x] = ((UINT32 *)(base))[((y * WAVERAM1_WIDTH)) + x - xoffs];
}
}
}
popmessage("offs = %06X", yoffs);
popmessage("offs = %06X base = %08X", yoffs, yoffs<<16);
}
return 0;
@ -303,7 +311,8 @@ WRITE32_MEMBER( zeus2_device::zeus2_w )
int logit = (offset != 0x08 &&
(offset != 0x20 || data != 0) &&
offset != 0x40 && offset != 0x41 && offset != 0x48 && offset != 0x49 && offset != 0x4e &&
offset != 0x50 && offset != 0x51 && offset != 0x57 && offset != 0x58 && offset != 0x59 && offset != 0x5a && offset != 0x5e);
offset != 0x50 && offset != 0x51 && offset != 0x57 && offset != 0x58 && offset != 0x59 && offset != 0x5a && offset != 0x5e
);
logit &= LOG_REGS;
if (logit)
logerror("%08X:zeus2_w", machine().device("maincpu")->safe_pc());
@ -389,6 +398,18 @@ void zeus2_device::zeus2_register_update(offs_t offset, UINT32 oldval, int logit
zeus2_pointer_write(m_zeusbase[0x20] >> 24, m_zeusbase[0x20]);
break;
case 0x30:
{
int horPixels = (m_zeusbase[0x34] & 0xffff) - (m_zeusbase[0x33] >> 16);
// Just a guess. Atlantis startup has two scanlines per physical ram row
if (horPixels <= 0x200)
m_yScale = 1;
else
m_yScale = 0;
popmessage("reg[30]: %08X horPixels: %d scale: %d", m_zeusbase[0x30], horPixels, m_yScale);
}
break;
case 0x33:
case 0x34:
case 0x35:
@ -396,15 +417,9 @@ void zeus2_device::zeus2_register_update(offs_t offset, UINT32 oldval, int logit
case 0x37:
m_screen->update_partial(m_screen->vpos());
{
// Just a guess. Atlantis startup has two scanlines per physical ram row
if ((m_zeusbase[0x30] & 0xfff) <= 0x100)
m_yScale = 1;
else
m_yScale = 0;
int vtotal = (m_zeusbase[0x37] & 0xffff) << m_yScale;
int vtotal = (m_zeusbase[0x37] & 0xffff);
int htotal = (m_zeusbase[0x34] >> 16);
rectangle visarea((m_zeusbase[0x33] >> 16), htotal - 1, 0, (m_zeusbase[0x35] & 0xffff)<< m_yScale);
rectangle visarea((m_zeusbase[0x33] >> 16), htotal - 1, 0, (m_zeusbase[0x35] & 0xffff));
if (htotal > 0 && vtotal > 0 && visarea.min_x < visarea.max_x && visarea.max_y < vtotal)
{
m_screen->configure(htotal, vtotal, visarea, HZ_TO_ATTOSECONDS((double)ZEUS2_VIDEO_CLOCK / 4.0 / (htotal * vtotal)));
@ -423,7 +438,7 @@ void zeus2_device::zeus2_register_update(offs_t offset, UINT32 oldval, int logit
m_zeusbase[0x38] = oldval;
m_screen->update_partial(m_screen->vpos());
log_fifo = machine().input().code_pressed(KEYCODE_L);
//log_fifo = 1;
log_fifo = 1;
m_zeusbase[0x38] = temp;
}
break;
@ -500,39 +515,34 @@ void zeus2_device::zeus2_register_update(offs_t offset, UINT32 oldval, int logit
case 0x50:
if (m_zeusbase[0x50] == 0x00510000) {
// SGRAM Special Mode Register Write
if (m_zeusbase[0x51] & 0x00400000) {
if (m_zeusbase[0x51] == 0x00200000) {
// SGRAM Mask Register
if ((m_zeusbase[0x58] & m_zeusbase[0x59] & m_zeusbase[0x5a]) != 0xffffffff)
logerror("zeus2_register_update: Warning! Mask Register not equal to 0xffffffff\n");
}
if (m_zeusbase[0x51] & 0x00200000) {
if (m_zeusbase[0x51] == 0x00400000) {
// SGRAM Color Register
m_fill_color = m_zeusbase[0x58];
m_fill_depth = m_zeusbase[0x5a] & 0xffff;
m_fill_depth = m_zeusbase[0x5a];
if (m_zeusbase[0x58] != m_zeusbase[0x59])
logerror("zeus2_register_update: Warning! Different fill colors are set.\n");
}
}
else if (1 && (m_zeusbase[0x50] & 0x00080000) && (m_zeusbase[0x50] & 0xffff)) {
else if (1 && ((m_zeusbase[0x50] & 0x000f0000)==0x80000) && (m_zeusbase[0x50] & 0xffff)) {
// Fast fill
// Unknown what the exact bit fields are, this is a just a guess
// Atlantis: 0x00983FFF => clear entire frame buffer, 0x00981FFF => clear one frame
// crusnexo: 0x007831FF => clear one frame
// thegrid: 0x008831FF => clear one frame
//UINT32 lastRow = (((m_zeusbase[0x50] >> 8) & 0xff) << 3) | 0x7;
UINT32 lastRow = (((m_zeusbase[0x50] >> 8) & 0xff) << 3) | 0x3;
UINT32 lastCol = (((m_zeusbase[0x50] >> 0) & 0xff) << 2) | 0x3;
// Not sure how to select
//void *base = waveram1_ptr_from_expanded_addr(m_zeusbase[0x51]);
void *base = (m_zeusbase[0x50] & 0x800000) ? waveram1_ptr_from_expanded_addr(m_zeusbase[0x51]) : zeus_renderbase;
for (int y = 0; y <= lastRow; y++)
for (int x = 0; x <= lastCol; x++) {
WAVERAM_WRITEPIX(base, y, x, m_fill_color);
WAVERAM_WRITEDEPTH(base, y, x, m_fill_depth);
}
//waveram_plot_depth(y, x, m_fill_color, m_fill_depth);
// thegrid: 0x0079FFFF => clear one frame at 51=0 then 51=00800000 ???
UINT32 addr = frame_addr_from_reg51();
UINT32 numBytes = (m_zeusbase[0x50] & 0xffff) + 1;
numBytes *= 0x40;
//printf("Clearing buffer: numPixels: %08X addr: %08X reg50: %08X\n", numBytes/4, addr, m_zeusbase[0x50]);
memset(&m_frameColor[addr], m_fill_color, numBytes);
memset(&m_frameDepth[addr], m_fill_depth, numBytes/2);
}
else if ((m_zeusbase[0x5e] >> 16) != 0xF208) {
else if ((m_zeusbase[0x5e] >> 16) != 0xf208 && !(m_zeusbase[0x5e] & 0xffff)) {
/* If 0x5e==0xf20a0000 (atlantis) or 0xf20d0000 (the grid) then process the read/write now */
/*
m_zeusbase[0x5e]:
@ -542,39 +552,18 @@ void zeus2_device::zeus2_register_update(offs_t offset, UINT32 oldval, int logit
bit 5: unknown, currently used to specify ordering, but this is suspect
bit 6: enable autoincrement on write through
*/
if (m_zeusbase[0x50] == 0x00890000)
//if (m_zeusbase[0x50] == 0x00890000)
if ((m_zeusbase[0x50] == 0x00890000) || (m_zeusbase[0x50] == 0x00e90000))
{
void *dest = waveram1_ptr_from_expanded_addr(m_zeusbase[0x51]);
WAVERAM_WRITE32(dest, 0, m_zeusbase[0x58]);
if (m_zeusbase[0x5e] & 0x20)
WAVERAM_WRITE32(dest, 1, m_zeusbase[0x5a]);
else
{
WAVERAM_WRITE32(dest, 1, m_zeusbase[0x59]);
WAVERAM_WRITE32(dest, 2, m_zeusbase[0x5a]);
}
if (m_zeusbase[0x5e] & 0x40)
{
m_zeusbase[0x51]++;
m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7;
m_zeusbase[0x51] &= ~0xfe00;
}
frame_write();
}
else if (m_zeusbase[0x50] == 0x00720000) {
/* Do the read */
const void *src = waveram1_ptr_from_expanded_addr(m_zeusbase[0x51]);
m_zeusbase[0x58] = WAVERAM_READ32(src, 0);
m_zeusbase[0x59] = WAVERAM_READ32(src, 1);
m_zeusbase[0x5a] = WAVERAM_READ32(src, 2);
if (m_zeusbase[0x5e] & 0x40)
{
m_zeusbase[0x51]++;
m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7;
m_zeusbase[0x51] &= ~0xfe00;
}
frame_read();
}
/* make sure we log anything else */
else if (1 || logit)
logerror("\t[50]=%08X [5E]=%08X\n", m_zeusbase[0x50], m_zeusbase[0x5e]);
}
break;
case 0x51:
@ -586,36 +575,26 @@ void zeus2_device::zeus2_register_update(offs_t offset, UINT32 oldval, int logit
/* this is the address, except in read mode, where it latches values */
if ((m_zeusbase[0x5e] & 0x10) || (m_zeusbase[0x50] == 0x00a20000))
{
const void *src = waveram1_ptr_from_expanded_addr(oldval);
{
m_zeusbase[0x51] = oldval;
m_zeusbase[0x58] = WAVERAM_READ32(src, 0);
m_zeusbase[0x59] = WAVERAM_READ32(src, 1);
m_zeusbase[0x5a] = WAVERAM_READ32(src, 2);
if (m_zeusbase[0x5e] & 0x40)
{
m_zeusbase[0x51]++;
m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7;
m_zeusbase[0x51] &= ~0xfe00;
}
frame_read();
}
break;
case 0x57:
/* thegrid uses this to write either left or right halves of pixels */
if (m_zeusbase[0x50] == 0x00e90000)
{
void *dest = waveram1_ptr_from_expanded_addr(m_zeusbase[0x51]);
if (m_zeusbase[0x57] & 1)
WAVERAM_WRITE32(dest, 0, m_zeusbase[0x58]);
if (m_zeusbase[0x57] & 4)
WAVERAM_WRITE32(dest, 1, m_zeusbase[0x59]);
}
//if (m_zeusbase[0x50] == 0x00e90000)
//{
// UINT32 addr = frame_addr_from_reg51();
// if (m_zeusbase[0x57] & 1)
// m_frameColor[addr] = m_zeusbase[0x58];
// if (m_zeusbase[0x57] & 4)
// m_frameColor[addr+1] = m_zeusbase[0x59];
//}
/* make sure we log anything else */
else if (logit)
logerror("\t[50]=%08X [5E]=%08X\n", m_zeusbase[0x50], m_zeusbase[0x5e]);
///* make sure we log anything else */
//else if (logit)
// logerror("\t[50]=%08X [5E]=%08X\n", m_zeusbase[0x50], m_zeusbase[0x5e]);
break;
case 0x58:
@ -633,23 +612,8 @@ void zeus2_device::zeus2_register_update(offs_t offset, UINT32 oldval, int logit
bit 6: enable autoincrement on write through
*/
if ((m_zeusbase[0x5e] & 0x08) && (offset & 3) == (m_zeusbase[0x5e] & 3))
{
void *dest = waveram1_ptr_from_expanded_addr(m_zeusbase[0x51]);
WAVERAM_WRITE32(dest, 0, m_zeusbase[0x58]);
if (m_zeusbase[0x5e] & 0x20)
WAVERAM_WRITE32(dest, 1, m_zeusbase[0x5a]);
else
{
WAVERAM_WRITE32(dest, 1, m_zeusbase[0x59]);
WAVERAM_WRITE32(dest, 2, m_zeusbase[0x5a]);
}
if (m_zeusbase[0x5e] & 0x40)
{
m_zeusbase[0x51]++;
m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7;
m_zeusbase[0x51] &= ~0xfe00;
}
{
frame_write();
}
}
@ -688,13 +652,10 @@ if (subregdata_count[which] < 256)
}
}
#endif
m_renderRegs[which] = value;
switch (which)
{
case 0x04:
zeus_renderbase = waveram1_ptr_from_expanded_addr(value << 16);
break;
case 0x05:
zeus_texbase = value % (WAVERAM0_HEIGHT * WAVERAM0_WIDTH);
break;
@ -757,20 +718,20 @@ int zeus2_device::zeus2_fifo_process(const UINT32 *data, int numwords)
return FALSE;
/* extract the matrix from the raw data */
zeus_matrix[0][0] = tms3203x_device::fp_to_float(data[dataoffs + 1]);
zeus_matrix[0][1] = tms3203x_device::fp_to_float(data[dataoffs + 2]);
zeus_matrix[0][2] = tms3203x_device::fp_to_float(data[dataoffs + 3]);
zeus_matrix[1][0] = tms3203x_device::fp_to_float(data[dataoffs + 4]);
zeus_matrix[1][1] = tms3203x_device::fp_to_float(data[dataoffs + 5]);
zeus_matrix[1][2] = tms3203x_device::fp_to_float(data[dataoffs + 6]);
zeus_matrix[2][0] = tms3203x_device::fp_to_float(data[dataoffs + 7]);
zeus_matrix[2][1] = tms3203x_device::fp_to_float(data[dataoffs + 8]);
zeus_matrix[2][2] = tms3203x_device::fp_to_float(data[dataoffs + 9]);
zeus_matrix[0][0] = convert_float(data[dataoffs + 1]);
zeus_matrix[0][1] = convert_float(data[dataoffs + 2]);
zeus_matrix[0][2] = convert_float(data[dataoffs + 3]);
zeus_matrix[1][0] = convert_float(data[dataoffs + 4]);
zeus_matrix[1][1] = convert_float(data[dataoffs + 5]);
zeus_matrix[1][2] = convert_float(data[dataoffs + 6]);
zeus_matrix[2][0] = convert_float(data[dataoffs + 7]);
zeus_matrix[2][1] = convert_float(data[dataoffs + 8]);
zeus_matrix[2][2] = convert_float(data[dataoffs + 9]);
/* extract the translation point from the raw data */
zeus_point[0] = tms3203x_device::fp_to_float(data[dataoffs + 10]);
zeus_point[1] = tms3203x_device::fp_to_float(data[dataoffs + 11]);
zeus_point[2] = tms3203x_device::fp_to_float(data[dataoffs + 12]);
zeus_point[0] = convert_float(data[dataoffs + 10]);
zeus_point[1] = convert_float(data[dataoffs + 11]);
zeus_point[2] = convert_float(data[dataoffs + 12]);
if (log_fifo)
{
@ -795,9 +756,9 @@ int zeus2_device::zeus2_fifo_process(const UINT32 *data, int numwords)
return FALSE;
/* extract the translation point from the raw data */
zeus_point[0] = tms3203x_device::fp_to_float(data[1]);
zeus_point[1] = tms3203x_device::fp_to_float(data[2]);
zeus_point[2] = tms3203x_device::fp_to_float(data[3]);
zeus_point[0] = convert_float(data[1]);
zeus_point[1] = convert_float(data[2]);
zeus_point[2] = convert_float(data[3]);
if (log_fifo)
{
@ -815,25 +776,16 @@ int zeus2_device::zeus2_fifo_process(const UINT32 *data, int numwords)
return FALSE;
if (log_fifo)
{
log_fifo_command(data, numwords, " -- unknown control + hack clear screen\n");
log_fifo_command(data, numwords, " -- unknown control + happens after clear screen\n");
logerror("\t\tvector %8.2f %8.2f %8.5f\n",
(double) tms3203x_device::fp_to_float(data[1]),
(double) tms3203x_device::fp_to_float(data[2]),
(double) tms3203x_device::fp_to_float(data[3]));
(double) convert_float(data[1]),
(double) convert_float(data[2]),
(double) convert_float(data[3]));
/* extract the translation point from the raw data */
zeus_point2[0] = tms3203x_device::fp_to_float(data[1]);
zeus_point2[1] = tms3203x_device::fp_to_float(data[2]);
zeus_point2[2] = tms3203x_device::fp_to_float(data[3]);
}
{
/* not right -- just a hack */
if (0) {
int x, y;
for (y = zeus_cliprect.min_y; y <= zeus_cliprect.max_y; y++)
for (x = zeus_cliprect.min_x; x <= zeus_cliprect.max_x; x++)
waveram_plot_depth(y, x, 0, 0x7fff);
}
zeus_point2[0] = convert_float(data[1]);
zeus_point2[1] = convert_float(data[2]);
zeus_point2[2] = convert_float(data[3]);
}
break;
@ -851,7 +803,7 @@ int zeus2_device::zeus2_fifo_process(const UINT32 *data, int numwords)
zeus2_draw_model(data[1], data[0] & 0x3fff, log_fifo);
break;
// 0x2d; ??? (atlantis)
// 0x2d; direct render quad (atlantis)
case 0x2d:
if (numwords < 2)
return FALSE;
@ -860,10 +812,15 @@ int zeus2_device::zeus2_fifo_process(const UINT32 *data, int numwords)
//zeus2_draw_model(data[1], data[0] & 0xff, log_fifo);
break;
/* 0x31: sync pipeline? (thegrid) */
/* 0x32: sync pipeline? (crusnexo) */
// 0x25 ?? (atlantis)
case 0x25:
if (log_fifo)
log_fifo_command(data, numwords, "\n");
zeus_quad_size = 14;
break;
/* 0x31: sync pipeline? (thegrid) */
/* 0x32: sync pipeline? (crusnexo) */
case 0x31:
case 0x32:
if (log_fifo)
@ -907,7 +864,7 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
UINT32 databuffer[32];
int databufcount = 0;
int model_done = FALSE;
UINT32 texoffs = 0;
UINT32 texdata = 0;
int quadsize = zeus_quad_size;
if (logit)
@ -936,7 +893,7 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
/* if this is enough, process the command */
cmd = databuffer[0] >> 24;
if (cmd == 0x38)
if ((cmd == 0x38) || (cmd == 0x2d))
countneeded = quadsize;
if (databufcount == countneeded)
{
@ -957,9 +914,9 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
case 0x22: /* crusnexo */
if (((databuffer[0] >> 16) & 0xff) == 0x9b)
{
texoffs = databuffer[1];
texdata = databuffer[1];
if (logit)
logerror("texture offset\n");
logerror("texdata\n");
}
else if (logit)
logerror("unknown offset\n");
@ -970,6 +927,7 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
logerror("sync?\n");
break;
case 0x29: // atlantis
case 0x35: /* thegrid */
case 0x36: /* crusnexo */
if (logit)
@ -977,8 +935,15 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
zeus2_register32_w((databuffer[0] >> 16) & 0x7f, databuffer[1], logit);
break;
case 0x2d: // atlantis
texdata = databuffer[1];
databuffer[1] = m_renderRegs[0x6];
//poly->zeus2_draw_quad(&databuffer[1], texoffs, logit);
poly->zeus2_draw_quad(databuffer, texdata, logit);
break;
case 0x38: /* crusnexo/thegrid */
poly->zeus2_draw_quad(databuffer, texoffs, logit);
poly->zeus2_draw_quad(databuffer, texdata, logit);
break;
default:
@ -1002,7 +967,7 @@ void zeus2_device::zeus2_draw_model(UINT32 baseaddr, UINT16 count, int logit)
/*************************************
* Draw a quad
*************************************/
void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, int logit)
void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texdata, int logit)
{
z2_poly_vertex clipvert[8];
z2_poly_vertex vert[4];
@ -1013,20 +978,20 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
int i;
// INT16 normal[3];
// INT32 rotnormal[3];
int texmode = texoffs & 0xffff;
int texmode = texdata & 0xffff;
if (logit)
m_state->logerror("quad\n");
if (machine().input().code_pressed(KEYCODE_Q) && (texoffs & 0xffff) == 0x119) return;
if (machine().input().code_pressed(KEYCODE_E) && (texoffs & 0xffff) == 0x01d) return;
if (machine().input().code_pressed(KEYCODE_R) && (texoffs & 0xffff) == 0x11d) return;
if (machine().input().code_pressed(KEYCODE_T) && (texoffs & 0xffff) == 0x05d) return;
if (machine().input().code_pressed(KEYCODE_Y) && (texoffs & 0xffff) == 0x0dd) return;
//if (machine().input().code_pressed(KEYCODE_U) && (texoffs & 0xffff) == 0x119) return;
//if (machine().input().code_pressed(KEYCODE_I) && (texoffs & 0xffff) == 0x119) return;
//if (machine().input().code_pressed(KEYCODE_O) && (texoffs & 0xffff) == 0x119) return;
//if (machine().input().code_pressed(KEYCODE_L) && (texoffs & 0x100)) return;
if (machine().input().code_pressed(KEYCODE_Q) && (texdata & 0xffff) == 0x119) return;
if (machine().input().code_pressed(KEYCODE_E) && (texdata & 0xffff) == 0x01d) return;
if (machine().input().code_pressed(KEYCODE_R) && (texdata & 0xffff) == 0x11d) return;
if (machine().input().code_pressed(KEYCODE_T) && (texdata & 0xffff) == 0x05d) return;
if (machine().input().code_pressed(KEYCODE_Y) && (texdata & 0xffff) == 0x0dd) return;
//if (machine().input().code_pressed(KEYCODE_U) && (texdata & 0xffff) == 0x119) return;
//if (machine().input().code_pressed(KEYCODE_I) && (texdata & 0xffff) == 0x119) return;
//if (machine().input().code_pressed(KEYCODE_O) && (texdata & 0xffff) == 0x119) return;
//if (machine().input().code_pressed(KEYCODE_L) && (texdata & 0x100)) return;
/*
0 38800000
@ -1129,7 +1094,7 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
vert[i].y = x * m_state->zeus_matrix[1][0] + y * m_state->zeus_matrix[1][1] + z * m_state->zeus_matrix[1][2] + m_state->zeus_point[1];
vert[i].p[0] = x * m_state->zeus_matrix[2][0] + y * m_state->zeus_matrix[2][1] + z * m_state->zeus_matrix[2][2] + m_state->zeus_point[2];
vert[i].p[0] += m_state->zbase;
vert[i].p[2] += texoffs >> 16;
vert[i].p[2] += texdata >> 16;
vert[i].p[1] *= 256.0f;
vert[i].p[2] *= 256.0f;
@ -1175,10 +1140,16 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
zeus2_poly_extra_data& extra = this->object_data_alloc();
switch (texmode)
{
//case 0x18e: // atlantis
// extra.texwidth = 512;
// break;
case 0x01d: /* crusnexo: RHS of score bar */
case 0x05d: /* crusnexo: background, road */
case 0x0dd: /* crusnexo: license plate letters */
case 0x11d: /* crusnexo: LHS of score bar */
case 0x14d: // atlantis
case 0x18e: // atlantis
case 0x15d: /* crusnexo */
case 0x85d: /* crusnexo */
case 0x95d: /* crusnexo */
@ -1191,26 +1162,30 @@ void zeus2_renderer::zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, i
case 0x0d9: /* crusnexo */
case 0x119: /* crusnexo: license plates */
case 0x159: /* crusnexo */
case 0x18a: // atlantis
extra.texwidth = 128;
break;
case 0x055: /* crusnexo */
case 0x145: // atlantis
case 0x155: /* crusnexo */
extra.texwidth = 64;
break;
case 0x000: // thegrid guess
case 0x120: // thegrid guess
case 0x140: // atlantis
case 0x141: // atlantis
extra.texwidth = 32;
break;
default:
{
static UINT8 hits[0x10000];
if (!hits[(texoffs & 0xffff)])
if (!hits[(texdata & 0xffff)])
{
hits[(texoffs & 0xffff)] = 1;
printf("format = %04X\n", (texoffs & 0xffff));
hits[(texdata & 0xffff)] = 1;
printf("texMode = %04X\n", (texdata & 0xffff));
}
break;
}
@ -1257,13 +1232,16 @@ void zeus2_renderer::render_poly_8bit(INT32 scanline, const extent_t& extent, co
int texwidth = object.texwidth;
int x;
UINT32 addr = m_state->frame_addr_from_xy(0, scanline, true);
UINT16 *depthptr = &m_state->m_frameDepth[addr];
UINT32 *colorptr = &m_state->m_frameColor[addr];
for (x = extent.startx; x < extent.stopx; x++)
{
UINT16 *depthptr = WAVERAM_PTRDEPTH(m_state->zeus_renderbase, scanline, x);
//UINT16 *depthptr = WAVERAM_PTRDEPTH(m_state->zeus_renderbase, scanline, x);
INT32 depth = (curz >> 16) + object.zoffset;
//if (depth > 0x7fff) depth = 0x7fff;
if (depth > 0xffff) depth = 0xffff;
if (depth >= 0 && depth <= *depthptr)
if (depth >= 0 && depth <= depthptr[x])
{
int u0 = (curu >> 8);// & (texwidth - 1);
int v0 = (curv >> 8);// & 255;
@ -1284,8 +1262,10 @@ void zeus2_renderer::render_poly_8bit(INT32 scanline, const extent_t& extent, co
color2 = ((color2 & 0x7c00) << 9) | ((color2 & 0x3e0) << 6) | ((color2 & 0x1f) << 3);
color3 = ((color3 & 0x7c00) << 9) | ((color3 & 0x3e0) << 6) | ((color3 & 0x1f) << 3);
rgb_t filtered = rgbaint_t::bilinear_filter(color0, color1, color2, color3, curu, curv);
WAVERAM_WRITEPIX(m_state->zeus_renderbase, scanline, x, filtered);
*depthptr = depth;
//WAVERAM_WRITEPIX(m_state->zeus_renderbase, scanline, x, filtered);
//*depthptr = depth;
colorptr[x] = filtered;
depthptr[x] = depth;
}
}

View File

@ -89,7 +89,7 @@ public:
void render_poly_8bit(INT32 scanline, const extent_t& extent, const zeus2_poly_extra_data& object, int threadid);
void zeus2_draw_quad(const UINT32 *databuffer, UINT32 texoffs, int logit);
void zeus2_draw_quad(const UINT32 *databuffer, UINT32 texdata, int logit);
private:
zeus2_device* m_state;
@ -106,6 +106,9 @@ typedef zeus2_renderer::extent_t z2_poly_extent;
#define MCFG_ZEUS2_IRQ_CB(_devcb) \
devcb = &zeus2_device::set_irq_callback(*device, DEVCB_##_devcb);
#define MCFG_ZEUS2_FLOAT_MODE(_mode) \
downcast<zeus2_device *>(device)->set_float_mode(_mode);
class zeus2_device : public device_t
{
public:
@ -124,11 +127,14 @@ public:
devcb_write_line m_vblank;
devcb_write_line m_irq;
void set_float_mode(int mode) { m_ieee754_float = mode; }
int m_ieee754_float; // Used to switch to using IEEE754 floating point format
UINT32 m_zeusbase[0x80];
UINT32 m_renderRegs[0x100];
zeus2_renderer* poly;
void *zeus_renderbase;
rectangle zeus_cliprect;
float zeus_matrix[3][3];
@ -139,6 +145,9 @@ public:
int zeus_quad_size;
UINT32 *waveram[2];
std::unique_ptr<UINT32[]> m_frameColor;
std::unique_ptr<UINT16[]> m_frameDepth;
emu_timer *int_timer;
emu_timer *vblank_timer;
int m_yScale;
@ -164,15 +173,13 @@ private:
/*************************************
* Member variables
*************************************/
UINT8 log_fifo;
UINT32 zeus_fifo[20];
UINT8 zeus_fifo_words;
UINT32 m_fill_color;
UINT16 m_fill_depth;
UINT32 m_fill_depth;
#if TRACK_REG_USAGE
struct reg_info
@ -193,6 +200,75 @@ public:
/*************************************
* Inlines for block addressing
*************************************/
inline float convert_float(UINT32 val)
{
if (m_ieee754_float)
return reinterpret_cast<float&>(val);
else
return tms3203x_device::fp_to_float(val);
}
inline UINT32 frame_addr_from_xy(UINT32 x, UINT32 y, bool render)
{
UINT32 addr = render ? frame_addr_from_expanded_addr(m_renderRegs[0x4] << 16)
: frame_addr_from_expanded_addr(m_zeusbase[0x38]);
addr += ((y * WAVERAM1_WIDTH) << (1 - m_yScale)) + x;
return addr;
}
// Convert 0xRRRRCCCC to frame buffer addresss
inline UINT32 frame_addr_from_expanded_addr(UINT32 addr)
{
return (((addr & 0x3ff0000) >> (16 - 9 + m_yScale)) | (addr & 0x1ff)) << 1;
}
// Convert Physical 0xRRRRCCCC to frame buffer addresss
// Based on address reg 51 (no scaling)
inline UINT32 frame_addr_from_reg51()
{
UINT32 addr = (((m_zeusbase[0x51] & 0x3ff0000) >> (16 - 9)) | (m_zeusbase[0x51] & 0x1ff)) << 1;
return addr;
}
// Read from frame buffer
inline void frame_read()
{
UINT32 addr = frame_addr_from_reg51();
m_zeusbase[0x58] = m_frameColor[addr];
m_zeusbase[0x59] = m_frameColor[addr + 1];
m_zeusbase[0x5a] = *(UINT32*)&m_frameDepth[addr];
if (m_zeusbase[0x5e] & 0x40)
{
m_zeusbase[0x51]++;
m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7;
m_zeusbase[0x51] &= ~0xfe00;
}
}
// Write to frame buffer
inline void frame_write()
{
UINT32 addr = frame_addr_from_reg51();
if (m_zeusbase[0x57] & 0x1)
m_frameColor[addr] = m_zeusbase[0x58];
if (m_zeusbase[0x5e] & 0x20) {
if (m_zeusbase[0x57] & 0x4)
m_frameColor[addr + 1] = m_zeusbase[0x5a];
} else
{
if (m_zeusbase[0x57] & 0x4)
m_frameColor[addr + 1] = m_zeusbase[0x59];
if (m_zeusbase[0x57] & 0x10)
*(UINT32*)&m_frameDepth[addr] = m_zeusbase[0x5a];
}
if (m_zeusbase[0x5e] & 0x40)
{
m_zeusbase[0x51]++;
m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7;
m_zeusbase[0x51] &= ~0xfe00;
}
}
inline void *waveram0_ptr_from_expanded_addr(UINT32 addr)
{
@ -226,6 +302,7 @@ public:
}
#endif
#ifdef UNUSED_FUNCTION
inline void waveram_plot_depth(int y, int x, UINT32 color, UINT16 depth)
{
if (zeus_cliprect.contains(x, y))
@ -234,6 +311,7 @@ public:
WAVERAM_WRITEDEPTH(zeus_renderbase, y, x, depth);
}
}
#endif
#ifdef UNUSED_FUNCTION
inline void waveram_plot_check_depth(int y, int x, UINT32 color, UINT16 depth)

View File

@ -360,6 +360,10 @@ bool device_t::findit(bool isvalidation) const
void device_t::start()
{
// prepare the logerror buffer
if (m_machine->allow_logging())
m_string_buffer.reserve(1024);
// find all the registered devices
if (!findit(false))
throw emu_fatalerror("Missing some required objects, unable to proceed");
@ -380,7 +384,7 @@ void device_t::start()
device_sound_interface *sound;
if (state_registrations == 0 && (interface(exec) || interface(sound)) && type() != SPEAKER)
{
logerror("Device '%s' did not register any state to save!\n", tag());
logerror("Device did not register any state to save!\n");
if ((machine().system().flags & MACHINE_SUPPORTS_SAVE) != 0)
fatalerror("Device '%s' did not register any state to save!\n", tag());
}

View File

@ -361,6 +361,9 @@ private:
bool m_config_complete; // have we completed our configuration?
bool m_started; // true if the start function has succeeded
finder_base * m_auto_finder_list; // list of objects to auto-find
// string formatting buffer for logerror
mutable util::ovectorstream m_string_buffer;
};

View File

@ -17,8 +17,6 @@
#ifndef __DEVICE_IPP__
#define __DEVICE_IPP__
#include "strformat.h"
//**************************************************************************
// MEMBER TEMPLATES
//**************************************************************************
@ -26,15 +24,28 @@
template <typename Format, typename... Params>
inline void device_t::popmessage(Format &&fmt, Params &&... args) const
{
if (m_machine)
if (m_machine != nullptr)
m_machine->popmessage(std::forward<Format>(fmt), std::forward<Params>(args)...);
}
template <typename Format, typename... Params>
inline void device_t::logerror(Format &&fmt, Params &&... args) const
{
if (m_machine)
m_machine->logerror(string_format("[%s] %s", tag(), std::forward<Format>(fmt)), std::forward<Params>(args)...);
if (m_machine != nullptr && m_machine->allow_logging())
{
g_profiler.start(PROFILER_LOGERROR);
// dump to the buffer
m_string_buffer.clear();
m_string_buffer.seekp(0);
util::stream_format(m_string_buffer, "[%s] ", tag());
util::stream_format(m_string_buffer, std::forward<Format>(fmt), std::forward<Params>(args)...);
m_string_buffer.put('\0');
m_machine->strlog(&m_string_buffer.vec()[0]);
g_profiler.stop();
}
}
#endif // __DEVICE_IPP__

View File

@ -29,9 +29,11 @@
#include "eminline.h"
#include "profiler.h"
// commonly-referenecd utilities imported from lib/util
// commonly-referenced utilities imported from lib/util
#include "palette.h"
#include "unicode.h"
#include "strformat.h"
#include "vecstream.h"
// emulator-specific utilities
#include "attotime.h"

View File

@ -3922,9 +3922,6 @@ bool direct_read_data::set_direct_region(offs_t &byteaddress)
byteaddress = overrideaddress;
}
// remove the masked bits (we'll put them back later)
offs_t maskedbits = overrideaddress & ~m_bytemask;
// find or allocate a matching range
direct_range *range = find_range(overrideaddress, m_entry);
@ -3940,6 +3937,7 @@ bool direct_read_data::set_direct_region(offs_t &byteaddress)
UINT8 *base = *m_space.manager().bank_pointer_addr(m_entry);
// compute the adjusted base
offs_t maskedbits = overrideaddress & ~m_space.bytemask();
const handler_entry_read &handler = m_space.read().handler_read(m_entry);
m_bytemask = handler.bytemask();
m_ptr = base - (handler.bytestart() & m_bytemask);
@ -3964,15 +3962,8 @@ direct_read_data::direct_range *direct_read_data::find_range(offs_t byteaddress,
if (byteaddress >= range.m_bytestart && byteaddress <= range.m_byteend)
return &range;
// didn't find out; allocate a new one
// didn't find out; create a new one
direct_range range;
if (m_freerangelist.size() > 0)
{
range = m_freerangelist.front();
m_freerangelist.pop_front();
}
// fill in the range
m_space.read().derive_range(byteaddress, range.m_bytestart, range.m_byteend);
m_rangelist[entry].push_front(range);
@ -3991,14 +3982,13 @@ void direct_read_data::remove_intersecting_ranges(offs_t bytestart, offs_t bytee
for (auto & elem : m_rangelist)
{
// loop over all ranges in this entry's list
for (std::list<direct_range>::iterator range = elem.begin(); range!=elem.end();++range)
for (auto range = elem.begin(); range!=elem.end();)
{
// if we intersect, remove and add to the free range list
// if we intersect, remove
if (bytestart <= range->m_byteend && byteend >= range->m_bytestart)
{
m_freerangelist.push_front(*range);
elem.erase(range);
}
range = elem.erase(range);
else
range ++;
}
}
}

View File

@ -199,7 +199,6 @@ private:
offs_t m_byteend; // maximum valid byte address
UINT16 m_entry; // live entry
std::list<direct_range> m_rangelist[TOTAL_MEMORY_BANKS]; // list of ranges for each entry
std::list<direct_range> m_freerangelist; // list of recycled range entries
direct_update_delegate m_directupdate; // fast direct-access update callback
};

View File

@ -727,6 +727,19 @@ void running_machine::add_logerror_callback(logerror_callback callback)
}
//-------------------------------------------------
// strlog - send an error logging string to the
// debugger and any OSD-defined output streams
//-------------------------------------------------
void running_machine::strlog(const char *str) const
{
// log to all callbacks
for (auto &cb : m_logerror_list)
cb->m_func(str);
}
//-------------------------------------------------
// debug_break - breaks into the debugger, if
// enabled

View File

@ -19,9 +19,6 @@
#include <functional>
#include "strformat.h"
#include "vecstream.h"
#include <time.h>
// forward declaration instead of osdepend.h
@ -198,6 +195,7 @@ public:
emu_options &options() const { return m_config.options(); }
attotime time() const { return m_scheduler.time(); }
bool scheduled_event_pending() const { return m_exit_pending || m_hard_reset_pending; }
bool allow_logging() const { return !m_logerror_list.empty(); }
// fetch items by name
inline device_t *device(const char *tag) const { return root_device().subdevice(tag); }
@ -233,6 +231,7 @@ public:
void popmessage() const { popmessage(static_cast<char const *>(nullptr)); }
template <typename Format, typename... Params> void popmessage(Format &&fmt, Params &&... args) const;
template <typename Format, typename... Params> void logerror(Format &&fmt, Params &&... args) const;
void strlog(const char *str) const;
UINT32 rand();
const char *describe_context();
@ -387,7 +386,7 @@ template <typename Format, typename... Params>
inline void running_machine::logerror(Format &&fmt, Params &&... args) const
{
// process only if there is a target
if (!m_logerror_list.empty())
if (allow_logging())
{
g_profiler.start(PROFILER_LOGERROR);
@ -397,10 +396,7 @@ inline void running_machine::logerror(Format &&fmt, Params &&... args) const
util::stream_format(m_string_buffer, std::forward<Format>(fmt), std::forward<Params>(args)...);
m_string_buffer.put('\0');
// log to all callbacks
char const *const str(&m_string_buffer.vec()[0]);
for (auto &cb : m_logerror_list)
cb->m_func(str);
strlog(&m_string_buffer.vec()[0]);
g_profiler.stop();
}

View File

@ -587,7 +587,25 @@ luabridge::LuaRef lua_engine::l_memory_get_regions(const memory_manager *m)
luabridge::LuaRef table = luabridge::LuaRef::newTable(L);
for (auto &region: mm->regions()) {
table[region.second->name()] = &region;
table[region.second->name()] = region.second.get();
}
return table;
}
//-------------------------------------------------
// memory_shares - return memory_shares
// -> manager:machine():memory().share[":maincpu"]
//-------------------------------------------------
luabridge::LuaRef lua_engine::l_memory_get_shares(const memory_manager *m)
{
memory_manager *mm = const_cast<memory_manager *>(m);
lua_State *L = luaThis->m_lua_state;
luabridge::LuaRef table = luabridge::LuaRef::newTable(L);
for (auto &share: mm->shares()) {
table[share.first] = share.second.get();
}
return table;
@ -1063,7 +1081,7 @@ int lua_engine::lua_addr_space::l_direct_mem_write(lua_State *L)
//-------------------------------------------------
// region_read - templated region readers for <sign>,<size>
// -> manager:machine():memory().region[":maincpu"]:read_i8(0xC000)
// -> manager:machine():memory().regions[":maincpu"]:read_i8(0xC000)
//-------------------------------------------------
template <typename T>
@ -1097,7 +1115,7 @@ int lua_engine::lua_memory_region::l_region_read(lua_State *L)
//-------------------------------------------------
// region_write - templated region writer for <sign>,<size>
// -> manager:machine():memory().region[":maincpu"]:write_u16(0xC000, 0xF00D)
// -> manager:machine():memory().regions[":maincpu"]:write_u16(0xC000, 0xF00D)
//-------------------------------------------------
template <typename T>
@ -1124,6 +1142,71 @@ int lua_engine::lua_memory_region::l_region_write(lua_State *L)
return 0;
}
//-------------------------------------------------
// share_read - templated share readers for <sign>,<size>
// -> manager:machine():memory().shares[":maincpu"]:read_i8(0xC000)
//-------------------------------------------------
template <typename T>
int lua_engine::lua_memory_share::l_share_read(lua_State *L)
{
memory_share &share = luabridge::Stack<memory_share &>::get(L, 1);
luaL_argcheck(L, lua_isnumber(L, 2), 2, "address (integer) expected");
offs_t address = lua_tounsigned(L, 2);
T mem_content = 0;
offs_t lowmask = share.bytewidth() - 1;
UINT8* ptr = (UINT8*)share.ptr();
for(int i = 0; i < sizeof(T); i++)
{
int addr = share.endianness() == ENDIANNESS_LITTLE ? address + sizeof(T) - 1 - i : address + i;
if(addr >= share.bytes())
continue;
mem_content <<= 8;
if(share.endianness() == ENDIANNESS_BIG)
mem_content |= ptr[(BYTE8_XOR_BE(addr) & lowmask) | (addr & ~lowmask)];
else
mem_content |= ptr[(BYTE8_XOR_LE(addr) & lowmask) | (addr & ~lowmask)];
}
if (std::numeric_limits<T>::is_signed) {
lua_pushinteger(L, mem_content);
} else {
lua_pushunsigned(L, mem_content);
}
return 1;
}
//-------------------------------------------------
// share_write - templated share writer for <sign>,<size>
// -> manager:machine():memory().shares[":maincpu"]:write_u16(0xC000, 0xF00D)
//-------------------------------------------------
template <typename T>
int lua_engine::lua_memory_share::l_share_write(lua_State *L)
{
memory_share &share = luabridge::Stack<memory_share &>::get(L, 1);
luaL_argcheck(L, lua_isnumber(L, 2), 2, "address (integer) expected");
luaL_argcheck(L, lua_isnumber(L, 3), 3, "value (integer) expected");
offs_t address = lua_tounsigned(L, 2);
T val = lua_tounsigned(L, 3);
offs_t lowmask = share.bytewidth() - 1;
UINT8* ptr = (UINT8*)share.ptr();
for(int i = 0; i < sizeof(T); i++)
{
int addr = share.endianness() == ENDIANNESS_BIG ? address + sizeof(T) - 1 - i : address + i;
if(addr >= share.bytes())
continue;
if(share.endianness() == ENDIANNESS_BIG)
ptr[(BYTE8_XOR_BE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
else
ptr[(BYTE8_XOR_BE(addr) & lowmask) | (addr & ~lowmask)] = val & 0xff;
val >>= 8;
}
return 0;
}
luabridge::LuaRef lua_engine::l_addr_space_map(const address_space *space)
{
lua_State *L = luaThis->m_lua_state;
@ -1546,6 +1629,17 @@ int lua_engine::lua_ui_input::l_ui_input_find_mouse(lua_State *L)
return 4;
}
int lua_engine::lua_render_target::l_render_view_bounds(lua_State *L)
{
render_target *target = luabridge::Stack<render_target *>::get(L, 1);
const render_bounds &bounds = target->current_view()->bounds();
lua_pushnumber(L, bounds.x0);
lua_pushnumber(L, bounds.x1);
lua_pushnumber(L, bounds.y0);
lua_pushnumber(L, bounds.y1);
return 4;
}
void *lua_engine::checkparam(lua_State *L, int idx, const char *tname)
{
const char *name;
@ -2308,7 +2402,10 @@ void lua_engine::initialize()
.deriveClass <ui_input_manager, lua_ui_input> ("input")
.addFunction ("pressed", &ui_input_manager::pressed)
.endClass()
.beginClass <render_target> ("target")
.beginClass <lua_render_target> ("lua_target")
.addCFunction ("view_bounds", &lua_render_target::l_render_view_bounds)
.endClass()
.deriveClass <render_target, lua_render_target> ("target")
.addFunction ("width", &render_target::width)
.addFunction ("height", &render_target::height)
.addFunction ("pixel_aspect", &render_target::pixel_aspect)
@ -2375,6 +2472,7 @@ void lua_engine::initialize()
.beginClass <memory_manager> ("memory")
.addProperty <luabridge::LuaRef, void> ("banks", &lua_engine::l_memory_get_banks)
.addProperty <luabridge::LuaRef, void> ("regions", &lua_engine::l_memory_get_regions)
.addProperty <luabridge::LuaRef, void> ("shares", &lua_engine::l_memory_get_shares)
.endClass()
.beginClass <lua_memory_region> ("lua_region")
.addCFunction ("read_i8", &lua_memory_region::l_region_read<INT8>)
@ -2394,6 +2492,30 @@ void lua_engine::initialize()
.addCFunction ("write_i64", &lua_memory_region::l_region_write<INT64>)
.addCFunction ("write_u64", &lua_memory_region::l_region_write<UINT64>)
.endClass()
.deriveClass <memory_region, lua_memory_region> ("region")
.addProperty <UINT32> ("size", &memory_region::bytes)
.endClass()
.beginClass <lua_memory_share> ("lua_share")
.addCFunction ("read_i8", &lua_memory_share::l_share_read<INT8>)
.addCFunction ("read_u8", &lua_memory_share::l_share_read<UINT8>)
.addCFunction ("read_i16", &lua_memory_share::l_share_read<INT16>)
.addCFunction ("read_u16", &lua_memory_share::l_share_read<UINT16>)
.addCFunction ("read_i32", &lua_memory_share::l_share_read<INT32>)
.addCFunction ("read_u32", &lua_memory_share::l_share_read<UINT32>)
.addCFunction ("read_i64", &lua_memory_share::l_share_read<INT64>)
.addCFunction ("read_u64", &lua_memory_share::l_share_read<UINT64>)
.addCFunction ("write_i8", &lua_memory_share::l_share_write<INT8>)
.addCFunction ("write_u8", &lua_memory_share::l_share_write<UINT8>)
.addCFunction ("write_i16", &lua_memory_share::l_share_write<INT16>)
.addCFunction ("write_u16", &lua_memory_share::l_share_write<UINT16>)
.addCFunction ("write_i32", &lua_memory_share::l_share_write<INT32>)
.addCFunction ("write_u32", &lua_memory_share::l_share_write<UINT32>)
.addCFunction ("write_i64", &lua_memory_share::l_share_write<INT64>)
.addCFunction ("write_u64", &lua_memory_share::l_share_write<UINT64>)
.endClass()
.deriveClass <memory_share, lua_memory_share> ("region")
.addProperty <size_t> ("size", &memory_share::bytes)
.endClass()
.beginClass <output_manager> ("output")
.addFunction ("set_value", &output_manager::set_value)
.addFunction ("set_indexed_value", &output_manager::set_indexed_value)
@ -2402,9 +2524,6 @@ void lua_engine::initialize()
.addFunction ("name_to_id", &output_manager::name_to_id)
.addFunction ("id_to_name", &output_manager::id_to_name)
.endClass()
.deriveClass <memory_region, lua_memory_region> ("region")
.addProperty <UINT32> ("size", &memory_region::bytes)
.endClass()
.beginClass <device_image_interface> ("image")
.addFunction ("exists", &device_image_interface::exists)
.addFunction ("filename", &device_image_interface::filename)

View File

@ -198,6 +198,11 @@ private:
};
static luabridge::LuaRef l_memory_get_banks(const memory_manager *m);
static luabridge::LuaRef l_memory_get_shares(const memory_manager *m);
struct lua_memory_share {
template<typename T> int l_share_read(lua_State *L);
template<typename T> int l_share_write(lua_State *L);
};
static luabridge::LuaRef l_memory_get_regions(const memory_manager *m);
struct lua_memory_region {
template<typename T> int l_region_read(lua_State *L);
@ -208,6 +213,10 @@ private:
int l_ui_input_find_mouse(lua_State *L);
};
struct lua_render_target {
int l_render_view_bounds(lua_State *L);
};
struct lua_emu_file {
lua_emu_file(const char *searchpath, UINT32 openflags) :
path(searchpath),

View File

@ -188,6 +188,8 @@ void menu::exit(running_machine &machine)
}
icons_bitmap.clear();
sw_toolbar_bitmap.clear();
toolbar_bitmap.clear();
m_old_icons.clear();
}
@ -2274,9 +2276,9 @@ void menu::draw_toolbar(float x1, float y1, float x2, float y2, bool software)
for (auto & e : t_bitmap)
if (e->valid()) m_valid++;
float space_x = (y2 - y1) * container->manager().ui_aspect();
float total = (m_valid * space_x) + ((m_valid - 1) * 0.001f);
x1 = ((x2 - x1) * 0.5f) - (total / 2);
float space_x = (y2 - y1) * container->manager().ui_aspect(container);
auto total = (float)(m_valid * space_x) + ((float)(m_valid - 1) * 0.001f);
x1 += (x2 - x1) * 0.5f - total * 0.5f;
x2 = x1 + space_x;
for (int z = 0; z < UI_TOOLBAR_BUTTONS; ++z)

View File

@ -408,7 +408,7 @@ ROM_START( maddoga )
ROM_LOAD16_BYTE( "maddog_02.dat", 0x000001, 0x10000, CRC(f64014ec) SHA1(d343a2cb5d8992153b8c916f39b11d3db736543d))
DISK_REGION( "laserdisc" )
DISK_IMAGE_READONLY( "maddoga", 0, SHA1(a05ef13979882e0964d030169789ac4f58db10d0) )
DISK_IMAGE_READONLY( "maddoga", 0, NO_DUMP )
ROM_END

View File

@ -950,8 +950,8 @@ void apollo_state::machine_start(){
MACHINE_START_CALL_MEMBER(apollo);
// install nop handlers for unmapped ISA bus addresses
m_isa->install16_device(0, ATBUS_IO_END, read16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_r), this), write16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_w), this));
m_isa->install_memory(0, ATBUS_MEMORY_END, read8_delegate(FUNC(apollo_state::apollo_atbus_unmap_r), this), write8_delegate(FUNC(apollo_state::apollo_atbus_unmap_w), this));
m_isa->install16_device((ATBUS_IO_BASE - 0x40000) >> 7, (ATBUS_IO_END - 0x40000) >> 7, read16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_r), this), write16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_w), this));
m_isa->install_memory(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END, read8_delegate(FUNC(apollo_state::apollo_atbus_unmap_r), this), write8_delegate(FUNC(apollo_state::apollo_atbus_unmap_w), this));
}
/***************************************************************************

View File

@ -863,7 +863,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( brixian_map, AS_PROGRAM, 8, arkanoid_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("protram") AM_REGION("maincpu", 0xc000)
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("protram")
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
AM_RANGE(0xd001, 0xd001) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
AM_RANGE(0xd008, 0xd008) AM_WRITE(brixian_d008_w) /* gfx bank, flip screen etc. */

View File

@ -316,7 +316,7 @@ ROM_START( asterix )
ROM_REGION( 0x200000, "k053260", 0 )
ROM_LOAD( "068a06.1e", 0x000000, 0x200000, CRC(6df9ec0e) SHA1(cee60312e9813bd6579f3ac7c3c2521a8e633eca) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "asterix.nv", 0x0000, 0x0080, CRC(490085c8) SHA1(2a79e7c79db4b4fb0e6a7249cfd6a57e74b170e3) )
ROM_END
@ -341,7 +341,7 @@ ROM_START( asterixeac )
ROM_REGION( 0x200000, "k053260", 0 )
ROM_LOAD( "068a06.1e", 0x000000, 0x200000, CRC(6df9ec0e) SHA1(cee60312e9813bd6579f3ac7c3c2521a8e633eca) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "asterixeac.nv", 0x0000, 0x0080, CRC(490085c8) SHA1(2a79e7c79db4b4fb0e6a7249cfd6a57e74b170e3) )
ROM_END
@ -366,7 +366,7 @@ ROM_START( asterixeaa )
ROM_REGION( 0x200000, "k053260", 0 )
ROM_LOAD( "068a06.1e", 0x000000, 0x200000, CRC(6df9ec0e) SHA1(cee60312e9813bd6579f3ac7c3c2521a8e633eca) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "asterixeaa.nv", 0x0000, 0x0080, CRC(30275de0) SHA1(4bbf90a4e5b20406153329e9e7c4c2bf72676f8d) )
ROM_END
@ -391,7 +391,7 @@ ROM_START( asterixaad )
ROM_REGION( 0x200000, "k053260", 0 )
ROM_LOAD( "068a06.1e", 0x000000, 0x200000, CRC(6df9ec0e) SHA1(cee60312e9813bd6579f3ac7c3c2521a8e633eca) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "asterixaad.nv", 0x0000, 0x0080, CRC(bcca86a7) SHA1(1191b0011749e2516df723c9d63da9c2304fa594) )
ROM_END
@ -416,7 +416,7 @@ ROM_START( asterixj )
ROM_REGION( 0x200000, "k053260", 0 )
ROM_LOAD( "068a06.1e", 0x000000, 0x200000, CRC(6df9ec0e) SHA1(cee60312e9813bd6579f3ac7c3c2521a8e633eca) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "asterixj.nv", 0x0000, 0x0080, CRC(84229f2c) SHA1(34c7491c731fbf741dfd53bfc559d91201ccfb03) )
ROM_END

View File

@ -370,7 +370,7 @@ WRITE32_MEMBER(atlantis_state::status_leds_w)
case 0xfe: digit = '-'; break;
case 0xff: digit = 'Z'; break;
}
popmessage("LED: %c", digit);
//popmessage("LED: %c", digit);
osd_printf_debug("%06X: status_leds_w digit: %c %08x = %02x\n", machine().device("maincpu")->safe_pc(), digit, offset, data);
logerror("%06X: status_leds_w digit: %c %08x = %02x\n", machine().device("maincpu")->safe_pc(), digit, offset, data);
}
@ -818,6 +818,7 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state )
/* video hardware */
MCFG_DEVICE_ADD("zeus2", ZEUS2, ZEUS2_VIDEO_CLOCK)
MCFG_ZEUS2_FLOAT_MODE(1)
MCFG_ZEUS2_IRQ_CB(WRITELINE(atlantis_state, zeus_irq))
MCFG_ZEUS2_VBLANK_CB(WRITELINE(atlantis_state, vblank_irq))

View File

@ -10,7 +10,7 @@
#include "emu.h"
#include "cpu/mcs51/mcs51.h"
#include "cpu/m6805/m6805.h"
#include "cpu/m6800/m6800.h"
#include "includes/banctec.h"
#include "video/mc6845.h"
@ -87,7 +87,7 @@ static MACHINE_CONFIG_START( banctec, banctec_state )
MCFG_CPU_ADD("maincpu", I80C31, XTAL_11_0592MHz)
MCFG_CPU_PROGRAM_MAP(banctec_mem)
MCFG_CPU_ADD("mcu", M6805, 4000000) /* Actual MCU is a Motorola 6803 and the clock frequency is still unknown */
MCFG_CPU_ADD("mcu", M6803, 4000000) /* Actual MCU is a Motorola 6803 and the clock frequency is still unknown */
MCFG_CPU_PROGRAM_MAP(banctec_mcu_mem)
// The video signal is generated by a R6545EAP character generator chip

View File

@ -82,7 +82,6 @@ public:
DECLARE_READ8_MEMBER(mux_r);
DECLARE_WRITE8_MEMBER(mux_w);
virtual void machine_reset() override;
DECLARE_WRITE_LINE_MEMBER(big10_vdp_interrupt);
required_device<cpu_device> m_maincpu;
required_ioport m_in1;
required_ioport m_in2;
@ -93,17 +92,6 @@ public:
#define VDP_MEM 0x40000
/***************************************
* Interrupt handling & Video *
***************************************/
WRITE_LINE_MEMBER(big10_state::big10_vdp_interrupt)
{
m_maincpu->set_input_line(0, (state ? ASSERT_LINE : CLEAR_LINE));
}
/*************************************
* Machine Reset *
*************************************/
@ -245,7 +233,7 @@ static MACHINE_CONFIG_START( big10, big10_state )
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MASTER_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(big10_state, big10_vdp_interrupt))
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK)
/* sound hardware */

View File

@ -27,7 +27,7 @@ public:
static ADDRESS_MAP_START( bingo_map, AS_PROGRAM, 8, bingo_state )
AM_RANGE(0x0000, 0xffff) AM_NOP
AM_RANGE(0x0000, 0x7fff) AM_NOP
AM_RANGE(0x0000, 0x1eff) AM_ROM
AM_RANGE(0x1f00, 0x1fff) AM_RAM
ADDRESS_MAP_END

View File

@ -65,25 +65,25 @@ MACHINE_RESET_MEMBER(blstroid_state,blstroid)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, blstroid_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x83ffff)
AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x7c0000) AM_ROM
AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x7f81fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x7f81fe) AM_WRITE(scanline_int_ack_w)
AM_RANGE(0x800400, 0x800401) AM_MIRROR(0x7f81fe) AM_WRITE(video_int_ack_w)
AM_RANGE(0x800600, 0x800601) AM_MIRROR(0x7f81fe) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write)
AM_RANGE(0x800800, 0x8009ff) AM_MIRROR(0x7f8000) AM_WRITEONLY AM_SHARE("priorityram")
AM_RANGE(0x800a00, 0x800a01) AM_MIRROR(0x7f81fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff)
AM_RANGE(0x800c00, 0x800c01) AM_MIRROR(0x7f81fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w)
AM_RANGE(0x800e00, 0x800e01) AM_MIRROR(0x7f81fe) AM_WRITE(blstroid_halt_until_hblank_0_w)
AM_RANGE(0x801400, 0x801401) AM_MIRROR(0x7f83fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff)
AM_RANGE(0x801800, 0x801801) AM_MIRROR(0x7f83f8) AM_READ_PORT("DIAL0")
AM_RANGE(0x801804, 0x801805) AM_MIRROR(0x7f83f8) AM_READ_PORT("DIAL1")
AM_RANGE(0x801c00, 0x801c01) AM_MIRROR(0x7f83fc) AM_READ_PORT("IN0")
AM_RANGE(0x801c02, 0x801c03) AM_MIRROR(0x7f83fc) AM_READ_PORT("IN1")
AM_RANGE(0x802000, 0x8023ff) AM_MIRROR(0x7f8c00) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x803000, 0x8033ff) AM_MIRROR(0x7f8c00) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff)
AM_RANGE(0x804000, 0x804fff) AM_MIRROR(0x7f8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write) AM_SHARE("playfield")
AM_RANGE(0x805000, 0x805fff) AM_MIRROR(0x7f8000) AM_RAM AM_SHARE("mob")
AM_RANGE(0x806000, 0x807fff) AM_MIRROR(0x7f8000) AM_RAM
AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x000000) AM_ROM
AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x0381fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x0381fe) AM_WRITE(scanline_int_ack_w)
AM_RANGE(0x800400, 0x800401) AM_MIRROR(0x0381fe) AM_WRITE(video_int_ack_w)
AM_RANGE(0x800600, 0x800601) AM_MIRROR(0x0381fe) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write)
AM_RANGE(0x800800, 0x8009ff) AM_MIRROR(0x038000) AM_WRITEONLY AM_SHARE("priorityram")
AM_RANGE(0x800a00, 0x800a01) AM_MIRROR(0x0381fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff)
AM_RANGE(0x800c00, 0x800c01) AM_MIRROR(0x0381fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w)
AM_RANGE(0x800e00, 0x800e01) AM_MIRROR(0x0381fe) AM_WRITE(blstroid_halt_until_hblank_0_w)
AM_RANGE(0x801400, 0x801401) AM_MIRROR(0x0383fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff)
AM_RANGE(0x801800, 0x801801) AM_MIRROR(0x0383f8) AM_READ_PORT("DIAL0")
AM_RANGE(0x801804, 0x801805) AM_MIRROR(0x0383f8) AM_READ_PORT("DIAL1")
AM_RANGE(0x801c00, 0x801c01) AM_MIRROR(0x0383fc) AM_READ_PORT("IN0")
AM_RANGE(0x801c02, 0x801c03) AM_MIRROR(0x0383fc) AM_READ_PORT("IN1")
AM_RANGE(0x802000, 0x8023ff) AM_MIRROR(0x038c00) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x803000, 0x8033ff) AM_MIRROR(0x038c00) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff)
AM_RANGE(0x804000, 0x804fff) AM_MIRROR(0x038000) AM_RAM_DEVWRITE("playfield", tilemap_device, write) AM_SHARE("playfield")
AM_RANGE(0x805000, 0x805fff) AM_MIRROR(0x038000) AM_RAM AM_SHARE("mob")
AM_RANGE(0x806000, 0x807fff) AM_MIRROR(0x038000) AM_RAM
ADDRESS_MAP_END

View File

@ -114,7 +114,6 @@ public:
DECLARE_READ8_MEMBER(cliff_irq_ack_r);
DECLARE_WRITE8_MEMBER(cliff_ldwire_w);
DECLARE_WRITE8_MEMBER(cliff_sound_overlay_w);
DECLARE_WRITE_LINE_MEMBER(vdp_interrupt);
DECLARE_DRIVER_INIT(cliff);
virtual void machine_start() override;
virtual void machine_reset() override;
@ -221,13 +220,6 @@ TIMER_CALLBACK_MEMBER(cliffhgr_state::cliff_irq_callback)
m_irq_timer->adjust(m_screen->time_until_pos(param * 2), param);
}
WRITE_LINE_MEMBER(cliffhgr_state::vdp_interrupt)
{
m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
}
void cliffhgr_state::machine_start()
{
m_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cliffhgr_state::cliff_irq_callback),this));
@ -695,7 +687,7 @@ static MACHINE_CONFIG_START( cliffhgr, cliffhgr_state )
/* start with the TMS9928a video configuration */
MCFG_DEVICE_ADD( "tms9928a", TMS9128, XTAL_10_738635MHz / 2 ) /* TMS9128NL on the board */
MCFG_TMS9928A_VRAM_SIZE(0x4000)
MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(cliffhgr_state, vdp_interrupt))
MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
/* override video rendering and raw screen info */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")

View File

@ -61,9 +61,7 @@ WRITE8_MEMBER(comquest_state::comquest_write)
static ADDRESS_MAP_START( comquest_mem , AS_PROGRAM, 8, comquest_state )
// { 0x0000, 0x7fff, SMH_BANK(1) },
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xffff) AM_READONLY AM_WRITENOP
// { 0x8000, 0xffff, SMH_RAM }, // batterie buffered
AM_RANGE(0x0000, 0xfff) AM_ROM
ADDRESS_MAP_END
static INPUT_PORTS_START( comquest )

View File

@ -681,9 +681,6 @@ static ADDRESS_MAP_START( coolpool_dsp_io_map, AS_IO, 16, coolpool_state )
AM_RANGE(0x04, 0x04) AM_READ(dsp_rom_r)
AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0")
AM_RANGE(0x07, 0x07) AM_READ_PORT("IN1")
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(dsp_bio_line_r)
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_line_r)
// AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE(dsp_HOLDA_signal_w)
ADDRESS_MAP_END
@ -837,6 +834,9 @@ static MACHINE_CONFIG_START( coolpool, coolpool_state )
MCFG_CPU_ADD("dsp", TMS32026,XTAL_40MHz)
MCFG_CPU_PROGRAM_MAP(coolpool_dsp_pgm_map)
MCFG_CPU_IO_MAP(coolpool_dsp_io_map)
MCFG_TMS32025_BIO_IN_CB(READ16(coolpool_state, dsp_bio_line_r))
MCFG_TMS32025_HOLD_IN_CB(READ16(coolpool_state, dsp_hold_line_r))
// MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(coolpool_state, dsp_HOLDA_signal_w))
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,coolpool)
MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -3005,7 +3005,7 @@ WRITE32_MEMBER(coolridr_state::sysh1_sound_dma_w)
static ADDRESS_MAP_START( coolridr_submap, AS_PROGRAM, 32, coolridr_state )
AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_SHARE("share2") // note: SH7032 only supports 64KB
AM_RANGE(0x00000000, 0x0001ffff) AM_ROM // note: SH7032 only supports 64KB
AM_RANGE(0x01000000, 0x0100ffff) AM_RAM //communication RAM
@ -3031,9 +3031,6 @@ static ADDRESS_MAP_START( coolridr_submap, AS_PROGRAM, 32, coolridr_state )
AM_RANGE(0x0610001c, 0x0610001f) AM_READWRITE8(analog_mux_r,analog_mux_w,0x000000ff) //AM_WRITENOP
AM_RANGE(0x06200000, 0x06200fff) AM_RAM //network related?
AM_RANGE(0x07ffe000, 0x07ffffff) AM_RAM // On-Chip RAM (actually mapped at 0x0fffe000-0x0fffffff)
AM_RANGE(0x20000000, 0x2001ffff) AM_ROM AM_SHARE("share2")
AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP
ADDRESS_MAP_END
static ADDRESS_MAP_START( aquastge_submap, AS_PROGRAM, 32, coolridr_state )

View File

@ -235,8 +235,7 @@ static ADDRESS_MAP_START( csplayh5_sound_map, AS_PROGRAM, 8, csplayh5_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( csplayh5_sound_io_map, AS_IO, 8, csplayh5_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x80, 0x81) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_DEVWRITE("ymsnd", ym3812_device, write)
ADDRESS_MAP_END

View File

@ -229,11 +229,11 @@ INTERRUPT_GEN_MEMBER(cvs_state::cvs_main_cpu_interrupt)
}
static void cvs_slave_cpu_interrupt( cpu_device *cpu, int state )
WRITE_LINE_MEMBER(cvs_state::cvs_slave_cpu_interrupt)
{
cpu->set_input_line_vector(0, 0x03);
//cpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
cpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
m_audiocpu->set_input_line_vector(0, 0x03);
//m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
m_audiocpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
}
@ -435,7 +435,7 @@ WRITE8_MEMBER(cvs_state::audio_command_w)
LOG(("data %02x\n", data));
/* cause interrupt on audio CPU if bit 7 set */
m_soundlatch->write(space, 0, data);
cvs_slave_cpu_interrupt(m_audiocpu, data & 0x80 ? 1 : 0);
cvs_slave_cpu_interrupt(data & 0x80 ? 1 : 0);
}

View File

@ -1077,7 +1077,7 @@ ROM_START( hxhdci2k )
ROM_SYSTEM_BIOS( 0, "FW10005", "HDCI REV 1.0 RHDXSCI 1.00.05" ) /* 19 AUG 2008 */
ROM_LOAD16_WORD_SWAP( "28f320j3d.bin", 0x000000, 0x400000, BAD_DUMP CRC(63d98942) SHA1(c5b8d701677a3edc25f203854f44953b19c9158d) )
ROM_REGION16_BE( 0x2000, "eeprom", 0 )
ROM_REGION( 0x2000, "eeprom", 0 )
ROM_LOAD( "24lc64.bin", 0x0000, 0x2000, NO_DUMP)
ROM_END

View File

@ -569,7 +569,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ddragonba_sub_portmap, AS_IO, 8, ddragon_state )
AM_RANGE(0x0000, 0xffff) AM_WRITE(ddragonba_port_w)
AM_RANGE(0x0000, 0x01ff) AM_WRITE(ddragonba_port_w)
ADDRESS_MAP_END

View File

@ -288,7 +288,7 @@ WRITE16_MEMBER( deco_mlc_state::sh96_protection_region_0_146_w )
/******************************************************************************/
static ADDRESS_MAP_START( decomlc_map, AS_PROGRAM, 32, deco_mlc_state )
static ADDRESS_MAP_START( avengrgs_map, AS_PROGRAM, 32, deco_mlc_state )
AM_RANGE(0x0000000, 0x00fffff) AM_ROM AM_MIRROR(0xff000000)
AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_SHARE("mlc_ram") AM_MIRROR(0xff000000)
AM_RANGE(0x0200000, 0x0200003) AM_READ(mlc_200000_r) AM_MIRROR(0xff000000)
@ -308,7 +308,29 @@ static ADDRESS_MAP_START( decomlc_map, AS_PROGRAM, 32, deco_mlc_state )
AM_RANGE(0x044001c, 0x044001f) AM_READWRITE(mlc_44001c_r, mlc_44001c_w) AM_MIRROR(0xff000000)
AM_RANGE(0x0500000, 0x0500003) AM_WRITE(avengrs_eprom_w) AM_MIRROR(0xff000000)
AM_RANGE(0x0600000, 0x0600007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff000000) AM_MIRROR(0xff000000)
AM_RANGE(0x070f000, 0x070ffff) AM_READWRITE16(sh96_protection_region_0_146_r, sh96_protection_region_0_146_w, 0xffff0000) AM_MIRROR(0xff000000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( decomlc_map, AS_PROGRAM, 32, deco_mlc_state )
AM_RANGE(0x0000000, 0x00fffff) AM_ROM
AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_SHARE("mlc_ram")
AM_RANGE(0x0200000, 0x0200003) AM_READ(mlc_200000_r)
AM_RANGE(0x0200004, 0x0200007) AM_READ(mlc_200004_r)
AM_RANGE(0x0200070, 0x0200073) AM_READ(mlc_200070_r)
AM_RANGE(0x0200074, 0x0200077) AM_READ(mlc_scanline_r)
AM_RANGE(0x020007c, 0x020007f) AM_READ(mlc_20007c_r)
AM_RANGE(0x0200000, 0x020007f) AM_WRITE(mlc_irq_w) AM_SHARE("irq_ram")
AM_RANGE(0x0200080, 0x02000ff) AM_RAM AM_SHARE("mlc_clip_ram")
AM_RANGE(0x0204000, 0x0206fff) AM_READWRITE( mlc_spriteram_r, mlc_spriteram_w )
AM_RANGE(0x0280000, 0x029ffff) AM_RAM AM_SHARE("mlc_vram")
AM_RANGE(0x0300000, 0x0307fff) AM_RAM_WRITE(avengrs_palette_w) AM_SHARE("paletteram")
AM_RANGE(0x0400000, 0x0400003) AM_READ_PORT("INPUTS")
AM_RANGE(0x0440000, 0x0440003) AM_READ_PORT("INPUTS2")
AM_RANGE(0x0440004, 0x0440007) AM_READ_PORT("INPUTS3")
AM_RANGE(0x0440008, 0x044000b) AM_READ(mlc_440008_r)
AM_RANGE(0x044001c, 0x044001f) AM_READWRITE(mlc_44001c_r, mlc_44001c_w)
AM_RANGE(0x0500000, 0x0500003) AM_WRITE(avengrs_eprom_w)
AM_RANGE(0x0600000, 0x0600007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff000000)
AM_RANGE(0x070f000, 0x070ffff) AM_READWRITE16(sh96_protection_region_0_146_r, sh96_protection_region_0_146_w, 0xffff0000)
ADDRESS_MAP_END
/******************************************************************************/
@ -482,7 +504,7 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SH2,42000000/2) /* 21 MHz clock confirmed on real board */
MCFG_CPU_PROGRAM_MAP(decomlc_map)
MCFG_CPU_PROGRAM_MAP(avengrgs_map)
MCFG_MACHINE_RESET_OVERRIDE(deco_mlc_state,mlc)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* Actually 93c45 */

View File

@ -802,7 +802,7 @@ ROM_START( dlair ) /* revision F2 */
ROM_LOAD( "dl_f2_u4.bin", 0x6000, 0x2000, CRC(f5ec23d2) SHA1(71149e2d359cc5944fbbb53dd7d0c2b42fbc9bb4) )
DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "dlair", 0, SHA1(da70bac4fe526e48d556ad3fea72cde022c26648) )
DISK_IMAGE_READONLY( "dlair", 0, NO_DUMP )
ROM_END
ROM_START( dlair_1 ) /* Serial #001, courtesy Jason Finn */
@ -951,7 +951,7 @@ ROM_START( spaceace ) /* revision A3 */
ROM_LOAD( "sa_a3_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
DISK_IMAGE_READONLY( "space_ace_ver2", 0, NO_DUMP )
ROM_END
ROM_START( spaceacea2 ) /* revision A2 */
@ -963,7 +963,7 @@ ROM_START( spaceacea2 ) /* revision A2 */
ROM_LOAD( "sa_a2_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
DISK_IMAGE_READONLY( "space_ace_ver2", 0, NO_DUMP )
ROM_END
ROM_START( spaceacea ) /* revision A */
@ -975,7 +975,7 @@ ROM_START( spaceacea ) /* revision A */
ROM_LOAD( "sa_a_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
DISK_REGION( "ld_ldv1000" )
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
DISK_IMAGE_READONLY( "space_ace_ver2", 0, NO_DUMP )
ROM_END
ROM_START( spaceaceeuro ) /* Italian Sidam version */

View File

@ -421,7 +421,7 @@ DRIVER_INIT_MEMBER(drw80pkr_state,drw80pkr)
*************************/
static ADDRESS_MAP_START( drw80pkr_map, AS_PROGRAM, 8, drw80pkr_state )
AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1")
AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
static ADDRESS_MAP_START( drw80pkr_io_map, AS_IO, 8, drw80pkr_state )

View File

@ -1088,7 +1088,7 @@ ROM_START( hedpanic ) /* Story line & game instructions in English */
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x000000, 0x020000, CRC(3c11c590) SHA1(cb33845c3dc0501fff8055c2d66f412881089df1) ) /* AT27010 mask rom */
ROM_REGION( 0x80, "eeprom", 0 )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD( "hedpanic.nv", 0x0000, 0x0080, CRC(e91f4038) SHA1(f492de71170900f87912a272ab4f4a3a37ba31fe) )
ROM_END
@ -1115,7 +1115,7 @@ ROM_START( hedpanicf ) /* Story line in Japanese, game instructions in English *
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.su10", 0x000000, 0x020000, CRC(3c11c590) SHA1(cb33845c3dc0501fff8055c2d66f412881089df1) ) /* AT27010 mask rom */
ROM_REGION( 0x80, "eeprom", 0 )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD( "hedpanic.nv", 0x0000, 0x0080, CRC(e91f4038) SHA1(f492de71170900f87912a272ab4f4a3a37ba31fe) )
ROM_END
@ -1142,7 +1142,7 @@ ROM_START( hedpanico ) /* Story line & game instructions in English, copyright y
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "esd4.rom", 0x000000, 0x020000, CRC(d7ca6806) SHA1(8ad668bfb5b7561cc0f3e36dfc3c936b136a4274) ) /* SU10 */
ROM_REGION( 0x80, "eeprom", 0 )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD( "hedpanic.nv", 0x0000, 0x0080, CRC(e91f4038) SHA1(f492de71170900f87912a272ab4f4a3a37ba31fe) )
ROM_END

View File

@ -516,7 +516,7 @@ ROM_START(fireball)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("euroball-89-07-13-c026.bin", 0x0000, 0x2000, CRC(cab3fc1c) SHA1(bcf0d17e26f2d9f5e20bda258728c989ea138702))
ROM_REGION( 0x20, "eeprom", 0 ) // default eeprom must have some specific value at 0x03 at least
ROM_REGION16_BE( 0x20, "eeprom", 0 ) // default eeprom must have some specific value at 0x03 at least
ROM_LOAD( "fireball.nv", 0x0000, 0x020, CRC(1d0f5f0f) SHA1(8e68fcd8782f39ed3b1df6162db9be83cb3335e4) ) //default setting
ROM_END

View File

@ -702,7 +702,7 @@ ROM_START( fortecar )
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, BAD_DUMP CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
ROM_REGION( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
ROM_REGION16_BE( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, BAD_DUMP CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
ROM_REGION( 0x200, "proms", 0 )
@ -721,7 +721,7 @@ ROM_START( fortecrd )
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
ROM_REGION( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
ROM_REGION16_BE( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
ROM_REGION( 0x0200, "proms", 0 )

View File

@ -915,6 +915,9 @@ ADDRESS_MAP_END
W 9A00-B7FF FF
RW B000-B7FF 00
Flaming7 custom hardware writes the bonus
graphics at 9A80-9A89, and the "reel scroll"
at B0C0-B0FF...
*/
WRITE8_MEMBER(wingco_state::magodds_outb850_w)
@ -6913,7 +6916,7 @@ static INPUT_PORTS_START( cmtetris )
INPUT_PORTS_END
static INPUT_PORTS_START( flaming7 )
static INPUT_PORTS_START( flam7_w4 )
PORT_START("IN0") /* b800 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_NAME("Button Lockout")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1 - Big")
@ -7063,6 +7066,157 @@ static INPUT_PORTS_START( flaming7 )
INPUT_PORTS_END
static INPUT_PORTS_START( flaming7 )
PORT_START("IN0") /* b800 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_NAME("Button Lockout")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1 - Big")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3 - Double-Up")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 - Take Score")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet 1")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 - Low")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start")
PORT_START("IN1") /* b801 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN2") /* b802 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( "fl7w4_id", ds2401_device, read ) // Same input, different device.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN3") /* b810 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("Main Door SW")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) PORT_NAME("Change")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) PORT_NAME("Logic Door SW")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) PORT_NAME("Cash Door SW")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_T) PORT_NAME("IN3-5")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coin B") // confirmed.
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin A") // confirmed.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Coin C or Mars") // confirmed.
PORT_START("IN4") /* b811 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("WT RXD")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("COUT RTS") // related to hopper...
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y) PORT_NAME("IN4-3")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) PORT_NAME("IN4-4 Active") // This one is active in real PCB.
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) PORT_NAME("IN4-5")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Collect")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Books / Stats / Setup") PORT_TOGGLE
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, "Credits Out" ) PORT_DIPLOCATION("DSW1:1,2")
PORT_DIPSETTING( 0x03, "Amusement (no credits out)" )
PORT_DIPSETTING( 0x02, "Ticket Printer" )
PORT_DIPSETTING( 0x01, "Hopper Payout" )
PORT_DIPSETTING( 0x00, "Remote Clear" )
PORT_DIPNAME( 0x04, 0x04, "Game Speed" ) PORT_DIPLOCATION("DSW1:3")
PORT_DIPSETTING( 0x04, "Fast Game" )
PORT_DIPSETTING( 0x00, "Slow Game" )
PORT_DIPNAME( 0x08, 0x08, "Lock-Up on 7 or 8 of a kind" ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x08, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_DIPNAME( 0x30, 0x30, "Graphics Type" ) PORT_DIPLOCATION("DSW1:5,6")
PORT_DIPSETTING( 0x30, "Regular Fruit" )
PORT_DIPSETTING( 0x20, "Numbers" )
PORT_DIPSETTING( 0x10, "Graphics Option 1" )
PORT_DIPSETTING( 0x00, "Graphics Option 2" )
PORT_DIPNAME( 0xc0, 0xc0, "Paytable" ) PORT_DIPLOCATION("DSW1:7,8")
PORT_DIPSETTING( 0xc0, "9322" )
PORT_DIPSETTING( 0x80, "9323" )
PORT_DIPSETTING( 0x40, "9324" )
PORT_DIPSETTING( 0x00, "9321" )
PORT_START("DSW2")
PORT_DIPNAME( 0x07, 0x07, "Bonus Pay" ) PORT_DIPLOCATION("DSW2:1,2,3") // percentage of how quickly the internal progressive advances.
PORT_DIPSETTING( 0x07, "1.00%" )
PORT_DIPSETTING( 0x06, "2.00%" )
PORT_DIPSETTING( 0x05, "3.30%" )
PORT_DIPSETTING( 0x04, "4.00%" )
PORT_DIPSETTING( 0x03, "5.00%" )
PORT_DIPSETTING( 0x02, "6.20%" )
PORT_DIPSETTING( 0x01, "8.30%" )
PORT_DIPSETTING( 0x00, "10%" )
PORT_DIPNAME( 0x08, 0x00, "Internal Progressive" ) PORT_DIPLOCATION("DSW2:4")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Not Used (Leave OFF)" ) PORT_DIPLOCATION("DSW2:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Not Used (Leave OFF)" ) PORT_DIPLOCATION("DSW2:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Not Used (Leave OFF)" ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Not Used (Leave OFF)" ) PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "Maximum Bet" ) PORT_DIPLOCATION("DSW3:1,2")
PORT_DIPSETTING( 0x03, "8" )
PORT_DIPSETTING( 0x02, "16" )
PORT_DIPSETTING( 0x01, "32" )
PORT_DIPSETTING( 0x00, "64" )
PORT_DIPNAME( 0x04, 0x04, "Coin-In Timeout" ) PORT_DIPLOCATION("DSW3:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x38, 0x38, "Denomination" ) PORT_DIPLOCATION("DSW3:4,5,6")
PORT_DIPSETTING( 0x38, "$1.00" )
PORT_DIPSETTING( 0x30, "50 Cents" )
PORT_DIPSETTING( 0x28, "25 Cents" )
PORT_DIPSETTING( 0x20, "10 Cents" )
PORT_DIPSETTING( 0x18, "5 Cents" )
PORT_DIPSETTING( 0x10, "5 Cents" )
PORT_DIPSETTING( 0x08, "5 Cents" )
PORT_DIPSETTING( 0x00, "5 Cents" )
PORT_DIPNAME( 0xc0, 0xc0, "Progressive Sign" ) PORT_DIPLOCATION("DSW3:7,8")
PORT_DIPSETTING( 0xc0, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, "Single Level" )
PORT_DIPSETTING( 0x40, "Multi Level" ) // use this setting *only* if using external sign.
PORT_DIPSETTING( 0x00, "Test Mode" )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x01, "Button Lockout" ) PORT_DIPLOCATION("DSW4:1") // this is used to lockout the button panel switches...
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Lockout Polarity" ) PORT_DIPLOCATION("DSW4:2")
PORT_DIPSETTING( 0x02, "Active High" )
PORT_DIPSETTING( 0x00, "Active Low" )
PORT_DIPNAME( 0x0c, 0x0c, "Printer Type" ) PORT_DIPLOCATION("DSW4:3,4")
PORT_DIPSETTING( 0x0c, "Epson 267A" )
PORT_DIPSETTING( 0x08, "Star 300" )
PORT_DIPSETTING( 0x04, "Ithaca 76" )
PORT_DIPSETTING( 0x00, "Citizen 3541" )
PORT_DIPNAME( 0x10, 0x10, "Paper Low Sensor" ) PORT_DIPLOCATION("DSW4:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Not Used (Leave OFF)" ) PORT_DIPLOCATION("DSW4:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Not Used (Leave OFF)" ) PORT_DIPLOCATION("DSW4:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Not Used (Leave OFF)" ) PORT_DIPLOCATION("DSW4:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
/*****************************************************
* Graphics Layouts & Decode *
@ -7393,6 +7547,31 @@ static const gfx_layout flaming7_tilelayout =
128*8 /* every char takes 128 consecutive bytes */
};
static const gfx_layout flam7_tw_charlayout =
{
8,8, /* 8*8 characters */
4096, /* 4096 characters */
3, /* 3 bits per pixel */
{ 2, 4, 6 }, /* the bitplanes are packed in one byte */
{ 3*8+0, 3*8+1, 2*8+0, 2*8+1, 1*8+0, 1*8+1, 0*8+0, 0*8+1 },
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
32*8 /* every char takes 32 consecutive bytes */
};
static const gfx_layout flam7_tw_tilelayout = // FIXME
{
8,32, /* 8*32 characters */
256, /* 256 tiles */
4, /* 4 bits per pixel */
{ 0, 2, 4, 6 },
{ 3*8+0, 3*8+1, 2*8+0, 1*8+0, 1*8+1, 2*8+1, 0, 1 },
{ 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8,
32*8, 36*8, 40*8, 44*8, 48*8, 52*8, 56*8, 60*8,
64*8, 68*8, 72*8, 76*8, 80*8, 84*8, 88*8, 92*8,
96*8, 100*8, 104*8, 108*8, 112*8, 116*8, 120*8, 124*8 },
128*8 /* every char takes 128 consecutive bytes */
};
static GFXDECODE_START( goldstar )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
@ -7497,11 +7676,16 @@ static GFXDECODE_START( super9 )
GFXDECODE_ENTRY( "gfx2", 0, super9_tilelayout, 128, 8 )
GFXDECODE_END
static GFXDECODE_START( flaming7 ) // still wrong... FIXME
static GFXDECODE_START( flaming7 ) // gfx 2 still wrong...
GFXDECODE_ENTRY( "gfx1", 0, flaming7_charlayout, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, flaming7_tilelayout, 104, 8 )
GFXDECODE_END
static GFXDECODE_START( flam7_tw ) // gfx 2 still wrong...
GFXDECODE_ENTRY( "gfx1", 0, flam7_tw_charlayout, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, flam7_tw_tilelayout, 104, 8 )
GFXDECODE_END
static const gfx_layout tiles8x32_4bpp_layout =
{
@ -8242,6 +8426,20 @@ static MACHINE_CONFIG_DERIVED( flaming7, lucky8 )
MCFG_DS2401_ADD("fl7w4_id")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( flam7_tw, lucky8 )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(flaming7_map)
MCFG_GFXDECODE_MODIFY("gfxdecode", flam7_tw)
// to do serial protection.
MCFG_DEVICE_MODIFY("ppi8255_0")
MCFG_I8255_OUT_PORTC_CB(WRITE8(wingco_state, fl7w4_outc802_w))
MCFG_DS2401_ADD("fl7w4_id")
MACHINE_CONFIG_END
PALETTE_INIT_MEMBER(wingco_state, magodds)
@ -14123,12 +14321,12 @@ ROM_END
| 02 | Buffalo Bills. | NO | NO |
| 03 | Cash Cabaret. | NO | NO |
| 04 | Cash Cow. | NO | NO |
| 05 | Cherry 50 Bonus. | NO | NO |
| 06 | Cherry 500 Bonus. | NO | NO |
| 07 | Cherry 1000 Bonus. | NO | NO |
| 05 | Cherry 50 Bonus. | YES | YES | Custom main 50, 500 & 2000.
| 06 | Cherry 500 Bonus. | YES | YES | Custom main 50, 500 & 2000.
| 07 | Cherry 1000 Bonus. | YES | YES | Custom main 50, 500 & 2000.
| 08 | Christmas. | NO | NO |
| 09 | Deuces Wild. | NO | NO |
| 10 | Diamond Delight. | NO | NO |
| 10 | Diamond Delight. | YES | YES | Different set. Custom main 50, 500 & 2000.
| 11 | Diamond Doubles. | NO | NO |
| 12 | Diamond Treasure. | NO | NO |
| 13 | Dream Catcher. | NO | NO |
@ -14139,7 +14337,7 @@ ROM_END
| 18 | Golden Treasure. | NO | NO |
| 19 | Greenbacks. | NO | NO |
| 20 | Harley Davidson. | NO | NO |
| 21 | Hollywood Nights. | YES | YES |
| 21 | Hollywood Nights. | YES (W4)| YES (W4) | Flaming 7's W4 version.
| 22 | Independence Day. | NO | NO |
| 23 | Jokers Wild. | NO | NO |
| 24 | Midnight Sevens. | NO | NO |
@ -14149,7 +14347,7 @@ ROM_END
| 28 | New Year's. | NO | NO |
| 29 | Prospector's Gold. | NO | NO |
| 30 | Red Hot Ice. | NO | NO |
| 31 | Red, White & Blue 7's. | YES | YES |
| 31 | Red, White & Blue 7's. | YES (W4)| YES (W4) | Flaming 7's W4 version.
| 32 | Rising Star. | NO | NO |
| 33 | Rockin' Reels. | NO | NO |
| 34 | Rolling Thunder. | NO | NO |
@ -14172,6 +14370,269 @@ ROM_END
-------------------------------------------------------------------
Original Cyberdyne Systems hardware DIP switches:
+-----------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| DIP SWITCHES BANK #1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| CREDITS OUT | NO CREDITS OUT | OFF | OFF | | | | | | |
| | TICKET PRINTER | ON | OFF | | | | | | |
| | HOPPER PAYOUT | OFF | ON | | | | | | |
| | REMOTE CLEAR | ON | ON | | | | | | |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| GAME SPEED | FAST GAME | | | OFF | | | | | |
| | SLOW GAME | | | ON | | | | | |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| LOCK UP ON 7-8 | NO | | | | OFF | | | | |
| OF ANY KIND | YES | | | | ON | | | | |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| GRAPHICS TYPE | REGULAR FRUIT | | | | | OFF | OFF | | |
| | NUMBERS | | | | | ON | OFF | | |
| | CUSTOM OPTION 1 | | | | | OFF | ON | | |
| | CUSTOM OPTION 2 | | | | | ON | ON | | |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| PAY TABLE | 9322 | | | | | | | OFF | OFF |
| | 9323 | | | | | | | ON | OFF |
| | 9324 | | | | | | | OFF | ON |
| | 9321 | | | | | | | ON | ON |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
+-----------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| DIP SWITCHES BANK #2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| BONUS PAY % | 1.0 % | OFF | OFF | OFF | | | | | |
| | 1.2 % | ON | OFF | OFF | | | | | |
| | 3.3 % | OFF | ON | OFF | | | | | |
| | 4.0 % | ON | ON | OFF | | | | | |
| | 5.0 % | OFF | OFF | ON | | | | | |
| | 6.2 % | ON | OFF | ON | | | | | |
| | 8.0 % | OFF | ON | ON | | | | | |
| | 10.0 % | ON | ON | ON | | | | | |
+----------------+-----+------------+-----+-----+-----+-----+-----+-----+-----+-----+
| INTERNAL PROGRESSIVE | ON | | | | OFF | | | | |
| | OFF | | | | ON | | | | |
+----------------+-----+------------+-----+-----+-----+-----+-----+-----+-----+-----+
| NOT USED | | | | | | OFF | OFF | OFF | OFF |
+----------------+------------------+-----+-----+-----+-----+-----+-----+-----+-----+
+-----------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| DIP SWITCHES BANK #3 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| MAXIMUM BET | 8 | OFF | OFF | | | | | | |
| | 16 | ON | OFF | | | | | | |
| | 32 | OFF | ON | | | | | | |
| | 64 | ON | ON | | | | | | |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| COIN IN-TIME OUT | OFF | | | OFF | | | | | |
| | ON | | | ON | | | | | |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| DEMONATION | $1.00 | | | | OFF | OFF | OFF | | |
| | 50 CENTS | | | | ON | OFF | OFF | | |
| | 25 CENTS | | | | OFF | ON | OFF | | |
| | 10 CENTS | | | | ON | ON | OFF | | |
| | 5 CENTS | | | | OFF | OFF | ON | | |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| PROGRESSIVE SIGN | OFF | | | | | | | OFF | OFF |
| | SINGLE LEVEL | | | | | | | ON | OFF |
| | MULTI-LEVEL | | | | | | | OFF | ON |
| | TEST MODE | | | | | | | ON | ON |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
+-----------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| DIP SWITCHES BANK #4 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| BUTTON LOCKOUT | OFF | OFF | | | | | | | |
| | ON | ON | | | | | | | |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| LOCKOUT POLARITY | ACTIVE HIGH | | OFF | | | | | | |
| | ACTIVE LOW | | ON | | | | | | |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| PRINTER TYPE | EPSON 276A | | | OFF | OFF | | | | |
| | STAR 300 | | | ON | OFF | | | | |
| | ITHACA 75 | | | OFF | ON | | | | |
| | CITIZEN 3541 | | | ON | ON | | | | |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
| PAPER LOW SENSOR | OFF | | | | | OFF | OFF | OFF | OFF |
| | ON | | | | | ON | OFF | OFF | OFF |
+------------------+----------------+-----+-----+-----+-----+-----+-----+-----+-----+
NOTE: Set bill validator DIP switches for 1 pulse per dollar. When you choose the
demonation with the DIP switch on the board, the software will know how many
credits to give per dollar.
Pay Table Diagram: (Set With DIP Switches Bank #1, numbers 7 & 8)
--- 9323 ---
3 Flaming Sevens 75 for 1
3 Sevens 40 for 1
9 Bars 15 for 1
6 Bars 12 for 1
3 Bars 10 for 1
3 Cherries 08 for 1
2 Cherries 05 for 1
1 Cherries 02 for 1
With 8 or more Bet:
9 of any one = 1000 for 1
8 of any one = 500 for 1
7 of any one = 100 for 1
If Cherry Bonus is on 5 or more Cherries, Pays Bonus.
--- 9324 ---
3 Flaming Sevens 75 for 1
3 Sevens 40 for 1
9 Bars 15 for 1
6 Bars 12 for 1
3 Bars 10 for 1
3 Cherries 08 for 1
2 Cherries 04 for 1
1 Cherries 01 for 1
With 8 or more Bet:
9 of any one = 5000 for 1
8 of any one = 2500 for 1
7 of any one = 500 for 1
If Cherry Bonus is on 5 or more Cherries, Pays Bonus.
--- 9321 ---
3 Flaming Sevens 75 for 1
3 Sevens 40 for 1
9 Bars 15 for 1
6 Bars 12 for 1
3 Bars 10 for 1
3 Cherries 08 for 1
2 Cherries 05 for 1
1 Cherries 02 for 1
With 8 or more Bet:
9 of any one = 3000 for 1
8 of any one = 1500 for 1
7 of any one = 300 for 1
If Cherry Bonus is on 5 or more Cherries, Pays Bonus.
--- 9322 ---
3 Flaming Sevens 100 for 1
3 Sevens 50 for 1
9 Bars 18 for 1
6 Bars 14 for 1
3 Bars 10 for 1
3 Cherries 10 for 1
2 Cherries 05 for 1
1 Cherries 02 for 1
With 8 or more Bet:
9 of any one = 1000 for 1
8 of any one = 500 for 1
7 of any one = 100 for 1
If Cherry Bonus is on 5 or more Cherries, Pays Bonus.
-------------------------------------------------------------------------
CYBERDYNE 72 PIN GAME LOGIC CONNECTOR
Parts Side | | | Solder Side
---------------+--+--+---------------
Red Video |01|37| Green Video
Blue Video |02|38| Video Sync
Speaker (+)|03|39| Speaker Ground
|04|40|
|05|41|
|06|42|
Drop Door SW |07|43| Change SW
Logic Door SW |08|44| Main Door SW
Start Switch |09|45|
Low Switch |10|46|
Play Credit Switch |11|47|
Take Score Switch |12|48|
Double Up Switch |13|49|
High Switch |14|50|
Button Lock |15|51|
|16|52|
|17|53|
(DBA) Inuput0 |18|54| Coin Switch A
Coin Switch B |19|55|
Book Keeping Switch |20|56| Stats / Setup SW
Collect SW |21|57|
Hopper Full Switch |22|58|
Counter Out A |23|59|
Bell |24|60| Lockout mars (DBA)
Tower Lamp |25|61|
Counter Out D |26|62|
Played Meter |27|63| Lack of Hopper Counter
Count down Meter Out |28|64|
Start Lamp |29|65|
Low Lamp |30|66| Collect Lamp
Play Credit Lamp |31|67| Progressive Link
Take Score Lamp |32|68|
Double Up Lamp |33|69| TXD
High Lamp |34|70|
|35|71|
Switch Grounds |36|72| Switch Grounds
+--+--+
20 Pin Game PCB Power Connector
Parts Side | | | Solder Side
---------------+--+--+---------------
Logic Ground |01|11| Logic Ground
Logic Ground |02|12| Logic Ground
+5 VDC |03|13|
+5 VDC |04|14| +5 VDC
+12 VDC |05|15| +12 VDC
|06|16|
|07|17|
|08|18|
Logic Ground |09|19| Logic Ground
Logic Ground |10|20| Logic Ground
+--+--+
-------------------------------------------------------------------------
Cyberdyne Printer Harness (Flaming 7)
-------------------------------------
+12V.----+----+
| |
Z Z
Z Z 470 ohm 1/4 watt resistors
Z Z
| |
PCB Pin 69 Solder Side (TXD) ---+----|---- DB25 pin 3 (received data)
|
+---- DB25 pin 6
PCB Pin 22 Parts Side -------------------- DB25 pins 1 & 7 (Single & Safety)
PCB Pin 35 Parts Side -------------------- DB25 pin 20 (Printer Busy Signal)
DIP Switches settings for Citizen Printer:
Model # 3551
DIP SW #1 = 5, 7, 9, 10 OFF.
DIP SW #2 = 5, 7, 8, OFF.
-------------------------------------------------------------------------
Tech Notes:
W-4 PCB type has some hacks...
@ -14188,7 +14649,28 @@ ROM_END
3) Z80 /INT line (pin 16) is out of socket and wired to a 74161.
*/
Custom Hardware Notes:
GFX Bank 1 (chars and BG graphics) is colors-accurate.
GFX Bank 2 needs some work...
Seems that there is an extra layer for the bonus graphics.
This graphic is taken from Bank 2, and is the "representative"
for the chosen gfx set.
Code writes the bonus graphics at 9A80-9A89, and the "reel scroll"
at B0C0-B0FF...
Tileset:
Reels GFX 1: 00-00-01-02-03-04-05-06-07-00
Reels GFX 2: 00-5A-5B-5C-5D-5E-5F-60-61-00
Reels GFX 3: 9F-A0-A1-A2-A3-A4-A5-A6-A7-A8
Reels GFX 4: E7-E8-E9-EA-EB-EC-ED-EE-EF-F0
...and written 0x10 at B0C0-B0FF.
*******************************************************************************************/
/*
Flaming 7
@ -14267,8 +14749,8 @@ ROM_START( fl7_50 ) // Serial 00000069A1C9.
ROM_REGION( 0x20, "proms2", 0 )
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial DS2401 */
ROM_LOAD( "ds2401.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial */
ROM_LOAD( "eserial.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_END
@ -14299,8 +14781,8 @@ ROM_START( fl7_500 ) // Serial 000000125873.
ROM_REGION( 0x20, "proms2", 0 )
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial DS2401 */
ROM_LOAD( "ds2401.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial */
ROM_LOAD( "eserial.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_END
@ -14331,8 +14813,71 @@ ROM_START( fl7_2000 ) // Serial 00000063A47F.
ROM_REGION( 0x20, "proms2", 0 )
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial DS2401 */
ROM_LOAD( "ds2401.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial */
ROM_LOAD( "eserial.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_END
/*
Flaming 7's
Cyberdyne Systems.
2000 Bonus. Egyptian Gold.
Custom Hardware.
*/
ROM_START( fl7_2k16 ) // Serial 000000743111.
ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "2000_bonus_27c256.u22", 0x0000, 0x8000, CRC(290c37b0) SHA1(a90093d2139fd5ca261870298c2d84648f14e6bc) )
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "egyptian_gold_m27c1001.u6", 0x00000, 0x20000, CRC(5a2157bb) SHA1(2b170102caf1224df7a6d33bb84d19114f453d89) )
ROM_REGION( 0x8000, "gfx2", 0 )
ROM_LOAD( "egyptian_gold_27c256.u3", 0x0000, 0x8000, CRC(11241dae) SHA1(7197813304623c022dc37aa603c0cb067c8bf1fd) )
/* Bipolar PROM dump borrowed from main sets */
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "am27s29.u1", 0x0000, 0x0100, CRC(3fe7e369) SHA1(cf4ae287cb58581a4bf9e9ff1994426461fb38cc) )
ROM_CONTINUE( 0x0000, 0x0100) // palette data is stored in the second half.
ROM_REGION( 0x20, "proms2", 0 )
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial */
ROM_LOAD( "eserial.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_END
/*
Flaming 7's (unknown version)
Taiwanese Hardware.
Needs proper graphics ROM decryption and gfxdecode...
*/
ROM_START( fl7_tw ) // Serial 00000050E9B7.
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "27c512_tw.u20", 0x0000, 0x10000, CRC(50927a1b) SHA1(2557069f497b23f13978294f3ac108229d9db544) ) // identical halves.
ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "m27c1001_tw.u1", 0x00000, 0x20000, CRC(e6099723) SHA1(31e73a81166dd0d50d51ead38d348e36018d0698) )
ROM_REGION( 0x8000, "gfx2", 0 )
ROM_LOAD( "27c256_tw.u3", 0x0000, 0x8000, CRC(7f163639) SHA1(607aa1e7d15423409bb2cd49895502dc2e4b3e46) )
/* Bipolar PROM dump borrowed from main sets */
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "am27s29.u1", 0x0000, 0x0100, CRC(3fe7e369) SHA1(cf4ae287cb58581a4bf9e9ff1994426461fb38cc) )
ROM_CONTINUE( 0x0000, 0x0100) // palette data is stored in the second half.
ROM_REGION( 0x20, "proms2", 0 )
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial */
ROM_LOAD( "eserial.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
ROM_END
@ -15106,10 +15651,12 @@ GAMEL( 1993, bingownga, bingowng, bingownga,bingownga,driver_device, 0,
// --- Flaming 7's hardware (W-4 derivative) ---
GAME( 199?, fl7_3121, 0, flam7_w4, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (W4 Hardware, Red, White & Blue 7's + Hollywood Nights)", 0 )
GAME( 199?, fl7_50, 0, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 50)", MACHINE_NOT_WORKING )
GAME( 199?, fl7_500, fl7_50, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 500)", MACHINE_NOT_WORKING )
GAME( 199?, fl7_2000, fl7_50, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 2000)", MACHINE_NOT_WORKING )
GAME( 199?, fl7_3121, 0, flam7_w4, flam7_w4, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (W4 Hardware, Red, White & Blue 7's + Hollywood Nights)", 0 )
GAME( 199?, fl7_50, 0, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 50 Bonus)", MACHINE_NOT_WORKING )
GAME( 199?, fl7_500, fl7_50, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 500 Bonus)", MACHINE_NOT_WORKING )
GAME( 199?, fl7_2000, fl7_50, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 2000 Bonus)", MACHINE_NOT_WORKING )
GAME( 199?, fl7_2k16, fl7_50, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Egyptian Gold, 2000 Bonus)", MACHINE_NOT_WORKING )
GAME( 199?, fl7_tw, fl7_50, flam7_tw, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (Taiwanese Hardware, unknown version)", MACHINE_NOT_WORKING ) // needs proper gfx roms decryption.
// --- Wing W-8 hardware ---

View File

@ -81,7 +81,6 @@ public:
UINT8 m_term_data;
virtual void machine_reset() override;
virtual void video_start() override;
DECLARE_WRITE_LINE_MEMBER(h19_ace_irq);
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@ -357,10 +356,6 @@ MC6845_UPDATE_ROW( h19_state::crtc_update_row )
}
}
WRITE_LINE_MEMBER(h19_state::h19_ace_irq)
{
m_maincpu->set_input_line(0, (state ? HOLD_LINE : CLEAR_LINE));
}
/* F4 Character Displayer */
static const gfx_layout h19_charlayout =
@ -410,7 +405,7 @@ static MACHINE_CONFIG_START( h19, h19_state )
MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) // frame pulse
MCFG_DEVICE_ADD("ins8250", INS8250, XTAL_12_288MHz / 4) // 3.072mhz clock which gets divided down for the various baud rates
MCFG_INS8250_OUT_INT_CB(WRITELINE(h19_state, h19_ace_irq)) // interrupt
MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", 0)) // interrupt
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(h19_state, h19_kbd_put))

View File

@ -1447,7 +1447,7 @@ ROM_START(sscope2)
ROM_REGION(0x8, "lan_serial_id", 0) /* LAN Board DS2401 */
ROM_LOAD( "ds2401.8b", 0x000000, 0x000008, BAD_DUMP CRC(bae36d0b) SHA1(4dd5915888d5718356b40bbe897f2470e410176a) ) // hand built
ROM_REGION(0x80, "lan_eeprom", 0) /* LAN Board AT93C46 */
ROM_REGION16_BE(0x80, "lan_eeprom", 0) /* LAN Board AT93C46 */
ROM_LOAD( "at93c46.16g", 0x000000, 0x000080, BAD_DUMP CRC(cc63c213) SHA1(fb20e56fb73a887dc7b6db49efd1f8a18b959152) ) // hand built
ROM_END

View File

@ -59,7 +59,7 @@ private:
static ADDRESS_MAP_START(ibm3153_mem, AS_PROGRAM, 8, ibm3153_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000,0x3ffff) AM_ROM AM_REGION("user1", 0)
AM_RANGE(0x00000,0x0ffff) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(ibm3153_io, AS_IO, 8, ibm3153_state)

View File

@ -468,31 +468,17 @@ static ADDRESS_MAP_START( indigo_map, AS_PROGRAM, 32, indigo_state )
AM_RANGE( 0x18000000, 0x187fffff ) AM_RAM AM_SHARE("share1")
AM_RANGE( 0x1fb80000, 0x1fb8ffff ) AM_READWRITE(hpc_r, hpc_w )
AM_RANGE( 0x1fbd9000, 0x1fbd903f ) AM_READWRITE(int_r, int_w )
AM_RANGE( 0x80000000, 0x801fffff ) AM_RAM AM_SHARE("share10")
AM_RANGE( 0x88000000, 0x88ffffff ) AM_RAM AM_SHARE("share5")
AM_RANGE( 0xa0000000, 0xa01fffff ) AM_RAM AM_SHARE("share10")
AM_RANGE( 0xa8000000, 0xa8ffffff ) AM_RAM AM_SHARE("share5")
AM_RANGE( 0xa9000000, 0xa97fffff ) AM_RAM AM_SHARE("share6")
AM_RANGE( 0xaa000000, 0xaa7fffff ) AM_RAM AM_SHARE("share7")
AM_RANGE( 0xac000000, 0xac7fffff ) AM_RAM AM_SHARE("share8")
AM_RANGE( 0xb0000000, 0xb07fffff ) AM_RAM AM_SHARE("share9")
AM_RANGE( 0xb8000000, 0xb87fffff ) AM_RAM AM_SHARE("share1")
AM_RANGE( 0xbfb80000, 0xbfb8ffff ) AM_READWRITE(hpc_r, hpc_w )
AM_RANGE( 0xbfbd9000, 0xbfbd903f ) AM_READWRITE(int_r, int_w )
ADDRESS_MAP_END
static ADDRESS_MAP_START( indigo3k_map, AS_PROGRAM, 32, indigo_state )
AM_IMPORT_FROM( indigo_map )
AM_RANGE( 0x1fc00000, 0x1fc3ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
AM_RANGE( 0xbfc00000, 0xbfc3ffff ) AM_ROM AM_SHARE("share2") /* BIOS Mirror */
ADDRESS_MAP_END
static ADDRESS_MAP_START( indigo4k_map, AS_PROGRAM, 32, indigo_state )
AM_IMPORT_FROM( indigo_map )
AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
AM_RANGE( 0xbfa00000, 0xbfa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
AM_RANGE( 0xbfc00000, 0xbfc7ffff ) AM_ROM AM_SHARE("share2") /* BIOS Mirror */
ADDRESS_MAP_END
WRITE_LINE_MEMBER(indigo_state::scsi_irq)

View File

@ -358,7 +358,7 @@ ROM_START( invqix )
ROM_REGION(0x1000000, "oki", 0)
ROM_LOAD( "f34-01.ic13", 0x000000, 0x200000, CRC(7b055722) SHA1(8152bf04a58de15aefc4244e40733275e21818e1) ) /* Can also be labeled F34-03 based on ROM chip type */
ROM_REGION(0x80, "eeprom", 0)
ROM_REGION16_BE(0x80, "eeprom", 0)
ROM_LOAD16_WORD_SWAP( "93c46.ic6", 0x000000, 0x000080, CRC(564b744e) SHA1(4d9ea7dc253797c513258d07a936dfb63d8ed18c) )
ROM_END

View File

@ -46,7 +46,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(speaker_w);
DECLARE_WRITE_LINE_MEMBER(write_uart_clock);
TIMER_CALLBACK_MEMBER(irisha_key);
DECLARE_WRITE_LINE_MEMBER(irisha_pic_set_int_line);
UINT32 screen_update_irisha(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_shared_ptr<UINT8> m_p_videoram;
@ -289,17 +288,6 @@ WRITE8_MEMBER(irisha_state::irisha_8255_portc_w)
update_speaker();
}
/*************************************************
i8259
*************************************************/
WRITE_LINE_MEMBER(irisha_state::irisha_pic_set_int_line)
{
m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
}
/*************************************************
@ -425,7 +413,7 @@ static MACHINE_CONFIG_START( irisha, irisha_state )
MCFG_I8255_IN_PORTC_CB(READ8(irisha_state, irisha_8255_portc_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(irisha_state, irisha_8255_portc_w))
MCFG_PIC8259_ADD( "pic8259", WRITELINE(irisha_state,irisha_pic_set_int_line), VCC, NOOP)
MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NOOP)
MACHINE_CONFIG_END
/* ROM definition */

View File

@ -1262,7 +1262,7 @@ ROM_START( jclub2o )
ROM_REGION( 0x80000, "maincpu", 0 ) // z80 core (used for sound?)
ROM_LOAD( "sx006-04.u87", 0x00000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) )
ROM_REGION( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
ROM_REGION16_BE( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
ROM_LOAD( "eeprom-jclub2o.bin", 0x0000, 0x100, CRC(dd1c88ec) SHA1(acb67e41e832f203361e0f93afcd4eaf963fd13e) ) //jclub2ob ones
ROM_END
@ -1283,7 +1283,7 @@ ROM_START( jclub2ob )
ROM_REGION( 0x80000, "maincpu", 0 ) // z80 core (used for sound?)
ROM_LOAD( "sx006-04.u87", 0x00000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) )
ROM_REGION( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
ROM_REGION16_BE( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!!
ROM_LOAD( "eeprom-jclub2o.bin", 0x0000, 0x100, CRC(dd1c88ec) SHA1(acb67e41e832f203361e0f93afcd4eaf963fd13e) )
ROM_END

View File

@ -566,7 +566,7 @@ READ8_MEMBER(jubilee_state::mux_port_r)
static ADDRESS_MAP_START( jubileep_cru_map, AS_IO, 8, jubilee_state )
AM_RANGE(0x00c8, 0x00c8) AM_READ(mux_port_r) /* multiplexed input port */
AM_RANGE(0x0000, 0x0fff) AM_WRITE(unk_w)
AM_RANGE(0x0000, 0x07ff) AM_WRITE(unk_w)
ADDRESS_MAP_END
/* I/O byte R/W

View File

@ -45,7 +45,6 @@ public:
DECLARE_READ8_MEMBER(junior_riot_b_r);
DECLARE_WRITE8_MEMBER(junior_riot_a_w);
DECLARE_WRITE8_MEMBER(junior_riot_b_w);
DECLARE_WRITE_LINE_MEMBER(junior_riot_irq);
UINT8 m_port_a;
UINT8 m_port_b;
UINT8 m_led_time[6];
@ -182,12 +181,6 @@ WRITE8_MEMBER( junior_state::junior_riot_b_w )
}
WRITE_LINE_MEMBER( junior_state::junior_riot_irq )
{
m_maincpu->set_input_line(M6502_IRQ_LINE, state ? HOLD_LINE : CLEAR_LINE);
}
TIMER_DEVICE_CALLBACK_MEMBER(junior_state::junior_update_leds)
{
int i;
@ -233,7 +226,7 @@ static MACHINE_CONFIG_START( junior, junior_state )
MCFG_MOS6530n_OUT_PA_CB(WRITE8(junior_state, junior_riot_a_w))
MCFG_MOS6530n_IN_PB_CB(READ8(junior_state, junior_riot_b_r))
MCFG_MOS6530n_OUT_PB_CB(WRITE8(junior_state, junior_riot_b_w))
MCFG_MOS6530n_IRQ_CB(WRITELINE(junior_state, junior_riot_irq))
MCFG_MOS6530n_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", junior_state, junior_update_leds, attotime::from_hz(50))
MACHINE_CONFIG_END

View File

@ -255,20 +255,9 @@ public:
virtual void machine_reset() override;
TIMER_DEVICE_CALLBACK_MEMBER(kas89_nmi_cb);
TIMER_DEVICE_CALLBACK_MEMBER(kas89_sound_nmi_cb);
DECLARE_WRITE_LINE_MEMBER(kas89_vdp_interrupt);
};
/***************************************
* Interrupt handling & Video *
***************************************/
WRITE_LINE_MEMBER(kas89_state::kas89_vdp_interrupt)
{
m_maincpu->set_input_line(0, (state ? ASSERT_LINE : CLEAR_LINE));
}
/*************************************
* Machine Start & Reset *
*************************************/
@ -778,7 +767,7 @@ static MACHINE_CONFIG_START( kas89, kas89_state )
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MASTER_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(kas89_state,kas89_vdp_interrupt))
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK)
/* sound hardware */

View File

@ -459,8 +459,7 @@ static ADDRESS_MAP_START( kenseim_map, AS_PROGRAM, 8, kenseim_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( kenseim_io_map, AS_IO, 8, kenseim_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write)
AM_RANGE(0x20, 0x27) AM_MIRROR(0xff00) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write)
ADDRESS_MAP_END

View File

@ -2002,7 +2002,7 @@ ROM_START( gokuparo )
ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "gokuparo.nv", 0x0000, 0x080, CRC(15c0f2d9) SHA1(57c7462e3b1e15652ec5d682a1be3786926ddecd) )
ROM_END
@ -2035,7 +2035,7 @@ ROM_START( fantjour )
ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "fantjour.nv", 0x0000, 0x080, CRC(35b7d8e1) SHA1(5f0e3799ff9c63af3e55b040cc52b2a9e7a76168) )
ROM_END
@ -2068,7 +2068,7 @@ ROM_START( fantjoura )
ROM_LOAD( "321b17.9g", 0x000000, 2*1024*1024, CRC(b3e8d5d8) SHA1(6644a414e7f0e69ded9aa1bf892566002cebae26) )
ROM_LOAD( "321b18.7g", 0x200000, 2*1024*1024, CRC(2c561ad0) SHA1(6265054072ba1c2837dd96e0259b20bc50457160) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "fantjoura.nv", 0x0000, 0x080, CRC(d13b1ec1) SHA1(0f4aedd0aa9682b0b68b9f7745946a3bc1e76714) )
ROM_END
@ -2102,7 +2102,7 @@ ROM_START( salmndr2 )
ROM_LOAD( "521-a12.9g", 0x000000, 2*1024*1024, CRC(66614d3b) SHA1(e1e5ebe546bced6ab74b0af500acf0f3308902a4) )
ROM_LOAD( "521-a13.7g", 0x200000, 1*1024*1024, CRC(c3322475) SHA1(1774524ff031e0c4a7f3432810e968d37f9c6331) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "salmndr2.nv", 0x0000, 0x080, CRC(60cdea03) SHA1(6aa597d391b5d7db67e599ec54d98600983966fc) )
ROM_END
@ -2136,7 +2136,7 @@ ROM_START( salmndr2a )
ROM_LOAD( "521-a12.9g", 0x000000, 2*1024*1024, CRC(66614d3b) SHA1(e1e5ebe546bced6ab74b0af500acf0f3308902a4) )
ROM_LOAD( "521-a13.7g", 0x200000, 1*1024*1024, CRC(c3322475) SHA1(1774524ff031e0c4a7f3432810e968d37f9c6331) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "salmndr2a.nv", 0x0000, 0x080, CRC(3a98a8f9) SHA1(08c2d164620a4d8ad902d502acea8ad621931198) )
ROM_END
@ -2169,7 +2169,7 @@ ROM_START( tbyahhoo )
ROM_LOAD( "424a17.9g", 0x000000, 2*1024*1024, CRC(e9dd9692) SHA1(c289019c8d1dd71b3cec26479c39b649de804707) )
ROM_LOAD( "424a18.7g", 0x200000, 2*1024*1024, CRC(0f0d9f3a) SHA1(57f6b113b80f06964b7e672ad517c1654c5569c5) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "tbyahhoo.nv", 0x0000, 0x080, CRC(1e6fa2f8) SHA1(fceb6617a4e02babfc1678bae9f6a131c1d759f5) )
ROM_END
@ -2434,7 +2434,7 @@ ROM_START( tokkae )
ROM_LOAD( "615a22.9g", 0x000000, 2*1024*1024, CRC(ea7e47dd) SHA1(5bf5bad9427b083757c400eaf58c63a6267c1caf) )
ROM_LOAD( "615a23.7g", 0x200000, 2*1024*1024, CRC(22d71f36) SHA1(3f24bb4cd8e1d693b42219e05960ad0c756b08cb) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "tokkae.nv", 0x0000, 0x080, CRC(5a6f8da6) SHA1(f68c67c98e99669904e23d5eac7e13a9c57bc394) )
ROM_END
@ -2469,7 +2469,7 @@ ROM_START( tkmmpzdm )
ROM_LOAD( "515a13.9g", 0x000000, 2*1024*1024, CRC(4b066b00) SHA1(874dd49847b10e6d9c39decb81557534baa36d79) )
ROM_LOAD( "515a14.7g", 0x200000, 2*1024*1024, CRC(128cc944) SHA1(b0cd2ec1b9a2ac936d57b6d6c2a70f9c13dc97a5) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "tkmmpzdm.nv", 0x0000, 0x080, CRC(850ab8c4) SHA1(fea5ceb3f2cea61fb19bdb1b8f1496d1c06bfff1) )
ROM_END
@ -2592,7 +2592,7 @@ ROM_START( crzcross )
ROM_LOAD( "315a17.9g", 0x000000, 2*1024*1024, CRC(ea763d61) SHA1(2a7dcb2a2a23c9fea62fb82ffc18949bf15b9f6f) )
ROM_LOAD( "315a18.7g", 0x200000, 2*1024*1024, CRC(6e416cee) SHA1(145a766ad2fa2b692692053dd36e0caf51d67a56) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
ROM_LOAD( "crzcross.nv", 0x0000, 0x080, CRC(446f178c) SHA1(84b02192c26459c1b798f07b96768e1013b57666) )
ROM_END
@ -2625,7 +2625,7 @@ ROM_START( puzldama )
ROM_LOAD( "315a17.9g", 0x000000, 2*1024*1024, CRC(ea763d61) SHA1(2a7dcb2a2a23c9fea62fb82ffc18949bf15b9f6f) )
ROM_LOAD( "315a18.7g", 0x200000, 2*1024*1024, CRC(6e416cee) SHA1(145a766ad2fa2b692692053dd36e0caf51d67a56) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
ROM_LOAD( "puzldama.nv", 0x0000, 0x080, CRC(bda98b84) SHA1(f4b03130bdc2a5bc6f0fc9ca21603109d82703b4) )
ROM_END
@ -2665,7 +2665,7 @@ ROM_START( dragoonj )
ROM_REGION( 0x200000, "shared", 0 )
ROM_LOAD( "417a17.9g", 0x000000, 2*1024*1024, CRC(88d47dfd) SHA1(b5d6dd7ee9ac0c427dc3e714a97945c954260913) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "dragoonj.nv", 0x0000, 0x080, CRC(cbe16082) SHA1(da48893f3584ae2e034c73d4338b220107a884da) )
ROM_END
@ -2705,7 +2705,7 @@ ROM_START( dragoona )
ROM_REGION( 0x200000, "shared", 0 )
ROM_LOAD( "417a17.9g", 0x000000, 2*1024*1024, CRC(88d47dfd) SHA1(b5d6dd7ee9ac0c427dc3e714a97945c954260913) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "dragoona.nv", 0x0000, 0x080, CRC(7980ad2b) SHA1(dccaab02d23edbd81ae13441fbac0dbd7112c258) )
ROM_END
@ -2764,7 +2764,7 @@ ROM_START( soccerss )
ROM_REGION( 0x400000, "shared", 0 )
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "soccerss.nv", 0x0000, 0x080, CRC(f222dae4) SHA1(fede48a4e1fe91cf2b17ff3f3996bca4816fc283) )
ROM_END
@ -2823,7 +2823,7 @@ ROM_START( soccerssu )
ROM_REGION( 0x400000, "shared", 0 )
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "soccerssu.nv", 0x0000, 0x080, CRC(812f6878) SHA1(fc4975211720a7eb413bceda8109231cb1c00834) )
ROM_END
@ -2870,7 +2870,7 @@ ROM_START( soccerssj )
ROM_REGION( 0x400000, "shared", 0 )
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "soccerssj.nv", 0x0000, 0x080, CRC(7440255e) SHA1(af379b5b1f765f9050f18fbd41c5031c5ad4918b) )
ROM_END
@ -2917,7 +2917,7 @@ ROM_START( soccerssja )
ROM_REGION( 0x400000, "shared", 0 )
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "soccerssja.nv", 0x0000, 0x080, CRC(60dba700) SHA1(087b086b29748727b41fdd4c154ff9b4bef42959) )
ROM_END
@ -2964,7 +2964,7 @@ ROM_START( soccerssa )
ROM_REGION( 0x400000, "shared", 0 )
ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "soccerssa.nv", 0x0000, 0x080, CRC(e3a3f3d5) SHA1(374cf5bbcc459c56ebbba5068406f6d767bcb608) )
ROM_END
@ -3320,7 +3320,7 @@ ROM_START( le2 )
ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
ROM_LOAD( "le2.nv", 0x0000, 0x080, CRC(fec3bc2e) SHA1(64040364d7db12f54e5c11f28a28e030bcf9a0f7) )
ROM_END
@ -3358,7 +3358,7 @@ ROM_START( le2u )
ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
ROM_LOAD( "le2u.nv", 0x0000, 0x080, CRC(d46b3878) SHA1(81bf4331547ce977eaa185f7281625fb695f6deb) )
ROM_END
@ -3397,7 +3397,7 @@ ROM_START( le2j )
ROM_LOAD( "312a17.9g", 0x000000, 2*1024*1024, CRC(ed101448) SHA1(ef1342f37fbbb092eddee0c237b40989ad42cf26) )
ROM_LOAD( "312a18.7g", 0x200000, 1*1024*1024, CRC(5717abd7) SHA1(d304d733e7fca0363ea6b3872c2d3bbe4edf1179) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with invisible error
ROM_LOAD( "le2j.nv", 0x0000, 0x080, CRC(f6790425) SHA1(f233f3c09c4cdbd1c6e5204fc6554a4826b44c59) )
ROM_END
@ -3448,7 +3448,7 @@ ROM_START( racinfrc )
ROM_LOAD( "250a18.12y", 0x200000, 2*1024*1024, CRC(8014a2eb) SHA1(d82f0a7d559340ae05a78ecc8bb69bb35b9c0658) )
// note, it seems impossible to calibrate the controls (again!), this has nothing to do with the default eeprom!
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "racinfrc.nv", 0x0000, 0x080, CRC(dc88c693) SHA1(a7967f390db043570803c79edf984a3e6bdbd172) )
ROM_END
@ -3500,7 +3500,7 @@ ROM_START( racinfrcu )
ROM_LOAD( "250a18.12y", 0x200000, 2*1024*1024, CRC(8014a2eb) SHA1(d82f0a7d559340ae05a78ecc8bb69bb35b9c0658) )
// note, it seems impossible to calibrate the controls (again!), this has nothing to do with the default eeprom!
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "racinfrcu.nv", 0x0000, 0x080, CRC(369e1a84) SHA1(bfed0145d89550b1a1661f3ccc612505053063f8) )
ROM_END
@ -3586,7 +3586,7 @@ ROM_START( opengolf )
ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "opengolf.nv", 0x0000, 0x080, CRC(d49bf7c3) SHA1(294c772a2f562c01e7c4d15068ba4e80e9522f9f) )
ROM_END
@ -3641,7 +3641,7 @@ ROM_START( opengolf2 )
ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "opengolf2.nv", 0x0000, 0x080, CRC(c09fc0e6) SHA1(32807752344763613440bee46da24d605e62eace) )
ROM_END
@ -3695,7 +3695,7 @@ ROM_START( ggreats2 )
ROM_LOAD( "218a17.14y", 0x000000, 2*1024*1024, CRC(0b525127) SHA1(218b306c12e1094a676815b7dddaf13bf19be2d5) )
ROM_LOAD( "218a18.12y", 0x200000, 1*1024*1024, CRC(98ec4cfb) SHA1(638753f9d9269719a37133b9c39c242507fdd8ac) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting with error
ROM_LOAD( "ggreats2.nv", 0x0000, 0x080, CRC(4db10b5c) SHA1(29e3a59e4101349ace33d49b5fe59f0c785979b3) )
ROM_END

View File

@ -341,7 +341,7 @@ ROM_START( enchlamp )
ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
ROM_LOAD( "enl5r211.fmu.bin", 0x0000, 0x1800000, CRC(592c3c7f) SHA1(119b3c6223d656981c399c399d7edccfdbb50dc7) )
ROM_REGION32_BE( 0x100, "eeprom", 0 )
ROM_REGION16_BE( 0x100, "eeprom", 0 )
ROM_LOAD( "93c56.u98", 0x00, 0x100, CRC(b2521a6a) SHA1(f44711545bee7e9c772a3dc23b79f0ea8059ec50) ) // empty eeprom with Konami header
ROM_END
@ -471,7 +471,7 @@ ROM_START( konzero )
ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
ROM_REGION32_BE( 0x100, "eeprom", 0 )
ROM_REGION16_BE( 0x100, "eeprom", 0 )
ROM_LOAD( "93c56.u98", 0x00, 0x100, CRC(b2521a6a) SHA1(f44711545bee7e9c772a3dc23b79f0ea8059ec50) ) // empty eeprom with Konami header
ROM_END

View File

@ -293,7 +293,6 @@ public:
virtual void machine_start() override;
virtual void machine_reset() override;
DECLARE_WRITE_LINE_MEMBER(kurukuru_msm5205_vck);
DECLARE_WRITE_LINE_MEMBER(kurukuru_vdp_interrupt);
};
#define MAIN_CLOCK XTAL_21_4772MHz
@ -309,11 +308,6 @@ public:
* Interrupts *
*************************************************/
WRITE_LINE_MEMBER(kurukuru_state::kurukuru_vdp_interrupt)
{
m_maincpu->set_input_line(0, (state ? ASSERT_LINE : CLEAR_LINE));
}
void kurukuru_state::update_sound_irq(UINT8 cause)
{
@ -735,7 +729,7 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state )
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MAIN_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(kurukuru_state,kurukuru_vdp_interrupt))
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK)
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
@ -773,7 +767,7 @@ static MACHINE_CONFIG_START( ppj, kurukuru_state )
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MAIN_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(kurukuru_state,kurukuru_vdp_interrupt))
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK)
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )

View File

@ -573,7 +573,7 @@ ROM_START( lethalen ) // US version UAE
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethalenue.nv", 0x0000, 0x0080, CRC(6e7224e6) SHA1(86dea9262d55e58b573d397d0fea437c58728707) )
ROM_END
@ -598,7 +598,7 @@ ROM_START( lethalenub ) // US version UAB
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethalenub.nv", 0x0000, 0x0080, CRC(14c6c6e5) SHA1(8a498b5322266df25fb24d1b7bd7937de459d207) )
ROM_END
@ -623,7 +623,7 @@ ROM_START( lethalenua ) // US version UAA
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethalenua.nv", 0x0000, 0x0080, CRC(f71ad1c3) SHA1(04c7052d0895797af8a06183b8a877795bf2dbb3) )
ROM_END
@ -648,7 +648,7 @@ ROM_START( lethalenux ) // US version ?, proto / hack?, very different to other
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethalenux.nv", 0x0000, 0x0080, CRC(5d69c39d) SHA1(e468df829ee5094792289f9166d7e39b638ab70d) )
ROM_END
@ -673,7 +673,7 @@ ROM_START( lethaleneab ) // Euro ver. EAB
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethaleneab.nv", 0x0000, 0x0080, CRC(4e9bb34d) SHA1(9502583bc9f5f6fc5bba333869398b24bf154b73) )
ROM_END
@ -698,7 +698,7 @@ ROM_START( lethaleneae ) // Euro ver. EAE
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethaleneae.nv", 0x0000, 0x0080, CRC(eb369a67) SHA1(6c67294669614e96de5efb38372dbed435ee04d3) )
ROM_END
@ -723,7 +723,7 @@ ROM_START( lethalenj ) // Japan version JAD
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethalenj.nv", 0x0000, 0x0080, CRC(20b28f2f) SHA1(53d212f2c006729a01dfdb49cb36b67b9425172e) )
ROM_END
@ -748,7 +748,7 @@ ROM_START( lethaleneaa ) // Euro ver. EAA
ROM_REGION( 0x200000, "k054539", 0 ) /* K054539 samples */
ROM_LOAD( "191a03", 0x000000, 0x200000, CRC(9b13fbe8) SHA1(19b02dbd9d6da54045b0ba4dfe7b282c72745c9c))
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "lethaleneaa.nv", 0x0000, 0x0080, CRC(a85d64ee) SHA1(68ab906c46c6a7dee2a7673d1d516e34d56c9ae3) )
ROM_END

View File

@ -562,8 +562,6 @@ static ADDRESS_MAP_START( looping_io_map, AS_IO, 8, looping_state )
/* 405 = C1 */
AM_RANGE(0x406, 0x406) AM_WRITE(main_irq_ack_w)
AM_RANGE(0x407, 0x407) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
AM_RANGE(0x10000, 0x10000) AM_NOP /* external IDLE signal -- we can ignore it */
ADDRESS_MAP_END

View File

@ -643,7 +643,7 @@ static ADDRESS_MAP_START( sound_prg, AS_PROGRAM, 8, maygayv1_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_data, AS_DATA, 8, maygayv1_state )
AM_RANGE(0x0000, 0xffff) AM_RAM // nothing?
AM_RANGE(0x0000, 0x1ff) AM_RAM // nothing?
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io, AS_IO, 8, maygayv1_state )

View File

@ -32,6 +32,7 @@ Year + Game System Protection
R&T (Prototype?) A Encryption (key 2)
Phantasm (Japan) / A Encryption (key 1)
91 Avenging Spirit (World) B Inputs
Earth Defense Force (Prototype) A Encryption (key 1)
Earth Defense Force B Inputs
64th Street (World) / C Inputs
64th Street (Japan) C Inputs
@ -921,6 +922,59 @@ static INPUT_PORTS_START( edf )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( edfp )
PORT_INCLUDE( megasys1_generic )
PORT_START("DSW")
PORT_DIPNAME( 0x0007, 0x0007, "DSW bits 2-0" )
PORT_DIPSETTING( 0x0000, "0" )
PORT_DIPSETTING( 0x0001, "1" )
PORT_DIPSETTING( 0x0002, "2" )
PORT_DIPSETTING( 0x0003, "3" )
PORT_DIPSETTING( 0x0004, "4" )
PORT_DIPSETTING( 0x0005, "5" )
PORT_DIPSETTING( 0x0006, "6" )
PORT_DIPSETTING( 0x0007, "7" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x0008, "3" )
PORT_DIPSETTING( 0x0000, "4" )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0030, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Very_Hard ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x0400, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0200, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0700, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0300, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0500, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0100, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x0600, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x2000, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x1000, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x3800, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x1800, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x2800, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0800, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x3000, DEF_STR( 1C_5C ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
PORT_SERVICE( 0x8000, IP_ACTIVE_LOW )
INPUT_PORTS_END
static INPUT_PORTS_START( hachoo )
PORT_INCLUDE( megasys1_generic )
@ -2514,6 +2568,59 @@ ROM_START( edfu )
ROM_END
/*
EDF (Prototype)
Main Board: MB-8842 (System-A)
ROM Board: MB8845 (with D6500SCW-362 custom)
*/
ROM_START( edfp )
ROM_REGION( 0xc0000, "maincpu", 0 ) /* Main CPU Code */
ROM_LOAD16_BYTE( "2.ROM2.27C010", 0x000000, 0x020000, CRC(358a6ac3) SHA1(b7beaadd2e934071e6bc9cafdaa9cc5a1241488a) )
ROM_LOAD16_BYTE( "1.ROM1.27C010", 0x000001, 0x020000, CRC(f30cfb25) SHA1(38020aa62e61f15dbd4267293bd4b8df356ed16e) )
ROM_LOAD16_BYTE( "4.ROM4.27512", 0x040001, 0x010000, CRC(41e1a014) SHA1(8d40353228114c762fe58c525162f35aa71ef21b) )
ROM_LOAD16_BYTE( "3.ROM3.27512", 0x040000, 0x010000, CRC(f0357ba2) SHA1(e4ff21d5149ae7d0b259238c18edb193eb94be5e) )
ROM_REGION( 0x40000, "audiocpu", 0 ) /* Sound CPU Code */
ROM_LOAD16_BYTE( "5.ROM5.27512", 0x000000, 0x010000, CRC(505d09ff) SHA1(681579123257548f71ebb9d591c4db81fc52ff85) )
ROM_LOAD16_BYTE( "6.ROM6.27512", 0x000001, 0x010000, CRC(13c14471) SHA1(9661ff7ca829260d1b247dee8fc5eb22d92cb1fa) )
/* No MCU */
ROM_REGION( 0x080000, "gfx1", 0 ) /* Scroll 0 */
ROM_LOAD( "11.ROM11.27C010", 0x000000, 0x020000, CRC(cfba8249) SHA1(f5ca1114296c2e268b44923b363add25b60f9e98) )
ROM_LOAD( "12.ROM12.27C010", 0x020000, 0x020000, CRC(c2027f34) SHA1(c685666ae368259b27f62563131ffa4c5db2f985) )
ROM_LOAD( "13.ROM13.27C010", 0x040000, 0x020000, CRC(d4b87d60) SHA1(94e85c9392150d3395e400defb96f7cb3fbc639b) )
ROM_LOAD( "14.ROM14.27C010", 0x060000, 0x020000, CRC(9814fe96) SHA1(c1c53534bc2b0d97dda9f1caa0e4917d497c08ae) )
ROM_REGION( 0x080000, "gfx2", 0 ) /* Scroll 1 */
ROM_LOAD( "15.ROM15.27C010", 0x000000, 0x020000, CRC(a91c027d) SHA1(39b68e81e07c81ce9961e5d14e9c123c72b31051) )
ROM_LOAD( "16.ROM16.27C010", 0x020000, 0x020000, CRC(2caecbc7) SHA1(82c2afcc3763d79ebf281fcf93b429ddbc6c44ae) )
ROM_LOAD( "17.ROM17.27C010", 0x040000, 0x020000, CRC(3947efe8) SHA1(925dce253bf81c7d454872a707593b5085a0f3d0) )
ROM_LOAD( "18.ROM18.27C010", 0x060000, 0x020000, CRC(2de832cb) SHA1(2b0266223561e649c535041ab8c543e3c64885ad) )
ROM_REGION( 0x020000, "gfx3", 0 ) /* Scroll 2 */
ROM_LOAD( "19.ROM19.27C010", 0x000000, 0x020000, CRC(96e38983) SHA1(a4fb94f15d9a9f7df1645be66fe3e179d0ebf765) )
ROM_REGION( 0x080000, "gfx4", 0 ) /* Sprites */
ROM_LOAD( "20.ROM20.27C010", 0x000000, 0x020000, CRC(e6956a01) SHA1(3ded46d0372b0633383f2a5d7b0f53687091b220) )
ROM_LOAD( "21.ROM21.27C010", 0x020000, 0x020000, CRC(8e19ae9a) SHA1(b12cdce9d6dae96a1c9d134828cc1cd7f85f3dab) )
ROM_LOAD( "22.ROM22.27C010", 0x040000, 0x020000, CRC(b5be39f3) SHA1(a330f26d7355ebb4ba5c81189564c39c896e7544) )
ROM_LOAD( "23.ROM23.27C010", 0x060000, 0x020000, CRC(01304689) SHA1(ef1836cce5b6a55633965b3c94293c6b99c59eb5) )
ROM_REGION( 0x040000, "oki1", 0 ) /* Samples */
ROM_LOAD( "9.ROM9.27C010", 0x000000, 0x020000, CRC(7182f27c) SHA1(dc83f3552f6d01365f9f3af89ba97a9936f7899c) )
ROM_LOAD( "10.ROM10.27C010", 0x020000, 0x020000, CRC(f780d92f) SHA1(8bee845a0aaa0b5ca5532ea4962adeb40699e3be) )
ROM_REGION( 0x040000, "oki2", 0 ) /* Samples */
ROM_LOAD( "7.ROM7.27C010", 0x000000, 0x020000, CRC(b9d79c1e) SHA1(315dbed9b7cc289b383c95e6c94267682324154c) )
ROM_LOAD( "8.ROM8.27C010", 0x020000, 0x020000, CRC(fa0d1887) SHA1(d24c17806669f5b12527b36bc9c10fd16222e23c) )
ROM_REGION( 0x0200, "proms", 0 ) /* Priority PROM (N82S131N compatible type PROM) */
ROM_LOAD( "rd.20n", 0x0000, 0x0200, CRC(1d877538) SHA1(a5be0dc65dcfc36fbba10d1fddbe155e24b6122f) )
ROM_END
ROM_START( edfbl )
ROM_REGION( 0xc0000, "maincpu", 0 ) /* Main CPU Code: 00000-3ffff & 80000-bffff */
ROM_LOAD16_BYTE( "02.bin", 0x000000, 0x020000, CRC(19a0dfa0) SHA1(acd020fa42de9cd98e51fe92377a46846859797b) )
@ -4138,6 +4245,11 @@ DRIVER_INIT_MEMBER(megasys1_state,edf)
}
DRIVER_INIT_MEMBER(megasys1_state,edfp)
{
phantasm_rom_decode(machine(), "maincpu");
}
READ16_MEMBER(megasys1_state::edfbl_input_r)
{
ioport_port *in_names[] = { m_io_system, m_io_p1, m_io_p2, m_io_dsw1, m_io_dsw2 };
@ -4432,8 +4544,9 @@ GAME( 1989, stdragonb,stdragon, system_A, stdragon, megasys1_state, std
GAME( 1990, rodland, 0, system_A, rodland, megasys1_state, rodland, ROT0, "Jaleco", "Rod-Land (World)", 0 )
GAME( 1990, rodlandj, rodland, system_A, rodland, megasys1_state, rodlandj, ROT0, "Jaleco", "Rod-Land (Japan)", 0 )
GAME( 1990, rittam, rodland, system_A, rodland, megasys1_state, rittam, ROT0, "Jaleco", "R&T (Rod-Land prototype?)", 0 )
GAME( 1990, rodlandjb,rodland, system_A, rodland, megasys1_state, rodlandjb, ROT0, "bootleg","Rod-Land (Japan bootleg)", 0 )
GAME( 1990, rodlandjb,rodland, system_A, rodland, megasys1_state, rodlandjb,ROT0, "bootleg","Rod-Land (Japan bootleg)", 0 )
GAME( 1990, phantasm, avspirit, system_A, phantasm, megasys1_state, phantasm, ROT0, "Jaleco", "Phantasm (Japan)", 0 )
GAME( 1991, edfp, edf, system_A, edfp, megasys1_state, edfp, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (Japan, prototype)", 0 )
GAME( 1992, soldam, 0, system_A, soldam, megasys1_state, soldam, ROT0, "Jaleco", "Soldam", 0 )
GAME( 1992, soldamj, soldam, system_A, soldam, megasys1_state, soldamj, ROT0, "Jaleco", "Soldam (Japan)", 0 )

View File

@ -482,11 +482,6 @@ WRITE32_MEMBER(metalmx_state::host_vram_w)
COMBINE_DATA(m_gsp_vram + offset * 2);
}
WRITE_LINE_MEMBER(metalmx_state::tms_interrupt)
{
m_maincpu->set_input_line(4, state ? HOLD_LINE : CLEAR_LINE);
}
WRITE32_MEMBER(metalmx_state::timer_w)
{
@ -703,7 +698,7 @@ static MACHINE_CONFIG_START( metalmx, metalmx_state )
MCFG_TMS340X0_HALT_ON_RESET(TRUE) /* halt on reset */
MCFG_TMS340X0_PIXEL_CLOCK(4000000) /* pixel clock */
MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */
MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(metalmx_state, tms_interrupt))
MCFG_TMS340X0_OUTPUT_INT_CB(INPUTLINE("maincpu", 4))
MCFG_CPU_ADD("dsp32c_1", DSP32C, 40000000) /* Unverified */
MCFG_CPU_PROGRAM_MAP(dsp32c_1_map)

View File

@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese
// thanks-to: David Haywood, Peter Wilhelmsen
/*************************************************************************************************************************
Metal Freezer (c) 1989 Seibu

View File

@ -715,27 +715,27 @@ static INPUT_PORTS_START( mk4 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 High Punch")
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Block")
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 High Kick")
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 High Punch")
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Block")
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 High Kick")
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("P1 Low Punch")
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Low Kick")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("P1 Run")
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Low Punch")
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Low Kick")
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Run")
PORT_BIT( 0xff80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END

View File

@ -780,13 +780,6 @@ static ADDRESS_MAP_START( dsp_map_data, AS_DATA, 16, mlanding_state )
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("dot_ram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( dsp_map_io, AS_IO, 16, mlanding_state )
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_hold_signal_r)
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
ADDRESS_MAP_END
/*************************************
*
* Audio CPU memory handlers
@ -945,7 +938,8 @@ static MACHINE_CONFIG_START( mlanding, mlanding_state )
MCFG_CPU_ADD("dsp", TMS32025, 32000000) // ?
MCFG_CPU_PROGRAM_MAP(dsp_map_prog)
MCFG_CPU_DATA_MAP(dsp_map_data)
MCFG_CPU_IO_MAP(dsp_map_io)
MCFG_TMS32025_HOLD_IN_CB(READ16(mlanding_state, dsp_hold_signal_r))
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
MCFG_DEVICE_ADD("ctc", Z80CTC, 4000000)
MCFG_Z80CTC_ZC0_CB(WRITELINE(mlanding_state, z80ctc_to0))

View File

@ -44,7 +44,6 @@ public:
, m_io_row3(*this, "ROW3")
{ }
DECLARE_WRITE_LINE_MEMBER( vdp_interrupt );
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( cart );
DECLARE_READ8_MEMBER( ay_port_a_r );
DECLARE_READ8_MEMBER( ay_port_b_r );
@ -158,11 +157,6 @@ DEVICE_IMAGE_LOAD_MEMBER( myvision_state, cart )
}
WRITE_LINE_MEMBER(myvision_state::vdp_interrupt)
{
m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
}
READ8_MEMBER( myvision_state::ay_port_a_r )
{
UINT8 data = 0xFF;
@ -217,7 +211,7 @@ static MACHINE_CONFIG_START( myvision, myvision_state )
/* video hardware */
MCFG_DEVICE_ADD( "tms9918", TMS9918A, XTAL_10_738635MHz / 2 ) /* Exact model not verified */
MCFG_TMS9928A_VRAM_SIZE(0x4000) /* Not verified */
MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(myvision_state, vdp_interrupt))
MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
MCFG_SCREEN_UPDATE_DEVICE( "tms9918", tms9918a_device, screen_update )

View File

@ -899,19 +899,19 @@ ROM_END
ROM_START( helifire )
ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "hf.f1", 0x0000, 0x0400, CRC(032f89ca) SHA1(63b0310875ed78a6385e44eea781ddcc4a63557c) )
ROM_LOAD( "hf.f2", 0x0400, 0x0400, CRC(2774e70f) SHA1(98d845e80db61799493dbebe8db801567277432c) )
ROM_LOAD( "hf.g1", 0x0800, 0x0400, CRC(b5ad6e8a) SHA1(1eb4931e85bd6a559e85a2b978d383216d3988a7) )
ROM_LOAD( "hf.g2", 0x0c00, 0x0400, CRC(5e015bf4) SHA1(60f5a9707c8655e54a8381afd764856fb25c29f1) )
ROM_LOAD( "hf.h1", 0x1000, 0x0400, CRC(23bb4e5a) SHA1(b59bc0adff3635aca1def2b1997f7edc6ca7e8ee) )
ROM_LOAD( "hf.h2", 0x1400, 0x0400, CRC(358227c6) SHA1(d7bd678ef1737edc6aa609e43e3ae96a8d61dc15) )
ROM_LOAD( "hf.i1", 0x1800, 0x0400, CRC(0c679f44) SHA1(cbe31dbe5f2c5f11a637cb3bde4e059c310d0e76) )
ROM_LOAD( "hf.i2", 0x1c00, 0x0400, CRC(d8b7a398) SHA1(3ddfeac39147d5df6096f525f7ef67abef32a28b) )
ROM_LOAD( "hf.j1", 0x2000, 0x0400, CRC(98ef24db) SHA1(70ad8dd6e1e8f4bf4ce431737ca1856eecc03d53) )
ROM_LOAD( "hf.j2", 0x2400, 0x0400, CRC(5e2b5877) SHA1(f7c747e8a1d9fe2dda71ee6304636cf3cdf727a7) )
ROM_LOAD( "tub_f1_b", 0x0000, 0x0400, CRC(032f89ca) SHA1(63b0310875ed78a6385e44eea781ddcc4a63557c) )
ROM_LOAD( "tub_f2_b", 0x0400, 0x0400, CRC(2774e70f) SHA1(98d845e80db61799493dbebe8db801567277432c) )
ROM_LOAD( "tub_g1_b", 0x0800, 0x0400, CRC(b5ad6e8a) SHA1(1eb4931e85bd6a559e85a2b978d383216d3988a7) )
ROM_LOAD( "tub_g2_b", 0x0c00, 0x0400, CRC(5e015bf4) SHA1(60f5a9707c8655e54a8381afd764856fb25c29f1) )
ROM_LOAD( "tub_h1_b", 0x1000, 0x0400, CRC(23bb4e5a) SHA1(b59bc0adff3635aca1def2b1997f7edc6ca7e8ee) )
ROM_LOAD( "tub_h2_b", 0x1400, 0x0400, CRC(358227c6) SHA1(d7bd678ef1737edc6aa609e43e3ae96a8d61dc15) )
ROM_LOAD( "tub_i1_b", 0x1800, 0x0400, CRC(0c679f44) SHA1(cbe31dbe5f2c5f11a637cb3bde4e059c310d0e76) )
ROM_LOAD( "tub_i2_b", 0x1c00, 0x0400, CRC(d8b7a398) SHA1(3ddfeac39147d5df6096f525f7ef67abef32a28b) )
ROM_LOAD( "tub_j1_b", 0x2000, 0x0400, CRC(98ef24db) SHA1(70ad8dd6e1e8f4bf4ce431737ca1856eecc03d53) )
ROM_LOAD( "tub_j2_b", 0x2400, 0x0400, CRC(5e2b5877) SHA1(f7c747e8a1d9fe2dda71ee6304636cf3cdf727a7) )
ROM_REGION( 0x0400, "audiocpu", 0 )
ROM_LOAD( "hf.snd", 0x0000, 0x0400, CRC(9d77a31f) SHA1(36db9b5087b6661de88042854874bc247c92d985) )
ROM_LOAD( "tub-e_ic5-a", 0x0000, 0x0400, CRC(9d77a31f) SHA1(36db9b5087b6661de88042854874bc247c92d985) )
ROM_END
ROM_START( helifirea )

View File

@ -199,7 +199,7 @@ Games running on this hardware:
- The Outfoxies
- Mach Breakers
Changes from Namcon System NB1 include:
Changes from Namco System NB1 include:
- different memory map
- more complex sprite and tile banking
- 2 additional ROZ layers
@ -280,10 +280,21 @@ GFX: Custom 145 ( 80 pin PQFP)
#define MASTER_CLOCK XTAL_48_384MHz
#define ENABLE_LOGGING (0)
void namconb1_state::machine_start()
{
save_item(NAME(m_vbl_irq_level));
save_item(NAME(m_pos_irq_level));
save_item(NAME(m_unk_irq_level));
save_item(NAME(m_count));
save_item(NAME(m_port6));
}
/****************************************************************************/
TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::namconb_scantimer)
TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::scantimer)
{
int scanline = param;
@ -399,7 +410,8 @@ WRITE8_MEMBER(namconb1_state::namconb1_cpureg_w)
break;
default:
logerror("Unhandled CPU reg write to [0x%.2x] with 0x%.2x (PC=0x%x)\n", offset, data, space.device().safe_pc());
if (ENABLE_LOGGING)
logerror("Unhandled CPU reg write to [0x%.2x] with 0x%.2x (PC=0x%x)\n", offset, data, space.device().safe_pc());
}
}
@ -486,7 +498,8 @@ WRITE8_MEMBER(namconb1_state::namconb2_cpureg_w)
break;
default:
logerror("Unhandled CPU reg write to [0x%.2x] with 0x%.2x (PC=0x%x)\n", offset, data, space.device().safe_pc());
if (ENABLE_LOGGING)
logerror("Unhandled CPU reg write to [0x%.2x] with 0x%.2x (PC=0x%x)\n", offset, data, space.device().safe_pc());
}
}
@ -494,8 +507,11 @@ WRITE8_MEMBER(namconb1_state::namconb2_cpureg_w)
READ8_MEMBER(namconb1_state::namconb1_cpureg_r)
{
// 16: Watchdog
if (offset != 0x16)
logerror("Unhandled CPU reg read from [0x%.2x] (PC=0x%x)\n", offset, space.device().safe_pc());
if (ENABLE_LOGGING)
{
if (offset != 0x16)
logerror("Unhandled CPU reg read from [0x%.2x] (PC=0x%x)\n", offset, space.device().safe_pc());
}
return 0xff;
}
@ -504,8 +520,11 @@ READ8_MEMBER(namconb1_state::namconb1_cpureg_r)
READ8_MEMBER(namconb1_state::namconb2_cpureg_r)
{
// 14: Watchdog
if (offset != 0x14)
logerror("Unhandled CPU reg read from [0x%.2x] (PC=0x%x)\n", offset, space.device().safe_pc());
if (ENABLE_LOGGING)
{
if (offset != 0x14)
logerror("Unhandled CPU reg read from [0x%.2x] (PC=0x%x)\n", offset, space.device().safe_pc());
}
return 0xff;
}
@ -606,8 +625,8 @@ READ32_MEMBER(namconb1_state::custom_key_r)
case NAMCONB2_MACH_BREAKERS:
break; /* no protection? */
}
logerror( "custom_key_r(%d); pc=%08x\n", offset, space.device().safe_pc() );
if (ENABLE_LOGGING)
logerror( "custom_key_r(%d); pc=%08x\n", offset, space.device().safe_pc() );
return 0;
} /* custom_key_r */
@ -641,12 +660,12 @@ WRITE32_MEMBER(namconb1_state::srand_w)
*/
} /* srand_w */
READ32_MEMBER(namconb1_state::namconb_share_r)
READ32_MEMBER(namconb1_state::share_r)
{
return (m_namconb_shareram[offset*2] << 16) | m_namconb_shareram[offset*2+1];
}
WRITE32_MEMBER(namconb1_state::namconb_share_w)
WRITE32_MEMBER(namconb1_state::share_w)
{
COMBINE_DATA(m_namconb_shareram+offset*2+1);
data >>= 16;
@ -659,7 +678,7 @@ static ADDRESS_MAP_START( namconb1_am, AS_PROGRAM, 32, namconb1_state )
AM_RANGE(0x100000, 0x10001f) AM_READ(gunbulet_gun_r)
AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE(namconb_share_r, namconb_share_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE(share_r, share_w)
AM_RANGE(0x208000, 0x2fffff) AM_RAM
AM_RANGE(0x400000, 0x40001f) AM_READWRITE8(namconb1_cpureg_r, namconb1_cpureg_w, 0xffffffff)
AM_RANGE(0x580000, 0x5807ff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff)
@ -676,7 +695,7 @@ static ADDRESS_MAP_START( namconb2_am, AS_PROGRAM, 32, namconb1_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE(namconb_share_r, namconb_share_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE(share_r, share_w)
AM_RANGE(0x208000, 0x2fffff) AM_RAM
AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x600000, 0x61ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
@ -695,7 +714,7 @@ static ADDRESS_MAP_START( namconb2_am, AS_PROGRAM, 32, namconb1_state )
AM_RANGE(0xf00000, 0xf0001f) AM_READWRITE8(namconb1_cpureg_r, namconb2_cpureg_w, 0xffffffff)
ADDRESS_MAP_END
WRITE16_MEMBER(namconb1_state::nbmcu_shared_w)
WRITE16_MEMBER(namconb1_state::mcu_shared_w)
{
// HACK! Many games data ROM routines redirect the vector from the sound command read to an RTS.
// This needs more investigation. nebulray and vshoot do NOT do this.
@ -718,24 +737,24 @@ WRITE16_MEMBER(namconb1_state::nbmcu_shared_w)
static ADDRESS_MAP_START( namcoc75_am, AS_PROGRAM, 16, namconb1_state )
AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write)
AM_RANGE(0x004000, 0x00bfff) AM_RAM_WRITE(nbmcu_shared_w) AM_SHARE("namconb_share")
AM_RANGE(0x004000, 0x00bfff) AM_RAM_WRITE(mcu_shared_w) AM_SHARE("namconb_share")
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c75data", 0)
ADDRESS_MAP_END
READ8_MEMBER(namconb1_state::port6_r)
{
return m_nbx_port6;
return m_port6;
}
WRITE8_MEMBER(namconb1_state::port6_w)
{
m_nbx_port6 = data;
m_port6 = data;
}
READ8_MEMBER(namconb1_state::port7_r)
{
switch (m_nbx_port6 & 0xf0)
switch (m_port6 & 0xf0)
{
case 0x00:
return read_safe(ioport("P4"), 0xff);
@ -1107,7 +1126,7 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state )
MCFG_EEPROM_2816_ADD("eeprom")
MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, namconb_scantimer, "screen", 0, 1)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7)
@ -1144,7 +1163,7 @@ static MACHINE_CONFIG_START( namconb2, namconb1_state )
MCFG_EEPROM_2816_ADD("eeprom")
MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, namconb_scantimer, "screen", 0, 1)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, scantimer, "screen", 0, 1)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7)
@ -1961,21 +1980,21 @@ ROM_END
/***************************************************************/
GAME( 1994, nebulray, 0, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (World, NR2)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, nebulrayj,nebulray, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (Japan, NR1)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, ptblank, 0, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 1)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, ptblanka, ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 2)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, gunbuletj,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (Japan, GN1)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, gunbuletw,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (World, GN3 Rev B)", MACHINE_IMPERFECT_SOUND )
GAME( 1993, gslugrsj, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers (Japan)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, gslgr94u, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers '94", MACHINE_IMPERFECT_SOUND )
GAME( 1994, gslgr94j, gslgr94u, namconb1, nbsports, namconb1_state, gslgr94j, ROT0, "Namco", "Great Sluggers '94 (Japan)", MACHINE_IMPERFECT_SOUND )
GAME( 1995, sws95, 0, namconb1, nbsports, namconb1_state, sws95, ROT0, "Namco", "Super World Stadium '95 (Japan)", MACHINE_IMPERFECT_SOUND )
GAME( 1996, sws96, 0, namconb1, nbsports, namconb1_state, sws96, ROT0, "Namco", "Super World Stadium '96 (Japan)", MACHINE_IMPERFECT_SOUND )
GAME( 1997, sws97, 0, namconb1, nbsports, namconb1_state, sws97, ROT0, "Namco", "Super World Stadium '97 (Japan)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, vshoot, 0, namconb1, namconb1, namconb1_state, vshoot, ROT0, "Namco", "J-League Soccer V-Shoot (Japan)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, nebulray, 0, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (World, NR2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, nebulrayj,nebulray, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (Japan, NR1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, ptblank, 0, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, ptblanka, ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, gunbuletj,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (Japan, GN1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, gunbuletw,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (World, GN3 Rev B)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1993, gslugrsj, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, gslgr94u, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers '94", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, gslgr94j, gslgr94u, namconb1, nbsports, namconb1_state, gslgr94j, ROT0, "Namco", "Great Sluggers '94 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1995, sws95, 0, namconb1, nbsports, namconb1_state, sws95, ROT0, "Namco", "Super World Stadium '95 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1996, sws96, 0, namconb1, nbsports, namconb1_state, sws96, ROT0, "Namco", "Super World Stadium '96 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1997, sws97, 0, namconb1, nbsports, namconb1_state, sws97, ROT0, "Namco", "Super World Stadium '97 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, vshoot, 0, namconb1, namconb1, namconb1_state, vshoot, ROT0, "Namco", "J-League Soccer V-Shoot (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */
GAME( 1994, outfxies, 0, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (World, OU2)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, outfxiesj,outfxies, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (Japan, OU1)", MACHINE_IMPERFECT_SOUND )
GAME( 1995, machbrkr, 0, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers - Numan Athletics 2 (Japan)", MACHINE_IMPERFECT_SOUND )
GAME( 1994, outfxies, 0, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (World, OU2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1994, outfxiesj,outfxies, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (Japan, OU1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1995, machbrkr, 0, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers - Numan Athletics 2 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )

View File

@ -993,9 +993,6 @@ static ADDRESS_MAP_START( master_dsp_io, AS_IO, 16, namcos21_state )
AM_RANGE(0x0b,0x0b) AM_READWRITE(dsp_portb_r,dsp_portb_w)
AM_RANGE(0x0c,0x0c) AM_WRITE(dsp_portc_w)
AM_RANGE(0x0f,0x0f) AM_READ(dsp_portf_r)
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(dsp_xf_w )
ADDRESS_MAP_END
/************************************************************************************/
@ -1111,9 +1108,6 @@ static ADDRESS_MAP_START( slave_dsp_io, AS_IO, 16, namcos21_state )
AM_RANGE(0x02,0x02) AM_READ(slave_port2_r)
AM_RANGE(0x03,0x03) AM_READWRITE(slave_port3_r,slave_port3_w)
AM_RANGE(0x0f,0x0f) AM_READ(slave_portf_r)
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITE(slave_XF_output_w)
ADDRESS_MAP_END
/************************************************************************************/
@ -1424,21 +1418,8 @@ static ADDRESS_MAP_START( winrun_dsp_io, AS_IO, 16, namcos21_state )
AM_RANGE(0x0a,0x0a) AM_WRITE(winrun_dsp_render_w)
AM_RANGE(0x0b,0x0b) AM_WRITENOP
AM_RANGE(0x0c,0x0c) AM_WRITE(winrun_dsp_complete_w)
AM_RANGE(TMS32025_BIO, TMS32025_BIO) AM_READ(winrun_poly_reset_r )
AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READNOP
AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
AM_RANGE(TMS32025_XF, TMS32025_XF) AM_WRITENOP
ADDRESS_MAP_END
READ16_MEMBER(namcos21_state::winrun_gpucomram_r)
{
return m_winrun_gpucomram[offset];
}
WRITE16_MEMBER(namcos21_state::winrun_gpucomram_w)
{
COMBINE_DATA( &m_winrun_gpucomram[offset] );
}
WRITE16_MEMBER(namcos21_state::winrun_dspbios_w)
{
COMBINE_DATA( &m_winrun_dspbios[offset] );
@ -1491,7 +1472,7 @@ static ADDRESS_MAP_START( am_master_winrun, AS_PROGRAM, 16, namcos21_state )
AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w)
AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
@ -1503,7 +1484,7 @@ static ADDRESS_MAP_START( am_slave_winrun, AS_PROGRAM, 16, namcos21_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x13ffff) AM_RAM
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram")
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
@ -1516,7 +1497,7 @@ static ADDRESS_MAP_START( am_gpu_winrun, AS_PROGRAM, 16, namcos21_state )
AM_RANGE(0x100000, 0x100001) AM_READWRITE(winrun_gpu_color_r,winrun_gpu_color_w) /* ? */
AM_RANGE(0x180000, 0x19ffff) AM_RAM /* work RAM */
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos21_68k_gpu_C148_r,namcos21_68k_gpu_C148_w)
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("winrun_comram")
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gpu_comram")
AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x410000, 0x41ffff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gdata", 0)
@ -1667,11 +1648,17 @@ static MACHINE_CONFIG_START( namcos21, namcos21_state )
MCFG_CPU_PROGRAM_MAP(master_dsp_program)
MCFG_CPU_DATA_MAP(master_dsp_data)
MCFG_CPU_IO_MAP(master_dsp_io)
MCFG_TMS32025_HOLD_IN_CB(NOOP)
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos21_state, dsp_xf_w))
MCFG_CPU_ADD("dspslave", TMS32025,24000000*4) /* 24 MHz?; overclocked */
MCFG_CPU_PROGRAM_MAP(slave_dsp_program)
MCFG_CPU_DATA_MAP(slave_dsp_data)
MCFG_CPU_IO_MAP(slave_dsp_io)
MCFG_TMS32025_HOLD_IN_CB(NOOP)
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
MCFG_TMS32025_XF_OUT_CB(WRITE16(namcos21_state, slave_XF_output_w))
MCFG_QUANTUM_TIME(attotime::from_hz(12000))
@ -1729,6 +1716,10 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state )
MCFG_CPU_PROGRAM_MAP(winrun_dsp_program)
MCFG_CPU_DATA_MAP(winrun_dsp_data)
MCFG_CPU_IO_MAP(winrun_dsp_io)
MCFG_TMS32025_BIO_IN_CB(READ16(namcos21_state, winrun_poly_reset_r))
MCFG_TMS32025_HOLD_IN_CB(NOOP)
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
MCFG_TMS32025_XF_OUT_CB(NOOP)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
@ -1786,6 +1777,10 @@ static MACHINE_CONFIG_START( winrun, namcos21_state )
MCFG_CPU_PROGRAM_MAP(winrun_dsp_program)
MCFG_CPU_DATA_MAP(winrun_dsp_data)
MCFG_CPU_IO_MAP(winrun_dsp_io)
MCFG_TMS32025_BIO_IN_CB(READ16(namcos21_state, winrun_poly_reset_r))
MCFG_TMS32025_HOLD_IN_CB(NOOP)
MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP)
MCFG_TMS32025_XF_OUT_CB(NOOP)
MCFG_CPU_ADD("gpu", M68000,12288000) /* graphics coprocessor */
MCFG_CPU_PROGRAM_MAP(am_gpu_winrun)

Some files were not shown because too many files have changed in this diff Show More