-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmame_mess-softlist.txt
182 lines (147 loc) · 8.68 KB
/
mame_mess-softlist.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
(ab)Using the MAME/MESS Software List for Neo-Geo Homebrew Development
======================================================================
(Please ensure this text file is being viewed in UTF-8.)
In the past, most Neo-Geo development via MAME was done by copying a base ROM,
replacing some or all of the files in it, and running it through the original
game's driver. With recent MAME versions supporting multi-slot booting, the
neogeo driver is able to use the software list in the "hash" directory. You can
use this to your advantage to avoid having to recompile MAME each time you want
to add a new test ROM/homebrew game/whatever.
It should be noted that this is not a catch-all solution, as the following games
are not found in the neogeo.xml hash list:
* Anything that's not a cart (the PCB releases of Metal Slug 5, SvC CHAOS, KOF2003)
* Jockey GrandPrix and V-Liner ("requires very specific hardware and is loaded in neodrvr.c")
--------------------------------------------------------------------------------
[The Quickest Example (MVS/AES)]
Say you've been doing your work on a Puzzle De Pon! ROMset. What you'd want to
do is find the entry for the game you're working with (in this case, the romset
is "puzzledp"), copy everything starting from <software name="whatever"> to the
ending </software> tag, and paste it just before the final </softwarelist> tag.
This is the entry for Puzzle De Pon! as of MAME SVN revision 32691:
<software name="puzzledp">
<description>Puzzle De Pon!</description>
<year>1995</year>
<publisher>Taito (Visco license)</publisher>
<sharedfeat name="release" value="MVS" />
<sharedfeat name="compatibility" value="MVS,AES" />
<part name="cart" interface="neo_cart">
<!-- MVS ONLY RELEASE -->
<dataarea name="maincpu" width="16" endianness="big" size="0x100000">
<rom loadflag="load16_word_swap" name="202-p1.p1" offset="0x000000" size="0x080000" crc="2b61415b" sha1="0e3e4faf2fd6e63407425e1ac788003e75aeeb4f" />
<!-- TC534200 -->
</dataarea>
<dataarea name="fixed" size="0x040000">
<rom offset="0x000000" size="0x020000" name="202-s1.s1" crc="cd19264f" sha1="531be2305cd56d332fb7a53ab924214ade34a9e8" />
<!-- TC531000 -->
</dataarea>
<dataarea name="audiocpu" size="0x020000">
<rom offset="0x000000" size="0x020000" name="202-m1.m1" crc="9c0291ea" sha1="3fa67c62acba79be6b3a98cc1601e45569fa11ae" />
<!-- TC531001 -->
</dataarea>
<dataarea name="ymsnd" size="0x80000">
<rom name="202-v1.v1" offset="0x000000" size="0x080000" crc="debeb8fb" sha1="49a3d3578c087f1a0050168571ef8d1b08c5dc05" />
<!-- TC534200 -->
</dataarea>
<dataarea name="sprites" size="0x200000">
<rom loadflag="load16_byte" name="202-c1.c1" offset="0x000000" size="0x100000" crc="cc0095ef" sha1="3d86f455e6db10a2449b775dc386f1826ba3b62e" />
<!-- TC538200 -->
<rom loadflag="load16_byte" name="202-c2.c2" offset="0x000001" size="0x100000" crc="42371307" sha1="df794f989e2883634bf7ffeea48d6bc3854529af" />
<!-- TC538200 -->
</dataarea>
</part>
</software>
<software name="puzzledp"> is the game definition. "puzzledp" is the rom name,
so you want to change this to match the ROM name you'll be using.
<description> is the title of the game/rom, displayed in MAME/MESS.
<year> is the release year.
<publisher> is the publisher of the game.
There can be many "sharedfeat" items, but only two of them are ever used in
neogeo.xml:
<sharedfeat name="release" value="MVS,AES" /> determines what systems this game
was released on. MAME/MESS supports some games that were only released on one
platform.
<sharedfeat name="compatibility" value="MVS,AES" /> determines what systems this
game will WORK on. Some games will refuse to work on hardware they weren't meant
to run on. This is especially true of various bootlegs, and some late-era official
releases (King of Fighters 2001, Samurai Shodown V/Samurai Spirits Zero).
<part name="cart" interface="neo_cart"> begins the ROM file definition.
When you think of what makes a Neo-Geo ROMset, it comes down to:
* Main Program (.p1 to .p4)
* Fix Tiles (.s1; optional)
* Sound Program (.m1)
* Voices/Samples (.v1 to .v4 for most sets)
* Sprite Tiles (.c1 to .c8)
Sometimes there might be a tag like this right after the <part> tag:
<feature name="slot" value="rom_kof98" />
Since later games (and some bootlegs) had protection, MAME/MESS needs to know to
handle it. It's unlikely you'll make anything that requires something like this,
but if you need more info, please look in neogeo.xml for more slot features.*
(* if you want to take that as a challenge, go right ahead and surprise me. :D)
<dataarea name="maincpu" width="16" endianness="big" size="0x100000">
This data area represents the P roms. "size" may change, but the others will
stay the same. Here, "size" represents the overall size of the program area
(all P ROMs added up).
You will want to change the crc and sha1 hashes for each of the values to
whatever they happen to be for your ROMs. MAME/MESS will gladly tell you what
the real values are if the values in the XML don't match the file hashes.
<rom loadflag="load16_word_swap" name="202-p1.p1" offset="0x000000" size="0x080000" crc="2b61415b" sha1="0e3e4faf2fd6e63407425e1ac788003e75aeeb4f" />
This tag loads the P ROM.
<dataarea name="fixed" size="0x040000">
This data area represents the Fix tiles.
<rom offset="0x000000" size="0x020000" name="202-s1.s1" crc="cd19264f" sha1="531be2305cd56d332fb7a53ab924214ade34a9e8" />
This tag loads the S ROM.
<dataarea name="audiocpu" size="0x020000">
This data area represents the Sound Program.
<rom offset="0x000000" size="0x020000" name="202-m1.m1" crc="9c0291ea" sha1="3fa67c62acba79be6b3a98cc1601e45569fa11ae" />
This tag loads the M ROM.
<dataarea name="ymsnd" size="0x80000">
This data area represents Voices/Samples.
<rom name="202-v1.v1" offset="0x000000" size="0x080000" crc="debeb8fb" sha1="49a3d3578c087f1a0050168571ef8d1b08c5dc05" />
This tag loads a single V ROM.
<dataarea name="sprites" size="0x200000">
This data area represents the Sprites.
<rom loadflag="load16_byte" name="202-c1.c1" offset="0x000000" size="0x100000" crc="cc0095ef" sha1="3d86f455e6db10a2449b775dc386f1826ba3b62e" />
<rom loadflag="load16_byte" name="202-c2.c2" offset="0x000001" size="0x100000" crc="42371307" sha1="df794f989e2883634bf7ffeea48d6bc3854529af" />
These two tags load the C ROMs. it's important to note that on cart systems,
the C ROM definitions need to be in pairs, due to the fact that sprite tiles
are interleaved between ROMs.
Once you've edited everything to your liking, you can then run your new software
list entry with any of the following:
mame neogeo gamename
mame neogeo -cart1 gamename -cart2 othergam
mess aes gamename
ume can also be used in place of mame/mess if you have it installed.
--------------------------------------------------------------------------------
[Can't forget the Neo-Geo CD!]
The software list for the Neo-Geo CD is in "neocd.xml". A comment at the top of
the file explains the current status of Neo-Geo CD image support:
"Most of the images listed are converted from an old TOSEC set and should probably
be replaced with TruRip dumps once we can import CCD files. A small number of
images are from the TruRip set, converted using .cue files created with CDMage,
the sub-data however is not converted."
The first entry in neocd.xml is Puzzle Bobble, so let's just use that.
<software name="pbobble">
<description>Bust-A-Move (USA) ~ Puzzle Bobble (Jpn)</description>
<year>1995</year>
<publisher>SNK</publisher>
<info name="alt_title" value="パズルボブル" />
<info name="serial" value="NGCD-083 (JPN)" />
<info name="release" value="19950502 (JPN)" />
<part name="cdrom" interface="neocd_cdrom">
<diskarea name="cdrom">
<disk name="bust-a-move (1995)(snk)(jp-us)[!][puzzle bobble]" sha1="e9ae51499f1790b402307c0d1c8a62c2ff0cfea9"/>
</diskarea>
</part>
</software>
The primary difference between a Neo-Geo CD entry and a cartridge Neo-Geo entry
is the <part> section.
Instead of "cart", you have "cdrom". Instead of "neo_cart", there's "neocd_cdrom".
<disk name="bust-a-move (1995)(snk)(jp-us)[!][puzzle bobble]" sha1="e9ae51499f1790b402307c0d1c8a62c2ff0cfea9"/>
* name is the filename.
* sha1 is the SHA-1 hash of the CHD file as reported internally; It is NOT the
SHA-1 hash of the full CHD file.
In order to use your homebrew on MESS, you'll need to convert your ISO image
or CUE sheet to a CHD using chdman's "createcd" option.
chdman createcd -i input.iso -o output.chd
is the typical command used to create a CHD from an ISO file. chdman has more
options, so be sure to run it on the command line for more information.