Merge remote-tracking branch 'origin/master' into netlist_dev

This commit is contained in:
couriersud 2016-05-29 13:53:19 +02:00
commit b185a502cd
38 changed files with 51419 additions and 7734 deletions

1
.drone.sec Normal file
View File

@ -0,0 +1 @@
eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.doN0hM3F1JcAqSRhxCrxPkeVEUj0cLHZ74LchLsP7JFE4-9udW0VQRRVEeQ8rrqtOb7X2am-hI2s9aLp6nq9duMdToFP5bJaUC0yxtAPCZbMgEZVB1BBxl04pgafswVXHUVR_yC4ToZlzuiKvsz1tjB2wFmyxowqqfbJILJVScobwYvIt5Mxp60A9vqBb1Xg77pR9EqYRmUiff_3Vrs4CEm2l39MXVuG8kwy9NOmJ3EStiVCh8iP0JwD-ZLBi3IMGGcGX73RyrNPAyFgwoXDEvSBflURc7ge3336wjfi2e7edeVmHBP-BhrI6Tng1BqyaNplZMtxZZ9vN-NqWYsXMg.4fOuhgSIsHgPVx6P.l9pmIM652sG1JvnBGjj-Aqr9k1U243w4acruslIkWcAzD9rxQOBK18011eQ3QyuFW4T1EjPvQMKflfGJNaPA74B2Is7HmSzG1NWrBkS0hv7uyf_WNwA83kdcoD0lyahtMG_td8AN4L7dlh0rh8BmOaPYHQ.VX42VcsvXuj9zYiZ41rzGg

46
.drone.yml Normal file
View File

@ -0,0 +1,46 @@
# Build configure for https://www.tea-ci.org (fork of Drone CI with Msys2 support)
# 32-bit until release including https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=commitdiff;h=0aa738220bb9dea2ad479e484560767b36701947
build:
image: teaci/msys32
shell: mingw32
pull: true
branches:
-master
environment:
- SUBTARGET=tiny
- MINGW32=/c/msys32/mingw32
- MAME_EXE=mametiny.exe
# - SOURCES=src/mame/drivers/pacman.cpp
commands:
# - pacman -S -q --noprogressbar --noconfirm winpty
- make
- ./$MAME_EXE -validate && echo "Validation successful"
notify:
irc:
prefix: build
nick: $$IRC_USER
channel: mame-dev
server:
host: $$IRC_HOST
port: $$IRC_PORT
password: $$IRC_PASS
tls: true
when:
success: false
failure: true
change: true
# Need to regen secrets file (.drone.sec) from within tea-ci.org to enable
#notify:
# email:
# from: git@mamedev.org
# host: $$EMAIL_SERVER
# username: $$EMAIL_USERNAME
# password: $$EMAIL_PASSWORD
# recipients:
# - $$EMAIL_LISTADDR
# when:
# success: false
# failure: false
# change: true

1
.gitignore vendored
View File

@ -27,6 +27,7 @@
!/tests/
!/doxygen/
!/web/
!/.drone.yml
!/.gitattributes
!/.gitignore
!/.travis.yml

View File

