Naomi improvements [Samuele Zannoli]

This patch implements a "plug-in board" device for the Naomi.
It represents the rom boards for the various games and the dimm board for the gdrom.

Now the dimm board part contains only a routine to load the "rom file" from the gdrom chd, but in the future it will be fully implemented with its own sh4 processor, security chip and so on.

Extracted .rom files are no longer needed, rom file is extracted in code from the CHD.


(needs a little cleanup as it was based on pre-aaron 'change everything' code, but it's functional)
This commit is contained in:
davidhay 2008-11-16 17:20:03 +00:00
parent 893b21cb33
commit c7fac3d9db
4 changed files with 137 additions and 293 deletions

View File

@ -655,20 +655,18 @@ Notes:
#include "driver.h" #include "driver.h"
#include "video/generic.h" #include "video/generic.h"
#include "machine/eeprom.h" #include "machine/eeprom.h"
#include "machine/x76f100.h" #include "naomibd.h"
#include "cpu/sh4/sh4.h" #include "cpu/sh4/sh4.h"
#include "cpu/arm7/arm7core.h" #include "cpu/arm7/arm7core.h"
#include "sound/aica.h" #include "sound/aica.h"
#include "dc.h" #include "dc.h"
#define CPU_CLOCK (200000000) #define CPU_CLOCK (200000000)
static UINT32 *dc_sound_ram;
/* MD2 MD1 MD0 MD6 MD4 MD3 MD5 MD7 MD8 */ /* MD2 MD1 MD0 MD6 MD4 MD3 MD5 MD7 MD8 */
static const struct sh4_config sh4cpu_config = { 1, 0, 1, 0, 0, 0, 1, 1, 0, CPU_CLOCK }; static const struct sh4_config sh4cpu_config = { 1, 0, 1, 0, 0, 0, 1, 1, 0, CPU_CLOCK };
static UINT32 *dc_sound_ram;
static UINT32 rom_offset, rom_offset_flags, dma_count;
UINT32 dma_offset;
static INTERRUPT_GEN( naomi_vblank ) static INTERRUPT_GEN( naomi_vblank )
{ {
dc_vblank(device->machine); dc_vblank(device->machine);
@ -696,180 +694,11 @@ static WRITE64_HANDLER( naomi_unknown1_w )
} }
/* /*
Naomi ROM board info from ElSemi: * Non-volatile memories
NAOMI_ROM_OFFSETH = 0x5f7000,
NAOMI_ROM_OFFSETL = 0x5f7004,
NAOMI_ROM_DATA = 0x5f7008,
NAOMI_DMA_OFFSETH = 0x5f700C,
NAOMI_DMA_OFFSETL = 0x5f7010,
NAOMI_DMA_COUNT = 0x5f7014,
NAOMI_COMM_OFFSET = 0x5F7050,
NAOMI_COMM_DATA = 0x5F7054,
NAOMI_BOARDID_WRITE = 0x5F7078,
NAOMI_BOARDID_READ = 0x5F707C,
each port is 16 bit wide, to access the rom in PIO mode, just set an offset in ROM_OFFSETH/L and read from ROM_DATA, each access reads 2 bytes and increases the offset by 2.
the BOARDID regs access the password protected eeprom in the game board. the main board eeprom is read through port 0x1F800030
To access the board using DMA, use the DMA_OFFSETL/H. DMA_COUNT is in units of 0x20 bytes. Then trigger a GDROM DMA request.
Dimm board registers (add more information if you find it):
Name: Naomi Dimm Bd.
NAOMI_DIMM_COMMAND = 5f703c 14000014 (16 bit):
if bits all 1 no dimm board present and other registers not used
bit 15: during an interrupt is 1 if the dimm board has a command to be executed
bit 14-9: 6 bit command number (naomi bios understands 0 1 3 4 5 6 8 9 a)
bit 7-0: higher 8 bits of 24 bit offset parameter
NAOMI_DIMM_OFFSETL = 5f7040 14000018 (16 bit):
bit 15-0: lower 16 bits of 24 bit offset parameter
NAOMI_DIMM_PARAMETERL = 5f7044 1400001c (16 bit)
NAOMI_DIMM_PARAMETERH = 5f7048 14000020 (16 bit)
NAOMI_DIMM_STATUS = 5f704c 14000024 (16 bit):
bit 0: when 0 signal interrupt from naomi to dimm board
bit 8: when 0 signal interrupt from dimm board to naomi
*/ */
// NOTE: all accesses are 16 or 32 bits wide but only 16 bits are valid
static READ64_HANDLER( naomi_rom_board_r )
{
UINT8 *ROM = (UINT8 *)memory_region(space->machine, "user1");
// ROM_DATA
if ((offset == 1) && ACCESSING_BITS_0_15)
{
UINT64 ret;
ret = (UINT64)(ROM[rom_offset] | (ROM[rom_offset+1]<<8));
rom_offset += 2;
return ret;
}
else if ((offset == 7) && ACCESSING_BITS_32_47)
{
// 5f703c
mame_printf_verbose("ROM: read 5f703c\n");
return (UINT64)0xffff << 32;
}
else if ((offset == 8) && ACCESSING_BITS_0_15)
{
// 5f7040
mame_printf_verbose("ROM: read 5f7040\n");
return 0;
}
else if ((offset == 8) && ACCESSING_BITS_32_47)
{
// 5f7044
mame_printf_verbose("ROM: read 5f7044\n");
return 0;
}
else if ((offset == 9) && ACCESSING_BITS_0_15)
{
// 5f7048
mame_printf_verbose("ROM: read 5f7048\n");
return 0;
}
else if ((offset == 9) && ACCESSING_BITS_32_47)
{
// 5f704c
mame_printf_verbose("ROM: read 5f704c\n");
return (UINT64)1 << 32;
}
else if ((offset == 15) && ACCESSING_BITS_32_47) // boardid read
{
UINT64 ret;
ret = x76f100_sda_read( 0 ) << 15;
return ret << 32;
}
else
{
mame_printf_verbose("ROM: read mask %llx @ %x (PC=%x)\n", mem_mask, offset, cpu_get_pc(space->cpu));
}
return U64(0xffffffffffffffff);
}
static WRITE64_HANDLER( naomi_rom_board_w )
{
if ((offset == 1) && (ACCESSING_BITS_32_47 || ACCESSING_BITS_32_63))
{
// DMA_OFFSETH
dma_offset &= 0xffff;
dma_offset |= (data >> 16) & 0x1fff0000;
}
else if ((offset == 2) && ACCESSING_BITS_0_15)
{
// DMA_OFFSETL
dma_offset &= 0xffff0000;
dma_offset |= (data & 0xffff);
}
else if ((offset == 0) && ACCESSING_BITS_0_15)
{
// ROM_OFFSETH
rom_offset &= 0xffff;
rom_offset |= (data & 0x1fff)<<16;
rom_offset_flags = data >> 13;
}
else if ((offset == 0) && ACCESSING_BITS_32_47)
{
// ROM_OFFSETL
rom_offset &= 0xffff0000;
rom_offset |= ((data >> 32) & 0xffff);
}
else if ((offset == 1) && ACCESSING_BITS_0_15)
{
// ROM_DATA
// Doa2 writes here (16 bit decryption key ?)
mame_printf_verbose("ROM: write %llx to 5f7008 (PC=%x)\n", data, cpu_get_pc(space->cpu));
}
else if ((offset == 15) && ACCESSING_BITS_0_15)
{
// NAOMI_BOARDID_WRITE
x76f100_cs_write(0, (data >> 2) & 1 );
x76f100_rst_write(0, (data >> 3) & 1 );
x76f100_scl_write(0, (data >> 1) & 1 );
x76f100_sda_write(0, (data >> 0) & 1 );
}
else if ((offset == 2) && ACCESSING_BITS_32_63)
{
// NAOMI_DMA_COUNT
dma_count = data >> 32;
}
else if ((offset == 7) && ACCESSING_BITS_32_47)
{
mame_printf_verbose("ROM: write 5f703c\n");
}
else if ((offset == 8) && ACCESSING_BITS_0_15)
{
mame_printf_verbose("ROM: write 5f7040\n");
}
else if ((offset == 8) && ACCESSING_BITS_32_47)
{
mame_printf_verbose("ROM: write 5f7044\n");
}
else if ((offset == 9) && ACCESSING_BITS_0_15)
{
mame_printf_verbose("ROM: write 5f7048\n");
}
else if ((offset == 9) && ACCESSING_BITS_32_47)
{
mame_printf_verbose("ROM: write 5f704c\n");
}
else
{
mame_printf_verbose("ROM: write %llx to %x, mask %llx (PC=%x)\n", data, offset, mem_mask, cpu_get_pc(space->cpu));
}
}
static NVRAM_HANDLER( naomi_eeproms ) static NVRAM_HANDLER( naomi_eeproms )
{ {
static UINT8 eeprom_romboard[20+48] = {0x19,0x00,0xaa,0x55,0,0,0,0,0,0,0,0,0x69,0x79,0x68,0x6b,0x74,0x6d,0x68,0x6d};
if (read_or_write) if (read_or_write)
/*eeprom_save(file)*/; /*eeprom_save(file)*/;
else else
@ -879,8 +708,6 @@ static NVRAM_HANDLER( naomi_eeproms )
eeprom_load(file); eeprom_load(file);
else*/ else*/
eeprom_set_data((UINT8 *)"\011\241 0000000000000000", 48); // 2*checksum 30*unknown 16*serial eeprom_set_data((UINT8 *)"\011\241 0000000000000000", 48); // 2*checksum 30*unknown 16*serial
x76f100_init( 0, eeprom_romboard );
memcpy(eeprom_romboard+20,"\241\011 0000000000000000",48);
} }
} }
@ -903,12 +730,15 @@ static WRITE64_HANDLER( eeprom_93c46a_w )
eeprom_set_clock_line((data & 0x4) ? ASSERT_LINE : CLEAR_LINE); eeprom_set_clock_line((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
} }
static ADDRESS_MAP_START( naomi_map, ADDRESS_SPACE_PROGRAM, 64 ) /*
* Common address map for Naomi 1, Naomi GD-Rom, Naomi 2, Atomiswave ...
*/
static ADDRESS_MAP_START( naomi_base_map, ADDRESS_SPACE_PROGRAM, 64 )
AM_RANGE(0x00000000, 0x001fffff) AM_ROM // BIOS AM_RANGE(0x00000000, 0x001fffff) AM_ROM // BIOS
AM_RANGE(0x00200000, 0x00207fff) AM_RAM // bios uses it (battery backed ram ?) AM_RANGE(0x00200000, 0x00207fff) AM_RAM // bios uses it (battery backed ram ?)
AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w ) AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w )
AM_RANGE(0x005f6c00, 0x005f6cff) AM_READWRITE( dc_maple_r, dc_maple_w ) AM_RANGE(0x005f6c00, 0x005f6cff) AM_READWRITE( dc_maple_r, dc_maple_w )
AM_RANGE(0x005f7000, 0x005f70ff) AM_READWRITE( naomi_rom_board_r, naomi_rom_board_w )
AM_RANGE(0x005f7400, 0x005f74ff) AM_READWRITE( dc_g1_ctrl_r, dc_g1_ctrl_w ) AM_RANGE(0x005f7400, 0x005f74ff) AM_READWRITE( dc_g1_ctrl_r, dc_g1_ctrl_w )
AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE( dc_g2_ctrl_r, dc_g2_ctrl_w ) AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE( dc_g2_ctrl_r, dc_g2_ctrl_w )
AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE( pvr_ctrl_r, pvr_ctrl_w ) AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE( pvr_ctrl_r, pvr_ctrl_w )
@ -928,26 +758,69 @@ static ADDRESS_MAP_START( naomi_map, ADDRESS_SPACE_PROGRAM, 64 )
AM_RANGE(0xa0000000, 0xa01fffff) AM_ROM AM_REGION("main", 0) AM_RANGE(0xa0000000, 0xa01fffff) AM_ROM AM_REGION("main", 0)
ADDRESS_MAP_END ADDRESS_MAP_END
/*
* Naomi 1 address map
*/
static ADDRESS_MAP_START( naomi_map, ADDRESS_SPACE_PROGRAM, 64 )
AM_RANGE(0x00000000, 0x001fffff) AM_ROM // BIOS
AM_RANGE(0x00200000, 0x00207fff) AM_RAM // bios uses it (battery backed ram ?)
AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w )
AM_RANGE(0x005f6c00, 0x005f6cff) AM_READWRITE( dc_maple_r, dc_maple_w )
AM_RANGE(0x005f7400, 0x005f74ff) AM_READWRITE( dc_g1_ctrl_r, dc_g1_ctrl_w )
AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE( dc_g2_ctrl_r, dc_g2_ctrl_w )
AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE( pvr_ctrl_r, pvr_ctrl_w )
AM_RANGE(0x005f8000, 0x005f9fff) AM_READWRITE( pvr_ta_r, pvr_ta_w )
AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE( dc_modem_r, dc_modem_w )
AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE( dc_aica_reg_r, dc_aica_reg_w )
AM_RANGE(0x00710000, 0x0071000f) AM_READWRITE( dc_rtc_r, dc_rtc_w )
AM_RANGE(0x00800000, 0x00ffffff) AM_READWRITE( naomi_arm_r, naomi_arm_w ) // sound RAM (8 MB)
AM_RANGE(0x0103ff00, 0x0103ffff) AM_READWRITE( naomi_unknown1_r, naomi_unknown1_w ) // bios uses it, actual start and end addresses not known
AM_RANGE(0x04000000, 0x04ffffff) AM_RAM AM_SHARE(2) AM_BASE( &dc_texture_ram ) // texture memory 64 bit access
AM_RANGE(0x05000000, 0x05ffffff) AM_RAM AM_SHARE(2) // mirror of texture RAM 32 bit access
AM_RANGE(0x0c000000, 0x0dffffff) AM_RAM
AM_RANGE(0x10000000, 0x107fffff) AM_WRITE( ta_fifo_poly_w )
AM_RANGE(0x10800000, 0x10ffffff) AM_WRITE( ta_fifo_yuv_w )
AM_RANGE(0x11000000, 0x11ffffff) AM_RAM AM_SHARE(2) // another mirror of texture memory
AM_RANGE(0x13000000, 0x13ffffff) AM_RAM AM_SHARE(2) // another mirror of texture memory
AM_RANGE(0xa0000000, 0xa01fffff) AM_ROM AM_REGION("main", 0)
AM_RANGE(0x005f7000, 0x005f70ff) AM_DEVREADWRITE(NAOMI_BOARD, "rom_board", naomibd_r, naomibd_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( naomi_port, ADDRESS_SPACE_IO, 64 ) static ADDRESS_MAP_START( naomi_port, ADDRESS_SPACE_IO, 64 )
AM_RANGE(0x00, 0x0f) AM_READWRITE(eeprom_93c46a_r, eeprom_93c46a_w) AM_RANGE(0x00, 0x0f) AM_READWRITE(eeprom_93c46a_r, eeprom_93c46a_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static READ32_HANDLER( test1 )
{
return -1;
}
/*
* Aica
*/
static void aica_irq(running_machine *machine, int irq) static void aica_irq(running_machine *machine, int irq)
{ {
cpu_set_input_line(machine->cpu[1], ARM7_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE); cpu_set_input_line(machine->cpu[1], ARM7_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
} }
static const aica_interface aica_config =
{
0,
aica_irq
};
static ADDRESS_MAP_START( dc_audio_map, ADDRESS_SPACE_PROGRAM, 32 ) static ADDRESS_MAP_START( dc_audio_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_BASE( &dc_sound_ram ) /* shared with SH-4 */ AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_BASE( &dc_sound_ram ) /* shared with SH-4 */
AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w) AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w)
AM_RANGE(0x00808000, 0x008080ff) AM_READ( test1 ) // for bug (?) in sound bios
ADDRESS_MAP_END ADDRESS_MAP_END
/*
* Input ports
*/
static INPUT_PORTS_START( naomi ) static INPUT_PORTS_START( naomi )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service")
@ -978,19 +851,17 @@ static INPUT_PORTS_START( naomi )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED(dc_coin_slots_callback, &dc_coin_counts[1]) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED(dc_coin_slots_callback, &dc_coin_counts[1])
INPUT_PORTS_END INPUT_PORTS_END
static const aica_interface aica_config =
{
0,
aica_irq
};
static MACHINE_RESET( naomi ) static MACHINE_RESET( naomi )
{ {
MACHINE_RESET_CALL(dc); MACHINE_RESET_CALL(dc);
aica_set_ram_base(0, dc_sound_ram, 8*1024*1024); aica_set_ram_base(0, dc_sound_ram, 8*1024*1024);
} }
static MACHINE_DRIVER_START( naomi ) /*
* Common for Naomi 1, Naomi GD-Rom, Naomi 2, Atomiswave ...
*/
static MACHINE_DRIVER_START( naomi_base )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("main", SH4, CPU_CLOCK) // SH4!!! MDRV_CPU_ADD("main", SH4, CPU_CLOCK) // SH4!!!
MDRV_CPU_CONFIG(sh4cpu_config) MDRV_CPU_CONFIG(sh4cpu_config)
@ -1026,6 +897,24 @@ static MACHINE_DRIVER_START( naomi )
MDRV_SOUND_ROUTE(0, "right", 2.0) MDRV_SOUND_ROUTE(0, "right", 2.0)
MACHINE_DRIVER_END MACHINE_DRIVER_END
/*
* Naomi 1
*/
static MACHINE_DRIVER_START( naomi )
MDRV_IMPORT_FROM(naomi_base)
MDRV_NAOMI_ROM_BOARD_ADD("rom_board", "user1")
MACHINE_DRIVER_END
/*
* Naomi 1 GD-Rom
*/
static MACHINE_DRIVER_START( naomigd )
MDRV_IMPORT_FROM(naomi_base)
MDRV_NAOMI_DIMM_BOARD_ADD("rom_board", "gdrom", "user1", "picreturn")
MACHINE_DRIVER_END
#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ #define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios+1)) /* Note '+1' */ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios+1)) /* Note '+1' */
@ -2809,13 +2698,6 @@ void naomi_write_keyfile(void)
extern void naomi_game_decrypt(UINT64 key, UINT8* region, int length); extern void naomi_game_decrypt(UINT64 key, UINT8* region, int length);
/* All games have the regional titles at the start of the IC22 rom in the following order /* All games have the regional titles at the start of the IC22 rom in the following order
JAPAN JAPAN
@ -2872,31 +2754,10 @@ GAME( 2001, hod2bios, 0, naomi, naomi, 0, ROT0, "Sega",
static DRIVER_INIT( ngdkey )
{
UINT8* picdata = memory_region(machine,"picreturn");
UINT64 key;
key =(((UINT64)picdata[0x31] << 56) |
((UINT64)picdata[0x32] << 48) |
((UINT64)picdata[0x33] << 40) |
((UINT64)picdata[0x34] << 32) |
((UINT64)picdata[0x35] << 24) |
((UINT64)picdata[0x36] << 16) |
((UINT64)picdata[0x37] << 8) |
((UINT64)picdata[0x29] << 0));
printf("key is %08x%08x\n", (UINT32)((key & 0xffffffff00000000ULL)>>32), (UINT32)(key & 0x00000000ffffffffULL));
naomi_game_decrypt( key, memory_region(machine,"user1"), memory_region_length(machine,"user1"));
}
ROM_START( gundmgd ) ROM_START( gundmgd )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xa000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD_OPTIONAL("gdmgd_sl.bin", 0x0000000, 0xa000000, CRC(d07ee020) SHA1(751033d48e021908958757125cf3b96a89d0e765) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0001", 0, SHA1(f525111e2762e5895fd0016a9bd41210c1125499) MD5(dcba598e76646a5a6b6e6da70552a7c5) ) DISK_IMAGE_READONLY( "gdl-0001", 0, SHA1(f525111e2762e5895fd0016a9bd41210c1125499) MD5(dcba598e76646a5a6b6e6da70552a7c5) )
@ -2911,8 +2772,7 @@ ROM_END
ROM_START( sfz3ugd ) ROM_START( sfz3ugd )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xac00000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD_OPTIONAL("zero3rom.bin", 0x0000000, 0xac00000, CRC(4eabda58) SHA1(e70db0e93c821838c77510fd47c91f0c4cfb09c9) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0002", 0, SHA1(6e7cb0df5feea41ae0b5eb72a92adcd8966595dc) MD5(6340b2527673a8cf387dcda52ecae0ca) ) DISK_IMAGE_READONLY( "gdl-0002", 0, SHA1(6e7cb0df5feea41ae0b5eb72a92adcd8966595dc) MD5(6340b2527673a8cf387dcda52ecae0ca) )
@ -2926,8 +2786,7 @@ ROM_END
ROM_START( cvsgd ) ROM_START( cvsgd )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x7800000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD_OPTIONAL("snkgd_sl.bin", 0x0000000, 0x7800000, CRC(83ec3894) SHA1(d07271d964bf6421ea9f13e10ecec57c6e995b2e) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0004", 0, SHA1(8f8651527463aa01d40c280c0d9b03b7a0650a32) MD5(2d17eaf881c06bd95847e54878bc2ba9) ) DISK_IMAGE_READONLY( "gdl-0004", 0, SHA1(8f8651527463aa01d40c280c0d9b03b7a0650a32) MD5(2d17eaf881c06bd95847e54878bc2ba9) )
@ -2942,8 +2801,7 @@ ROM_END
ROM_START( gundmxgd ) ROM_START( gundmxgd )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xc800000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD_OPTIONAL("gdmgd_sl.bin", 0x0000000, 0xc800000, CRC(322e503c) SHA1(10a0e3e079d9724e6bc2d4916a4f64384d00d202) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0006", 0, SHA1(b95bc07e61e57a62e276ba7fef0ae9a5c19667d9) MD5(90b1980605e7f53b38292ae32d547c8b) ) DISK_IMAGE_READONLY( "gdl-0006", 0, SHA1(b95bc07e61e57a62e276ba7fef0ae9a5c19667d9) MD5(90b1980605e7f53b38292ae32d547c8b) )
@ -2958,8 +2816,7 @@ ROM_END
ROM_START( cvs2gd ) ROM_START( cvs2gd )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x9800000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("snkgd_sl.bin", 0x0000000, 0x9800000, CRC(f153421d) SHA1(0c2b935ae3cfb6c85410a209fec4eab497066d84) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0007a", 0, SHA1(e8f199f2743a63765bcbcd533bbe5eed82f959a8) MD5(1f434e6f610987987d1d130e454f5c74) ) DISK_IMAGE_READONLY( "gdl-0007a", 0, SHA1(e8f199f2743a63765bcbcd533bbe5eed82f959a8) MD5(1f434e6f610987987d1d130e454f5c74) )
@ -2973,8 +2830,7 @@ ROM_END
ROM_START( ikaruga ) ROM_START( ikaruga )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x9800000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("ikaruga.bin", 0x0000000, 0x2000000, CRC(e0369676) SHA1(87f1d01ed81a612b44ed2e1bc48098c3ba92c238) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0010", 0, SHA1(3b853be7208f523100690e12a661173d023af9c1) MD5(83f1877b979b0e5fd77ebfa1ddd9fd56) ) DISK_IMAGE_READONLY( "gdl-0010", 0, SHA1(3b853be7208f523100690e12a661173d023af9c1) MD5(83f1877b979b0e5fd77ebfa1ddd9fd56) )
@ -2989,8 +2845,7 @@ ROM_END
ROM_START( ggxx ) ROM_START( ggxx )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xf000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("ggx2.bin", 0x0000000, 0xf000000, CRC(666676ee) SHA1(24302e6f10e0d4d41f432cabf9d2743c0aa8fa7c) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0011", 0, SHA1(c08a19acb5641d2fd14b54cc149459c345dae013) MD5(25ab6d42bf07dd26e7033cf201322d9c) ) DISK_IMAGE_READONLY( "gdl-0011", 0, SHA1(c08a19acb5641d2fd14b54cc149459c345dae013) MD5(25ab6d42bf07dd26e7033cf201322d9c) )
@ -3005,8 +2860,7 @@ ROM_END
ROM_START( chocomk ) ROM_START( chocomk )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x3f1f000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("typ.bin", 0x0000000, 0x3f1f000, CRC(d3976ae9) SHA1(764675d0b612b856dab95caa3000b31206439db4) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0014a", 0, SHA1(ee71e76f136b1a25855233a614d5c60a6a3e587d) MD5(1e5a028b0ae5cf3c5602cdc657fa2bc4) ) DISK_IMAGE_READONLY( "gdl-0014a", 0, SHA1(ee71e76f136b1a25855233a614d5c60a6a3e587d) MD5(1e5a028b0ae5cf3c5602cdc657fa2bc4) )
@ -3021,8 +2875,7 @@ ROM_END
ROM_START( quizqgd ) ROM_START( quizqgd )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("game.bin", 0x0000000, 0x9000000, CRC(0075dd46) SHA1(8f0cb3f8bce492c8d2bdec607a4b95d36ddea404) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0017", 0, SHA1(b6f3fbc81d9aea18551134b93ba3b612254bbc43) MD5(af4be08bf65cbddf2177ccf838c0df20) ) DISK_IMAGE_READONLY( "gdl-0017", 0, SHA1(b6f3fbc81d9aea18551134b93ba3b612254bbc43) MD5(af4be08bf65cbddf2177ccf838c0df20) )
@ -3036,8 +2889,7 @@ ROM_END
ROM_START( ggxxrl ) ROM_START( ggxxrl )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xf000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("ggx2.bin", 0x0000000, 0xf000000, CRC(96ee0174) SHA1(3063682aa31b983fc8dcc2a86bf57dc50da5d904) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0019a", 0, SHA1(50ec9bba5a7ba71f8543763cb139bab46dc487a5) MD5(b09c865e3e06e6e4467acf45b04e9caa) ) DISK_IMAGE_READONLY( "gdl-0019a", 0, SHA1(50ec9bba5a7ba71f8543763cb139bab46dc487a5) MD5(b09c865e3e06e6e4467acf45b04e9caa) )
@ -3051,8 +2903,7 @@ ROM_END
ROM_START( shikgam2 ) ROM_START( shikgam2 )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x704e000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("game.bin", 0x0000000, 0x704e000, CRC(f658311f) SHA1(d4b780d5954dd41bfe6ceff5fb358d94bc836126) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0021", 0, SHA1(ca6a9f78b2f6b18be3fb926ebcd20c2e90923882) MD5(ba448900dd5cbc9f1f75f285f5d72231) ) DISK_IMAGE_READONLY( "gdl-0021", 0, SHA1(ca6a9f78b2f6b18be3fb926ebcd20c2e90923882) MD5(ba448900dd5cbc9f1f75f285f5d72231) )
@ -3067,8 +2918,7 @@ ROM_END
ROM_START( meltybld ) ROM_START( meltybld )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xdc2c000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("mel.bin", 0x0000000, 0xdc2c000, CRC(2af7db27) SHA1(2569b6f84be411928764fb513503dfe116f957f5) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0028c", 0, SHA1(bbe95fd6bb39a33e979a0d9d8a63c0f2df1e9e96) MD5(b3318abacfea682605aaa24c756f225d) ) DISK_IMAGE_READONLY( "gdl-0028c", 0, SHA1(bbe95fd6bb39a33e979a0d9d8a63c0f2df1e9e96) MD5(b3318abacfea682605aaa24c756f225d) )
@ -3084,8 +2934,7 @@ ROM_END
ROM_START( senko ) ROM_START( senko )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xfe40000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("ronde.bin", 0x0000000, 0xfe40000, CRC(49bff4cb) SHA1(bd67522ed781cdd70b4c652cbb1befddb395a4b7) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0030a", 0, SHA1(bb9727f69f7e5452e09b151c1198d006a81aeb0e) MD5(12885cd794d8a5a839699aef4769b2dd) ) DISK_IMAGE_READONLY( "gdl-0030a", 0, SHA1(bb9727f69f7e5452e09b151c1198d006a81aeb0e) MD5(12885cd794d8a5a839699aef4769b2dd) )
@ -3101,8 +2950,7 @@ ROM_END
ROM_START( ss2005 ) ROM_START( ss2005 )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x5504800, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("sh2sl.bin", 0x0000000, 0x5504800, CRC(5c1d2394) SHA1(197cb74c00adb2acafa927045a2fa7b5730605c7) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0031a", 0, SHA1(09a47ce506b9696d7bdf4d7c95aa3182cc0d9efa) MD5(1a83930f2083397868172745d3ab2926) ) DISK_IMAGE_READONLY( "gdl-0031a", 0, SHA1(09a47ce506b9696d7bdf4d7c95aa3182cc0d9efa) MD5(1a83930f2083397868172745d3ab2926) )
@ -3119,8 +2967,7 @@ ROM_END
ROM_START( sprtjam ) ROM_START( sprtjam )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xb000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("rom.enc", 0x0000000, 0xb000000, CRC(1f6daa8d) SHA1(41c40da36c0448d0a8695fef2fd304b9caaf7562) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0003", 0, SHA1(bfabb0da1d4f0422e0b62d8a7bb67dbcdb0d5954) MD5(3a8d3cbc4067f9b5f50be9b9abdc689b) ) DISK_IMAGE_READONLY( "gds-0003", 0, SHA1(bfabb0da1d4f0422e0b62d8a7bb67dbcdb0d5954) MD5(3a8d3cbc4067f9b5f50be9b9abdc689b) )
@ -3135,8 +2982,7 @@ ROM_END
ROM_START( slashout ) ROM_START( slashout )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("slash.bin", 0x0000000, 0x9000000, CRC(e1f9320f) SHA1(09f1a69aee6e401acbe2099e10193d3fb575eeeb) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0004", 0, SHA1(ec1758f5ae359bcb3c66c7ce9ebcb7443c4fd967) MD5(f5228f26e661ab0cb67414f51fe1a5bc) ) DISK_IMAGE_READONLY( "gds-0004", 0, SHA1(ec1758f5ae359bcb3c66c7ce9ebcb7443c4fd967) MD5(f5228f26e661ab0cb67414f51fe1a5bc) )
@ -3151,8 +2997,7 @@ ROM_END
ROM_START( spkrbtl ) ROM_START( spkrbtl )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xb000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("spkb.bin", 0x0000000, 0xb000000, CRC(ca11d20e) SHA1(e2e2710a8c69eeb970e131be80e0ec19e91d90c6) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0005", 0, SHA1(ca6e7ed2e161acad8600898e1b83aded9bb31d3b) MD5(a8a05ce6ab7d9ea67e015cd4853a5b80) ) DISK_IMAGE_READONLY( "gds-0005", 0, SHA1(ca6e7ed2e161acad8600898e1b83aded9bb31d3b) MD5(a8a05ce6ab7d9ea67e015cd4853a5b80) )
@ -3167,8 +3012,7 @@ ROM_END
ROM_START( dygolf ) ROM_START( dygolf )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x6000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("game.enc", 0x0000000, 0x6000000, CRC(ab02d769) SHA1(3d96d43522357950a3928717464ecf854dd6e385) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0009", 0, SHA1(d58a42586c65dcb44282bf930631ea8b663c6aa7) MD5(e553e1811f28b67fd57fa8e34d978d87) ) DISK_IMAGE_READONLY( "gds-0009", 0, SHA1(d58a42586c65dcb44282bf930631ea8b663c6aa7) MD5(e553e1811f28b67fd57fa8e34d978d87) )
@ -3182,8 +3026,7 @@ ROM_END
ROM_START( wsbbgd ) ROM_START( wsbbgd )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0xa000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("wsb_sl.bin", 0x0000000, 0xa000000, CRC(e61f37f1) SHA1(ba7b97eec6df672b520c57422287f699438267c5) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0010", 0, SHA1(8ce36c9710a8d55e8c19d7f218500b7074b66dec) MD5(bfb8c5ead5ac9e2a82bca9114390a99f) ) DISK_IMAGE_READONLY( "gds-0010", 0, SHA1(8ce36c9710a8d55e8c19d7f218500b7074b66dec) MD5(bfb8c5ead5ac9e2a82bca9114390a99f) )
@ -3198,8 +3041,7 @@ ROM_END
ROM_START( vathlete ) ROM_START( vathlete )
NAOMIGD_BIOS NAOMIGD_BIOS
ROM_REGION( 0x7000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("va.bin", 0x0000000, 0x7000000, CRC(82992bf8) SHA1(1c36e1d8e5bf392b760c934b358963b92fc716cf) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0019", 0, SHA1(2167bbdde987c16949c5814ab7cff6eefd9f9326) MD5(67499591f2c61cda14fa581db9294315) ) DISK_IMAGE_READONLY( "gds-0019", 0, SHA1(2167bbdde987c16949c5814ab7cff6eefd9f9326) MD5(67499591f2c61cda14fa581db9294315) )
@ -3214,28 +3056,28 @@ ROM_END
GAME( 2001, naomigd, 0, naomi, naomi, 0, ROT0, "Sega", "Naomi GD-ROM Bios", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT ) GAME( 2001, naomigd, 0, naomi, naomi, 0, ROT0, "Sega", "Naomi GD-ROM Bios", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
// GDL-xxxx (licensed games?) // GDL-xxxx (licensed games?)
GAME( 200?, gundmgd, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Mobile Suit Gundam: Federation VS Zeon (GDL-0001)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, gundmgd, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Mobile Suit Gundam: Federation VS Zeon (GDL-0001)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, sfz3ugd, naomigd, naomi, naomi, ngdkey, ROT0, "Capcom", "Street Fighter Zero 3 Upper (GDL-0002)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, sfz3ugd, naomigd, naomigd, naomi, 0, ROT0, "Capcom", "Street Fighter Zero 3 Upper (GDL-0002)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, cvsgd, naomigd, naomi, naomi, ngdkey, ROT0, "Capcom", "Capcom vs SNK Millenium Fight 2000 Pro (GDL-0004)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, cvsgd, naomigd, naomigd, naomi, 0, ROT0, "Capcom", "Capcom vs SNK Millenium Fight 2000 Pro (GDL-0004)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, gundmxgd, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Mobile Suit Gundam: Federation VS Zeon DX (GDL-0006)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, gundmxgd, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Mobile Suit Gundam: Federation VS Zeon DX (GDL-0006)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, cvs2gd, naomigd, naomi, naomi, ngdkey, ROT0, "Capcom", "Capcom vs SNK 2 Millionaire Fighting 2001 (GDL-0007A)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, cvs2gd, naomigd, naomigd, naomi, 0, ROT0, "Capcom", "Capcom vs SNK 2 Millionaire Fighting 2001 (GDL-0007A)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 2001, ikaruga, naomigd, naomi, naomi, ngdkey, ROT270, "Treasure", "Ikaruga (GDL-0010)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 2001, ikaruga, naomigd, naomigd, naomi, 0, ROT270, "Treasure", "Ikaruga (GDL-0010)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, ggxx, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Guilty Gear XX (GDL-0011)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, ggxx, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Guilty Gear XX (GDL-0011)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, chocomk, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Musapey's Choco Marker (GDL-0014A)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, chocomk, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Musapey's Choco Marker (GDL-0014A)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, quizqgd, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Quiz Keitai Q mode (GDL-0017)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, quizqgd, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Quiz Keitai Q mode (GDL-0017)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, ggxxrl, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Guilty Gear XX #Reload (GDL-0019A)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, ggxxrl, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Guilty Gear XX #Reload (GDL-0019A)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, shikgam2, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Shikigami No Shiro II / The Castle of Shikigami II (GDL-0021)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, shikgam2, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Shikigami No Shiro II / The Castle of Shikigami II (GDL-0021)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 2004, meltybld, naomigd, naomi, naomi, ngdkey, ROT0, "Ecole", "Melty Blood Act Cadenza (GDL-0028C)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 2004, meltybld, naomigd, naomigd, naomi, 0, ROT0, "Ecole", "Melty Blood Act Cadenza (GDL-0028C)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, senko, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Senko No Ronde (GDL-0030A)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, senko, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Senko No Ronde (GDL-0030A)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 2005, ss2005, naomigd, naomi, naomi, ngdkey, ROT0, "unknown", "Super Shanghai 2005 (GDL-0031A)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 2005, ss2005, naomigd, naomigd, naomi, 0, ROT0, "unknown", "Super Shanghai 2005 (GDL-0031A)", GAME_NO_SOUND|GAME_NOT_WORKING )
// GDS-xxxx (first party games?) // GDS-xxxx (first party games?)
GAME( 200?, sprtjam, naomigd, naomi, naomi, ngdkey, ROT0, "Sega", "Sports Jam (GDS-0003)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, sprtjam, naomigd, naomigd, naomi, 0, ROT0, "Sega", "Sports Jam (GDS-0003)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, slashout, naomigd, naomi, naomi, ngdkey, ROT0, "Sega", "Slashout (GDS-0004)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, slashout, naomigd, naomigd, naomi, 0, ROT0, "Sega", "Slashout (GDS-0004)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, spkrbtl, naomigd, naomi, naomi, ngdkey, ROT0, "Sega", "Spikers Battle (GDS-0005)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, spkrbtl, naomigd, naomigd, naomi, 0, ROT0, "Sega", "Spikers Battle (GDS-0005)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, dygolf, naomigd, naomi, naomi, ngdkey, ROT0, "Sega", "Virtua Golf / Dynamic Golf (GDS-0009)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, dygolf, naomigd, naomigd, naomi, 0, ROT0, "Sega", "Virtua Golf / Dynamic Golf (GDS-0009)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, wsbbgd, naomigd, naomi, naomi, ngdkey, ROT0, "Sega", "World Series Baseball (GDS-0010)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, wsbbgd, naomigd, naomigd, naomi, 0, ROT0, "Sega", "World Series Baseball (GDS-0010)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, vathlete, naomigd, naomi, naomi, ngdkey, ROT0, "Sega", "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, vathlete, naomigd, naomigd, naomi, 0, ROT0, "Sega", "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_NO_SOUND|GAME_NOT_WORKING )
/* Naomi 2 & Naomi 2 GD-ROM */ /* Naomi 2 & Naomi 2 GD-ROM */
@ -3243,8 +3085,7 @@ GAME( 200?, vathlete, naomigd, naomi, naomi, ngdkey, ROT0, "Sega",
ROM_START( vstrik3 ) ROM_START( vstrik3 )
NAOMI2_BIOS NAOMI2_BIOS
ROM_REGION( 0xb000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("vs3.bin", 0x0000000, 0xb000000, CRC(79d44ff4) SHA1(af0b892531c60999f0ef5db7525de50836764c77) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0006", 0, SHA1(293b84c7f4547060f57598b796b6fc49513cc839) MD5(060d9fef55d8f0fc1986ecc991478942) ) DISK_IMAGE_READONLY( "gds-0006", 0, SHA1(293b84c7f4547060f57598b796b6fc49513cc839) MD5(060d9fef55d8f0fc1986ecc991478942) )
@ -3258,8 +3099,7 @@ ROM_END
ROM_START( vf4 ) ROM_START( vf4 )
NAOMI2_BIOS NAOMI2_BIOS
ROM_REGION( 0xf000000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("vf4.bin", 0x0000000, 0xf000000, CRC(a81e3277) SHA1(fb162f34720d6ba49297ecb5e2869b2afffc307b) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0012", 0, SHA1(d68436ee72ea5db40e184b7ff38903a9cadb6df7) MD5(5a18300646a68f2994ed8c81abe9bdd8) ) DISK_IMAGE_READONLY( "gds-0012", 0, SHA1(d68436ee72ea5db40e184b7ff38903a9cadb6df7) MD5(5a18300646a68f2994ed8c81abe9bdd8) )
@ -3279,8 +3119,7 @@ ROM_END
ROM_START( initd ) ROM_START( initd )
NAOMI2_BIOS NAOMI2_BIOS
ROM_REGION( 0xc2ed000, "user1", ROMREGION_ERASE) // this is the 'rom' file from the GDROM DISC, once the GDROM is emulated this won't be loaded ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE) // allocate max size in init instead?
ROM_LOAD("inid.bin", 0x0000000, 0xc2ed000, CRC(524ca451) SHA1(cc8dd06e4fe50e70f277043bd1b817e41c5db8cf) )
DISK_REGION( "gdrom" ) DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0020b", 0, SHA1(5f386183e856722fee4a6ddb0146350b73349181) MD5(b085005215e2766e0fc1e3bd16b2fd95) ) DISK_IMAGE_READONLY( "gds-0020b", 0, SHA1(5f386183e856722fee4a6ddb0146350b73349181) MD5(b085005215e2766e0fc1e3bd16b2fd95) )
@ -3293,9 +3132,9 @@ ROM_END
GAME( 2001, naomi2, 0, naomi, naomi, 0, ROT0, "Sega", "Naomi 2 Bios", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT ) GAME( 2001, naomi2, 0, naomi, naomi, 0, ROT0, "Sega", "Naomi 2 Bios", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
// GDS-xxxx (first party games?) // GDS-xxxx (first party games?)
GAME( 200?, vstrik3, naomi2, naomi, naomi, ngdkey, ROT0, "Sega", "Virtua Striker 3 (GDS-0006)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, vstrik3, naomi2, naomigd, naomi, 0, ROT0, "Sega", "Virtua Striker 3 (GDS-0006)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, vf4, naomi2, naomi, naomi, ngdkey, ROT0, "Sega", "Virtua Fighter 4 (GDS-0012)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, vf4, naomi2, naomigd, naomi, 0, ROT0, "Sega", "Virtua Fighter 4 (GDS-0012)", GAME_NO_SOUND|GAME_NOT_WORKING )
GAME( 200?, initd, naomi2, naomi, naomi, ngdkey, ROT0, "Sega", "Initial D (GDS-0020b)", GAME_NO_SOUND|GAME_NOT_WORKING ) GAME( 200?, initd, naomi2, naomigd, naomi, 0, ROT0, "Sega", "Initial D (GDS-0020b)", GAME_NO_SOUND|GAME_NOT_WORKING )
/* Atomiswave */ /* Atomiswave */

View File

@ -9,6 +9,7 @@
#include "dc.h" #include "dc.h"
#include "cpu/sh4/sh4.h" #include "cpu/sh4/sh4.h"
#include "sound/aica.h" #include "sound/aica.h"
#include "naomibd.h"
#define DEBUG_REGISTERS (1) #define DEBUG_REGISTERS (1)
@ -123,7 +124,6 @@ UINT32 dc_coin_counts[2];
static UINT32 maple_regs[0x100/4]; static UINT32 maple_regs[0x100/4];
static UINT32 dc_rtcregister[4]; static UINT32 dc_rtcregister[4];
static UINT32 g1bus_regs[0x100/4]; static UINT32 g1bus_regs[0x100/4];
extern UINT32 dma_offset;
static UINT8 maple0x86data1[0x80]; static UINT8 maple0x86data1[0x80];
static UINT8 maple0x86data2[0x400]; static UINT8 maple0x86data2[0x400];
static emu_timer *dc_rtc_timer; static emu_timer *dc_rtc_timer;
@ -744,7 +744,8 @@ WRITE64_HANDLER( dc_g1_ctrl_w )
UINT64 shift; UINT64 shift;
UINT32 old,dat; UINT32 old,dat;
struct sh4_ddt_dma ddtdata; struct sh4_ddt_dma ddtdata;
UINT8 *ROM = (UINT8 *)memory_region(space->machine, "user1"); UINT8 *ROM;
UINT32 dmaoffset;
reg = decode_reg32_64(space->machine, offset, mem_mask, &shift); reg = decode_reg32_64(space->machine, offset, mem_mask, &shift);
dat = (UINT32)(data >> shift); dat = (UINT32)(data >> shift);
@ -762,14 +763,16 @@ WRITE64_HANDLER( dc_g1_ctrl_w )
mame_printf_verbose("G1CTRL: unsupported transfer\n"); mame_printf_verbose("G1CTRL: unsupported transfer\n");
return; return;
} }
ROM = (UINT8 *)devtag_get_info_ptr(space->machine, NAOMI_BOARD, "rom_board", DEVINFO_PTR_MEMORY);
dmaoffset = (UINT32)devtag_get_info_int(space->machine, NAOMI_BOARD, "rom_board", DEVINFO_INT_DMAOFFSET);
ddtdata.destination=g1bus_regs[SB_GDSTAR]; // destination address ddtdata.destination=g1bus_regs[SB_GDSTAR]; // destination address
ddtdata.length=g1bus_regs[SB_GDLEN] >> 5; // words to transfer ddtdata.length=g1bus_regs[SB_GDLEN] >> 5; // words to transfer
ddtdata.size=32; // bytes per word ddtdata.size=32; // bytes per word
ddtdata.buffer=ROM+dma_offset; // buffer address ddtdata.buffer=ROM+dmaoffset; // buffer address
ddtdata.direction=1; // 0 source to buffer, 1 buffer to destination ddtdata.direction=1; // 0 source to buffer, 1 buffer to destination
ddtdata.channel= -1; // not used ddtdata.channel= -1; // not used
ddtdata.mode= -1; // copy from/to buffer ddtdata.mode= -1; // copy from/to buffer
mame_printf_verbose("G1CTRL: transfer %x from ROM %08x to sdram %08x\n", g1bus_regs[SB_GDLEN], dma_offset, g1bus_regs[SB_GDSTAR]); mame_printf_verbose("G1CTRL: transfer %x from ROM %08x to sdram %08x\n", g1bus_regs[SB_GDLEN], dmaoffset, g1bus_regs[SB_GDSTAR]);
cpu_set_info_ptr(space->machine->cpu[0], CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA, &ddtdata); cpu_set_info_ptr(space->machine->cpu[0], CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA, &ddtdata);
g1bus_regs[SB_GDST]=0; g1bus_regs[SB_GDST]=0;
dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_GDROM; dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_GDROM;

View File

@ -1186,7 +1186,7 @@ $(MAMEOBJ)/sega.a: \
$(DRIVERS)/model1.o $(MACHINE)/model1.o $(VIDEO)/model1.o \ $(DRIVERS)/model1.o $(MACHINE)/model1.o $(VIDEO)/model1.o \
$(DRIVERS)/model2.o $(VIDEO)/model2.o \ $(DRIVERS)/model2.o $(VIDEO)/model2.o \
$(DRIVERS)/model3.o $(VIDEO)/model3.o $(MACHINE)/model3.o \ $(DRIVERS)/model3.o $(VIDEO)/model3.o $(MACHINE)/model3.o \
$(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/dc.o $(MACHINE)/gdcrypt.o \ $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/dc.o $(MACHINE)/gdcrypt.o $(MACHINE)/naomibd.o \
$(DRIVERS)/puckpkmn.o \ $(DRIVERS)/puckpkmn.o \
$(DRIVERS)/segac2.o \ $(DRIVERS)/segac2.o \
$(DRIVERS)/segag80r.o $(MACHINE)/segag80.o $(AUDIO)/segag80r.o $(VIDEO)/segag80r.o \ $(DRIVERS)/segag80r.o $(MACHINE)/segag80.o $(AUDIO)/segag80r.o $(VIDEO)/segag80r.o \

View File

@ -164,7 +164,9 @@ WRITE64_HANDLER( pvr_ta_w )
int reg; int reg;
UINT64 shift; UINT64 shift;
UINT32 old,dat; UINT32 old,dat;
//UINT32 sizera,offsetra,v; #if DEBUG_PVRTA
UINT32 sizera,offsetra,v;
#endif
int a; int a;
reg = decode_reg_64(offset, mem_mask, &shift); reg = decode_reg_64(offset, mem_mask, &shift);