diff options
author | 2014-10-05 11:51:41 +0000 | |
---|---|---|
committer | 2014-10-05 11:51:41 +0000 | |
commit | 66fab3cf5c75cd1eca9e4d1b1df29964c052ada3 (patch) | |
tree | 8e8d5f30a02229312cd04ecf1ed3aaa85c575146 | |
parent | 218bf5c577b9fa2bdfb3c786a990ae1582e04af8 (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-- | .gitattributes | 4 | ||||
-rw-r--r-- | hash/wscolor.xml | 311 | ||||
-rw-r--r-- | hash/wswan.xml | 370 | ||||
-rw-r--r-- | src/emu/bus/bus.mak | 12 | ||||
-rw-r--r-- | src/emu/bus/wswan/rom.c | 535 | ||||
-rw-r--r-- | src/emu/bus/wswan/rom.h | 106 | ||||
-rw-r--r-- | src/emu/bus/wswan/slot.c | 491 | ||||
-rw-r--r-- | src/emu/bus/wswan/slot.h | 130 | ||||
-rw-r--r-- | src/mess/drivers/wswan.c | 76 | ||||
-rw-r--r-- | src/mess/includes/wswan.h | 53 | ||||
-rw-r--r-- | src/mess/machine/wswan.c | 844 | ||||
-rw-r--r-- | src/mess/mess.mak | 1 |
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="マリー&エリー ~ふたりのアトリエ~"/> <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="五目並べ&リバーシ 登龍門"/> - <!-- 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><unknown></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="ロックマン&フォルテ 未来からの挑戦者"/> - <!-- 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 |