@ -3,6 +3,14 @@
[![Join the chat at https://gitter.im/mamedev/mame](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mamedev/mame?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Build status for tiny build only, containing just core parts of project
| OS/Compiler | Status |
| ------------- |:-------------:|
|Linux GCC / OSX Clang| [![Build Status](https://travis-ci.org/mamedev/mame.svg?branch=master)](https://travis-ci.org/mamedev/mame) |
|Windows MinGW | [![Build Status](https://tea-ci.org/api/badges/mamedev/mame/status.svg)](https://tea-ci.org/mamedev/mame) |
What is MAME?
=============

View File

@ -360,7 +360,7 @@ Titles, serial #s, publishers and release dates taken from:
</part>
</software>
<software name="gamblerj">
<software name="gambler">
<!-- Keys listed in readme are as follows:
キー操作/ リターン:チー F1:リーチ F2:ポン F3:カン F4:和了 F10:九種九牌
F5:指導機能ON/OFF F6:サウンドON/OFF F7:オープンモード F8:オートモード

View File

@ -18111,7 +18111,7 @@ Note: In the AGB-E05-XX and AGB-E06-XX pcbs, the chip name is hidden under the b
</part>
</software>
<software name="hunterxh">
<software name="hxhmintd">
<description>Hunter X Hunter - Minna Tomodachi Daisakusen!! (Jpn)</description>
<year>2003</year>
<publisher>Konami</publisher>
@ -35062,7 +35062,7 @@ The cart also contained a non-empty SRAM save which we currently include in the
</part>
</software>
<software name="tantjssk">
<software name="tjsskns">
<description>Tantei Jinguuji Saburou - Shiroi Kage no Shoujo (Jpn)</description>
<year>2005</year>
<publisher>Marvelous Interactive</publisher>

View File

@ -10695,7 +10695,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="hxhunthk">
<software name="hxhhunke">
<!-- Notes: GBC only -->
<description>Hunter X Hunter - Hunter no Keifu (Jpn)</description>
<year>2000</year>
@ -10714,7 +10714,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="hxhuntkh">
<software name="hxhkindn">
<!-- Notes: GBC only -->
<description>Hunter X Hunter - Kindan no Hihou (Jpn)</description>
<year>2001</year>
@ -10785,7 +10785,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="ideyosuk">
<software name="ideyumjk">
<!-- Notes: GBC only -->
<description>Ide Yousuke no Mahjong Kyoushitsu GB (Jpn)</description>
<year>2000</year>
@ -13437,7 +13437,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="majokko">
<software name="majomari">
<!-- Notes: SGB enhanced -->
<description>Majokko Mari-chan no Kisekae Monogatari (Jpn, Rev. A)</description>
<year>1999</year>
@ -13456,7 +13456,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="majokkoa" cloneof="majokko">
<software name="majomaria" cloneof="majomari">
<!-- Notes: SGB enhanced -->
<description>Majokko Mari-chan no Kisekae Monogatari (Jpn)</description>
<year>1999</year>
@ -19429,7 +19429,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="anpaman5">
<software name="anpan5to">
<!-- Notes: GBC only -->
<description>Soreike! Anpanman - 5-tsu no Tou no Ousama (Jpn)</description>
<year>2000</year>
@ -19448,7 +19448,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="anpamanf">
<software name="anpanfna">
<!-- Notes: SGB enhanced -->
<description>Soreike! Anpanman - Fushigi na Nikoniko Album (Jpn)</description>
<year>1999</year>
@ -20959,7 +20959,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="tokimekc">
<software name="tokimclt">
<!-- Notes: SGB enhanced -->
<description>Tokimeki Memorial Pocket - Culture Hen - Komorebi no Melody (Jpn)</description>
<year>1999</year>
@ -20978,7 +20978,7 @@ List of unconfirmed retail cartridge roms
</part>
</software>
<software name="tokimeks">
<software name="tokimspt">
<!-- Notes: SGB enhanced -->
<description>Tokimeki Memorial Pocket - Sport Hen - Koutei no Photograph (Jpn)</description>
<year>1999</year>

View File

@ -223,7 +223,7 @@ It is recommended to use the firmware 1.6.6 as default BIOS!
</part>
</software>
<software name="prmaker2">
<software name="prinmak2">
<description>Princess Maker 2 (Kor)</description>
<year>2002</year>
<publisher>Gamepark</publisher>

View File

@ -881,7 +881,7 @@ The following floppies came with the machines.
</part>
</software>
<software name="loderun">
<software name="ldrun">
<description>Lode Runner (Jpn)</description>
<year>1984</year>
<publisher>Sony</publisher>

View File

@ -8978,7 +8978,7 @@ The following floppies came with the machines.
</part>
</software>
<software name="prinmakr">
<software name="prinmak">
<description>Princess Maker (Jpn)</description>
<year>1992</year>
<publisher>Micro Cabin</publisher>
@ -9019,7 +9019,7 @@ The following floppies came with the machines.
</part>
</software>
<software name="prinmakra" cloneof="prinmakr">
<software name="prinmaka" cloneof="prinmak">
<description>Princess Maker (Jpn, v2?)</description>
<year>1992</year>
<publisher>Micro Cabin</publisher>
@ -9060,7 +9060,7 @@ The following floppies came with the machines.
</part>
</software>
<software name="prinmakrb" cloneof="prinmakr">
<software name="prinmakb" cloneof="prinmak">
<description>Princess Maker (Jpn, v2?, Alt)</description>
<year>1992</year>
<publisher>Micro Cabin</publisher>

View File

@ -4977,7 +4977,7 @@ patched out (+ a fix for internal checksum)
</part>
</software>
<software name="ideyosuk">
<software name="ideyumjj">
<description>Ide Yousuke no Mahjong Juku (Jpn)</description>
<year>2000</year>
<publisher>Seta Corporation</publisher>
@ -7770,7 +7770,7 @@ patched out (+ a fix for internal checksum)
</part>
</software>
<software name="parlrpro">
<software name="parlpro">
<description>Parlor! Pro 64 - Pachinko Jikki Simulation Game (Jpn)</description>
<year>1999</year>
<publisher>Nihon Telenet</publisher>

View File

@ -158,7 +158,7 @@
</software>
<software name="samsprpg">
<description>Shinsetsu Samurai Spirits - Bushidohretsuden (Jpn)</description>
<description>Shinsetsu Samurai Spirits - Bushidou Retsuden (Jpn)</description>
<year>1997</year>
<publisher>SNK</publisher>
<info name="alt_title" value="真説サムライスピリッツ 武士道烈伝" />
@ -426,7 +426,7 @@
</software>
<!-- Hangs during loading due to erasing vectors -->
<software name="ddragon" supported="no">
<software name="doubledr" supported="no">
<description>Double Dragon (Jpn, USA)</description>
<year>1995</year>
<publisher>SNK</publisher>

View File

@ -34387,7 +34387,7 @@
</part>
</software>
<software name="anpaman">
<software name="anpanman">
<description>Soreike! Anpanman - Minna de Hiking Game! (Jpn)</description>
<year>1992</year>
<publisher>Bandai</publisher>
@ -37444,7 +37444,7 @@
</part>
</software>
<software name="tantjsts">
<software name="tjstnsmn">
<description>Tantei Jinguuji Saburou - Toki no Sugiyuku Mama ni (Jpn)</description>
<year>1990</year>
<publisher>Data East</publisher>
@ -49701,7 +49701,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part>
</software>
<software name="tantjsyr">
<software name="tjsyrsj">
<description>Tantei Jinguuji Saburou - Yokohamakou Renzoku Satsujin Jiken (Jpn)</description>
<year>1988</year>
<publisher>Data East</publisher>
@ -49721,7 +49721,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</software>
<software name="tashimp">
<description>Tashiro Masashi no Princess Ga Ippai (Jpn)</description>
<description>Tashiro Masashi no Princess ga Ippai (Jpn)</description>
<year>1989</year>
<publisher>Epic / Sony Records</publisher>
<info name="serial" value="ESF-P0/55・6R-4"/>

View File

@ -43659,7 +43659,7 @@ ExtractDisk [08]"PCM set " -> "gc-clusterz music disk(vol.1-7)_08.d88"
</part>
</software>
<software name="ningyono">
<software name="ningynam">
<description>Ningyo no Namida</description>
<year>1985</year>
<publisher>&lt;doujin&gt;</publisher>

View File

@ -28086,7 +28086,7 @@ Requires MS-DOS 5.00H plus an unknown procedure (HDD install?)
</part>
</software>
<software name="ningyout">
<software name="ningytsu">
<description>Ningyou Tsukai</description>
<year>1992</year>
<publisher>フォレスト (Forest)</publisher>
@ -28112,7 +28112,7 @@ Requires MS-DOS 5.00H plus an unknown procedure (HDD install?)
</part>
</software>
<software name="ningyou2">
<software name="ningyts2">
<description>Ningyou Tsukai 2</description>
<year>1996</year>
<publisher>フォレスト (Forest)</publisher>
@ -44214,7 +44214,7 @@ Requires MS-DOS 5.00H plus an unknown procedure (HDD install?)
</part>
</software>
<software name="yuugiri">
<software name="yugiri">
<description>Yuugiri - Ningyoushi no Isan</description>
<year>1996</year>
<publisher>デザイアー (Desire)</publisher>
@ -49157,7 +49157,7 @@ Requires MS-DOS 5.00H plus an unknown procedure (HDD install?)
</part>
</software>
<software name="prinmakr" supported="no">
<software name="prinmak" supported="no">
<description>Princess Maker</description>
<year>1991</year>
<publisher>ガイナックス (Gainax)</publisher>
@ -64194,7 +64194,7 @@ doujin?!?
</software>
<!-- this should contain 4 disks. it was accompanied by an HDI image -->
<software name="kouryuu" supported="no">
<software name="koryuki" supported="no">
<description>Kouryuuki (Incomplete)</description>
<year>1993</year>
<publisher>光栄 (Koei)</publisher>

View File

@ -4089,7 +4089,7 @@
</part>
</software>
<software name="prinmakr">
<software name="prinmak">
<description>Princess Maker 1 (SCD)(Jpn)</description>
<year>1995</year>
<publisher>NEC Home Electronics</publisher>

48577
hash/psx.xml

File diff suppressed because it is too large Load Diff

View File

@ -509,12 +509,12 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////
I Love Mickey Mouse: Fushigi no Oshiro Daibouken & I Love Donald Duck: Georgia Ou no | (mickdnld)
Hihou (Japan) (Sega Ages) [GS-9179] |~~~~
Ide Yousuke Meijin no Shin Jissen Mahjong (Japan) [T-1208G] | (ideyousu)
Idol Janshi Suchie-Pai II (Japan) [T-5705G] | (suchie2)
Idol Janshi Suchie-Pai Mecha Gentei-Ban: Hatsubai 5 Isshuunen Toku (Japan) [T-5716G] | (suchieme)
Idol Janshi Suchie-Pai Remix (Japan) [T-5704G] | (suchierm)
Idol Janshi Suchie-Pai Secret Album (Japan) [T-5717G] | (suchiese)
Idol Janshi Suchie-Pai Special (Japan) [T-5701G] | (suchiesp)
Ide Yousuke Meijin no Shin Jissen Mahjong (Japan) [T-1208G] | (ideyusmj)
Idol Janshi Suchie-Pai II (Japan) [T-5705G] | (suchipa2)
Idol Janshi Suchie-Pai Mecha Gentei-Ban: Hatsubai 5 Isshuunen Toku (Japan) [T-5716G] | (suchimg)
Idol Janshi Suchie-Pai Remix (Japan) [T-5704G] | (suchirmx)
Idol Janshi Suchie-Pai Secret Album (Japan) [T-5717G] | (suchisec)
Idol Janshi Suchie-Pai Special (Japan) [T-5701G] | (suchispc)
Idol Mahjong Final Romance 2 (Japan) [T-16702G] | (fromanc2)
Idol Mahjong Final Romance 4 (Japan) [T-3003G] | (fromanc4)
Idol Mahjong Final Romance R (Japan) [T-16703G] | - same as below without bonus disk?
@ -588,7 +588,7 @@
Kidou Senshi Gundam: Ghiren no Yabou Kouryaku Shireisho (Japan) [T-13333G] | (gundgiks)
Kidou Senshi Z Gundam: Kouhen Uchuu o Kakeru (Japan) [T-13320G] | (zgundkou)
Kidou Senshi Z Gundam: Zenpen Zeta no Kodou (Japan) [T-13315G] | (zgundzen)
Kindaichi Shounen no Jikenbo: Hoshimitou Kanashimi no Fukushuuki (Japan) [T-14315G] | (kindaich)
Kindaichi Shounen no Jikenbo: Hoshimitou Kanashimi no Fukushuuki (Japan) [T-14315G] | (kindajik)
King of Boxing, The (Japan) [T-6001G] | (kingbox)
King of Fighters '95, The (Japan) [T-3101G] | (kof95j)
King of Fighters '96, The (Japan) [T-3108G] | (kof96)
@ -647,7 +647,7 @@
Legend of K-1 The Best Collection (Japan) [T-7501G] | ########MISSING######## (is is it just a collection of the other 2 k-1 games?)
Lifescape: Seimei 40 Okunen Haruka na Tabi (Japan) [T-26405G] | (lifescap)
Lifescape 2: Body Bionics (Japan) [T-26411G] | (lifescp2)
Linda³ Perfect Edition (Japan) [T-2112G] | (linda3ka)
Linda³ Perfect Edition (Japan) [T-2112G] | (linda3)
Linkle Liver Story (Japan) [GS-9055] | (linkle)
Lode Runner Extra (Japan) [T-25103G] | (ldrunex)
Lode Runner: The Legend Returns (Japan) [T-25101G] | (ldrunlr)
@ -777,7 +777,7 @@
Nihon Daihyou Team no Kantoku ni Naruu! Sekaihatsu Soccer RPG (Japan) [T-35504G] | (soccrrpg)
Nihon Pro Mahjong Renmei Kounin: Doujou Yaburi (Japan) [T-18714G] | (npmjren)
Nile Gawa no Yoake (Japan) [T-9106G] | (nilegawa)
Ninja Jajamaru-kun: Onigiri Ninpouchou Gold (Japan) [T-5709G] | (ninjaja) Doesn't boot
Ninja Jajamaru-kun: Onigiri Ninpouchou Gold (Japan) [T-5709G] | (ninjajaj) Doesn't boot
Ninku: Tsuyokina Yatsura no Daigekitotsu! (Japan) [GS-9036] | (ninku)
Ninpen Manmaru (Japan) [T-35502G] | (ninpen)
Nissan Collections Skyline (Japan) [GS-7005] | ########MISSING########
@ -844,9 +844,9 @@
Primal Rage (Japan) [T-18614G] | (primalj)
Princess Crown (Japan) [T-14418G] | (prcrown)
Princess Crown (Japan) (Satakore) [T-14425G] | @@
Princess Maker 2 (Japan) [T-5201G] | (pmake2)
Princess Maker 2 (Japan) (Satakore) [T-5203G] | (pmake2sa)
Princess Maker: Yumemiru Yousei (Japan) [T-35101G] | (pmake)
Princess Maker 2 (Japan) [T-5201G] | (prinmak2)
Princess Maker 2 (Japan) (Satakore) [T-5203G] | (prinmak2sa)
Princess Maker: Yumemiru Yousei (Japan) [T-35101G] | (prinmak)
Princess Quest (Japan) [T-24603G] | (prquest)
Princess Quest (Japan) (Tokubetsu Genteiban) [T-24604G] | @@
Prisoner of Ice: Jashin Kourin (Japan) [T-26112G] | (prisoner)
@ -866,8 +866,8 @@
Private Idol Disc Vol. 9: Keiko Nagamatsu (Japan) [T-30816G] | (pidolv9)
Private Idol Disc Vol. 10: Mai Masaki (Japan) [T-30817G] | (pidolv10)
Private Idol Disc Vol. 11: Mayumi Hirose (Japan) [T-30818G] | (pidolv11)
Pro Mahjong Kiwame S (Japan) [T-16801G] | (kiwames)
Pro Mahjong Kiwame S (Japan) (Satakore) [T-16807G] | (kiwamessa)
Pro Mahjong Kiwame S (Japan) [T-16801G] | (mjkiwams)
Pro Mahjong Kiwame S (Japan) (Satakore) [T-16807G] | (mjkiwamssa)
Pro Shinan Mahjong Tsuwamono (Japan) [T-38501G] | ########MISSING########
Pro Yakyuu Greatest Nine '97 (Japan) [GS-9139] | (gnine97)
Pro Yakyuu Greatest Nine '97 Make Miracle (Japan) [GS-9171] | (gnine97m)
@ -966,14 +966,14 @@
Samurai Spirits: Amakusa Kourin (Japan) (Doukonban) [T-3118G] | @@
Samurai Spirits: Zankurou Musouken (Japan) [T-3106G] | (samsho3)
Samurai Spirits: Zankurou Musouken (Japan) (Doukonban) [T-3104G] | ==
Sangokushi Eiketsuden (Japan) [T-7613G] | (sangeike)
Sangokushi Eiketsuden (Japan) [T-7613G] | (sangoeik)
Sangokushi Eiketsuden (Japan) (Premium Pack) [T-7652G] | @@
Sangokushi IV (Japan) [T-7601G] | (sangoku4)
Sangokushi IV (Japan) (Koei the Best) [T-7669G] | @@
Sangokushi IV with Power Up Kit (Japan) [T-7644G] | (sangoku4puk)
Sangokushi Koumeiden (Japan) [T-7629G] | (sangkoum)
Sangokushi Koumeiden (Japan) [T-7629G] | (sangokou)
Sangokushi Koumeiden (Japan) (Premium Pack) [T-7651G] | @@
Sangokushi Returns (Japan) [T-7617G] | (sangret)
Sangokushi Returns (Japan) [T-7617G] | (sangoret)
Sangokushi V (Japan) [T-7623G] | (sangoku5)
Sangokushi V (Japan) (Premium Pack) [T-7648G] | @@
Sangokushi Value Set (Japan) [T-7636G] | ??
@ -1063,7 +1063,7 @@
Shinseiki Evangelion: Digital Card Library (Japan) [GS-9159] | (shinevdc)
Shinseiki Evangelion: Eva to Yukai na Nakama-tachi (Japan) [T-35103G] | (shinevyu)
Shinseiki Evangelion: Koutetsu no Girlfriend (Japan) [GS-9194] | (shinevgf)
Shinsetsu Samurai Spirits: Bushidouretsuden (Japan) [T-3112G] | (samshrpg)
Shinsetsu Samurai Spirits: Bushidouretsuden (Japan) [T-3112G] | (samsprpg)
Shinsetsu Yumemi Yakata: Tobira no Oku ni Darekaga... (Japan) [GS-9005] | (shinsets)
Shippu Mahou Daisakusen (Japan) [T-18506G] | (mahoudai)
Shiroki Majo: Mouhitotsu no Eiyuu Densetsu (Japan) [T-14322G] | (shirokim)
@ -1188,8 +1188,8 @@
Takuramakan: Tonkoudenki (Japan) [T-25102G] | (takurama)
Tama: Adventurous Ball in Giddy Labyrinth (Japan) [T-4801G] | (tama)
Tanjou S: Debut (Japan) [T-20101G] | (tanjous)
Tantei Jinguuji Saburou: Mikan no Rupo (Japan) [T-1307G] | (tanteimr)
Tantei Jinguuji Saburou: Yume no Owarini (Japan) [T-1316G] | (tanteiyo)
Tantei Jinguuji Saburou: Mikan no Rupo (Japan) [T-1307G] | (tjsmikrp)
Tantei Jinguuji Saburou: Yume no Owarini (Japan) [T-1316G] | (tjsyumow)
Techno Motor (Japan) [T-37601G] | (technomo)
Techno Motor (Japan) (Satakore) [T-37602G] | @@
Teitoku no Ketsudan II (Japan) [T-7607G] | (teikets2)
@ -1202,7 +1202,7 @@
Tenchi Muyou! Rensa Hitsuyou (Japan) [T-22204G] | (tenchren)
Tenchi Muyou! Ryououki: Gokuraku CD-ROM for Sega Saturn (Japan) [T-21801G] | (tenchryo)
Tenchi Muyou! Toukou Muyou (Japan) [T-26103G] | (tenchtou)
Tenchi o Kurau II: Sekiheki no Tatakai (Japan) [T-1207G] | (wofj)
Tenchi o Kurau II: Sekiheki no Tatakai (Japan) [T-1207G] | (tenchik2)
Tengai Makyou: Dai-shi no Mokujiroku: The Apocalypse IV (Japan) [T-14301G] | (tengaima)
Tenka Seiha (Japan) [T-15030G] | (tenkasei)
Tennis Arena (Japan) [T-17703G] | (tenarena)
@ -1222,12 +1222,12 @@
Thunder Force V (Japan) [T-1811G] | (tf5)
Thunder Force V (Japan) (Satakore) [T-1814G] | @@
Thunder Force V (Japan) (Special Pack) [T-1812G] | @@
Thunder Storm & Road Blaster (Japan) [T-20701G] | (tndrstm) (roadblst)
Thunder Storm & Road Blaster (Japan) [T-20701G] | (tstrmrbl)
Thunderhawk II (Japan) [T-6006G] | (thawk2j)
Tilk: Aoi Umi Kara Kita Shoujo (Japan) [T-32508G] | (tilk)
Time Bokan Series: Bokan to Ippatsu! Doronboo Kanpekiban (Japan) [T-20607G] | (timeboka)
Time Commando (Japan) [T-8129G] | (timecomm)
Time Gal & Ninja Hayate (Japan) [T-20702G] | (timegal) (nhayate)
Time Gal & Ninja Hayate (Japan) [T-20702G] | (tgalninh)
Titan Wars (Japan) [T-15903G] | (titanwarj)
Toh Shin Den S (Japan) [GS-9078] | (toshimixj)
Toh Shin Den URA: Ultimate Revenge Attack (Japan) [T-10305G] | (toshiuraj)
@ -1239,8 +1239,8 @@
Tokimeki Memorial Selection Fujisaki Shiori (Japan) [T-9517G] | (tokimfuj)
Tokimeki Memorial: Forever with You (Japan) [T-9504G] | (tokimfwy)
Tokimeki Memorial: Forever with You (Japan) (Special Ban) [T-9511G] | ??
Tokimeki Memorial: Taisen Puzzle-dama (Japan) [T-9512G] | (tkmmpzdm)
Tokimeki Memorial: Taisen Tokkae-dama (Japan) [T-9524G] | (tokkae)
Tokimeki Memorial: Taisen Puzzle-dama (Japan) [T-9512G] | (tokimpzd)
Tokimeki Memorial: Taisen Tokkae-dama (Japan) [T-9524G] | (tokimtkd)
Tokusou Kidoutai J-Swat (Japan) [T-20602G] | (jswat)
Tokyo Shadow (Japan) [T-1110G] | (tokyoshd)
Tomb Raiders (Japan) [T-6010G] | (traidj)
@ -4784,8 +4784,9 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Interactive Movie Action - Thunder Storm &amp; Road Blaster (Japan) (Disc 1) (Thunder Storm)... -->
<software name="tndrstm" supported="no">
<description>Thunder Storm (Interactive Movie Action - Thunder Storm &amp; Road Blaster Disc 1) (Jpn)</description>
<!-- Identifying Interactive Movie Action - Thunder Storm &amp; Road Blaster (Japan) (Disc 2) (Road Blaster)... -->
<software name="tstrmrbl" supported="no">
<description>Interactive Movie Action - Thunder Storm &amp; Road Blaster (Jpn)</description>
<year>1995</year>
<publisher>Ecseco Development</publisher>
<info name="serial" value="T-20701G"/>
@ -4793,22 +4794,13 @@ Olympic Soccer (Fra) T-7904H-09
<info name="alt_title" value="サンダーストーム&amp;ロードブラスター"/>
<sharedfeat name="compatibility" value="NTSC-J"/>
<part name="cdrom" interface="sat_cdrom">
<feature name="part_id" value="Thunder Storm"/>
<diskarea name="cdrom">
<disk name="interactive movie action - thunder storm &amp; road blaster (japan) (disc 1) (thunder storm)" sha1="101e38b89cb8ebb0ce4de480994a1bd14521a1c6" />
</diskarea>
</part>
</software>
<!-- Identifying Interactive Movie Action - Thunder Storm &amp; Road Blaster (Japan) (Disc 2) (Road Blaster)... -->
<software name="roadblst" supported="no">
<description>Road Blaster (Interactive Movie Action - Thunder Storm &amp; Road Blaster Disc 2) (Jpn)</description>
<year>1995</year>
<publisher>Ecseco Development</publisher>
<info name="serial" value="T-20701G"/>
<info name="release" value="19951020"/>
<info name="alt_title" value="サンダーストーム&amp;ロードブラスター"/>
<sharedfeat name="compatibility" value="NTSC-J"/>
<part name="cdrom" interface="sat_cdrom">
<part name="cdrom2" interface="sat_cdrom">
<feature name="part_id" value="Road Blaster"/>
<diskarea name="cdrom">
<disk name="interactive movie action - thunder storm &amp; road blaster (japan) (disc 2) (road blaster)" sha1="0584ae6637e9b6a1b44a3777ba95ee6650412570" />
</diskarea>
@ -5228,7 +5220,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Kindaichi Shounen no Jikenbo - Hoshimitou Kanashimi no Fukushuuki (Japan)... -->
<software name="kindaich" supported="no">
<software name="kindajik" supported="no">
<description>Kindaichi Shounen no Jikenbo - Hoshimitou Kanashimi no Fukushuuki (Jpn)</description>
<year>1998</year>
<publisher>Hudson</publisher>
@ -7159,8 +7151,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Sangokushi Eiketsuden (Japan)... -->
<software name="sangeike" supported="no">
<description>Sangokushi Eiketsuden (Jpn)</description>
<software name="sangoeik" supported="no">
<description>Sangokushi - Eiketsuden (Jpn)</description>
<year>1996</year>
<publisher>Koei</publisher>
<info name="serial" value="T-7613G"/>
@ -7175,8 +7167,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Sangokushi Koumeiden (Japan)... -->
<software name="sangkoum" supported="no">
<description>Sangokushi Koumeiden (Jpn)</description>
<software name="sangokou" supported="no">
<description>Sangokushi - Koumeiden (Jpn)</description>
<year>1997</year>
<publisher>Koei</publisher>
<info name="serial" value="T-7629G"/>
@ -7768,8 +7760,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Shinsetsu Samurai Spirits Bushidou Retsuden (Japan)... -->
<software name="samshrpg" supported="no">
<description>Shinsetsu Samurai Spirits Bushidou Retsuden (Jpn)</description>
<software name="samsprpg" supported="no">
<description>Shinsetsu Samurai Spirits - Bushidou Retsuden (Jpn)</description>
<year>1997</year>
<publisher>SNK</publisher>
<info name="serial" value="T-3112G"/>
@ -8492,7 +8484,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Tantei Jinguuji Saburou - Yume no Owari ni (Japan)... -->
<software name="tanteiyoa" cloneof="tanteiyo" supported="no">
<software name="tjsyumowa" cloneof="tjsyumow" supported="no">
<description>Tantei Jinguuji Saburou - Yume no Owari ni (Jpn, Alt)</description>
<year>1998</year>
<publisher>Data East</publisher>
@ -8524,7 +8516,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Tenchi wo Kurau II - Sekiheki no Tatakai (Japan) (2M)... -->
<software name="wofj" supported="no">
<software name="tenchik2" supported="no">
<description>Tenchi wo Kurau II - Sekiheki no Tatakai (Jpn, 2M)</description>
<year>1996</year>
<publisher>Capcom</publisher>
@ -8690,8 +8682,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Tokimeki Memorial Taisen Puzzledama (Japan) (2M)... -->
<software name="tkmmpzdm" supported="no">
<description>Tokimeki Memorial Taisen Puzzledama (Jpn, 2M)</description>
<software name="tokimpzd" supported="no">
<description>Tokimeki Memorial Taisen Puzzle-dama (Jpn, 2M)</description>
<year>1996</year>
<publisher>Konami</publisher>
<info name="serial" value="T-9512G (VS036-J1)"/>
@ -8706,8 +8698,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Tokimeki Memorial Taisen Tokkaedama (Japan)... -->
<software name="tokkae" supported="no">
<description>Tokimeki Memorial Taisen Tokkaedama (Jpn)</description>
<software name="tokimtkd" supported="no">
<description>Tokimeki Memorial Taisen Tokkae-dama (Jpn)</description>
<year>1997</year>
<publisher>Konami</publisher>
<info name="serial" value="T-9524G (VS067-J1)"/>
@ -10111,7 +10103,7 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Dark Seed (JAP) (DW0616)... -->
<software name="darkseed" supported="no">
<description>Dark Seed (Jpn)</description>
<description>Darkseed (Jpn)</description>
<year>1995</year>
<publisher>GAGA Communications</publisher>
<info name="serial" value="T-18501G"/>
@ -10127,7 +10119,7 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Dark Seed II (JAP) (DW0617)... -->
<software name="darksed2" supported="no">
<description>Dark Seed II (Jpn)</description>
<description>Darkseed II (Jpn)</description>
<year>1997</year>
<publisher>B-Factory</publisher>
<info name="serial" value="T-36101G"/>
@ -13065,8 +13057,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Shinsetsu Samurai Spirits Bushidou Retsuden (JAP) (DW0434)... -->
<software name="samshrpga" cloneof="samshrpg" supported="no">
<description>Shinsetsu Samurai Spirits Bushidou Retsuden (Jpn, Alt)</description>
<software name="samsprpga" cloneof="samsprpg" supported="no">
<description>Shinsetsu Samurai Spirits - Bushidou Retsuden (Jpn, Alt)</description>
<year>1997</year>
<publisher>SNK</publisher>
<info name="serial" value="T-3112G"/>
@ -16091,7 +16083,7 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Dark Seed 2 (J) (T-36101)... -->
<software name="darksed2a" cloneof="darksed2" supported="no">
<description>Dark Seed II (Jpn, Alt)</description>
<description>Darkseed II (Jpn, Alt)</description>
<year>1997</year>
<publisher>B-Factory</publisher>
<info name="serial" value="T-36101G"/>
@ -18127,7 +18119,7 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Idol Janshi Suchie-Pai Secret Album Disc 1 (T-5717G)... -->
<!-- Identifying Idol Janshi Suchie-Pai Secret Album Audio Disc (T-5717G)... -->
<software name="suchiese" supported="no">
<software name="suchisec" supported="no">
<description>Idol Janshi Suchie-Pai Secret Album (Jpn)</description>
<year>1999</year>
<publisher>Jaleco</publisher>
@ -20200,8 +20192,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Shinsetsu Samurai Spirits Bushidou Retsuden (T-3112G)... -->
<software name="samshrpgb" cloneof="samshrpg" supported="no">
<description>Shinsetsu Samurai Spirits Bushidou Retsuden (Jpn, Alt 2)</description>
<software name="samsprpgb" cloneof="samsprpg" supported="no">
<description>Shinsetsu Samurai Spirits - Bushidou Retsuden (Jpn, Alt 2)</description>
<year>1997</year>
<publisher>SNK</publisher>
<info name="serial" value="T-3112G"/>
@ -20722,7 +20714,7 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Tantei Jinguuji Saburou - Yume no Owari ni Disc 1 (T-1316G)... -->
<!-- Identifying Tantei Jinguuji Saburou - Yume no Owari ni Audio Disc (T-1316G)... -->
<software name="tanteiyo" supported="no">
<software name="tjsyumow" supported="no">
<description>Tantei Jinguuji Saburou - Yume no Owari ni (Jpn)</description>
<year>1998</year>
<publisher>Data East</publisher>
@ -20743,8 +20735,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Tantei Saburo Jinguji Mikan no Rupo (J) (T-1307G)... -->
<software name="tanteimr" supported="no">
<description>Tantei Jinguuji Saburou - Mikan no Report (Jpn)</description>
<software name="tjsmikrp" supported="no">
<description>Tantei Jinguuji Saburou - Mikan no Rupo (Jpn)</description>
<year>1996</year>
<publisher>Data East</publisher>
<info name="serial" value="T-1307G"/>
@ -21147,8 +21139,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Thunder Storm &amp; Road Blaster Disc 1 (T-20701G)... -->
<software name="tndrstma" cloneof="tndrstm" supported="no">
<description>Thunder Storm (Interactive Movie Action - Thunder Storm &amp; Road Blaster Disc 1) (Jpn, Alt)</description>
<software name="tstrmrbla" cloneof="tstrmrbl" supported="no">
<description>Interactive Movie Action - Thunder Storm &amp; Road Blaster Disc 1 (Jpn, Alt)</description>
<year>1995</year>
<publisher>Ecseco Development</publisher>
<info name="serial" value="T-20701G"/>
@ -21156,22 +21148,13 @@ Olympic Soccer (Fra) T-7904H-09
<info name="alt_title" value="サンダーストーム&amp;ロードブラスター"/>
<sharedfeat name="compatibility" value="NTSC-J"/>
<part name="cdrom" interface="sat_cdrom">
<feature name="part_id" value="Thunder Storm"/>
<diskarea name="cdrom">
<disk name="thunder storm &amp; road blaster disc 1 (t-20701g)" sha1="430a7412af5a65a9d8af6c83801d2b6e7ef13df9" />
</diskarea>
</part>
</software>
<!-- Identifying Thunder Storm &amp; Road Blaster Disc 2 (T-20701G)... -->
<software name="roadblsta" cloneof="roadblst" supported="no">
<description>Road Blaster (Interactive Movie Action - Thunder Storm &amp; Road Blaster Disc 2) (Jpn, Alt)</description>
<year>1995</year>
<publisher>Ecseco Development</publisher>
<info name="serial" value="T-20701G"/>
<info name="release" value="19951020"/>
<info name="alt_title" value="サンダーストーム&amp;ロードブラスター"/>
<sharedfeat name="compatibility" value="NTSC-J"/>
<part name="cdrom" interface="sat_cdrom">
<part name="cdrom2" interface="sat_cdrom">
<feature name="part_id" value="Road Blaster"/>
<diskarea name="cdrom">
<disk name="thunder storm &amp; road blaster disc 2 (t-20701g)" sha1="52fb7ce7464baf8be3933b5bca22ce0d127409d5" />
</diskarea>
@ -21281,8 +21264,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Tokimeki Memorial Taisen Tokkaedama (T-9524G)... -->
<software name="tokkaea" cloneof="tokkae" supported="no">
<description>Tokimeki Memorial Taisen Tokkaedama (Jpn, Alt)</description>
<software name="tokimtkda" cloneof="tokimtkd" supported="no">
<description>Tokimeki Memorial Taisen Tokkae-dama (Jpn, Alt)</description>
<year>1997</year>
<publisher>Konami</publisher>
<info name="serial" value="T-9524G (VS067-J1)"/>
@ -23296,7 +23279,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Ide Yousuke Meijin No Shin Jissen Maajan (T-1208G)... -->
<software name="ideyousu" supported="no">
<software name="ideyusmj" supported="no">
<description>Ide Yousuke Meijin no Shin Jissen Mahjong (Jpn)</description>
<year>1996</year>
<publisher>Capcom</publisher>
@ -23313,7 +23296,7 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Idol Jansi Suchie-Pai II Disc 1 (T-5705G)... -->
<!-- Identifying Idol Jansi Suchie-Pai II Disc 2 (T-5705G)... -->
<software name="suchie2" supported="no">
<software name="suchipa2" supported="no">
<description>Idol Janshi Suchie-Pai II (Jpn)</description>
<year>1996</year>
<publisher>Jaleco</publisher>
@ -23337,7 +23320,7 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Idol Jansi Suchie-Pai Mecha Genteiban - Hatsubai 5 Shuunen (Toku) Package Disc 2 (T-5716G)... -->
<!-- Identifying Idol Jansi Suchie-Pai Mecha Genteiban - Hatsubai 5 Shuunen (Toku) Package Disc 3 (T-5716G)... -->
<!-- Identifying Idol Jansi Suchie-Pai Mecha Genteiban - Hatsubai 5 Shuunen (Toku) Package Audio Disc (T-5716G)... -->
<software name="suchieme" supported="no">
<software name="suchimg" supported="no">
<description>Idol Janshi Suchie-Pai Mecha Genteiban - Hatsubai 5 Shuunen Toku Package (Jpn)</description>
<year>1998</year>
<publisher>Jaleco</publisher>
@ -23368,7 +23351,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Idol Jansi Suchie-Pai Remix (J) (T-5704G)... -->
<software name="suchierm" supported="no">
<software name="suchirmx" supported="no">
<description>Idol Janshi Suchie-Pai Remix (Jpn)</description>
<year>1995</year>
<publisher>Jaleco</publisher>
@ -23384,7 +23367,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Idol Jansi Suchie-Pai Special (T-5701G)... -->
<software name="suchiesp" supported="no">
<software name="suchispc" supported="no">
<description>Idol Janshi Suchie-Pai Special (Jpn)</description>
<year>1995</year>
<publisher>Jaleco</publisher>
@ -23713,7 +23696,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Kindaichi Shounen no Jikenbo (J) (T-14315G)... -->
<software name="kindaicha" cloneof="kindaich" supported="no">
<software name="kindajika" cloneof="kindajik" supported="no">
<description>Kindaichi Shounen no Jikenbo - Hoshimitou Kanashimi no Fukushuuki (Jpn, Alt)</description>
<year>1998</year>
<publisher>Hudson</publisher>
@ -24979,7 +24962,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Princess Maker - Yumemiru Yousei (T-35101G)... -->
<software name="prmake" supported="no">
<software name="prinmak" supported="no">
<description>Princess Maker - Yumemiru Yousei (Jpn)</description>
<year>1998</year>
<publisher>Gainax</publisher>
@ -24995,7 +24978,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Princess Maker 2 (J) (T-5201G)... -->
<software name="prmake2" supported="no">
<software name="prinmak2" supported="no">
<description>Princess Maker 2 (Jpn)</description>
<year>1995</year>
<publisher>MicroCabin</publisher>
@ -25011,7 +24994,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Princess Maker 2 (Satakore) (T-5203G)... -->
<software name="prmake2sa" cloneof="prmake2" supported="no">
<software name="prinmak2sa" cloneof="prinmak2" supported="no">
<description>Princess Maker 2 (Jpn, Satakore)</description>
<year>1997</year>
<publisher>MicroCabin</publisher>
@ -25043,7 +25026,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Pro Maajan Kiwame S (T-16801G)... -->
<software name="kiwames" supported="no">
<software name="mjkiwams" supported="no">
<description>Pro Mahjong Kiwame S (Jpn)</description>
<year>1996</year>
<publisher>Athena</publisher>
@ -25450,8 +25433,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Sangokushi Eiketsuden (J) (T-7613G)... -->
<software name="sangeikea" cloneof="sangeike" supported="no">
<description>Sangokushi Eiketsuden (Jpn, Alt)</description>
<software name="sangoeika" cloneof="sangoeik" supported="no">
<description>Sangokushi - Eiketsuden (Jpn, Alt)</description>
<year>1996</year>
<publisher>Koei</publisher>
<info name="serial" value="T-7613G"/>
@ -25482,8 +25465,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Sangokushi Koumeiden (J) (T-7629G)... -->
<software name="sangkouma" cloneof="sangkoum" supported="no">
<description>Sangokushi Koumeiden (Jpn, Alt)</description>
<software name="sangokoua" cloneof="sangokou" supported="no">
<description>Sangokushi - Koumeiden (Jpn, Alt)</description>
<year>1997</year>
<publisher>Koei</publisher>
<info name="serial" value="T-7629G"/>
@ -25498,7 +25481,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Sangokushi Returns (T-7617G)... -->
<software name="sangret" supported="no">
<software name="sangoret" supported="no">
<description>Sangokushi Returns (Jpn)</description>
<year>1997</year>
<publisher>Koei</publisher>
@ -26423,8 +26406,8 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Tokimeki Memorial Taisen Pazurudama (T-9512G)... -->
<software name="tkmmpzdma" cloneof="tkmmpzdm" supported="no">
<description>Tokimeki Memorial Taisen Puzzledama (Jpn, Alt)</description>
<software name="tokimpzda" cloneof="tokimpzd" supported="no">
<description>Tokimeki Memorial Taisen Puzzle-dama (Jpn, Alt)</description>
<year>1996</year>
<publisher>Konami</publisher>
<info name="serial" value="T-9512G (VS036-J1)"/>
@ -27377,7 +27360,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Pro Maajan Kiwame S (Satakore) T-16807G... -->
<software name="kiwamessa" cloneof="kiwames" supported="no">
<software name="mjkiwamssa" cloneof="mjkiwams" supported="no">
<description>Pro Mahjong Kiwame S (Jpn, Satakore)</description>
<year>1997</year>
<publisher>Athena</publisher>
@ -27656,12 +27639,12 @@ Olympic Soccer (Fra) T-7904H-09
<!-- Identifying Simulation Zoo (J) (T-18611G)... -->
<software name="simzoo" supported="no">
<description>Simulation Zoo (Jpn)</description>
<description>Simulation Zoo - Sekaiichi no Doubutsuen o Tsukurou (Jpn)</description>
<year>1997</year>
<publisher>Soft Bank</publisher>
<info name="serial" value="T-18611G"/>
<info name="release" value="19970207"/>
<info name="alt_title" value="シミュレーションズー"/>
<info name="alt_title" value="シミュレーションズー 世界一の動物園をつくろう"/>
<sharedfeat name="compatibility" value="NTSC-J"/>
<part name="cdrom" interface="sat_cdrom">
<diskarea name="cdrom">
@ -29081,7 +29064,7 @@ Olympic Soccer (Fra) T-7904H-09
</software>
<!-- Identifying Ninja Jajamaru-kun Onigiri Ninpouchou Gold (Japan) [T-5709G]... -->
<software name="ninjaja" supported="no">
<software name="ninjajaj" supported="no">
<description>Ninja Jajamaru-kun - Onigiri Ninpouchou Gold (Jpn)</description>
<year>1997</year>
<publisher>Jaleco</publisher>

View File

@ -16402,7 +16402,7 @@ more investigation needed...
</part>
</software>
<software name="kouryuuk" cloneof="risephnx">
<software name="koryuki" cloneof="risephnx">
<description>Kouryuuki (Jpn)</description>
<year>1994</year>
<publisher>Koei</publisher>
@ -51700,7 +51700,7 @@ to ensure nothing has been touched in the Retro Quest cart production in 2013/20
</part>
</software>
<software name="princess">
<software name="prinmak">
<description>Princess Maker - Legend of Another World (Jpn)</description>
<year>1995</year>
<publisher>Takara</publisher>

View File

@ -7650,7 +7650,7 @@ maybe the remaining disks are the supposedly undumped addons: Daikairei Powerup
</part>
</software>
<software name="kouryuuk">
<software name="koryuki">
<description>Kouryuuki</description>
<year>1993</year>
<publisher>光栄 (Koei)</publisher>

View File

@ -221,6 +221,9 @@ if (CPUS["ADSP21062"]~=null) then
MAME_DIR .. "src/devices/cpu/sharc/sharcmem.hxx",
MAME_DIR .. "src/devices/cpu/sharc/sharcops.h",
MAME_DIR .. "src/devices/cpu/sharc/sharcops.hxx",
MAME_DIR .. "src/devices/cpu/sharc/sharcdrc.cpp",
MAME_DIR .. "src/devices/cpu/sharc/sharcfe.cpp",
MAME_DIR .. "src/devices/cpu/sharc/sharcfe.h",
}
end

View File

@ -115,7 +115,7 @@ end
targetextension ".bc"
if os.getenv("EMSCRIPTEN") then
local emccopts = ""
.. " -O3"
.. " -O" .. _OPTIONS["OPTIMIZE"]
.. " -s USE_SDL=2"
.. " -s USE_SDL_TTF=2"
.. " --memory-init-file 0"
@ -132,7 +132,9 @@ end
.. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "artwork/slot-mask.png@artwork/slot-mask.png"
if _OPTIONS["SYMBOLS"]~=nil and _OPTIONS["SYMBOLS"]~="0" then
emccopts = emccopts .. " -g" .. _OPTIONS["SYMLEVEL"]
emccopts = emccopts
.. " -g" .. _OPTIONS["SYMLEVEL"]
.. " -s DEMANGLE_SUPPORT=1"
end
if _OPTIONS["ARCHOPTS"] then

View File

@ -171,6 +171,7 @@ opcode_desc *drc_frontend::describe_one(offs_t curpc, const opcode_desc *prevdes
desc->delayslots = 0;
desc->skipslots = 0;
desc->flags = 0;
desc->userflags = 0;
desc->cycles = 0;
memset(desc->regin, 0x00, sizeof(desc->regin));
memset(desc->regout, 0x00, sizeof(desc->regout));

View File

@ -113,6 +113,7 @@ struct opcode_desc
UINT8 delayslots; // number of delay slots (for branches)
UINT8 skipslots; // number of skip slots (for branches)
UINT32 flags; // OPFLAG_* opcode flags
UINT32 userflags; // core specific flags
UINT32 cycles; // number of cycles needed to execute
// register usage information

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,8 @@
#ifndef __SHARC_H__
#define __SHARC_H__
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
#define SHARC_INPUT_FLAG0 3
#define SHARC_INPUT_FLAG1 4
@ -21,7 +23,7 @@ enum SHARC_BOOT_MODE
};
struct SHARC_DAG
struct alignas(16) SHARC_DAG
{
UINT32 i[8];
UINT32 m[8];
@ -71,12 +73,73 @@ struct SHARC_DMA_OP
};
// STKY flags
#define AUS 0x1 /* ALU floating-point underflow */
#define AVS 0x2 /* ALU floating-point overflow */
#define AOS 0x4 /* ALU fixed-point overflow */
#define AIS 0x20 /* ALU floating-point invalid operation */
// MODE1 flags
#define MODE1_BR8 0x1 /* Bit-reverse for I8 */
#define MODE1_BR0 0x2 /* Bit-reverse for I0 */
#define MODE1_SRCU 0x4 /* Alternate register select for computational units */
#define MODE1_SRD1H 0x8 /* DAG alternate register select (7-4) */
#define MODE1_SRD1L 0x10 /* DAG alternate register select (3-0) */
#define MODE1_SRD2H 0x20 /* DAG alternate register select (15-12) */
#define MODE1_SRD2L 0x40 /* DAG alternate register select (11-8) */
#define MODE1_SRRFH 0x80 /* Register file alternate select for R(15-8) */
#define MODE1_SRRFL 0x400 /* Register file alternate select for R(7-0) */
#define MODE1_NESTM 0x800 /* Interrupt nesting enable */
#define MODE1_IRPTEN 0x1000 /* Global interrupt enable */
#define MODE1_ALUSAT 0x2000 /* Enable ALU fixed-point saturation */
#define MODE1_SSE 0x4000 /* Enable short word sign extension */
#define MODE1_TRUNCATE 0x8000 /* (1) Floating-point truncation / (0) round to nearest */
#define MODE1_RND32 0x10000 /* (1) 32-bit floating-point rounding / (0) 40-bit rounding */
#define MODE1_CSEL 0x60000 /* CSelect */
// MODE2 flags
#define MODE2_IRQ0E 0x1 /* IRQ0 (1) Edge sens. / (0) Level sens. */
#define MODE2_IRQ1E 0x2 /* IRQ1 (1) Edge sens. / (0) Level sens. */
#define MODE2_IRQ2E 0x4 /* IRQ2 (1) Edge sens. / (0) Level sens. */
#define MODE2_CADIS 0x10 /* Cache disable */
#define MODE2_TIMEN 0x20 /* Timer enable */
#define MODE2_BUSLK 0x40 /* External bus lock */
#define MODE2_FLG0O 0x8000 /* FLAG0 (1) Output / (0) Input */
#define MODE2_FLG1O 0x10000 /* FLAG1 (1) Output / (0) Input */
#define MODE2_FLG2O 0x20000 /* FLAG2 (1) Output / (0) Input */
#define MODE2_FLG3O 0x40000 /* FLAG3 (1) Output / (0) Input */
#define MODE2_CAFRZ 0x80000 /* Cache freeze */
#define SIGN_EXTEND6(x) (((x) & 0x20) ? (0xffffffc0 | (x)) : (x))
#define SIGN_EXTEND24(x) (((x) & 0x800000) ? (0xff000000 | (x)) : (x))
#define MAKE_EXTRACT_MASK(start_bit, length) ((0xffffffff << start_bit) & (((UINT32)0xffffffff) >> (32 - (start_bit + length))))
#define OP_USERFLAG_COUNTER_LOOP 0x00000001
#define OP_USERFLAG_COND_LOOP 0x00000002
#define OP_USERFLAG_COND_FIELD 0x0000003c
#define OP_USERFLAG_COND_FIELD_SHIFT 2
#define OP_USERFLAG_ASTAT_DELAY_COPY_AZ 0x00001000
#define OP_USERFLAG_ASTAT_DELAY_COPY_AN 0x00002000
#define OP_USERFLAG_ASTAT_DELAY_COPY_AC 0x00004000
#define OP_USERFLAG_ASTAT_DELAY_COPY_AV 0x00008000
#define OP_USERFLAG_ASTAT_DELAY_COPY_MV 0x00010000
#define OP_USERFLAG_ASTAT_DELAY_COPY_MN 0x00020000
#define OP_USERFLAG_ASTAT_DELAY_COPY_SV 0x00040000
#define OP_USERFLAG_ASTAT_DELAY_COPY_SZ 0x00080000
#define OP_USERFLAG_ASTAT_DELAY_COPY_BTF 0x00100000
#define OP_USERFLAG_ASTAT_DELAY_COPY 0x001ff000
#define MCFG_SHARC_BOOT_MODE(boot_mode) \
adsp21062_device::set_boot_mode(*device, boot_mode);
class sharc_frontend;
class adsp21062_device : public cpu_device
{
friend class sharc_frontend;
public:
// construction/destruction
adsp21062_device(const machine_config &mconfig, const char *_tag, device_t *_owner, UINT32 _clock);
@ -91,6 +154,92 @@ public:
TIMER_CALLBACK_MEMBER(sharc_iop_delayed_write_callback);
TIMER_CALLBACK_MEMBER(sharc_dma_callback);
void sharc_cfunc_unimplemented();
void sharc_cfunc_read_iop();
void sharc_cfunc_write_iop();
void sharc_cfunc_pcstack_overflow();
void sharc_cfunc_pcstack_underflow();
void sharc_cfunc_loopstack_overflow();
void sharc_cfunc_loopstack_underflow();
void sharc_cfunc_statusstack_overflow();
void sharc_cfunc_statusstack_underflow();
void sharc_cfunc_unimplemented_compute();
void sharc_cfunc_unimplemented_shiftimm();
void sharc_cfunc_write_snoop();
enum ASTAT_FLAGS
{
// ASTAT flags
AZ = 0x1, /* ALU result zero */
AV = 0x2, /* ALU overflow */
AN = 0x4, /* ALU result negative */
AC = 0x8, /* ALU fixed-point carry */
AS = 0x10, /* ALU X input sign */
AI = 0x20, /* ALU floating-point invalid operation */
MN = 0x40, /* Multiplier result negative */
MV = 0x80, /* Multiplier overflow */
MU = 0x100, /* Multiplier underflow */
MI = 0x200, /* Multiplier floating-point invalid operation */
AF = 0x400,
SV = 0x800, /* Shifter overflow */
SZ = 0x1000, /* Shifter result zero */
SS = 0x2000, /* Shifter input sign */
BTF = 0x40000, /* Bit Test Flag */
FLG0 = 0x80000, /* FLAG0 */
FLG1 = 0x100000, /* FLAG1 */
FLG2 = 0x200000, /* FLAG2 */
FLG3 = 0x400000 /* FLAG3 */
};
enum ASTAT_SHIFT
{
AZ_SHIFT = 0,
AV_SHIFT = 1,
AN_SHIFT = 2,
AC_SHIFT = 3,
AS_SHIFT = 4,
AI_SHIFT = 5,
MN_SHIFT = 6,
MV_SHIFT = 7,
MU_SHIFT = 8,
MI_SHIFT = 9,
AF_SHIFT = 10,
SV_SHIFT = 11,
SZ_SHIFT = 12,
SS_SHIFT = 13,
BTF_SHIFT = 18,
FLG0_SHIFT = 19,
FLG1_SHIFT = 20,
FLG2_SHIFT = 21,
FLG3_SHIFT = 22
};
enum MODE1_DELAY_MODE
{
MODE1_WRITE_IMM,
MODE1_WRITE_REG,
MODE1_SET,
MODE1_CLEAR,
MODE1_TOGGLE,
};
enum MEM_ACCESSOR_TYPE
{
MEM_ACCESSOR_PM_READ48,
MEM_ACCESSOR_PM_WRITE48,
MEM_ACCESSOR_PM_READ32,
MEM_ACCESSOR_PM_WRITE32,
MEM_ACCESSOR_DM_READ32,
MEM_ACCESSOR_DM_WRITE32
};
enum
{
EXCEPTION_INTERRUPT = 0,
EXCEPTION_COUNT
};
protected:
// device-level overrides
virtual void device_start() override;
@ -109,10 +258,12 @@ protected:
virtual bool memory_readop(offs_t offset, int size, UINT64 &value) override;
// device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const override { return 1; }
virtual UINT32 disasm_max_opcode_bytes() const override { return 40; }
virtual UINT32 disasm_min_opcode_bytes() const override { return 6; }
virtual UINT32 disasm_max_opcode_bytes() const override { return 6; }
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
direct_read_data *m_direct;
private:
address_space_config m_program_config;
address_space_config m_data_config;
@ -126,94 +277,178 @@ private:
};
static const SHARC_OP s_sharc_opcode_table[];
UINT32 m_pc;
SHARC_REG m_r[16];
SHARC_REG m_reg_alt[16];
UINT64 m_mrf;
UINT64 m_mrb;
UINT32 m_pcstack[32];
UINT32 m_lcstack[6];
UINT32 m_lastack[6];
UINT32 m_lstkp;
UINT32 m_faddr;
UINT32 m_daddr;
UINT32 m_pcstk;
UINT32 m_pcstkp;
SHARC_LADDR m_laddr;
UINT32 m_curlcntr;
UINT32 m_lcntr;
UINT8 m_extdma_shift;
/* Data Address Generator (DAG) */
SHARC_DAG m_dag1; // (DM bus)
SHARC_DAG m_dag2; // (PM bus)
SHARC_DAG m_dag1_alt;
SHARC_DAG m_dag2_alt;
SHARC_DMA_REGS m_dma[12];
/* System registers */
UINT32 m_mode1;
UINT32 m_mode2;
UINT32 m_astat;
UINT32 m_stky;
UINT32 m_irptl;
UINT32 m_imask;
UINT32 m_imaskp;
UINT32 m_ustat1;
UINT32 m_ustat2;
UINT32 m_flag[4];
UINT32 m_syscon;
UINT32 m_sysstat;
struct
struct ASTAT_DRC
{
UINT32 mode1;
UINT32 astat;
} m_status_stack[5];
INT32 m_status_stkp;
union
{
struct
{
UINT32 az;
UINT32 av;
UINT32 an;
UINT32 ac;
UINT32 as;
UINT32 ai;
UINT32 mn;
UINT32 mv;
UINT32 mu;
UINT32 mi;
UINT32 sv;
UINT32 sz;
UINT32 ss;
UINT32 btf;
UINT32 af;
UINT32 cacc;
};
UINT64 flags64[8];
};
};
UINT64 m_px;
struct alignas(16) sharc_internal_state
{
SHARC_REG r[16];
SHARC_REG reg_alt[16];
UINT32 pc;
UINT64 mrf;
UINT64 mrb;
UINT32 pcstack[32];
UINT32 lcstack[6];
UINT32 lastack[6];
UINT32 lstkp;
UINT32 faddr;
UINT32 daddr;
UINT32 pcstk;
UINT32 pcstkp;
SHARC_LADDR laddr;
UINT32 curlcntr;
UINT32 lcntr;
UINT8 extdma_shift;
/* Data Address Generator (DAG) */
SHARC_DAG dag1; // (DM bus)
SHARC_DAG dag2; // (PM bus)
SHARC_DAG dag1_alt;
SHARC_DAG dag2_alt;
SHARC_DMA_REGS dma[12];
/* System registers */
UINT32 mode1;
UINT32 mode2;
UINT32 astat;
UINT32 stky;
UINT32 irptl;
UINT32 imask;
UINT32 imaskp;
UINT32 ustat1;
UINT32 ustat2;
UINT32 flag[4];
UINT32 syscon;
UINT32 sysstat;
struct
{
UINT32 mode1;
UINT32 astat;
} status_stack[5];
INT32 status_stkp;
UINT64 px;
int icount;
UINT64 opcode;
UINT32 nfaddr;
INT32 idle;
INT32 irq_pending;
INT32 active_irq_num;
SHARC_DMA_OP dma_op[12];
UINT32 dma_status;
INT32 interrupt_active;
UINT32 iop_delayed_reg;
UINT32 iop_delayed_data;
emu_timer *delayed_iop_timer;
UINT32 delay_slot1, delay_slot2;
INT32 systemreg_latency_cycles;
INT32 systemreg_latency_reg;
UINT32 systemreg_latency_data;
UINT32 systemreg_previous_data;
UINT32 astat_old;
UINT32 astat_old_old;
UINT32 astat_old_old_old;
UINT32 arg0;
UINT32 arg1;
UINT32 arg2;
UINT32 arg3;
UINT64 arg64;
UINT32 mode1_delay_data;
ASTAT_DRC astat_drc;
ASTAT_DRC astat_drc_copy;
ASTAT_DRC astat_delay_copy;
UINT32 dreg_temp;
UINT32 jmpdest;
float fp0;
float fp1;
UINT32 force_recompile;
};
sharc_internal_state* m_core;
SHARC_BOOT_MODE m_boot_mode;
// UML stuff
drc_cache m_cache;
std::unique_ptr<drcuml_state> m_drcuml;
std::unique_ptr<sharc_frontend> m_drcfe;
uml::parameter m_regmap[16];
uml::code_handle *m_entry; /* entry point */
uml::code_handle *m_nocode; /* nocode exception handler */
uml::code_handle *m_out_of_cycles; /* out of cycles exception handler */
uml::code_handle *m_pm_read48;
uml::code_handle *m_pm_write48;
uml::code_handle *m_pm_read32;
uml::code_handle *m_pm_write32;
uml::code_handle *m_dm_read32;
uml::code_handle *m_dm_write32;
uml::code_handle *m_push_pc;
uml::code_handle *m_pop_pc;
uml::code_handle *m_push_loop;
uml::code_handle *m_pop_loop;
uml::code_handle *m_push_status;
uml::code_handle *m_pop_status;
uml::code_handle *m_exception[EXCEPTION_COUNT]; // exception handlers
uml::code_handle *m_swap_dag1_0_3;
uml::code_handle *m_swap_dag1_4_7;
uml::code_handle *m_swap_dag2_0_3;
uml::code_handle *m_swap_dag2_4_7;
uml::code_handle *m_swap_r0_7;
uml::code_handle *m_swap_r8_15;
bool m_cache_dirty;
UINT16 *m_internal_ram_block0, *m_internal_ram_block1;
address_space *m_program;
address_space *m_data;
opcode_func m_sharc_op[512];
int m_icount;
UINT64 m_opcode;
UINT32 m_nfaddr;
INT32 m_idle;
INT32 m_irq_active;
INT32 m_active_irq_num;
SHARC_BOOT_MODE m_boot_mode;
SHARC_DMA_OP m_dma_op[12];
UINT32 m_dma_status;
INT32 m_interrupt_active;
UINT32 m_iop_delayed_reg;
UINT32 m_iop_delayed_data;
emu_timer *m_delayed_iop_timer;
UINT32 m_delay_slot1, m_delay_slot2;
INT32 m_systemreg_latency_cycles;
INT32 m_systemreg_latency_reg;
UINT32 m_systemreg_latency_data;
UINT32 m_systemreg_previous_data;
UINT32 m_astat_old;
UINT32 m_astat_old_old;
UINT32 m_astat_old_old_old;
UINT16 m_internal_ram[2 * 0x10000]; // 2x 128KB
@ -349,6 +584,59 @@ private:
inline void compute_fmul_dual_fadd_fsub(int fm, int fxm, int fym, int fa, int fs, int fxa, int fya);
void build_opcode_table();
/* internal compiler state */
struct compiler_state
{
UINT32 cycles; /* accumulated cycles */
UINT8 checkints; /* need to check interrupts before next instruction */
uml::code_label labelnum; /* index for local labels */
struct
{
int counter;
int mode;
UINT32 data;
} mode1_delay;
};
void execute_run_drc();
void flush_cache();
void compile_block(offs_t pc);
void alloc_handle(drcuml_state *drcuml, uml::code_handle **handleptr, const char *name);
void static_generate_entry_point();
void static_generate_nocode_handler();
void static_generate_out_of_cycles();
void static_generate_memory_accessor(MEM_ACCESSOR_TYPE type, const char *name, uml::code_handle *&handleptr);
void static_generate_exception(UINT8 exception, const char *name);
void static_generate_push_pc();
void static_generate_pop_pc();
void static_generate_push_loop();
void static_generate_pop_loop();
void static_generate_push_status();
void static_generate_pop_status();
void static_generate_mode1_ops();
void load_fast_iregs(drcuml_block *block);
void save_fast_iregs(drcuml_block *block);
void generate_sequence_instruction(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
void generate_update_cycles(drcuml_block *block, compiler_state *compiler, uml::parameter param, int allow_exception);
int generate_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
void generate_unimplemented_compute(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
void generate_compute(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
void generate_if_condition(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, int condition, int skip_label);
void generate_do_condition(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, int condition, int skip_label, ASTAT_DRC &astat);
void generate_shift_imm(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, int data, int shiftop, int rn, int rx);
void generate_call(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, bool delayslot);
void generate_jump(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, bool delayslot, bool loopabort, bool clearint);
void generate_write_mode1_imm(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, UINT32 data);
void generate_set_mode1_imm(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, UINT32 data);
void generate_clear_mode1_imm(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, UINT32 data);
void generate_toggle_mode1_imm(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, UINT32 data);
void generate_read_ureg(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, int ureg, bool has_compute);
void generate_write_ureg(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, int ureg, bool imm, UINT32 data);
void generate_update_circular_buffer(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, int g, int i);
void generate_astat_copy(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
bool if_condition_always_true(int condition);
UINT32 do_condition_astat_bits(int condition);
};

View File

@ -21,80 +21,80 @@ void adsp21062_device::schedule_chained_dma_op(int channel, UINT32 dma_chain_ptr
UINT32 ext_modifier = dm_read32(op_ptr - 6);
UINT32 ext_count = dm_read32(op_ptr - 7);
if (m_dma_op[channel].active)
if (m_core->dma_op[channel].active)
{
fatalerror("schedule_chained_dma_op: DMA operation already scheduled at %08X!\n", m_pc);
fatalerror("schedule_chained_dma_op: DMA operation already scheduled at %08X!\n", m_core->pc);
}
if (chained_direction) // Transmit to external
{
m_dma_op[channel].dst = ext_index;
m_dma_op[channel].dst_modifier = ext_modifier;
m_dma_op[channel].dst_count = ext_count;
m_dma_op[channel].src = int_index;
m_dma_op[channel].src_modifier = int_modifier;
m_dma_op[channel].src_count = int_count;
m_core->dma_op[channel].dst = ext_index;
m_core->dma_op[channel].dst_modifier = ext_modifier;
m_core->dma_op[channel].dst_count = ext_count;
m_core->dma_op[channel].src = int_index;
m_core->dma_op[channel].src_modifier = int_modifier;
m_core->dma_op[channel].src_count = int_count;
}
else // Receive from external
{
m_dma_op[channel].src = ext_index;
m_dma_op[channel].src_modifier = ext_modifier;
m_dma_op[channel].src_count = ext_count;
m_dma_op[channel].dst = int_index;
m_dma_op[channel].dst_modifier = int_modifier;
m_dma_op[channel].dst_count = int_count;
m_core->dma_op[channel].src = ext_index;
m_core->dma_op[channel].src_modifier = ext_modifier;
m_core->dma_op[channel].src_count = ext_count;
m_core->dma_op[channel].dst = int_index;
m_core->dma_op[channel].dst_modifier = int_modifier;
m_core->dma_op[channel].dst_count = int_count;
}
m_dma_op[channel].pmode = 0;
m_dma_op[channel].chain_ptr = chain_ptr;
m_dma_op[channel].chained_direction = chained_direction;
m_core->dma_op[channel].pmode = 0;
m_core->dma_op[channel].chain_ptr = chain_ptr;
m_core->dma_op[channel].chained_direction = chained_direction;
m_dma_op[channel].active = true;
m_core->dma_op[channel].active = true;
int cycles = m_dma_op[channel].src_count / 4;
m_dma_op[channel].timer->adjust(cycles_to_attotime(cycles), channel);
int cycles = m_core->dma_op[channel].src_count / 4;
m_core->dma_op[channel].timer->adjust(cycles_to_attotime(cycles), channel);
// enable busy flag
m_dma_status |= (1 << channel);
m_core->dma_status |= (1 << channel);
}
void adsp21062_device::schedule_dma_op(int channel, UINT32 src, UINT32 dst, int src_modifier, int dst_modifier, int src_count, int dst_count, int pmode)
{
if (m_dma_op[channel].active)
if (m_core->dma_op[channel].active)
{
fatalerror("schedule_dma_op: DMA operation already scheduled at %08X!\n", m_pc);
fatalerror("schedule_dma_op: DMA operation already scheduled at %08X!\n", m_core->pc);
}
m_dma_op[channel].src = src;
m_dma_op[channel].dst = dst;
m_dma_op[channel].src_modifier = src_modifier;
m_dma_op[channel].dst_modifier = dst_modifier;
m_dma_op[channel].src_count = src_count;
m_dma_op[channel].dst_count = dst_count;
m_dma_op[channel].pmode = pmode;
m_dma_op[channel].chain_ptr = 0;
m_core->dma_op[channel].src = src;
m_core->dma_op[channel].dst = dst;
m_core->dma_op[channel].src_modifier = src_modifier;
m_core->dma_op[channel].dst_modifier = dst_modifier;
m_core->dma_op[channel].src_count = src_count;
m_core->dma_op[channel].dst_count = dst_count;
m_core->dma_op[channel].pmode = pmode;
m_core->dma_op[channel].chain_ptr = 0;
m_dma_op[channel].active = true;
m_core->dma_op[channel].active = true;
int cycles = src_count / 4;
m_dma_op[channel].timer->adjust(cycles_to_attotime(cycles), channel);
m_core->dma_op[channel].timer->adjust(cycles_to_attotime(cycles), channel);
// enable busy flag
m_dma_status |= (1 << channel);
m_core->dma_status |= (1 << channel);
}
void adsp21062_device::dma_op(int channel)
{
int i;
UINT32 src = m_dma_op[channel].src;
UINT32 dst = m_dma_op[channel].dst;
int src_modifier = m_dma_op[channel].src_modifier;
int dst_modifier = m_dma_op[channel].dst_modifier;
int src_count = m_dma_op[channel].src_count;
//int dst_count = m_dma_op[channel].dst_count;
int pmode = m_dma_op[channel].pmode;
UINT32 src = m_core->dma_op[channel].src;
UINT32 dst = m_core->dma_op[channel].dst;
int src_modifier = m_core->dma_op[channel].src_modifier;
int dst_modifier = m_core->dma_op[channel].dst_modifier;
int src_count = m_core->dma_op[channel].src_count;
//int dst_count = m_core->dma_op[channel].dst_count;
int pmode = m_core->dma_op[channel].pmode;
//printf("dma_op: %08X, %08X, %08X, %08X, %08X, %08X, %d\n", src, dst, src_modifier, dst_modifier, src_count, dst_count, pmode);
//printf("dma_op: %08X, %08X, %08X, %08X, %08X, %d\n", src, dst, src_modifier, dst_modifier, src_count, pmode);
switch (pmode)
{
@ -148,19 +148,19 @@ void adsp21062_device::dma_op(int channel)
if (channel == 6)
{
m_irptl |= (1 << (channel+10));
m_core->irptl |= (1 << (channel+10));
/* DMA interrupt */
if (m_imask & (1 << (channel+10)))
if (m_core->imask & (1 << (channel+10)))
{
m_irq_active |= 1 << (channel+10);
m_core->irq_pending |= 1 << (channel+10);
}
}
// clear busy flag
m_dma_status &= ~(1 << channel);
m_core->dma_status &= ~(1 << channel);
m_dma_op[channel].active = false;
m_core->dma_op[channel].active = false;
}
void adsp21062_device::sharc_dma_exec(int channel)
@ -170,16 +170,16 @@ void adsp21062_device::sharc_dma_exec(int channel)
UINT32 src_modifier, dst_modifier;
int chen, tran, dtype, pmode, /*mswf, master,*/ ishake, intio/*, ext, flsh*/;
chen = (m_dma[channel].control >> 1) & 0x1;
tran = (m_dma[channel].control >> 2) & 0x1;
dtype = (m_dma[channel].control >> 5) & 0x1;
pmode = (m_dma[channel].control >> 6) & 0x3;
//mswf = (m_dma[channel].control >> 8) & 0x1;
//master = (m_dma[channel].control >> 9) & 0x1;
ishake = (m_dma[channel].control >> 10) & 0x1;
intio = (m_dma[channel].control >> 11) & 0x1;
//ext = (m_dma[channel].control >> 12) & 0x1;
//flsh = (m_dma[channel].control >> 13) & 0x1;
chen = (m_core->dma[channel].control >> 1) & 0x1;
tran = (m_core->dma[channel].control >> 2) & 0x1;
dtype = (m_core->dma[channel].control >> 5) & 0x1;
pmode = (m_core->dma[channel].control >> 6) & 0x3;
//mswf = (m_core->dma[channel].control >> 8) & 0x1;
//master = (m_core->dma[channel].control >> 9) & 0x1;
ishake = (m_core->dma[channel].control >> 10) & 0x1;
intio = (m_core->dma[channel].control >> 11) & 0x1;
//ext = (m_core->dma[channel].control >> 12) & 0x1;
//flsh = (m_core->dma[channel].control >> 13) & 0x1;
if (ishake)
fatalerror("SHARC: dma_exec: handshake not supported\n");
@ -189,7 +189,7 @@ void adsp21062_device::sharc_dma_exec(int channel)
if (chen) // Chained DMA
{
UINT32 dma_chain_ptr = m_dma[channel].chain_ptr & 0x1ffff;
UINT32 dma_chain_ptr = m_core->dma[channel].chain_ptr & 0x1ffff;
schedule_chained_dma_op(channel, dma_chain_ptr, tran);
}
@ -197,21 +197,21 @@ void adsp21062_device::sharc_dma_exec(int channel)
{
if (tran) // Transmit to external
{
dst = m_dma[channel].ext_index;
dst_modifier = m_dma[channel].ext_modifier;
dst_count = m_dma[channel].ext_count;
src = (m_dma[channel].int_index & 0x1ffff) | 0x20000;
src_modifier = m_dma[channel].int_modifier;
src_count = m_dma[channel].int_count;
dst = m_core->dma[channel].ext_index;
dst_modifier = m_core->dma[channel].ext_modifier;
dst_count = m_core->dma[channel].ext_count;
src = (m_core->dma[channel].int_index & 0x1ffff) | 0x20000;
src_modifier = m_core->dma[channel].int_modifier;
src_count = m_core->dma[channel].int_count;
}
else // Receive from external
{
src = m_dma[channel].ext_index;
src_modifier = m_dma[channel].ext_modifier;
src_count = m_dma[channel].ext_count;
dst = (m_dma[channel].int_index & 0x1ffff) | 0x20000;
dst_modifier = m_dma[channel].int_modifier;
dst_count = m_dma[channel].int_count;
src = m_core->dma[channel].ext_index;
src_modifier = m_core->dma[channel].ext_modifier;
src_count = m_core->dma[channel].ext_count;
dst = (m_core->dma[channel].int_index & 0x1ffff) | 0x20000;
dst_modifier = m_core->dma[channel].int_modifier;
dst_count = m_core->dma[channel].int_count;
}
if (dtype)
@ -228,19 +228,19 @@ TIMER_CALLBACK_MEMBER(adsp21062_device::sharc_dma_callback)
{
int channel = param;
m_dma_op[channel].timer->adjust(attotime::never, 0);
m_core->dma_op[channel].timer->adjust(attotime::never, 0);
m_irptl |= (1 << (channel+10));
m_core->irptl |= (1 << (channel+10));
// DMA interrupt
if (m_imask & (1 << (channel+10)))
if (m_core->imask & (1 << (channel+10)))
{
m_irq_active |= 1 << (channel+10);
m_core->irq_pending |= 1 << (channel+10);
}
dma_op(channel);
if (m_dma_op[channel].chain_ptr != 0)
if (m_core->dma_op[channel].chain_ptr != 0)
{
schedule_chained_dma_op(channel, m_dma_op[channel].chain_ptr, m_dma_op[channel].chained_direction);
schedule_chained_dma_op(channel, m_core->dma_op[channel].chain_ptr, m_core->dma_op[channel].chained_direction);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -88,14 +88,14 @@ static void compute(UINT32 opcode)
case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27:
case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f:
{
print("R%d = R%d * R%d (SSFR), R%d = R%d + R%d, R%d = R%d - R%d", rm, rxm, rym+4, ra, rxa+8, rya+12, rs, rxa+8, rya+12);
print("R%d = R%d * R%d (SSFR), R%d = R%d + R%d, R%d = R%d - R%d", rm, rxm, rym+4, ra, rxa+8, rya+12, (opcode >> 16) & 0xf, rxa+8, rya+12);
break;
}
case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37:
case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f:
{
print("F%d = F%d * F%d, F%d = F%d + F%d, F%d = F%d - F%d", rm, rxm, rym+4, ra, rxa+8, rya+12, rs, rxa+8, rya+12);
print("F%d = F%d * F%d, F%d = F%d + F%d, F%d = F%d - F%d", rm, rxm, rym+4, ra, rxa+8, rya+12, (opcode >> 16) & 0xf, rxa+8, rya+12);
break;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,81 @@
// license:BSD-3-Clause
// copyright-holders:Ville Linde
/******************************************************************************
Front-end for SHARC recompiler
******************************************************************************/
#pragma once
#include "sharc.h"
#include "cpu/drcfe.h"
#ifndef __SHARCFE_H__
#define __SHARCFE_H__
class sharc_frontend : public drc_frontend
{
public:
sharc_frontend(adsp21062_device *sharc, UINT32 window_start, UINT32 window_end, UINT32 max_sequence);
void flush();
enum UREG_ACCESS
{
UREG_READ,
UREG_WRITE
};
enum LOOP_TYPE
{
LOOP_TYPE_COUNTER,
LOOP_TYPE_CONDITIONAL
};
enum LOOP_ENTRY_TYPE
{
LOOP_ENTRY_START = 0x1,
LOOP_ENTRY_EVALUATION = 0x2,
LOOP_ENTRY_ASTAT_CHECK = 0x4,
};
struct LOOP_ENTRY
{
UINT16 entrytype;
UINT8 looptype;
UINT8 condition;
UINT32 start_pc;
};
struct LOOP_DESCRIPTOR
{
UINT32 start_pc;
UINT32 end_pc;
UINT32 astat_check_pc;
LOOP_TYPE type;
int condition;
};
protected:
// required overrides
virtual bool describe(opcode_desc &desc, const opcode_desc *prev) override;
private:
bool describe_compute(opcode_desc &desc, UINT64 opcode);
bool describe_ureg_access(opcode_desc &desc, int reg, UREG_ACCESS access);
bool describe_shiftop_imm(opcode_desc &desc, int shiftop, int rn, int rx);
void describe_if_condition(opcode_desc &desc, int condition);
void insert_loop(const LOOP_DESCRIPTOR &loopdesc);
void add_loop_entry(UINT32 pc, UINT8 type, UINT32 start_pc, UINT8 looptype, UINT8 condition);
bool is_loop_evaluation(UINT32 pc);
bool is_loop_start(UINT32 pc);
bool is_astat_delay_check(UINT32 pc);
adsp21062_device *m_sharc;
std::unique_ptr<LOOP_ENTRY[]> m_loopmap;
};
#endif /* __SHARCFE_H__ */

View File

@ -20,12 +20,13 @@ UINT32 adsp21062_device::pm_read32(UINT32 address)
(m_internal_ram_block1[addr + 1]);
}
else {
fatalerror("SHARC: PM Bus Read32 %08X at %08X\n", address, m_pc);
fatalerror("SHARC: PM Bus Read32 %08X at %08X\n", address, m_core->pc);
}
}
void adsp21062_device::pm_write32(UINT32 address, UINT32 data)
{
// printf("PM Write32 %08X, %08X at %08X\n", data, address, m_core->pc);
if (address >= 0x20000 && address < 0x28000)
{
UINT32 addr = (address & 0x7fff) * 3;
@ -44,7 +45,8 @@ void adsp21062_device::pm_write32(UINT32 address, UINT32 data)
return;
}
else {
fatalerror("SHARC: PM Bus Write32 %08X, %08X at %08X\n", address, data, m_pc);
debugger_break(machine());
//fatalerror("SHARC: PM Bus Write32 %08X, %08X at %08X\n", address, data, m_core->pc);
}
}
@ -68,7 +70,7 @@ UINT64 adsp21062_device::pm_read48(UINT32 address)
((UINT64)(m_internal_ram_block1[addr + 2]) << 0);
}
else {
fatalerror("SHARC: PM Bus Read48 %08X at %08X\n", address, m_pc);
fatalerror("SHARC: PM Bus Read48 %08X at %08X\n", address, m_core->pc);
}
return 0;
@ -76,6 +78,7 @@ UINT64 adsp21062_device::pm_read48(UINT32 address)
void adsp21062_device::pm_write48(UINT32 address, UINT64 data)
{
// printf("PM Write48 %08X%08X, %08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), address, m_core->pc);
if ((address >= 0x20000 && address < 0x28000))
{
UINT32 addr = (address & 0x7fff) * 3;
@ -96,7 +99,7 @@ void adsp21062_device::pm_write48(UINT32 address, UINT64 data)
return;
}
else {
fatalerror("SHARC: PM Bus Write48 %08X, %04X%08X at %08X\n", address, (UINT16)(data >> 32),(UINT32)data, m_pc);
fatalerror("SHARC: PM Bus Write48 %08X, %04X%08X at %08X\n", address, (UINT16)(data >> 32),(UINT32)data, m_core->pc);
}
}
@ -128,7 +131,7 @@ UINT32 adsp21062_device::dm_read32(UINT32 address)
UINT32 addr = address & 0xffff;
UINT16 r = m_internal_ram_block0[addr ^ 1];
if (m_mode1 & 0x4000)
if (m_core->mode1 & 0x4000)
{
// sign-extend
return (INT32)(INT16)(r);
@ -144,7 +147,7 @@ UINT32 adsp21062_device::dm_read32(UINT32 address)
UINT32 addr = address & 0xffff;
UINT16 r = m_internal_ram_block1[addr ^ 1];
if (m_mode1 & 0x4000)
if (m_core->mode1 & 0x4000)
{
// sign-extend
return (INT32)(INT16)(r);

File diff suppressed because it is too large Load Diff

View File

@ -15,8 +15,10 @@
#include "emu.h"
#include "cpu/cop400/cop400.h"
#include "sound/speaker.h"
#include "sound/dac.h"
// internal artwork
#include "bship82.lh" // clickable
#include "ctstein.lh" // clickable
#include "einvaderc.lh" // test-layout(but still playable)
#include "funjacks.lh"
@ -53,7 +55,7 @@ public:
int m_sk; // MCU SK line state
UINT16 m_inp_mux; // multiplexed inputs mask
UINT8 read_inputs(int columns);
UINT16 read_inputs(int columns);
// display common
int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
@ -92,7 +94,7 @@ void hh_cop400_state::machine_start()
m_d = 0;
m_so = 0;
m_sk = 0;
m_inp_mux = 0;
m_inp_mux = ~0;
// register for savestates
save_item(NAME(m_display_maxy));
@ -224,14 +226,14 @@ void hh_cop400_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 set
// generic input handlers
UINT8 hh_cop400_state::read_inputs(int columns)
UINT16 hh_cop400_state::read_inputs(int columns)
{
// active low
UINT8 ret = 0xff;
UINT16 ret = 0xffff;
// read selected input rows
for (int i = 0; i < columns; i++)
if (m_inp_mux >> i & 1)
if (~m_inp_mux >> i & 1)
ret &= m_inp_matrix[i]->read();
return ret;
@ -274,7 +276,7 @@ public:
WRITE8_MEMBER(ctstein_state::write_g)
{
// G0-G2: input mux
m_inp_mux = ~data & 7;
m_inp_mux = data & 7;
}
WRITE8_MEMBER(ctstein_state::write_l)
@ -322,7 +324,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( ctstein, ctstein_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", COP421, 860000) // approximation - RC osc. R=12K to +6V, C=100pf to GND
MCFG_CPU_ADD("maincpu", COP421, 860000) // approximation - RC osc. R=12K, C=100pf
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_4, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed
MCFG_COP400_WRITE_G_CB(WRITE8(ctstein_state, write_g))
MCFG_COP400_WRITE_L_CB(WRITE8(ctstein_state, write_l))
@ -380,7 +382,7 @@ WRITE8_MEMBER(h2hbaskb_state::write_d)
WRITE8_MEMBER(h2hbaskb_state::write_g)
{
// G: led select, input mux
m_inp_mux = ~data;
m_inp_mux = data;
m_g = data & 0xf;
}
@ -451,7 +453,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( h2hbaskb, h2hbaskb_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", COP420, 1600000) // approximation - RC osc. R=43K to +9V, C=101pf to GND
MCFG_CPU_ADD("maincpu", COP420, 1600000) // approximation - RC osc. R=43K, C=101pf
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed
MCFG_COP400_WRITE_D_CB(WRITE8(h2hbaskb_state, write_d))
MCFG_COP400_WRITE_G_CB(WRITE8(h2hbaskb_state, write_g))
@ -566,7 +568,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( einvaderc, einvaderc_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", COP444, 1000000) // approximation - RC osc. R=47K to +9V, C=100pf to GND(-9V)
MCFG_CPU_ADD("maincpu", COP444, 1000000) // approximation - RC osc. R=47K, C=100pf
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed
MCFG_COP400_READ_IN_CB(IOPORT("IN.0"))
MCFG_COP400_WRITE_D_CB(WRITE8(einvaderc_state, write_d))
@ -615,7 +617,8 @@ public:
WRITE8_MEMBER(funjacks_state::write_d)
{
// D: led grid + input mux
m_d = m_inp_mux = data ^ 0xf;
m_inp_mux = data;
m_d = data ^ 0xf;
display_matrix(2, 4, m_l, m_d);
}
@ -837,7 +840,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( plus1, plus1_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=51K to +5V, C=100pf to GND
MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=51K, C=100pf
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true) // guessed
MCFG_COP400_WRITE_D_CB(WRITE8(plus1_state, write_d))
MCFG_COP400_READ_G_CB(IOPORT("IN.0"))
@ -929,7 +932,7 @@ WRITE_LINE_MEMBER(lightfgt_state::write_sk)
READ8_MEMBER(lightfgt_state::read_g)
{
// G: multiplexed inputs
m_inp_mux = (m_so | m_d << 1) ^ 0x1f;
m_inp_mux = m_d << 1 | m_so;
return read_inputs(5);
}
@ -971,7 +974,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( lightfgt, lightfgt_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", COP421, 950000) // approximation - RC osc. R=82K to +6V, C=56pf to GND(-6V)
MCFG_CPU_ADD("maincpu", COP421, 950000) // approximation - RC osc. R=82K, C=56pf
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed
MCFG_COP400_WRITE_SO_CB(WRITELINE(lightfgt_state, write_so))
MCFG_COP400_WRITE_D_CB(WRITE8(lightfgt_state, write_d))
@ -992,6 +995,155 @@ MACHINE_CONFIG_END
/***************************************************************************
Milton Bradley Electronic Battleship (1982 version)
* COP420 MCU label COP420-JWE/N
This is a simplified hardware revision to the 1977/1979 version. The game
board looks almost identical.
***************************************************************************/
class bship82_state : public hh_cop400_state
{
public:
bship82_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_cop400_state(mconfig, type, tag),
m_dac(*this, "dac")
{ }
required_device<dac_device> m_dac;
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_g);
DECLARE_READ8_MEMBER(read_l);
DECLARE_READ8_MEMBER(read_in);
DECLARE_WRITE_LINE_MEMBER(write_so);
};
// handlers
WRITE8_MEMBER(bship82_state::write_d)
{
// D: input mux
m_inp_mux = data;
}
WRITE8_MEMBER(bship82_state::write_g)
{
// G: 4-bit signed DAC
if (~data & 8) data ^= 7;
m_dac->write_signed8(data << 4);
}
READ8_MEMBER(bship82_state::read_l)
{
// L: multiplexed inputs
return read_inputs(4) & 0xff;
}
READ8_MEMBER(bship82_state::read_in)
{
// IN: multiplexed inputs
return read_inputs(4) >> 8 & 0xf;
}
WRITE_LINE_MEMBER(bship82_state::write_so)
{
// SO: led
display_matrix(1, 1, state, 1);
}
// config
static INPUT_PORTS_START( bship82 )
PORT_START("IN.0") // D0 ports L,IN
PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("P1 Clear Last Entry") // CLE
PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("P1 A")
PORT_BIT( 0x004, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("P1 B")
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("P1 C")
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("P1 D")
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("P1 E")
PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("P1 F")
PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("P1 G")
PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("P1 H")
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("P1 I")
PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("P1 J")
PORT_BIT( 0x800, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN.1") // D1 ports L,IN
PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("P1 Clear Memory") // CM
PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("P1 1")
PORT_BIT( 0x004, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("P1 2")
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("P1 3")
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("P1 4")
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("P1 5")
PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("P1 6")
PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("P1 7")
PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("P1 8")
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("P1 9")
PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("P1 10")
PORT_BIT( 0x800, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("P1 Fire")
PORT_START("IN.2") // D2 ports L,IN
PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 Clear Last Entry") // CLE
PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 A")
PORT_BIT( 0x004, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 B")
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 C")
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 D")
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 E")
PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 F")
PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 G")
PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 H")
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 I")
PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 J")
PORT_BIT( 0x800, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN.3") // D3 ports L,IN
PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 Clear Memory") // CM
PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 1")
PORT_BIT( 0x004, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 2")
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 3")
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 4")
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 5")
PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 6")
PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 7")
PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 8")
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 9")
PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 10")
PORT_BIT( 0x800, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("P2 Fire")
PORT_START("IN.4") // SI
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_TOGGLE PORT_CODE(KEYCODE_F1) PORT_NAME("Load/Go") // switch
INPUT_PORTS_END
static MACHINE_CONFIG_START( bship82, bship82_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", COP420, 3000000) // approximation - RC osc. R=14K, C=100pf
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed
MCFG_COP400_WRITE_D_CB(WRITE8(bship82_state, write_d))
MCFG_COP400_WRITE_G_CB(WRITE8(bship82_state, write_g))
MCFG_COP400_READ_L_CB(READ8(bship82_state, read_l))
MCFG_COP400_READ_IN_CB(READ8(bship82_state, read_in))
MCFG_COP400_WRITE_SO_CB(WRITELINE(bship82_state, write_so))
MCFG_COP400_READ_SI_CB(IOPORT("IN.4"))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_bship82)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
/***************************************************************************
Game driver(s)
@ -1040,6 +1192,12 @@ ROM_START( lightfgt )
ROM_END
ROM_START( bship82 )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "cop420-jwe_n", 0x0000, 0x0400, CRC(5ea8111a) SHA1(34931463b806b48dce4f8ae2361512510bae0ebf) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
CONS( 1979, ctstein, 0, 0, ctstein, ctstein, driver_device, 0, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
@ -1051,5 +1209,9 @@ CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, driver_device, 0, "Ent
CONS( 1979, funjacks, 0, 0, funjacks, funjacks, driver_device, 0, "Mattel", "Funtronics Jacks", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, driver_device, 0, "Mattel", "Funtronics Red Light Green Light", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // ***
CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1982, bship82, bship, 0, bship82, bship82, driver_device, 0, "Milton Bradley", "Electronic Battleship (1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // ***
// ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction
// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc.

View File

@ -253,23 +253,23 @@
*******************************************************************************
After check the last bit of $1800, code jump into a loop ($DA30)...
After check the last bit of $1800, the code jumps into a loop ($DA30)...
BEHAVIOUR OF BOOT CHECK (magicfly):
1) Fill the video RAM with spaces (0x20), and color RAM with 0x15.
2) Check bit 7 of $1800 (video RAM, 1st offset) if activated.
1) Fills the video RAM with spaces (0x20), and color RAM with 0x15.
2) Checks bit 7 of $1800 (video RAM, 1st offset) if it's active.
3) If true, go to $DA30 (incremented fill infinite loop).
4) If not, fill the video RAM with spaces (0x20), and color RAM with 0x1F.
5) Check bit 7 of $1800 (video RAM, 1st offset) if activated.
4) If not, fills the video RAM with spaces (0x20), and color RAM with 0x1F.
5) Checks bit 7 of $1800 (video RAM, 1st offset) if it's active.
6) If not, go to $DA30 (incremented fill infinite loop).
7) If true, returns and continue to NORMAL GAME.
7) If true, returns and continues to NORMAL GAME.
Since bits 0-2 are for regular colors, seems that bit 3 in color RAM
(bit 2 for 7mezzo) is mirrored to bit 7 through a kind of device.
This is the only explanation I found to allow a normal boot, and seems to be
created as a protection method that don't allow owners to use a ROM-swap on
created as a protection method that doesn't allow owners to do a ROM-swap on
their boards, converting from one game to another.

223
src/mame/layout/bship82.lay Normal file
View File

@ -0,0 +1,223 @@
<?xml version="1.0"?>
<mamelayout version="2">
<!-- define elements -->
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
<element name="static_gray"><rect><color red="0.1" green="0.1" blue="0.11" /></rect></element>
<element name="static_red"><rect><color red="0.8" green="0.1" blue="0.15" /></rect></element>
<element name="text_fire">
<rect><color red="0.8" green="0.1" blue="0.15" /></rect>
<text string="FIRE"><color red="0.8" green="0.8" blue="0.8" /></text>
</element>
<element name="lamp" defstate="0">
<disk state="0"><color red="0.15" green="0.03" blue="0.033" /></disk>
<disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
</element>
<element name="button_blue" defstate="0">
<rect state="0">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.1" green="0.1" blue="0.11" />
</rect>
<rect state="1">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.15" green="0.5" blue="0.8" />
</rect>
<rect>
<bounds x="0.15" y="0.15" width="0.7" height="0.7" />
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<element name="button_yellow" defstate="0">
<rect state="0">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.1" green="0.1" blue="0.11" />
</rect>
<rect state="1">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.8" green="0.75" blue="0.15" />
</rect>
<rect>
<bounds x="0.15" y="0.15" width="0.7" height="0.7" />
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<element name="hlb" defstate="0">
<text string=" ">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.0" green="0.0" blue="0.0" />
</text>
<rect state="1">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<element name="text_lg" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.11" /></rect>
<text state="0" string="LOAD">
<bounds x="0.0" y="0.32" width="1.0" height="0.36" />
<color red="0.82" green="0.82" blue="0.82" />
</text>
<text state="1" string="GO">
<bounds x="0.0" y="0.32" width="1.0" height="0.36" />
<color red="0.82" green="0.82" blue="0.82" />
</text>
</element>
<element name="text_p1"><text string="player 1"><color red="0.4" green="0.4" blue="0.4" /></text></element>
<element name="text_p2"><text string="player 2"><color red="0.4" green="0.4" blue="0.4" /></text></element>
<element name="text_cm"><text string="CM"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_cle"><text string="CLE"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_1"><text string="1"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_2"><text string="2"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_3"><text string="3"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_4"><text string="4"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_5"><text string="5"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_6"><text string="6"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_7"><text string="7"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_8"><text string="8"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_9"><text string="9"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_10"><text string="10"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_a"><text string="A"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_b"><text string="B"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_c"><text string="C"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_d"><text string="D"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_e"><text string="E"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_f"><text string="F"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_g"><text string="G"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_h"><text string="H"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_i"><text string="I"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<element name="text_j"><text string="J"><color red="0.7" green="0.7" blue="0.7" /></text></element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-2" right="278" top="-16" bottom="31" />
<bezel name="0.0" element="lamp"><bounds x="44" y="-14" width="60" height="10" /></bezel>
<bezel name="0.0" element="lamp"><bounds x="186" y="-14" width="60" height="10" /></bezel>
<bezel element="text_p1"><bounds x="44" y="23" width="60" height="6" /></bezel>
<bezel element="text_p2"><bounds x="186" y="23" width="60" height="6" /></bezel>
<bezel element="static_gray"><bounds x="137.75" y="-15" width="0.5" height="45" /></bezel>
<!-- player 1 buttons -->
<bezel element="static_red"><bounds x="0" y="0" width="10" height="10" /></bezel>
<bezel element="text_fire"><bounds x="0" y="3" width="10" height="4" /></bezel>
<bezel element="hlb" inputtag="IN.1" inputmask="0x800"><bounds x="0" y="0" width="10" height="10" /><color alpha="0.3" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x001"><bounds x="14" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x002"><bounds x="25" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x004"><bounds x="36" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x008"><bounds x="47" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x010"><bounds x="58" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x020"><bounds x="69" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x040"><bounds x="80" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x080"><bounds x="91" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x100"><bounds x="102" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x200"><bounds x="113" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.1" inputmask="0x400"><bounds x="124" y="0" width="10" height="10" /></bezel>
<bezel element="text_cm"><bounds x="14" y="3" width="10" height="4" /></bezel>
<bezel element="text_1"><bounds x="25" y="2" width="10" height="6" /></bezel>
<bezel element="text_2"><bounds x="36" y="2" width="10" height="6" /></bezel>
<bezel element="text_3"><bounds x="47" y="2" width="10" height="6" /></bezel>
<bezel element="text_4"><bounds x="58" y="2" width="10" height="6" /></bezel>
<bezel element="text_5"><bounds x="69" y="2" width="10" height="6" /></bezel>
<bezel element="text_6"><bounds x="80" y="2" width="10" height="6" /></bezel>
<bezel element="text_7"><bounds x="91" y="2" width="10" height="6" /></bezel>
<bezel element="text_8"><bounds x="102" y="2" width="10" height="6" /></bezel>
<bezel element="text_9"><bounds x="113" y="2" width="10" height="6" /></bezel>
<bezel element="text_10"><bounds x="124" y="2" width="10" height="6" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x001"><bounds x="14" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x002"><bounds x="25" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x004"><bounds x="36" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x008"><bounds x="47" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x010"><bounds x="58" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x020"><bounds x="69" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x040"><bounds x="80" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x080"><bounds x="91" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x100"><bounds x="102" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x200"><bounds x="113" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.0" inputmask="0x400"><bounds x="124" y="11" width="10" height="10" /></bezel>
<bezel element="text_cle"><bounds x="14" y="14" width="10" height="4" /></bezel>
<bezel element="text_a"><bounds x="25" y="13" width="10" height="6" /></bezel>
<bezel element="text_b"><bounds x="36" y="13" width="10" height="6" /></bezel>
<bezel element="text_c"><bounds x="47" y="13" width="10" height="6" /></bezel>
<bezel element="text_d"><bounds x="58" y="13" width="10" height="6" /></bezel>
<bezel element="text_e"><bounds x="69" y="13" width="10" height="6" /></bezel>
<bezel element="text_f"><bounds x="80" y="13" width="10" height="6" /></bezel>
<bezel element="text_g"><bounds x="91" y="13" width="10" height="6" /></bezel>
<bezel element="text_h"><bounds x="102" y="13" width="10" height="6" /></bezel>
<bezel element="text_i"><bounds x="113" y="13" width="10" height="6" /></bezel>
<bezel element="text_j"><bounds x="124" y="13" width="10" height="6" /></bezel>
<!-- player 2 buttons -->
<bezel element="static_red"><bounds x="142" y="0" width="10" height="10" /></bezel>
<bezel element="text_fire"><bounds x="142" y="3" width="10" height="4" /></bezel>
<bezel element="hlb" inputtag="IN.3" inputmask="0x800"><bounds x="142" y="0" width="10" height="10" /><color alpha="0.3" /></bezel>
<bezel element="text_lg" inputtag="IN.4" inputmask="0x01"><bounds x="142" y="11" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x001"><bounds x="156" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x002"><bounds x="167" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x004"><bounds x="178" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x008"><bounds x="189" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x010"><bounds x="200" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x020"><bounds x="211" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x040"><bounds x="222" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x080"><bounds x="233" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x100"><bounds x="244" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x200"><bounds x="255" y="0" width="10" height="10" /></bezel>
<bezel element="button_yellow" inputtag="IN.3" inputmask="0x400"><bounds x="266" y="0" width="10" height="10" /></bezel>
<bezel element="text_cm"><bounds x="156" y="3" width="10" height="4" /></bezel>
<bezel element="text_1"><bounds x="167" y="2" width="10" height="6" /></bezel>
<bezel element="text_2"><bounds x="178" y="2" width="10" height="6" /></bezel>
<bezel element="text_3"><bounds x="189" y="2" width="10" height="6" /></bezel>
<bezel element="text_4"><bounds x="200" y="2" width="10" height="6" /></bezel>
<bezel element="text_5"><bounds x="211" y="2" width="10" height="6" /></bezel>
<bezel element="text_6"><bounds x="222" y="2" width="10" height="6" /></bezel>
<bezel element="text_7"><bounds x="233" y="2" width="10" height="6" /></bezel>
<bezel element="text_8"><bounds x="244" y="2" width="10" height="6" /></bezel>
<bezel element="text_9"><bounds x="255" y="2" width="10" height="6" /></bezel>
<bezel element="text_10"><bounds x="266" y="2" width="10" height="6" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x001"><bounds x="156" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x002"><bounds x="167" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x004"><bounds x="178" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x008"><bounds x="189" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x010"><bounds x="200" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x020"><bounds x="211" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x040"><bounds x="222" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x080"><bounds x="233" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x100"><bounds x="244" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x200"><bounds x="255" y="11" width="10" height="10" /></bezel>
<bezel element="button_blue" inputtag="IN.2" inputmask="0x400"><bounds x="266" y="11" width="10" height="10" /></bezel>
<bezel element="text_cle"><bounds x="156" y="14" width="10" height="4" /></bezel>
<bezel element="text_a"><bounds x="167" y="13" width="10" height="6" /></bezel>
<bezel element="text_b"><bounds x="178" y="13" width="10" height="6" /></bezel>
<bezel element="text_c"><bounds x="189" y="13" width="10" height="6" /></bezel>
<bezel element="text_d"><bounds x="200" y="13" width="10" height="6" /></bezel>
<bezel element="text_e"><bounds x="211" y="13" width="10" height="6" /></bezel>
<bezel element="text_f"><bounds x="222" y="13" width="10" height="6" /></bezel>
<bezel element="text_g"><bounds x="233" y="13" width="10" height="6" /></bezel>
<bezel element="text_h"><bounds x="244" y="13" width="10" height="6" /></bezel>
<bezel element="text_i"><bounds x="255" y="13" width="10" height="6" /></bezel>
<bezel element="text_j"><bounds x="266" y="13" width="10" height="6" /></bezel>
</view>
</mamelayout>

View File

@ -13947,6 +13947,7 @@ hexion // GX122 (c) 1992
hexionb // bootleg
@source:hh_cop400.cpp
bship82 // Milton Bradley
ctstein // Castle Toy
einvaderc // Entex
funjacks // Mattel