home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / emulaton / mame34 / merged_txt < prev    next >
Text File  |  1998-08-03  |  19KB  |  476 lines

  1. MAME and ROM Merging - Why and How
  2. ----------------------------------
  3. (Please send corrections and/or additions to dweston@globaldialog.com)
  4.  
  5. To merge or not to merge?
  6.  
  7. That seems to be the question on the minds of the emulation community of
  8. late.
  9.  
  10. This document will attempt to explain the changes to the ROM files,
  11. including the reasoning behind the renaming, as well as what merging
  12. entails,  the pros and cons associated with it, and how to go about
  13. accomplishing this task.
  14.  
  15. Why -
  16.  
  17. Recently, MAME has been taking greater lengths to document the hardware
  18. that the games run on. It started with printing out the CPU and sound
  19. chip information and now it has been extended to display the company and
  20. year information for each game. As a logical extension of that, the
  21. driver now also stores information about whether a game is a derivative,
  22. or clone, of another driver.
  23.  
  24. To this end, MAME now supports several ways to load the ROM files it
  25. needs. To make it all work, MAME now follows a standard ROM naming
  26. procedure which was sorely lacking before. In a nutshell, for every ROM
  27. with a unique checksum, MAME now requires that it have a unique filename.
  28. This enables MAME to make sure it's loading the right ROM from the right
  29. place. For example, there are a ton of Galaxian games and clones. Before,
  30. they all had individual ROMs with names like galaxian.* and now they
  31. have names like superg.* etc. to differentiate between the sets.
  32.  
  33. Related to that, MAME now assumes that the latest revision of a ROM set
  34. is the common name - the one that presumably contains bug fixes and was
  35. in the widest distribution. It will continue to follow this standard in
  36. the future. This is why, for example, the Asteroids ROM sets were
  37. renamed. The old set, asteroid was revision 1 and the alternate,
  38. asteroi2 was revision 2. They have been renamed to conform to the new
  39. standard, so that revision 1 is now called asteroi1 and revision 2 is
  40. asteroid.
  41.  
  42. To this end, it became apparent early on that for games which are
  43. derivatives, a lot of redundant ROM information could be discarded since
  44. it was shared amongst the sets. By discarded, I mean that since MAME now
  45. knows that a game is a clone of another, it will use the ROMs from the
  46. main set in instances where the checksums are identical to those in the
  47. clone set. This has several consequences.
  48.  
  49. 1. You can now remove these redundant ROMs from the clone sets. In doing
  50. so, you are not losing anything unique since the redundant ROMs are
  51. identical in every way to those in the main set. Deleting these ROMs is
  52. entirely optional.
  53.  
  54. 2. You can optionally store all related ROMs into one folder or .zip
  55. file. Merging ROMs is entirely optional.
  56.  
  57. If you choose to merge or delete any ROMs, you are risking compatibility
  58. problems with other emulators. If you intend to use games with MAME and
  59. another emulator, you are better off not merging or deleting until that
  60. other emulator supports the same features as MAME. The file merging.txt
  61. that comes with MAME explains any renaming you might have to do if you
  62. choose not to merge your ROM sets.
  63.  
  64. Here is how MAME now looks for ROM files:
  65.  
  66. 1. It looks in the directory for that ROM set for the files it needs.
  67. 2. If it doesn't find the files there and the game is a clone, it will
  68. then look in the directory of the main set for the ROM files.
  69. 3. If it doesn't find it there, it reports the ROM as missing.
  70.  
  71. With these changes, you may find that some games, like the Popeye bootleg
  72. now require the non-working main set. At first glance, you may think this
  73. is a waste of space, but this isn't necessarily so. You can copy the ROMs
  74. needed for the bootleg Popeye from the main set and then delete the
  75. non-working main set. Alternatively, you can rename the ROMs in the
  76. bootleg set to match the names in the main set. The checksums are
  77. identical, so this doesn't change the gameplay at all.
  78.  
  79. How -
  80.  
  81. Some of you may decide to hold off merging your ROM sets for the time
  82. being.
  83. You should, however, prepare your ROM sets for the potential of merging.
  84. You see, the issue here is not just the merging of original games with
  85. clones and/or bootlegs, but renaming existing ROM sets as well. The
  86. merging of ROM sets is a two step process, and many folks are expressing
  87. concern over step two before completing step one.
  88.  
  89. Before proceeding, I should point out that while step one of this process
  90. (the renaming of ROMs and/or ROM sets is mandatory (in order for games to
  91. work properly), step two (the merging of ROM sets), is *OPTIONAL*.
  92.  
  93. Let me say that again...
  94.  
  95. You *DO NOT* have to merge your ROM sets in order for the games to work
  96. properly.
  97. You *DO* however have to rename several ROMs and/or ROM sets in order for
  98. the games to work properly.
  99.  
  100. Having said that, let's take a look at what needs to be done to make MAME
  101. work as expected.
  102.  
  103. Step One - (ROM renaming)
  104.  
  105. 1a - Audit your ROMs
  106. Use the VerifyROMs feature (Audit ROMs button in Mac MAME) within
  107. MAME to check your existing ROM Collection.
  108. Open and print the audit file with a word processor.
  109.  
  110. 1b - Re download your ROM Sets
  111. Visit your favorite MAME site, audit printout in hand, and Re download
  112. the ROM sets that the MAME audit says you're having problems with.
  113. Replace the old ROM sets with the new ROM sets.
  114.  
  115. 1c - Run the audit again.
  116. By this time, most of your ROM problems should be taken care of. If so,
  117. congratulations! You can skip ahead to step 1j! If you're still having
  118. problems, continue with the next step.
  119.  
  120. 1d - Unzip the problem ROM set(s).
  121. You'll need to do this to work with the individual ROMs within a set.
  122.  
  123. 1e - Print out a ROM List.
  124. Use the ListROMs feature to obtain a list of  current correct ROM sets.
  125. Save and print this list.
  126.  
  127. 1f - Rename your ROMs.
  128. Compare the contents of your ROM set(s) to the list you printed out.
  129. Correct any discrepancies with the names of the individual ROMs.
  130.  
  131. 1g - Re zip your ROM sets.
  132. This step is optional. Mac users will need a utility that can create a
  133. .zip file
  134.  
  135. 1h - Run the audit again.
  136.  
  137. 1i - Repeat steps 1d through 1h until the audit reports no problems.
  138.  
  139. 1j - Thank the administrator of the site from which you obtain your ROM
  140. sets.
  141. Maintaining a site that manages MAME ROM sets can be a thankless job. The
  142. fact that these folks continue to maintain these sites often amazes me.
  143. The administrators of Dave's Classics and Insert Coin for example, have
  144. done an incredible job of making sure that the ROM sets on these sites
  145. are accurate and complete. Somehow, I don't think a virtual pat on the
  146. back is too much to ask in return...
  147.  
  148. Step Two - (ROM merging)
  149.  
  150. (I feel compelled to point out again that this step is *OPTIONAL*)
  151.  
  152. *DO NOT ATTEMPT THIS OPERATION UNLESS YOU HAVE COMPLETED STEP ONE!*
  153.  
  154. 2a - Print the list
  155. Look in your Documentation directory. Find and print out the
  156. merged.txt document
  157.  
  158. 2b - Backup Your ROM set(s)
  159. *THIS IS IMPORTANT!*  If the following steps don't work, you'll have a
  160. backup of your working ROM set(s)
  161.  
  162. 2c - Unzip the ROM set(s) you wish to merge
  163. Use the printout of merged.txt to determine which sets you will be
  164. working with. Don't worry about renaming individual ROMs, you did this in
  165. step one.
  166.  
  167. 2d - Merge the ROMs
  168. Copy the contents of one ROM set into the other. Replace duplicate file
  169. names.
  170.  
  171. 2e - Re zip the ROM set(s)
  172. Again, this step is optional. Mac users will need a utility that can
  173. create a .zip file
  174.  
  175. 2f - Create a place holder for the front-end if necessary.
  176. In the Mac version of MAME, an empty folder or an alias with the name of the
  177. missing ROM set must be placed in the ROM directory so a selection will
  178. appear in the front end. You should check with the author of the front
  179. end you're using to see if this step is necessary.
  180.  
  181. 2g - Run an audit
  182. If all has gone well, you should have no problems, if not, well, that's
  183. why you made a backup in step 2b...
  184.  
  185. An Example of How You Can Store Your ROMs-
  186.  
  187. Let's look at how the new loading scheme affects a ROM set, specifically Popeye.
  188. There are 2 Popeye sets: popeye (non-working) and popeyebl (working).
  189.  
  190. You can store the ROMs for these games in several ways.
  191.  
  192. Method 1: All the ROMs in both sets.
  193.  
  194. This method is the most compatible with other emulators. It stores all the files
  195. needed in each directory or zip, even if it is the same for both sets. There is
  196. no merging here, just renaming. If you don't wish to take up space with the
  197. non-working popeye set, this is the way to go.
  198.  
  199. popeye (main)       popeyebl (clone)
  200. ------              --------
  201. c-7a                po1
  202. c-7b                po2
  203. c-7c                po3
  204. c-7e                po4
  205.                     po_d1-e1.bin
  206. v-5n                v-5n
  207. v-1e                v-1e
  208. v-1f                v-1f
  209. v-1j                v-1j
  210. v-1k                v-1k
  211.  
  212. Method 2: Only the unique ROMs in the clone set.
  213.  
  214. Using this method, you can delete the duplicate files from the second set, thus
  215. saving space. MAME is smart enough to look in the main set for them. This method
  216. also gives your front-end something to list for the clone sets. This is partial
  217. merging.
  218.  
  219. Unlike the first method, this method isn't guaranteed to work with other emulators.
  220.  
  221. popeye (main)       popeyebl (clone)
  222. ------              --------
  223. c-7a                po1
  224. c-7b                po2
  225. c-7c                po3
  226. c-7e                po4
  227.                     po_d1-e1.bin
  228. v-5n
  229. v-1e
  230. v-1f
  231. v-1j
  232. v-1k
  233.  
  234. Method 2: All the ROMs in the Main Set
  235.  
  236. Using this method, you can place all the unique ROMs in the main set and get
  237. rid of the second set altogether. This is a complete merge. You can split the
  238. ROMs into subdirectories inside the zip if you wish (i.e. "main" and "bootleg").
  239. MAME ignores any and all subdirectory names.
  240.  
  241. If you keep all the ROMs in the main set and delete the "popeyebl" folder, you
  242. can still start MAME with "mame popeyebl" to play the bootleg set. You might need
  243. a placeholder for your front-end so it lists the bootleg set. Contact your
  244. front-end author for more information.
  245.  
  246. Unlike the first method, this method isn't guaranteed to work with other emulators.
  247.  
  248. popeye (main)       popeyebl (clone)
  249. ------              --------
  250. c-7a                (no ROMs at all)
  251. c-7b
  252. c-7c
  253. c-7e
  254.  
  255. v-5n
  256. v-1e
  257. v-1f
  258. v-1j
  259. v-1k
  260.  
  261. po1
  262. po2
  263. po3
  264. po4
  265. po_d1-e1.bin
  266.  
  267. Common Misconceptions-
  268.  
  269. * This new scheme is a waste of time.
  270. It is a pain in the butt, yes, but it's a necessary evil. Having a
  271. standard procedure for naming ROMs is a good thing. Remember, people who
  272. actually own the PCBs use the ROMs too so having consistent names helps
  273. them find what they need to repair a broken board.
  274.  
  275. * If I merge ROMs, they won't work with other emulators.
  276. That's true. The simple solution is not to merge or delete the ROMs.
  277. Remember, deleting redundant ROMs or placing them into one zip file or folder is
  278. optional. If you anticipate using them with other emulators, then don't
  279. merge or delete anything. You will still have to go through the ROM
  280. renaming process.
  281.  
  282. * No good will come of this
  283. This is untrue. While Nicola was going through all the ROM sets and
  284. comparing, he found several instances where a set had a bad ROM that has
  285. slipped through the cracks. This whole process has uncovered several bad
  286. ROMs that would have gone unnoticed otherwise.
  287.  
  288. * It's not worth the space savings.
  289. Maybe it's not worth it for you, but some people appreciate it. There are
  290. two pros to this aspect - you save space, and the downloads for cloned or
  291. derivative sets are much shorter, particularly for large ROM sets like
  292. the CPS1 games. There are no cons to merging - if you don't want to, you
  293. don't have to do it. You can keep your old sets and take up all the space
  294. you want :)
  295.  
  296. * It goes against MAME's goals as a documentation project.
  297. This isn't true. Since MAME strives to document as many aspects of the
  298. hardware as possible, keeping a list of clones is a natural extension of
  299. that process. MAME isn't forcing anyone to delete ROM files or break up
  300. their ROM sets if they don't want to. Remember, those steps are optional.
  301.  
  302. * What are color PROMs and how do they fit into all of this?
  303. They are very small (usually 256 bytes or less) ROMs that contain the
  304. color data for a lot of games. In the past, MAME stored the data
  305. hardcoded into it's source. Now, MAME will start looking for these files
  306. with the rest of the ROMs. This is a Good Thing because it means that
  307. other emulators can use the files, as can people who actually own the
  308. arcade boards. Expect to see MAME complain about missing color PROMs in
  309. the future as more drivers are converted to load them from disk.
  310.  
  311. * This is all a big conspiracy to eliminate the competition
  312. You've got us there. Despite the several compelling benefits (space
  313. savings, download time savings, documentation of clones, finding of bad
  314. ROMs), this is the true reason the changes were made. Yeah, That's it...
  315. (For the sarcasm-impaired, No this is not a big conspiracy to eliminate
  316. the competition...;-) )
  317.  
  318. That's it!
  319. Feel free to copy this text and post it elsewhere if you should so desire.
  320.  
  321.  
  322.  
  323. merged:
  324. -------
  325. 1942/1942 alternate
  326. exedexes/savgbees
  327. commando/commandj
  328. gng/gngcross/gngjap
  329. gunsmoke/gunsmrom/gunsmokj
  330. trojan/trojanj
  331. srumbler/srumblr2
  332. sidearms/sidearjp
  333. 1943/1943jap
  334. blktiger/blkdrgon
  335. ghouls/ghoulsj
  336. strider/striderj
  337. willow/willowj
  338. ffight/ffightj <- ffightj wrong, uses LOAD_EVEN/LOAD_ODD for gfx
  339. 1941/1941j
  340. mtwins/chikij
  341. msword/mswordj
  342. nemo/nemoj
  343. qbert/qbertjp (RENAME: all qbertjp/qb-XXX.bin -> qbj-XXX.bin)
  344. starforc/megaforc
  345. tutankhm/tutankst
  346. espial/espiale
  347. matmania/excthour (COPY: excthour/E9->matmania/K9-00 which had one bad bit)
  348. marble/marble2/marblea
  349. klax/klaxalt
  350. gauntlet/gauntir1/gauntir2/gaunt2p
  351. crbaloon/crbalon2
  352. panic/panica (RENAME: panica/spcpanic.1->panica.1 spcpanic.7->panica.7)
  353. mrdo/mrdot/mrlo/mrdu (RENAME: all mrlo/XX-NN.bin -> mrloNN.bin)
  354. docastle/docastl2 (EXCHANGE docastle.zip<->docastl2.zip. docastl2 was more complete)
  355. pleiads/pleitek (RENAME: pleiads.zip->pleiadce.zip pleitek.zip->pleiads.zip)
  356. phoenix/phoenixt/phoenix3 (RENAME: all phoenix3/phoenix.NN -> phoenix3.NN)
  357. cclimber/ccjap
  358. ckong and variations (this one is complex - just fetch the new set)
  359. swimmer/swimmera (COPY: swimmera/sw13 and sw14 to swimmer since they were bad there and
  360.                  RENAME all swimmera/swNN -> swaNN)
  361. shaolins/kicker (kicker is the main set, some ROMs in shaolins were bad)
  362. hbarrel/hbarrelj (RENAME hbarrel2.zip -> hbarrelj.zip)
  363. baddudes/drgninja
  364. hippodrm/ffantasy
  365. astrob/astrob1
  366. tempest/tempest1/tempest2 (fetch the new set)
  367. mappy/mappyjp
  368. yard/vsyard (RENAME: vsyard/yf-X-XX -> vyf-X-XX careful about names which look the
  369.             same but are not)
  370. mpatrol/mpatrolw/mranger (RENAME: mpatrolw/mp-X.XX -> mpw-X.XX)
  371. kungfum/kungfub
  372. travrusa/motorace (RENAME:
  373.             travrusa/zippyrac.002 -> mr8.3c
  374.             travrusa/zippyrac.003 -> mr9.3a
  375.             travrusa/zippyrac.004 -> mr10.1a)
  376. firetrap/firetpbl (NOTE: firetpbl/ft09.bin and ft10.bin were bad, however they are
  377.             no longer used)
  378. circusc/circusc2
  379. congo/tiptop
  380. gladiatr/ogonsiro
  381. karnov/karnovj
  382. chelnov/chelnovj
  383. gyruss/gyrussce
  384. gberet/rushatck
  385. atetris/atetrisa/atetrisb
  386. spacfury/spacfura (RENAME spacfury.zip -> spacfura.zip, spacufrc.zip -> spacfury.zip)
  387. rygar/rygarj (RENAME all rygarj/cpu_XX.bin -> cpuj_XX.bin)
  388. pooyan/pootan
  389. gaiden/shadoww
  390. asteroid/asteroi1 (fetch the new set)
  391. llander/llander1 (fetch the new set)
  392. quantum/quantum1 (fetch the new set)
  393. mhavoc/mhavoc2/mhavocrv (fetch the new set)
  394. junglek/jhunt
  395. elevator/elevatob (NOTE: a couple of elevatob ROMs were bad, however they are no
  396.                   longer used)
  397. venture/venture2 (NOTE: venture2/vent_7a.vid was bad, however it is no longer used)
  398. tmnt/tmntj/tmht2p/tmnt2pj (use the tmnt_complete.zip set)
  399. xevious/xeviousa/sxevious (fetch the new set)
  400. superqix/sqixbl
  401. turtles/turpin
  402. bagman/bagmans
  403. robotron/robotryo
  404. joust/joustr/joustwr
  405. sinistar/oldsin
  406. bubbles/bubblesr (RENAME: bubblesr/bubbles.XXX -> bubblesr.XXX)
  407. colony7/colony7a
  408. superpac/superpcn
  409. mspacman/mspacatk
  410. trackfld/hyprolym (RENAME: hyprolym/XXX_YYY-bin -> hyprolym.XXX)
  411. rocnrope/ropeman
  412. slapfigh/slapbtjp/slapbtuk (fetch the new set)
  413. arkanoid/arknoidu/arkbl2/arkatayt
  414. jumpbug/jbugsega
  415. japirem/uniwars
  416. bublbobl/boblbobl/sboblbob
  417. popeye/popeyebl
  418. bosco/bosconm
  419. btime/btimea
  420. bnj/brubber/caractn
  421. timeplt/spaceplt (RENAME: spaceplt/tmX -> spX)
  422. rainbow/rainbowe
  423. chplft/chplftb/chplftbl (RENAME: chplftbl/7124.90 -> 7124bl.90)
  424. centiped/centipd2 (RENAME centipd1.zip -> centipd2.zip)
  425. digdug/digdugnm
  426. ddragon/ddragonb
  427. rastan/rastsaga (RENAME rastsaga/icXX_XX.bin -> rsXX_XX.bin)
  428. pacland/paclandn/paclanda (REPLACE: paclandn/pl1-8/9/10/11 with
  429.             paclanda/pl1_08/09/10/11.bin, note that pl1-10 was bad.
  430.             RENAME: paclandn/pl1-XX -> pln1-XX)
  431. stratgyx/stratgyb
  432. bzone/bzone2 (RENAME: bzone2/036414.01 -> 036414a.01)
  433. dkong/dkongjp
  434. dkongjr/dkjrjp/dkngjrjp/dkjrbl (RENAME: dkjrjp/dkj.5X -> dkjp.5X)
  435. mooncrst/mooncrsg/mooncrsb/fantazia/eagle (RENAME: mooncrsb/eprXXX -> beprXXX)
  436. nemesis/nemesuk (RENAME: nemesuk/XXXX.bin -> XXXX.uk)
  437. frogger/frogsega/frogger2
  438. galaga/galagamw/galagads/gallag/galagab2 (fetch the new set)
  439. galaxian/galmidw/galnamco/superg/galapx/galap1/galap4/galturbo (RENAME:
  440.    galmidw/galaxian.X -> galmidw.X
  441.    galnamco/galaxian.X -> galnamco.X
  442.    superg/galaxian.X -> superg.X
  443.    galturbo/galaxian.X -> galturbo.X)
  444. moonal2/moonal2b
  445. pengo/pengo2/pengo2u/penta
  446. xsleena/solarwar (there were several bad ROMs; fetch the new set)
  447. capbowl/clbowl (RENAME: clbowl/XX -> XX.cl
  448. lwings/lwingsjp
  449. missile/suprmatk (RENAME: suprmatk/XXXXXXXX.02 -> XXXXXXXX.sma)
  450.  
  451. added PROMs:
  452. ------------
  453. vulgus
  454. sonson
  455. 1942
  456. exedexes
  457. commando
  458. gunsmoke
  459. 1943
  460. 1943kai
  461. mrdo (they are in the mrdo set)
  462. docastle (they are in the former docastl2 set, renamed to docastle)
  463. douni (they are in the douni set - different from docastle!!)
  464. nova2001 (they are in the nova20001 set)
  465. pleiads (they are in the former pleitek set, renamed to pleiads)
  466. phoenix (use the plaiads ones)
  467. thepit (they are in the thepit set)
  468. kungfum (they are in the kungfum set)
  469. gyruss (they are in the gyruss set)
  470. bagman/sbagman (they are in the new bagman set)
  471. arkanoid (they are in the arkanoid set)
  472. pacland (they are in the pacland set)
  473. dkongjr (they are in the dkjrbl set)
  474. frogger (they are in the frogger2 set)
  475. froggers (they are in the froggers set)
  476.