mirror of
https://github.com/holub/mame
synced 2025-05-24 14:56:21 +03:00
continued 32x changes.
This commit is contained in:
parent
6f714af5a7
commit
5646489864
@ -2508,15 +2508,19 @@ ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( sh2_main_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x0000000 , 0x0003fff) AM_ROM
|
||||
AM_RANGE(0x6000000 , 0x603ffff) AM_RAM AM_SHARE(10)
|
||||
AM_RANGE(0x2000000 , 0x23fffff) AM_ROM AM_REGION("gamecart_sh2", 0)
|
||||
AM_RANGE(0x00000000, 0x00003fff) AM_ROM
|
||||
AM_RANGE(0x06000000, 0x0603ffff) AM_RAM AM_SHARE(10)
|
||||
AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_REGION("gamecart_sh2", 0)
|
||||
|
||||
AM_RANGE(0xc0000000, 0xc00003ff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sh2_slave_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x0000000 , 0x0003fff) AM_ROM
|
||||
AM_RANGE(0x6000000 , 0x603ffff) AM_RAM AM_SHARE(10)
|
||||
AM_RANGE(0x2000000 , 0x23fffff) AM_ROM AM_REGION("gamecart_sh2", 0)
|
||||
AM_RANGE(0x00000000, 0x00003fff) AM_ROM
|
||||
AM_RANGE(0x06000000, 0x0603ffff) AM_RAM AM_SHARE(10)
|
||||
AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_REGION("gamecart_sh2", 0)
|
||||
|
||||
AM_RANGE(0xc0000000, 0xc00003ff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( segacd_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
@ -5437,6 +5441,7 @@ void megatech_set_megadrive_z80_as_megadrive_z80(running_machine *machine)
|
||||
// these are tests for 'special case' hardware to make sure I don't break anything while rearranging things
|
||||
//
|
||||
static int sh2_are_running;
|
||||
static int _32x_adapter_enabled;
|
||||
|
||||
static int sh2_master_vint_enable, sh2_slave_vint_enable;
|
||||
static int sh2_master_hint_enable, sh2_slave_hint_enable;
|
||||
@ -5833,6 +5838,17 @@ void sh2_comms_write(int offset, UINT16 data, UINT16 mem_mask)
|
||||
}
|
||||
|
||||
|
||||
static READ16_HANDLER( _32x_68k_comms_r )
|
||||
{
|
||||
return comms_port[offset];
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( _32x_68k_comms_w )
|
||||
{
|
||||
COMBINE_DATA(&comms_port[offset]);
|
||||
}
|
||||
|
||||
|
||||
static WRITE32_HANDLER( sh2_commsport_w )
|
||||
{
|
||||
printf("comms write %d %08x %08x\n",offset, data, mem_mask);
|
||||
@ -5856,23 +5872,6 @@ static WRITE32_HANDLER( sh2_4000_slave_w )
|
||||
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( _32x_68k_a15100_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
if (data & 0x02)
|
||||
{
|
||||
cpunum_set_input_line(machine, _32x_master_cpu_number, INPUT_LINE_RESET, CLEAR_LINE);
|
||||
cpunum_set_input_line(machine, _32x_slave_cpu_number, INPUT_LINE_RESET, CLEAR_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static READ16_HANDLER( _32x_68k_a15184_r )
|
||||
{
|
||||
return _32x_autofill_length;
|
||||
@ -5959,19 +5958,85 @@ static WRITE16_HANDLER( _32x_68k_a15104_w )
|
||||
}
|
||||
|
||||
|
||||
static UINT16 a15100_reg;
|
||||
|
||||
static READ16_HANDLER( _32x_68k_a15100_r )
|
||||
{
|
||||
return a15100_reg | 0x0080;
|
||||
}
|
||||
|
||||
static READ16_HANDLER( _32x_68k_bitmapmode_r )
|
||||
{
|
||||
return 0x8001;
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( _32x_68k_bitmapmode_w )
|
||||
{
|
||||
printf("_32x_68k_bitmapmode_w (a15180) %04x %04x\n",data,mem_mask);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( _32x_68k_a15100_w )
|
||||
{
|
||||
printf("_32x_68k_a15100_w\n");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
a15100_reg = (a15100_reg & 0xff00) | (data & 0x00ff);
|
||||
|
||||
if (data & 0x02)
|
||||
{
|
||||
cpunum_set_input_line(machine, _32x_master_cpu_number, INPUT_LINE_RESET, CLEAR_LINE);
|
||||
cpunum_set_input_line(machine, _32x_slave_cpu_number, INPUT_LINE_RESET, CLEAR_LINE);
|
||||
}
|
||||
|
||||
if (data & 0x01)
|
||||
{
|
||||
_32x_adapter_enabled = 1;
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0880000, 0x08fffff, 0, 0, SMH_BANK11, SMH_BANK11); // 'fixed' 512kb rom bank
|
||||
memory_set_bankptr( 11, memory_region(machine, "gamecart") );
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0900000, 0x09fffff, 0, 0, SMH_BANK12, SMH_BANK12); // 'bankable' 1024kb rom bank
|
||||
memory_set_bankptr( 12, memory_region(machine, "gamecart") );
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
|
||||
memory_set_bankptr( 10, memory_region(machine, "32x_68k_bios") );
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15184, 0x0a15185, 0, 0, _32x_68k_a15184_r, _32x_68k_a15184_w); // autofill length reg
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15186, 0x0a15187, 0, 0, _32x_68k_a15186_r, _32x_68k_a15186_w); // autofill address reg
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15188, 0x0a15189, 0, 0, _32x_68k_a15188_r, _32x_68k_a15188_w); // autofill data reg / start fill
|
||||
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15180, 0x0a15181, 0, 0, _32x_68k_bitmapmode_r, _32x_68k_bitmapmode_w); // mode control regs
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a1518a, 0x0a1518b, 0, 0, _32x_68k_fbcontrol_r, _32x_68k_fbcontrol_w); // framebuffer control regs
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0840000, 0x085ffff, 0, 0, _32x_68k_dram_r, _32x_68k_dram_w); // access to 'display ram' (framebuffer)
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15200, 0x0a153ff, 0, 0, _32x_68k_palette_r, _32x_68k_palette_w); // access to 'palette' xRRRRRGGGGGBBBBB
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_32x_adapter_enabled = 0;
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
|
||||
memory_set_bankptr( 10, memory_region(machine, "gamecart") );
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
a15100_reg = (a15100_reg & 0x00ff) | (data & 0xff00);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT( _32x )
|
||||
{
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
|
||||
memory_set_bankptr( 10, memory_region(machine, "gamecart") );
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0880000, 0x08fffff, 0, 0, SMH_BANK11, SMH_BANK11); // 'fixed' 512kb rom bank
|
||||
memory_set_bankptr( 11, memory_region(machine, "gamecart") );
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0900000, 0x09fffff, 0, 0, SMH_BANK12, SMH_BANK12); // 'bankable' 1024kb rom bank
|
||||
memory_set_bankptr( 12, memory_region(machine, "gamecart") );
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
|
||||
memory_set_bankptr( 10, memory_region(machine, "32x_68k_bios") );
|
||||
|
||||
_32x_dram0 = auto_malloc(0x20000);
|
||||
_32x_dram1 = auto_malloc(0x20000);
|
||||
@ -5989,22 +6054,22 @@ DRIVER_INIT( _32x )
|
||||
_32x_display_dram = _32x_dram0;
|
||||
_32x_access_dram = _32x_dram1;
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0840000, 0x085ffff, 0, 0, _32x_68k_dram_r, _32x_68k_dram_w); // access to 'display ram' (framebuffer)
|
||||
_32x_adapter_enabled = 0;
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15200, 0x0a153ff, 0, 0, _32x_68k_palette_r, _32x_68k_palette_w); // access to 'palette' xRRRRRGGGGGBBBBB
|
||||
if (_32x_adapter_enabled == 0)
|
||||
{
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
|
||||
memory_set_bankptr( 10, memory_region(machine, "gamecart") );
|
||||
};
|
||||
|
||||
|
||||
memory_install_write16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15100, 0x0a15101, 0, 0, _32x_68k_a15100_w); // framebuffer control regs
|
||||
|
||||
a15100_reg = 0x0000;
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xa15100, 0xa15101, 0, 0, _32x_68k_a15100_r, _32x_68k_a15100_w); // framebuffer control regs
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xa15104, 0xa15105, 0, 0, _32x_68k_a15104_r, _32x_68k_a15104_w); // 68k BANK rom set
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15184, 0x0a15185, 0, 0, _32x_68k_a15184_r, _32x_68k_a15184_w); // autofill length reg
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15186, 0x0a15187, 0, 0, _32x_68k_a15186_r, _32x_68k_a15186_w); // autofill address reg
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a15188, 0x0a15189, 0, 0, _32x_68k_a15188_r, _32x_68k_a15188_w); // autofill data reg / start fill
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xa15120, 0xa1512f, 0, 0, _32x_68k_comms_r, _32x_68k_comms_w); // comms regs
|
||||
|
||||
memory_install_readwrite16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a1518a, 0x0a1518b, 0, 0, _32x_68k_fbcontrol_r, _32x_68k_fbcontrol_w); // framebuffer control regs
|
||||
|
||||
memory_install_read16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a130ec, 0x0a151ef, 0, 0, _32x_68k_MARS_r); // system ID
|
||||
memory_install_read16_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0a130ec, 0x0a130ef, 0, 0, _32x_68k_MARS_r); // system ID
|
||||
|
||||
|
||||
|
||||
@ -6059,7 +6124,7 @@ ROM_START( 32x_bios )
|
||||
ROM_COPY( "gamecart", 0x0, 0x0, 0x400000)
|
||||
|
||||
ROM_REGION16_BE( 0x400000, "32x_68k_bios", 0 ) /* 68000 Code */
|
||||
ROM_COPY( "gamecart", 0x0, 0x0, 0x400000)
|
||||
// ROM_COPY( "gamecart", 0x0, 0x0, 0x400000)
|
||||
ROM_LOAD( "32x_g_bios.bin", 0x000000, 0x000100, CRC(5c12eae8) SHA1(dbebd76a448447cb6e524ac3cb0fd19fc065d944) )
|
||||
|
||||
ROM_REGION( 0x400000, "32x_master_sh2", 0 ) /* SH2 Code */
|
||||
|
Loading…
Reference in New Issue
Block a user