Converted neogeo mvs driver to use software lists in preparation for

multislot support [David Haywood]

Please note: launching convention for Neo-Geo games is now the same as
MESS software lists "mame neogeo gamename" or "mame neogeo -cart
gamename".
This commit is contained in:
Angelo Salese 2011-11-06 18:26:09 +00:00
parent 5b26fc8db1
commit aec813c34e
7 changed files with 9513 additions and 8291 deletions

1
.gitattributes vendored
View File

@ -8,6 +8,7 @@ docs/mame.txt svneol=native#text/plain
docs/newvideo.txt svneol=native#text/plain
docs/windows.txt svneol=native#text/plain
hash/megatech.xml svneol=native#text/plain
hash/neogeo.xml svneol=native#text/plain
hash/softwarelist.dtd svneol=native#text/plain
hash/stv.xml svneol=native#text/plain
hlsl/color.fx svneol=native#text/plain

9200
hash/neogeo.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -739,6 +739,8 @@ static void start_handler(void *data, const char *tagname, const char **attribut
romflags = ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2);
else if ( str_loadflag && !strcmp(str_loadflag, "load32_word") )
romflags = ROM_GROUPWORD | ROM_SKIP(2);
else if ( str_loadflag && !strcmp(str_loadflag, "load32_byte") )
romflags = ROM_SKIP(3);
/* ROM_LOAD( name, offset, length, hash ) */
add_rom_entry( swlist, s_name, hashdata, offset, length, ROMENTRYTYPE_ROM | romflags );

File diff suppressed because it is too large Load Diff

View File

