mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
cdb4ae2fab
@ -133,7 +133,7 @@ Example:
|
|||||||
|
|
||||||
.. _mame-commandline-listroms:
|
.. _mame-commandline-listroms:
|
||||||
|
|
||||||
**-listroms** [<*pattern*>]
|
**-listroms** / **-lr** [<*pattern*>]
|
||||||
|
|
||||||
Displays a list of ROM images referenced by the specified pattern of system or device names. If no pattern is specified, the results will be *all* systems and devices.
|
Displays a list of ROM images referenced by the specified pattern of system or device names. If no pattern is specified, the results will be *all* systems and devices.
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ Example:
|
|||||||
|
|
||||||
.. _mame-commandline-listslots:
|
.. _mame-commandline-listslots:
|
||||||
|
|
||||||
**-listslots** [<*pattern*>]
|
**-listslots** / **-lslot** [<*pattern*>]
|
||||||
|
|
||||||
Show available slots and options for each slot (if available). Primarily used for MAME to allow control over internal plug-in cards, much like PCs needing video, sound and other expansion cards.
|
Show available slots and options for each slot (if available). Primarily used for MAME to allow control over internal plug-in cards, much like PCs needing video, sound and other expansion cards.
|
||||||
|
|
||||||
@ -190,25 +190,25 @@ Example:
|
|||||||
|
|
||||||
.. _mame-commandline-listsoftware:
|
.. _mame-commandline-listsoftware:
|
||||||
|
|
||||||
**-listsoftware** [<*pattern*>]
|
**-listsoftware** / **-lsoft** [<*pattern*>]
|
||||||
|
|
||||||
Posts to screen all software lists which can be used by the entered *pattern* or system. Note that this is simply a copy/paste of the .XML file which reside in the HASH folder which are allowed to be used.
|
Posts to screen all software lists which can be used by the entered *pattern* or system. Note that this is simply a copy/paste of the .XML file which reside in the HASH folder which are allowed to be used.
|
||||||
|
|
||||||
.. _mame-commandline-verifysoftware:
|
.. _mame-commandline-verifysoftware:
|
||||||
|
|
||||||
**-verifysoftware** [<*pattern*>]
|
**-verifysoftware** / **-vsoft** [<*pattern*>]
|
||||||
|
|
||||||
Checks for invalid or missing ROM images in your software lists. By default all drivers that have valid ZIP files or directories in the rompath are verified; however, you can limit this list by specifying a specific driver name or *pattern* after the -verifysoftware command.
|
Checks for invalid or missing ROM images in your software lists. By default all drivers that have valid ZIP files or directories in the rompath are verified; however, you can limit this list by specifying a specific driver name or *pattern* after the -verifysoftware command.
|
||||||
|
|
||||||
.. _mame-commandline-getsoftlist:
|
.. _mame-commandline-getsoftlist:
|
||||||
|
|
||||||
**-getsoftlist** [<*pattern*>]
|
**-getsoftlist** / **-glist** [<*pattern*>]
|
||||||
|
|
||||||
Posts to screen a specific software list which matches with the system name provided.
|
Posts to screen a specific software list which matches with the system name provided.
|
||||||
|
|
||||||
.. _mame-commandline-verifysoftlist:
|
.. _mame-commandline-verifysoftlist:
|
||||||
|
|
||||||
**-verifysoftlist** [softwarelistname]
|
**-verifysoftlist** / **-vlist** [softwarelistname]
|
||||||
|
|
||||||
Checks a specified software list for missing ROM images if files exist for issued softwarelistname. By default, all drivers that have valid ZIP files or directories in the rompath are verified; however, you can limit this list by specifying a specific softwarelistname (without .XML) after the -verifysoftlist command.
|
Checks a specified software list for missing ROM images if files exist for issued softwarelistname. By default, all drivers that have valid ZIP files or directories in the rompath are verified; however, you can limit this list by specifying a specific softwarelistname (without .XML) after the -verifysoftlist command.
|
||||||
|
|
||||||
|
@ -9266,6 +9266,55 @@
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
|
<software name="heimdall">
|
||||||
|
<description>Heimdall</description>
|
||||||
|
<year>1992</year>
|
||||||
|
<publisher>Core Design</publisher>
|
||||||
|
<info name="developer" value="The 8th Day" />
|
||||||
|
<part name="flop1" interface="floppy_3_5">
|
||||||
|
<dataarea name="flop" size = "1474560">
|
||||||
|
<rom name="Heimdall [Core Design] [1992] [3.5HD] [Disk 1 of 5].img" size="1474560" crc="93610141" sha1="6d610d2402cc423169f46333303602251d9c41f1" offset="0"/>
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop2" interface="floppy_3_5">
|
||||||
|
<dataarea name="flop" size = "1474560">
|
||||||
|
<rom name="Heimdall [Core Design] [1992] [3.5HD] [Disk 2 of 5].img" size="1474560" crc="449bb3cb" sha1="aa57c403aad12b1f9c5258aa5bc0da1d0b3e5059" offset="0"/>
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop3" interface="floppy_3_5">
|
||||||
|
<dataarea name="flop" size = "1474560">
|
||||||
|
<rom name="Heimdall [Core Design] [1992] [3.5HD] [Disk 3 of 5].img" size="1474560" crc="7e5e7097" sha1="fe321736a36b25d794fe6b38e313a18f0ec1740b" offset="0"/>
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop4" interface="floppy_3_5">
|
||||||
|
<dataarea name="flop" size = "1474560">
|
||||||
|
<rom name="Heimdall [Core Design] [1992] [3.5HD] [Disk 4 of 5].img" size="1474560" crc="077b1db2" sha1="3771378b2c6fd94dd018360a6fe647f414256196" offset="0"/>
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop5" interface="floppy_3_5">
|
||||||
|
<dataarea name="flop" size = "1474560">
|
||||||
|
<rom name="Heimdall [Core Design] [1992] [3.5HD] [Disk 5 of 5].img" size="1474560" crc="2531f06f" sha1="bc40b0d2b9c0c61c838c1f858417e32545f1f5c4" offset="0"/>
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
|
<software name="heimdal2">
|
||||||
|
<description>Heimdall 2: Into the Hall of Worlds</description>
|
||||||
|
<year>1994</year>
|
||||||
|
<publisher>Core Design</publisher>
|
||||||
|
<info name="developer" value="The 8th Day" />
|
||||||
|
<part name="flop1" interface="floppy_3_5">
|
||||||
|
<dataarea name="flop" size = "1474560">
|
||||||
|
<rom name="Heimdall 2 [Core Design] [1994] [3.5HD] [Disk 1 of 2].img" size="1474560" crc="36c5583d" sha1="d31a05f78342c21ee75f53e64a2bcf2df34bab0c" offset="0"/>
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop2" interface="floppy_3_5">
|
||||||
|
<dataarea name="flop" size = "1474560">
|
||||||
|
<rom name="Heimdall 2 [Core Design] [1994] [3.5HD] [Disk 2 of 2].img" size="1474560" crc="350f6993" sha1="b71c6413d3ef4e8593f6a2dbe635dee9beadf7e7" offset="0"/>
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
<software name="heretic">
|
<software name="heretic">
|
||||||
<description>Heretic</description>
|
<description>Heretic</description>
|
||||||
<year>1994</year>
|
<year>1994</year>
|
||||||
|
@ -2550,6 +2550,7 @@ speedfrk:
|
|||||||
;@s:circus.cpp
|
;@s:circus.cpp
|
||||||
|
|
||||||
crash:
|
crash:
|
||||||
|
crasha:
|
||||||
smash:
|
smash:
|
||||||
@:maincpu,program,000f,2,00,00
|
@:maincpu,program,000f,2,00,00
|
||||||
|
|
||||||
@ -2858,6 +2859,9 @@ sf2ceea:
|
|||||||
sf2ceja:
|
sf2ceja:
|
||||||
sf2cejb:
|
sf2cejb:
|
||||||
sf2cejc:
|
sf2cejc:
|
||||||
|
sf2cems6a:
|
||||||
|
sf2cems6b:
|
||||||
|
sf2cems6c:
|
||||||
sf2cet:
|
sf2cet:
|
||||||
sf2ceua:
|
sf2ceua:
|
||||||
sf2ceub:
|
sf2ceub:
|
||||||
@ -4125,6 +4129,7 @@ stoffyu:
|
|||||||
wwfwfest:
|
wwfwfest:
|
||||||
wwfwfestj:
|
wwfwfestj:
|
||||||
wwfwfestu:
|
wwfwfestu:
|
||||||
|
wwfwfestu1:
|
||||||
wwfwfestub:
|
wwfwfestub:
|
||||||
@:maincpu,program,1c00c2,84,08,01
|
@:maincpu,program,1c00c2,84,08,01
|
||||||
|
|
||||||
@ -5725,18 +5730,19 @@ asurabusa:
|
|||||||
|
|
||||||
;@s:gaelco.cpp
|
;@s:gaelco.cpp
|
||||||
|
|
||||||
bioplayc:
|
|
||||||
@:maincpu,program,ff078a,17,06,2e
|
|
||||||
|
|
||||||
|
|
||||||
;(biomechanical toy (unprotected))
|
;(biomechanical toy (unprotected))
|
||||||
;** you must let the highscore display in attract mode before starting a game **
|
;** you must let the highscore display in attract mode before starting a game **
|
||||||
biomtoy:
|
biomtoy:
|
||||||
biomtoya:
|
biomtoya:
|
||||||
biomtoyb:
|
biomtoyb:
|
||||||
|
biomtoyc:
|
||||||
@:maincpu,program,ff0794,17,06,2e
|
@:maincpu,program,ff0794,17,06,2e
|
||||||
|
|
||||||
|
|
||||||
|
bioplayc:
|
||||||
|
@:maincpu,program,ff078a,17,06,2e
|
||||||
|
|
||||||
|
|
||||||
;(big karnak) (by GeoMan)
|
;(big karnak) (by GeoMan)
|
||||||
bigkarnk:
|
bigkarnk:
|
||||||
@:maincpu,program,102086,a0,00,0a
|
@:maincpu,program,102086,a0,00,0a
|
||||||
@ -6854,6 +6860,11 @@ venus:
|
|||||||
|
|
||||||
;@s:halleys.cpp
|
;@s:halleys.cpp
|
||||||
|
|
||||||
|
halleysc87:
|
||||||
|
@:maincpu,program,fc5a,23,02,54
|
||||||
|
@:maincpu,program,fc3f,3,02,00
|
||||||
|
|
||||||
|
|
||||||
;*******(halley's comet)(By Firebrand)
|
;*******(halley's comet)(By Firebrand)
|
||||||
halleysc:
|
halleysc:
|
||||||
halleyscj:
|
halleyscj:
|
||||||
@ -6862,16 +6873,16 @@ halleyscja:
|
|||||||
@:maincpu,program,fc21,3,02,00
|
@:maincpu,program,fc21,3,02,00
|
||||||
|
|
||||||
|
|
||||||
|
halleyscjp:
|
||||||
|
@:maincpu,program,fc3c,23,02,2e
|
||||||
|
@:maincpu,program,fc21,3,02,00
|
||||||
|
|
||||||
|
|
||||||
;*******ben bero beh (japan)
|
;*******ben bero beh (japan)
|
||||||
benberob:
|
benberob:
|
||||||
@:maincpu,program,fa4d,3,00,96
|
@:maincpu,program,fa4d,3,00,96
|
||||||
|
|
||||||
|
|
||||||
halleysc87:
|
|
||||||
@:maincpu,program,fc5a,23,02,54
|
|
||||||
@:maincpu,program,fc3f,3,02,00
|
|
||||||
|
|
||||||
|
|
||||||
;@s:hcastle.cpp
|
;@s:hcastle.cpp
|
||||||
|
|
||||||
akumajou:
|
akumajou:
|
||||||
@ -7518,6 +7529,19 @@ pinbos:
|
|||||||
|
|
||||||
;@s:lastduel.cpp
|
;@s:lastduel.cpp
|
||||||
|
|
||||||
|
leds2011:
|
||||||
|
leds2011u:
|
||||||
|
@:maincpu,program,ff8890,78,00,00
|
||||||
|
@:maincpu,program,ffcb76,23,41,01
|
||||||
|
@:maincpu,program,ff87c9,1,d2,d2
|
||||||
|
|
||||||
|
|
||||||
|
leds2011p:
|
||||||
|
@:maincpu,program,ff8852,78,00,00
|
||||||
|
@:maincpu,program,ffc936,23,41,01
|
||||||
|
@:maincpu,program,ff87c9,1,d2,d2
|
||||||
|
|
||||||
|
|
||||||
lastduel:
|
lastduel:
|
||||||
lastduelb:
|
lastduelb:
|
||||||
lastduelo:
|
lastduelo:
|
||||||
@ -7533,12 +7557,6 @@ lastduelo:
|
|||||||
@:maincpu,program,fccaed,1,00,00
|
@:maincpu,program,fccaed,1,00,00
|
||||||
|
|
||||||
|
|
||||||
leds2011u:
|
|
||||||
@:maincpu,program,ff8890,78,00,00
|
|
||||||
@:maincpu,program,ffcb76,23,41,01
|
|
||||||
@:maincpu,program,ff87c9,1,d2,d2
|
|
||||||
|
|
||||||
|
|
||||||
ledstorm:
|
ledstorm:
|
||||||
madgear:
|
madgear:
|
||||||
madgearj:
|
madgearj:
|
||||||
@ -8223,6 +8241,7 @@ magmax:
|
|||||||
|
|
||||||
;Devastators clones
|
;Devastators clones
|
||||||
devstors:
|
devstors:
|
||||||
|
devstors2:
|
||||||
devstorsv:
|
devstorsv:
|
||||||
devstorsx:
|
devstorsx:
|
||||||
garuka:
|
garuka:
|
||||||
@ -8362,6 +8381,7 @@ springer:
|
|||||||
|
|
||||||
mario:
|
mario:
|
||||||
mariobl:
|
mariobl:
|
||||||
|
mariobla:
|
||||||
marioe:
|
marioe:
|
||||||
mariof:
|
mariof:
|
||||||
marioj:
|
marioj:
|
||||||
@ -10096,6 +10116,10 @@ pclubysa:
|
|||||||
|
|
||||||
;@s:nmk16.cpp
|
;@s:nmk16.cpp
|
||||||
|
|
||||||
|
hachamfa:
|
||||||
|
@:maincpu,program,fc000,3df,01,4e
|
||||||
|
|
||||||
|
|
||||||
tomagic:
|
tomagic:
|
||||||
@:maincpu,program,f905c,31,00,20
|
@:maincpu,program,f905c,31,00,20
|
||||||
|
|
||||||
@ -11530,6 +11554,19 @@ raidenb:
|
|||||||
|
|
||||||
;@s:raiden2.cpp
|
;@s:raiden2.cpp
|
||||||
|
|
||||||
|
raiden2:
|
||||||
|
raiden2dx:
|
||||||
|
raiden2f:
|
||||||
|
raiden2hk:
|
||||||
|
raiden2i:
|
||||||
|
raiden2j:
|
||||||
|
raiden2k:
|
||||||
|
raiden2nl:
|
||||||
|
raiden2sw:
|
||||||
|
raiden2u:
|
||||||
|
@:maincpu,program,9dd4,ef,50,2a
|
||||||
|
|
||||||
|
|
||||||
;***** raiden dx fixed (thanks to Takasaki) **********
|
;***** raiden dx fixed (thanks to Takasaki) **********
|
||||||
raidendx:
|
raidendx:
|
||||||
raidendxa1:
|
raidendxa1:
|
||||||
@ -11539,6 +11576,7 @@ raidendxg:
|
|||||||
raidendxj:
|
raidendxj:
|
||||||
raidendxk:
|
raidendxk:
|
||||||
raidendxnl:
|
raidendxnl:
|
||||||
|
raidendxpt:
|
||||||
raidendxu:
|
raidendxu:
|
||||||
@:maincpu,program,a25a,2cf,a0,2a
|
@:maincpu,program,a25a,2cf,a0,2a
|
||||||
|
|
||||||
@ -11562,18 +11600,6 @@ zeroteamsr:
|
|||||||
@:maincpu,program,9212,4b,40,55
|
@:maincpu,program,9212,4b,40,55
|
||||||
|
|
||||||
|
|
||||||
raiden2:
|
|
||||||
raiden2dx:
|
|
||||||
raiden2f:
|
|
||||||
raiden2hk:
|
|
||||||
raiden2i:
|
|
||||||
raiden2j:
|
|
||||||
raiden2nl:
|
|
||||||
raiden2sw:
|
|
||||||
raiden2u:
|
|
||||||
@:maincpu,program,9dd4,ef,50,2a
|
|
||||||
|
|
||||||
|
|
||||||
;@s:rallyx.cpp
|
;@s:rallyx.cpp
|
||||||
|
|
||||||
dngrtrck:
|
dngrtrck:
|
||||||
@ -12024,6 +12050,7 @@ knockoutc:
|
|||||||
mariner:
|
mariner:
|
||||||
offensiv:
|
offensiv:
|
||||||
scramb2:
|
scramb2:
|
||||||
|
scramb3:
|
||||||
scramblb:
|
scramblb:
|
||||||
scramble:
|
scramble:
|
||||||
scramblebb:
|
scramblebb:
|
||||||
@ -12266,6 +12293,14 @@ hangonjr:
|
|||||||
|
|
||||||
;@s:segag80r.cpp
|
;@s:segag80r.cpp
|
||||||
|
|
||||||
|
;******Astro Blaster (version 2a)
|
||||||
|
astrob1:
|
||||||
|
astrob2a:
|
||||||
|
astrob2b:
|
||||||
|
astrobg:
|
||||||
|
@:maincpu,program,cb3f,da,00,5c
|
||||||
|
|
||||||
|
|
||||||
;monsterb:******monster bash (fixed) *
|
;monsterb:******monster bash (fixed) *
|
||||||
;monsterb2:******monster bash (2 board version) (fixed) *
|
;monsterb2:******monster bash (2 board version) (fixed) *
|
||||||
monsterb:
|
monsterb:
|
||||||
@ -12274,11 +12309,11 @@ monsterb2:
|
|||||||
@:maincpu,program,c8f6,1,0d,0d
|
@:maincpu,program,c8f6,1,0d,0d
|
||||||
|
|
||||||
|
|
||||||
;******Astro Blaster (version 2a)
|
;(astro blaster (version 2 & 3))
|
||||||
astrob1:
|
astrob:
|
||||||
astrob2a:
|
astrob2:
|
||||||
astrobg:
|
@:maincpu,program,cb3f,f6,00,00
|
||||||
@:maincpu,program,cb3f,da,00,5c
|
@:maincpu,program,cc18,1,5c,5c
|
||||||
|
|
||||||
|
|
||||||
;005:******005 ;[Special thanks to Cananas for enhancing this entry]
|
;005:******005 ;[Special thanks to Cananas for enhancing this entry]
|
||||||
@ -12309,13 +12344,6 @@ spaceod2:
|
|||||||
@:maincpu,program,c921,1,05,05
|
@:maincpu,program,c921,1,05,05
|
||||||
|
|
||||||
|
|
||||||
;(astro blaster (version 2 & 3))
|
|
||||||
astrob:
|
|
||||||
astrob2:
|
|
||||||
@:maincpu,program,cb3f,f6,00,00
|
|
||||||
@:maincpu,program,cc18,1,5c,5c
|
|
||||||
|
|
||||||
|
|
||||||
;@s:segag80v.cpp
|
;@s:segag80v.cpp
|
||||||
|
|
||||||
elim2a:
|
elim2a:
|
||||||
@ -12754,6 +12782,12 @@ crkdownu:
|
|||||||
|
|
||||||
;@s:segas32.cpp
|
;@s:segas32.cpp
|
||||||
|
|
||||||
|
arescue:
|
||||||
|
arescuej:
|
||||||
|
arescueu:
|
||||||
|
@:mainpcb:maincpu,program,20fb00,9f,a0,49
|
||||||
|
|
||||||
|
|
||||||
;alien3u:*******alien 3: the gun (us)
|
;alien3u:*******alien 3: the gun (us)
|
||||||
alien3:
|
alien3:
|
||||||
alien3j:
|
alien3j:
|
||||||
@ -12761,11 +12795,6 @@ alien3u:
|
|||||||
@:mainpcb:maincpu,program,20f2bc,78,80,00
|
@:mainpcb:maincpu,program,20f2bc,78,80,00
|
||||||
|
|
||||||
|
|
||||||
arescue:
|
|
||||||
arescuej:
|
|
||||||
@:mainpcb:maincpu,program,20fb00,9f,a0,49
|
|
||||||
|
|
||||||
|
|
||||||
;*******stadium cross
|
;*******stadium cross
|
||||||
scross:
|
scross:
|
||||||
scrossa:
|
scrossa:
|
||||||
@ -13607,6 +13636,18 @@ slapfighb3:
|
|||||||
|
|
||||||
;@s:snk.cpp
|
;@s:snk.cpp
|
||||||
|
|
||||||
|
;ikarinc:******ikari warriors (us no continues)
|
||||||
|
;ikaria:******ikari warriors (us)
|
||||||
|
ikari:
|
||||||
|
ikaria:
|
||||||
|
ikaria2:
|
||||||
|
ikarijp:
|
||||||
|
ikarijpb:
|
||||||
|
ikarinc:
|
||||||
|
@:maincpu,program,ff0b,50,00,49
|
||||||
|
@:maincpu,program,fc5f,3,00,00
|
||||||
|
|
||||||
|
|
||||||
;(athena) (fix)
|
;(athena) (fix)
|
||||||
;** fixed, but delete any athena.hi file before playing first time **
|
;** fixed, but delete any athena.hi file before playing first time **
|
||||||
athena:
|
athena:
|
||||||
@ -13688,17 +13729,6 @@ tnk3j:
|
|||||||
@:maincpu,program,fc59,3,00,00
|
@:maincpu,program,fc59,3,00,00
|
||||||
|
|
||||||
|
|
||||||
;ikarinc:******ikari warriors (us no continues)
|
|
||||||
;ikaria:******ikari warriors (us)
|
|
||||||
ikari:
|
|
||||||
ikaria:
|
|
||||||
ikarijp:
|
|
||||||
ikarijpb:
|
|
||||||
ikarinc:
|
|
||||||
@:maincpu,program,ff0b,50,00,49
|
|
||||||
@:maincpu,program,fc5f,3,00,00
|
|
||||||
|
|
||||||
|
|
||||||
ikariram:
|
ikariram:
|
||||||
@:maincpu,program,ff0b,50,00,4f
|
@:maincpu,program,ff0b,50,00,4f
|
||||||
@:maincpu,program,fc5f,3,00,00
|
@:maincpu,program,fc5f,3,00,00
|
||||||
@ -13798,6 +13828,14 @@ vanguardj:
|
|||||||
|
|
||||||
;@s:snk68.cpp
|
;@s:snk68.cpp
|
||||||
|
|
||||||
|
ikari3:
|
||||||
|
ikari3j:
|
||||||
|
ikari3k:
|
||||||
|
ikari3u:
|
||||||
|
ikari3w:
|
||||||
|
@:maincpu,program,4007e,58,00,1d
|
||||||
|
|
||||||
|
|
||||||
pow:
|
pow:
|
||||||
powj:
|
powj:
|
||||||
@:maincpu,program,43e8e,4,00,00
|
@:maincpu,program,43e8e,4,00,00
|
||||||
@ -13822,13 +13860,6 @@ streetsmw:
|
|||||||
@:maincpu,program,43f7e,4,00,00
|
@:maincpu,program,43f7e,4,00,00
|
||||||
|
|
||||||
|
|
||||||
ikari3:
|
|
||||||
ikari3j:
|
|
||||||
ikari3k:
|
|
||||||
ikari3u:
|
|
||||||
@:maincpu,program,4007e,58,00,1d
|
|
||||||
|
|
||||||
|
|
||||||
;@s:snowbros.cpp
|
;@s:snowbros.cpp
|
||||||
|
|
||||||
;******cookie & bibi 2
|
;******cookie & bibi 2
|
||||||
@ -14125,6 +14156,7 @@ srumbler3:
|
|||||||
;********(super shanghai dragon`s eye (world,bootleg))
|
;********(super shanghai dragon`s eye (world,bootleg))
|
||||||
sshangha:
|
sshangha:
|
||||||
sshanghab:
|
sshanghab:
|
||||||
|
sshanghaj:
|
||||||
@:maincpu,program,fec478,13f,00,1c
|
@:maincpu,program,fec478,13f,00,1c
|
||||||
|
|
||||||
|
|
||||||
@ -14566,6 +14598,7 @@ flickya:
|
|||||||
flickyo:
|
flickyo:
|
||||||
flickys1:
|
flickys1:
|
||||||
flickys2:
|
flickys2:
|
||||||
|
flickyup:
|
||||||
@:maincpu,program,e700,31,00,41
|
@:maincpu,program,e700,31,00,41
|
||||||
@:maincpu,program,c0d5,3,00,00
|
@:maincpu,program,c0d5,3,00,00
|
||||||
|
|
||||||
@ -16045,6 +16078,14 @@ timepltc:
|
|||||||
|
|
||||||
;@s:tmnt.cpp
|
;@s:tmnt.cpp
|
||||||
|
|
||||||
|
;********(golfing greats)
|
||||||
|
glfgreat:
|
||||||
|
glfgreatj:
|
||||||
|
glfgreatu:
|
||||||
|
@:maincpu,program,100320,50,41,9
|
||||||
|
@:maincpu,program,100400,50,41,9
|
||||||
|
|
||||||
|
|
||||||
;Teenage Mutant Ninja Turtles (US & clones)
|
;Teenage Mutant Ninja Turtles (US & clones)
|
||||||
tmht:
|
tmht:
|
||||||
tmht2p:
|
tmht2p:
|
||||||
@ -16125,12 +16166,6 @@ punkshotj:
|
|||||||
@:maincpu,program,80700,30,00,40
|
@:maincpu,program,80700,30,00,40
|
||||||
|
|
||||||
|
|
||||||
;********(golfing greats)
|
|
||||||
glfgreat:
|
|
||||||
@:maincpu,program,100320,50,41,9
|
|
||||||
@:maincpu,program,100400,50,41,9
|
|
||||||
|
|
||||||
|
|
||||||
;@s:tnzs.cpp
|
;@s:tnzs.cpp
|
||||||
|
|
||||||
chukatai:
|
chukatai:
|
||||||
@ -16653,6 +16688,11 @@ noahsark:
|
|||||||
|
|
||||||
;@s:tumbleb.cpp
|
;@s:tumbleb.cpp
|
||||||
|
|
||||||
|
;******Super Trio Thanks to Mr Valtric for this addition ******
|
||||||
|
suprtrio:
|
||||||
|
@:maincpu,program,f03308,5a,01,4e
|
||||||
|
|
||||||
|
|
||||||
;(jump kids) (by GeoMan)
|
;(jump kids) (by GeoMan)
|
||||||
jumpkids:
|
jumpkids:
|
||||||
@:maincpu,program,123c10,a0,50,50
|
@:maincpu,program,123c10,a0,50,50
|
||||||
@ -16976,6 +17016,17 @@ vaportrau:
|
|||||||
|
|
||||||
;@s:vastar.cpp
|
;@s:vastar.cpp
|
||||||
|
|
||||||
|
dogfightp:
|
||||||
|
@:maincpu,program,f16a,82,20,ff
|
||||||
|
@:maincpu,program,b2df,1,24,24
|
||||||
|
@:maincpu,program,b2ff,1,24,24
|
||||||
|
@:maincpu,program,b31f,1,03,03
|
||||||
|
@:maincpu,program,b33f,1,05,05
|
||||||
|
@:maincpu,program,b35f,1,02,02
|
||||||
|
@:maincpu,program,b37f,1,00,00
|
||||||
|
@:maincpu,program,b39f,1,00,00
|
||||||
|
|
||||||
|
|
||||||
pprobe:
|
pprobe:
|
||||||
@:maincpu,program,f380,45,00,15
|
@:maincpu,program,f380,45,00,15
|
||||||
@:maincpu,program,cd9e,1,00,00
|
@:maincpu,program,cd9e,1,00,00
|
||||||
@ -17449,6 +17500,7 @@ twcup90b:
|
|||||||
twcup90b1:
|
twcup90b1:
|
||||||
twcup90b2:
|
twcup90b2:
|
||||||
twcup90ba:
|
twcup90ba:
|
||||||
|
twcup90c:
|
||||||
twcup90t:
|
twcup90t:
|
||||||
@:maincpu,program,800f,1e,00,00
|
@:maincpu,program,800f,1e,00,00
|
||||||
@:maincpu,program,804d,01,11,11
|
@:maincpu,program,804d,01,11,11
|
||||||
@ -17485,6 +17537,7 @@ welltrisj:
|
|||||||
;** starting a game, for the save to work **
|
;** starting a game, for the save to work **
|
||||||
;** THIS SAVE DOES NOT SAVE THE COURSE RECORDS **
|
;** THIS SAVE DOES NOT SAVE THE COURSE RECORDS **
|
||||||
wgp:
|
wgp:
|
||||||
|
wgpu:
|
||||||
@:maincpu,program,10bbd9,c5,01,02
|
@:maincpu,program,10bbd9,c5,01,02
|
||||||
@:maincpu,program,10bc9b,1,44,44
|
@:maincpu,program,10bc9b,1,44,44
|
||||||
|
|
||||||
|
@ -3038,12 +3038,18 @@ end
|
|||||||
|
|
||||||
if (BUSES["SBUS"]~=null) then
|
if (BUSES["SBUS"]~=null) then
|
||||||
files {
|
files {
|
||||||
|
MAME_DIR .. "src/devices/bus/sbus/artecon.cpp",
|
||||||
|
MAME_DIR .. "src/devices/bus/sbus/artecon.h",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/bwtwo.cpp",
|
MAME_DIR .. "src/devices/bus/sbus/bwtwo.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/bwtwo.h",
|
MAME_DIR .. "src/devices/bus/sbus/bwtwo.h",
|
||||||
|
MAME_DIR .. "src/devices/bus/sbus/cgsix.cpp",
|
||||||
|
MAME_DIR .. "src/devices/bus/sbus/cgsix.h",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/cgthree.cpp",
|
MAME_DIR .. "src/devices/bus/sbus/cgthree.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/cgthree.h",
|
MAME_DIR .. "src/devices/bus/sbus/cgthree.h",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/turbogx.cpp",
|
MAME_DIR .. "src/devices/bus/sbus/hme.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/turbogx.h",
|
MAME_DIR .. "src/devices/bus/sbus/hme.h",
|
||||||
|
MAME_DIR .. "src/devices/bus/sbus/sunpc.cpp",
|
||||||
|
MAME_DIR .. "src/devices/bus/sbus/sunpc.h",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/sbus.cpp",
|
MAME_DIR .. "src/devices/bus/sbus/sbus.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/sbus/sbus.h",
|
MAME_DIR .. "src/devices/bus/sbus/sbus.h",
|
||||||
}
|
}
|
||||||
|
@ -4840,7 +4840,7 @@ files {
|
|||||||
MAME_DIR .. "src/mame/includes/vectrex.h",
|
MAME_DIR .. "src/mame/includes/vectrex.h",
|
||||||
MAME_DIR .. "src/mame/video/vectrex.cpp",
|
MAME_DIR .. "src/mame/video/vectrex.cpp",
|
||||||
MAME_DIR .. "src/mame/machine/vectrex.cpp",
|
MAME_DIR .. "src/mame/machine/vectrex.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/videolich.cpp",
|
MAME_DIR .. "src/mame/drivers/video21.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/videosaa.cpp",
|
MAME_DIR .. "src/mame/drivers/videosaa.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/vlc.cpp",
|
MAME_DIR .. "src/mame/drivers/vlc.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/voyager.cpp",
|
MAME_DIR .. "src/mame/drivers/voyager.cpp",
|
||||||
|
72
src/devices/bus/sbus/artecon.cpp
Normal file
72
src/devices/bus/sbus/artecon.cpp
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Ryan Holtz
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Artecon SB-300P 3-serial 1-parallel SBus card skeleton
|
||||||
|
|
||||||
|
The Artecon SB series of SBus cards uses up to 4 Cirrus Logic
|
||||||
|
CL-CD1400 Four-Channel Serial/Parallel Communications Engines.
|
||||||
|
|
||||||
|
Each chip supports up to four full-duplex serial channels, or three
|
||||||
|
full-duplex serial channels and one high-speed bidirectional parallel
|
||||||
|
channel.
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "artecon.h"
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(SBUS_SB300P, sbus_artecon_device, "sb300p", "Artecon SB-300P 3S/1P controller")
|
||||||
|
|
||||||
|
void sbus_artecon_device::mem_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x00000000, 0x01ffffff).rw(FUNC(sbus_artecon_device::unknown_r), FUNC(sbus_artecon_device::unknown_w));
|
||||||
|
map(0x00000000, 0x00003fff).r(FUNC(sbus_artecon_device::rom_r));
|
||||||
|
}
|
||||||
|
|
||||||
|
ROM_START( sbus_artecon )
|
||||||
|
ROM_REGION32_BE(0x8000, "prom", ROMREGION_ERASEFF)
|
||||||
|
ROM_LOAD( "artecon_sbus_port.bin", 0x0000, 0x4000, CRC(bced6981) SHA1(1c6006fb8cb555eff0cb7c2783c776d05c6797f8))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
const tiny_rom_entry *sbus_artecon_device::device_rom_region() const
|
||||||
|
{
|
||||||
|
return ROM_NAME( sbus_artecon );
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_artecon_device::device_add_mconfig(machine_config &config)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sbus_artecon_device::sbus_artecon_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: device_t(mconfig, SBUS_SB300P, tag, owner, clock)
|
||||||
|
, device_sbus_card_interface(mconfig, *this)
|
||||||
|
, m_rom(*this, "prom")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_artecon_device::device_start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_artecon_device::install_device()
|
||||||
|
{
|
||||||
|
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_artecon_device::mem_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
READ32_MEMBER(sbus_artecon_device::unknown_r)
|
||||||
|
{
|
||||||
|
logerror("%s: unknown_r: %08x & %08x\n", machine().describe_context(), offset << 2, mem_mask);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE32_MEMBER(sbus_artecon_device::unknown_w)
|
||||||
|
{
|
||||||
|
logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
READ32_MEMBER(sbus_artecon_device::rom_r)
|
||||||
|
{
|
||||||
|
return ((uint32_t*)m_rom->base())[offset];
|
||||||
|
}
|
45
src/devices/bus/sbus/artecon.h
Normal file
45
src/devices/bus/sbus/artecon.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Ryan Holtz
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Artecon SB-300P 3-serial 1-parallel SBus card skeleton
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAME_BUS_SBUS_ARTECON_H
|
||||||
|
#define MAME_BUS_SBUS_ARTECON_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "sbus.h"
|
||||||
|
|
||||||
|
|
||||||
|
class sbus_artecon_device : public device_t, public device_sbus_card_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
sbus_artecon_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device_t overrides
|
||||||
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
// device_sbus_slot_interface overrides
|
||||||
|
virtual void install_device() override;
|
||||||
|
|
||||||
|
DECLARE_READ32_MEMBER(unknown_r);
|
||||||
|
DECLARE_WRITE32_MEMBER(unknown_w);
|
||||||
|
DECLARE_READ32_MEMBER(rom_r);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void mem_map(address_map &map) override;
|
||||||
|
|
||||||
|
required_memory_region m_rom;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_DEVICE_TYPE(SBUS_SB300P, sbus_artecon_device)
|
||||||
|
|
||||||
|
#endif // MAME_BUS_SBUS_ARTECON_H
|
@ -14,14 +14,18 @@ DEFINE_DEVICE_TYPE(SBUS_BWTWO, sbus_bwtwo_device, "bwtwo", "Sun bwtwo SBus Video
|
|||||||
|
|
||||||
void sbus_bwtwo_device::mem_map(address_map &map)
|
void sbus_bwtwo_device::mem_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00000000, 0x000007ff).r(FUNC(sbus_bwtwo_device::rom_r));
|
map(0x00000000, 0x00007fff).r(FUNC(sbus_bwtwo_device::rom_r));
|
||||||
map(0x00400000, 0x0040001f).rw(FUNC(sbus_bwtwo_device::regs_r), FUNC(sbus_bwtwo_device::regs_w));
|
map(0x00400000, 0x0040001f).rw(FUNC(sbus_bwtwo_device::regs_r), FUNC(sbus_bwtwo_device::regs_w));
|
||||||
map(0x00800000, 0x008fffff).rw(FUNC(sbus_bwtwo_device::vram_r), FUNC(sbus_bwtwo_device::vram_w));
|
map(0x00800000, 0x008fffff).rw(FUNC(sbus_bwtwo_device::vram_r), FUNC(sbus_bwtwo_device::vram_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
ROM_START( sbus_bwtwo )
|
ROM_START( sbus_bwtwo )
|
||||||
ROM_REGION32_BE(0x800, "prom", ROMREGION_ERASEFF)
|
ROM_REGION32_BE(0x8000, "prom", ROMREGION_ERASEFF)
|
||||||
ROM_LOAD( "sunw,501-1561.bin", 0x0000, 0x0800, CRC(e37a3314) SHA1(78761bd2369cb0c58ef1344c697a47d3a659d4bc))
|
|
||||||
|
ROM_SYSTEM_BIOS(0, "1081", "P/N 525-1081-01")
|
||||||
|
ROMX_LOAD( "bw2_525-1081-01.bin", 0x0000, 0x8000, CRC(8b70c8c7) SHA1(fd750ad2fd6efdde957f8b0f9abf962e14fe221a), ROM_BIOS(0) )
|
||||||
|
ROM_SYSTEM_BIOS(1, "1124", "P/N 525-1124-01")
|
||||||
|
ROMX_LOAD( "bw2_525-1124-01.bin", 0x0000, 0x0800, CRC(e37a3314) SHA1(78761bd2369cb0c58ef1344c697a47d3a659d4bc), ROM_BIOS(1) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
const tiny_rom_entry *sbus_bwtwo_device::device_rom_region() const
|
const tiny_rom_entry *sbus_bwtwo_device::device_rom_region() const
|
||||||
|
@ -45,7 +45,7 @@ private:
|
|||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
};
|
};
|
||||||
|
|
||||||
// device type definition
|
|
||||||
DECLARE_DEVICE_TYPE(SBUS_BWTWO, sbus_bwtwo_device)
|
DECLARE_DEVICE_TYPE(SBUS_BWTWO, sbus_bwtwo_device)
|
||||||
|
|
||||||
#endif // MAME_BUS_SBUS_BWTWO_H
|
#endif // MAME_BUS_SBUS_BWTWO_H
|
||||||
|
@ -2,95 +2,50 @@
|
|||||||
// copyright-holders:Ryan Holtz
|
// copyright-holders:Ryan Holtz
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Sun TurboGX accelerated 8-bit color video controller
|
Sun cgsix-series accelerated 8-bit color video controller
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "turbogx.h"
|
#include "cgsix.h"
|
||||||
#include "screen.h"
|
|
||||||
|
|
||||||
DEFINE_DEVICE_TYPE(SBUS_TURBOGX, sbus_turbogx_device, "turbogx", "Sun TurboGX SBus Video")
|
DEFINE_DEVICE_TYPE(SBUS_TURBOGX, sbus_turbogx_device, "turbogx", "Sun TurboGX SBus Video")
|
||||||
|
DEFINE_DEVICE_TYPE(SBUS_TURBOGXP, sbus_turbogxp_device, "turbogxp", "Sun TurboGX+ SBus Video")
|
||||||
|
|
||||||
void sbus_turbogx_device::mem_map(address_map &map)
|
//-------------------------------------------------
|
||||||
|
// base cgsix device
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void sbus_cgsix_device::base_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00000000, 0x01ffffff).rw(FUNC(sbus_turbogx_device::unknown_r), FUNC(sbus_turbogx_device::unknown_w));
|
map(0x00000000, 0x01ffffff).rw(FUNC(sbus_cgsix_device::unknown_r), FUNC(sbus_cgsix_device::unknown_w));
|
||||||
map(0x00000000, 0x00007fff).r(FUNC(sbus_turbogx_device::rom_r));
|
map(0x00000000, 0x00007fff).r(FUNC(sbus_cgsix_device::rom_r));
|
||||||
map(0x00200000, 0x00200007).w(FUNC(sbus_turbogx_device::palette_w));
|
map(0x00200000, 0x0020000f).m(m_ramdac, FUNC(bt458_device::map)).umask32(0xff000000);
|
||||||
map(0x00700000, 0x00700fff).rw(FUNC(sbus_turbogx_device::fbc_r), FUNC(sbus_turbogx_device::fbc_w));
|
map(0x00700000, 0x00700fff).rw(FUNC(sbus_cgsix_device::fbc_r), FUNC(sbus_cgsix_device::fbc_w));
|
||||||
map(0x00800000, 0x008fffff).rw(FUNC(sbus_turbogx_device::vram_r), FUNC(sbus_turbogx_device::vram_w));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ROM_START( sbus_turbogx )
|
sbus_cgsix_device::sbus_cgsix_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
|
||||||
ROM_REGION32_BE(0x8000, "prom", ROMREGION_ERASEFF)
|
: device_t(mconfig, type, tag, owner, clock)
|
||||||
ROM_LOAD( "sunw,501-2325.bin", 0x0000, 0x8000, CRC(bbdc45f8) SHA1(e4a51d78e199cd57f2fcb9d45b25dfae2bd537e4))
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
const tiny_rom_entry *sbus_turbogx_device::device_rom_region() const
|
|
||||||
{
|
|
||||||
return ROM_NAME( sbus_turbogx );
|
|
||||||
}
|
|
||||||
|
|
||||||
void sbus_turbogx_device::device_add_mconfig(machine_config &config)
|
|
||||||
{
|
|
||||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
||||||
screen.set_screen_update(FUNC(sbus_turbogx_device::screen_update));
|
|
||||||
screen.set_size(1152, 900);
|
|
||||||
screen.set_visarea(0, 1152-1, 0, 900-1);
|
|
||||||
screen.set_refresh_hz(72);
|
|
||||||
|
|
||||||
PALETTE(config, m_palette, 256).set_init(DEVICE_SELF, FUNC(sbus_turbogx_device::palette_init));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sbus_turbogx_device::sbus_turbogx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
|
||||||
: device_t(mconfig, SBUS_TURBOGX, tag, owner, clock)
|
|
||||||
, device_sbus_card_interface(mconfig, *this)
|
, device_sbus_card_interface(mconfig, *this)
|
||||||
, m_rom(*this, "prom")
|
, m_rom(*this, "prom")
|
||||||
, m_screen(*this, "screen")
|
, m_screen(*this, "screen")
|
||||||
, m_palette(*this, "palette")
|
, m_ramdac(*this, "ramdac")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbus_turbogx_device::device_start()
|
void sbus_cgsix_device::device_start()
|
||||||
{
|
{
|
||||||
m_vram = std::make_unique<uint32_t[]>(0x100000/4);
|
m_vram = std::make_unique<uint32_t[]>(m_vram_size / 4);
|
||||||
|
|
||||||
save_item(NAME(m_palette_entry));
|
|
||||||
save_item(NAME(m_palette_r));
|
|
||||||
save_item(NAME(m_palette_g));
|
|
||||||
save_item(NAME(m_palette_b));
|
|
||||||
save_item(NAME(m_palette_step));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbus_turbogx_device::device_reset()
|
void sbus_cgsix_device::device_reset()
|
||||||
{
|
{
|
||||||
m_palette_entry = 0;
|
|
||||||
m_palette_r = 0;
|
|
||||||
m_palette_g = 0;
|
|
||||||
m_palette_b = 0;
|
|
||||||
m_palette_step = 0;
|
|
||||||
|
|
||||||
memset(&m_fbc, 0, sizeof(m_fbc));
|
memset(&m_fbc, 0, sizeof(m_fbc));
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbus_turbogx_device::install_device()
|
uint32_t sbus_cgsix_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_turbogx_device::mem_map);
|
const pen_t *pens = m_ramdac->pens();
|
||||||
}
|
|
||||||
|
|
||||||
void sbus_turbogx_device::palette_init(palette_device &palette)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 256; i++)
|
|
||||||
{
|
|
||||||
const uint8_t reversed = 255 - i;
|
|
||||||
palette.set_pen_color(i, rgb_t(reversed, reversed, reversed));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t sbus_turbogx_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
|
||||||
{
|
|
||||||
const pen_t *pens = m_palette->pens();
|
|
||||||
uint8_t *vram = (uint8_t *)&m_vram[0];
|
uint8_t *vram = (uint8_t *)&m_vram[0];
|
||||||
|
|
||||||
for (int y = 0; y < 900; y++)
|
for (int y = 0; y < 900; y++)
|
||||||
@ -106,66 +61,33 @@ uint32_t sbus_turbogx_device::screen_update(screen_device &screen, bitmap_rgb32
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ32_MEMBER(sbus_turbogx_device::rom_r)
|
READ32_MEMBER(sbus_cgsix_device::rom_r)
|
||||||
{
|
{
|
||||||
return ((uint32_t*)m_rom->base())[offset];
|
return ((uint32_t*)m_rom->base())[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
READ32_MEMBER(sbus_turbogx_device::unknown_r)
|
READ32_MEMBER(sbus_cgsix_device::unknown_r)
|
||||||
{
|
{
|
||||||
logerror("%s: unknown_r: %08x & %08x\n", machine().describe_context(), offset << 2, mem_mask);
|
logerror("%s: unknown_r: %08x & %08x\n", machine().describe_context(), offset << 2, mem_mask);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE32_MEMBER(sbus_turbogx_device::unknown_w)
|
WRITE32_MEMBER(sbus_cgsix_device::unknown_w)
|
||||||
{
|
{
|
||||||
logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
|
logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ32_MEMBER(sbus_turbogx_device::vram_r)
|
READ32_MEMBER(sbus_cgsix_device::vram_r)
|
||||||
{
|
{
|
||||||
return m_vram[offset];
|
return m_vram[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE32_MEMBER(sbus_turbogx_device::vram_w)
|
WRITE32_MEMBER(sbus_cgsix_device::vram_w)
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&m_vram[offset]);
|
COMBINE_DATA(&m_vram[offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE32_MEMBER(sbus_turbogx_device::palette_w)
|
uint8_t sbus_cgsix_device::perform_rasterop(uint8_t src, uint8_t dst)
|
||||||
{
|
|
||||||
if (offset == 0)
|
|
||||||
{
|
|
||||||
m_palette_entry = data >> 24;
|
|
||||||
logerror("selecting palette entry %d\n", (uint32_t)m_palette_entry);
|
|
||||||
m_palette_step = 0;
|
|
||||||
}
|
|
||||||
else if (offset == 1)
|
|
||||||
{
|
|
||||||
switch (m_palette_step)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
logerror("palette entry %d red: %02x\n", (uint32_t)m_palette_entry, data);
|
|
||||||
m_palette_r = data >> 24;
|
|
||||||
m_palette_step++;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
logerror("palette entry %d green: %02x\n", (uint32_t)m_palette_entry, data);
|
|
||||||
m_palette_g = data >> 24;
|
|
||||||
m_palette_step++;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
logerror("palette entry %d blue: %02x\n", (uint32_t)m_palette_entry, data);
|
|
||||||
m_palette_b = data >> 24;
|
|
||||||
m_palette->set_pen_color(m_palette_entry, rgb_t(m_palette_r, m_palette_g, m_palette_b));
|
|
||||||
m_palette_step = 0;
|
|
||||||
m_palette_entry++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t sbus_turbogx_device::perform_rasterop(uint8_t src, uint8_t dst)
|
|
||||||
{
|
{
|
||||||
const uint32_t rops[4] = { fbc_rasterop_rop00(), fbc_rasterop_rop01(), fbc_rasterop_rop10(), fbc_rasterop_rop11() };
|
const uint32_t rops[4] = { fbc_rasterop_rop00(), fbc_rasterop_rop01(), fbc_rasterop_rop10(), fbc_rasterop_rop11() };
|
||||||
|
|
||||||
@ -208,7 +130,7 @@ uint8_t sbus_turbogx_device::perform_rasterop(uint8_t src, uint8_t dst)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: This is basically untested, and probably full of bugs!
|
// NOTE: This is basically untested, and probably full of bugs!
|
||||||
void sbus_turbogx_device::handle_draw_command()
|
void sbus_cgsix_device::handle_draw_command()
|
||||||
{
|
{
|
||||||
if (fbc_misc_draw() != FBC_MISC_DRAW_RENDER)
|
if (fbc_misc_draw() != FBC_MISC_DRAW_RENDER)
|
||||||
{
|
{
|
||||||
@ -252,7 +174,7 @@ void sbus_turbogx_device::handle_draw_command()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: This is basically untested, and probably full of bugs!
|
// NOTE: This is basically untested, and probably full of bugs!
|
||||||
void sbus_turbogx_device::handle_blit_command()
|
void sbus_cgsix_device::handle_blit_command()
|
||||||
{
|
{
|
||||||
uint8_t *vram = (uint8_t*)&m_vram[0];
|
uint8_t *vram = (uint8_t*)&m_vram[0];
|
||||||
const uint32_t fbw = (m_fbc.m_clip_maxx + 1);
|
const uint32_t fbw = (m_fbc.m_clip_maxx + 1);
|
||||||
@ -281,7 +203,7 @@ void sbus_turbogx_device::handle_blit_command()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
READ32_MEMBER(sbus_turbogx_device::fbc_r)
|
READ32_MEMBER(sbus_cgsix_device::fbc_r)
|
||||||
{
|
{
|
||||||
uint32_t ret = 0;
|
uint32_t ret = 0;
|
||||||
switch (offset)
|
switch (offset)
|
||||||
@ -588,7 +510,7 @@ READ32_MEMBER(sbus_turbogx_device::fbc_r)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE32_MEMBER(sbus_turbogx_device::fbc_w)
|
WRITE32_MEMBER(sbus_cgsix_device::fbc_w)
|
||||||
{
|
{
|
||||||
static const char* misc_bdisp_name[4] = { "IGNORE", "0", "1", "ILLEGAL" };
|
static const char* misc_bdisp_name[4] = { "IGNORE", "0", "1", "ILLEGAL" };
|
||||||
static const char* misc_bread_name[4] = { "IGNORE", "0", "1", "ILLEGAL" };
|
static const char* misc_bread_name[4] = { "IGNORE", "0", "1", "ILLEGAL" };
|
||||||
@ -1026,3 +948,86 @@ WRITE32_MEMBER(sbus_turbogx_device::fbc_w)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// TurboGX implementation
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void sbus_turbogx_device::mem_map(address_map &map)
|
||||||
|
{
|
||||||
|
base_map(map);
|
||||||
|
map(0x00800000, 0x008fffff).rw(FUNC(sbus_turbogx_device::vram_r), FUNC(sbus_turbogx_device::vram_w));
|
||||||
|
}
|
||||||
|
|
||||||
|
ROM_START( sbus_turbogx )
|
||||||
|
ROM_REGION32_BE(0x8000, "prom", ROMREGION_ERASEFF)
|
||||||
|
ROM_LOAD( "sunw,501-2325.bin", 0x0000, 0x8000, CRC(bbdc45f8) SHA1(e4a51d78e199cd57f2fcb9d45b25dfae2bd537e4))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
const tiny_rom_entry *sbus_turbogx_device::device_rom_region() const
|
||||||
|
{
|
||||||
|
return ROM_NAME( sbus_turbogx );
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_turbogx_device::device_add_mconfig(machine_config &config)
|
||||||
|
{
|
||||||
|
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||||
|
m_screen->set_screen_update(FUNC(sbus_turbogx_device::screen_update));
|
||||||
|
m_screen->set_size(1152, 900);
|
||||||
|
m_screen->set_visarea(0, 1152-1, 0, 900-1);
|
||||||
|
m_screen->set_refresh_hz(72);
|
||||||
|
|
||||||
|
BT458(config, m_ramdac, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
sbus_turbogx_device::sbus_turbogx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: sbus_cgsix_device(mconfig, SBUS_TURBOGX, tag, owner, clock, 0x100000)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_turbogx_device::install_device()
|
||||||
|
{
|
||||||
|
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_turbogx_device::mem_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// TurboGX+ implementation
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void sbus_turbogxp_device::mem_map(address_map &map)
|
||||||
|
{
|
||||||
|
base_map(map);
|
||||||
|
map(0x00800000, 0x00bfffff).rw(FUNC(sbus_turbogxp_device::vram_r), FUNC(sbus_turbogxp_device::vram_w));
|
||||||
|
}
|
||||||
|
|
||||||
|
ROM_START( sbus_turbogxp )
|
||||||
|
ROM_REGION32_BE(0x8000, "prom", ROMREGION_ERASEFF)
|
||||||
|
ROM_LOAD( "sunw,501-2253.bin", 0x0000, 0x8000, CRC(525a58db) SHA1(721fc378d4b952b5cbb271e16bd67bc02439efdc))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
const tiny_rom_entry *sbus_turbogxp_device::device_rom_region() const
|
||||||
|
{
|
||||||
|
return ROM_NAME( sbus_turbogxp );
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_turbogxp_device::device_add_mconfig(machine_config &config)
|
||||||
|
{
|
||||||
|
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||||
|
m_screen->set_screen_update(FUNC(sbus_turbogxp_device::screen_update));
|
||||||
|
m_screen->set_size(1152, 900);
|
||||||
|
m_screen->set_visarea(0, 1152-1, 0, 900-1);
|
||||||
|
m_screen->set_refresh_hz(72);
|
||||||
|
|
||||||
|
BT467(config, m_ramdac, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
sbus_turbogxp_device::sbus_turbogxp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: sbus_cgsix_device(mconfig, SBUS_TURBOGXP, tag, owner, clock, 0x400000)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_turbogxp_device::install_device()
|
||||||
|
{
|
||||||
|
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_turbogxp_device::mem_map);
|
||||||
|
}
|
||||||
|
|
@ -2,52 +2,53 @@
|
|||||||
// copyright-holders:Ryan Holtz
|
// copyright-holders:Ryan Holtz
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Sun TurboGX accelerated 8-bit color video controller
|
Sun cgsix-series accelerated 8-bit color video controller
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#ifndef MAME_BUS_SBUS_TURBOGX_H
|
#ifndef MAME_BUS_SBUS_CGSIX_H
|
||||||
#define MAME_BUS_SBUS_TURBOGX_H
|
#define MAME_BUS_SBUS_CGSIX_H
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "sbus.h"
|
#include "sbus.h"
|
||||||
#include "emupal.h"
|
#include "video/bt45x.h"
|
||||||
|
#include "screen.h"
|
||||||
|
|
||||||
class sbus_turbogx_device : public device_t, public device_sbus_card_interface
|
class sbus_cgsix_device : public device_t, public device_sbus_card_interface
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
// construction/destruction
|
|
||||||
sbus_turbogx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
// construction/destruction
|
||||||
|
sbus_cgsix_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const uint32_t vram_size)
|
||||||
|
: sbus_cgsix_device(mconfig, type, tag, owner, clock)
|
||||||
|
{
|
||||||
|
set_vram_size(vram_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
sbus_cgsix_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
// configuration
|
||||||
|
void set_vram_size(uint32_t vram_size) { m_vram_size = vram_size; }
|
||||||
|
|
||||||
// device_t overrides
|
// device_t overrides
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
|
||||||
virtual void device_add_mconfig(machine_config &config) override;
|
|
||||||
virtual void device_start() override;
|
virtual void device_start() override;
|
||||||
virtual void device_reset() override;
|
virtual void device_reset() override;
|
||||||
|
|
||||||
// device_sbus_slot_interface overrides
|
|
||||||
virtual void install_device() override;
|
|
||||||
|
|
||||||
void palette_init(palette_device &palette);
|
|
||||||
|
|
||||||
DECLARE_READ32_MEMBER(rom_r);
|
DECLARE_READ32_MEMBER(rom_r);
|
||||||
DECLARE_READ32_MEMBER(unknown_r);
|
DECLARE_READ32_MEMBER(unknown_r);
|
||||||
DECLARE_WRITE32_MEMBER(unknown_w);
|
DECLARE_WRITE32_MEMBER(unknown_w);
|
||||||
DECLARE_READ32_MEMBER(vram_r);
|
DECLARE_READ32_MEMBER(vram_r);
|
||||||
DECLARE_WRITE32_MEMBER(vram_w);
|
DECLARE_WRITE32_MEMBER(vram_w);
|
||||||
DECLARE_WRITE32_MEMBER(palette_w);
|
|
||||||
DECLARE_READ32_MEMBER(fbc_r);
|
DECLARE_READ32_MEMBER(fbc_r);
|
||||||
DECLARE_WRITE32_MEMBER(fbc_w);
|
DECLARE_WRITE32_MEMBER(fbc_w);
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
uint8_t perform_rasterop(uint8_t src, uint8_t dst);
|
uint8_t perform_rasterop(uint8_t src, uint8_t dst);
|
||||||
void handle_blit_command();
|
void handle_blit_command();
|
||||||
void handle_draw_command();
|
void handle_draw_command();
|
||||||
|
|
||||||
void mem_map(address_map &map) override;
|
void base_map(address_map &map);
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -466,18 +467,46 @@ private:
|
|||||||
required_memory_region m_rom;
|
required_memory_region m_rom;
|
||||||
std::unique_ptr<uint32_t[]> m_vram;
|
std::unique_ptr<uint32_t[]> m_vram;
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<palette_device> m_palette;
|
required_device<bt458_device> m_ramdac;
|
||||||
|
|
||||||
uint8_t m_palette_entry;
|
|
||||||
uint8_t m_palette_r;
|
|
||||||
uint8_t m_palette_g;
|
|
||||||
uint8_t m_palette_b;
|
|
||||||
uint8_t m_palette_step;
|
|
||||||
|
|
||||||
fbc_t m_fbc;
|
fbc_t m_fbc;
|
||||||
|
|
||||||
|
uint32_t m_vram_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
// device type definition
|
class sbus_turbogx_device : public sbus_cgsix_device
|
||||||
DECLARE_DEVICE_TYPE(SBUS_TURBOGX, sbus_turbogx_device)
|
{
|
||||||
|
public:
|
||||||
|
sbus_turbogx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
#endif // MAME_BUS_SBUS_TURBOGX_H
|
protected:
|
||||||
|
// device_t overrides
|
||||||
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
void device_add_mconfig(machine_config &config) override;
|
||||||
|
|
||||||
|
// device_sbus_slot_interface overrides
|
||||||
|
virtual void install_device() override;
|
||||||
|
|
||||||
|
void mem_map(address_map &map) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class sbus_turbogxp_device : public sbus_cgsix_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
sbus_turbogxp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device_t overrides
|
||||||
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
void device_add_mconfig(machine_config &config) override;
|
||||||
|
|
||||||
|
// device_sbus_slot_interface overrides
|
||||||
|
virtual void install_device() override;
|
||||||
|
|
||||||
|
void mem_map(address_map &map) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
DECLARE_DEVICE_TYPE(SBUS_TURBOGX, sbus_turbogx_device)
|
||||||
|
DECLARE_DEVICE_TYPE(SBUS_TURBOGXP, sbus_turbogxp_device)
|
||||||
|
|
||||||
|
#endif // MAME_BUS_SBUS_CGSIX_H
|
@ -16,10 +16,10 @@ void sbus_cgthree_device::mem_map(address_map &map)
|
|||||||
{
|
{
|
||||||
map(0x00000000, 0x01ffffff).rw(FUNC(sbus_cgthree_device::unknown_r), FUNC(sbus_cgthree_device::unknown_w));
|
map(0x00000000, 0x01ffffff).rw(FUNC(sbus_cgthree_device::unknown_r), FUNC(sbus_cgthree_device::unknown_w));
|
||||||
map(0x00000000, 0x000007ff).r(FUNC(sbus_cgthree_device::rom_r));
|
map(0x00000000, 0x000007ff).r(FUNC(sbus_cgthree_device::rom_r));
|
||||||
map(0x00400000, 0x00400007).w(FUNC(sbus_cgthree_device::palette_w));
|
map(0x00400000, 0x0040000f).m(m_ramdac, FUNC(bt458_device::map)).umask32(0xff000000);
|
||||||
map(0x007ff800, 0x007ff81f).rw(FUNC(sbus_cgthree_device::regs_r), FUNC(sbus_cgthree_device::regs_w));
|
map(0x007ff800, 0x007ff81f).rw(FUNC(sbus_cgthree_device::regs_r), FUNC(sbus_cgthree_device::regs_w));
|
||||||
map(0x00800000, 0x008fd1ff).rw(FUNC(sbus_cgthree_device::vram2_r), FUNC(sbus_cgthree_device::vram2_w));
|
map(0x00800000, 0x008fffff).rw(FUNC(sbus_cgthree_device::vram_r), FUNC(sbus_cgthree_device::vram_w));
|
||||||
map(0x00bff800, 0x00cfcbff).rw(FUNC(sbus_cgthree_device::vram_r), FUNC(sbus_cgthree_device::vram_w));
|
map(0x00bff800, 0x00cff7ff).rw(FUNC(sbus_cgthree_device::vram_r), FUNC(sbus_cgthree_device::vram_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
ROM_START( sbus_cgthree )
|
ROM_START( sbus_cgthree )
|
||||||
@ -34,13 +34,13 @@ const tiny_rom_entry *sbus_cgthree_device::device_rom_region() const
|
|||||||
|
|
||||||
void sbus_cgthree_device::device_add_mconfig(machine_config &config)
|
void sbus_cgthree_device::device_add_mconfig(machine_config &config)
|
||||||
{
|
{
|
||||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||||
screen.set_screen_update(FUNC(sbus_cgthree_device::screen_update));
|
m_screen->set_screen_update(FUNC(sbus_cgthree_device::screen_update));
|
||||||
screen.set_size(1152, 900);
|
m_screen->set_size(1152, 900);
|
||||||
screen.set_visarea(0, 1152-1, 0, 900-1);
|
m_screen->set_visarea(0, 1152-1, 0, 900-1);
|
||||||
screen.set_refresh_hz(72);
|
m_screen->set_refresh_hz(72);
|
||||||
|
|
||||||
PALETTE(config, m_palette, 256).set_init(DEVICE_SELF, FUNC(sbus_cgthree_device::palette_init));
|
BT458(config, m_ramdac, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
sbus_cgthree_device::sbus_cgthree_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
sbus_cgthree_device::sbus_cgthree_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
@ -48,29 +48,17 @@ sbus_cgthree_device::sbus_cgthree_device(const machine_config &mconfig, const ch
|
|||||||
, device_sbus_card_interface(mconfig, *this)
|
, device_sbus_card_interface(mconfig, *this)
|
||||||
, m_rom(*this, "prom")
|
, m_rom(*this, "prom")
|
||||||
, m_screen(*this, "screen")
|
, m_screen(*this, "screen")
|
||||||
, m_palette(*this, "palette")
|
, m_ramdac(*this, "ramdac")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbus_cgthree_device::device_start()
|
void sbus_cgthree_device::device_start()
|
||||||
{
|
{
|
||||||
m_vram = std::make_unique<uint32_t[]>(0x100000/4);
|
m_vram = std::make_unique<uint32_t[]>(0x100000/4);
|
||||||
m_vram2 = std::make_unique<uint32_t[]>(0x100000/4);
|
|
||||||
|
|
||||||
save_item(NAME(m_palette_entry));
|
|
||||||
save_item(NAME(m_palette_r));
|
|
||||||
save_item(NAME(m_palette_g));
|
|
||||||
save_item(NAME(m_palette_b));
|
|
||||||
save_item(NAME(m_palette_step));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbus_cgthree_device::device_reset()
|
void sbus_cgthree_device::device_reset()
|
||||||
{
|
{
|
||||||
m_palette_entry = 0;
|
|
||||||
m_palette_r = 0;
|
|
||||||
m_palette_g = 0;
|
|
||||||
m_palette_b = 0;
|
|
||||||
m_palette_step = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbus_cgthree_device::install_device()
|
void sbus_cgthree_device::install_device()
|
||||||
@ -78,19 +66,10 @@ void sbus_cgthree_device::install_device()
|
|||||||
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_cgthree_device::mem_map);
|
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_cgthree_device::mem_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbus_cgthree_device::palette_init(palette_device &palette)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 256; i++)
|
|
||||||
{
|
|
||||||
const uint8_t reversed = 255 - i;
|
|
||||||
palette.set_pen_color(i, rgb_t(reversed, reversed, reversed));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t sbus_cgthree_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
uint32_t sbus_cgthree_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
const pen_t *pens = m_palette->pens();
|
const pen_t *pens = m_ramdac->pens();
|
||||||
uint8_t *vram = (uint8_t *)&m_vram2[0];
|
uint8_t *vram = (uint8_t *)&m_vram[0];
|
||||||
|
|
||||||
for (int y = 0; y < 900; y++)
|
for (int y = 0; y < 900; y++)
|
||||||
{
|
{
|
||||||
@ -116,35 +95,6 @@ WRITE32_MEMBER(sbus_cgthree_device::unknown_w)
|
|||||||
logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
|
logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE32_MEMBER(sbus_cgthree_device::palette_w)
|
|
||||||
{
|
|
||||||
if (offset == 0)
|
|
||||||
{
|
|
||||||
m_palette_entry = data >> 24;
|
|
||||||
m_palette_step = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (m_palette_step)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
m_palette_r = data >> 24;
|
|
||||||
m_palette_step++;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
m_palette_g = data >> 24;
|
|
||||||
m_palette_step++;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
m_palette_b = data >> 24;
|
|
||||||
m_palette->set_pen_color(m_palette_entry, rgb_t(m_palette_r, m_palette_g, m_palette_b));
|
|
||||||
m_palette_step = 0;
|
|
||||||
m_palette_entry++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
READ8_MEMBER(sbus_cgthree_device::regs_r)
|
READ8_MEMBER(sbus_cgthree_device::regs_r)
|
||||||
{
|
{
|
||||||
logerror("%s: regs_r: Unimplemented: %08x\n", machine().describe_context(), 0x7ff800 + offset);
|
logerror("%s: regs_r: Unimplemented: %08x\n", machine().describe_context(), 0x7ff800 + offset);
|
||||||
@ -170,13 +120,3 @@ WRITE32_MEMBER(sbus_cgthree_device::vram_w)
|
|||||||
{
|
{
|
||||||
COMBINE_DATA(&m_vram[offset]);
|
COMBINE_DATA(&m_vram[offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ32_MEMBER(sbus_cgthree_device::vram2_r)
|
|
||||||
{
|
|
||||||
return m_vram2[offset];
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE32_MEMBER(sbus_cgthree_device::vram2_w)
|
|
||||||
{
|
|
||||||
COMBINE_DATA(&m_vram2[offset]);
|
|
||||||
}
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "sbus.h"
|
#include "sbus.h"
|
||||||
#include "emupal.h"
|
#include "video/bt45x.h"
|
||||||
|
|
||||||
class sbus_cgthree_device : public device_t, public device_sbus_card_interface
|
class sbus_cgthree_device : public device_t, public device_sbus_card_interface
|
||||||
{
|
{
|
||||||
@ -30,8 +30,6 @@ protected:
|
|||||||
// device_sbus_slot_interface overrides
|
// device_sbus_slot_interface overrides
|
||||||
virtual void install_device() override;
|
virtual void install_device() override;
|
||||||
|
|
||||||
void palette_init(palette_device &palette);
|
|
||||||
|
|
||||||
DECLARE_READ32_MEMBER(unknown_r);
|
DECLARE_READ32_MEMBER(unknown_r);
|
||||||
DECLARE_WRITE32_MEMBER(unknown_w);
|
DECLARE_WRITE32_MEMBER(unknown_w);
|
||||||
DECLARE_WRITE32_MEMBER(palette_w);
|
DECLARE_WRITE32_MEMBER(palette_w);
|
||||||
@ -40,8 +38,6 @@ protected:
|
|||||||
DECLARE_READ32_MEMBER(rom_r);
|
DECLARE_READ32_MEMBER(rom_r);
|
||||||
DECLARE_READ32_MEMBER(vram_r);
|
DECLARE_READ32_MEMBER(vram_r);
|
||||||
DECLARE_WRITE32_MEMBER(vram_w);
|
DECLARE_WRITE32_MEMBER(vram_w);
|
||||||
DECLARE_READ32_MEMBER(vram2_r);
|
|
||||||
DECLARE_WRITE32_MEMBER(vram2_w);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
@ -50,17 +46,11 @@ private:
|
|||||||
|
|
||||||
required_memory_region m_rom;
|
required_memory_region m_rom;
|
||||||
std::unique_ptr<uint32_t[]> m_vram;
|
std::unique_ptr<uint32_t[]> m_vram;
|
||||||
std::unique_ptr<uint32_t[]> m_vram2; // ???
|
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<palette_device> m_palette;
|
required_device<bt458_device> m_ramdac;
|
||||||
uint8_t m_palette_entry;
|
|
||||||
uint8_t m_palette_r;
|
|
||||||
uint8_t m_palette_g;
|
|
||||||
uint8_t m_palette_b;
|
|
||||||
uint8_t m_palette_step;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// device type definition
|
|
||||||
DECLARE_DEVICE_TYPE(SBUS_CGTHREE, sbus_cgthree_device)
|
DECLARE_DEVICE_TYPE(SBUS_CGTHREE, sbus_cgthree_device)
|
||||||
|
|
||||||
#endif // MAME_BUS_SBUS_CGTHREE_H
|
#endif // MAME_BUS_SBUS_CGTHREE_H
|
||||||
|
71
src/devices/bus/sbus/hme.cpp
Normal file
71
src/devices/bus/sbus/hme.cpp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Ryan Holtz
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Sun SunSwift 10/100 + Fast Wide SCSI "Colossus" skeleton
|
||||||
|
|
||||||
|
Notable parts on board:
|
||||||
|
- 1x 32-pin PLCC ROM, label 525 / 1409 / -08 on separate lines
|
||||||
|
- 1x Sun STP2002QFP, marked 100-4156-05 / 609-0392458 / DP03972
|
||||||
|
- 1x National Semiconductor DP83840AVCE-1 Ethernet Physical Layer
|
||||||
|
- 1x National Semiconductor DP83223V Twisted Pair Transceiver
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "hme.h"
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(SBUS_HME, sbus_hme_device, "sbus_hme", "Sun 10/100 + Fast Wide SCSI")
|
||||||
|
|
||||||
|
void sbus_hme_device::mem_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x00000000, 0x01ffffff).rw(FUNC(sbus_hme_device::unknown_r), FUNC(sbus_hme_device::unknown_w));
|
||||||
|
map(0x00000000, 0x0000ffff).r(FUNC(sbus_hme_device::rom_r));
|
||||||
|
}
|
||||||
|
|
||||||
|
ROM_START( sbus_hme )
|
||||||
|
ROM_REGION32_BE(0x10000, "prom", ROMREGION_ERASEFF)
|
||||||
|
ROM_LOAD( "525 1409 -08.bin", 0x00000, 0x10000, CRC(10f0b28f) SHA1(b54bb0f01c45accdbc58c3a86f8de34949374880))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
const tiny_rom_entry *sbus_hme_device::device_rom_region() const
|
||||||
|
{
|
||||||
|
return ROM_NAME( sbus_hme );
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_hme_device::device_add_mconfig(machine_config &config)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sbus_hme_device::sbus_hme_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: device_t(mconfig, SBUS_HME, tag, owner, clock)
|
||||||
|
, device_sbus_card_interface(mconfig, *this)
|
||||||
|
, m_rom(*this, "prom")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_hme_device::device_start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_hme_device::install_device()
|
||||||
|
{
|
||||||
|
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_hme_device::mem_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
READ32_MEMBER(sbus_hme_device::unknown_r)
|
||||||
|
{
|
||||||
|
logerror("%s: unknown_r: %08x & %08x\n", machine().describe_context(), offset << 2, mem_mask);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE32_MEMBER(sbus_hme_device::unknown_w)
|
||||||
|
{
|
||||||
|
logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
READ32_MEMBER(sbus_hme_device::rom_r)
|
||||||
|
{
|
||||||
|
return ((uint32_t*)m_rom->base())[offset];
|
||||||
|
}
|
45
src/devices/bus/sbus/hme.h
Normal file
45
src/devices/bus/sbus/hme.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Ryan Holtz
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Sun SunSwift 10/100 + Fast Wide SCSI "Colossus" skeleton
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAME_BUS_SBUS_HME_H
|
||||||
|
#define MAME_BUS_SBUS_HME_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "sbus.h"
|
||||||
|
|
||||||
|
|
||||||
|
class sbus_hme_device : public device_t, public device_sbus_card_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
sbus_hme_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device_t overrides
|
||||||
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
// device_sbus_slot_interface overrides
|
||||||
|
virtual void install_device() override;
|
||||||
|
|
||||||
|
DECLARE_READ32_MEMBER(unknown_r);
|
||||||
|
DECLARE_WRITE32_MEMBER(unknown_w);
|
||||||
|
DECLARE_READ32_MEMBER(rom_r);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void mem_map(address_map &map) override;
|
||||||
|
|
||||||
|
required_memory_region m_rom;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_DEVICE_TYPE(SBUS_HME, sbus_hme_device)
|
||||||
|
|
||||||
|
#endif // MAME_BUS_SBUS_HME_H
|
@ -7,16 +7,30 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
|
||||||
|
// Display boards
|
||||||
#include "bwtwo.h"
|
#include "bwtwo.h"
|
||||||
#include "cgthree.h"
|
#include "cgthree.h"
|
||||||
#include "turbogx.h"
|
#include "cgsix.h"
|
||||||
|
|
||||||
|
// Accelerator boards
|
||||||
|
#include "sunpc.h"
|
||||||
|
|
||||||
|
// Peripheral boards
|
||||||
|
#include "artecon.h"
|
||||||
|
#include "hme.h"
|
||||||
|
|
||||||
#include "sbus.h"
|
#include "sbus.h"
|
||||||
|
|
||||||
void sbus_cards(device_slot_interface &device)
|
void sbus_cards(device_slot_interface &device)
|
||||||
{
|
{
|
||||||
device.option_add("bwtwo", SBUS_BWTWO); /* Sun bwtwo monochrome display board */
|
device.option_add("bwtwo", SBUS_BWTWO); /* Sun bwtwo monochrome display board */
|
||||||
device.option_add("cgthree", SBUS_CGTHREE); /* Sun cgthree color display board */
|
device.option_add("cgthree", SBUS_CGTHREE); /* Sun cgthree color display board */
|
||||||
device.option_add("turbogx", SBUS_TURBOGX); /* Sun TurboGX 8-bit color display board */
|
device.option_add("turbogx", SBUS_TURBOGX); /* Sun TurboGX 8-bit color display board */
|
||||||
|
device.option_add("turbogxp", SBUS_TURBOGXP); /* Sun TurboGX+ 8-bit color display board */
|
||||||
|
device.option_add("sunpc", SBUS_SUNPC); /* Sun SunPC 5x86 Accelerator board */
|
||||||
|
device.option_add("hme", SBUS_HME); /* Sun SunSwift 10/100 + Fast Wide SCSI "Colossus" board */
|
||||||
|
device.option_add("sb300p", SBUS_SB300P); /* Artecon CB300P 3-serial/4-parallel board */
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_DEVICE_TYPE(SBUS_SLOT, sbus_slot_device, "sbus_slot", "Sun SBus Slot")
|
DEFINE_DEVICE_TYPE(SBUS_SLOT, sbus_slot_device, "sbus_slot", "Sun SBus Slot")
|
||||||
|
71
src/devices/bus/sbus/sunpc.cpp
Normal file
71
src/devices/bus/sbus/sunpc.cpp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Ryan Holtz
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Sun SunPC 5x86 Accelerator (501-4230) skeleton
|
||||||
|
|
||||||
|
Notable parts on board:
|
||||||
|
- 1x AMD AM27C256 PLCC ROM
|
||||||
|
- 1x Motorola SunPC Accelerator 100-3069-03, mfr/date AANL9732
|
||||||
|
- 6x Cypress CY7B185-10VC 64kBit Static RAM
|
||||||
|
- 1x AMD 5x86 (under heatsink; markings unknown)
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "sunpc.h"
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(SBUS_SUNPC, sbus_sunpc_device, "sbus_sunpc", "Sun SunPC accelerator")
|
||||||
|
|
||||||
|
void sbus_sunpc_device::mem_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x00000000, 0x01ffffff).rw(FUNC(sbus_sunpc_device::unknown_r), FUNC(sbus_sunpc_device::unknown_w));
|
||||||
|
map(0x00000000, 0x00007fff).r(FUNC(sbus_sunpc_device::rom_r));
|
||||||
|
}
|
||||||
|
|
||||||
|
ROM_START( sbus_sunpc )
|
||||||
|
ROM_REGION32_BE(0x8000, "prom", ROMREGION_ERASEFF)
|
||||||
|
ROM_LOAD( "sunw,501-1763-01.bin", 0x0000, 0x8000, CRC(171f50f8) SHA1(21c4c02bc5a3a0494301f19c54ba0e207568fb42))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
const tiny_rom_entry *sbus_sunpc_device::device_rom_region() const
|
||||||
|
{
|
||||||
|
return ROM_NAME( sbus_sunpc );
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_sunpc_device::device_add_mconfig(machine_config &config)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sbus_sunpc_device::sbus_sunpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: device_t(mconfig, SBUS_SUNPC, tag, owner, clock)
|
||||||
|
, device_sbus_card_interface(mconfig, *this)
|
||||||
|
, m_rom(*this, "prom")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_sunpc_device::device_start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sbus_sunpc_device::install_device()
|
||||||
|
{
|
||||||
|
m_sbus->install_device(m_base, m_base + 0x1ffffff, *this, &sbus_sunpc_device::mem_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
READ32_MEMBER(sbus_sunpc_device::unknown_r)
|
||||||
|
{
|
||||||
|
logerror("%s: unknown_r: %08x & %08x\n", machine().describe_context(), offset << 2, mem_mask);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE32_MEMBER(sbus_sunpc_device::unknown_w)
|
||||||
|
{
|
||||||
|
logerror("%s: unknown_w: %08x = %08x & %08x\n", machine().describe_context(), offset << 2, data, mem_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
READ32_MEMBER(sbus_sunpc_device::rom_r)
|
||||||
|
{
|
||||||
|
return ((uint32_t*)m_rom->base())[offset];
|
||||||
|
}
|
45
src/devices/bus/sbus/sunpc.h
Normal file
45
src/devices/bus/sbus/sunpc.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Ryan Holtz
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Sun SunPC 5x86 Accelerator (501-4230) skeleton
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAME_BUS_SBUS_SUNPC_H
|
||||||
|
#define MAME_BUS_SBUS_SUNPC_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "sbus.h"
|
||||||
|
|
||||||
|
|
||||||
|
class sbus_sunpc_device : public device_t, public device_sbus_card_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
sbus_sunpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device_t overrides
|
||||||
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
// device_sbus_slot_interface overrides
|
||||||
|
virtual void install_device() override;
|
||||||
|
|
||||||
|
DECLARE_READ32_MEMBER(unknown_r);
|
||||||
|
DECLARE_WRITE32_MEMBER(unknown_w);
|
||||||
|
DECLARE_READ32_MEMBER(rom_r);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void mem_map(address_map &map) override;
|
||||||
|
|
||||||
|
required_memory_region m_rom;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_DEVICE_TYPE(SBUS_SUNPC, sbus_sunpc_device)
|
||||||
|
|
||||||
|
#endif // MAME_BUS_SBUS_SUNPC_H
|
@ -2846,7 +2846,7 @@ void mb86901_device::dispatch_instruction(uint32_t op)
|
|||||||
|
|
||||||
if (illegal_IU_instr)
|
if (illegal_IU_instr)
|
||||||
{
|
{
|
||||||
printf("illegal instruction at %08x\n", PC);
|
printf("illegal instruction at %08x: %08x\n", PC, op);
|
||||||
m_trap = 1;
|
m_trap = 1;
|
||||||
m_illegal_instruction = 1;
|
m_illegal_instruction = 1;
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include "sparcdasm.h"
|
#include "sparcdasm.h"
|
||||||
|
|
||||||
#define SPARCV8 (0)
|
#define SPARCV8 (1)
|
||||||
#define LOG_FCODES (0)
|
#define LOG_FCODES (0)
|
||||||
|
|
||||||
#if LOG_FCODES
|
#if LOG_FCODES
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
- strobed I/O
|
- strobed I/O
|
||||||
- expose register file to disassembler
|
- expose register file to disassembler
|
||||||
- decimal adjust instruction
|
|
||||||
- timer Tin/Tout modes
|
- timer Tin/Tout modes
|
||||||
- serial
|
- serial
|
||||||
- instruction pipeline
|
- instruction pipeline
|
||||||
|
@ -308,6 +308,25 @@ INSTRUCTION( cp_IR1_IM ) { mode_IR1_IM(compare) }
|
|||||||
|
|
||||||
void z8_device::decimal_adjust(uint8_t dst)
|
void z8_device::decimal_adjust(uint8_t dst)
|
||||||
{
|
{
|
||||||
|
uint8_t data = register_read(dst);
|
||||||
|
uint16_t new_data = data;
|
||||||
|
if (flag(D))
|
||||||
|
{
|
||||||
|
if (flag(H) | ((data&0xf)>9)) new_data-=6;
|
||||||
|
if (flag(C) | (data>0x99)) new_data-=0x60;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (flag(H) | ((data&0xf)>9)) new_data+=6;
|
||||||
|
if (flag(C) | (data>0x99)) new_data+=0x60;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_flag_c(new_data & 0x100);
|
||||||
|
set_flag_s(new_data & 0x80);
|
||||||
|
new_data &= 0xff;
|
||||||
|
set_flag_z(new_data == 0);
|
||||||
|
// officially, v is undefined
|
||||||
|
register_write(dst, new_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
INSTRUCTION( da_R1 ) { mode_R1(decimal_adjust) }
|
INSTRUCTION( da_R1 ) { mode_R1(decimal_adjust) }
|
||||||
|
@ -563,11 +563,13 @@ void nscsi_full_device::scsi_data_out(int buf, int size)
|
|||||||
c->param2 = size;
|
c->param2 = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nscsi_full_device::sense(bool deferred, uint8_t key)
|
void nscsi_full_device::sense(bool deferred, uint8_t key, uint8_t asc, uint8_t ascq)
|
||||||
{
|
{
|
||||||
memset(scsi_sense_buffer, 0, sizeof(scsi_sense_buffer));
|
memset(scsi_sense_buffer, 0, sizeof(scsi_sense_buffer));
|
||||||
scsi_sense_buffer[0] = deferred ? 0x71 : 0x70;
|
scsi_sense_buffer[0] = deferred ? 0x71 : 0x70;
|
||||||
scsi_sense_buffer[2] = key;
|
scsi_sense_buffer[2] = key;
|
||||||
|
scsi_sense_buffer[12] = asc;
|
||||||
|
scsi_sense_buffer[13] = ascq;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nscsi_full_device::scsi_unknown_command()
|
void nscsi_full_device::scsi_unknown_command()
|
||||||
@ -586,7 +588,11 @@ void nscsi_full_device::scsi_command()
|
|||||||
switch(scsi_cmdbuf[0]) {
|
switch(scsi_cmdbuf[0]) {
|
||||||
case SC_REQUEST_SENSE:
|
case SC_REQUEST_SENSE:
|
||||||
LOG("command REQUEST SENSE\n");
|
LOG("command REQUEST SENSE\n");
|
||||||
scsi_data_in(SBUF_SENSE, 8);
|
/*
|
||||||
|
* Targets shall be capable of returning eighteen bytes of data in
|
||||||
|
* response to a REQUEST SENSE command.
|
||||||
|
*/
|
||||||
|
scsi_data_in(SBUF_SENSE, 18);
|
||||||
scsi_status_complete(SS_GOOD);
|
scsi_status_complete(SS_GOOD);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -619,7 +625,9 @@ int nscsi_full_device::get_lun(int def)
|
|||||||
void nscsi_full_device::bad_lun()
|
void nscsi_full_device::bad_lun()
|
||||||
{
|
{
|
||||||
scsi_status_complete(SS_CHECK_CONDITION);
|
scsi_status_complete(SS_CHECK_CONDITION);
|
||||||
sense(false, 2);
|
|
||||||
|
// key:illegal request, asc:logical unit not supported
|
||||||
|
sense(false, 5, 0x25);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Arbitration delay (2.4us)
|
// Arbitration delay (2.4us)
|
||||||
|
@ -285,7 +285,7 @@ protected:
|
|||||||
void scsi_data_in(int buf, int size);
|
void scsi_data_in(int buf, int size);
|
||||||
void scsi_data_out(int buf, int size);
|
void scsi_data_out(int buf, int size);
|
||||||
|
|
||||||
void sense(bool deferred, uint8_t key);
|
void sense(bool deferred, uint8_t key, uint8_t asc = 0, uint8_t ascq = 0);
|
||||||
int get_lun(int def = 0);
|
int get_lun(int def = 0);
|
||||||
void bad_lun();
|
void bad_lun();
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ protected:
|
|||||||
// Fast negation period (30ns)
|
// Fast negation period (30ns)
|
||||||
virtual attotime scsi_fast_negation_period();
|
virtual attotime scsi_fast_negation_period();
|
||||||
|
|
||||||
uint8_t scsi_cmdbuf[4096], scsi_sense_buffer[8];
|
uint8_t scsi_cmdbuf[4096], scsi_sense_buffer[18];
|
||||||
int scsi_cmdsize;
|
int scsi_cmdsize;
|
||||||
uint8_t scsi_identify;
|
uint8_t scsi_identify;
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ uint8_t nscsi_cdrom_device::scsi_get_data(int id, int pos)
|
|||||||
if(id != 2)
|
if(id != 2)
|
||||||
return nscsi_full_device::scsi_get_data(id, pos);
|
return nscsi_full_device::scsi_get_data(id, pos);
|
||||||
const int sector = (lba * bytes_per_block + pos) / bytes_per_sector;
|
const int sector = (lba * bytes_per_block + pos) / bytes_per_sector;
|
||||||
|
const int extra_pos = (lba * bytes_per_block) % bytes_per_sector;
|
||||||
if(sector != cur_sector) {
|
if(sector != cur_sector) {
|
||||||
cur_sector = sector;
|
cur_sector = sector;
|
||||||
if(!cdrom_read_data(cdrom, sector, sector_buffer, CD_TRACK_MODE1)) {
|
if(!cdrom_read_data(cdrom, sector, sector_buffer, CD_TRACK_MODE1)) {
|
||||||
@ -56,7 +57,7 @@ uint8_t nscsi_cdrom_device::scsi_get_data(int id, int pos)
|
|||||||
std::fill_n(sector_buffer, sizeof(sector_buffer), 0);
|
std::fill_n(sector_buffer, sizeof(sector_buffer), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sector_buffer[pos & (bytes_per_sector - 1)];
|
return sector_buffer[(pos + extra_pos) & (bytes_per_sector - 1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
void nscsi_cdrom_device::return_no_cd()
|
void nscsi_cdrom_device::return_no_cd()
|
||||||
@ -112,6 +113,22 @@ void nscsi_cdrom_device::scsi_command()
|
|||||||
int lun = get_lun(scsi_cmdbuf[1] >> 5);
|
int lun = get_lun(scsi_cmdbuf[1] >> 5);
|
||||||
LOG("command INQUIRY lun=%d EVPD=%d page=%d alloc=%02x link=%02x\n",
|
LOG("command INQUIRY lun=%d EVPD=%d page=%d alloc=%02x link=%02x\n",
|
||||||
lun, scsi_cmdbuf[1] & 1, scsi_cmdbuf[2], scsi_cmdbuf[4], scsi_cmdbuf[5]);
|
lun, scsi_cmdbuf[1] & 1, scsi_cmdbuf[2], scsi_cmdbuf[4], scsi_cmdbuf[5]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 7.5.3 Selection of an invalid logical unit
|
||||||
|
*
|
||||||
|
* The logical unit may not be valid because:
|
||||||
|
* a) the target does not support the logical unit (e.g. some targets
|
||||||
|
* support only one peripheral device). In response to an INQUIRY
|
||||||
|
* command, the target shall return the INQUIRY data with the
|
||||||
|
* peripheral qualifier set to the value required in 8.2.5.1.
|
||||||
|
*
|
||||||
|
* If the logic from the specification above is applied, Sun SCSI probe
|
||||||
|
* code gets confused and reports multiple valid logical units are
|
||||||
|
* attached; proper behaviour is produced when check condition status
|
||||||
|
* is returned with sense data ILLEGAL REQUEST and LOGICAL UNIT NOT
|
||||||
|
* SUPPORTED.
|
||||||
|
*/
|
||||||
if(lun) {
|
if(lun) {
|
||||||
bad_lun();
|
bad_lun();
|
||||||
return;
|
return;
|
||||||
@ -223,7 +240,7 @@ void nscsi_cdrom_device::scsi_command()
|
|||||||
int pmin = page == 0x3f ? 0x00 : page;
|
int pmin = page == 0x3f ? 0x00 : page;
|
||||||
for(int page=pmax; page >= pmin; page--) {
|
for(int page=pmax; page >= pmin; page--) {
|
||||||
switch(page) {
|
switch(page) {
|
||||||
case 0x00: // Unit attention parameters page (weird)
|
case 0x00: // Vendor specific (does not require page format)
|
||||||
scsi_cmdbuf[pos++] = 0x80; // PS, page id
|
scsi_cmdbuf[pos++] = 0x80; // PS, page id
|
||||||
scsi_cmdbuf[pos++] = 0x02; // Page length
|
scsi_cmdbuf[pos++] = 0x02; // Page length
|
||||||
scsi_cmdbuf[pos++] = 0x00; // Meh
|
scsi_cmdbuf[pos++] = 0x00; // Meh
|
||||||
|
@ -274,9 +274,11 @@ void timekeeper_device::counters_from_ram()
|
|||||||
|
|
||||||
void timekeeper_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
void timekeeper_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||||
{
|
{
|
||||||
|
logerror("Tick\n");
|
||||||
if( ( m_seconds & SECONDS_ST ) != 0 ||
|
if( ( m_seconds & SECONDS_ST ) != 0 ||
|
||||||
( m_control & CONTROL_W ) != 0 )
|
( m_control & CONTROL_W ) != 0 )
|
||||||
{
|
{
|
||||||
|
logerror("No Tick\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,6 +370,7 @@ WRITE8_MEMBER(timekeeper_device::watchdog_write)
|
|||||||
|
|
||||||
WRITE8_MEMBER( timekeeper_device::write )
|
WRITE8_MEMBER( timekeeper_device::write )
|
||||||
{
|
{
|
||||||
|
logerror("timekeeper_device::write: %04x = %02x\n", offset, data);
|
||||||
if( offset == m_offset_control )
|
if( offset == m_offset_control )
|
||||||
{
|
{
|
||||||
if( ( m_control & CONTROL_W ) != 0 &&
|
if( ( m_control & CONTROL_W ) != 0 &&
|
||||||
@ -375,6 +378,13 @@ WRITE8_MEMBER( timekeeper_device::write )
|
|||||||
{
|
{
|
||||||
counters_from_ram();
|
counters_from_ram();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( ( m_control & CONTROL_R ) != 0 &&
|
||||||
|
( data & CONTROL_W ) == 0 )
|
||||||
|
{
|
||||||
|
counters_to_ram();
|
||||||
|
}
|
||||||
|
|
||||||
m_control = data;
|
m_control = data;
|
||||||
}
|
}
|
||||||
else if( offset == m_offset_day )
|
else if( offset == m_offset_day )
|
||||||
@ -419,6 +429,7 @@ READ8_MEMBER( timekeeper_device::read )
|
|||||||
m_reset_cb(CLEAR_LINE);
|
m_reset_cb(CLEAR_LINE);
|
||||||
m_irq_cb(CLEAR_LINE);
|
m_irq_cb(CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
logerror("timekeeper_device::read: %04x (%02x)\n", offset, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ watchdog_timer_device::watchdog_timer_device(const machine_config &mconfig, cons
|
|||||||
: device_t(mconfig, WATCHDOG_TIMER, tag, owner, clock)
|
: device_t(mconfig, WATCHDOG_TIMER, tag, owner, clock)
|
||||||
, m_vblank_count(0)
|
, m_vblank_count(0)
|
||||||
, m_time(attotime::zero)
|
, m_time(attotime::zero)
|
||||||
, m_screen_tag(nullptr)
|
, m_screen(*this, finder_base::DUMMY_TAG)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,9 +43,10 @@ void watchdog_timer_device::device_validity_check(validity_checker &valid) const
|
|||||||
{
|
{
|
||||||
if (m_vblank_count != 0)
|
if (m_vblank_count != 0)
|
||||||
{
|
{
|
||||||
screen_device *screen = dynamic_cast<screen_device *>(siblingdevice(m_screen_tag));
|
if (m_screen.finder_tag() == finder_base::DUMMY_TAG)
|
||||||
if (screen == nullptr)
|
osd_printf_error("VBLANK count set without setting screen tag\n");
|
||||||
osd_printf_error("Invalid screen tag specified\n");
|
else if (!m_screen)
|
||||||
|
osd_printf_error("Screen device %s not found\n", m_screen.finder_tag());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,9 +65,8 @@ void watchdog_timer_device::device_start()
|
|||||||
if (m_vblank_count != 0)
|
if (m_vblank_count != 0)
|
||||||
{
|
{
|
||||||
// fetch the screen
|
// fetch the screen
|
||||||
screen_device *screen = siblingdevice<screen_device>(m_screen_tag);
|
if (m_screen)
|
||||||
if (screen != nullptr)
|
m_screen->register_vblank_callback(vblank_state_delegate(&watchdog_timer_device::watchdog_vblank, this));
|
||||||
screen->register_vblank_callback(vblank_state_delegate(&watchdog_timer_device::watchdog_vblank, this));
|
|
||||||
}
|
}
|
||||||
save_item(NAME(m_enabled));
|
save_item(NAME(m_enabled));
|
||||||
save_item(NAME(m_counter));
|
save_item(NAME(m_counter));
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:Aaron Giles
|
// copyright-holders:Aaron Giles
|
||||||
|
|
||||||
#ifndef MAME_MACHINE_WATCHDOG_H
|
#ifndef MAME_MACHINE_WATCHDOG_H
|
||||||
#define MAME_MACHINE_WATCHDOG_H
|
#define MAME_MACHINE_WATCHDOG_H
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <screen.h>
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
@ -20,7 +21,7 @@ public:
|
|||||||
watchdog_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
watchdog_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
|
|
||||||
// inline configuration helpers
|
// inline configuration helpers
|
||||||
void set_vblank_count(const char *screen_tag, int32_t count) { m_screen_tag = screen_tag; m_vblank_count = count; }
|
template <typename T> void set_vblank_count(T &&screen_tag, int32_t count) { m_screen.set_tag(std::forward<T>(screen_tag)); m_vblank_count = count; }
|
||||||
void set_time(attotime time) { m_time = time; }
|
void set_time(attotime time) { m_time = time; }
|
||||||
|
|
||||||
// watchdog control
|
// watchdog control
|
||||||
@ -49,13 +50,13 @@ private:
|
|||||||
void watchdog_vblank(screen_device &screen, bool vblank_state);
|
void watchdog_vblank(screen_device &screen, bool vblank_state);
|
||||||
|
|
||||||
// configuration data
|
// configuration data
|
||||||
int32_t m_vblank_count; // number of VBLANKs until resetting the machine
|
int32_t m_vblank_count; // number of VBLANKs until resetting the machine
|
||||||
attotime m_time; // length of time until resetting the machine
|
attotime m_time; // length of time until resetting the machine
|
||||||
const char * m_screen_tag; // the tag of the screen this timer tracks
|
optional_device<screen_device> m_screen; // the tag of the screen this timer tracks
|
||||||
|
|
||||||
// internal state
|
// internal state
|
||||||
bool m_enabled; // is the watchdog enabled?
|
bool m_enabled; // is the watchdog enabled?
|
||||||
int32_t m_counter; // counter for VBLANK tracking
|
int32_t m_counter; // counter for VBLANK tracking
|
||||||
emu_timer * m_timer; // timer for triggering reset
|
emu_timer * m_timer; // timer for triggering reset
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -467,7 +467,7 @@ z80dart_channel::z80dart_channel(const machine_config &mconfig, const char *tag,
|
|||||||
, m_rx_first(0)
|
, m_rx_first(0)
|
||||||
, m_rx_break(0)
|
, m_rx_break(0)
|
||||||
, m_rx_rr0_latch(0)
|
, m_rx_rr0_latch(0)
|
||||||
, m_rxd(0)
|
, m_rxd(1)
|
||||||
, m_ri(0)
|
, m_ri(0)
|
||||||
, m_cts(0)
|
, m_cts(0)
|
||||||
, m_dcd(0)
|
, m_dcd(0)
|
||||||
@ -802,7 +802,7 @@ void z80dart_channel::control_write(uint8_t data)
|
|||||||
|
|
||||||
if (!m_dcd) m_rr[0] |= RR0_DCD;
|
if (!m_dcd) m_rr[0] |= RR0_DCD;
|
||||||
if (m_ri) m_rr[0] |= RR0_RI;
|
if (m_ri) m_rr[0] |= RR0_RI;
|
||||||
if (m_cts) m_rr[0] |= RR0_CTS;
|
if (!m_cts) m_rr[0] |= RR0_CTS;
|
||||||
|
|
||||||
m_rx_rr0_latch = 0;
|
m_rx_rr0_latch = 0;
|
||||||
|
|
||||||
@ -932,6 +932,8 @@ void z80dart_channel::control_write(uint8_t data)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// when the RTS bit is reset, the _RTS output goes high after the transmitter empties
|
// when the RTS bit is reset, the _RTS output goes high after the transmitter empties
|
||||||
|
if (m_rr[1] & RR1_ALL_SENT)
|
||||||
|
set_rts(1);
|
||||||
m_rts = 0;
|
m_rts = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,12 +17,16 @@
|
|||||||
* Bt455 170MHz 4 bit 1 bit 1 4 bit
|
* Bt455 170MHz 4 bit 1 bit 1 4 bit
|
||||||
* Bt457 165Mhz 8 bit 2 bit 1 8 bit blinking, multiplexing
|
* Bt457 165Mhz 8 bit 2 bit 1 8 bit blinking, multiplexing
|
||||||
* Bt458 165MHz 8 bit 2 bit 3 8 bit blinking, multiplexing
|
* Bt458 165MHz 8 bit 2 bit 3 8 bit blinking, multiplexing
|
||||||
|
* Bt467 220MHz 8 bit 2 bit 3 8 bit blinking, multiplexing [NOTE: Specs are assumed based on Bt458 compatibility)
|
||||||
*
|
*
|
||||||
* Reference: http://www.bitsavers.org/components/brooktree/_dataBooks/1991_Brooktree_Product_Databook.pdf
|
* Reference: http://www.bitsavers.org/components/brooktree/_dataBooks/1991_Brooktree_Product_Databook.pdf
|
||||||
*
|
*
|
||||||
* The bt45x_mono_device_base uses the standard red/green/blue read/write
|
* The bt45x_mono_device_base uses the standard red/green/blue read/write
|
||||||
* cycles defined in the databook, with color data active on the green cycle.
|
* cycles defined in the databook, with color data active on the green cycle.
|
||||||
*
|
*
|
||||||
|
* The Bt467 is specified in its datasheet as register-compatible with the Bt458.
|
||||||
|
* As such, it is currently implemented as a simple alias of the Bt458.
|
||||||
|
*
|
||||||
* TODO
|
* TODO
|
||||||
* - refactor to separate devices with registers
|
* - refactor to separate devices with registers
|
||||||
* - implement blinking and overlay
|
* - implement blinking and overlay
|
||||||
@ -45,6 +49,7 @@ DEFINE_DEVICE_TYPE(BT454, bt454_device, "bt454", "Brooktree Bt454 16 Color RAMDA
|
|||||||
DEFINE_DEVICE_TYPE(BT455, bt455_device, "bt455", "Brooktree Bt455 16 Color RAMDAC")
|
DEFINE_DEVICE_TYPE(BT455, bt455_device, "bt455", "Brooktree Bt455 16 Color RAMDAC")
|
||||||
DEFINE_DEVICE_TYPE(BT457, bt457_device, "bt457", "Brooktree Bt457 256 Color RAMDAC")
|
DEFINE_DEVICE_TYPE(BT457, bt457_device, "bt457", "Brooktree Bt457 256 Color RAMDAC")
|
||||||
DEFINE_DEVICE_TYPE(BT458, bt458_device, "bt458", "Brooktree Bt458 256 Color RAMDAC")
|
DEFINE_DEVICE_TYPE(BT458, bt458_device, "bt458", "Brooktree Bt458 256 Color RAMDAC")
|
||||||
|
DEFINE_DEVICE_TYPE(BT467, bt467_device, "bt467", "Brooktree Bt467 256 Color RAMDAC")
|
||||||
|
|
||||||
void bt45x_device_base::map(address_map &map)
|
void bt45x_device_base::map(address_map &map)
|
||||||
{
|
{
|
||||||
@ -122,8 +127,18 @@ bt457_device::bt457_device(const machine_config &mconfig, const char *tag, devic
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bt458_device::bt458_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: bt45x_rgb_device_base(mconfig, type, tag, owner, clock, 256, 3)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bt458_device::bt458_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
bt458_device::bt458_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: bt45x_rgb_device_base(mconfig, BT458, tag, owner, clock, 256, 3)
|
: bt458_device(mconfig, BT458, tag, owner, clock)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bt467_device::bt467_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: bt458_device(mconfig, BT467, tag, owner, clock)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,6 +169,15 @@ class bt458_device : public bt45x_rgb_device_base
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bt458_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
bt458_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bt458_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
};
|
||||||
|
|
||||||
|
class bt467_device : public bt458_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bt467_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_DEVICE_TYPE(BT451, bt451_device)
|
DECLARE_DEVICE_TYPE(BT451, bt451_device)
|
||||||
@ -177,5 +186,6 @@ DECLARE_DEVICE_TYPE(BT454, bt454_device)
|
|||||||
DECLARE_DEVICE_TYPE(BT455, bt455_device)
|
DECLARE_DEVICE_TYPE(BT455, bt455_device)
|
||||||
DECLARE_DEVICE_TYPE(BT457, bt457_device)
|
DECLARE_DEVICE_TYPE(BT457, bt457_device)
|
||||||
DECLARE_DEVICE_TYPE(BT458, bt458_device)
|
DECLARE_DEVICE_TYPE(BT458, bt458_device)
|
||||||
|
DECLARE_DEVICE_TYPE(BT467, bt467_device)
|
||||||
|
|
||||||
#endif // MAME_VIDEO_BT45X_H
|
#endif // MAME_VIDEO_BT45X_H
|
||||||
|
@ -282,13 +282,15 @@ static int tzx_cas_handle_block( int16_t **buffer, const uint8_t *bytes, int pau
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* pause */
|
/* pause */
|
||||||
if (pause > 0)
|
int start_pause_samples = millisec_to_samplecount(1);
|
||||||
{
|
|
||||||
int start_pause_samples = millisec_to_samplecount(1);
|
|
||||||
int rest_pause_samples = millisec_to_samplecount(pause - 1);
|
|
||||||
|
|
||||||
tzx_output_wave(buffer, start_pause_samples);
|
tzx_output_wave(buffer, start_pause_samples);
|
||||||
size += start_pause_samples;
|
size += start_pause_samples;
|
||||||
|
|
||||||
|
if (pause > 0)
|
||||||
|
{
|
||||||
|
int rest_pause_samples = millisec_to_samplecount(pause - 1);
|
||||||
|
|
||||||
wave_data = WAVE_LOW;
|
wave_data = WAVE_LOW;
|
||||||
tzx_output_wave(buffer, rest_pause_samples);
|
tzx_output_wave(buffer, rest_pause_samples);
|
||||||
size += rest_pause_samples;
|
size += rest_pause_samples;
|
||||||
|
@ -1315,7 +1315,7 @@ vendetta.cpp
|
|||||||
vertigo.cpp
|
vertigo.cpp
|
||||||
vicdual.cpp
|
vicdual.cpp
|
||||||
victory.cpp
|
victory.cpp
|
||||||
videolich.cpp
|
video21.cpp
|
||||||
videopin.cpp
|
videopin.cpp
|
||||||
videopkr.cpp
|
videopkr.cpp
|
||||||
videosaa.cpp
|
videosaa.cpp
|
||||||
|
@ -403,21 +403,21 @@ WRITE8_MEMBER(exidy_sh8253_sound_device::r6532_porta_w)
|
|||||||
|
|
||||||
READ8_MEMBER(exidy_sh8253_sound_device::r6532_porta_r)
|
READ8_MEMBER(exidy_sh8253_sound_device::r6532_porta_r)
|
||||||
{
|
{
|
||||||
|
uint8_t status = 0xff;
|
||||||
if (m_tms.found())
|
if (m_tms.found())
|
||||||
{
|
{
|
||||||
logerror("(%f)%s:TMS5220 status read = %02X\n", machine().time().as_double(), machine().describe_context(), m_tms->status_r());
|
status = m_tms->status_r();
|
||||||
return m_tms->status_r();
|
logerror("(%f)%s:TMS5220 status read = %02X\n", machine().time().as_double(), machine().describe_context(), status);
|
||||||
}
|
}
|
||||||
else
|
return status;
|
||||||
return 0xff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(exidy_sh8253_sound_device::r6532_portb_w)
|
WRITE8_MEMBER(exidy_sh8253_sound_device::r6532_portb_w)
|
||||||
{
|
{
|
||||||
if (m_tms.found())
|
if (m_tms.found())
|
||||||
{
|
{
|
||||||
m_tms->rsq_w(data & 0x01);
|
m_tms->rsq_w(BIT(data, 0));
|
||||||
m_tms->wsq_w((data >> 1) & 0x01);
|
m_tms->wsq_w(BIT(data, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER(write_54xx);
|
||||||
DECLARE_READ8_MEMBER(read_5840);
|
DECLARE_READ8_MEMBER(read_5840);
|
||||||
DECLARE_WRITE8_MEMBER(write_5840);
|
DECLARE_WRITE8_MEMBER(write_5840);
|
||||||
DECLARE_READ8_MEMBER(read_5841);
|
DECLARE_READ8_MEMBER(read_5841);
|
||||||
@ -80,6 +81,11 @@ u32 ampex_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE8_MEMBER(ampex_state::write_54xx)
|
||||||
|
{
|
||||||
|
// Written during keyboard polling
|
||||||
|
}
|
||||||
|
|
||||||
READ8_MEMBER(ampex_state::read_5840)
|
READ8_MEMBER(ampex_state::read_5840)
|
||||||
{
|
{
|
||||||
logerror("%s: Read from 5840\n", machine().describe_context());
|
logerror("%s: Read from 5840\n", machine().describe_context());
|
||||||
@ -116,7 +122,7 @@ READ8_MEMBER(ampex_state::read_5842)
|
|||||||
|
|
||||||
WRITE8_MEMBER(ampex_state::write_5843)
|
WRITE8_MEMBER(ampex_state::write_5843)
|
||||||
{
|
{
|
||||||
logerror("%s: Write %02X to 5843\n", machine().describe_context(), data);
|
//logerror("%s: Write %02X to 5843\n", machine().describe_context(), data);
|
||||||
m_attr = (data & 0x78) >> 3;
|
m_attr = (data & 0x78) >> 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,7 +171,21 @@ void ampex_state::mem_map(address_map &map)
|
|||||||
{
|
{
|
||||||
map(0x0000, 0x2fff).rom().region("roms", 0);
|
map(0x0000, 0x2fff).rom().region("roms", 0);
|
||||||
map(0x4000, 0x43ff).ram(); // main RAM
|
map(0x4000, 0x43ff).ram(); // main RAM
|
||||||
map(0x4400, 0x57ff).ram(); // expansion RAM
|
map(0x4400, 0x53ff).ram(); // expansion RAM
|
||||||
|
map(0x5400, 0x5400).portr("IN0");
|
||||||
|
map(0x5401, 0x5401).portr("IN1");
|
||||||
|
map(0x5402, 0x5402).portr("IN2");
|
||||||
|
map(0x5403, 0x5403).portr("IN3");
|
||||||
|
map(0x5404, 0x5404).portr("IN4");
|
||||||
|
map(0x5405, 0x5405).portr("IN5");
|
||||||
|
map(0x5406, 0x5406).portr("IN6");
|
||||||
|
map(0x5407, 0x5407).portr("IN7");
|
||||||
|
map(0x5408, 0x5408).portr("IN8");
|
||||||
|
map(0x5409, 0x5409).portr("IN9");
|
||||||
|
map(0x540a, 0x540a).portr("INA");
|
||||||
|
map(0x540b, 0x540b).portr("INB");
|
||||||
|
map(0x540c, 0x540c).portr("INC");
|
||||||
|
map(0x5400, 0x54ff).w(FUNC(ampex_state::write_54xx));
|
||||||
map(0x5840, 0x5840).rw(FUNC(ampex_state::read_5840), FUNC(ampex_state::write_5840));
|
map(0x5840, 0x5840).rw(FUNC(ampex_state::read_5840), FUNC(ampex_state::write_5840));
|
||||||
map(0x5841, 0x5841).rw(FUNC(ampex_state::read_5841), FUNC(ampex_state::write_5841));
|
map(0x5841, 0x5841).rw(FUNC(ampex_state::read_5841), FUNC(ampex_state::write_5841));
|
||||||
map(0x5842, 0x5842).r(FUNC(ampex_state::read_5842)).w(m_uart, FUNC(ay31015_device::transmit));
|
map(0x5842, 0x5842).r(FUNC(ampex_state::read_5842)).w(m_uart, FUNC(ay31015_device::transmit));
|
||||||
@ -178,6 +198,135 @@ void ampex_state::mem_map(address_map &map)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static INPUT_PORTS_START( ampex )
|
static INPUT_PORTS_START( ampex )
|
||||||
|
PORT_START("IN0")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('\\') PORT_CHAR('|') PORT_CODE(KEYCODE_TILDE)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('1') PORT_CHAR('!') PORT_CODE(KEYCODE_1)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('2') PORT_CHAR('"') PORT_CODE(KEYCODE_2)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('3') PORT_CHAR('#') PORT_CODE(KEYCODE_3)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('4') PORT_CHAR('$') PORT_CODE(KEYCODE_4)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('5') PORT_CHAR('%') PORT_CODE(KEYCODE_5)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('6') PORT_CHAR('&') PORT_CODE(KEYCODE_6)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('7') PORT_CHAR('\'') PORT_CODE(KEYCODE_7)
|
||||||
|
|
||||||
|
PORT_START("IN1")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(0x1b) PORT_CODE(KEYCODE_TAB)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('q') PORT_CHAR('Q') PORT_CODE(KEYCODE_Q)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('w') PORT_CHAR('W') PORT_CODE(KEYCODE_W)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('e') PORT_CHAR('E') PORT_CODE(KEYCODE_E)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('r') PORT_CHAR('R') PORT_CODE(KEYCODE_R)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('t') PORT_CHAR('T') PORT_CODE(KEYCODE_T)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('y') PORT_CHAR('Y') PORT_CODE(KEYCODE_Y)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('u') PORT_CHAR('U') PORT_CODE(KEYCODE_U)
|
||||||
|
|
||||||
|
PORT_START("IN2")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_CODE(KEYCODE_CAPSLOCK)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CHAR(UCHAR_SHIFT_2) PORT_CODE(KEYCODE_LCONTROL)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('a') PORT_CHAR('A') PORT_CODE(KEYCODE_A)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('s') PORT_CHAR('S') PORT_CODE(KEYCODE_S)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('d') PORT_CHAR('D') PORT_CODE(KEYCODE_D)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('f') PORT_CHAR('F') PORT_CODE(KEYCODE_F)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('g') PORT_CHAR('G') PORT_CODE(KEYCODE_G)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('h') PORT_CHAR('H') PORT_CODE(KEYCODE_H)
|
||||||
|
|
||||||
|
PORT_START("IN3")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x83 (Break?)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift (Left)") PORT_CHAR(UCHAR_SHIFT_1) PORT_CODE(KEYCODE_LSHIFT)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('z') PORT_CHAR('Z') PORT_CODE(KEYCODE_Z)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('x') PORT_CHAR('X') PORT_CODE(KEYCODE_X)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('c') PORT_CHAR('C') PORT_CODE(KEYCODE_C)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('v') PORT_CHAR('V') PORT_CODE(KEYCODE_V)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('b') PORT_CHAR('B') PORT_CODE(KEYCODE_B)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('n') PORT_CHAR('N') PORT_CODE(KEYCODE_N)
|
||||||
|
|
||||||
|
PORT_START("IN4")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('m') PORT_CHAR('M') PORT_CODE(KEYCODE_M)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(',') PORT_CHAR('<') PORT_CODE(KEYCODE_COMMA)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('.') PORT_CHAR('>') PORT_CODE(KEYCODE_STOP)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('/') PORT_CHAR('?') PORT_CODE(KEYCODE_SLASH)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift (Right)") PORT_CODE(KEYCODE_RSHIFT)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(' ') PORT_CODE(KEYCODE_SPACE)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("IN5")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('j') PORT_CHAR('J') PORT_CODE(KEYCODE_J)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('k') PORT_CHAR('K') PORT_CODE(KEYCODE_K)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('l') PORT_CHAR('L') PORT_CODE(KEYCODE_L)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(';') PORT_CHAR('+') PORT_CODE(KEYCODE_COLON)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('[') PORT_CHAR('{') PORT_CODE(KEYCODE_OPENBRACE)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(']') PORT_CHAR('}') PORT_CODE(KEYCODE_CLOSEBRACE)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x1f (shifted: 0x8a) (Page New Line?)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x94 (Line Ins?)
|
||||||
|
|
||||||
|
PORT_START("IN6")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('i') PORT_CHAR('I') PORT_CODE(KEYCODE_I)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('o') PORT_CHAR('O') PORT_CODE(KEYCODE_O)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('p') PORT_CHAR('P') PORT_CODE(KEYCODE_P)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('^') PORT_CHAR('~') PORT_CODE(KEYCODE_QUOTE)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(0x0a) PORT_CODE(KEYCODE_RALT) PORT_NAME("Line Feed")
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(0x0d) PORT_CODE(KEYCODE_ENTER)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0xd4 (shifted: 0xf4)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0xd9 (shifted: 0xf9)
|
||||||
|
|
||||||
|
PORT_START("IN7")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('8') PORT_CHAR('(') PORT_CODE(KEYCODE_8)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('9') PORT_CHAR(')') PORT_CODE(KEYCODE_9)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('0') PORT_CHAR('_') PORT_CODE(KEYCODE_0)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(':') PORT_CHAR('*') PORT_CODE(KEYCODE_MINUS)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('-') PORT_CHAR('=') PORT_CODE(KEYCODE_EQUALS)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR('@') PORT_CHAR('`') PORT_CODE(KEYCODE_BACKSLASH)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(0x09) PORT_CODE(KEYCODE_BACKSPACE)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x90 (shifted: 0x84)
|
||||||
|
|
||||||
|
PORT_START("IN8")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_CODE(KEYCODE_ENTER_PAD)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CODE(KEYCODE_DEL_PAD)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) PORT_CODE(KEYCODE_0_PAD)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD)) PORT_CODE(KEYCODE_COMMA_PAD)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x97 (Char Del?)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CODE(KEYCODE_DOWN)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x96 (Char Ins?)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("IN9")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x0d (top half of keypad Enter?)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_CODE(KEYCODE_3_PAD)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) PORT_CODE(KEYCODE_2_PAD)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) PORT_CODE(KEYCODE_1_PAD)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CODE(KEYCODE_RIGHT)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_CODE(KEYCODE_HOME)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Del") PORT_CODE(KEYCODE_RCONTROL) // 0x7f
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("INA")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(TAB_PAD)) PORT_CODE(KEYCODE_TAB_PAD)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) PORT_CODE(KEYCODE_6_PAD)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) PORT_CODE(KEYCODE_5_PAD)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) PORT_CODE(KEYCODE_4_PAD)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x95 (Line Del?)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_CODE(KEYCODE_UP)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_CODE(KEYCODE_LEFT)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("INB")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_CODE(KEYCODE_MINUS_PAD)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) PORT_CODE(KEYCODE_9_PAD)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) PORT_CODE(KEYCODE_8_PAD)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) PORT_CODE(KEYCODE_7_PAD)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x8b (shifted: 0x8c) (Clear?)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0xd0 (Page Erase?)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0xb4 (shifted: 0xb6) (Line Erase?)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("INC")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x87 (shifted: 0x86)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x85 (shifted: 0x84)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x89 (shifted: 0x88)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x92 (shifted: 0x93)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0x91
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN) // 0xb5 (shifted: 0xb7)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
void ampex_state::machine_start()
|
void ampex_state::machine_start()
|
||||||
|
@ -829,7 +829,7 @@ ROM_START( bagmanj )
|
|||||||
ROM_LOAD( "bf8_13.t9", 0x1000, 0x1000, CRC(b2120edd) SHA1(52b89dbcc749b084331fa82b13d0876e911fce52) ) // 2732
|
ROM_LOAD( "bf8_13.t9", 0x1000, 0x1000, CRC(b2120edd) SHA1(52b89dbcc749b084331fa82b13d0876e911fce52) ) // 2732
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( botanic2 ) // PCB has Valadon logo with 'bajo licencia Itisa (Palamos)'. Most likely just a bootleg Bagman PCB conversion.
|
ROM_START( botanic2 ) // PCB has Valadon logo with 'bajo licencia Itisa (Palamos)'.
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD( "5.9e", 0x0000, 0x1000, CRC(c5170449) SHA1(3f85f254f1a318a0b4d6e12d4df756c880751327) ) // 2732
|
ROM_LOAD( "5.9e", 0x0000, 0x1000, CRC(c5170449) SHA1(3f85f254f1a318a0b4d6e12d4df756c880751327) ) // 2732
|
||||||
ROM_LOAD( "6.9f", 0x1000, 0x1000, CRC(33b2df44) SHA1(9d3697bdf0d906b27374a1460cdac715ef10565d) ) // 2732
|
ROM_LOAD( "6.9f", 0x1000, 0x1000, CRC(33b2df44) SHA1(9d3697bdf0d906b27374a1460cdac715ef10565d) ) // 2732
|
||||||
@ -1120,8 +1120,8 @@ GAME( 1984, sbagmans, sbagman, sbagman, sbagman, bagman_state, empty_init,
|
|||||||
|
|
||||||
GAME( 1983, pickin, 0, pickin, pickin, bagman_state, empty_init, ROT270, "Valadon Automation", "Pickin'", MACHINE_SUPPORTS_SAVE )
|
GAME( 1983, pickin, 0, pickin, pickin, bagman_state, empty_init, ROT270, "Valadon Automation", "Pickin'", MACHINE_SUPPORTS_SAVE )
|
||||||
|
|
||||||
GAME( 1983, botanic, 0, botanic, botanici, bagman_state, empty_init, ROT90, "Itisa", "Botanic (English / Spanish)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1983, botanic, 0, botanic, botanici, bagman_state, empty_init, ROT90, "Itisa", "Botanic (English / Spanish, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1983, botanic2, botanic, bagman, botanici2, bagman_state, empty_init, ROT90, "Itisa", "Botanic (English / Spanish, bootleg conversion)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // At the title screen, Botanic in corrupted in the first loop, ok from the second on. Colors likely wrong, too. Has a leftover 5110.
|
GAME( 1983, botanic2, botanic, bagman, botanici2, bagman_state, empty_init, ROT90, "Itisa", "Botanic (English / Spanish, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // At the title screen, Botanic in corrupted in the first loop, ok from the second on. Colors likely wrong, too. Has a leftover 5110.
|
||||||
GAME( 1984, botanicf, botanic, botanic, botanicf, bagman_state, empty_init, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1984, botanicf, botanic, botanic, botanicf, bagman_state, empty_init, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", MACHINE_SUPPORTS_SAVE )
|
||||||
|
|
||||||
GAME( 1984, squaitsa, 0, botanic, squaitsa, squaitsa_state, empty_init, ROT0, "Itisa", "Squash (Itisa)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1984, squaitsa, 0, botanic, squaitsa, squaitsa_state, empty_init, ROT0, "Itisa", "Squash (Itisa)", MACHINE_SUPPORTS_SAVE )
|
||||||
|
@ -1365,10 +1365,10 @@ READ8_MEMBER( cmi_state::fdc_r )
|
|||||||
{
|
{
|
||||||
switch (m_fdc_addr)
|
switch (m_fdc_addr)
|
||||||
{
|
{
|
||||||
case 0xc: { return m_wd1791->status_r() ^ 0xff; }
|
case 0xc: return m_wd1791->status_r() ^ 0xff;
|
||||||
case 0xd: { return m_wd1791->track_r() ^ 0xff; }
|
case 0xd: return m_wd1791->track_r() ^ 0xff;
|
||||||
case 0xe: { return m_wd1791->sector_r() ^ 0xff; }
|
case 0xe: return m_wd1791->sector_r() ^ 0xff;
|
||||||
case 0xf: { return m_wd1791->data_r() ^ 0xff; }
|
case 0xf: return m_wd1791->data_r() ^ 0xff;
|
||||||
default: return 0;
|
default: return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ static INPUT_PORTS_START( coco3_keyboard )
|
|||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP), '^')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("DOWN") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN), 10)
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("DOWN") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN), 10)
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(LEFT), 8)
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(LEFT), 8)
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT), 9)
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT), 9)
|
||||||
@ -120,30 +120,30 @@ static INPUT_PORTS_START( coco3_keyboard )
|
|||||||
|
|
||||||
PORT_START("row4")
|
PORT_START("row4")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_CHAR('|')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') PORT_CHAR('^')
|
||||||
|
|
||||||
PORT_START("row5")
|
PORT_START("row5")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') PORT_CHAR('[')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') PORT_CHAR(']')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_MINUS) PORT_CHAR(':') PORT_CHAR('*')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_MINUS) PORT_CHAR(':') PORT_CHAR('*')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') PORT_CHAR('{')
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('=')
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('=') PORT_CHAR('_')
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') PORT_CHAR('}')
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') PORT_CHAR('\\')
|
||||||
|
|
||||||
PORT_START("row6")
|
PORT_START("row6")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("CLEAR") PORT_CODE(KEYCODE_HOME) PORT_CHAR(12)
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("CLEAR") PORT_CODE(KEYCODE_HOME) PORT_CHAR(12)
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("BREAK") PORT_CODE(KEYCODE_END) PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("BREAK") PORT_CODE(KEYCODE_END) PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("ALT") PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("ALT") PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL), UCHAR_SHIFT_2)
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, nullptr) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||||
|
@ -330,7 +330,7 @@ MACHINE_CONFIG_START(foodf_state::foodf)
|
|||||||
|
|
||||||
X2212(config, "nvram").set_auto_save(true);
|
X2212(config, "nvram").set_auto_save(true);
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
MCFG_TIMER_DRIVER_ADD(m_scan_timer, foodf_state, scanline_update_timer)
|
MCFG_TIMER_DRIVER_ADD(m_scan_timer, foodf_state, scanline_update_timer)
|
||||||
|
|
||||||
|
@ -1650,7 +1650,7 @@ MACHINE_CONFIG_START(bosco_state::bosco)
|
|||||||
//m_videolatch->q_out_cb<7>().set("50xx_2", FUNC(namco_50xx_device::reset_w));
|
//m_videolatch->q_out_cb<7>().set("50xx_2", FUNC(namco_50xx_device::reset_w));
|
||||||
//m_videolatch->q_out_cb<7>().append("52xx", FUNC(namco_52xx_device, reset_w));
|
//m_videolatch->q_out_cb<7>().append("52xx", FUNC(namco_52xx_device, reset_w));
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||||
/* synchronization of the CPUs */
|
/* synchronization of the CPUs */
|
||||||
|
|
||||||
@ -1722,7 +1722,7 @@ MACHINE_CONFIG_START(galaga_state::galaga)
|
|||||||
// Q0-Q5 to 05XX for starfield control
|
// Q0-Q5 to 05XX for starfield control
|
||||||
m_videolatch->q_out_cb<7>().set(FUNC(galaga_state::flip_screen_w));
|
m_videolatch->q_out_cb<7>().set(FUNC(galaga_state::flip_screen_w));
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||||
/* synchronization of the CPUs */
|
/* synchronization of the CPUs */
|
||||||
|
|
||||||
@ -1825,7 +1825,7 @@ MACHINE_CONFIG_START(xevious_state::xevious)
|
|||||||
MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("50xx", namco_50xx_device, write))
|
MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("50xx", namco_50xx_device, write))
|
||||||
MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
|
MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* 1000 CPU slices per frame - an high value to ensure proper */
|
MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* 1000 CPU slices per frame - an high value to ensure proper */
|
||||||
/* synchronization of the CPUs */
|
/* synchronization of the CPUs */
|
||||||
|
|
||||||
|
@ -1776,10 +1776,10 @@ MACHINE_CONFIG_START(gottlieb_state::gottlieb_core)
|
|||||||
|
|
||||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
|
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK)
|
MCFG_SCREEN_RAW_PARAMS(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(gottlieb_state, screen_update_gottlieb)
|
MCFG_SCREEN_UPDATE_DRIVER(gottlieb_state, screen_update_gottlieb)
|
||||||
|
|
||||||
|
@ -755,7 +755,7 @@ MACHINE_CONFIG_START(grchamp_state::grchamp)
|
|||||||
MCFG_DEVICE_PROGRAM_MAP(sound_map)
|
MCFG_DEVICE_PROGRAM_MAP(sound_map)
|
||||||
MCFG_DEVICE_PERIODIC_INT_DRIVER(grchamp_state, irq0_line_hold, (double)SOUND_CLOCK/4/16/16/10/16)
|
MCFG_DEVICE_PERIODIC_INT_DRIVER(grchamp_state, irq0_line_hold, (double)SOUND_CLOCK/4/16/16/10/16)
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
@ -763,7 +763,7 @@ MACHINE_CONFIG_START(grchamp_state::grchamp)
|
|||||||
MCFG_PALETTE_ADD("palette", 32)
|
MCFG_PALETTE_ADD("palette", 32)
|
||||||
MCFG_PALETTE_INIT_OWNER(grchamp_state, grchamp)
|
MCFG_PALETTE_INIT_OWNER(grchamp_state, grchamp)
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
||||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(grchamp_state, screen_update)
|
MCFG_SCREEN_UPDATE_DRIVER(grchamp_state, screen_update)
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "machine/z80sio.h"
|
#include "machine/z80sio.h"
|
||||||
#include "machine/clock.h"
|
#include "machine/clock.h"
|
||||||
#include "sound/beep.h"
|
#include "sound/beep.h"
|
||||||
|
#include "bus/centronics/ctronics.h"
|
||||||
#include "bus/rs232/rs232.h"
|
#include "bus/rs232/rs232.h"
|
||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
@ -193,7 +194,7 @@ void m79152pc_state::screen_draw_line(bitmap_ind16 &bitmap, unsigned y)
|
|||||||
for (u16 x = ma; x < ma + 80; x++)
|
for (u16 x = ma; x < ma + 80; x++)
|
||||||
{
|
{
|
||||||
// BIT(attr, 3) should probably be blinking
|
// BIT(attr, 3) should probably be blinking
|
||||||
// BIT(attr, 1) may be used for high-intensity text (
|
// BIT(attr, 1) may be used for high-intensity text
|
||||||
u8 chr = m_videoram[x];
|
u8 chr = m_videoram[x];
|
||||||
u8 attr = m_attributes[x];
|
u8 attr = m_attributes[x];
|
||||||
u8 gfx = m_chargen[(chr << 4) | (BIT(attr, 2) && ra == 15 ? 3 : ra)];
|
u8 gfx = m_chargen[(chr << 4) | (BIT(attr, 2) && ra == 15 ? 3 : ra)];
|
||||||
@ -304,7 +305,19 @@ MACHINE_CONFIG_START(m79152pc_state::m79152pc)
|
|||||||
mculatch.int_wr_callback().set(m_uart, FUNC(z80sio_device::ctsb_w)).invert();
|
mculatch.int_wr_callback().set(m_uart, FUNC(z80sio_device::ctsb_w)).invert();
|
||||||
mculatch.int_wr_callback().append(FUNC(m79152pc_state::latch_full_w));
|
mculatch.int_wr_callback().append(FUNC(m79152pc_state::latch_full_w));
|
||||||
|
|
||||||
I8255A(config, "ppi"); // NEC D8255AD-2
|
i8255_device &ppi(I8255A(config, "ppi")); // NEC D8255AD-2
|
||||||
|
ppi.out_pb_callback().set("printer", FUNC(centronics_device::write_data0)).bit(0);
|
||||||
|
ppi.out_pb_callback().append("printer", FUNC(centronics_device::write_data1)).bit(1);
|
||||||
|
ppi.out_pb_callback().append("printer", FUNC(centronics_device::write_data2)).bit(2);
|
||||||
|
ppi.out_pb_callback().append("printer", FUNC(centronics_device::write_data3)).bit(3);
|
||||||
|
ppi.out_pb_callback().append("printer", FUNC(centronics_device::write_data4)).bit(4);
|
||||||
|
ppi.out_pb_callback().append("printer", FUNC(centronics_device::write_data5)).bit(5);
|
||||||
|
ppi.out_pb_callback().append("printer", FUNC(centronics_device::write_data6)).bit(6);
|
||||||
|
ppi.out_pb_callback().append("printer", FUNC(centronics_device::write_data7)).bit(7);
|
||||||
|
ppi.out_pc_callback().set("printer", FUNC(centronics_device::write_strobe)).bit(1);
|
||||||
|
|
||||||
|
centronics_device &printer(CENTRONICS(config, "printer", centronics_devices, nullptr));
|
||||||
|
printer.ack_handler().set("ppi", FUNC(i8255_device::pc2_w));
|
||||||
|
|
||||||
z80ctc_device &ctc(Z80CTC(config, "ctc", 4'000'000));
|
z80ctc_device &ctc(Z80CTC(config, "ctc", 4'000'000));
|
||||||
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
|
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
|
||||||
|
@ -1092,7 +1092,7 @@ MACHINE_CONFIG_START(mcr3_state::mcrmono)
|
|||||||
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
|
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
|
||||||
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
|
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16);
|
||||||
|
|
||||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||||
|
|
||||||
@ -1101,7 +1101,7 @@ MACHINE_CONFIG_START(mcr3_state::mcrmono)
|
|||||||
SPEAKER(config, "rspeaker").front_right();
|
SPEAKER(config, "rspeaker").front_right();
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||||
MCFG_SCREEN_REFRESH_RATE(30)
|
MCFG_SCREEN_REFRESH_RATE(30)
|
||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||||
|
@ -591,7 +591,7 @@ INPUT_PORTS_END
|
|||||||
MACHINE_CONFIG_START(meyc8080_state::meyc8080)
|
MACHINE_CONFIG_START(meyc8080_state::meyc8080)
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD("maincpu", I8080, XTAL(20'000'000) / 10) // divider guessed
|
MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(20'000'000) / 10) // divider guessed
|
||||||
MCFG_DEVICE_PROGRAM_MAP(meyc8080_map)
|
MCFG_DEVICE_PROGRAM_MAP(meyc8080_map)
|
||||||
|
|
||||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||||
|
@ -1157,12 +1157,12 @@ MACHINE_CONFIG_START(missile_state::missile)
|
|||||||
MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/8)
|
MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/8)
|
||||||
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_PALETTE_ADD("palette", 8)
|
MCFG_PALETTE_ADD("palette", 8)
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(missile_state, screen_update_missile)
|
MCFG_SCREEN_UPDATE_DRIVER(missile_state, screen_update_missile)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
@ -1449,6 +1449,12 @@ static INPUT_PORTS_START( luckywld )
|
|||||||
|
|
||||||
NAMCOS2_MCU_DIPSW_DEFAULT
|
NAMCOS2_MCU_DIPSW_DEFAULT
|
||||||
NAMCOS2_MCU_DIAL_DEFAULT
|
NAMCOS2_MCU_DIAL_DEFAULT
|
||||||
|
|
||||||
|
PORT_MODIFY("DSW")
|
||||||
|
// this applies to both the World and Japan sets
|
||||||
|
PORT_DIPNAME( 0x40, 0x40, "Show Winners Don't Use Drugs")
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||||
|
PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( sgunner )
|
static INPUT_PORTS_START( sgunner )
|
||||||
@ -2055,6 +2061,9 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
MACHINE_CONFIG_START(namcos2_state::finalap3)
|
MACHINE_CONFIG_START(namcos2_state::finalap3)
|
||||||
finallap_c68(config);
|
finallap_c68(config);
|
||||||
|
|
||||||
|
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos2_state::TilemapCB_finalap2, this));
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(namcos2_state, finalap2)
|
MCFG_VIDEO_START_OVERRIDE(namcos2_state, finalap2)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
@ -3895,17 +3904,25 @@ ROM_START( fourtraxj )
|
|||||||
ROM_LOAD( "fx_voi-1.3m", 0x000000, 0x080000, CRC(6173364f) SHA1(cc426f49b7e87b11f1f51e8e10db7cad87ffb44d) )
|
ROM_LOAD( "fx_voi-1.3m", 0x000000, 0x080000, CRC(6173364f) SHA1(cc426f49b7e87b11f1f51e8e10db7cad87ffb44d) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
// this is a strange, it's based on the fx2 set, but with one of the 68k pair modified (21 bytes changed) and a unique GFX rom?
|
/* This is a strange set, it's based on the fx2 set, but with one of the 68k pair modified (21 bytes changed) and a unique GFX ROM
|
||||||
// changes seem to be related to the trackside advertising banners
|
|
||||||
|
Changes seem to be related to the trackside advertising banners. This was around the same time Super Monaco GP was forced to
|
||||||
|
remove 'real' advertising banners, so could be related.
|
||||||
|
|
||||||
|
The changed graphic ROM has tiles for an additional 'awaiting entry' screen, but it is unclear where they are used,
|
||||||
|
the same tiles in the fx2 set are blank, assuming that one isn't a bad dump.
|
||||||
|
|
||||||
|
Previous dumps of the program / sub CPUs were 0x00 filled instead of 0xff filled in the 2nd half due to a dumping error
|
||||||
|
*/
|
||||||
|
|
||||||
ROM_START( fourtraxa )
|
ROM_START( fourtraxa )
|
||||||
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
|
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
|
||||||
// the old dump of this set only differed in having a 0x00 fill in the 2nd half instead of a 0xff fill
|
|
||||||
ROM_LOAD16_BYTE( "fx4_mp0a.11d", 0x000000, 0x020000, CRC(f147cd6b) SHA1(7cdadd68d55dd8fa9b19cbee1434d9266ae1f4b9) ) // == fx2_mp0.11d
|
ROM_LOAD16_BYTE( "fx4_mp0a.11d", 0x000000, 0x020000, CRC(f147cd6b) SHA1(7cdadd68d55dd8fa9b19cbee1434d9266ae1f4b9) ) // == fx2_mp0.11d
|
||||||
ROM_LOAD16_BYTE( "fx4_mp1a.13d", 0x000001, 0x020000, CRC(d1138c85) SHA1(32bf68ae36f72b84f3c3df28425147b6aaac1edf) )
|
ROM_LOAD16_BYTE( "fx4_mp1a.13d", 0x000001, 0x020000, CRC(d1138c85) SHA1(32bf68ae36f72b84f3c3df28425147b6aaac1edf) )
|
||||||
|
|
||||||
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
|
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
|
||||||
ROM_LOAD16_BYTE( "fx1_sp0.11k", 0x000000, 0x020000, CRC(41687edd) SHA1(1e79dc9abe5614f836e89b376be1dc70deaac889) )
|
ROM_LOAD16_BYTE( "fx1_sp0.11k", 0x000000, 0x020000, CRC(48548e78) SHA1(b3a9de8682fe63c1c3ecab3e3f9380a884efd4af) ) // same content as fx2 set, different label
|
||||||
ROM_LOAD16_BYTE( "fx1_sp1.13k", 0x000001, 0x020000, CRC(dbbae326) SHA1(6743054f7796bd5b1d24fa9cf0095544420b2c76) )
|
ROM_LOAD16_BYTE( "fx1_sp1.13k", 0x000001, 0x020000, CRC(d2861383) SHA1(36be5a8c8a19f35f9a9bd3ef725a83c5e58ccbe0) ) // same content as fx2 set, different label
|
||||||
|
|
||||||
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
|
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
|
||||||
ROM_LOAD( "fx1_sd0.7j", 0x000000, 0x020000, CRC(acccc934) SHA1(98f1a823ba7e3f258a73d5780953f9339d438e1a) )
|
ROM_LOAD( "fx1_sd0.7j", 0x000000, 0x020000, CRC(acccc934) SHA1(98f1a823ba7e3f258a73d5780953f9339d438e1a) )
|
||||||
|
@ -897,7 +897,7 @@ MACHINE_CONFIG_START(polepos_state::polepos)
|
|||||||
MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("52xx", namco_52xx_device, write))
|
MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("52xx", namco_52xx_device, write))
|
||||||
MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
|
MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16); // 128V clocks the same as VBLANK
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
|
||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
|
||||||
|
|
||||||
@ -1006,7 +1006,7 @@ MACHINE_CONFIG_START(polepos_state::topracern)
|
|||||||
MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
|
MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
|
||||||
MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
|
MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16); // 128V clocks the same as VBLANK
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
|
||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
|
||||||
|
|
||||||
|
@ -347,7 +347,7 @@ MACHINE_CONFIG_START(rampart_state::rampart)
|
|||||||
|
|
||||||
EEPROM_2816(config, "eeprom").lock_after_write(true);
|
EEPROM_2816(config, "eeprom").lock_after_write(true);
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rampart)
|
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rampart)
|
||||||
@ -358,7 +358,7 @@ MACHINE_CONFIG_START(rampart_state::rampart)
|
|||||||
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", rampart_state::s_mob_config)
|
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", rampart_state::s_mob_config)
|
||||||
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
|
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||||
/* note: these parameters are from published specs, not derived */
|
/* note: these parameters are from published specs, not derived */
|
||||||
/* the board uses an SOS-2 chip to generate video signals */
|
/* the board uses an SOS-2 chip to generate video signals */
|
||||||
|
@ -573,12 +573,12 @@ MACHINE_CONFIG_START(sbrkout_state::sbrkout)
|
|||||||
// coin counter activity as stated in Atari bulletin B-0054 (which recommends tying it to the
|
// coin counter activity as stated in Atari bulletin B-0054 (which recommends tying it to the
|
||||||
// CPU reset line instead).
|
// CPU reset line instead).
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sbrkout)
|
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sbrkout)
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 384, 0, 256, 262, 0, 224)
|
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 384, 0, 256, 262, 0, 224)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(sbrkout_state, screen_update_sbrkout)
|
MCFG_SCREEN_UPDATE_DRIVER(sbrkout_state, screen_update_sbrkout)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
@ -497,10 +497,10 @@ MACHINE_CONFIG_START(sprint2_state::sprint2)
|
|||||||
MCFG_DEVICE_PROGRAM_MAP(sprint2_map)
|
MCFG_DEVICE_PROGRAM_MAP(sprint2_map)
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sprint2_state, sprint2)
|
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sprint2_state, sprint2)
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL, 768, 0, 512, 262, 0, 224)
|
MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL, 768, 0, 512, 262, 0, 224)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(sprint2_state, screen_update_sprint2)
|
MCFG_SCREEN_UPDATE_DRIVER(sprint2_state, screen_update_sprint2)
|
||||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint2_state, screen_vblank_sprint2))
|
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint2_state, screen_vblank_sprint2))
|
||||||
|
@ -385,10 +385,10 @@ MACHINE_CONFIG_START(sprint4_state::sprint4)
|
|||||||
MCFG_DEVICE_ADD("maincpu", M6502, PIXEL_CLOCK / 8)
|
MCFG_DEVICE_ADD("maincpu", M6502, PIXEL_CLOCK / 8)
|
||||||
MCFG_DEVICE_PROGRAM_MAP(sprint4_cpu_map)
|
MCFG_DEVICE_PROGRAM_MAP(sprint4_cpu_map)
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
|
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update)
|
MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update)
|
||||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint4_state, screen_vblank))
|
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint4_state, screen_vblank))
|
||||||
|
@ -580,9 +580,6 @@ private:
|
|||||||
DECLARE_READ32_MEMBER( ram_r );
|
DECLARE_READ32_MEMBER( ram_r );
|
||||||
DECLARE_WRITE32_MEMBER( ram_w );
|
DECLARE_WRITE32_MEMBER( ram_w );
|
||||||
DECLARE_READ32_MEMBER( ss1_sl0_id );
|
DECLARE_READ32_MEMBER( ss1_sl0_id );
|
||||||
DECLARE_READ32_MEMBER( ss1_sl1_id );
|
|
||||||
DECLARE_READ32_MEMBER( ss1_sl2_id );
|
|
||||||
DECLARE_READ32_MEMBER( ss1_sl3_id );
|
|
||||||
DECLARE_READ32_MEMBER( timer_r );
|
DECLARE_READ32_MEMBER( timer_r );
|
||||||
DECLARE_WRITE32_MEMBER( timer_w );
|
DECLARE_WRITE32_MEMBER( timer_w );
|
||||||
DECLARE_READ8_MEMBER( irq_r );
|
DECLARE_READ8_MEMBER( irq_r );
|
||||||
@ -620,7 +617,7 @@ private:
|
|||||||
|
|
||||||
required_device<mb86901_device> m_maincpu;
|
required_device<mb86901_device> m_maincpu;
|
||||||
|
|
||||||
required_device<mk48t12_device> m_timekpr;
|
required_device<m48t02_device> m_timekpr;
|
||||||
|
|
||||||
required_device<z80scc_device> m_scc1;
|
required_device<z80scc_device> m_scc1;
|
||||||
required_device<z80scc_device> m_scc2;
|
required_device<z80scc_device> m_scc2;
|
||||||
@ -710,6 +707,9 @@ uint32_t sun4_state::read_insn_data_4c(uint8_t asi, address_space &space, uint32
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
printf("sun4c: access to memory type not defined in sun4c\n");
|
printf("sun4c: access to memory type not defined in sun4c\n");
|
||||||
|
m_maincpu->set_mae();
|
||||||
|
m_buserr[0] = 0x20;
|
||||||
|
m_buserr[1] = offset << 2;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -717,7 +717,7 @@ uint32_t sun4_state::read_insn_data_4c(uint8_t asi, address_space &space, uint32
|
|||||||
{
|
{
|
||||||
if (!machine().side_effects_disabled())
|
if (!machine().side_effects_disabled())
|
||||||
{
|
{
|
||||||
//printf("sun4c: INVALID PTE entry %d %08x accessed! vaddr=%x PC=%x\n", entry, m_pagemap[entry], offset <<2, m_maincpu->pc());
|
printf("sun4c: INVALID PTE entry %d %08x accessed! vaddr=%x PC=%x\n", entry, m_pagemap[entry], offset <<2, m_maincpu->pc());
|
||||||
m_maincpu->set_mae();
|
m_maincpu->set_mae();
|
||||||
m_buserr[0] |= 0x80; // invalid PTE
|
m_buserr[0] |= 0x80; // invalid PTE
|
||||||
m_buserr[0] &= ~0x8000; // read
|
m_buserr[0] &= ~0x8000; // read
|
||||||
@ -778,12 +778,15 @@ void sun4_state::write_insn_data_4c(uint8_t asi, address_space &space, uint32_t
|
|||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
printf("sun4c: access to memory type not defined\n");
|
printf("sun4c: access to memory type not defined\n");
|
||||||
|
m_maincpu->set_mae();
|
||||||
|
m_buserr[0] = 0x8020;
|
||||||
|
m_buserr[1] = offset << 2;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//printf("sun4c: INVALID PTE entry %d %08x accessed! data=%08x vaddr=%x PC=%x\n", entry, m_pagemap[entry], data, offset <<2, m_maincpu->pc());
|
printf("sun4c: INVALID PTE entry %d %08x accessed! data=%08x vaddr=%x PC=%x\n", entry, m_pagemap[entry], data, offset <<2, m_maincpu->pc());
|
||||||
m_maincpu->set_mae();
|
m_maincpu->set_mae();
|
||||||
m_buserr[0] |= 0x8080; // write cycle, invalid PTE
|
m_buserr[0] |= 0x8080; // write cycle, invalid PTE
|
||||||
m_buserr[1] = offset<<2;
|
m_buserr[1] = offset<<2;
|
||||||
@ -1043,7 +1046,7 @@ uint32_t sun4_state::read_insn_data(uint8_t asi, address_space &space, uint32_t
|
|||||||
{
|
{
|
||||||
if (!machine().side_effects_disabled())
|
if (!machine().side_effects_disabled())
|
||||||
{
|
{
|
||||||
//printf("sun4: INVALID PTE entry %d %08x accessed! vaddr=%x PC=%x\n", entry, m_pagemap[entry], offset <<2, m_maincpu->pc());
|
printf("sun4: INVALID PTE entry %d %08x accessed! vaddr=%x PC=%x\n", entry, m_pagemap[entry], offset <<2, m_maincpu->pc());
|
||||||
m_maincpu->set_mae();
|
m_maincpu->set_mae();
|
||||||
m_buserr[0] |= 0x80; // invalid PTE
|
m_buserr[0] |= 0x80; // invalid PTE
|
||||||
m_buserr[0] &= ~0x8000; // read
|
m_buserr[0] &= ~0x8000; // read
|
||||||
@ -1583,7 +1586,7 @@ READ8_MEMBER( sun4_state::irq_r )
|
|||||||
|
|
||||||
WRITE8_MEMBER( sun4_state::irq_w )
|
WRITE8_MEMBER( sun4_state::irq_w )
|
||||||
{
|
{
|
||||||
//printf("%02x to IRQ\n", data);
|
printf("%02x to IRQ\n", data);
|
||||||
|
|
||||||
m_irq_reg = data;
|
m_irq_reg = data;
|
||||||
|
|
||||||
@ -1594,6 +1597,7 @@ WRITE8_MEMBER( sun4_state::irq_w )
|
|||||||
|
|
||||||
WRITE_LINE_MEMBER( sun4_state::scc1_int )
|
WRITE_LINE_MEMBER( sun4_state::scc1_int )
|
||||||
{
|
{
|
||||||
|
logerror("scc1\n");
|
||||||
m_scc1_int = state;
|
m_scc1_int = state;
|
||||||
|
|
||||||
m_maincpu->set_input_line(SPARC_IRQ12, ((m_scc1_int || m_scc2_int) && (m_irq_reg & 0x01)) ? ASSERT_LINE : CLEAR_LINE);
|
m_maincpu->set_input_line(SPARC_IRQ12, ((m_scc1_int || m_scc2_int) && (m_irq_reg & 0x01)) ? ASSERT_LINE : CLEAR_LINE);
|
||||||
@ -1601,6 +1605,7 @@ WRITE_LINE_MEMBER( sun4_state::scc1_int )
|
|||||||
|
|
||||||
WRITE_LINE_MEMBER( sun4_state::scc2_int )
|
WRITE_LINE_MEMBER( sun4_state::scc2_int )
|
||||||
{
|
{
|
||||||
|
logerror("scc2\n");
|
||||||
m_scc2_int = state;
|
m_scc2_int = state;
|
||||||
|
|
||||||
m_maincpu->set_input_line(SPARC_IRQ12, ((m_scc1_int || m_scc2_int) && (m_irq_reg & 0x01)) ? ASSERT_LINE : CLEAR_LINE);
|
m_maincpu->set_input_line(SPARC_IRQ12, ((m_scc1_int || m_scc2_int) && (m_irq_reg & 0x01)) ? ASSERT_LINE : CLEAR_LINE);
|
||||||
@ -1618,6 +1623,7 @@ void sun4_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
|
|||||||
start_timer(0);
|
start_timer(0);
|
||||||
if ((m_irq_reg & 0x21) == 0x21)
|
if ((m_irq_reg & 0x21) == 0x21)
|
||||||
{
|
{
|
||||||
|
logerror("t0\n");
|
||||||
m_maincpu->set_input_line(SPARC_IRQ10, ASSERT_LINE);
|
m_maincpu->set_input_line(SPARC_IRQ10, ASSERT_LINE);
|
||||||
//printf("Taking INT10\n");
|
//printf("Taking INT10\n");
|
||||||
}
|
}
|
||||||
@ -1631,6 +1637,7 @@ void sun4_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
|
|||||||
//m_c1_timer->adjust(attotime::never);
|
//m_c1_timer->adjust(attotime::never);
|
||||||
if ((m_irq_reg & 0x81) == 0x81)
|
if ((m_irq_reg & 0x81) == 0x81)
|
||||||
{
|
{
|
||||||
|
logerror("t1\n");
|
||||||
m_maincpu->set_input_line(SPARC_IRQ14, ASSERT_LINE);
|
m_maincpu->set_input_line(SPARC_IRQ14, ASSERT_LINE);
|
||||||
//printf("Taking INT14\n");
|
//printf("Taking INT14\n");
|
||||||
}
|
}
|
||||||
@ -1658,6 +1665,7 @@ READ32_MEMBER( sun4_state::timer_r )
|
|||||||
//printf("Read timer limit 0 (%08x) @ %x, mask %08x\n", ret, m_maincpu->pc(), mem_mask);
|
//printf("Read timer limit 0 (%08x) @ %x, mask %08x\n", ret, m_maincpu->pc(), mem_mask);
|
||||||
m_counter[0] &= ~0x80000000;
|
m_counter[0] &= ~0x80000000;
|
||||||
m_counter[1] &= ~0x80000000;
|
m_counter[1] &= ~0x80000000;
|
||||||
|
logerror("tc0\n");
|
||||||
m_maincpu->set_input_line(SPARC_IRQ10, CLEAR_LINE);
|
m_maincpu->set_input_line(SPARC_IRQ10, CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1670,6 +1678,7 @@ READ32_MEMBER( sun4_state::timer_r )
|
|||||||
//printf("Read timer limit 1 (%08x) @ %x, mask %08x\n", ret, m_maincpu->pc(), mem_mask);
|
//printf("Read timer limit 1 (%08x) @ %x, mask %08x\n", ret, m_maincpu->pc(), mem_mask);
|
||||||
m_counter[2] &= ~0x80000000;
|
m_counter[2] &= ~0x80000000;
|
||||||
m_counter[3] &= ~0x80000000;
|
m_counter[3] &= ~0x80000000;
|
||||||
|
logerror("tc1\n");
|
||||||
m_maincpu->set_input_line(SPARC_IRQ14, CLEAR_LINE);
|
m_maincpu->set_input_line(SPARC_IRQ14, CLEAR_LINE);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -1738,6 +1747,7 @@ void sun4_state::dma_check_interrupts()
|
|||||||
if (old_irq != m_dma_irq)
|
if (old_irq != m_dma_irq)
|
||||||
{
|
{
|
||||||
//logerror("m_dma_irq %d because irq_or_err_pending:%d and irq_enabled:%d\n", m_dma_irq ? 1 : 0, irq_or_err_pending, irq_enabled);
|
//logerror("m_dma_irq %d because irq_or_err_pending:%d and irq_enabled:%d\n", m_dma_irq ? 1 : 0, irq_or_err_pending, irq_enabled);
|
||||||
|
logerror("dma\n");
|
||||||
m_maincpu->set_input_line(SPARC_IRQ3, m_dma_irq ? ASSERT_LINE : CLEAR_LINE);
|
m_maincpu->set_input_line(SPARC_IRQ3, m_dma_irq ? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1964,32 +1974,6 @@ READ32_MEMBER( sun4_state::ss1_sl0_id )
|
|||||||
return 0xfe810101;
|
return 0xfe810101;
|
||||||
}
|
}
|
||||||
|
|
||||||
// indicate 4/60 color video card exists
|
|
||||||
READ32_MEMBER( sun4_state::ss1_sl3_id )
|
|
||||||
{
|
|
||||||
return 0xfe010101;
|
|
||||||
}
|
|
||||||
|
|
||||||
// indicate no card exists
|
|
||||||
READ32_MEMBER( sun4_state::ss1_sl1_id )
|
|
||||||
{
|
|
||||||
m_maincpu->set_mae();
|
|
||||||
m_buserr[0] |= 0x20; // timeout
|
|
||||||
m_buserr[0] &= ~0x8000; // read
|
|
||||||
m_buserr[1] = 0xffa00000;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// indicate no card exists
|
|
||||||
READ32_MEMBER( sun4_state::ss1_sl2_id )
|
|
||||||
{
|
|
||||||
m_maincpu->set_mae();
|
|
||||||
m_buserr[0] |= 0x20; // timeout
|
|
||||||
m_buserr[0] &= ~0x8000; // read
|
|
||||||
m_buserr[1] = 0xffc00000;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FLOPPY_FORMATS_MEMBER( sun4_state::floppy_formats )
|
FLOPPY_FORMATS_MEMBER( sun4_state::floppy_formats )
|
||||||
FLOPPY_PC_FORMAT
|
FLOPPY_PC_FORMAT
|
||||||
FLOPPY_FORMATS_END
|
FLOPPY_FORMATS_END
|
||||||
@ -1999,11 +1983,17 @@ static void sun_floppies(device_slot_interface &device)
|
|||||||
device.option_add("35hd", FLOPPY_35_HD);
|
device.option_add("35hd", FLOPPY_35_HD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sun4_cdrom(device_t *device)
|
||||||
|
{
|
||||||
|
downcast<nscsi_cdrom_device &>(*device).set_block_size(512);
|
||||||
|
}
|
||||||
|
|
||||||
static void sun_scsi_devices(device_slot_interface &device)
|
static void sun_scsi_devices(device_slot_interface &device)
|
||||||
{
|
{
|
||||||
device.option_add("cdrom", NSCSI_CDROM);
|
device.option_add("cdrom", NSCSI_CDROM);
|
||||||
device.option_add("harddisk", NSCSI_HARDDISK);
|
device.option_add("harddisk", NSCSI_HARDDISK);
|
||||||
device.option_add_internal("ncr53c90a", NCR53C90A);
|
device.option_add_internal("ncr53c90a", NCR53C90A);
|
||||||
|
device.set_option_machine_config("cdrom", sun4_cdrom);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sun4_state::ncr53c90a(device_t *device)
|
void sun4_state::ncr53c90a(device_t *device)
|
||||||
@ -2023,7 +2013,7 @@ MACHINE_CONFIG_START(sun4_state::sun4)
|
|||||||
|
|
||||||
RAM(config, RAM_TAG).set_default_size("16M").set_default_value(0x00);
|
RAM(config, RAM_TAG).set_default_size("16M").set_default_value(0x00);
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(TIMEKEEPER_TAG, MK48T12, 0)
|
M48T02(config, TIMEKEEPER_TAG, 0);
|
||||||
|
|
||||||
MCFG_N82077AA_ADD(FDC_TAG, n82077aa_device::MODE_PS2)
|
MCFG_N82077AA_ADD(FDC_TAG, n82077aa_device::MODE_PS2)
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", sun_floppies, "35hd", sun4_state::floppy_formats)
|
MCFG_FLOPPY_DRIVE_ADD("fdc:0", sun_floppies, "35hd", sun4_state::floppy_formats)
|
||||||
@ -2083,7 +2073,7 @@ MACHINE_CONFIG_START(sun4_state::sun4c)
|
|||||||
|
|
||||||
RAM(config, RAM_TAG).set_default_size("16M").set_default_value(0x00);
|
RAM(config, RAM_TAG).set_default_size("16M").set_default_value(0x00);
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(TIMEKEEPER_TAG, MK48T12, 0)
|
M48T02(config, TIMEKEEPER_TAG, 0);
|
||||||
|
|
||||||
MCFG_N82077AA_ADD(FDC_TAG, n82077aa_device::MODE_PS2)
|
MCFG_N82077AA_ADD(FDC_TAG, n82077aa_device::MODE_PS2)
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", sun_floppies, "35hd", sun4_state::floppy_formats)
|
MCFG_FLOPPY_DRIVE_ADD("fdc:0", sun_floppies, "35hd", sun4_state::floppy_formats)
|
||||||
|
@ -254,12 +254,11 @@ READ16_MEMBER(tecmosys_state::unk880000_r)
|
|||||||
|
|
||||||
switch( offset )
|
switch( offset )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if ( m_screen->vpos() >= 240) return 0;
|
return (m_screen->vpos() >= 240) ? 0 : 1;
|
||||||
else return 1;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -459,7 +458,7 @@ MACHINE_CONFIG_START(tecmosys_state::tecmosys)
|
|||||||
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tecmosys_state, irq1_line_hold)
|
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tecmosys_state, irq1_line_hold)
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 400); // guess
|
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 400); // guess
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/2 )
|
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/2 )
|
||||||
MCFG_DEVICE_PROGRAM_MAP(sound_map)
|
MCFG_DEVICE_PROGRAM_MAP(sound_map)
|
||||||
@ -469,7 +468,7 @@ MACHINE_CONFIG_START(tecmosys_state::tecmosys)
|
|||||||
|
|
||||||
EEPROM_93C46_16BIT(config, "eeprom", eeprom_serial_streaming::ENABLE);
|
EEPROM_93C46_16BIT(config, "eeprom", eeprom_serial_streaming::ENABLE);
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
||||||
MCFG_SCREEN_REFRESH_RATE(57.4458)
|
MCFG_SCREEN_REFRESH_RATE(57.4458)
|
||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3000))
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3000))
|
||||||
|
@ -211,7 +211,7 @@ MACHINE_CONFIG_START(toobin_state::toobin)
|
|||||||
|
|
||||||
EEPROM_2804(config, "eeprom").lock_after_write(true);
|
EEPROM_2804(config, "eeprom").lock_after_write(true);
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 4, toobin_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 128,64)
|
MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 4, toobin_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 128,64)
|
||||||
@ -219,7 +219,7 @@ MACHINE_CONFIG_START(toobin_state::toobin)
|
|||||||
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", toobin_state::s_mob_config)
|
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", toobin_state::s_mob_config)
|
||||||
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
|
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||||
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 640, 0, 512, 416, 0, 384)
|
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 640, 0, 512, 416, 0, 384)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(toobin_state, screen_update)
|
MCFG_SCREEN_UPDATE_DRIVER(toobin_state, screen_update)
|
||||||
|
@ -302,10 +302,10 @@ MACHINE_CONFIG_START(ultratnk_state::ultratnk)
|
|||||||
latch.q_out_cb<6>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_2>));
|
latch.q_out_cb<6>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_2>));
|
||||||
latch.q_out_cb<7>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_1>));
|
latch.q_out_cb<7>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_1>));
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
|
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update)
|
MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update)
|
||||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ultratnk_state, screen_vblank))
|
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ultratnk_state, screen_vblank))
|
||||||
|
@ -4,20 +4,23 @@
|
|||||||
|
|
||||||
2018-09-15
|
2018-09-15
|
||||||
|
|
||||||
Unknown b&w gambling game.
|
Video 21 blackjack game. Thanks to hap who figured out the inputs and the name of the game.
|
||||||
|
|
||||||
VIDEO-GAMES - LICH/GERMANY 1017a
|
VIDEO-GAMES - LICH/GERMANY 1017a
|
||||||
|
|
||||||
NEC D8080AFC (i8080), unknown xtal, bank of 7 dips. 10x 4-bit proms, type F93453 (=82S137)
|
NEC D8080AFC (i8080), unknown xtal, bank of 7 dips. 10x 4-bit proms, type F93453 (=82S137)
|
||||||
Video Ram = 7 x 2102 (bit 7 omitted). Main Ram = 2x MCM145101 (=M5101L).
|
Video Ram = 7 x 2102 (bit 7 omitted). Main Ram = 2x MCM145101 (=M5101L).
|
||||||
The game has sound (there's a LM380N visible), looks like there's a bunch of chips
|
The game has sound (there's a LM380N visible), looks like there's a bunch of TTL chips
|
||||||
involved, and a 555.
|
involved, and a 555.
|
||||||
|
|
||||||
To Do:
|
To Do:
|
||||||
- Sound
|
- Sound
|
||||||
- Inputs / the correct dip settings
|
|
||||||
- CPU clock
|
- CPU clock
|
||||||
- Name of the machine
|
- unknown status bits? eg. hopper
|
||||||
|
- color overlay as seen on flyer upright cabinet
|
||||||
|
|
||||||
|
When booted, press W to get it going.
|
||||||
|
|
||||||
|
|
||||||
*******************************************************************************************/
|
*******************************************************************************************/
|
||||||
|
|
||||||
@ -27,17 +30,17 @@ To Do:
|
|||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
|
|
||||||
|
|
||||||
class videolich_state : public driver_device
|
class video21_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
videolich_state(const machine_config &mconfig, device_type type, const char *tag)
|
video21_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag)
|
: driver_device(mconfig, type, tag)
|
||||||
, m_maincpu(*this,"maincpu")
|
, m_maincpu(*this,"maincpu")
|
||||||
, m_p_videoram(*this, "videoram")
|
, m_p_videoram(*this, "videoram")
|
||||||
, m_p_chargen(*this, "chargen")
|
, m_p_chargen(*this, "chargen")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void videolich(machine_config &config);
|
void video21(machine_config &config);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -50,7 +53,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
uint32_t videolich_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
uint32_t video21_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
uint8_t y,ra,chr,gfx;
|
uint8_t y,ra,chr,gfx;
|
||||||
uint16_t sy=0,ma=0,x;
|
uint16_t sy=0,ma=0,x;
|
||||||
@ -82,78 +85,84 @@ uint32_t videolich_state::screen_update(screen_device &screen, bitmap_ind16 &bit
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void videolich_state::mem_map(address_map &map) {
|
void video21_state::mem_map(address_map &map) {
|
||||||
map(0x0000,0x0fff).rom().mirror(0x3000);
|
map(0x0000,0x0fff).rom().mirror(0x3000);
|
||||||
map(0xe000,0xe3ff).ram().share("videoram");
|
map(0xe000,0xe3ff).ram().share("videoram");
|
||||||
map(0xff00,0xffff).ram();
|
map(0xff00,0xffff).ram();
|
||||||
}
|
}
|
||||||
|
|
||||||
void videolich_state::io_map(address_map &map) {
|
void video21_state::io_map(address_map &map) {
|
||||||
map(0x02,0x02).nopw(); // lots of unknown writes, might be some kind of dac
|
map(0x02,0x02).nopw(); // lots of unknown writes, might be some kind of dac
|
||||||
map(0x04,0x04); //.w unknown write
|
map(0x04,0x04); //.w unknown write
|
||||||
map(0x08,0x08); //.w unknown write
|
map(0x08,0x08); //.w unknown write
|
||||||
map(0x41,0x41).portr("IN41");
|
map(0x41,0x41).portr("IN41");
|
||||||
map(0x42,0x42).portr("IN42");
|
map(0x42,0x42).portr("IN42");
|
||||||
map(0x44,0x44); //.r in the code, but was never reached
|
map(0x44,0x44).portr("IN44");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( videolich )
|
static INPUT_PORTS_START( video21 )
|
||||||
PORT_START("IN41")
|
PORT_START("IN41") // dips and tilt
|
||||||
PORT_DIPNAME( 0x01, 0x01, "41b0" )
|
PORT_DIPNAME( 0x01, 0x01, "41b0" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x02, 0x02, "41b1" )
|
PORT_DIPNAME( 0x02, 0x02, "41b1" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x04, 0x04, "41b2" )
|
PORT_DIPNAME( 0x04, 0x04, "41b2" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x08, 0x08, "41b3" )
|
PORT_DIPNAME( 0x08, 0x08, "41b3" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x10, 0x10, "41b4" )
|
PORT_DIPNAME( 0x10, 0x10, "41b4" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x20, 0x20, "41b5" )
|
PORT_DIPNAME( 0x20, 0x20, "41b5" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x40, 0x40, "41b6" )
|
PORT_DIPNAME( 0x40, 0x40, "41b6" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x80, 0x80, "41b7" )
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
|
||||||
|
|
||||||
PORT_START("IN42")
|
PORT_START("IN42")
|
||||||
PORT_DIPNAME( 0x01, 0x01, "42b0" )
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
|
||||||
PORT_DIPNAME( 0x02, 0x02, "42b1" )
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Stay")
|
||||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Payout")
|
||||||
PORT_DIPNAME( 0x04, 0x04, "42b2" )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x08, 0x08, "42b3" )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x10, 0x10, "42b4" )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x20, 0x00, "42b5" )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x40, 0x40, "42b6" )
|
PORT_DIPNAME( 0x40, 0x40, "42b6" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x80, 0x80, "42b7" )
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
PORT_START("IN44")
|
||||||
|
PORT_DIPNAME( 0x01, 0x01, "44b0" )
|
||||||
|
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x02, 0x02, "44b1" )
|
||||||
|
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x04, 0x04, "44b2" )
|
||||||
|
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
|
||||||
|
PORT_DIPNAME( 0x20, 0x20, "44b5" )
|
||||||
|
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x40, 0x40, "44b6" )
|
||||||
|
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x80, 0x80, "44b7" )
|
||||||
|
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
static const gfx_layout videolich_charlayout =
|
static const gfx_layout video21_charlayout =
|
||||||
{
|
{
|
||||||
8, 8, // 8 x 8 characters
|
8, 8, // 8 x 8 characters
|
||||||
128, // 128 characters, but only the first 76 look useful
|
128, // 128 characters, but only the first 76 look useful
|
||||||
@ -166,13 +175,13 @@ static const gfx_layout videolich_charlayout =
|
|||||||
8*8 /* every char takes 8 bytes */
|
8*8 /* every char takes 8 bytes */
|
||||||
};
|
};
|
||||||
|
|
||||||
static GFXDECODE_START( gfx_videolich )
|
static GFXDECODE_START( gfx_video21 )
|
||||||
GFXDECODE_ENTRY( "chargen", 0x0000, videolich_charlayout, 0, 1 )
|
GFXDECODE_ENTRY( "chargen", 0x0000, video21_charlayout, 0, 1 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
MACHINE_CONFIG_START( videolich_state::videolich )
|
MACHINE_CONFIG_START( video21_state::video21 )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD("maincpu", I8080, 20.79_MHz_XTAL / 8) // crystal confirmed but divisor unknown
|
MCFG_DEVICE_ADD("maincpu", I8080A, 20.79_MHz_XTAL / 16) // crystal confirmed but divisor unknown
|
||||||
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
MCFG_DEVICE_PROGRAM_MAP(mem_map)
|
||||||
MCFG_DEVICE_IO_MAP(io_map)
|
MCFG_DEVICE_IO_MAP(io_map)
|
||||||
|
|
||||||
@ -180,12 +189,12 @@ MACHINE_CONFIG_START( videolich_state::videolich )
|
|||||||
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::white())
|
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::white())
|
||||||
MCFG_SCREEN_REFRESH_RATE(60)
|
MCFG_SCREEN_REFRESH_RATE(60)
|
||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(250))
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(videolich_state, screen_update)
|
MCFG_SCREEN_UPDATE_DRIVER(video21_state, screen_update)
|
||||||
MCFG_SCREEN_SIZE(32*8, 28*8)
|
MCFG_SCREEN_SIZE(32*8, 28*8)
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
|
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_videolich)
|
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_video21)
|
||||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
@ -193,7 +202,7 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ROM_START( videolich )
|
ROM_START( video21 )
|
||||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||||
ROM_LOAD_NIB_HIGH( "lich_prg.02", 0x0000, 0x0400, CRC(05585e39) SHA1(7eefb5d63b4499a303ecdcad6af5df9fe9c89205) )
|
ROM_LOAD_NIB_HIGH( "lich_prg.02", 0x0000, 0x0400, CRC(05585e39) SHA1(7eefb5d63b4499a303ecdcad6af5df9fe9c89205) )
|
||||||
ROM_LOAD_NIB_LOW ( "lich_prg.03", 0x0000, 0x0400, CRC(b9134e96) SHA1(e7a8ff71f735add608d3c9dcc287ca37414debcb) )
|
ROM_LOAD_NIB_LOW ( "lich_prg.03", 0x0000, 0x0400, CRC(b9134e96) SHA1(e7a8ff71f735add608d3c9dcc287ca37414debcb) )
|
||||||
@ -209,5 +218,5 @@ ROM_START( videolich )
|
|||||||
ROM_LOAD_NIB_LOW ( "lich_gfx.43", 0x0000, 0x0400, CRC(0ecb0aab) SHA1(7f3f1b93a5d38828ae3e97e5f8ef1a6a96dc798b) )
|
ROM_LOAD_NIB_LOW ( "lich_gfx.43", 0x0000, 0x0400, CRC(0ecb0aab) SHA1(7f3f1b93a5d38828ae3e97e5f8ef1a6a96dc798b) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
GAME(19??, videolich, 0, videolich, videolich, videolich_state, empty_init, ROT0, "Video Games GmbH", "unnamed gambling game", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
GAME(1980, video21, 0, video21, video21, video21_state, empty_init, ROT0, "Video Games GmbH", "Video 21", MACHINE_NO_SOUND)
|
||||||
|
|
@ -636,7 +636,7 @@ WRITE_LINE_MEMBER(vpoker_state::ptm_irq)
|
|||||||
MACHINE_CONFIG_START(vpoker_state::vpoker)
|
MACHINE_CONFIG_START(vpoker_state::vpoker)
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD("maincpu",M6809,XTAL(4'000'000))
|
MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000))
|
||||||
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vpoker_state, irq0_line_hold) //irq0 valid too
|
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vpoker_state, irq0_line_hold) //irq0 valid too
|
||||||
|
|
||||||
@ -655,7 +655,7 @@ MACHINE_CONFIG_START(vpoker_state::vpoker)
|
|||||||
MCFG_PALETTE_ADD_3BIT_GBR("palette")
|
MCFG_PALETTE_ADD_3BIT_GBR("palette")
|
||||||
|
|
||||||
/* 6840 PTM */
|
/* 6840 PTM */
|
||||||
ptm6840_device &ptm(PTM6840(config, "6840ptm", XTAL(4'000'000)));
|
ptm6840_device &ptm(PTM6840(config, "6840ptm", XTAL(4'000'000) / 4));
|
||||||
ptm.set_external_clocks(0, 0, 0);
|
ptm.set_external_clocks(0, 0, 0);
|
||||||
ptm.irq_callback().set(FUNC(vpoker_state::ptm_irq));
|
ptm.irq_callback().set(FUNC(vpoker_state::ptm_irq));
|
||||||
|
|
||||||
|
@ -38214,8 +38214,8 @@ victory // (c) 1982
|
|||||||
@source:vidbrain.cpp
|
@source:vidbrain.cpp
|
||||||
vidbrain //
|
vidbrain //
|
||||||
|
|
||||||
@source:videolich.cpp
|
@source:video21.cpp
|
||||||
videolich // Videogames gmbh (unnamed)
|
video21 // Videogames gmbh 1980
|
||||||
|
|
||||||
@source:videopin.cpp
|
@source:videopin.cpp
|
||||||
solarwar // 036154-036169 1979 [6502]
|
solarwar // 036154-036169 1979 [6502]
|
||||||
|
Loading…
Reference in New Issue
Block a user