diff options
-rw-r--r-- | hash/alice32.xml | 2 | ||||
-rw-r--r-- | hash/c64_cart.xml | 2 | ||||
-rw-r--r-- | hash/cpc_flop.xml | 2 | ||||
-rw-r--r-- | hash/einstein.xml | 4 | ||||
-rw-r--r-- | hash/fm77av.xml | 4 | ||||
-rw-r--r-- | hash/fmtowns_cd.xml | 8 | ||||
-rw-r--r-- | hash/ibm5150.xml | 4 | ||||
-rw-r--r-- | hash/intv.xml | 96 | ||||
-rw-r--r-- | hash/intvecs.xml | 22 | ||||
-rw-r--r-- | hash/kayproii.xml | 22 | ||||
-rw-r--r-- | hash/leapfrog_leappad_cart.xml | 2 | ||||
-rw-r--r-- | hash/msx2_flop.xml | 2 | ||||
-rw-r--r-- | hash/pc8801_cass.xml | 2 | ||||
-rw-r--r-- | hash/pc8801_flop.xml | 6 | ||||
-rw-r--r-- | hash/pc98.xml | 2 | ||||
-rw-r--r-- | hash/sega_beena_cart.xml | 4 | ||||
-rw-r--r-- | hash/specpls3_flop.xml | 4 | ||||
-rw-r--r-- | hash/spectrum_cass.xml | 16 | ||||
-rw-r--r-- | hash/svi318_cass.xml | 4 | ||||
-rw-r--r-- | hash/tandy2k.xml | 2 | ||||
-rw-r--r-- | hash/x1_cass.xml | 2 | ||||
-rw-r--r-- | hash/x1_flop.xml | 20 | ||||
-rw-r--r-- | src/devices/bus/intv/slot.cpp | 2 | ||||
-rw-r--r-- | src/emu/diimage.cpp | 26 | ||||
-rw-r--r-- | src/emu/romload.cpp | 189 | ||||
-rw-r--r-- | src/emu/romload.h | 5 | ||||
-rw-r--r-- | src/emu/softlist_dev.cpp | 140 | ||||
-rw-r--r-- | src/emu/validity.cpp | 2 | ||||
-rw-r--r-- | src/frontend/mame/audit.cpp | 28 | ||||
-rw-r--r-- | src/mame/drivers/gsword.cpp | 2 |
30 files changed, 311 insertions, 315 deletions
diff --git a/hash/alice32.xml b/hash/alice32.xml index da628c7f84e..bf9768907dd 100644 --- a/hash/alice32.xml +++ b/hash/alice32.xml @@ -233,7 +233,7 @@ TODO: split Alice 4k tapes into their own softlist </part> <part name="cass2" interface="mc10_cass"> <feature name="part_id" value="Tape 2"/> - <dataarea name="cass" size="79023"> + <dataarea name="cass" size="98152"> <rom name="maths1_b.k7" size="98152" crc="0a68e9c4" sha1="263c82d01e5883cf78c591b598f5fa5bf4d0c585"/> </dataarea> </part> diff --git a/hash/c64_cart.xml b/hash/c64_cart.xml index a4ce1fbbaca..5d949c3e6f8 100644 --- a/hash/c64_cart.xml +++ b/hash/c64_cart.xml @@ -6637,7 +6637,7 @@ license:CC0 <feature name="game" value="0" /> <feature name="exrom" value="1" /> - <dataarea name="rom" size="0x800"> + <dataarea name="rom" size="0x8000"> <rom name="turbomst.bin" size="0x8000" status="nodump"/> </dataarea> </part> diff --git a/hash/cpc_flop.xml b/hash/cpc_flop.xml index b3214339e9a..333122daff3 100644 --- a/hash/cpc_flop.xml +++ b/hash/cpc_flop.xml @@ -280323,7 +280323,7 @@ Shortnames are chosen to "preview" the content: <year>1989</year> <publisher>Activision</publisher> <part name="flop1" interface="floppy_3"> - <dataarea name="flop" size="63488"> + <dataarea name="flop" size="199680"> <rom name="altered beast (nongoodcpc).dsk" size="199680" crc="877d621c" sha1="ff7ed8403c879062f44708eada63a8dea669d48c"/> </dataarea> </part> diff --git a/hash/einstein.xml b/hash/einstein.xml index 18d11a1d622..d25267f94b0 100644 --- a/hash/einstein.xml +++ b/hash/einstein.xml @@ -386,7 +386,7 @@ Xtal Systems (Xtal Research) <year>19??</year> <publisher>Konami</publisher> <part name="flop1" interface="floppy_3"> - <dataarea name="flop" size="215296"> + <dataarea name="flop" size="225536"> <rom name="4game.dsk" size="225536" crc="19cc28fa" sha1="fed6c4972fc72ac51952f3b800c43f1b1240643b"/> </dataarea> </part> @@ -740,7 +740,7 @@ Xtal Systems (Xtal Research) <year>1985</year> <publisher>Orion Software</publisher> <part name="flop1" interface="floppy_3"> - <dataarea name="flop" size="215296"> + <dataarea name="flop" size="1722368"> <rom name="highway.dsk" size="1722368" crc="6a0b9186" sha1="dc88e7aa2cdf9d066fece5dc10092a41de077075"/> </dataarea> </part> diff --git a/hash/fm77av.xml b/hash/fm77av.xml index 0f9010da648..680031fa968 100644 --- a/hash/fm77av.xml +++ b/hash/fm77av.xml @@ -357,7 +357,7 @@ Titles, serial #s, publishers and release dates taken from: <info name="release" value="198611xx"/> <info name="alt_title" value="レイドック"/> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="414992"> + <dataarea name="flop" size="416048"> <rom name="laydocka1.d77" size="416048" crc="3b53877e" sha1="e2f3579fe93622a74fb07d0b8d2cd7bfb2b39132"/> </dataarea> </part> @@ -379,7 +379,7 @@ Titles, serial #s, publishers and release dates taken from: <!--rom name="laydock (1986)(t&e)(jp).d77" size="538592" crc="60fc8306" sha1="65f73297d0ee4f07ec5f513eef54dfbc1d3a5094" offset="0"/--> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="414992"> + <dataarea name="flop" size="416048"> <rom name="laydock (disk 1).d77" size="416048" crc="3b53877e" sha1="e2f3579fe93622a74fb07d0b8d2cd7bfb2b39132"/> </dataarea> </part> diff --git a/hash/fmtowns_cd.xml b/hash/fmtowns_cd.xml index e2882959e9a..5a47e916f47 100644 --- a/hash/fmtowns_cd.xml +++ b/hash/fmtowns_cd.xml @@ -4775,7 +4775,7 @@ User/save disks that can be created from the game itself are not included. <info name="usage" value="Requires 2 MB RAM"/> <part name="flop1" interface="floppy_3_5"> <feature name="part_id" value="User Disk" /> - <dataarea name="flop" size="1261568"> + <dataarea name="flop" size="1281968"> <rom name="opeurope.d88" size="1281968" crc="32174842" sha1="12fd4e6558e0bf7e47a9a27fa5c33db9c3a60cfd" offset="000000" /> </dataarea> </part> @@ -6724,7 +6724,7 @@ User/save disks that can be created from the game itself are not included. <info name="usage" value="Requires 2 MB RAM"/> <part name="flop1" interface="floppy_3_5"> <feature name="part_id" value="User Disk" /> - <dataarea name="flop" size="1261568"> + <dataarea name="flop" size="1281968"> <rom name="inindo.d88" size="1281968" crc="8228d430" sha1="074d1fb23eb31b6d388deeeded545c4202cd5dee" offset="000000" /> </dataarea> </part> @@ -9737,7 +9737,7 @@ User/save disks that can be created from the game itself are not included. <info name="usage" value="Requires 2 MB RAM"/> <part name="flop1" interface="floppy_3_5"> <feature name="part_id" value="User Disk" /> - <dataarea name="flop" size="1261568"> + <dataarea name="flop" size="1281968"> <rom name="nobubus.d88" size="1281968" crc="6ac325e5" sha1="c12389c6a34ed87155ab4db4831479f608e47d59" offset="000000" /> </dataarea> </part> @@ -11813,7 +11813,7 @@ User/save disks that can be created from the game itself are not included. <info name="usage" value="Requires 2 MB RAM"/> <part name="flop1" interface="floppy_3_5"> <feature name="part_id" value="Master Disk" /> - <dataarea name="flop" size="1261568"> + <dataarea name="flop" size="3583660"> <rom name="shinjuku labyrinth (master disk).mfm" size="3583660" crc="78b7c26c" sha1="778befacd1534dc22edffccaebb2957823e488e7" offset="000000" /> </dataarea> </part> diff --git a/hash/ibm5150.xml b/hash/ibm5150.xml index fe0ea5016f1..0fff0bcbedd 100644 --- a/hash/ibm5150.xml +++ b/hash/ibm5150.xml @@ -8797,12 +8797,12 @@ has been replaced with an all-zero block. --> <publisher>Sega</publisher> <info name="developer" value="Sega" /> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size = "327680"> + <dataarea name="flop" size = "368640"> <rom name="Golden Axe [Sega] [1990] [5.25] [1 of 2].img" size="368640" crc="9d919d85" sha1="9203ecedd274d2436b6c39aa166fabd0e5d089d4"/> </dataarea> </part> <part name="flop2" interface="floppy_5_25"> - <dataarea name="flop" size = "327680"> + <dataarea name="flop" size = "368640"> <rom name="Golden Axe [Sega] [1990] [5.25] [2 of 2].img" size="368640" crc="8684a3dd" sha1="3200f3a97d5912812dc4b53b8b733a371c2bf140"/> </dataarea> </part> diff --git a/hash/intv.xml b/hash/intv.xml index 5e8b79288a7..f0f0917a69c 100644 --- a/hash/intv.xml +++ b/hash/intv.xml @@ -142,7 +142,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="b-17 bomber.50" size="0x4000" crc="5f612afb" sha1="8b9b7d938590ede5fe651f165f405ffc9e41cabd"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="b-17 bomber.d0" size="0x2000" crc="3e932009" sha1="f0fcc934ba19a9e88b470a99a2d984820369c57c"/> </dataarea> </part> @@ -240,7 +240,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="bomb squad.50" size="0x4000" crc="6f34430f" sha1="2c101e5241856691debc75b8012e35e696689c3d"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="bomb squad.d0" size="0x2000" crc="f99180e1" sha1="8d4a7ca33fc9ac5db8b1bdcf8806d899c898ae03"/> </dataarea> </part> @@ -282,10 +282,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="bump n jump.50" size="0x4000" crc="6f667338" sha1="bdb657130dc9421fad842bbbc9ba7ac380ed0c86"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="bump n jump.d0" size="0x2000" crc="96265252" sha1="3919925e229e7ec57d726245f13c034f78b7d863"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="bump n jump.f0" size="0x2000" crc="038df644" sha1="cb60703bffcbfaec77098a9525136c32cbe260f8"/> </dataarea> </part> @@ -354,7 +354,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="championship tennis.50" size="0x4000" crc="59d1eaf3" sha1="e836a9712238843a2e319d8d9618b58373ebacbd"/> </dataarea> - <dataarea name="D000" size="0x4000"> + <dataarea name="d000" size="0x4000"> <rom name="championship tennis.d0" size="0x4000" crc="c7dd6388" sha1="446514366065262ea9658e4ba399e84b2a249fb8"/> </dataarea> </part> @@ -496,7 +496,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="green demo cart.50" size="0x4000" crc="52609fec" sha1="780183183d4d1fc1a23a9a0435788c3b750003d1"/> </dataarea> - <dataarea name="D000" size="0x4000"> + <dataarea name="d000" size="0x4000"> <rom name="green demo cart.d0" size="0x4000" crc="9b37afbe" sha1="ad5d06b040f2ddea2b4ab9f0e98d77ee7c310498"/> </dataarea> </part> @@ -511,7 +511,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="international demo cart.50" size="0x4000" crc="5d575728" sha1="b663031fff53ff36942c5f325d25e913dd8367f1"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="international demo cart.d0" size="0x2000" crc="7a837bc9" sha1="dcc708901b391fc62bf799fa2e9db4551f93ba8f"/> </dataarea> </part> @@ -763,7 +763,7 @@ license:CC0 <dataarea name="9000" size="0x6000"> <rom name="hover force.90" size="0x6000" crc="75d45110" sha1="f7d9d7c932be1cbf65dcfff0cfdab9e8b8f86661"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="hover force.d0" size="0x2000" crc="ed7c8fac" sha1="140986d67ba22e5c344e27ac74fa3e14f35097e7"/> </dataarea> </part> @@ -883,10 +883,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="masters of the universe.50" size="0x4000" crc="143e8ca2" sha1="0f54ee719269ac96443ceab78f96224ce1516296"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="masters of the universe.d0" size="0x2000" crc="9c94b9f8" sha1="b18daefc51c709e7f0e20df0b937faded3a51fe9"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="masters of the universe.f0" size="0x2000" crc="7655e78a" sha1="c11533e250ab71ea27d0fec0225ddfbd69b17c41"/> </dataarea> </part> @@ -972,7 +972,7 @@ license:CC0 <dataarea name="8800" size="0x6000"> <rom name="ms.88" size="0x6000" crc="714bc9b0" sha1="91d6ddd487fd8d5559a5abc3025af12f7aac889a"/> </dataarea> - <dataarea name="D000" size="0x6000"> + <dataarea name="d000" size="0x6000"> <rom name="ms.d0" size="0x6000" crc="467e8990" sha1="68be9156d29925575ac2838a2cd52e7c87ac568e"/> </dataarea> </part> @@ -1040,7 +1040,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="pinball.50" size="0x4000" crc="eea1a9a7" sha1="89a725d2c404a27ce5f931a896c1f411ea6707bd"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="pinball.d0" size="0x2000" crc="ce21806d" sha1="532cb88d9a6797ca218c5364275cb57691eb1322"/> </dataarea> </part> @@ -1518,10 +1518,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="thin ice.50" size="0x4000" crc="0d2e9e57" sha1="211c6012c7d1a1216282bead1b01c58101dd11be"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="thin ice.d0" size="0x2000" crc="ab5d151b" sha1="807276b1180f8c90e10f5ba4c1a7cdec2b08e458"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="thin ice.f0" size="0x2000" crc="bc59178e" sha1="72d7ccbc4e00becae6ad0887da76f583eafbb895"/> </dataarea> </part> @@ -1537,10 +1537,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="thunder castle.50" size="0x4000" crc="f77a5612" sha1="9a0b509b328aa0e9feff16cc0ce42150c8619e6c"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="thunder castle.d0" size="0x2000" crc="b2e18fed" sha1="2a6ba9e022bd5684eb7c2c38bdc267dee3e5b85a"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="thunder castle.f0" size="0x2000" crc="f305da4e" sha1="9be241701112e5fe9a3cbec874e64826fd02e25c"/> </dataarea> </part> @@ -1559,10 +1559,10 @@ license:CC0 <dataarea name="9000" size="0x4000"> <rom name="tower of doom.90" size="0x4000" crc="df232856" sha1="7a612c7316b6fa56171fcfc6243cae5b097429db"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="tower of doom.d0" size="0x2000" crc="67a60cee" sha1="3b30d44d0b61bedb167f517440eb2662a2df69cf"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="tower of doom.f0" size="0x2000" crc="f683cbe6" sha1="6bea72aab5398dd0cd5c13eab57fc2f9d23fb952"/> </dataarea> </part> @@ -1636,7 +1636,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="tron - solar sailer.50" size="0x4000" crc="96b2681e" sha1="08880cf77ed6ab9a20b9a2161ac2bb998b42bc78"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="tron - solar sailer.d0" size="0x2000" crc="0e45e775" sha1="a6d317c3e342c53d6ddbbf7bd774a84a6b44dfb8"/> </dataarea> </part> @@ -1717,7 +1717,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="vectron.50" size="0x4000" crc="9ac88229" sha1="937300637b3fba2126be4ee119b9f1e902b9f15b"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="vectron.d0" size="0x2000" crc="eeaed70a" sha1="ef78c2159eb810853ba0e2c2bd0f27d15de8f7c3"/> </dataarea> </part> @@ -1760,10 +1760,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="world cup football.50" size="0x4000" crc="ec17636c" sha1="f96ce3b97e2250d5a37710c55f59e29319f2cf28"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="world cup football.d0" size="0x2000" crc="0d5be7c7" sha1="9a03652e525316ec9e889b0989d22a35fb6a8358"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="world cup football.f0" size="0x2000" crc="4bb2b777" sha1="82ae81c3eb35e7e7e53c4f81a86bdf5ac3d925ff"/> </dataarea> </part> @@ -1825,7 +1825,7 @@ license:CC0 <dataarea name="7000" size="0x2000"> <rom name="ecs_rom.70" size="0x2000" crc="46bb1f48" sha1="eda44a8476fdada1ae90fba0d0287611e2efa074" /> </dataarea> - <dataarea name="E000" size="0x2000"> + <dataarea name="e000" size="0x2000"> <rom name="ecs_rom.e0" size="0x2000" crc="c2ebcd90" sha1="b3c14955f56c57e6f0d8fbb695771946cfcf6582" /> </dataarea> <dataarea name="ram" size="0x800"> @@ -1849,10 +1849,10 @@ license:CC0 <dataarea name="9000" size="16384"> <rom name="ad&d tower of mystery.90" size="16384" crc="69ea443d" sha1="5348845531a326cf66991697c55efd9287b4874b" /> </dataarea> - <dataarea name="D000" size="8192"> + <dataarea name="d000" size="8192"> <rom name="ad&d tower of mystery.d0" size="8192" crc="35f27a1e" sha1="2cfdee85347c1226c48d15cdfd6b8819136db130" /> </dataarea> - <dataarea name="F000" size="8192"> + <dataarea name="f000" size="8192"> <rom name="ad&d tower of mystery.f0" size="8192" crc="c60bb7f6" sha1="9f53d330453807c18dcb4c0ed37ad0e77251213a" /> </dataarea> </part> @@ -1903,7 +1903,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="all star major league baseball.50" size="0x4000" crc="4a7e080a" sha1="ee2edd084c371d39dfcd725ed4aa5679e0c34a27"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="all star major league baseball.d0" size="0x2000" crc="31325854" sha1="fe7b5f3969e214ac23d20c5c137dc23f4515108d"/> </dataarea> </part> @@ -1942,7 +1942,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="choplifter.50" size="0x4000" crc="b05cd576" sha1="61205b84aa3673d7a50da4f92ed0ed78e34ac951"/> </dataarea> - <dataarea name="D000" size="0x3000"> + <dataarea name="d000" size="0x3000"> <rom name="choplifter.d0" size="0x3000" crc="9b09666e" sha1="a024e5189e52ae07aa666fdcba612a6e9d7da4bc"/> </dataarea> </part> @@ -2047,7 +2047,7 @@ license:CC0 <dataarea name="9000" size="24576"> <rom name="hover force_3d.90" size="24576" crc="1cf011ef" sha1="5cfc7a9bb09937d499b3cdfd5e84a3e975f543a6" /> </dataarea> - <dataarea name="D000" size="8192"> + <dataarea name="d000" size="8192"> <rom name="hover force_3d.d0" size="8192" crc="d6e96ddc" sha1="2833c891028772d2a3acf23dce67e3cd597d486f" /> </dataarea> </part> @@ -2086,7 +2086,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="king of the mountain.50" size="0x4000" crc="3b689be9" sha1="794f7fbf5592a1c4962264db3b21d543763462ad"/> </dataarea> - <dataarea name="D000" size="0x4000"> + <dataarea name="d000" size="0x4000"> <rom name="king of the mountain.d0" size="0x4000" crc="45e7021d" sha1="3e6c17470ce5a92b28fa476c94ae0b84ab01e9c2"/> </dataarea> </part> @@ -2152,7 +2152,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="magic carousel.50" size="0x4000" crc="a1b985d2" sha1="2fdeb148f4376f1fa8eeff3a887465dfd8ffbb7d"/> </dataarea> - <dataarea name="D000" size="0x4000"> + <dataarea name="d000" size="0x4000"> <rom name="magic carousel.d0" size="0x4000" crc="86bc2541" sha1="997a9b9ecb88df4f90f1f8c3cbf817c057c4a933"/> </dataarea> </part> @@ -2230,7 +2230,7 @@ license:CC0 <dataarea name="5000" size="0x2000"> <rom name="blowout.50" size="0x2000" crc="f98d2330" sha1="20db3279fb6b792799722e5157c20d5b5227e059"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="blowout.d0" size="0x2000" crc="f257a189" sha1="3bfc013252af2b05c35be21b01ebaeadd5ce4d0b"/> </dataarea> </part> @@ -2245,7 +2245,7 @@ license:CC0 <dataarea name="5000" size="0x2000"> <rom name="blowouta.50" size="0x2000" crc="25b7aa92" sha1="a232a43407bfa5781b30c5afded8df4af75e1788"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="blowouta.d0" size="0x2000" crc="b7e29589" sha1="4e1b1c2bf93952d52827b13752e61584a66672ea"/> </dataarea> </part> @@ -2374,7 +2374,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="space shuttle.50" size="0x4000" crc="b16905d6" sha1="ec276c57a954c9bbe032ed166de660e77a7087be"/> </dataarea> - <dataarea name="D000" size="0x4000"> + <dataarea name="d000" size="0x4000"> <rom name="space shuttle.d0" size="0x4000" crc="4b497d5e" sha1="1bc4d9af71b01cae44099297aeb0f00056463b03"/> </dataarea> </part> @@ -2389,10 +2389,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="super soccer.50" size="0x4000" crc="02a2fb6c" sha1="b7f75755f019f5f89f99942924bc22bb2c78bd1e"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="super soccer.d0" size="0x2000" crc="fd061aff" sha1="2425e6bb365d3d617e80e29580f098eeb5af779b"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="super soccer.f0" size="0x2000" crc="3348dc4b" sha1="c723206a8f5b8e445b7ca45ad4bf05d1b36a5ab9"/> </dataarea> </part> @@ -2431,10 +2431,10 @@ license:CC0 <dataarea name="5000" size="16384"> <rom name="yogi's frustration.50" size="16384" crc="7f4ba6ad" sha1="277a3ad0bdbad4fa8086655bb7508ff4bb0dde5c" /> </dataarea> - <dataarea name="D000" size="8192"> + <dataarea name="d000" size="8192"> <rom name="yogi's frustration.d0" size="8192" crc="cf15e8c5" sha1="bbc103a8fc3d979a05dc42aa5b773355ab11df60" /> </dataarea> - <dataarea name="F000" size="8192"> + <dataarea name="f000" size="8192"> <rom name="yogi's frustration.f0" size="8192" crc="2bc63759" sha1="463b7a8f2e139fcb8434c565b2b275b313a9d52e" /> </dataarea> </part> @@ -2494,10 +2494,10 @@ license:CC0 <dataarea name="9000" size="16384"> <rom name="dkinty.90" size="16384" crc="a927412f" sha1="acb7359db142c1b77c3a17d1547ecc8a259d3f02" /> </dataarea> - <dataarea name="D000" size="8192"> + <dataarea name="d000" size="8192"> <rom name="dkinty.d0" size="8192" crc="642d6557" sha1="5a2fa6bd9a6c173581da5d08699a44198da0231c" /> </dataarea> - <dataarea name="F000" size="8192"> + <dataarea name="f000" size="8192"> <rom name="dkinty.f0" size="8192" crc="3e39ee68" sha1="c266e320a9b2266c7db44bc0965e2b68ffa18e27" /> </dataarea> </part> @@ -2551,10 +2551,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="samegame and robots.50" size="0x4000" crc="9092f2e6" sha1="0c29a0b4de011874f27c517f1f9ef16b16fdb4fc"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="samegame and robots.d0" size="0x2000" crc="675698d3" sha1="dbcc9090a3614a86dfa9747079857fe6e0c65b97"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="samegame and robots.f0" size="0x2000" crc="1a198ae9" sha1="8553cdaae55e2c0d579a0f06f857c79323d7efb6"/> </dataarea> </part> @@ -2594,10 +2594,10 @@ license:CC0 <dataarea name="5000" size="16384"> <rom name="space patrol teaser edition.50" size="16384" crc="3c3d75bf" sha1="761e379d43ba1551198dab8199764356fc615b1b" /> </dataarea> - <dataarea name="D000" size="8192"> + <dataarea name="d000" size="8192"> <rom name="space patrol teaser edition.d0" size="8192" crc="04101767" sha1="54f8dfe0d5413097c280f72b45f6684bc9e1a3d5" /> </dataarea> - <dataarea name="F000" size="8192"> + <dataarea name="f000" size="8192"> <rom name="space patrol teaser edition.f0" size="8192" crc="a6950b88" sha1="27891c3026f0a1fb34a13438502960485d33b24f" /> </dataarea> </part> @@ -2613,10 +2613,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="stonix.50" size="0x4000" crc="9af3ca58" sha1="46302bcdc15afc28968649cbdeb804e0190c251e"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="stonix.d0" size="0x2000" crc="9c5c4301" sha1="3eb7cb8a62080ff8ac2ac83c888cf5155a97d991"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="stonix.f0" size="0x2000" crc="baea7cb2" sha1="83a49852a6612be840e8ae75302784b99251946f"/> </dataarea> </part> @@ -2631,7 +2631,7 @@ license:CC0 <dataarea name="5000" size="16384"> <rom name="burgrtm2.50" size="16384" crc="54848723" sha1="e791fe7ae0af267689fc831e60c407c02c5ee280" /> </dataarea> - <dataarea name="D000" size="24576"> + <dataarea name="d000" size="24576"> <rom name="burgrtm2.d0" size="24576" crc="53feb216" sha1="d462c44ddbe91fdbfad8ef26658dc07cea4a6dbc" /> </dataarea> </part> @@ -2662,7 +2662,7 @@ license:CC0 <dataarea name="5000" size="16384"> <rom name="king of the mountain (alt).50" size="16384" crc="3634697b" sha1="c20c17bd68e92b7f81a522c4c1d0dd4ae8926bdd" /> </dataarea> - <dataarea name="D000" size="16896"> + <dataarea name="d000" size="16896"> <rom name="king of the mountain (alt).d0" size="16896" crc="2c7f5de1" sha1="c86a04a969542a08b46ef50dd30c649ad6ef5b47" /> </dataarea> </part> @@ -2680,7 +2680,7 @@ license:CC0 <dataarea name="5000" size="16384"> <rom name="quest.50" size="16384" crc="6d5013df" sha1="c1535a9dd54d621ca3d44fd9ca1b5d5c745eb3ad" /> </dataarea> - <dataarea name="D000" size="16384"> + <dataarea name="d000" size="16384"> <rom name="quest.d0" size="16384" crc="869ce44f" sha1="43196b47bde3fccf281c355f2966c71099a6a436" /> </dataarea> </part> diff --git a/hash/intvecs.xml b/hash/intvecs.xml index 4cbfa95c847..3fc77d6362e 100644 --- a/hash/intvecs.xml +++ b/hash/intvecs.xml @@ -16,7 +16,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="jetsons ways with words.50" size="0x4000" crc="3fc55c1e" sha1="35b92617f6ff725e1b7f5d255c21a4e7fa8a3bc7"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="jetsons ways with words.d0" size="0x2000" crc="e089cb46" sha1="275ac1f258aaa611163398d9b95a84bad69cd1ae"/> </dataarea> </part> @@ -33,7 +33,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="melody blaster.50" size="0x4000" crc="52b96271" sha1="0a1557a2d5720b7116fab60d7ab528189a23be03"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="melody blaster.d0" size="0x2000" crc="7be551d9" sha1="ff2280d8894b996f6561e75544b62ec81b195e65"/> </dataarea> </part> @@ -50,7 +50,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="mind strike.50" size="0x4000" crc="604ba84a" sha1="b3e84a8decdf0cc6fe6471671c256a18dc61f34a"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="mind strike.d0" size="0x2000" crc="297717bd" sha1="e38fd12edffe278a283e08b42965fab6fd65b03d"/> </dataarea> </part> @@ -67,7 +67,7 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="mr basic meets bits n bytes.50" size="0x4000" crc="b11a5c27" sha1="66dc40f0cf3d6326452620912ac6aec0f21a0484"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="mr basic meets bits n bytes.d0" size="0x2000" crc="e6f08b02" sha1="b879b3ee76315b5369593cf142da6dab8eaebf71"/> </dataarea> </part> @@ -98,11 +98,11 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="world series major league baseball.50" size="0x4000" crc="cc7ffde7" sha1="926971342db595baab8c352b6179935774ccbcdb"/> </dataarea> - <dataarea name="D000" size="0x4000"> + <dataarea name="d000" size="0x4000"> <rom name="world series major league baseball.d0" size="0x4000" crc="839fa5c7" sha1="1ef12665079d1ce50bd2419b668344a08c9a872f"/> </dataarea> <!-- two ROM pages --> - <dataarea name="F000" size="0x4000"> + <dataarea name="f000" size="0x4000"> <rom name="world series major league baseball (page 0).f0" size="0x2000" crc="a0f2fe49" sha1="fab397b49c5a7db53a501caea42fce169da5a31a" offset="0x0000"/> <rom name="world series major league baseball (page 1).f0" size="0x2000" crc="94d6b056" sha1="df2a8c950dd1c398db901a624c04322d2b4f2782" offset="0x2000"/> </dataarea> @@ -122,10 +122,10 @@ license:CC0 <dataarea name="9000" size="0x4000"> <rom name="game factory.90" size="0x4000" crc="5e491625" sha1="464798a8fefb6bf6e91f81ff6fd6caed4cfa002e"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="game factory.d0" size="0x2000" crc="71f48e85" sha1="3a8327cf2aee60a5ad98bf124784b50a8aff2fab"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="game factory.f0" size="0x2000" crc="7a8585e8" sha1="691ece0f6426ea5ada71f8615ca6eed24bef4578"/> </dataarea> <dataarea name="ram" size="0x800"> @@ -143,10 +143,10 @@ license:CC0 <dataarea name="5000" size="0x4000"> <rom name="number jumble.50" size="0x4000" crc="56ac640c" sha1="4cd87295b6c473a6d48b836c11e29169a2a28d11"/> </dataarea> - <dataarea name="D000" size="0x2000"> + <dataarea name="d000" size="0x2000"> <rom name="number jumble.d0" size="0x2000" crc="2be04ed6" sha1="d86953713d178c287f502955458f9943d1dfe0a1"/> </dataarea> - <dataarea name="F000" size="0x2000"> + <dataarea name="f000" size="0x2000"> <rom name="number jumble.f0" size="0x2000" crc="c5dac500" sha1="ff4a42b95f99f02cabcf8018b55f4d113404833a"/> </dataarea> </part> @@ -163,7 +163,7 @@ license:CC0 <dataarea name="5000" size="16384"> <rom name="flintstones keyboard fun.50" size="16384" crc="87996f3a" sha1="ffc8986782a461e1c99de24f92578295216e7b5f" /> </dataarea> - <dataarea name="D000" size="8192"> + <dataarea name="d000" size="8192"> <rom name="flintstones keyboard fun.d0" size="8192" crc="e813510b" sha1="fa6203172faf46d89fd3a9276f642cbaf6b6f2ab" /> </dataarea> </part> diff --git a/hash/kayproii.xml b/hash/kayproii.xml index b66b369dad3..d19c601bb12 100644 --- a/hash/kayproii.xml +++ b/hash/kayproii.xml @@ -12,7 +12,7 @@ license:CC0 <year>19??</year> <publisher>Digital Research</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="139911"> <rom name="cp-m 2.2 boot disk (19xx)(digital research)(de).td0" size="139911" crc="ab5d7ae0" sha1="b73622c17306e32b42cef31d58616378329605ef"/> </dataarea> </part> @@ -23,7 +23,7 @@ license:CC0 <year>19??</year> <publisher>Digital Research</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="188479"> <rom name="cp-m 2.2 (19xx)(digital research).imd" size="188479" crc="602c4f18" sha1="c4158b4f84066514af2b74cb6d0915f661402819"/> </dataarea> </part> @@ -36,7 +36,7 @@ license:CC0 <year>1982</year> <publisher>Perfect Software</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="163451"> <rom name="perfect calc v1.00 (1982)(perfect software).imd" size="163451" crc="d7c79f18" sha1="3666da3855bfc9c82a328fee67906ac04b6bd75b"/> </dataarea> </part> @@ -47,7 +47,7 @@ license:CC0 <year>1982</year> <publisher>Perfect Software</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="150160"> <rom name="perfect speller (1982)(perfect software).imd" size="150160" crc="c03fc828" sha1="4a405c65a55b5ba9be17b638cfe9c0b539698fbc"/> </dataarea> </part> @@ -58,7 +58,7 @@ license:CC0 <year>1982</year> <publisher>Perfect Software</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="197701"> <rom name="perfect writer (1982)(perfect software).imd" size="197701" crc="43cb00ac" sha1="67145d125f3f50e660ae8b2e299aad8200d59a7f"/> </dataarea> </part> @@ -69,7 +69,7 @@ license:CC0 <year>198?</year> <publisher><unknown></publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="151202"> <rom name="perfect writer - docs and utilities (198x)(-).imd" size="151202" crc="94cda75d" sha1="46348510ff682ef3a8a1e5a27f1625beae21980e"/> </dataarea> </part> @@ -80,7 +80,7 @@ license:CC0 <year>198?</year> <publisher>Perfect Software</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="180829"> <rom name="perfect writer - lessons (198x)(perfect software).imd" size="180829" crc="b8bba8ca" sha1="6e18f014337efcb70248b8cff2483bc1d5c8ec4f"/> </dataarea> </part> @@ -91,7 +91,7 @@ license:CC0 <year>1982</year> <publisher>Chang Laboratories</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="113909"> <rom name="profit plan (1982)(chang laboratories).imd" size="113909" crc="1d967882" sha1="03d00c14e57e0e84e0e1fa127ab36b47d1731ea4"/> </dataarea> </part> @@ -102,7 +102,7 @@ license:CC0 <year>1981</year> <publisher>Select Information Systems</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="148661"> <rom name="select - teach (1981)(select information systems).imd" size="148661" crc="459b51f0" sha1="7bb16452689cbb39a9c8a2088306a98b2f3ca31a"/> </dataarea> </part> @@ -113,7 +113,7 @@ license:CC0 <year>1981</year> <publisher>Select Information Systems</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="106254"> <rom name="select - work processor (1981)(select information systems).imd" size="106254" crc="ebcb98c5" sha1="1c8d1a3228e6ac5fdffe7409d921499db22fea72"/> </dataarea> </part> @@ -124,7 +124,7 @@ license:CC0 <year>1983</year> <publisher>MicroPro</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="202296"> <rom name="wordstar v3.3 (1983)(micropro).imd" size="202296" crc="64e0f3d6" sha1="6abf468d538e65e82bc0b85cc5d656282048ce3c"/> </dataarea> </part> diff --git a/hash/leapfrog_leappad_cart.xml b/hash/leapfrog_leappad_cart.xml index a48c73edc3e..70022990912 100644 --- a/hash/leapfrog_leappad_cart.xml +++ b/hash/leapfrog_leappad_cart.xml @@ -447,7 +447,7 @@ license:CC0 <dataarea name="rom" size="2097152"> <rom name="was ist das von richard scarry.u1" size="2097152" crc="744cd1f4" sha1="797b9856ef6f96c92978303c6604c2f1ae2e9278" /> </dataarea> - <dataarea name="pages" size="0x2000000"> <!-- book pages --> + <dataarea name="pages" size="0x4000000"> <!-- book pages --> <rom name="0 - 0001.png" size="47060702" crc="b6a82c67" sha1="ee6dd6a64b8c876298d4d987ec0944b94601a36d" offset="0"/> <rom name="0 - 0002.png" size="25273650" crc="951c77cf" sha1="901996b902f3954442d76924c3f33930e98cc21c" offset="0"/> <rom name="0 - 0003.png" size="21119566" crc="85eacf2a" sha1="1bc18385434c23e247024ad950b4cadb87339dba" offset="0"/> diff --git a/hash/msx2_flop.xml b/hash/msx2_flop.xml index 27a69241566..69e8e8aed5f 100644 --- a/hash/msx2_flop.xml +++ b/hash/msx2_flop.xml @@ -246,7 +246,7 @@ The following floppies came with the machines. <year>1985</year> <publisher>Sony</publisher> <part name="flop1" interface="floppy_3_5"> - <dataarea name="flop" size="73720"> + <dataarea name="flop" size="737280"> <rom name="700sdsk1.dsk" size="737280" crc="cc7c0972" sha1="b9cbe7decaf796b8cde9a70de50d634b5e2b2a2b"/> </dataarea> </part> diff --git a/hash/pc8801_cass.xml b/hash/pc8801_cass.xml index 5b82fa840a6..76f8b1df291 100644 --- a/hash/pc8801_cass.xml +++ b/hash/pc8801_cass.xml @@ -1271,7 +1271,7 @@ NOTE: This list is here only to document available dumps and it's not used (yet) <info name="release" value="198308xx"/> <info name="alt_title" value="四次元の家"/> <part name="cass" interface="pc8801_cass"> - <dataarea name="cass" size="19259"> + <dataarea name="cass" size="24890"> <rom name="4 dimension house.t88" size="24890" crc="40e6938c" sha1="b642f87dc619975e60561499dc35b9b5d7afff07"/> </dataarea> </part> diff --git a/hash/pc8801_flop.xml b/hash/pc8801_flop.xml index 543a3eb7ac1..5b0c4150783 100644 --- a/hash/pc8801_flop.xml +++ b/hash/pc8801_flop.xml @@ -575,13 +575,13 @@ INVESTIGATE <!--rom name="saito yuki demo.d88" size="697984" crc="e879576f" sha1="4f7344ce305d86c9492f0527c4120d5ac0ced37a" offset="0"/--> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="31424"> <!-- Data CRC16: 2590 --> + <dataarea name="flop" size="349136"> <!-- Data CRC16: 2590 --> <rom name="saito yuki demo (disk 1).d88" size="349136" crc="596501d6" sha1="b698d49dcdf16dbe97151d368a5f7f139a5b4dd6" offset="0"/> </dataarea> </part> <part name="flop2" interface="floppy_5_25"> - <dataarea name="flop" size="31424"> <!-- Data CRC16: 15660 --> + <dataarea name="flop" size="348848"> <!-- Data CRC16: 15660 --> <rom name="saito yuki demo (disk 2).d88" size="348848" crc="0b6f69cb" sha1="f90808d7368a2c3d09a67570754b8e27f3ec4b98" offset="0"/> </dataarea> </part> @@ -11129,7 +11129,7 @@ ExtractDisk [02]"MAPディスク " -> "duel kawanakajima_02.d88" <year>1989?</year> <publisher>バショウハウス (Bashou House)</publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="415824"> <!-- Data CRC16: 21332 --> + <dataarea name="flop" size="415840"> <!-- Data CRC16: 21332 --> <rom name="emerald dragon music disk (19xx)(basho house).d88" size="415840" crc="6f1a87d3" sha1="c6c6ec5af97f3c1c0c1b9687d4cd7ac368051181"/> </dataarea> </part> diff --git a/hash/pc98.xml b/hash/pc98.xml index 07e4a7dcb18..0eca1241437 100644 --- a/hash/pc98.xml +++ b/hash/pc98.xml @@ -12767,7 +12767,7 @@ only have some part of Windows file and a Video driver(CLGD?). <info name="alt_title" value="ダムバスターズ" /> <info name="release" value="198601xx" /> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="1086448"> + <dataarea name="flop" size="3765072"> <rom name="dam busters [nfd r1].nfd" size="3765072" crc="2bd54d4e" sha1="3a1df219c32478405f7ae2797d46f1ec7262eb5f" offset="0" /> </dataarea> </part> diff --git a/hash/sega_beena_cart.xml b/hash/sega_beena_cart.xml index b335aef1332..c7ea0d4e5b1 100644 --- a/hash/sega_beena_cart.xml +++ b/hash/sega_beena_cart.xml @@ -185,7 +185,7 @@ license:CC0 <dataarea name="rom" size="0x800000" width="32" endianness="big"> <rom loadflag="load16_word_swap" name="S-100039-1100 - Pocket Monsters Diamond and Pearl Pokemon o Sagase! Meiro de Daibouken!.bin" size="0x00800000" crc="7bbf9599" sha1="25aba3628c627c3ed603f14cb50cfe6101816db7" /> </dataarea> - <dataarea name="pages" size="0x2000000"> <!-- book pages --> + <dataarea name="pages" size="0x4000000"> <!-- book pages --> <rom name="0 - 0001.png" size="0x0204f417" crc="088c3d4c" sha1="d66a27f30374568998cff2ed89e494ac7f449687" /> <rom name="0 - 0002.png" size="0x020d5ff7" crc="3f992374" sha1="b5dd1f438afc18ac6ca78aa2757129bb1f53b54e" /> <rom name="0 - 0003.png" size="0x020912fe" crc="b064c6ea" sha1="a4107dbcdc40713a651da52653b9e639b2d9addc" /> @@ -210,7 +210,7 @@ license:CC0 <dataarea name="rom" size="0x800000" width="32" endianness="big"> <rom loadflag="load16_word_swap" name="T-110008-1101 - Yes! PreCure 5 Asonde Oboeyou Hiragana!.bin" size="0x00800000" crc="6ae77335" sha1="29650349b117b96105882da7b12cac8fe9a04813" /> </dataarea> - <dataarea name="pages" size="0x2000000"> <!-- book pages --> + <dataarea name="pages" size="0x4000000"> <!-- book pages --> <rom name="0 - 0001.png" size="0x01fd2372" crc="9290ac04" sha1="d106071e01ee790d85d46a2378ce5f638331b67a" /> <rom name="0 - 0002.png" size="0x0200a259" crc="d919d19b" sha1="20444680d29b6a66471cbdb77537ba054753b9d6" /> <rom name="0 - 0003.png" size="0x01fd80c8" crc="97c2ba5e" sha1="128b226187bfc53e4b1abf7be04c068a61c88240" /> diff --git a/hash/specpls3_flop.xml b/hash/specpls3_flop.xml index a9ae1859021..76ceb0b1b69 100644 --- a/hash/specpls3_flop.xml +++ b/hash/specpls3_flop.xml @@ -1086,7 +1086,7 @@ license:CC0 <year>1990</year> <publisher>Infogrames</publisher> <part name="flop1" interface="floppy_3"> - <dataarea name="flop" size="12e901e"> + <dataarea name="flop" size="126717"> <rom name="3530 - sim city (europe).ipf" size="126717" crc="12e901ee" sha1="7fd665f19a290994dfbf8ba02da19ac1905581be" offset="0" /> </dataarea> </part> @@ -1122,7 +1122,7 @@ license:CC0 <year>1991</year> <publisher>The Edge</publisher> <part name="flop1" interface="floppy_3"> - <dataarea name="flop" size="195328"> + <dataarea name="flop" size="236460"> <rom name="3531 - snoopy - the cool computer game (europe).ipf" size="236460" crc="acdfe6d4" sha1="4ab0bd91d893964d957bf8c7ab3fa79d534220dc" offset="0" /> </dataarea> </part> diff --git a/hash/spectrum_cass.xml b/hash/spectrum_cass.xml index 03133e05769..51fe638f9c1 100644 --- a/hash/spectrum_cass.xml +++ b/hash/spectrum_cass.xml @@ -3562,7 +3562,7 @@ license:CC0 <year>1983</year> <publisher>AWA Software</publisher> <part name="cass" interface="spectrum_cass"> - <dataarea name="cass" size="17857"> + <dataarea name="cass" size="17901"> <rom name="beetlemania.tzx" size="17901" crc="ff1139a9" sha1="4efafa00f861c18df6b5361673ec5bfd726c53aa"/> </dataarea> </part> @@ -6728,7 +6728,7 @@ license:CC0 <year>1987</year> <publisher>Codemasters</publisher> <part name="cass" interface="spectrum_cass"> - <dataarea name="cass" size="48857"> + <dataarea name="cass" size="48885"> <rom name="dizzy - the ultimate cartoon adventure.tzx" size="48885" crc="80f651f4" sha1="accaa7d5adb2c8823e58ab4f22e22cc771d56db9"/> </dataarea> </part> @@ -34979,19 +34979,19 @@ license:CC0 </part> <part name="cass2" interface="spectrum_cass"> <feature name="part_id" value="Smash Tape 24 - Side 2 (WonderBoy level data)"/> - <dataarea name="cass" size="142865"> <!-- identical to image in ys48sp::cass2 --> + <dataarea name="cass" size="29555"> <!-- identical to image in ys48sp::cass2 --> <rom name="your sinclair (issue 48) - tape 1 - side 2.tzx" size="29555" crc="55c8583e" sha1="c6ffe2e41e37feee97dd8501ed99b23df4518cb7"/> </dataarea> </part> <part name="cass3" interface="spectrum_cass"> <feature name="part_id" value="Tape 2 - Side 1 (Thing, Riding the Rapids)"/> - <dataarea name="cass" size="95273"> + <dataarea name="cass" size="95276"> <rom name="your sinclair (issue 48) - tape 2 - side 1.tzx" size="95276" crc="c7a7bed5" sha1="d3800e1d9471df9d5e33153a2c416aeb46388388"/> </dataarea> </part> <part name="cass4" interface="spectrum_cass"> <feature name="part_id" value="Tape 2 - Side 2 (Heroes of Karn, Shark Your Sinclair Demo)"/> - <dataarea name="cass" size="95208"> + <dataarea name="cass" size="95211"> <rom name="your sinclair (issue 48) - tape 2 - side 2.tzx" size="95211" crc="2fb98fc4" sha1="a77b6025b9435d27427fb6e77d1c1dfe14e45891"/> </dataarea> </part> @@ -35010,19 +35010,19 @@ license:CC0 </part> <part name="cass2" interface="spectrum_cass"> <feature name="part_id" value="Smash Tape 24 - Side 2 (Wonder Boy level data)"/> - <dataarea name="cass" size="142865"> <!-- identical to image in ys48::cass2 --> + <dataarea name="cass" size="29555"> <!-- identical to image in ys48::cass2 --> <rom name="your sinclair (issue 48) - tape 1 - side 2.tzx" size="29555" crc="55c8583e" sha1="c6ffe2e41e37feee97dd8501ed99b23df4518cb7"/> </dataarea> </part> <part name="cass3" interface="spectrum_cass"> <feature name="part_id" value="Smash Tape 25 Special Edition - Side 1 (Heroes of Karn, Forest at World's End, Warlord)"/> - <dataarea name="cass" size="143664"> + <dataarea name="cass" size="143670"> <rom name="your sinclair (issue 48) - tape 2 - special edition - side 1.tzx" size="143670" crc="237aa578" sha1="37b8cab069903f050074445118af8acaacdce76c"/> </dataarea> </part> <part name="cass4" interface="spectrum_cass"> <feature name="part_id" value="Smash Tape 25 Special Edition - Side 2 (Anfractuos, Riding the Rapids, Thing, Shark Sinclair User Demo)"/> - <dataarea name="cass" size="189985"> + <dataarea name="cass" size="189994"> <rom name="your sinclair (issue 48) - tape 2 - special edition - side 2.tzx" size="189994" crc="301d2108" sha1="a32cbf27bc4927808a81eb575a4e42b11ea1fd77"/> </dataarea> </part> diff --git a/hash/svi318_cass.xml b/hash/svi318_cass.xml index e3b509bdebe..51e43600a37 100644 --- a/hash/svi318_cass.xml +++ b/hash/svi318_cass.xml @@ -701,7 +701,7 @@ Ballonies (198x) <info name="serial" value="SD-669T" /> <part name="cass1" interface="svi318_cass"> - <dataarea name="cass" size="17124"> + <dataarea name="cass" size="32768"> <rom name="planet patrol (1983)(spectravideo)[a][bload'cas-',r].cas" size="32768" crc="6adb5186" sha1="c26700c5159c9349d9be6cc4631067e43a2319fc"/> </dataarea> </part> @@ -846,7 +846,7 @@ Ballonies (198x) <info name="serial" value="SD-232C" /> <part name="cass1" interface="svi318_cass"> - <dataarea name="cass" size="16700"> + <dataarea name="cass" size="32768"> <rom name="frantic freddy (1983)(spectravideo)[a][bload'cas-',r].cas" size="32768" crc="5bd12860" sha1="255d8a90d26eb9c1ecdda16ae4da68d44198b47f"/> </dataarea> </part> diff --git a/hash/tandy2k.xml b/hash/tandy2k.xml index 876b176cdb7..b5ac17c335b 100644 --- a/hash/tandy2k.xml +++ b/hash/tandy2k.xml @@ -31,7 +31,7 @@ license:CC0 </part> --> <!-- repaired copy protected by hand --> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="331572"> + <dataarea name="flop" size="2002793"> <rom name="123_sys.mfm" size="2002793" crc="89e185f8" sha1="316ae07e5cbf02a4dcdbe322f9f0dced75b5f387" status="baddump"/> </dataarea> </part> diff --git a/hash/x1_cass.xml b/hash/x1_cass.xml index 40bee643446..a5e7695034e 100644 --- a/hash/x1_cass.xml +++ b/hash/x1_cass.xml @@ -1102,7 +1102,7 @@ Titles, publishers and release dates taken from: <year>1984?</year> <publisher>デービーソフト (dB-Soft)</publisher> <part name="cass" interface="x1_cass"> - <dataarea name="side1" size="240004"> + <dataarea name="side1" size="360004"> <rom name="hyper olympic '84 alt.tap" size="360004" crc="9eeb708b" sha1="b64040786430b0bec364f4af1b5fde108721033c"/> </dataarea> </part> diff --git a/hash/x1_flop.xml b/hash/x1_flop.xml index 10d1f7c39a4..6c0a110dea8 100644 --- a/hash/x1_flop.xml +++ b/hash/x1_flop.xml @@ -391,7 +391,7 @@ Plus, some games crash MESS at exit (e.g. some sorcer disks or some arcus disks) <info name="alt_title" value="ちゃっくんぽっぷ"/> <info name="usage" value="Type FILES then move the cursor to the line of the game and type LOAD (to load) and type RUN when loaded"/> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="327680"> + <dataarea name="flop" size="348848"> <rom name="chackn.d88" size="348848" crc="257df7de" sha1="2bd62b1c1bdeacdeeef80d603b1e1b34a99cbaa0"/> </dataarea> </part> @@ -517,7 +517,7 @@ Plus, some games crash MESS at exit (e.g. some sorcer disks or some arcus disks) <info name="release" value="198702xx"/> <info name="alt_title" value="大戦略X1"/> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="327680"> + <dataarea name="flop" size="348848"> <rom name="daisenx1.d88" size="348848" crc="cf06fac8" sha1="19024c98bdd96842c8e035b7869de0df7ff03b39"/> </dataarea> </part> @@ -1673,12 +1673,12 @@ Plus, some games crash MESS at exit (e.g. some sorcer disks or some arcus disks) <info name="release" value="198807xx"/> <info name="alt_title" value="まじゃべんちゃー ねぎ麻雀"/> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="327680"> + <dataarea name="flop" size="348848"> <rom name="disk1.d88" size="348848" crc="3c17cce4" sha1="defff082c7ba49ac0f5e807c3cd1e9a9f4c7f1ab"/> </dataarea> </part> <part name="flop2" interface="floppy_5_25"> - <dataarea name="flop" size="327680"> + <dataarea name="flop" size="348848"> <rom name="disk2.d88" size="348848" crc="50f1b9c7" sha1="1b1bfbe1cd1b1891be78c78dba6f44b735a78b48"/> </dataarea> </part> @@ -2260,17 +2260,17 @@ Plus, some games crash MESS at exit (e.g. some sorcer disks or some arcus disks) <info name="release" value="198606xx"/> <info name="alt_title" value="ザ・スクリーマー"/> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="414992"> + <dataarea name="flop" size="415792"> <rom name="the screamer system.d88" size="415792" crc="ee7c9ddb" sha1="4f42b5ac6eaa60290841038029ea5b6a9db96e99"/> </dataarea> </part> <part name="flop2" interface="floppy_5_25"> - <dataarea name="flop" size="414992"> + <dataarea name="flop" size="415840"> <rom name="the screamer data 1.d88" size="415840" crc="5ed7c4cf" sha1="7764365c5603923c62c967b9a865d6cef8a1f796"/> </dataarea> </part> <part name="flop3" interface="floppy_5_25"> - <dataarea name="flop" size="414992"> + <dataarea name="flop" size="415840"> <rom name="the screamer data 2.d88" size="415840" crc="098b403d" sha1="fe0a943724e6df673dff18eceb1018817bd24e07"/> </dataarea> </part> @@ -3352,7 +3352,7 @@ Plus, some games crash MESS at exit (e.g. some sorcer disks or some arcus disks) </dataarea> </part> <part name="flop2" interface="floppy_5_25"> - <dataarea name="flop" size="348848"> + <dataarea name="flop" size="537520"> <rom name="wodydata.d88" size="537520" crc="3ff620b9" sha1="0a6682318141c08c3e8c0f8865d824a44417da44"/> </dataarea> </part> @@ -5429,13 +5429,13 @@ Plus, some games crash MESS at exit (e.g. some sorcer disks or some arcus disks) <year>1990</year> <publisher><unknown></publisher> <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="348848"> + <dataarea name="flop" size="422160"> <rom name="xdos_sys.d88" size="422160" crc="a35c4f89" sha1="52d503c349132af1a5bf8bbca2ba480e4b5a8d6e"/> </dataarea> </part> <part name="flop2" interface="floppy_5_25"> - <dataarea name="flop" size="348848"> + <dataarea name="flop" size="422160"> <rom name="xdosutil.d88" size="422160" crc="73617547" sha1="0cee25e4ef6bf9723687e8427ea0ce6892bdfd03"/> </dataarea> </part> diff --git a/src/devices/bus/intv/slot.cpp b/src/devices/bus/intv/slot.cpp index 0adca238eb1..c0c39d5613d 100644 --- a/src/devices/bus/intv/slot.cpp +++ b/src/devices/bus/intv/slot.cpp @@ -385,7 +385,7 @@ image_init_result intv_cart_slot_device::call_load() else { uint16_t offset[] = { 0x400, 0x2000, 0x4000, 0x4800, 0x5000, 0x6000, 0x7000, 0x8000, 0x8800, 0x9000, 0xa000, 0xb000, 0xc000, 0xd000, 0xe000, 0xf000}; - const char* region_name[] = {"0400", "2000", "4000", "4800", "5000", "6000", "7000", "8000", "8800", "9000", "A000", "B000", "C000", "D000", "E000", "F000"}; + const char* region_name[] = {"0400", "2000", "4000", "4800", "5000", "6000", "7000", "8000", "8800", "9000", "a000", "b000", "c000", "d000", "e000", "f000"}; const char *pcb_name = get_feature("slot"); bool extra_bank = false; diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 4ec5ff7898c..8a38739933a 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -906,31 +906,7 @@ bool device_image_interface::load_software(software_list_device &swlist, const c u32 crc = 0; const bool has_crc = util::hash_collection(ROM_GETHASHDATA(romp)).crc(crc); std::vector<const software_info *> parents; - std::vector<std::string> searchpath; - - // search <rompath>/<list>/<software> following parents - searchpath.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), swname)); - for (const software_info *i = swinfo; i && !i->parentname().empty(); i = swlist.find(i->parentname())) - { - if (std::find(parents.begin(), parents.end(), i) != parents.end()) - { - osd_printf_warning("WARNING: parent/clone relationships form a loop for software %s (in list %s)\n", swname, swlist.list_name()); - break; - } - parents.emplace_back(i); - searchpath.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), i->parentname())); - } - - // search <rompath>/<software> following parents - searchpath.emplace_back(swname); - parents.clear(); - for (software_info const *i = swinfo; i && !i->parentname().empty(); i = swlist.find(i->parentname())) - { - if (std::find(parents.begin(), parents.end(), i) != parents.end()) - break; - parents.emplace_back(i); - searchpath.emplace_back(i->parentname()); - } + std::vector<std::string> searchpath = rom_load_manager::get_software_searchpath(swlist, *swinfo); // for historical reasons, add the search path for the software list device's owner const device_t *const listowner = swlist.owner(); diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index 4018cdf923e..63c518a13fb 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Nicola Salmoria,Paul Priest,Aaron Giles +// copyright-holders:Nicola Salmoria,Paul Priest,Aaron Giles,Vas Crabb /********************************************************************* romload.cpp @@ -30,27 +30,72 @@ #define TEMPBUFFER_MAX_SIZE (1024 * 1024 * 1024) /*************************************************************************** - HELPERS (also used by diimage.cpp) + HELPERS ***************************************************************************/ namespace { -rom_entry const *next_parent_system(game_driver const *&system, std::vector<rom_entry> &rom_entries) +auto next_parent_system(game_driver const &system) { - if (!system) - return nullptr; - int const parent(driver_list::find(system->parent)); - if (0 > parent) - { - system = nullptr; - return nullptr; - } - else + return + [sys = &system, roms = std::vector<rom_entry>()] () mutable -> rom_entry const * + { + if (!sys) + return nullptr; + int const parent(driver_list::find(sys->parent)); + if (0 > parent) + { + sys = nullptr; + return nullptr; + } + else + { + sys = &driver_list::driver(parent); + roms = rom_build_entries(sys->rom); + return &roms[0]; + } + }; +} + + +auto next_parent_software(std::vector<software_info const *> const &parents) +{ + auto part(parents.front()->parts().end()); + return + [&parents, current = parents.cbegin(), part, end = part] () mutable -> const rom_entry * + { + if (part == end) + { + if (parents.end() == current) + return nullptr; + part = (*current)->parts().cbegin(); + end = (*current)->parts().cend(); + do { ++current; } while ((parents.cend() != current) && (*current)->parts().empty()); + } + return &(*part++).romdata()[0]; + }; +} + + +std::vector<std::string> make_software_searchpath(software_list_device &swlist, software_info const &swinfo, std::vector<software_info const *> &parents) +{ + std::vector<std::string> result; + + // search <rompath>/<list>/<software> following parents + for (software_info const *i = &swinfo; i; ) { - system = &driver_list::driver(parent); - rom_entries = rom_build_entries(system->rom); - return &rom_entries[0]; + if (std::find(parents.begin(), parents.end(), i) != parents.end()) + break; + parents.emplace_back(i); + result.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), i->shortname())); + i = i->parentname().empty() ? nullptr : swlist.find(i->parentname()); } + + // search <rompath>/<software> following parents + for (software_info const *i : parents) + result.emplace_back(i->shortname()); + + return result; } @@ -1068,6 +1113,23 @@ void rom_load_manager::process_disk_entries(std::initializer_list<std::reference } +/*------------------------------------------------- + get_software_searchpath - get search path + for a software list item +-------------------------------------------------*/ + +std::vector<std::string> rom_load_manager::get_software_searchpath(software_list_device &swlist, const software_info &swinfo) +{ + std::vector<software_info const *> parents; + return make_software_searchpath(swlist, swinfo, parents); +} + + +/*------------------------------------------------- + open_disk_image - open a disk image for a + device +-------------------------------------------------*/ + chd_error rom_load_manager::open_disk_image(const emu_options &options, const device_t &device, const rom_entry *romp, chd_file &image_chd) { const std::vector<std::string> searchpath(device.searchpath()); @@ -1075,47 +1137,24 @@ chd_error rom_load_manager::open_disk_image(const emu_options &options, const de driver_device const *const driver(dynamic_cast<driver_device const *>(&device)); std::function<const rom_entry * ()> next_parent; if (driver) - next_parent = [sys = &driver->system(), roms = std::vector<rom_entry>()] () mutable { return next_parent_system(sys, roms); }; + next_parent = next_parent_system(driver->system()); else next_parent = [] () { return nullptr; }; return do_open_disk(options, { searchpath }, romp, image_chd, std::move(next_parent)); } +/*------------------------------------------------- + open_disk_image - open a disk image for a + software item +-------------------------------------------------*/ + chd_error rom_load_manager::open_disk_image(const emu_options &options, software_list_device &swlist, const software_info &swinfo, const rom_entry *romp, chd_file &image_chd) { std::vector<software_info const *> parents; - std::vector<std::string> listsearch, freesearch, disksearch; - disksearch.emplace_back(swlist.list_name()); - - for (software_info const *i = &swinfo; i; ) - { - if (std::find(parents.begin(), parents.end(), i) != parents.end()) - break; - parents.emplace_back(i); - listsearch.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), i->shortname())); - freesearch.emplace_back(i->shortname()); - i = i->parentname().empty() ? nullptr : swlist.find(i->parentname()); - } - - auto part(parents.front()->parts().end()); - return do_open_disk( - options, - { listsearch, freesearch, disksearch }, - romp, - image_chd, - [&parents, current = parents.cbegin(), part, end = part] () mutable -> const rom_entry * - { - if (part == end) - { - if (parents.end() == current) - return nullptr; - part = (*current)->parts().cbegin(); - end = (*current)->parts().cend(); - do { ++current; } while ((parents.cend() != current) && (*current)->parts().empty()); - } - return &(*part++).romdata()[0]; - }); + std::vector<std::string> searchpath = make_software_searchpath(swlist, swinfo, parents); + searchpath.emplace_back(swlist.list_name()); // look for loose disk images in software list directory + return do_open_disk(options, { searchpath }, romp, image_chd, next_parent_software(parents)); } @@ -1175,10 +1214,8 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list m_romsloadedsize = 0; std::vector<const software_info *> parents; - std::vector<std::string> listsearch, freesearch, disksearch, devsearch; - listsearch.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), swname)); - freesearch.emplace_back(swname); - const software_info *swinfo = swlist.find(swname); + std::vector<std::string> swsearch, disksearch, devsearch; + const software_info *const swinfo = swlist.find(swname); if (swinfo) { // dispay a warning for unsupported software @@ -1196,21 +1233,12 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list } // walk the chain of parents and add them to the search path - parents.emplace_back(swinfo); - swinfo = !swinfo->parentname().empty() ? swlist.find(swinfo->parentname()) : nullptr; - while (swinfo) - { - if (std::find(parents.begin(), parents.end(), swinfo) != parents.end()) - { - m_errorstring.append(util::string_format("WARNING: parent/clone relationships form a loop for software %s (in list %s)\n", swname, swlist.list_name())); - m_softwarningstring.append(util::string_format("Parent/clone relationships from a loop for software %s (in list %s)\n", swname, swlist.list_name())); - break; - } - parents.emplace_back(swinfo); - listsearch.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), swinfo->shortname())); - freesearch.emplace_back(swinfo->shortname()); - swinfo = !swinfo->parentname().empty() ? swlist.find(swinfo->parentname()) : nullptr; - } + swsearch = make_software_searchpath(swlist, *swinfo, parents); + } + else + { + swsearch.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), swname)); + swsearch.emplace_back(swname); } // this is convenient for CD-only lists so you don't need an extra level of directories containing one file each @@ -1269,40 +1297,23 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list if (ROMREGION_ISROMDATA(region)) { if (devsearch.empty()) - process_rom_entries({ listsearch, freesearch }, 0U, region, region + 1, true); + process_rom_entries({ swsearch }, 0U, region, region + 1, true); else - process_rom_entries({ listsearch, freesearch, devsearch }, 0U, region, region + 1, true); + process_rom_entries({ swsearch, devsearch }, 0U, region, region + 1, true); } else if (ROMREGION_ISDISKDATA(region)) { if (!next_parent) { if (!parents.empty()) - { - auto part(parents.front()->parts().end()); - next_parent = - [&parents, current = parents.cbegin(), part, end = part] () mutable -> const rom_entry * - { - if (part == end) - { - if (parents.end() == current) - return nullptr; - part = (*current)->parts().cbegin(); - end = (*current)->parts().cend(); - do { ++current; } while ((parents.cend() != current) && (*current)->parts().empty()); - } - return &(*part++).romdata()[0]; - }; - } + next_parent = next_parent_software(parents); else - { next_parent = [] () { return nullptr; }; - } } if (devsearch.empty()) - process_disk_entries({ listsearch, freesearch, disksearch }, regiontag.c_str(), region + 1, next_parent); + process_disk_entries({ swsearch, disksearch }, regiontag.c_str(), region + 1, next_parent); else - process_disk_entries({ listsearch, freesearch, disksearch, devsearch }, regiontag.c_str(), region + 1, next_parent); + process_disk_entries({ swsearch, disksearch, devsearch }, regiontag.c_str(), region + 1, next_parent); } } @@ -1373,7 +1384,7 @@ void rom_load_manager::process_region_list() { driver_device const *const driver(dynamic_cast<driver_device const *>(&device)); if (driver) - next_parent = [sys = &driver->system(), roms = std::vector<rom_entry>()] () mutable { return next_parent_system(sys, roms); }; + next_parent = next_parent_system(driver->system()); else next_parent = [] () { return nullptr; }; } diff --git a/src/emu/romload.h b/src/emu/romload.h index 7db106a52ce..ca725f0e0fb 100644 --- a/src/emu/romload.h +++ b/src/emu/romload.h @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Nicola Salmoria,Aaron Giles +// copyright-holders:Nicola Salmoria,Aaron Giles,Vas Crabb /********************************************************************* romload.h @@ -423,6 +423,9 @@ public: void load_software_part_region(device_t &device, software_list_device &swlist, const char *swname, const rom_entry *start_region); + /* get search path for a software item */ + static std::vector<std::string> get_software_searchpath(software_list_device &swlist, const software_info &swinfo); + /* open a disk image, searching up the parent and loading by checksum */ static chd_error open_disk_image(const emu_options &options, const device_t &device, const rom_entry *romp, chd_file &image_chd); static chd_error open_disk_image(const emu_options &options, software_list_device &swlist, const software_info &swinfo, const rom_entry *romp, chd_file &image_chd); diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index d33e357ebc7..f3c584d1c4a 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -421,14 +421,15 @@ void software_list_device::device_validity_check(validity_checker &valid) const void software_list_device::internal_validity_check(validity_checker &valid) { - enum { NAME_LEN_PARENT = 16, NAME_LEN_CLONE = 16 }; + enum { NAME_LEN_PARENT = 16, NAME_LEN_CLONE = 16, NAME_LEN_PART = 16 }; + auto const valid_name_char = [] (char ch) { return ((ch >= '0') && (ch <= '9')) || ((ch >= 'a') && (ch <= 'z')) || (ch == '_'); }; + auto const valid_tag_char = [] (char ch) { return ((ch >= '0') && (ch <= '9')) || ((ch >= 'a') && (ch <= 'z')) || strchr("$.:_", u8(ch)); }; + auto const valid_year_char = [] (char ch) { return isdigit(u8(ch)) || (ch == '?') || (ch == '+'); }; softlist_map names; softlist_map descriptions; for (const software_info &swinfo : get_info()) { - std::string const &shortname(swinfo.shortname()); - // first parse and output core errors if any if (m_errors.length() > 0) { @@ -437,48 +438,32 @@ void software_list_device::internal_validity_check(validity_checker &valid) } // Now check if the xml data is valid: + std::string const &shortname(swinfo.shortname()); - // Did we lost any description? if (swinfo.longname().empty()) - { osd_printf_error("%s: %s has no description\n", filename(), shortname); - break; - } - // Did we lost any year? if (swinfo.year().empty()) - { osd_printf_error("%s: %s has no year\n", filename(), shortname); - break; - } - // Did we lost any publisher? if (swinfo.publisher().empty()) - { osd_printf_error("%s: %s has no publisher\n", filename(), shortname); - break; - } // Did we lost the software parts? if (swinfo.parts().empty()) - { - osd_printf_error("%s: %s has no part\n", filename(), shortname); - break; - } + osd_printf_error("%s: %s has no parts\n", filename(), shortname); // Second, since the xml is fine, run additional checks: // check for duplicate names - if (!names.insert(std::make_pair(shortname, &swinfo)).second) - { - const software_info *match = names.find(shortname)->second; - osd_printf_error("%s: %s is a duplicate name (%s)\n", filename(), shortname, match->shortname()); - } + auto const dupname(names.emplace(shortname, &swinfo)); + if (!dupname.second) + osd_printf_error("%s: %s is a duplicate name (%s)\n", filename(), shortname, dupname.first->second->shortname()); // check for duplicate descriptions - std::string longname(swinfo.longname()); - if (!descriptions.insert(std::make_pair(strmakelower(longname), &swinfo)).second) - osd_printf_error("%s: %s is a duplicate description (%s)\n", filename(), swinfo.longname(), shortname); + auto const dupdesc(descriptions.emplace(swinfo.longname(), &swinfo)); + if (!dupdesc.second) + osd_printf_error("%s: %s has duplicate description '%s' (%s)\n", filename(), shortname, swinfo.longname(), dupdesc.first->second->shortname()); bool const is_clone(!swinfo.parentname().empty()); if (is_clone) @@ -486,16 +471,15 @@ void software_list_device::internal_validity_check(validity_checker &valid) if (swinfo.parentname() == shortname) { osd_printf_error("%s: %s is set as a clone of itself\n", filename(), shortname); - break; } - - // make sure the parent exists - const software_info *swinfo2 = find(swinfo.parentname()); - - if (swinfo2 == nullptr) - osd_printf_error("%s: parent '%s' software for '%s' not found\n", filename(), swinfo.parentname(), shortname); - else if (!swinfo2->parentname().empty()) - osd_printf_error("%s: %s is a clone of a clone\n", filename(), shortname); + else + { + software_info const *const parent = find(swinfo.parentname()); + if (!parent) + osd_printf_error("%s: %s is a clone of non-existent parent %s\n", filename(), shortname, swinfo.parentname()); + else if (!parent->parentname().empty()) + osd_printf_error("%s: %s is a clone %s which is a clone of %s\n", filename(), shortname, swinfo.parentname(), parent->parentname()); + } } // make sure the driver name isn't too long @@ -504,32 +488,80 @@ void software_list_device::internal_validity_check(validity_checker &valid) is_clone ? "clone" : "parent", is_clone ? NAME_LEN_CLONE : NAME_LEN_PARENT); // make sure the driver name doesn't contain invalid characters - for (char ch : shortname) - if (((ch < '0') || (ch > '9')) && ((ch < 'a') || (ch > 'z')) && (ch != '_')) - { - osd_printf_error("%s: %s contains invalid characters\n", filename(), shortname); - break; - } + if (std::find_if_not(shortname.begin(), shortname.end(), valid_name_char) != shortname.end()) + osd_printf_error("%s: %s contains invalid characters\n", filename(), shortname); // make sure the year is only digits, '?' or '+' - for (char ch : swinfo.year()) - if (!isdigit(u8(ch)) && (ch != '?') && (ch != '+')) - { - osd_printf_error("%s: %s has an invalid year '%s'\n", filename(), shortname, swinfo.year()); - break; - } + if (std::find_if_not(swinfo.year().begin(), swinfo.year().end(), valid_year_char) != swinfo.year().end()) + osd_printf_error("%s: %s has an invalid year '%s'\n", filename(), shortname, swinfo.year()); - softlist_map part_names; - for (const software_part &part : swinfo.parts()) + std::set<std::string> part_names; + for (software_part const &part : swinfo.parts()) { if (part.interface().empty()) - osd_printf_error("%s: %s has a part (%s) without interface\n", filename(), shortname, part.name()); + osd_printf_error("%s: %s part %s has no interface\n", filename(), shortname, part.name()); if (part.romdata().empty()) - osd_printf_error("%s: %s has a part (%s) with no data\n", filename(), shortname, part.name()); + osd_printf_error("%s: %s part %s has no data areas\n", filename(), shortname, part.name()); + + if (!part_names.emplace(part.name()).second) + osd_printf_error("%s: %s part %s has duplicate name\n", filename(), shortname, part.name()); + + if (part.name().length() > NAME_LEN_PART) + osd_printf_error("%s: %s part %s name must be %d characters or less\n", filename(), shortname, part.name(), NAME_LEN_PART); + + if (std::find_if_not(part.name().begin(), part.name().end(), valid_name_char) != part.name().end()) + osd_printf_error("%s: %s part %s contains invalid characters\n", filename(), shortname, part.name()); + + // validate data areas + // based on ROM validation code from validity.cpp but adapted to work with rom_entry and ignore unavailable features like BIOS + if (!part.romdata().empty()) + { + std::map<std::string, u32> data_area_map; + char const *last_region_name = "???"; + char const *last_name = "???"; + u32 current_length = 0; + int items_since_region = 1; + for (rom_entry const *romp = &part.romdata().front(); romp && !ROMENTRY_ISEND(romp); ++romp) + { + if (ROMENTRY_ISREGION(romp)) // if this is a region, make sure it's valid, and record the length + { + // reset our region tracking states + items_since_region = (ROMREGION_ISERASE(romp) || ROMREGION_ISDISKDATA(romp)) ? 1 : 0; + last_region_name = romp->name().c_str(); - if (!part_names.insert(std::make_pair(part.name(), &swinfo)).second) - osd_printf_error("%s: %s has a part (%s) whose name is duplicate\n", filename(), shortname, part.name()); + // check for a valid tag + if (romp->name().size() < MIN_TAG_LENGTH) + osd_printf_error("%s: %s part %s data area name '%s' is too short (mut be at least %d characters)\n", filename(), shortname, part.name(), romp->name(), MIN_TAG_LENGTH); + + if (std::find_if_not(romp->name().begin(), romp->name().end(), valid_tag_char) != romp->name().end()) + osd_printf_error("%s: %s part %s data area name '%s' contains invalid characters\n", filename(), shortname, part.name(), romp->name()); + + // attempt to add it to the map, reporting duplicates as errors + current_length = ROMREGION_GETLENGTH(romp); + if (!data_area_map.emplace(romp->name(), current_length).second) + osd_printf_error("%s: %s part %s data area has duplicate name '%s'\n", filename(), shortname, part.name(), romp->name()); + } + else if (ROMENTRY_ISFILE(romp)) // if this is a file, make sure it is properly formatted + { + // track the last filename we found + last_name = romp->name().c_str(); + + // make sure the hash is valid + util::hash_collection hashes; + if (!hashes.from_internal_string(romp->hashdata().c_str())) + osd_printf_error("%s: %s part %s ROM '%s' has invalid hash string '%s'\n", filename(), shortname, part.name(), romp->name(), romp->hashdata()); + } + + // for any non-region ending entries, make sure they don't extend past the end + if (!ROMENTRY_ISREGIONEND(romp) && current_length > 0) + { + items_since_region++; + if (!ROMENTRY_ISIGNORE(romp) && (ROM_GETOFFSET(romp) + ROM_GETLENGTH(romp) > current_length)) + osd_printf_error("%s: %s part %s ROM '%s' extends past the defined data area\n", filename(), shortname, part.name(), last_name); + } + } + } } } diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 868f7c96935..3c402487bf4 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -1550,7 +1550,7 @@ void validity_checker::validate_roms(device_t &root) // attempt to add it to the map, reporting duplicates as errors current_length = ROMREGION_GETLENGTH(romp); - if (!m_region_map.insert(std::make_pair(fulltag, current_length)).second) + if (!m_region_map.emplace(fulltag, current_length).second) osd_printf_error("Multiple ROM_REGIONs with the same tag '%s' defined\n", fulltag); } else if (ROMENTRY_ISSYSTEM_BIOS(romp)) // If this is a system bios, make sure it is using the next available bios number diff --git a/src/frontend/mame/audit.cpp b/src/frontend/mame/audit.cpp index 3ff706d2c8a..6f2157a3ac4 100644 --- a/src/frontend/mame/audit.cpp +++ b/src/frontend/mame/audit.cpp @@ -187,33 +187,7 @@ media_auditor::summary media_auditor::audit_software(software_list_device &swlis if (ROMREGION_ISROMDATA(region)) { if (searchpath.empty()) - { - std::vector<software_info const *> parents; - - // search <rompath>/<list>/<software> following parents - searchpath.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), swinfo.shortname())); - for (software_info const *i = &swinfo; i && !i->parentname().empty(); i = swlist.find(i->parentname())) - { - if (std::find(parents.begin(), parents.end(), i) != parents.end()) - { - osd_printf_warning("WARNING: software parent/clone relationships form a loop (%s:%s)\n", swlist.list_name(), swinfo.shortname()); - break; - } - parents.emplace_back(i); - searchpath.emplace_back(util::string_format("%s" PATH_SEPARATOR "%s", swlist.list_name(), i->parentname())); - } - - // search <rompath>/<software> following parents - searchpath.emplace_back(swinfo.shortname()); - parents.clear(); - for (software_info const *i = &swinfo; i && !i->parentname().empty(); i = swlist.find(i->parentname())) - { - if (std::find(parents.begin(), parents.end(), i) != parents.end()) - break; - parents.emplace_back(i); - searchpath.emplace_back(i->parentname()); - } - } + searchpath = rom_load_manager::get_software_searchpath(swlist, swinfo); return &audit_one_rom(searchpath, rom); } else if (ROMREGION_ISDISKDATA(region)) diff --git a/src/mame/drivers/gsword.cpp b/src/mame/drivers/gsword.cpp index 6183e5ef561..a8f31293a9c 100644 --- a/src/mame/drivers/gsword.cpp +++ b/src/mame/drivers/gsword.cpp @@ -230,7 +230,7 @@ clock is supplied to both communication MCUs on T0. Outputs are set after detecting a rising edge on T0, and inputs are read after detecting a falling edge on T0. -A frame consists to five bytes send LSB first. Each byte is followed by +A frame consists to five bytes sent LSB first. Each byte is followed by an odd parity bit. Useful addresses for debugging communication: * $12A: Function for sending a frame from $21..$25 * $159: Function for receiving a frame to $29..$2D |