summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2014-10-05 11:51:41 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2014-10-05 11:51:41 +0000
commit66fab3cf5c75cd1eca9e4d1b1df29964c052ada3 (patch)
tree8e8d5f30a02229312cd04ecf1ed3aaa85c575146
parent218bf5c577b9fa2bdfb3c786a990ae1582e04af8 (diff)
(MESS) wswan.c: converted to use slot devices for carts. [Fabio Priuli]
out of whatsnew: another case of on-cart SRAM & EEPROM pointers removed from the main system...
-rw-r--r--.gitattributes4
-rw-r--r--hash/wscolor.xml311
-rw-r--r--hash/wswan.xml370
-rw-r--r--src/emu/bus/bus.mak12
-rw-r--r--src/emu/bus/wswan/rom.c535
-rw-r--r--src/emu/bus/wswan/rom.h106
-rw-r--r--src/emu/bus/wswan/slot.c491
-rw-r--r--src/emu/bus/wswan/slot.h130
-rw-r--r--src/mess/drivers/wswan.c76
-rw-r--r--src/mess/includes/wswan.h53
-rw-r--r--src/mess/machine/wswan.c844
-rw-r--r--src/mess/mess.mak1
12 files changed, 2084 insertions, 849 deletions
diff --git a/.gitattributes b/.gitattributes
index 46cb970467e..74266d9661b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1725,6 +1725,10 @@ src/emu/bus/wangpc/wangpc.c svneol=native#text/plain
src/emu/bus/wangpc/wangpc.h svneol=native#text/plain
src/emu/bus/wangpc/wdc.c svneol=native#text/plain
src/emu/bus/wangpc/wdc.h svneol=native#text/plain
+src/emu/bus/wswan/rom.c svneol=native#text/plain
+src/emu/bus/wswan/rom.h svneol=native#text/plain
+src/emu/bus/wswan/slot.c svneol=native#text/plain
+src/emu/bus/wswan/slot.h svneol=native#text/plain
src/emu/bus/x68k/x68k_neptunex.c svneol=native#text/plain
src/emu/bus/x68k/x68k_neptunex.h svneol=native#text/plain
src/emu/bus/x68k/x68k_scsiext.c svneol=native#text/plain
diff --git a/hash/wscolor.xml b/hash/wscolor.xml
index d3ffc7c4882..344c54ee999 100644
--- a/hash/wscolor.xml
+++ b/hash/wscolor.xml
@@ -10,11 +10,13 @@
<info name="serial" value="SWJ-OMMC03"/>
<info name="release" value="20001221"/>
<info name="alt_title" value="アナザヘヴン ~memory of those days~"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-ommc03.bin" size="4194304" crc="d7a0ab74" sha1="caf4a8de853ded732b2a72619acf2784eeceafc7" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -27,9 +29,12 @@
<info name="release" value="20020704"/>
<info name="alt_title" value="アークザラッド 機神復活"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc2a.bin" size="8388608" crc="e2317345" sha1="68981c05d8118d4189100eed462ee6639328dc59" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -42,9 +47,12 @@
<info name="release" value="20011025"/>
<info name="alt_title" value="マリー&amp;エリー ~ふたりのアトリエ~"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-htrc01.bin" size="4194304" crc="b18cdc0d" sha1="99d9d7f951ae589059f34e76aea7489ae4cd79f1" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -57,9 +65,12 @@
<info name="release" value="20021207"/>
<info name="alt_title" value="バトルスピリット デジモンフロンティア"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc31.bin" size="4194304" crc="8ba49dab" sha1="fffb1aea34e0a96113cd10ba9de515000d27bfe6" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -72,9 +83,12 @@
<info name="release" value="20010705"/>
<info name="alt_title" value="ブルー ウイング ブリッツ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-sqrc05.bin" size="2097152" crc="99027238" sha1="02103fc5fc97c3a38834ced32a3cfe6523832535" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -87,9 +101,12 @@
<info name="release" value="20020810"/>
<info name="alt_title" value="激闘! クラッシュギア ターボギアチャンピオンリーグ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-wizc01.bin" size="4194304" crc="8a8b827c" sha1="1bc1e831b9e2aefc59f2cac5f19f7d22be574fc1" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -102,9 +119,12 @@
<info name="release" value="20010315"/>
<info name="alt_title" value="バトルゲート ダークアイズ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc08.bin" size="4194304" crc="12ae932c" sha1="c2188171dc0f78fb6a13bbb55b4e85bdf7b82fd5" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -116,9 +136,13 @@
<info name="release" value="20040531"/>
<info name="alt_title" value="だいしんぐないと・ピリオド"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="524288">
<rom name="dicing knight. (japan).bin" size="524288" crc="d28dc930" sha1="79658575c736fcad18e9225aa0e62398b086093b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x40000">
+ </dataarea>
</part>
</software>
@@ -130,11 +154,13 @@
<info name="serial" value="SWJ-BANC03"/>
<info name="release" value="20001209"/>
<info name="alt_title" value="デジモンアドベンチャー02 ディーワンテイマーズ"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc03.bin" size="4194304" crc="4d28637e" sha1="18d3dfe25d82964ab7bb61af363d368fd12f4d4b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -145,9 +171,12 @@
<publisher>Bandai</publisher>
<info name="serial" value="SWJ-BAN001"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban001digiasia.bin" size="4194304" crc="77689273" sha1="7a6411cf8a4d91e8a4e0532779f11bdd25b92363" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -160,9 +189,12 @@
<info name="release" value="20020316"/>
<info name="alt_title" value="デジタルモンスター カードゲーム バージョン ワンダースワンカラー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc22.bin" size="4194304" crc="603cb5e6" sha1="ba16a0770f7a71dd49e2879799fd04a4f04f7e60" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -175,9 +207,12 @@
<info name="release" value="20020803"/>
<info name="alt_title" value="デジタルモンスター ディープロジェクト"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc2e.bin" size="4194304" crc="faaefbcb" sha1="3e8fffe1f607ea5f855397d9d877cecb285507f7" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -190,9 +225,12 @@
<info name="release" value="20020427"/>
<info name="alt_title" value="デジモンテイマーズ バトルスピリット Ver.1.5"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc30.bin" size="8388608" crc="6caad4a2" sha1="3f39ff494a3d8dd9d55a2e7cf86b47f1c8e8a156" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -205,9 +243,13 @@
<info name="release" value="20011006"/>
<info name="alt_title" value="デジモンテイマーズ バトルスピリット"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc1a.bin" size="4194304" crc="c927bfcb" sha1="757e92177385a14d979227edee1cb544b4c56bd6" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -220,9 +262,12 @@
<info name="release" value="20011229"/>
<info name="alt_title" value="デジモンテイマーズ ブレイブテイマー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc1d.bin" size="4194304" crc="f1f4d41f" sha1="31a718cfbcff2dab56ab9606a0b5b2dfccecbbcb" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -235,9 +280,12 @@
<info name="release" value="20010712"/>
<info name="alt_title" value="デジモンテイマーズ デジモンメドレー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc14.bin" size="4194304" crc="fa92418d" sha1="8638737e5a35c6be05a888dc81e504e0d80fd756" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -249,11 +297,14 @@
<info name="serial" value="SWJ-BECC01"/>
<info name="release" value="20001214"/>
<info name="alt_title" value="どこでもハムスター3 おでかけサフラン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="2097152">
<rom name="swj-becc01.bin" size="2097152" crc="93e19f13" sha1="66b4bd15ef67dc324736a1cc78d6aca335f03389" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -265,11 +316,13 @@
<info name="serial" value="SWJ-BANC0D"/>
<info name="release" value="20010524"/>
<info name="alt_title" value="ポケットの中の ドラえもん"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc0d.bin" size="4194304" crc="2b61bb2b" sha1="57338999b949589c36ce116a30f433e9618685e4" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -282,6 +335,7 @@
<info name="release" value="20031120"/>
<info name="alt_title" value="ドラゴンボール"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc3c.bin" size="2097152" crc="067238d1" sha1="5384f9974c66e5e26129a4709976de0bb1ae1f17" offset="000000" />
</dataarea>
@@ -296,11 +350,13 @@
<info name="serial" value="SWJ-SQRC01"/>
<info name="release" value="20001209"/>
<info name="alt_title" value="ファイナルファンタジー"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-sqrc01.bin" size="4194304" crc="b7243e88" sha1="26628eb76c16880b6faf2e706778d91a60144078" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -312,11 +368,13 @@
<info name="serial" value="SWJ-SQRC02"/>
<info name="release" value="20010502"/>
<info name="alt_title" value="ファイナルファンタジーII"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-sqrc02.bin" size="4194304" crc="f09e752f" sha1="959321e3b971516e38a4cbf95b0fc3efc0b0a825" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -329,9 +387,12 @@
<info name="release" value="20020328"/>
<info name="alt_title" value="ファイナルファンタジーIV"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-sqrc09.bin" size="4194304" crc="f699d6d1" sha1="6d707e88c85d1b5ef708631e709668006a9ee244" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -343,11 +404,13 @@
<info name="serial" value="SWJ-BANC23"/>
<info name="release" value="20011115"/>
<info name="alt_title" value="ファイナルラップスペシャル"/>
- <!-- TOOD -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc23.bin" size="4194304" crc="b07e6a56" sha1="4c3f092b095bdb0afdaf8d32d4c54b4d6c209c96" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -359,11 +422,13 @@
<info name="serial" value="SWJ-KBSC01"/>
<info name="release" value="20001228"/>
<info name="alt_title" value="フラッシュ 恋人クン"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="2097152">
<rom name="swj-kbsc01.bin" size="2097152" crc="69d8d433" sha1="a3d6717efdb8f243fe86b4c3d869a9734a2e02d3" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -376,9 +441,12 @@
<info name="release" value="20020712"/>
<info name="alt_title" value="フロントミッション"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-sqrc10.bin" size="8388608" crc="2f9e2560" sha1="3c752694ab651f9a00ccd39c334a2e3ff78f5cb2" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -390,9 +458,12 @@
<info name="serial" value="SWJ-BANC2B"/>
<info name="release" value="20020228"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc2b.bin" size="4194304" crc="bc944a98" sha1="87661841ca63e99b04c0f6dc4ba3454c897e0c6d" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -405,9 +476,12 @@
<info name="release" value="20010607"/>
<info name="alt_title" value="幻想魔伝最遊記 Retribution ~陽のあたる場所で~"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="2097152">
<rom name="swj-sesc01.bin" size="2097152" crc="446e2581" sha1="adbe6e38a0bc6a2d19da64a444071977b771f14f" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -419,11 +493,13 @@
<info name="serial" value="SWJ-SUMC07"/>
<info name="release" value="20010125"/>
<info name="alt_title" value="ギルティギア プチ"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-sumc07.bin" size="2097152" crc="9750bc2a" sha1="6d8f8fd330f32374b55cf6b998196a7db2131073" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -436,9 +512,12 @@
<info name="release" value="20010927"/>
<info name="alt_title" value="ギルティギア プチ2"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-sumc08.bin" size="4194304" crc="d7a12bd5" sha1="f7aeab6724154f7ef6a389f9f18b7100045e1064" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -451,9 +530,12 @@
<info name="release" value="20020613"/>
<info name="alt_title" value="グランスタ クロニクル"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-mgtc01.bin" size="8388608" crc="af24f95c" sha1="3a4c5d1c08b74cf05b4cb64cbfd7c3dd8b1c3789" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -466,9 +548,12 @@
<info name="release" value="20030315"/>
<info name="alt_title" value="機動戦士ガンダム シード"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc36.bin" size="4194304" crc="bce15137" sha1="e933ff8eace56a462019ae4654b0bab1b21b1d6c" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -481,9 +566,12 @@
<info name="release" value="20030502"/>
<info name="alt_title" value="機動戦士ガンダム ギレンの野望 特別編 蒼き星の覇者"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc3a.bin" size="4194304" crc="d4061551" sha1="20b671bc14a8ab6373deecc641479d09658ac21f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -495,11 +583,13 @@
<info name="serial" value="SWJ-BANC07"/>
<info name="release" value="20010201"/>
<info name="alt_title" value="機動戦士ガンダム Vol.1 サイドセブン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc07.bin" size="4194304" crc="08c0247b" sha1="29e72e7f96f145a0ff56e447f577310df2ec463b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -512,9 +602,12 @@
<info name="release" value="20010816"/>
<info name="alt_title" value="機動戦士ガンダム Vol.2 ジャブロー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc17.bin" size="8388608" crc="39a1391a" sha1="df1a794f7e3992b1e1e9de14141b607746202202" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -527,9 +620,12 @@
<info name="release" value="20020525"/>
<info name="alt_title" value="機動戦士ガンダム Vol.3 ア・バオア・クー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc25.bin" size="8388608" crc="a9f5bf54" sha1="35443e2ef8a20a0ad82da1274b2768c16239dd46" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -541,11 +637,13 @@
<info name="serial" value="SWJ-BANC02"/>
<info name="release" value="20001209"/>
<info name="alt_title" value="グンペイEX"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-banc02.bin" size="1048576" crc="0c9cb12c" sha1="1eb729aa9ab0a7df6f8a3470a6fede59d7622d4a" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -558,9 +656,12 @@
<info name="release" value="20020214"/>
<info name="alt_title" value="はんじゅくヒーロー半熟英雄 ああ、世界よ半熟なれ...!!"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-sqrc06.bin" size="4194304" crc="31e09bed" sha1="2e3f221d6965f53b29586d2019ee81dec6d1ac30" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -573,9 +674,12 @@
<info name="release" value="20000921"/>
<info name="alt_title" value="はたらくチョコボ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-sqr004.bin" size="1048576" crc="7a29e9a6" sha1="9bd63ed48926b27be70333fbe07da2ceed56328a" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -588,9 +692,12 @@
<info name="release" value="20030424"/>
<info name="alt_title" value="ハンター×ハンター グリードアイランド"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc39.bin" size="8388608" crc="a487b7a8" sha1="f66335b5af87e7cb72ae311eb9b339534722f738" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -603,9 +710,12 @@
<info name="release" value="20010823"/>
<info name="alt_title" value="ハンター×ハンター 導かれし者"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc18.bin" size="4194304" crc="9402bca9" sha1="bc591fc24d3f8e94b70503fd8b6a35fa58151139" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -617,11 +727,13 @@
<info name="serial" value="SWJ-BANC0F"/>
<info name="release" value="20010426"/>
<info name="alt_title" value="ハンター×ハンター ~それぞれの決意~"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc0f.bin" size="4194304" crc="d0b20c5a" sha1="2da2a9bcff4813abcb5b2c88095258d89a575378" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -634,9 +746,12 @@
<info name="release" value="20020727"/>
<info name="alt_title" value="犬夜叉 風雲絵巻"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc26.bin" size="4194304" crc="3ff5791f" sha1="99d5bdde193685a1d09ea73bb79a54b4da82625d" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -649,9 +764,13 @@
<info name="release" value="20011102"/>
<info name="alt_title" value="犬夜叉 かごめの戦国日記"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc1b.bin" size="2097152" crc="0c23d551" sha1="b4fbea1a2c50d8566685f72820b360af4b54f82f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -664,9 +783,12 @@
<info name="release" value="20021116"/>
<info name="alt_title" value="犬夜叉 かごめの夢日記"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc32.bin" size="4194304" crc="44453234" sha1="f7c8f8b6b6d036df8fc4bde72fcfac2846dffe35" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -677,9 +799,13 @@
<publisher>Qute</publisher>
<info name="release" value="20040205"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="524288">
<rom name="judgement silversword - rebirth edition (japan) (rev 4321).bin" size="524288" crc="60191872" sha1="657aea8377e207b9b5a182b13966a27f46633640" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x40000">
+ </dataarea>
</part>
</software>
@@ -690,9 +816,13 @@
<publisher>Qute</publisher>
<info name="release" value="20040205"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="524288">
<rom name="judgement silversword - rebirth edition (japan) (rev sc21).bin" size="524288" crc="4fce380d" sha1="a1d910123b6be0b941f699ef70c745d16350d029" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x40000">
+ </dataarea>
</part>
</software>
@@ -705,9 +835,12 @@
<info name="release" value="20030130"/>
<info name="alt_title" value="キン肉マンII世 超人聖戦史"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc34.bin" size="4194304" crc="6142fd9d" sha1="efcf8f92357ffc6f6ec0e4aa960cd97a5070836e" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -720,9 +853,12 @@
<info name="release" value="20020302"/>
<info name="alt_title" value="キン肉マンII世 ドリームタッグマッチ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc20.bin" size="2097152" crc="462f9275" sha1="81dd3124cce8a1aafd423bfe0814187fb7c646cb" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -735,9 +871,12 @@
<info name="release" value="20010614"/>
<info name="alt_title" value="くるパラ!"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="2097152">
<rom name="swj-tmcc01.bin" size="2097152" crc="274719f5" sha1="9942d1b7d1c00126b9891e560e6a3e264f8fdc2e" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -750,9 +889,12 @@
<info name="release" value="20010726"/>
<info name="alt_title" value="ラストアライブ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc15.bin" size="4194304" crc="da4479bf" sha1="b019f41207e396d9fe3509dccdbe1cc6e7ac46bb" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -765,9 +907,12 @@
<info name="release" value="20020320"/>
<info name="alt_title" value="魔界塔士 サ・ガ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-sqrc08.bin" size="4194304" crc="1b6f5f30" sha1="6b7a9b810c932974cbda4de7178cf0ea5a90e628" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -780,9 +925,12 @@
<info name="release" value="20010405"/>
<info name="alt_title" value="名探偵コナン ~夕暮れの皇女~"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc0e.bin" size="4194304" crc="9f6e3f8d" sha1="36d8bc2ce7920d940943358d48f056f81055ab34" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -794,11 +942,13 @@
<info name="serial" value="SWJ-KDKC01"/>
<info name="release" value="20010308"/>
<info name="alt_title" value="メモリーズオフ フェスタ"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-kdkc01.bin" size="2097152" crc="8e123373" sha1="f47b4ab9197999bbec351750601baa20fbbd7177" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -810,11 +960,13 @@
<info name="serial" value="SWJ-KBSC02"/>
<info name="release" value="20010426"/>
<info name="alt_title" value="サウンドコミック - 三毛猫ホームズ ゴーストパニック"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-kbsc02.bin" size="4194304" crc="d75effc2" sha1="2358701531e8a38419859cd70bf2fbbd967b6745" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -826,11 +978,13 @@
<info name="serial" value="SWJ-NMCC01"/>
<info name="release" value="20010405"/>
<info name="alt_title" value="ミスタードリラー"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-nmcc01.bin" size="2097152" crc="5555d95c" sha1="209232f1e91c05140529d466c0ef6b7ad3386de1" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -843,9 +997,12 @@
<info name="release" value="20030327"/>
<info name="alt_title" value="Naruto ナルト- 木ノ葉忍法帖"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc38.bin" size="4194304" crc="71556e6a" sha1="dbaa50fd56e69e72fdfe49362ef5fe4437d66667" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -858,9 +1015,12 @@
<info name="release" value="20020712"/>
<info name="alt_title" value="フロムテレビアニメーション ワンピース グランドバトル スワンコロシアム"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc29.bin" size="8388608" crc="f8a1dd2b" sha1="01e765bf356cdcb413bfd27c6321f7449465766a" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -873,9 +1033,12 @@
<info name="release" value="20031016"/>
<info name="alt_title" value="フロムテレビアニメーション ワンピース チョッパーの大冒険"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc3b.bin" size="4194304" crc="8e120b5a" sha1="221f48e97ec2c6d0046213956e1f36e923c0dec2" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -888,9 +1051,12 @@
<info name="release" value="20010913"/>
<info name="alt_title" value="フロムテレビアニメーション ワンピース 虹の島伝説"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc19.bin" size="4194304" crc="427056c4" sha1="2410690ad46667c52b63402df9e95fc8a75cee62" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -903,9 +1069,12 @@
<info name="release" value="20020103"/>
<info name="alt_title" value="フロムテレビアニメーション ワンピース トレジャーウォーズ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc1e.bin" size="4194304" crc="205503c3" sha1="dd1e6e5467b72fcb5848f07a9747aa66bb207d45" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -918,9 +1087,13 @@
<info name="release" value="20021220"/>
<info name="alt_title" value="フロムテレビアニメーション ワンピース トレジャーウォーズ2 バギーランドへようこそ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc33.bin" size="8388608" crc="0d1048f0" sha1="b7775e8f60fd62dc07f2865f8fad29a11e12dbb5" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -933,9 +1106,12 @@
<info name="release" value="20010531"/>
<info name="alt_title" value="落雀"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-banc10.bin" size="1048576" crc="fe4ff701" sha1="977d5830e45c78b9020e9d06a63a9ad6bc623745" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -947,11 +1123,13 @@
<info name="serial" value="SWJ-BANC01"/>
<info name="release" value="20001209"/>
<info name="alt_title" value="ライムライダー ケロリカン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc01.bin" size="4194304" crc="60706555" sha1="5973306a864c3804ee10b209e45067807d39a4de" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -964,9 +1142,12 @@
<info name="release" value="20020712"/>
<info name="alt_title" value="Riviera ~約束の地 リヴィエラ~"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc27.bin" size="8388608" crc="2460b45a" sha1="a8f8d3efc9b2d5741081e05f517d746ee5437f87" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -979,9 +1160,12 @@
<info name="release" value="20030717"/>
<info name="alt_title" value="スーパーロボット大戦 コンパクト3"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-bprc09.bin" size="8388608" crc="6918c824" sha1="b579f204be604ebef4e8238e5883152b70399c4d" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -994,9 +1178,12 @@
<info name="release" value="20030717"/>
<info name="alt_title" value="スーパーロボット大戦 コンパクト3"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-bprc09-1.bin" size="8388608" crc="188ca644" sha1="dd6fe0f278cdec2670d3be8552dbb0cf6a3a2841" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1009,9 +1196,12 @@
<info name="release" value="20011213"/>
<info name="alt_title" value="フォー ワンダースワンカラーコンパクト スーパーロボット大戦"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-bprc08.bin" size="4194304" crc="16e0d929" sha1="bf212cecbbc51ee32ee2655a072f55e7bf70b9ec" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1024,9 +1214,12 @@
<info name="release" value="20030208"/>
<info name="alt_title" value="ロックマンエグゼ ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc35.bin" size="4194304" crc="658c4b98" sha1="b4a3ff3b72639f27d1a6f449b0335074aeb9e603" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1039,9 +1232,12 @@
<info name="release" value="20030808"/>
<info name="alt_title" value="ロックマンエグゼ N1バトル"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-cpcc01.bin" size="4194304" crc="1f10ca75" sha1="9b4786adca7b83fe66a9d4b9fd4ffaf32abe7656" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1054,9 +1250,12 @@
<info name="release" value="20011220"/>
<info name="alt_title" value="ロマンシング サ・ガ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-sqrc07.bin" size="4194304" crc="9c98d97d" sha1="06fcc9aad3ae478db6eed27621af4f56a6488a67" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1069,9 +1268,12 @@
<info name="release" value="20020207"/>
<info name="alt_title" value="ランディム Return To Earth"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ddjc01.bin" size="2097152" crc="15c4552e" sha1="3a41a3b8fc126da07e2a82c21056a45c15efbc98" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1083,11 +1285,13 @@
<info name="serial" value="SWJ-BANC0A"/>
<info name="release" value="20010315"/>
<info name="alt_title" value="SDガンダム英雄伝 ~騎士伝説~"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc0a.bin" size="4194304" crc="c60e5162" sha1="ebd4b37ade6df717f7b637747a4d3c45a6cca037" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1099,11 +1303,13 @@
<info name="serial" value="SWJ-BANC0B"/>
<info name="release" value="20010315"/>
<info name="alt_title" value="SDガンダム英雄伝 ~武者伝説~"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc0b.bin" size="4194304" crc="18ecffb8" sha1="d8097e25431f0ad5183b2479ee0837599677a300" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1116,9 +1322,12 @@
<info name="release" value="20010614"/>
<info name="alt_title" value="SDガンダム Gジェネレーション ギャザービート2"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc12.bin" size="8388608" crc="4d21a347" sha1="016ff46509cbfe57a7440a1755d3a41ef49c048f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1131,9 +1340,12 @@
<info name="release" value="20020926"/>
<info name="alt_title" value="SDガンダム ジージェネレーション モノアイガンダムズ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-banc2f.bin" size="8388608" crc="6aca1f04" sha1="91e087056207fce21e782e25e383c203bc046897" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1146,9 +1358,12 @@
<info name="release" value="20020216"/>
<info name="alt_title" value="SDガンダム オペレーション U.C."/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc21.bin" size="2097152" crc="f0acda5c" sha1="152c4d63b1b17f2c717a43efc75d718b614f9ddc" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1160,11 +1375,13 @@
<info name="serial" value="SWJ-BANC04"/>
<info name="release" value="20001221"/>
<info name="alt_title" value="仙界伝 弐~TVアニメーション仙界伝封神演義より~"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc04.bin" size="4194304" crc="9f35d00f" sha1="df9e831842072d9af613effbee7162229849de58" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1177,9 +1394,12 @@
<info name="release" value="20020829"/>
<info name="alt_title" value="シャーマンキング 未来への意志"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc2d-1.bin" size="4194304" crc="34908cb4" sha1="473195666a633573c777d3be98d7e8f46569c84b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1192,9 +1412,12 @@
<info name="release" value="20020829"/>
<info name="alt_title" value="シャーマンキング 未来への意志"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc2d.bin" size="4194304" crc="6c029674" sha1="1e735d1e83a7bfa06c5c717c7e8a386d55a8e3f0" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1206,11 +1429,13 @@
<info name="serial" value="SWJ-KGTC09"/>
<info name="release" value="20001209"/>
<info name="alt_title" value="そろばんぐ"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-kgtc09.bin" size="1048576" crc="0e467d97" sha1="983582fe8d18839df30b6d29fb75780a9e32f4ec" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1223,6 +1448,7 @@
<info name="release" value="20030731"/>
<info name="alt_title" value="聖闘士星矢 黄金伝説編 パーフェクトエディション"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc3d.bin" size="2097152" crc="6e8a792d" sha1="8542649963efe0976015759382c180b7c056be9a" offset="000000" />
</dataarea>
@@ -1238,9 +1464,12 @@
<info name="release" value="20010827"/>
<info name="alt_title" value="スターハーツ ~星と大地の使者~"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc16.bin" size="4194304" crc="138d1018" sha1="2b2c2a0566646156bcdde2a00b728c5b8218aa23" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -1250,9 +1479,12 @@
<year>2001</year>
<publisher>Bandai</publisher>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="star hearts - hoshi to daichi no shisha - taikenban (japan).bin" size="4194304" crc="9874e9a2" sha1="44940ae0140df1bd91d742a166c459df1b6c2339" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -1265,9 +1497,12 @@
<info name="release" value="20021031"/>
<info name="alt_title" value="ナムコスーパーウォーズ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc28.bin" size="2097152" crc="8ce4652f" sha1="c48569fd0a46ab7b7ceafeb5698be90420cd4fbe" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1280,9 +1515,12 @@
<info name="release" value="20001221"/>
<info name="alt_title" value="テラーズ2"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc05.bin" size="4194304" crc="9bd8f08c" sha1="9532113e14b03c95f034c015168e21273d42eff1" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -1295,9 +1533,12 @@
<info name="release" value="20020418"/>
<info name="alt_title" value="テトリス"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-vgdc01.bin" size="1048576" crc="7b0caea9" sha1="1a86403d7896d60fcb7a4c09367f5a976c7ea5a5" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1310,9 +1551,12 @@
<info name="release" value="20010628"/>
<info name="alt_title" value="東風荘"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-banc13.bin" size="1048576" crc="47659b2c" sha1="fb53c28bd48174d3829467f1ab81d3f87f9a7f5b" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1325,9 +1569,12 @@
<info name="release" value="20010208"/>
<info name="alt_title" value="宇宙戦艦ヤマト"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc09.bin" size="4194304" crc="5793bdda" sha1="dd1878279a6667fb66dd1ac44a2cdb9a5acbe415" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1340,9 +1587,12 @@
<info name="release" value="20010621"/>
<info name="alt_title" value="ウルトラマン 光の国の使者"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc11.bin" size="2097152" crc="de2208ab" sha1="bd107befe5ce6c5508d2da8be351b9984166ae1d" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1354,11 +1604,13 @@
<info name="serial" value="SWJ-BANC06"/>
<info name="release" value="20010118"/>
<info name="alt_title" value="ナムコワンダークラシック"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc06.bin" size="4194304" crc="12f10b27" sha1="55b54944efd6e277fa7140925ed2457a8cfb40b8" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1370,11 +1622,13 @@
<info name="serial" value="SWJ-SQRC04"/>
<info name="release" value="20010329"/>
<info name="alt_title" value="ワイルドカード"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-sqrc04.bin" size="2097152" crc="d9401f0a" sha1="ea878a485a20abd5251065fd66e82d9d8b8a669d" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1387,9 +1641,12 @@
<info name="release" value="20010125"/>
<info name="alt_title" value="ウィズ・ユー ~みつめていたい~"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-shlc01.bin" size="4194304" crc="e14e9d36" sha1="6a4f4a03c367ccf00aa7462191c929a2736eb44b" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -1401,11 +1658,13 @@
<info name="serial" value="SWJ-BANC0C"/>
<info name="release" value="20010301"/>
<info name="alt_title" value="ウィザードリィ シナリオ1 狂王の試練場"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc0c.bin" size="2097152" crc="15e55706" sha1="c1ad383d337dba8a63295cfb8c7ca8470c893c67" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1418,9 +1677,12 @@
<info name="release" value="200206??"/>
<info name="alt_title" value="エックス カード オブ フェイト"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-banc2c.bin" size="4194304" crc="66b617d5" sha1="c1ab4e24f261615ca59f937b866fcf7047b67796" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -1433,9 +1695,12 @@
<info name="release" value="20011220"/>
<info name="alt_title" value="サイ リトル"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-banc1f.bin" size="2097152" crc="25e2ba75" sha1="97c29917a78918a6905fd61a1466971cfd2a33c6" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
diff --git a/hash/wswan.xml b/hash/wswan.xml
index d6dc7ef3666..a08af0cfd27 100644
--- a/hash/wswan.xml
+++ b/hash/wswan.xml
@@ -9,11 +9,13 @@
<info name="serial" value="SWJ-SUM004"/>
<info name="release" value="19990624"/>
<info name="alt_title" value="アンカーズ・フィールド"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-sum004.bin" size="1048576" crc="425eb893" sha1="06447c248afce04c4f4a1c3b5f7a4ab6f383c94b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -24,11 +26,13 @@
<info name="serial" value="SWJ-SUM003"/>
<info name="release" value="19991118"/>
<info name="alt_title" value="アーマードユニット"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-sum003.bin" size="524288" crc="c11639af" sha1="ae5e4f06f07fe13a48f414a1cd437a816e9ad2e7" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -39,11 +43,13 @@
<info name="serial" value="SWJ-KGT003"/>
<info name="release" value="19991229"/>
<info name="alt_title" value="爆走デコトラ伝説 フォー ワンダースワン"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-kgt003.bin" size="2097152" crc="392dd813" sha1="821bb81917445b63ac663c706ab4ce27de28543f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -54,11 +60,13 @@
<info name="serial" value="SWJ-KNM001"/>
<info name="release" value="19990428"/>
<info name="alt_title" value="ビートマニア for ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="16777216">
<rom name="swj-knm001.bin" size="16777216" crc="324622c9" sha1="544e76133fa53fc0ae5e00e3465b9cf634f14fd0" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -69,11 +77,13 @@
<info name="serial" value="SWJ-BAN01B"/>
<info name="release" value="19991209"/>
<info name="alt_title" value="バッファーズエボリューション"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban01b.bin" size="4194304" crc="b25a0635" sha1="35eea568f756bacf533bb9aaad7e3239ba00e411" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -85,6 +95,7 @@
<info name="release" value="19990729"/>
<info name="alt_title" value="クレイジー・クライマー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-nhb001.bin" size="524288" crc="c995274b" sha1="67a80b7fb00c3afe0ce9b0f8975c6d250a2cd49d" offset="000000" />
</dataarea>
@@ -98,11 +109,13 @@
<info name="serial" value="SWJ-BAN01A"/>
<info name="release" value="19991202"/>
<info name="alt_title" value="カードキャプターさくら ~さくらとふしぎなクロウカード~"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban01a.bin" size="2097152" crc="7f3a14c0" sha1="39e9a897b681b2c326b052827d7c534f22290286" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -113,11 +126,13 @@
<info name="serial" value="SWJ-BAN00B"/>
<info name="release" value="19990610"/>
<info name="alt_title" value="カオスギア 導かれし者"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban00b.bin" size="2097152" crc="27b3cc18" sha1="e212bba4fac51bbfcf440966da0e67b1686dcfc5" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -128,11 +143,13 @@
<info name="serial" value="SWJ-BAN002"/>
<info name="release" value="19990304"/>
<info name="alt_title" value="チョコボの不思議なダンジョン for ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban002.bin" size="2097152" crc="ccaa4853" sha1="3b62fd2841602f1077270848ab7a3aad58712ee9" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -143,11 +160,13 @@
<info name="serial" value="SWJ-BAN023"/>
<info name="release" value="20000210"/>
<info name="alt_title" value="超兄貴 男の魂札"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban023.bin" size="1048576" crc="7fff2520" sha1="eb538b82c5516fae8ce38778e41fb118aa5c830f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -159,9 +178,12 @@
<info name="release" value="19991216"/>
<info name="alt_title" value="超伝奇カードバトル 妖符魔界 菊地秀行"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-kbs002.bin" size="2097152" crc="56e2c069" sha1="c4436a59fd830ba6af2d63462f71e1ab1cfa3212" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -172,11 +194,13 @@
<info name="serial" value="SWJ-KGT002"/>
<info name="release" value="19991209"/>
<info name="alt_title" value="クロックタワー フォー ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-kgt002.bin" size="2097152" crc="a9936941" sha1="4ba44f23d3b43ee730ce34d56f4cadaf429b6d1b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -188,6 +212,7 @@
<info name="release" value="19991007"/>
<info name="alt_title" value="電車でGO ! 2"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="4194304">
<rom name="swj-cft001.bin" size="4194304" crc="af9d8f42" sha1="c07f776ac4374b648d1a49efd9d6fcd0db2ac1fa" offset="000000" />
</dataarea>
@@ -202,6 +227,7 @@
<info name="release" value="19990304"/>
<info name="alt_title" value="電車でGO!"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="4194304">
<rom name="swj-tat001.bin" size="4194304" crc="b62e5dd0" sha1="d3da0ae529c6f78162682141154a95879f288ca7" offset="000000" />
</dataarea>
@@ -215,11 +241,13 @@
<info name="serial" value="SWJ-BAN032"/>
<info name="release" value="20000803"/>
<info name="alt_title" value="デジモンアドベンチャー02 タッグテイマーズ"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban032.bin" size="2097152" crc="6ededaf8" sha1="44a5502b70ea75926b87377e3f634c8093bc574a" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -230,11 +258,13 @@
<info name="serial" value="SWJ-BAN01C"/>
<info name="release" value="19991216"/>
<info name="alt_title" value="デジモンアドベンチャー アノードテイマー"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban01c.bin" size="2097152" crc="6e9dd148" sha1="9db54826c2887dea07aac774bd15e092596e37af" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -245,11 +275,13 @@
<info name="serial" value="SWJ-BAN01D"/>
<info name="release" value="20000120"/>
<info name="alt_title" value="デジモンアドベンチャー カソードテイマー"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban01d.bin" size="2097152" crc="42ad238b" sha1="0b54cc1d350ab92c42ce8214784389b994562bf6" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -261,9 +293,12 @@
<info name="release" value="19990325"/>
<info name="alt_title" value="デジタルモンスター バージョン ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban005.bin" size="2097152" crc="ab59de2e" sha1="ecea24db6e65254ab4d6e312de0eb951c7df716f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -273,11 +308,13 @@
<year>19??</year>
<publisher>Bandai</publisher>
<info name="serial" value="SWJ-BAN001"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban001asia.bin" size="2097152" crc="94ea6ffc" sha1="5cc59ec1687fe83ec5fb048d3dfc37849747df34" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -289,9 +326,12 @@
<info name="release" value="20000525"/>
<info name="alt_title" value="デジモンアドベンチャー02 デジタルパートナー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban02c.bin" size="2097152" crc="b5e675ae" sha1="c622f6742ca3f0129fc12dce0a1c17d292388ffb" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -303,9 +343,12 @@
<info name="release" value="20000106"/>
<info name="alt_title" value="どこでもハムスター"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="sw-bec003.bin" size="1048576" crc="89e7d950" sha1="3d5a1ed77e721908eb1145aaedef17c0ee6355ae" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -316,11 +359,13 @@
<info name="serial" value="SWJ-BAN01E"/>
<info name="release" value="19991222"/>
<info name="alt_title" value="たねをまく鳥 / boxart: D'sGarage21公募ゲーム たねをまく鳥 (D's Garage 21 Koubo Game - Tane o Maku Tori)"/>
- <!-- 1k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban01e.bin" size="1048576" crc="b1caec06" sha1="83e190af2e25fbb3e93b1d5835c52fe6f1d279ce" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -331,11 +376,13 @@
<info name="serial" value="SWJ-NAP001"/>
<info name="release" value="19991028"/>
<info name="alt_title" value="えんがちょ! for ワンダースワン"/>
- <!-- 1k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-nap001.bin" size="1048576" crc="4e467626" sha1="f79451034b6d844f0e10c825306bbc26f26a5466" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -346,11 +393,13 @@
<info name="serial" value="SWJ-BAN00E"/>
<info name="release" value="19990722"/>
<info name="alt_title" value="新世紀エヴァンゲリオン シト育成"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban00e.bin" size="2097152" crc="bf8d9212" sha1="ae31488cee1c91f383efbe3083b4abec092dda36" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -361,11 +410,13 @@
<info name="serial" value="SWJ-BEC002"/>
<info name="release" value="19991209"/>
<info name="alt_title" value="フィーバー サンキョー 公式パチンコシミュレーション フォー ワンダースワン"/>
- <!-- 1k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="2097152">
<rom name="swj-bec002.bin" size="2097152" crc="8922dd0b" sha1="f26b0215c49e04cb8ef6f031b627dff6a49d2015" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -376,11 +427,13 @@
<info name="serial" value="SWJ-BEC004"/>
<info name="release" value="20000224"/>
<info name="alt_title" value="フィッシングフリークス バスライズ フォー ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-bec004.bin" size="1048576" crc="a1fb16fc" sha1="f8f077da30f227f3793e97c7f1d656559f08b9d4" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -391,11 +444,13 @@
<info name="serial" value="SWJ-BAN026"/>
<info name="release" value="20000323"/>
<info name="alt_title" value="ファイナルラップ2000"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban026.bin" size="1048576" crc="ce2f1a1d" sha1="cfcb14be6d2f1dbffdfcefb8c8d83b4f39bc102b" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -406,11 +461,13 @@
<info name="serial" value="SWJ-KGT007"/>
<info name="release" value="20000831"/>
<info name="alt_title" value="ファイヤープロレスリング フォー ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-kgt007.bin" size="4194304" crc="f246a68e" sha1="fbb745b016cc710ff6f82ec3091a181415d8de61" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -422,6 +479,7 @@
<info name="release" value="19990415"/>
<info name="alt_title" value="元祖じゃじゃ丸くん"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-jlc001.bin" size="524288" crc="a193458c" sha1="cbf6455e89b20a000b6121e5c485be1a20d1f726" offset="000000" />
</dataarea>
@@ -436,6 +494,7 @@
<info name="release" value="20000629"/>
<info name="alt_title" value="グローカルヘキサイト"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-kgt008.bin" size="524288" crc="8fcd6d2c" sha1="e100d54e5c63512dbd655f0439870e08ced439dd" offset="000000" />
</dataarea>
@@ -449,11 +508,13 @@
<info name="serial" value="SWJ-SUM006"/>
<info name="release" value="20000113"/>
<info name="alt_title" value="五目並べ&amp;リバーシ 登龍門"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-sum006.bin" size="524288" crc="6cd1411e" sha1="867f23963e33b26a781aa96851748e483e41fcad" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -465,9 +526,12 @@
<info name="release" value="19990401"/>
<info name="alt_title" value="語楽王 タンゴ !"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-paw001.bin" size="1048576" crc="00137e86" sha1="af3fe9da3f5ee0f5a7b06b0440223db88fcb3bf2" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x400">
+ </dataarea>
</part>
</software>
@@ -478,11 +542,13 @@
<info name="serial" value="SWJ-BAN015"/>
<info name="release" value="19990826"/>
<info name="alt_title" value="機動戦士ガンダム エムエスバーサス"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban015.bin" size="2097152" crc="53b9fef8" sha1="2688ca67ac31ce3d5c3523b0e11cad55e70fa257" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -493,11 +559,13 @@
<info name="serial" value="SWJ-BAN010"/>
<info name="release" value="19990304"/>
<info name="alt_title" value="グンペイ"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban010.bin" size="1048576" crc="a1656bbb" sha1="ee4b777f029bac9561e60c19407d08360e733822" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -508,11 +576,13 @@
<info name="serial" value="SWJ-KGT005"/>
<info name="release" value="20000217"/>
<info name="alt_title" value="花札しようよ"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-kgt005.bin" size="524288" crc="8e027330" sha1="4504b62212e1637dfd92e4f985a8497fa38941cd" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -524,6 +594,7 @@
<info name="release" value="19990513"/>
<info name="alt_title" value="携帯魚群探知機 ワンダースワン ハンディーソナー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban00f.bin" size="1048576" crc="2ab9852d" sha1="70d65a936ee1dfc2b89c543312c205285d955efb" offset="000000" />
</dataarea>
@@ -537,11 +608,13 @@
<info name="serial" value="SWJ-SRV001"/>
<info name="release" value="19991007"/>
<info name="alt_title" value="ハロボッツ"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-srv001.bin" size="2097152" crc="aa525c04" sha1="1f42c5694a798de8ff3c68f63dfc7395be1669a5" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -553,9 +626,12 @@
<info name="release" value="20000601"/>
<info name="alt_title" value="ハンター×ハンター 意志を継ぐ者"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban02a.bin" size="4194304" crc="70aa800e" sha1="57b4278fc5812f52413ca65f45225922d4f2ec3d" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -567,9 +643,12 @@
<info name="release" value="20000304"/>
<info name="alt_title" value="うずまき 呪いシミュレーション"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="2097152">
<rom name="swj-omm002.bin" size="2097152" crc="ca3f0b00" sha1="38f708a4c0c4fcec0cf4d6ce051d1ff76466d617" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -581,9 +660,12 @@
<info name="release" value="19990930"/>
<info name="alt_title" value="格闘料理伝説 ビストロレシピ ワンダーバトル編"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-bpr002.bin" size="1048576" crc="4d103236" sha1="b40fbc7b72921c9ac31330831c0f77e4133ec7d6" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -595,9 +677,12 @@
<info name="release" value="19990914"/>
<info name="alt_title" value="競馬予想支援ソフト 予想進化論"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-mde001.bin" size="524288" crc="945fc213" sha1="461f87e6e301b0dbb6324d908d4ca7efd7518e20" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -608,11 +693,13 @@
<info name="serial" value="SWJ-KDX001"/>
<info name="release" value="19991202"/>
<info name="alt_title" value="キスより... ~シーサイドセレナーデ~"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-kdx001.bin" size="2097152" crc="3b4c60c6" sha1="9ef89b6fe68c5a06d34344e8c783ec24114ad959" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -623,11 +710,13 @@
<info name="serial" value="SWJ-BAN008"/>
<info name="release" value="19990520"/>
<info name="alt_title" value="風のクロノアムーンライトミュージアム"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban008.bin" size="1048576" crc="80c6ef12" sha1="207a3ceb9a09eabca6e455deeb7035e7e04c9795" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -639,9 +728,12 @@
<info name="release" value="19990415"/>
<info name="alt_title" value="子育てクイズ どこでもマイエンジェル"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban007.bin" size="2097152" crc="4c48624c" sha1="52b154a3e36d01357649a9f7f614139ce6cc46b8" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -653,9 +745,12 @@
<info name="release" value="19991118"/>
<info name="alt_title" value="競走馬育成シミュレーション ケイバ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-bec001.bin" size="1048576" crc="ecfbcb1d" sha1="a309a430fbbed6c42f41d8ccaf4aba82e96d6a7b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -666,11 +761,13 @@
<info name="serial" value="SWJ-BAN024"/>
<info name="release" value="20000309"/>
<info name="alt_title" value="ラングリッサーミレニアム WS ~The LastCentury~"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban024.bin" size="1048576" crc="9e0854e2" sha1="9fdf3f5821f2a4488139525fe49e87b23de4571f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -682,9 +779,12 @@
<info name="release" value="19990527"/>
<info name="alt_title" value="ラストスタンド"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="sw-ban009.bin" size="2097152" crc="cccaf8a1" sha1="d524da01f2bfad92c2fa080950229955a3030ef2" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -696,9 +796,12 @@
<info name="release" value="20000420"/>
<info name="alt_title" value="ロードランナー フォー ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="524288">
<rom name="swj-bpr004.bin" size="524288" crc="e407cabf" sha1="91595cd5d5192db50eda883157852ff81994990c" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -710,9 +813,12 @@
<info name="release" value="20000323"/>
<info name="alt_title" value="超時空要塞マクロス トゥルーラブソング"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-lay001.bin" size="4194304" crc="62d419cd" sha1="211e051db3fd4d7ae1ea143e043f87cfbcec5f1c" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -724,6 +830,7 @@
<info name="release" value="19991014"/>
<info name="alt_title" value="マジカルドロップ for ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="1048576">
<rom name="swj-dte002.bin" size="1048576" crc="637ada93" sha1="a25944969068ee495254f94c2c48dfffcb66ce8d" offset="000000" />
</dataarea>
@@ -738,9 +845,12 @@
<info name="release" value="19990311"/>
<info name="alt_title" value="麻雀 登龍門"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-sum001.bin" size="1048576" crc="e7e7fd4c" sha1="281079b22cb213ee4dda5c304b5b5be028130929" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -751,11 +861,13 @@
<info name="serial" value="SWJ-BAN011"/>
<info name="release" value="19990722"/>
<info name="alt_title" value="魔界村 for ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban011.bin" size="2097152" crc="00b31fbb" sha1="5eaeab859e5f647fac354dad285a311387ea126b" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -766,11 +878,13 @@
<info name="serial" value="SWJ-BAN012"/>
<info name="release" value="19990805"/>
<info name="alt_title" value="名探偵コナン 魔術師の挑戦状!"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban012.bin" size="1048576" crc="92fbf7fb" sha1="8f3f97be31f3bd0e6922ab7795aa6f04bc5cfe2a" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -782,9 +896,12 @@
<info name="release" value="20000727"/>
<info name="alt_title" value="名探偵コナン 西の名探偵 最大の危機!?"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban027.bin" size="2097152" crc="e226863b" sha1="e5684789e81f9d739010db575022a12a448b5509" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -796,9 +913,12 @@
<info name="release" value="19990504"/>
<info name="alt_title" value="メダロット パーフェクトエディション - カブトバージョン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-mga001.bin" size="1048576" crc="12fb8b28" sha1="509e5748e5efdfb56093c78ae886153dd1838215" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -810,9 +930,12 @@
<info name="release" value="19990504"/>
<info name="alt_title" value="メダロット パーフェクトエディション - クワガタバージョン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-mga002.bin" size="1048576" crc="2b40745d" sha1="315061e4739e947175d6ad7f006498cd61a33f8c" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -824,6 +947,7 @@
<info name="release" value="19991102"/>
<info name="alt_title" value="ミングルマグネット"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-hal002.bin" size="524288" crc="9baac7bb" sha1="c7230ef709f6ceaef9a220541c8cdc05c0cd549f" offset="000000" />
</dataarea>
@@ -838,9 +962,12 @@
<info name="release" value="19991007"/>
<info name="alt_title" value="プロ麻雀 極 フォー ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-atn001.bin" size="1048576" crc="90f7e6d6" sha1="32013a7a745a3aa2fd63cc9427c5e1f2635655ed" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -852,21 +979,26 @@
<info name="release" value="19990715"/>
<info name="alt_title" value="日本プロ麻雀連盟公認 徹萬"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-kgt001.bin" size="1048576" crc="44b3e67c" sha1="4eefc5a51008c2ab33e8d04064ec9bdcbc03d036" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
<software name="mobilewg">
- <!-- Alt title: -->
<description>MobileWonderGate</description>
<year>19??</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="mobilewondergate (japan).bin" size="2097152" crc="80de367d" sha1="92d4a6ff6f2b1152d8935025f38f910155e5d709" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x10000">
+ </dataarea>
</part>
</software>
@@ -878,9 +1010,12 @@
<info name="release" value="20000330"/>
<info name="alt_title" value="燃えろ!!プロ野球 ルーキーズ"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-jlc002.bin" size="1048576" crc="eb995e86" sha1="e88e659cc04fc08a04b8c881f62fe086c5cdab06" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -892,9 +1027,12 @@
<info name="release" value="19991102"/>
<info name="alt_title" value="森田将棋 フォー ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-yke001.bin" size="524288" crc="b159c30d" sha1="d70fbc6be9a9a0f12cea8a9f7c98aa415e41aafd" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -906,9 +1044,12 @@
<info name="release" value="20000323"/>
<info name="alt_title" value="メタコミセラピー ねぇ聞いて!"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-kgt006.bin" size="2097152" crc="a3ead689" sha1="dc94e17a942acfdc1eb0c38d91bf72460a4bb8f9" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -919,11 +1060,13 @@
<info name="serial" value="SWJ-BVL001"/>
<info name="release" value="19991118"/>
<info name="alt_title" value="謎王 Pocket"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-bvl001.bin" size="1048576" crc="4ed8820c" sha1="b358c65bae818c4b3de6bf668d16c311534036c2" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -934,11 +1077,13 @@
<info name="serial" value="SWJ-SUM002"/>
<info name="release" value="19990408"/>
<info name="alt_title" value="ナイスオン"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-sum002.bin" size="1048576" crc="b5dbcf12" sha1="6a479ee45e69cd3d6cc6cdda5a60eff3077953b0" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -949,11 +1094,13 @@
<info name="serial" value="SWJ-KEX001"/>
<info name="release" value="19990311"/>
<info name="alt_title" value="信長の野望 for ワンダースワン"/>
- <!-- TOOD -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-kex001.bin" size="524288" crc="c1734309" sha1="b143cece1e7db9d9f660f4e9ca3a95b02a71dcd3" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -964,11 +1111,13 @@
<info name="serial" value="SWJ-SUN004"/>
<info name="release" value="20000106"/>
<info name="alt_title" value="おーちゃんのお絵かきロジック"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="524288">
<rom name="swj-sun004.bin" size="524288" crc="631bd97a" sha1="0f73d3112b1184f74e728cf1252ffbee6a146fa6" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -979,11 +1128,13 @@
<info name="serial" value="SWJ-BAN02B"/>
<info name="release" value="20000719"/>
<info name="alt_title" value="フロムテレビアニメーション ワンピース めざせ海賊王!"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban02b.bin" size="1048576" crc="f2e362b8" sha1="99c831c27c478064e3d3fa8f9f089cc28f0e946f" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -994,11 +1145,13 @@
<info name="serial" value="SWJ-SUN003"/>
<info name="release" value="19990701"/>
<info name="alt_title" value="パズルボブル"/>
- <!-- 1k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="524288">
<rom name="swj-sun003.bin" size="524288" crc="302499b9" sha1="5e7dabb66b0ca580481aa79ee8b8a5b0c6ce6592" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1009,11 +1162,13 @@
<info name="serial" value="SWJ-BAN00A"/>
<info name="release" value="20000406"/>
<info name="alt_title" value="ポケットファイター"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban00a.bin" size="2097152" crc="35361250" sha1="fb8d0f4e58a4192989ec71eb6e392d182aaa3eec" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1025,6 +1180,7 @@
<info name="release" value="19990311"/>
<info name="alt_title" value="ぷよぷよ通"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban004.bin" size="1048576" crc="5a41a7ba" sha1="d72c1221c2ce3e281a0ee288a3d079aa8e1b714b" offset="000000" />
</dataarea>
@@ -1038,11 +1194,13 @@
<info name="serial" value="SWJ-MGH003"/>
<info name="release" value="20000629"/>
<info name="alt_title" value="レインボーアイランド パティーズ☆パーティ!"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-mgh003.bin" size="2097152" crc="8f8608ad" sha1="759deb79a3fc3befed705d7264e4b88adbadacc7" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1053,11 +1211,13 @@
<info name="serial" value="SWJ-KDK001"/>
<info name="release" value="20000810"/>
<info name="alt_title" value="リング インフィニティ"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-kdk001.bin" size="4194304" crc="14adbd4b" sha1="9896d93c97381dc06b6f044de6c9bd112ca0c94b" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -1069,9 +1229,12 @@
<info name="release" value="20000330"/>
<info name="alt_title" value="スーパーロボット大戦 コンパクト2 第1部:地上激闘篇"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-bpr003.bin" size="4194304" crc="782877bc" sha1="e6911e5bb0a742ba299e05b20ee81f2faa4854a5" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1082,11 +1245,13 @@
<info name="serial" value="SWJ-BPR006"/>
<info name="release" value="20000914"/>
<info name="alt_title" value="スーパーロボット大戦 コンパクト2 第2部:宇宙激震篇"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-bpr006.bin" size="4194304" crc="ecbb46de" sha1="6014ac0b8978e710f26c9cc41180cdf788584743" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1097,11 +1262,13 @@
<info name="serial" value="SWJ-BPR007"/>
<info name="release" value="20010118"/>
<info name="alt_title" value="スーパーロボット大戦 コンパクト2 第3部:銀河決戦篇"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-bpr007.bin" size="4194304" crc="0b0f8981" sha1="d24d8cea57c5c487e877eaa523eefb0dd184556d" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1112,11 +1279,13 @@
<info name="serial" value="SWJ-BPR001"/>
<info name="release" value="19990428"/>
<info name="alt_title" value="スーパーロボット大戦 コンパクト"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-bpr001.bin" size="2097152" crc="7021d54f" sha1="e93d58ab5819992e54223f5d1c4d5aeb6983d6a3" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1128,9 +1297,13 @@
<info name="release" value="20000804"/>
<info name="alt_title" value="ワンダーボーグ 完"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban033.bin" size="1048576" crc="6adf0e32" sha1="4d4d4a3fde6b1dbbc8f008fbd035fb59624dfba7" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1142,9 +1315,13 @@
<info name="release" value="20000804"/>
<info name="alt_title" value="ワンダーボーグ 完"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
+ <feature name="rtc" value="yes" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban033asia.bin" size="1048576" crc="be6be690" sha1="2117ed92e8cb4ae61868535f1d4d16851b480890" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1155,11 +1332,13 @@
<info name="serial" value="SWJ-BAN013"/>
<info name="release" value="19991028"/>
<info name="alt_title" value="ロックマン&amp;フォルテ 未来からの挑戦者"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban013.bin" size="2097152" crc="cd206a9e" sha1="9f8829aa8ea523e8370cbb2acd2acce056bb7958" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1170,11 +1349,13 @@
<info name="serial" value="SWJ-KEX002"/>
<info name="release" value="19990401"/>
<info name="alt_title" value="三国志 for ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-kex002.bin" size="524288" crc="e385ee88" sha1="d064b94f31b15564c9a3dbd3a68690244ea043ac" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1186,9 +1367,12 @@
<info name="release" value="20000406"/>
<info name="alt_title" value="三国志II フォー ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-kex004.bin" size="524288" crc="812b720d" sha1="59d904149c3f405357b2715468d509095388a194" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1199,11 +1383,13 @@
<info name="serial" value="SWJ-BAN006"/>
<info name="release" value="19990527"/>
<info name="alt_title" value="SDガンダム エモーショナルジャム"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban006.bin" size="2097152" crc="ae83f873" sha1="ae54a1f8916a2d37a1e0c82c5a9b5d8fe0eeae51" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1215,9 +1401,12 @@
<info name="release" value="19991229"/>
<info name="alt_title" value="SD ガンダム ガシャポン戦記 -エピソード1-"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban020.bin" size="1048576" crc="21eb4c59" sha1="e6899de5b53f73c8978e3330dca0f2daaf95f140" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1228,11 +1417,13 @@
<info name="serial" value="SWJ-BAN030"/>
<info name="release" value="20000713"/>
<info name="alt_title" value="SDガンダム Gジェネレーション ギャザービート"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban030.bin" size="4194304" crc="e4eb3ab1" sha1="5e5db8b066e1b41c5c12a2d4ffa97b73ed6c3f03" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1243,11 +1434,13 @@
<info name="serial" value="SWJ-BAN022"/>
<info name="release" value="20000224"/>
<info name="alt_title" value="仙界伝 ~TVアニメーション仙界伝封神演義より~"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-ban022.bin" size="2097152" crc="07a3dd46" sha1="fc8b0b9b7efeac54812e7ae54153b7ae0cb9c12f" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1258,11 +1451,13 @@
<info name="serial" value="SWJ-BAN025"/>
<info name="release" value="20000316"/>
<info name="alt_title" value="線脳 ミレニアム"/>
- <!-- 1k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban025.bin" size="1048576" crc="301436ac" sha1="708288e70b3186f6c0ef07acaef1b50fe6b7ab22" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1274,9 +1469,12 @@
<info name="release" value="19990401"/>
<info name="alt_title" value="上海 ポケット"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-sun001.bin" size="524288" crc="1c489351" sha1="d64b9b2d567d1cea5960f64e5bdf83d4514446da" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1288,9 +1486,12 @@
<info name="release" value="19990304"/>
<info name="alt_title" value="新日本プロレスリング 闘魂烈伝"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-tmy001.bin" size="1048576" crc="5b76f901" sha1="7324c5939b8b64858c96bd9726f5b5c483a11e22" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1302,9 +1503,12 @@
<info name="release" value="19991028"/>
<info name="alt_title" value="将棋 登龍門"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-sum005.bin" size="524288" crc="fff1c0d6" sha1="c42339590a6d7864cb4f5728b84c4cce09779f0a" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1316,6 +1520,7 @@
<info name="release" value="19991125"/>
<info name="alt_title" value="サイドポケット for ワンダースワン"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="1048576">
<rom name="swj-dte001.bin" size="1048576" crc="8655269e" sha1="4a756dab81e0101475dc2e5494270f3df7dac1e6" offset="000000" />
</dataarea>
@@ -1329,11 +1534,13 @@
<info name="serial" value="SWJ-BAN029"/>
<info name="release" value="20000420"/>
<info name="alt_title" value="スリザーリンク"/>
- <!-- 1k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="524288">
<rom name="swj-ban029.bin" size="524288" crc="f00a0330" sha1="3e31beaca985ac5041c6e95e0d07f163168e190d" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1345,6 +1552,7 @@
<info name="release" value="19990812"/>
<info name="alt_title" value="サッカーやろう! チャレンジ・ザ・ワールド"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-ccj002.bin" size="524288" crc="d7438e58" sha1="6eec04244f4d85807988a2331e7031d0c3549646" offset="000000" />
</dataarea>
@@ -1358,11 +1566,13 @@
<info name="serial" value="SWJ-BVL002"/>
<info name="release" value="19991216"/>
<info name="alt_title" value="卒業 フォー ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-bvl002.bin" size="2097152" crc="f016dfe1" sha1="e461762566d529d1b103f119da50353902d180d7" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1374,6 +1584,7 @@
<info name="release" value="19990513"/>
<info name="alt_title" value="スペースインベーダー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="1048576">
<rom name="swj-sun002.bin" size="1048576" crc="8d83014f" sha1="54dd6e3fe81a8a384a0ffdd7a39211a5de9174c7" offset="000000" />
</dataarea>
@@ -1388,9 +1599,12 @@
<info name="release" value="20000427"/>
<info name="alt_title" value="ワサビ プロデュース ストリートダンサー"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban028.bin" size="4194304" crc="1860b655" sha1="672cfc0e4547b2721d11b67476391b6e6cca81ae" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1402,9 +1616,12 @@
<info name="release" value="20000224"/>
<info name="alt_title" value="対局囲碁 平成棋院"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="524288">
<rom name="swj-kgt004.bin" size="524288" crc="9597f37f" sha1="813f296b5b0ddaa34f1d3e5aa9955b1db1918f7d" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x20000">
+ </dataarea>
</part>
</software>
@@ -1427,11 +1644,13 @@
<info name="serial" value="SWJ-BVL003"/>
<info name="release" value="20000224"/>
<info name="alt_title" value="誕生 デビュー フォー ワンダースワン"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="2097152">
<rom name="swj-bvl003.bin" size="2097152" crc="8b74f59a" sha1="2f35d250b8ddeb98ca3a2704a4ad85713f4c71b0" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1442,11 +1661,13 @@
<info name="serial" value="SWJ-BAN00D"/>
<info name="release" value="19990617"/>
<info name="alt_title" value="鉄拳カードチャレンジ"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban00d.bin" size="1048576" crc="e7c608e5" sha1="96a9ce5e56dc0c9648027ad4454e6f35e88d9a07" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -1457,11 +1678,13 @@
<info name="serial" value="SWJ-BAN014"/>
<info name="release" value="19990508"/>
<info name="alt_title" value="テラーズ"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban014.bin" size="4194304" crc="ef5b6b82" sha1="7148d750f12b5da9a0efd99f5a5a7ccadecbdf60" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1472,11 +1695,13 @@
<info name="serial" value="SWJ-MGH001"/>
<info name="release" value="19991222"/>
<info name="alt_title" value="鉄人28号"/>
- <!-- 1k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-mgh001.bin" size="4194304" crc="6f304dca" sha1="65c4c6aaa36328bba5d56419af59af5d3420ed78" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1487,11 +1712,13 @@
<info name="serial" value="SWJ-BPR005"/>
<info name="release" value="20000427"/>
<info name="alt_title" value="タイム ボカン シリーズ ボカン伝説 ブタもおだてりゃドロンボー"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-bpr005.bin" size="1048576" crc="7da6acb9" sha1="ad77d2e8429d5ed926d514d926050086f4edbeee" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1502,11 +1729,13 @@
<info name="serial" value="SWJ-AAE001"/>
<info name="release" value="20001012"/>
<info name="alt_title" value="東京魔人学園 符咒封録"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="8388608">
<rom name="swj-aae001.bin" size="8388608" crc="91117d1b" sha1="866c67737a4fbb5f09a0b13bbdb89397bcab1f55" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1518,9 +1747,12 @@
<info name="release" value="19991209"/>
<info name="alt_title" value="たれぱんだのぐんぺい"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban01f.bin" size="1048576" crc="a5643aa3" sha1="9622c65c939f05a9dfae288919ec5bd15c348f14" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -1532,6 +1764,7 @@
<info name="release" value="20000928"/>
<info name="alt_title" value="トランプコレクション ボトムアップ的トランプ生活"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-btm002.bin" size="524288" crc="a18aa7af" sha1="64a3053c0f92681eb514e55adabc8ba0da1cb1a1" offset="000000" />
</dataarea>
@@ -1558,6 +1791,7 @@
<info name="release" value="19990701"/>
<info name="alt_title" value="トランプコレクション2 ボトムアップ的世界一周の旅"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-btm001.bin" size="524288" crc="07a3b862" sha1="ab3c925bf1bfd36403335af0c0365be8a2950ca8" offset="000000" />
</dataarea>
@@ -1571,11 +1805,13 @@
<info name="serial" value="SWJ-BAN017"/>
<info name="release" value="19991125"/>
<info name="alt_title" value="タ→ンテ→ブリスト DJバトル"/>
- <!-- 16k EEPROM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban017.bin" size="4194304" crc="0d5171f0" sha1="858f1f57b5522a1701cc8a0abae43cec948e26a6" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x800">
+ </dataarea>
</part>
</software>
@@ -1587,6 +1823,7 @@
<info name="release" value="19990401"/>
<info name="alt_title" value="海釣りに行こう!"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_rom" />
<dataarea name="rom" size="524288">
<rom name="swj-ccj001.bin" size="524288" crc="86b56511" sha1="4f739292d11a45490851eaf40c0a7081824ad75a" offset="000000" />
</dataarea>
@@ -1601,9 +1838,12 @@
<info name="release" value="20000203"/>
<info name="alt_title" value="うずまき ~電視怪奇篇~"/>
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_eeprom" />
<dataarea name="rom" size="2097152">
<rom name="swj-omm001.bin" size="2097152" crc="812020ef" sha1="4c8166e0632bdb8c098d586a7b1522ed7b63b5f7" offset="000000" />
</dataarea>
+ <dataarea name="eeprom" size="0x80">
+ </dataarea>
</part>
</software>
@@ -1614,11 +1854,13 @@
<info name="serial" value="SWJ-BAN00C"/>
<info name="release" value="19990624"/>
<info name="alt_title" value="ヴァイツブレイド"/>
- <!-- 256k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="4194304">
<rom name="swj-ban00c.bin" size="4194304" crc="8fc9e145" sha1="cfb877f0988920c8fe4da5cdd7583197799df621" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x8000">
+ </dataarea>
</part>
</software>
@@ -1629,11 +1871,13 @@
<info name="serial" value="SWJ-BAN019"/>
<info name="release" value="1999-09"/>
<info name="alt_title" value="ワンダースタジアム'99"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban019.bin" size="1048576" crc="e252919d" sha1="bb138765346d9f4d77615444d090b1328a59818a" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
@@ -1644,11 +1888,13 @@
<info name="serial" value="SWJ-BAN003"/>
<info name="release" value="1999-03"/>
<info name="alt_title" value="ワンダースタジアム"/>
- <!-- 64k SRAM -->
<part name="cart" interface="wswan_cart">
+ <feature name="slot" value="ws_sram" />
<dataarea name="rom" size="1048576">
<rom name="swj-ban003.bin" size="1048576" crc="23bc0309" sha1="cb9454a8277bb2a7d5a6e3b4ddc84194fcbb1231" offset="000000" />
</dataarea>
+ <dataarea name="sram" size="0x2000">
+ </dataarea>
</part>
</software>
diff --git a/src/emu/bus/bus.mak b/src/emu/bus/bus.mak
index 405fcc284df..d3f7c3b7cab 100644
--- a/src/emu/bus/bus.mak
+++ b/src/emu/bus/bus.mak
@@ -1393,3 +1393,15 @@ BUSOBJS += $(BUSOBJ)/vtech/ioexp/carts.o
BUSOBJS += $(BUSOBJ)/vtech/ioexp/joystick.o
BUSOBJS += $(BUSOBJ)/vtech/ioexp/printer.o
endif
+
+#-------------------------------------------------
+#
+#@src/emu/bus/wswan/slot.h,BUSES += WSWAN
+#-------------------------------------------------
+
+ifneq ($(filter WSWAN,$(BUSES)),)
+OBJDIRS += $(BUSOBJ)/wswan
+BUSOBJS += $(BUSOBJ)/wswan/slot.o
+BUSOBJS += $(BUSOBJ)/wswan/rom.o
+endif
+
diff --git a/src/emu/bus/wswan/rom.c b/src/emu/bus/wswan/rom.c
new file mode 100644
index 00000000000..cdba3af7892
--- /dev/null
+++ b/src/emu/bus/wswan/rom.c
@@ -0,0 +1,535 @@
+/***********************************************************************************************************
+
+
+ Bandai Wonderswan / Wonderswan Color cart emulation
+
+
+ ***********************************************************************************************************/
+
+
+#include "emu.h"
+#include "rom.h"
+
+enum
+{
+ EEPROM_1K, EEPROM_8K, EEPROM_16K
+};
+
+//-------------------------------------------------
+// ws_rom_device - constructor
+//-------------------------------------------------
+
+const device_type WS_ROM_STD = &device_creator<ws_rom_device>;
+const device_type WS_ROM_SRAM = &device_creator<ws_rom_sram_device>;
+const device_type WS_ROM_EEPROM = &device_creator<ws_rom_eeprom_device>;
+
+
+ws_rom_device::ws_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_ws_cart_interface( mconfig, *this )
+{
+}
+
+ws_rom_device::ws_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, WS_ROM_STD, "Wonderswan Standard Carts", tag, owner, clock, "ws_rom", __FILE__),
+ device_ws_cart_interface( mconfig, *this )
+{
+}
+
+ws_rom_sram_device::ws_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : ws_rom_device(mconfig, WS_ROM_SRAM, "Wonderswan Carts w/SRAM", tag, owner, clock, "ws_sram", __FILE__)
+{
+}
+
+
+ws_rom_eeprom_device::ws_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : ws_rom_device(mconfig, WS_ROM_EEPROM, "Wonderswan Carts w/EEPROM", tag, owner, clock, "ws_eeprom", __FILE__)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void ws_rom_device::device_start()
+{
+ save_item(NAME(m_base20));
+ save_item(NAME(m_base30));
+ save_item(NAME(m_base40));
+ save_item(NAME(m_io_regs));
+
+ // Set up RTC timer
+ if (m_has_rtc)
+ {
+ rtc_timer = timer_alloc(TIMER_RTC);
+ rtc_timer->adjust(attotime::zero, 0, attotime::from_seconds(1));
+ }
+
+ save_item(NAME(m_rtc_setting));
+ save_item(NAME(m_rtc_year));
+ save_item(NAME(m_rtc_month));
+ save_item(NAME(m_rtc_day));
+ save_item(NAME(m_rtc_day_of_week));
+ save_item(NAME(m_rtc_hour));
+ save_item(NAME(m_rtc_minute));
+ save_item(NAME(m_rtc_second));
+ save_item(NAME(m_rtc_index));
+}
+
+void ws_rom_device::device_reset()
+{
+ m_base20 = ((0xff & m_bank_mask) << 16) & (m_rom_size - 1);
+ m_base30 = ((0xff & m_bank_mask) << 16) & (m_rom_size - 1);
+ m_base40 = (((0xf0 & m_bank_mask) | 4) << 16) & (m_rom_size - 1);
+ printf("%x - %x - %x\n", m_base20, m_base30, m_base40);
+
+ memset(m_io_regs, 0, sizeof(m_io_regs));
+
+ // Initialize RTC
+ m_rtc_index = 0;
+ m_rtc_year = 0;
+ m_rtc_month = 0;
+ m_rtc_day = 0;
+ m_rtc_day_of_week = 0;
+ m_rtc_hour = 0;
+ m_rtc_minute = 0;
+ m_rtc_second = 0;
+ m_rtc_setting = 0xff;
+}
+
+void ws_rom_sram_device::device_start()
+{
+ save_item(NAME(m_nvram_base));
+ ws_rom_device::device_start();
+}
+
+void ws_rom_sram_device::device_reset()
+{
+ m_nvram_base = 0;
+ ws_rom_device::device_reset();
+}
+
+void ws_rom_eeprom_device::device_start()
+{
+ ws_rom_device::device_start();
+
+ save_item(NAME(m_eeprom_address));
+ save_item(NAME(m_eeprom_command));
+ save_item(NAME(m_eeprom_start));
+ save_item(NAME(m_eeprom_write_enabled));
+}
+
+void ws_rom_eeprom_device::device_reset()
+{
+ m_eeprom_address = 0;
+ m_eeprom_command = 0;
+ m_eeprom_start = 0;
+ m_eeprom_write_enabled = 0;
+ switch (m_nvram.count())
+ {
+ case 0x80:
+ m_eeprom_mode = EEPROM_1K;
+ break;
+ case 0x400:
+ m_eeprom_mode = EEPROM_8K;
+ break;
+ case 0x800:
+ m_eeprom_mode = EEPROM_16K;
+ break;
+ }
+ ws_rom_device::device_reset();
+}
+
+
+
+//-------------------------------------------------
+// device_timer - handler timer events
+//-------------------------------------------------
+
+void ws_rom_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ if (id == TIMER_RTC)
+ {
+ // a second passed
+ m_rtc_second++;
+ if ((m_rtc_second & 0x0f) > 9)
+ m_rtc_second = (m_rtc_second & 0xf0) + 0x10;
+
+ // check for minute passed
+ if (m_rtc_second >= 0x60)
+ {
+ m_rtc_second = 0;
+ m_rtc_minute++;
+ if ((m_rtc_minute & 0x0f) > 9)
+ m_rtc_minute = (m_rtc_minute & 0xf0) + 0x10;
+ }
+
+ // check for hour passed
+ if (m_rtc_minute >= 0x60)
+ {
+ m_rtc_minute = 0;
+ m_rtc_hour++;
+ if ((m_rtc_hour & 0x0f) > 9)
+ m_rtc_hour = (m_rtc_hour & 0xf0) + 0x10;
+ if (m_rtc_hour == 0x12)
+ m_rtc_hour |= 0x80;
+ }
+
+ // check for day passed
+ if (m_rtc_hour >= 0x24)
+ {
+ m_rtc_hour = 0;
+ m_rtc_day++;
+ }
+ }
+}
+
+
+/*-------------------------------------------------
+ mapper specific handlers
+ -------------------------------------------------*/
+
+READ8_MEMBER(ws_rom_device::read_rom20)
+{
+ return m_rom[offset + m_base20];
+}
+
+
+READ8_MEMBER(ws_rom_device::read_rom30)
+{
+ return m_rom[offset + m_base30];
+}
+
+
+READ8_MEMBER(ws_rom_device::read_rom40)
+{
+ // we still need to mask in some cases, e.g. when game is 512K
+ return m_rom[(offset + m_base40) & (m_rom_size - 1)];
+}
+
+
+READ8_MEMBER(ws_rom_device::read_io)
+{
+ UINT8 value = m_io_regs[offset];
+
+ switch (offset)
+ {
+ case 0x0b: // RTC data
+ if (!m_has_rtc)
+ break;
+
+ if (m_io_regs[0x0a] == 0x95 && (m_rtc_index < 7))
+ {
+ switch (m_rtc_index)
+ {
+ case 0: value = m_rtc_year; break;
+ case 1: value = m_rtc_month; break;
+ case 2: value = m_rtc_day; break;
+ case 3: value = m_rtc_day_of_week; break;
+ case 4: value = m_rtc_hour; break;
+ case 5: value = m_rtc_minute; break;
+ case 6: value = m_rtc_second; break;
+ }
+ m_rtc_index++;
+ }
+ break;
+ }
+
+ return value;
+}
+
+WRITE8_MEMBER(ws_rom_device::write_io)
+{
+ switch (offset)
+ {
+ case 0x00:
+ // Bit 0-3 - ROM bank base register for segments 3-15
+ // Bit 4-7 - Unknown
+ data = ((data & 0x0f) << 4) | 4;
+ m_base40 = ((data & m_bank_mask) << 16) & (m_rom_size - 1);
+ break;
+ case 0x02: // ROM bank for segment 2 (0x20000 - 0x2ffff)
+ m_base20 = ((data & m_bank_mask) << 16) & (m_rom_size - 1);
+ break;
+ case 0x03: // ROM bank for segment 3 (0x30000 - 0x3ffff)
+ m_base30 = ((data & m_bank_mask) << 16) & (m_rom_size - 1);
+ break;
+ case 0x0a: // RTC Command
+ // Bit 0-4 - RTC command
+ // 10000 - Reset
+ // 10010 - Write timer settings (alarm)
+ // 10011 - Read timer settings (alarm)
+ // 10100 - Set time/date
+ // 10101 - Get time/date
+ // Bit 5-6 - Unknown
+ // Bit 7 - Command done (read only)
+ if (!m_has_rtc)
+ break;
+
+ switch (data)
+ {
+ case 0x10: // Reset
+ m_rtc_index = 8;
+ m_rtc_year = 0;
+ m_rtc_month = 1;
+ m_rtc_day = 1;
+ m_rtc_day_of_week = 0;
+ m_rtc_hour = 0;
+ m_rtc_minute = 0;
+ m_rtc_second = 0;
+ m_rtc_setting = 0xff;
+ data |= 0x80;
+ break;
+ case 0x12: // Write Timer Settings (Alarm)
+ m_rtc_index = 8;
+ m_rtc_setting = m_io_regs[0x0b];
+ data |= 0x80;
+ break;
+ case 0x13: // Read Timer Settings (Alarm)
+ m_rtc_index = 8;
+ m_io_regs[0x0b] = m_rtc_setting;
+ data |= 0x80;
+ break;
+ case 0x14: // Set Time/Date
+ m_rtc_year = m_io_regs[0x0b];
+ m_rtc_index = 1;
+ data |= 0x80;
+ break;
+ case 0x15: // Get Time/Date
+ m_rtc_index = 0;
+ data |= 0x80;
+ m_io_regs[0x0b] = m_rtc_year;
+ break;
+ default:
+ logerror( "Unknown RTC command (%X) requested\n", data);
+ }
+ break;
+ case 0x0b: // RTC Data
+ if (!m_has_rtc)
+ break;
+
+ if (m_io_regs[0x0a] == 0x94 && m_rtc_index < 7)
+ {
+ switch (m_rtc_index)
+ {
+ case 0: m_rtc_year = data; break;
+ case 1: m_rtc_month = data; break;
+ case 2: m_rtc_day = data; break;
+ case 3: m_rtc_day_of_week = data; break;
+ case 4: m_rtc_hour = data; break;
+ case 5: m_rtc_minute = data; break;
+ case 6: m_rtc_second = data; break;
+ }
+ m_rtc_index++;
+ }
+ break;
+ }
+
+ m_io_regs[offset] = data;
+}
+
+READ8_MEMBER(ws_rom_sram_device::read_ram)
+{
+ return m_nvram[m_nvram_base + offset];
+}
+
+WRITE8_MEMBER(ws_rom_sram_device::write_ram)
+{
+ m_nvram[m_nvram_base + offset] = data;
+}
+
+WRITE8_MEMBER(ws_rom_sram_device::write_io)
+{
+ switch (offset)
+ {
+ case 0x01: // SRAM bank to select
+ m_nvram_base = (data * 0x10000) & (m_nvram.count() - 1);
+ default:
+ ws_rom_device::write_io(space, offset, data);
+ break;
+ }
+
+ m_io_regs[offset] = data;
+}
+
+READ8_MEMBER(ws_rom_eeprom_device::read_ram)
+{
+ return m_nvram[offset & (m_nvram.count() - 1)];
+}
+
+WRITE8_MEMBER(ws_rom_eeprom_device::write_ram)
+{
+ m_nvram[offset & (m_nvram.count() - 1)] = data;
+}
+
+
+READ8_MEMBER(ws_rom_eeprom_device::read_io)
+{
+ UINT8 value = m_io_regs[offset];
+
+ switch (offset)
+ {
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ // EEPROM reads, taken from regs
+ break;
+ default:
+ value = ws_rom_device::read_io(space, offset);
+ break;
+ }
+
+ return value;
+}
+
+WRITE8_MEMBER(ws_rom_eeprom_device::write_io)
+{
+ switch (offset)
+ {
+ case 0x06: /* EEPROM address lower bits port/EEPROM address and command port
+ 1KBit EEPROM:
+ Bit 0-5 - EEPROM address bit 1-6
+ Bit 6-7 - Command
+ 00 - Extended command address bit 4-5:
+ 00 - Write disable
+ 01 - Write all
+ 10 - Erase all
+ 11 - Write enable
+ 01 - Write
+ 10 - Read
+ 11 - Erase
+ 16KBit EEPROM:
+ Bit 0-7 - EEPROM address bit 1-8
+ */
+ switch (m_eeprom_mode)
+ {
+ case EEPROM_1K:
+ m_eeprom_address = data & 0x3f;
+ m_eeprom_command = data >> 4;
+ if ((m_eeprom_command & 0x0c) != 0x00)
+ m_eeprom_command = m_eeprom_command & 0x0c;
+ break;
+
+ case EEPROM_8K:
+ case EEPROM_16K:
+ m_eeprom_address = (m_eeprom_address & 0xff00) | data;
+ break;
+
+ default:
+ logerror( "Write EEPROM address/register register C6 for unsupported EEPROM type\n" );
+ break;
+ }
+ break;
+
+ case 0x07: /* EEPROM higher bits/command bits port
+ 1KBit EEPROM:
+ Bit 0 - Start
+ Bit 1-7 - Unknown
+ 16KBit EEPROM:
+ Bit 0-1 - EEPROM address bit 9-10
+ Bit 2-3 - Command
+ 00 - Extended command address bit 0-1:
+ 00 - Write disable
+ 01 - Write all
+ 10 - Erase all
+ 11 - Write enable
+ 01 - Write
+ 10 - Read
+ 11 - Erase
+ Bit 4 - Start
+ Bit 5-7 - Unknown
+ */
+ switch (m_eeprom_mode)
+ {
+ case EEPROM_1K:
+ m_eeprom_start = data & 0x01;
+ break;
+
+ case EEPROM_8K:
+ m_eeprom_address = ((data & 0x01) << 8) | (m_eeprom_address & 0xff);
+ m_eeprom_command = data & 0x0f;
+ if ((m_eeprom_command & 0x0c) != 0x00)
+ m_eeprom_command = m_eeprom_command & 0x0c;
+ m_eeprom_start = (data >> 4) & 0x01;
+ break;
+
+ case EEPROM_16K:
+ m_eeprom_address = ((data & 0x03) << 8) | (m_eeprom_address & 0xff);
+ m_eeprom_command = data & 0x0f;
+ if ((m_eeprom_command & 0x0c) != 0x00)
+ m_eeprom_command = m_eeprom_command & 0x0c;
+ m_eeprom_start = (data >> 4) & 0x01;
+ break;
+
+ default:
+ logerror( "Write EEPROM address/command register C7 for unsupported EEPROM type\n" );
+ break;
+ }
+ break;
+
+ case 0x08: /* EEPROM command
+ Bit 0 - Read complete (read only)
+ Bit 1 - Write complete (read only)
+ Bit 2-3 - Unknown
+ Bit 4 - Read
+ Bit 5 - Write
+ Bit 6 - Protect
+ Bit 7 - Initialize
+ */
+ if (data & 0x80) // Initialize
+ logerror("Unsupported EEPROM command 'Initialize'\n");
+
+ if (data & 0x40) // Protect
+ {
+ switch (m_eeprom_command)
+ {
+ case 0x00:
+ m_eeprom_write_enabled = 0;
+ data |= 0x02;
+ break;
+ case 0x03:
+ m_eeprom_write_enabled = 1;
+ data |= 0x02;
+ break;
+ default:
+ logerror("Unsupported 'Protect' command %X\n", m_eeprom_command);
+ break;
+ }
+ }
+
+ if (data & 0x20) // Write
+ {
+ if (m_eeprom_write_enabled)
+ {
+ switch (m_eeprom_command)
+ {
+ case 0x04:
+ m_nvram[(m_eeprom_address << 1) + 1] = m_io_regs[0x04];
+ m_nvram[m_eeprom_address << 1] = m_io_regs[0x05];
+ data |= 0x02;
+ break;
+ default:
+ logerror("Unsupported 'Write' command %X\n", m_eeprom_command);
+ break;
+ }
+ }
+ }
+
+ if (data & 0x10) // Read
+ {
+ m_io_regs[0x04] = m_nvram[(m_eeprom_address << 1) + 1];
+ m_io_regs[0x05] = m_nvram[m_eeprom_address << 1];
+ data |= 0x01;
+ }
+ break;
+
+ default:
+ ws_rom_device::write_io(space, offset, data);
+ break;
+ }
+
+ m_io_regs[offset] = data;
+}
diff --git a/src/emu/bus/wswan/rom.h b/src/emu/bus/wswan/rom.h
new file mode 100644
index 00000000000..a3f590ef133
--- /dev/null
+++ b/src/emu/bus/wswan/rom.h
@@ -0,0 +1,106 @@
+#ifndef __WS_ROM_H
+#define __WS_ROM_H
+
+#include "slot.h"
+
+
+// ======================> ws_rom_device
+
+class ws_rom_device : public device_t,
+ public device_ws_cart_interface
+{
+public:
+ // construction/destruction
+ ws_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ ws_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom20);
+ virtual DECLARE_READ8_MEMBER(read_rom30);
+ virtual DECLARE_READ8_MEMBER(read_rom40);
+ virtual DECLARE_READ8_MEMBER(read_io);
+ virtual DECLARE_WRITE8_MEMBER(write_io);
+
+protected:
+ UINT8 m_io_regs[0x10];
+ UINT32 m_base20, m_base30, m_base40;
+
+ // RTC
+ UINT8 m_rtc_setting; /* Timer setting byte */
+ UINT8 m_rtc_year; /* Year */
+ UINT8 m_rtc_month; /* Month */
+ UINT8 m_rtc_day; /* Day */
+ UINT8 m_rtc_day_of_week; /* Day of the week */
+ UINT8 m_rtc_hour; /* Hour, high bit = 0 => AM, high bit = 1 => PM */
+ UINT8 m_rtc_minute; /* Minute */
+ UINT8 m_rtc_second; /* Second */
+ UINT8 m_rtc_index; /* index for reading/writing of current of alarm time */
+
+ static const device_timer_id TIMER_RTC = 0;
+ emu_timer *rtc_timer;
+};
+
+
+// ======================> ws_rom_sram_device
+
+class ws_rom_sram_device : public ws_rom_device
+{
+public:
+ // construction/destruction
+ ws_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_ram);
+ virtual DECLARE_WRITE8_MEMBER(write_ram);
+ virtual DECLARE_WRITE8_MEMBER(write_io);
+
+private:
+ UINT32 m_nvram_base;
+};
+
+
+// ======================> ws_rom_eeprom_device
+
+class ws_rom_eeprom_device : public ws_rom_device
+{
+public:
+ // construction/destruction
+ ws_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_ram);
+ virtual DECLARE_WRITE8_MEMBER(write_ram);
+ virtual DECLARE_READ8_MEMBER(read_io);
+ virtual DECLARE_WRITE8_MEMBER(write_io);
+
+private:
+ UINT8 m_eeprom_mode; /* eeprom mode */
+ UINT16 m_eeprom_address; /* Read/write address */
+ UINT8 m_eeprom_command; /* Commands: 00, 01, 02, 03, 04, 08, 0C */
+ UINT8 m_eeprom_start; /* start bit */
+ UINT8 m_eeprom_write_enabled; /* write enabled yes/no */
+ int m_eeprom_size; /* size of eeprom/sram area */
+};
+
+
+
+// device type definition
+extern const device_type WS_ROM_STD;
+extern const device_type WS_ROM_SRAM;
+extern const device_type WS_ROM_EEPROM;
+
+
+#endif
diff --git a/src/emu/bus/wswan/slot.c b/src/emu/bus/wswan/slot.c
new file mode 100644
index 00000000000..30762d9982d
--- /dev/null
+++ b/src/emu/bus/wswan/slot.c
@@ -0,0 +1,491 @@
+/***********************************************************************************************************
+
+ Bandai Wonderswan / Wonderswan Color cart emulation
+ (through slot devices)
+
+ ***********************************************************************************************************/
+
+
+#include "emu.h"
+#include "slot.h"
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type WS_CART_SLOT = &device_creator<ws_cart_slot_device>;
+
+//**************************************************************************
+// Wonderswan Cartridges Interface
+//**************************************************************************
+
+//-------------------------------------------------
+// device_ws_cart_interface - constructor
+//-------------------------------------------------
+
+device_ws_cart_interface::device_ws_cart_interface(const machine_config &mconfig, device_t &device)
+ : device_slot_card_interface(mconfig, device),
+ m_rom(NULL),
+ m_rom_size(0),
+ m_bank_mask(0),
+ m_has_rtc(false),
+ m_is_rotated(false)
+{
+}
+
+
+//-------------------------------------------------
+// ~device_ws_cart_interface - destructor
+//-------------------------------------------------
+
+device_ws_cart_interface::~device_ws_cart_interface()
+{
+}
+
+//-------------------------------------------------
+// rom_alloc - alloc the space for the cart
+//-------------------------------------------------
+
+void device_ws_cart_interface::rom_alloc(UINT32 size, const char *tag)
+{
+ if (m_rom == NULL)
+ {
+ astring tempstring(tag);
+ tempstring.cat(WSSLOT_ROM_REGION_TAG);
+ m_rom = device().machine().memory().region_alloc(tempstring, size, 1, ENDIANNESS_LITTLE)->base();
+ m_rom_size = size;
+ m_bank_mask = ((m_rom_size >> 16) - 1);
+ }
+}
+
+
+//-------------------------------------------------
+// nvram_alloc - alloc the space for the ram
+//-------------------------------------------------
+
+void device_ws_cart_interface::nvram_alloc(UINT32 size)
+{
+ m_nvram.resize(size);
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// ws_cart_slot_device - constructor
+//-------------------------------------------------
+ws_cart_slot_device::ws_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, WS_CART_SLOT, "Wonderswan Cartridge Slot", tag, owner, clock, "ws_cart_slot", __FILE__),
+ device_image_interface(mconfig, *this),
+ device_slot_interface(mconfig, *this),
+ m_type(WS_STD)
+{
+}
+
+
+//-------------------------------------------------
+// ws_cart_slot_device - destructor
+//-------------------------------------------------
+
+ws_cart_slot_device::~ws_cart_slot_device()
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void ws_cart_slot_device::device_start()
+{
+ m_cart = dynamic_cast<device_ws_cart_interface *>(get_card_device());
+}
+
+//-------------------------------------------------
+// device_config_complete - perform any
+// operations now that the configuration is
+// complete
+//-------------------------------------------------
+
+void ws_cart_slot_device::device_config_complete()
+{
+ // set brief and instance name
+ update_names();
+}
+
+
+//-------------------------------------------------
+// WSWAN PCB
+//-------------------------------------------------
+
+struct ws_slot
+{
+ int pcb_id;
+ const char *slot_option;
+};
+
+// Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it
+static const ws_slot slot_list[] =
+{
+ { WS_STD, "ws_rom" },
+ { WS_SRAM, "ws_sram" },
+ { WS_EEPROM, "ws_eeprom" }
+};
+
+static int ws_get_pcb_id(const char *slot)
+{
+ for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
+ {
+ if (!core_stricmp(slot_list[i].slot_option, slot))
+ return slot_list[i].pcb_id;
+ }
+
+ return 0;
+}
+
+static const char *ws_get_slot(int type)
+{
+ for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
+ {
+ if (slot_list[i].pcb_id == type)
+ return slot_list[i].slot_option;
+ }
+
+ return "std";
+}
+
+
+/*-------------------------------------------------
+ call load
+ -------------------------------------------------*/
+
+bool ws_cart_slot_device::call_load()
+{
+ if (m_cart)
+ {
+ UINT8 *ROM;
+ UINT32 size = (software_entry() == NULL) ? length() : get_software_region_length("rom");
+ UINT32 nvram_size = 0;
+
+ m_cart->rom_alloc(size, tag());
+ ROM = m_cart->get_rom_base();
+
+ if (software_entry() == NULL)
+ fread(ROM, size);
+ else
+ memcpy(ROM, get_software_region("rom"), size);
+
+ if (software_entry() == NULL)
+ {
+ int chunks = size / 0x10000;
+ // get cart type and nvram length
+ m_type = get_cart_type(ROM, size, nvram_size);
+
+ if (ROM[(chunks - 1) * 0x10000 + 0xfffd])
+ m_cart->set_has_rtc(true);
+ if (ROM[(chunks - 1) * 0x10000 + 0xfffc] & 0x01)
+ m_cart->set_is_rotated(true);
+ }
+ else
+ {
+ const char *pcb_name = get_feature("slot");
+ if (pcb_name)
+ m_type = ws_get_pcb_id(pcb_name);
+
+ if (m_type == WS_SRAM)
+ nvram_size = get_software_region_length("sram");
+ if (m_type == WS_EEPROM)
+ nvram_size = get_software_region_length("eeprom");
+
+ if (get_feature("rtc"))
+ {
+ if (!core_stricmp(get_feature("rtc"), "yes"))
+ m_cart->set_has_rtc(true);
+ }
+ if (get_feature("rotated"))
+ {
+ if (!core_stricmp(get_feature("rotated"), "yes"))
+ m_cart->set_is_rotated(true);
+ }
+ }
+
+ //printf("Type: %s\n", ws_get_slot(m_type));
+
+ if (nvram_size)
+ {
+ // allocate NVRAM
+ m_cart->nvram_alloc(nvram_size);
+ // and load possible battery save
+ battery_load(m_cart->get_nvram_base(), m_cart->get_nvram_size(), 0x00);
+ }
+
+ internal_header_logging(ROM, size);
+ }
+
+ return IMAGE_INIT_PASS;
+}
+
+/*-------------------------------------------------
+ call_unload
+ -------------------------------------------------*/
+
+void ws_cart_slot_device::call_unload()
+{
+ if (m_cart && m_cart->get_nvram_size())
+ battery_save(m_cart->get_nvram_base(), m_cart->get_nvram_size());
+}
+
+
+/*-------------------------------------------------
+ call softlist load
+ -------------------------------------------------*/
+
+bool ws_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
+{
+ load_software_part_region(*this, swlist, swname, start_entry);
+ return TRUE;
+}
+
+
+/*-------------------------------------------------
+ get cart type from cart file
+ -------------------------------------------------*/
+
+int ws_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len, UINT32 &nvram_len)
+{
+ int chunks = len / 0x10000;
+ int type = WS_STD;
+
+ switch (ROM[(chunks - 1) * 0x10000 + 0xfffb])
+ {
+ case 0x00:
+ break;
+ case 0x01: // SRAM 64Kbit
+ type = WS_SRAM;
+ nvram_len = 0x2000;
+ break;
+ case 0x02: // SRAM 256Kbit
+ type = WS_SRAM;
+ nvram_len = 0x8000;
+ break;
+ case 0x05: // SRAM 512Kbit
+ type = WS_SRAM;
+ nvram_len = 0x10000;
+ break;
+ case 0x03: // SRAM 1Mbit
+ type = WS_SRAM;
+ nvram_len = 0x20000;
+ break;
+ case 0x04: // SRAM 2Mbit
+ type = WS_SRAM;
+ nvram_len = 0x40000;
+ break;
+ case 0x10: // EEPROM 1Kbit
+ type = WS_EEPROM;
+ nvram_len = 0x80;
+ break;
+ case 0x50: // EEPROM 8Kbit
+ type = WS_EEPROM;
+ nvram_len = 0x400;
+ break;
+ case 0x20: // EEPROM 16Kbit
+ type = WS_EEPROM;
+ nvram_len = 0x800;
+ break;
+ default:
+ printf("Unknown RAM size [0x%X]\n", ROM[(chunks - 1) * 0x10000 + 0xfffb]);
+ logerror("Unknown RAM size [0x%X]\n", ROM[(chunks - 1) * 0x10000 + 0xfffb]);
+ break;
+ }
+
+ return type;
+}
+
+/*-------------------------------------------------
+ get default card software
+ -------------------------------------------------*/
+
+void ws_cart_slot_device::get_default_card_software(astring &result)
+{
+ if (open_image_file(mconfig().options()))
+ {
+ const char *slot_string = "ws_rom";
+ UINT32 size = core_fsize(m_file);
+ dynamic_buffer rom(size);
+ int type;
+ UINT32 nvram;
+
+ core_fread(m_file, rom, size);
+
+ // nvram size is not really used here, but we set it up nevertheless
+ type = get_cart_type(rom, size, nvram);
+ slot_string = ws_get_slot(type);
+
+ //printf("type: %s\n", slot_string);
+ clear();
+
+ result.cpy(slot_string);
+ return;
+ }
+
+ software_get_default_slot(result, "ws_rom");
+}
+
+/*-------------------------------------------------
+ read_rom20
+ -------------------------------------------------*/
+
+READ8_MEMBER(ws_cart_slot_device::read_rom20)
+{
+ if (m_cart)
+ return m_cart->read_rom20(space, offset);
+ else
+ return 0xff;
+}
+
+/*-------------------------------------------------
+ read_rom30
+ -------------------------------------------------*/
+
+READ8_MEMBER(ws_cart_slot_device::read_rom30)
+{
+ if (m_cart)
+ return m_cart->read_rom30(space, offset);
+ else
+ return 0xff;
+}
+
+/*-------------------------------------------------
+ read_rom40
+ -------------------------------------------------*/
+
+READ8_MEMBER(ws_cart_slot_device::read_rom40)
+{
+ if (m_cart)
+ return m_cart->read_rom40(space, offset);
+ else
+ return 0xff;
+}
+
+/*-------------------------------------------------
+ read_ram
+ -------------------------------------------------*/
+
+READ8_MEMBER(ws_cart_slot_device::read_ram)
+{
+ if (m_cart)
+ return m_cart->read_ram(space, offset);
+ else
+ return 0xff;
+}
+
+/*-------------------------------------------------
+ write_ram
+ -------------------------------------------------*/
+
+WRITE8_MEMBER(ws_cart_slot_device::write_ram)
+{
+ if (m_cart)
+ m_cart->write_ram(space, offset, data);
+}
+
+/*-------------------------------------------------
+ read_io
+ -------------------------------------------------*/
+
+READ8_MEMBER(ws_cart_slot_device::read_io)
+{
+ if (m_cart)
+ return m_cart->read_io(space, offset);
+ else
+ return 0xff;
+}
+
+/*-------------------------------------------------
+ write_io
+ -------------------------------------------------*/
+
+WRITE8_MEMBER(ws_cart_slot_device::write_io)
+{
+ if (m_cart)
+ m_cart->write_io(space, offset, data);
+}
+
+
+
+/*-------------------------------------------------
+ Internal header logging
+ -------------------------------------------------*/
+
+void ws_cart_slot_device::internal_header_logging(UINT8 *ROM, UINT32 len)
+{
+#if 0
+ enum enum_sram { SRAM_NONE=0, SRAM_64K, SRAM_256K, SRAM_512K, SRAM_1M, SRAM_2M, EEPROM_1K, EEPROM_16K, EEPROM_8K, SRAM_UNKNOWN };
+ static const char *const wswan_sram_str[] = { "none", "64Kbit SRAM", "256Kbit SRAM", "512Kbit SRAM", "1Mbit SRAM", "2Mbit SRAM", "1Kbit EEPROM", "16Kbit EEPROM", "8Kbit EEPROM", "Unknown" };
+ static const int wswan_sram_size[] = { 0, 64*1024/8, 256*1024/8, 512*1024/8, 1024*1024/8, 2*1024*1024/8, 1024/8, 16*1024/8, 8*1024/8, 0 };
+
+ int sum = 0;
+ /* Spit out some info */
+ logerror("ROM DETAILS\n" );
+ logerror("\tDeveloper ID: %X\n", m_ROMMap[m_ROMBanks - 1][0xfff6]);
+ logerror("\tMinimum system: %s\n", m_ROMMap[m_ROMBanks - 1][0xfff7] ? "WonderSwan Color" : "WonderSwan");
+ logerror("\tCart ID: %X\n", m_ROMMap[m_ROMBanks - 1][0xfff8]);
+ logerror("\tROM size: %s\n", wswan_determine_romsize(m_ROMMap[m_ROMBanks - 1][0xfffa]));
+ logerror("\tSRAM size: %s\n", sram_str);
+ logerror("\tFeatures: %X\n", m_ROMMap[m_ROMBanks - 1][0xfffc]);
+ logerror("\tRTC: %s\n", m_ROMMap[m_ROMBanks - 1][0xfffd] ? "yes" : "no");
+ for (int i = 0; i < m_ROMBanks; i++)
+ {
+ int count;
+ for (count = 0; count < 0x10000; count++)
+ {
+ sum += m_ROMMap[i][count];
+ }
+ }
+ sum -= m_ROMMap[m_ROMBanks - 1][0xffff];
+ sum -= m_ROMMap[m_ROMBanks - 1][0xfffe];
+ sum &= 0xffff;
+ logerror("\tChecksum: %X%X (calculated: %04X)\n", m_ROMMap[m_ROMBanks - 1][0xffff], m_ROMMap[m_ROMBanks - 1][0xfffe], sum);
+
+ const char* wswan_state::wswan_determine_sram(UINT8 data )
+ {
+ m_eeprom.write_enabled = 0;
+ m_eeprom.mode = SRAM_UNKNOWN;
+ switch( data )
+ {
+ case 0x00: m_eeprom.mode = SRAM_NONE; break;
+ case 0x01: m_eeprom.mode = SRAM_64K; break;
+ case 0x02: m_eeprom.mode = SRAM_256K; break;
+ case 0x03: m_eeprom.mode = SRAM_1M; break;
+ case 0x04: m_eeprom.mode = SRAM_2M; break;
+ case 0x05: m_eeprom.mode = SRAM_512K; break;
+ case 0x10: m_eeprom.mode = EEPROM_1K; break;
+ case 0x20: m_eeprom.mode = EEPROM_16K; break;
+ case 0x50: m_eeprom.mode = EEPROM_8K; break;
+ }
+ m_eeprom.size = wswan_sram_size[ m_eeprom.mode ];
+ return wswan_sram_str[ m_eeprom.mode ];
+ }
+
+ enum enum_romsize { ROM_4M=0, ROM_8M, ROM_16M, ROM_32M, ROM_64M, ROM_128M, ROM_UNKNOWN };
+ static const char *const wswan_romsize_str[] = {
+ "4Mbit", "8Mbit", "16Mbit", "32Mbit", "64Mbit", "128Mbit", "Unknown"
+ };
+
+ const char* wswan_state::wswan_determine_romsize( UINT8 data )
+ {
+ switch( data )
+ {
+ case 0x02: return wswan_romsize_str[ ROM_4M ];
+ case 0x03: return wswan_romsize_str[ ROM_8M ];
+ case 0x04: return wswan_romsize_str[ ROM_16M ];
+ case 0x06: return wswan_romsize_str[ ROM_32M ];
+ case 0x08: return wswan_romsize_str[ ROM_64M ];
+ case 0x09: return wswan_romsize_str[ ROM_128M ];
+ }
+ return wswan_romsize_str[ ROM_UNKNOWN ];
+ }
+
+#endif
+}
diff --git a/src/emu/bus/wswan/slot.h b/src/emu/bus/wswan/slot.h
new file mode 100644
index 00000000000..9d8aa145287
--- /dev/null
+++ b/src/emu/bus/wswan/slot.h
@@ -0,0 +1,130 @@
+#ifndef __WS_SLOT_H
+#define __WS_SLOT_H
+
+/***************************************************************************
+ TYPE DEFINITIONS
+ ***************************************************************************/
+
+
+/* PCB */
+enum
+{
+ WS_STD = 0,
+ WS_SRAM,
+ WS_EEPROM
+};
+
+
+// ======================> device_ws_cart_interface
+
+class device_ws_cart_interface : public device_slot_card_interface
+{
+public:
+ // construction/destruction
+ device_ws_cart_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_ws_cart_interface();
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom20) { return 0xff; }
+ virtual DECLARE_READ8_MEMBER(read_rom30) { return 0xff; }
+ virtual DECLARE_READ8_MEMBER(read_rom40) { return 0xff; }
+ virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(write_ram) {}
+ virtual DECLARE_READ8_MEMBER(read_io) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(write_io) {}
+
+ void rom_alloc(UINT32 size, const char *tag);
+ void nvram_alloc(UINT32 size);
+ UINT8* get_rom_base() { return m_rom; }
+ UINT8* get_nvram_base() { return m_nvram; }
+ UINT32 get_rom_size() { return m_rom_size; }
+ UINT32 get_nvram_size() { return m_nvram.count(); }
+
+ void save_nvram() { device().save_item(NAME(m_nvram)); }
+ void set_has_rtc(bool val) { m_has_rtc = val; }
+ void set_is_rotated(bool val) { m_is_rotated = val; }
+ int get_is_rotated() { return m_is_rotated ? 1 : 0; }
+
+protected:
+ // internal state
+ UINT8 *m_rom;
+ UINT32 m_rom_size;
+ dynamic_buffer m_nvram;
+ int m_bank_mask;
+
+ bool m_has_rtc, m_is_rotated;
+};
+
+
+// ======================> ws_cart_slot_device
+
+class ws_cart_slot_device : public device_t,
+ public device_image_interface,
+ public device_slot_interface
+{
+public:
+ // construction/destruction
+ ws_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual ~ws_cart_slot_device();
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_config_complete();
+
+ // image-level overrides
+ virtual bool call_load();
+ virtual void call_unload();
+ virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
+
+ int get_type() { return m_type; }
+ int get_is_rotated() { return m_cart->get_is_rotated(); }
+ int get_cart_type(UINT8 *ROM, UINT32 len, UINT32 &nvram_len);
+ void internal_header_logging(UINT8 *ROM, UINT32 len);
+
+ void save_nvram() { if (m_cart && m_cart->get_nvram_size()) m_cart->save_nvram(); }
+
+ virtual iodevice_t image_type() const { return IO_CARTSLOT; }
+ virtual bool is_readable() const { return 1; }
+ virtual bool is_writeable() const { return 0; }
+ virtual bool is_creatable() const { return 0; }
+ virtual bool must_be_loaded() const { return 1; }
+ virtual bool is_reset_on_load() const { return 1; }
+ virtual const option_guide *create_option_guide() const { return NULL; }
+ virtual const char *image_interface() const { return "wswan_cart"; }
+ virtual const char *file_extensions() const { return "ws,wsc,bin"; }
+
+ // slot interface overrides
+ virtual void get_default_card_software(astring &result);
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read_rom20);
+ virtual DECLARE_READ8_MEMBER(read_rom30);
+ virtual DECLARE_READ8_MEMBER(read_rom40);
+ virtual DECLARE_READ8_MEMBER(read_ram);
+ virtual DECLARE_WRITE8_MEMBER(write_ram);
+ virtual DECLARE_READ8_MEMBER(read_io);
+ virtual DECLARE_WRITE8_MEMBER(write_io);
+
+protected:
+
+ int m_type;
+ device_ws_cart_interface* m_cart;
+};
+
+
+
+// device type definition
+extern const device_type WS_CART_SLOT;
+
+
+/***************************************************************************
+ DEVICE CONFIGURATION MACROS
+ ***************************************************************************/
+
+#define WSSLOT_ROM_REGION_TAG ":cart:rom"
+
+#define MCFG_WSWAN_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
+ MCFG_DEVICE_ADD(_tag, WS_CART_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
+
+#endif
diff --git a/src/mess/drivers/wswan.c b/src/mess/drivers/wswan.c
index 9961219ad07..edbc4eab746 100644
--- a/src/mess/drivers/wswan.c
+++ b/src/mess/drivers/wswan.c
@@ -35,61 +35,35 @@
#include "wswan.lh"
static ADDRESS_MAP_START (wswan_mem, AS_PROGRAM, 8, wswan_state)
- AM_RANGE(0x00000, 0x03fff) AM_RAM /* 16kb RAM / 4 colour tiles */
- AM_RANGE(0x04000, 0x0ffff) AM_NOP /* nothing */
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(wswan_sram_r, wswan_sram_w) /* SRAM bank */
- AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("rom1") /* ROM bank 1 */
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("rom2") /* ROM bank 2 */
- AM_RANGE(0x40000, 0x4ffff) AM_ROMBANK("rom3") /* ROM bank 3 */
- AM_RANGE(0x50000, 0x5ffff) AM_ROMBANK("rom4") /* ROM bank 4 */
- AM_RANGE(0x60000, 0x6ffff) AM_ROMBANK("rom5") /* ROM bank 5 */
- AM_RANGE(0x70000, 0x7ffff) AM_ROMBANK("rom6") /* ROM bank 6 */
- AM_RANGE(0x80000, 0x8ffff) AM_ROMBANK("rom7") /* ROM bank 7 */
- AM_RANGE(0x90000, 0x9ffff) AM_ROMBANK("rom8") /* ROM bank 8 */
- AM_RANGE(0xa0000, 0xaffff) AM_ROMBANK("rom9") /* ROM bank 9 */
- AM_RANGE(0xb0000, 0xbffff) AM_ROMBANK("rom10") /* ROM bank 10 */
- AM_RANGE(0xc0000, 0xcffff) AM_ROMBANK("rom11") /* ROM bank 11 */
- AM_RANGE(0xd0000, 0xdffff) AM_ROMBANK("rom12") /* ROM bank 12 */
- AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("rom13") /* ROM bank 13 */
- AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("rom14") /* ROM bank 14 */
+ AM_RANGE(0x00000, 0x03fff) AM_RAM // 16kb RAM / 4 colour tiles
+ AM_RANGE(0x04000, 0x0ffff) AM_NOP // nothing
+ //AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start
+ AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START (wscolor_mem, AS_PROGRAM, 8, wswan_state)
- AM_RANGE(0x00000, 0x0ffff) AM_RAM /* 16kb RAM / 4 colour tiles, 16 colour tiles + palettes */
- AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(wswan_sram_r, wswan_sram_w) /* SRAM bank */
- AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("rom1") /* ROM bank 1 */
- AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("rom2") /* ROM bank 2 */
- AM_RANGE(0x40000, 0x4ffff) AM_ROMBANK("rom3") /* ROM bank 3 */
- AM_RANGE(0x50000, 0x5ffff) AM_ROMBANK("rom4") /* ROM bank 4 */
- AM_RANGE(0x60000, 0x6ffff) AM_ROMBANK("rom5") /* ROM bank 5 */
- AM_RANGE(0x70000, 0x7ffff) AM_ROMBANK("rom6") /* ROM bank 6 */
- AM_RANGE(0x80000, 0x8ffff) AM_ROMBANK("rom7") /* ROM bank 7 */
- AM_RANGE(0x90000, 0x9ffff) AM_ROMBANK("rom8") /* ROM bank 8 */
- AM_RANGE(0xa0000, 0xaffff) AM_ROMBANK("rom9") /* ROM bank 9 */
- AM_RANGE(0xb0000, 0xbffff) AM_ROMBANK("rom10") /* ROM bank 10 */
- AM_RANGE(0xc0000, 0xcffff) AM_ROMBANK("rom11") /* ROM bank 11 */
- AM_RANGE(0xd0000, 0xdffff) AM_ROMBANK("rom12") /* ROM bank 12 */
- AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("rom13") /* ROM bank 13 */
- AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("rom14") /* ROM bank 14 */
+ AM_RANGE(0x00000, 0x0ffff) AM_RAM // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes
+ //AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start
+ AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START (wswan_io, AS_IO, 8, wswan_state)
- AM_RANGE(0x00, 0xff) AM_READWRITE(wswan_port_r, wswan_port_w) /* I/O ports */
+ AM_RANGE(0x00, 0xff) AM_READWRITE(port_r, port_w) // I/O ports
ADDRESS_MAP_END
static INPUT_PORTS_START( wswan )
- PORT_START("CURSX") /* Cursors (X1-X4) */
+ PORT_START("CURSX")
PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("X1 - Up")
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("X3 - Down")
PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("X4 - Left")
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("X2 - Right")
- PORT_START("BUTTONS") /* Buttons */
+ PORT_START("BUTTONS")
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start")
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Button A")
PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Button B")
- PORT_START("CURSY") /* Cursors (Y1-Y4) */
+ PORT_START("CURSY")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Y1 - Up") PORT_CODE(KEYCODE_W)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Y3 - Down") PORT_CODE(KEYCODE_S)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Y4 - Left") PORT_CODE(KEYCODE_A)
@@ -102,18 +76,16 @@ GFXDECODE_END
/* WonderSwan can display 16 shades of grey */
PALETTE_INIT_MEMBER(wswan_state, wswan)
{
- int ii;
- for (ii = 0; ii < 16; ii++)
+ for (int i = 0; i < 16; i++)
{
- UINT8 shade = ii * (256 / 16);
- palette.set_pen_color(15 - ii, shade, shade, shade);
+ UINT8 shade = i * (256 / 16);
+ palette.set_pen_color(15 - i, shade, shade, shade);
}
}
PALETTE_INIT_MEMBER(wswan_state,wscolor)
{
- int i;
- for (i = 0; i < 4096; i++)
+ for (int i = 0; i < 4096; i++)
{
int r = (i & 0x0f00) >> 8;
int g = (i & 0x00f0) >> 4;
@@ -122,6 +94,12 @@ PALETTE_INIT_MEMBER(wswan_state,wscolor)
}
}
+static SLOT_INTERFACE_START(wswan_cart)
+ SLOT_INTERFACE_INTERNAL("ws_rom", WS_ROM_STD)
+ SLOT_INTERFACE_INTERNAL("ws_sram", WS_ROM_SRAM)
+ SLOT_INTERFACE_INTERNAL("ws_eeprom", WS_ROM_EEPROM)
+SLOT_INTERFACE_END
+
static MACHINE_CONFIG_START( wswan, wswan_state )
/* Basic machine hardware */
MCFG_CPU_ADD("maincpu", V30MZ, 3072000)
@@ -142,7 +120,6 @@ static MACHINE_CONFIG_START( wswan, wswan_state )
MCFG_NVRAM_ADD_1FILL("nvram")
-
MCFG_GFXDECODE_ADD("gfxdecode", "palette", wswan)
MCFG_PALETTE_ADD("palette", 16)
MCFG_PALETTE_INIT_OWNER(wswan_state, wswan)
@@ -154,11 +131,7 @@ static MACHINE_CONFIG_START( wswan, wswan_state )
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
/* cartridge */
- MCFG_CARTSLOT_ADD("cart")
- MCFG_CARTSLOT_EXTENSION_LIST("ws,wsc,bin")
- MCFG_CARTSLOT_MANDATORY
- MCFG_CARTSLOT_INTERFACE("wswan_cart")
- MCFG_CARTSLOT_LOAD(wswan_state,wswan_cart)
+ MCFG_WSWAN_CARTRIDGE_ADD("cartslot", wswan_cart, NULL)
/* software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list","wswan")
@@ -174,7 +147,6 @@ static MACHINE_CONFIG_DERIVED( wscolor, wswan )
MCFG_PALETTE_ENTRIES(4096)
MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor )
-
/* software lists */
MCFG_DEVICE_REMOVE("cart_list")
MCFG_DEVICE_REMOVE("wsc_list")
@@ -199,5 +171,5 @@ ROM_START( wscolor )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME*/
-CONS( 1999, wswan, 0, 0, wswan, wswan, wswan_state, wswan, "Bandai", "WonderSwan", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-CONS( 2000, wscolor, wswan, 0, wscolor, wswan, wswan_state, wswan, "Bandai", "WonderSwan Color", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+CONS( 1999, wswan, 0, 0, wswan, wswan, driver_device, 0, "Bandai", "WonderSwan", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+CONS( 2000, wscolor, wswan, 0, wscolor, wswan, driver_device, 0, "Bandai", "WonderSwan Color", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
diff --git a/src/mess/includes/wswan.h b/src/mess/includes/wswan.h
index 20ccca7087e..3cf394adebf 100644
--- a/src/mess/includes/wswan.h
+++ b/src/mess/includes/wswan.h
@@ -17,36 +17,11 @@
#include "emu.h"
#include "cpu/v30mz/v30mz.h"
-#include "imagedev/cartslot.h"
#include "machine/nvram.h"
+#include "bus/wswan/slot.h"
+#include "bus/wswan/rom.h"
-struct EEPROM
-{
- UINT8 mode; /* eeprom mode */
- UINT16 address; /* Read/write address */
- UINT8 command; /* Commands: 00, 01, 02, 03, 04, 08, 0C */
- UINT8 start; /* start bit */
- UINT8 write_enabled; /* write enabled yes/no */
- int size; /* size of eeprom/sram area */
- UINT8 *data; /* pointer to start of sram/eeprom data */
- UINT8 *page; /* pointer to current sram/eeprom page */
-};
-
-struct RTC
-{
- UINT8 present; /* Is an RTC present */
- UINT8 setting; /* Timer setting byte */
- UINT8 year; /* Year */
- UINT8 month; /* Month */
- UINT8 day; /* Day */
- UINT8 day_of_week; /* Day of the week */
- UINT8 hour; /* Hour, high bit = 0 => AM, high bit = 1 => PM */
- UINT8 minute; /* Minute */
- UINT8 second; /* Second */
- UINT8 index; /* index for reading/writing of current of alarm time */
-};
-
struct SoundDMA
{
UINT32 source; /* Source address */
@@ -110,6 +85,7 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_sound(*this, "custom"),
+ m_cart(*this, "cartslot"),
m_cursx(*this, "CURSX"),
m_cursy(*this, "CURSY"),
m_buttons(*this, "BUTTONS") { }
@@ -120,19 +96,15 @@ public:
required_device<cpu_device> m_maincpu;
required_device<wswan_sound_device> m_sound;
- DECLARE_READ8_MEMBER(wswan_port_r);
- DECLARE_WRITE8_MEMBER(wswan_port_w);
- DECLARE_READ8_MEMBER(wswan_sram_r);
- DECLARE_WRITE8_MEMBER(wswan_sram_w);
+ required_device<ws_cart_slot_device> m_cart;
+ DECLARE_READ8_MEMBER(bios_r);
+ DECLARE_READ8_MEMBER(port_r);
+ DECLARE_WRITE8_MEMBER(port_w);
VDP m_vdp;
UINT8 m_ws_portram[256];
- UINT8 *m_ROMMap[256];
- UINT32 m_ROMBanks;
UINT8 m_internal_eeprom[INTERNAL_EEPROM_SIZE];
UINT8 m_system_type;
- EEPROM m_eeprom;
- RTC m_rtc;
SoundDMA m_sound_dma;
UINT8 *m_ws_ram;
UINT8 *m_ws_bios_bank;
@@ -140,19 +112,15 @@ public:
int m_pal[16][16];
bitmap_ind16 m_bitmap;
UINT8 m_rotate;
- UINT8 m_bank_base[14];
void wswan_clear_irq_line(int irq);
+ void common_start();
virtual void machine_start();
virtual void machine_reset();
DECLARE_PALETTE_INIT(wswan);
DECLARE_MACHINE_START(wscolor);
DECLARE_PALETTE_INIT(wscolor);
- TIMER_CALLBACK_MEMBER(wswan_rtc_callback);
TIMER_CALLBACK_MEMBER(wswan_scanline_interrupt);
- void wswan_machine_stop();
- DECLARE_DRIVER_INIT( wswan );
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( wswan_cart );
protected:
/* Interrupt flags */
@@ -178,10 +146,7 @@ protected:
required_ioport m_cursx;
required_ioport m_cursy;
required_ioport m_buttons;
- memory_bank *m_rom_bank[14];
- void wswan_setup_bios();
- void wswan_setup_banks();
void wswan_register_save();
void wswan_postload();
void wswan_handle_irqs();
@@ -193,8 +158,6 @@ protected:
void wswan_draw_foreground_3();
void wswan_handle_sprites( int mask );
void wswan_refresh_scanline( );
- const char* wswan_determine_sram( UINT8 data );
- const char* wswan_determine_romsize( UINT8 data );
};
diff --git a/src/mess/machine/wswan.c b/src/mess/machine/wswan.c
index 1295dc7e6e6..d8a219e37d1 100644
--- a/src/mess/machine/wswan.c
+++ b/src/mess/machine/wswan.c
@@ -20,11 +20,6 @@ TODO:
#define INTERNAL_EEPROM_SIZE 1024
enum enum_system { TYPE_WSWAN=0, TYPE_WSC };
-enum enum_sram { SRAM_NONE=0, SRAM_64K, SRAM_256K, SRAM_512K, SRAM_1M, SRAM_2M, EEPROM_1K, EEPROM_16K, EEPROM_8K, SRAM_UNKNOWN };
-static const char *const wswan_sram_str[] = { "none", "64Kbit SRAM", "256Kbit SRAM", "512Kbit SRAM", "1Mbit SRAM", "2Mbit SRAM", "1Kbit EEPROM", "16Kbit EEPROM", "8Kbit EEPROM", "Unknown" };
-static const int wswan_sram_size[] = { 0, 64*1024/8, 256*1024/8, 512*1024/8, 1024*1024/8, 2*1024*1024/8, 1024/8, 16*1024/8, 8*1024/8, 0 };
-
-
static const UINT8 ws_portram_init[256] =
@@ -138,82 +133,12 @@ void wswan_state::wswan_clear_irq_line(int irq)
wswan_handle_irqs();
}
-TIMER_CALLBACK_MEMBER(wswan_state::wswan_rtc_callback)
-{
- /* A second passed */
- m_rtc.second = m_rtc.second + 1;
- if ( ( m_rtc.second & 0x0F ) > 9 )
- {
- m_rtc.second = ( m_rtc.second & 0xF0 ) + 0x10;
- }
-
- /* Check for minute passed */
- if ( m_rtc.second >= 0x60 )
- {
- m_rtc.second = 0;
- m_rtc.minute = m_rtc.minute + 1;
- if ( ( m_rtc.minute & 0x0F ) > 9 )
- {
- m_rtc.minute = ( m_rtc.minute & 0xF0 ) + 0x10;
- }
- }
-
- /* Check for hour passed */
- if ( m_rtc.minute >= 0x60 )
- {
- m_rtc.minute = 0;
- m_rtc.hour = m_rtc.hour + 1;
- if ( ( m_rtc.hour & 0x0F ) > 9 )
- {
- m_rtc.hour = ( m_rtc.hour & 0xF0 ) + 0x10;
- }
- if ( m_rtc.hour == 0x12 )
- {
- m_rtc.hour |= 0x80;
- }
- }
-
- /* Check for day passed */
- if ( m_rtc.hour >= 0x24 )
- {
- m_rtc.hour = 0;
- m_rtc.day = m_rtc.day + 1;
- }
-}
-
-void wswan_state::wswan_machine_stop()
-{
- device_image_interface *image = dynamic_cast<device_image_interface *>(machine().device("cart"));
- if ( m_eeprom.size )
- {
- image->battery_save(m_eeprom.data, m_eeprom.size );
- }
-}
-
-void wswan_state::wswan_setup_bios()
-{
- if ( m_ws_bios_bank == NULL )
- {
- m_ws_bios_bank = auto_alloc_array(machine(), UINT8, 0x10000 );
- memcpy( m_ws_bios_bank + 0xffc0, ws_fake_bios_code, 0x40 );
- }
-}
-
-void wswan_state::wswan_setup_banks()
-{
- static const char *rom_bank_tags[14] = { "rom1", "rom2", "rom3", "rom4", "rom5", "rom6", "rom7",
- "rom8", "rom9", "rom10", "rom11", "rom12", "rom13", "rom14" };
- for (int i = 0; i < 14; i++)
- m_rom_bank[i] = membank(rom_bank_tags[i]);
-}
-
void wswan_state::wswan_register_save()
{
save_item(NAME(m_ws_portram));
save_item(NAME(m_internal_eeprom));
save_item(NAME(m_bios_disabled));
save_item(NAME(m_rotate));
- save_item(NAME(m_bank_base));
save_item(NAME(m_vdp.layer_bg_enable));
save_item(NAME(m_vdp.layer_fg_enable));
@@ -254,30 +179,13 @@ void wswan_state::wswan_register_save()
save_item(NAME(m_vdp.timer_vblank_count));
save_item(NAME(m_vdp.main_palette));
- save_item(NAME(m_eeprom.mode));
- save_item(NAME(m_eeprom.address));
- save_item(NAME(m_eeprom.command));
- save_item(NAME(m_eeprom.start));
- save_item(NAME(m_eeprom.write_enabled));
- save_item(NAME(m_eeprom.size));
- if (m_eeprom.size)
- save_pointer(NAME(m_eeprom.data), m_eeprom.size);
-
- save_item(NAME(m_rtc.present));
- save_item(NAME(m_rtc.setting));
- save_item(NAME(m_rtc.year));
- save_item(NAME(m_rtc.month));
- save_item(NAME(m_rtc.day));
- save_item(NAME(m_rtc.day_of_week));
- save_item(NAME(m_rtc.hour));
- save_item(NAME(m_rtc.minute));
- save_item(NAME(m_rtc.second));
- save_item(NAME(m_rtc.index));
-
save_item(NAME(m_sound_dma.source));
save_item(NAME(m_sound_dma.size));
save_item(NAME(m_sound_dma.enable));
+ if (m_cart->exists())
+ m_cart->save_nvram();
+
machine().save().register_postload(save_prepost_delegate(FUNC(wswan_state::wswan_postload), this));
}
@@ -286,55 +194,63 @@ void wswan_state::wswan_postload()
address_space &space = m_maincpu->space(AS_PROGRAM);
// restore the vdp pointers
m_vdp.vram = (UINT8*)space.get_read_ptr(0);
- m_vdp.palette_vram = (UINT8*)space.get_read_ptr(( m_system_type == TYPE_WSC ) ? 0xFE00 : 0 );
- // restore banks
- for (int i = 0; i < 14; i++)
- m_rom_bank[i]->set_entry(m_bank_base[i]);
+ m_vdp.palette_vram = (UINT8*)space.get_read_ptr((m_system_type == TYPE_WSC) ? 0xfe00 : 0);
}
+void wswan_state::common_start()
+{
+ m_ws_bios_bank = auto_alloc_array(machine(), UINT8, 0x10000);
+ memcpy(m_ws_bios_bank + 0xffc0, ws_fake_bios_code, 0x40);
+
+ m_vdp.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(wswan_state::wswan_scanline_interrupt),this), &m_vdp);
+ m_vdp.timer->adjust(attotime::from_ticks(256, 3072000), 0, attotime::from_ticks(256, 3072000));
+
+ wswan_register_save();
+
+ machine().device<nvram_device>("nvram")->set_base(m_internal_eeprom, INTERNAL_EEPROM_SIZE);
+
+ if (m_cart->exists())
+ {
+ // ROM
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000, 0x2ffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom20),(ws_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x30000, 0x3ffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom30),(ws_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000, 0xeffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom40),(ws_cart_slot_device*)m_cart));
+
+ // SRAM
+ if (m_cart->get_type() == WS_SRAM)
+ {
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x10000, 0x1ffff, read8_delegate(FUNC(ws_cart_slot_device::read_ram),(ws_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x10000, 0x1ffff, write8_delegate(FUNC(ws_cart_slot_device::write_ram),(ws_cart_slot_device*)m_cart));
+ }
+ }
+}
void wswan_state::machine_start()
{
- m_ws_bios_bank = NULL;
+ common_start();
m_system_type = TYPE_WSWAN;
- machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(wswan_state::wswan_machine_stop),this));
- m_vdp.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(wswan_state::wswan_scanline_interrupt),this), &m_vdp );
- m_vdp.timer->adjust( attotime::from_ticks( 256, 3072000 ), 0, attotime::from_ticks( 256, 3072000 ) );
-
- wswan_setup_bios();
- wswan_setup_banks();
- wswan_register_save();
-
- /* Set up RTC timer */
- if (m_rtc.present)
- machine().scheduler().timer_pulse(attotime::from_seconds(1), timer_expired_delegate(FUNC(wswan_state::wswan_rtc_callback),this));
-
- machine().device<nvram_device>("nvram")->set_base(m_internal_eeprom, INTERNAL_EEPROM_SIZE);
}
MACHINE_START_MEMBER(wswan_state,wscolor)
{
- m_ws_bios_bank = NULL;
+ common_start();
m_system_type = TYPE_WSC;
- machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(wswan_state::wswan_machine_stop),this));
- m_vdp.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(wswan_state::wswan_scanline_interrupt),this), &m_vdp );
- m_vdp.timer->adjust( attotime::from_ticks( 256, 3072000 ), 0, attotime::from_ticks( 256, 3072000 ) );
-
- wswan_setup_bios();
- wswan_setup_banks();
- wswan_register_save();
-
- /* Set up RTC timer */
- if (m_rtc.present)
- machine().scheduler().timer_pulse(attotime::from_seconds(1), timer_expired_delegate(FUNC(wswan_state::wswan_rtc_callback),this));
-
- machine().device<nvram_device>("nvram")->set_base(m_internal_eeprom, INTERNAL_EEPROM_SIZE);
}
void wswan_state::machine_reset()
{
address_space &space = m_maincpu->space(AS_PROGRAM);
+ m_bios_disabled = 0;
+
+ m_ws_ram = (UINT8*) m_maincpu->space(AS_PROGRAM).get_read_ptr(0);
+ memset(m_ws_ram, 0, 0xffff);
+
+ if (m_cart->exists())
+ m_rotate = m_cart->get_is_rotated();
+ else
+ m_rotate = 0;
+
/* Intialize ports */
memcpy(m_ws_portram, ws_portram_init, 256);
@@ -353,131 +269,94 @@ void wswan_state::machine_reset()
/* Initialize sound DMA */
memset(&m_sound_dma, 0, sizeof(m_sound_dma));
-
- /* Switch in the banks */
- for (int bank = 0; bank < 14; bank++)
- {
- for (int i = 0; i < m_ROMBanks; i++)
- m_rom_bank[bank]->configure_entries(i, 1, m_ROMMap[i], 0x10000);
- }
- m_rom_bank[13]->configure_entries(m_ROMBanks, 1, m_ws_bios_bank, 0x10000);
-
- m_bank_base[0] = (m_ROMBanks - 1) & (m_ROMBanks - 1);
- m_bank_base[1] = (m_ROMBanks - 1) & (m_ROMBanks - 1);
- m_bank_base[2] = (m_ROMBanks - 12) & (m_ROMBanks - 1);
- m_bank_base[3] = (m_ROMBanks - 11) & (m_ROMBanks - 1);
- m_bank_base[4] = (m_ROMBanks - 10) & (m_ROMBanks - 1);
- m_bank_base[5] = (m_ROMBanks - 9) & (m_ROMBanks - 1);
- m_bank_base[6] = (m_ROMBanks - 8) & (m_ROMBanks - 1);
- m_bank_base[7] = (m_ROMBanks - 7) & (m_ROMBanks - 1);
- m_bank_base[8] = (m_ROMBanks - 6) & (m_ROMBanks - 1);
- m_bank_base[9] = (m_ROMBanks - 5) & (m_ROMBanks - 1);
- m_bank_base[10] = (m_ROMBanks - 4) & (m_ROMBanks - 1);
- m_bank_base[11] = (m_ROMBanks - 3) & (m_ROMBanks - 1);
- m_bank_base[12] = (m_ROMBanks - 2) & (m_ROMBanks - 1);
- m_bank_base[13] = m_ROMBanks; // the last bank is mapped to bios at start!
-
- m_bios_disabled = 0;
-
- for (int i = 0; i < 14; i++)
- m_rom_bank[i]->set_entry(m_bank_base[i]);
}
-READ8_MEMBER( wswan_state::wswan_sram_r )
+READ8_MEMBER( wswan_state::bios_r )
{
- if ( m_eeprom.data == NULL )
- {
- return 0xFF;
- }
- return m_eeprom.page[ offset & ( m_eeprom.size - 1 ) ];
-}
-
-WRITE8_MEMBER( wswan_state::wswan_sram_w )
-{
- if ( m_eeprom.data == NULL )
- {
- return;
- }
- m_eeprom.page[ offset & ( m_eeprom.size - 1 ) ] = data;
+ if (!m_bios_disabled)
+ return m_ws_bios_bank[offset];
+ else
+ return m_cart->read_rom40(space, offset + 0xb0000);
}
-READ8_MEMBER( wswan_state::wswan_port_r )
+READ8_MEMBER( wswan_state::port_r )
{
UINT8 value = m_ws_portram[offset];
- if ( offset != 2 )
- logerror( "PC=%X: port read %02X\n", m_maincpu->pc(), offset );
- switch( offset )
+ if (offset != 2)
+ logerror("PC=%X: port read %02X\n", m_maincpu->pc(), offset);
+ switch (offset)
{
- case 0x02: /* Current line */
+ case 0x02: // Current line
value = m_vdp.current_line;
break;
- case 0x4A: /* Sound DMA source address (low) */
- value = m_sound_dma.source & 0xFF;
+ case 0x4a: // Sound DMA source address (low)
+ value = m_sound_dma.source & 0xff;
break;
- case 0x4B: /* Sound DMA source address (high) */
- value = ( m_sound_dma.source >> 8 ) & 0xFF;
+ case 0x4b: // Sound DMA source address (high)
+ value = (m_sound_dma.source >> 8) & 0xff;
break;
- case 0x4C: /* Sound DMA source memory segment */
- value = ( m_sound_dma.source >> 16 ) & 0xFF;
+ case 0x4c: // Sound DMA source memory segment
+ value = (m_sound_dma.source >> 16) & 0xff;
break;
- case 0x4E: /* Sound DMA transfer size (low) */
- value = m_sound_dma.size & 0xFF;
+ case 0x4e: // Sound DMA transfer size (low)
+ value = m_sound_dma.size & 0xff;
break;
- case 0x4F: /* Sound DMA transfer size (high) */
- value = ( m_sound_dma.size >> 8 ) & 0xFF;
+ case 0x4f: // Sound DMA transfer size (high)
+ value = (m_sound_dma.size >> 8) & 0xff;
break;
- case 0x52: /* Sound DMA start/stop */
+ case 0x52: // Sound DMA start/stop
value = m_sound_dma.enable;
break;
- case 0xA0: /* Hardware type */
- /* Bit 0 - Disable/enable Bios */
- /* Bit 1 - Determine mono/color */
- /* Bit 2 - Determine color/crystal */
+ case 0xa0: // Hardware type
+ // Bit 0 - Disable/enable Bios
+ // Bit 1 - Determine mono/color
+ // Bit 2 - Determine color/crystal
value = value & ~ 0x02;
- if ( m_system_type == TYPE_WSC )
- {
+ if (m_system_type == TYPE_WSC)
value |= 2;
- }
break;
- case 0xA8:
- value = m_vdp.timer_hblank_count & 0xFF;
+ case 0xa8:
+ value = m_vdp.timer_hblank_count & 0xff;
break;
- case 0xA9:
+ case 0xa9:
value = m_vdp.timer_hblank_count >> 8;
break;
- case 0xAA:
- value = m_vdp.timer_vblank_count & 0xFF;
+ case 0xaa:
+ value = m_vdp.timer_vblank_count & 0xff;
break;
- case 0xAB:
+ case 0xab:
value = m_vdp.timer_vblank_count >> 8;
break;
- case 0xCB: /* RTC data */
- if ( m_ws_portram[0xca] == 0x95 && ( m_rtc.index < 7 ) )
- {
- switch( m_rtc.index )
- {
- case 0: value = m_rtc.year; break;
- case 1: value = m_rtc.month; break;
- case 2: value = m_rtc.day; break;
- case 3: value = m_rtc.day_of_week; break;
- case 4: value = m_rtc.hour; break;
- case 5: value = m_rtc.minute; break;
- case 6: value = m_rtc.second; break;
- }
- m_rtc.index++;
- }
+ case 0xc0:
+ case 0xc1:
+ case 0xc2:
+ case 0xc3:
+ case 0xc4: // EEPROM data
+ case 0xc5: // EEPROM data
+ case 0xc6:
+ case 0xc7:
+ case 0xc8:
+ case 0xc9:
+ case 0xca:
+ case 0xcb: // RTC data
+ case 0xcc:
+ case 0xcd:
+ case 0xce:
+ case 0xcf:
+ value = m_cart->read_io(space, offset & 0x0f);
+ break;
}
return value;
}
-WRITE8_MEMBER( wswan_state::wswan_port_w )
+WRITE8_MEMBER( wswan_state::port_w )
{
address_space &mem = m_maincpu->space(AS_PROGRAM);
UINT8 input;
- logerror( "PC=%X: port write %02X <- %02X\n", m_maincpu->pc(), offset, data );
- switch( offset )
+ logerror("PC=%X: port write %02X <- %02X\n", m_maincpu->pc(), offset, data);
+ switch (offset)
{
case 0x00: /* Display control
Bit 0 - Background layer enable
@@ -555,32 +434,32 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
*/
m_vdp.window_fg_top = data;
break;
- case 0x0A: /* Right coordinate of foreground window
+ case 0x0a: /* Right coordinate of foreground window
Bit 0-7 - Right coordinate of foreground window area
*/
m_vdp.window_fg_right = data;
break;
- case 0x0B: /* Bottom coordinate of foreground window
+ case 0x0b: /* Bottom coordinate of foreground window
Bit 0-7 - Bottom coordinate of foreground window area
*/
m_vdp.window_fg_bottom = data;
break;
- case 0x0C: /* Left coordinate of sprite window
+ case 0x0c: /* Left coordinate of sprite window
Bit 0-7 - Left coordinate of sprite window area
*/
m_vdp.window_sprites_left = data;
break;
- case 0x0D: /* Top coordinate of sprite window
+ case 0x0d: /* Top coordinate of sprite window
Bit 0-7 - Top coordinate of sprite window area
*/
m_vdp.window_sprites_top = data;
break;
- case 0x0E: /* Right coordinate of sprite window
+ case 0x0e: /* Right coordinate of sprite window
Bit 0-7 - Right coordinate of sprite window area
*/
m_vdp.window_sprites_right = data;
break;
- case 0x0F: /* Bottom coordinate of sprite window
+ case 0x0f: /* Bottom coordinate of sprite window
Bit 0-7 - Bottom coordiante of sprite window area
*/
m_vdp.window_sprites_bottom = data;
@@ -626,7 +505,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 0-3 - Gray tone setting for main palette index 0
Bit 4-7 - Gray tone setting for main palette index 1
*/
- if ( m_system_type == TYPE_WSC )
+ if (m_system_type == TYPE_WSC)
{
int i = 15 - ( data & 0x0F );
int j = 15 - ( ( data & 0xF0 ) >> 4 );
@@ -643,7 +522,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 0-3 - Gray tone setting for main palette index 2
Bit 4-7 - Gray tone setting for main palette index 3
*/
- if ( m_system_type == TYPE_WSC )
+ if (m_system_type == TYPE_WSC)
{
int i = 15 - ( data & 0x0F );
int j = 15 - ( ( data & 0xF0 ) >> 4 );
@@ -660,7 +539,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 0-3 - Gray tone setting for main palette index 4
Bit 4-7 - Gray tone setting for main paeltte index 5
*/
- if ( m_system_type == TYPE_WSC )
+ if (m_system_type == TYPE_WSC)
{
int i = 15 - ( data & 0x0F );
int j = 15 - ( ( data & 0xF0 ) >> 4 );
@@ -677,7 +556,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 0-3 - Gray tone setting for main palette index 6
Bit 4-7 - Gray tone setting for main palette index 7
*/
- if ( m_system_type == TYPE_WSC )
+ if (m_system_type == TYPE_WSC)
{
int i = 15 - ( data & 0x0F );
int j = 15 - ( ( data & 0xF0 ) >> 4 );
@@ -711,17 +590,17 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 4-7 - Palette 4 index 1 */
case 0x29: /* Bit 0-3 - Palette 4 index 2
Bit 4-7 - Palette 4 index 3 */
- case 0x2A: /* Bit 0-3 - Palette 5 index 0
+ case 0x2a: /* Bit 0-3 - Palette 5 index 0
Bit 4-7 - Palette 5 index 1 */
- case 0x2B: /* Bit 0-3 - Palette 5 index 2
+ case 0x2b: /* Bit 0-3 - Palette 5 index 2
Bit 4-7 - Palette 5 index 3 */
- case 0x2C: /* Bit 0-3 - Palette 6 index 0
+ case 0x2c: /* Bit 0-3 - Palette 6 index 0
Bit 4-7 - Palette 6 index 1 */
- case 0x2D: /* Bit 0-3 - Palette 6 index 2
+ case 0x2d: /* Bit 0-3 - Palette 6 index 2
Bit 4-7 - Palette 6 index 3 */
- case 0x2E: /* Bit 0-3 - Palette 7 index 0
+ case 0x2e: /* Bit 0-3 - Palette 7 index 0
Bit 4-7 - Palette 7 index 1 */
- case 0x2F: /* Bit 0-3 - Palette 7 index 2
+ case 0x2f: /* Bit 0-3 - Palette 7 index 2
Bit 4-7 - Palette 7 index 3 */
case 0x30: /* Bit 0-3 - Palette 8 / Sprite Palette 0 index 0
Bit 4-7 - Palette 8 / Sprite Palette 0 index 1 */
@@ -743,17 +622,17 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 4-7 - Palette 12 / Sprite Palette 4 index 1 */
case 0x39: /* Bit 0-3 - Palette 12 / Sprite Palette 4 index 2
Bit 4-7 - Palette 12 / Sprite Palette 4 index 3 */
- case 0x3A: /* Bit 0-3 - Palette 13 / Sprite Palette 5 index 0
+ case 0x3a: /* Bit 0-3 - Palette 13 / Sprite Palette 5 index 0
Bit 4-7 - Palette 13 / Sprite Palette 5 index 1 */
- case 0x3B: /* Bit 0-3 - Palette 13 / Sprite Palette 5 index 2
+ case 0x3b: /* Bit 0-3 - Palette 13 / Sprite Palette 5 index 2
Bit 4-7 - Palette 13 / Sprite Palette 5 index 3 */
- case 0x3C: /* Bit 0-3 - Palette 14 / Sprite Palette 6 index 0
+ case 0x3c: /* Bit 0-3 - Palette 14 / Sprite Palette 6 index 0
Bit 4-7 - Palette 14 / Sprite Palette 6 index 1 */
- case 0x3D: /* Bit 0-3 - Palette 14 / Sprite Palette 6 index 2
+ case 0x3d: /* Bit 0-3 - Palette 14 / Sprite Palette 6 index 2
Bit 4-7 - Palette 14 / Sprite Palette 6 index 3 */
- case 0x3E: /* Bit 0-3 - Palette 15 / Sprite Palette 7 index 0
+ case 0x3e: /* Bit 0-3 - Palette 15 / Sprite Palette 7 index 0
Bit 4-7 - Palette 15 / Sprite Palette 7 index 1 */
- case 0x3F: /* Bit 0-3 - Palette 15 / Sprite Palette 7 index 2
+ case 0x3f: /* Bit 0-3 - Palette 15 / Sprite Palette 7 index 2
Bit 4-7 - Palette 15 / Sprite Palette 7 index 3 */
break;
case 0x40: /* DMA source address (low)
@@ -785,7 +664,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 0-6 - Unknown
Bit 7 - DMA stop/start
*/
- if( data & 0x80 )
+ if (data & 0x80)
{
UINT32 src, dst;
UINT16 length;
@@ -793,51 +672,51 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
src = m_ws_portram[0x40] + (m_ws_portram[0x41] << 8) + (m_ws_portram[0x42] << 16);
dst = m_ws_portram[0x44] + (m_ws_portram[0x45] << 8) + (m_ws_portram[0x43] << 16);
length = m_ws_portram[0x46] + (m_ws_portram[0x47] << 8);
- for( ; length > 0; length-- )
+ for ( ; length > 0; length--)
{
- mem.write_byte(dst, mem.read_byte(src ) );
+ mem.write_byte(dst, mem.read_byte(src));
src++;
dst++;
}
#ifdef MAME_DEBUG
- logerror( "DMA src:%X dst:%X length:%d\n", src, dst, length );
+ logerror("DMA src:%X dst:%X length:%d\n", src, dst, length);
#endif
- m_ws_portram[0x40] = src & 0xFF;
- m_ws_portram[0x41] = ( src >> 8 ) & 0xFF;
- m_ws_portram[0x44] = dst & 0xFF;
- m_ws_portram[0x45] = ( dst >> 8 ) & 0xFF;
- m_ws_portram[0x46] = length & 0xFF;
- m_ws_portram[0x47] = ( length >> 8 ) & 0xFF;
- data &= 0x7F;
+ m_ws_portram[0x40] = src & 0xff;
+ m_ws_portram[0x41] = (src >> 8) & 0xff;
+ m_ws_portram[0x44] = dst & 0xff;
+ m_ws_portram[0x45] = (dst >> 8) & 0xff;
+ m_ws_portram[0x46] = length & 0xff;
+ m_ws_portram[0x47] = (length >> 8) & 0xff;
+ data &= 0x7f;
}
break;
- case 0x4A: /* Sound DMA source address (low)
+ case 0x4a: /* Sound DMA source address (low)
Bit 0-7 - Sound DMA source address bit 0-7
*/
- m_sound_dma.source = ( m_sound_dma.source & 0x0FFF00 ) | data;
+ m_sound_dma.source = (m_sound_dma.source & 0x0fff00) | data;
break;
- case 0x4B: /* Sound DMA source address (high)
+ case 0x4b: /* Sound DMA source address (high)
Bit 0-7 - Sound DMA source address bit 8-15
*/
- m_sound_dma.source = ( m_sound_dma.source & 0x0F00FF ) | ( data << 8 );
+ m_sound_dma.source = (m_sound_dma.source & 0x0f00ff) | (data << 8);
break;
- case 0x4C: /* Sound DMA source memory segment
+ case 0x4c: /* Sound DMA source memory segment
Bit 0-3 - Sound DMA source address segment
Bit 4-7 - Unknown
*/
- m_sound_dma.source = ( m_sound_dma.source & 0xFFFF ) | ( ( data & 0x0F ) << 16 );
+ m_sound_dma.source = (m_sound_dma.source & 0xffff) | ((data & 0x0f) << 16);
break;
- case 0x4D: /* Unknown */
+ case 0x4d: /* Unknown */
break;
- case 0x4E: /* Sound DMA transfer size (low)
+ case 0x4e: /* Sound DMA transfer size (low)
Bit 0-7 - Sound DMA transfer size bit 0-7
*/
- m_sound_dma.size = ( m_sound_dma.size & 0xFF00 ) | data;
+ m_sound_dma.size = (m_sound_dma.size & 0xff00) | data;
break;
- case 0x4F: /* Sound DMA transfer size (high)
+ case 0x4f: /* Sound DMA transfer size (high)
Bit 0-7 - Sound DMA transfer size bit 8-15
*/
- m_sound_dma.size = ( m_sound_dma.size & 0xFF ) | ( data << 8 );
+ m_sound_dma.size = (m_sound_dma.size & 0xff) | (data << 8);
break;
case 0x50: /* Unknown */
case 0x51: /* Unknown */
@@ -864,7 +743,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
* 001 - packed, 4 color, use 2000, monochrome
* 000 - not packed, 4 color, use 2000, monochrome - Regular WS monochrome
*/
- if ( m_system_type == TYPE_WSC )
+ if (m_system_type == TYPE_WSC)
{
m_vdp.color_mode = data & 0x80;
m_vdp.colors_16 = data & 0x40;
@@ -903,27 +782,27 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 0-3 - Right volume audio channel 2
Bit 4-7 - Left volume audio channel 2
*/
- case 0x8A: /* Audio 3 volume
+ case 0x8a: /* Audio 3 volume
Bit 0-3 - Right volume audio channel 3
Bit 4-7 - Left volume audio channel 3
*/
- case 0x8B: /* Audio 4 volume
+ case 0x8b: /* Audio 4 volume
Bit 0-3 - Right volume audio channel 4
Bit 4-7 - Left volume audio channel 4
*/
- case 0x8C: /* Sweep step
+ case 0x8c: /* Sweep step
Bit 0-7 - Sweep step
*/
- case 0x8D: /* Sweep time
+ case 0x8d: /* Sweep time
Bit 0-7 - Sweep time
*/
- case 0x8E: /* Noise control
+ case 0x8e: /* Noise control
Bit 0-2 - Noise generator type
Bit 3 - Reset
Bit 4 - Enable
Bit 5-7 - Unknown
*/
- case 0x8F: /* Sample location
+ case 0x8f: /* Sample location
Bit 0-7 - Sample address location 0 00xxxxxx xx000000
*/
case 0x90: /* Audio control
@@ -954,7 +833,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 0-3 - Master volume
Bit 4-7 - Unknown
*/
- m_sound->port_w( space, offset, data );
+ m_sound->port_w(space, offset, data);
break;
case 0xa0: /* Hardware type - this is probably read only
Bit 0 - Enable cartridge slot and/or disable bios
@@ -962,11 +841,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 2-7 - Unknown
*/
if ((data & 0x01) && !m_bios_disabled)
- {
m_bios_disabled = 1;
- m_bank_base[13] = (((m_ws_portram[0xc0] & 0x0f) << 4) | 15) & (m_ROMBanks - 1);
- m_rom_bank[13]->set_entry(m_bank_base[13]);
- }
break;
case 0xa2: /* Timer control
Bit 0 - HBlank Timer enable
@@ -975,10 +850,10 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 3 - VBlank Timer mode: 0 = one shot, 1 = auto reset
Bit 4-7 - Unknown
*/
- m_vdp.timer_hblank_enable = data & 0x1;
- m_vdp.timer_hblank_mode = (data & 0x2) >> 1;
- m_vdp.timer_vblank_enable = (data & 0x4) >> 2;
- m_vdp.timer_vblank_mode = (data & 0x8) >> 3;
+ m_vdp.timer_hblank_enable = BIT(data, 0);
+ m_vdp.timer_hblank_mode = BIT(data, 1);
+ m_vdp.timer_vblank_enable = BIT(data, 2);
+ m_vdp.timer_vblank_mode = BIT(data, 3);
break;
case 0xa4: /* HBlank timer frequency (low) - reload value
Bit 0-7 - HBlank timer reload value bit 0-7
@@ -1051,13 +926,13 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
bit 7 - Receive data interrupt generation
*/
// data |= 0x02;
- m_ws_portram[0xb1] = 0xFF;
- if ( data & 0x80 )
+ m_ws_portram[0xb1] = 0xff;
+ if (data & 0x80)
{
// m_ws_portram[0xb1] = 0x00;
data |= 0x04;
}
- if (data & 0x20 )
+ if (data & 0x20)
{
// data |= 0x01;
}
@@ -1070,8 +945,8 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
100 - Read START,A,B buttons
Bit 7 - Unknown
*/
- data = data & 0xF0;
- switch( data )
+ data = data & 0xf0;
+ switch (data)
{
case 0x10: /* Read Y cursors: Y1 - Y2 - Y3 - Y4 */
input = m_cursy->read();
@@ -1113,7 +988,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 7 - HBlank timer interrupt acknowledge
*/
wswan_clear_irq_line(data);
- data = m_ws_portram[0xB6];
+ data = m_ws_portram[0xb6];
break;
case 0xba: /* Internal EEPROM data (low)
Bit 0-7 - Internal EEPROM data transfer bit 0-7
@@ -1140,7 +1015,7 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
Bit 6 - Protect
Bit 7 - Initialize
*/
- if ( data & 0x20 )
+ if (data & 0x20)
{
UINT16 addr = ( ( ( m_ws_portram[0xbd] << 8 ) | m_ws_portram[0xbc] ) << 1 ) & 0x1FF;
m_internal_eeprom[ addr ] = m_ws_portram[0xba];
@@ -1159,240 +1034,23 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
logerror( "Unsupported internal EEPROM command: %X\n", data );
}
break;
- case 0xc0:
- // Bit 0-3 - ROM bank base register for rom3-rom14
- // Bit 4-7 - Unknown
- m_bank_base[2] = (((data & 0x0f) << 4) | 4) & (m_ROMBanks - 1);
- m_bank_base[3] = (((data & 0x0f) << 4) | 5) & (m_ROMBanks - 1);
- m_bank_base[4] = (((data & 0x0f) << 4) | 6) & (m_ROMBanks - 1);
- m_bank_base[5] = (((data & 0x0f) << 4) | 7) & (m_ROMBanks - 1);
- m_bank_base[6] = (((data & 0x0f) << 4) | 8) & (m_ROMBanks - 1);
- m_bank_base[7] = (((data & 0x0f) << 4) | 9) & (m_ROMBanks - 1);
- m_bank_base[8] = (((data & 0x0f) << 4) | 10) & (m_ROMBanks - 1);
- m_bank_base[9] = (((data & 0x0f) << 4) | 11) & (m_ROMBanks - 1);
- m_bank_base[10] = (((data & 0x0f) << 4) | 12) & (m_ROMBanks - 1);
- m_bank_base[11] = (((data & 0x0f) << 4) | 13) & (m_ROMBanks - 1);
- m_bank_base[12] = (((data & 0x0f) << 4) | 14) & (m_ROMBanks - 1);
- for (int i = 2; i < 13; i++)
- m_rom_bank[i]->set_entry(m_bank_base[i]);
-
- m_bank_base[13] = m_ROMBanks; // the last bank is mapped to bios at start!
- if (m_bios_disabled)
- {
- m_bank_base[13] = (((data & 0x0f) << 4) | 14) & (m_ROMBanks - 1);
- m_rom_bank[13]->set_entry(m_bank_base[13]);
- }
- break;
- case 0xc1: /* SRAM bank select
- Bit 0-7 - SRAM bank to select
- */
- if ( m_eeprom.mode == SRAM_64K || m_eeprom.mode == SRAM_256K || m_eeprom.mode == SRAM_512K || m_eeprom.mode == SRAM_1M || m_eeprom.mode == SRAM_2M )
- {
- m_eeprom.page = &m_eeprom.data[ ( data * 64 * 1024 ) & ( m_eeprom.size - 1 ) ];
- }
- break;
- case 0xc2:
- // Bit 0-7 - ROM bank for segment 2 (0x20000 - 0x2ffff)
- m_bank_base[0] = data & (m_ROMBanks - 1);
- m_rom_bank[0]->set_entry(m_bank_base[0]);
- break;
- case 0xc3:
- // Bit 0-7 - ROM bank for segment 3 (0x30000 - 0x3ffff)
- m_bank_base[1] = data & (m_ROMBanks - 1);
- m_rom_bank[1]->set_entry(m_bank_base[1]);
- break;
- case 0xc6: /* EEPROM address lower bits port/EEPROM address and command port
- 1KBit EEPROM:
- Bit 0-5 - EEPROM address bit 1-6
- Bit 6-7 - Command
- 00 - Extended command address bit 4-5:
- 00 - Write disable
- 01 - Write all
- 10 - Erase all
- 11 - Write enable
- 01 - Write
- 10 - Read
- 11 - Erase
- 16KBit EEPROM:
- Bit 0-7 - EEPROM address bit 1-8
- */
- switch( m_eeprom.mode )
- {
- case EEPROM_1K:
- m_eeprom.address = data & 0x3F;
- m_eeprom.command = data >> 4;
- if ( ( m_eeprom.command & 0x0C ) != 0x00 )
- {
- m_eeprom.command = m_eeprom.command & 0x0C;
- }
- break;
- case EEPROM_16K:
- m_eeprom.address = ( m_eeprom.address & 0xFF00 ) | data;
- break;
- default:
- logerror( "Write EEPROM address/register register C6 for unsupported EEPROM type\n" );
- break;
- }
- break;
- case 0xc7: /* EEPROM higher bits/command bits port
- 1KBit EEPROM:
- Bit 0 - Start
- Bit 1-7 - Unknown
- 16KBit EEPROM:
- Bit 0-1 - EEPROM address bit 9-10
- Bit 2-3 - Command
- 00 - Extended command address bit 0-1:
- 00 - Write disable
- 01 - Write all
- 10 - Erase all
- 11 - Write enable
- 01 - Write
- 10 - Read
- 11 - Erase
- Bit 4 - Start
- Bit 5-7 - Unknown
- */
- switch( m_eeprom.mode )
- {
- case EEPROM_1K:
- m_eeprom.start = data & 0x01;
- break;
- case EEPROM_16K:
- m_eeprom.address = ( ( data & 0x03 ) << 8 ) | ( m_eeprom.address & 0xFF );
- m_eeprom.command = data & 0x0F;
- if ( ( m_eeprom.command & 0x0C ) != 0x00 )
- {
- m_eeprom.command = m_eeprom.command & 0x0C;
- }
- m_eeprom.start = ( data >> 4 ) & 0x01;
- break;
- default:
- logerror( "Write EEPROM address/command register C7 for unsupported EEPROM type\n" );
- break;
- }
- break;
- case 0xc8: /* EEPROM command
- Bit 0 - Read complete (read only)
- Bit 1 - Write complete (read only)
- Bit 2-3 - Unknown
- Bit 4 - Read
- Bit 5 - Write
- Bit 6 - Protect
- Bit 7 - Initialize
- */
- if ( m_eeprom.mode == EEPROM_1K || m_eeprom.mode == EEPROM_16K )
- {
- if ( data & 0x80 )
- { /* Initialize */
- logerror( "Unsupported EEPROM command 'Initialize'\n" );
- }
- if ( data & 0x40 )
- { /* Protect */
- switch( m_eeprom.command )
- {
- case 0x00:
- m_eeprom.write_enabled = 0;
- data |= 0x02;
- break;
- case 0x03:
- m_eeprom.write_enabled = 1;
- data |= 0x02;
- break;
- default:
- logerror( "Unsupported 'Protect' command %X\n", m_eeprom.command );
- }
- }
- if ( data & 0x20 )
- { /* Write */
- if ( m_eeprom.write_enabled )
- {
- switch( m_eeprom.command )
- {
- case 0x04:
- m_eeprom.data[ ( m_eeprom.address << 1 ) + 1 ] = m_ws_portram[0xc4];
- m_eeprom.data[ m_eeprom.address << 1 ] = m_ws_portram[0xc5];
- data |= 0x02;
- break;
- default:
- logerror( "Unsupported 'Write' command %X\n", m_eeprom.command );
- }
- }
- }
- if ( data & 0x10 )
- { /* Read */
- m_ws_portram[0xc4] = m_eeprom.data[ ( m_eeprom.address << 1 ) + 1 ];
- m_ws_portram[0xc5] = m_eeprom.data[ m_eeprom.address << 1 ];
- data |= 0x01;
- }
- }
- else
- {
- logerror( "EEPROM command for unknown EEPROM type\n" );
- }
- break;
- case 0xca: /* RTC Command
- Bit 0-4 - RTC command
- 10000 - Reset
- 10010 - Write timer settings (alarm)
- 10011 - Read timer settings (alarm)
- 10100 - Set time/date
- 10101 - Get time/date
- Bit 5-6 - Unknown
- Bit 7 - Command done (read only)
- */
- switch( data )
- {
- case 0x10: /* Reset */
- m_rtc.index = 8;
- m_rtc.year = 0;
- m_rtc.month = 1;
- m_rtc.day = 1;
- m_rtc.day_of_week = 0;
- m_rtc.hour = 0;
- m_rtc.minute = 0;
- m_rtc.second = 0;
- m_rtc.setting = 0xFF;
- data |= 0x80;
- break;
- case 0x12: /* Write Timer Settings (Alarm) */
- m_rtc.index = 8;
- m_rtc.setting = m_ws_portram[0xcb];
- data |= 0x80;
- break;
- case 0x13: /* Read Timer Settings (Alarm) */
- m_rtc.index = 8;
- m_ws_portram[0xcb] = m_rtc.setting;
- data |= 0x80;
- break;
- case 0x14: /* Set Time/Date */
- m_rtc.year = m_ws_portram[0xcb];
- m_rtc.index = 1;
- data |= 0x80;
- break;
- case 0x15: /* Get Time/Date */
- m_rtc.index = 0;
- data |= 0x80;
- m_ws_portram[0xcb] = m_rtc.year;
- break;
- default:
- logerror( "%X: Unknown RTC command (%X) requested\n", mem.device().safe_pc(), data );
- }
- break;
- case 0xcb: /* RTC Data */
- if ( m_ws_portram[0xca] == 0x94 && m_rtc.index < 7 )
- {
- switch( m_rtc.index )
- {
- case 0: m_rtc.year = data; break;
- case 1: m_rtc.month = data; break;
- case 2: m_rtc.day = data; break;
- case 3: m_rtc.day_of_week = data; break;
- case 4: m_rtc.hour = data; break;
- case 5: m_rtc.minute = data; break;
- case 6: m_rtc.second = data; break;
- }
- m_rtc.index++;
- }
+ case 0xc0: // ROM bank $40000-$fffff
+ case 0xc1: // SRAM bank
+ case 0xc2: // ROM bank $20000-$2ffff
+ case 0xc3: // ROM bank $30000-$3ffff
+ case 0xc4:
+ case 0xc5:
+ case 0xc6: // EEPROM address / command
+ case 0xc7: // EEPROM address / command
+ case 0xc8: // EEPROM command
+ case 0xc9:
+ case 0xca: // RTC command
+ case 0xcb: // RTC data
+ case 0xcc:
+ case 0xcd:
+ case 0xce:
+ case 0xcf:
+ m_cart->write_io(space, offset & 0x0f, data);
break;
default:
logerror( "Write to unsupported port: %X - %X\n", offset, data );
@@ -1403,154 +1061,6 @@ WRITE8_MEMBER( wswan_state::wswan_port_w )
m_ws_portram[offset] = data;
}
-const char* wswan_state::wswan_determine_sram(UINT8 data )
-{
- m_eeprom.write_enabled = 0;
- m_eeprom.mode = SRAM_UNKNOWN;
- switch( data )
- {
- case 0x00: m_eeprom.mode = SRAM_NONE; break;
- case 0x01: m_eeprom.mode = SRAM_64K; break;
- case 0x02: m_eeprom.mode = SRAM_256K; break;
- case 0x03: m_eeprom.mode = SRAM_1M; break;
- case 0x04: m_eeprom.mode = SRAM_2M; break;
- case 0x05: m_eeprom.mode = SRAM_512K; break;
- case 0x10: m_eeprom.mode = EEPROM_1K; break;
- case 0x20: m_eeprom.mode = EEPROM_16K; break;
- case 0x50: m_eeprom.mode = EEPROM_8K; break;
- }
- m_eeprom.size = wswan_sram_size[ m_eeprom.mode ];
- return wswan_sram_str[ m_eeprom.mode ];
-}
-
-enum enum_romsize { ROM_4M=0, ROM_8M, ROM_16M, ROM_32M, ROM_64M, ROM_128M, ROM_UNKNOWN };
-static const char *const wswan_romsize_str[] = {
- "4Mbit", "8Mbit", "16Mbit", "32Mbit", "64Mbit", "128Mbit", "Unknown"
-};
-
-const char* wswan_state::wswan_determine_romsize( UINT8 data )
-{
- switch( data )
- {
- case 0x02: return wswan_romsize_str[ ROM_4M ];
- case 0x03: return wswan_romsize_str[ ROM_8M ];
- case 0x04: return wswan_romsize_str[ ROM_16M ];
- case 0x06: return wswan_romsize_str[ ROM_32M ];
- case 0x08: return wswan_romsize_str[ ROM_64M ];
- case 0x09: return wswan_romsize_str[ ROM_128M ];
- }
- return wswan_romsize_str[ ROM_UNKNOWN ];
-}
-
-
-DRIVER_INIT_MEMBER(wswan_state, wswan)
-{
- /* Initialize EEPROM structure */
- memset( &m_eeprom, 0, sizeof( m_eeprom ) );
- m_eeprom.data = NULL;
- m_eeprom.page = NULL;
-
- /* Initialize RTC structure */
- m_rtc.present = 0;
- m_rtc.index = 0;
- m_rtc.year = 0;
- m_rtc.month = 0;
- m_rtc.day = 0;
- m_rtc.day_of_week = 0;
- m_rtc.hour = 0;
- m_rtc.minute = 0;
- m_rtc.second = 0;
- m_rtc.setting = 0xFF;
-}
-
-
-DEVICE_IMAGE_LOAD_MEMBER(wswan_state,wswan_cart)
-{
- UINT32 size;
- const char *sram_str;
-
- if (image.software_entry() == NULL)
- size = image.length();
- else
- size = image.get_software_region_length("rom");
-
- m_ws_ram = (UINT8*) m_maincpu->space(AS_PROGRAM).get_read_ptr(0);
- memset(m_ws_ram, 0, 0xffff);
- m_ROMBanks = size / 65536;
-
- for (int i = 0; i < m_ROMBanks; i++)
- {
- if ((m_ROMMap[i] = auto_alloc_array(machine(), UINT8, 0x10000)))
- {
- if (image.software_entry() == NULL)
- {
- if (image.fread( m_ROMMap[i], 0x10000) != 0x10000)
- {
- image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Wrongly sized ROM");
- image.message(" Wrongly sized ROM");
- logerror("Error while reading loading rom!\n");
- return IMAGE_INIT_FAIL;
- }
- }
- else
- memcpy(m_ROMMap[i], image.get_software_region("rom") + i * 0x10000, 0x10000);
- }
- else
- {
- image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Unable to allocate memory for ROM");
- image.message(" Unable to allocate memory for ROM");
- logerror("Memory allocation failed reading rom!\n");
- return IMAGE_INIT_FAIL;
- }
- }
-
- sram_str = wswan_determine_sram(m_ROMMap[m_ROMBanks - 1][0xfffb]);
-
- m_rtc.present = m_ROMMap[m_ROMBanks - 1][0xfffd] ? 1 : 0;
- m_rotate = m_ROMMap[m_ROMBanks-1][0xfffc] & 0x01;
-
- {
- int sum = 0;
- /* Spit out some info */
- logerror("ROM DETAILS\n" );
- logerror("\tDeveloper ID: %X\n", m_ROMMap[m_ROMBanks - 1][0xfff6]);
- logerror("\tMinimum system: %s\n", m_ROMMap[m_ROMBanks - 1][0xfff7] ? "WonderSwan Color" : "WonderSwan");
- logerror("\tCart ID: %X\n", m_ROMMap[m_ROMBanks - 1][0xfff8]);
- logerror("\tROM size: %s\n", wswan_determine_romsize(m_ROMMap[m_ROMBanks - 1][0xfffa]));
- logerror("\tSRAM size: %s\n", sram_str);
- logerror("\tFeatures: %X\n", m_ROMMap[m_ROMBanks - 1][0xfffc]);
- logerror("\tRTC: %s\n", m_ROMMap[m_ROMBanks - 1][0xfffd] ? "yes" : "no");
- for (int i = 0; i < m_ROMBanks; i++)
- {
- int count;
- for (count = 0; count < 0x10000; count++)
- {
- sum += m_ROMMap[i][count];
- }
- }
- sum -= m_ROMMap[m_ROMBanks - 1][0xffff];
- sum -= m_ROMMap[m_ROMBanks - 1][0xfffe];
- sum &= 0xffff;
- logerror("\tChecksum: %X%X (calculated: %04X)\n", m_ROMMap[m_ROMBanks - 1][0xffff], m_ROMMap[m_ROMBanks - 1][0xfffe], sum);
- }
-
- if (m_eeprom.size != 0)
- {
- m_eeprom.data = auto_alloc_array(machine(), UINT8, m_eeprom.size);
- image.battery_load(m_eeprom.data, m_eeprom.size, 0x00);
- m_eeprom.page = m_eeprom.data;
- }
-
- if (image.software_entry() == NULL)
- {
- logerror("Image Name: %s\n", image.longname());
- logerror("Image Year: %s\n", image.year());
- logerror("Image Manufacturer: %s\n", image.manufacturer());
- }
-
- /* All done */
- return IMAGE_INIT_PASS;
-}
TIMER_CALLBACK_MEMBER(wswan_state::wswan_scanline_interrupt)
{
@@ -1584,7 +1094,7 @@ TIMER_CALLBACK_MEMBER(wswan_state::wswan_scanline_interrupt)
{
address_space &space = m_maincpu->space(AS_PROGRAM );
/* TODO: Output sound DMA byte */
- wswan_port_w( space, 0x89, space.read_byte(m_sound_dma.source ) );
+ port_w( space, 0x89, space.read_byte(m_sound_dma.source ) );
m_sound_dma.size--;
m_sound_dma.source = ( m_sound_dma.source + 1 ) & 0x0FFFFF;
if ( m_sound_dma.size == 0 )
diff --git a/src/mess/mess.mak b/src/mess/mess.mak
index 58cabc3ea51..ca411b1e79d 100644
--- a/src/mess/mess.mak
+++ b/src/mess/mess.mak
@@ -633,6 +633,7 @@ BUSES += VIP
BUSES += VTECH_IOEXP
BUSES += VTECH_MEMEXP
BUSES += WANGPC
+BUSES += WSWAN
BUSES += X68K
BUSES += Z88
BUSES += ZORRO