HI everyone. I've added the new unibios 2.1 to the neogeo driver. So there are 16 neogeo bioses.
SYSTEM_BIOS_START( neogeo )
SYSTEM_BIOS_ADD( 0, "euro", "Europe MVS (Ver. 2)" )
SYSTEM_BIOS_ADD( 1, "euro-s1", "Europe MVS (Ver. 1)" )
SYSTEM_BIOS_ADD( 2, "us", "US MVS (Ver. 2?)" )
SYSTEM_BIOS_ADD( 3, "us-e", "US MVS (Ver. 1)" )
SYSTEM_BIOS_ADD( 4, "asia", "Asia MVS (Ver. 3)" )
SYSTEM_BIOS_ADD( 5, "japan", "Japan MVS (Ver. 3)" )
SYSTEM_BIOS_ADD( 6, "japan-s2", "Japan MVS (Ver. 2)" )
SYSTEM_BIOS_ADD( 7, "japan-s1", "Japan MVS (Ver. 1)" )
SYSTEM_BIOS_ADD( 8, "debug", "Debug MVS (Hack?)" )
SYSTEM_BIOS_ADD( 9, "asia-aes", "Asia AES" )
SYSTEM_BIOS_ADD(10, "uni-bios.10","Unibios MVS (Hack, Ver. 1.0)" )
SYSTEM_BIOS_ADD(11, "uni-bios.11","Unibios MVS (Hack, Ver. 1.1)" )
SYSTEM_BIOS_ADD(12, "uni-bios.12","Unibios MVS (Hack, Ver. 1.2)" )
SYSTEM_BIOS_ADD(13, "uni-bios.13","Unibios MVS (Hack, Ver. 1.3)" )
SYSTEM_BIOS_ADD(14, "uni-bios.20","Unibios MVS (Hack, Ver. 2.0)" )
SYSTEM_BIOS_ADD(15, "uni-bios.21","Unibios MVS (Hack, Ver. 2.1)" )
SYSTEM_BIOS_END
#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | [color=Red]ROM_BIOS[/color](bios+1)) /* Note '+1' */
#define NEOGEO_BIOS \
ROM_LOAD16_WORD_SWAP_BIOS( 0, "sp-s2.sp1", 0x00000, 0x020000, CRC(9036d879) SHA1(4f5ed7105b7128794654ce82b51723e16e389543) ) /* Europe, 1 Slot, has also been found on a 4 Slot (the old hacks were designed for this one) */ \
ROM_LOAD16_WORD_SWAP_BIOS( 1, "sp-s.sp1", 0x00000, 0x020000, CRC(c7f2fa45) SHA1(09576ff20b4d6b365e78e6a5698ea450262697cd) ) /* Europe, 4 Slot */ \
ROM_LOAD16_WORD_SWAP_BIOS( 2, "usa_2slt.bin", 0x00000, 0x020000, CRC(e72943de) SHA1(5c6bba07d2ec8ac95776aa3511109f5e1e2e92eb) ) /* US, 2 Slot */ \
ROM_LOAD16_WORD_SWAP_BIOS( 3, "sp-e.sp1", 0x00000, 0x020000, CRC(2723a5b5) SHA1(5dbff7531cf04886cde3ef022fb5ca687573dcb8) ) /* US, 6 Slot (V5?) */ \
ROM_LOAD16_WORD_SWAP_BIOS( 4, "asia-s3.rom", 0x00000, 0x020000, CRC(91b64be3) SHA1(720a3e20d26818632aedf2c2fd16c54f213543e1) ) /* Asia */ \
ROM_LOAD16_WORD_SWAP_BIOS( 5, "vs-bios.rom", 0x00000, 0x020000, CRC(f0e8f27d) SHA1(ecf01eda815909f1facec62abf3594eaa8d11075) ) /* Japan, Ver 6 VS Bios */ \
ROM_LOAD16_WORD_SWAP_BIOS( 6, "sp-j2.rom", 0x00000, 0x020000, CRC(acede59c) SHA1(b6f97acd282fd7e94d9426078a90f059b5e9dd91) ) /* Japan, Older */ \
ROM_LOAD16_WORD_SWAP_BIOS( 7, "sp1.jipan.1024",0x00000, 0x020000, CRC(9fb0abe4) SHA1(18a987ce2229df79a8cf6a84f968f0e42ce4e59d) ) /* Japan, Older */ \
ROM_LOAD16_WORD_SWAP_BIOS( 8, "neodebug.rom", 0x00000, 0x020000, CRC(698ebb7d) SHA1(081c49aa8cc7dad5939833dc1b18338321ea0a07) ) /* Debug (Development) Bios */ \
ROM_LOAD16_WORD_SWAP_BIOS( 9, "aes-bios.bin", 0x00000, 0x020000, CRC(d27a71f1) SHA1(1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07) ) /* AES Console (Asia?) Bios */ \
ROM_LOAD16_WORD_SWAP_BIOS(10, "uni-bios.10", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */ \
ROM_LOAD16_WORD_SWAP_BIOS(11, "uni-bios.11", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ \
ROM_LOAD16_WORD_SWAP_BIOS(12, "uni-bios.12", 0x00000, 0x020000, CRC(4fa698e9) SHA1(682e13ec1c42beaa2d04473967840c88fd52c75a) ) /* Universe Bios v1.2 (hack) */ \
ROM_LOAD16_WORD_SWAP_BIOS(13, "uni-bios.13", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) */ \
ROM_LOAD16_WORD_SWAP_BIOS(14, "uni-bios.20", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ \
ROM_LOAD16_WORD_SWAP_BIOS(15, "uni-bios.21", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ \
But after compiling there's a problem. When I select a bios above unibios 2.1, MAME will load that bios, but will load unibios 2.1 again to overwrite the selected bios in the memory. The game only needs to load 18 files, but it load 19 files. Only if I select unibios 2.1 to load, it will load 18 files.
If I remove the unibios 2.1 line in the source, there wont be any problem.
It means MAME only use the last bios. Maybe MAME only supports 15 bioses?
There's one line in common.h like this, which I think has something to do with the problem:
#define ROM_BIOSFLAGSMASK 0xf0000000 /* only loaded if value matches global bios value */
#define ROM_BIOS(n) (((n) & 15) << 28)
4 example if I select unibios 2.1. So the n=15+1=16, which is 00010000, then after "(n) & 15" we get 00000000 (0001 was cut off). Is this the reason cause the problem? If I change "(n) & 15" to "(n) & 31" we will get 00010000, but seems that it still wont work.
Can any one fix the problem?