New games added as GAME_NOT_WORKING:

------------------------------------
Mamoru-kun wa Norowarete Shimatta! [rtw]
Mushiking The King Of Beetles II ENG (Ver. 1.001) [rtw]
Mushiking The King Of Beetles II ENG (Ver. 2.001) [rtw]
Radirgy Noa [rtw]
Star Horse Progress (Rev. A) [rtw, Mr. CAST, hap, Yohji, Smitdogg, The Dumping Union]
Touch de Zunou (Rev. A) [CaH4e3]

New clones added:
----------------
Mazan  -  Flash of The Blade (MAZ3 Ver. A) [rtw, ShouTime]
Melty Blood Actress Again (Ver. A) [rtw]
Ninja Assault (NJA1 Ver. A) [rtw, ShouTime]
Ninja Assault (NJA2 Ver. A) [rtw, ShouTime]

Other changes:
--------------
- Redumped Salary Man Kintaro [Guru]
- M4 cart handling greatly improved (added needed flash commands, fixed 
encryption on/off logic) [MetalliC]
- f355 EPR was overdumped (mirrored 2 times), fixed [MetalliC]
- Completed dump of vtenis2c, ROM test passes now [MetalliC]
- M1/Actel and Namco carts IC layouts fixed, ROM test passes now [MetalliC]
- Namco 2f-2b IC names changed to <cartlabel>.2d,2c etc,  without fl0-fl4, 
because its the second IC label on the PCB (like "IC17S ROM1" on Sega carts) [MetalliC]
- Re-parented World Kicks [MetalliC]
- IC labels changed according to cart PCBs [MetalliC]
- minor docs update [MetalliC]
This commit is contained in:
R. Belmont 2014-02-07 02:20:27 +00:00
parent 00b179369a
commit c88cfbdb25
7 changed files with 907 additions and 667 deletions

File diff suppressed because it is too large Load Diff

View File

@ -56,7 +56,7 @@ DEVICE_ADDRESS_MAP_START(submap, 16, naomi_board)
AM_RANGE(0x04, 0x05) AM_READWRITE(rom_data_r, rom_data_w)
AM_RANGE(0x06, 0x07) AM_WRITE(dma_offseth_w)
AM_RANGE(0x08, 0x09) AM_WRITE(dma_offsetl_w)
AM_RANGE(0x0a, 0x0b) AM_READWRITE(actel_r, dma_count_w)
AM_RANGE(0x0a, 0x0b) AM_WRITE(dma_count_w)
AM_RANGE(0x3c, 0x3d) AM_WRITE(boardid_w)
AM_RANGE(0x3e, 0x3f) AM_READ(boardid_r)
@ -67,14 +67,14 @@ naomi_board::naomi_board(const machine_config &mconfig, device_type type, const
: naomi_g1_device(mconfig, type, name, tag, owner, clock, shortname, source)
{
eeprom_tag = 0;
actel_tag = 0;
rombdid_tag = 0;
}
void naomi_board::static_set_eeprom_tag(device_t &device, const char *_eeprom_tag, const char *_actel_tag)
{
naomi_board &dev = downcast<naomi_board &>(device);
dev.eeprom_tag = _eeprom_tag;
dev.actel_tag = _actel_tag;
dev.rombdid_tag = _actel_tag;
}
@ -207,19 +207,6 @@ READ16_MEMBER(naomi_board::default_r)
return 0xffff;
}
READ16_MEMBER(naomi_board::actel_r)
{
if (actel_tag)
{
if (memregion(actel_tag) != NULL)
{
return 0;
}
}
return 0xffff;
}
void naomi_board::board_write(offs_t offset, UINT16 data)
{
logerror("NAOMIBD: unhandled board write %08x, %04x\n", offset, data);

View File

@ -24,7 +24,6 @@ public:
DECLARE_WRITE16_MEMBER(rom_data_w); // 5f7008
DECLARE_WRITE16_MEMBER(dma_offseth_w); // 5f700c
DECLARE_WRITE16_MEMBER(dma_offsetl_w); // 5f7010
DECLARE_READ16_MEMBER(actel_r); // 5f7014
DECLARE_WRITE16_MEMBER(dma_count_w); // 5f7014
DECLARE_WRITE16_MEMBER(boardid_w); // 5f7078
@ -47,13 +46,14 @@ protected:
// To be optionally defined in the underlying class
virtual void board_write(offs_t offset, UINT16 data);
UINT32 rom_offset;
const char *rombdid_tag;
private:
UINT32 rom_offset, dma_offset, dma_cur_offset;
UINT32 dma_offset, dma_cur_offset;
UINT16 dma_count;
bool pio_ready, dma_ready;
const char *eeprom_tag;
const char *actel_tag;
class x76f100_device *eeprom;
};