@ -147,7 +147,7 @@
#include "machine/pd4990a.h"
#include "cpu/z80/z80.h"
#include "sound/2610intf.h"
#include "imagedev/cartslot.h"
#include "neogeo.lh"
@ -388,7 +388,7 @@ static CUSTOM_INPUT( multiplexed_controller_r )
return input_port_read_safe(field.machine(), cntrl[port][state->m_controller_select & 0x01], 0x00);
}
#if 0 // this needs to be added dynamically somehow
static CUSTOM_INPUT( mahjong_controller_r )
{
neogeo_state *state = field.machine().driver_data<neogeo_state>();
@ -413,7 +413,7 @@ cpu #0 (PC=00C18C40): unmapped memory word write to 00380000 = 0000 & 00FF
return ret;
}
#endif
static WRITE16_HANDLER( io_control_w )
{
@ -1272,6 +1272,86 @@ INPUT_PORTS_END
static DEVICE_IMAGE_LOAD( neo_cartridge )
{
UINT32 size;
device_t* ym = image.device().machine().device("ymsnd");
// first check software list
if(image.software_entry() != NULL)
{
// create memory regions
size = image.get_software_region_length("maincpu");
image.device().machine().region_free("maincpu");
image.device().machine().region_alloc("maincpu",size,1, ENDIANNESS_LITTLE);
memcpy(image.device().machine().region("maincpu")->base(),image.get_software_region("maincpu"),size);
// for whatever reason (intentional, or design flaw) software loaded via software lists is swapped in endianess vs. the standard ROM loading, regardless of the above. Swap it to keep consistency
for (int i=0; i<size/2;i++)
{
UINT16* ROM = (UINT16*)image.device().machine().region("maincpu")->base();
ROM[i] = ((ROM[i]&0xff00)>>8) | ((ROM[i]&0x00ff)<<8);
}
size = image.get_software_region_length("fixed");
image.device().machine().region_free("fixed");
image.device().machine().region_alloc("fixed",size,1, ENDIANNESS_LITTLE);
memcpy(image.device().machine().region("fixed")->base(),image.get_software_region("fixed"),size);
if(image.get_software_region("audiocpu") != NULL)
{
size = image.get_software_region_length("audiocpu");
image.device().machine().region_free("audiocpu");
image.device().machine().region_alloc("audiocpu",size+0x10000,1, ENDIANNESS_LITTLE);
memcpy(image.device().machine().region("audiocpu")->base(),image.get_software_region("audiocpu"),size);
memcpy(image.device().machine().region("audiocpu")->base()+0x10000,image.get_software_region("audiocpu"),size); // avoid reloading in XML, should just improve banking instead tho?
}
size = image.get_software_region_length("ymsnd");
image.device().machine().region_free("ymsnd");
image.device().machine().region_alloc("ymsnd",size,1, ENDIANNESS_LITTLE);
memcpy(image.device().machine().region("ymsnd")->base(),image.get_software_region("ymsnd"),size);
if(image.get_software_region("ymsnd.deltat") != NULL)
{
size = image.get_software_region_length("ymsnd.deltat");
image.device().machine().region_free("ymsnd.deltat");
image.device().machine().region_alloc("ymsnd.deltat",size,1, ENDIANNESS_LITTLE);
memcpy(image.device().machine().region("ymsnd.deltat")->base(),image.get_software_region("ymsnd.deltat"),size);
}
else
image.device().machine().region_free("ymsnd.deltat"); // removing the region will fix sound glitches in non-Delta-T games
ym->reset();
size = image.get_software_region_length("sprites");
image.device().machine().region_free("sprites");
image.device().machine().region_alloc("sprites",size,1, ENDIANNESS_LITTLE);
memcpy(image.device().machine().region("sprites")->base(),image.get_software_region("sprites"),size);
if(image.get_software_region("audiocrypt") != NULL) // encrypted Z80 code
{
size = image.get_software_region_length("audiocrypt");
image.device().machine().region_alloc("audiocrypt",size,1, ENDIANNESS_LITTLE);
memcpy(image.device().machine().region("audiocrypt")->base(),image.get_software_region("audiocrypt"),size);
// allocate the audiocpu region to decrypt data into
image.device().machine().region_free("audiocpu");
image.device().machine().region_alloc("audiocpu",size+0x10000,1, ENDIANNESS_LITTLE);
}
// setup cartridge ROM area
image.device().machine().device("maincpu")->memory().space(AS_PROGRAM)->install_read_bank(0x000080,0x0fffff,"cart_rom");
memory_set_bankptr(image.device().machine(),"cart_rom",&image.device().machine().region("maincpu")->base()[0x80]);
// handle possible protection
mvs_install_protection(image);
return IMAGE_INIT_PASS;
}
return IMAGE_INIT_FAIL;
}
/*************************************
*
* Machine driver
@ -1319,6 +1399,19 @@ static MACHINE_CONFIG_START( neogeo, neogeo_state )
MCFG_UPD4990A_ADD("upd4990a")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mvs, neogeo )
MCFG_MEMCARD_HANDLER(neogeo)
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_LOAD(neo_cartridge)
MCFG_CARTSLOT_INTERFACE("neo_cart")
MCFG_CARTSLOT_MANDATORY
MCFG_SOFTWARE_LIST_ADD("cart_list","neogeo")
MACHINE_CONFIG_END
/*************************************
*
* Driver initalization

View File

@ -205,6 +205,7 @@ void samsho5b_px_decrypt(running_machine &machine);
void samsho5b_vx_decrypt(running_machine &machine);
void matrimbl_decrypt(running_machine &machine);
void mvs_install_protection(device_image_interface& image);
/*----------- defined in video/neogeo.c -----------*/

View File

@ -6732,284 +6732,19 @@ dmndrbya // G4001 'DD' (c) 1986
// Neo Geo games
// the four digits number is the game ID stored at address 0x0108 of the program ROM
// info on prototypes taken from http://www.members.tripod.com/fresa/proto/puzzle.htm
// the majority of these are now in the software list, see hash/neogeo.xml
neogeo
nam1975 // 0001 (c) 1990 SNK
bstars // 0002 (c) 1990 SNK
bstarsh // 0002 (c) 1990 SNK
tpgolf // 0003 (c) 1990 SNK
mahretsu // 0004 (c) 1990 SNK
maglord // 0005 (c) 1990 Alpha Denshi Co.
maglordh // 0005 (c) 1990 Alpha Denshi Co.
ridhero // 0006 (c) 1990 SNK
ridheroh // 0006 (c) 1990 SNK
alpham2 // 0007 (c) 1991 SNK
alpham2p // 0007 (c) 1991 SNK (prototype)
// 0008 Sunshine (prototype) 1990 SNK
ncombat // 0009 (c) 1990 Alpha Denshi Co.
ncombath // 0009 (c) 1990 Alpha Denshi Co.
cyberlip // 0010 (c) 1990 SNK
superspy // 0011 (c) 1990 SNK
// 0012
// 0013
mutnat // 0014 (c) 1992 SNK
// 0015
kotm // 0016 (c) 1991 SNK
kotmh // 0016 (c) 1991 SNK
sengoku // 0017 (c) 1991 SNK
sengokuh // 0017 (c) 1991 SNK
burningf // 0018 (c) 1991 SNK
burningfh // 0018 (c) 1991 SNK
burningfp // 0018 (c) 1991 SNK (prototype)
lbowling // 0019 (c) 1990 SNK
gpilots // 0020 (c) 1991 SNK
gpilotsh // 0020 (c) 1991 SNK
joyjoy // 0021 (c) 1990 SNK
bjourney // 0022 (c) 1990 Alpha Denshi Co.
quizdais // 0023 (c) 1991 SNK
quizdaisk // 0123 (c) 1991 SNK
lresort // 0024 (c) 1992 SNK
eightman // 0025 (c) 1991 SNK / Pallas
// 0026 Fun Fun Brothers (prototype) 1991 Alpha
minasan // 0027 (c) 1990 Monolith Corp.
// 0028 Dunk Star (prototype) Sammy
legendos // 0029 (c) 1991 SNK
2020bb // 0030 (c) 1991 SNK / Pallas
2020bba // 0030 (c) 1991 SNK / Pallas
2020bbh // 0030 (c) 1991 SNK / Pallas
socbrawl // 0031 (c) 1991 SNK
socbrawlh // 0031 (c) 1991 SNK
roboarmy // 0032 (c) 1991 SNK
fatfury1 // 0033 (c) 1991 SNK
fbfrenzy // 0034 (c) 1992 SNK
// 0035 Mystic Wand (prototype) 1991 Alpha
bakatono // 0036 (c) 1991 Monolith Corp.
crsword // 0037 (c) 1991 Alpha Denshi Co.
trally // 0038 (c) 1991 Alpha Denshi Co.
kotm2 // 0039 (c) 1992 SNK
kotm2p // 0039 (c) 1992 SNK (prototype)
sengoku2 // 0040 (c) 1993 SNK
bstars2 // 0041 (c) 1992 SNK
quizdai2 // 0042 (c) 1992 SNK
3countb // 0043 (c) 1993 SNK
aof // 0044 (c) 1992 SNK
samsho // 0045 (c) 1993 SNK
samshoh // 0045 (c) 1993 SNK
tophuntr // 0046 (c) 1994 SNK
tophuntrh // 0046 (c) 1994 SNK
fatfury2 // 0047 (c) 1992 SNK
janshin // 0048 (c) 1994 Aicom
androdun // 0049 (c) 1992 Visco
ncommand // 0050 (c) 1992 Alpha Denshi Co.
viewpoin // 0051 (c) 1992 Sammy
ssideki // 0052 (c) 1992 SNK
wh1 // 0053 (c) 1992 Alpha Denshi Co.
wh1h // 0053 (c) 1992 Alpha Denshi Co.
wh1ha // 0053 (c) 1992 Alpha Denshi Co.
// 0054 Crossed Swords 2 (CD only? not confirmed, MVS might exist)
kof94 // 0055 (c) 1994 SNK
aof2 // 0056 (c) 1994 SNK
aof2a // 0056 (c) 1994 SNK
wh2 // 0057 (c) 1993 ADK
fatfursp // 0058 (c) 1993 SNK
fatfurspa // 0058 (c) 1993 SNK
savagere // 0059 (c) 1995 SNK
fightfev // 0060 (c) 1994 Viccom
fightfeva // 0060 (c) 1994 Viccom
ssideki2 // 0061 (c) 1994 SNK
spinmast // 0062 (c) 1993 Data East Corporation
samsho2 // 0063 (c) 1994 SNK
samsho2k // 0063 (c) 1994 SNK (Korean hack)
wh2j // 0064 (c) 1994 ADK / SNK
wjammers // 0065 (c) 1994 Data East Corporation
karnovr // 0066 (c) 1994 Data East Corporation
gururin // 0067 (c) 1994 Face
pspikes2 // 0068 (c) 1994 Video System Co.
// Super Volley '94 was once released in Mar.1994, and recalled. Then released as Power Spikes 2 (with some tweaks).
fatfury3 // 0069 (c) 1995 SNK
zupapa // 0070 Zupapa - released in 2001, 1994 prototype probably exists
// 0071 Bang Bang Busters (prototype) 1994 Visco
// 0072 Last Odyssey Pinball Fantasia (prototype) 1995 Monolith
panicbom // 0073 (c) 1994 Eighting / Hudson
aodk // 0074 (c) 1994 ADK / SNK
sonicwi2 // 0075 (c) 1994 Video System Co.
zedblade // 0076 (c) 1994 NMK
// 0077 The Warlocks of the Fates (prototype) 1995 Astec
galaxyfg // 0078 (c) 1995 Sunsoft
strhoop // 0079 (c) 1994 Data East Corporation
quizkof // 0080 (c) 1995 Saurus
quizkofk // 0080 (c) 1995 Saurus
ssideki3 // 0081 (c) 1995 SNK
doubledr // 0082 (c) 1995 Technos
pbobblen // 0083 (c) 1994 Taito
pbobblenb // bootleg
kof95 // 0084 (c) 1995 SNK
kof95h // 0084 (c) 1995 SNK
// 0085 Shinsetsu Samurai Spirits Bushidoretsuden / Samurai Shodown RPG (CD only)
tws96 // 0086 (c) 1996 Tecmo
samsho3 // 0087 (c) 1995 SNK
samsho3h // 0087 (c) 1995 SNK
fswords // 0187 Korean hack of samsho3
stakwin // 0088 (c) 1995 Saurus
pulstar // 0089 (c) 1995 Aicom
whp // 0090 (c) 1995 ADK / SNK
// 0091
kabukikl // 0092 (c) 1995 Hudson
neobombe // 0093 (c) 1997 Hudson
gowcaizr // 0094 (c) 1995 Technos
rbff1 // 0095 (c) 1995 SNK
rbff1a // 0095 (c) 1995 SNK
aof3 // 0096 (c) 1996 SNK
aof3k // 0196 Censored Korean release of aof3
sonicwi3 // 0097 (c) 1995 Video System Co.
// 0098 Idol Mahjong - final romance 2 (CD only? not confirmed, MVS might exist)
// 0099 Neo Pool Masters
turfmast // 0200 (c) 1996 Nazca
mslug // 0201 (c) 1996 Nazca
puzzledp // 0202 (c) 1995 Taito (Visco license)
mosyougi // 0203 (c) 1995 ADK / SNK
// 0204 QP (prototype)
// 0205 Neo-Geo CD Special (CD only)
marukodq // 0206 (c) 1995 Takara
neomrdo // 0207 (c) 1996 Visco
sdodgeb // 0208 (c) 1996 Technos
goalx3 // 0209 (c) 1995 Visco
// 0210 Karate Ninja Sho (prototype) 1995 Yumekobo
// 0211 Oshidashi Zintrick (CD only? not confirmed, MVS might exist) 1996 SNK/ADK
zintrckb // 0211 hack - this is not a genuine MVS proto, its a bootleg made from the CD version
overtop // 0212 (c) 1996 ADK
neodrift // 0213 (c) 1996 Visco
kof96 // 0214 (c) 1996 SNK
kof96h // 0214 (c) 1996 SNK
ssideki4 // 0215 (c) 1996 SNK
kizuna // 0216 (c) 1996 SNK
// Fu-un Super Tag Battle Special Version (4-player battle available) exists
ninjamas // 0217 (c) 1996 ADK / SNK
ragnagrd // 0218 (c) 1996 Saurus
pgoal // 0219 (c) 1996 Saurus
ironclad // 0220 (c) 1996 Saurus - Choutetsu Brikin'ger - Iron clad (protoype)
ironclado // 0220 (c) 1996 Saurus - Choutetsu Brikin'ger - Iron clad (protoype, older)
magdrop2 // 0221 (c) 1996 Data East Corporation
samsho4 // 0222 (c) 1996 SNK
samsho4k // Censored Korean release of samsho4
rbffspec // 0223 (c) 1996 SNK
rbffspeck // 0124 (c) 1996 SNK
twinspri // 0224 (c) 1996 ADK
wakuwak7 // 0225 (c) 1996 Sunsoft
// 0226 Pair Pair Wars (prototype) 1996 Sunsoft?
stakwin2 // 0227 (c) 1996 Saurus
ghostlop // 0228 GhostLop (prototype) 1996? Data East
// 0229 King of Fighters '96 CD Collection (CD only)
breakers // 0230 (c) 1996 Visco
miexchng // 0231 (c) 1997 Face
kof97 // 0232 (c) 1997 SNK
kof97h // 0232 (c) 1997 SNK
kof97k // 0232 (c) 1997 SNK
kof97pls // bootleg of kof97
kog // bootleg of kof97
magdrop3 // 0233 (c) 1997 Data East Corporation
lastblad // 0234 (c) 1997 SNK
lastbladh // 0234 (c) 1997 SNK
lastsold // 0196 Censored Korean release of lastblad
puzzldpr // 0235 (c) 1997 Taito (Visco license)
irrmaze // 0236 (c) 1997 SNK / Saurus
popbounc // 0237 (c) 1997 Video System Co.
shocktro // 0238 (c) 1997 Saurus
shocktroa // 0238 (c) 1997 Saurus
blazstar // 0239 (c) 1998 Yumekobo
rbff2 // 0240 (c) 1998 SNK
rbff2h // 0240 (c) 1998 SNK
rbff2k // 0140 Censored Korean release of rbff2
mslug2 // 0241 (c) 1998 SNK
kof98 // 0242 (c) 1998 SNK
kof98k // 0242 (c) 1998 SNK
kof98ka // 0242 (c) 1998 SNK
kof98h // 0242 (c) 1998 SNK
lastbld2 // 0243 (c) 1998 SNK
neocup98 // 0244 (c) 1998 SNK
breakrev // 0245 (c) 1998 Visco
shocktr2 // 0246 (c) 1998 Saurus
lans2004 // bootleg of shocktr2
flipshot // 0247 (c) 1998 Visco
pbobbl2n // 0248 (c) 1999 Taito (SNK license)
ctomaday // 0249 (c) 1999 Visco
mslugx // 0250 (c) 1999 SNK
kof99 // 0251 (c) 1999 SNK
kof99h // 0251 (c) 1999 SNK
kof99e // 0251 (c) 1999 SNK
kof99k // 0152 (c) 1999 SNK
kof99p // 0251 (c) 1999 SNK
ganryu // 0252 (c) 1999 Visco
garou // 0253 (c) 1999 SNK
garouo // 0253 (c) 1999 SNK
garoup // 0253 (c) 1999 SNK
garoubl // bootleg
s1945p // 0254 (c) 1999 Psikyo
preisle2 // 0255 (c) 1999 Yumekobo
mslug3 // 0256 (c) 2000 SNK
mslug3h // 0256 (c) 2000 SNK
mslug3b6 // bootleg
kof2000 // 0257 (c) 2000 SNK
kof2000n // 0257 (c) 2000 SNK
// 0258 SNK vs. Capcom?
bangbead // 0259 (c) 2000 Visco
nitd // 0260 (c) 2000 Eleven / Gavaking
nitdbl // bootleg
sengoku3 // 0261 (c) 2001 Noise Factory / SNK
kof2001 // 0262 (c) 2001 Eolith / SNK
kof2001h // 0262 (c) 2001 Eolith / SNK
cthd2003 // bootleg of kof2001
ct2k3sp // bootleg of kof2001
ct2k3sa // bootleg of kof2001
mslug4 // 0263 (c) 2002 Mega Enterprise
mslug4h // 0263 (c) 2002 Mega Enterprise
ms4plus // bootleg
rotd // 0264 (c) 2002 Evoga
kof2002 // 0265 (c) 2002 Eolith / Playmore
kof2002b // bootleg
kf2k2pls // bootleg
kf2k2pla // bootleg
kf2k2mp // bootleg
kf2k2mp2 // bootleg
kof10th // bootleg of kof2002
kf2k5uni // bootleg of kof2002
kf10thep // bootleg of kof2002
kof2k4se // bootleg of kof2002
matrim // 0266 (c) 2002 Atlus
matrimbl // bootleg
pnyaa // 0267 (c) 2003 Aiky / Taito
ms5pcb // 0268 (c) 2003 Playmore
mslug5 // 0268 (c) 2003 Playmore
mslug5h // 0268 (c) 2003 Playmore
ms5plus // bootleg
svcpcb // 0269 (c) 2003 Playmore / Capcom - JAMMA PCB
svcpcba // 0269 (c) 2003 Playmore / Capcom - JAMMA PCB
svc // 0269 (c) 2003 Playmore / Capcom
svcboot // bootleg
svcplus // bootleg
svcplusa // bootleg
svcsplus // bootleg
samsho5 // 0270 (c) 2003 Playmore
samsho5h // 0270 (c) 2003 Playmore
samsho5b // bootleg
kf2k3pcb // 0271 (c) 2003 Playmore - JAMMA PCB
kof2003 // 0271 (c) 2003 Playmore
kof2003h // 0271 (c) 2003 Playmore
kf2k3bl // bootleg
kf2k3bla // bootleg
kf2k3pl // bootleg
kf2k3upl // bootleg
samsh5sp // 0272 (c) 2004 Playmore
samsh5sph // 0272 (c) 2004 Playmore
samsh5spn // 0272 (c) 2004 Playmore
// The BrezzaSoft games don't have proper ID codes
jockeygp
jockeygpa
vliner
vlinero
irrmaze // (c)1997 SNK / Saurus
ms5pcb // (c)2003 SNK Playmore
svcpcb // (c)2003 SNK Playmore
svcpcba // (c)2003 SNK Playmore
kf2k3pcb // (c)2003 SNK Playmore
jockeygp // (c)2001 Sun Amusement / BrezzaSoft
jockeygpa // (c)2001 Sun Amusement / BrezzaSoft
vliner // (c)2001 Dyna / BrezzaSoft
vlinero // (c)2001 Dyna / BrezzaSoft
// Nor does Digger Man
diggerma // No Game ID (unlicensed), (c) 2000 Kyle Hodgetts, prototype
// Hyper NeoGeo 64 uses a 3 digit rom code?