View File

@ -24,6 +24,12 @@ void naomi_m1_board::static_set_tags(device_t &device, const char *_key_tag)
READ16_MEMBER(naomi_m1_board::actel_id_r)
{
if (rombdid_tag && memregion(rombdid_tag) != NULL)
{
const UINT8 *bdid = memregion(rombdid_tag)->base();
return bdid[0] | (bdid[1] << 8);
}
return 0x0000;
}

View File

@ -29,6 +29,22 @@ const UINT8 naomi_m4_board::k_sboxes[4][16] = {
{9,12,8,7,10,4,0,15,1,11,14,2,13,5,6,3}
};
// from S29GL512N datasheet
static UINT8 cfidata[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x51,0x00,0x52,0x00,0x59,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x07,0x00,
0x07,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x1a,0x00,0x02,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0xff,0x00,0x01,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x50,0x00,0x52,0x00,0x49,0x00,0x31,0x00,0x33,0x00,0x10,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xb5,0x00,0xc5,0x00,0x04,0x00,
0x01,0x00
};
DEVICE_ADDRESS_MAP_START(submap, 16, naomi_m4_board)
AM_RANGE(0x1a, 0x1b) AM_READ(m4_id_r)
AM_INHERIT_FROM(naomi_board::submap)
ADDRESS_MAP_END
naomi_m4_board::naomi_m4_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: naomi_board(mconfig, NAOMI_M4_BOARD, "NAOMI-M4-BOARD", tag, owner, clock, "naomi_m4_board", __FILE__)
{
@ -61,6 +77,7 @@ void naomi_m4_board::device_start()
save_item(NAME(rom_cur_address));
save_item(NAME(buffer_actual_size));
save_item(NAME(encryption));
save_item(NAME(cfi_mode));
save_item(NAME(counter));
}
@ -98,14 +115,15 @@ void naomi_m4_board::device_reset()
rom_cur_address = 0;
buffer_actual_size = 0;
encryption = false;
cfi_mode = false;
counter = 0;
cur_iv = 0;
}
void naomi_m4_board::board_setup_address(UINT32 address, bool is_dma)
{
rom_cur_address = address & 0x1fffffff;
encryption = (!is_dma) && !(address & 0x20000000);
rom_cur_address = address & 0x1ffffffe;
encryption = rom_offset & 0x40000000;
if(encryption) {
enc_reset();
@ -115,6 +133,22 @@ void naomi_m4_board::board_setup_address(UINT32 address, bool is_dma)
void naomi_m4_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
{
if (cfi_mode) {
int fpr_num = 0;
if (rombdid_tag && memregion(rombdid_tag) != NULL)
{
fpr_num = *memregion(rombdid_tag)->base() & 0x7f;
}
if (((rom_cur_address >> 26) & 0x07) < fpr_num) {
base = &cfidata[rom_cur_address & 0xffff];
limit = 2;
return;
}
}
if(encryption) {
base = buffer;
limit = BUFFER_SIZE;
@ -168,3 +202,24 @@ void naomi_m4_board::enc_fill()
}
}
}
READ16_MEMBER(naomi_m4_board::m4_id_r)
{
UINT16 epr_flag = 0;
if (rombdid_tag && memregion(rombdid_tag) != NULL)
{
epr_flag = *memregion(rombdid_tag)->base() & 0x80;
}
return 0x5500 | epr_flag;
}
void naomi_m4_board::board_write(offs_t offset, UINT16 data)
{
if (((offset&0xffff) == 0x00aa) && (data == 0x0098))
cfi_mode = true;
if (((offset&0xffff) == 0x0000) && (data == 0x00f0))
cfi_mode = false;
}

View File

@ -14,6 +14,9 @@ public:
static void static_set_tags(device_t &device, const char *_key_tag);
virtual DECLARE_ADDRESS_MAP(submap, 16);
DECLARE_READ16_MEMBER(m4_id_r);
protected:
virtual void device_start();
virtual void device_reset();
@ -21,6 +24,7 @@ protected:
virtual void board_setup_address(UINT32 address, bool is_dma);
virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
virtual void board_advance(UINT32 size);
virtual void board_write(offs_t offset, UINT16 data);
private:
enum { BUFFER_SIZE = 32768 };
@ -36,6 +40,7 @@ private:
UINT16 cur_iv;
UINT8 counter;
bool encryption;
bool cfi_mode;
void enc_init();
void enc_reset();

View File

@ -5208,14 +5208,14 @@ mvsc2 // 2000.03 Marvel Vs. Capcom 2 New Age of Heroes (Rev A)
smarinef // 2000.03 Sega Marine Fishing
wldkicks // 2000.03 World Kicks (WK2 Ver. A)
wldkicksa // 2000.03 World Kicks (WK3 Ver. A)
wldkicksb // 2000.03 World Kicks (WK1 Ver. A)
wldkicksb // 2000.03 World Kicks PCB (WKC1 Ver. A)
pstone2 // 2000.04 Power Stone 2
toukon4 // 2000.04 Shin Nihon Prowrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)
qmegamis // 2000.05 Quiz Ah Megamisama
derbyo2k // 2000.06 Derby Owners Club 2000 Ver.2 (Rev A)
starhrse // 2000.?? Star Horse (big screens)
starhrct // 2000.?? Star Horse (server)
starhrcl // 2000.?? Star Horse (client)
starhrse // 2000.?? Star Horse (big screens)
starhrct // 2000.?? Star Horse (server)
starhrcl // 2000.?? Star Horse (client)
vonot // 2000.06 Virtual-on Oratorio Tangram M.S.B.S. Ver.5.66 2000 Edition
ggx // 2000.07 Guilty Gear X
slasho // 2000.07 Slashout
@ -5230,8 +5230,8 @@ deathcox // 2000.10 Death Crimson OX
cspike // 2000.10 Gun Spike / Cannon Spike
sstrkfgt // 2000.10 Sega Strike Fighter (Rev A)
confmiss // 2000.11 Confidential Mission // First GD-ROM game?
// 2000.11 Ninja Assault (NJA1 Ver. A)
// 2000.11 Ninja Assault (NJA2 Ver. A)
ninjaslt1 // 2000.11 Ninja Assault (NJA1 Ver. A)
ninjaslt2 // 2000.11 Ninja Assault (NJA2 Ver. A)
ninjaslt // 2000.11 Ninja Assault (NJA3 Ver. A)
ninjaslt4 // 2000.11 Ninja Assault (NJA4 Ver. A)
// 2000.11 Shakatto Tambourine (Rev B)
@ -5248,7 +5248,7 @@ f355twn2 // 2001.01 F355 Challenge 2 Twin
sfz3ugd // 2001.02 Street Fighter ZERO3 Upper
gundmgd // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (GD-ROM)
gundmct // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (cartridge)
// 2001.03 Star Horse Progress (Rev A)
starhrsp // 2001.03 Star Horse Progress (Rev A)
dygolf // 2001.04 Dynamic Golf / Virtua Golf (Rev A)
// 2001.04 Shakatto Tambourine Motto Norinori Shinkyoku Tsuika
shaktmsp // 2001.04 Shakatto Tambourine 2K1 SPR
@ -5279,7 +5279,7 @@ drbyocwc // 2001.?? Derby Owners Club World Edition (Rev. C)
derbyocw // 2001.?? Derby Owners Club World Edition (Rev. D)
shootplm // 2001.?? Shootout Pool Medal
// 2001.?? Star Horse 2001
hopper // 2002.?? SWP Hopper Board
hopper // 2002.?? SWP Hopper Board
vathlete // 2002.03 Virtua Athletics / Virtua Athlete
luptype // 2002.04 Lupin The Third - The Typing (Rev A)
cleoftp // 2002.05 Cleopatra Fortune Plus
@ -5287,7 +5287,7 @@ ggxx // 2002.05 Guilty Gear XX
mok // 2002.05 The Maze of the Kings
chocomk // 2002.06 Musapey's Choco Marker (Rev A)
mazan // 2002.07 Mazan : Flash of the Blade (MAZ2 Ver. A)
// 2002.07 Mazan : Flash of the Blade (MAZ3 Ver. A)
mazana // 2002.07 Mazan : Flash of the Blade (MAZ3 Ver. A)
// 2002.09 Yonin Uchi Mahjong MJ
azumanga // 2002.12 Azumanga Daiou Puzzle Bobble
moeru // 2002.12 Moeru Casinyo
@ -5326,11 +5326,12 @@ undefeat // 2005.10 Under Defeat
radirgya // 2005.12 Radirgy (Rev A)
// 2005.?? Dragon Treasure 3 (Rev A)
// 2005.?? ExZeus
// 2005.?? Mushiking The King Of Beetles II ENG
mushik2e // 2005.?? Mushiking The King Of Beetles II ENG
mushi2ea // 2005.?? Mushiking The King Of Beetles II ENG
// 2005.?? MushiKing The King Of Beetle III
kurucham // 2006.03 Kurukuru Chameleon
trgheart // 2006.05 Trigger Heart Exelica (Rev A)
// 2006.07 Touch de Zunou
zunou // 2006.07 Touch de Zunou
senkosp // 2006.08 Senkou no Rondo SP
jingystm // 2006.09 Jingi Storm
karous // 2006.11 Karous
@ -5343,7 +5344,7 @@ takoron // 2006.12.16 Noukone Puzzle Takoron // L
ngdup23a // DIMM Firmware Updater (Rev A)
ngdup23c // DIMM Firmware Updater (Rev C)
ngdup23e // DIMM Firmware Updater (Rev E)
ndcfboxa // DIMM Firmware Updater for CF-BOX (Rev A)
ndcfboxa // DIMM Firmware Updater for CF-BOX (Rev A)
// Releases below use flash/mask ROMs like older NAOMI titles, not GD-ROM as GD-ROM Hardware (Drives and Discs) were no longer being produced.
pokasuka // 2007.07 Pokasuka Ghost!
@ -5352,10 +5353,10 @@ asndynmt // 2007.07 Dynamite Deka EX - Asian dynamite
// 2007.09 Rhythm Tengoku
ausfache // 2008.02 Akatsuki Denkou Senki Ausf.Achse
illvelo // 2008.06 Illvelo (Illmatic Envelope)
// 2008.07 Mamoru-kun wa Norowarete Shimatta!
mamonoro // 2008.07 Mamoru-kun wa Norowarete Shimatta!
mbaa // 2008.09 Melty Blood Actress Again
// 2008.12 Melty Blood Actress Again Ver.A
// 2009.06 Radirgy Noa
mbaaa // 2008.12 Melty Blood Actress Again Ver.A
radirgyn // 2009.06 Radirgy Noa
// 2009.?? Project Cerberus (planned to be released in 2009)
// NAOMI based (System SP)
@ -5375,7 +5376,7 @@ vstrik3 // 2001.04 Virtua Striker 3 Ver. 2002 (GD-ROM)
vstrik3cb // 2001.04 Virtua Striker 3 (Rev B) (cartridge)
vstrik3c // 2001.04 Virtua Striker 3 (Rev C) (cartridge)
wldrider // 2001.05 Wild Riders
// 2001.06 Club Kart
clubkrte // 2001.06 Club Kart
beachspi // 2001.07 Beach Spikers
vf4cart // 2001.08.02 Virtua Fighter 4 (cartridge)
vf4 // 2001.08.02 Virtua Fighter 4 (GD-ROM)
@ -5392,16 +5393,16 @@ initdv2j // 2002.12 Initial D Arcade Stage Ver. 2 (Japan) (Rev B)
initdv2jo // 2002.12 Initial D Arcade Stage Ver. 2 (Japan)
initdv2e // 2002.12 Initial D Arcade Stage Ver. 2 (export)
vf4evo // 2002.12 Virtua Fighter 4 Evolution Ver.B
clubkrte // 2002.?? Club Kart: European Session
// 2002.?? Club Kart: European Session
initdexp // 2002.?? Initial D Arcade Stage (Export)
// 2002.?? Sega Driving Simulator
// 2003.03 World Club Champion Football Serie A 2001-2002 Ver.2
// 2003.09 World Club Champion Football Serie A 2002-2003
// 2003.?? Club Kart Cycraft Edition
clubkprz // 2003.?? Club Kart Prize
clubkprz // 2003.?? Club Kart Prize
initdv3j // 2004.01 Initial D Arcade Stage Ver. 3 (Japan) (Rev C)
initdv3jb // 2004.01 Initial D Arcade Stage Ver. 3 (Japan) (Rev B)
clubkpzb // 2004.?? Club Kart Prize Ver. B (strings in the EPROM indicate a build date of Jan. 23, 2004 for the game's program)
clubkpzb // 2004.?? Club Kart Prize Ver. B (strings in the EPROM indicate a build date of Jan. 23, 2004 for the game's program)
initdv3e // 2004.05 Initial D Arcade Stage Ver. 3 (Export)
// 2004.06 World Club Champion Football Serie A 2002-2003 Ver.2
// 2004.07 Virtua Fighter 4 Final Tuned